From c3c6ac950113eb57708ad7881a702e961b352d23 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 06:51:49 -0700 Subject: [PATCH 01/24] changes from anthony --- CreateReadme.php | 173 ++++++++++++++++++++++++++++ README.md | 123 ++++++++++---------- data/types.json | 294 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 529 insertions(+), 61 deletions(-) create mode 100644 CreateReadme.php create mode 100644 data/types.json diff --git a/CreateReadme.php b/CreateReadme.php new file mode 100644 index 0000000..3316b15 --- /dev/null +++ b/CreateReadme.php @@ -0,0 +1,173 @@ + + * + * @since 1.0.0 + */ + +namespace Code4Recovery; + +class CreateReadme +{ + /** + * The path to the json file containing spec data. + * @var string + */ + public string $specFile; + + /** + * The path to the readme.md that will be created. + * @var string + */ + public string $readmeFile; + + /** + * Replacement begins on the line after the appearance of this string. + * @var string + */ + private string $tableDelimiterTop = ''; + + /** + * Replacement ends on the line before the appearance of this string. + * @var string + */ + private string $tableDelimiterBottom = ''; + + /** + * Languages used in the types table + * @var array + */ + private array $languages = [ + 'en' => 'English', + 'es' => 'Español', + 'fr' => 'Français', + 'ja' => '日本語', + 'sv' => 'Svenska' + ]; + + /** + * Used to track all languages found in the spec file to avoid empty + * language columns + * @var array + */ + private array $languagesUsed = []; + + /** + * Constructor. + * + * @param $specFile: Path to spec json file, relative to project root. + * @param $readmeFile: Path to readme file, relative to project root. + */ + public function __construct(string $specFile, string $readmeFile) + { + // Set variables + $this->specFile = $specFile; + $this->readmeFile = $readmeFile; + // Process + $this->writeFile($this->createTable()); + } + + /** + * Builds the types table. + * + * @return string Markdown for table + */ + private function createTable(): string + { + $content[0] = $this->tableDelimiterTop; + // Rows must be created before header, so we know what language columns to create + $content[2] = $this->createTableRows(); + $content[1] = $this->createTableHeader(); + $content[3] = $this->tableDelimiterBottom; + ksort($content); + return implode(PHP_EOL, $content); + } + + /** + * Creates the table header markup. + * + * @return string + */ + private function createTableHeader(): string + { + // Start columns & header dashes output + $headerColumns[] = '| Code'; + $headerDashes[] = '| ---'; + // Loop through available languages, comparing them to the languages + // available in the spec data and create columns + foreach ($this->languages as $languageCode => $language) { + if (in_array($languageCode, $this->languagesUsed)) { + // Create columns + $headerColumns[] = trim($language); + $headerDashes[] = '---'; + } + } + // Add an empty array value so our implode will add an extra ' | ' at the end + $markupArray['cols'] = implode(' | ', array_merge($headerColumns, [''])); + $markupArray['dashes'] = implode(' | ', array_merge($headerDashes, [''])); + // Build final markup with line breaks + return implode(PHP_EOL, $markupArray); + } + + /** + * Gets the contents of the spec file and creates the table rows markup. + * + * @return string + */ + private function createTableRows(): string + { + // Init empty array + $specRows = []; + // Get spec data & language codes + $specJson = json_decode(file_get_contents($this->specFile), true); + $availableLanguages = array_keys($this->languages); + // Loop through tupes from spec + foreach ($specJson['types'] as $key => $value) { + // Begin row output. Empty the $columns array each time. + $specColumns = []; + $specColumns[] = '| `' . trim($key) . '`'; + // Loop through translated values + foreach ($value as $languageKey => $translatedText) { + // Only display values for available languages + if (in_array($languageKey, $availableLanguages)) { + // Add the language key to an array for use in creating the header + if (!in_array($languageKey, $this->languagesUsed)) { + $this->languagesUsed[] = trim($languageKey); + } + // Add translation to columns + $specColumns[] = trim($translatedText); + } + } + // Add empty array value so implode will create an extra "|" at then end of the markup + $specRows[] = implode(' | ', array_merge($specColumns, [''])); + } + return implode(PHP_EOL, $specRows); + } + + /** + * Get the contents of the readme, replace the types table, and re-write. + * + * @param string $tableContent The markdown to write to the file + * + * @return void + */ + private function writeFile(string $tableContent): void + { + // Get the current readme contents + $readmeContents = file_get_contents($this->readmeFile); + // Replace existing table + $result = preg_replace('#(' . preg_quote($this->tableDelimiterTop) . ')(.*)(' . preg_quote($this->tableDelimiterBottom) . ')#siU', $tableContent, $readmeContents); + // Write new file + $readmeHandle = fopen($this->readmeFile, "w") or die("Unable to open file!"); + fwrite($readmeHandle, $result); + fclose($readmeHandle); + } +} + +new CreateReadme('./data/types.json', 'README.md'); diff --git a/README.md b/README.md index 1c2134e..b7a06c7 100644 --- a/README.md +++ b/README.md @@ -154,67 +154,68 @@ The codes below should be considered 'reserved.' In your implementation, it's ok for "Babysitting Available." "American Sign Language" or "ASL" rather than "Sign Language." It's also ok to add types, they will be ignored by the importer. -| Code | English | Español | Français | -| ------- | ------------------------------ | ------------------------------------ | -------------------------------------------- | -| `11` | 11th Step Meditation | Meditación del Paso 11 | Méditation sur la 11e Étape | -| `12x12` | 12 Steps & 12 Traditions | 12 Pasos y 12 Tradiciones | 12 Étapes et 12 Traditions | -| `A` | Secular | Secular | Séculier | -| `ABSI` | As Bill Sees It | Como lo ve Bill | Réflexions de Bill | -| `AL` | Concurrent with Alateen | Concurrente con Alateen | En même temps qu’Alateen | -| `AL-AN` | Concurrent with Al-Anon | Concurrente con Al-Anon | En même temps qu’Al-Anon | -| `ASL` | American Sign Language | Lenguaje por señas | Langage des Signes | -| `B` | Big Book | Libro Grande | Gros Livre | -| `BA` | Babysitting Available | Guardería disponible | Garderie d’enfants disponible | -| `BE` | Newcomer | Principiantes | Nouveau/nouvelle | -| `BI` | Bisexual | Bisexual | Bisexuel | -| `BRK` | Breakfast | Desayuno | Petit déjeuner | -| `C` | Closed | Cerrada | Fermé | -| `CAN` | Candlelight | Luz de una vela | À la chandelle | -| `CF` | Child-Friendly | Niño amigable | Enfants acceptés | -| `D` | Discussion | Discusión | Discussion | -| `DB` | Digital Basket | Canasta digital | Panier numérique | -| `DD` | Dual Diagnosis | Diagnóstico dual | Double diagnostic | -| `DR` | Daily Reflections | Reflexiones Diarias | Réflexions quotidiennes | -| `EN` | English | Inglés | Anglais | -| `FF` | Fragrance Free | Sin fragancia | Sans parfum | -| `FR` | French | Francés | Français | -| `G` | Gay | Gay | Gai | -| `GR` | Grapevine | La Viña | Grapevine | -| `H` | Birthday | Cumpleaños | Anniversaire | -| `HE` | Hebrew | Hebreo | Hébreu | -| `ITA` | Italian | Italiano | Italien | -| `JA` | Japanese | Japonés | Japonais | -| `KOR` | Korean | Coreano | Coréen | -| `L` | Lesbian | Lesbianas | Lesbienne | -| `LGBTQ` | LGBTQ | LGBTQ | LGBTQ | -| `LIT` | Literature | Literatura | Publications | -| `LS` | Living Sober | Viviendo Sobrio | Vivre… Sans alcool | -| `M` | Men | Hombres | Hommes | -| `MED` | Meditation | Meditación | Méditation | -| `N` | Native American | Nativo Americano | Autochtone | -| `NDG` | Indigenous | Indígena | Indigène | -| `O` | Open | Abierta | Ouvert(e) | -| `OUT` | Outdoor | Al aire libre | En plein air | -| `P` | Professionals | Profesionales | Professionnels | -| `POC` | People of Color | Gente de color | Gens de couleur | -| `POL` | Polish | Polaco | Polonais | -| `POR` | Portuguese | Portugués | Portugais | -| `PUN` | Punjabi | Punjabi | Pendjabi | -| `RUS` | Russian | Ruso | Russe | -| `S` | Spanish | Español | Espagnol | -| `SEN` | Seniors | Personas mayores | Séniors | -| `SM` | Smoking Permitted | Se permite fumar | Permis de fumer | -| `SP` | Speaker | Orador | Conférencier | -| `ST` | Step Study | Estudio de pasos | Sur les Étapes | -| `T` | Transgender | Transgénero | Transgenre | -| `TC` | Location Temporarily Closed | Ubicación temporalmente cerrada | Emplacement temporairement fermé | -| `TR` | Tradition Study | Estudio de tradicion | Étude des Traditions | -| `W` | Women | Mujer | Femmes | -| `X` | Wheelchair Access | Acceso en silla de ruedas | Accès aux fauteuils roulants | -| `XB` | Wheelchair-Accessible Bathroom | Baño accesible para sillas de ruedas | Toilettes accessibles aux fauteuils roulants | -| `XT` | Cross Talk Permitted | Se permite opinar | Conversation croisée permise | -| `Y` | Young People | Gente joven | Jeunes | - + +| Code | English | Español | Français | +| --- | --- | --- | --- | +| `11` | 11th Step Meditation | Meditación del Paso 11 | Méditation sur la 11e Étape | +| `12x12` | 12 Steps & 12 Traditions | 12 Pasos y 12 Tradiciones | 12 Étapes et 12 Traditions | +| `A` | Secular | Secular | Séculier | +| `ABSI` | As Bill Sees It | Como lo ve Bill | Réflexions de Bill | +| `AL` | Concurrent with Alateen | Concurrente con Alateen | En même temps qu’Alateen | +| `AL-AN` | Concurrent with Al-Anon | Concurrente con Al-Anon | En même temps qu’Al-Anon | +| `ASL` | American Sign Language | Lenguaje por señas | Langage des Signes | +| `B` | Big Book | Libro Grande | Gros Livre | +| `BA` | Babysitting Available | Guardería disponible | Garderie d’enfants disponible | +| `BE` | Newcomer | Principiantes | Nouveau/nouvelle | +| `BI` | Bisexual | Bisexual | Bisexuel | +| `BRK` | Breakfast | Desayuno | Petit déjeuner | +| `C` | Closed | Cerrada | Fermé | +| `CAN` | Candlelight | Luz de una vela | À la chandelle | +| `CF` | Child-Friendly | Niño amigable | Enfants acceptés | +| `D` | Discussion | Discusión | Discussion | +| `DB` | Digital Basket | Canasta digital | Panier numérique | +| `DD` | Dual Diagnosis | Diagnóstico dual | Double diagnostic | +| `DR` | Daily Reflections | Reflexiones Diarias | Réflexions quotidiennes | +| `EN` | English | Inglés | Anglais | +| `FF` | Fragrance Free | Sin fragancia | Sans parfum | +| `FR` | French | Francés | Français | +| `G` | Gay | Gay | Gai | +| `GR` | Grapevine | La Viña | Grapevine | +| `H` | Birthday | Cumpleaños | Anniversaire | +| `HE` | Hebrew | Hebreo | Hébreu | +| `ITA` | Italian | Italiano | Italien | +| `JA` | Japanese | Japonés | Japonais | +| `KOR` | Korean | Coreano | Coréen | +| `L` | Lesbian | Lesbianas | Lesbienne | +| `LGBTQ` | LGBTQ | LGBTQ | LGBTQ | +| `LIT` | Literature | Literatura | Publications | +| `LS` | Living Sober | Viviendo Sobrio | Vivre… Sans alcool | +| `M` | Men | Hombres | Hommes | +| `MED` | Meditation | Meditación | Méditation | +| `N` | Native American | Nativo Americano | Autochtone | +| `NDG` | Indigenous | Indígena | Indigène | +| `O` | Open | Abierta | Ouvert(e) | +| `OUT` | Outdoor | Al aire libre | En plein air | +| `P` | Professionals | Profesionales | Professionnels | +| `POC` | People of Color | Gente de color | Gens de couleur | +| `POL` | Polish | Polaco | Polonais | +| `POR` | Portuguese | Portugués | Portugais | +| `PUN` | Punjabi | Punjabi | Pendjabi | +| `RUS` | Russian | Ruso | Russe | +| `S` | Spanish | Español | Espagnol | +| `SEN` | Seniors | Personas mayores | Séniors | +| `SM` | Smoking Permitted | Se permite fumar | Permis de fumer | +| `SP` | Speaker | Orador | Conférencier | +| `ST` | Step Study | Estudio de pasos | Sur les Étapes | +| `T` | Transgender | Transgénero | Transgenre | +| `TC` | Location Temporarily Closed | Ubicación temporalmente cerrada | Emplacement temporairement fermé | +| `TR` | Tradition Study | Estudio de tradicion | Étude des Traditions | +| `W` | Women | Mujer | Femmes | +| `X` | Wheelchair Access | Acceso en silla de ruedas | Accès aux fauteuils roulants | +| `XB` | Wheelchair-Accessible Bathroom | Baño accesible para sillas de ruedas | Toilettes accessibles aux fauteuils roulants | +| `XT` | Cross Talk Permitted | Se permite opinar | Conversation croisée permise | +| `Y` | Young People | Gente joven | Jeunes | + ## Sharing Your Data If you choose, you may make your feed discoverable by linking to it (like RSS) in your site's ``. diff --git a/data/types.json b/data/types.json new file mode 100644 index 0000000..39c1509 --- /dev/null +++ b/data/types.json @@ -0,0 +1,294 @@ +{ + "types": { + "11": { + "en": "11th Step Meditation", + "es": "Meditación del Paso 11", + "fr": "Méditation sur la 11e Étape" + }, + "12x12": { + "en": "12 Steps & 12 Traditions", + "es": "12 Pasos y 12 Tradiciones", + "fr": "12 Étapes et 12 Traditions" + }, + "A": { + "en": "Secular", + "es": "Secular", + "fr": "Séculier" + }, + "ABSI": { + "en": "As Bill Sees It", + "es": "Como lo ve Bill", + "fr": "Réflexions de Bill" + }, + "AL": { + "en": "Concurrent with Alateen", + "es": "Concurrente con Alateen", + "fr": "En même temps qu’Alateen" + }, + "AL-AN": { + "en": "Concurrent with Al-Anon", + "es": "Concurrente con Al-Anon", + "fr": "En même temps qu’Al-Anon" + }, + "ASL": { + "en": "American Sign Language", + "es": "Lenguaje por señas", + "fr": "Langage des Signes" + }, + "B": { + "en": "Big Book", + "es": "Libro Grande", + "fr": "Gros Livre" + }, + "BA": { + "en": "Babysitting Available", + "es": "Guardería disponible", + "fr": "Garderie d’enfants disponible" + }, + "BE": { + "en": "Newcomer", + "es": "Principiantes", + "fr": "Nouveau/nouvelle" + }, + "BI": { + "en": "Bisexual", + "es": "Bisexual", + "fr": "Bisexuel" + }, + "BRK": { + "en": "Breakfast", + "es": "Desayuno", + "fr": "Petit déjeuner" + }, + "C": { + "en": "Closed", + "es": "Cerrada", + "fr": "Fermé" + }, + "CAN": { + "en": "Candlelight", + "es": "Luz de una vela", + "fr": "À la chandelle" + }, + "CF": { + "en": "Child-Friendly", + "es": "Niño amigable", + "fr": "Enfants acceptés" + }, + "D": { + "en": "Discussion", + "es": "Discusión", + "fr": "Discussion" + }, + "DB": { + "en": "Digital Basket", + "es": "Canasta digital", + "fr": "Panier numérique" + }, + "DD": { + "en": "Dual Diagnosis", + "es": "Diagnóstico dual", + "fr": "Double diagnostic" + }, + "DR": { + "en": "Daily Reflections", + "es": "Reflexiones Diarias", + "fr": "Réflexions quotidiennes" + }, + "EN": { + "en": "English", + "es": "Inglés", + "fr": "Anglais" + }, + "FF": { + "en": "Fragrance Free", + "es": "Sin fragancia", + "fr": "Sans parfum" + }, + "FR": { + "en": "French", + "es": "Francés", + "fr": "Français" + }, + "G": { + "en": "Gay", + "es": "Gay", + "fr": "Gai" + }, + "GR": { + "en": "Grapevine", + "es": "La Viña", + "fr": "Grapevine" + }, + "H": { + "en": "Birthday", + "es": "Cumpleaños", + "fr": "Anniversaire" + }, + "HE": { + "en": "Hebrew", + "es": "Hebreo", + "fr": "Hébreu" + }, + "ITA": { + "en": "Italian", + "es": "Italiano", + "fr": "Italien" + }, + "JA": { + "en": "Japanese", + "es": "Japonés", + "fr": "Japonais" + }, + "KOR": { + "en": "Korean", + "es": "Coreano", + "fr": "Coréen" + }, + "L": { + "en": "Lesbian", + "es": "Lesbianas", + "fr": "Lesbienne" + }, + "LGBTQ": { + "en": "LGBTQ", + "es": "LGBTQ", + "fr": "LGBTQ" + }, + "LIT": { + "en": "Literature", + "es": "Literatura", + "fr": "Publications" + }, + "LS": { + "en": "Living Sober", + "es": "Viviendo Sobrio", + "fr": "Vivre… Sans alcool" + }, + "M": { + "en": "Men", + "es": "Hombres", + "fr": "Hommes" + }, + "MED": { + "en": "Meditation", + "es": "Meditación", + "fr": "Méditation" + }, + "N": { + "en": "Native American", + "es": "Nativo Americano", + "fr": "Autochtone" + }, + "NDG": { + "en": "Indigenous", + "es": "Indígena", + "fr": "Indigène" + }, + "O": { + "en": "Open", + "es": "Abierta", + "fr": "Ouvert(e)" + }, + "OUT": { + "en": "Outdoor", + "es": "Al aire libre", + "fr": "En plein air" + }, + "P": { + "en": "Professionals", + "es": "Profesionales", + "fr": "Professionnels" + }, + "POC": { + "en": "People of Color", + "es": "Gente de color", + "fr": "Gens de couleur" + }, + "POL": { + "en": "Polish", + "es": "Polaco", + "fr": "Polonais" + }, + "POR": { + "en": "Portuguese", + "es": "Portugués", + "fr": "Portugais" + }, + "PUN": { + "en": "Punjabi", + "es": "Punjabi", + "fr": "Pendjabi" + }, + "RUS": { + "en": "Russian", + "es": "Ruso", + "fr": "Russe" + }, + "S": { + "en": "Spanish", + "es": "Español", + "fr": "Espagnol" + }, + "SEN": { + "en": "Seniors", + "es": "Personas mayores", + "fr": "Séniors" + }, + "SM": { + "en": "Smoking Permitted", + "es": "Se permite fumar", + "fr": "Permis de fumer" + }, + "SP": { + "en": "Speaker", + "es": "Orador", + "fr": "Conférencier" + }, + "ST": { + "en": "Step Study", + "es": "Estudio de pasos", + "fr": "Sur les Étapes" + }, + "T": { + "en": "Transgender", + "es": "Transgénero", + "fr": "Transgenre" + }, + "TC": { + "en": "Location Temporarily Closed", + "es": "Ubicación temporalmente cerrada", + "fr": "Emplacement temporairement fermé" + }, + "TR": { + "en": "Tradition Study", + "es": "Estudio de tradicion", + "fr": "Étude des Traditions" + }, + "W": { + "en": "Women", + "es": "Mujer", + "fr": "Femmes" + }, + "X": { + "en": "Wheelchair Access", + "es": "Acceso en silla de ruedas", + "fr": "Accès aux fauteuils roulants" + }, + "XB": { + "en": "Wheelchair-Accessible Bathroom", + "es": "Baño accesible para sillas de ruedas", + "fr": "Toilettes accessibles aux fauteuils roulants" + }, + "XT": { + "en": "Cross Talk Permitted", + "es": "Se permite opinar", + "fr": "Conversation croisée permise" + }, + "Y": { + "en": "Young People", + "es": "Gente joven", + "fr": "Jeunes" + } + } +} From bb2afbd89ef4642a6e7cb8398efbfb45c9e53687 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 07:11:58 -0700 Subject: [PATCH 02/24] minor refactors --- README.md | 121 ++++++++++++++------------- CreateReadme.php => UpdateReadme.php | 53 +++++++----- 2 files changed, 92 insertions(+), 82 deletions(-) rename CreateReadme.php => UpdateReadme.php (81%) diff --git a/README.md b/README.md index b7a06c7..12a7ce9 100644 --- a/README.md +++ b/README.md @@ -155,67 +155,68 @@ for "Babysitting Available." "American Sign Language" or "ASL" rather than "Sign they will be ignored by the importer. -| Code | English | Español | Français | -| --- | --- | --- | --- | -| `11` | 11th Step Meditation | Meditación del Paso 11 | Méditation sur la 11e Étape | -| `12x12` | 12 Steps & 12 Traditions | 12 Pasos y 12 Tradiciones | 12 Étapes et 12 Traditions | -| `A` | Secular | Secular | Séculier | -| `ABSI` | As Bill Sees It | Como lo ve Bill | Réflexions de Bill | -| `AL` | Concurrent with Alateen | Concurrente con Alateen | En même temps qu’Alateen | -| `AL-AN` | Concurrent with Al-Anon | Concurrente con Al-Anon | En même temps qu’Al-Anon | -| `ASL` | American Sign Language | Lenguaje por señas | Langage des Signes | -| `B` | Big Book | Libro Grande | Gros Livre | -| `BA` | Babysitting Available | Guardería disponible | Garderie d’enfants disponible | -| `BE` | Newcomer | Principiantes | Nouveau/nouvelle | -| `BI` | Bisexual | Bisexual | Bisexuel | -| `BRK` | Breakfast | Desayuno | Petit déjeuner | -| `C` | Closed | Cerrada | Fermé | -| `CAN` | Candlelight | Luz de una vela | À la chandelle | -| `CF` | Child-Friendly | Niño amigable | Enfants acceptés | -| `D` | Discussion | Discusión | Discussion | -| `DB` | Digital Basket | Canasta digital | Panier numérique | -| `DD` | Dual Diagnosis | Diagnóstico dual | Double diagnostic | -| `DR` | Daily Reflections | Reflexiones Diarias | Réflexions quotidiennes | -| `EN` | English | Inglés | Anglais | -| `FF` | Fragrance Free | Sin fragancia | Sans parfum | -| `FR` | French | Francés | Français | -| `G` | Gay | Gay | Gai | -| `GR` | Grapevine | La Viña | Grapevine | -| `H` | Birthday | Cumpleaños | Anniversaire | -| `HE` | Hebrew | Hebreo | Hébreu | -| `ITA` | Italian | Italiano | Italien | -| `JA` | Japanese | Japonés | Japonais | -| `KOR` | Korean | Coreano | Coréen | -| `L` | Lesbian | Lesbianas | Lesbienne | -| `LGBTQ` | LGBTQ | LGBTQ | LGBTQ | -| `LIT` | Literature | Literatura | Publications | -| `LS` | Living Sober | Viviendo Sobrio | Vivre… Sans alcool | -| `M` | Men | Hombres | Hommes | -| `MED` | Meditation | Meditación | Méditation | -| `N` | Native American | Nativo Americano | Autochtone | -| `NDG` | Indigenous | Indígena | Indigène | -| `O` | Open | Abierta | Ouvert(e) | -| `OUT` | Outdoor | Al aire libre | En plein air | -| `P` | Professionals | Profesionales | Professionnels | -| `POC` | People of Color | Gente de color | Gens de couleur | -| `POL` | Polish | Polaco | Polonais | -| `POR` | Portuguese | Portugués | Portugais | -| `PUN` | Punjabi | Punjabi | Pendjabi | -| `RUS` | Russian | Ruso | Russe | -| `S` | Spanish | Español | Espagnol | -| `SEN` | Seniors | Personas mayores | Séniors | -| `SM` | Smoking Permitted | Se permite fumar | Permis de fumer | -| `SP` | Speaker | Orador | Conférencier | -| `ST` | Step Study | Estudio de pasos | Sur les Étapes | -| `T` | Transgender | Transgénero | Transgenre | -| `TC` | Location Temporarily Closed | Ubicación temporalmente cerrada | Emplacement temporairement fermé | -| `TR` | Tradition Study | Estudio de tradicion | Étude des Traditions | -| `W` | Women | Mujer | Femmes | -| `X` | Wheelchair Access | Acceso en silla de ruedas | Accès aux fauteuils roulants | -| `XB` | Wheelchair-Accessible Bathroom | Baño accesible para sillas de ruedas | Toilettes accessibles aux fauteuils roulants | -| `XT` | Cross Talk Permitted | Se permite opinar | Conversation croisée permise | -| `Y` | Young People | Gente joven | Jeunes | +|Code|English|Español|Français| +|---|---|---|---| +|`11`|11th Step Meditation|Meditación del Paso 11|Méditation sur la 11e Étape| +|`12x12`|12 Steps & 12 Traditions|12 Pasos y 12 Tradiciones|12 Étapes et 12 Traditions| +|`A`|Secular|Secular|Séculier| +|`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill| +|`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen| +|`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon| +|`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes| +|`B`|Big Book|Libro Grande|Gros Livre| +|`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible| +|`BE`|Newcomer|Principiantes|Nouveau/nouvelle| +|`BI`|Bisexual|Bisexual|Bisexuel| +|`BRK`|Breakfast|Desayuno|Petit déjeuner| +|`C`|Closed|Cerrada|Fermé| +|`CAN`|Candlelight|Luz de una vela|À la chandelle| +|`CF`|Child-Friendly|Niño amigable|Enfants acceptés| +|`D`|Discussion|Discusión|Discussion| +|`DB`|Digital Basket|Canasta digital|Panier numérique| +|`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic| +|`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes| +|`EN`|English|Inglés|Anglais| +|`FF`|Fragrance Free|Sin fragancia|Sans parfum| +|`FR`|French|Francés|Français| +|`G`|Gay|Gay|Gai| +|`GR`|Grapevine|La Viña|Grapevine| +|`H`|Birthday|Cumpleaños|Anniversaire| +|`HE`|Hebrew|Hebreo|Hébreu| +|`ITA`|Italian|Italiano|Italien| +|`JA`|Japanese|Japonés|Japonais| +|`KOR`|Korean|Coreano|Coréen| +|`L`|Lesbian|Lesbianas|Lesbienne| +|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ| +|`LIT`|Literature|Literatura|Publications| +|`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool| +|`M`|Men|Hombres|Hommes| +|`MED`|Meditation|Meditación|Méditation| +|`N`|Native American|Nativo Americano|Autochtone| +|`NDG`|Indigenous|Indígena|Indigène| +|`O`|Open|Abierta|Ouvert(e)| +|`OUT`|Outdoor|Al aire libre|En plein air| +|`P`|Professionals|Profesionales|Professionnels| +|`POC`|People of Color|Gente de color|Gens de couleur| +|`POL`|Polish|Polaco|Polonais| +|`POR`|Portuguese|Portugués|Portugais| +|`PUN`|Punjabi|Punjabi|Pendjabi| +|`RUS`|Russian|Ruso|Russe| +|`S`|Spanish|Español|Espagnol| +|`SEN`|Seniors|Personas mayores|Séniors| +|`SM`|Smoking Permitted|Se permite fumar|Permis de fumer| +|`SP`|Speaker|Orador|Conférencier| +|`ST`|Step Study|Estudio de pasos|Sur les Étapes| +|`T`|Transgender|Transgénero|Transgenre| +|`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé| +|`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions| +|`W`|Women|Mujer|Femmes| +|`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants| +|`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants| +|`XT`|Cross Talk Permitted|Se permite opinar|Conversation croisée permise| +|`Y`|Young People|Gente joven|Jeunes| + ## Sharing Your Data If you choose, you may make your feed discoverable by linking to it (like RSS) in your site's ``. diff --git a/CreateReadme.php b/UpdateReadme.php similarity index 81% rename from CreateReadme.php rename to UpdateReadme.php index 3316b15..59a1fc3 100644 --- a/CreateReadme.php +++ b/UpdateReadme.php @@ -13,7 +13,7 @@ namespace Code4Recovery; -class CreateReadme +class UpdateReadme { /** * The path to the json file containing spec data. @@ -80,13 +80,14 @@ public function __construct(string $specFile, string $readmeFile) */ private function createTable(): string { - $content[0] = $this->tableDelimiterTop; // Rows must be created before header, so we know what language columns to create - $content[2] = $this->createTableRows(); - $content[1] = $this->createTableHeader(); - $content[3] = $this->tableDelimiterBottom; - ksort($content); - return implode(PHP_EOL, $content); + $rows = $this->createTableRows(); + return implode(PHP_EOL, [ + $this->tableDelimiterTop, + $this->createTableHeader(), + $rows, + $this->tableDelimiterBottom, + ]); } /** @@ -97,22 +98,25 @@ private function createTable(): string private function createTableHeader(): string { // Start columns & header dashes output - $headerColumns[] = '| Code'; - $headerDashes[] = '| ---'; + $headerColumns = ['Code']; + // Loop through available languages, comparing them to the languages // available in the spec data and create columns foreach ($this->languages as $languageCode => $language) { if (in_array($languageCode, $this->languagesUsed)) { // Create columns - $headerColumns[] = trim($language); - $headerDashes[] = '---'; + $headerColumns[] = $language; } } - // Add an empty array value so our implode will add an extra ' | ' at the end - $markupArray['cols'] = implode(' | ', array_merge($headerColumns, [''])); - $markupArray['dashes'] = implode(' | ', array_merge($headerDashes, [''])); + + // Create header dashes + $rows = [$headerColumns, array_fill(0, count($headerColumns), '---')]; + + // Add an empty array value so our implode will add an extra '|' at the end // Build final markup with line breaks - return implode(PHP_EOL, $markupArray); + return implode(PHP_EOL, array_map(function ($row) { + return implode('|', array_merge([''], $row, [''])); + }, $rows)); } /** @@ -124,28 +128,33 @@ private function createTableRows(): string { // Init empty array $specRows = []; + // Get spec data & language codes $specJson = json_decode(file_get_contents($this->specFile), true); $availableLanguages = array_keys($this->languages); - // Loop through tupes from spec + + // Loop through types from spec foreach ($specJson['types'] as $key => $value) { // Begin row output. Empty the $columns array each time. - $specColumns = []; - $specColumns[] = '| `' . trim($key) . '`'; + $specColumns = ['`' . $key . '`']; + // Loop through translated values foreach ($value as $languageKey => $translatedText) { + // Only display values for available languages if (in_array($languageKey, $availableLanguages)) { + // Add the language key to an array for use in creating the header if (!in_array($languageKey, $this->languagesUsed)) { - $this->languagesUsed[] = trim($languageKey); + $this->languagesUsed[] = $languageKey; } // Add translation to columns - $specColumns[] = trim($translatedText); + $specColumns[] = $translatedText; } } + // Add empty array value so implode will create an extra "|" at then end of the markup - $specRows[] = implode(' | ', array_merge($specColumns, [''])); + $specRows[] = implode('|', array_merge([''], $specColumns, [''])); } return implode(PHP_EOL, $specRows); } @@ -170,4 +179,4 @@ private function writeFile(string $tableContent): void } } -new CreateReadme('./data/types.json', 'README.md'); +new UpdateReadme('./data/types.json', 'README.md'); From b3ee517a9dc4e0d3b6e926d439cd205bf0488959 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 07:40:01 -0700 Subject: [PATCH 03/24] add ja and sv --- README.md | 120 ++++++++++++------------ UpdateReadme.php | 4 +- data/types.json | 232 +++++++++++++++++++++++++++++++++++------------ 3 files changed, 236 insertions(+), 120 deletions(-) diff --git a/README.md b/README.md index 12a7ce9..0ba3a36 100644 --- a/README.md +++ b/README.md @@ -155,66 +155,66 @@ for "Babysitting Available." "American Sign Language" or "ASL" rather than "Sign they will be ignored by the importer. -|Code|English|Español|Français| -|---|---|---|---| -|`11`|11th Step Meditation|Meditación del Paso 11|Méditation sur la 11e Étape| -|`12x12`|12 Steps & 12 Traditions|12 Pasos y 12 Tradiciones|12 Étapes et 12 Traditions| -|`A`|Secular|Secular|Séculier| -|`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill| -|`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen| -|`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon| -|`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes| -|`B`|Big Book|Libro Grande|Gros Livre| -|`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible| -|`BE`|Newcomer|Principiantes|Nouveau/nouvelle| -|`BI`|Bisexual|Bisexual|Bisexuel| -|`BRK`|Breakfast|Desayuno|Petit déjeuner| -|`C`|Closed|Cerrada|Fermé| -|`CAN`|Candlelight|Luz de una vela|À la chandelle| -|`CF`|Child-Friendly|Niño amigable|Enfants acceptés| -|`D`|Discussion|Discusión|Discussion| -|`DB`|Digital Basket|Canasta digital|Panier numérique| -|`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic| -|`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes| -|`EN`|English|Inglés|Anglais| -|`FF`|Fragrance Free|Sin fragancia|Sans parfum| -|`FR`|French|Francés|Français| -|`G`|Gay|Gay|Gai| -|`GR`|Grapevine|La Viña|Grapevine| -|`H`|Birthday|Cumpleaños|Anniversaire| -|`HE`|Hebrew|Hebreo|Hébreu| -|`ITA`|Italian|Italiano|Italien| -|`JA`|Japanese|Japonés|Japonais| -|`KOR`|Korean|Coreano|Coréen| -|`L`|Lesbian|Lesbianas|Lesbienne| -|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ| -|`LIT`|Literature|Literatura|Publications| -|`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool| -|`M`|Men|Hombres|Hommes| -|`MED`|Meditation|Meditación|Méditation| -|`N`|Native American|Nativo Americano|Autochtone| -|`NDG`|Indigenous|Indígena|Indigène| -|`O`|Open|Abierta|Ouvert(e)| -|`OUT`|Outdoor|Al aire libre|En plein air| -|`P`|Professionals|Profesionales|Professionnels| -|`POC`|People of Color|Gente de color|Gens de couleur| -|`POL`|Polish|Polaco|Polonais| -|`POR`|Portuguese|Portugués|Portugais| -|`PUN`|Punjabi|Punjabi|Pendjabi| -|`RUS`|Russian|Ruso|Russe| -|`S`|Spanish|Español|Espagnol| -|`SEN`|Seniors|Personas mayores|Séniors| -|`SM`|Smoking Permitted|Se permite fumar|Permis de fumer| -|`SP`|Speaker|Orador|Conférencier| -|`ST`|Step Study|Estudio de pasos|Sur les Étapes| -|`T`|Transgender|Transgénero|Transgenre| -|`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé| -|`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions| -|`W`|Women|Mujer|Femmes| -|`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants| -|`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants| -|`XT`|Cross Talk Permitted|Se permite opinar|Conversation croisée permise| -|`Y`|Young People|Gente joven|Jeunes| +|Code|English|Español|Français|日本語|Svenska| +|---|---|---|---|---|---| +|`11`|11th Step Meditation|Meditación del Paso 11|Méditation sur la 11e Étape|ステップ11 黙想|11th Stegs Meditation| +|`12x12`|12 Steps & 12 Traditions|12 Pasos y 12 Tradiciones|12 Étapes et 12 Traditions|12のステップと12の伝統|12 Steg & 12 Traditioner| +|`A`|Secular|Secular|Séculier|無宗教|Sekulärt| +|`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill|ビルはこう思う|Som Bill Ser Det| +|`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen|アラティーンと同時進行|Tillsammans med Alateen| +|`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon|アラノンと同時進行|Tillsammans med Al-Anon| +|`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes|アメリカ手話|Amerikanskt teckenspråk| +|`B`|Big Book|Libro Grande|Gros Livre|ビッグブック|Stora Boken| +|`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible|ベビーシッターあり|Barnvakt Finns| +|`BE`|Newcomer|Principiantes|Nouveau/nouvelle|ビギナーズ|Nykomling| +|`BI`|Bisexual|Bisexual|Bisexuel|バイセクシャル|Bisexuellt| +|`BRK`|Breakfast|Desayuno|Petit déjeuner|朝食|Frukost| +|`C`|Closed|Cerrada|Fermé|クローズド|Slutet| +|`CAN`|Candlelight|Luz de una vela|À la chandelle|キャンドル|Tända Ljus| +|`CF`|Child-Friendly|Niño amigable|Enfants acceptés|お子さま歓迎|Barnvänligt| +|`D`|Discussion|Discusión|Discussion|ディスカッション|Diskussion| +|`DB`|Digital Basket|Canasta digital|Panier numérique|電子献金|Digital Korg| +|`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic|重複診断|Dubbel Diagnos| +|`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes|今日を新たに|Dagliga Reflektioner| +|`EN`|English|Inglés|Anglais|英語|Engelska| +|`FF`|Fragrance Free|Sin fragancia|Sans parfum|香水なし|Parfym Fritt| +|`FR`|French|Francés|Français|フランス語|Franska| +|`G`|Gay|Gay|Gai|ゲイ|Gay| +|`GR`|Grapevine|La Viña|Grapevine|グレープバイン|Grapevine| +|`H`|Birthday|Cumpleaños|Anniversaire|バースデー|Födelsedag| +|`HE`|Hebrew|Hebreo|Hébreu|ヘブライ語|Hebreiska| +|`ITA`|Italian|Italiano|Italien|イタリア語|Italienska| +|`JA`|Japanese|Japonés|Japonais|日本語|Japanska| +|`KOR`|Korean|Coreano|Coréen|韓国語|Koreanska| +|`L`|Lesbian|Lesbianas|Lesbienne|レズビアン|Lesbiskt| +|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ|LGBTQ|LGBTQ| +|`LIT`|Literature|Literatura|Publications|書籍|Litteratur| +|`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool|リビングソーバー|Leva Nyktert| +|`M`|Men|Hombres|Hommes|男性|Mansmöte| +|`MED`|Meditation|Meditación|Méditation|黙想|Meditationsmöte| +|`N`|Native American|Nativo Americano|Autochtone|ネイティブアメリカン|Ur-amerikanskt| +|`NDG`|Indigenous|Indígena|Indigène|先住民|Urfolkligt| +|`O`|Open|Abierta|Ouvert(e)|オープン|Öppet| +|`OUT`|Outdoor|Al aire libre|En plein air|アウトドア|Utomhus| +|`P`|Professionals|Profesionales|Professionnels|職業人|Professionella| +|`POC`|People of Color|Gente de color|Gens de couleur|有色人種|Färgade| +|`POL`|Polish|Polaco|Polonais|ポーランド語|Polska| +|`POR`|Portuguese|Portugués|Portugais|ポルトガル語|Portugisiska| +|`PUN`|Punjabi|Punjabi|Pendjabi|パンジャブ語|Punjabi| +|`RUS`|Russian|Ruso|Russe|ロシア語|Ryska| +|`S`|Spanish|Español|Espagnol|スペイン語|Spanska| +|`SEN`|Seniors|Personas mayores|Séniors|シニア|Seniorer| +|`SM`|Smoking Permitted|Se permite fumar|Permis de fumer|喫煙可|Rökning Tillåten| +|`SP`|Speaker|Orador|Conférencier|スピーカー|Talare| +|`ST`|Step Study|Estudio de pasos|Sur les Étapes|ステップ|Stegmöte| +|`T`|Transgender|Transgénero|Transgenre|トランスジェンダー|Transpersoner| +|`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé|一時的休止中|Tillfälligt Stängt| +|`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions|伝統|Traditionsmöte| +|`W`|Women|Mujer|Femmes|女性|Kvinnomöte| +|`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants|車いすアクセス|Handikappanpassat| +|`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants|車いす使用者用トイレ|Handikappanpassad WC| +|`XT`|Cross Talk Permitted|Se permite opinar|Conversation croisée permise|クロストーク可能|Kommentarer Tilltåtna| +|`Y`|Young People|Gente joven|Jeunes|ヤング|Young People| ## Sharing Your Data diff --git a/UpdateReadme.php b/UpdateReadme.php index 59a1fc3..ad33fbe 100644 --- a/UpdateReadme.php +++ b/UpdateReadme.php @@ -112,9 +112,9 @@ private function createTableHeader(): string // Create header dashes $rows = [$headerColumns, array_fill(0, count($headerColumns), '---')]; - // Add an empty array value so our implode will add an extra '|' at the end // Build final markup with line breaks return implode(PHP_EOL, array_map(function ($row) { + // Add empty array values so our row is surrounded by pipes return implode('|', array_merge([''], $row, [''])); }, $rows)); } @@ -153,7 +153,7 @@ private function createTableRows(): string } } - // Add empty array value so implode will create an extra "|" at then end of the markup + // Add empty array values so our row is surrounded by pipes $specRows[] = implode('|', array_merge([''], $specColumns, [''])); } return implode(PHP_EOL, $specRows); diff --git a/data/types.json b/data/types.json index 39c1509..2886cba 100644 --- a/data/types.json +++ b/data/types.json @@ -3,292 +3,408 @@ "11": { "en": "11th Step Meditation", "es": "Meditación del Paso 11", - "fr": "Méditation sur la 11e Étape" + "fr": "Méditation sur la 11e Étape", + "ja": "ステップ11 黙想", + "sv": "11th Stegs Meditation" }, "12x12": { "en": "12 Steps & 12 Traditions", "es": "12 Pasos y 12 Tradiciones", - "fr": "12 Étapes et 12 Traditions" + "fr": "12 Étapes et 12 Traditions", + "ja": "12のステップと12の伝統", + "sv": "12 Steg & 12 Traditioner" }, "A": { "en": "Secular", "es": "Secular", - "fr": "Séculier" + "fr": "Séculier", + "ja": "無宗教", + "sv": "Sekulärt" }, "ABSI": { "en": "As Bill Sees It", "es": "Como lo ve Bill", - "fr": "Réflexions de Bill" + "fr": "Réflexions de Bill", + "ja": "ビルはこう思う", + "sv": "Som Bill Ser Det" }, "AL": { "en": "Concurrent with Alateen", "es": "Concurrente con Alateen", - "fr": "En même temps qu’Alateen" + "fr": "En même temps qu’Alateen", + "ja": "アラティーンと同時進行", + "sv": "Tillsammans med Alateen" }, "AL-AN": { "en": "Concurrent with Al-Anon", "es": "Concurrente con Al-Anon", - "fr": "En même temps qu’Al-Anon" + "fr": "En même temps qu’Al-Anon", + "ja": "アラノンと同時進行", + "sv": "Tillsammans med Al-Anon" }, "ASL": { "en": "American Sign Language", "es": "Lenguaje por señas", - "fr": "Langage des Signes" + "fr": "Langage des Signes", + "ja": "アメリカ手話", + "sv": "Amerikanskt teckenspråk" }, "B": { "en": "Big Book", "es": "Libro Grande", - "fr": "Gros Livre" + "fr": "Gros Livre", + "ja": "ビッグブック", + "sv": "Stora Boken" }, "BA": { "en": "Babysitting Available", "es": "Guardería disponible", - "fr": "Garderie d’enfants disponible" + "fr": "Garderie d’enfants disponible", + "ja": "ベビーシッターあり", + "sv": "Barnvakt Finns" }, "BE": { "en": "Newcomer", "es": "Principiantes", - "fr": "Nouveau/nouvelle" + "fr": "Nouveau/nouvelle", + "ja": "ビギナーズ", + "sv": "Nykomling" }, "BI": { "en": "Bisexual", "es": "Bisexual", - "fr": "Bisexuel" + "fr": "Bisexuel", + "ja": "バイセクシャル", + "sv": "Bisexuellt" }, "BRK": { "en": "Breakfast", "es": "Desayuno", - "fr": "Petit déjeuner" + "fr": "Petit déjeuner", + "ja": "朝食", + "sv": "Frukost" }, "C": { "en": "Closed", "es": "Cerrada", - "fr": "Fermé" + "fr": "Fermé", + "ja": "クローズド", + "sv": "Slutet" }, "CAN": { "en": "Candlelight", "es": "Luz de una vela", - "fr": "À la chandelle" + "fr": "À la chandelle", + "ja": "キャンドル", + "sv": "Tända Ljus" }, "CF": { "en": "Child-Friendly", "es": "Niño amigable", - "fr": "Enfants acceptés" + "fr": "Enfants acceptés", + "ja": "お子さま歓迎", + "sv": "Barnvänligt" }, "D": { "en": "Discussion", "es": "Discusión", - "fr": "Discussion" + "fr": "Discussion", + "ja": "ディスカッション", + "sv": "Diskussion" }, "DB": { "en": "Digital Basket", "es": "Canasta digital", - "fr": "Panier numérique" + "fr": "Panier numérique", + "ja": "電子献金", + "sv": "Digital Korg" }, "DD": { "en": "Dual Diagnosis", "es": "Diagnóstico dual", - "fr": "Double diagnostic" + "fr": "Double diagnostic", + "ja": "重複診断", + "sv": "Dubbel Diagnos" }, "DR": { "en": "Daily Reflections", "es": "Reflexiones Diarias", - "fr": "Réflexions quotidiennes" + "fr": "Réflexions quotidiennes", + "ja": "今日を新たに", + "sv": "Dagliga Reflektioner" }, "EN": { "en": "English", "es": "Inglés", - "fr": "Anglais" + "fr": "Anglais", + "ja": "英語", + "sv": "Engelska" }, "FF": { "en": "Fragrance Free", "es": "Sin fragancia", - "fr": "Sans parfum" + "fr": "Sans parfum", + "ja": "香水なし", + "sv": "Parfym Fritt" }, "FR": { "en": "French", "es": "Francés", - "fr": "Français" + "fr": "Français", + "ja": "フランス語", + "sv": "Franska" }, "G": { "en": "Gay", "es": "Gay", - "fr": "Gai" + "fr": "Gai", + "ja": "ゲイ", + "sv": "Gay" }, "GR": { "en": "Grapevine", "es": "La Viña", - "fr": "Grapevine" + "fr": "Grapevine", + "ja": "グレープバイン", + "sv": "Grapevine" }, "H": { "en": "Birthday", "es": "Cumpleaños", - "fr": "Anniversaire" + "fr": "Anniversaire", + "ja": "バースデー", + "sv": "Födelsedag" }, "HE": { "en": "Hebrew", "es": "Hebreo", - "fr": "Hébreu" + "fr": "Hébreu", + "ja": "ヘブライ語", + "sv": "Hebreiska" }, "ITA": { "en": "Italian", "es": "Italiano", - "fr": "Italien" + "fr": "Italien", + "ja": "イタリア語", + "sv": "Italienska" }, "JA": { "en": "Japanese", "es": "Japonés", - "fr": "Japonais" + "fr": "Japonais", + "ja": "日本語", + "sv": "Japanska" }, "KOR": { "en": "Korean", "es": "Coreano", - "fr": "Coréen" + "fr": "Coréen", + "ja": "韓国語", + "sv": "Koreanska" }, "L": { "en": "Lesbian", "es": "Lesbianas", - "fr": "Lesbienne" + "fr": "Lesbienne", + "ja": "レズビアン", + "sv": "Lesbiskt" }, "LGBTQ": { "en": "LGBTQ", "es": "LGBTQ", - "fr": "LGBTQ" + "fr": "LGBTQ", + "ja": "LGBTQ", + "sv": "LGBTQ" }, "LIT": { "en": "Literature", "es": "Literatura", - "fr": "Publications" + "fr": "Publications", + "ja": "書籍", + "sv": "Litteratur" }, "LS": { "en": "Living Sober", "es": "Viviendo Sobrio", - "fr": "Vivre… Sans alcool" + "fr": "Vivre… Sans alcool", + "ja": "リビングソーバー", + "sv": "Leva Nyktert" }, "M": { "en": "Men", "es": "Hombres", - "fr": "Hommes" + "fr": "Hommes", + "ja": "男性", + "sv": "Mansmöte" }, "MED": { "en": "Meditation", "es": "Meditación", - "fr": "Méditation" + "fr": "Méditation", + "ja": "黙想", + "sv": "Meditationsmöte" }, "N": { "en": "Native American", "es": "Nativo Americano", - "fr": "Autochtone" + "fr": "Autochtone", + "ja": "ネイティブアメリカン", + "sv": "Ur-amerikanskt" }, "NDG": { "en": "Indigenous", "es": "Indígena", - "fr": "Indigène" + "fr": "Indigène", + "ja": "先住民", + "sv": "Urfolkligt" }, "O": { "en": "Open", "es": "Abierta", - "fr": "Ouvert(e)" + "fr": "Ouvert(e)", + "ja": "オープン", + "sv": "Öppet" }, "OUT": { "en": "Outdoor", "es": "Al aire libre", - "fr": "En plein air" + "fr": "En plein air", + "ja": "アウトドア", + "sv": "Utomhus" }, "P": { "en": "Professionals", "es": "Profesionales", - "fr": "Professionnels" + "fr": "Professionnels", + "ja": "職業人", + "sv": "Professionella" }, "POC": { "en": "People of Color", "es": "Gente de color", - "fr": "Gens de couleur" + "fr": "Gens de couleur", + "ja": "有色人種", + "sv": "Färgade" }, "POL": { "en": "Polish", "es": "Polaco", - "fr": "Polonais" + "fr": "Polonais", + "ja": "ポーランド語", + "sv": "Polska" }, "POR": { "en": "Portuguese", "es": "Portugués", - "fr": "Portugais" + "fr": "Portugais", + "ja": "ポルトガル語", + "sv": "Portugisiska" }, "PUN": { "en": "Punjabi", "es": "Punjabi", - "fr": "Pendjabi" + "fr": "Pendjabi", + "ja": "パンジャブ語", + "sv": "Punjabi" }, "RUS": { "en": "Russian", "es": "Ruso", - "fr": "Russe" + "fr": "Russe", + "ja": "ロシア語", + "sv": "Ryska" }, "S": { "en": "Spanish", "es": "Español", - "fr": "Espagnol" + "fr": "Espagnol", + "ja": "スペイン語", + "sv": "Spanska" }, "SEN": { "en": "Seniors", "es": "Personas mayores", - "fr": "Séniors" + "fr": "Séniors", + "ja": "シニア", + "sv": "Seniorer" }, "SM": { "en": "Smoking Permitted", "es": "Se permite fumar", - "fr": "Permis de fumer" + "fr": "Permis de fumer", + "ja": "喫煙可", + "sv": "Rökning Tillåten" }, "SP": { "en": "Speaker", "es": "Orador", - "fr": "Conférencier" + "fr": "Conférencier", + "ja": "スピーカー", + "sv": "Talare" }, "ST": { "en": "Step Study", "es": "Estudio de pasos", - "fr": "Sur les Étapes" + "fr": "Sur les Étapes", + "ja": "ステップ", + "sv": "Stegmöte" }, "T": { "en": "Transgender", "es": "Transgénero", - "fr": "Transgenre" + "fr": "Transgenre", + "ja": "トランスジェンダー", + "sv": "Transpersoner" }, "TC": { "en": "Location Temporarily Closed", "es": "Ubicación temporalmente cerrada", - "fr": "Emplacement temporairement fermé" + "fr": "Emplacement temporairement fermé", + "ja": "一時的休止中", + "sv": "Tillfälligt Stängt" }, "TR": { "en": "Tradition Study", "es": "Estudio de tradicion", - "fr": "Étude des Traditions" + "fr": "Étude des Traditions", + "ja": "伝統", + "sv": "Traditionsmöte" }, "W": { "en": "Women", "es": "Mujer", - "fr": "Femmes" + "fr": "Femmes", + "ja": "女性", + "sv": "Kvinnomöte" }, "X": { "en": "Wheelchair Access", "es": "Acceso en silla de ruedas", - "fr": "Accès aux fauteuils roulants" + "fr": "Accès aux fauteuils roulants", + "ja": "車いすアクセス", + "sv": "Handikappanpassat" }, "XB": { "en": "Wheelchair-Accessible Bathroom", "es": "Baño accesible para sillas de ruedas", - "fr": "Toilettes accessibles aux fauteuils roulants" + "fr": "Toilettes accessibles aux fauteuils roulants", + "ja": "車いす使用者用トイレ", + "sv": "Handikappanpassad WC" }, "XT": { "en": "Cross Talk Permitted", "es": "Se permite opinar", - "fr": "Conversation croisée permise" + "fr": "Conversation croisée permise", + "ja": "クロストーク可能", + "sv": "Kommentarer Tilltåtna" }, "Y": { "en": "Young People", "es": "Gente joven", - "fr": "Jeunes" + "fr": "Jeunes", + "ja": "ヤング", + "sv": "Young People" } } } From a7cfc1fe8b509f45fc7cfc7cdb1dac65eab7602c Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:24:16 -0700 Subject: [PATCH 04/24] exportable npm package generating typescript --- .gitignore | 2 + UpdateReadme.php | 14 ++ package-lock.json | 462 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 30 +++ src/index.ts | 410 ++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 11 ++ tslint.json | 3 + 7 files changed, 932 insertions(+) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..69a671c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +/lib \ No newline at end of file diff --git a/UpdateReadme.php b/UpdateReadme.php index ad33fbe..faba917 100644 --- a/UpdateReadme.php +++ b/UpdateReadme.php @@ -71,6 +71,9 @@ public function __construct(string $specFile, string $readmeFile) $this->readmeFile = $readmeFile; // Process $this->writeFile($this->createTable()); + + // write typescript + $this->writeTypeScript(); } /** @@ -177,6 +180,17 @@ private function writeFile(string $tableContent): void fwrite($readmeHandle, $result); fclose($readmeHandle); } + + /** + * Write the typescript file + * + * @return void + */ + private function writeTypeScript(): void + { + $json = file_get_contents($this->specFile); + file_put_contents('./src/index.ts', 'export const types = ' . $json . ';'); + } } new UpdateReadme('./data/types.json', 'README.md'); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6c682e8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,462 @@ +{ + "name": "spec", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "spec", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "prettier": "^2.8.8", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typescript": "^5.1.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@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://packages.atlassian.com/api/npm/npm-remote/@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://packages.atlassian.com/api/npm/npm-remote/@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/ansi-styles": { + "version": "3.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/argparse": { + "version": "1.0.10", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/builtin-modules": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/color-convert": { + "version": "1.9.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/color-name": { + "version": "1.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/fs.realpath": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "*" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/minimatch": { + "version": "3.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/once": { + "version": "1.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true, + "bin": { + "tslint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..32a244b --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "spec", + "version": "1.0.0", + "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib/**/*" + ], + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "tsc", + "format": "prettier --write \"src/**/*.ts\"", + "lint": "tslint -p tsconfig.json", + "prepare": "npm run build", + "prepublishOnly": "npm test && npm run lint", + "preversion": "npm run lint", + "version": "npm run format && git add -A src", + "postversion": "git push && git push --tags" + }, + "keywords": [], + "author": "Code for Recovery", + "license": "ISC", + "devDependencies": { + "prettier": "^2.8.8", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typescript": "^5.1.3" + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..9c4a395 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,410 @@ +export const types = { + types: { + "11": { + en: "11th Step Meditation", + es: "Meditación del Paso 11", + fr: "Méditation sur la 11e Étape", + ja: "ステップ11 黙想", + sv: "11th Stegs Meditation", + }, + "12x12": { + en: "12 Steps & 12 Traditions", + es: "12 Pasos y 12 Tradiciones", + fr: "12 Étapes et 12 Traditions", + ja: "12のステップと12の伝統", + sv: "12 Steg & 12 Traditioner", + }, + A: { + en: "Secular", + es: "Secular", + fr: "Séculier", + ja: "無宗教", + sv: "Sekulärt", + }, + ABSI: { + en: "As Bill Sees It", + es: "Como lo ve Bill", + fr: "Réflexions de Bill", + ja: "ビルはこう思う", + sv: "Som Bill Ser Det", + }, + AL: { + en: "Concurrent with Alateen", + es: "Concurrente con Alateen", + fr: "En même temps qu’Alateen", + ja: "アラティーンと同時進行", + sv: "Tillsammans med Alateen", + }, + "AL-AN": { + en: "Concurrent with Al-Anon", + es: "Concurrente con Al-Anon", + fr: "En même temps qu’Al-Anon", + ja: "アラノンと同時進行", + sv: "Tillsammans med Al-Anon", + }, + ASL: { + en: "American Sign Language", + es: "Lenguaje por señas", + fr: "Langage des Signes", + ja: "アメリカ手話", + sv: "Amerikanskt teckenspråk", + }, + B: { + en: "Big Book", + es: "Libro Grande", + fr: "Gros Livre", + ja: "ビッグブック", + sv: "Stora Boken", + }, + BA: { + en: "Babysitting Available", + es: "Guardería disponible", + fr: "Garderie d’enfants disponible", + ja: "ベビーシッターあり", + sv: "Barnvakt Finns", + }, + BE: { + en: "Newcomer", + es: "Principiantes", + fr: "Nouveau/nouvelle", + ja: "ビギナーズ", + sv: "Nykomling", + }, + BI: { + en: "Bisexual", + es: "Bisexual", + fr: "Bisexuel", + ja: "バイセクシャル", + sv: "Bisexuellt", + }, + BRK: { + en: "Breakfast", + es: "Desayuno", + fr: "Petit déjeuner", + ja: "朝食", + sv: "Frukost", + }, + C: { + en: "Closed", + es: "Cerrada", + fr: "Fermé", + ja: "クローズド", + sv: "Slutet", + }, + CAN: { + en: "Candlelight", + es: "Luz de una vela", + fr: "À la chandelle", + ja: "キャンドル", + sv: "Tända Ljus", + }, + CF: { + en: "Child-Friendly", + es: "Niño amigable", + fr: "Enfants acceptés", + ja: "お子さま歓迎", + sv: "Barnvänligt", + }, + D: { + en: "Discussion", + es: "Discusión", + fr: "Discussion", + ja: "ディスカッション", + sv: "Diskussion", + }, + DB: { + en: "Digital Basket", + es: "Canasta digital", + fr: "Panier numérique", + ja: "電子献金", + sv: "Digital Korg", + }, + DD: { + en: "Dual Diagnosis", + es: "Diagnóstico dual", + fr: "Double diagnostic", + ja: "重複診断", + sv: "Dubbel Diagnos", + }, + DR: { + en: "Daily Reflections", + es: "Reflexiones Diarias", + fr: "Réflexions quotidiennes", + ja: "今日を新たに", + sv: "Dagliga Reflektioner", + }, + EN: { + en: "English", + es: "Inglés", + fr: "Anglais", + ja: "英語", + sv: "Engelska", + }, + FF: { + en: "Fragrance Free", + es: "Sin fragancia", + fr: "Sans parfum", + ja: "香水なし", + sv: "Parfym Fritt", + }, + FR: { + en: "French", + es: "Francés", + fr: "Français", + ja: "フランス語", + sv: "Franska", + }, + G: { + en: "Gay", + es: "Gay", + fr: "Gai", + ja: "ゲイ", + sv: "Gay", + }, + GR: { + en: "Grapevine", + es: "La Viña", + fr: "Grapevine", + ja: "グレープバイン", + sv: "Grapevine", + }, + H: { + en: "Birthday", + es: "Cumpleaños", + fr: "Anniversaire", + ja: "バースデー", + sv: "Födelsedag", + }, + HE: { + en: "Hebrew", + es: "Hebreo", + fr: "Hébreu", + ja: "ヘブライ語", + sv: "Hebreiska", + }, + ITA: { + en: "Italian", + es: "Italiano", + fr: "Italien", + ja: "イタリア語", + sv: "Italienska", + }, + JA: { + en: "Japanese", + es: "Japonés", + fr: "Japonais", + ja: "日本語", + sv: "Japanska", + }, + KOR: { + en: "Korean", + es: "Coreano", + fr: "Coréen", + ja: "韓国語", + sv: "Koreanska", + }, + L: { + en: "Lesbian", + es: "Lesbianas", + fr: "Lesbienne", + ja: "レズビアン", + sv: "Lesbiskt", + }, + LGBTQ: { + en: "LGBTQ", + es: "LGBTQ", + fr: "LGBTQ", + ja: "LGBTQ", + sv: "LGBTQ", + }, + LIT: { + en: "Literature", + es: "Literatura", + fr: "Publications", + ja: "書籍", + sv: "Litteratur", + }, + LS: { + en: "Living Sober", + es: "Viviendo Sobrio", + fr: "Vivre… Sans alcool", + ja: "リビングソーバー", + sv: "Leva Nyktert", + }, + M: { + en: "Men", + es: "Hombres", + fr: "Hommes", + ja: "男性", + sv: "Mansmöte", + }, + MED: { + en: "Meditation", + es: "Meditación", + fr: "Méditation", + ja: "黙想", + sv: "Meditationsmöte", + }, + N: { + en: "Native American", + es: "Nativo Americano", + fr: "Autochtone", + ja: "ネイティブアメリカン", + sv: "Ur-amerikanskt", + }, + NDG: { + en: "Indigenous", + es: "Indígena", + fr: "Indigène", + ja: "先住民", + sv: "Urfolkligt", + }, + O: { + en: "Open", + es: "Abierta", + fr: "Ouvert(e)", + ja: "オープン", + sv: "Öppet", + }, + OUT: { + en: "Outdoor", + es: "Al aire libre", + fr: "En plein air", + ja: "アウトドア", + sv: "Utomhus", + }, + P: { + en: "Professionals", + es: "Profesionales", + fr: "Professionnels", + ja: "職業人", + sv: "Professionella", + }, + POC: { + en: "People of Color", + es: "Gente de color", + fr: "Gens de couleur", + ja: "有色人種", + sv: "Färgade", + }, + POL: { + en: "Polish", + es: "Polaco", + fr: "Polonais", + ja: "ポーランド語", + sv: "Polska", + }, + POR: { + en: "Portuguese", + es: "Portugués", + fr: "Portugais", + ja: "ポルトガル語", + sv: "Portugisiska", + }, + PUN: { + en: "Punjabi", + es: "Punjabi", + fr: "Pendjabi", + ja: "パンジャブ語", + sv: "Punjabi", + }, + RUS: { + en: "Russian", + es: "Ruso", + fr: "Russe", + ja: "ロシア語", + sv: "Ryska", + }, + S: { + en: "Spanish", + es: "Español", + fr: "Espagnol", + ja: "スペイン語", + sv: "Spanska", + }, + SEN: { + en: "Seniors", + es: "Personas mayores", + fr: "Séniors", + ja: "シニア", + sv: "Seniorer", + }, + SM: { + en: "Smoking Permitted", + es: "Se permite fumar", + fr: "Permis de fumer", + ja: "喫煙可", + sv: "Rökning Tillåten", + }, + SP: { + en: "Speaker", + es: "Orador", + fr: "Conférencier", + ja: "スピーカー", + sv: "Talare", + }, + ST: { + en: "Step Study", + es: "Estudio de pasos", + fr: "Sur les Étapes", + ja: "ステップ", + sv: "Stegmöte", + }, + T: { + en: "Transgender", + es: "Transgénero", + fr: "Transgenre", + ja: "トランスジェンダー", + sv: "Transpersoner", + }, + TC: { + en: "Location Temporarily Closed", + es: "Ubicación temporalmente cerrada", + fr: "Emplacement temporairement fermé", + ja: "一時的休止中", + sv: "Tillfälligt Stängt", + }, + TR: { + en: "Tradition Study", + es: "Estudio de tradicion", + fr: "Étude des Traditions", + ja: "伝統", + sv: "Traditionsmöte", + }, + W: { + en: "Women", + es: "Mujer", + fr: "Femmes", + ja: "女性", + sv: "Kvinnomöte", + }, + X: { + en: "Wheelchair Access", + es: "Acceso en silla de ruedas", + fr: "Accès aux fauteuils roulants", + ja: "車いすアクセス", + sv: "Handikappanpassat", + }, + XB: { + en: "Wheelchair-Accessible Bathroom", + es: "Baño accesible para sillas de ruedas", + fr: "Toilettes accessibles aux fauteuils roulants", + ja: "車いす使用者用トイレ", + sv: "Handikappanpassad WC", + }, + XT: { + en: "Cross Talk Permitted", + es: "Se permite opinar", + fr: "Conversation croisée permise", + ja: "クロストーク可能", + sv: "Kommentarer Tilltåtna", + }, + Y: { + en: "Young People", + es: "Gente joven", + fr: "Jeunes", + ja: "ヤング", + sv: "Young People", + }, + }, +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ca4bf6a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "declaration": true, + "outDir": "./lib", + "strict": true + }, + "include": ["src"], + "exclude": ["node_modules", "**/__tests__/*"] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..267f369 --- /dev/null +++ b/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": ["tslint:recommended", "tslint-config-prettier"] +} From 473f9e150d42bd7a4369fdbc4d5717d2b6bfc157 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sat, 10 Jun 2023 08:23:02 -0700 Subject: [PATCH 05/24] tweak build logic --- UpdateReadme.php => Build.php | 85 +++++++++++++---------------------- package.json | 12 +++-- 2 files changed, 39 insertions(+), 58 deletions(-) rename UpdateReadme.php => Build.php (61%) diff --git a/UpdateReadme.php b/Build.php similarity index 61% rename from UpdateReadme.php rename to Build.php index faba917..7706420 100644 --- a/UpdateReadme.php +++ b/Build.php @@ -1,7 +1,7 @@ 'Svenska' ]; - /** - * Used to track all languages found in the spec file to avoid empty - * language columns - * @var array - */ - private array $languagesUsed = []; - /** * Constructor. * * @param $specFile: Path to spec json file, relative to project root. * @param $readmeFile: Path to readme file, relative to project root. */ - public function __construct(string $specFile, string $readmeFile) + public function __construct() { - // Set variables - $this->specFile = $specFile; - $this->readmeFile = $readmeFile; - // Process - $this->writeFile($this->createTable()); - - // write typescript + $this->writeReadme($this->createTable()); $this->writeTypeScript(); } @@ -83,12 +70,10 @@ public function __construct(string $specFile, string $readmeFile) */ private function createTable(): string { - // Rows must be created before header, so we know what language columns to create - $rows = $this->createTableRows(); return implode(PHP_EOL, [ $this->tableDelimiterTop, $this->createTableHeader(), - $rows, + $this->createTableRows(), $this->tableDelimiterBottom, ]); } @@ -100,26 +85,26 @@ private function createTable(): string */ private function createTableHeader(): string { - // Start columns & header dashes output - $headerColumns = ['Code']; - - // Loop through available languages, comparing them to the languages - // available in the spec data and create columns - foreach ($this->languages as $languageCode => $language) { - if (in_array($languageCode, $this->languagesUsed)) { - // Create columns - $headerColumns[] = $language; - } - } + // Columns + $headerColumns = array_merge(['Code'], array_values($this->languages)); - // Create header dashes + // Dashes $rows = [$headerColumns, array_fill(0, count($headerColumns), '---')]; // Build final markup with line breaks - return implode(PHP_EOL, array_map(function ($row) { - // Add empty array values so our row is surrounded by pipes - return implode('|', array_merge([''], $row, [''])); - }, $rows)); + return implode(PHP_EOL, array_map([$this, 'createTableRow'], $rows)); + } + + /** + * Creates a table row separated (and surrounded) by pipes. + * + * @param array $row + * + * @return string + */ + private function createTableRow($row): string + { + return implode('|', array_merge([''], $row, [''])); } /** @@ -134,30 +119,22 @@ private function createTableRows(): string // Get spec data & language codes $specJson = json_decode(file_get_contents($this->specFile), true); - $availableLanguages = array_keys($this->languages); + $languages = array_keys($this->languages); // Loop through types from spec foreach ($specJson['types'] as $key => $value) { // Begin row output. Empty the $columns array each time. $specColumns = ['`' . $key . '`']; - // Loop through translated values - foreach ($value as $languageKey => $translatedText) { - - // Only display values for available languages - if (in_array($languageKey, $availableLanguages)) { + // Loop through languages + foreach ($languages as $languageKey) { - // Add the language key to an array for use in creating the header - if (!in_array($languageKey, $this->languagesUsed)) { - $this->languagesUsed[] = $languageKey; - } - // Add translation to columns - $specColumns[] = $translatedText; - } + // Add translation to columns + $specColumns[] = array_key_exists($languageKey, $value) ? $value[$languageKey] : '-'; } // Add empty array values so our row is surrounded by pipes - $specRows[] = implode('|', array_merge([''], $specColumns, [''])); + $specRows[] = $this->createTableRow($specColumns); } return implode(PHP_EOL, $specRows); } @@ -169,7 +146,7 @@ private function createTableRows(): string * * @return void */ - private function writeFile(string $tableContent): void + private function writeReadme(string $tableContent): void { // Get the current readme contents $readmeContents = file_get_contents($this->readmeFile); @@ -193,4 +170,4 @@ private function writeTypeScript(): void } } -new UpdateReadme('./data/types.json', 'README.md'); +new Build(); diff --git a/package.json b/package.json index 32a244b..13037b4 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "spec", + "name": "@code4recovery/spec", "version": "1.0.0", "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", "main": "lib/index.js", @@ -13,14 +13,18 @@ "format": "prettier --write \"src/**/*.ts\"", "lint": "tslint -p tsconfig.json", "prepare": "npm run build", - "prepublishOnly": "npm test && npm run lint", + "prepublishOnly": "npm run lint", "preversion": "npm run lint", "version": "npm run format && git add -A src", "postversion": "git push && git push --tags" }, - "keywords": [], + "keywords": [ + "AA", + "meetings", + "JSON" + ], "author": "Code for Recovery", - "license": "ISC", + "license": "MIT", "devDependencies": { "prettier": "^2.8.8", "tslint": "^6.1.3", From d6585d00309e79aa8cf67491c4026d9ef6604a61 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sun, 11 Jun 2023 07:36:20 -0700 Subject: [PATCH 06/24] more typescript exports --- Build.php | 5 +- data/types.json | 812 +++++++++++++++++++++++------------------------ src/index.ts | 433 ++----------------------- src/languages.ts | 1 + src/types.ts | 408 ++++++++++++++++++++++++ 5 files changed, 840 insertions(+), 819 deletions(-) create mode 100644 src/languages.ts create mode 100644 src/types.ts diff --git a/Build.php b/Build.php index 7706420..5264b7d 100644 --- a/Build.php +++ b/Build.php @@ -122,7 +122,7 @@ private function createTableRows(): string $languages = array_keys($this->languages); // Loop through types from spec - foreach ($specJson['types'] as $key => $value) { + foreach ($specJson as $key => $value) { // Begin row output. Empty the $columns array each time. $specColumns = ['`' . $key . '`']; @@ -165,8 +165,9 @@ private function writeReadme(string $tableContent): void */ private function writeTypeScript(): void { + file_put_contents('./src/languages.ts', 'export const languages = ' . json_encode(array_keys($this->languages)) . ' as const;'); $json = file_get_contents($this->specFile); - file_put_contents('./src/index.ts', 'export const types = ' . $json . ';'); + file_put_contents('./src/types.ts', 'export const types = ' . $json . ';'); } } diff --git a/data/types.json b/data/types.json index 2886cba..95c79b4 100644 --- a/data/types.json +++ b/data/types.json @@ -1,410 +1,408 @@ { - "types": { - "11": { - "en": "11th Step Meditation", - "es": "Meditación del Paso 11", - "fr": "Méditation sur la 11e Étape", - "ja": "ステップ11 黙想", - "sv": "11th Stegs Meditation" - }, - "12x12": { - "en": "12 Steps & 12 Traditions", - "es": "12 Pasos y 12 Tradiciones", - "fr": "12 Étapes et 12 Traditions", - "ja": "12のステップと12の伝統", - "sv": "12 Steg & 12 Traditioner" - }, - "A": { - "en": "Secular", - "es": "Secular", - "fr": "Séculier", - "ja": "無宗教", - "sv": "Sekulärt" - }, - "ABSI": { - "en": "As Bill Sees It", - "es": "Como lo ve Bill", - "fr": "Réflexions de Bill", - "ja": "ビルはこう思う", - "sv": "Som Bill Ser Det" - }, - "AL": { - "en": "Concurrent with Alateen", - "es": "Concurrente con Alateen", - "fr": "En même temps qu’Alateen", - "ja": "アラティーンと同時進行", - "sv": "Tillsammans med Alateen" - }, - "AL-AN": { - "en": "Concurrent with Al-Anon", - "es": "Concurrente con Al-Anon", - "fr": "En même temps qu’Al-Anon", - "ja": "アラノンと同時進行", - "sv": "Tillsammans med Al-Anon" - }, - "ASL": { - "en": "American Sign Language", - "es": "Lenguaje por señas", - "fr": "Langage des Signes", - "ja": "アメリカ手話", - "sv": "Amerikanskt teckenspråk" - }, - "B": { - "en": "Big Book", - "es": "Libro Grande", - "fr": "Gros Livre", - "ja": "ビッグブック", - "sv": "Stora Boken" - }, - "BA": { - "en": "Babysitting Available", - "es": "Guardería disponible", - "fr": "Garderie d’enfants disponible", - "ja": "ベビーシッターあり", - "sv": "Barnvakt Finns" - }, - "BE": { - "en": "Newcomer", - "es": "Principiantes", - "fr": "Nouveau/nouvelle", - "ja": "ビギナーズ", - "sv": "Nykomling" - }, - "BI": { - "en": "Bisexual", - "es": "Bisexual", - "fr": "Bisexuel", - "ja": "バイセクシャル", - "sv": "Bisexuellt" - }, - "BRK": { - "en": "Breakfast", - "es": "Desayuno", - "fr": "Petit déjeuner", - "ja": "朝食", - "sv": "Frukost" - }, - "C": { - "en": "Closed", - "es": "Cerrada", - "fr": "Fermé", - "ja": "クローズド", - "sv": "Slutet" - }, - "CAN": { - "en": "Candlelight", - "es": "Luz de una vela", - "fr": "À la chandelle", - "ja": "キャンドル", - "sv": "Tända Ljus" - }, - "CF": { - "en": "Child-Friendly", - "es": "Niño amigable", - "fr": "Enfants acceptés", - "ja": "お子さま歓迎", - "sv": "Barnvänligt" - }, - "D": { - "en": "Discussion", - "es": "Discusión", - "fr": "Discussion", - "ja": "ディスカッション", - "sv": "Diskussion" - }, - "DB": { - "en": "Digital Basket", - "es": "Canasta digital", - "fr": "Panier numérique", - "ja": "電子献金", - "sv": "Digital Korg" - }, - "DD": { - "en": "Dual Diagnosis", - "es": "Diagnóstico dual", - "fr": "Double diagnostic", - "ja": "重複診断", - "sv": "Dubbel Diagnos" - }, - "DR": { - "en": "Daily Reflections", - "es": "Reflexiones Diarias", - "fr": "Réflexions quotidiennes", - "ja": "今日を新たに", - "sv": "Dagliga Reflektioner" - }, - "EN": { - "en": "English", - "es": "Inglés", - "fr": "Anglais", - "ja": "英語", - "sv": "Engelska" - }, - "FF": { - "en": "Fragrance Free", - "es": "Sin fragancia", - "fr": "Sans parfum", - "ja": "香水なし", - "sv": "Parfym Fritt" - }, - "FR": { - "en": "French", - "es": "Francés", - "fr": "Français", - "ja": "フランス語", - "sv": "Franska" - }, - "G": { - "en": "Gay", - "es": "Gay", - "fr": "Gai", - "ja": "ゲイ", - "sv": "Gay" - }, - "GR": { - "en": "Grapevine", - "es": "La Viña", - "fr": "Grapevine", - "ja": "グレープバイン", - "sv": "Grapevine" - }, - "H": { - "en": "Birthday", - "es": "Cumpleaños", - "fr": "Anniversaire", - "ja": "バースデー", - "sv": "Födelsedag" - }, - "HE": { - "en": "Hebrew", - "es": "Hebreo", - "fr": "Hébreu", - "ja": "ヘブライ語", - "sv": "Hebreiska" - }, - "ITA": { - "en": "Italian", - "es": "Italiano", - "fr": "Italien", - "ja": "イタリア語", - "sv": "Italienska" - }, - "JA": { - "en": "Japanese", - "es": "Japonés", - "fr": "Japonais", - "ja": "日本語", - "sv": "Japanska" - }, - "KOR": { - "en": "Korean", - "es": "Coreano", - "fr": "Coréen", - "ja": "韓国語", - "sv": "Koreanska" - }, - "L": { - "en": "Lesbian", - "es": "Lesbianas", - "fr": "Lesbienne", - "ja": "レズビアン", - "sv": "Lesbiskt" - }, - "LGBTQ": { - "en": "LGBTQ", - "es": "LGBTQ", - "fr": "LGBTQ", - "ja": "LGBTQ", - "sv": "LGBTQ" - }, - "LIT": { - "en": "Literature", - "es": "Literatura", - "fr": "Publications", - "ja": "書籍", - "sv": "Litteratur" - }, - "LS": { - "en": "Living Sober", - "es": "Viviendo Sobrio", - "fr": "Vivre… Sans alcool", - "ja": "リビングソーバー", - "sv": "Leva Nyktert" - }, - "M": { - "en": "Men", - "es": "Hombres", - "fr": "Hommes", - "ja": "男性", - "sv": "Mansmöte" - }, - "MED": { - "en": "Meditation", - "es": "Meditación", - "fr": "Méditation", - "ja": "黙想", - "sv": "Meditationsmöte" - }, - "N": { - "en": "Native American", - "es": "Nativo Americano", - "fr": "Autochtone", - "ja": "ネイティブアメリカン", - "sv": "Ur-amerikanskt" - }, - "NDG": { - "en": "Indigenous", - "es": "Indígena", - "fr": "Indigène", - "ja": "先住民", - "sv": "Urfolkligt" - }, - "O": { - "en": "Open", - "es": "Abierta", - "fr": "Ouvert(e)", - "ja": "オープン", - "sv": "Öppet" - }, - "OUT": { - "en": "Outdoor", - "es": "Al aire libre", - "fr": "En plein air", - "ja": "アウトドア", - "sv": "Utomhus" - }, - "P": { - "en": "Professionals", - "es": "Profesionales", - "fr": "Professionnels", - "ja": "職業人", - "sv": "Professionella" - }, - "POC": { - "en": "People of Color", - "es": "Gente de color", - "fr": "Gens de couleur", - "ja": "有色人種", - "sv": "Färgade" - }, - "POL": { - "en": "Polish", - "es": "Polaco", - "fr": "Polonais", - "ja": "ポーランド語", - "sv": "Polska" - }, - "POR": { - "en": "Portuguese", - "es": "Portugués", - "fr": "Portugais", - "ja": "ポルトガル語", - "sv": "Portugisiska" - }, - "PUN": { - "en": "Punjabi", - "es": "Punjabi", - "fr": "Pendjabi", - "ja": "パンジャブ語", - "sv": "Punjabi" - }, - "RUS": { - "en": "Russian", - "es": "Ruso", - "fr": "Russe", - "ja": "ロシア語", - "sv": "Ryska" - }, - "S": { - "en": "Spanish", - "es": "Español", - "fr": "Espagnol", - "ja": "スペイン語", - "sv": "Spanska" - }, - "SEN": { - "en": "Seniors", - "es": "Personas mayores", - "fr": "Séniors", - "ja": "シニア", - "sv": "Seniorer" - }, - "SM": { - "en": "Smoking Permitted", - "es": "Se permite fumar", - "fr": "Permis de fumer", - "ja": "喫煙可", - "sv": "Rökning Tillåten" - }, - "SP": { - "en": "Speaker", - "es": "Orador", - "fr": "Conférencier", - "ja": "スピーカー", - "sv": "Talare" - }, - "ST": { - "en": "Step Study", - "es": "Estudio de pasos", - "fr": "Sur les Étapes", - "ja": "ステップ", - "sv": "Stegmöte" - }, - "T": { - "en": "Transgender", - "es": "Transgénero", - "fr": "Transgenre", - "ja": "トランスジェンダー", - "sv": "Transpersoner" - }, - "TC": { - "en": "Location Temporarily Closed", - "es": "Ubicación temporalmente cerrada", - "fr": "Emplacement temporairement fermé", - "ja": "一時的休止中", - "sv": "Tillfälligt Stängt" - }, - "TR": { - "en": "Tradition Study", - "es": "Estudio de tradicion", - "fr": "Étude des Traditions", - "ja": "伝統", - "sv": "Traditionsmöte" - }, - "W": { - "en": "Women", - "es": "Mujer", - "fr": "Femmes", - "ja": "女性", - "sv": "Kvinnomöte" - }, - "X": { - "en": "Wheelchair Access", - "es": "Acceso en silla de ruedas", - "fr": "Accès aux fauteuils roulants", - "ja": "車いすアクセス", - "sv": "Handikappanpassat" - }, - "XB": { - "en": "Wheelchair-Accessible Bathroom", - "es": "Baño accesible para sillas de ruedas", - "fr": "Toilettes accessibles aux fauteuils roulants", - "ja": "車いす使用者用トイレ", - "sv": "Handikappanpassad WC" - }, - "XT": { - "en": "Cross Talk Permitted", - "es": "Se permite opinar", - "fr": "Conversation croisée permise", - "ja": "クロストーク可能", - "sv": "Kommentarer Tilltåtna" - }, - "Y": { - "en": "Young People", - "es": "Gente joven", - "fr": "Jeunes", - "ja": "ヤング", - "sv": "Young People" - } + "11": { + "en": "11th Step Meditation", + "es": "Meditación del Paso 11", + "fr": "Méditation sur la 11e Étape", + "ja": "ステップ11 黙想", + "sv": "11th Stegs Meditation" + }, + "12x12": { + "en": "12 Steps & 12 Traditions", + "es": "12 Pasos y 12 Tradiciones", + "fr": "12 Étapes et 12 Traditions", + "ja": "12のステップと12の伝統", + "sv": "12 Steg & 12 Traditioner" + }, + "A": { + "en": "Secular", + "es": "Secular", + "fr": "Séculier", + "ja": "無宗教", + "sv": "Sekulärt" + }, + "ABSI": { + "en": "As Bill Sees It", + "es": "Como lo ve Bill", + "fr": "Réflexions de Bill", + "ja": "ビルはこう思う", + "sv": "Som Bill Ser Det" + }, + "AL": { + "en": "Concurrent with Alateen", + "es": "Concurrente con Alateen", + "fr": "En même temps qu’Alateen", + "ja": "アラティーンと同時進行", + "sv": "Tillsammans med Alateen" + }, + "AL-AN": { + "en": "Concurrent with Al-Anon", + "es": "Concurrente con Al-Anon", + "fr": "En même temps qu’Al-Anon", + "ja": "アラノンと同時進行", + "sv": "Tillsammans med Al-Anon" + }, + "ASL": { + "en": "American Sign Language", + "es": "Lenguaje por señas", + "fr": "Langage des Signes", + "ja": "アメリカ手話", + "sv": "Amerikanskt teckenspråk" + }, + "B": { + "en": "Big Book", + "es": "Libro Grande", + "fr": "Gros Livre", + "ja": "ビッグブック", + "sv": "Stora Boken" + }, + "BA": { + "en": "Babysitting Available", + "es": "Guardería disponible", + "fr": "Garderie d’enfants disponible", + "ja": "ベビーシッターあり", + "sv": "Barnvakt Finns" + }, + "BE": { + "en": "Newcomer", + "es": "Principiantes", + "fr": "Nouveau/nouvelle", + "ja": "ビギナーズ", + "sv": "Nykomling" + }, + "BI": { + "en": "Bisexual", + "es": "Bisexual", + "fr": "Bisexuel", + "ja": "バイセクシャル", + "sv": "Bisexuellt" + }, + "BRK": { + "en": "Breakfast", + "es": "Desayuno", + "fr": "Petit déjeuner", + "ja": "朝食", + "sv": "Frukost" + }, + "C": { + "en": "Closed", + "es": "Cerrada", + "fr": "Fermé", + "ja": "クローズド", + "sv": "Slutet" + }, + "CAN": { + "en": "Candlelight", + "es": "Luz de una vela", + "fr": "À la chandelle", + "ja": "キャンドル", + "sv": "Tända Ljus" + }, + "CF": { + "en": "Child-Friendly", + "es": "Niño amigable", + "fr": "Enfants acceptés", + "ja": "お子さま歓迎", + "sv": "Barnvänligt" + }, + "D": { + "en": "Discussion", + "es": "Discusión", + "fr": "Discussion", + "ja": "ディスカッション", + "sv": "Diskussion" + }, + "DB": { + "en": "Digital Basket", + "es": "Canasta digital", + "fr": "Panier numérique", + "ja": "電子献金", + "sv": "Digital Korg" + }, + "DD": { + "en": "Dual Diagnosis", + "es": "Diagnóstico dual", + "fr": "Double diagnostic", + "ja": "重複診断", + "sv": "Dubbel Diagnos" + }, + "DR": { + "en": "Daily Reflections", + "es": "Reflexiones Diarias", + "fr": "Réflexions quotidiennes", + "ja": "今日を新たに", + "sv": "Dagliga Reflektioner" + }, + "EN": { + "en": "English", + "es": "Inglés", + "fr": "Anglais", + "ja": "英語", + "sv": "Engelska" + }, + "FF": { + "en": "Fragrance Free", + "es": "Sin fragancia", + "fr": "Sans parfum", + "ja": "香水なし", + "sv": "Parfym Fritt" + }, + "FR": { + "en": "French", + "es": "Francés", + "fr": "Français", + "ja": "フランス語", + "sv": "Franska" + }, + "G": { + "en": "Gay", + "es": "Gay", + "fr": "Gai", + "ja": "ゲイ", + "sv": "Gay" + }, + "GR": { + "en": "Grapevine", + "es": "La Viña", + "fr": "Grapevine", + "ja": "グレープバイン", + "sv": "Grapevine" + }, + "H": { + "en": "Birthday", + "es": "Cumpleaños", + "fr": "Anniversaire", + "ja": "バースデー", + "sv": "Födelsedag" + }, + "HE": { + "en": "Hebrew", + "es": "Hebreo", + "fr": "Hébreu", + "ja": "ヘブライ語", + "sv": "Hebreiska" + }, + "ITA": { + "en": "Italian", + "es": "Italiano", + "fr": "Italien", + "ja": "イタリア語", + "sv": "Italienska" + }, + "JA": { + "en": "Japanese", + "es": "Japonés", + "fr": "Japonais", + "ja": "日本語", + "sv": "Japanska" + }, + "KOR": { + "en": "Korean", + "es": "Coreano", + "fr": "Coréen", + "ja": "韓国語", + "sv": "Koreanska" + }, + "L": { + "en": "Lesbian", + "es": "Lesbianas", + "fr": "Lesbienne", + "ja": "レズビアン", + "sv": "Lesbiskt" + }, + "LGBTQ": { + "en": "LGBTQ", + "es": "LGBTQ", + "fr": "LGBTQ", + "ja": "LGBTQ", + "sv": "LGBTQ" + }, + "LIT": { + "en": "Literature", + "es": "Literatura", + "fr": "Publications", + "ja": "書籍", + "sv": "Litteratur" + }, + "LS": { + "en": "Living Sober", + "es": "Viviendo Sobrio", + "fr": "Vivre… Sans alcool", + "ja": "リビングソーバー", + "sv": "Leva Nyktert" + }, + "M": { + "en": "Men", + "es": "Hombres", + "fr": "Hommes", + "ja": "男性", + "sv": "Mansmöte" + }, + "MED": { + "en": "Meditation", + "es": "Meditación", + "fr": "Méditation", + "ja": "黙想", + "sv": "Meditationsmöte" + }, + "N": { + "en": "Native American", + "es": "Nativo Americano", + "fr": "Autochtone", + "ja": "ネイティブアメリカン", + "sv": "Ur-amerikanskt" + }, + "NDG": { + "en": "Indigenous", + "es": "Indígena", + "fr": "Indigène", + "ja": "先住民", + "sv": "Urfolkligt" + }, + "O": { + "en": "Open", + "es": "Abierta", + "fr": "Ouvert(e)", + "ja": "オープン", + "sv": "Öppet" + }, + "OUT": { + "en": "Outdoor", + "es": "Al aire libre", + "fr": "En plein air", + "ja": "アウトドア", + "sv": "Utomhus" + }, + "P": { + "en": "Professionals", + "es": "Profesionales", + "fr": "Professionnels", + "ja": "職業人", + "sv": "Professionella" + }, + "POC": { + "en": "People of Color", + "es": "Gente de color", + "fr": "Gens de couleur", + "ja": "有色人種", + "sv": "Färgade" + }, + "POL": { + "en": "Polish", + "es": "Polaco", + "fr": "Polonais", + "ja": "ポーランド語", + "sv": "Polska" + }, + "POR": { + "en": "Portuguese", + "es": "Portugués", + "fr": "Portugais", + "ja": "ポルトガル語", + "sv": "Portugisiska" + }, + "PUN": { + "en": "Punjabi", + "es": "Punjabi", + "fr": "Pendjabi", + "ja": "パンジャブ語", + "sv": "Punjabi" + }, + "RUS": { + "en": "Russian", + "es": "Ruso", + "fr": "Russe", + "ja": "ロシア語", + "sv": "Ryska" + }, + "S": { + "en": "Spanish", + "es": "Español", + "fr": "Espagnol", + "ja": "スペイン語", + "sv": "Spanska" + }, + "SEN": { + "en": "Seniors", + "es": "Personas mayores", + "fr": "Séniors", + "ja": "シニア", + "sv": "Seniorer" + }, + "SM": { + "en": "Smoking Permitted", + "es": "Se permite fumar", + "fr": "Permis de fumer", + "ja": "喫煙可", + "sv": "Rökning Tillåten" + }, + "SP": { + "en": "Speaker", + "es": "Orador", + "fr": "Conférencier", + "ja": "スピーカー", + "sv": "Talare" + }, + "ST": { + "en": "Step Study", + "es": "Estudio de pasos", + "fr": "Sur les Étapes", + "ja": "ステップ", + "sv": "Stegmöte" + }, + "T": { + "en": "Transgender", + "es": "Transgénero", + "fr": "Transgenre", + "ja": "トランスジェンダー", + "sv": "Transpersoner" + }, + "TC": { + "en": "Location Temporarily Closed", + "es": "Ubicación temporalmente cerrada", + "fr": "Emplacement temporairement fermé", + "ja": "一時的休止中", + "sv": "Tillfälligt Stängt" + }, + "TR": { + "en": "Tradition Study", + "es": "Estudio de tradicion", + "fr": "Étude des Traditions", + "ja": "伝統", + "sv": "Traditionsmöte" + }, + "W": { + "en": "Women", + "es": "Mujer", + "fr": "Femmes", + "ja": "女性", + "sv": "Kvinnomöte" + }, + "X": { + "en": "Wheelchair Access", + "es": "Acceso en silla de ruedas", + "fr": "Accès aux fauteuils roulants", + "ja": "車いすアクセス", + "sv": "Handikappanpassat" + }, + "XB": { + "en": "Wheelchair-Accessible Bathroom", + "es": "Baño accesible para sillas de ruedas", + "fr": "Toilettes accessibles aux fauteuils roulants", + "ja": "車いす使用者用トイレ", + "sv": "Handikappanpassad WC" + }, + "XT": { + "en": "Cross Talk Permitted", + "es": "Se permite opinar", + "fr": "Conversation croisée permise", + "ja": "クロストーク可能", + "sv": "Kommentarer Tilltåtna" + }, + "Y": { + "en": "Young People", + "es": "Gente joven", + "fr": "Jeunes", + "ja": "ヤング", + "sv": "Young People" } } diff --git a/src/index.ts b/src/index.ts index 9c4a395..a0fd95b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,410 +1,23 @@ -export const types = { - types: { - "11": { - en: "11th Step Meditation", - es: "Meditación del Paso 11", - fr: "Méditation sur la 11e Étape", - ja: "ステップ11 黙想", - sv: "11th Stegs Meditation", - }, - "12x12": { - en: "12 Steps & 12 Traditions", - es: "12 Pasos y 12 Tradiciones", - fr: "12 Étapes et 12 Traditions", - ja: "12のステップと12の伝統", - sv: "12 Steg & 12 Traditioner", - }, - A: { - en: "Secular", - es: "Secular", - fr: "Séculier", - ja: "無宗教", - sv: "Sekulärt", - }, - ABSI: { - en: "As Bill Sees It", - es: "Como lo ve Bill", - fr: "Réflexions de Bill", - ja: "ビルはこう思う", - sv: "Som Bill Ser Det", - }, - AL: { - en: "Concurrent with Alateen", - es: "Concurrente con Alateen", - fr: "En même temps qu’Alateen", - ja: "アラティーンと同時進行", - sv: "Tillsammans med Alateen", - }, - "AL-AN": { - en: "Concurrent with Al-Anon", - es: "Concurrente con Al-Anon", - fr: "En même temps qu’Al-Anon", - ja: "アラノンと同時進行", - sv: "Tillsammans med Al-Anon", - }, - ASL: { - en: "American Sign Language", - es: "Lenguaje por señas", - fr: "Langage des Signes", - ja: "アメリカ手話", - sv: "Amerikanskt teckenspråk", - }, - B: { - en: "Big Book", - es: "Libro Grande", - fr: "Gros Livre", - ja: "ビッグブック", - sv: "Stora Boken", - }, - BA: { - en: "Babysitting Available", - es: "Guardería disponible", - fr: "Garderie d’enfants disponible", - ja: "ベビーシッターあり", - sv: "Barnvakt Finns", - }, - BE: { - en: "Newcomer", - es: "Principiantes", - fr: "Nouveau/nouvelle", - ja: "ビギナーズ", - sv: "Nykomling", - }, - BI: { - en: "Bisexual", - es: "Bisexual", - fr: "Bisexuel", - ja: "バイセクシャル", - sv: "Bisexuellt", - }, - BRK: { - en: "Breakfast", - es: "Desayuno", - fr: "Petit déjeuner", - ja: "朝食", - sv: "Frukost", - }, - C: { - en: "Closed", - es: "Cerrada", - fr: "Fermé", - ja: "クローズド", - sv: "Slutet", - }, - CAN: { - en: "Candlelight", - es: "Luz de una vela", - fr: "À la chandelle", - ja: "キャンドル", - sv: "Tända Ljus", - }, - CF: { - en: "Child-Friendly", - es: "Niño amigable", - fr: "Enfants acceptés", - ja: "お子さま歓迎", - sv: "Barnvänligt", - }, - D: { - en: "Discussion", - es: "Discusión", - fr: "Discussion", - ja: "ディスカッション", - sv: "Diskussion", - }, - DB: { - en: "Digital Basket", - es: "Canasta digital", - fr: "Panier numérique", - ja: "電子献金", - sv: "Digital Korg", - }, - DD: { - en: "Dual Diagnosis", - es: "Diagnóstico dual", - fr: "Double diagnostic", - ja: "重複診断", - sv: "Dubbel Diagnos", - }, - DR: { - en: "Daily Reflections", - es: "Reflexiones Diarias", - fr: "Réflexions quotidiennes", - ja: "今日を新たに", - sv: "Dagliga Reflektioner", - }, - EN: { - en: "English", - es: "Inglés", - fr: "Anglais", - ja: "英語", - sv: "Engelska", - }, - FF: { - en: "Fragrance Free", - es: "Sin fragancia", - fr: "Sans parfum", - ja: "香水なし", - sv: "Parfym Fritt", - }, - FR: { - en: "French", - es: "Francés", - fr: "Français", - ja: "フランス語", - sv: "Franska", - }, - G: { - en: "Gay", - es: "Gay", - fr: "Gai", - ja: "ゲイ", - sv: "Gay", - }, - GR: { - en: "Grapevine", - es: "La Viña", - fr: "Grapevine", - ja: "グレープバイン", - sv: "Grapevine", - }, - H: { - en: "Birthday", - es: "Cumpleaños", - fr: "Anniversaire", - ja: "バースデー", - sv: "Födelsedag", - }, - HE: { - en: "Hebrew", - es: "Hebreo", - fr: "Hébreu", - ja: "ヘブライ語", - sv: "Hebreiska", - }, - ITA: { - en: "Italian", - es: "Italiano", - fr: "Italien", - ja: "イタリア語", - sv: "Italienska", - }, - JA: { - en: "Japanese", - es: "Japonés", - fr: "Japonais", - ja: "日本語", - sv: "Japanska", - }, - KOR: { - en: "Korean", - es: "Coreano", - fr: "Coréen", - ja: "韓国語", - sv: "Koreanska", - }, - L: { - en: "Lesbian", - es: "Lesbianas", - fr: "Lesbienne", - ja: "レズビアン", - sv: "Lesbiskt", - }, - LGBTQ: { - en: "LGBTQ", - es: "LGBTQ", - fr: "LGBTQ", - ja: "LGBTQ", - sv: "LGBTQ", - }, - LIT: { - en: "Literature", - es: "Literatura", - fr: "Publications", - ja: "書籍", - sv: "Litteratur", - }, - LS: { - en: "Living Sober", - es: "Viviendo Sobrio", - fr: "Vivre… Sans alcool", - ja: "リビングソーバー", - sv: "Leva Nyktert", - }, - M: { - en: "Men", - es: "Hombres", - fr: "Hommes", - ja: "男性", - sv: "Mansmöte", - }, - MED: { - en: "Meditation", - es: "Meditación", - fr: "Méditation", - ja: "黙想", - sv: "Meditationsmöte", - }, - N: { - en: "Native American", - es: "Nativo Americano", - fr: "Autochtone", - ja: "ネイティブアメリカン", - sv: "Ur-amerikanskt", - }, - NDG: { - en: "Indigenous", - es: "Indígena", - fr: "Indigène", - ja: "先住民", - sv: "Urfolkligt", - }, - O: { - en: "Open", - es: "Abierta", - fr: "Ouvert(e)", - ja: "オープン", - sv: "Öppet", - }, - OUT: { - en: "Outdoor", - es: "Al aire libre", - fr: "En plein air", - ja: "アウトドア", - sv: "Utomhus", - }, - P: { - en: "Professionals", - es: "Profesionales", - fr: "Professionnels", - ja: "職業人", - sv: "Professionella", - }, - POC: { - en: "People of Color", - es: "Gente de color", - fr: "Gens de couleur", - ja: "有色人種", - sv: "Färgade", - }, - POL: { - en: "Polish", - es: "Polaco", - fr: "Polonais", - ja: "ポーランド語", - sv: "Polska", - }, - POR: { - en: "Portuguese", - es: "Portugués", - fr: "Portugais", - ja: "ポルトガル語", - sv: "Portugisiska", - }, - PUN: { - en: "Punjabi", - es: "Punjabi", - fr: "Pendjabi", - ja: "パンジャブ語", - sv: "Punjabi", - }, - RUS: { - en: "Russian", - es: "Ruso", - fr: "Russe", - ja: "ロシア語", - sv: "Ryska", - }, - S: { - en: "Spanish", - es: "Español", - fr: "Espagnol", - ja: "スペイン語", - sv: "Spanska", - }, - SEN: { - en: "Seniors", - es: "Personas mayores", - fr: "Séniors", - ja: "シニア", - sv: "Seniorer", - }, - SM: { - en: "Smoking Permitted", - es: "Se permite fumar", - fr: "Permis de fumer", - ja: "喫煙可", - sv: "Rökning Tillåten", - }, - SP: { - en: "Speaker", - es: "Orador", - fr: "Conférencier", - ja: "スピーカー", - sv: "Talare", - }, - ST: { - en: "Step Study", - es: "Estudio de pasos", - fr: "Sur les Étapes", - ja: "ステップ", - sv: "Stegmöte", - }, - T: { - en: "Transgender", - es: "Transgénero", - fr: "Transgenre", - ja: "トランスジェンダー", - sv: "Transpersoner", - }, - TC: { - en: "Location Temporarily Closed", - es: "Ubicación temporalmente cerrada", - fr: "Emplacement temporairement fermé", - ja: "一時的休止中", - sv: "Tillfälligt Stängt", - }, - TR: { - en: "Tradition Study", - es: "Estudio de tradicion", - fr: "Étude des Traditions", - ja: "伝統", - sv: "Traditionsmöte", - }, - W: { - en: "Women", - es: "Mujer", - fr: "Femmes", - ja: "女性", - sv: "Kvinnomöte", - }, - X: { - en: "Wheelchair Access", - es: "Acceso en silla de ruedas", - fr: "Accès aux fauteuils roulants", - ja: "車いすアクセス", - sv: "Handikappanpassat", - }, - XB: { - en: "Wheelchair-Accessible Bathroom", - es: "Baño accesible para sillas de ruedas", - fr: "Toilettes accessibles aux fauteuils roulants", - ja: "車いす使用者用トイレ", - sv: "Handikappanpassad WC", - }, - XT: { - en: "Cross Talk Permitted", - es: "Se permite opinar", - fr: "Conversation croisée permise", - ja: "クロストーク可能", - sv: "Kommentarer Tilltåtna", - }, - Y: { - en: "Young People", - es: "Gente joven", - fr: "Jeunes", - ja: "ヤング", - sv: "Young People", - }, - }, -}; +import { languages } from "./languages"; +import { types } from "./types"; + +export type Language = (typeof languages)[number]; +export type MeetingType = keyof typeof types; + +export function isMeetingType(type: string): type is MeetingType { + return type in types; +} + +export function isSupportedLanguage(language: string): language is Language { + return language in languages; +} + +export function getTypesForLanguage(language: string) { + const typesForLanguage: { [id: string]: string } = {}; + for (const type in types) { + if (isMeetingType(type) && isSupportedLanguage(language)) { + typesForLanguage[type] = types[type][language]; + } + } + return typesForLanguage; +} diff --git a/src/languages.ts b/src/languages.ts new file mode 100644 index 0000000..4dfe3e7 --- /dev/null +++ b/src/languages.ts @@ -0,0 +1 @@ +export const languages = ["en", "es", "fr", "ja", "sv"] as const; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..8d30a44 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,408 @@ +export const types = { + "11": { + en: "11th Step Meditation", + es: "Meditación del Paso 11", + fr: "Méditation sur la 11e Étape", + ja: "ステップ11 黙想", + sv: "11th Stegs Meditation", + }, + "12x12": { + en: "12 Steps & 12 Traditions", + es: "12 Pasos y 12 Tradiciones", + fr: "12 Étapes et 12 Traditions", + ja: "12のステップと12の伝統", + sv: "12 Steg & 12 Traditioner", + }, + A: { + en: "Secular", + es: "Secular", + fr: "Séculier", + ja: "無宗教", + sv: "Sekulärt", + }, + ABSI: { + en: "As Bill Sees It", + es: "Como lo ve Bill", + fr: "Réflexions de Bill", + ja: "ビルはこう思う", + sv: "Som Bill Ser Det", + }, + AL: { + en: "Concurrent with Alateen", + es: "Concurrente con Alateen", + fr: "En même temps qu’Alateen", + ja: "アラティーンと同時進行", + sv: "Tillsammans med Alateen", + }, + "AL-AN": { + en: "Concurrent with Al-Anon", + es: "Concurrente con Al-Anon", + fr: "En même temps qu’Al-Anon", + ja: "アラノンと同時進行", + sv: "Tillsammans med Al-Anon", + }, + ASL: { + en: "American Sign Language", + es: "Lenguaje por señas", + fr: "Langage des Signes", + ja: "アメリカ手話", + sv: "Amerikanskt teckenspråk", + }, + B: { + en: "Big Book", + es: "Libro Grande", + fr: "Gros Livre", + ja: "ビッグブック", + sv: "Stora Boken", + }, + BA: { + en: "Babysitting Available", + es: "Guardería disponible", + fr: "Garderie d’enfants disponible", + ja: "ベビーシッターあり", + sv: "Barnvakt Finns", + }, + BE: { + en: "Newcomer", + es: "Principiantes", + fr: "Nouveau/nouvelle", + ja: "ビギナーズ", + sv: "Nykomling", + }, + BI: { + en: "Bisexual", + es: "Bisexual", + fr: "Bisexuel", + ja: "バイセクシャル", + sv: "Bisexuellt", + }, + BRK: { + en: "Breakfast", + es: "Desayuno", + fr: "Petit déjeuner", + ja: "朝食", + sv: "Frukost", + }, + C: { + en: "Closed", + es: "Cerrada", + fr: "Fermé", + ja: "クローズド", + sv: "Slutet", + }, + CAN: { + en: "Candlelight", + es: "Luz de una vela", + fr: "À la chandelle", + ja: "キャンドル", + sv: "Tända Ljus", + }, + CF: { + en: "Child-Friendly", + es: "Niño amigable", + fr: "Enfants acceptés", + ja: "お子さま歓迎", + sv: "Barnvänligt", + }, + D: { + en: "Discussion", + es: "Discusión", + fr: "Discussion", + ja: "ディスカッション", + sv: "Diskussion", + }, + DB: { + en: "Digital Basket", + es: "Canasta digital", + fr: "Panier numérique", + ja: "電子献金", + sv: "Digital Korg", + }, + DD: { + en: "Dual Diagnosis", + es: "Diagnóstico dual", + fr: "Double diagnostic", + ja: "重複診断", + sv: "Dubbel Diagnos", + }, + DR: { + en: "Daily Reflections", + es: "Reflexiones Diarias", + fr: "Réflexions quotidiennes", + ja: "今日を新たに", + sv: "Dagliga Reflektioner", + }, + EN: { + en: "English", + es: "Inglés", + fr: "Anglais", + ja: "英語", + sv: "Engelska", + }, + FF: { + en: "Fragrance Free", + es: "Sin fragancia", + fr: "Sans parfum", + ja: "香水なし", + sv: "Parfym Fritt", + }, + FR: { + en: "French", + es: "Francés", + fr: "Français", + ja: "フランス語", + sv: "Franska", + }, + G: { + en: "Gay", + es: "Gay", + fr: "Gai", + ja: "ゲイ", + sv: "Gay", + }, + GR: { + en: "Grapevine", + es: "La Viña", + fr: "Grapevine", + ja: "グレープバイン", + sv: "Grapevine", + }, + H: { + en: "Birthday", + es: "Cumpleaños", + fr: "Anniversaire", + ja: "バースデー", + sv: "Födelsedag", + }, + HE: { + en: "Hebrew", + es: "Hebreo", + fr: "Hébreu", + ja: "ヘブライ語", + sv: "Hebreiska", + }, + ITA: { + en: "Italian", + es: "Italiano", + fr: "Italien", + ja: "イタリア語", + sv: "Italienska", + }, + JA: { + en: "Japanese", + es: "Japonés", + fr: "Japonais", + ja: "日本語", + sv: "Japanska", + }, + KOR: { + en: "Korean", + es: "Coreano", + fr: "Coréen", + ja: "韓国語", + sv: "Koreanska", + }, + L: { + en: "Lesbian", + es: "Lesbianas", + fr: "Lesbienne", + ja: "レズビアン", + sv: "Lesbiskt", + }, + LGBTQ: { + en: "LGBTQ", + es: "LGBTQ", + fr: "LGBTQ", + ja: "LGBTQ", + sv: "LGBTQ", + }, + LIT: { + en: "Literature", + es: "Literatura", + fr: "Publications", + ja: "書籍", + sv: "Litteratur", + }, + LS: { + en: "Living Sober", + es: "Viviendo Sobrio", + fr: "Vivre… Sans alcool", + ja: "リビングソーバー", + sv: "Leva Nyktert", + }, + M: { + en: "Men", + es: "Hombres", + fr: "Hommes", + ja: "男性", + sv: "Mansmöte", + }, + MED: { + en: "Meditation", + es: "Meditación", + fr: "Méditation", + ja: "黙想", + sv: "Meditationsmöte", + }, + N: { + en: "Native American", + es: "Nativo Americano", + fr: "Autochtone", + ja: "ネイティブアメリカン", + sv: "Ur-amerikanskt", + }, + NDG: { + en: "Indigenous", + es: "Indígena", + fr: "Indigène", + ja: "先住民", + sv: "Urfolkligt", + }, + O: { + en: "Open", + es: "Abierta", + fr: "Ouvert(e)", + ja: "オープン", + sv: "Öppet", + }, + OUT: { + en: "Outdoor", + es: "Al aire libre", + fr: "En plein air", + ja: "アウトドア", + sv: "Utomhus", + }, + P: { + en: "Professionals", + es: "Profesionales", + fr: "Professionnels", + ja: "職業人", + sv: "Professionella", + }, + POC: { + en: "People of Color", + es: "Gente de color", + fr: "Gens de couleur", + ja: "有色人種", + sv: "Färgade", + }, + POL: { + en: "Polish", + es: "Polaco", + fr: "Polonais", + ja: "ポーランド語", + sv: "Polska", + }, + POR: { + en: "Portuguese", + es: "Portugués", + fr: "Portugais", + ja: "ポルトガル語", + sv: "Portugisiska", + }, + PUN: { + en: "Punjabi", + es: "Punjabi", + fr: "Pendjabi", + ja: "パンジャブ語", + sv: "Punjabi", + }, + RUS: { + en: "Russian", + es: "Ruso", + fr: "Russe", + ja: "ロシア語", + sv: "Ryska", + }, + S: { + en: "Spanish", + es: "Español", + fr: "Espagnol", + ja: "スペイン語", + sv: "Spanska", + }, + SEN: { + en: "Seniors", + es: "Personas mayores", + fr: "Séniors", + ja: "シニア", + sv: "Seniorer", + }, + SM: { + en: "Smoking Permitted", + es: "Se permite fumar", + fr: "Permis de fumer", + ja: "喫煙可", + sv: "Rökning Tillåten", + }, + SP: { + en: "Speaker", + es: "Orador", + fr: "Conférencier", + ja: "スピーカー", + sv: "Talare", + }, + ST: { + en: "Step Study", + es: "Estudio de pasos", + fr: "Sur les Étapes", + ja: "ステップ", + sv: "Stegmöte", + }, + T: { + en: "Transgender", + es: "Transgénero", + fr: "Transgenre", + ja: "トランスジェンダー", + sv: "Transpersoner", + }, + TC: { + en: "Location Temporarily Closed", + es: "Ubicación temporalmente cerrada", + fr: "Emplacement temporairement fermé", + ja: "一時的休止中", + sv: "Tillfälligt Stängt", + }, + TR: { + en: "Tradition Study", + es: "Estudio de tradicion", + fr: "Étude des Traditions", + ja: "伝統", + sv: "Traditionsmöte", + }, + W: { + en: "Women", + es: "Mujer", + fr: "Femmes", + ja: "女性", + sv: "Kvinnomöte", + }, + X: { + en: "Wheelchair Access", + es: "Acceso en silla de ruedas", + fr: "Accès aux fauteuils roulants", + ja: "車いすアクセス", + sv: "Handikappanpassat", + }, + XB: { + en: "Wheelchair-Accessible Bathroom", + es: "Baño accesible para sillas de ruedas", + fr: "Toilettes accessibles aux fauteuils roulants", + ja: "車いす使用者用トイレ", + sv: "Handikappanpassad WC", + }, + XT: { + en: "Cross Talk Permitted", + es: "Se permite opinar", + fr: "Conversation croisée permise", + ja: "クロストーク可能", + sv: "Kommentarer Tilltåtna", + }, + Y: { + en: "Young People", + es: "Gente joven", + fr: "Jeunes", + ja: "ヤング", + sv: "Young People", + }, +}; From 23dc296c81898fef0d3c2db97e9096771ff049ec Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sun, 11 Jun 2023 08:18:22 -0700 Subject: [PATCH 07/24] type tweak --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index a0fd95b..f5dd70e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,7 @@ export function isSupportedLanguage(language: string): language is Language { } export function getTypesForLanguage(language: string) { - const typesForLanguage: { [id: string]: string } = {}; + const typesForLanguage: Record = {} as any; for (const type in types) { if (isMeetingType(type) && isSupportedLanguage(language)) { typesForLanguage[type] = types[type][language]; From 82377a79ab2603785e7b0afa4f5837df46e76518 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sun, 11 Jun 2023 08:25:29 -0700 Subject: [PATCH 08/24] 1.0.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c682e8..338dd0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "spec", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "spec", - "version": "1.0.0", + "version": "1.0.1", "license": "ISC", "devDependencies": { "prettier": "^2.8.8", diff --git a/package.json b/package.json index 13037b4..e262bc4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@code4recovery/spec", - "version": "1.0.0", + "version": "1.0.1", "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", "main": "lib/index.js", "types": "lib/index.d.ts", From 4d94ede92ccfc78edab23531b9d30f7ef169df19 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Wed, 14 Jun 2023 07:27:35 -0700 Subject: [PATCH 09/24] add tests --- .gitignore | 3 +- jestconfig.json | 7 + package-lock.json | 4835 +++++++++++++++++++++++++++++++++-- package.json | 8 +- src/__tests__/index.spec.ts | 27 + src/index.ts | 2 +- 6 files changed, 4665 insertions(+), 217 deletions(-) create mode 100644 jestconfig.json create mode 100644 src/__tests__/index.spec.ts diff --git a/.gitignore b/.gitignore index 69a671c..65dae4a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -/lib \ No newline at end of file +/lib +/coverage \ No newline at end of file diff --git a/jestconfig.json b/jestconfig.json new file mode 100644 index 0000000..20c25c0 --- /dev/null +++ b/jestconfig.json @@ -0,0 +1,7 @@ +{ + "transform": { + "^.+\\.(t|j)sx?$": "ts-jest" + }, + "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", + "moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"] +} diff --git a/package-lock.json b/package-lock.json index 338dd0f..4c36ec5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,36 @@ { - "name": "spec", + "name": "@code4recovery/spec", "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "spec", + "name": "@code4recovery/spec", "version": "1.0.1", - "license": "ISC", + "license": "MIT", "devDependencies": { + "@types/jest": "^29.5.2", + "jest": "^29.5.0", "prettier": "^2.8.8", + "ts-jest": "^29.1.0", "tslint": "^6.1.3", "tslint-config-prettier": "^1.18.0", "typescript": "^5.1.3" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.22.5", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.22.5.tgz", @@ -27,336 +43,4426 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { + "node_modules/@babel/compat-data": { "version": "7.22.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/compat-data/-/compat-data-7.22.5.tgz", + "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { + "node_modules/@babel/core": { "version": "7.22.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.22.5.tgz", + "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", + "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=6.9.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helpers/-/helpers-7.22.5.tgz", + "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@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/parser": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", "dev": true, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "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" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "*" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.22.5.tgz", + "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/core": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/environment": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "dependencies": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/types": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/fake-timers/-/fake-timers-10.1.0.tgz", + "integrity": "sha512-w1qd368vtrwttm1PRJWPW1QHlbmHrVDGs1eBH/jZvRPUFS4MNXV9Q33EQdjOdeAxZ7O8+3wM7zxztm2nfUSyKw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@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/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/jest/-/jest-29.5.2.tgz", + "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/node": { + "version": "20.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/node/-/node-20.3.1.tgz", + "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/anymatch": { + "version": "3.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/babel-jest": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/braces": { + "version": "3.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/browserslist": { + "version": "4.21.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.21.8.tgz", + "integrity": "sha512-j+7xYe+v+q2Id9qbBeCI8WX5NmZSRe8es1+0xntD/+gaWXznP8tFEkv5IgSaHf5dS1YwVMbX/4W6m937mj+wQw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001502", + "electron-to-chromium": "^1.4.428", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001503", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/caniuse-lite/-/caniuse-lite-1.0.30001503.tgz", + "integrity": "sha512-Sf9NiF+wZxPfzv8Z3iS0rXM1Do+iOy2Lxvib38glFX+08TCYYYGR5fRJXk4d77C4AYwhUjgYgMsMudbh2TqCKw==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/char-regex": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/co": { + "version": "4.6.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/color-name": { + "version": "1.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/debug": { + "version": "4.3.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/dedent": { + "version": "0.7.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.430", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/electron-to-chromium/-/electron-to-chromium-1.4.430.tgz", + "integrity": "sha512-FytjTbGwz///F+ToZ5XSeXbbSaXalsVRXsz2mHityI5gfxft7ieW3HqFLkU5V1aIrY42aflICqbmFoDxW10etg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/execa": { + "version": "5.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/find-up": { + "version": "4.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-cli": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-config": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-diff": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-docblock": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-environment-node": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-message-util": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-mock": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runner": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runtime": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-validate": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-watcher": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-worker": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jsesc": { + "version": "2.5.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/json5": { + "version": "2.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/mimic-fn": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/ms": { + "version": "2.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/once": { + "version": "1.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/shebang-regex": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { - "node": ">= 0.4.0" + "node": ">=8" } }, - "node_modules/has-flag": { + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { "version": "3.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { - "has": "^1.0.3" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "escape-string-regexp": "^2.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=10" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=10" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "wrappy": "1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "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" + "engines": { + "node": ">=6" } }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=8" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-5.5.0.tgz", @@ -378,6 +4484,123 @@ "node": ">= 0.4" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/ts-jest": { + "version": "29.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/ts-jest/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-1.14.1.tgz", @@ -439,6 +4662,24 @@ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/typescript": { "version": "5.1.3", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-5.1.3.tgz", @@ -452,11 +4693,179 @@ "node": ">=14.17" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/y18n": { + "version": "5.0.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/yargs-parser": { + "version": "21.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index e262bc4..ea46c60 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,13 @@ "lib/**/*" ], "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "jest --config jestconfig.json", + "test-coverage": "jest --config jestconfig.json --coverage", "build": "tsc", "format": "prettier --write \"src/**/*.ts\"", "lint": "tslint -p tsconfig.json", "prepare": "npm run build", - "prepublishOnly": "npm run lint", + "prepublishOnly": "npm test && npm run lint", "preversion": "npm run lint", "version": "npm run format && git add -A src", "postversion": "git push && git push --tags" @@ -26,7 +27,10 @@ "author": "Code for Recovery", "license": "MIT", "devDependencies": { + "@types/jest": "^29.5.2", + "jest": "^29.5.0", "prettier": "^2.8.8", + "ts-jest": "^29.1.0", "tslint": "^6.1.3", "tslint-config-prettier": "^1.18.0", "typescript": "^5.1.3" diff --git a/src/__tests__/index.spec.ts b/src/__tests__/index.spec.ts new file mode 100644 index 0000000..4337cd4 --- /dev/null +++ b/src/__tests__/index.spec.ts @@ -0,0 +1,27 @@ +import { + isMeetingType, + isSupportedLanguage, + getTypesForLanguage, +} from "../index"; + +describe("isMeetingType", () => { + it("should return true for supported meeting types", () => { + expect(isMeetingType("T")).toBe(true); + }); + + it("should return false for unsupported meeting types", () => { + expect(isMeetingType("FOO")).toBe(false); + }); + + it("should return true for supported language", () => { + expect(isSupportedLanguage("en")).toBe(true); + }); + + it("should return false for unsupported language", () => { + expect(isSupportedLanguage("FOO")).toBe(false); + }); + + it("should return supported languages", () => { + expect(getTypesForLanguage("en")).toBeTruthy(); + }); +}); diff --git a/src/index.ts b/src/index.ts index f5dd70e..5844af7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,7 @@ export function isMeetingType(type: string): type is MeetingType { } export function isSupportedLanguage(language: string): language is Language { - return language in languages; + return languages.includes(language as Language); } export function getTypesForLanguage(language: string) { From a3291069a89cac9e5e9988c4cb7c84558f198acf Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Wed, 14 Jun 2023 07:36:39 -0700 Subject: [PATCH 10/24] improve test --- src/__tests__/index.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/__tests__/index.spec.ts b/src/__tests__/index.spec.ts index 4337cd4..4f7a605 100644 --- a/src/__tests__/index.spec.ts +++ b/src/__tests__/index.spec.ts @@ -22,6 +22,7 @@ describe("isMeetingType", () => { }); it("should return supported languages", () => { - expect(getTypesForLanguage("en")).toBeTruthy(); + const enTypes = getTypesForLanguage("en"); + expect(Object.keys(enTypes)).toHaveLength(58); }); }); From e49619bcfdbb8f6c5d1a59088de17ccc635deb1a Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Wed, 14 Jun 2023 07:36:47 -0700 Subject: [PATCH 11/24] 1.0.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c36ec5..8490b4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@code4recovery/spec", - "version": "1.0.1", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@code4recovery/spec", - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "devDependencies": { "@types/jest": "^29.5.2", diff --git a/package.json b/package.json index ea46c60..7c2a3e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@code4recovery/spec", - "version": "1.0.1", + "version": "1.0.2", "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", "main": "lib/index.js", "types": "lib/index.d.ts", From 4675a8d40dc42ca3401b47f33783cafb512b5fef Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 06:51:49 -0700 Subject: [PATCH 12/24] changes from anthony --- CreateReadme.php | 173 ++++++++++++++++++++++++++++ README.md | 142 ++++++++++------------- data/types.json | 294 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 529 insertions(+), 80 deletions(-) create mode 100644 CreateReadme.php create mode 100644 data/types.json diff --git a/CreateReadme.php b/CreateReadme.php new file mode 100644 index 0000000..3316b15 --- /dev/null +++ b/CreateReadme.php @@ -0,0 +1,173 @@ + + * + * @since 1.0.0 + */ + +namespace Code4Recovery; + +class CreateReadme +{ + /** + * The path to the json file containing spec data. + * @var string + */ + public string $specFile; + + /** + * The path to the readme.md that will be created. + * @var string + */ + public string $readmeFile; + + /** + * Replacement begins on the line after the appearance of this string. + * @var string + */ + private string $tableDelimiterTop = ''; + + /** + * Replacement ends on the line before the appearance of this string. + * @var string + */ + private string $tableDelimiterBottom = ''; + + /** + * Languages used in the types table + * @var array + */ + private array $languages = [ + 'en' => 'English', + 'es' => 'Español', + 'fr' => 'Français', + 'ja' => '日本語', + 'sv' => 'Svenska' + ]; + + /** + * Used to track all languages found in the spec file to avoid empty + * language columns + * @var array + */ + private array $languagesUsed = []; + + /** + * Constructor. + * + * @param $specFile: Path to spec json file, relative to project root. + * @param $readmeFile: Path to readme file, relative to project root. + */ + public function __construct(string $specFile, string $readmeFile) + { + // Set variables + $this->specFile = $specFile; + $this->readmeFile = $readmeFile; + // Process + $this->writeFile($this->createTable()); + } + + /** + * Builds the types table. + * + * @return string Markdown for table + */ + private function createTable(): string + { + $content[0] = $this->tableDelimiterTop; + // Rows must be created before header, so we know what language columns to create + $content[2] = $this->createTableRows(); + $content[1] = $this->createTableHeader(); + $content[3] = $this->tableDelimiterBottom; + ksort($content); + return implode(PHP_EOL, $content); + } + + /** + * Creates the table header markup. + * + * @return string + */ + private function createTableHeader(): string + { + // Start columns & header dashes output + $headerColumns[] = '| Code'; + $headerDashes[] = '| ---'; + // Loop through available languages, comparing them to the languages + // available in the spec data and create columns + foreach ($this->languages as $languageCode => $language) { + if (in_array($languageCode, $this->languagesUsed)) { + // Create columns + $headerColumns[] = trim($language); + $headerDashes[] = '---'; + } + } + // Add an empty array value so our implode will add an extra ' | ' at the end + $markupArray['cols'] = implode(' | ', array_merge($headerColumns, [''])); + $markupArray['dashes'] = implode(' | ', array_merge($headerDashes, [''])); + // Build final markup with line breaks + return implode(PHP_EOL, $markupArray); + } + + /** + * Gets the contents of the spec file and creates the table rows markup. + * + * @return string + */ + private function createTableRows(): string + { + // Init empty array + $specRows = []; + // Get spec data & language codes + $specJson = json_decode(file_get_contents($this->specFile), true); + $availableLanguages = array_keys($this->languages); + // Loop through tupes from spec + foreach ($specJson['types'] as $key => $value) { + // Begin row output. Empty the $columns array each time. + $specColumns = []; + $specColumns[] = '| `' . trim($key) . '`'; + // Loop through translated values + foreach ($value as $languageKey => $translatedText) { + // Only display values for available languages + if (in_array($languageKey, $availableLanguages)) { + // Add the language key to an array for use in creating the header + if (!in_array($languageKey, $this->languagesUsed)) { + $this->languagesUsed[] = trim($languageKey); + } + // Add translation to columns + $specColumns[] = trim($translatedText); + } + } + // Add empty array value so implode will create an extra "|" at then end of the markup + $specRows[] = implode(' | ', array_merge($specColumns, [''])); + } + return implode(PHP_EOL, $specRows); + } + + /** + * Get the contents of the readme, replace the types table, and re-write. + * + * @param string $tableContent The markdown to write to the file + * + * @return void + */ + private function writeFile(string $tableContent): void + { + // Get the current readme contents + $readmeContents = file_get_contents($this->readmeFile); + // Replace existing table + $result = preg_replace('#(' . preg_quote($this->tableDelimiterTop) . ')(.*)(' . preg_quote($this->tableDelimiterBottom) . ')#siU', $tableContent, $readmeContents); + // Write new file + $readmeHandle = fopen($this->readmeFile, "w") or die("Unable to open file!"); + fwrite($readmeHandle, $result); + fclose($readmeHandle); + } +} + +new CreateReadme('./data/types.json', 'README.md'); diff --git a/README.md b/README.md index 80023ff..b7a06c7 100644 --- a/README.md +++ b/README.md @@ -154,86 +154,68 @@ The codes below should be considered 'reserved.' In your implementation, it's ok for "Babysitting Available." "American Sign Language" or "ASL" rather than "Sign Language." It's also ok to add types, they will be ignored by the importer. -| Code | English | Español | Français | -| ------- | ------------------------------ | ------------------------------------ | -------------------------------------------- | -| `11` | 11th Step Meditation | Meditación del Paso 11 | Méditation sur la 11e Étape | -| `12x12` | 12 Steps & 12 Traditions | 12 Pasos y 12 Tradiciones | 12 Étapes et 12 Traditions | -| `A` | Secular | Secular | Séculier | -| `ABSI` | As Bill Sees It | Como lo ve Bill | Réflexions de Bill | -| `AL` | Concurrent with Alateen | Concurrente con Alateen | En même temps qu’Alateen | -| `AL-AN` | Concurrent with Al-Anon | Concurrente con Al-Anon | En même temps qu’Al-Anon | -| `AM` | Amharic | Amárico | Amharique | -| `ASL` | American Sign Language | Lenguaje por señas | Langage des Signes | -| `B` | Big Book | Libro Grande | Gros Livre | -| `BA` | Babysitting Available | Guardería disponible | Garderie d’enfants disponible | -| `BE` | Newcomer | Principiantes | Nouveau/nouvelle | -| `BI` | Bisexual | Bisexual | Bisexuel | -| `BRK` | Breakfast | Desayuno | Petit déjeuner | -| `BV-I` | Blind / Visually Impaired | Ciegos / Deficientes Visuales | Aveugle / Malvoyant | -| `C` | Closed | Cerrada | Fermé | -| `CAN` | Candlelight | Luz de una vela | À la chandelle | -| `CF` | Child-Friendly | Niño amigable | Enfants acceptés | -| `D` | Discussion | Discusión | Discussion | -| `D-HOH` | Deaf / Hard of Hearing | Sordo/dificultades auditivas | Sourd / Malentendant | -| `DA` | Danish | Danés | Danois | -| `DB` | Digital Basket | Canasta digital | Panier numérique | -| `DD` | Dual Diagnosis | Diagnóstico dual | Double diagnostic | -| `DE` | German | Alemán | Allemand | -| `DR` | Daily Reflections | Reflexiones Diarias | Réflexions quotidiennes | -| `EL` | Greek | Griego | Grec | -| `EN` | English | Inglés | Anglais | -| `FA` | Persian | Persa | Persan | -| `FF` | Fragrance Free | Sin fragancia | Sans parfum | -| `FR` | French | Francés | Français | -| `G` | Gay | Gay | Gai | -| `GR` | Grapevine | La Viña | Grapevine | -| `H` | Birthday | Cumpleaños | Anniversaire | -| `HE` | Hebrew | Hebreo | Hébreu | -| `HI` | Hindi | Hindi | Hindi | -| `HR` | Croatian | Croata | Croate | -| `HU` | Hungarian | Húngaro | Hongrois | -| `ITA` | Italian | Italiano | Italien | -| `JA` | Japanese | Japonés | Japonais | -| `KOR` | Korean | Coreano | Coréen | -| `L` | Lesbian | Lesbianas | Lesbienne | -| `LGBTQ` | LGBTQIAA+ | LGBTQIAA+ | LGBTQIAA+ | -| `LIT` | Literature | Literatura | Publications | -| `LO-I` | Loners / Isolationists | Solitarios / aislacionistas | Solitaires / Isolationnistes | -| `LS` | Living Sober | Viviendo Sobrio | Vivre… Sans alcool | -| `LT` | Lithuanian | Lituano | Lituanien | -| `M` | Men | Hombres | Hommes | -| `MED` | Meditation | Meditación | Méditation | -| `ML` | Malayalam | Malayalam | Malayalam | -| `N` | Native American | Nativo Americano | Autochtone | -| `NDG` | Indigenous | Indígena | Indigène | -| `O` | Open | Abierta | Ouvert(e) | -| `OUT` | Outdoor | Al aire libre | En plein air | -| `P` | Professionals | Profesionales | Professionnels | -| `POA` | Proof of Attendance | Preuve de présence | Prueba de asistencia | -| `POC` | People of Color | Gente de color | Gens de couleur | -| `POL` | Polish | Polaco | Polonais | -| `POR` | Portuguese | Portugués | Portugais | -| `PUN` | Punjabi | Punjabi | Pendjabi | -| `QSL` | Quebec Sign Language | Lengua de señas de Quebec | Langue des signes québécoise | -| `RSL` | Russian Sign Language | Lenguaje de señas ruso | Langue des signes russe | -| `RUS` | Russian | Ruso | Russe | -| `S` | Spanish | Español | Espagnol | -| `SEN` | Seniors | Personas mayores | Séniors | -| `SK` | Slovak | Eslovaco | Slovaque | -| `SM` | Smoking Permitted | Se permite fumar | Permis de fumer | -| `SP` | Speaker | Orador | Conférencier | -| `ST` | Step Study | Estudio de pasos | Sur les Étapes | -| `SV` | Swedish | Sueco | Suédois | -| `T` | Transgender | Transgénero | Transgenre | -| `TC` | Location Temporarily Closed | Ubicación temporalmente cerrada | Emplacement temporairement fermé | -| `TR` | Tradition Study | Estudio de tradicion | Étude des Traditions | -| `UK` | Ukrainian | Ucranio | Ukrainien | -| `W` | Women | Mujer | Femmes | -| `X` | Wheelchair Access | Acceso en silla de ruedas | Accès aux fauteuils roulants | -| `XB` | Wheelchair-Accessible Bathroom | Baño accesible para sillas de ruedas | Toilettes accessibles aux fauteuils roulants | -| `XT` | Cross Talk Permitted | Se permite opinar | Conversation croisée permise | -| `Y` | Young People | Gente joven | Jeunes | - + +| Code | English | Español | Français | +| --- | --- | --- | --- | +| `11` | 11th Step Meditation | Meditación del Paso 11 | Méditation sur la 11e Étape | +| `12x12` | 12 Steps & 12 Traditions | 12 Pasos y 12 Tradiciones | 12 Étapes et 12 Traditions | +| `A` | Secular | Secular | Séculier | +| `ABSI` | As Bill Sees It | Como lo ve Bill | Réflexions de Bill | +| `AL` | Concurrent with Alateen | Concurrente con Alateen | En même temps qu’Alateen | +| `AL-AN` | Concurrent with Al-Anon | Concurrente con Al-Anon | En même temps qu’Al-Anon | +| `ASL` | American Sign Language | Lenguaje por señas | Langage des Signes | +| `B` | Big Book | Libro Grande | Gros Livre | +| `BA` | Babysitting Available | Guardería disponible | Garderie d’enfants disponible | +| `BE` | Newcomer | Principiantes | Nouveau/nouvelle | +| `BI` | Bisexual | Bisexual | Bisexuel | +| `BRK` | Breakfast | Desayuno | Petit déjeuner | +| `C` | Closed | Cerrada | Fermé | +| `CAN` | Candlelight | Luz de una vela | À la chandelle | +| `CF` | Child-Friendly | Niño amigable | Enfants acceptés | +| `D` | Discussion | Discusión | Discussion | +| `DB` | Digital Basket | Canasta digital | Panier numérique | +| `DD` | Dual Diagnosis | Diagnóstico dual | Double diagnostic | +| `DR` | Daily Reflections | Reflexiones Diarias | Réflexions quotidiennes | +| `EN` | English | Inglés | Anglais | +| `FF` | Fragrance Free | Sin fragancia | Sans parfum | +| `FR` | French | Francés | Français | +| `G` | Gay | Gay | Gai | +| `GR` | Grapevine | La Viña | Grapevine | +| `H` | Birthday | Cumpleaños | Anniversaire | +| `HE` | Hebrew | Hebreo | Hébreu | +| `ITA` | Italian | Italiano | Italien | +| `JA` | Japanese | Japonés | Japonais | +| `KOR` | Korean | Coreano | Coréen | +| `L` | Lesbian | Lesbianas | Lesbienne | +| `LGBTQ` | LGBTQ | LGBTQ | LGBTQ | +| `LIT` | Literature | Literatura | Publications | +| `LS` | Living Sober | Viviendo Sobrio | Vivre… Sans alcool | +| `M` | Men | Hombres | Hommes | +| `MED` | Meditation | Meditación | Méditation | +| `N` | Native American | Nativo Americano | Autochtone | +| `NDG` | Indigenous | Indígena | Indigène | +| `O` | Open | Abierta | Ouvert(e) | +| `OUT` | Outdoor | Al aire libre | En plein air | +| `P` | Professionals | Profesionales | Professionnels | +| `POC` | People of Color | Gente de color | Gens de couleur | +| `POL` | Polish | Polaco | Polonais | +| `POR` | Portuguese | Portugués | Portugais | +| `PUN` | Punjabi | Punjabi | Pendjabi | +| `RUS` | Russian | Ruso | Russe | +| `S` | Spanish | Español | Espagnol | +| `SEN` | Seniors | Personas mayores | Séniors | +| `SM` | Smoking Permitted | Se permite fumar | Permis de fumer | +| `SP` | Speaker | Orador | Conférencier | +| `ST` | Step Study | Estudio de pasos | Sur les Étapes | +| `T` | Transgender | Transgénero | Transgenre | +| `TC` | Location Temporarily Closed | Ubicación temporalmente cerrada | Emplacement temporairement fermé | +| `TR` | Tradition Study | Estudio de tradicion | Étude des Traditions | +| `W` | Women | Mujer | Femmes | +| `X` | Wheelchair Access | Acceso en silla de ruedas | Accès aux fauteuils roulants | +| `XB` | Wheelchair-Accessible Bathroom | Baño accesible para sillas de ruedas | Toilettes accessibles aux fauteuils roulants | +| `XT` | Cross Talk Permitted | Se permite opinar | Conversation croisée permise | +| `Y` | Young People | Gente joven | Jeunes | + ## Sharing Your Data If you choose, you may make your feed discoverable by linking to it (like RSS) in your site's ``. diff --git a/data/types.json b/data/types.json new file mode 100644 index 0000000..39c1509 --- /dev/null +++ b/data/types.json @@ -0,0 +1,294 @@ +{ + "types": { + "11": { + "en": "11th Step Meditation", + "es": "Meditación del Paso 11", + "fr": "Méditation sur la 11e Étape" + }, + "12x12": { + "en": "12 Steps & 12 Traditions", + "es": "12 Pasos y 12 Tradiciones", + "fr": "12 Étapes et 12 Traditions" + }, + "A": { + "en": "Secular", + "es": "Secular", + "fr": "Séculier" + }, + "ABSI": { + "en": "As Bill Sees It", + "es": "Como lo ve Bill", + "fr": "Réflexions de Bill" + }, + "AL": { + "en": "Concurrent with Alateen", + "es": "Concurrente con Alateen", + "fr": "En même temps qu’Alateen" + }, + "AL-AN": { + "en": "Concurrent with Al-Anon", + "es": "Concurrente con Al-Anon", + "fr": "En même temps qu’Al-Anon" + }, + "ASL": { + "en": "American Sign Language", + "es": "Lenguaje por señas", + "fr": "Langage des Signes" + }, + "B": { + "en": "Big Book", + "es": "Libro Grande", + "fr": "Gros Livre" + }, + "BA": { + "en": "Babysitting Available", + "es": "Guardería disponible", + "fr": "Garderie d’enfants disponible" + }, + "BE": { + "en": "Newcomer", + "es": "Principiantes", + "fr": "Nouveau/nouvelle" + }, + "BI": { + "en": "Bisexual", + "es": "Bisexual", + "fr": "Bisexuel" + }, + "BRK": { + "en": "Breakfast", + "es": "Desayuno", + "fr": "Petit déjeuner" + }, + "C": { + "en": "Closed", + "es": "Cerrada", + "fr": "Fermé" + }, + "CAN": { + "en": "Candlelight", + "es": "Luz de una vela", + "fr": "À la chandelle" + }, + "CF": { + "en": "Child-Friendly", + "es": "Niño amigable", + "fr": "Enfants acceptés" + }, + "D": { + "en": "Discussion", + "es": "Discusión", + "fr": "Discussion" + }, + "DB": { + "en": "Digital Basket", + "es": "Canasta digital", + "fr": "Panier numérique" + }, + "DD": { + "en": "Dual Diagnosis", + "es": "Diagnóstico dual", + "fr": "Double diagnostic" + }, + "DR": { + "en": "Daily Reflections", + "es": "Reflexiones Diarias", + "fr": "Réflexions quotidiennes" + }, + "EN": { + "en": "English", + "es": "Inglés", + "fr": "Anglais" + }, + "FF": { + "en": "Fragrance Free", + "es": "Sin fragancia", + "fr": "Sans parfum" + }, + "FR": { + "en": "French", + "es": "Francés", + "fr": "Français" + }, + "G": { + "en": "Gay", + "es": "Gay", + "fr": "Gai" + }, + "GR": { + "en": "Grapevine", + "es": "La Viña", + "fr": "Grapevine" + }, + "H": { + "en": "Birthday", + "es": "Cumpleaños", + "fr": "Anniversaire" + }, + "HE": { + "en": "Hebrew", + "es": "Hebreo", + "fr": "Hébreu" + }, + "ITA": { + "en": "Italian", + "es": "Italiano", + "fr": "Italien" + }, + "JA": { + "en": "Japanese", + "es": "Japonés", + "fr": "Japonais" + }, + "KOR": { + "en": "Korean", + "es": "Coreano", + "fr": "Coréen" + }, + "L": { + "en": "Lesbian", + "es": "Lesbianas", + "fr": "Lesbienne" + }, + "LGBTQ": { + "en": "LGBTQ", + "es": "LGBTQ", + "fr": "LGBTQ" + }, + "LIT": { + "en": "Literature", + "es": "Literatura", + "fr": "Publications" + }, + "LS": { + "en": "Living Sober", + "es": "Viviendo Sobrio", + "fr": "Vivre… Sans alcool" + }, + "M": { + "en": "Men", + "es": "Hombres", + "fr": "Hommes" + }, + "MED": { + "en": "Meditation", + "es": "Meditación", + "fr": "Méditation" + }, + "N": { + "en": "Native American", + "es": "Nativo Americano", + "fr": "Autochtone" + }, + "NDG": { + "en": "Indigenous", + "es": "Indígena", + "fr": "Indigène" + }, + "O": { + "en": "Open", + "es": "Abierta", + "fr": "Ouvert(e)" + }, + "OUT": { + "en": "Outdoor", + "es": "Al aire libre", + "fr": "En plein air" + }, + "P": { + "en": "Professionals", + "es": "Profesionales", + "fr": "Professionnels" + }, + "POC": { + "en": "People of Color", + "es": "Gente de color", + "fr": "Gens de couleur" + }, + "POL": { + "en": "Polish", + "es": "Polaco", + "fr": "Polonais" + }, + "POR": { + "en": "Portuguese", + "es": "Portugués", + "fr": "Portugais" + }, + "PUN": { + "en": "Punjabi", + "es": "Punjabi", + "fr": "Pendjabi" + }, + "RUS": { + "en": "Russian", + "es": "Ruso", + "fr": "Russe" + }, + "S": { + "en": "Spanish", + "es": "Español", + "fr": "Espagnol" + }, + "SEN": { + "en": "Seniors", + "es": "Personas mayores", + "fr": "Séniors" + }, + "SM": { + "en": "Smoking Permitted", + "es": "Se permite fumar", + "fr": "Permis de fumer" + }, + "SP": { + "en": "Speaker", + "es": "Orador", + "fr": "Conférencier" + }, + "ST": { + "en": "Step Study", + "es": "Estudio de pasos", + "fr": "Sur les Étapes" + }, + "T": { + "en": "Transgender", + "es": "Transgénero", + "fr": "Transgenre" + }, + "TC": { + "en": "Location Temporarily Closed", + "es": "Ubicación temporalmente cerrada", + "fr": "Emplacement temporairement fermé" + }, + "TR": { + "en": "Tradition Study", + "es": "Estudio de tradicion", + "fr": "Étude des Traditions" + }, + "W": { + "en": "Women", + "es": "Mujer", + "fr": "Femmes" + }, + "X": { + "en": "Wheelchair Access", + "es": "Acceso en silla de ruedas", + "fr": "Accès aux fauteuils roulants" + }, + "XB": { + "en": "Wheelchair-Accessible Bathroom", + "es": "Baño accesible para sillas de ruedas", + "fr": "Toilettes accessibles aux fauteuils roulants" + }, + "XT": { + "en": "Cross Talk Permitted", + "es": "Se permite opinar", + "fr": "Conversation croisée permise" + }, + "Y": { + "en": "Young People", + "es": "Gente joven", + "fr": "Jeunes" + } + } +} From 7dbbdaaf1fd381a7c83ce0fecfb02890a7bf32d7 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 07:11:58 -0700 Subject: [PATCH 13/24] minor refactors --- README.md | 121 ++++++++++++++------------- CreateReadme.php => UpdateReadme.php | 53 +++++++----- 2 files changed, 92 insertions(+), 82 deletions(-) rename CreateReadme.php => UpdateReadme.php (81%) diff --git a/README.md b/README.md index b7a06c7..12a7ce9 100644 --- a/README.md +++ b/README.md @@ -155,67 +155,68 @@ for "Babysitting Available." "American Sign Language" or "ASL" rather than "Sign they will be ignored by the importer. -| Code | English | Español | Français | -| --- | --- | --- | --- | -| `11` | 11th Step Meditation | Meditación del Paso 11 | Méditation sur la 11e Étape | -| `12x12` | 12 Steps & 12 Traditions | 12 Pasos y 12 Tradiciones | 12 Étapes et 12 Traditions | -| `A` | Secular | Secular | Séculier | -| `ABSI` | As Bill Sees It | Como lo ve Bill | Réflexions de Bill | -| `AL` | Concurrent with Alateen | Concurrente con Alateen | En même temps qu’Alateen | -| `AL-AN` | Concurrent with Al-Anon | Concurrente con Al-Anon | En même temps qu’Al-Anon | -| `ASL` | American Sign Language | Lenguaje por señas | Langage des Signes | -| `B` | Big Book | Libro Grande | Gros Livre | -| `BA` | Babysitting Available | Guardería disponible | Garderie d’enfants disponible | -| `BE` | Newcomer | Principiantes | Nouveau/nouvelle | -| `BI` | Bisexual | Bisexual | Bisexuel | -| `BRK` | Breakfast | Desayuno | Petit déjeuner | -| `C` | Closed | Cerrada | Fermé | -| `CAN` | Candlelight | Luz de una vela | À la chandelle | -| `CF` | Child-Friendly | Niño amigable | Enfants acceptés | -| `D` | Discussion | Discusión | Discussion | -| `DB` | Digital Basket | Canasta digital | Panier numérique | -| `DD` | Dual Diagnosis | Diagnóstico dual | Double diagnostic | -| `DR` | Daily Reflections | Reflexiones Diarias | Réflexions quotidiennes | -| `EN` | English | Inglés | Anglais | -| `FF` | Fragrance Free | Sin fragancia | Sans parfum | -| `FR` | French | Francés | Français | -| `G` | Gay | Gay | Gai | -| `GR` | Grapevine | La Viña | Grapevine | -| `H` | Birthday | Cumpleaños | Anniversaire | -| `HE` | Hebrew | Hebreo | Hébreu | -| `ITA` | Italian | Italiano | Italien | -| `JA` | Japanese | Japonés | Japonais | -| `KOR` | Korean | Coreano | Coréen | -| `L` | Lesbian | Lesbianas | Lesbienne | -| `LGBTQ` | LGBTQ | LGBTQ | LGBTQ | -| `LIT` | Literature | Literatura | Publications | -| `LS` | Living Sober | Viviendo Sobrio | Vivre… Sans alcool | -| `M` | Men | Hombres | Hommes | -| `MED` | Meditation | Meditación | Méditation | -| `N` | Native American | Nativo Americano | Autochtone | -| `NDG` | Indigenous | Indígena | Indigène | -| `O` | Open | Abierta | Ouvert(e) | -| `OUT` | Outdoor | Al aire libre | En plein air | -| `P` | Professionals | Profesionales | Professionnels | -| `POC` | People of Color | Gente de color | Gens de couleur | -| `POL` | Polish | Polaco | Polonais | -| `POR` | Portuguese | Portugués | Portugais | -| `PUN` | Punjabi | Punjabi | Pendjabi | -| `RUS` | Russian | Ruso | Russe | -| `S` | Spanish | Español | Espagnol | -| `SEN` | Seniors | Personas mayores | Séniors | -| `SM` | Smoking Permitted | Se permite fumar | Permis de fumer | -| `SP` | Speaker | Orador | Conférencier | -| `ST` | Step Study | Estudio de pasos | Sur les Étapes | -| `T` | Transgender | Transgénero | Transgenre | -| `TC` | Location Temporarily Closed | Ubicación temporalmente cerrada | Emplacement temporairement fermé | -| `TR` | Tradition Study | Estudio de tradicion | Étude des Traditions | -| `W` | Women | Mujer | Femmes | -| `X` | Wheelchair Access | Acceso en silla de ruedas | Accès aux fauteuils roulants | -| `XB` | Wheelchair-Accessible Bathroom | Baño accesible para sillas de ruedas | Toilettes accessibles aux fauteuils roulants | -| `XT` | Cross Talk Permitted | Se permite opinar | Conversation croisée permise | -| `Y` | Young People | Gente joven | Jeunes | +|Code|English|Español|Français| +|---|---|---|---| +|`11`|11th Step Meditation|Meditación del Paso 11|Méditation sur la 11e Étape| +|`12x12`|12 Steps & 12 Traditions|12 Pasos y 12 Tradiciones|12 Étapes et 12 Traditions| +|`A`|Secular|Secular|Séculier| +|`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill| +|`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen| +|`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon| +|`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes| +|`B`|Big Book|Libro Grande|Gros Livre| +|`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible| +|`BE`|Newcomer|Principiantes|Nouveau/nouvelle| +|`BI`|Bisexual|Bisexual|Bisexuel| +|`BRK`|Breakfast|Desayuno|Petit déjeuner| +|`C`|Closed|Cerrada|Fermé| +|`CAN`|Candlelight|Luz de una vela|À la chandelle| +|`CF`|Child-Friendly|Niño amigable|Enfants acceptés| +|`D`|Discussion|Discusión|Discussion| +|`DB`|Digital Basket|Canasta digital|Panier numérique| +|`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic| +|`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes| +|`EN`|English|Inglés|Anglais| +|`FF`|Fragrance Free|Sin fragancia|Sans parfum| +|`FR`|French|Francés|Français| +|`G`|Gay|Gay|Gai| +|`GR`|Grapevine|La Viña|Grapevine| +|`H`|Birthday|Cumpleaños|Anniversaire| +|`HE`|Hebrew|Hebreo|Hébreu| +|`ITA`|Italian|Italiano|Italien| +|`JA`|Japanese|Japonés|Japonais| +|`KOR`|Korean|Coreano|Coréen| +|`L`|Lesbian|Lesbianas|Lesbienne| +|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ| +|`LIT`|Literature|Literatura|Publications| +|`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool| +|`M`|Men|Hombres|Hommes| +|`MED`|Meditation|Meditación|Méditation| +|`N`|Native American|Nativo Americano|Autochtone| +|`NDG`|Indigenous|Indígena|Indigène| +|`O`|Open|Abierta|Ouvert(e)| +|`OUT`|Outdoor|Al aire libre|En plein air| +|`P`|Professionals|Profesionales|Professionnels| +|`POC`|People of Color|Gente de color|Gens de couleur| +|`POL`|Polish|Polaco|Polonais| +|`POR`|Portuguese|Portugués|Portugais| +|`PUN`|Punjabi|Punjabi|Pendjabi| +|`RUS`|Russian|Ruso|Russe| +|`S`|Spanish|Español|Espagnol| +|`SEN`|Seniors|Personas mayores|Séniors| +|`SM`|Smoking Permitted|Se permite fumar|Permis de fumer| +|`SP`|Speaker|Orador|Conférencier| +|`ST`|Step Study|Estudio de pasos|Sur les Étapes| +|`T`|Transgender|Transgénero|Transgenre| +|`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé| +|`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions| +|`W`|Women|Mujer|Femmes| +|`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants| +|`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants| +|`XT`|Cross Talk Permitted|Se permite opinar|Conversation croisée permise| +|`Y`|Young People|Gente joven|Jeunes| + ## Sharing Your Data If you choose, you may make your feed discoverable by linking to it (like RSS) in your site's ``. diff --git a/CreateReadme.php b/UpdateReadme.php similarity index 81% rename from CreateReadme.php rename to UpdateReadme.php index 3316b15..59a1fc3 100644 --- a/CreateReadme.php +++ b/UpdateReadme.php @@ -13,7 +13,7 @@ namespace Code4Recovery; -class CreateReadme +class UpdateReadme { /** * The path to the json file containing spec data. @@ -80,13 +80,14 @@ public function __construct(string $specFile, string $readmeFile) */ private function createTable(): string { - $content[0] = $this->tableDelimiterTop; // Rows must be created before header, so we know what language columns to create - $content[2] = $this->createTableRows(); - $content[1] = $this->createTableHeader(); - $content[3] = $this->tableDelimiterBottom; - ksort($content); - return implode(PHP_EOL, $content); + $rows = $this->createTableRows(); + return implode(PHP_EOL, [ + $this->tableDelimiterTop, + $this->createTableHeader(), + $rows, + $this->tableDelimiterBottom, + ]); } /** @@ -97,22 +98,25 @@ private function createTable(): string private function createTableHeader(): string { // Start columns & header dashes output - $headerColumns[] = '| Code'; - $headerDashes[] = '| ---'; + $headerColumns = ['Code']; + // Loop through available languages, comparing them to the languages // available in the spec data and create columns foreach ($this->languages as $languageCode => $language) { if (in_array($languageCode, $this->languagesUsed)) { // Create columns - $headerColumns[] = trim($language); - $headerDashes[] = '---'; + $headerColumns[] = $language; } } - // Add an empty array value so our implode will add an extra ' | ' at the end - $markupArray['cols'] = implode(' | ', array_merge($headerColumns, [''])); - $markupArray['dashes'] = implode(' | ', array_merge($headerDashes, [''])); + + // Create header dashes + $rows = [$headerColumns, array_fill(0, count($headerColumns), '---')]; + + // Add an empty array value so our implode will add an extra '|' at the end // Build final markup with line breaks - return implode(PHP_EOL, $markupArray); + return implode(PHP_EOL, array_map(function ($row) { + return implode('|', array_merge([''], $row, [''])); + }, $rows)); } /** @@ -124,28 +128,33 @@ private function createTableRows(): string { // Init empty array $specRows = []; + // Get spec data & language codes $specJson = json_decode(file_get_contents($this->specFile), true); $availableLanguages = array_keys($this->languages); - // Loop through tupes from spec + + // Loop through types from spec foreach ($specJson['types'] as $key => $value) { // Begin row output. Empty the $columns array each time. - $specColumns = []; - $specColumns[] = '| `' . trim($key) . '`'; + $specColumns = ['`' . $key . '`']; + // Loop through translated values foreach ($value as $languageKey => $translatedText) { + // Only display values for available languages if (in_array($languageKey, $availableLanguages)) { + // Add the language key to an array for use in creating the header if (!in_array($languageKey, $this->languagesUsed)) { - $this->languagesUsed[] = trim($languageKey); + $this->languagesUsed[] = $languageKey; } // Add translation to columns - $specColumns[] = trim($translatedText); + $specColumns[] = $translatedText; } } + // Add empty array value so implode will create an extra "|" at then end of the markup - $specRows[] = implode(' | ', array_merge($specColumns, [''])); + $specRows[] = implode('|', array_merge([''], $specColumns, [''])); } return implode(PHP_EOL, $specRows); } @@ -170,4 +179,4 @@ private function writeFile(string $tableContent): void } } -new CreateReadme('./data/types.json', 'README.md'); +new UpdateReadme('./data/types.json', 'README.md'); From c7eeb40f4609f62b02d4e1c0e80f81f2ff7128fc Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 07:40:01 -0700 Subject: [PATCH 14/24] add ja and sv --- README.md | 120 ++++++++++++------------ UpdateReadme.php | 4 +- data/types.json | 232 +++++++++++++++++++++++++++++++++++------------ 3 files changed, 236 insertions(+), 120 deletions(-) diff --git a/README.md b/README.md index 12a7ce9..0ba3a36 100644 --- a/README.md +++ b/README.md @@ -155,66 +155,66 @@ for "Babysitting Available." "American Sign Language" or "ASL" rather than "Sign they will be ignored by the importer. -|Code|English|Español|Français| -|---|---|---|---| -|`11`|11th Step Meditation|Meditación del Paso 11|Méditation sur la 11e Étape| -|`12x12`|12 Steps & 12 Traditions|12 Pasos y 12 Tradiciones|12 Étapes et 12 Traditions| -|`A`|Secular|Secular|Séculier| -|`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill| -|`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen| -|`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon| -|`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes| -|`B`|Big Book|Libro Grande|Gros Livre| -|`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible| -|`BE`|Newcomer|Principiantes|Nouveau/nouvelle| -|`BI`|Bisexual|Bisexual|Bisexuel| -|`BRK`|Breakfast|Desayuno|Petit déjeuner| -|`C`|Closed|Cerrada|Fermé| -|`CAN`|Candlelight|Luz de una vela|À la chandelle| -|`CF`|Child-Friendly|Niño amigable|Enfants acceptés| -|`D`|Discussion|Discusión|Discussion| -|`DB`|Digital Basket|Canasta digital|Panier numérique| -|`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic| -|`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes| -|`EN`|English|Inglés|Anglais| -|`FF`|Fragrance Free|Sin fragancia|Sans parfum| -|`FR`|French|Francés|Français| -|`G`|Gay|Gay|Gai| -|`GR`|Grapevine|La Viña|Grapevine| -|`H`|Birthday|Cumpleaños|Anniversaire| -|`HE`|Hebrew|Hebreo|Hébreu| -|`ITA`|Italian|Italiano|Italien| -|`JA`|Japanese|Japonés|Japonais| -|`KOR`|Korean|Coreano|Coréen| -|`L`|Lesbian|Lesbianas|Lesbienne| -|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ| -|`LIT`|Literature|Literatura|Publications| -|`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool| -|`M`|Men|Hombres|Hommes| -|`MED`|Meditation|Meditación|Méditation| -|`N`|Native American|Nativo Americano|Autochtone| -|`NDG`|Indigenous|Indígena|Indigène| -|`O`|Open|Abierta|Ouvert(e)| -|`OUT`|Outdoor|Al aire libre|En plein air| -|`P`|Professionals|Profesionales|Professionnels| -|`POC`|People of Color|Gente de color|Gens de couleur| -|`POL`|Polish|Polaco|Polonais| -|`POR`|Portuguese|Portugués|Portugais| -|`PUN`|Punjabi|Punjabi|Pendjabi| -|`RUS`|Russian|Ruso|Russe| -|`S`|Spanish|Español|Espagnol| -|`SEN`|Seniors|Personas mayores|Séniors| -|`SM`|Smoking Permitted|Se permite fumar|Permis de fumer| -|`SP`|Speaker|Orador|Conférencier| -|`ST`|Step Study|Estudio de pasos|Sur les Étapes| -|`T`|Transgender|Transgénero|Transgenre| -|`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé| -|`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions| -|`W`|Women|Mujer|Femmes| -|`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants| -|`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants| -|`XT`|Cross Talk Permitted|Se permite opinar|Conversation croisée permise| -|`Y`|Young People|Gente joven|Jeunes| +|Code|English|Español|Français|日本語|Svenska| +|---|---|---|---|---|---| +|`11`|11th Step Meditation|Meditación del Paso 11|Méditation sur la 11e Étape|ステップ11 黙想|11th Stegs Meditation| +|`12x12`|12 Steps & 12 Traditions|12 Pasos y 12 Tradiciones|12 Étapes et 12 Traditions|12のステップと12の伝統|12 Steg & 12 Traditioner| +|`A`|Secular|Secular|Séculier|無宗教|Sekulärt| +|`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill|ビルはこう思う|Som Bill Ser Det| +|`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen|アラティーンと同時進行|Tillsammans med Alateen| +|`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon|アラノンと同時進行|Tillsammans med Al-Anon| +|`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes|アメリカ手話|Amerikanskt teckenspråk| +|`B`|Big Book|Libro Grande|Gros Livre|ビッグブック|Stora Boken| +|`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible|ベビーシッターあり|Barnvakt Finns| +|`BE`|Newcomer|Principiantes|Nouveau/nouvelle|ビギナーズ|Nykomling| +|`BI`|Bisexual|Bisexual|Bisexuel|バイセクシャル|Bisexuellt| +|`BRK`|Breakfast|Desayuno|Petit déjeuner|朝食|Frukost| +|`C`|Closed|Cerrada|Fermé|クローズド|Slutet| +|`CAN`|Candlelight|Luz de una vela|À la chandelle|キャンドル|Tända Ljus| +|`CF`|Child-Friendly|Niño amigable|Enfants acceptés|お子さま歓迎|Barnvänligt| +|`D`|Discussion|Discusión|Discussion|ディスカッション|Diskussion| +|`DB`|Digital Basket|Canasta digital|Panier numérique|電子献金|Digital Korg| +|`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic|重複診断|Dubbel Diagnos| +|`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes|今日を新たに|Dagliga Reflektioner| +|`EN`|English|Inglés|Anglais|英語|Engelska| +|`FF`|Fragrance Free|Sin fragancia|Sans parfum|香水なし|Parfym Fritt| +|`FR`|French|Francés|Français|フランス語|Franska| +|`G`|Gay|Gay|Gai|ゲイ|Gay| +|`GR`|Grapevine|La Viña|Grapevine|グレープバイン|Grapevine| +|`H`|Birthday|Cumpleaños|Anniversaire|バースデー|Födelsedag| +|`HE`|Hebrew|Hebreo|Hébreu|ヘブライ語|Hebreiska| +|`ITA`|Italian|Italiano|Italien|イタリア語|Italienska| +|`JA`|Japanese|Japonés|Japonais|日本語|Japanska| +|`KOR`|Korean|Coreano|Coréen|韓国語|Koreanska| +|`L`|Lesbian|Lesbianas|Lesbienne|レズビアン|Lesbiskt| +|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ|LGBTQ|LGBTQ| +|`LIT`|Literature|Literatura|Publications|書籍|Litteratur| +|`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool|リビングソーバー|Leva Nyktert| +|`M`|Men|Hombres|Hommes|男性|Mansmöte| +|`MED`|Meditation|Meditación|Méditation|黙想|Meditationsmöte| +|`N`|Native American|Nativo Americano|Autochtone|ネイティブアメリカン|Ur-amerikanskt| +|`NDG`|Indigenous|Indígena|Indigène|先住民|Urfolkligt| +|`O`|Open|Abierta|Ouvert(e)|オープン|Öppet| +|`OUT`|Outdoor|Al aire libre|En plein air|アウトドア|Utomhus| +|`P`|Professionals|Profesionales|Professionnels|職業人|Professionella| +|`POC`|People of Color|Gente de color|Gens de couleur|有色人種|Färgade| +|`POL`|Polish|Polaco|Polonais|ポーランド語|Polska| +|`POR`|Portuguese|Portugués|Portugais|ポルトガル語|Portugisiska| +|`PUN`|Punjabi|Punjabi|Pendjabi|パンジャブ語|Punjabi| +|`RUS`|Russian|Ruso|Russe|ロシア語|Ryska| +|`S`|Spanish|Español|Espagnol|スペイン語|Spanska| +|`SEN`|Seniors|Personas mayores|Séniors|シニア|Seniorer| +|`SM`|Smoking Permitted|Se permite fumar|Permis de fumer|喫煙可|Rökning Tillåten| +|`SP`|Speaker|Orador|Conférencier|スピーカー|Talare| +|`ST`|Step Study|Estudio de pasos|Sur les Étapes|ステップ|Stegmöte| +|`T`|Transgender|Transgénero|Transgenre|トランスジェンダー|Transpersoner| +|`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé|一時的休止中|Tillfälligt Stängt| +|`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions|伝統|Traditionsmöte| +|`W`|Women|Mujer|Femmes|女性|Kvinnomöte| +|`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants|車いすアクセス|Handikappanpassat| +|`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants|車いす使用者用トイレ|Handikappanpassad WC| +|`XT`|Cross Talk Permitted|Se permite opinar|Conversation croisée permise|クロストーク可能|Kommentarer Tilltåtna| +|`Y`|Young People|Gente joven|Jeunes|ヤング|Young People| ## Sharing Your Data diff --git a/UpdateReadme.php b/UpdateReadme.php index 59a1fc3..ad33fbe 100644 --- a/UpdateReadme.php +++ b/UpdateReadme.php @@ -112,9 +112,9 @@ private function createTableHeader(): string // Create header dashes $rows = [$headerColumns, array_fill(0, count($headerColumns), '---')]; - // Add an empty array value so our implode will add an extra '|' at the end // Build final markup with line breaks return implode(PHP_EOL, array_map(function ($row) { + // Add empty array values so our row is surrounded by pipes return implode('|', array_merge([''], $row, [''])); }, $rows)); } @@ -153,7 +153,7 @@ private function createTableRows(): string } } - // Add empty array value so implode will create an extra "|" at then end of the markup + // Add empty array values so our row is surrounded by pipes $specRows[] = implode('|', array_merge([''], $specColumns, [''])); } return implode(PHP_EOL, $specRows); diff --git a/data/types.json b/data/types.json index 39c1509..2886cba 100644 --- a/data/types.json +++ b/data/types.json @@ -3,292 +3,408 @@ "11": { "en": "11th Step Meditation", "es": "Meditación del Paso 11", - "fr": "Méditation sur la 11e Étape" + "fr": "Méditation sur la 11e Étape", + "ja": "ステップ11 黙想", + "sv": "11th Stegs Meditation" }, "12x12": { "en": "12 Steps & 12 Traditions", "es": "12 Pasos y 12 Tradiciones", - "fr": "12 Étapes et 12 Traditions" + "fr": "12 Étapes et 12 Traditions", + "ja": "12のステップと12の伝統", + "sv": "12 Steg & 12 Traditioner" }, "A": { "en": "Secular", "es": "Secular", - "fr": "Séculier" + "fr": "Séculier", + "ja": "無宗教", + "sv": "Sekulärt" }, "ABSI": { "en": "As Bill Sees It", "es": "Como lo ve Bill", - "fr": "Réflexions de Bill" + "fr": "Réflexions de Bill", + "ja": "ビルはこう思う", + "sv": "Som Bill Ser Det" }, "AL": { "en": "Concurrent with Alateen", "es": "Concurrente con Alateen", - "fr": "En même temps qu’Alateen" + "fr": "En même temps qu’Alateen", + "ja": "アラティーンと同時進行", + "sv": "Tillsammans med Alateen" }, "AL-AN": { "en": "Concurrent with Al-Anon", "es": "Concurrente con Al-Anon", - "fr": "En même temps qu’Al-Anon" + "fr": "En même temps qu’Al-Anon", + "ja": "アラノンと同時進行", + "sv": "Tillsammans med Al-Anon" }, "ASL": { "en": "American Sign Language", "es": "Lenguaje por señas", - "fr": "Langage des Signes" + "fr": "Langage des Signes", + "ja": "アメリカ手話", + "sv": "Amerikanskt teckenspråk" }, "B": { "en": "Big Book", "es": "Libro Grande", - "fr": "Gros Livre" + "fr": "Gros Livre", + "ja": "ビッグブック", + "sv": "Stora Boken" }, "BA": { "en": "Babysitting Available", "es": "Guardería disponible", - "fr": "Garderie d’enfants disponible" + "fr": "Garderie d’enfants disponible", + "ja": "ベビーシッターあり", + "sv": "Barnvakt Finns" }, "BE": { "en": "Newcomer", "es": "Principiantes", - "fr": "Nouveau/nouvelle" + "fr": "Nouveau/nouvelle", + "ja": "ビギナーズ", + "sv": "Nykomling" }, "BI": { "en": "Bisexual", "es": "Bisexual", - "fr": "Bisexuel" + "fr": "Bisexuel", + "ja": "バイセクシャル", + "sv": "Bisexuellt" }, "BRK": { "en": "Breakfast", "es": "Desayuno", - "fr": "Petit déjeuner" + "fr": "Petit déjeuner", + "ja": "朝食", + "sv": "Frukost" }, "C": { "en": "Closed", "es": "Cerrada", - "fr": "Fermé" + "fr": "Fermé", + "ja": "クローズド", + "sv": "Slutet" }, "CAN": { "en": "Candlelight", "es": "Luz de una vela", - "fr": "À la chandelle" + "fr": "À la chandelle", + "ja": "キャンドル", + "sv": "Tända Ljus" }, "CF": { "en": "Child-Friendly", "es": "Niño amigable", - "fr": "Enfants acceptés" + "fr": "Enfants acceptés", + "ja": "お子さま歓迎", + "sv": "Barnvänligt" }, "D": { "en": "Discussion", "es": "Discusión", - "fr": "Discussion" + "fr": "Discussion", + "ja": "ディスカッション", + "sv": "Diskussion" }, "DB": { "en": "Digital Basket", "es": "Canasta digital", - "fr": "Panier numérique" + "fr": "Panier numérique", + "ja": "電子献金", + "sv": "Digital Korg" }, "DD": { "en": "Dual Diagnosis", "es": "Diagnóstico dual", - "fr": "Double diagnostic" + "fr": "Double diagnostic", + "ja": "重複診断", + "sv": "Dubbel Diagnos" }, "DR": { "en": "Daily Reflections", "es": "Reflexiones Diarias", - "fr": "Réflexions quotidiennes" + "fr": "Réflexions quotidiennes", + "ja": "今日を新たに", + "sv": "Dagliga Reflektioner" }, "EN": { "en": "English", "es": "Inglés", - "fr": "Anglais" + "fr": "Anglais", + "ja": "英語", + "sv": "Engelska" }, "FF": { "en": "Fragrance Free", "es": "Sin fragancia", - "fr": "Sans parfum" + "fr": "Sans parfum", + "ja": "香水なし", + "sv": "Parfym Fritt" }, "FR": { "en": "French", "es": "Francés", - "fr": "Français" + "fr": "Français", + "ja": "フランス語", + "sv": "Franska" }, "G": { "en": "Gay", "es": "Gay", - "fr": "Gai" + "fr": "Gai", + "ja": "ゲイ", + "sv": "Gay" }, "GR": { "en": "Grapevine", "es": "La Viña", - "fr": "Grapevine" + "fr": "Grapevine", + "ja": "グレープバイン", + "sv": "Grapevine" }, "H": { "en": "Birthday", "es": "Cumpleaños", - "fr": "Anniversaire" + "fr": "Anniversaire", + "ja": "バースデー", + "sv": "Födelsedag" }, "HE": { "en": "Hebrew", "es": "Hebreo", - "fr": "Hébreu" + "fr": "Hébreu", + "ja": "ヘブライ語", + "sv": "Hebreiska" }, "ITA": { "en": "Italian", "es": "Italiano", - "fr": "Italien" + "fr": "Italien", + "ja": "イタリア語", + "sv": "Italienska" }, "JA": { "en": "Japanese", "es": "Japonés", - "fr": "Japonais" + "fr": "Japonais", + "ja": "日本語", + "sv": "Japanska" }, "KOR": { "en": "Korean", "es": "Coreano", - "fr": "Coréen" + "fr": "Coréen", + "ja": "韓国語", + "sv": "Koreanska" }, "L": { "en": "Lesbian", "es": "Lesbianas", - "fr": "Lesbienne" + "fr": "Lesbienne", + "ja": "レズビアン", + "sv": "Lesbiskt" }, "LGBTQ": { "en": "LGBTQ", "es": "LGBTQ", - "fr": "LGBTQ" + "fr": "LGBTQ", + "ja": "LGBTQ", + "sv": "LGBTQ" }, "LIT": { "en": "Literature", "es": "Literatura", - "fr": "Publications" + "fr": "Publications", + "ja": "書籍", + "sv": "Litteratur" }, "LS": { "en": "Living Sober", "es": "Viviendo Sobrio", - "fr": "Vivre… Sans alcool" + "fr": "Vivre… Sans alcool", + "ja": "リビングソーバー", + "sv": "Leva Nyktert" }, "M": { "en": "Men", "es": "Hombres", - "fr": "Hommes" + "fr": "Hommes", + "ja": "男性", + "sv": "Mansmöte" }, "MED": { "en": "Meditation", "es": "Meditación", - "fr": "Méditation" + "fr": "Méditation", + "ja": "黙想", + "sv": "Meditationsmöte" }, "N": { "en": "Native American", "es": "Nativo Americano", - "fr": "Autochtone" + "fr": "Autochtone", + "ja": "ネイティブアメリカン", + "sv": "Ur-amerikanskt" }, "NDG": { "en": "Indigenous", "es": "Indígena", - "fr": "Indigène" + "fr": "Indigène", + "ja": "先住民", + "sv": "Urfolkligt" }, "O": { "en": "Open", "es": "Abierta", - "fr": "Ouvert(e)" + "fr": "Ouvert(e)", + "ja": "オープン", + "sv": "Öppet" }, "OUT": { "en": "Outdoor", "es": "Al aire libre", - "fr": "En plein air" + "fr": "En plein air", + "ja": "アウトドア", + "sv": "Utomhus" }, "P": { "en": "Professionals", "es": "Profesionales", - "fr": "Professionnels" + "fr": "Professionnels", + "ja": "職業人", + "sv": "Professionella" }, "POC": { "en": "People of Color", "es": "Gente de color", - "fr": "Gens de couleur" + "fr": "Gens de couleur", + "ja": "有色人種", + "sv": "Färgade" }, "POL": { "en": "Polish", "es": "Polaco", - "fr": "Polonais" + "fr": "Polonais", + "ja": "ポーランド語", + "sv": "Polska" }, "POR": { "en": "Portuguese", "es": "Portugués", - "fr": "Portugais" + "fr": "Portugais", + "ja": "ポルトガル語", + "sv": "Portugisiska" }, "PUN": { "en": "Punjabi", "es": "Punjabi", - "fr": "Pendjabi" + "fr": "Pendjabi", + "ja": "パンジャブ語", + "sv": "Punjabi" }, "RUS": { "en": "Russian", "es": "Ruso", - "fr": "Russe" + "fr": "Russe", + "ja": "ロシア語", + "sv": "Ryska" }, "S": { "en": "Spanish", "es": "Español", - "fr": "Espagnol" + "fr": "Espagnol", + "ja": "スペイン語", + "sv": "Spanska" }, "SEN": { "en": "Seniors", "es": "Personas mayores", - "fr": "Séniors" + "fr": "Séniors", + "ja": "シニア", + "sv": "Seniorer" }, "SM": { "en": "Smoking Permitted", "es": "Se permite fumar", - "fr": "Permis de fumer" + "fr": "Permis de fumer", + "ja": "喫煙可", + "sv": "Rökning Tillåten" }, "SP": { "en": "Speaker", "es": "Orador", - "fr": "Conférencier" + "fr": "Conférencier", + "ja": "スピーカー", + "sv": "Talare" }, "ST": { "en": "Step Study", "es": "Estudio de pasos", - "fr": "Sur les Étapes" + "fr": "Sur les Étapes", + "ja": "ステップ", + "sv": "Stegmöte" }, "T": { "en": "Transgender", "es": "Transgénero", - "fr": "Transgenre" + "fr": "Transgenre", + "ja": "トランスジェンダー", + "sv": "Transpersoner" }, "TC": { "en": "Location Temporarily Closed", "es": "Ubicación temporalmente cerrada", - "fr": "Emplacement temporairement fermé" + "fr": "Emplacement temporairement fermé", + "ja": "一時的休止中", + "sv": "Tillfälligt Stängt" }, "TR": { "en": "Tradition Study", "es": "Estudio de tradicion", - "fr": "Étude des Traditions" + "fr": "Étude des Traditions", + "ja": "伝統", + "sv": "Traditionsmöte" }, "W": { "en": "Women", "es": "Mujer", - "fr": "Femmes" + "fr": "Femmes", + "ja": "女性", + "sv": "Kvinnomöte" }, "X": { "en": "Wheelchair Access", "es": "Acceso en silla de ruedas", - "fr": "Accès aux fauteuils roulants" + "fr": "Accès aux fauteuils roulants", + "ja": "車いすアクセス", + "sv": "Handikappanpassat" }, "XB": { "en": "Wheelchair-Accessible Bathroom", "es": "Baño accesible para sillas de ruedas", - "fr": "Toilettes accessibles aux fauteuils roulants" + "fr": "Toilettes accessibles aux fauteuils roulants", + "ja": "車いす使用者用トイレ", + "sv": "Handikappanpassad WC" }, "XT": { "en": "Cross Talk Permitted", "es": "Se permite opinar", - "fr": "Conversation croisée permise" + "fr": "Conversation croisée permise", + "ja": "クロストーク可能", + "sv": "Kommentarer Tilltåtna" }, "Y": { "en": "Young People", "es": "Gente joven", - "fr": "Jeunes" + "fr": "Jeunes", + "ja": "ヤング", + "sv": "Young People" } } } From 7231094a426ef93f69720b7272e60a112dbe7b6f Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:24:16 -0700 Subject: [PATCH 15/24] exportable npm package generating typescript --- .gitignore | 2 + UpdateReadme.php | 14 ++ package-lock.json | 462 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 30 +++ src/index.ts | 410 ++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 11 ++ tslint.json | 3 + 7 files changed, 932 insertions(+) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..69a671c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +/lib \ No newline at end of file diff --git a/UpdateReadme.php b/UpdateReadme.php index ad33fbe..faba917 100644 --- a/UpdateReadme.php +++ b/UpdateReadme.php @@ -71,6 +71,9 @@ public function __construct(string $specFile, string $readmeFile) $this->readmeFile = $readmeFile; // Process $this->writeFile($this->createTable()); + + // write typescript + $this->writeTypeScript(); } /** @@ -177,6 +180,17 @@ private function writeFile(string $tableContent): void fwrite($readmeHandle, $result); fclose($readmeHandle); } + + /** + * Write the typescript file + * + * @return void + */ + private function writeTypeScript(): void + { + $json = file_get_contents($this->specFile); + file_put_contents('./src/index.ts', 'export const types = ' . $json . ';'); + } } new UpdateReadme('./data/types.json', 'README.md'); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6c682e8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,462 @@ +{ + "name": "spec", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "spec", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "prettier": "^2.8.8", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typescript": "^5.1.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@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://packages.atlassian.com/api/npm/npm-remote/@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://packages.atlassian.com/api/npm/npm-remote/@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/ansi-styles": { + "version": "3.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/argparse": { + "version": "1.0.10", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/builtin-modules": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/color-convert": { + "version": "1.9.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/color-name": { + "version": "1.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/fs.realpath": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "*" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/minimatch": { + "version": "3.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/once": { + "version": "1.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true, + "bin": { + "tslint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..32a244b --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "spec", + "version": "1.0.0", + "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib/**/*" + ], + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "tsc", + "format": "prettier --write \"src/**/*.ts\"", + "lint": "tslint -p tsconfig.json", + "prepare": "npm run build", + "prepublishOnly": "npm test && npm run lint", + "preversion": "npm run lint", + "version": "npm run format && git add -A src", + "postversion": "git push && git push --tags" + }, + "keywords": [], + "author": "Code for Recovery", + "license": "ISC", + "devDependencies": { + "prettier": "^2.8.8", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typescript": "^5.1.3" + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..9c4a395 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,410 @@ +export const types = { + types: { + "11": { + en: "11th Step Meditation", + es: "Meditación del Paso 11", + fr: "Méditation sur la 11e Étape", + ja: "ステップ11 黙想", + sv: "11th Stegs Meditation", + }, + "12x12": { + en: "12 Steps & 12 Traditions", + es: "12 Pasos y 12 Tradiciones", + fr: "12 Étapes et 12 Traditions", + ja: "12のステップと12の伝統", + sv: "12 Steg & 12 Traditioner", + }, + A: { + en: "Secular", + es: "Secular", + fr: "Séculier", + ja: "無宗教", + sv: "Sekulärt", + }, + ABSI: { + en: "As Bill Sees It", + es: "Como lo ve Bill", + fr: "Réflexions de Bill", + ja: "ビルはこう思う", + sv: "Som Bill Ser Det", + }, + AL: { + en: "Concurrent with Alateen", + es: "Concurrente con Alateen", + fr: "En même temps qu’Alateen", + ja: "アラティーンと同時進行", + sv: "Tillsammans med Alateen", + }, + "AL-AN": { + en: "Concurrent with Al-Anon", + es: "Concurrente con Al-Anon", + fr: "En même temps qu’Al-Anon", + ja: "アラノンと同時進行", + sv: "Tillsammans med Al-Anon", + }, + ASL: { + en: "American Sign Language", + es: "Lenguaje por señas", + fr: "Langage des Signes", + ja: "アメリカ手話", + sv: "Amerikanskt teckenspråk", + }, + B: { + en: "Big Book", + es: "Libro Grande", + fr: "Gros Livre", + ja: "ビッグブック", + sv: "Stora Boken", + }, + BA: { + en: "Babysitting Available", + es: "Guardería disponible", + fr: "Garderie d’enfants disponible", + ja: "ベビーシッターあり", + sv: "Barnvakt Finns", + }, + BE: { + en: "Newcomer", + es: "Principiantes", + fr: "Nouveau/nouvelle", + ja: "ビギナーズ", + sv: "Nykomling", + }, + BI: { + en: "Bisexual", + es: "Bisexual", + fr: "Bisexuel", + ja: "バイセクシャル", + sv: "Bisexuellt", + }, + BRK: { + en: "Breakfast", + es: "Desayuno", + fr: "Petit déjeuner", + ja: "朝食", + sv: "Frukost", + }, + C: { + en: "Closed", + es: "Cerrada", + fr: "Fermé", + ja: "クローズド", + sv: "Slutet", + }, + CAN: { + en: "Candlelight", + es: "Luz de una vela", + fr: "À la chandelle", + ja: "キャンドル", + sv: "Tända Ljus", + }, + CF: { + en: "Child-Friendly", + es: "Niño amigable", + fr: "Enfants acceptés", + ja: "お子さま歓迎", + sv: "Barnvänligt", + }, + D: { + en: "Discussion", + es: "Discusión", + fr: "Discussion", + ja: "ディスカッション", + sv: "Diskussion", + }, + DB: { + en: "Digital Basket", + es: "Canasta digital", + fr: "Panier numérique", + ja: "電子献金", + sv: "Digital Korg", + }, + DD: { + en: "Dual Diagnosis", + es: "Diagnóstico dual", + fr: "Double diagnostic", + ja: "重複診断", + sv: "Dubbel Diagnos", + }, + DR: { + en: "Daily Reflections", + es: "Reflexiones Diarias", + fr: "Réflexions quotidiennes", + ja: "今日を新たに", + sv: "Dagliga Reflektioner", + }, + EN: { + en: "English", + es: "Inglés", + fr: "Anglais", + ja: "英語", + sv: "Engelska", + }, + FF: { + en: "Fragrance Free", + es: "Sin fragancia", + fr: "Sans parfum", + ja: "香水なし", + sv: "Parfym Fritt", + }, + FR: { + en: "French", + es: "Francés", + fr: "Français", + ja: "フランス語", + sv: "Franska", + }, + G: { + en: "Gay", + es: "Gay", + fr: "Gai", + ja: "ゲイ", + sv: "Gay", + }, + GR: { + en: "Grapevine", + es: "La Viña", + fr: "Grapevine", + ja: "グレープバイン", + sv: "Grapevine", + }, + H: { + en: "Birthday", + es: "Cumpleaños", + fr: "Anniversaire", + ja: "バースデー", + sv: "Födelsedag", + }, + HE: { + en: "Hebrew", + es: "Hebreo", + fr: "Hébreu", + ja: "ヘブライ語", + sv: "Hebreiska", + }, + ITA: { + en: "Italian", + es: "Italiano", + fr: "Italien", + ja: "イタリア語", + sv: "Italienska", + }, + JA: { + en: "Japanese", + es: "Japonés", + fr: "Japonais", + ja: "日本語", + sv: "Japanska", + }, + KOR: { + en: "Korean", + es: "Coreano", + fr: "Coréen", + ja: "韓国語", + sv: "Koreanska", + }, + L: { + en: "Lesbian", + es: "Lesbianas", + fr: "Lesbienne", + ja: "レズビアン", + sv: "Lesbiskt", + }, + LGBTQ: { + en: "LGBTQ", + es: "LGBTQ", + fr: "LGBTQ", + ja: "LGBTQ", + sv: "LGBTQ", + }, + LIT: { + en: "Literature", + es: "Literatura", + fr: "Publications", + ja: "書籍", + sv: "Litteratur", + }, + LS: { + en: "Living Sober", + es: "Viviendo Sobrio", + fr: "Vivre… Sans alcool", + ja: "リビングソーバー", + sv: "Leva Nyktert", + }, + M: { + en: "Men", + es: "Hombres", + fr: "Hommes", + ja: "男性", + sv: "Mansmöte", + }, + MED: { + en: "Meditation", + es: "Meditación", + fr: "Méditation", + ja: "黙想", + sv: "Meditationsmöte", + }, + N: { + en: "Native American", + es: "Nativo Americano", + fr: "Autochtone", + ja: "ネイティブアメリカン", + sv: "Ur-amerikanskt", + }, + NDG: { + en: "Indigenous", + es: "Indígena", + fr: "Indigène", + ja: "先住民", + sv: "Urfolkligt", + }, + O: { + en: "Open", + es: "Abierta", + fr: "Ouvert(e)", + ja: "オープン", + sv: "Öppet", + }, + OUT: { + en: "Outdoor", + es: "Al aire libre", + fr: "En plein air", + ja: "アウトドア", + sv: "Utomhus", + }, + P: { + en: "Professionals", + es: "Profesionales", + fr: "Professionnels", + ja: "職業人", + sv: "Professionella", + }, + POC: { + en: "People of Color", + es: "Gente de color", + fr: "Gens de couleur", + ja: "有色人種", + sv: "Färgade", + }, + POL: { + en: "Polish", + es: "Polaco", + fr: "Polonais", + ja: "ポーランド語", + sv: "Polska", + }, + POR: { + en: "Portuguese", + es: "Portugués", + fr: "Portugais", + ja: "ポルトガル語", + sv: "Portugisiska", + }, + PUN: { + en: "Punjabi", + es: "Punjabi", + fr: "Pendjabi", + ja: "パンジャブ語", + sv: "Punjabi", + }, + RUS: { + en: "Russian", + es: "Ruso", + fr: "Russe", + ja: "ロシア語", + sv: "Ryska", + }, + S: { + en: "Spanish", + es: "Español", + fr: "Espagnol", + ja: "スペイン語", + sv: "Spanska", + }, + SEN: { + en: "Seniors", + es: "Personas mayores", + fr: "Séniors", + ja: "シニア", + sv: "Seniorer", + }, + SM: { + en: "Smoking Permitted", + es: "Se permite fumar", + fr: "Permis de fumer", + ja: "喫煙可", + sv: "Rökning Tillåten", + }, + SP: { + en: "Speaker", + es: "Orador", + fr: "Conférencier", + ja: "スピーカー", + sv: "Talare", + }, + ST: { + en: "Step Study", + es: "Estudio de pasos", + fr: "Sur les Étapes", + ja: "ステップ", + sv: "Stegmöte", + }, + T: { + en: "Transgender", + es: "Transgénero", + fr: "Transgenre", + ja: "トランスジェンダー", + sv: "Transpersoner", + }, + TC: { + en: "Location Temporarily Closed", + es: "Ubicación temporalmente cerrada", + fr: "Emplacement temporairement fermé", + ja: "一時的休止中", + sv: "Tillfälligt Stängt", + }, + TR: { + en: "Tradition Study", + es: "Estudio de tradicion", + fr: "Étude des Traditions", + ja: "伝統", + sv: "Traditionsmöte", + }, + W: { + en: "Women", + es: "Mujer", + fr: "Femmes", + ja: "女性", + sv: "Kvinnomöte", + }, + X: { + en: "Wheelchair Access", + es: "Acceso en silla de ruedas", + fr: "Accès aux fauteuils roulants", + ja: "車いすアクセス", + sv: "Handikappanpassat", + }, + XB: { + en: "Wheelchair-Accessible Bathroom", + es: "Baño accesible para sillas de ruedas", + fr: "Toilettes accessibles aux fauteuils roulants", + ja: "車いす使用者用トイレ", + sv: "Handikappanpassad WC", + }, + XT: { + en: "Cross Talk Permitted", + es: "Se permite opinar", + fr: "Conversation croisée permise", + ja: "クロストーク可能", + sv: "Kommentarer Tilltåtna", + }, + Y: { + en: "Young People", + es: "Gente joven", + fr: "Jeunes", + ja: "ヤング", + sv: "Young People", + }, + }, +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ca4bf6a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "declaration": true, + "outDir": "./lib", + "strict": true + }, + "include": ["src"], + "exclude": ["node_modules", "**/__tests__/*"] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..267f369 --- /dev/null +++ b/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": ["tslint:recommended", "tslint-config-prettier"] +} From 5d1a2ce62278b9801adbf4909b8f0b31297ae33b Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sat, 10 Jun 2023 08:23:02 -0700 Subject: [PATCH 16/24] tweak build logic --- UpdateReadme.php => Build.php | 85 +++++++++++++---------------------- package.json | 12 +++-- 2 files changed, 39 insertions(+), 58 deletions(-) rename UpdateReadme.php => Build.php (61%) diff --git a/UpdateReadme.php b/Build.php similarity index 61% rename from UpdateReadme.php rename to Build.php index faba917..7706420 100644 --- a/UpdateReadme.php +++ b/Build.php @@ -1,7 +1,7 @@ 'Svenska' ]; - /** - * Used to track all languages found in the spec file to avoid empty - * language columns - * @var array - */ - private array $languagesUsed = []; - /** * Constructor. * * @param $specFile: Path to spec json file, relative to project root. * @param $readmeFile: Path to readme file, relative to project root. */ - public function __construct(string $specFile, string $readmeFile) + public function __construct() { - // Set variables - $this->specFile = $specFile; - $this->readmeFile = $readmeFile; - // Process - $this->writeFile($this->createTable()); - - // write typescript + $this->writeReadme($this->createTable()); $this->writeTypeScript(); } @@ -83,12 +70,10 @@ public function __construct(string $specFile, string $readmeFile) */ private function createTable(): string { - // Rows must be created before header, so we know what language columns to create - $rows = $this->createTableRows(); return implode(PHP_EOL, [ $this->tableDelimiterTop, $this->createTableHeader(), - $rows, + $this->createTableRows(), $this->tableDelimiterBottom, ]); } @@ -100,26 +85,26 @@ private function createTable(): string */ private function createTableHeader(): string { - // Start columns & header dashes output - $headerColumns = ['Code']; - - // Loop through available languages, comparing them to the languages - // available in the spec data and create columns - foreach ($this->languages as $languageCode => $language) { - if (in_array($languageCode, $this->languagesUsed)) { - // Create columns - $headerColumns[] = $language; - } - } + // Columns + $headerColumns = array_merge(['Code'], array_values($this->languages)); - // Create header dashes + // Dashes $rows = [$headerColumns, array_fill(0, count($headerColumns), '---')]; // Build final markup with line breaks - return implode(PHP_EOL, array_map(function ($row) { - // Add empty array values so our row is surrounded by pipes - return implode('|', array_merge([''], $row, [''])); - }, $rows)); + return implode(PHP_EOL, array_map([$this, 'createTableRow'], $rows)); + } + + /** + * Creates a table row separated (and surrounded) by pipes. + * + * @param array $row + * + * @return string + */ + private function createTableRow($row): string + { + return implode('|', array_merge([''], $row, [''])); } /** @@ -134,30 +119,22 @@ private function createTableRows(): string // Get spec data & language codes $specJson = json_decode(file_get_contents($this->specFile), true); - $availableLanguages = array_keys($this->languages); + $languages = array_keys($this->languages); // Loop through types from spec foreach ($specJson['types'] as $key => $value) { // Begin row output. Empty the $columns array each time. $specColumns = ['`' . $key . '`']; - // Loop through translated values - foreach ($value as $languageKey => $translatedText) { - - // Only display values for available languages - if (in_array($languageKey, $availableLanguages)) { + // Loop through languages + foreach ($languages as $languageKey) { - // Add the language key to an array for use in creating the header - if (!in_array($languageKey, $this->languagesUsed)) { - $this->languagesUsed[] = $languageKey; - } - // Add translation to columns - $specColumns[] = $translatedText; - } + // Add translation to columns + $specColumns[] = array_key_exists($languageKey, $value) ? $value[$languageKey] : '-'; } // Add empty array values so our row is surrounded by pipes - $specRows[] = implode('|', array_merge([''], $specColumns, [''])); + $specRows[] = $this->createTableRow($specColumns); } return implode(PHP_EOL, $specRows); } @@ -169,7 +146,7 @@ private function createTableRows(): string * * @return void */ - private function writeFile(string $tableContent): void + private function writeReadme(string $tableContent): void { // Get the current readme contents $readmeContents = file_get_contents($this->readmeFile); @@ -193,4 +170,4 @@ private function writeTypeScript(): void } } -new UpdateReadme('./data/types.json', 'README.md'); +new Build(); diff --git a/package.json b/package.json index 32a244b..13037b4 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "spec", + "name": "@code4recovery/spec", "version": "1.0.0", "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", "main": "lib/index.js", @@ -13,14 +13,18 @@ "format": "prettier --write \"src/**/*.ts\"", "lint": "tslint -p tsconfig.json", "prepare": "npm run build", - "prepublishOnly": "npm test && npm run lint", + "prepublishOnly": "npm run lint", "preversion": "npm run lint", "version": "npm run format && git add -A src", "postversion": "git push && git push --tags" }, - "keywords": [], + "keywords": [ + "AA", + "meetings", + "JSON" + ], "author": "Code for Recovery", - "license": "ISC", + "license": "MIT", "devDependencies": { "prettier": "^2.8.8", "tslint": "^6.1.3", From 8e587bf87fc3be256db3dffa8c5b2912c46547ab Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sun, 11 Jun 2023 07:36:20 -0700 Subject: [PATCH 17/24] more typescript exports --- Build.php | 5 +- data/types.json | 812 +++++++++++++++++++++++------------------------ src/index.ts | 433 ++----------------------- src/languages.ts | 1 + src/types.ts | 408 ++++++++++++++++++++++++ 5 files changed, 840 insertions(+), 819 deletions(-) create mode 100644 src/languages.ts create mode 100644 src/types.ts diff --git a/Build.php b/Build.php index 7706420..5264b7d 100644 --- a/Build.php +++ b/Build.php @@ -122,7 +122,7 @@ private function createTableRows(): string $languages = array_keys($this->languages); // Loop through types from spec - foreach ($specJson['types'] as $key => $value) { + foreach ($specJson as $key => $value) { // Begin row output. Empty the $columns array each time. $specColumns = ['`' . $key . '`']; @@ -165,8 +165,9 @@ private function writeReadme(string $tableContent): void */ private function writeTypeScript(): void { + file_put_contents('./src/languages.ts', 'export const languages = ' . json_encode(array_keys($this->languages)) . ' as const;'); $json = file_get_contents($this->specFile); - file_put_contents('./src/index.ts', 'export const types = ' . $json . ';'); + file_put_contents('./src/types.ts', 'export const types = ' . $json . ';'); } } diff --git a/data/types.json b/data/types.json index 2886cba..95c79b4 100644 --- a/data/types.json +++ b/data/types.json @@ -1,410 +1,408 @@ { - "types": { - "11": { - "en": "11th Step Meditation", - "es": "Meditación del Paso 11", - "fr": "Méditation sur la 11e Étape", - "ja": "ステップ11 黙想", - "sv": "11th Stegs Meditation" - }, - "12x12": { - "en": "12 Steps & 12 Traditions", - "es": "12 Pasos y 12 Tradiciones", - "fr": "12 Étapes et 12 Traditions", - "ja": "12のステップと12の伝統", - "sv": "12 Steg & 12 Traditioner" - }, - "A": { - "en": "Secular", - "es": "Secular", - "fr": "Séculier", - "ja": "無宗教", - "sv": "Sekulärt" - }, - "ABSI": { - "en": "As Bill Sees It", - "es": "Como lo ve Bill", - "fr": "Réflexions de Bill", - "ja": "ビルはこう思う", - "sv": "Som Bill Ser Det" - }, - "AL": { - "en": "Concurrent with Alateen", - "es": "Concurrente con Alateen", - "fr": "En même temps qu’Alateen", - "ja": "アラティーンと同時進行", - "sv": "Tillsammans med Alateen" - }, - "AL-AN": { - "en": "Concurrent with Al-Anon", - "es": "Concurrente con Al-Anon", - "fr": "En même temps qu’Al-Anon", - "ja": "アラノンと同時進行", - "sv": "Tillsammans med Al-Anon" - }, - "ASL": { - "en": "American Sign Language", - "es": "Lenguaje por señas", - "fr": "Langage des Signes", - "ja": "アメリカ手話", - "sv": "Amerikanskt teckenspråk" - }, - "B": { - "en": "Big Book", - "es": "Libro Grande", - "fr": "Gros Livre", - "ja": "ビッグブック", - "sv": "Stora Boken" - }, - "BA": { - "en": "Babysitting Available", - "es": "Guardería disponible", - "fr": "Garderie d’enfants disponible", - "ja": "ベビーシッターあり", - "sv": "Barnvakt Finns" - }, - "BE": { - "en": "Newcomer", - "es": "Principiantes", - "fr": "Nouveau/nouvelle", - "ja": "ビギナーズ", - "sv": "Nykomling" - }, - "BI": { - "en": "Bisexual", - "es": "Bisexual", - "fr": "Bisexuel", - "ja": "バイセクシャル", - "sv": "Bisexuellt" - }, - "BRK": { - "en": "Breakfast", - "es": "Desayuno", - "fr": "Petit déjeuner", - "ja": "朝食", - "sv": "Frukost" - }, - "C": { - "en": "Closed", - "es": "Cerrada", - "fr": "Fermé", - "ja": "クローズド", - "sv": "Slutet" - }, - "CAN": { - "en": "Candlelight", - "es": "Luz de una vela", - "fr": "À la chandelle", - "ja": "キャンドル", - "sv": "Tända Ljus" - }, - "CF": { - "en": "Child-Friendly", - "es": "Niño amigable", - "fr": "Enfants acceptés", - "ja": "お子さま歓迎", - "sv": "Barnvänligt" - }, - "D": { - "en": "Discussion", - "es": "Discusión", - "fr": "Discussion", - "ja": "ディスカッション", - "sv": "Diskussion" - }, - "DB": { - "en": "Digital Basket", - "es": "Canasta digital", - "fr": "Panier numérique", - "ja": "電子献金", - "sv": "Digital Korg" - }, - "DD": { - "en": "Dual Diagnosis", - "es": "Diagnóstico dual", - "fr": "Double diagnostic", - "ja": "重複診断", - "sv": "Dubbel Diagnos" - }, - "DR": { - "en": "Daily Reflections", - "es": "Reflexiones Diarias", - "fr": "Réflexions quotidiennes", - "ja": "今日を新たに", - "sv": "Dagliga Reflektioner" - }, - "EN": { - "en": "English", - "es": "Inglés", - "fr": "Anglais", - "ja": "英語", - "sv": "Engelska" - }, - "FF": { - "en": "Fragrance Free", - "es": "Sin fragancia", - "fr": "Sans parfum", - "ja": "香水なし", - "sv": "Parfym Fritt" - }, - "FR": { - "en": "French", - "es": "Francés", - "fr": "Français", - "ja": "フランス語", - "sv": "Franska" - }, - "G": { - "en": "Gay", - "es": "Gay", - "fr": "Gai", - "ja": "ゲイ", - "sv": "Gay" - }, - "GR": { - "en": "Grapevine", - "es": "La Viña", - "fr": "Grapevine", - "ja": "グレープバイン", - "sv": "Grapevine" - }, - "H": { - "en": "Birthday", - "es": "Cumpleaños", - "fr": "Anniversaire", - "ja": "バースデー", - "sv": "Födelsedag" - }, - "HE": { - "en": "Hebrew", - "es": "Hebreo", - "fr": "Hébreu", - "ja": "ヘブライ語", - "sv": "Hebreiska" - }, - "ITA": { - "en": "Italian", - "es": "Italiano", - "fr": "Italien", - "ja": "イタリア語", - "sv": "Italienska" - }, - "JA": { - "en": "Japanese", - "es": "Japonés", - "fr": "Japonais", - "ja": "日本語", - "sv": "Japanska" - }, - "KOR": { - "en": "Korean", - "es": "Coreano", - "fr": "Coréen", - "ja": "韓国語", - "sv": "Koreanska" - }, - "L": { - "en": "Lesbian", - "es": "Lesbianas", - "fr": "Lesbienne", - "ja": "レズビアン", - "sv": "Lesbiskt" - }, - "LGBTQ": { - "en": "LGBTQ", - "es": "LGBTQ", - "fr": "LGBTQ", - "ja": "LGBTQ", - "sv": "LGBTQ" - }, - "LIT": { - "en": "Literature", - "es": "Literatura", - "fr": "Publications", - "ja": "書籍", - "sv": "Litteratur" - }, - "LS": { - "en": "Living Sober", - "es": "Viviendo Sobrio", - "fr": "Vivre… Sans alcool", - "ja": "リビングソーバー", - "sv": "Leva Nyktert" - }, - "M": { - "en": "Men", - "es": "Hombres", - "fr": "Hommes", - "ja": "男性", - "sv": "Mansmöte" - }, - "MED": { - "en": "Meditation", - "es": "Meditación", - "fr": "Méditation", - "ja": "黙想", - "sv": "Meditationsmöte" - }, - "N": { - "en": "Native American", - "es": "Nativo Americano", - "fr": "Autochtone", - "ja": "ネイティブアメリカン", - "sv": "Ur-amerikanskt" - }, - "NDG": { - "en": "Indigenous", - "es": "Indígena", - "fr": "Indigène", - "ja": "先住民", - "sv": "Urfolkligt" - }, - "O": { - "en": "Open", - "es": "Abierta", - "fr": "Ouvert(e)", - "ja": "オープン", - "sv": "Öppet" - }, - "OUT": { - "en": "Outdoor", - "es": "Al aire libre", - "fr": "En plein air", - "ja": "アウトドア", - "sv": "Utomhus" - }, - "P": { - "en": "Professionals", - "es": "Profesionales", - "fr": "Professionnels", - "ja": "職業人", - "sv": "Professionella" - }, - "POC": { - "en": "People of Color", - "es": "Gente de color", - "fr": "Gens de couleur", - "ja": "有色人種", - "sv": "Färgade" - }, - "POL": { - "en": "Polish", - "es": "Polaco", - "fr": "Polonais", - "ja": "ポーランド語", - "sv": "Polska" - }, - "POR": { - "en": "Portuguese", - "es": "Portugués", - "fr": "Portugais", - "ja": "ポルトガル語", - "sv": "Portugisiska" - }, - "PUN": { - "en": "Punjabi", - "es": "Punjabi", - "fr": "Pendjabi", - "ja": "パンジャブ語", - "sv": "Punjabi" - }, - "RUS": { - "en": "Russian", - "es": "Ruso", - "fr": "Russe", - "ja": "ロシア語", - "sv": "Ryska" - }, - "S": { - "en": "Spanish", - "es": "Español", - "fr": "Espagnol", - "ja": "スペイン語", - "sv": "Spanska" - }, - "SEN": { - "en": "Seniors", - "es": "Personas mayores", - "fr": "Séniors", - "ja": "シニア", - "sv": "Seniorer" - }, - "SM": { - "en": "Smoking Permitted", - "es": "Se permite fumar", - "fr": "Permis de fumer", - "ja": "喫煙可", - "sv": "Rökning Tillåten" - }, - "SP": { - "en": "Speaker", - "es": "Orador", - "fr": "Conférencier", - "ja": "スピーカー", - "sv": "Talare" - }, - "ST": { - "en": "Step Study", - "es": "Estudio de pasos", - "fr": "Sur les Étapes", - "ja": "ステップ", - "sv": "Stegmöte" - }, - "T": { - "en": "Transgender", - "es": "Transgénero", - "fr": "Transgenre", - "ja": "トランスジェンダー", - "sv": "Transpersoner" - }, - "TC": { - "en": "Location Temporarily Closed", - "es": "Ubicación temporalmente cerrada", - "fr": "Emplacement temporairement fermé", - "ja": "一時的休止中", - "sv": "Tillfälligt Stängt" - }, - "TR": { - "en": "Tradition Study", - "es": "Estudio de tradicion", - "fr": "Étude des Traditions", - "ja": "伝統", - "sv": "Traditionsmöte" - }, - "W": { - "en": "Women", - "es": "Mujer", - "fr": "Femmes", - "ja": "女性", - "sv": "Kvinnomöte" - }, - "X": { - "en": "Wheelchair Access", - "es": "Acceso en silla de ruedas", - "fr": "Accès aux fauteuils roulants", - "ja": "車いすアクセス", - "sv": "Handikappanpassat" - }, - "XB": { - "en": "Wheelchair-Accessible Bathroom", - "es": "Baño accesible para sillas de ruedas", - "fr": "Toilettes accessibles aux fauteuils roulants", - "ja": "車いす使用者用トイレ", - "sv": "Handikappanpassad WC" - }, - "XT": { - "en": "Cross Talk Permitted", - "es": "Se permite opinar", - "fr": "Conversation croisée permise", - "ja": "クロストーク可能", - "sv": "Kommentarer Tilltåtna" - }, - "Y": { - "en": "Young People", - "es": "Gente joven", - "fr": "Jeunes", - "ja": "ヤング", - "sv": "Young People" - } + "11": { + "en": "11th Step Meditation", + "es": "Meditación del Paso 11", + "fr": "Méditation sur la 11e Étape", + "ja": "ステップ11 黙想", + "sv": "11th Stegs Meditation" + }, + "12x12": { + "en": "12 Steps & 12 Traditions", + "es": "12 Pasos y 12 Tradiciones", + "fr": "12 Étapes et 12 Traditions", + "ja": "12のステップと12の伝統", + "sv": "12 Steg & 12 Traditioner" + }, + "A": { + "en": "Secular", + "es": "Secular", + "fr": "Séculier", + "ja": "無宗教", + "sv": "Sekulärt" + }, + "ABSI": { + "en": "As Bill Sees It", + "es": "Como lo ve Bill", + "fr": "Réflexions de Bill", + "ja": "ビルはこう思う", + "sv": "Som Bill Ser Det" + }, + "AL": { + "en": "Concurrent with Alateen", + "es": "Concurrente con Alateen", + "fr": "En même temps qu’Alateen", + "ja": "アラティーンと同時進行", + "sv": "Tillsammans med Alateen" + }, + "AL-AN": { + "en": "Concurrent with Al-Anon", + "es": "Concurrente con Al-Anon", + "fr": "En même temps qu’Al-Anon", + "ja": "アラノンと同時進行", + "sv": "Tillsammans med Al-Anon" + }, + "ASL": { + "en": "American Sign Language", + "es": "Lenguaje por señas", + "fr": "Langage des Signes", + "ja": "アメリカ手話", + "sv": "Amerikanskt teckenspråk" + }, + "B": { + "en": "Big Book", + "es": "Libro Grande", + "fr": "Gros Livre", + "ja": "ビッグブック", + "sv": "Stora Boken" + }, + "BA": { + "en": "Babysitting Available", + "es": "Guardería disponible", + "fr": "Garderie d’enfants disponible", + "ja": "ベビーシッターあり", + "sv": "Barnvakt Finns" + }, + "BE": { + "en": "Newcomer", + "es": "Principiantes", + "fr": "Nouveau/nouvelle", + "ja": "ビギナーズ", + "sv": "Nykomling" + }, + "BI": { + "en": "Bisexual", + "es": "Bisexual", + "fr": "Bisexuel", + "ja": "バイセクシャル", + "sv": "Bisexuellt" + }, + "BRK": { + "en": "Breakfast", + "es": "Desayuno", + "fr": "Petit déjeuner", + "ja": "朝食", + "sv": "Frukost" + }, + "C": { + "en": "Closed", + "es": "Cerrada", + "fr": "Fermé", + "ja": "クローズド", + "sv": "Slutet" + }, + "CAN": { + "en": "Candlelight", + "es": "Luz de una vela", + "fr": "À la chandelle", + "ja": "キャンドル", + "sv": "Tända Ljus" + }, + "CF": { + "en": "Child-Friendly", + "es": "Niño amigable", + "fr": "Enfants acceptés", + "ja": "お子さま歓迎", + "sv": "Barnvänligt" + }, + "D": { + "en": "Discussion", + "es": "Discusión", + "fr": "Discussion", + "ja": "ディスカッション", + "sv": "Diskussion" + }, + "DB": { + "en": "Digital Basket", + "es": "Canasta digital", + "fr": "Panier numérique", + "ja": "電子献金", + "sv": "Digital Korg" + }, + "DD": { + "en": "Dual Diagnosis", + "es": "Diagnóstico dual", + "fr": "Double diagnostic", + "ja": "重複診断", + "sv": "Dubbel Diagnos" + }, + "DR": { + "en": "Daily Reflections", + "es": "Reflexiones Diarias", + "fr": "Réflexions quotidiennes", + "ja": "今日を新たに", + "sv": "Dagliga Reflektioner" + }, + "EN": { + "en": "English", + "es": "Inglés", + "fr": "Anglais", + "ja": "英語", + "sv": "Engelska" + }, + "FF": { + "en": "Fragrance Free", + "es": "Sin fragancia", + "fr": "Sans parfum", + "ja": "香水なし", + "sv": "Parfym Fritt" + }, + "FR": { + "en": "French", + "es": "Francés", + "fr": "Français", + "ja": "フランス語", + "sv": "Franska" + }, + "G": { + "en": "Gay", + "es": "Gay", + "fr": "Gai", + "ja": "ゲイ", + "sv": "Gay" + }, + "GR": { + "en": "Grapevine", + "es": "La Viña", + "fr": "Grapevine", + "ja": "グレープバイン", + "sv": "Grapevine" + }, + "H": { + "en": "Birthday", + "es": "Cumpleaños", + "fr": "Anniversaire", + "ja": "バースデー", + "sv": "Födelsedag" + }, + "HE": { + "en": "Hebrew", + "es": "Hebreo", + "fr": "Hébreu", + "ja": "ヘブライ語", + "sv": "Hebreiska" + }, + "ITA": { + "en": "Italian", + "es": "Italiano", + "fr": "Italien", + "ja": "イタリア語", + "sv": "Italienska" + }, + "JA": { + "en": "Japanese", + "es": "Japonés", + "fr": "Japonais", + "ja": "日本語", + "sv": "Japanska" + }, + "KOR": { + "en": "Korean", + "es": "Coreano", + "fr": "Coréen", + "ja": "韓国語", + "sv": "Koreanska" + }, + "L": { + "en": "Lesbian", + "es": "Lesbianas", + "fr": "Lesbienne", + "ja": "レズビアン", + "sv": "Lesbiskt" + }, + "LGBTQ": { + "en": "LGBTQ", + "es": "LGBTQ", + "fr": "LGBTQ", + "ja": "LGBTQ", + "sv": "LGBTQ" + }, + "LIT": { + "en": "Literature", + "es": "Literatura", + "fr": "Publications", + "ja": "書籍", + "sv": "Litteratur" + }, + "LS": { + "en": "Living Sober", + "es": "Viviendo Sobrio", + "fr": "Vivre… Sans alcool", + "ja": "リビングソーバー", + "sv": "Leva Nyktert" + }, + "M": { + "en": "Men", + "es": "Hombres", + "fr": "Hommes", + "ja": "男性", + "sv": "Mansmöte" + }, + "MED": { + "en": "Meditation", + "es": "Meditación", + "fr": "Méditation", + "ja": "黙想", + "sv": "Meditationsmöte" + }, + "N": { + "en": "Native American", + "es": "Nativo Americano", + "fr": "Autochtone", + "ja": "ネイティブアメリカン", + "sv": "Ur-amerikanskt" + }, + "NDG": { + "en": "Indigenous", + "es": "Indígena", + "fr": "Indigène", + "ja": "先住民", + "sv": "Urfolkligt" + }, + "O": { + "en": "Open", + "es": "Abierta", + "fr": "Ouvert(e)", + "ja": "オープン", + "sv": "Öppet" + }, + "OUT": { + "en": "Outdoor", + "es": "Al aire libre", + "fr": "En plein air", + "ja": "アウトドア", + "sv": "Utomhus" + }, + "P": { + "en": "Professionals", + "es": "Profesionales", + "fr": "Professionnels", + "ja": "職業人", + "sv": "Professionella" + }, + "POC": { + "en": "People of Color", + "es": "Gente de color", + "fr": "Gens de couleur", + "ja": "有色人種", + "sv": "Färgade" + }, + "POL": { + "en": "Polish", + "es": "Polaco", + "fr": "Polonais", + "ja": "ポーランド語", + "sv": "Polska" + }, + "POR": { + "en": "Portuguese", + "es": "Portugués", + "fr": "Portugais", + "ja": "ポルトガル語", + "sv": "Portugisiska" + }, + "PUN": { + "en": "Punjabi", + "es": "Punjabi", + "fr": "Pendjabi", + "ja": "パンジャブ語", + "sv": "Punjabi" + }, + "RUS": { + "en": "Russian", + "es": "Ruso", + "fr": "Russe", + "ja": "ロシア語", + "sv": "Ryska" + }, + "S": { + "en": "Spanish", + "es": "Español", + "fr": "Espagnol", + "ja": "スペイン語", + "sv": "Spanska" + }, + "SEN": { + "en": "Seniors", + "es": "Personas mayores", + "fr": "Séniors", + "ja": "シニア", + "sv": "Seniorer" + }, + "SM": { + "en": "Smoking Permitted", + "es": "Se permite fumar", + "fr": "Permis de fumer", + "ja": "喫煙可", + "sv": "Rökning Tillåten" + }, + "SP": { + "en": "Speaker", + "es": "Orador", + "fr": "Conférencier", + "ja": "スピーカー", + "sv": "Talare" + }, + "ST": { + "en": "Step Study", + "es": "Estudio de pasos", + "fr": "Sur les Étapes", + "ja": "ステップ", + "sv": "Stegmöte" + }, + "T": { + "en": "Transgender", + "es": "Transgénero", + "fr": "Transgenre", + "ja": "トランスジェンダー", + "sv": "Transpersoner" + }, + "TC": { + "en": "Location Temporarily Closed", + "es": "Ubicación temporalmente cerrada", + "fr": "Emplacement temporairement fermé", + "ja": "一時的休止中", + "sv": "Tillfälligt Stängt" + }, + "TR": { + "en": "Tradition Study", + "es": "Estudio de tradicion", + "fr": "Étude des Traditions", + "ja": "伝統", + "sv": "Traditionsmöte" + }, + "W": { + "en": "Women", + "es": "Mujer", + "fr": "Femmes", + "ja": "女性", + "sv": "Kvinnomöte" + }, + "X": { + "en": "Wheelchair Access", + "es": "Acceso en silla de ruedas", + "fr": "Accès aux fauteuils roulants", + "ja": "車いすアクセス", + "sv": "Handikappanpassat" + }, + "XB": { + "en": "Wheelchair-Accessible Bathroom", + "es": "Baño accesible para sillas de ruedas", + "fr": "Toilettes accessibles aux fauteuils roulants", + "ja": "車いす使用者用トイレ", + "sv": "Handikappanpassad WC" + }, + "XT": { + "en": "Cross Talk Permitted", + "es": "Se permite opinar", + "fr": "Conversation croisée permise", + "ja": "クロストーク可能", + "sv": "Kommentarer Tilltåtna" + }, + "Y": { + "en": "Young People", + "es": "Gente joven", + "fr": "Jeunes", + "ja": "ヤング", + "sv": "Young People" } } diff --git a/src/index.ts b/src/index.ts index 9c4a395..a0fd95b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,410 +1,23 @@ -export const types = { - types: { - "11": { - en: "11th Step Meditation", - es: "Meditación del Paso 11", - fr: "Méditation sur la 11e Étape", - ja: "ステップ11 黙想", - sv: "11th Stegs Meditation", - }, - "12x12": { - en: "12 Steps & 12 Traditions", - es: "12 Pasos y 12 Tradiciones", - fr: "12 Étapes et 12 Traditions", - ja: "12のステップと12の伝統", - sv: "12 Steg & 12 Traditioner", - }, - A: { - en: "Secular", - es: "Secular", - fr: "Séculier", - ja: "無宗教", - sv: "Sekulärt", - }, - ABSI: { - en: "As Bill Sees It", - es: "Como lo ve Bill", - fr: "Réflexions de Bill", - ja: "ビルはこう思う", - sv: "Som Bill Ser Det", - }, - AL: { - en: "Concurrent with Alateen", - es: "Concurrente con Alateen", - fr: "En même temps qu’Alateen", - ja: "アラティーンと同時進行", - sv: "Tillsammans med Alateen", - }, - "AL-AN": { - en: "Concurrent with Al-Anon", - es: "Concurrente con Al-Anon", - fr: "En même temps qu’Al-Anon", - ja: "アラノンと同時進行", - sv: "Tillsammans med Al-Anon", - }, - ASL: { - en: "American Sign Language", - es: "Lenguaje por señas", - fr: "Langage des Signes", - ja: "アメリカ手話", - sv: "Amerikanskt teckenspråk", - }, - B: { - en: "Big Book", - es: "Libro Grande", - fr: "Gros Livre", - ja: "ビッグブック", - sv: "Stora Boken", - }, - BA: { - en: "Babysitting Available", - es: "Guardería disponible", - fr: "Garderie d’enfants disponible", - ja: "ベビーシッターあり", - sv: "Barnvakt Finns", - }, - BE: { - en: "Newcomer", - es: "Principiantes", - fr: "Nouveau/nouvelle", - ja: "ビギナーズ", - sv: "Nykomling", - }, - BI: { - en: "Bisexual", - es: "Bisexual", - fr: "Bisexuel", - ja: "バイセクシャル", - sv: "Bisexuellt", - }, - BRK: { - en: "Breakfast", - es: "Desayuno", - fr: "Petit déjeuner", - ja: "朝食", - sv: "Frukost", - }, - C: { - en: "Closed", - es: "Cerrada", - fr: "Fermé", - ja: "クローズド", - sv: "Slutet", - }, - CAN: { - en: "Candlelight", - es: "Luz de una vela", - fr: "À la chandelle", - ja: "キャンドル", - sv: "Tända Ljus", - }, - CF: { - en: "Child-Friendly", - es: "Niño amigable", - fr: "Enfants acceptés", - ja: "お子さま歓迎", - sv: "Barnvänligt", - }, - D: { - en: "Discussion", - es: "Discusión", - fr: "Discussion", - ja: "ディスカッション", - sv: "Diskussion", - }, - DB: { - en: "Digital Basket", - es: "Canasta digital", - fr: "Panier numérique", - ja: "電子献金", - sv: "Digital Korg", - }, - DD: { - en: "Dual Diagnosis", - es: "Diagnóstico dual", - fr: "Double diagnostic", - ja: "重複診断", - sv: "Dubbel Diagnos", - }, - DR: { - en: "Daily Reflections", - es: "Reflexiones Diarias", - fr: "Réflexions quotidiennes", - ja: "今日を新たに", - sv: "Dagliga Reflektioner", - }, - EN: { - en: "English", - es: "Inglés", - fr: "Anglais", - ja: "英語", - sv: "Engelska", - }, - FF: { - en: "Fragrance Free", - es: "Sin fragancia", - fr: "Sans parfum", - ja: "香水なし", - sv: "Parfym Fritt", - }, - FR: { - en: "French", - es: "Francés", - fr: "Français", - ja: "フランス語", - sv: "Franska", - }, - G: { - en: "Gay", - es: "Gay", - fr: "Gai", - ja: "ゲイ", - sv: "Gay", - }, - GR: { - en: "Grapevine", - es: "La Viña", - fr: "Grapevine", - ja: "グレープバイン", - sv: "Grapevine", - }, - H: { - en: "Birthday", - es: "Cumpleaños", - fr: "Anniversaire", - ja: "バースデー", - sv: "Födelsedag", - }, - HE: { - en: "Hebrew", - es: "Hebreo", - fr: "Hébreu", - ja: "ヘブライ語", - sv: "Hebreiska", - }, - ITA: { - en: "Italian", - es: "Italiano", - fr: "Italien", - ja: "イタリア語", - sv: "Italienska", - }, - JA: { - en: "Japanese", - es: "Japonés", - fr: "Japonais", - ja: "日本語", - sv: "Japanska", - }, - KOR: { - en: "Korean", - es: "Coreano", - fr: "Coréen", - ja: "韓国語", - sv: "Koreanska", - }, - L: { - en: "Lesbian", - es: "Lesbianas", - fr: "Lesbienne", - ja: "レズビアン", - sv: "Lesbiskt", - }, - LGBTQ: { - en: "LGBTQ", - es: "LGBTQ", - fr: "LGBTQ", - ja: "LGBTQ", - sv: "LGBTQ", - }, - LIT: { - en: "Literature", - es: "Literatura", - fr: "Publications", - ja: "書籍", - sv: "Litteratur", - }, - LS: { - en: "Living Sober", - es: "Viviendo Sobrio", - fr: "Vivre… Sans alcool", - ja: "リビングソーバー", - sv: "Leva Nyktert", - }, - M: { - en: "Men", - es: "Hombres", - fr: "Hommes", - ja: "男性", - sv: "Mansmöte", - }, - MED: { - en: "Meditation", - es: "Meditación", - fr: "Méditation", - ja: "黙想", - sv: "Meditationsmöte", - }, - N: { - en: "Native American", - es: "Nativo Americano", - fr: "Autochtone", - ja: "ネイティブアメリカン", - sv: "Ur-amerikanskt", - }, - NDG: { - en: "Indigenous", - es: "Indígena", - fr: "Indigène", - ja: "先住民", - sv: "Urfolkligt", - }, - O: { - en: "Open", - es: "Abierta", - fr: "Ouvert(e)", - ja: "オープン", - sv: "Öppet", - }, - OUT: { - en: "Outdoor", - es: "Al aire libre", - fr: "En plein air", - ja: "アウトドア", - sv: "Utomhus", - }, - P: { - en: "Professionals", - es: "Profesionales", - fr: "Professionnels", - ja: "職業人", - sv: "Professionella", - }, - POC: { - en: "People of Color", - es: "Gente de color", - fr: "Gens de couleur", - ja: "有色人種", - sv: "Färgade", - }, - POL: { - en: "Polish", - es: "Polaco", - fr: "Polonais", - ja: "ポーランド語", - sv: "Polska", - }, - POR: { - en: "Portuguese", - es: "Portugués", - fr: "Portugais", - ja: "ポルトガル語", - sv: "Portugisiska", - }, - PUN: { - en: "Punjabi", - es: "Punjabi", - fr: "Pendjabi", - ja: "パンジャブ語", - sv: "Punjabi", - }, - RUS: { - en: "Russian", - es: "Ruso", - fr: "Russe", - ja: "ロシア語", - sv: "Ryska", - }, - S: { - en: "Spanish", - es: "Español", - fr: "Espagnol", - ja: "スペイン語", - sv: "Spanska", - }, - SEN: { - en: "Seniors", - es: "Personas mayores", - fr: "Séniors", - ja: "シニア", - sv: "Seniorer", - }, - SM: { - en: "Smoking Permitted", - es: "Se permite fumar", - fr: "Permis de fumer", - ja: "喫煙可", - sv: "Rökning Tillåten", - }, - SP: { - en: "Speaker", - es: "Orador", - fr: "Conférencier", - ja: "スピーカー", - sv: "Talare", - }, - ST: { - en: "Step Study", - es: "Estudio de pasos", - fr: "Sur les Étapes", - ja: "ステップ", - sv: "Stegmöte", - }, - T: { - en: "Transgender", - es: "Transgénero", - fr: "Transgenre", - ja: "トランスジェンダー", - sv: "Transpersoner", - }, - TC: { - en: "Location Temporarily Closed", - es: "Ubicación temporalmente cerrada", - fr: "Emplacement temporairement fermé", - ja: "一時的休止中", - sv: "Tillfälligt Stängt", - }, - TR: { - en: "Tradition Study", - es: "Estudio de tradicion", - fr: "Étude des Traditions", - ja: "伝統", - sv: "Traditionsmöte", - }, - W: { - en: "Women", - es: "Mujer", - fr: "Femmes", - ja: "女性", - sv: "Kvinnomöte", - }, - X: { - en: "Wheelchair Access", - es: "Acceso en silla de ruedas", - fr: "Accès aux fauteuils roulants", - ja: "車いすアクセス", - sv: "Handikappanpassat", - }, - XB: { - en: "Wheelchair-Accessible Bathroom", - es: "Baño accesible para sillas de ruedas", - fr: "Toilettes accessibles aux fauteuils roulants", - ja: "車いす使用者用トイレ", - sv: "Handikappanpassad WC", - }, - XT: { - en: "Cross Talk Permitted", - es: "Se permite opinar", - fr: "Conversation croisée permise", - ja: "クロストーク可能", - sv: "Kommentarer Tilltåtna", - }, - Y: { - en: "Young People", - es: "Gente joven", - fr: "Jeunes", - ja: "ヤング", - sv: "Young People", - }, - }, -}; +import { languages } from "./languages"; +import { types } from "./types"; + +export type Language = (typeof languages)[number]; +export type MeetingType = keyof typeof types; + +export function isMeetingType(type: string): type is MeetingType { + return type in types; +} + +export function isSupportedLanguage(language: string): language is Language { + return language in languages; +} + +export function getTypesForLanguage(language: string) { + const typesForLanguage: { [id: string]: string } = {}; + for (const type in types) { + if (isMeetingType(type) && isSupportedLanguage(language)) { + typesForLanguage[type] = types[type][language]; + } + } + return typesForLanguage; +} diff --git a/src/languages.ts b/src/languages.ts new file mode 100644 index 0000000..4dfe3e7 --- /dev/null +++ b/src/languages.ts @@ -0,0 +1 @@ +export const languages = ["en", "es", "fr", "ja", "sv"] as const; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..8d30a44 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,408 @@ +export const types = { + "11": { + en: "11th Step Meditation", + es: "Meditación del Paso 11", + fr: "Méditation sur la 11e Étape", + ja: "ステップ11 黙想", + sv: "11th Stegs Meditation", + }, + "12x12": { + en: "12 Steps & 12 Traditions", + es: "12 Pasos y 12 Tradiciones", + fr: "12 Étapes et 12 Traditions", + ja: "12のステップと12の伝統", + sv: "12 Steg & 12 Traditioner", + }, + A: { + en: "Secular", + es: "Secular", + fr: "Séculier", + ja: "無宗教", + sv: "Sekulärt", + }, + ABSI: { + en: "As Bill Sees It", + es: "Como lo ve Bill", + fr: "Réflexions de Bill", + ja: "ビルはこう思う", + sv: "Som Bill Ser Det", + }, + AL: { + en: "Concurrent with Alateen", + es: "Concurrente con Alateen", + fr: "En même temps qu’Alateen", + ja: "アラティーンと同時進行", + sv: "Tillsammans med Alateen", + }, + "AL-AN": { + en: "Concurrent with Al-Anon", + es: "Concurrente con Al-Anon", + fr: "En même temps qu’Al-Anon", + ja: "アラノンと同時進行", + sv: "Tillsammans med Al-Anon", + }, + ASL: { + en: "American Sign Language", + es: "Lenguaje por señas", + fr: "Langage des Signes", + ja: "アメリカ手話", + sv: "Amerikanskt teckenspråk", + }, + B: { + en: "Big Book", + es: "Libro Grande", + fr: "Gros Livre", + ja: "ビッグブック", + sv: "Stora Boken", + }, + BA: { + en: "Babysitting Available", + es: "Guardería disponible", + fr: "Garderie d’enfants disponible", + ja: "ベビーシッターあり", + sv: "Barnvakt Finns", + }, + BE: { + en: "Newcomer", + es: "Principiantes", + fr: "Nouveau/nouvelle", + ja: "ビギナーズ", + sv: "Nykomling", + }, + BI: { + en: "Bisexual", + es: "Bisexual", + fr: "Bisexuel", + ja: "バイセクシャル", + sv: "Bisexuellt", + }, + BRK: { + en: "Breakfast", + es: "Desayuno", + fr: "Petit déjeuner", + ja: "朝食", + sv: "Frukost", + }, + C: { + en: "Closed", + es: "Cerrada", + fr: "Fermé", + ja: "クローズド", + sv: "Slutet", + }, + CAN: { + en: "Candlelight", + es: "Luz de una vela", + fr: "À la chandelle", + ja: "キャンドル", + sv: "Tända Ljus", + }, + CF: { + en: "Child-Friendly", + es: "Niño amigable", + fr: "Enfants acceptés", + ja: "お子さま歓迎", + sv: "Barnvänligt", + }, + D: { + en: "Discussion", + es: "Discusión", + fr: "Discussion", + ja: "ディスカッション", + sv: "Diskussion", + }, + DB: { + en: "Digital Basket", + es: "Canasta digital", + fr: "Panier numérique", + ja: "電子献金", + sv: "Digital Korg", + }, + DD: { + en: "Dual Diagnosis", + es: "Diagnóstico dual", + fr: "Double diagnostic", + ja: "重複診断", + sv: "Dubbel Diagnos", + }, + DR: { + en: "Daily Reflections", + es: "Reflexiones Diarias", + fr: "Réflexions quotidiennes", + ja: "今日を新たに", + sv: "Dagliga Reflektioner", + }, + EN: { + en: "English", + es: "Inglés", + fr: "Anglais", + ja: "英語", + sv: "Engelska", + }, + FF: { + en: "Fragrance Free", + es: "Sin fragancia", + fr: "Sans parfum", + ja: "香水なし", + sv: "Parfym Fritt", + }, + FR: { + en: "French", + es: "Francés", + fr: "Français", + ja: "フランス語", + sv: "Franska", + }, + G: { + en: "Gay", + es: "Gay", + fr: "Gai", + ja: "ゲイ", + sv: "Gay", + }, + GR: { + en: "Grapevine", + es: "La Viña", + fr: "Grapevine", + ja: "グレープバイン", + sv: "Grapevine", + }, + H: { + en: "Birthday", + es: "Cumpleaños", + fr: "Anniversaire", + ja: "バースデー", + sv: "Födelsedag", + }, + HE: { + en: "Hebrew", + es: "Hebreo", + fr: "Hébreu", + ja: "ヘブライ語", + sv: "Hebreiska", + }, + ITA: { + en: "Italian", + es: "Italiano", + fr: "Italien", + ja: "イタリア語", + sv: "Italienska", + }, + JA: { + en: "Japanese", + es: "Japonés", + fr: "Japonais", + ja: "日本語", + sv: "Japanska", + }, + KOR: { + en: "Korean", + es: "Coreano", + fr: "Coréen", + ja: "韓国語", + sv: "Koreanska", + }, + L: { + en: "Lesbian", + es: "Lesbianas", + fr: "Lesbienne", + ja: "レズビアン", + sv: "Lesbiskt", + }, + LGBTQ: { + en: "LGBTQ", + es: "LGBTQ", + fr: "LGBTQ", + ja: "LGBTQ", + sv: "LGBTQ", + }, + LIT: { + en: "Literature", + es: "Literatura", + fr: "Publications", + ja: "書籍", + sv: "Litteratur", + }, + LS: { + en: "Living Sober", + es: "Viviendo Sobrio", + fr: "Vivre… Sans alcool", + ja: "リビングソーバー", + sv: "Leva Nyktert", + }, + M: { + en: "Men", + es: "Hombres", + fr: "Hommes", + ja: "男性", + sv: "Mansmöte", + }, + MED: { + en: "Meditation", + es: "Meditación", + fr: "Méditation", + ja: "黙想", + sv: "Meditationsmöte", + }, + N: { + en: "Native American", + es: "Nativo Americano", + fr: "Autochtone", + ja: "ネイティブアメリカン", + sv: "Ur-amerikanskt", + }, + NDG: { + en: "Indigenous", + es: "Indígena", + fr: "Indigène", + ja: "先住民", + sv: "Urfolkligt", + }, + O: { + en: "Open", + es: "Abierta", + fr: "Ouvert(e)", + ja: "オープン", + sv: "Öppet", + }, + OUT: { + en: "Outdoor", + es: "Al aire libre", + fr: "En plein air", + ja: "アウトドア", + sv: "Utomhus", + }, + P: { + en: "Professionals", + es: "Profesionales", + fr: "Professionnels", + ja: "職業人", + sv: "Professionella", + }, + POC: { + en: "People of Color", + es: "Gente de color", + fr: "Gens de couleur", + ja: "有色人種", + sv: "Färgade", + }, + POL: { + en: "Polish", + es: "Polaco", + fr: "Polonais", + ja: "ポーランド語", + sv: "Polska", + }, + POR: { + en: "Portuguese", + es: "Portugués", + fr: "Portugais", + ja: "ポルトガル語", + sv: "Portugisiska", + }, + PUN: { + en: "Punjabi", + es: "Punjabi", + fr: "Pendjabi", + ja: "パンジャブ語", + sv: "Punjabi", + }, + RUS: { + en: "Russian", + es: "Ruso", + fr: "Russe", + ja: "ロシア語", + sv: "Ryska", + }, + S: { + en: "Spanish", + es: "Español", + fr: "Espagnol", + ja: "スペイン語", + sv: "Spanska", + }, + SEN: { + en: "Seniors", + es: "Personas mayores", + fr: "Séniors", + ja: "シニア", + sv: "Seniorer", + }, + SM: { + en: "Smoking Permitted", + es: "Se permite fumar", + fr: "Permis de fumer", + ja: "喫煙可", + sv: "Rökning Tillåten", + }, + SP: { + en: "Speaker", + es: "Orador", + fr: "Conférencier", + ja: "スピーカー", + sv: "Talare", + }, + ST: { + en: "Step Study", + es: "Estudio de pasos", + fr: "Sur les Étapes", + ja: "ステップ", + sv: "Stegmöte", + }, + T: { + en: "Transgender", + es: "Transgénero", + fr: "Transgenre", + ja: "トランスジェンダー", + sv: "Transpersoner", + }, + TC: { + en: "Location Temporarily Closed", + es: "Ubicación temporalmente cerrada", + fr: "Emplacement temporairement fermé", + ja: "一時的休止中", + sv: "Tillfälligt Stängt", + }, + TR: { + en: "Tradition Study", + es: "Estudio de tradicion", + fr: "Étude des Traditions", + ja: "伝統", + sv: "Traditionsmöte", + }, + W: { + en: "Women", + es: "Mujer", + fr: "Femmes", + ja: "女性", + sv: "Kvinnomöte", + }, + X: { + en: "Wheelchair Access", + es: "Acceso en silla de ruedas", + fr: "Accès aux fauteuils roulants", + ja: "車いすアクセス", + sv: "Handikappanpassat", + }, + XB: { + en: "Wheelchair-Accessible Bathroom", + es: "Baño accesible para sillas de ruedas", + fr: "Toilettes accessibles aux fauteuils roulants", + ja: "車いす使用者用トイレ", + sv: "Handikappanpassad WC", + }, + XT: { + en: "Cross Talk Permitted", + es: "Se permite opinar", + fr: "Conversation croisée permise", + ja: "クロストーク可能", + sv: "Kommentarer Tilltåtna", + }, + Y: { + en: "Young People", + es: "Gente joven", + fr: "Jeunes", + ja: "ヤング", + sv: "Young People", + }, +}; From 5de2957ab976c8dbd1f29c7b950a87d20405e7af Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sun, 11 Jun 2023 08:18:22 -0700 Subject: [PATCH 18/24] type tweak --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index a0fd95b..f5dd70e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,7 @@ export function isSupportedLanguage(language: string): language is Language { } export function getTypesForLanguage(language: string) { - const typesForLanguage: { [id: string]: string } = {}; + const typesForLanguage: Record = {} as any; for (const type in types) { if (isMeetingType(type) && isSupportedLanguage(language)) { typesForLanguage[type] = types[type][language]; From 896ddd69ae995cf115b886f469374c2881978a1a Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Sun, 11 Jun 2023 08:25:29 -0700 Subject: [PATCH 19/24] 1.0.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c682e8..338dd0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "spec", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "spec", - "version": "1.0.0", + "version": "1.0.1", "license": "ISC", "devDependencies": { "prettier": "^2.8.8", diff --git a/package.json b/package.json index 13037b4..e262bc4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@code4recovery/spec", - "version": "1.0.0", + "version": "1.0.1", "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", "main": "lib/index.js", "types": "lib/index.d.ts", From 03e328859cf221541480d571228ede446ac8be96 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Wed, 14 Jun 2023 07:27:35 -0700 Subject: [PATCH 20/24] add tests --- .gitignore | 3 +- jestconfig.json | 7 + package-lock.json | 4835 +++++++++++++++++++++++++++++++++-- package.json | 8 +- src/__tests__/index.spec.ts | 27 + src/index.ts | 2 +- 6 files changed, 4665 insertions(+), 217 deletions(-) create mode 100644 jestconfig.json create mode 100644 src/__tests__/index.spec.ts diff --git a/.gitignore b/.gitignore index 69a671c..65dae4a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -/lib \ No newline at end of file +/lib +/coverage \ No newline at end of file diff --git a/jestconfig.json b/jestconfig.json new file mode 100644 index 0000000..20c25c0 --- /dev/null +++ b/jestconfig.json @@ -0,0 +1,7 @@ +{ + "transform": { + "^.+\\.(t|j)sx?$": "ts-jest" + }, + "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", + "moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"] +} diff --git a/package-lock.json b/package-lock.json index 338dd0f..4c36ec5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,36 @@ { - "name": "spec", + "name": "@code4recovery/spec", "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "spec", + "name": "@code4recovery/spec", "version": "1.0.1", - "license": "ISC", + "license": "MIT", "devDependencies": { + "@types/jest": "^29.5.2", + "jest": "^29.5.0", "prettier": "^2.8.8", + "ts-jest": "^29.1.0", "tslint": "^6.1.3", "tslint-config-prettier": "^1.18.0", "typescript": "^5.1.3" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.22.5", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.22.5.tgz", @@ -27,336 +43,4426 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { + "node_modules/@babel/compat-data": { "version": "7.22.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/compat-data/-/compat-data-7.22.5.tgz", + "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { + "node_modules/@babel/core": { "version": "7.22.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.22.5.tgz", + "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", + "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=6.9.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/helpers/-/helpers-7.22.5.tgz", + "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@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/parser": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", "dev": true, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "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" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "*" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.22.5.tgz", + "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/core": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/environment": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "dependencies": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/types": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/fake-timers/-/fake-timers-10.1.0.tgz", + "integrity": "sha512-w1qd368vtrwttm1PRJWPW1QHlbmHrVDGs1eBH/jZvRPUFS4MNXV9Q33EQdjOdeAxZ7O8+3wM7zxztm2nfUSyKw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@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/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/jest/-/jest-29.5.2.tgz", + "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/node": { + "version": "20.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/node/-/node-20.3.1.tgz", + "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/anymatch": { + "version": "3.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/babel-jest": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/braces": { + "version": "3.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/browserslist": { + "version": "4.21.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.21.8.tgz", + "integrity": "sha512-j+7xYe+v+q2Id9qbBeCI8WX5NmZSRe8es1+0xntD/+gaWXznP8tFEkv5IgSaHf5dS1YwVMbX/4W6m937mj+wQw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001502", + "electron-to-chromium": "^1.4.428", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001503", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/caniuse-lite/-/caniuse-lite-1.0.30001503.tgz", + "integrity": "sha512-Sf9NiF+wZxPfzv8Z3iS0rXM1Do+iOy2Lxvib38glFX+08TCYYYGR5fRJXk4d77C4AYwhUjgYgMsMudbh2TqCKw==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/char-regex": { + "version": "1.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/co": { + "version": "4.6.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/color-name": { + "version": "1.1.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/debug": { + "version": "4.3.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/dedent": { + "version": "0.7.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.430", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/electron-to-chromium/-/electron-to-chromium-1.4.430.tgz", + "integrity": "sha512-FytjTbGwz///F+ToZ5XSeXbbSaXalsVRXsz2mHityI5gfxft7ieW3HqFLkU5V1aIrY42aflICqbmFoDxW10etg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/execa": { + "version": "5.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/find-up": { + "version": "4.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-cli": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-config": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-diff": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-docblock": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-environment-node": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-message-util": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-mock": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runner": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runtime": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-validate": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-watcher": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jest-worker": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/jsesc": { + "version": "2.5.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/json5": { + "version": "2.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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://packages.atlassian.com/api/npm/npm-remote/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/mimic-fn": { + "version": "2.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/ms": { + "version": "2.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/once": { + "version": "1.4.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/shebang-regex": { + "version": "3.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { - "node": ">= 0.4.0" + "node": ">=8" } }, - "node_modules/has-flag": { + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { "version": "3.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { - "has": "^1.0.3" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "escape-string-regexp": "^2.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=10" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=10" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "wrappy": "1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "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" + "engines": { + "node": ">=6" } }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=8" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-5.5.0.tgz", @@ -378,6 +4484,123 @@ "node": ">= 0.4" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/ts-jest": { + "version": "29.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/ts-jest/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-1.14.1.tgz", @@ -439,6 +4662,24 @@ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/typescript": { "version": "5.1.3", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-5.1.3.tgz", @@ -452,11 +4693,179 @@ "node": ">=14.17" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/y18n": { + "version": "5.0.8", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/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/yargs-parser": { + "version": "21.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index e262bc4..ea46c60 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,13 @@ "lib/**/*" ], "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "jest --config jestconfig.json", + "test-coverage": "jest --config jestconfig.json --coverage", "build": "tsc", "format": "prettier --write \"src/**/*.ts\"", "lint": "tslint -p tsconfig.json", "prepare": "npm run build", - "prepublishOnly": "npm run lint", + "prepublishOnly": "npm test && npm run lint", "preversion": "npm run lint", "version": "npm run format && git add -A src", "postversion": "git push && git push --tags" @@ -26,7 +27,10 @@ "author": "Code for Recovery", "license": "MIT", "devDependencies": { + "@types/jest": "^29.5.2", + "jest": "^29.5.0", "prettier": "^2.8.8", + "ts-jest": "^29.1.0", "tslint": "^6.1.3", "tslint-config-prettier": "^1.18.0", "typescript": "^5.1.3" diff --git a/src/__tests__/index.spec.ts b/src/__tests__/index.spec.ts new file mode 100644 index 0000000..4337cd4 --- /dev/null +++ b/src/__tests__/index.spec.ts @@ -0,0 +1,27 @@ +import { + isMeetingType, + isSupportedLanguage, + getTypesForLanguage, +} from "../index"; + +describe("isMeetingType", () => { + it("should return true for supported meeting types", () => { + expect(isMeetingType("T")).toBe(true); + }); + + it("should return false for unsupported meeting types", () => { + expect(isMeetingType("FOO")).toBe(false); + }); + + it("should return true for supported language", () => { + expect(isSupportedLanguage("en")).toBe(true); + }); + + it("should return false for unsupported language", () => { + expect(isSupportedLanguage("FOO")).toBe(false); + }); + + it("should return supported languages", () => { + expect(getTypesForLanguage("en")).toBeTruthy(); + }); +}); diff --git a/src/index.ts b/src/index.ts index f5dd70e..5844af7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,7 @@ export function isMeetingType(type: string): type is MeetingType { } export function isSupportedLanguage(language: string): language is Language { - return language in languages; + return languages.includes(language as Language); } export function getTypesForLanguage(language: string) { From c10031262fd09f6238494ff674318a3584af787d Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Wed, 14 Jun 2023 07:36:39 -0700 Subject: [PATCH 21/24] improve test --- src/__tests__/index.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/__tests__/index.spec.ts b/src/__tests__/index.spec.ts index 4337cd4..4f7a605 100644 --- a/src/__tests__/index.spec.ts +++ b/src/__tests__/index.spec.ts @@ -22,6 +22,7 @@ describe("isMeetingType", () => { }); it("should return supported languages", () => { - expect(getTypesForLanguage("en")).toBeTruthy(); + const enTypes = getTypesForLanguage("en"); + expect(Object.keys(enTypes)).toHaveLength(58); }); }); From ecee7c76129fd1bfebb767e739f7bfdbf7a7100f Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Wed, 14 Jun 2023 07:36:47 -0700 Subject: [PATCH 22/24] 1.0.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c36ec5..8490b4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@code4recovery/spec", - "version": "1.0.1", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@code4recovery/spec", - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "devDependencies": { "@types/jest": "^29.5.2", diff --git a/package.json b/package.json index ea46c60..7c2a3e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@code4recovery/spec", - "version": "1.0.1", + "version": "1.0.2", "description": "The goal of the Meeting Guide API is help sync information about AA meetings. It was developed for the Meeting Guide app, but it is non-proprietary and other systems are encouraged to make use of it.", "main": "lib/index.js", "types": "lib/index.d.ts", From 6fe2d3b903db17cec9909eb73c640a5f6158cc91 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:10:36 -0700 Subject: [PATCH 23/24] add new types --- README.md | 21 +- data/types.json | 143 +++++- src/__tests__/index.spec.ts | 2 +- src/languages.ts | 2 +- src/types.ts | 938 ++++++++++++++++++++---------------- 5 files changed, 696 insertions(+), 410 deletions(-) diff --git a/README.md b/README.md index 0ba3a36..1ae5c9a 100644 --- a/README.md +++ b/README.md @@ -163,53 +163,72 @@ they will be ignored by the importer. |`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill|ビルはこう思う|Som Bill Ser Det| |`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen|アラティーンと同時進行|Tillsammans med Alateen| |`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon|アラノンと同時進行|Tillsammans med Al-Anon| +|`AM`|Amharic|Amárico|Amharique|アムハラ語|Amhariska| |`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes|アメリカ手話|Amerikanskt teckenspråk| |`B`|Big Book|Libro Grande|Gros Livre|ビッグブック|Stora Boken| |`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible|ベビーシッターあり|Barnvakt Finns| |`BE`|Newcomer|Principiantes|Nouveau/nouvelle|ビギナーズ|Nykomling| |`BI`|Bisexual|Bisexual|Bisexuel|バイセクシャル|Bisexuellt| |`BRK`|Breakfast|Desayuno|Petit déjeuner|朝食|Frukost| +|`BV-I`|Blind / Visually Impaired|Ciegos / Deficientes Visuales|Aveugle / Malvoyant|視覚障害者|Blinda / Synskadade| |`C`|Closed|Cerrada|Fermé|クローズド|Slutet| |`CAN`|Candlelight|Luz de una vela|À la chandelle|キャンドル|Tända Ljus| |`CF`|Child-Friendly|Niño amigable|Enfants acceptés|お子さま歓迎|Barnvänligt| |`D`|Discussion|Discusión|Discussion|ディスカッション|Diskussion| +|`D-HOH`|Deaf / Hard of Hearing|Sordo/dificultades auditivas|Sourd / Malentendant|難聴者|Döva / Hörselskadade| +|`DA`|Danish|Danés|Danois|デンマーク語|Danska| |`DB`|Digital Basket|Canasta digital|Panier numérique|電子献金|Digital Korg| |`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic|重複診断|Dubbel Diagnos| +|`DE`|German|Alemán|Allemand|ドイツ語|Tyska| |`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes|今日を新たに|Dagliga Reflektioner| +|`EL`|Greek|Griego|Grec|ギリシャ語|Grekiska| |`EN`|English|Inglés|Anglais|英語|Engelska| +|`FA`|Persian|Persa|Persan|ペルシャ語|Persiska| |`FF`|Fragrance Free|Sin fragancia|Sans parfum|香水なし|Parfym Fritt| |`FR`|French|Francés|Français|フランス語|Franska| |`G`|Gay|Gay|Gai|ゲイ|Gay| |`GR`|Grapevine|La Viña|Grapevine|グレープバイン|Grapevine| |`H`|Birthday|Cumpleaños|Anniversaire|バースデー|Födelsedag| |`HE`|Hebrew|Hebreo|Hébreu|ヘブライ語|Hebreiska| +|`HI`|Hindi|Hindi|Hindi|ヒンディー語|Hindi| +|`HR`|Croatian|Croata|Croate|クロアチア語|Kroatiska| +|`HU`|Hungarian|Húngaro|Hongrois|ハンガリー語|Ungerska| |`ITA`|Italian|Italiano|Italien|イタリア語|Italienska| |`JA`|Japanese|Japonés|Japonais|日本語|Japanska| |`KOR`|Korean|Coreano|Coréen|韓国語|Koreanska| |`L`|Lesbian|Lesbianas|Lesbienne|レズビアン|Lesbiskt| -|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ|LGBTQ|LGBTQ| +|`LGBTQ`|LGBTQIAA+|LGBTQIAA+|LGBTQIAA+|LGBTQIAA+|LGBTQIAA+| |`LIT`|Literature|Literatura|Publications|書籍|Litteratur| +|`LO-I`|Loners / Isolationists|Solitarios / Aislacionistas|Solitaires / Isolationnistes|孤独者|Ensamvargar / Isolationister| |`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool|リビングソーバー|Leva Nyktert| +|`LT`|Lithuanian|Lituano|Lituanien|リトアニア語|Litauiska| |`M`|Men|Hombres|Hommes|男性|Mansmöte| |`MED`|Meditation|Meditación|Méditation|黙想|Meditationsmöte| +|`ML`|Malayalam|Malayalam|Malayalam|マラヤーラム語|Malayalam| |`N`|Native American|Nativo Americano|Autochtone|ネイティブアメリカン|Ur-amerikanskt| |`NDG`|Indigenous|Indígena|Indigène|先住民|Urfolkligt| |`O`|Open|Abierta|Ouvert(e)|オープン|Öppet| |`OUT`|Outdoor|Al aire libre|En plein air|アウトドア|Utomhus| |`P`|Professionals|Profesionales|Professionnels|職業人|Professionella| +|`POA`|Proof of Attendance|Comprobante de asistencia|Preuve de présence|出席証明|Närvarobevis| |`POC`|People of Color|Gente de color|Gens de couleur|有色人種|Färgade| |`POL`|Polish|Polaco|Polonais|ポーランド語|Polska| |`POR`|Portuguese|Portugués|Portugais|ポルトガル語|Portugisiska| |`PUN`|Punjabi|Punjabi|Pendjabi|パンジャブ語|Punjabi| +|`QSL`|Quebec Sign Language|Lenguaje de señas de Quebec|Langue des signes québécoise|ケベック手話|Quebec Teckenspråk| +|`RSL`|Russian Sign Language|Lenguaje de señas ruso|Langue des signes russe|ロシア手話|Ryskt Teckenspråk| |`RUS`|Russian|Ruso|Russe|ロシア語|Ryska| |`S`|Spanish|Español|Espagnol|スペイン語|Spanska| |`SEN`|Seniors|Personas mayores|Séniors|シニア|Seniorer| +|`SK`|Slovak|Eslovaco|Slovaque|スロバキア語|Slovakiska| |`SM`|Smoking Permitted|Se permite fumar|Permis de fumer|喫煙可|Rökning Tillåten| |`SP`|Speaker|Orador|Conférencier|スピーカー|Talare| |`ST`|Step Study|Estudio de pasos|Sur les Étapes|ステップ|Stegmöte| +|`SV`|Swedish|Sueco|Suédois|スウェーデン語|Svenska| |`T`|Transgender|Transgénero|Transgenre|トランスジェンダー|Transpersoner| |`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé|一時的休止中|Tillfälligt Stängt| |`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions|伝統|Traditionsmöte| +|`UK`|Ukrainian|Ucraniano|Ukrainien|ウクライナ語|Ukrainska| |`W`|Women|Mujer|Femmes|女性|Kvinnomöte| |`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants|車いすアクセス|Handikappanpassat| |`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants|車いす使用者用トイレ|Handikappanpassad WC| diff --git a/data/types.json b/data/types.json index 95c79b4..ac45203 100644 --- a/data/types.json +++ b/data/types.json @@ -41,6 +41,13 @@ "ja": "アラノンと同時進行", "sv": "Tillsammans med Al-Anon" }, + "AM": { + "en": "Amharic", + "es": "Amárico", + "fr": "Amharique", + "ja": "アムハラ語", + "sv": "Amhariska" + }, "ASL": { "en": "American Sign Language", "es": "Lenguaje por señas", @@ -83,6 +90,13 @@ "ja": "朝食", "sv": "Frukost" }, + "BV-I": { + "en": "Blind / Visually Impaired", + "es": "Ciegos / Deficientes Visuales", + "fr": "Aveugle / Malvoyant", + "ja": "視覚障害者", + "sv": "Blinda / Synskadade" + }, "C": { "en": "Closed", "es": "Cerrada", @@ -111,6 +125,20 @@ "ja": "ディスカッション", "sv": "Diskussion" }, + "D-HOH": { + "en": "Deaf / Hard of Hearing", + "es": "Sordo/dificultades auditivas", + "fr": "Sourd / Malentendant", + "ja": "難聴者", + "sv": "Döva / Hörselskadade" + }, + "DA": { + "en": "Danish", + "es": "Danés", + "fr": "Danois", + "ja": "デンマーク語", + "sv": "Danska" + }, "DB": { "en": "Digital Basket", "es": "Canasta digital", @@ -125,6 +153,13 @@ "ja": "重複診断", "sv": "Dubbel Diagnos" }, + "DE": { + "en": "German", + "es": "Alemán", + "fr": "Allemand", + "ja": "ドイツ語", + "sv": "Tyska" + }, "DR": { "en": "Daily Reflections", "es": "Reflexiones Diarias", @@ -132,6 +167,13 @@ "ja": "今日を新たに", "sv": "Dagliga Reflektioner" }, + "EL": { + "en": "Greek", + "es": "Griego", + "fr": "Grec", + "ja": "ギリシャ語", + "sv": "Grekiska" + }, "EN": { "en": "English", "es": "Inglés", @@ -139,6 +181,13 @@ "ja": "英語", "sv": "Engelska" }, + "FA": { + "en": "Persian", + "es": "Persa", + "fr": "Persan", + "ja": "ペルシャ語", + "sv": "Persiska" + }, "FF": { "en": "Fragrance Free", "es": "Sin fragancia", @@ -181,6 +230,27 @@ "ja": "ヘブライ語", "sv": "Hebreiska" }, + "HI": { + "en": "Hindi", + "es": "Hindi", + "fr": "Hindi", + "ja": "ヒンディー語", + "sv": "Hindi" + }, + "HR": { + "en": "Croatian", + "es": "Croata", + "fr": "Croate", + "ja": "クロアチア語", + "sv": "Kroatiska" + }, + "HU": { + "en": "Hungarian", + "es": "Húngaro", + "fr": "Hongrois", + "ja": "ハンガリー語", + "sv": "Ungerska" + }, "ITA": { "en": "Italian", "es": "Italiano", @@ -210,11 +280,11 @@ "sv": "Lesbiskt" }, "LGBTQ": { - "en": "LGBTQ", - "es": "LGBTQ", - "fr": "LGBTQ", - "ja": "LGBTQ", - "sv": "LGBTQ" + "en": "LGBTQIAA+", + "es": "LGBTQIAA+", + "fr": "LGBTQIAA+", + "ja": "LGBTQIAA+", + "sv": "LGBTQIAA+" }, "LIT": { "en": "Literature", @@ -223,6 +293,13 @@ "ja": "書籍", "sv": "Litteratur" }, + "LO-I": { + "en": "Loners / Isolationists", + "es": "Solitarios / Aislacionistas", + "fr": "Solitaires / Isolationnistes", + "ja": "孤独者", + "sv": "Ensamvargar / Isolationister" + }, "LS": { "en": "Living Sober", "es": "Viviendo Sobrio", @@ -230,6 +307,13 @@ "ja": "リビングソーバー", "sv": "Leva Nyktert" }, + "LT": { + "en": "Lithuanian", + "es": "Lituano", + "fr": "Lituanien", + "ja": "リトアニア語", + "sv": "Litauiska" + }, "M": { "en": "Men", "es": "Hombres", @@ -244,6 +328,13 @@ "ja": "黙想", "sv": "Meditationsmöte" }, + "ML": { + "en": "Malayalam", + "es": "Malayalam", + "fr": "Malayalam", + "ja": "マラヤーラム語", + "sv": "Malayalam" + }, "N": { "en": "Native American", "es": "Nativo Americano", @@ -279,6 +370,13 @@ "ja": "職業人", "sv": "Professionella" }, + "POA": { + "en": "Proof of Attendance", + "es": "Comprobante de asistencia", + "fr": "Preuve de présence", + "ja": "出席証明", + "sv": "Närvarobevis" + }, "POC": { "en": "People of Color", "es": "Gente de color", @@ -307,6 +405,20 @@ "ja": "パンジャブ語", "sv": "Punjabi" }, + "QSL": { + "en": "Quebec Sign Language", + "es": "Lenguaje de señas de Quebec", + "fr": "Langue des signes québécoise", + "ja": "ケベック手話", + "sv": "Quebec Teckenspråk" + }, + "RSL": { + "en": "Russian Sign Language", + "es": "Lenguaje de señas ruso", + "fr": "Langue des signes russe", + "ja": "ロシア手話", + "sv": "Ryskt Teckenspråk" + }, "RUS": { "en": "Russian", "es": "Ruso", @@ -328,6 +440,13 @@ "ja": "シニア", "sv": "Seniorer" }, + "SK": { + "en": "Slovak", + "es": "Eslovaco", + "fr": "Slovaque", + "ja": "スロバキア語", + "sv": "Slovakiska" + }, "SM": { "en": "Smoking Permitted", "es": "Se permite fumar", @@ -349,6 +468,13 @@ "ja": "ステップ", "sv": "Stegmöte" }, + "SV": { + "en": "Swedish", + "es": "Sueco", + "fr": "Suédois", + "ja": "スウェーデン語", + "sv": "Svenska" + }, "T": { "en": "Transgender", "es": "Transgénero", @@ -370,6 +496,13 @@ "ja": "伝統", "sv": "Traditionsmöte" }, + "UK": { + "en": "Ukrainian", + "es": "Ucraniano", + "fr": "Ukrainien", + "ja": "ウクライナ語", + "sv": "Ukrainska" + }, "W": { "en": "Women", "es": "Mujer", diff --git a/src/__tests__/index.spec.ts b/src/__tests__/index.spec.ts index 4f7a605..d9962c4 100644 --- a/src/__tests__/index.spec.ts +++ b/src/__tests__/index.spec.ts @@ -23,6 +23,6 @@ describe("isMeetingType", () => { it("should return supported languages", () => { const enTypes = getTypesForLanguage("en"); - expect(Object.keys(enTypes)).toHaveLength(58); + expect(Object.keys(enTypes)).toHaveLength(77); }); }); diff --git a/src/languages.ts b/src/languages.ts index 4dfe3e7..d6d8fe5 100644 --- a/src/languages.ts +++ b/src/languages.ts @@ -1 +1 @@ -export const languages = ["en", "es", "fr", "ja", "sv"] as const; +export const languages = ["en","es","fr","ja","sv"] as const; \ No newline at end of file diff --git a/src/types.ts b/src/types.ts index 8d30a44..d6c0bd2 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,408 +1,542 @@ export const types = { "11": { - en: "11th Step Meditation", - es: "Meditación del Paso 11", - fr: "Méditation sur la 11e Étape", - ja: "ステップ11 黙想", - sv: "11th Stegs Meditation", + "en": "11th Step Meditation", + "es": "Meditación del Paso 11", + "fr": "Méditation sur la 11e Étape", + "ja": "ステップ11 黙想", + "sv": "11th Stegs Meditation" }, "12x12": { - en: "12 Steps & 12 Traditions", - es: "12 Pasos y 12 Tradiciones", - fr: "12 Étapes et 12 Traditions", - ja: "12のステップと12の伝統", - sv: "12 Steg & 12 Traditioner", - }, - A: { - en: "Secular", - es: "Secular", - fr: "Séculier", - ja: "無宗教", - sv: "Sekulärt", - }, - ABSI: { - en: "As Bill Sees It", - es: "Como lo ve Bill", - fr: "Réflexions de Bill", - ja: "ビルはこう思う", - sv: "Som Bill Ser Det", - }, - AL: { - en: "Concurrent with Alateen", - es: "Concurrente con Alateen", - fr: "En même temps qu’Alateen", - ja: "アラティーンと同時進行", - sv: "Tillsammans med Alateen", + "en": "12 Steps & 12 Traditions", + "es": "12 Pasos y 12 Tradiciones", + "fr": "12 Étapes et 12 Traditions", + "ja": "12のステップと12の伝統", + "sv": "12 Steg & 12 Traditioner" + }, + "A": { + "en": "Secular", + "es": "Secular", + "fr": "Séculier", + "ja": "無宗教", + "sv": "Sekulärt" + }, + "ABSI": { + "en": "As Bill Sees It", + "es": "Como lo ve Bill", + "fr": "Réflexions de Bill", + "ja": "ビルはこう思う", + "sv": "Som Bill Ser Det" + }, + "AL": { + "en": "Concurrent with Alateen", + "es": "Concurrente con Alateen", + "fr": "En même temps qu’Alateen", + "ja": "アラティーンと同時進行", + "sv": "Tillsammans med Alateen" }, "AL-AN": { - en: "Concurrent with Al-Anon", - es: "Concurrente con Al-Anon", - fr: "En même temps qu’Al-Anon", - ja: "アラノンと同時進行", - sv: "Tillsammans med Al-Anon", - }, - ASL: { - en: "American Sign Language", - es: "Lenguaje por señas", - fr: "Langage des Signes", - ja: "アメリカ手話", - sv: "Amerikanskt teckenspråk", - }, - B: { - en: "Big Book", - es: "Libro Grande", - fr: "Gros Livre", - ja: "ビッグブック", - sv: "Stora Boken", - }, - BA: { - en: "Babysitting Available", - es: "Guardería disponible", - fr: "Garderie d’enfants disponible", - ja: "ベビーシッターあり", - sv: "Barnvakt Finns", - }, - BE: { - en: "Newcomer", - es: "Principiantes", - fr: "Nouveau/nouvelle", - ja: "ビギナーズ", - sv: "Nykomling", - }, - BI: { - en: "Bisexual", - es: "Bisexual", - fr: "Bisexuel", - ja: "バイセクシャル", - sv: "Bisexuellt", - }, - BRK: { - en: "Breakfast", - es: "Desayuno", - fr: "Petit déjeuner", - ja: "朝食", - sv: "Frukost", - }, - C: { - en: "Closed", - es: "Cerrada", - fr: "Fermé", - ja: "クローズド", - sv: "Slutet", - }, - CAN: { - en: "Candlelight", - es: "Luz de una vela", - fr: "À la chandelle", - ja: "キャンドル", - sv: "Tända Ljus", - }, - CF: { - en: "Child-Friendly", - es: "Niño amigable", - fr: "Enfants acceptés", - ja: "お子さま歓迎", - sv: "Barnvänligt", - }, - D: { - en: "Discussion", - es: "Discusión", - fr: "Discussion", - ja: "ディスカッション", - sv: "Diskussion", - }, - DB: { - en: "Digital Basket", - es: "Canasta digital", - fr: "Panier numérique", - ja: "電子献金", - sv: "Digital Korg", - }, - DD: { - en: "Dual Diagnosis", - es: "Diagnóstico dual", - fr: "Double diagnostic", - ja: "重複診断", - sv: "Dubbel Diagnos", - }, - DR: { - en: "Daily Reflections", - es: "Reflexiones Diarias", - fr: "Réflexions quotidiennes", - ja: "今日を新たに", - sv: "Dagliga Reflektioner", - }, - EN: { - en: "English", - es: "Inglés", - fr: "Anglais", - ja: "英語", - sv: "Engelska", - }, - FF: { - en: "Fragrance Free", - es: "Sin fragancia", - fr: "Sans parfum", - ja: "香水なし", - sv: "Parfym Fritt", - }, - FR: { - en: "French", - es: "Francés", - fr: "Français", - ja: "フランス語", - sv: "Franska", - }, - G: { - en: "Gay", - es: "Gay", - fr: "Gai", - ja: "ゲイ", - sv: "Gay", - }, - GR: { - en: "Grapevine", - es: "La Viña", - fr: "Grapevine", - ja: "グレープバイン", - sv: "Grapevine", - }, - H: { - en: "Birthday", - es: "Cumpleaños", - fr: "Anniversaire", - ja: "バースデー", - sv: "Födelsedag", - }, - HE: { - en: "Hebrew", - es: "Hebreo", - fr: "Hébreu", - ja: "ヘブライ語", - sv: "Hebreiska", - }, - ITA: { - en: "Italian", - es: "Italiano", - fr: "Italien", - ja: "イタリア語", - sv: "Italienska", - }, - JA: { - en: "Japanese", - es: "Japonés", - fr: "Japonais", - ja: "日本語", - sv: "Japanska", - }, - KOR: { - en: "Korean", - es: "Coreano", - fr: "Coréen", - ja: "韓国語", - sv: "Koreanska", - }, - L: { - en: "Lesbian", - es: "Lesbianas", - fr: "Lesbienne", - ja: "レズビアン", - sv: "Lesbiskt", - }, - LGBTQ: { - en: "LGBTQ", - es: "LGBTQ", - fr: "LGBTQ", - ja: "LGBTQ", - sv: "LGBTQ", - }, - LIT: { - en: "Literature", - es: "Literatura", - fr: "Publications", - ja: "書籍", - sv: "Litteratur", - }, - LS: { - en: "Living Sober", - es: "Viviendo Sobrio", - fr: "Vivre… Sans alcool", - ja: "リビングソーバー", - sv: "Leva Nyktert", - }, - M: { - en: "Men", - es: "Hombres", - fr: "Hommes", - ja: "男性", - sv: "Mansmöte", - }, - MED: { - en: "Meditation", - es: "Meditación", - fr: "Méditation", - ja: "黙想", - sv: "Meditationsmöte", - }, - N: { - en: "Native American", - es: "Nativo Americano", - fr: "Autochtone", - ja: "ネイティブアメリカン", - sv: "Ur-amerikanskt", - }, - NDG: { - en: "Indigenous", - es: "Indígena", - fr: "Indigène", - ja: "先住民", - sv: "Urfolkligt", - }, - O: { - en: "Open", - es: "Abierta", - fr: "Ouvert(e)", - ja: "オープン", - sv: "Öppet", - }, - OUT: { - en: "Outdoor", - es: "Al aire libre", - fr: "En plein air", - ja: "アウトドア", - sv: "Utomhus", - }, - P: { - en: "Professionals", - es: "Profesionales", - fr: "Professionnels", - ja: "職業人", - sv: "Professionella", - }, - POC: { - en: "People of Color", - es: "Gente de color", - fr: "Gens de couleur", - ja: "有色人種", - sv: "Färgade", - }, - POL: { - en: "Polish", - es: "Polaco", - fr: "Polonais", - ja: "ポーランド語", - sv: "Polska", - }, - POR: { - en: "Portuguese", - es: "Portugués", - fr: "Portugais", - ja: "ポルトガル語", - sv: "Portugisiska", - }, - PUN: { - en: "Punjabi", - es: "Punjabi", - fr: "Pendjabi", - ja: "パンジャブ語", - sv: "Punjabi", - }, - RUS: { - en: "Russian", - es: "Ruso", - fr: "Russe", - ja: "ロシア語", - sv: "Ryska", - }, - S: { - en: "Spanish", - es: "Español", - fr: "Espagnol", - ja: "スペイン語", - sv: "Spanska", - }, - SEN: { - en: "Seniors", - es: "Personas mayores", - fr: "Séniors", - ja: "シニア", - sv: "Seniorer", - }, - SM: { - en: "Smoking Permitted", - es: "Se permite fumar", - fr: "Permis de fumer", - ja: "喫煙可", - sv: "Rökning Tillåten", - }, - SP: { - en: "Speaker", - es: "Orador", - fr: "Conférencier", - ja: "スピーカー", - sv: "Talare", - }, - ST: { - en: "Step Study", - es: "Estudio de pasos", - fr: "Sur les Étapes", - ja: "ステップ", - sv: "Stegmöte", - }, - T: { - en: "Transgender", - es: "Transgénero", - fr: "Transgenre", - ja: "トランスジェンダー", - sv: "Transpersoner", - }, - TC: { - en: "Location Temporarily Closed", - es: "Ubicación temporalmente cerrada", - fr: "Emplacement temporairement fermé", - ja: "一時的休止中", - sv: "Tillfälligt Stängt", - }, - TR: { - en: "Tradition Study", - es: "Estudio de tradicion", - fr: "Étude des Traditions", - ja: "伝統", - sv: "Traditionsmöte", - }, - W: { - en: "Women", - es: "Mujer", - fr: "Femmes", - ja: "女性", - sv: "Kvinnomöte", - }, - X: { - en: "Wheelchair Access", - es: "Acceso en silla de ruedas", - fr: "Accès aux fauteuils roulants", - ja: "車いすアクセス", - sv: "Handikappanpassat", - }, - XB: { - en: "Wheelchair-Accessible Bathroom", - es: "Baño accesible para sillas de ruedas", - fr: "Toilettes accessibles aux fauteuils roulants", - ja: "車いす使用者用トイレ", - sv: "Handikappanpassad WC", - }, - XT: { - en: "Cross Talk Permitted", - es: "Se permite opinar", - fr: "Conversation croisée permise", - ja: "クロストーク可能", - sv: "Kommentarer Tilltåtna", - }, - Y: { - en: "Young People", - es: "Gente joven", - fr: "Jeunes", - ja: "ヤング", - sv: "Young People", - }, -}; + "en": "Concurrent with Al-Anon", + "es": "Concurrente con Al-Anon", + "fr": "En même temps qu’Al-Anon", + "ja": "アラノンと同時進行", + "sv": "Tillsammans med Al-Anon" + }, + "AM": { + "en": "Amharic", + "es": "Amárico", + "fr": "Amharique", + "ja": "アムハラ語", + "sv": "Amhariska" + }, + "ASL": { + "en": "American Sign Language", + "es": "Lenguaje por señas", + "fr": "Langage des Signes", + "ja": "アメリカ手話", + "sv": "Amerikanskt teckenspråk" + }, + "B": { + "en": "Big Book", + "es": "Libro Grande", + "fr": "Gros Livre", + "ja": "ビッグブック", + "sv": "Stora Boken" + }, + "BA": { + "en": "Babysitting Available", + "es": "Guardería disponible", + "fr": "Garderie d’enfants disponible", + "ja": "ベビーシッターあり", + "sv": "Barnvakt Finns" + }, + "BE": { + "en": "Newcomer", + "es": "Principiantes", + "fr": "Nouveau/nouvelle", + "ja": "ビギナーズ", + "sv": "Nykomling" + }, + "BI": { + "en": "Bisexual", + "es": "Bisexual", + "fr": "Bisexuel", + "ja": "バイセクシャル", + "sv": "Bisexuellt" + }, + "BRK": { + "en": "Breakfast", + "es": "Desayuno", + "fr": "Petit déjeuner", + "ja": "朝食", + "sv": "Frukost" + }, + "BV-I": { + "en": "Blind / Visually Impaired", + "es": "Ciegos / Deficientes Visuales", + "fr": "Aveugle / Malvoyant", + "ja": "視覚障害者", + "sv": "Blinda / Synskadade" + }, + "C": { + "en": "Closed", + "es": "Cerrada", + "fr": "Fermé", + "ja": "クローズド", + "sv": "Slutet" + }, + "CAN": { + "en": "Candlelight", + "es": "Luz de una vela", + "fr": "À la chandelle", + "ja": "キャンドル", + "sv": "Tända Ljus" + }, + "CF": { + "en": "Child-Friendly", + "es": "Niño amigable", + "fr": "Enfants acceptés", + "ja": "お子さま歓迎", + "sv": "Barnvänligt" + }, + "D": { + "en": "Discussion", + "es": "Discusión", + "fr": "Discussion", + "ja": "ディスカッション", + "sv": "Diskussion" + }, + "D-HOH": { + "en": "Deaf / Hard of Hearing", + "es": "Sordo/dificultades auditivas", + "fr": "Sourd / Malentendant", + "ja": "難聴者", + "sv": "Döva / Hörselskadade" + }, + "DA": { + "en": "Danish", + "es": "Danés", + "fr": "Danois", + "ja": "デンマーク語", + "sv": "Danska" + }, + "DB": { + "en": "Digital Basket", + "es": "Canasta digital", + "fr": "Panier numérique", + "ja": "電子献金", + "sv": "Digital Korg" + }, + "DD": { + "en": "Dual Diagnosis", + "es": "Diagnóstico dual", + "fr": "Double diagnostic", + "ja": "重複診断", + "sv": "Dubbel Diagnos" + }, + "DE": { + "en": "German", + "es": "Alemán", + "fr": "Allemand", + "ja": "ドイツ語", + "sv": "Tyska" + }, + "DR": { + "en": "Daily Reflections", + "es": "Reflexiones Diarias", + "fr": "Réflexions quotidiennes", + "ja": "今日を新たに", + "sv": "Dagliga Reflektioner" + }, + "EL": { + "en": "Greek", + "es": "Griego", + "fr": "Grec", + "ja": "ギリシャ語", + "sv": "Grekiska" + }, + "EN": { + "en": "English", + "es": "Inglés", + "fr": "Anglais", + "ja": "英語", + "sv": "Engelska" + }, + "FA": { + "en": "Persian", + "es": "Persa", + "fr": "Persan", + "ja": "ペルシャ語", + "sv": "Persiska" + }, + "FF": { + "en": "Fragrance Free", + "es": "Sin fragancia", + "fr": "Sans parfum", + "ja": "香水なし", + "sv": "Parfym Fritt" + }, + "FR": { + "en": "French", + "es": "Francés", + "fr": "Français", + "ja": "フランス語", + "sv": "Franska" + }, + "G": { + "en": "Gay", + "es": "Gay", + "fr": "Gai", + "ja": "ゲイ", + "sv": "Gay" + }, + "GR": { + "en": "Grapevine", + "es": "La Viña", + "fr": "Grapevine", + "ja": "グレープバイン", + "sv": "Grapevine" + }, + "H": { + "en": "Birthday", + "es": "Cumpleaños", + "fr": "Anniversaire", + "ja": "バースデー", + "sv": "Födelsedag" + }, + "HE": { + "en": "Hebrew", + "es": "Hebreo", + "fr": "Hébreu", + "ja": "ヘブライ語", + "sv": "Hebreiska" + }, + "HI": { + "en": "Hindi", + "es": "Hindi", + "fr": "Hindi", + "ja": "ヒンディー語", + "sv": "Hindi" + }, + "HR": { + "en": "Croatian", + "es": "Croata", + "fr": "Croate", + "ja": "クロアチア語", + "sv": "Kroatiska" + }, + "HU": { + "en": "Hungarian", + "es": "Húngaro", + "fr": "Hongrois", + "ja": "ハンガリー語", + "sv": "Ungerska" + }, + "ITA": { + "en": "Italian", + "es": "Italiano", + "fr": "Italien", + "ja": "イタリア語", + "sv": "Italienska" + }, + "JA": { + "en": "Japanese", + "es": "Japonés", + "fr": "Japonais", + "ja": "日本語", + "sv": "Japanska" + }, + "KOR": { + "en": "Korean", + "es": "Coreano", + "fr": "Coréen", + "ja": "韓国語", + "sv": "Koreanska" + }, + "L": { + "en": "Lesbian", + "es": "Lesbianas", + "fr": "Lesbienne", + "ja": "レズビアン", + "sv": "Lesbiskt" + }, + "LGBTQ": { + "en": "LGBTQIAA+", + "es": "LGBTQIAA+", + "fr": "LGBTQIAA+", + "ja": "LGBTQIAA+", + "sv": "LGBTQIAA+" + }, + "LIT": { + "en": "Literature", + "es": "Literatura", + "fr": "Publications", + "ja": "書籍", + "sv": "Litteratur" + }, + "LO-I": { + "en": "Loners / Isolationists", + "es": "Solitarios / Aislacionistas", + "fr": "Solitaires / Isolationnistes", + "ja": "孤独者", + "sv": "Ensamvargar / Isolationister" + }, + "LS": { + "en": "Living Sober", + "es": "Viviendo Sobrio", + "fr": "Vivre… Sans alcool", + "ja": "リビングソーバー", + "sv": "Leva Nyktert" + }, + "LT": { + "en": "Lithuanian", + "es": "Lituano", + "fr": "Lituanien", + "ja": "リトアニア語", + "sv": "Litauiska" + }, + "M": { + "en": "Men", + "es": "Hombres", + "fr": "Hommes", + "ja": "男性", + "sv": "Mansmöte" + }, + "MED": { + "en": "Meditation", + "es": "Meditación", + "fr": "Méditation", + "ja": "黙想", + "sv": "Meditationsmöte" + }, + "ML": { + "en": "Malayalam", + "es": "Malayalam", + "fr": "Malayalam", + "ja": "マラヤーラム語", + "sv": "Malayalam" + }, + "N": { + "en": "Native American", + "es": "Nativo Americano", + "fr": "Autochtone", + "ja": "ネイティブアメリカン", + "sv": "Ur-amerikanskt" + }, + "NDG": { + "en": "Indigenous", + "es": "Indígena", + "fr": "Indigène", + "ja": "先住民", + "sv": "Urfolkligt" + }, + "O": { + "en": "Open", + "es": "Abierta", + "fr": "Ouvert(e)", + "ja": "オープン", + "sv": "Öppet" + }, + "OUT": { + "en": "Outdoor", + "es": "Al aire libre", + "fr": "En plein air", + "ja": "アウトドア", + "sv": "Utomhus" + }, + "P": { + "en": "Professionals", + "es": "Profesionales", + "fr": "Professionnels", + "ja": "職業人", + "sv": "Professionella" + }, + "POA": { + "en": "Proof of Attendance", + "es": "Comprobante de asistencia", + "fr": "Preuve de présence", + "ja": "出席証明", + "sv": "Närvarobevis" + }, + "POC": { + "en": "People of Color", + "es": "Gente de color", + "fr": "Gens de couleur", + "ja": "有色人種", + "sv": "Färgade" + }, + "POL": { + "en": "Polish", + "es": "Polaco", + "fr": "Polonais", + "ja": "ポーランド語", + "sv": "Polska" + }, + "POR": { + "en": "Portuguese", + "es": "Portugués", + "fr": "Portugais", + "ja": "ポルトガル語", + "sv": "Portugisiska" + }, + "PUN": { + "en": "Punjabi", + "es": "Punjabi", + "fr": "Pendjabi", + "ja": "パンジャブ語", + "sv": "Punjabi" + }, + "QSL": { + "en": "Quebec Sign Language", + "es": "Lenguaje de señas de Quebec", + "fr": "Langue des signes québécoise", + "ja": "ケベック手話", + "sv": "Quebec Teckenspråk" + }, + "RSL": { + "en": "Russian Sign Language", + "es": "Lenguaje de señas ruso", + "fr": "Langue des signes russe", + "ja": "ロシア手話", + "sv": "Ryskt Teckenspråk" + }, + "RUS": { + "en": "Russian", + "es": "Ruso", + "fr": "Russe", + "ja": "ロシア語", + "sv": "Ryska" + }, + "S": { + "en": "Spanish", + "es": "Español", + "fr": "Espagnol", + "ja": "スペイン語", + "sv": "Spanska" + }, + "SEN": { + "en": "Seniors", + "es": "Personas mayores", + "fr": "Séniors", + "ja": "シニア", + "sv": "Seniorer" + }, + "SK": { + "en": "Slovak", + "es": "Eslovaco", + "fr": "Slovaque", + "ja": "スロバキア語", + "sv": "Slovakiska" + }, + "SM": { + "en": "Smoking Permitted", + "es": "Se permite fumar", + "fr": "Permis de fumer", + "ja": "喫煙可", + "sv": "Rökning Tillåten" + }, + "SP": { + "en": "Speaker", + "es": "Orador", + "fr": "Conférencier", + "ja": "スピーカー", + "sv": "Talare" + }, + "ST": { + "en": "Step Study", + "es": "Estudio de pasos", + "fr": "Sur les Étapes", + "ja": "ステップ", + "sv": "Stegmöte" + }, + "SV": { + "en": "Swedish", + "es": "Sueco", + "fr": "Suédois", + "ja": "スウェーデン語", + "sv": "Svenska" + }, + "T": { + "en": "Transgender", + "es": "Transgénero", + "fr": "Transgenre", + "ja": "トランスジェンダー", + "sv": "Transpersoner" + }, + "TC": { + "en": "Location Temporarily Closed", + "es": "Ubicación temporalmente cerrada", + "fr": "Emplacement temporairement fermé", + "ja": "一時的休止中", + "sv": "Tillfälligt Stängt" + }, + "TR": { + "en": "Tradition Study", + "es": "Estudio de tradicion", + "fr": "Étude des Traditions", + "ja": "伝統", + "sv": "Traditionsmöte" + }, + "UK": { + "en": "Ukrainian", + "es": "Ucraniano", + "fr": "Ukrainien", + "ja": "ウクライナ語", + "sv": "Ukrainska" + }, + "W": { + "en": "Women", + "es": "Mujer", + "fr": "Femmes", + "ja": "女性", + "sv": "Kvinnomöte" + }, + "X": { + "en": "Wheelchair Access", + "es": "Acceso en silla de ruedas", + "fr": "Accès aux fauteuils roulants", + "ja": "車いすアクセス", + "sv": "Handikappanpassat" + }, + "XB": { + "en": "Wheelchair-Accessible Bathroom", + "es": "Baño accesible para sillas de ruedas", + "fr": "Toilettes accessibles aux fauteuils roulants", + "ja": "車いす使用者用トイレ", + "sv": "Handikappanpassad WC" + }, + "XT": { + "en": "Cross Talk Permitted", + "es": "Se permite opinar", + "fr": "Conversation croisée permise", + "ja": "クロストーク可能", + "sv": "Kommentarer Tilltåtna" + }, + "Y": { + "en": "Young People", + "es": "Gente joven", + "fr": "Jeunes", + "ja": "ヤング", + "sv": "Young People" + } +} +; \ No newline at end of file From b9d782e1e1e105a9642aa5ce6c7900549a386a21 Mon Sep 17 00:00:00 2001 From: Josh Reisner <1551689+joshreisner@users.noreply.github.com> Date: Fri, 16 Jun 2023 07:37:43 -0700 Subject: [PATCH 24/24] remove new types --- README.md | 21 +- data/types.json | 143 +----- src/__tests__/index.spec.ts | 2 +- src/languages.ts | 2 +- src/types.ts | 938 ++++++++++++++++-------------------- 5 files changed, 410 insertions(+), 696 deletions(-) diff --git a/README.md b/README.md index 1ae5c9a..0ba3a36 100644 --- a/README.md +++ b/README.md @@ -163,72 +163,53 @@ they will be ignored by the importer. |`ABSI`|As Bill Sees It|Como lo ve Bill|Réflexions de Bill|ビルはこう思う|Som Bill Ser Det| |`AL`|Concurrent with Alateen|Concurrente con Alateen|En même temps qu’Alateen|アラティーンと同時進行|Tillsammans med Alateen| |`AL-AN`|Concurrent with Al-Anon|Concurrente con Al-Anon|En même temps qu’Al-Anon|アラノンと同時進行|Tillsammans med Al-Anon| -|`AM`|Amharic|Amárico|Amharique|アムハラ語|Amhariska| |`ASL`|American Sign Language|Lenguaje por señas|Langage des Signes|アメリカ手話|Amerikanskt teckenspråk| |`B`|Big Book|Libro Grande|Gros Livre|ビッグブック|Stora Boken| |`BA`|Babysitting Available|Guardería disponible|Garderie d’enfants disponible|ベビーシッターあり|Barnvakt Finns| |`BE`|Newcomer|Principiantes|Nouveau/nouvelle|ビギナーズ|Nykomling| |`BI`|Bisexual|Bisexual|Bisexuel|バイセクシャル|Bisexuellt| |`BRK`|Breakfast|Desayuno|Petit déjeuner|朝食|Frukost| -|`BV-I`|Blind / Visually Impaired|Ciegos / Deficientes Visuales|Aveugle / Malvoyant|視覚障害者|Blinda / Synskadade| |`C`|Closed|Cerrada|Fermé|クローズド|Slutet| |`CAN`|Candlelight|Luz de una vela|À la chandelle|キャンドル|Tända Ljus| |`CF`|Child-Friendly|Niño amigable|Enfants acceptés|お子さま歓迎|Barnvänligt| |`D`|Discussion|Discusión|Discussion|ディスカッション|Diskussion| -|`D-HOH`|Deaf / Hard of Hearing|Sordo/dificultades auditivas|Sourd / Malentendant|難聴者|Döva / Hörselskadade| -|`DA`|Danish|Danés|Danois|デンマーク語|Danska| |`DB`|Digital Basket|Canasta digital|Panier numérique|電子献金|Digital Korg| |`DD`|Dual Diagnosis|Diagnóstico dual|Double diagnostic|重複診断|Dubbel Diagnos| -|`DE`|German|Alemán|Allemand|ドイツ語|Tyska| |`DR`|Daily Reflections|Reflexiones Diarias|Réflexions quotidiennes|今日を新たに|Dagliga Reflektioner| -|`EL`|Greek|Griego|Grec|ギリシャ語|Grekiska| |`EN`|English|Inglés|Anglais|英語|Engelska| -|`FA`|Persian|Persa|Persan|ペルシャ語|Persiska| |`FF`|Fragrance Free|Sin fragancia|Sans parfum|香水なし|Parfym Fritt| |`FR`|French|Francés|Français|フランス語|Franska| |`G`|Gay|Gay|Gai|ゲイ|Gay| |`GR`|Grapevine|La Viña|Grapevine|グレープバイン|Grapevine| |`H`|Birthday|Cumpleaños|Anniversaire|バースデー|Födelsedag| |`HE`|Hebrew|Hebreo|Hébreu|ヘブライ語|Hebreiska| -|`HI`|Hindi|Hindi|Hindi|ヒンディー語|Hindi| -|`HR`|Croatian|Croata|Croate|クロアチア語|Kroatiska| -|`HU`|Hungarian|Húngaro|Hongrois|ハンガリー語|Ungerska| |`ITA`|Italian|Italiano|Italien|イタリア語|Italienska| |`JA`|Japanese|Japonés|Japonais|日本語|Japanska| |`KOR`|Korean|Coreano|Coréen|韓国語|Koreanska| |`L`|Lesbian|Lesbianas|Lesbienne|レズビアン|Lesbiskt| -|`LGBTQ`|LGBTQIAA+|LGBTQIAA+|LGBTQIAA+|LGBTQIAA+|LGBTQIAA+| +|`LGBTQ`|LGBTQ|LGBTQ|LGBTQ|LGBTQ|LGBTQ| |`LIT`|Literature|Literatura|Publications|書籍|Litteratur| -|`LO-I`|Loners / Isolationists|Solitarios / Aislacionistas|Solitaires / Isolationnistes|孤独者|Ensamvargar / Isolationister| |`LS`|Living Sober|Viviendo Sobrio|Vivre… Sans alcool|リビングソーバー|Leva Nyktert| -|`LT`|Lithuanian|Lituano|Lituanien|リトアニア語|Litauiska| |`M`|Men|Hombres|Hommes|男性|Mansmöte| |`MED`|Meditation|Meditación|Méditation|黙想|Meditationsmöte| -|`ML`|Malayalam|Malayalam|Malayalam|マラヤーラム語|Malayalam| |`N`|Native American|Nativo Americano|Autochtone|ネイティブアメリカン|Ur-amerikanskt| |`NDG`|Indigenous|Indígena|Indigène|先住民|Urfolkligt| |`O`|Open|Abierta|Ouvert(e)|オープン|Öppet| |`OUT`|Outdoor|Al aire libre|En plein air|アウトドア|Utomhus| |`P`|Professionals|Profesionales|Professionnels|職業人|Professionella| -|`POA`|Proof of Attendance|Comprobante de asistencia|Preuve de présence|出席証明|Närvarobevis| |`POC`|People of Color|Gente de color|Gens de couleur|有色人種|Färgade| |`POL`|Polish|Polaco|Polonais|ポーランド語|Polska| |`POR`|Portuguese|Portugués|Portugais|ポルトガル語|Portugisiska| |`PUN`|Punjabi|Punjabi|Pendjabi|パンジャブ語|Punjabi| -|`QSL`|Quebec Sign Language|Lenguaje de señas de Quebec|Langue des signes québécoise|ケベック手話|Quebec Teckenspråk| -|`RSL`|Russian Sign Language|Lenguaje de señas ruso|Langue des signes russe|ロシア手話|Ryskt Teckenspråk| |`RUS`|Russian|Ruso|Russe|ロシア語|Ryska| |`S`|Spanish|Español|Espagnol|スペイン語|Spanska| |`SEN`|Seniors|Personas mayores|Séniors|シニア|Seniorer| -|`SK`|Slovak|Eslovaco|Slovaque|スロバキア語|Slovakiska| |`SM`|Smoking Permitted|Se permite fumar|Permis de fumer|喫煙可|Rökning Tillåten| |`SP`|Speaker|Orador|Conférencier|スピーカー|Talare| |`ST`|Step Study|Estudio de pasos|Sur les Étapes|ステップ|Stegmöte| -|`SV`|Swedish|Sueco|Suédois|スウェーデン語|Svenska| |`T`|Transgender|Transgénero|Transgenre|トランスジェンダー|Transpersoner| |`TC`|Location Temporarily Closed|Ubicación temporalmente cerrada|Emplacement temporairement fermé|一時的休止中|Tillfälligt Stängt| |`TR`|Tradition Study|Estudio de tradicion|Étude des Traditions|伝統|Traditionsmöte| -|`UK`|Ukrainian|Ucraniano|Ukrainien|ウクライナ語|Ukrainska| |`W`|Women|Mujer|Femmes|女性|Kvinnomöte| |`X`|Wheelchair Access|Acceso en silla de ruedas|Accès aux fauteuils roulants|車いすアクセス|Handikappanpassat| |`XB`|Wheelchair-Accessible Bathroom|Baño accesible para sillas de ruedas|Toilettes accessibles aux fauteuils roulants|車いす使用者用トイレ|Handikappanpassad WC| diff --git a/data/types.json b/data/types.json index ac45203..95c79b4 100644 --- a/data/types.json +++ b/data/types.json @@ -41,13 +41,6 @@ "ja": "アラノンと同時進行", "sv": "Tillsammans med Al-Anon" }, - "AM": { - "en": "Amharic", - "es": "Amárico", - "fr": "Amharique", - "ja": "アムハラ語", - "sv": "Amhariska" - }, "ASL": { "en": "American Sign Language", "es": "Lenguaje por señas", @@ -90,13 +83,6 @@ "ja": "朝食", "sv": "Frukost" }, - "BV-I": { - "en": "Blind / Visually Impaired", - "es": "Ciegos / Deficientes Visuales", - "fr": "Aveugle / Malvoyant", - "ja": "視覚障害者", - "sv": "Blinda / Synskadade" - }, "C": { "en": "Closed", "es": "Cerrada", @@ -125,20 +111,6 @@ "ja": "ディスカッション", "sv": "Diskussion" }, - "D-HOH": { - "en": "Deaf / Hard of Hearing", - "es": "Sordo/dificultades auditivas", - "fr": "Sourd / Malentendant", - "ja": "難聴者", - "sv": "Döva / Hörselskadade" - }, - "DA": { - "en": "Danish", - "es": "Danés", - "fr": "Danois", - "ja": "デンマーク語", - "sv": "Danska" - }, "DB": { "en": "Digital Basket", "es": "Canasta digital", @@ -153,13 +125,6 @@ "ja": "重複診断", "sv": "Dubbel Diagnos" }, - "DE": { - "en": "German", - "es": "Alemán", - "fr": "Allemand", - "ja": "ドイツ語", - "sv": "Tyska" - }, "DR": { "en": "Daily Reflections", "es": "Reflexiones Diarias", @@ -167,13 +132,6 @@ "ja": "今日を新たに", "sv": "Dagliga Reflektioner" }, - "EL": { - "en": "Greek", - "es": "Griego", - "fr": "Grec", - "ja": "ギリシャ語", - "sv": "Grekiska" - }, "EN": { "en": "English", "es": "Inglés", @@ -181,13 +139,6 @@ "ja": "英語", "sv": "Engelska" }, - "FA": { - "en": "Persian", - "es": "Persa", - "fr": "Persan", - "ja": "ペルシャ語", - "sv": "Persiska" - }, "FF": { "en": "Fragrance Free", "es": "Sin fragancia", @@ -230,27 +181,6 @@ "ja": "ヘブライ語", "sv": "Hebreiska" }, - "HI": { - "en": "Hindi", - "es": "Hindi", - "fr": "Hindi", - "ja": "ヒンディー語", - "sv": "Hindi" - }, - "HR": { - "en": "Croatian", - "es": "Croata", - "fr": "Croate", - "ja": "クロアチア語", - "sv": "Kroatiska" - }, - "HU": { - "en": "Hungarian", - "es": "Húngaro", - "fr": "Hongrois", - "ja": "ハンガリー語", - "sv": "Ungerska" - }, "ITA": { "en": "Italian", "es": "Italiano", @@ -280,11 +210,11 @@ "sv": "Lesbiskt" }, "LGBTQ": { - "en": "LGBTQIAA+", - "es": "LGBTQIAA+", - "fr": "LGBTQIAA+", - "ja": "LGBTQIAA+", - "sv": "LGBTQIAA+" + "en": "LGBTQ", + "es": "LGBTQ", + "fr": "LGBTQ", + "ja": "LGBTQ", + "sv": "LGBTQ" }, "LIT": { "en": "Literature", @@ -293,13 +223,6 @@ "ja": "書籍", "sv": "Litteratur" }, - "LO-I": { - "en": "Loners / Isolationists", - "es": "Solitarios / Aislacionistas", - "fr": "Solitaires / Isolationnistes", - "ja": "孤独者", - "sv": "Ensamvargar / Isolationister" - }, "LS": { "en": "Living Sober", "es": "Viviendo Sobrio", @@ -307,13 +230,6 @@ "ja": "リビングソーバー", "sv": "Leva Nyktert" }, - "LT": { - "en": "Lithuanian", - "es": "Lituano", - "fr": "Lituanien", - "ja": "リトアニア語", - "sv": "Litauiska" - }, "M": { "en": "Men", "es": "Hombres", @@ -328,13 +244,6 @@ "ja": "黙想", "sv": "Meditationsmöte" }, - "ML": { - "en": "Malayalam", - "es": "Malayalam", - "fr": "Malayalam", - "ja": "マラヤーラム語", - "sv": "Malayalam" - }, "N": { "en": "Native American", "es": "Nativo Americano", @@ -370,13 +279,6 @@ "ja": "職業人", "sv": "Professionella" }, - "POA": { - "en": "Proof of Attendance", - "es": "Comprobante de asistencia", - "fr": "Preuve de présence", - "ja": "出席証明", - "sv": "Närvarobevis" - }, "POC": { "en": "People of Color", "es": "Gente de color", @@ -405,20 +307,6 @@ "ja": "パンジャブ語", "sv": "Punjabi" }, - "QSL": { - "en": "Quebec Sign Language", - "es": "Lenguaje de señas de Quebec", - "fr": "Langue des signes québécoise", - "ja": "ケベック手話", - "sv": "Quebec Teckenspråk" - }, - "RSL": { - "en": "Russian Sign Language", - "es": "Lenguaje de señas ruso", - "fr": "Langue des signes russe", - "ja": "ロシア手話", - "sv": "Ryskt Teckenspråk" - }, "RUS": { "en": "Russian", "es": "Ruso", @@ -440,13 +328,6 @@ "ja": "シニア", "sv": "Seniorer" }, - "SK": { - "en": "Slovak", - "es": "Eslovaco", - "fr": "Slovaque", - "ja": "スロバキア語", - "sv": "Slovakiska" - }, "SM": { "en": "Smoking Permitted", "es": "Se permite fumar", @@ -468,13 +349,6 @@ "ja": "ステップ", "sv": "Stegmöte" }, - "SV": { - "en": "Swedish", - "es": "Sueco", - "fr": "Suédois", - "ja": "スウェーデン語", - "sv": "Svenska" - }, "T": { "en": "Transgender", "es": "Transgénero", @@ -496,13 +370,6 @@ "ja": "伝統", "sv": "Traditionsmöte" }, - "UK": { - "en": "Ukrainian", - "es": "Ucraniano", - "fr": "Ukrainien", - "ja": "ウクライナ語", - "sv": "Ukrainska" - }, "W": { "en": "Women", "es": "Mujer", diff --git a/src/__tests__/index.spec.ts b/src/__tests__/index.spec.ts index d9962c4..4f7a605 100644 --- a/src/__tests__/index.spec.ts +++ b/src/__tests__/index.spec.ts @@ -23,6 +23,6 @@ describe("isMeetingType", () => { it("should return supported languages", () => { const enTypes = getTypesForLanguage("en"); - expect(Object.keys(enTypes)).toHaveLength(77); + expect(Object.keys(enTypes)).toHaveLength(58); }); }); diff --git a/src/languages.ts b/src/languages.ts index d6d8fe5..4dfe3e7 100644 --- a/src/languages.ts +++ b/src/languages.ts @@ -1 +1 @@ -export const languages = ["en","es","fr","ja","sv"] as const; \ No newline at end of file +export const languages = ["en", "es", "fr", "ja", "sv"] as const; diff --git a/src/types.ts b/src/types.ts index d6c0bd2..8d30a44 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,542 +1,408 @@ export const types = { "11": { - "en": "11th Step Meditation", - "es": "Meditación del Paso 11", - "fr": "Méditation sur la 11e Étape", - "ja": "ステップ11 黙想", - "sv": "11th Stegs Meditation" + en: "11th Step Meditation", + es: "Meditación del Paso 11", + fr: "Méditation sur la 11e Étape", + ja: "ステップ11 黙想", + sv: "11th Stegs Meditation", }, "12x12": { - "en": "12 Steps & 12 Traditions", - "es": "12 Pasos y 12 Tradiciones", - "fr": "12 Étapes et 12 Traditions", - "ja": "12のステップと12の伝統", - "sv": "12 Steg & 12 Traditioner" - }, - "A": { - "en": "Secular", - "es": "Secular", - "fr": "Séculier", - "ja": "無宗教", - "sv": "Sekulärt" - }, - "ABSI": { - "en": "As Bill Sees It", - "es": "Como lo ve Bill", - "fr": "Réflexions de Bill", - "ja": "ビルはこう思う", - "sv": "Som Bill Ser Det" - }, - "AL": { - "en": "Concurrent with Alateen", - "es": "Concurrente con Alateen", - "fr": "En même temps qu’Alateen", - "ja": "アラティーンと同時進行", - "sv": "Tillsammans med Alateen" + en: "12 Steps & 12 Traditions", + es: "12 Pasos y 12 Tradiciones", + fr: "12 Étapes et 12 Traditions", + ja: "12のステップと12の伝統", + sv: "12 Steg & 12 Traditioner", + }, + A: { + en: "Secular", + es: "Secular", + fr: "Séculier", + ja: "無宗教", + sv: "Sekulärt", + }, + ABSI: { + en: "As Bill Sees It", + es: "Como lo ve Bill", + fr: "Réflexions de Bill", + ja: "ビルはこう思う", + sv: "Som Bill Ser Det", + }, + AL: { + en: "Concurrent with Alateen", + es: "Concurrente con Alateen", + fr: "En même temps qu’Alateen", + ja: "アラティーンと同時進行", + sv: "Tillsammans med Alateen", }, "AL-AN": { - "en": "Concurrent with Al-Anon", - "es": "Concurrente con Al-Anon", - "fr": "En même temps qu’Al-Anon", - "ja": "アラノンと同時進行", - "sv": "Tillsammans med Al-Anon" - }, - "AM": { - "en": "Amharic", - "es": "Amárico", - "fr": "Amharique", - "ja": "アムハラ語", - "sv": "Amhariska" - }, - "ASL": { - "en": "American Sign Language", - "es": "Lenguaje por señas", - "fr": "Langage des Signes", - "ja": "アメリカ手話", - "sv": "Amerikanskt teckenspråk" - }, - "B": { - "en": "Big Book", - "es": "Libro Grande", - "fr": "Gros Livre", - "ja": "ビッグブック", - "sv": "Stora Boken" - }, - "BA": { - "en": "Babysitting Available", - "es": "Guardería disponible", - "fr": "Garderie d’enfants disponible", - "ja": "ベビーシッターあり", - "sv": "Barnvakt Finns" - }, - "BE": { - "en": "Newcomer", - "es": "Principiantes", - "fr": "Nouveau/nouvelle", - "ja": "ビギナーズ", - "sv": "Nykomling" - }, - "BI": { - "en": "Bisexual", - "es": "Bisexual", - "fr": "Bisexuel", - "ja": "バイセクシャル", - "sv": "Bisexuellt" - }, - "BRK": { - "en": "Breakfast", - "es": "Desayuno", - "fr": "Petit déjeuner", - "ja": "朝食", - "sv": "Frukost" - }, - "BV-I": { - "en": "Blind / Visually Impaired", - "es": "Ciegos / Deficientes Visuales", - "fr": "Aveugle / Malvoyant", - "ja": "視覚障害者", - "sv": "Blinda / Synskadade" - }, - "C": { - "en": "Closed", - "es": "Cerrada", - "fr": "Fermé", - "ja": "クローズド", - "sv": "Slutet" - }, - "CAN": { - "en": "Candlelight", - "es": "Luz de una vela", - "fr": "À la chandelle", - "ja": "キャンドル", - "sv": "Tända Ljus" - }, - "CF": { - "en": "Child-Friendly", - "es": "Niño amigable", - "fr": "Enfants acceptés", - "ja": "お子さま歓迎", - "sv": "Barnvänligt" - }, - "D": { - "en": "Discussion", - "es": "Discusión", - "fr": "Discussion", - "ja": "ディスカッション", - "sv": "Diskussion" - }, - "D-HOH": { - "en": "Deaf / Hard of Hearing", - "es": "Sordo/dificultades auditivas", - "fr": "Sourd / Malentendant", - "ja": "難聴者", - "sv": "Döva / Hörselskadade" - }, - "DA": { - "en": "Danish", - "es": "Danés", - "fr": "Danois", - "ja": "デンマーク語", - "sv": "Danska" - }, - "DB": { - "en": "Digital Basket", - "es": "Canasta digital", - "fr": "Panier numérique", - "ja": "電子献金", - "sv": "Digital Korg" - }, - "DD": { - "en": "Dual Diagnosis", - "es": "Diagnóstico dual", - "fr": "Double diagnostic", - "ja": "重複診断", - "sv": "Dubbel Diagnos" - }, - "DE": { - "en": "German", - "es": "Alemán", - "fr": "Allemand", - "ja": "ドイツ語", - "sv": "Tyska" - }, - "DR": { - "en": "Daily Reflections", - "es": "Reflexiones Diarias", - "fr": "Réflexions quotidiennes", - "ja": "今日を新たに", - "sv": "Dagliga Reflektioner" - }, - "EL": { - "en": "Greek", - "es": "Griego", - "fr": "Grec", - "ja": "ギリシャ語", - "sv": "Grekiska" - }, - "EN": { - "en": "English", - "es": "Inglés", - "fr": "Anglais", - "ja": "英語", - "sv": "Engelska" - }, - "FA": { - "en": "Persian", - "es": "Persa", - "fr": "Persan", - "ja": "ペルシャ語", - "sv": "Persiska" - }, - "FF": { - "en": "Fragrance Free", - "es": "Sin fragancia", - "fr": "Sans parfum", - "ja": "香水なし", - "sv": "Parfym Fritt" - }, - "FR": { - "en": "French", - "es": "Francés", - "fr": "Français", - "ja": "フランス語", - "sv": "Franska" - }, - "G": { - "en": "Gay", - "es": "Gay", - "fr": "Gai", - "ja": "ゲイ", - "sv": "Gay" - }, - "GR": { - "en": "Grapevine", - "es": "La Viña", - "fr": "Grapevine", - "ja": "グレープバイン", - "sv": "Grapevine" - }, - "H": { - "en": "Birthday", - "es": "Cumpleaños", - "fr": "Anniversaire", - "ja": "バースデー", - "sv": "Födelsedag" - }, - "HE": { - "en": "Hebrew", - "es": "Hebreo", - "fr": "Hébreu", - "ja": "ヘブライ語", - "sv": "Hebreiska" - }, - "HI": { - "en": "Hindi", - "es": "Hindi", - "fr": "Hindi", - "ja": "ヒンディー語", - "sv": "Hindi" - }, - "HR": { - "en": "Croatian", - "es": "Croata", - "fr": "Croate", - "ja": "クロアチア語", - "sv": "Kroatiska" - }, - "HU": { - "en": "Hungarian", - "es": "Húngaro", - "fr": "Hongrois", - "ja": "ハンガリー語", - "sv": "Ungerska" - }, - "ITA": { - "en": "Italian", - "es": "Italiano", - "fr": "Italien", - "ja": "イタリア語", - "sv": "Italienska" - }, - "JA": { - "en": "Japanese", - "es": "Japonés", - "fr": "Japonais", - "ja": "日本語", - "sv": "Japanska" - }, - "KOR": { - "en": "Korean", - "es": "Coreano", - "fr": "Coréen", - "ja": "韓国語", - "sv": "Koreanska" - }, - "L": { - "en": "Lesbian", - "es": "Lesbianas", - "fr": "Lesbienne", - "ja": "レズビアン", - "sv": "Lesbiskt" - }, - "LGBTQ": { - "en": "LGBTQIAA+", - "es": "LGBTQIAA+", - "fr": "LGBTQIAA+", - "ja": "LGBTQIAA+", - "sv": "LGBTQIAA+" - }, - "LIT": { - "en": "Literature", - "es": "Literatura", - "fr": "Publications", - "ja": "書籍", - "sv": "Litteratur" - }, - "LO-I": { - "en": "Loners / Isolationists", - "es": "Solitarios / Aislacionistas", - "fr": "Solitaires / Isolationnistes", - "ja": "孤独者", - "sv": "Ensamvargar / Isolationister" - }, - "LS": { - "en": "Living Sober", - "es": "Viviendo Sobrio", - "fr": "Vivre… Sans alcool", - "ja": "リビングソーバー", - "sv": "Leva Nyktert" - }, - "LT": { - "en": "Lithuanian", - "es": "Lituano", - "fr": "Lituanien", - "ja": "リトアニア語", - "sv": "Litauiska" - }, - "M": { - "en": "Men", - "es": "Hombres", - "fr": "Hommes", - "ja": "男性", - "sv": "Mansmöte" - }, - "MED": { - "en": "Meditation", - "es": "Meditación", - "fr": "Méditation", - "ja": "黙想", - "sv": "Meditationsmöte" - }, - "ML": { - "en": "Malayalam", - "es": "Malayalam", - "fr": "Malayalam", - "ja": "マラヤーラム語", - "sv": "Malayalam" - }, - "N": { - "en": "Native American", - "es": "Nativo Americano", - "fr": "Autochtone", - "ja": "ネイティブアメリカン", - "sv": "Ur-amerikanskt" - }, - "NDG": { - "en": "Indigenous", - "es": "Indígena", - "fr": "Indigène", - "ja": "先住民", - "sv": "Urfolkligt" - }, - "O": { - "en": "Open", - "es": "Abierta", - "fr": "Ouvert(e)", - "ja": "オープン", - "sv": "Öppet" - }, - "OUT": { - "en": "Outdoor", - "es": "Al aire libre", - "fr": "En plein air", - "ja": "アウトドア", - "sv": "Utomhus" - }, - "P": { - "en": "Professionals", - "es": "Profesionales", - "fr": "Professionnels", - "ja": "職業人", - "sv": "Professionella" - }, - "POA": { - "en": "Proof of Attendance", - "es": "Comprobante de asistencia", - "fr": "Preuve de présence", - "ja": "出席証明", - "sv": "Närvarobevis" - }, - "POC": { - "en": "People of Color", - "es": "Gente de color", - "fr": "Gens de couleur", - "ja": "有色人種", - "sv": "Färgade" - }, - "POL": { - "en": "Polish", - "es": "Polaco", - "fr": "Polonais", - "ja": "ポーランド語", - "sv": "Polska" - }, - "POR": { - "en": "Portuguese", - "es": "Portugués", - "fr": "Portugais", - "ja": "ポルトガル語", - "sv": "Portugisiska" - }, - "PUN": { - "en": "Punjabi", - "es": "Punjabi", - "fr": "Pendjabi", - "ja": "パンジャブ語", - "sv": "Punjabi" - }, - "QSL": { - "en": "Quebec Sign Language", - "es": "Lenguaje de señas de Quebec", - "fr": "Langue des signes québécoise", - "ja": "ケベック手話", - "sv": "Quebec Teckenspråk" - }, - "RSL": { - "en": "Russian Sign Language", - "es": "Lenguaje de señas ruso", - "fr": "Langue des signes russe", - "ja": "ロシア手話", - "sv": "Ryskt Teckenspråk" - }, - "RUS": { - "en": "Russian", - "es": "Ruso", - "fr": "Russe", - "ja": "ロシア語", - "sv": "Ryska" - }, - "S": { - "en": "Spanish", - "es": "Español", - "fr": "Espagnol", - "ja": "スペイン語", - "sv": "Spanska" - }, - "SEN": { - "en": "Seniors", - "es": "Personas mayores", - "fr": "Séniors", - "ja": "シニア", - "sv": "Seniorer" - }, - "SK": { - "en": "Slovak", - "es": "Eslovaco", - "fr": "Slovaque", - "ja": "スロバキア語", - "sv": "Slovakiska" - }, - "SM": { - "en": "Smoking Permitted", - "es": "Se permite fumar", - "fr": "Permis de fumer", - "ja": "喫煙可", - "sv": "Rökning Tillåten" - }, - "SP": { - "en": "Speaker", - "es": "Orador", - "fr": "Conférencier", - "ja": "スピーカー", - "sv": "Talare" - }, - "ST": { - "en": "Step Study", - "es": "Estudio de pasos", - "fr": "Sur les Étapes", - "ja": "ステップ", - "sv": "Stegmöte" - }, - "SV": { - "en": "Swedish", - "es": "Sueco", - "fr": "Suédois", - "ja": "スウェーデン語", - "sv": "Svenska" - }, - "T": { - "en": "Transgender", - "es": "Transgénero", - "fr": "Transgenre", - "ja": "トランスジェンダー", - "sv": "Transpersoner" - }, - "TC": { - "en": "Location Temporarily Closed", - "es": "Ubicación temporalmente cerrada", - "fr": "Emplacement temporairement fermé", - "ja": "一時的休止中", - "sv": "Tillfälligt Stängt" - }, - "TR": { - "en": "Tradition Study", - "es": "Estudio de tradicion", - "fr": "Étude des Traditions", - "ja": "伝統", - "sv": "Traditionsmöte" - }, - "UK": { - "en": "Ukrainian", - "es": "Ucraniano", - "fr": "Ukrainien", - "ja": "ウクライナ語", - "sv": "Ukrainska" - }, - "W": { - "en": "Women", - "es": "Mujer", - "fr": "Femmes", - "ja": "女性", - "sv": "Kvinnomöte" - }, - "X": { - "en": "Wheelchair Access", - "es": "Acceso en silla de ruedas", - "fr": "Accès aux fauteuils roulants", - "ja": "車いすアクセス", - "sv": "Handikappanpassat" - }, - "XB": { - "en": "Wheelchair-Accessible Bathroom", - "es": "Baño accesible para sillas de ruedas", - "fr": "Toilettes accessibles aux fauteuils roulants", - "ja": "車いす使用者用トイレ", - "sv": "Handikappanpassad WC" - }, - "XT": { - "en": "Cross Talk Permitted", - "es": "Se permite opinar", - "fr": "Conversation croisée permise", - "ja": "クロストーク可能", - "sv": "Kommentarer Tilltåtna" - }, - "Y": { - "en": "Young People", - "es": "Gente joven", - "fr": "Jeunes", - "ja": "ヤング", - "sv": "Young People" - } -} -; \ No newline at end of file + en: "Concurrent with Al-Anon", + es: "Concurrente con Al-Anon", + fr: "En même temps qu’Al-Anon", + ja: "アラノンと同時進行", + sv: "Tillsammans med Al-Anon", + }, + ASL: { + en: "American Sign Language", + es: "Lenguaje por señas", + fr: "Langage des Signes", + ja: "アメリカ手話", + sv: "Amerikanskt teckenspråk", + }, + B: { + en: "Big Book", + es: "Libro Grande", + fr: "Gros Livre", + ja: "ビッグブック", + sv: "Stora Boken", + }, + BA: { + en: "Babysitting Available", + es: "Guardería disponible", + fr: "Garderie d’enfants disponible", + ja: "ベビーシッターあり", + sv: "Barnvakt Finns", + }, + BE: { + en: "Newcomer", + es: "Principiantes", + fr: "Nouveau/nouvelle", + ja: "ビギナーズ", + sv: "Nykomling", + }, + BI: { + en: "Bisexual", + es: "Bisexual", + fr: "Bisexuel", + ja: "バイセクシャル", + sv: "Bisexuellt", + }, + BRK: { + en: "Breakfast", + es: "Desayuno", + fr: "Petit déjeuner", + ja: "朝食", + sv: "Frukost", + }, + C: { + en: "Closed", + es: "Cerrada", + fr: "Fermé", + ja: "クローズド", + sv: "Slutet", + }, + CAN: { + en: "Candlelight", + es: "Luz de una vela", + fr: "À la chandelle", + ja: "キャンドル", + sv: "Tända Ljus", + }, + CF: { + en: "Child-Friendly", + es: "Niño amigable", + fr: "Enfants acceptés", + ja: "お子さま歓迎", + sv: "Barnvänligt", + }, + D: { + en: "Discussion", + es: "Discusión", + fr: "Discussion", + ja: "ディスカッション", + sv: "Diskussion", + }, + DB: { + en: "Digital Basket", + es: "Canasta digital", + fr: "Panier numérique", + ja: "電子献金", + sv: "Digital Korg", + }, + DD: { + en: "Dual Diagnosis", + es: "Diagnóstico dual", + fr: "Double diagnostic", + ja: "重複診断", + sv: "Dubbel Diagnos", + }, + DR: { + en: "Daily Reflections", + es: "Reflexiones Diarias", + fr: "Réflexions quotidiennes", + ja: "今日を新たに", + sv: "Dagliga Reflektioner", + }, + EN: { + en: "English", + es: "Inglés", + fr: "Anglais", + ja: "英語", + sv: "Engelska", + }, + FF: { + en: "Fragrance Free", + es: "Sin fragancia", + fr: "Sans parfum", + ja: "香水なし", + sv: "Parfym Fritt", + }, + FR: { + en: "French", + es: "Francés", + fr: "Français", + ja: "フランス語", + sv: "Franska", + }, + G: { + en: "Gay", + es: "Gay", + fr: "Gai", + ja: "ゲイ", + sv: "Gay", + }, + GR: { + en: "Grapevine", + es: "La Viña", + fr: "Grapevine", + ja: "グレープバイン", + sv: "Grapevine", + }, + H: { + en: "Birthday", + es: "Cumpleaños", + fr: "Anniversaire", + ja: "バースデー", + sv: "Födelsedag", + }, + HE: { + en: "Hebrew", + es: "Hebreo", + fr: "Hébreu", + ja: "ヘブライ語", + sv: "Hebreiska", + }, + ITA: { + en: "Italian", + es: "Italiano", + fr: "Italien", + ja: "イタリア語", + sv: "Italienska", + }, + JA: { + en: "Japanese", + es: "Japonés", + fr: "Japonais", + ja: "日本語", + sv: "Japanska", + }, + KOR: { + en: "Korean", + es: "Coreano", + fr: "Coréen", + ja: "韓国語", + sv: "Koreanska", + }, + L: { + en: "Lesbian", + es: "Lesbianas", + fr: "Lesbienne", + ja: "レズビアン", + sv: "Lesbiskt", + }, + LGBTQ: { + en: "LGBTQ", + es: "LGBTQ", + fr: "LGBTQ", + ja: "LGBTQ", + sv: "LGBTQ", + }, + LIT: { + en: "Literature", + es: "Literatura", + fr: "Publications", + ja: "書籍", + sv: "Litteratur", + }, + LS: { + en: "Living Sober", + es: "Viviendo Sobrio", + fr: "Vivre… Sans alcool", + ja: "リビングソーバー", + sv: "Leva Nyktert", + }, + M: { + en: "Men", + es: "Hombres", + fr: "Hommes", + ja: "男性", + sv: "Mansmöte", + }, + MED: { + en: "Meditation", + es: "Meditación", + fr: "Méditation", + ja: "黙想", + sv: "Meditationsmöte", + }, + N: { + en: "Native American", + es: "Nativo Americano", + fr: "Autochtone", + ja: "ネイティブアメリカン", + sv: "Ur-amerikanskt", + }, + NDG: { + en: "Indigenous", + es: "Indígena", + fr: "Indigène", + ja: "先住民", + sv: "Urfolkligt", + }, + O: { + en: "Open", + es: "Abierta", + fr: "Ouvert(e)", + ja: "オープン", + sv: "Öppet", + }, + OUT: { + en: "Outdoor", + es: "Al aire libre", + fr: "En plein air", + ja: "アウトドア", + sv: "Utomhus", + }, + P: { + en: "Professionals", + es: "Profesionales", + fr: "Professionnels", + ja: "職業人", + sv: "Professionella", + }, + POC: { + en: "People of Color", + es: "Gente de color", + fr: "Gens de couleur", + ja: "有色人種", + sv: "Färgade", + }, + POL: { + en: "Polish", + es: "Polaco", + fr: "Polonais", + ja: "ポーランド語", + sv: "Polska", + }, + POR: { + en: "Portuguese", + es: "Portugués", + fr: "Portugais", + ja: "ポルトガル語", + sv: "Portugisiska", + }, + PUN: { + en: "Punjabi", + es: "Punjabi", + fr: "Pendjabi", + ja: "パンジャブ語", + sv: "Punjabi", + }, + RUS: { + en: "Russian", + es: "Ruso", + fr: "Russe", + ja: "ロシア語", + sv: "Ryska", + }, + S: { + en: "Spanish", + es: "Español", + fr: "Espagnol", + ja: "スペイン語", + sv: "Spanska", + }, + SEN: { + en: "Seniors", + es: "Personas mayores", + fr: "Séniors", + ja: "シニア", + sv: "Seniorer", + }, + SM: { + en: "Smoking Permitted", + es: "Se permite fumar", + fr: "Permis de fumer", + ja: "喫煙可", + sv: "Rökning Tillåten", + }, + SP: { + en: "Speaker", + es: "Orador", + fr: "Conférencier", + ja: "スピーカー", + sv: "Talare", + }, + ST: { + en: "Step Study", + es: "Estudio de pasos", + fr: "Sur les Étapes", + ja: "ステップ", + sv: "Stegmöte", + }, + T: { + en: "Transgender", + es: "Transgénero", + fr: "Transgenre", + ja: "トランスジェンダー", + sv: "Transpersoner", + }, + TC: { + en: "Location Temporarily Closed", + es: "Ubicación temporalmente cerrada", + fr: "Emplacement temporairement fermé", + ja: "一時的休止中", + sv: "Tillfälligt Stängt", + }, + TR: { + en: "Tradition Study", + es: "Estudio de tradicion", + fr: "Étude des Traditions", + ja: "伝統", + sv: "Traditionsmöte", + }, + W: { + en: "Women", + es: "Mujer", + fr: "Femmes", + ja: "女性", + sv: "Kvinnomöte", + }, + X: { + en: "Wheelchair Access", + es: "Acceso en silla de ruedas", + fr: "Accès aux fauteuils roulants", + ja: "車いすアクセス", + sv: "Handikappanpassat", + }, + XB: { + en: "Wheelchair-Accessible Bathroom", + es: "Baño accesible para sillas de ruedas", + fr: "Toilettes accessibles aux fauteuils roulants", + ja: "車いす使用者用トイレ", + sv: "Handikappanpassad WC", + }, + XT: { + en: "Cross Talk Permitted", + es: "Se permite opinar", + fr: "Conversation croisée permise", + ja: "クロストーク可能", + sv: "Kommentarer Tilltåtna", + }, + Y: { + en: "Young People", + es: "Gente joven", + fr: "Jeunes", + ja: "ヤング", + sv: "Young People", + }, +};