diff --git a/.gitignore b/.gitignore
index 2d3d46fc..3873fd3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,6 @@
/agh-backup/
/bin/
/build/*
-/build2/*
/data/
/dist/
/filtering/tests/filtering.TestLotsOfRules*.pprof
@@ -26,4 +25,3 @@ leases.db
node_modules/
!/build/gitkeep
-!/build2/gitkeep
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37f080cc..269ea042 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,15 +14,52 @@ and this project adheres to
+
+
+
+
+## [v0.107.23] - 2023-02-01
+
+See also the [v0.107.23 GitHub milestone][ms-v0.107.23].
+
+### Added
+
+- DNS64 support ([#5117]). The function may be enabled with new `use_dns64`
+ field under `dns` object in the configuration along with `dns64_prefixes`, the
+ set of exclusion prefixes to filter AAAA responses. The Well-Known Prefix
+ (`64:ff9b::/96`) is used if no custom prefixes are specified.
+
+### Fixed
+
+- Filtering rules with `*` as the hostname not working properly ([#5245]).
+- Various dark theme bugs ([#5375]).
+
+### Removed
+
+- The “beta frontend” and the corresponding APIs. They never quite worked
+ properly, and the future new version of AdGuard Home API will probably be
+ different.
+
+ Correspondingly, the configuration parameter `beta_bind_port` has been removed
+ as well.
+
+[#5117]: https://github.com/AdguardTeam/AdGuardHome/issues/5117
+[#5245]: https://github.com/AdguardTeam/AdGuardHome/issues/5245
+[#5375]: https://github.com/AdguardTeam/AdGuardHome/issues/5375
+
+[ms-v0.107.23]: https://github.com/AdguardTeam/AdGuardHome/milestone/59?closed=1
+
## [v0.107.22] - 2023-01-19
@@ -48,7 +85,7 @@ See also the [v0.107.22 GitHub milestone][ms-v0.107.22].
running ([#4223], [#5191]).
- The `--update` flag performing an update even when there is no version change.
- Failing HTTPS redirection on saving the encryption settings ([#4898]).
-- Zeroing rules counter of erroneusly edited filtering rule lists ([#5290]).
+- Zeroing rules counter of erroneously edited filtering rule lists ([#5290]).
- Filters updating strategy, which could sometimes lead to use of broken or
incompletely downloaded lists ([#5258]).
@@ -61,7 +98,6 @@ See also the [v0.107.22 GitHub milestone][ms-v0.107.22].
-
## [v0.107.21] - 2022-12-15
See also the [v0.107.21 GitHub milestone][ms-v0.107.21].
@@ -1542,11 +1578,12 @@ See also the [v0.104.2 GitHub milestone][ms-v0.104.2].
-[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.22...HEAD
+[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.23...HEAD
+[v0.107.23]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.22...v0.107.23
[v0.107.22]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.21...v0.107.22
[v0.107.21]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.20...v0.107.21
[v0.107.20]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.19...v0.107.20
diff --git a/Makefile b/Makefile
index 49a7c578..f4e3a6f4 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,6 @@
.POSIX:
CHANNEL = development
-CLIENT_BETA_DIR = client2
CLIENT_DIR = client
COMMIT = $$( git rev-parse --short HEAD )
DIST_DIR = dist
@@ -29,10 +28,6 @@ SIGN = 1
VERBOSE = 0
VERSION = v0.0.0
YARN = yarn
-YARN_FLAGS = --cwd $(CLIENT_BETA_DIR)
-YARN_INSTALL_FLAGS = $(YARN_FLAGS) --network-timeout 120000 --silent\
- --ignore-engines --ignore-optional --ignore-platform\
- --ignore-scripts
# Macros for the build-release target. If FRONTEND_PREBUILT is 0, the
# default, the macro $(BUILD_RELEASE_DEPS_$(FRONTEND_PREBUILT)) expands
@@ -90,17 +85,13 @@ init: ; git config core.hooksPath ./scripts/hooks
js-build:
$(NPM) $(NPM_FLAGS) run build-prod
- $(YARN) $(YARN_FLAGS) build
js-deps:
$(NPM) $(NPM_INSTALL_FLAGS) ci
- $(YARN) $(YARN_INSTALL_FLAGS) install
# TODO(a.garipov): Remove the legacy client tasks support once the new
# client is done and the old one is removed.
js-lint: ; $(NPM) $(NPM_FLAGS) run lint
js-test: ; $(NPM) $(NPM_FLAGS) run test
-js-beta-lint: ; $(YARN) $(YARN_FLAGS) lint
-js-beta-test: ; # TODO(v.abdulmyanov): Add tests for the new client.
go-build: ; $(ENV) "$(SHELL)" ./scripts/make/go-build.sh
go-deps: ; $(ENV) "$(SHELL)" ./scripts/make/go-deps.sh
diff --git a/build2/gitkeep b/build2/gitkeep
deleted file mode 100644
index e67b104b..00000000
--- a/build2/gitkeep
+++ /dev/null
@@ -1 +0,0 @@
-Keep this file non-hidden for Go's embedding to work.
diff --git a/client/src/__locales/ar.json b/client/src/__locales/ar.json
index 020b790c..b091c4fd 100644
--- a/client/src/__locales/ar.json
+++ b/client/src/__locales/ar.json
@@ -37,8 +37,6 @@
"dhcp_ipv6_settings": "DHCP IPv6 إعدادات",
"form_error_required": "الحقل مطلوب",
"form_error_ip4_format": "عنوان IPv4 غير صالح",
- "form_error_ip4_range_start_format": "عناوين البداية لـIPv4 غير صالحة للنطاق",
- "form_error_ip4_range_end_format": "عناوين IPv4 غير صالحة لنطاق النهاية",
"form_error_ip4_gateway_format": "عنوان IPv4 غير صالح للبوابة",
"form_error_ip6_format": "عنوان IPv6 غير صالح",
"form_error_ip_format": "عنوان IP غير صحيح",
@@ -51,7 +49,6 @@
"out_of_range_error": "يجب أن يكون خارج النطاق \"{{start}}\" - \"{{end}}\"",
"lower_range_start_error": "يجب أن يكون أقل من نطاق البداية",
"greater_range_start_error": "يجب أن يكون أكبر من نطاق البداية",
- "greater_range_end_error": "يجب أن يكون أكبر من نطاق النهاية",
"subnet_error": "يجب أن تكون العناوين في شبكة فرعية واحدة",
"gateway_or_subnet_invalid": "قناع الشبكة الفرعية غير صالح",
"dhcp_form_gateway_input": "IP البوابة",
@@ -300,6 +297,8 @@
"blocking_mode_nxdomain": "NXDOMAIN: الرد باستخدام رمز NXDOMAIN",
"blocking_mode_null_ip": "IP Null: الاستجابة بعنوان IP صفري (0.0.0.0 لـ A ؛ :: لـ AAAA)",
"blocking_mode_custom_ip": "استجابة IP مخصصة بعنوان IP تم تعيينه يدويًا",
+ "theme_light": "فاتح",
+ "theme_dark": "ليلي",
"upstream_dns_client_desc": "إذا احتفظت بهذا الحقل فارغًا ، فسيستخدم AdGuard Home الخوادم التي تم تكوينها في<0>DNS إعدادات0>.",
"tracker_source": "مصدر المتعقب",
"source_label": "المصدر",
diff --git a/client/src/__locales/be.json b/client/src/__locales/be.json
index c0260e88..a5f5fab8 100644
--- a/client/src/__locales/be.json
+++ b/client/src/__locales/be.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Адказвае з кодам NXDOMAIN\n",
"blocking_mode_null_ip": "Нулёвы IP: Адказвае з нулёвым IP-адрасам (0.0.0.0 для A; :: для AAAA)",
"blocking_mode_custom_ip": "Карыстацкі IP: Адказвае з ручна наладжаным IP-адрасам",
+ "theme_auto": "Аўто",
+ "theme_light": "Светлая",
+ "theme_dark": "Цёмная",
"upstream_dns_client_desc": "Калі пакінуць поле пустым, AdGuard Home будзе звяртацца да сервераў, паказаных у <0>наладах DNS0>.",
"tracker_source": "Крыніца трэкінгу",
"source_label": "Крыніца",
@@ -451,6 +454,7 @@
"updates_checked": "Даступная новая версія AdGuard Home",
"updates_version_equal": "Версія AdGuard Home актуальная",
"check_updates_now": "Праверыць абнаўленні",
+ "version_request_error": "Памылка пры праверцы наяўнасці абнаўленняў. Праверце ваша інтэрнэт-злучэнне.",
"dns_privacy": "Зашыфраваны DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Ужывайце радок <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Ужывайце радок <1>{{address}}1>.",
diff --git a/client/src/__locales/cs.json b/client/src/__locales/cs.json
index 9f57a3fe..0931b6a1 100644
--- a/client/src/__locales/cs.json
+++ b/client/src/__locales/cs.json
@@ -165,8 +165,8 @@
"enabled_safe_browsing_toast": "Zapnuté bezpečné prohlížení",
"disabled_parental_toast": "Vypnutá Rodičovská kontrola",
"enabled_parental_toast": "Zapnutá Rodičovská kontrola",
- "disabled_safe_search_toast": "Zapnuté bezpečné vyhledávání",
- "enabled_save_search_toast": "Vypnuté bezpečné vyhledávání",
+ "disabled_safe_search_toast": "Vypnuté bezpečné vyhledávání",
+ "enabled_save_search_toast": "Zapnuté bezpečné vyhledávání",
"enabled_table_header": "Zapnuto",
"name_table_header": "Název",
"list_url_table_header": "Seznam URL",
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Odezva s kódem NXDOMAIN",
"blocking_mode_null_ip": "Nulová IP: Odezva s nulovou IP adresou (0.0.0.0 pro A; :: pro AAAA)",
"blocking_mode_custom_ip": "Vlastní IP. odezva s ručně nastavenou IP adresou",
+ "theme_auto": "Autom.",
+ "theme_light": "Světlý",
+ "theme_dark": "Tmavý",
"upstream_dns_client_desc": "Pokud toto pole ponecháte prázdné, AdGuard Home použije servery nakonfigurované v<0>DNS nastavení0>.",
"tracker_source": "Zdroj slídiče",
"source_label": "Zdroj",
@@ -451,6 +454,7 @@
"updates_checked": "Nová verze AdGuard Home je k dispozici\n",
"updates_version_equal": "AdGuard Home je aktuální",
"check_updates_now": "Zkontrolovat aktualizace nyní",
+ "version_request_error": "Kontrola aktualizace se nezdařila. Zkontrolujte prosím připojení k Internetu.",
"dns_privacy": "Soukromí DNS",
"setup_dns_privacy_1": "<0>DNS skrze TLS:0> Použít <1>{{address}}1> řetězec.",
"setup_dns_privacy_2": "<0>DNS skrze HTTPS:0> Použít <1>{{address}}1> řetězec.",
diff --git a/client/src/__locales/da.json b/client/src/__locales/da.json
index e802447d..67288436 100644
--- a/client/src/__locales/da.json
+++ b/client/src/__locales/da.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Svar med NXDOMAIN-kode",
"blocking_mode_null_ip": "Null IP: Svar med nul IP-adresse (0.0.0.0 for A; :: for AAAA)",
"blocking_mode_custom_ip": "Tilpasset IP: Svar med en manuelt indstillet IP-adresse",
+ "theme_auto": "Auto",
+ "theme_light": "Lyst",
+ "theme_dark": "Mørkt",
"upstream_dns_client_desc": "Holdes dette felt tomt, bruger AdGuard Home de i <0>DNS-indstillingerne0> opsatte servere.",
"tracker_source": "Tracker-kilde",
"source_label": "Kilde",
@@ -451,6 +454,7 @@
"updates_checked": "En ny version af AdGuard Home er tilgængelig\n",
"updates_version_equal": "AdGuard Home er opdateret",
"check_updates_now": "Søg efter opdateringer nu",
+ "version_request_error": "Opdateringstjek mislykkedes. Tjek internetforbindelsen.",
"dns_privacy": "DNS-fortrolighed",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Brug <1>{{address}}1> streng.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Brug <1>{{address}}1> streng.",
diff --git a/client/src/__locales/de.json b/client/src/__locales/de.json
index 052812e2..3bbb7aff 100644
--- a/client/src/__locales/de.json
+++ b/client/src/__locales/de.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Mit NXDOMAIN-Code antworten",
"blocking_mode_null_ip": "Null-IP: Antworten mit Null-IP-Adresse (0.0.0.0.0 für A; :: für AAAA)",
"blocking_mode_custom_ip": "Benutzerdefinierte IP: Mit einer manuell eingestellten IP-Adresse antworten",
+ "theme_auto": "Auto",
+ "theme_light": "Hell",
+ "theme_dark": "Dunkel",
"upstream_dns_client_desc": "Wenn Sie dieses Feld leer lassen, verwendet AdGuard Home die Server, die in den <0>DNS-Einstellungen0> konfiguriert sind.",
"tracker_source": "Tracker-Quelle",
"source_label": "Quelle",
@@ -451,6 +454,7 @@
"updates_checked": "Neue Version von AdGuard Home ist jetzt verfügbar",
"updates_version_equal": "AdGuard Home ist aktuell",
"check_updates_now": "Jetzt nach Aktualisierungen suchen",
+ "version_request_error": "Aktualisierungsprüfung fehlgeschlagen. Bitte überprüfen Sie Ihre Internetverbindung.",
"dns_privacy": "DNS-Datenschutz",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Zeichenkette <1>{{address}}1> verwenden.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Zeichenkette <1>{{address}}1> verwenden.",
diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json
index f653bc37..2afa38bd 100644
--- a/client/src/__locales/en.json
+++ b/client/src/__locales/en.json
@@ -454,6 +454,7 @@
"updates_checked": "A new version of AdGuard Home is available",
"updates_version_equal": "AdGuard Home is up-to-date",
"check_updates_now": "Check for updates now",
+ "version_request_error": "Update check failed. Please check your Internet connection.",
"dns_privacy": "DNS Privacy",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Use <1>{{address}}1> string.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Use <1>{{address}}1> string.",
diff --git a/client/src/__locales/es.json b/client/src/__locales/es.json
index 9e22df6f..ad45e6c3 100644
--- a/client/src/__locales/es.json
+++ b/client/src/__locales/es.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Responde con el código NXDOMAIN",
"blocking_mode_null_ip": "IP nulo: Responde con dirección IP cero (0.0.0.0 para A; :: para AAAA)",
"blocking_mode_custom_ip": "IP personalizada: Responde con una dirección IP establecida manualmente",
+ "theme_auto": "Auto",
+ "theme_light": "Claro",
+ "theme_dark": "Oscuro",
"upstream_dns_client_desc": "Si se mantiene este campo vacío, AdGuard Home utilizará los servidores configurados en la <0>configuración del DNS0>.",
"tracker_source": "Fuente del rastreador",
"source_label": "Fuente",
@@ -451,6 +454,7 @@
"updates_checked": "La nueva versión de AdGuard Home está disponible",
"updates_version_equal": "AdGuard Home está actualizado",
"check_updates_now": "Buscar actualizaciones ahora",
+ "version_request_error": "La búsqueda de actualizaciones falló. Por favor revisa tu conexión a Internet.",
"dns_privacy": "DNS cifrado",
"setup_dns_privacy_1": "<0>DNS mediante TLS:0> Utiliza la cadena <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS mediante HTTPS:0> Utiliza la cadena <1>{{address}}1>.",
diff --git a/client/src/__locales/fa.json b/client/src/__locales/fa.json
index 1a6949ae..0f499866 100644
--- a/client/src/__locales/fa.json
+++ b/client/src/__locales/fa.json
@@ -32,8 +32,6 @@
"dhcp_config_saved": "پیکربندی سرور DHCP ذخیره شده است",
"form_error_required": "فیلد مورد نیاز",
"form_error_ip4_format": "فرمت نامعتبر IPv4",
- "form_error_ip4_range_start_format": "قالب IPv4 شروع دامنه نامعتبر است",
- "form_error_ip4_range_end_format": "قالب IPv4 پایان دامنه نامعتبر است",
"form_error_ip4_gateway_format": "قالب IPv4 درگاه نامعتبر است",
"form_error_ip6_format": "فرمت نامعتبر IPv6",
"form_error_ip_format": "فرمت IPv4 نامعتبر است",
@@ -44,7 +42,6 @@
"out_of_range_error": "باید خارج از دامنه باشد\"{{start}}\"-\"{{end}}\"",
"lower_range_start_error": "باید کمتر از شروع دامنه باشد",
"greater_range_start_error": "باید بیشتر از شروع دامنه باشد",
- "greater_range_end_error": "باید بیشتر از پایان دامنه باشد",
"subnet_error": "آدرس ها باید در یک زیرشبکه باشند",
"gateway_or_subnet_invalid": "پوشش زیرشبکه نامعتبر است",
"dhcp_form_gateway_input": "آی پی دروازه",
@@ -422,6 +419,7 @@
"updates_checked": "نسخه جدیدی از AdGuard Home در دسترس است",
"updates_version_equal": "AdGuard Home بروز است",
"check_updates_now": "حالا بررسی برای بروز رسانی",
+ "version_request_error": "بررسی بروزرسانی موفق نشد.لطفا ارتباط اینترنتی خود را بررسی کنید",
"dns_privacy": "حریم خصوصی DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> استفاده از<1>{{address}}1> .",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> استفاده از <1>{{address}}1> .",
diff --git a/client/src/__locales/fi.json b/client/src/__locales/fi.json
index 99df2a56..f222d365 100644
--- a/client/src/__locales/fi.json
+++ b/client/src/__locales/fi.json
@@ -272,7 +272,7 @@
"nxdomain": "NXDOMAIN",
"refused": "REFUSED",
"null_ip": "Tyhjä IP",
- "custom_ip": "Oma IP-osoite",
+ "custom_ip": "Mukautettu IP-osoite",
"blocking_ipv4": "IPv4-esto",
"blocking_ipv6": "IPv6-esto",
"dnscrypt": "DNSCrypt",
@@ -297,7 +297,10 @@
"blocking_mode_refused": "REFUSED: Vastaa REFUSED-koodilla",
"blocking_mode_nxdomain": "NXDOMAIN: Vastaa NXDOMAIN-koodilla",
"blocking_mode_null_ip": "Tyhjä IP: Vastaa IP-nollaosoitteella (0.0.0.0 korvaa A; :: korvaa AAAA)",
- "blocking_mode_custom_ip": "Oma IP: Vastaa itse määritetyllä IP-osoitteella",
+ "blocking_mode_custom_ip": "Mukautettu IP: Vastaa itse määritetyllä IP-osoitteella",
+ "theme_auto": "Automaattinen",
+ "theme_light": "Vaalea",
+ "theme_dark": "Tumma",
"upstream_dns_client_desc": "Jos tämä on tyhjä, käyttää AdGuard Home <0>DNS-asetuksissa0> määritettyjä palvelimia.",
"tracker_source": "Seurannan lähde",
"source_label": "Lähde",
@@ -451,6 +454,7 @@
"updates_checked": "Uusi versio AdGuard Home -ohjelmasta on saatavana\n",
"updates_version_equal": "AdGuard Home on ajan tasalla",
"check_updates_now": "Tarkista päivitykset nyt",
+ "version_request_error": "Päivitystarkistus epäonnistui. Tarkista Internet-yhteytesi.",
"dns_privacy": "DNS-tietosuoja",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Käytä merkkijonoa <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Käytä merkkijonoa <1>{{address}}1>.",
@@ -614,7 +618,7 @@
"cache_ttl_max_override_desc": "Määritä DNS-välimuistin kohteiden enimmäiselinaika (sekunteina).",
"ttl_cache_validation": "Välimuistin vähimmäiselinajan on oltava pienempi tai sama kuin enimmäiselinajan",
"cache_optimistic": "Optimistinen välimuisti",
- "cache_optimistic_desc": "Pakota AdGuard Home vastaamaan välimuistista vaikka sen tiedot olisivat vanhentuneet. Pyri samalla myös päivittämään tiedot.",
+ "cache_optimistic_desc": "Pakota AdGuard Home vastaamaan välimuistista vaikka tiedot olisivat vanhentuneet. Pyri samalla myös päivittämään tiedot.",
"filter_category_general": "Yleiset",
"filter_category_security": "Turvallisuus",
"filter_category_regional": "Alueelliset",
diff --git a/client/src/__locales/fr.json b/client/src/__locales/fr.json
index 240ba4f0..a99e2baa 100644
--- a/client/src/__locales/fr.json
+++ b/client/src/__locales/fr.json
@@ -222,7 +222,7 @@
"updated_upstream_dns_toast": "Serveurs en amont enregistrés",
"dns_test_ok_toast": "Les serveurs DNS spécifiés fonctionnent correctement",
"dns_test_not_ok_toast": "Impossible d'utiliser le serveur « {{key}} »: veuillez vérifier si le nom saisi est bien correct",
- "dns_test_warning_toast": "L'amont «{{key}}» ne répond pas aux demandes de test et peut ne pas fonctionner correctement",
+ "dns_test_warning_toast": "L'amont « {{key}} » ne répond pas aux demandes de test et peut ne pas fonctionner correctement",
"unblock": "Débloquer",
"block": "Bloquer",
"disallow_this_client": "Interdire ce client",
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN : Répondre avec le code NXDOMAIN",
"blocking_mode_null_ip": "IP nulle : Répondre avec une adresse IP nulle (0.0.0.0 pour A ; :: pour AAAA)",
"blocking_mode_custom_ip": "IP personnalisée : Répondre avec une adresse IP définie manuellement",
+ "theme_auto": "Auto",
+ "theme_light": "Thème clair",
+ "theme_dark": "Thème sombre",
"upstream_dns_client_desc": "Si vous laissez ce champ vide, AdGuard Home utilisera les serveurs configurés dans les <0>paramètres DNS0>.",
"tracker_source": "Source du traceur",
"source_label": "Source",
@@ -451,6 +454,7 @@
"updates_checked": "Une nouvelle version de AdGuard Home est disponible",
"updates_version_equal": "AdGuard Home est à jour",
"check_updates_now": "Vérifier les mises à jour",
+ "version_request_error": "Impossible de vérifier les mises à jour. Veuillez vérifier votre connexion internet.",
"dns_privacy": "Confidentialité DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS :0> Utiliser le string <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS :0> Utiliser le string <1>{{address}}1>.",
diff --git a/client/src/__locales/hr.json b/client/src/__locales/hr.json
index 7bb5f2cf..0aef21df 100644
--- a/client/src/__locales/hr.json
+++ b/client/src/__locales/hr.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Odgovor s NXDOMAIN kôdom",
"blocking_mode_null_ip": "Nuliran IP: Odgovor s nuliranom IP adresom (0.0.0.0 za A; :: za AAAA)",
"blocking_mode_custom_ip": "Prilagođeni IP: Odgovor s ručno postavljenom IP adresom",
+ "theme_auto": "Auto",
+ "theme_light": "Svijetla",
+ "theme_dark": "Tamna",
"upstream_dns_client_desc": "Ako ovo polje ostane prazno, AdGuard Home će upotrijebiti poslužitelje postavljene u <0>DNS postavkama0>.",
"tracker_source": "Izvor pratitelja",
"source_label": "Izvor",
@@ -451,6 +454,7 @@
"updates_checked": "Dostupna je nova verzija AdGuard Home-a",
"updates_version_equal": "AdGuard Home je ažuriran",
"check_updates_now": "Provjeri ažuriranja sada",
+ "version_request_error": "Ne uspješna provjera ažuriranja. Provjerite vašu Internetsku vezu.",
"dns_privacy": "DNS privatnost",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Koristite <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Koristite <1>{{address}}1>.",
diff --git a/client/src/__locales/hu.json b/client/src/__locales/hu.json
index 85ac4276..aef5766d 100644
--- a/client/src/__locales/hu.json
+++ b/client/src/__locales/hu.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Az NXDOMAIN kóddal fog válaszolni",
"blocking_mode_null_ip": "Null IP: Nullákból álló IP-címmel válaszol (0.0.0.0 for A; :: for AAAA)",
"blocking_mode_custom_ip": "Egyedi IP: Válasz egy kézzel beállított IP címmel",
+ "theme_auto": "Auto",
+ "theme_light": "Világos",
+ "theme_dark": "Sötét",
"upstream_dns_client_desc": "Ha üresen hagyja ezt a mezőt, az AdGuard Home azokat a szervereket fogja használni, amik a <0>DNS beállításokban0> vannak beállítva.",
"tracker_source": "Követő forrása",
"source_label": "Forrás",
@@ -451,6 +454,7 @@
"updates_checked": "Elérhető az AdGuard Home új verziója",
"updates_version_equal": "Az AdGuard Home naprakész",
"check_updates_now": "Frissítések ellenőrzése most",
+ "version_request_error": "A frissítések ellenőrzése sikertelen. Ellenőrizze az internetkapcsolatot.",
"dns_privacy": "DNS Adatvédelem",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Használja a(z) <1>{{address}}1> szöveget.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Használja a(z) <1>{{address}}1> szöveget.",
diff --git a/client/src/__locales/id.json b/client/src/__locales/id.json
index b6eafcbb..85793d9a 100644
--- a/client/src/__locales/id.json
+++ b/client/src/__locales/id.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Respon pakai kode NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Respon pakai alamat IP kosong (0.0.0.0 untuk A; :: untuk AAAA)",
"blocking_mode_custom_ip": "IP kustom: respon dengan alamat IP yang diset secara manual",
+ "theme_auto": "Auto",
+ "theme_light": "Terang",
+ "theme_dark": "Gelap",
"upstream_dns_client_desc": "Jika Anda biarkan bidang ini kosong, AdGuard Home akan memakai server yang dikonfigurasi di<0>Pengaturan DNS0>.",
"tracker_source": "Sumber pelacak",
"source_label": "Sumber",
diff --git a/client/src/__locales/it.json b/client/src/__locales/it.json
index 5aad22f9..e09fd79c 100644
--- a/client/src/__locales/it.json
+++ b/client/src/__locales/it.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Rispondi con il codice NXDOMAIN",
"blocking_mode_null_ip": "IP nullo: Rispondi con indirizzo IP zero (0.0.0.0 per A; :: per AAAA)",
"blocking_mode_custom_ip": "IP personalizzato: Rispondi con un indirizzo IP impostato manualmente",
+ "theme_auto": "Auto",
+ "theme_light": "Chiaro",
+ "theme_dark": "Scuro",
"upstream_dns_client_desc": "Se lasci questo spazio vuoto, AdGuard Home utilizzerà i server configurati nelle <0>impostazioni DNS0>.",
"tracker_source": "Origine del tracciatore",
"source_label": "Fonte",
@@ -451,6 +454,7 @@
"updates_checked": "Nuova versione di AdGuard Home è disponibile",
"updates_version_equal": "AdGuard Home è aggiornato",
"check_updates_now": "Ricerca aggiornamenti ora",
+ "version_request_error": "Ricerca aggiornamenti non riuscita. Per favore controlla la tua connessione internet.",
"dns_privacy": "Privacy DNS",
"setup_dns_privacy_1": "<0>DNS su TLS:0> Utilizza la stringa <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS su HTTPS:0> Utilizza la stringa <1>{{address}}1>.",
diff --git a/client/src/__locales/ja.json b/client/src/__locales/ja.json
index 860a597d..1ae0a1f8 100644
--- a/client/src/__locales/ja.json
+++ b/client/src/__locales/ja.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN:NXDOMAINコードで応答します",
"blocking_mode_null_ip": "Null IP:ゼロのIPアドレスで応答します(Aの場合は0.0.0.0; AAAAの場合は::)",
"blocking_mode_custom_ip": "カスタムIP:手動で設定されたIPアドレスで応答します",
+ "theme_auto": "自動",
+ "theme_light": "ライト",
+ "theme_dark": "ダーク",
"upstream_dns_client_desc": "このフィールドを未入力のままにすると、AdGuard Homeは<0>DNS設定0>で構成されたサーバを使用します。",
"tracker_source": "追跡元",
"source_label": "ソース",
@@ -451,6 +454,7 @@
"updates_checked": "AdGuard Homeの新バージョンが利用可能です。",
"updates_version_equal": "AdGuard Homeは既に最新です",
"check_updates_now": "今すぐアップデートを確認する",
+ "version_request_error": "アップデート確認に失敗しました。インターネット接続を確認してください。",
"dns_privacy": "DNSプライバシー",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> <1>{{address}}1>という文字列を使用してください。",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> <1>{{address}}1>という文字列を使用してください。",
diff --git a/client/src/__locales/ko.json b/client/src/__locales/ko.json
index 87e9e3df..9847db95 100644
--- a/client/src/__locales/ko.json
+++ b/client/src/__locales/ko.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: NXDOMAIN 코드로 응답",
"blocking_mode_null_ip": "Null IP: 제로 IP 주소 (A는 0.0.0.0; AAAA는 ::) 로 응답합니다",
"blocking_mode_custom_ip": "커스텀 IP: 직접 설정한 IP 주소로 응답합니다",
+ "theme_auto": "자동",
+ "theme_light": "라이트 테마",
+ "theme_dark": "다크 테마",
"upstream_dns_client_desc": "이 값을 비워둔다면 AdGuard Home은 <0>DNS 설정0>에 설정되어 있는 값을 사용합니다.",
"tracker_source": "추적기 소스",
"source_label": "소스",
@@ -451,6 +454,7 @@
"updates_checked": "AdGuard Home의 새 버전을 사용할 수 있습니다",
"updates_version_equal": "AdGuard Home 최신 상태입니다.",
"check_updates_now": "지금 업데이트 확인",
+ "version_request_error": "업데이트 체크에 실패했습니다. 인터넷 연결 상태를 확인해주세요.",
"dns_privacy": "DNS 프라이버시",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> <1>{{address}}1> 사용하세요.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> <1>{{address}}1> 사용하세요.",
diff --git a/client/src/__locales/nl.json b/client/src/__locales/nl.json
index 4edecded..9db3884f 100644
--- a/client/src/__locales/nl.json
+++ b/client/src/__locales/nl.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Reageer met NXDOMAIN code",
"blocking_mode_null_ip": "Nul IP: Reageer met een nul IP address (0.0.0.0 voor A; :: voor AAAA)",
"blocking_mode_custom_ip": "Aangepast IP: Reageer met een handmatige ingesteld IP adres",
+ "theme_auto": "Automatisch",
+ "theme_light": "Licht",
+ "theme_dark": "Donker",
"upstream_dns_client_desc": "Indien je dit veld leeglaat zal AdGuard Home de servers welke zijn ingesteld in de <0>DNS instellingen0> gebruiken.",
"tracker_source": "Bron volger",
"source_label": "Bron",
@@ -451,6 +454,7 @@
"updates_checked": "Een nieuwe versie van AdGuard Home is beschikbaar\n",
"updates_version_equal": "AdGuard Home is actueel",
"check_updates_now": "Controleer op updates",
+ "version_request_error": "Updatecontrole mislukt. Controleer je internetverbinding.",
"dns_privacy": "DNS Privacy",
"setup_dns_privacy_1": "<0>DNS-via-TLS:0> Gebruik <1>{{address}}1> string.",
"setup_dns_privacy_2": "<0>DNS-via-HTTPS:0> Gebruik <1>{{address}}1> string.",
diff --git a/client/src/__locales/no.json b/client/src/__locales/no.json
index 07499b86..9756f88a 100644
--- a/client/src/__locales/no.json
+++ b/client/src/__locales/no.json
@@ -433,6 +433,7 @@
"updates_checked": "En ny versjon av AdGuard Home er tilgjengelig",
"updates_version_equal": "AdGuard Home er fullt oppdatert",
"check_updates_now": "Se etter oppdateringer nå",
+ "version_request_error": "Oppdateringssjekken mislyktes. Vennligst sjekk internettforbindelsen din.",
"dns_privacy": "DNS-privatliv",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Benytt <1>{{address}}1>-strengen.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Benytt <1>{{address}}1>-strengen.",
diff --git a/client/src/__locales/pl.json b/client/src/__locales/pl.json
index fc648088..513dfcf3 100644
--- a/client/src/__locales/pl.json
+++ b/client/src/__locales/pl.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Odpowiedz kodem NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Odpowiedz z zerowym adresem IP (0.0.0.0 dla A; :: dla AAAA)",
"blocking_mode_custom_ip": "Niestandardowy adres IP: Odpowiedz ręcznie ustawionym adresem IP",
+ "theme_auto": "Auto",
+ "theme_light": "Jasny",
+ "theme_dark": "Ciemny",
"upstream_dns_client_desc": "Jeśli to pole pozostanie puste, AdGuard Home użyje serwerów skonfigurowanych w <0>Ustawieniach DNS0>.",
"tracker_source": "Źródło skryptu śledzącego",
"source_label": "Źródło",
@@ -451,6 +454,7 @@
"updates_checked": "Dostępna jest nowa wersja programu AdGuard Home\n",
"updates_version_equal": "AdGuard Home jest aktualny",
"check_updates_now": "Sprawdź aktualizacje teraz",
+ "version_request_error": "Sprawdzanie aktualizacji zakończone niepowodzeniem. Sprawdź swoje połączenie z internetem.",
"dns_privacy": "Prywatny DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Skorzystaj z adresu <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Skorzystaj z adresu <1>{{address}}1>.",
diff --git a/client/src/__locales/pt-br.json b/client/src/__locales/pt-br.json
index c2df1966..c7af3cc6 100644
--- a/client/src/__locales/pt-br.json
+++ b/client/src/__locales/pt-br.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Responder com o código NXDOMAIN",
"blocking_mode_null_ip": "IP nulo: Responder com endereço IP zero (0.0.0.0 para A; :: para AAAA)",
"blocking_mode_custom_ip": "IP personalizado: Responder com um endereço IP definido manualmente",
+ "theme_auto": "Automático",
+ "theme_light": "Claro",
+ "theme_dark": "Escuro",
"upstream_dns_client_desc": "Se você mantiver este campo vazio, o AdGuard Home usará os servidores configurados nas configurações <0>DNS0>.",
"tracker_source": "Fonte do rastreador",
"source_label": "Fonte",
@@ -451,6 +454,7 @@
"updates_checked": "Uma nova versão do AdGuard Home está disponível\n",
"updates_version_equal": "O AdGuard Home está atualizado.",
"check_updates_now": "Verificar atualizações",
+ "version_request_error": "A verificação de atualização falhou. Por favor, verifique sua conexão com a internet.",
"dns_privacy": "Privacidade de DNS",
"setup_dns_privacy_1": "<0>DNS-sobre-TLS:0> Use <1>{{address}}1> string.",
"setup_dns_privacy_2": "<0>DNS-sobre-HTTPS:0> Use <1>{{address}}1> string.",
diff --git a/client/src/__locales/pt-pt.json b/client/src/__locales/pt-pt.json
index d1203499..b710fe3d 100644
--- a/client/src/__locales/pt-pt.json
+++ b/client/src/__locales/pt-pt.json
@@ -49,7 +49,7 @@
"out_of_range_error": "Deve estar fora do intervalo \"{{start}}\"-\"{{end}}\"",
"lower_range_start_error": "Deve ser inferior ao início do intervalo",
"greater_range_start_error": "Deve ser maior que o início do intervalo",
- "subnet_error": "Os endereços devem estar em uma sub-rede",
+ "subnet_error": "Os endereços devem estar numa sub-rede",
"gateway_or_subnet_invalid": "Máscara de sub-rede inválida",
"dhcp_form_gateway_input": "IP do gateway",
"dhcp_form_subnet_input": "Máscara de sub-rede",
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Responder com o código NXDOMAIN",
"blocking_mode_null_ip": "IP nulo: Responder com endereço IP zero (0.0.0.0 para A; :: para AAAA)",
"blocking_mode_custom_ip": "IP personalizado: Responder com um endereço IP definido manualmente",
+ "theme_auto": "Automático",
+ "theme_light": "Claro",
+ "theme_dark": "Escuro",
"upstream_dns_client_desc": "Se mantiver esse campo vazio, o AdGuard Home usará os servidores configurados nas <0>Definições de DNS0>.",
"tracker_source": "Fonte do rastreador",
"source_label": "Fonte",
@@ -332,10 +335,10 @@
"install_devices_router": "Router",
"install_devices_router_desc": "Esta configuração cobre automaticamente todos os dispositivos conectados ao seu router doméstico, sem a necessidade de configurar cada um deles manualmente.",
"install_devices_address": "O servidor de DNS do AdGuard Home está a capturar os seguintes endereços",
- "install_devices_router_list_1": "Abra as preferências do seu roteador. Normalmente, tu podes acessá-lo de teu navegador por meio de um URL, como http://192.168.0.1/ ou http://192.168.1.1/. Tu podes ser solicitado a inserir uma palavra-passe. Se tu não se lembrar, muitas vezes tu podes repor a palavra-passe pressionando um botão no próprio roteador, mas esteja ciente de que se esse procedimento for escolhido, tu provavelmente perderás toda a definição do roteador. Se o teu roteador requer uma aplicação para configurá-lo, instale a aplicação no seu telefone ou PC e use-o para acessar as definições do roteador.",
+ "install_devices_router_list_1": "Abra as preferências do seu router. Normalmente, tu podes acessá-lo de teu navegador por meio de um URL, como http://192.168.0.1/ ou http://192.168.1.1/. Tu podes ser solicitado a inserir uma palavra-passe. Se tu não se lembrar, muitas vezes tu podes repor a palavra-passe pressionando um botão no próprio roteador, mas esteja ciente de que se esse procedimento for escolhido, tu provavelmente perderás toda a definição do router. Se o teu router requer uma aplicação para configurá-lo, instale a aplicação no seu telefone ou PC e use-o para acessar as definições do router.",
"install_devices_router_list_2": "Encontre as configurações de DNS. Procure as letras DNS ao lado de um campo que permite dois ou três conjuntos de números, cada um dividido em quatro grupos de um a três números.",
"install_devices_router_list_3": "Insira aqui seu servidor do AdGuard Home.",
- "install_devices_router_list_4": "Em alguns tipos de roteador, um servidor DNS personalizado não pode ser configurado. Nesse caso, configurar o AdGuard Home como um <0>Servidor DHCP0> pode ajudar. Caso contrário, tu deve verificar o manual do router sobre como personalizar os servidores DNS em seu modelo de router específico.",
+ "install_devices_router_list_4": "Em alguns tipos de router, um servidor DNS personalizado não pode ser configurado. Nesse caso, configurar o AdGuard Home como um <0>Servidor DHCP0> pode ajudar. Caso contrário, tu deves verificar o manual do router sobre como personalizar os servidores DNS no seu modelo de router específico.",
"install_devices_windows_list_1": "Abra o Painel de Controlo através do Menu Iniciar ou pela Pesquisa do Windows.",
"install_devices_windows_list_2": "Entre na categoria Rede e Internet e depois clique em Central de Rede e Partilha.",
"install_devices_windows_list_3": "No painel esquerdo, clique em \"Alterar configurações do adaptador\".",
@@ -451,6 +454,7 @@
"updates_checked": "Uma nova versão do AdGuard Home está disponível\n",
"updates_version_equal": "O AdGuard Home está atualizado",
"check_updates_now": "Verificar atualizações",
+ "version_request_error": "A verificação de atualização falhou. Verifique a sua ligação à internet.",
"dns_privacy": "Privacidade de DNS",
"setup_dns_privacy_1": "<0>DNS-sobre-TLS:0> Use <1>{{address}}1> string.",
"setup_dns_privacy_2": "<0>DNS-sobre-HTTPS:0> Use <1>{{address}}1> string.",
@@ -579,7 +583,7 @@
"client_blocked": "Cliente \"{{ip}}\" foi bloqueado com sucesso",
"client_unblocked": "Cliente \"{{ip}}\" foi desbloqueado com sucesso",
"static_ip": "Endereço de IP estático",
- "static_ip_desc": "O AdGuard Home é um servidor, portanto, ele precisa de um endereço de IP estático para funcionar corretamente. Caso contrário, em algum momento, seu roteador poderá atribuir um novo endereço de IP neste dispositivo.",
+ "static_ip_desc": "O AdGuard Home é um servidor, portanto, ele precisa de um endereço de IP estático para funcionar corretamente. Caso contrário, em algum momento, seu router poderá atribuir um novo endereço de IP neste dispositivo.",
"set_static_ip": "Definir um endereço de IP estático",
"install_static_ok": "Boas notícias! O endereço de IP estático já está configurado",
"install_static_error": "O AdGuard Home não pode configurar automaticamente para esta interface de rede. Por favor, procure uma instrução sobre como fazer isso manualmente.",
diff --git a/client/src/__locales/ro.json b/client/src/__locales/ro.json
index 696f1590..69f7281c 100644
--- a/client/src/__locales/ro.json
+++ b/client/src/__locales/ro.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Răspunde cu codul NXDOMAIN",
"blocking_mode_null_ip": "IP nul: răspunde cu o adresă IP zero (0.0.0.0 pentru A; :: pentru AAAA)",
"blocking_mode_custom_ip": "IP personalizat: răspunde cu o adresă IP setată manual",
+ "theme_auto": "Auto",
+ "theme_light": "Luminoasă",
+ "theme_dark": "Sombră",
"upstream_dns_client_desc": "Dacă mențineți acest câmp gol, AdGuard Home va folosi serverele configurate în <0>setările DNS0>.",
"tracker_source": "Sursă tracker",
"source_label": "Sursă",
@@ -451,6 +454,7 @@
"updates_checked": "Este disponibilă o nouă versiune de AdGuard Home\n",
"updates_version_equal": "AdGuard Home este la zi",
"check_updates_now": "Verificați actualizările acum",
+ "version_request_error": "Verificarea actualizării nu a reușit. Verificați conexiunea internet.",
"dns_privacy": "Confidențialitate DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Folosiți stringul <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Folosiți stringul <1>{{address}}1>.",
diff --git a/client/src/__locales/ru.json b/client/src/__locales/ru.json
index 43e9c55d..afe8c5cf 100644
--- a/client/src/__locales/ru.json
+++ b/client/src/__locales/ru.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Отвечает с кодом NXDOMAIN\n",
"blocking_mode_null_ip": "Нулевой IP: Отвечает с нулевым IP-адресом (0.0.0.0 для A; :: для AAAA)",
"blocking_mode_custom_ip": "Пользовательский IP: Отвечает с вручную настроенным IP-адресом",
+ "theme_auto": "Авто",
+ "theme_light": "Светлая",
+ "theme_dark": "Тёмная",
"upstream_dns_client_desc": "Если оставить поле пустым, AdGuard Home будет обращаться к серверам, указанным в <0>настройках DNS0>.",
"tracker_source": "Источник трекинга",
"source_label": "Источник",
@@ -451,6 +454,7 @@
"updates_checked": "Доступна новая версия AdGuard Home",
"updates_version_equal": "Версия AdGuard Home актуальна",
"check_updates_now": "Проверить обновления",
+ "version_request_error": "Ошибка при проверке наличия обновлений. Проверьте ваше интернет-соединение.",
"dns_privacy": "Зашифрованный DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Используйте строку <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Используйте строку <1>{{address}}1>.",
diff --git a/client/src/__locales/si-lk.json b/client/src/__locales/si-lk.json
index a9c8d378..214acf11 100644
--- a/client/src/__locales/si-lk.json
+++ b/client/src/__locales/si-lk.json
@@ -30,8 +30,6 @@
"dhcp_ipv6_settings": "ග.ධා.වි.කෙ. අ.ජා.කෙ. 6 සැකසුම්",
"form_error_required": "ඇවැසි ක්ෂේත්රයකි",
"form_error_ip4_format": "IPv4 ලිපිනය වලංගු නොවේ",
- "form_error_ip4_range_start_format": "පරාසය ආරම්භයේ වලංගු නොවන අ.ජා.කෙ.4 ලිපිනයකි",
- "form_error_ip4_range_end_format": "පරාසය අවසානයේ වලංගු නොවන අ.ජා.කෙ.4 ලිපිනයකි",
"form_error_ip6_format": "වලංගු නොවන අ.ජා.කෙ.6 ලිපිනයකි",
"form_error_ip_format": "අ.ජා.කෙ. (IP) ලිපිනය වලංගු නොවේ",
"form_error_mac_format": "මා.ප්ර.පා. ලිපිනය වලංගු නොවේ",
@@ -42,7 +40,6 @@
"out_of_range_error": "\"{{start}}\"-\"{{end}}\" පරාසයෙන් පිට විය යුතුය",
"lower_range_start_error": "පරාසය ආරම්භයට වඩා අඩු විය යුතුය",
"greater_range_start_error": "පරාසය ආරම්භයට වඩා වැඩි විය යුතුය",
- "greater_range_end_error": "පරාසය අවසානයට වඩා වැඩි විය යුතුය",
"subnet_error": "ලිපින එක් අනුජාලයක තිබිය යුතුය",
"dhcp_form_range_title": "අ.ජා. කෙ. (IP) ලිපින පරාසය",
"dhcp_form_range_start": "පරාසය ආරම්භය",
diff --git a/client/src/__locales/sk.json b/client/src/__locales/sk.json
index c0919a1d..de0076a4 100644
--- a/client/src/__locales/sk.json
+++ b/client/src/__locales/sk.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Odpovedať kódom NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Odpoveď s nulovou IP adresou (0.0.0.0 pre A; :: pre AAAA)",
"blocking_mode_custom_ip": "Vlastná IP adresa: Odpovedzte s manuálne nastavenou IP adresou",
+ "theme_auto": "Auto",
+ "theme_light": "Svetlá",
+ "theme_dark": "Tmavá",
"upstream_dns_client_desc": "Ak ponecháte toto pole prázdne, AdGuard Home použije servery nakonfigurované v <0>nastaveniach DNS0>.",
"tracker_source": "Zdroj sledovania",
"source_label": "Zdroj",
@@ -451,6 +454,7 @@
"updates_checked": "K dispozícii je nová verzia aplikácie AdGuard Home\n",
"updates_version_equal": "AdGuard Home je aktuálny",
"check_updates_now": "Skontrolovať aktualizácie teraz",
+ "version_request_error": "Kontrola aktualizácie zlyhala. Skontrolujte svoje internetové pripojenie.",
"dns_privacy": "DNS súkromie",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Použiť <1>{{address}}1> reťazec.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Použiť <1>{{address}}1> reťazec.",
diff --git a/client/src/__locales/sl.json b/client/src/__locales/sl.json
index 112feede..e8f6635c 100644
--- a/client/src/__locales/sl.json
+++ b/client/src/__locales/sl.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Odziv s kodo NXDOMAIN",
"blocking_mode_null_ip": "Prazen IP: Odziv z ničelnim naslovom IP (0.0.0.0 za A; :: za AAAA)",
"blocking_mode_custom_ip": "IP po meri: Odziv z ročno nastavljenim naslovom IP",
+ "theme_auto": "Auto",
+ "theme_light": "Svetla tema",
+ "theme_dark": "Temna tema",
"upstream_dns_client_desc": "Če pustite to polje prazno, bo AdGuard Home uporabil strežnike, konfigurirane v <0>nastavitvah DNS0>.",
"tracker_source": "Vir sledilca",
"source_label": "Vir",
@@ -451,6 +454,7 @@
"updates_checked": "Na voljo je nova različica programa AdGuard Home\n",
"updates_version_equal": "AdGuard Home je posodobljen",
"check_updates_now": "Preveri obstoj posodobitev zdaj",
+ "version_request_error": "Posodobitev ni uspela. Preverite vašo internetno povezavo.",
"dns_privacy": "Zasebnost DNS",
"setup_dns_privacy_1": "<0>DNS-prek-TLS:0> Uporabite niz <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-prek-HTTPS:0> Uporabite niz <1>{{address}}1>.",
diff --git a/client/src/__locales/sr-cs.json b/client/src/__locales/sr-cs.json
index e25088f0..637f64cd 100644
--- a/client/src/__locales/sr-cs.json
+++ b/client/src/__locales/sr-cs.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Odgovara sa NXDOMAIN kodom",
"blocking_mode_null_ip": "Null IP: Odgovara sa zero IP adresom (0.0.0.0 za A; :: za AAAA)",
"blocking_mode_custom_ip": "Prilagođeni IP: Odgovara sa ručno podešenom IP adresom",
+ "theme_auto": "Auto",
+ "theme_light": "Svetla tema",
+ "theme_dark": "Tamna tema",
"upstream_dns_client_desc": "AKo ovo polje ostavite prazno, AdGuard Home će koristiti servere konfigurisane u <0>DNS postavkama0>.",
"tracker_source": "Izvor praćenja",
"source_label": "Izvor",
@@ -451,6 +454,7 @@
"updates_checked": "Dostupna je nova verzija AdGuard Home-a",
"updates_version_equal": "AdGuard Home je ažuriran na najnoviju verziju",
"check_updates_now": "Proveri da li postoje ispravke",
+ "version_request_error": "Provera ažuriranja nije uspela. Proverite svoju vezu sa internetom.",
"dns_privacy": "DNS privatnost",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> koristi <1>{{address}}1> string.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> koristi <1>{{address}}1> string.",
diff --git a/client/src/__locales/sv.json b/client/src/__locales/sv.json
index 24b8c845..94ca4570 100644
--- a/client/src/__locales/sv.json
+++ b/client/src/__locales/sv.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Svara med NXDOMAIN kod",
"blocking_mode_null_ip": "Null IP: Svara med noll IP adress (0.0.0.0 för A; :: för AAAA)",
"blocking_mode_custom_ip": "Anpassad IP: Svara med en manuellt inställd IP adress",
+ "theme_auto": "Auto",
+ "theme_light": "Ljust",
+ "theme_dark": "Mörkt",
"upstream_dns_client_desc": "Om detta fält är tomt kommer AdGuard Home att använda de servrar som konfigurerats i <0>DNS inställningarna0>.",
"tracker_source": "Spårningskälla",
"source_label": "Källa",
@@ -451,6 +454,7 @@
"updates_checked": "En ny version av AdGuard Home är tillgänglig\n",
"updates_version_equal": "AdGuard Home är uppdaterat",
"check_updates_now": "Sök efter uppdateringar nu",
+ "version_request_error": "Uppdateringskontroll misslyckades. Kontrollera din internetanslutning.",
"dns_privacy": "DNS-Integritet",
"setup_dns_privacy_1": "<0>DNS-över-TLS:0> Använd: <1>{{address}}1>",
"setup_dns_privacy_2": "<0>DNS-över-HTTPS:0> Använd: <1>{{address}}1>",
diff --git a/client/src/__locales/tr.json b/client/src/__locales/tr.json
index 62eec38d..72acb887 100644
--- a/client/src/__locales/tr.json
+++ b/client/src/__locales/tr.json
@@ -128,14 +128,14 @@
"number_of_dns_query_days": "Son {{count}} gün boyunca işlenen DNS sorgularının sayısı",
"number_of_dns_query_days_plural": "Son {{count}} gün boyunca işlenen DNS sorgularının sayısı",
"number_of_dns_query_24_hours": "Son 24 saat içinde işlenen DNS sorgularının sayısı",
- "number_of_dns_query_blocked_24_hours": "Reklam engelleme filtreleri ve ana makine engel listeleri tarafından engellenen DNS isteklerinin sayısı",
+ "number_of_dns_query_blocked_24_hours": "Reklam engelleme filtreleri ve hosts engel listeleri tarafından engellenen DNS isteklerinin sayısı",
"number_of_dns_query_blocked_24_hours_by_sec": "AdGuard gezinti koruması modülü tarafından engellenen DNS isteklerinin sayısı",
"number_of_dns_query_blocked_24_hours_adult": "Engellenen yetişkin içerikli sitelerin sayısı",
"enforced_save_search": "Uygulanan güvenli arama",
"number_of_dns_query_to_safe_search": "Güvenli Aramanın uygulandığı arama motorlarına gönderilen DNS isteklerinin sayısı",
"average_processing_time": "Ortalama işlem süresi",
"average_processing_time_hint": "Bir DNS isteğinin milisaniye cinsinden ortalama işlem süresi",
- "block_domain_use_filters_and_hosts": "Filtre ve ana makine listelerini kullanarak alan adlarını engelle",
+ "block_domain_use_filters_and_hosts": "Filtre ve hosts dosyalarını kullanarak alan adlarını engelle",
"filters_block_toggle_hint": "Filtreler ayarlarında engelleme kuralları oluşturabilirsiniz.",
"use_adguard_browsing_sec": "AdGuard gezinti koruması web hizmetini kullan",
"use_adguard_browsing_sec_hint": "AdGuard Home, alan adının gezinti koruması web hizmeti tarafından engellenip engellenmediğini kontrol eder. Kontrolü gerçekleştirmek için gizlilik dostu arama API'sini kullanır: sunucuya yalnızca SHA256 karma alan adının kısa bir ön eki gönderilir.",
@@ -177,7 +177,7 @@
"edit_table_action": "Düzenle",
"delete_table_action": "Sil",
"elapsed": "Geçen süre",
- "filters_and_hosts_hint": "AdGuard Home, temel reklam engelleme kurallarını ve ana makine dosyalarının söz dizimini anlar.",
+ "filters_and_hosts_hint": "AdGuard Home, temel reklam engelleme kurallarını ve hosts dosyalarının söz dizimini anlar.",
"no_blocklist_added": "Engel listesi eklenmedi",
"no_whitelist_added": "İzin listesi eklenmedi",
"add_blocklist": "Engel listesi ekle",
@@ -197,8 +197,8 @@
"form_error_url_format": "Geçersiz URL biçimi",
"form_error_url_or_path_format": "Geçersiz URL adresi veya dosya yolu",
"custom_filter_rules": "Özel filtreleme kuralları",
- "custom_filter_rules_hint": "Her satıra bir kural girin. Reklam engelleme kuralı veya ana makine dosyası söz dizimi kullanabilirsiniz.",
- "system_host_files": "Sistem ana makine dosyaları",
+ "custom_filter_rules_hint": "Her satıra bir kural girin. Reklam engelleme kuralı veya hosts dosyası söz dizimi kullanabilirsiniz.",
+ "system_host_files": "Sistem hosts dosyaları",
"examples_title": "Örnekler",
"example_meaning_filter_block": "example.org'a ve tüm alt alanlarına erişimi engeller;",
"example_meaning_filter_whitelist": "example.org'a ve tüm alt alanlarına erişimin engelini kaldırır;",
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: NXDOMAIN koduyla yanıt verin",
"blocking_mode_null_ip": "Boş IP: Sıfır IP adresiyle yanıt verin (A için 0.0.0.0; :: AAAA için)",
"blocking_mode_custom_ip": "Özel IP: El ile ayarlanmış bir IP adresiyle yanıt verin",
+ "theme_auto": "Otomatik",
+ "theme_light": "Açık",
+ "theme_dark": "Koyu",
"upstream_dns_client_desc": "Bu alanı boş bırakırsanız, AdGuard Home, <0>DNS ayarlarında0> yapılandırılan sunucuları kullanır.",
"tracker_source": "İzleyici kaynağı",
"source_label": "Kaynak",
@@ -347,12 +350,12 @@
"install_devices_macos_list_3": "Listedeki ilk bağlantıyı seçin ve Gelişmiş öğesine tıklayın.",
"install_devices_macos_list_4": "DNS sekmesini seçin ve AdGuard Home sunucunuzun adreslerini girin.",
"install_devices_android_list_1": "Android Menüsü ana ekranından Ayarlar'a dokunun.",
- "install_devices_android_list_2": "Menüde bulunan Wi-Fi öğesine dokunun. Mevcut tüm ağlar listelenecektir (mobil ağlar için özel DNS sunucusu ayarlanamaz).",
+ "install_devices_android_list_2": "Menüde bulunan Wi-Fi öğesine dokunun. Mevcut tüm ağlar listelenecektir (telefon ağlar için özel DNS sunucusu ayarlanamaz).",
"install_devices_android_list_3": "Bağlı olduğunuz ağın üzerine basılı tutun ve Ağı Değiştir'e dokunun.",
"install_devices_android_list_4": "Bazı cihazlarda, diğer ayarları görmek için \"Gelişmiş\" seçeneğini seçmeniz gerekebilir. Android DNS ayarlarınızı yapmak için IP ayarlarını DHCP modundan Statik moda değiştirmeniz gerekir.",
"install_devices_android_list_5": "DNS 1 ve DNS 2 değerlerini AdGuard Home sunucunuzun adresleriyle değiştirin.",
"install_devices_ios_list_1": "Ana ekrandan Ayarlar'a dokunun.",
- "install_devices_ios_list_2": "Sol menüde bulunan Wi-Fi bölümüne girin (mobil ağlar için özel DNS sunucusu ayarlanamaz).",
+ "install_devices_ios_list_2": "Sol menüde bulunan Wi-Fi bölümüne girin (telefon ağlar için özel DNS sunucusu ayarlanamaz).",
"install_devices_ios_list_3": "O anda aktif olan ağın adına dokunun.",
"install_devices_ios_list_4": "DNS alanına AdGuard Home sunucunuzun adreslerini girin.",
"get_started": "Başlayın",
@@ -451,6 +454,7 @@
"updates_checked": "AdGuard Home'un yeni bir sürümü mevcut",
"updates_version_equal": "AdGuard Home yazılımı güncel durumda",
"check_updates_now": "Güncellemeleri şimdi denetle",
+ "version_request_error": "Güncelleme denetimi başarısız. Lütfen internet bağlantınızı kontrol edin.",
"dns_privacy": "DNS Gizliliği",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> <1>{{address}}1> dizesini kullan.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> <1>{{address}}1> dizesini kullan.",
@@ -476,7 +480,7 @@
"rewrite_confirm_delete": "\"{{key}}\" için DNS yeniden yazımını silmek istediğinize emin misiniz?",
"rewrite_desc": "Belirli bir alan adı için özel DNS yanıtını kolayca yapılandırmanızı sağlar.",
"rewrite_applied": "Yeniden yazım kuralı uygulandı",
- "rewrite_hosts_applied": "Ana makine dosyası kuralı tarafından yeniden yazıldı",
+ "rewrite_hosts_applied": "Hosts dosyası kuralı tarafından yeniden yazıldı",
"dns_rewrites": "DNS yeniden yazımları",
"form_domain": "Alan adı veya joker karakter girin",
"form_answer": "IP adresi veya alan adı girin",
@@ -539,7 +543,7 @@
"network": "Ağ",
"descr": "Açıklama",
"whois": "WHOIS",
- "filtering_rules_learn_more": "Kendi ana makine listelerinizi oluşturma hakkında <0>daha fazla bilgi edinin0>.",
+ "filtering_rules_learn_more": "Kendi hosts listelerinizi oluşturma hakkında <0>daha fazla bilgi edinin0>.",
"blocked_by_response": "Yanıt olarak CNAME veya IP tarafından engellendi",
"blocked_by_cname_or_ip": "CNAME veya IP tarafından engellendi",
"try_again": "Tekrar dene",
diff --git a/client/src/__locales/uk.json b/client/src/__locales/uk.json
index cd8e36fb..1df2b457 100644
--- a/client/src/__locales/uk.json
+++ b/client/src/__locales/uk.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Відповісти з кодом NXDOMAIN",
"blocking_mode_null_ip": "Нульовий IP: Відповісти з нульовою IP-адресою (0.0.0.0 для A; :: для AAAA)",
"blocking_mode_custom_ip": "Спеціальна IP-адреса: Відповісти із вручну встановленою IP-адресою",
+ "theme_auto": "Авто",
+ "theme_light": "Світла",
+ "theme_dark": "Темна",
"upstream_dns_client_desc": "Якщо це поле залишатиметься порожнім, AdGuard Home використовуватиме сервери, вказані в <0>налаштуваннях DNS0>.",
"tracker_source": "Джерело відстежувача",
"source_label": "Джерело",
@@ -451,6 +454,7 @@
"updates_checked": "Доступна нова версія AdGuard Home",
"updates_version_equal": "AdGuard Home останньої версії",
"check_updates_now": "Перевірити наявність оновлень",
+ "version_request_error": "Не вдалося перевірити оновлення. Будь ласка, перевірте з'єднання з інтернетом.",
"dns_privacy": "Конфіденційність DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS: 0>Використайте рядок <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Використайте рядок <1>{{address}}1>.",
diff --git a/client/src/__locales/vi.json b/client/src/__locales/vi.json
index 63c02009..0bba7a84 100644
--- a/client/src/__locales/vi.json
+++ b/client/src/__locales/vi.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN: Phản hổi với mã NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Trả lời bằng không địa chỉ IP (0.0.0.0 cho A; :: cho AAAA)",
"blocking_mode_custom_ip": "IP tùy chỉnh: Phản hồi với địa chỉ IP đã được tiết lập",
+ "theme_auto": "Tự động",
+ "theme_light": "Light theme",
+ "theme_dark": "Dark theme",
"upstream_dns_client_desc": "Nếu để trống trường này, AdGuardHome sẽ sử dụng nhũng máy chủ được cấu hình ở <0>Cấu hình DNS0>.",
"tracker_source": "Nguồn theo dõi",
"source_label": "Nguồn",
@@ -451,6 +454,7 @@
"updates_checked": "Phiên bản mới của AdGuard Home có sẵn",
"updates_version_equal": "AdGuard Home đã được cập nhật",
"check_updates_now": "Kiểm tra cập nhật ngay bây giờ",
+ "version_request_error": "Cập nhật không thành công. Hãy kiểm tra kết nối internet của bạn.",
"dns_privacy": "DNS Riêng Tư",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> Sử dụng chuỗi <1>{{address}}1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> Sử dụng chuỗi <1>{{address}}1>.",
diff --git a/client/src/__locales/zh-cn.json b/client/src/__locales/zh-cn.json
index c8996e85..3dc50aed 100644
--- a/client/src/__locales/zh-cn.json
+++ b/client/src/__locales/zh-cn.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "NXDOMAIN:以NXDOMAIN码响应",
"blocking_mode_null_ip": "空IP:以零IP地址响应(A记录 0.0.0.0;AAAA记录 ::)",
"blocking_mode_custom_ip": "自定IP:以手动设置的IP地址响应",
+ "theme_auto": "自动",
+ "theme_light": "浅色主题",
+ "theme_dark": "深色主题",
"upstream_dns_client_desc": "如果将此字段留空,AdGuard Home 将使用在<0>DNS设置0>中配置的服务器。",
"tracker_source": "追踪器来源",
"source_label": "源",
@@ -451,6 +454,7 @@
"updates_checked": "AdGuard Home 的新版本现在可用",
"updates_version_equal": "AdGuard Home已经是最新版本",
"check_updates_now": "立即检查更新",
+ "version_request_error": "检查更新失败。请检查您的因特网连接。",
"dns_privacy": "DNS 隐私",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0> 使用 <1>{{address}}1> 字符串。",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0> 使用 <1>{{address}}1> 字符串。",
diff --git a/client/src/__locales/zh-hk.json b/client/src/__locales/zh-hk.json
index 82a58118..3826c8e5 100644
--- a/client/src/__locales/zh-hk.json
+++ b/client/src/__locales/zh-hk.json
@@ -38,8 +38,6 @@
"form_error_required": "必要欄位",
"form_error_ip4_format": "無效的 IPv4 格式",
"form_error_ip6_format": "無效的 IPv6 格式",
- "form_error_ip4_range_start_format": "無效的 IPv4 範圍起始位址",
- "form_error_ip4_range_end_format": "無效的 IPv4 範圍結束位址",
"form_error_ip4_gateway_format": "閘道的 IPv4 位址無效",
"form_error_ip_format": "無效的 IP 位址",
"form_error_mac_format": "無效的 「MAC 位址」格式",
diff --git a/client/src/__locales/zh-tw.json b/client/src/__locales/zh-tw.json
index 021ea1bb..9701c49e 100644
--- a/client/src/__locales/zh-tw.json
+++ b/client/src/__locales/zh-tw.json
@@ -298,6 +298,9 @@
"blocking_mode_nxdomain": "不存在的網域(NXDOMAIN):以 NXDOMAIN 碼回覆",
"blocking_mode_null_ip": "無效的 IP:以零值 IP 位址(0.0.0.0 供 A;:: 供 AAAA)回覆",
"blocking_mode_custom_ip": "自訂的 IP:以一組手動地被設定的 IP 位址回覆",
+ "theme_auto": "自動",
+ "theme_light": "淺色",
+ "theme_dark": "深色",
"upstream_dns_client_desc": "如果您將此欄位留空,AdGuard Home 將使用在 <0>DNS 設定0>中被配置的伺服器。",
"tracker_source": "追蹤器來源",
"source_label": "來源",
@@ -451,6 +454,7 @@
"updates_checked": "AdGuard Home 的新版本為可用的",
"updates_version_equal": "AdGuard Home 為最新的",
"check_updates_now": "立即檢查更新",
+ "version_request_error": "更新檢查已失敗。請檢查您的網際網路連線。",
"dns_privacy": "DNS 隱私",
"setup_dns_privacy_1": "<0>DNS-over-TLS:0>使用 <1>{{address}}1> 字串。",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:0>使用 <1>{{address}}1> 字串。",
diff --git a/client/src/actions/index.js b/client/src/actions/index.js
index d86ea43e..2780c94d 100644
--- a/client/src/actions/index.js
+++ b/client/src/actions/index.js
@@ -141,7 +141,7 @@ export const getVersion = (recheck = false) => async (dispatch, getState) => {
}
}
} catch (error) {
- dispatch(addErrorToast({ error }));
+ dispatch(addErrorToast({ error: 'version_request_error' }));
dispatch(getVersionFailure());
}
};
diff --git a/client/src/components/App/index.css b/client/src/components/App/index.css
index 751a8e22..b20bd424 100644
--- a/client/src/components/App/index.css
+++ b/client/src/components/App/index.css
@@ -1,4 +1,5 @@
:root {
+ --black: #131313;
--bgcolor: #f5f7fb;
--mcolor: #495057;
--scolor: rgba(74, 74, 74, 0.7);
@@ -26,11 +27,13 @@
--gray-a5: #a5a5a5;
--gray-d8: #d8d8d8;
--gray-f3: #f3f3f3;
+ --loading-bg: rgba(255, 255, 255, 0.48);
--font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace;
--font-size-disable-autozoom: 1rem;
}
[data-theme="dark"] {
+ --black: #ffffff;
--bgcolor: #131313;
--mcolor: #e6e6e6;
--scolor: #a5a5a5;
@@ -44,16 +47,18 @@
--ctrl-dropdown-bgcolor-focus: #000;
--ctrl-dropdown-color-focus: #fff;
--btn-success-bgcolor: #67b279;
- --form-disabled-bgcolor: #3d3d3d;
+ --form-disabled-bgcolor: #2d2d2d;
--form-disabled-color: #a5a5a5;
--logs__text-color: #f3f3f3;
--rt-nodata-bgcolor: #1c1c1c;
--rt-nodata-color: #fff;
- --modal-overlay-bgcolor: #1c1c1c;
+ --modal-overlay-bgcolor: rgba(19, 19, 19, 0.75);
--logs__table-bgcolor: #3d3d3d;
--logs__row--blue-bgcolor: #467fcf;
--logs__row--white-bgcolor: #1c1c1c;
--detailed-info-color: #fff;
+ --gray300: #f3f3f3;
+ --loading-bg: #131313;
}
body {
diff --git a/client/src/components/Dashboard/Dashboard.css b/client/src/components/Dashboard/Dashboard.css
index ee36d265..415a3f6b 100644
--- a/client/src/components/Dashboard/Dashboard.css
+++ b/client/src/components/Dashboard/Dashboard.css
@@ -54,7 +54,7 @@
display: flex;
align-items: center;
justify-content: space-between;
- border-top: 1px solid #dee2e6;
+ border-top: 1px solid var(--card-border-color);
padding: 0.75rem 1.5rem;
}
diff --git a/client/src/components/Header/Header.css b/client/src/components/Header/Header.css
index c5412f7a..93d45f3e 100644
--- a/client/src/components/Header/Header.css
+++ b/client/src/components/Header/Header.css
@@ -1,12 +1,12 @@
.nav-tabs .nav-link.active {
- border-color: var(--green-74);
- color: var(--green-74);
+ border-color: var(--btn-success-bgcolor);
+ color: var(--btn-success-bgcolor);
background: transparent;
}
.nav-tabs .nav-link.active:hover {
- border-color: #58a273;
- color: #58a273;
+ border-color: #4b9400;
+ color: #4b9400;
}
.nav-icon {
diff --git a/client/src/components/Logs/Cells/IconTooltip.css b/client/src/components/Logs/Cells/IconTooltip.css
index 8f7eb453..0b55ee6a 100644
--- a/client/src/components/Logs/Cells/IconTooltip.css
+++ b/client/src/components/Logs/Cells/IconTooltip.css
@@ -5,7 +5,7 @@
border-radius: 4px !important;
pointer-events: auto !important;
background-color: var(--ctrl-bgcolor);
- color: var(--scolor);
+ color: var(--mcolor);
z-index: 102;
overflow-y: auto;
max-height: 100%;
diff --git a/client/src/components/Logs/Logs.css b/client/src/components/Logs/Logs.css
index 358c2a6a..bf0689e6 100644
--- a/client/src/components/Logs/Logs.css
+++ b/client/src/components/Logs/Logs.css
@@ -24,6 +24,12 @@
--option-border-radius: 4px;
}
+[data-theme="dark"] {
+ --red: rgba(223, 56, 18, 0.25);
+ --green-pale: rgba(103, 178, 121, 0.25);
+ --yellow: rgba(247, 181, 0, 0.2);
+}
+
.logs__text {
padding: 0 1px;
text-overflow: ellipsis;
@@ -36,6 +42,14 @@
line-height: 1.5rem;
}
+[data-theme="dark"] .logs__text a {
+ color: var(--gray-f3);
+}
+
+[data-theme="dark"] .logs__text a:hover {
+ color: var(--gray-f3);
+}
+
.logs__text--bold {
font-weight: 600;
}
@@ -66,6 +80,10 @@
border-radius: 4px;
}
+[data-theme=dark] .icon--selected {
+ opacity: 0.75;
+}
+
.text-pre {
white-space: pre-wrap !important;
overflow-wrap: break-word;
@@ -205,6 +223,12 @@
position: relative;
}
+@media screen and (min-width: 1025px) {
+ .logs__cell--client {
+ width: 13rem;
+ }
+}
+
.logs__cell--header__container > .logs__cell--header__item {
border-right: 0;
font-size: 1rem;
@@ -340,6 +364,10 @@
overflow: hidden;
}
+[data-theme="dark"] .tooltip-custom__container .button-action--arrow-option:not(:disabled):hover {
+ background: var(--ctrl-dropdown-bgcolor-focus);
+}
+
.button-action--arrow-option-container {
overflow: visible;
transform-origin: left;
@@ -482,6 +510,10 @@
color: var(--green79);
}
+[data-theme="dark"] .logs__question.icon--lightgray {
+ color: var(--gray-f3);
+}
+
@media (max-width: 1024px) {
.logs__question {
display: none;
@@ -491,3 +523,8 @@
.logs__modal {
max-width: 720px;
}
+
+.logs__modal-wrap {
+ padding: 1rem 1.5rem;
+ background-color: var(--card-bgcolor);
+}
diff --git a/client/src/components/Logs/index.js b/client/src/components/Logs/index.js
index b4b4c636..ac8b168b 100644
--- a/client/src/components/Logs/index.js
+++ b/client/src/components/Logs/index.js
@@ -195,11 +195,11 @@ const Logs = () => {
onRequestClose={closeModal}
style={{
content: {
- width: '100%',
+ width: 'calc(100% - 32px)',
height: 'fit-content',
left: '50%',
top: 47,
- padding: '1rem 1.5rem 1rem',
+ padding: '0',
maxWidth: '720px',
transform: 'translateX(-50%)',
},
diff --git a/client/src/components/Settings/Clients/Service.css b/client/src/components/Settings/Clients/Service.css
index 153cf2d8..6cfcf40a 100644
--- a/client/src/components/Settings/Clients/Service.css
+++ b/client/src/components/Settings/Clients/Service.css
@@ -4,7 +4,7 @@
align-items: center;
margin-bottom: 15px;
padding: 10px 15px;
- border: 1px solid #eee;
+ border: 1px solid var(--card-border-color);
border-radius: 4px;
cursor: pointer;
}
diff --git a/client/src/components/ui/Dropdown.css b/client/src/components/ui/Dropdown.css
index 25efec81..860769ee 100644
--- a/client/src/components/ui/Dropdown.css
+++ b/client/src/components/ui/Dropdown.css
@@ -1,6 +1,6 @@
.dropdown-item.active,
.dropdown-item:active {
- background-color: var(--green-74);
+ background-color: var(--btn-success-bgcolor);
}
.dropdown-menu {
diff --git a/client/src/components/ui/Footer.js b/client/src/components/ui/Footer.js
index c1d1b40e..3ac6aa61 100644
--- a/client/src/components/ui/Footer.js
+++ b/client/src/components/ui/Footer.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { useDispatch, useSelector } from 'react-redux';
import classNames from 'classnames';
@@ -10,7 +10,7 @@ import i18n from '../../i18n';
import Version from './Version';
import './Footer.css';
import './Select.css';
-import { setHtmlLangAttr } from '../../helpers/helpers';
+import { setHtmlLangAttr, setUITheme } from '../../helpers/helpers';
import { changeTheme } from '../../actions';
const linksData = [
@@ -36,6 +36,13 @@ const Footer = () => {
const currentTheme = useSelector((state) => (state.dashboard ? state.dashboard.theme : 'auto'));
const profileName = useSelector((state) => (state.dashboard ? state.dashboard.name : ''));
const isLoggedIn = profileName !== '';
+ const [currentThemeLocal, setCurrentThemeLocal] = useState('auto');
+
+ useEffect(() => {
+ if (!isLoggedIn) {
+ setUITheme(window.matchMedia('(prefers-color-scheme: dark)').matches ? THEMES.dark : THEMES.light);
+ }
+ }, []);
const getYear = () => {
const today = new Date();
@@ -53,6 +60,12 @@ const Footer = () => {
dispatch(changeTheme(value));
};
+ const onThemeChangedLocal = (event) => {
+ const { value } = event.target;
+ setUITheme(value);
+ setCurrentThemeLocal(value);
+ };
+
const renderCopyright = () =>
{t('copyright')} © {getYear()}{' '}
@@ -70,24 +83,34 @@ const Footer = () => {
{t(name)}
);
- const renderThemeSelect = (currentTheme, isLoggedIn) => {
- if (!isLoggedIn) {
- return '';
- }
+ const themeSelectOptions = () => (
+ Object.values(THEMES)
+ .map((theme) => (
+
+ {t(`theme_${theme}`)}
+
+ ))
+ );
- return (
+
- {Object.values(THEMES)
- .map((theme) => (
-
- {t(`theme_${theme}`)}
-
- ))}
- ;
- };
+ {themeSelectOptions()}
+
+ );
+
+ const renderThemeSelectLocal = () => (
+
+ {themeSelectOptions()}
+
+ );
return (
<>
@@ -98,7 +121,7 @@ const Footer = () => {
{renderLinks(linksData)}
- {renderThemeSelect(currentTheme, isLoggedIn)}
+ {isLoggedIn ? renderThemeSelect() : renderThemeSelectLocal()}
.btn-success.dropdown-toggle {
color: #fff;
background-color: #448700;
- border-color: #3e7a00;
+ border-color: #448700;
}
.btn-success:not(:disabled):not(.disabled):active:focus,
@@ -3251,6 +3293,10 @@ tbody.collapse.show {
border-radius: 3px;
}
+[data-theme=dark] .dropdown-menu {
+ border: 1px solid var(--card-border-color);
+}
+
.dropup .dropdown-menu {
margin-top: 0;
margin-bottom: 0.125rem;
@@ -5509,7 +5555,7 @@ button.close {
-ms-flex-pack: justify;
justify-content: space-between;
padding: 1rem;
- border-bottom: 1px solid #e9ecef;
+ border-bottom: 1px solid var(--card-border-color);
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
@@ -5539,7 +5585,7 @@ button.close {
-ms-flex-pack: end;
justify-content: flex-end;
padding: 1rem;
- border-top: 1px solid #e9ecef;
+ border-top: 1px solid var(--card-border-color);
}
.modal-footer> :not(:first-child) {
@@ -13679,6 +13725,10 @@ Card alert
color: #6e7687;
}
+[data-theme=dark] .dropdown-item {
+ color: #ffffff;
+}
+
.dropdown-menu-arrow:before {
position: absolute;
top: -6px;
@@ -13706,6 +13756,10 @@ Card alert
content: "";
}
+[data-theme=dark] .dropdown-menu-arrow:after {
+ border-bottom: 5px solid var(--card-border-color);
+}
+
.dropdown-menu-arrow.dropdown-menu-right:before,
.dropdown-menu-arrow.dropdown-menu-right:after {
left: auto;
@@ -15473,6 +15527,10 @@ a.tag-addon:hover {
transition: 0.3s border-color, 0.3s background-color;
}
+[data-theme=dark] .custom-switch-indicator {
+ opacity: 0.75;
+}
+
.custom-switch-indicator:before {
content: "";
position: absolute;
diff --git a/client/src/components/ui/Tabs.css b/client/src/components/ui/Tabs.css
index afa8438a..9b164134 100644
--- a/client/src/components/ui/Tabs.css
+++ b/client/src/components/ui/Tabs.css
@@ -3,7 +3,7 @@
justify-content: space-between;
margin-bottom: 15px;
padding: 10px 0;
- border-bottom: 1px solid #e8e8e8;
+ border-bottom: 1px solid var(--card-border-color);
overflow: auto;
}
@@ -40,6 +40,10 @@
opacity: 0.6;
}
+[data-theme=dark] .tab__control {
+ filter: invert(1);
+}
+
@media screen and (min-width: 768px) {
.tab__control {
white-space: normal;
diff --git a/client/src/helpers/trackers/adguard.json b/client/src/helpers/trackers/adguard.json
index 1559055c..1e3bda05 100644
--- a/client/src/helpers/trackers/adguard.json
+++ b/client/src/helpers/trackers/adguard.json
@@ -15,6 +15,8 @@
"11": "unknown",
"12": "extensions",
"13": "email",
+ "14": "consent",
+ "15": "telemetry",
"101": "mobile_analytics"
},
"trackers": {
@@ -149,6 +151,7 @@
"akadns.net": "akamai_technologies",
"akamaiedge.net": "akamai_technologies",
"apple.com": "apple",
+ "apple.news": "apple",
"apple-dns.net": "apple",
"aaplimg.com": "apple",
"icloud.com": "apple",
diff --git a/client/src/install/Setup/Setup.css b/client/src/install/Setup/Setup.css
index b08f4cb8..0943febc 100644
--- a/client/src/install/Setup/Setup.css
+++ b/client/src/install/Setup/Setup.css
@@ -21,11 +21,16 @@
margin: 0 auto;
padding: 30px 20px;
line-height: 1.6;
- background-color: #fff;
+ background-color: var(--card-bgcolor);
box-shadow: 0 1px 4px rgba(74, 74, 74, 0.36);
border-radius: 3px;
}
+[data-theme=dark] .setup__container {
+ box-shadow: none;
+ border: 1px solid var(--card-border-color);
+}
+
@media screen and (min-width: 768px) {
.setup__container {
width: 650px;
@@ -39,6 +44,10 @@
max-width: 140px;
}
+[data-theme=dark] .setup__logo {
+ filter: invert(1);
+}
+
.setup__nav {
text-align: center;
}
diff --git a/client/src/login/Login/Login.css b/client/src/login/Login/Login.css
index 0d3dbfc1..f5cfd2fc 100644
--- a/client/src/login/Login/Login.css
+++ b/client/src/login/Login/Login.css
@@ -13,6 +13,10 @@
min-height: 100vh;
}
+[data-theme=dark] .login__logo {
+ filter: invert(1);
+}
+
.login__form {
margin: auto;
padding: 40px 15px 100px;
diff --git a/client/src/login/Login/index.js b/client/src/login/Login/index.js
index 88354dc2..1603d24d 100644
--- a/client/src/login/Login/index.js
+++ b/client/src/login/Login/index.js
@@ -36,7 +36,7 @@ class Login extends Component {
-
+
diff --git a/client2/.eslintignore b/client2/.eslintignore
deleted file mode 100644
index d30c2950..00000000
--- a/client2/.eslintignore
+++ /dev/null
@@ -1,6 +0,0 @@
-scripts
-node_modules
-postcss.config.js
-src/lib/entities
-src/lib/apis
-openApi
\ No newline at end of file
diff --git a/client2/.eslintrc b/client2/.eslintrc
deleted file mode 100644
index 86f6ae47..00000000
--- a/client2/.eslintrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": [
- "./scripts/lint/dev.js"
- ]
-}
\ No newline at end of file
diff --git a/client2/declaration.d.ts b/client2/declaration.d.ts
deleted file mode 100644
index 87c53150..00000000
--- a/client2/declaration.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-declare module '*.pcss' {
- const content: {[className: string]: string};
- export default content;
-}
-declare module '*.css' {
- const content: {[className: string]: string};
- export default content;
-}
-declare module '*.png'
-declare module '*.jpg'
-declare let AUTH_TOKEN: string;
-declare let MAIN_TOKEN: string | undefined;
-declare let NO_CAPTCHA: boolean | undefined;
-declare module 'dygraphs';
-declare module '@novnc/novnc/core/rfb';
-// cp - CloudPayments script
-declare let cp: any;
-declare const DEV: any;
diff --git a/client2/package.json b/client2/package.json
deleted file mode 100644
index a28282e3..00000000
--- a/client2/package.json
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- "author": "Performix",
- "private": true,
- "name": "adguard-home",
- "version": "0.1.0",
- "scripts": {
- "build": "webpack --config ./scripts/webpack/webpack.config.prod.js",
- "start": "webpack serve --config ./scripts/webpack/webpack.config.dev.js",
- "generate": "rm -rf ./src/lib/entities ./src/lib/apis && ts-node --compiler-options '{ \"module\": \"CommonJS\" }' ./scripts/generator/index.ts",
- "translations:check": "ts-node --compiler-options '{ \"module\": \"CommonJS\" }' ./scripts/plugins/checkTranslations.ts",
- "lint": "eslint -c ./scripts/lint/prod.js --ext .tsx --ext .ts ./",
- "go:build": "cd .. && make REBUILD_CLIENT=0 build",
- "go:run": "sudo ../AdguardHome"
- },
- "license": "ISC",
- "dependencies": {
- "@adguard/translate": "^0.2.0",
- "@ant-design/icons": "^4.4.0",
- "@sentry/react": "^5.27.0",
- "antd": "^4.7.2",
- "classnames": "^2.2.6",
- "dayjs": "^1.9.3",
- "formik": "^2.2.0",
- "mobx": "^6.0.1",
- "mobx-react-lite": "^3.0.1",
- "qs": "^6.9.4",
- "react": "^17.0.0",
- "react-dom": "^17.0.0",
- "react-router-dom": "^5.2.0",
- "recharts": "^2.0.3"
- },
- "devDependencies": {
- "@types/classnames": "^2.2.10",
- "@types/qs": "^6.9.5",
- "@types/react": "^16.9.53",
- "@types/react-dom": "^16.9.8",
- "@types/react-redux": "^7.1.9",
- "@types/react-router-dom": "^5.1.6",
- "@typescript-eslint/eslint-plugin": "^4.5.0",
- "@typescript-eslint/parser": "^4.5.0",
- "antd-dayjs-webpack-plugin": "^1.0.1",
- "autoprefixer": "^10.0.1",
- "connect-history-api-fallback": "^1.6.0",
- "copy-webpack-plugin": "^6.2.1",
- "css-loader": "^5.0.0",
- "eslint": "^7.11.0",
- "eslint-config-airbnb-base": "^14.2.0",
- "eslint-config-airbnb-typescript": "^12.0.0",
- "eslint-import-resolver-typescript": "^2.3.0",
- "eslint-loader": "^4.0.2",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-react": "^7.21.5",
- "eslint-plugin-react-hooks": "^4.2.0",
- "file-loader": "^6.1.1",
- "html-webpack-plugin": "^4.5.0",
- "http-proxy-middleware": "^1.0.6",
- "less": "^3.12.2",
- "less-loader": "^5.0.0",
- "mini-css-extract-plugin": "^1.1.1",
- "optimize-css-assets-webpack-plugin": "^5.0.4",
- "postcss": "^8.1.2",
- "postcss-calc": "^7.0.5",
- "postcss-css-variables": "^0.17.0",
- "postcss-custom-media": "^7.0.8",
- "postcss-import": "^13.0.0",
- "postcss-inline-svg": "^4.1.0",
- "postcss-loader": "^4.0.4",
- "postcss-mixins": "^7.0.1",
- "postcss-modules": "^3.2.2",
- "postcss-nested": "^5.0.1",
- "postcss-preset-env": "^6.7.0",
- "postcss-reporter": "^7.0.1",
- "postcss-variables": "^1.1.1",
- "style-loader": "^2.0.0",
- "stylelint": "^13.7.2",
- "stylelint-webpack-plugin": "^2.1.1",
- "terser-webpack-plugin": "^5.0.0",
- "ts-loader": "^8.0.6",
- "ts-morph": "^8.1.2",
- "ts-node": "^9.0.0",
- "typescript": "^4.0.3",
- "url-loader": "^4.1.1",
- "webpack": "^5.10.0",
- "webpack-cli": "^4.2.0",
- "webpack-dev-server": "^3.11.0",
- "webpack-merge": "^5.2.0",
- "yaml": "^1.10.0"
- }
-}
diff --git a/client2/postcss.config.js b/client2/postcss.config.js
deleted file mode 100644
index ee95a234..00000000
--- a/client2/postcss.config.js
+++ /dev/null
@@ -1,17 +0,0 @@
-module.exports = {
- plugins: [
- ['postcss-import', {}],
- ['postcss-nested', {}],
- ['postcss-custom-media', {}],
- ['postcss-variables', {}],
- ['postcss-calc', {}],
- ['postcss-mixins', {}],
- ['postcss-preset-env', { stage: 3, features: { 'nesting-rules': true } }],
- ['postcss-reporter', { clearMessages: true }],
- ['postcss-inline-svg', {
- paths: ['frontend/icons', 'vendor/adguard/utils-bundle/src/Resources/frontend/icons'],
- svgo: { plugins: [{ cleanupAttrs: true }] }
- }],
- ['autoprefixer'],
- ]
-};
diff --git a/client2/public/assets/apple-touch-icon-180x180.png b/client2/public/assets/apple-touch-icon-180x180.png
deleted file mode 100644
index ebc0be50..00000000
Binary files a/client2/public/assets/apple-touch-icon-180x180.png and /dev/null differ
diff --git a/client2/public/assets/favicon.png b/client2/public/assets/favicon.png
deleted file mode 100644
index 992631c1..00000000
Binary files a/client2/public/assets/favicon.png and /dev/null differ
diff --git a/client2/public/assets/safari-pinned-tab.svg b/client2/public/assets/safari-pinned-tab.svg
deleted file mode 100644
index 132b35d0..00000000
--- a/client2/public/assets/safari-pinned-tab.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/client2/public/index.html b/client2/public/index.html
deleted file mode 100644
index 2e2d1e33..00000000
--- a/client2/public/index.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
AdGuard Home
-
-
-
- You need to enable JavaScript to run this app.
-
-
-
-
diff --git a/client2/public/install.html b/client2/public/install.html
deleted file mode 100644
index e0b70d14..00000000
--- a/client2/public/install.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Setup AdGuard Home
-
-
-
- You need to enable JavaScript to run this app.
-
-
-
-
diff --git a/client2/public/login.html b/client2/public/login.html
deleted file mode 100644
index 38145e15..00000000
--- a/client2/public/login.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Login
-
-
-
- You need to enable JavaScript to run this app.
-
-
-
-
diff --git a/client2/scripts/consts.ts b/client2/scripts/consts.ts
deleted file mode 100644
index bbec9361..00000000
--- a/client2/scripts/consts.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export const OPEN_API_PATH = '../openapi/openapi.yaml';
-export const ENT_DIR = './src/lib/entities';
-export const API_DIR = './src/lib/apis';
-export const LOCALE_FOLDER_PATH = './src/lib/intl/__locales';
-export const TRANSLATOR_CLASS_NAME = 'Translator';
-export const USE_INTL_NAME = 'useIntl';
-
-export const trimQuotes = (str: string) => {
- return str.replace(/\'|\"/g, '');
-};
-
-export const GENERATOR_ENTITY_ALLIAS = 'Entities/';
\ No newline at end of file
diff --git a/client2/scripts/generator/index.ts b/client2/scripts/generator/index.ts
deleted file mode 100644
index 19ac2256..00000000
--- a/client2/scripts/generator/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as fs from 'fs';
-import * as YAML from 'yaml';
-import { OPEN_API_PATH } from '../consts';
-
-import EntitiesGenerator from './src/generateEntities';
-import ApisGenerator from './src/generateApis';
-
-
-const generateApi = (openApi: Record
) => {
- const ent = new EntitiesGenerator(openApi);
- ent.save();
-
- const api = new ApisGenerator(openApi);
- api.save();
-}
-
-const openApiFile = fs.readFileSync(OPEN_API_PATH, 'utf8');
-generateApi(YAML.parse(openApiFile));
diff --git a/client2/scripts/generator/src/generateApis.ts b/client2/scripts/generator/src/generateApis.ts
deleted file mode 100644
index 4201da2b..00000000
--- a/client2/scripts/generator/src/generateApis.ts
+++ /dev/null
@@ -1,317 +0,0 @@
-/* eslint-disable no-template-curly-in-string */
-/* eslint-disable @typescript-eslint/no-unused-expressions */
-import * as fs from 'fs';
-import * as path from 'path';
-import { stringify } from 'qs';
-// eslint-disable-next-line import/no-extraneous-dependencies
-import * as morph from 'ts-morph';
-
-import {
- API_DIR as API_DIR_CONST,
- GENERATOR_ENTITY_ALLIAS,
-} from '../../consts';
-import { toCamel, capitalize, schemaParamParser } from './utils';
-
-
-const API_DIR = path.resolve(API_DIR_CONST);
-if (!fs.existsSync(API_DIR)) {
- fs.mkdirSync(API_DIR);
-}
-
-const { Project, QuoteKind } = morph;
-
-
-class ApiGenerator {
- project = new Project({
- tsConfigFilePath: './tsconfig.json',
- addFilesFromTsConfig: false,
- manipulationSettings: {
- quoteKind: QuoteKind.Single,
- usePrefixAndSuffixTextForRename: false,
- useTrailingCommas: true,
- },
- });
-
- openapi: Record;
-
- serverUrl: string;
-
- paths: any;
-
- /* interface Controllers {
- [controller: string]: {
- [operationId: string]: { parameters - from opneApi, responses - from opneApi, method }
- }
- } */
- controllers: Record = {};
-
- apis: morph.SourceFile[] = [];
-
- constructor(openapi: Record) {
- this.openapi = openapi;
- this.paths = openapi.paths;
- this.serverUrl = openapi.servers[0].url;
-
- Object.keys(this.paths).forEach((pathKey) => {
- Object.keys(this.paths[pathKey]).forEach((method) => {
- const {
- tags, operationId, parameters, responses, requestBody, security,
- } = this.paths[pathKey][method];
- const controller = toCamel((tags ? tags[0] : pathKey.split('/')[1]).replace('-controller', ''));
-
- if (this.controllers[controller]) {
- this.controllers[controller][operationId] = {
- parameters,
- responses,
- method,
- requestBody,
- security,
- pathKey: pathKey.replace(/{/g, '${'),
- };
- } else {
- this.controllers[controller] = { [operationId]: {
- parameters,
- responses,
- method,
- requestBody,
- security,
- pathKey: pathKey.replace(/{/g, '${'),
- } };
- }
- });
- });
-
- this.generateApiFiles();
- }
-
- generateApiFiles = () => {
- Object.keys(this.controllers).forEach(this.generateApiFile);
- };
-
- generateApiFile = (cName: string) => {
- const apiFile = this.project.createSourceFile(`${API_DIR}/${cName}.ts`);
- apiFile.addStatements([
- '// This file was autogenerated. Please do not change.',
- '// All changes will be overwrited on commit.',
- '',
- ]);
-
- // const schemaProperties = schemas[schemaName].properties;
- const importEntities: any[] = [];
-
- // add api class to file
- const apiClass = apiFile.addClass({
- name: `${capitalize(cName)}Api`,
- isDefaultExport: true,
- });
-
- // get operations of controller
- const controllerOperations = this.controllers[cName];
- const operationList = Object.keys(controllerOperations).sort();
- // for each operation add fetcher
- operationList.forEach((operation) => {
- const {
- requestBody, responses, parameters, method, pathKey, security,
- } = controllerOperations[operation];
-
- const queryParams: any[] = []; // { name, type }
- const bodyParam: any[] = []; // { name, type }
-
- let hasResponseBodyType: /* boolean | ReturnType */ false | [string, boolean, boolean, boolean, boolean] = false;
- let contentType = '';
- if (parameters) {
- parameters.forEach((p: any) => {
- const [
- pType, isArray, isClass, isImport,
- ] = schemaParamParser(p.schema, this.openapi);
-
- if (isImport) {
- importEntities.push({ type: pType, isClass });
- }
- if (p.in === 'query') {
- queryParams.push({
- name: p.name, type: `${pType}${isArray ? '[]' : ''}`, hasQuestionToken: !p.required });
- }
- });
- }
- if (queryParams.length > 0) {
- const imp = apiFile.getImportDeclaration((i) => {
- return i.getModuleSpecifierValue() === 'qs';
- }); if (!imp) {
- apiFile.addImportDeclaration({
- moduleSpecifier: 'qs',
- defaultImport: 'qs',
- });
- }
- }
- if (requestBody) {
- let content = requestBody.content;
- const { $ref }: { $ref: string } = requestBody;
-
- if (!content && $ref) {
- const name = $ref.split('/').pop() as string;
- content = this.openapi.components.requestBodies[name].content;
- }
-
- [contentType] = Object.keys(content);
- const data = content[contentType];
-
- const [
- pType, isArray, isClass, isImport,
- ] = schemaParamParser(data.schema, this.openapi);
-
- if (isImport) {
- importEntities.push({ type: pType, isClass });
- bodyParam.push({ name: pType.toLowerCase(), type: `${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''}`, isClass, pType });
- } else {
- bodyParam.push({ name: 'data', type: `${pType}${isArray ? '[]' : ''}` });
-
- }
- }
- if (responses['200']) {
- const { content, headers } = responses['200'];
- if (content && (content['*/*'] || content['application/json'])) {
- const { schema, examples } = content['*/*'] || content['application/json'];
-
- if (!schema) {
- process.exit(0);
- }
-
- const propType = schemaParamParser(schema, this.openapi);
- const [pType, , isClass, isImport] = propType;
-
- if (isImport) {
- importEntities.push({ type: pType, isClass });
- }
- hasResponseBodyType = propType;
- }
- }
- let returnType = '';
- if (hasResponseBodyType) {
- const [pType, isArray, isClass] = hasResponseBodyType as any;
- let data = `Promise<${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''}`;
- returnType = data;
- } else {
- returnType = 'Promise b.isClass);
- if (shouldValidate.length > 0) {
- returnType += ' | string[]';
- }
- // append Error to default type return;
- returnType += ' | Error>';
-
- const fetcher = apiClass.addMethod({
- isAsync: true,
- isStatic: true,
- name: operation,
- returnType,
- });
- const params = [...queryParams, ...bodyParam].sort((a, b) => (Number(!!a.hasQuestionToken) - Number(!!b.hasQuestionToken)));
- fetcher.addParameters(params);
-
- fetcher.setBodyText((w) => {
- // Add data to URLSearchParams
- if (contentType === 'text/plain') {
- bodyParam.forEach((b) => {
- w.writeLine(`const params = String(${b.name});`);
- });
- } else {
- if (shouldValidate.length > 0) {
- w.writeLine(`const haveError: string[] = [];`);
- shouldValidate.forEach((b) => {
- w.writeLine(`const ${b.name}Valid = new ${b.pType}(${b.name});`);
- w.writeLine(`haveError.push(...${b.name}Valid.validate());`);
- });
- w.writeLine(`if (haveError.length > 0) {`);
- w.writeLine(` return Promise.resolve(haveError);`)
- w.writeLine(`}`);
- }
- }
- // Switch return of fetch in case on queryParams
- if (queryParams.length > 0) {
- w.writeLine('const queryParams = {');
- queryParams.forEach((q) => {
- w.writeLine(` ${q.name}: ${q.name},`);
- });
- w.writeLine('}');
- w.writeLine(`return await fetch(\`${this.serverUrl}${pathKey}?\${qs.stringify(queryParams, { arrayFormat: 'comma' })}\`, {`);
- } else {
- w.writeLine(`return await fetch(\`${this.serverUrl}${pathKey}\`, {`);
- }
- // Add method
- w.writeLine(` method: '${method.toUpperCase()}',`);
-
- // add Fetch options
- if (contentType && contentType !== 'multipart/form-data') {
- w.writeLine(' headers: {');
- w.writeLine(` 'Content-Type': '${contentType}',`);
- w.writeLine(' },');
- }
- if (contentType) {
- switch (contentType) {
- case 'text/plain':
- w.writeLine(' body: params,');
- break;
- default:
- w.writeLine(` body: JSON.stringify(${bodyParam.map((b) => b.isClass ? `${b.name}Valid.serialize()` : b.name).join(', ')}),`);
- break;
- }
- }
-
- // Handle response
- if (hasResponseBodyType) {
- w.writeLine('}).then(async (res) => {');
- w.writeLine(' if (res.status === 200) {');
- w.writeLine(' return res.json();');
- } else {
- w.writeLine('}).then(async (res) => {');
- w.writeLine(' if (res.status === 200) {');
- w.writeLine(' return res.status;');
- }
-
- // Handle Error
- w.writeLine(' } else {');
- w.writeLine(' return new Error(String(res.status));');
- w.writeLine(' }');
- w.writeLine('})');
- });
- });
-
- const imports: any[] = [];
- const types: string[] = [];
- importEntities.forEach((i) => {
- const { type } = i;
- if (!types.includes(type)) {
- imports.push(i);
- types.push(type);
- }
- });
- imports.sort((a,b) => a.type > b.type ? 1 : -1).forEach((ie) => {
- const { type: pType, isClass } = ie;
- if (isClass) {
- apiFile.addImportDeclaration({
- moduleSpecifier: `${GENERATOR_ENTITY_ALLIAS}${pType}`,
- defaultImport: pType,
- namedImports: [`I${pType}`],
- });
- } else {
- apiFile.addImportDeclaration({
- moduleSpecifier: `${GENERATOR_ENTITY_ALLIAS}${pType}`,
- namedImports: [pType],
- });
- }
- });
-
- this.apis.push(apiFile);
- };
-
- save = () => {
- this.apis.forEach(async (e) => {
- await e.saveSync();
- });
- };
-}
-
-
-export default ApiGenerator;
diff --git a/client2/scripts/generator/src/generateEntities.ts b/client2/scripts/generator/src/generateEntities.ts
deleted file mode 100644
index 7ace9fa1..00000000
--- a/client2/scripts/generator/src/generateEntities.ts
+++ /dev/null
@@ -1,603 +0,0 @@
-import * as fs from 'fs';
-import * as path from 'path';
-// eslint-disable-next-line import/no-extraneous-dependencies
-import * as morph from 'ts-morph';
-
-import { ENT_DIR } from '../../consts';
-import { TYPES, toCamel, schemaParamParser, uncapitalize } from './utils';
-
-const { Project, QuoteKind } = morph;
-
-
-const EntDir = path.resolve(ENT_DIR);
-if (!fs.existsSync(EntDir)) {
- fs.mkdirSync(EntDir);
-}
-
-class EntitiesGenerator {
- project = new Project({
- tsConfigFilePath: './tsconfig.json',
- addFilesFromTsConfig: false,
- manipulationSettings: {
- quoteKind: QuoteKind.Single,
- usePrefixAndSuffixTextForRename: false,
- useTrailingCommas: true,
- },
- });
-
- openapi: Record;
-
- schemas: Record;
-
- schemaNames: string[];
-
- entities: morph.SourceFile[] = [];
-
- constructor(openapi: Record) {
- this.openapi = openapi;
- this.schemas = openapi.components.schemas;
- this.schemaNames = Object.keys(this.schemas);
- this.generateEntities();
- }
-
- generateEntities = () => {
- this.schemaNames.forEach(this.generateEntity);
- };
-
- generateEntity = (sName: string) => {
- const { properties, type, oneOf } = this.schemas[sName];
- const notAClass = !properties && TYPES[type as keyof typeof TYPES];
-
- if (oneOf) {
- this.generateOneOf(sName);
- return;
- }
-
- if (notAClass) {
- this.generateEnum(sName);
- } else {
- this.generateClass(sName);
- }
- };
-
- generateEnum = (sName: string) => {
- const entityFile = this.project.createSourceFile(`${EntDir}/${sName}.ts`);
- entityFile.addStatements([
- '// This file was autogenerated. Please do not change.',
- '// All changes will be overwrited on commit.',
- '',
- ]);
-
- const { enum: enumMembers } = this.schemas[sName];
- entityFile.addEnum({
- name: sName,
- members: enumMembers.map((e: string) => ({ name: e.toUpperCase(), value: e })),
- isExported: true,
- });
-
- this.entities.push(entityFile);
- };
-
- generateOneOf = (sName: string) => {
- const entityFile = this.project.createSourceFile(`${EntDir}/${sName}.ts`);
- entityFile.addStatements([
- '// This file was autogenerated. Please do not change.',
- '// All changes will be overwrited on commit.',
- '',
- ]);
- const importEntities: { type: string, isClass: boolean }[] = [];
- const entities = this.schemas[sName].oneOf.map((elem: any) => {
- const [
- pType, isArray, isClass, isImport,
- ] = schemaParamParser(elem, this.openapi);
- importEntities.push({ type: pType, isClass });
- return { type: pType, isArray };
- });
- entityFile.addTypeAlias({
- name: sName,
- isExported: true,
- type: entities.map((e: any) => e.isArray ? `I${e.type}[]` : `I${e.type}`).join(' | '),
- })
-
- // add import
- importEntities.sort((a, b) => a.type > b.type ? 1 : -1).forEach((ie) => {
- const { type: pType, isClass } = ie;
- if (isClass) {
- entityFile.addImportDeclaration({
- moduleSpecifier: `./${pType}`,
- namedImports: [`I${pType}`],
- });
- } else {
- entityFile.addImportDeclaration({
- moduleSpecifier: `./${pType}`,
- namedImports: [pType],
- });
- }
- });
- this.entities.push(entityFile);
- }
-
- generateClass = (sName: string) => {
- const entityFile = this.project.createSourceFile(`${EntDir}/${sName}.ts`);
- entityFile.addStatements([
- '// This file was autogenerated. Please do not change.',
- '// All changes will be overwrited on commit.',
- '',
- ]);
-
-
- const { properties: sProps, required, $ref, additionalProperties } = this.schemas[sName];
- if ($ref) {
- const temp = $ref.split('/');
- const importSchemaName = `${temp[temp.length - 1]}`;
- entityFile.addImportDeclaration({
- defaultImport: importSchemaName,
- moduleSpecifier: `./${importSchemaName}`,
- namedImports: [`I${importSchemaName}`],
- });
-
- entityFile.addTypeAlias({
- name: `I${sName}`,
- type: `I${importSchemaName}`,
- isExported: true,
- })
-
- entityFile.addStatements(`export default ${importSchemaName};`);
- this.entities.push(entityFile);
- return;
- }
-
- const importEntities: { type: string, isClass: boolean }[] = [];
- const entityInterface = entityFile.addInterface({
- name: `I${sName}`,
- isExported: true,
- });
-
- const sortedSProps = Object.keys(sProps || {}).sort();
- const additionalPropsOnly = additionalProperties && sortedSProps.length === 0;
-
- // add server response interface to entityFile
- sortedSProps.forEach((sPropName) => {
- const [
- pType, isArray, isClass, isImport, isAdditional
- ] = schemaParamParser(sProps[sPropName], this.openapi);
-
- if (isImport) {
- importEntities.push({ type: pType, isClass });
- }
- const propertyType = isAdditional
- ? `{ [key: string]: ${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''} }`
- : `${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''}`;
- entityInterface.addProperty({
- name: sPropName,
- type: propertyType,
- hasQuestionToken: !(
- (required && required.includes(sPropName)) || sProps[sPropName].required
- ),
- });
- });
- if (additionalProperties) {
- const [
- pType, isArray, isClass, isImport, isAdditional
- ] = schemaParamParser(additionalProperties, this.openapi);
-
- if (isImport) {
- importEntities.push({ type: pType, isClass });
- }
- const type = isAdditional
- ? `{ [key: string]: ${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''} }`
- : `${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''}`;
- entityInterface.addIndexSignature({
- keyName: 'key',
- keyType: 'string',
- returnType: additionalPropsOnly ? type : `${type} | undefined`,
- });
- }
-
- // add import
- const imports: { type: string, isClass: boolean }[] = [];
- const types: string[] = [];
- importEntities.forEach((i) => {
- const { type } = i;
- if (!types.includes(type)) {
- imports.push(i);
- types.push(type);
- }
- });
- imports.sort((a, b) => a.type > b.type ? 1 : -1).forEach((ie) => {
- const { type: pType, isClass } = ie;
- if (isClass) {
- entityFile.addImportDeclaration({
- defaultImport: pType,
- moduleSpecifier: `./${pType}`,
- namedImports: [`I${pType}`],
- });
- } else {
- entityFile.addImportDeclaration({
- moduleSpecifier: `./${pType}`,
- namedImports: [pType],
- });
- }
- });
-
- const entityClass = entityFile.addClass({
- name: sName,
- isDefaultExport: true,
- });
-
- // addProperties to class;
- sortedSProps.forEach((sPropName) => {
- const [pType, isArray, isClass, isImport, isAdditional] = schemaParamParser(sProps[sPropName], this.openapi);
-
- const isRequred = (required && required.includes(sPropName))
- || sProps[sPropName].required;
-
- const propertyType = isAdditional
- ? `{ [key: string]: ${pType}${isArray ? '[]' : ''}${isRequred ? '' : ' | undefined'} }`
- : `${pType}${isArray ? '[]' : ''}${isRequred ? '' : ' | undefined'}`;
-
- entityClass.addProperty({
- name: `_${sPropName}`,
- isReadonly: true,
- type: propertyType,
- });
- const getter = entityClass.addGetAccessor({
- name: toCamel(sPropName),
- returnType: propertyType,
- statements: [`return this._${sPropName};`],
- });
- const { description, example, minItems, maxItems, maxLength, minLength, maximum, minimum } = sProps[sPropName];
- if (description || example) {
- getter.addJsDoc(`${example ? `Description: ${description}` : ''}${example ? `\nExample: ${example}` : ''}`);
- }
- if (minItems) {
- entityClass.addGetAccessor({
- isStatic: true,
- name: `${toCamel(sPropName)}MinItems`,
- statements: [`return ${minItems};`],
- });
- }
- if (maxItems) {
- entityClass.addGetAccessor({
- isStatic: true,
- name: `${toCamel(sPropName)}MaxItems`,
- statements: [`return ${maxItems};`],
- });
- }
- if (typeof minLength === 'number') {
- entityClass.addGetAccessor({
- isStatic: true,
- name: `${toCamel(sPropName)}MinLength`,
- statements: [`return ${minLength};`],
- });
- }
- if (maxLength) {
- entityClass.addGetAccessor({
- isStatic: true,
- name: `${toCamel(sPropName)}MaxLength`,
- statements: [`return ${maxLength};`],
- });
- }
- if (typeof minimum === 'number') {
- entityClass.addGetAccessor({
- isStatic: true,
- name: `${toCamel(sPropName)}MinValue`,
- statements: [`return ${minimum};`],
- });
- }
- if (maximum) {
- entityClass.addGetAccessor({
- isStatic: true,
- name: `${toCamel(sPropName)}MaxValue`,
- statements: [`return ${maximum};`],
- });
- }
-
- if (!(isArray && isClass) && !isClass) {
- const isEnum = !isClass && isImport;
- const isRequired = (required && required.includes(sPropName)) || sProps[sPropName].required;
- const { maxLength, minLength, maximum, minimum } = sProps[sPropName];
- const haveValidationFields = maxLength || typeof minLength === 'number' || maximum || typeof minimum === 'number';
- if (isRequired || haveValidationFields) {
- const prop = toCamel(sPropName);
- const validateField = entityClass.addMethod({
- isStatic: true,
- name: `${prop}Validate`,
- returnType: `boolean`,
- parameters: [{
- name: prop,
- type: `${pType}${isArray ? '[]' : ''}${isRequred ? '' : ' | undefined'}`,
- }],
- })
-
- validateField.setBodyText((w) => {
- w.write('return ');
- const nonRequiredCall = isRequired ? prop : `!${prop} ? true : ${prop}`;
- if (pType === 'string') {
- if (isArray) {
- w.write(`${nonRequiredCall}.reduce((result, p) => result && (typeof p === 'string' && !!p.trim()), true)`);
- } else {
- if (typeof minLength === 'number' && maxLength) {
- w.write(`(${nonRequiredCall}.length >${minLength > 0 ? '=' : ''} ${minLength}) && (${nonRequiredCall}.length <= ${maxLength})`);
- }
- if (typeof minLength !== 'number' || !maxLength) {
- w.write(`${isRequired ? `typeof ${prop} === 'string'` : `!${prop} ? true : typeof ${prop} === 'string'`} && !!${nonRequiredCall}.trim()`);
- }
- }
- } else if (pType === 'number') {
- if (isArray) {
- w.write(`${nonRequiredCall}.reduce((result, p) => result && typeof p === 'number', true)`);
- } else {
- if (typeof minimum === 'number' && maximum) {
- w.write(`${isRequired ? `${prop} >= ${minimum} && ${prop} <= ${maximum}` : `!${prop} ? true : ((${prop} >= ${minimum}) && (${prop} <= ${maximum}))`}`);
- }
- if (typeof minimum !== 'number' || !maximum) {
- w.write(`${isRequired ? `typeof ${prop} === 'number'` : `!${prop} ? true : typeof ${prop} === 'number'`}`);
- }
- }
- } else if (pType === 'boolean') {
- w.write(`${isRequired ? `typeof ${prop} === 'boolean'` : `!${prop} ? true : typeof ${prop} === 'boolean'`}`);
- } else if (isEnum) {
- if (isArray){
- w.write(`${nonRequiredCall}.reduce((result, p) => result && Object.keys(${pType}).includes(${prop}), true)`);
- } else {
- w.write(`${isRequired ? `Object.keys(${pType}).includes(${prop})` : `!${prop} ? true : typeof ${prop} === 'boolean'`}`);
- }
- }
-
- w.write(';');
- });
- }
- }
- });
- if (additionalProperties) {
- const [
- pType, isArray, isClass, isImport, isAdditional
- ] = schemaParamParser(additionalProperties, this.openapi);
- const type = `Record`;
-
- entityClass.addProperty({
- name: additionalPropsOnly ? 'data' : `${uncapitalize(pType)}Data`,
- isReadonly: true,
- type: type,
- });
- }
- // add constructor;
- const ctor = entityClass.addConstructor({
- parameters: [{
- name: 'props',
- type: `I${sName}`,
- }],
- });
- ctor.setBodyText((w) => {
- if (additionalProperties) {
- const [
- pType, isArray, isClass, isImport, isAdditional
- ] = schemaParamParser(additionalProperties, this.openapi);
- w.writeLine(`this.${additionalPropsOnly ? 'data' : `${uncapitalize(pType)}Data`} = Object.entries(props).reduce>((prev, [key, value]) => {`);
- if (isClass) {
- w.writeLine(` prev[key] = new ${pType}(value!);`);
- } else {
- w.writeLine(' prev[key] = value!;')
- }
- w.writeLine(' return prev;');
- w.writeLine('}, {})');
- return;
- }
- sortedSProps.forEach((sPropName) => {
- const [
- pType, isArray, isClass, , isAdditional
- ] = schemaParamParser(sProps[sPropName], this.openapi);
- const req = (required && required.includes(sPropName))
- || sProps[sPropName].required;
- if (!req) {
- if ((pType === 'boolean' || pType === 'number' || pType ==='string') && !isClass && !isArray) {
- w.writeLine(`if (typeof props.${sPropName} === '${pType}') {`);
- } else {
- w.writeLine(`if (props.${sPropName}) {`);
- }
- }
- if (isAdditional) {
- if (isArray && isClass) {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = props.${sPropName}.map((p) => Object.keys(p).reduce((prev, key) => {
- return { ...prev, [key]: new ${pType}(p[key])};
- },{}))`);
- } else if (isClass) {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = Object.keys(props.${sPropName}).reduce((prev, key) => {
- return { ...prev, [key]: new ${pType}(props.${sPropName}[key])};
- },{})`);
- } else {
- if (pType === 'string' && !isArray) {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = Object.keys(props.${sPropName}).reduce((prev, key) => {
- return { ...prev, [key]: props.${sPropName}[key].trim()};
- },{})`);
- } else {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = Object.keys(props.${sPropName}).reduce((prev, key) => {
- return { ...prev, [key]: props.${sPropName}[key]};
- },{})`);
- }
- }
- } else {
- if (isArray && isClass) {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = props.${sPropName}.map((p) => new ${pType}(p));`);
- } else if (isClass) {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = new ${pType}(props.${sPropName});`);
- } else {
- if (pType === 'string' && !isArray) {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = props.${sPropName}.trim();`);
- } else {
- w.writeLine(`${!req ? ' ' : ''}this._${sPropName} = props.${sPropName};`);
- }
- }
- }
- if (!req) {
- w.writeLine('}');
- }
- });
-
- });
-
- // add serialize method;
- const serialize = entityClass.addMethod({
- isStatic: false,
- name: 'serialize',
- returnType: `I${sName}`,
- });
- serialize.setBodyText((w) => {
- if (additionalProperties) {
- const [
- pType, isArray, isClass, isImport, isAdditional
- ] = schemaParamParser(additionalProperties, this.openapi);
- w.writeLine(`return Object.entries(this.${additionalPropsOnly ? 'data' : `${uncapitalize(pType)}Data`}).reduce>((prev, [key, value]) => {`);
- if (isClass) {
- w.writeLine(` prev[key] = value.serialize();`);
- } else {
- w.writeLine(' prev[key] = value;')
- }
- w.writeLine(' return prev;');
- w.writeLine('}, {})');
- return;
- }
- w.writeLine(`const data: I${sName} = {`);
- const unReqFields: string[] = [];
- sortedSProps.forEach((sPropName) => {
- const req = (required && required.includes(sPropName))
- || sProps[sPropName].required;
- const [, isArray, isClass, , isAdditional] = schemaParamParser(sProps[sPropName], this.openapi);
- if (!req) {
- unReqFields.push(sPropName);
- return;
- }
- if (isAdditional) {
- if (isArray && isClass) {
- w.writeLine(` ${sPropName}: this._${sPropName}.map((p) => Object.keys(p).reduce((prev, key) => ({ ...prev, [key]: p[key].serialize() }))),`);
- } else if (isClass) {
- w.writeLine(` ${sPropName}: Object.keys(this._${sPropName}).reduce>((prev, key) => ({ ...prev, [key]: this._${sPropName}[key].serialize() }), {}),`);
- } else {
- w.writeLine(` ${sPropName}: Object.keys(this._${sPropName}).reduce((prev, key) => ({ ...prev, [key]: this._${sPropName}[key] })),`);
- }
- } else {
- if (isArray && isClass) {
- w.writeLine(` ${sPropName}: this._${sPropName}.map((p) => p.serialize()),`);
- } else if (isClass) {
- w.writeLine(` ${sPropName}: this._${sPropName}.serialize(),`);
- } else {
- w.writeLine(` ${sPropName}: this._${sPropName},`);
- }
- }
-
- });
- w.writeLine('};');
- unReqFields.forEach((sPropName) => {
- const [, isArray, isClass, , isAdditional] = schemaParamParser(sProps[sPropName], this.openapi);
- w.writeLine(`if (typeof this._${sPropName} !== 'undefined') {`);
- if (isAdditional) {
- if (isArray && isClass) {
- w.writeLine(` data.${sPropName} = this._${sPropName}.map((p) => Object.keys(p).reduce((prev, key) => ({ ...prev, [key]: p[key].serialize() }), {}));`);
- } else if (isClass) {
- w.writeLine(` data.${sPropName} = Object.keys(this._${sPropName}).reduce((prev, key) => ({ ...prev, [key]: this._${sPropName}[key].serialize() }), {});`);
- } else {
- w.writeLine(` data.${sPropName} = Object.keys(this._${sPropName}).reduce((prev, key) => ({ ...prev, [key]: this._${sPropName}[key] }), {});`);
- }
- } else {
- if (isArray && isClass) {
- w.writeLine(` data.${sPropName} = this._${sPropName}.map((p) => p.serialize());`);
- } else if (isClass) {
- w.writeLine(` data.${sPropName} = this._${sPropName}.serialize();`);
- } else {
- w.writeLine(` data.${sPropName} = this._${sPropName};`);
-
- }
- }
-
- w.writeLine(`}`);
- });
- w.writeLine('return data;');
- });
-
- // add validate method
- const validate = entityClass.addMethod({
- isStatic: false,
- name: 'validate',
- returnType: `string[]`,
- })
- validate.setBodyText((w) => {
- if (additionalPropsOnly) {
- w.writeLine('return []')
- return;
- }
- w.writeLine('const validate = {');
- Object.keys(sProps || {}).forEach((sPropName) => {
- const [pType, isArray, isClass, , isAdditional] = schemaParamParser(sProps[sPropName], this.openapi);
-
- const { maxLength, minLength, maximum, minimum } = sProps[sPropName];
-
- const isRequired = (required && required.includes(sPropName)) || sProps[sPropName].required;
- const nonRequiredCall = isRequired ? `this._${sPropName}` : `!this._${sPropName} ? true : this._${sPropName}`;
-
- if (isArray && isClass) {
- w.writeLine(` ${sPropName}: ${nonRequiredCall}.reduce((result, p) => result && p.validate().length === 0, true),`);
- } else if (isClass && !isAdditional) {
- w.writeLine(` ${sPropName}: ${nonRequiredCall}.validate().length === 0,`);
- } else {
- if (pType === 'string') {
- if (isArray) {
- w.writeLine(` ${sPropName}: ${nonRequiredCall}.reduce((result, p) => result && typeof p === 'string', true),`);
- } else {
- if (typeof minLength === 'number' && maxLength) {
- w.writeLine(` ${sPropName}: (${nonRequiredCall}.length >${minLength > 0 ? '=' : ''} ${minLength}) && (${nonRequiredCall}.length <= ${maxLength}),`);
- }
- if (typeof minLength !== 'number' || !maxLength) {
- w.writeLine(` ${sPropName}: ${isRequired ? `typeof this._${sPropName} === 'string'` : `!this._${sPropName} ? true : typeof this._${sPropName} === 'string'`} && !this._${sPropName} ? true : this._${sPropName},`);
- }
- }
- } else if (pType === 'number') {
- if (isArray) {
- w.writeLine(` ${sPropName}: ${nonRequiredCall}.reduce((result, p) => result && typeof p === 'number', true),`);
- } else {
- if (typeof minimum === 'number' && maximum) {
- w.writeLine(` ${sPropName}: ${isRequired ? `this._${sPropName} >= ${minimum} && this._${sPropName} <= ${maximum}` : `!this._${sPropName} ? true : ((this._${sPropName} >= ${minimum}) && (this._${sPropName} <= ${maximum}))`},`);
- }
- if (typeof minimum !== 'number' || !maximum) {
- w.writeLine(` ${sPropName}: ${isRequired ? `typeof this._${sPropName} === 'number'` : `!this._${sPropName} ? true : typeof this._${sPropName} === 'number'`},`);
- }
- }
- } else if (pType === 'boolean') {
- w.writeLine(` ${sPropName}: ${isRequired ? `typeof this._${sPropName} === 'boolean'` : `!this._${sPropName} ? true : typeof this._${sPropName} === 'boolean'`},`);
- }
- }
- });
- w.writeLine('};');
- w.writeLine('const isError: string[] = [];')
- w.writeLine('Object.keys(validate).forEach((key) => {');
- w.writeLine(' if (!(validate as any)[key]) {');
- w.writeLine(' isError.push(key);');
- w.writeLine(' }');
- w.writeLine('});');
- w.writeLine('return isError;');
-
- });
-
- // add update method;
- const update = entityClass.addMethod({
- isStatic: false,
- name: 'update',
- returnType: `${sName}`,
- });
- update.addParameter({
- name: 'props',
- type: additionalPropsOnly ? `I${sName}` : `Partial`,
- });
- update.setBodyText((w) => { w.writeLine(`return new ${sName}({ ...this.serialize(), ...props });`); });
-
- this.entities.push(entityFile);
- };
-
- save = () => {
- this.entities.forEach(async (e) => {
- await e.saveSync();
- });
- };
-}
-
-export default EntitiesGenerator;
diff --git a/client2/scripts/generator/src/utils.ts b/client2/scripts/generator/src/utils.ts
deleted file mode 100644
index 5183b6c5..00000000
--- a/client2/scripts/generator/src/utils.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-const toCamel = (s: string) => {
- return s.replace(/([-_][a-z])/ig, ($1) => {
- return $1.toUpperCase()
- .replace('-', '')
- .replace('_', '');
- });
-};
-const capitalize = (s: string) => {
- return s[0].toUpperCase() + s.slice(1);
-};
-const uncapitalize = (s: string) => {
- return s[0].toLowerCase() + s.slice(1);
-};
-const TYPES = {
- integer: 'number',
- float: 'number',
- number: 'number',
- string: 'string',
- boolean: 'boolean',
-};
-
-/**
- * @param schemaProp: valueof shema.properties[key]
- * @param openApi: openapi object
- * @returns [propType - basicType or import one, isArray, isClass, isImport]
- */
-const schemaParamParser = (schemaProp: any, openApi: any): [string, boolean, boolean, boolean, boolean] => {
- let type = '';
- let isImport = false;
- let isClass = false;
- let isArray = false;
- let isAdditional = false;
-
- if (schemaProp.$ref || schemaProp.additionalProperties?.$ref) {
- const temp = (schemaProp.$ref || schemaProp.additionalProperties?.$ref).split('/');
-
- if (schemaProp.additionalProperties) {
- isAdditional = true;
- }
-
- type = `${temp[temp.length - 1]}`;
-
- const cl = openApi ? openApi.components.schemas[type] : {};
-
- if (cl.$ref) {
- const link = schemaParamParser(cl, openApi);
- link.shift();
- return [type, ...link] as any;
- }
-
- if (cl.type === 'string' && cl.enum) {
- isImport = true;
- }
-
- if (cl.type === 'object' && !cl.oneOf) {
- isClass = true;
- isImport = true;
- } else if (cl.type === 'array') {
- const temp: any = schemaParamParser(cl.items, openApi);
- type = `${temp[0]}`;
- isArray = true;
- isClass = isClass || temp[2];
- isImport = isImport || temp[3];
- }
- } else if (schemaProp.type === 'array') {
- const temp: any = schemaParamParser(schemaProp.items, openApi);
- type = `${temp[0]}`;
- isArray = true;
- isClass = isClass || temp[2];
- isImport = isImport || temp[3];
- } else {
- type = (TYPES as Record)[schemaProp.type];
- }
- if (!type) {
- // TODO: Fix bug with Error fields.
- type = 'any';
- // throw new Error('Failed to find entity type');
- }
-
- return [type, isArray, isClass, isImport, isAdditional];
-};
-
-export { TYPES, toCamel, capitalize, uncapitalize, schemaParamParser };
diff --git a/client2/scripts/helpers/checkTranslations.ts b/client2/scripts/helpers/checkTranslations.ts
deleted file mode 100644
index 6634f65b..00000000
--- a/client2/scripts/helpers/checkTranslations.ts
+++ /dev/null
@@ -1,226 +0,0 @@
-import * as fs from 'fs';
-import {
- Project,
- VariableStatement,
- SyntaxKind,
- Node,
- Statement,
- ts,
- Identifier,
- SourceFile,
-} from 'ts-morph';
-import {
- LOCALE_FOLDER_PATH,
- TRANSLATOR_CLASS_NAME,
- USE_INTL_NAME,
- trimQuotes,
-} from '../consts';
-import { checkForms, AvailableLocales } from '../../src/localization/Translator';
-
-const project = new Project({
- tsConfigFilePath: './tsconfig.json',
-});
-
-let lang = 'ru';
-let option = '';
-
-if (process.argv.length > 2) {
- lang = process.argv[2];
- option = process.argv[3];
-}
-
-const usedTranslations: string[] = [];
-const usedPluralTranslations: string[] = [];
-
-const problemFiles: string[] = [];
-const sourceFiles = project.getSourceFiles();
-const sourceFilesWithIntl = sourceFiles.filter((sf) => {
- return !!sf.getImportDeclarations().find((id) => {
- return !!id.getNamedImports().find((ni) => ni.getName() === USE_INTL_NAME)
- })
-});
-const getFileUsedIntl = (statements: Statement[]) => {
- statements.forEach((s) => {
- if (s instanceof VariableStatement) {
- s.forEachDescendant((node) => {
- let intVariableDeclaration: Identifier = null;
- switch (node.getKind()) {
- case SyntaxKind.VariableDeclaration:
- if (node.getSymbol()) {
- const name = node.getSymbol().getName();
- const callExp = node.getChildren().find((n) => n.getKind() === SyntaxKind.CallExpression);
- if (callExp) {
- const callExpIden = callExp.getChildren().find(n => n.getKind() === SyntaxKind.Identifier);
- if (callExpIden && callExpIden.getSymbol().getName() === USE_INTL_NAME) {
- intVariableDeclaration = node as Identifier;
- }
- }
- }
- break;
- default:
- break;
- }
- if (intVariableDeclaration) {
- intVariableDeclaration.findReferencesAsNodes().forEach((fr) => {
- if (fr instanceof Node) {
- const parent = fr.getParentIfKind(SyntaxKind.PropertyAccessExpression);
- if (parent && (parent.getName() === 'getMessage' || parent.getName() === 'getPlural')) {
- const syntaxList = parent.getNextSiblings().find((n) => n.getKind() === SyntaxKind.SyntaxList);
- if (syntaxList) {
- const id = syntaxList.getChildren()[0];
- if (id && id.getKind() !== SyntaxKind.StringLiteral) {
- problemFiles.push(fr.getSourceFile().getFilePath());
- }
- if (id) {
- usedTranslations.push(trimQuotes(id.getText()));
- if (parent.getName() === 'getPlural') {
- usedPluralTranslations.push(trimQuotes(id.getText()));
- }
- }
- }
- }
- }
- })
- }
- });
- }
- })
-}
-
-const getFileUsedTranslations = (file: SourceFile) => {
- const namedImport = file.getImportDeclarations().find((id) => !!id.getNamedImports().find((ni) => ni.getName() === TRANSLATOR_CLASS_NAME));
- if (namedImport) {
- const identifier = namedImport.getImportClause().getNamedImports().find((iden) => iden.getName() === TRANSLATOR_CLASS_NAME);
- const translateReferences = identifier.getNodeProperty('name').findReferencesAsNodes();
- if (translateReferences.length > 0) {
- translateReferences.forEach((identifierNode) => {
- if (identifierNode.getParentIfKind(SyntaxKind.TypeReference)) {
- const translatorVariable = identifierNode.getParent().getPreviousSibling().getPreviousSiblingIfKind(SyntaxKind.Identifier);
- if (translatorVariable) {
- translatorVariable.findReferencesAsNodes().forEach((node) => {
- const parent = node.getParentIfKind(SyntaxKind.PropertyAccessExpression);
- if (parent && (parent.getName() === 'getMessage' || parent.getName() === 'getPlural')) {
-
- const syntaxList = parent.getNextSiblings().find((n) => n.getKind() === SyntaxKind.SyntaxList);
- if (syntaxList) {
- const id = syntaxList.getChildren()[0];
- if (id && id.getKind() !== SyntaxKind.StringLiteral) {
- problemFiles.push(parent.getSourceFile().getFilePath());
- }
- if (id) {
- usedTranslations.push(trimQuotes(id.getText()));
- if (parent.getName() === 'getPlural') {
- usedPluralTranslations.push(trimQuotes(id.getText()));
- }
- }
- }
- }
- })
- }
- }
- })
- }
-
- }
-}
-sourceFilesWithIntl.forEach((file) => {
- getFileUsedIntl(file.getStatements());
-})
-
-const sourceFilesWithTranslator = project.getSourceFiles().filter((sf) => {
- return !!sf.getImportDeclarations().find((id) => {
- return !!id.getNamedImports().find((ni) => ni.getName() === TRANSLATOR_CLASS_NAME)
- })
-});
-sourceFilesWithTranslator.forEach((file) => {
- getFileUsedTranslations(file);
-})
-const filteredUsedTranslations = Array.from(new Set(usedTranslations));
-const filteredUsedPluralTranslations = Array.from(new Set(usedPluralTranslations));
-
-if (problemFiles.length) {
- console.warn(`\n============== Files where translation id provided not as string ==============\n`);
- console.log(problemFiles.join('\n'));
- process.exit(255);
-}
-
-const allFiles = fs.readdirSync(LOCALE_FOLDER_PATH);
-// Use ru or needed language
-const translationFile = allFiles.find((file) => file.includes(`${lang}.json`));
-
-if (!translationFile) {
- console.error('File not found');
- process.exit(255);
-}
-
-const translationsObject = JSON.parse(fs.readFileSync(`./src/lib/intl/__locales/${translationFile}`, { flag: 'r+' }) as unknown as string);
-const translations = {
- locale: translationFile,
- messages: Object.keys(translationsObject),
-};
-
-const someMessagesNotFound: string[] = [];
-const notUsed: string[] = [];
-const notFound: string[] = [];
-const checkLocaleMessages = (locale: string, messages: string[]) => {
- filteredUsedTranslations.forEach(f => {
- if (!messages.includes(f)) {
- notFound.push(f);
- }
- });
- messages.forEach(t => {
- if (!filteredUsedTranslations.includes(t)) {
- notUsed.push(t);
- }
- });
- if (notFound.length > 0) {
- someMessagesNotFound.push(locale);
- }
-}
-
-const render = (data: string[], title: string) => {
- console.log(`============ ${title} ============`);
- console.table(data);
- console.log(`============ ${title} ============`);
-}
-
-checkLocaleMessages(translations.locale, translations.messages);
-
-const checkPluralForm = () => {
- const pluralFormWrong: string[] = [];
- filteredUsedPluralTranslations.forEach((id) => {
- const message = translationsObject[id];
- if (!checkForms(message, lang as AvailableLocales, id)) {
- pluralFormWrong.push(id)
- }
- });
- return pluralFormWrong;
-}
-
-const plural = checkPluralForm();
-if (!option && (someMessagesNotFound.length || plural.length > 0 )) {
- someMessagesNotFound.forEach(locale => console.error(`\nSome translatins for ${locale} was not found!\n`));
- plural.forEach(id => console.error(`\nTranslation with id: "${id}" - have wrong number of plural forms!\n`));
- process.exit(255);
-}
-if (option) {
- switch (option) {
- case '--show-missing': {
- render(notFound, 'NotFound')
- break;
- }
- case '--show-unused': {
- render(notUsed, 'notUsed')
- break;
- }
- case '--check-plurals': {
- render(plural, 'Wrong Plural Form')
- }
- default: {
- if (someMessagesNotFound.length) {
- someMessagesNotFound.forEach(locale => console.error(`\nSome translatins for ${locale} was not found!\n\n`));
- process.exit(255);
- }
- }
- }
-}
diff --git a/client2/scripts/lint/common.js b/client2/scripts/lint/common.js
deleted file mode 100644
index 759fa44f..00000000
--- a/client2/scripts/lint/common.js
+++ /dev/null
@@ -1,79 +0,0 @@
-module.exports = {
- parser: '@typescript-eslint/parser',
- parserOptions: {
- project: './tsconfig.json',
- ecmaFeatures: {
- jsx: true
- },
- extraFileExtensions: ['mjs', 'tsx', 'ts'],
- ecmaVersion: 2020,
- sourceType: 'module'
- },
- plugins: ['react', '@typescript-eslint', 'import'],
- env: {
- browser: true,
- commonjs: true,
- es6: true,
- es2020: true,
- jest: true,
- },
- settings: {
- react: {
- pragma: 'React',
- version: 'detect',
- },
- 'import/resolver': {
- typescript: {
- alwaysTryTypes: true
- }
- },
- 'import/parsers': {
- '@typescript-eslint/parser': ['.ts', '.tsx'],
- },
- },
- rules: {
- '@typescript-eslint/explicit-module-boundary-types': 0,
- '@typescript-eslint/explicit-function-return-type': [0, { allowExpressions: true }],
- '@typescript-eslint/indent': ['error', 4],
- '@typescript-eslint/interface-name-prefix': [0, { prefixWithI: 'never' }],
- '@typescript-eslint/no-explicit-any': [0],
- '@typescript-eslint/naming-convention': [2, {
- selector: 'enum', format: ['UPPER_CASE', 'PascalCase'],
- }],
- '@typescript-eslint/no-non-null-assertion': 0,
- 'arrow-body-style': 'off',
- 'consistent-return': 0,
- curly: [2, 'all'],
- 'default-case': 0,
- 'import/no-cycle': 0,
- 'import/prefer-default-export': 'off',
- 'import/no-named-as-default': 0,
- indent: [0, 4],
- 'no-alert': 2,
- 'no-console': 2,
- 'no-debugger': 2,
- 'no-underscore-dangle': 'off',
- 'no-useless-escape': 'off',
- 'object-curly-newline': 'off',
- 'react-hooks/exhaustive-deps': 0,
- 'react/display-name': 0,
- 'react/jsx-indent-props': ['error', 4],
- 'react/jsx-indent': ['error', 4],
- 'react/jsx-one-expression-per-line': 'off',
- 'react/jsx-props-no-spreading': 0,
- 'react/prop-types': 'off',
- 'react/state-in-constructor': 'off',
- },
- extends: [
- 'airbnb-base',
- 'airbnb-typescript/base',
- 'airbnb/hooks',
- 'plugin:react/recommended',
- 'plugin:@typescript-eslint/eslint-recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:import/errors',
- 'plugin:import/warnings',
- 'plugin:import/typescript',
- ],
- globals: {},
-};
diff --git a/client2/scripts/lint/dev.js b/client2/scripts/lint/dev.js
deleted file mode 100644
index 33784298..00000000
--- a/client2/scripts/lint/dev.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = {
- rules: {
- 'no-alert': 0,
- 'no-debugger': 0,
- 'no-console': 0,
- },
- extends: [
- './common',
- ],
-};
diff --git a/client2/scripts/lint/prod.js b/client2/scripts/lint/prod.js
deleted file mode 100644
index f31bae1f..00000000
--- a/client2/scripts/lint/prod.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- extends: [
- './common.js',
- ],
-};
diff --git a/client2/scripts/webpack/helpers.js b/client2/scripts/webpack/helpers.js
deleted file mode 100644
index 2a72e0b6..00000000
--- a/client2/scripts/webpack/helpers.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const yaml = require('yaml');
-const fs = require('fs');
-
-const ZERO_HOST = '0.0.0.0';
-const LOCALHOST = '127.0.0.1';
-const DEFAULT_PORT = 80;
-
-const importConfig = () => {
- try {
- const doc = yaml.parse(fs.readFileSync('../AdguardHome.yaml', 'utf8'));
- const { bind_host, bind_port } = doc;
- return {
- bind_host,
- bind_port,
- };
- } catch (e) {
- return {
- bind_host: ZERO_HOST,
- bind_port: DEFAULT_PORT,
- };
- }
-};
-
-const getDevServerConfig = () => {
- const { bind_host: host, bind_port: port } = importConfig();
- const { DEV_SERVER_PORT } = process.env;
-
- const devServerHost = host === ZERO_HOST ? LOCALHOST : host;
- const devServerPort = 3000 || port + 8000;
-
- return {
- host: devServerHost,
- port: devServerPort
- };
-};
-
-module.exports = {
- importConfig,
- getDevServerConfig
-};
diff --git a/client2/scripts/webpack/webpack.config.base.js b/client2/scripts/webpack/webpack.config.base.js
deleted file mode 100644
index babb4f54..00000000
--- a/client2/scripts/webpack/webpack.config.base.js
+++ /dev/null
@@ -1,74 +0,0 @@
-const path = require('path');
-const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin');
-const HtmlWebpackPlugin = require('html-webpack-plugin');
-const tsconfig = require('../../tsconfig.json');
-
-const RESOURCES_PATH = path.resolve(__dirname, '../../');
-const HTML_PATH = path.resolve(RESOURCES_PATH, 'public/index.html');
-const HTML_INSTALL_PATH = path.resolve(RESOURCES_PATH, 'public/install.html');
-
-module.exports = {
- entry: {
- install: './src/Install.tsx',
- main: './src/App.tsx'
- },
- resolve: {
- extensions: ['.tsx', '.ts', '.js', '.pcss'],
- alias: Object.keys(tsconfig.compilerOptions.paths).reduce((aliases, key) => {
- // Reduce to load aliases from ./tsconfig.json in appropriate for webpack form
- const paths = tsconfig.compilerOptions.paths[key].map(p => p.replace('/*', ''));
- aliases[key.replace('/*', '')] = path.resolve(
- __dirname,
- '../../',
- tsconfig.compilerOptions.baseUrl,
- ...paths,
- );
- return aliases;
- }, {}),
- },
- module: {
- rules: [
- {
- test: /\.tsx?$/,
- use: 'ts-loader',
- exclude: /node_modules/,
- },
- {
- test: /\.(woff|woff2)$/,
- use: [{
- loader: 'file-loader',
- options:{
- outputPath:'./',
- }
- }],
- },
- {
- test:/\.(png|jpe?g|gif)$/,
- exclude: /(node_modules)/,
- use:[{
- loader:'file-loader',
- options:{
- outputPath:'./images',
- }
- }]
- }
- ],
- },
-
- plugins: [
- // new AntdDayjsWebpackPlugin()
- new HtmlWebpackPlugin({
- inject: true,
- cache: false,
- chunks: ['main'],
- template: HTML_PATH,
- }),
- new HtmlWebpackPlugin({
- inject: true,
- cache: false,
- chunks: ['install'],
- filename: 'install.html',
- template: HTML_INSTALL_PATH,
- }),
- ],
-};
diff --git a/client2/scripts/webpack/webpack.config.dev.js b/client2/scripts/webpack/webpack.config.dev.js
deleted file mode 100644
index 2d5c1c8a..00000000
--- a/client2/scripts/webpack/webpack.config.dev.js
+++ /dev/null
@@ -1,114 +0,0 @@
-const history = require('connect-history-api-fallback');
-const { merge } = require('webpack-merge');
-const path = require('path');
-const proxy = require('http-proxy-middleware');
-const Webpack = require('webpack');
-
-const { getDevServerConfig } = require('./helpers');
-const baseConfig = require('./webpack.config.base');
-
-const devHost = process.env.DEV_HOST
-const target = getDevServerConfig();
-
-const options = {
- target: devHost || `http://${target.host}:${target.port}`, // target host
- changeOrigin: true, // needed for virtual hosted sites
-};
-const apiProxy = proxy.createProxyMiddleware(options);
-
-module.exports = merge(baseConfig, {
- mode: 'development',
- output: {
- path: path.resolve(__dirname, '../../build2'),
- filename: '[name].bundle.js',
- },
- optimization: {
- noEmitOnErrors: true,
- },
- devServer: {
- port: 4000,
- historyApiFallback: true,
- before: (app) => {
- app.use('/control', apiProxy);
- app.use(history({
- rewrites: [
- {
- from: /\.(png|jpe?g|gif)$/,
- to: (context) => {
- const name = context.parsedUrl.pathname.split('/');
- return `/images/${name[name.length - 1]}`
- }
- }, {
- from: /\.(woff|woff2)$/,
- to: (context) => {
- const name = context.parsedUrl.pathname.split('/');
- return `/${name[name.length - 1]}`
- }
- }, {
- from: /\.(js|css)$/,
- to: (context) => {
- const name = context.parsedUrl.pathname.split('/');
- return `/${name[name.length - 1]}`
- }
- }
- ],
- }));
- }
- },
- devtool: 'eval-source-map',
- module: {
- rules: [
- {
- enforce: 'pre',
- test: /\.tsx?$/,
- exclude: /node_modules/,
- loader: 'eslint-loader',
- options: {
- configFile: path.resolve(__dirname, '../lint/dev.js'),
- }
- },
- {
- test: (resource) => {
- return (
- resource.indexOf('.pcss')+1
- || resource.indexOf('.css')+1
- || resource.indexOf('.less')+1
- ) && !(resource.indexOf('.module.')+1);
- },
- use: ['style-loader', 'css-loader', 'postcss-loader', {
- loader: 'less-loader',
- options: {
- javascriptEnabled: true,
- },
- }],
- },
- {
- test: /\.module\.p?css$/,
- use: [
- 'style-loader',
- {
- loader: 'css-loader',
- options: {
- modules: true,
- sourceMap: true,
- importLoaders: 1,
- modules: {
- localIdentName: "[name]__[local]___[hash:base64:5]",
- }
- },
- },
- 'postcss-loader',
- ],
- exclude: /node_modules/,
- },
- ]
- },
- plugins: [
- new Webpack.DefinePlugin({
- DEV: true,
- 'process.env.DEV_SERVER_PORT': JSON.stringify(3000),
- }),
- new Webpack.HotModuleReplacementPlugin(),
- new Webpack.ProgressPlugin(),
- ],
-});
diff --git a/client2/scripts/webpack/webpack.config.prod.js b/client2/scripts/webpack/webpack.config.prod.js
deleted file mode 100644
index d9057ef1..00000000
--- a/client2/scripts/webpack/webpack.config.prod.js
+++ /dev/null
@@ -1,89 +0,0 @@
-const path = require('path');
-const { merge } = require('webpack-merge');
-const baseConfig = require('./webpack.config.base');
-const MiniCssExtractPlugin = require("mini-css-extract-plugin");
-const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
-const TerserJSPlugin = require('terser-webpack-plugin');
-const Webpack = require('webpack');
-const CopyPlugin = require('copy-webpack-plugin');
-
-module.exports = merge(baseConfig, {
- mode: 'production',
- devtool: 'source-map',
- stats: 'minimal',
- performance : {
- hints : false
- },
- output: {
- path: path.resolve(__dirname, '../../../build2/static'),
- filename: '[name].bundle.[hash:5].js',
- publicPath: '/'
- },
- optimization: {
- minimizer: [new TerserJSPlugin({terserOptions: {
- output: {
- comments: false,
- },
- },
- extractComments: false,
- }), new OptimizeCSSAssetsPlugin({})],
- splitChunks: {
- cacheGroups: {
- styles: {
- name: 'styles',
- test: /\.css$/,
- chunks: 'all',
- enforce: true,
- },
- },
- },
- },
- module: {
- rules: [
- {
- test: (resource) => {
- return (
- resource.indexOf('.pcss')+1
- || resource.indexOf('.css')+1
- || resource.indexOf('.less')+1
- ) && !(resource.indexOf('.module.')+1);
- },
- use: [{
- loader: MiniCssExtractPlugin.loader,
- }, 'css-loader', 'postcss-loader', {
- loader: 'less-loader',
- options: {
- javascriptEnabled: true,
- },
- }],
- exclude: /node_modules/,
- },
- {
- test: /\.module\.p?css$/,
- use: [
- {
- loader: MiniCssExtractPlugin.loader,
- },
- {
- loader: 'css-loader',
- options: {
- modules: true,
- sourceMap: true,
- importLoaders: 1,
- },
- },
- 'postcss-loader',
- ],
- exclude: /node_modules/,
- }
- ]
- },
- plugins: [
- new Webpack.DefinePlugin({
- DEV: false,
- }),
- new MiniCssExtractPlugin({
- filename: '[name].[hash:5].css',
- }),
- ]
-});
diff --git a/client2/src/App.tsx b/client2/src/App.tsx
deleted file mode 100644
index f01e3253..00000000
--- a/client2/src/App.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import './main.pcss';
-import './lib/ant/ant.less';
-import React from 'react';
-import ReactDOM from 'react-dom';
-import Store, { storeValue } from 'Store';
-import './lib/ant';
-
-import App from './components/App';
-
-const Container = () => {
- return (
-
-
-
- );
-};
-
-ReactDOM.render( , document.getElementById('app'));
diff --git a/client2/src/Install.tsx b/client2/src/Install.tsx
deleted file mode 100644
index ccc61315..00000000
--- a/client2/src/Install.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import './main.pcss';
-import './lib/ant/ant.less';
-import React from 'react';
-import ReactDOM from 'react-dom';
-import Store, { storeValue } from 'Store/installStore';
-import './lib/ant';
-
-import Install from './components/Install';
-
-const Container = () => {
- return (
-
-
-
- );
-};
-
-ReactDOM.render( , document.getElementById('app'));
diff --git a/client2/src/assets/img/install.png b/client2/src/assets/img/install.png
deleted file mode 100644
index 68dbd780..00000000
Binary files a/client2/src/assets/img/install.png and /dev/null differ
diff --git a/client2/src/components/App/App.tsx b/client2/src/components/App/App.tsx
deleted file mode 100644
index cddb50c6..00000000
--- a/client2/src/components/App/App.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import React, { FC } from 'react';
-import { BrowserRouter } from 'react-router-dom';
-
-import Icons from 'Common/ui/Icons';
-import Routes from './Routes';
-
-import { ErrorBoundary } from './Errors';
-
-const App: FC = () => {
- return (
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/client2/src/components/App/Dashboard/Dashboard.tsx b/client2/src/components/App/Dashboard/Dashboard.tsx
deleted file mode 100644
index 02846ca1..00000000
--- a/client2/src/components/App/Dashboard/Dashboard.tsx
+++ /dev/null
@@ -1,136 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Row, Col } from 'antd';
-import { observer } from 'mobx-react-lite';
-
-import Store from 'Store';
-import { InnerLayout } from 'Common/ui/layouts';
-import theme from 'Lib/theme';
-import { BlockCard, TopDomains, BlockedQueries, TopClients, ServerStatistics } from './components';
-
-const Dashboard:FC = observer(() => {
- const store = useContext(Store);
- const {
- dashboard: { stats, filteringConfig },
- system: { status },
- ui: { intl },
- } = store;
-
- if (!stats || !filteringConfig) {
- return null;
- }
-
- const {
- numBlockedFiltering,
- numReplacedParental,
- numReplacedSafebrowsing,
- replacedParental,
- replacedSafebrowsing,
- avgProcessingTime,
- blockedFiltering,
-
- topBlockedDomains,
- topQueriedDomains,
- dnsQueries,
- numDnsQueries,
-
- } = stats;
-
- const { filters } = filteringConfig!;
- const allFilters = filters?.length;
- const allRules = filters?.reduce((prev, e) => prev + (e.rulesCount || 0), 0);
- const enabled = filters?.filter((e) => e.enabled).length;
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* TODO: fix chart */}
-
-
-
-
-
-
-
- );
-});
-
-export default Dashboard;
diff --git a/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.module.pcss b/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.module.pcss
deleted file mode 100644
index 62eb6b4f..00000000
--- a/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.module.pcss
+++ /dev/null
@@ -1,20 +0,0 @@
-.container {
- display: flex;
- flex-flow: column;
- padding: 24px;
- background-color: var(--white);
-}
-
-.title {
- font-size: 14px;
- line-height: 22px;
- margin-bottom: 4px;
- color: var(--gray700);
-}
-
-.overal {
- font-size: 30px;
- line-height: 38px;
- margin-bottom: 18px;
- color: var(--gray900);
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.tsx b/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.tsx
deleted file mode 100644
index b962db01..00000000
--- a/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React, { FC } from 'react';
-import { AreaChart, Area, ResponsiveContainer } from 'recharts';
-
-import s from './BlockCard.module.pcss';
-
-interface BlockCardProps {
- overal: number | string;
- data?: number[];
- text?: string;
- color?: string;
- title: string;
-}
-
-const BlockCard: FC = ({ overal, data, color, title, text }) => {
- return (
-
-
{title}
-
{overal}
- {data && (
-
- ({ name: 'data', value: n }))}>
-
-
-
- )}
- {text && (
-
- {text}
-
- )}
-
- );
-};
-
-export default BlockCard;
diff --git a/client2/src/components/App/Dashboard/components/BlockCard/index.ts b/client2/src/components/App/Dashboard/components/BlockCard/index.ts
deleted file mode 100644
index 085552ae..00000000
--- a/client2/src/components/App/Dashboard/components/BlockCard/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as BlockCard } from './BlockCard';
diff --git a/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.module.pcss b/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.module.pcss
deleted file mode 100644
index 7520f474..00000000
--- a/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.module.pcss
+++ /dev/null
@@ -1,16 +0,0 @@
-.container {
- display: flex;
- flex-flow: column;
- padding: 24px;
- background-color: var(--white);
-}
-
-.title {
- font-size: 14px;
- line-height: 22px;
- margin-bottom: 4px;
- color: var(--gray700);
-}
-.pie {
- padding: 34px 0px;
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.tsx b/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.tsx
deleted file mode 100644
index 7b8eec9d..00000000
--- a/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import theme from 'Lib/theme';
-import React, { FC, useContext, useState } from 'react';
-import { PieChart, Pie, ResponsiveContainer, Sector, Cell } from 'recharts';
-
-import Store from 'Store';
-
-import s from './BlockedQueries.module.pcss';
-
-interface BlockCardProps {
- ads: number;
- trackers: number;
- other: number;
-}
-
-const renderActiveShape = (props: any): any => {
- const {
- cx, cy, innerRadius, outerRadius, startAngle, endAngle,
- fill, payload, percent,
- } = props;
- return (
-
- {payload.name}
- {Math.round(percent * 100)}%
-
-
- );
-};
-
-const BlockedQueries: FC = ({ ads, trackers, other }) => {
- const store = useContext(Store);
- const [activeIndex, setActiveIndex] = useState(0);
- const { ui: { intl } } = store;
- const data = [
- { name: intl.getMessage('other'), value: other, color: theme.chartColors.gray700 },
- { name: intl.getMessage('ads'), value: ads, color: theme.chartColors.red },
- { name: intl.getMessage('trackers'), value: trackers, color: theme.chartColors.orange },
- ];
- const onChart: any = (_: any, index: number) => {
- setActiveIndex(index);
- };
- return (
-
-
{intl.getMessage('dashboard_blocked_queries')}
-
-
-
-
- {data.map((entry, index) => (
- |
- ))}
-
-
-
-
-
- );
-};
-
-export default BlockedQueries;
diff --git a/client2/src/components/App/Dashboard/components/BlockedQueries/index.ts b/client2/src/components/App/Dashboard/components/BlockedQueries/index.ts
deleted file mode 100644
index 019ab9c9..00000000
--- a/client2/src/components/App/Dashboard/components/BlockedQueries/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as BlockedQueries } from './BlockedQueries';
diff --git a/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.module.pcss b/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.module.pcss
deleted file mode 100644
index cc8003da..00000000
--- a/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.module.pcss
+++ /dev/null
@@ -1,46 +0,0 @@
-.container {
- display: flex;
- flex-flow: column;
- background-color: var(--white);
- margin-top: 24px;
-}
-
-.title {
- padding: 24px;
- font-size: 16px;
- font-weight: 500;
- line-height: 22px;
- border-bottom: 1px solid var(--gray300);
- color: var(--gray900);
-}
-
-.card {
- padding: 24px;
- height: 100%;
-}
-
-.cardBorder {
- border-right: 1px solid var(--gray300);
-
- &:last-of-type {
- border-right: 0;
- }
-}
-
-.cardTitle {
- font-weight: 500;
- margin-bottom: 12px;
-}
-
-.cardDesc {
- color: var(--gray700);
-}
-
-.cardValue {
- color: var(--gray900);
- font-size: 30px;
-}
-
-.chart {
- margin-top: 24px;
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.tsx b/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.tsx
deleted file mode 100644
index 1ec98476..00000000
--- a/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Row, Col } from 'antd';
-import { AreaChart, Area, ResponsiveContainer } from 'recharts';
-
-import Store from 'Store';
-import theme from 'Lib/theme';
-
-import s from './ServerStatistics.module.pcss';
-
-const ServerStatistics: FC = () => {
- const store = useContext(Store);
- const { ui: { intl } } = store;
-
- const data = [0, 10, 2, 14, 12, 24, 5, 8, 10, 0, 3, 5, 7, 8, 3];
- return (
-
-
{intl.getMessage('dashboard_server_statistics')}
-
-
-
-
- Average server load
-
-
-
- Processes: 213
-
-
- Cores: 2
-
-
-
- ({ name: 'data', value: n }))}>
-
-
-
-
-
-
-
-
- Memory usage
-
-
- 236 Mb
-
-
- ({ name: 'data', value: n }))}>
-
-
-
-
-
-
-
-
- DNS cashe size
-
-
- 2 363 records
-
-
-
-
-
-
-
- Upstream servers data
-
-
-
- Processes: 213
-
-
- Cores: 2
-
-
-
-
-
-
- );
-};
-
-export default ServerStatistics;
diff --git a/client2/src/components/App/Dashboard/components/ServerStatistics/index.ts b/client2/src/components/App/Dashboard/components/ServerStatistics/index.ts
deleted file mode 100644
index 98228599..00000000
--- a/client2/src/components/App/Dashboard/components/ServerStatistics/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as ServerStatistics } from './ServerStatistics';
diff --git a/client2/src/components/App/Dashboard/components/TopClients/TopClients.module.pcss b/client2/src/components/App/Dashboard/components/TopClients/TopClients.module.pcss
deleted file mode 100644
index d4b4b01a..00000000
--- a/client2/src/components/App/Dashboard/components/TopClients/TopClients.module.pcss
+++ /dev/null
@@ -1,43 +0,0 @@
-.container {
- display: flex;
- flex-flow: column;
- background-color: var(--white);
-}
-
-.title {
- font-size: 16px;
- line-height: 22px;
- margin-bottom: 4px;
- padding: 24px;
- color: var(--gray900);
-}
-
-.table {
- position: relative;
-}
-
-.tableTitle {
- color: var(--gray700);
- background-color: #fafafa;
- padding: 24px;
- position: sticky;
- top: 0;
-}
-
-.tableGrid {
- display: grid;
- grid-template-columns: 4fr 1fr 1fr 1.5fr 1fr .5fr;
- padding: 16px 24px;
- border-bottom: 1px solid var(--gray300);
-
- &:last-of-type {
- border-bottom: 0;
- }
-
- > div {
- align-self: center;
- }
-}
-.ids {
- color: var(--gray700)
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Dashboard/components/TopClients/TopClients.tsx b/client2/src/components/App/Dashboard/components/TopClients/TopClients.tsx
deleted file mode 100644
index 9e743964..00000000
--- a/client2/src/components/App/Dashboard/components/TopClients/TopClients.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button } from 'antd';
-import cn from 'classnames';
-import { observer } from 'mobx-react-lite';
-
-import Store from 'Store';
-
-import s from './TopClients.module.pcss';
-
-const TopClients: FC = observer(() => {
- const store = useContext(Store);
- const { ui: { intl }, dashboard } = store;
- const { clientsInfo, stats } = dashboard;
- const topClients = new Map();
- stats?.topClients?.forEach((client) => {
- const [id, requests] = Object.entries(client.numberData);
- topClients.set(id, requests);
- });
- const clients = Array.from(clientsInfo.entries());
-
- return (
-
-
{intl.getMessage('Top Clients')}
-
-
-
{intl.getMessage('client_table_header')}
-
{intl.getMessage('requests')}
-
{intl.getMessage('show_blocked_responses')}
-
%
-
-
-
- {clients.map(([id, c]) => {
- const request = topClients.get(id);
- return (
-
-
- {c.name}
-
- {c.ids?.map((cid) => (
-
{cid}
- ))}
-
-
-
- {request}
-
-
- API
- {/* TODO: api */}
-
-
- API / {request}
-
-
-
- {intl.getMessage('Block')}
-
-
-
- ...
-
-
- );
- })}
-
-
- );
-});
-
-export default TopClients;
diff --git a/client2/src/components/App/Dashboard/components/TopClients/index.ts b/client2/src/components/App/Dashboard/components/TopClients/index.ts
deleted file mode 100644
index b495d493..00000000
--- a/client2/src/components/App/Dashboard/components/TopClients/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as TopClients } from './TopClients';
diff --git a/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.module.pcss b/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.module.pcss
deleted file mode 100644
index b61ab72a..00000000
--- a/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.module.pcss
+++ /dev/null
@@ -1,62 +0,0 @@
-.container {
- display: flex;
- flex-flow: column;
- background-color: var(--white);
-}
-
-.title {
- padding: 24px;
- font-size: 16px;
- font-weight: 500;
- line-height: 22px;
- border-bottom: 1px solid var(--gray300);
- margin-bottom: 16px;
- color: var(--gray900);
-}
-
-.content {
- padding: 24px;
-
-}
-
-.overal {
- font-size: 24px;
- line-height: 32px;
- margin-bottom: 24px;
- color: var(--gray900);
-}
-
-.table {
- position: relative;
- overflow-y: auto;
- max-height: 280px;
- width: 100%;
-}
-
-.tableHeader {
- /* TODO: color */
- position: sticky;
- top: 0;
- width: inherit;
- background-color: #fafafa;
- font-weight: 500;
- z-index: 10;
-}
-
-.tableRow {
- display: grid;
- grid-template-columns: 3fr 1fr 1.5fr;
- grid-column-gap: 10px;
- padding: 8px 16px;
- border-bottom: 1px solid var(--gray300);
-}
-
-.domain {
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
-}
-
-.progress {
- display: flex;
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.tsx b/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.tsx
deleted file mode 100644
index 35fe686f..00000000
--- a/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Progress } from 'antd';
-import cn from 'classnames';
-import { AreaChart, Area, ResponsiveContainer } from 'recharts';
-
-import TopArrayEntry from 'Entities/TopArrayEntry';
-import theme from 'Lib/theme';
-import Store from 'Store';
-
-import s from './TopDomains.module.pcss';
-
-interface TopDomainsProps {
- title: string;
- overal: number;
- chartData: number[];
- tableData: TopArrayEntry[];
- color: string;
- useValueColor?: boolean;
-}
-
-const TopDomains: FC = (
- { title, overal, chartData, tableData, color, useValueColor },
-) => {
- const store = useContext(Store);
- const { ui: { intl } } = store;
- const data = tableData.map((e) => {
- const [domain, value] = Object.entries(e.numberData)[0];
- return { domain, value };
- });
-
- return (
-
-
{title}
-
-
- {overal.toLocaleString('en')}
-
- ({ name: 'data', value: n }))}>
-
-
-
-
-
-
-
- {intl.getMessage('domain')}
-
-
- {intl.getMessage('all_queries')}
-
-
- %
-
-
- {data.map(({ domain, value }) => (
-
- ))}
-
-
-
- );
-};
-
-export default TopDomains;
diff --git a/client2/src/components/App/Dashboard/components/TopDomains/index.ts b/client2/src/components/App/Dashboard/components/TopDomains/index.ts
deleted file mode 100644
index 79fcc1b8..00000000
--- a/client2/src/components/App/Dashboard/components/TopDomains/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as TopDomains } from './TopDomains';
diff --git a/client2/src/components/App/Dashboard/components/index.ts b/client2/src/components/App/Dashboard/components/index.ts
deleted file mode 100644
index 9fc2523c..00000000
--- a/client2/src/components/App/Dashboard/components/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export { BlockCard } from './BlockCard';
-export { TopClients } from './TopClients';
-export { TopDomains } from './TopDomains';
-export { BlockedQueries } from './BlockedQueries';
-export { ServerStatistics } from './ServerStatistics';
diff --git a/client2/src/components/App/Dashboard/index.ts b/client2/src/components/App/Dashboard/index.ts
deleted file mode 100644
index 449ae567..00000000
--- a/client2/src/components/App/Dashboard/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Dashboard';
diff --git a/client2/src/components/App/Errors/ErrorBoundary.tsx b/client2/src/components/App/Errors/ErrorBoundary.tsx
deleted file mode 100644
index 42204783..00000000
--- a/client2/src/components/App/Errors/ErrorBoundary.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import React, { Component, ReactNode } from 'react';
-import cn from 'classnames';
-
-import s from './Errors.module.pcss';
-
-export default class ErrorBoundary extends Component {
- state = {
- isError: false,
- };
-
- static getDerivedStateFromError(): { isError: boolean } {
- return { isError: true };
- }
-
- render(): ReactNode {
- const { isError } = this.state;
- const { children } = this.props;
-
- if (isError) {
- return (
-
-
- Something went wrong
-
-
- );
- }
-
- return children;
- }
-}
diff --git a/client2/src/components/App/Errors/Errors.module.pcss b/client2/src/components/App/Errors/Errors.module.pcss
deleted file mode 100644
index 92e6f908..00000000
--- a/client2/src/components/App/Errors/Errors.module.pcss
+++ /dev/null
@@ -1,79 +0,0 @@
-.content {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- max-width: 455px;
- min-height: calc(100vh - var(--header-height) - 64px);
- margin: 0 auto;
- text-align: center;
-
- &_boundary {
- min-height: 100vh;
- }
-}
-
-.title {
- margin-bottom: 8px;
- font-size: 18px;
- font-weight: 500;
-
- @media (--s-viewport) {
- margin-bottom: 20px;
- font-size: 24px;
- }
-}
-
-.code {
- position: relative;
- margin-bottom: 32px;
- font-size: 120px;
- font-weight: 700;
- line-height: 108px;
- color: var(--morning);
- user-select: none;
-
- @media (--s-viewport) {
- margin-bottom: 54px;
- font-size: 180px;
- line-height: 162px;
- }
-}
-
-.warning {
- width: 160px;
- height: 173px;
-
- @media (--s-viewport) {
- width: 243px;
- height: 262px;
- }
-
- &_code {
- position: absolute;
- top: -20px;
- left: 50%;
- transform: translateX(-50%);
-
- @media (--s-viewport) {
- top: -34px;
- }
- }
-}
-
-.error {
- margin-bottom: 10px;
- cursor: pointer;
-}
-
-.desc {
- margin-bottom: 8px;
- max-width: 384px;
- font-size: 13px;
- color: var(--gray);
-
- @media (--s-viewport) {
- margin-bottom: 20px;
- font-size: 14px;
- }
-}
diff --git a/client2/src/components/App/Errors/index.ts b/client2/src/components/App/Errors/index.ts
deleted file mode 100644
index e5d6dda2..00000000
--- a/client2/src/components/App/Errors/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as ErrorBoundary } from './ErrorBoundary';
diff --git a/client2/src/components/App/Header/Header.module.pcss b/client2/src/components/App/Header/Header.module.pcss
deleted file mode 100644
index 78f6f067..00000000
--- a/client2/src/components/App/Header/Header.module.pcss
+++ /dev/null
@@ -1,81 +0,0 @@
-.header {
- position: relative;
- z-index: 1;
- color: var(--gray900);
- background-color: var(--white);
- box-shadow: 0 1px 4px 0 rgba(0, 21, 41, 0.12);
-}
-
-.top,
-.bottom {
- padding: 12px 16px;
-
- @media (--l-viewport) {
- padding: 12px 32px;
- }
-}
-
-.top {
- background-color: var(--black);
-
- @media (--l-viewport) {
- display: none;
- }
-}
-
-.bottom {
- display: flex;
- flex-direction: column;
-
- @media (--l-viewport) {
- align-items: center;
- flex-direction: row;
- height: var(--header-height);
- }
-}
-
-.icon {
- margin-right: 10px;
-}
-
-.status {
- display: flex;
- align-items: center;
- margin-bottom: 12px;
-
- @media (--l-viewport) {
- margin: 0 16px 0 0;
- }
-}
-
-.action {
- min-width: 80px;
- margin-right: auto;
-}
-
-.languages,
-.user {
- display: none;
-
- @media (--l-viewport) {
- display: flex;
- align-items: center;
- }
-}
-
-.user {
- margin-right: 32px;
-}
-
-.menu {
- color: var(--white);
- background-color: transparent;
- border: 0;
-
- &:hover,
- &:focus,
- &:active {
- color: var(--gray400);
- background-color: transparent;
- }
-}
diff --git a/client2/src/components/App/Header/Header.tsx b/client2/src/components/App/Header/Header.tsx
deleted file mode 100644
index d5da7456..00000000
--- a/client2/src/components/App/Header/Header.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button } from 'antd';
-import { MenuOutlined } from '@ant-design/icons';
-import { observer } from 'mobx-react-lite';
-
-import { Icon, LangSelect } from 'Common/ui';
-import Store from 'Store';
-
-import s from './Header.module.pcss';
-
-const Header: FC = observer(() => {
- const store = useContext(Store);
- const { ui: { intl }, system, ui } = store;
- const { status, profile } = system;
-
- const updateServerStatus = () => {
- system.switchServerStatus(!status?.protectionEnabled);
- };
-
- return (
-
-
- }
- className={s.menu}
- onClick={() => ui.toggleSidebar()}
- />
-
-
-
-
- {status?.protectionEnabled
- ? intl.getMessage('header_adguard_status_enabled')
- : intl.getMessage('header_adguard_status_disabled')}
-
-
- {status?.protectionEnabled
- ? intl.getMessage('disable')
- : intl.getMessage('enable')}
-
- {profile?.name && (
-
-
- {profile?.name}
-
- )}
-
-
-
-
-
- );
-});
-
-export default Header;
diff --git a/client2/src/components/App/Header/index.ts b/client2/src/components/App/Header/index.ts
deleted file mode 100644
index 579f1ac2..00000000
--- a/client2/src/components/App/Header/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Header';
diff --git a/client2/src/components/App/Login/ForgotPassword.tsx b/client2/src/components/App/Login/ForgotPassword.tsx
deleted file mode 100644
index f19b8a60..00000000
--- a/client2/src/components/App/Login/ForgotPassword.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button } from 'antd';
-import cn from 'classnames';
-
-import { CommonLayout } from 'Common/ui/layouts';
-import { code } from 'Common/formating';
-import { Link } from 'Common/ui';
-import Store from 'Store';
-import theme from 'Lib/theme';
-
-import s from './Login.module.pcss';
-import { RoutePath } from '../Routes/Paths';
-
-const ForgotPassword: FC = () => {
- const store = useContext(Store);
- const { ui: { intl } } = store;
-
- return (
-
-
-
- {intl.getMessage('login_password_title')}
-
-
-
- {intl.getMessage('login_password_hash')}
-
-
-
-
- {intl.getMessage('login_password_step_1')}
-
-
- {intl.getMessage('login_password_step_2', { code })}
-
-
- {intl.getMessage('login_password_step_3', { code })}
-
-
- {intl.getMessage('login_password_step_4')}
-
-
- {intl.getMessage('login_password_step_5')}
-
-
-
-
- {intl.getMessage('login_password_result')}
-
-
-
-
- {intl.getMessage('back')}
-
-
-
-
- );
-};
-
-export default ForgotPassword;
diff --git a/client2/src/components/App/Login/Login.module.pcss b/client2/src/components/App/Login/Login.module.pcss
deleted file mode 100644
index ae887cd9..00000000
--- a/client2/src/components/App/Login/Login.module.pcss
+++ /dev/null
@@ -1,34 +0,0 @@
-.title {
- margin-bottom: 12px;
- font-size: 28px;
- text-align: center;
-
- &_form {
- margin-bottom: 32px;
- }
-}
-
-.link {
- display: inline-block;
- vertical-align: middle;
- margin-top: 32px;
- font-size: 16px;
- text-align: center;
-}
-
-.paragraph {
- font-size: 16px;
- margin: 0 0 14px;
-}
-
-.list {
- margin-bottom: 16px;
- padding-left: 20px;
- font-size: 16px;
-}
-
-.step {
- margin-bottom: 5px;
- display: list-item;
- list-style: decimal;
-}
diff --git a/client2/src/components/App/Login/Login.tsx b/client2/src/components/App/Login/Login.tsx
deleted file mode 100644
index 844e03f9..00000000
--- a/client2/src/components/App/Login/Login.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button } from 'antd';
-import { observer } from 'mobx-react-lite';
-import { Formik, FormikHelpers } from 'formik';
-import cn from 'classnames';
-
-import { Input } from 'Common/controls';
-import { CommonLayout } from 'Common/ui/layouts';
-import { Link } from 'Common/ui';
-import { RoutePath } from 'Components/App/Routes/Paths';
-import Store from 'Store';
-import theme from 'Lib/theme';
-
-import s from './Login.module.pcss';
-
-type FormValues = {
- name: string;
- password: string;
-};
-
-const Login: FC = observer(() => {
- const store = useContext(Store);
- const { ui: { intl }, login } = store;
-
- const onSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {
- const { name, password } = values;
-
- const error = await login.login({
- name,
- password,
- });
-
- if (error) {
- setSubmitting(false);
- }
- };
-
- const initialValues: FormValues = {
- name: '',
- password: '',
- };
-
- return (
-
-
-
- {intl.getMessage('login')}
-
-
-
- {({
- values,
- handleSubmit,
- setFieldValue,
- isSubmitting,
- }) => (
-
- )}
-
-
-
-
- {intl.getMessage('login_password_link')}
-
-
-
-
- );
-});
-
-export default Login;
diff --git a/client2/src/components/App/Login/index.ts b/client2/src/components/App/Login/index.ts
deleted file mode 100644
index 3da6e50e..00000000
--- a/client2/src/components/App/Login/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default as Login } from './Login';
-export { default as ForgotPassword } from './ForgotPassword';
diff --git a/client2/src/components/App/Routes/Paths.ts b/client2/src/components/App/Routes/Paths.ts
deleted file mode 100644
index f722a790..00000000
--- a/client2/src/components/App/Routes/Paths.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import qs from 'qs';
-import { Locale } from 'Localization';
-
-const BasicPath = '/';
-const pathBuilder = (path: string) => (`${BasicPath}${path}`);
-
-export enum RoutePath {
- Dashboard = 'Dashboard',
- FiltersBlocklist = 'FiltersBlocklist',
- FiltersAllowlist = 'FiltersAllowlist',
- FiltersRewrites = 'FiltersRewrites',
- FiltersServices = 'FiltersServices',
- FiltersCustom = 'FiltersCustom',
- QueryLog = 'QueryLog',
- SetupGuide = 'SetupGuide',
- SettingsGeneral = 'SettingsGeneral',
- SettingsDns = 'SettingsDns',
- SettingsEncryption = 'SettingsEncryption',
- SettingsClients = 'SettingsClients',
- SettingsDhcp = 'SettingsDhcp',
- Login = 'Login',
- ForgotPassword = 'ForgotPassword',
-}
-
-export const Paths: Record = {
- Dashboard: pathBuilder('dashboard'),
- FiltersBlocklist: pathBuilder('filters/blocklists'),
- FiltersAllowlist: pathBuilder('filters/allowlists'),
- FiltersRewrites: pathBuilder('filters/rewrites'),
- FiltersServices: pathBuilder('filters/services'),
- FiltersCustom: pathBuilder('filters/custom'),
- QueryLog: pathBuilder('logs'),
- SetupGuide: pathBuilder('guide'),
- SettingsGeneral: pathBuilder('settings/general'),
- SettingsDns: pathBuilder('settings/dns'),
- SettingsEncryption: pathBuilder('settings/encryption'),
- SettingsClients: pathBuilder('settings/clients'),
- SettingsDhcp: pathBuilder('settings/dhcp'),
- Login: pathBuilder(''),
- ForgotPassword: pathBuilder('forgot_password'),
-};
-
-export enum LinkParamsKeys {}
-export enum QueryParams {}
-export type LinkParams = Partial>;
-
-export const linkPathBuilder = (
- route: RoutePath,
- params?: LinkParams,
- lang?: Locale,
- query?: Partial>,
-) => {
- let path = Paths[route]; // .replace(BasicPath, `/${lang}`);
- if (params) {
- Object.keys(params).forEach((key: unknown) => {
- path = path.replace(`:${key}`, String(params[key as LinkParamsKeys]));
- });
- }
- if (query) {
- path += `?${qs.stringify(query)}`;
- }
- return path;
-};
diff --git a/client2/src/components/App/Routes/Routes.module.pcss b/client2/src/components/App/Routes/Routes.module.pcss
deleted file mode 100644
index e1561e76..00000000
--- a/client2/src/components/App/Routes/Routes.module.pcss
+++ /dev/null
@@ -1,3 +0,0 @@
-.app {
- min-height: 100vh;
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Routes/Routes.tsx b/client2/src/components/App/Routes/Routes.tsx
deleted file mode 100644
index ad6df6cd..00000000
--- a/client2/src/components/App/Routes/Routes.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Layout } from 'antd';
-import { Switch, Route, Redirect } from 'react-router-dom';
-import { observer } from 'mobx-react-lite';
-
-import Store from 'Store';
-import { Paths } from './Paths';
-
-import Dashboard from '../Dashboard';
-import { Login, ForgotPassword } from '../Login';
-import Sidebar from '../Sidebar';
-import Header from '../Header';
-import SetupGuide from '../SetupGuide';
-import { GeneralSettings } from '../Settings';
-
-import s from './Routes.module.pcss';
-
-const { Content } = Layout;
-
-const AuthRoutes: FC = React.memo(() => {
- return (
-
-
-
-
- );
-});
-
-const AppRoutes: FC = observer(() => {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-});
-
-const Routes: FC = observer(() => {
- const store = useContext(Store);
- const { login: { loggedIn } } = store;
- if (loggedIn) {
- return ;
- }
- return ;
-});
-
-export default Routes;
diff --git a/client2/src/components/App/Routes/index.ts b/client2/src/components/App/Routes/index.ts
deleted file mode 100644
index edc668a3..00000000
--- a/client2/src/components/App/Routes/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Routes';
diff --git a/client2/src/components/App/Settings/GeneralSettings/GeneralSettings.tsx b/client2/src/components/App/Settings/GeneralSettings/GeneralSettings.tsx
deleted file mode 100644
index 00a273bb..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/GeneralSettings.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React, { FC, useContext, useEffect } from 'react';
-import { Tabs, Grid } from 'antd';
-import { observer } from 'mobx-react-lite';
-
-import { InnerLayout } from 'Common/ui';
-import Store from 'Store';
-
-import { General, QueryLog, Statistics, TAB_KEY } from './components';
-
-const { useBreakpoint } = Grid;
-const { TabPane } = Tabs;
-
-const GeneralSettings: FC = observer(() => {
- const store = useContext(Store);
- const { ui: { intl }, generalSettings } = store;
- const { inited } = generalSettings;
- const screens = useBreakpoint();
-
- useEffect(() => {
- if (!inited) {
- generalSettings.init();
- }
- }, [inited]);
-
- if (!inited) {
- return null;
- }
-
- const tabsPosition = screens.lg ? 'left' : 'top';
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-});
-
-export default GeneralSettings;
diff --git a/client2/src/components/App/Settings/GeneralSettings/components/Common.module.pcss b/client2/src/components/App/Settings/GeneralSettings/components/Common.module.pcss
deleted file mode 100644
index e1570e85..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/components/Common.module.pcss
+++ /dev/null
@@ -1,45 +0,0 @@
-.title {
- font-size: 20px;
- font-weight: 500;
- color: var(--gray900);
- margin-bottom: 48px;
- display: flex;
- justify-content: space-between;
-}
-
-.radio {
- display: block;
- height: 30px;
- line-height: 30px;
-
- &:first-of-type {
- margin-top: -12px;
- }
-}
-.save {
- display: block;
- margin-top: 24px;
-}
-
-.item {
- display: flex;
- justify-content: space-between;
- margin-bottom: 24px;
-}
-
-.nameTitle {
- color: var(--black);
-}
-.nameDesc {
- color: var(--gray700);
- margin-right: 40px;
-
- @media (--m-viewport) {
- margin-right: 200px;
- }
-}
-.select {
- margin-bottom: 24px;
- margin-top: -12px;
- width: 200px;
-}
\ No newline at end of file
diff --git a/client2/src/components/App/Settings/GeneralSettings/components/General.tsx b/client2/src/components/App/Settings/GeneralSettings/components/General.tsx
deleted file mode 100644
index 72847496..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/components/General.tsx
+++ /dev/null
@@ -1,169 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button, Switch, Select } from 'antd';
-import { Formik, FormikHelpers } from 'formik';
-import { observer } from 'mobx-react-lite';
-
-import { Link } from 'Common/ui';
-import Store from 'Store';
-import { RoutePath } from 'Paths';
-
-import { s } from '.';
-
-const { Option } = Select;
-
-const General: FC = observer(() => {
- const store = useContext(Store);
- const { ui: { intl }, generalSettings } = store;
- const {
- safebrowsing,
- filteringConfig,
- parental,
- safesearch,
- } = generalSettings;
-
- const initialValues = {
- ...filteringConfig!.serialize(),
- safebrowsing,
- parental,
- safesearch,
- };
-
- type InitialValues = typeof initialValues;
-
- const onSubmit = async (values: InitialValues, helpers: FormikHelpers) => {
- // await generalSettings.updateQueryLogConfig(values);
- if (initialValues.parental !== values.parental) {
- generalSettings[values.parental ? 'parentalEnable' : 'parentalDisable']();
- }
- if (initialValues.safesearch !== values.safesearch) {
- generalSettings[values.safesearch ? 'safebrowsingEnable' : 'safebrowsingDisable']();
- }
- if (initialValues.safebrowsing !== values.safebrowsing) {
- generalSettings[values.safebrowsing ? 'safebrowsingEnable' : 'safebrowsingDisable']();
- }
- if (initialValues.enabled !== values.enabled
- || initialValues.interval !== values.interval) {
- generalSettings.updateFilteringConfig({
- interval: values.interval,
- enabled: values.enabled,
- });
- }
- helpers.setSubmitting(false);
- };
-
- const filtersLink = (e: string) => {
- // TODO: fix link
- return {e};
- };
-
- return (
- <>
-
- {intl.getMessage('filter_category_general')}
-
-
- {({
- handleSubmit,
- values,
- setFieldValue,
- isSubmitting,
- dirty,
- }) => (
-
- )}
-
- >
- );
-});
-
-export default General;
diff --git a/client2/src/components/App/Settings/GeneralSettings/components/QueryLog.tsx b/client2/src/components/App/Settings/GeneralSettings/components/QueryLog.tsx
deleted file mode 100644
index c13bf599..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/components/QueryLog.tsx
+++ /dev/null
@@ -1,124 +0,0 @@
-import React, { FC, useContext, useState } from 'react';
-import { Radio, Button, Switch } from 'antd';
-import { Formik, FormikHelpers } from 'formik';
-import { observer } from 'mobx-react-lite';
-
-import { notifySuccess, ConfirmModalLayout } from 'Common/ui';
-import { IQueryLogConfig } from 'Entities/QueryLogConfig';
-import Store from 'Store';
-
-import { s } from '.';
-
-const { Group } = Radio;
-
-const QueryLog: FC = observer(() => {
- const store = useContext(Store);
- const [showConfirm, setShowConfirm] = useState(false);
- const { ui: { intl }, generalSettings } = store;
- const {
- queryLogConfig,
- } = generalSettings;
-
- const onSubmit = async (values: IQueryLogConfig, helpers: FormikHelpers) => {
- await generalSettings.updateQueryLogConfig(values);
- helpers.setSubmitting(false);
- };
-
- const onReset = async () => {
- const result = await generalSettings.querylogClear();
- if (result) {
- notifySuccess(intl.getMessage('query_log_cleared'));
- }
- };
-
- return (
- <>
-
- {intl.getMessage('query_log_configuration')}
- setShowConfirm(true)}>
- {intl.getMessage('query_log_clear')}
-
-
- setShowConfirm(false)}
- title={intl.getMessage('query_log_clear')}
- buttonText={intl.getMessage('query_log_clear')}
- >
- {intl.getMessage('query_log_confirm_clear')}
-
-
- {({
- handleSubmit,
- values,
- setFieldValue,
- isSubmitting,
- dirty,
- }) => (
-
- )}
-
- >
- );
-});
-
-export default QueryLog;
diff --git a/client2/src/components/App/Settings/GeneralSettings/components/Statistics.tsx b/client2/src/components/App/Settings/GeneralSettings/components/Statistics.tsx
deleted file mode 100644
index 7b6e2112..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/components/Statistics.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import React, { FC, useContext, useState } from 'react';
-import { Radio, Button } from 'antd';
-import { Formik, FormikHelpers } from 'formik';
-import { observer } from 'mobx-react-lite';
-
-import { notifySuccess, ConfirmModalLayout } from 'Common/ui';
-import { IStatsConfig } from 'Entities/StatsConfig';
-import Store from 'Store';
-
-import { s } from '.';
-
-const { Group } = Radio;
-
-const Statistics: FC = observer(() => {
- const store = useContext(Store);
- const [showConfirm, setShowConfirm] = useState(false);
- const { ui: { intl }, generalSettings } = store;
- const {
- statsConfig,
- } = generalSettings;
-
- const onSubmit = async (values: IStatsConfig, helpers: FormikHelpers) => {
- await generalSettings.updateStatsConfig(values);
- helpers.setSubmitting(false);
- };
-
- const onReset = async () => {
- const result = await generalSettings.statsReset();
- if (result) {
- notifySuccess(intl.getMessage('stats_reset'));
- }
- };
-
- return (
- <>
-
- {intl.getMessage('statistics_configuration')}
- setShowConfirm(true)}>
- {intl.getMessage('statistics_clear')}
-
-
- setShowConfirm(false)}
- title={intl.getMessage('statistics_clear')}
- buttonText={intl.getMessage('statistics_clear')}
- >
- {intl.getMessage('statistics_clear_confirm')}
-
-
- {({
- handleSubmit,
- values,
- setFieldValue,
- isSubmitting,
- dirty,
- }) => (
-
- )}
-
- >
- );
-});
-
-export default Statistics;
diff --git a/client2/src/components/App/Settings/GeneralSettings/components/index.ts b/client2/src/components/App/Settings/GeneralSettings/components/index.ts
deleted file mode 100644
index 872b4789..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/components/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-export { default as General } from './General';
-export { default as QueryLog } from './QueryLog';
-export { default as Statistics } from './Statistics';
-export enum TAB_KEY {
- GENERAL = 'GENERAL',
- QUERY_LOG = 'QUERY_LOG',
- STATISTICS = 'STATISTICS',
-}
-export { default as s } from './Common.module.pcss';
diff --git a/client2/src/components/App/Settings/GeneralSettings/index.ts b/client2/src/components/App/Settings/GeneralSettings/index.ts
deleted file mode 100644
index 103dbe79..00000000
--- a/client2/src/components/App/Settings/GeneralSettings/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as GeneralSettings } from './GeneralSettings';
diff --git a/client2/src/components/App/Settings/index.ts b/client2/src/components/App/Settings/index.ts
deleted file mode 100644
index dfb1ece8..00000000
--- a/client2/src/components/App/Settings/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { GeneralSettings } from './GeneralSettings';
diff --git a/client2/src/components/App/SetupGuide/SetupGuide.module.pcss b/client2/src/components/App/SetupGuide/SetupGuide.module.pcss
deleted file mode 100644
index c4ac60c5..00000000
--- a/client2/src/components/App/SetupGuide/SetupGuide.module.pcss
+++ /dev/null
@@ -1,31 +0,0 @@
-.title {
- margin-bottom: 16px;
- font-size: 20px;
- font-weight: 500;
-
- @media (--m-viewport) {
- margin-bottom: 24px;
- }
-}
-
-.text {
- margin-bottom: 32px;
- font-size: 14px;
- color: var(--gray900);
-
- p {
- margin: 0 0 5px;
- }
-}
-
-.addresses {
- margin-top: 16px;
-}
-
-.address {
- font-family: var(--font-family-monospace);
- font-size: 16px;
- font-weight: 600;
- word-break: break-all;
- color: var(--green400);
-}
diff --git a/client2/src/components/App/SetupGuide/SetupGuide.tsx b/client2/src/components/App/SetupGuide/SetupGuide.tsx
deleted file mode 100644
index f4c5a760..00000000
--- a/client2/src/components/App/SetupGuide/SetupGuide.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Tabs, Grid } from 'antd';
-
-import { InnerLayout } from 'Common/ui';
-import { externalLink, p } from 'Common/formating';
-import { DHCP_LINK } from 'Consts/common';
-import Store from 'Store';
-
-import s from './SetupGuide.module.pcss';
-
-const { useBreakpoint } = Grid;
-const { TabPane } = Tabs;
-
-const SetupGuide: FC = () => {
- const store = useContext(Store);
- const { ui: { intl }, system } = store;
- const screens = useBreakpoint();
- const tabsPosition = screens.lg ? 'left' : 'top';
-
- const { status } = system;
-
- const tabs = [
- {
- key: intl.getMessage('router'),
- text: intl.getMessage('install_configure_router', { p }),
- },
- {
- key: 'Windows',
- text: intl.getMessage('install_configure_windows', { p }),
- },
- {
- key: 'macOS',
- text: intl.getMessage('install_configure_macos', { p }),
- },
- {
- key: 'Linux',
- text: intl.getMessage('install_configure_router', { p }),
- },
- {
- key: 'Android',
- text: intl.getMessage('install_configure_android', { p }),
- },
- {
- key: 'iOS',
- text: intl.getMessage('install_configure_ios', { p }),
- },
- ];
-
- const addresses = (
- <>
-
- {intl.getMessage('install_configure_adresses')}
- {status?.dnsAddresses && (
-
- {status.dnsAddresses.map((address) => (
-
- {address}
-
- ))}
-
- )}
-
-
- {intl.getMessage('install_configure_dhcp', { dhcp: externalLink(DHCP_LINK) })}
-
- >
- );
-
- return (
-
-
- {tabs.map((tab) => (
-
-
- {intl.getMessage('install_configure_how_to_title', { value: tab.key })}
-
-
- {tab.text}
-
- {addresses}
-
- ))}
-
-
- );
-};
-
-export default SetupGuide;
diff --git a/client2/src/components/App/SetupGuide/index.tsx b/client2/src/components/App/SetupGuide/index.tsx
deleted file mode 100644
index 97a2bb20..00000000
--- a/client2/src/components/App/SetupGuide/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './SetupGuide';
diff --git a/client2/src/components/App/Sidebar/Sidebar.module.pcss b/client2/src/components/App/Sidebar/Sidebar.module.pcss
deleted file mode 100644
index 6942d66a..00000000
--- a/client2/src/components/App/Sidebar/Sidebar.module.pcss
+++ /dev/null
@@ -1,23 +0,0 @@
-.logo {
- width: 118px;
- height: 31px;
- margin: 20px;
-}
-
-.icon {
- width: 16px;
- height: 16px;
- margin-right: 10px;
-}
-
-.menu {
- display: flex;
- flex-direction: column;
- min-height: calc(100% - 71px);
-}
-
-.logout {
- @media (--m-viewport) {
- margin-top: auto!important;
- }
-}
diff --git a/client2/src/components/App/Sidebar/Sidebar.tsx b/client2/src/components/App/Sidebar/Sidebar.tsx
deleted file mode 100644
index f7485bc7..00000000
--- a/client2/src/components/App/Sidebar/Sidebar.tsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Layout, Menu, Grid } from 'antd';
-import { observer } from 'mobx-react-lite';
-import { PieChartOutlined, FormOutlined, TableOutlined, ProfileOutlined, SettingOutlined } from '@ant-design/icons';
-
-import Store from 'Store';
-import { Link, Icon, Mask } from 'Common/ui';
-import { RoutePath, linkPathBuilder } from 'Components/App/Routes/Paths';
-
-import s from './Sidebar.module.pcss';
-
-const { Sider } = Layout;
-const { Item: MenuItem, SubMenu } = Menu;
-const { useBreakpoint } = Grid;
-
-const Sidebar: FC = observer(() => {
- const store = useContext(Store);
- const screens = useBreakpoint();
- const { ui: { intl, sidebarOpen, toggleSidebar } } = store;
-
- if (!Object.keys(screens).length) {
- return null;
- }
-
- const handleSidebar = () => {
- if (!screens.xl) {
- toggleSidebar();
- }
- };
-
- return (
- <>
-
-
-
-
-
-
- {intl.getMessage('dashboard')}
-
-
-
-
-
- {intl.getMessage('filters')}
-
-
-
-
-
- {intl.getMessage('query_log')}
-
-
-
-
-
- {intl.getMessage('setup_guide')}
-
-
- }
- title={intl.getMessage('settings')}
- >
-
-
- {intl.getMessage('general_settings')}
-
-
-
-
- {intl.getMessage('dns_settings')}
-
-
-
-
- {intl.getMessage('encryption_settings')}
-
-
-
-
- {intl.getMessage('client_settings')}
-
-
-
-
- {intl.getMessage('dhcp_settings')}
-
-
-
-
-
-
- {intl.getMessage('sign_out')}
-
-
-
-
-
- >
- );
-});
-
-export default Sidebar;
diff --git a/client2/src/components/App/Sidebar/index.ts b/client2/src/components/App/Sidebar/index.ts
deleted file mode 100644
index e842a859..00000000
--- a/client2/src/components/App/Sidebar/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Sidebar';
diff --git a/client2/src/components/App/index.ts b/client2/src/components/App/index.ts
deleted file mode 100644
index 9122fa1a..00000000
--- a/client2/src/components/App/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './App';
diff --git a/client2/src/components/Install/Install.tsx b/client2/src/components/Install/Install.tsx
deleted file mode 100644
index 3e7d797e..00000000
--- a/client2/src/components/Install/Install.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import React, { FC } from 'react';
-import { Layout } from 'antd';
-import { Formik, FormikHelpers } from 'formik';
-import { observer } from 'mobx-react-lite';
-import cn from 'classnames';
-
-import { IInitialConfigurationBeta } from 'Entities/InitialConfigurationBeta';
-import Icons from 'Common/ui/Icons';
-import {
- DEFAULT_DNS_ADDRESS,
- DEFAULT_DNS_PORT,
- DEFAULT_IP_ADDRESS,
- DEFAULT_IP_PORT,
-} from 'Consts/install';
-import { notifyError } from 'Common/ui';
-import InstallStore from 'Store/stores/Install';
-import theme from 'Lib/theme';
-
-import AdminInterface from './components/AdminInterface';
-import Auth from './components/Auth';
-import DnsServer from './components/DnsServer';
-import Stepper from './components/Stepper';
-import Welcome from './components/Welcome';
-import ConfigureDevices from './components/ConfigureDevices';
-
-const { Content } = Layout;
-
-export type FormValues = IInitialConfigurationBeta & { step: number };
-
-const InstallForm: FC = observer(() => {
- const initialValues: FormValues = {
- step: 0,
- web: {
- ip: [DEFAULT_IP_ADDRESS],
- port: DEFAULT_IP_PORT,
- },
- dns: {
- ip: [DEFAULT_DNS_ADDRESS],
- port: DEFAULT_DNS_PORT,
- },
- password: '',
- username: '',
- };
-
- const onNext = async (values: FormValues, { setFieldValue }: FormikHelpers) => {
- const currentStep = values.step;
- const checker = (condition: boolean, message: string) => {
- if (condition) {
- setFieldValue('step', currentStep + 1);
- } else {
- notifyError(message);
- }
- };
- switch (currentStep) {
- case 1: {
- // web
- const check = await InstallStore.checkConfig(values);
- checker(check?.web?.status === '', check?.web?.status || '');
- break;
- }
- case 3: {
- // dns
- const check = await InstallStore.checkConfig(values);
- checker(check?.dns?.status === '', check?.dns?.status || '');
- break;
- }
- case 4: {
- // configure
- const config = await InstallStore.configure(values);
- if (config) {
- const { web } = values;
- window.location.href = `http://${web.ip[0]}:${web.port}`;
- }
- break;
- }
- default:
- setFieldValue('step', currentStep + 1);
- break;
- }
- };
-
- return (
-
- {({ values, handleSubmit, setFieldValue }) => (
-
- )}
-
- );
-});
-
-const Install: FC = () => {
- return (
-
-
-
-
-
-
- );
-};
-
-export default Install;
diff --git a/client2/src/components/Install/components/AdminInterface/AdminInterface.tsx b/client2/src/components/Install/components/AdminInterface/AdminInterface.tsx
deleted file mode 100644
index 1a4b3757..00000000
--- a/client2/src/components/Install/components/AdminInterface/AdminInterface.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import React, { FC, useContext } from 'react';
-import cn from 'classnames';
-import { observer } from 'mobx-react-lite';
-import { FormikHelpers } from 'formik';
-
-import { Input, Radio, Switch } from 'Common/controls';
-import { DEFAULT_IP_ADDRESS } from 'Consts/install';
-import { chechNetworkType, NETWORK_TYPE } from 'Helpers/installHelpers';
-import theme from 'Lib/theme';
-import Store from 'Store/installStore';
-
-import { FormValues } from '../../Install';
-import StepButtons from '../StepButtons';
-
-enum NETWORK_OPTIONS {
- ALL = 'all',
- CUSTOM = 'custom',
-}
-
-interface AdminInterfaceProps {
- values: FormValues;
- setFieldValue: FormikHelpers['setFieldValue'];
-}
-
-const AdminInterface: FC = observer(({
- values,
- setFieldValue,
-}) => {
- const { ui: { intl }, install: { addresses } } = useContext(Store);
- const { web: { ip } } = values;
- const radioValue = ip.length === 1 && ip[0] === DEFAULT_IP_ADDRESS
- ? NETWORK_OPTIONS.ALL : NETWORK_OPTIONS.CUSTOM;
-
- const onSelectRadio = (v: string | number) => {
- const value = v === NETWORK_OPTIONS.ALL
- ? [DEFAULT_IP_ADDRESS] : [];
- setFieldValue('web.ip', value);
- };
-
- const getManualBlock = () => (
-
- {addresses?.interfaces.map((a) => {
- let name = '';
- const type = chechNetworkType(a.name);
- switch (type) {
- case NETWORK_TYPE.ETHERNET:
- name = `${intl.getMessage('ethernet')} (${a.name}) `;
- break;
- case NETWORK_TYPE.LOCAL:
- name = `${intl.getMessage('localhost')} (${a.name}) `;
- break;
- default:
- name = a.name || '';
- break;
- }
- return (
-
-
- {name}
-
- {a.ipAddresses?.map((addrIp) => (
-
-
- http://{addrIp}
-
-
{
- const temp = new Set(ip);
- if (temp.has(addrIp)) {
- temp.delete(addrIp);
- } else {
- temp.add(addrIp);
- }
- setFieldValue('web.ip', Array.from(temp.values()));
- }}/>
-
- ))}
-
- );
- })}
-
- );
-
- return (
- <>
-
- {intl.getMessage('install_admin_interface_title')}
-
-
- {intl.getMessage('install_admin_interface_title_decs')}
-
-
- {intl.getMessage('install_admin_interface_where_interface')}
-
-
- {intl.getMessage('install_admin_interface_where_interface_desc')}
-
-
- { radioValue !== NETWORK_OPTIONS.ALL && getManualBlock()}
-
- {intl.getMessage('install_admin_interface_port')}
-
-
- {intl.getMessage('install_admin_interface_port_desc')}
-
- {
- const port = v === '' ? '' : parseInt(v, 10);
- setFieldValue('web.port', port);
- }}
- />
-
- >
- );
-});
-
-export default AdminInterface;
diff --git a/client2/src/components/Install/components/AdminInterface/index.ts b/client2/src/components/Install/components/AdminInterface/index.ts
deleted file mode 100644
index e0f7b851..00000000
--- a/client2/src/components/Install/components/AdminInterface/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './AdminInterface';
diff --git a/client2/src/components/Install/components/Auth/Auth.tsx b/client2/src/components/Install/components/Auth/Auth.tsx
deleted file mode 100644
index fe346328..00000000
--- a/client2/src/components/Install/components/Auth/Auth.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React, { FC, useContext } from 'react';
-import cn from 'classnames';
-import { observer } from 'mobx-react-lite';
-import { FormikHelpers } from 'formik';
-
-import { Input } from 'Common/controls';
-import theme from 'Lib/theme';
-import Store from 'Store/installStore';
-
-import StepButtons from '../StepButtons';
-import { FormValues } from '../../Install';
-
-interface AuthProps {
- values: FormValues;
- setFieldValue: FormikHelpers['setFieldValue'];
-}
-
-const Auth: FC = observer(({
- values,
- setFieldValue,
-}) => {
- const { ui: { intl } } = useContext(Store);
-
- return (
- <>
-
- {intl.getMessage('install_auth_title')}
-
-
- {intl.getMessage('install_auth_description')}
-
- setFieldValue('username', v)}
- />
- setFieldValue('password', v)}
- />
-
- >
- );
-});
-
-export default Auth;
diff --git a/client2/src/components/Install/components/Auth/index.ts b/client2/src/components/Install/components/Auth/index.ts
deleted file mode 100644
index b1dea29b..00000000
--- a/client2/src/components/Install/components/Auth/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Auth';
diff --git a/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx b/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx
deleted file mode 100644
index fc305adf..00000000
--- a/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Tabs, Grid } from 'antd';
-import cn from 'classnames';
-import { FormikHelpers } from 'formik';
-
-import { DHCP_LINK } from 'Consts/common';
-import { danger, externalLink, p } from 'Common/formating';
-import { DEFAULT_DNS_PORT, DEFAULT_IP_ADDRESS, DEFAULT_IP_PORT } from 'Consts/install';
-import Store from 'Store/installStore';
-import theme from 'Lib/theme';
-
-import { FormValues } from '../../Install';
-import StepButtons from '../StepButtons';
-
-const { useBreakpoint } = Grid;
-const { TabPane } = Tabs;
-
-interface ConfigureDevicesProps {
- values: FormValues;
- setFieldValue: FormikHelpers['setFieldValue'];
-}
-
-const ConfigureDevices: FC = ({
- values, setFieldValue,
-}) => {
- const { ui: { intl }, install: { addresses } } = useContext(Store);
- const screens = useBreakpoint();
- const tabsPosition = screens.md ? 'left' : 'top';
-
- const allIps = addresses?.interfaces.reduce((all, data) => {
- const { ipAddresses } = data;
- if (ipAddresses) {
- all.push(...ipAddresses);
- }
- return all;
- }, [] as string[]);
-
- const { web: { ip: webIp }, dns: { ip: dnsIp } } = values;
- const selectedWebIps = webIp.length === 1 && webIp[0] === DEFAULT_IP_ADDRESS
- ? allIps : webIp;
- const selectedDnsIps = dnsIp.length === 1 && dnsIp[0] === DEFAULT_IP_ADDRESS
- ? allIps : dnsIp;
-
- return (
- <>
-
- {intl.getMessage('install_configure_title')}
-
-
- {intl.getMessage('install_configure_danger_notice', { danger })}
-
-
-
-
-
- {intl.getMessage('install_configure_how_to_title', { value: intl.getMessage('router') })}
-
-
- {intl.getMessage('install_configure_router', { p })}
-
-
-
-
- {intl.getMessage('install_configure_how_to_title', { value: 'Windows' })}
-
-
- {intl.getMessage('install_configure_windows', { p })}
-
-
-
-
- {intl.getMessage('install_configure_how_to_title', { value: 'macOS' })}
-
-
- {intl.getMessage('install_configure_macos', { p })}
-
-
-
-
- {intl.getMessage('install_configure_how_to_title', { value: 'Linux' })}
-
-
- {/* TODO: add linux setup */}
- {intl.getMessage('install_configure_router', { p })}
-
-
-
-
- {intl.getMessage('install_configure_how_to_title', { value: 'Android' })}
-
-
- {intl.getMessage('install_configure_android', { p })}
-
-
-
-
- {intl.getMessage('install_configure_how_to_title', { value: 'iOS' })}
-
-
- {intl.getMessage('install_configure_ios', { p })}
-
-
-
-
-
- {intl.getMessage('install_configure_adresses')}
-
-
-
- {intl.getMessage('install_admin_interface_title')}
-
-
- {selectedWebIps?.map((ip) => (
-
- {ip}{values.web.port !== DEFAULT_IP_PORT && `:${values.web.port}`}
-
- ))}
-
-
- {intl.getMessage('install_dns_server_title')}
-
-
- {selectedDnsIps?.map((ip) => (
-
- {ip}{values.dns.port !== DEFAULT_DNS_PORT && `:${values.dns.port}`}
-
- ))}
-
-
-
- {intl.getMessage('install_configure_dhcp', { dhcp: externalLink(DHCP_LINK) })}
-
-
- >
- );
-};
-
-export default ConfigureDevices;
diff --git a/client2/src/components/Install/components/ConfigureDevices/index.ts b/client2/src/components/Install/components/ConfigureDevices/index.ts
deleted file mode 100644
index 928cdfa0..00000000
--- a/client2/src/components/Install/components/ConfigureDevices/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './ConfigureDevices';
diff --git a/client2/src/components/Install/components/DnsServer/DnsServer.tsx b/client2/src/components/Install/components/DnsServer/DnsServer.tsx
deleted file mode 100644
index 60db1260..00000000
--- a/client2/src/components/Install/components/DnsServer/DnsServer.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import React, { FC, useContext } from 'react';
-import cn from 'classnames';
-import { observer } from 'mobx-react-lite';
-import { FormikHelpers } from 'formik';
-
-import { Input, Radio, Switch } from 'Common/controls';
-import { DEFAULT_IP_ADDRESS } from 'Consts/install';
-import { chechNetworkType, NETWORK_TYPE } from 'Helpers/installHelpers';
-import theme from 'Lib/theme';
-import Store from 'Store/installStore';
-
-import { FormValues } from '../../Install';
-import StepButtons from '../StepButtons';
-
-enum NETWORK_OPTIONS {
- ALL = 'all',
- CUSTOM = 'custom',
-}
-
-interface DnsServerProps {
- values: FormValues;
- setFieldValue: FormikHelpers['setFieldValue'];
-}
-
-const DnsServer: FC = observer(({
- values,
- setFieldValue,
-}) => {
- const { ui: { intl }, install: { addresses } } = useContext(Store);
- const { dns: { ip } } = values;
- const radioValue = ip.length === 1 && ip[0] === DEFAULT_IP_ADDRESS
- ? NETWORK_OPTIONS.ALL : NETWORK_OPTIONS.CUSTOM;
-
- const onSelectRadio = (v: string | number) => {
- const value = v === NETWORK_OPTIONS.ALL
- ? [DEFAULT_IP_ADDRESS] : [];
- setFieldValue('dns.ip', value);
- };
-
- const getManualBlock = () => (
-
- {addresses?.interfaces.map((a) => {
- let name = '';
- const type = chechNetworkType(a.name);
- switch (type) {
- case NETWORK_TYPE.ETHERNET:
- name = `${intl.getMessage('ethernet')} (${a.name}) `;
- break;
- case NETWORK_TYPE.LOCAL:
- name = `${intl.getMessage('localhost')} (${a.name}) `;
- break;
- default:
- name = a.name || '';
- break;
- }
- return (
-
-
- {name}
-
- {a.ipAddresses?.map((addrIp) => (
-
-
- {addrIp}
-
-
{
- const temp = new Set(ip);
- if (temp.has(addrIp)) {
- temp.delete(addrIp);
- } else {
- temp.add(addrIp);
- }
- setFieldValue('dns.ip', Array.from(temp.values()));
- }}/>
-
- ))}
-
- );
- })}
-
- );
-
- return (
-
-
- {intl.getMessage('install_dns_server_title')}
-
-
- {intl.getMessage('install_dns_server_desc')}
-
-
- {intl.getMessage('install_dns_server_network_interfaces')}
-
-
- {intl.getMessage('install_dns_server_network_interfaces_desc')}
-
-
- { radioValue !== NETWORK_OPTIONS.ALL && getManualBlock()}
-
- {intl.getMessage('install_dns_server_port')}
-
-
- {intl.getMessage('install_dns_server_port_desc')}
-
-
{
- const port = v === '' ? '' : parseInt(v, 10);
- setFieldValue('dns.port', port);
- }}
- />
-
-
- );
-});
-
-export default DnsServer;
diff --git a/client2/src/components/Install/components/DnsServer/index.ts b/client2/src/components/Install/components/DnsServer/index.ts
deleted file mode 100644
index 95d67c54..00000000
--- a/client2/src/components/Install/components/DnsServer/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './DnsServer';
diff --git a/client2/src/components/Install/components/StepButtons/StepButtons.tsx b/client2/src/components/Install/components/StepButtons/StepButtons.tsx
deleted file mode 100644
index d5875eac..00000000
--- a/client2/src/components/Install/components/StepButtons/StepButtons.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button } from 'antd';
-import { observer } from 'mobx-react-lite';
-import { FormikHelpers } from 'formik';
-
-import Store from 'Store/installStore';
-import theme from 'Lib/theme';
-
-import { FormValues } from '../../Install';
-
-interface StepButtonsProps {
- setFieldValue: FormikHelpers['setFieldValue'];
- currentStep: number;
- values: FormValues;
-}
-
-const StepButtons: FC = observer(({
- setFieldValue,
- currentStep,
-}) => {
- const { ui: { intl } } = useContext(Store);
- return (
-
- setFieldValue('step', currentStep - 1)}
- >
- {intl.getMessage('back')}
-
-
- {intl.getMessage('next')}
-
-
- );
-});
-
-export default StepButtons;
diff --git a/client2/src/components/Install/components/StepButtons/index.ts b/client2/src/components/Install/components/StepButtons/index.ts
deleted file mode 100644
index a4875a80..00000000
--- a/client2/src/components/Install/components/StepButtons/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './StepButtons';
diff --git a/client2/src/components/Install/components/Stepper/Stepper.module.pcss b/client2/src/components/Install/components/Stepper/Stepper.module.pcss
deleted file mode 100644
index 3f6f3a0d..00000000
--- a/client2/src/components/Install/components/Stepper/Stepper.module.pcss
+++ /dev/null
@@ -1,66 +0,0 @@
-.stepper {
- position: relative;
- display: flex;
- align-items: center;
- justify-content: space-between;
- height: 16px;
- margin-bottom: 32px;
-
- @media (--m-viewport) {
- margin-bottom: 48px;
- }
-}
-
-.wrap {
- flex: 1;
- position: relative;
- display: inline-flex;
- align-items: center;
- justify-content: flex-end;
- height: 16px;
-
- &:before {
- content: "";
- position: absolute;
- left: 0;
- bottom: 7px;
- width: 100%;
- height: 1px;
- background-color: var(--gray400);
- }
-
- &:first-child {
- flex: 0;
-
- &:before {
- display: none;
- }
- }
-
- &.current .circle {
- transform: scale(2);
- background-color: var(--green400);
- border-color: var(--green400);
- }
-
- &.active .circle {
- background-color: var(--green400);
- border-color: var(--green400);
- }
-
- &.current:before,
- &.active:before {
- background-color: var(--green400);
- }
-}
-
-.circle {
- position: relative;
- z-index: 1;
- width: 8px;
- height: 8px;
- background-color: var(--white);
- border-radius: 50%;
- border: 1px solid var(--gray400);
- transition: var(--transition) transform, var(--transition) background, var(--transition) border;
-}
diff --git a/client2/src/components/Install/components/Stepper/Stepper.tsx b/client2/src/components/Install/components/Stepper/Stepper.tsx
deleted file mode 100644
index 29950ca8..00000000
--- a/client2/src/components/Install/components/Stepper/Stepper.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React, { FC } from 'react';
-import cn from 'classnames';
-
-import s from './Stepper.module.pcss';
-
-interface StepProps {
- active: boolean;
- current: boolean;
-}
-
-const Step: FC = ({ active, current }) => {
- return (
-
- );
-};
-
-interface StepperProps {
- currentStep: number;
-}
-
-const Stepper: FC = ({ currentStep }) => {
- return (
-
- = 0} />
- = 1} />
- = 2} />
- = 3} />
- = 4} />
-
- );
-};
-
-export default Stepper;
diff --git a/client2/src/components/Install/components/Stepper/index.ts b/client2/src/components/Install/components/Stepper/index.ts
deleted file mode 100644
index 2fb2a1bd..00000000
--- a/client2/src/components/Install/components/Stepper/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Stepper';
diff --git a/client2/src/components/Install/components/Welcome/Welcome.tsx b/client2/src/components/Install/components/Welcome/Welcome.tsx
deleted file mode 100644
index baa81184..00000000
--- a/client2/src/components/Install/components/Welcome/Welcome.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import React, { FC, useContext } from 'react';
-import { Button } from 'antd';
-import { observer } from 'mobx-react-lite';
-
-import Store from 'Store/installStore';
-import Icon from 'Common/ui/Icon';
-import theme from 'Lib/theme';
-
-interface WelcomeProps {
- onNext: () => void;
-}
-
-const Welcome: FC = observer(({ onNext }) => {
- const { ui: { intl } } = useContext(Store);
- return (
- <>
-
-
- {intl.getMessage('install_wellcome_title')}
-
-
- {intl.getMessage('install_wellcome_desc')}
-
-
-
- {intl.getMessage('install_wellcome_button')}
-
-
- >
- );
-});
-
-export default Welcome;
diff --git a/client2/src/components/Install/components/Welcome/index.ts b/client2/src/components/Install/components/Welcome/index.ts
deleted file mode 100644
index 7cc4be19..00000000
--- a/client2/src/components/Install/components/Welcome/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Welcome';
diff --git a/client2/src/components/Install/index.ts b/client2/src/components/Install/index.ts
deleted file mode 100644
index 6808555d..00000000
--- a/client2/src/components/Install/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Install';
diff --git a/client2/src/components/common/controls/Button/Button.tsx b/client2/src/components/common/controls/Button/Button.tsx
deleted file mode 100644
index 667b9abd..00000000
--- a/client2/src/components/common/controls/Button/Button.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import React, { FC, FocusEvent } from 'react';
-import { Button as ButtonControl } from 'antd';
-import cn from 'classnames';
-
-type ButtonSize = 'small' | 'medium' | 'big';
-type ButtonType = 'primary' | 'icon' | 'link' | 'outlined' | 'border' | 'ghost' | 'input' | 'edit';
-type ButtonHTMLType = 'submit' | 'button' | 'reset';
-type ButtonShape = 'circle' | 'round';
-
-export interface ButtonProps {
- className?: string;
- danger?: boolean;
- dataAttrs?: {
- [key: string]: string;
- };
- disabled?: boolean;
- htmlType?: ButtonHTMLType;
- // icon?: IconType | 'dots_loader';
- iconClassName?: string;
- id?: string;
- inGroup?: boolean;
- onClick?: React.MouseEventHandler;
- onBlur?: (e: FocusEvent) => void;
- shape?: ButtonShape;
- size?: ButtonSize;
- type: ButtonType;
- block?: boolean;
-}
-
-const Button: FC = ({
- children,
- className,
- danger,
- dataAttrs,
- disabled,
- htmlType,
- // icon,
- id,
- onClick,
- onBlur,
- shape,
-}) => {
- const buttonClass = cn(
- className,
- );
-
- return (
-
- // : )}
- id={id}
- onClick={onClick}
- onBlur={onBlur}
- shape={shape}
- >
- {children}
-
- );
-};
-
-export default Button;
diff --git a/client2/src/components/common/controls/Button/index.ts b/client2/src/components/common/controls/Button/index.ts
deleted file mode 100644
index efe8c800..00000000
--- a/client2/src/components/common/controls/Button/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Button';
diff --git a/client2/src/components/common/controls/Input/Input.tsx b/client2/src/components/common/controls/Input/Input.tsx
deleted file mode 100644
index 2b7503bb..00000000
--- a/client2/src/components/common/controls/Input/Input.tsx
+++ /dev/null
@@ -1,146 +0,0 @@
-import React, { FC, FocusEvent, KeyboardEvent, ClipboardEvent, ChangeEvent, useState } from 'react';
-import { Input as InputControl } from 'antd';
-import { InputProps as InputControlProps } from 'antd/lib/input';
-import cn from 'classnames';
-
-import { Icon } from 'Common/ui';
-import theme from 'Lib/theme';
-
-interface AdminInterfaceProps {
- autoComplete?: InputControlProps['autoComplete'];
- autoFocus?: InputControlProps['autoFocus'];
- className?: string;
- description?: string;
- disabled?: boolean;
- error?: boolean;
- id?: string;
- inputMode?: InputControlProps['inputMode'];
- label?: string;
- wrapperClassName?: string;
- name: string;
- onBlur?: (e: FocusEvent) => void;
- onChange?: (data: string, e?: ChangeEvent) => void;
- onFocus?: (e: FocusEvent) => void;
- onKeyDown?: (e: KeyboardEvent) => void;
- onPaste?: (e: ClipboardEvent) => void;
- pattern?: InputControlProps['pattern'];
- placeholder: string;
- prefix?: InputControlProps['prefix'];
- size?: InputControlProps['size'];
- suffix?: InputControlProps['suffix'];
- type: InputControlProps['type'];
- value: string | number;
-}
-
-const InputComponent: FC = ({
- autoComplete,
- autoFocus,
- className,
- description,
- disabled,
- error,
- id,
- inputMode,
- label,
- wrapperClassName,
- name,
- onBlur,
- onChange,
- onFocus,
- onKeyDown,
- onPaste,
- pattern,
- placeholder,
- prefix,
- size = 'middle',
- suffix,
- type,
- value,
-}) => {
- const [inputType, setInputType] = useState(type);
-
- const inputClass = cn(
- 'input',
- { input_big: size === 'large' },
- { input_medium: size === 'middle' },
- { input_small: size === 'small' },
- className,
- );
-
- const handleBlur = (e: FocusEvent) => {
- if (onBlur) {
- onBlur(e);
- }
- };
-
- const showPassword = () => {
- if (inputType === 'password') {
- setInputType('text');
- } else {
- setInputType('password');
- }
- };
-
- const showPasswordIcon = () => {
- const icon = inputType === 'password' ? 'visibility_disable' : 'visibility_enable';
- return (
-
- );
- };
-
- const validSuffix = (
- <>
- {!!suffix && suffix}
- {(type === 'password') && showPasswordIcon()}
- >
- );
-
- let descriptionView = null;
- if (description) {
- descriptionView = (
-
- {description}
-
- );
- }
-
- return (
-
- {label && (
-
- {label}
-
- )}
- onChange && onChange(e.target.value ? e.target.value : '', e)}
- onFocus={onFocus}
- onKeyDown={onKeyDown}
- onPaste={onPaste}
- pattern={pattern}
- placeholder={placeholder}
- prefix={prefix}
- size="large"
- suffix={validSuffix}
- type={inputType}
- value={value}
- data-error={error}
- />
- {descriptionView}
-
- );
-};
-
-export default InputComponent;
diff --git a/client2/src/components/common/controls/Input/index.ts b/client2/src/components/common/controls/Input/index.ts
deleted file mode 100644
index b4d38647..00000000
--- a/client2/src/components/common/controls/Input/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as Input } from './Input';
diff --git a/client2/src/components/common/controls/Radio/Radio.module.pcss b/client2/src/components/common/controls/Radio/Radio.module.pcss
deleted file mode 100644
index ebbce092..00000000
--- a/client2/src/components/common/controls/Radio/Radio.module.pcss
+++ /dev/null
@@ -1,20 +0,0 @@
-.group {
- width: 100%;
-}
-
-.radio {
- display: flex;
- align-items: center;
- margin-bottom: 16px;
- padding-bottom: 16px;
- width: 100%;
- border-bottom: 1px solid var(--gray300);
-
- &:last-child {
- border-bottom: 0;
- }
-}
-
-.desc {
- color: var(--gray400);
-}
diff --git a/client2/src/components/common/controls/Radio/Radio.tsx b/client2/src/components/common/controls/Radio/Radio.tsx
deleted file mode 100644
index 5b816858..00000000
--- a/client2/src/components/common/controls/Radio/Radio.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React, { FC } from 'react';
-import { Radio } from 'antd';
-import { observer } from 'mobx-react-lite';
-
-import s from './Radio.module.pcss';
-
-const { Group } = Radio;
-
-interface RadioProps {
- options: {
- label: string;
- desc?: string;
- value: string | number;
- }[];
- onSelect: (value: string | number) => void;
- value: string | number;
-}
-
-const RadioComponent: FC = observer(({
- options, onSelect, value,
-}) => {
- if (options.length === 0) {
- return null;
- }
-
- return (
- {
- onSelect(e.target.value);
- }}
- className={s.group}
- >
- {options.map((o) => (
-
-
- {o.label}
-
- {o.desc && (
-
- {o.desc}
-
- )}
-
- ))}
-
-
- );
-});
-
-export default RadioComponent;
diff --git a/client2/src/components/common/controls/Radio/index.ts b/client2/src/components/common/controls/Radio/index.ts
deleted file mode 100644
index 61c95671..00000000
--- a/client2/src/components/common/controls/Radio/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Radio';
diff --git a/client2/src/components/common/controls/Switch/Switch.tsx b/client2/src/components/common/controls/Switch/Switch.tsx
deleted file mode 100644
index bb762eec..00000000
--- a/client2/src/components/common/controls/Switch/Switch.tsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Switch as SwitchE } from 'antd';
-
-export default SwitchE;
diff --git a/client2/src/components/common/controls/Switch/index.ts b/client2/src/components/common/controls/Switch/index.ts
deleted file mode 100644
index 4f1eea55..00000000
--- a/client2/src/components/common/controls/Switch/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as Switch } from './Switch';
diff --git a/client2/src/components/common/controls/index.ts b/client2/src/components/common/controls/index.ts
deleted file mode 100644
index 3746e6fe..00000000
--- a/client2/src/components/common/controls/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { default as Radio } from './Radio';
-export { Input } from './Input';
-export { Switch } from './Switch';
-export { default as Button } from './Button';
diff --git a/client2/src/components/common/formating/code.tsx b/client2/src/components/common/formating/code.tsx
deleted file mode 100644
index 60de648c..00000000
--- a/client2/src/components/common/formating/code.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import theme from 'Lib/theme';
-
-const code = (e: string) => {
- return (
-
- {e}
-
- );
-};
-
-export default code;
diff --git a/client2/src/components/common/formating/danger.tsx b/client2/src/components/common/formating/danger.tsx
deleted file mode 100644
index a04cce3c..00000000
--- a/client2/src/components/common/formating/danger.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import theme from 'Lib/theme';
-
-const danger = (e: string) => {
- return (
-
- {e}
-
- );
-};
-
-export default danger;
diff --git a/client2/src/components/common/formating/externalLink.tsx b/client2/src/components/common/formating/externalLink.tsx
deleted file mode 100644
index 14e0cad5..00000000
--- a/client2/src/components/common/formating/externalLink.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import React from 'react';
-import theme from 'Lib/theme';
-
-export const externalLink = (link: string) => (e: string) => (
-
- {e}
-
-);
diff --git a/client2/src/components/common/formating/index.ts b/client2/src/components/common/formating/index.ts
deleted file mode 100644
index 7b1322b1..00000000
--- a/client2/src/components/common/formating/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { default as danger } from './danger';
-export { default as p } from './p';
-export { default as code } from './code';
-export { externalLink } from './externalLink';
diff --git a/client2/src/components/common/formating/p.tsx b/client2/src/components/common/formating/p.tsx
deleted file mode 100644
index 68b39915..00000000
--- a/client2/src/components/common/formating/p.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react';
-
-const danger = (e: string) => {
- return (
-
- {e}
-
- );
-};
-
-export default danger;
diff --git a/client2/src/components/common/index.ts b/client2/src/components/common/index.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/client2/src/components/common/ui/Icon/Icon.module.pcss b/client2/src/components/common/ui/Icon/Icon.module.pcss
deleted file mode 100644
index a935fe21..00000000
--- a/client2/src/components/common/ui/Icon/Icon.module.pcss
+++ /dev/null
@@ -1,7 +0,0 @@
-.icon {
- display: inline-block;
- vertical-align: middle;
- width: 24px;
- height: 24px;
- flex-shrink: 0;
-}
diff --git a/client2/src/components/common/ui/Icon/Icon.tsx b/client2/src/components/common/ui/Icon/Icon.tsx
deleted file mode 100644
index 261852b3..00000000
--- a/client2/src/components/common/ui/Icon/Icon.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React, { FC } from 'react';
-import cn from 'classnames';
-import { IconType } from 'Common/ui/Icons';
-
-import s from './Icon.module.pcss';
-
-interface IconProps {
- icon: IconType;
- color?: string;
- className?: string;
- onClick?: () => void;
-}
-
-const Icon: FC = ({ icon, color, className, onClick }) => {
- const iconClass = cn(s.icon, color, className);
-
- return (
-
-
-
- );
-};
-
-export default Icon;
-export { IconType } from 'Common/ui/Icons';
diff --git a/client2/src/components/common/ui/Icon/index.ts b/client2/src/components/common/ui/Icon/index.ts
deleted file mode 100644
index c1c8457b..00000000
--- a/client2/src/components/common/ui/Icon/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default, IconType } from './Icon';
diff --git a/client2/src/components/common/ui/Icons/Icon.pcss b/client2/src/components/common/ui/Icons/Icon.pcss
deleted file mode 100644
index a77a74a7..00000000
--- a/client2/src/components/common/ui/Icons/Icon.pcss
+++ /dev/null
@@ -1,3 +0,0 @@
-.icons {
- display: none;
-}
diff --git a/client2/src/components/common/ui/Icons/index.tsx b/client2/src/components/common/ui/Icons/index.tsx
deleted file mode 100644
index dcf0e338..00000000
--- a/client2/src/components/common/ui/Icons/index.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import React, { FC } from 'react';
-import './Icon.pcss';
-
-export type IconType =
- 'logo' |
- 'visibility_disable' |
- 'visibility_enable' |
- 'logo_shield' |
- 'logo_light' |
- 'sign_out' |
- 'user' |
- 'language' |
- 'close_big';
-
-const Icons: FC = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default Icons;
diff --git a/client2/src/components/common/ui/LangSelect/LangSelect.module.pcss b/client2/src/components/common/ui/LangSelect/LangSelect.module.pcss
deleted file mode 100644
index 1342ea34..00000000
--- a/client2/src/components/common/ui/LangSelect/LangSelect.module.pcss
+++ /dev/null
@@ -1,10 +0,0 @@
-.wrap {
- display: inline-flex;
- align-items: center;
-}
-
-.icon {
- font-size: 22px;
- margin-right: 10px;
- color: var(--gray700);
-}
diff --git a/client2/src/components/common/ui/LangSelect/LangSelect.tsx b/client2/src/components/common/ui/LangSelect/LangSelect.tsx
deleted file mode 100644
index 24bc15b2..00000000
--- a/client2/src/components/common/ui/LangSelect/LangSelect.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import React, { FC, useContext } from 'react';
-
-import { Icon } from 'Common/ui';
-import Store from 'Store';
-import { LANGUAGES } from 'Localization';
-
-import s from './LangSelect.module.pcss';
-
-const LangSelector: FC = () => {
- const store = useContext(Store);
- const { ui: { currentLang } } = store;
-
- const lang = LANGUAGES.find((e) => e.code === currentLang)!;
-
- return (
-
-
- {lang.name}
-
- );
-};
-
-export default LangSelector;
diff --git a/client2/src/components/common/ui/LangSelect/index.tsx b/client2/src/components/common/ui/LangSelect/index.tsx
deleted file mode 100644
index 25f35f87..00000000
--- a/client2/src/components/common/ui/LangSelect/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './LangSelect';
diff --git a/client2/src/components/common/ui/Link.tsx b/client2/src/components/common/ui/Link.tsx
deleted file mode 100644
index 5abbc0a1..00000000
--- a/client2/src/components/common/ui/Link.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import React, { FC, MouseEvent } from 'react';
-import { Link as L, LinkProps as LProps } from 'react-router-dom';
-import cn from 'classnames';
-
-import { linkPathBuilder, RoutePath, LinkParams, LinkParamsKeys } from 'Paths';
-
-interface LinkProps {
- to: RoutePath;
- props?: LinkParams;
- className?: string;
- type?: LProps['type'];
- stop?: boolean;
- disabled?: boolean;
- onClick?: () => void;
- id?: string;
-}
-
-const Link: FC = ({
- to, children, className, props, type, stop, disabled, onClick, id,
-}) => {
- if (props) {
- Object.keys(props).forEach((key: unknown) => {
- if (!props[key as LinkParamsKeys]) {
- throw new Error(`Got wrong ${key} propKey: ${props[key as LinkParamsKeys]} in Link`);
- }
- });
- }
-
- const handleClick = (e: MouseEvent) => {
- if (stop) {
- e.stopPropagation();
- }
- if (onClick) {
- onClick();
- }
- };
-
- if (disabled) {
- return (
-
- {children}
-
- );
- }
-
- return (
-
- {children}
-
- );
-};
-
-export default Link;
diff --git a/client2/src/components/common/ui/Mask/Mask.module.pcss b/client2/src/components/common/ui/Mask/Mask.module.pcss
deleted file mode 100644
index 7c7e1930..00000000
--- a/client2/src/components/common/ui/Mask/Mask.module.pcss
+++ /dev/null
@@ -1,26 +0,0 @@
-.mask {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- height: 100%;
- background-color: rgba(0, 0, 0, 0.45);
- opacity: 0;
- visibility: hidden;
- transition: opacity var(--transition);
- cursor: pointer;
-
- &_visible {
- opacity: 1;
- visibility: visible;
- }
-
- @media (--l-viewport) {
- &_visible {
- opacity: 0;
- visibility: hidden;
- }
- }
-}
diff --git a/client2/src/components/common/ui/Mask/Mask.tsx b/client2/src/components/common/ui/Mask/Mask.tsx
deleted file mode 100644
index 162b2349..00000000
--- a/client2/src/components/common/ui/Mask/Mask.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import React, { FC } from 'react';
-import cn from 'classnames';
-
-import s from './Mask.module.pcss';
-
-interface MaskProps {
- open: boolean;
- handle: () => void;
-}
-
-const Mask: FC = ({ open, handle }) => {
- return (
-
- );
-};
-
-export default Mask;
diff --git a/client2/src/components/common/ui/Mask/index.ts b/client2/src/components/common/ui/Mask/index.ts
deleted file mode 100644
index 7933fa49..00000000
--- a/client2/src/components/common/ui/Mask/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Mask';
diff --git a/client2/src/components/common/ui/Notifications/index.ts b/client2/src/components/common/ui/Notifications/index.ts
deleted file mode 100644
index 69c284eb..00000000
--- a/client2/src/components/common/ui/Notifications/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { notifyError, notifySuccess } from './notifications';
diff --git a/client2/src/components/common/ui/Notifications/notifications.tsx b/client2/src/components/common/ui/Notifications/notifications.tsx
deleted file mode 100644
index 6a5da09b..00000000
--- a/client2/src/components/common/ui/Notifications/notifications.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import React from 'react';
-import { notification } from 'antd';
-
-import { DEFAULT_NOTIFICATION_DURATION } from 'Consts/common';
-
-export const notifySuccess = (title: string, code?: string) => {
- notification.success({
- message: (
-
- {title}
-
- ),
- placement: 'bottomRight',
- duration: DEFAULT_NOTIFICATION_DURATION,
- className: 'notification',
- });
-};
-
-export const notifyError = (
- title: string,
- options?: {
- btn?: React.ReactNode;
- duration?: number;
- onClose?: () => void;
- },
-) => {
- const { btn, duration, onClose } = options || {};
- notification.error({
- onClose,
- message: (
-
- {title}
-
- ),
- placement: 'bottomRight',
- duration: typeof duration === 'number' ? duration : DEFAULT_NOTIFICATION_DURATION,
- className: 'notification',
- btn,
- });
-};
diff --git a/client2/src/components/common/ui/index.ts b/client2/src/components/common/ui/index.ts
deleted file mode 100644
index c505ed48..00000000
--- a/client2/src/components/common/ui/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export { default as Icon } from './Icon';
-export { notifyError, notifySuccess } from './Notifications';
-export { default as Link } from './Link';
-export { default as LangSelect } from './LangSelect';
-export { default as Mask } from './Mask';
-export { CommonLayout, InnerLayout, CommonModalLayout, ConfirmModalLayout } from './layouts';
diff --git a/client2/src/components/common/ui/layouts/CommonLayout.tsx b/client2/src/components/common/ui/layouts/CommonLayout.tsx
deleted file mode 100644
index e0c73cb3..00000000
--- a/client2/src/components/common/ui/layouts/CommonLayout.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Layout } from 'antd';
-import React, { FC } from 'react';
-
-interface CommonLayoutProps {
- className?: string;
-}
-
-const CommonLayout: FC = ({ children, className }) => {
- return (
-
- {children}
-
- );
-};
-
-export default CommonLayout;
diff --git a/client2/src/components/common/ui/layouts/CommonModalLayout.tsx b/client2/src/components/common/ui/layouts/CommonModalLayout.tsx
deleted file mode 100644
index 8e62049e..00000000
--- a/client2/src/components/common/ui/layouts/CommonModalLayout.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import React, { FC, useContext, useEffect } from 'react';
-import { Modal, Button } from 'antd';
-import cn from 'classnames';
-
-import { Icon } from 'Common/ui';
-import Store from 'Store';
-
-interface CommonModalLayoutProps {
- visible: boolean;
- title: string;
- buttonText?: string;
- className?: string;
- width?: number;
- onClose: () => void;
- onSubmit?: () => void;
- noFooter?: boolean;
- disabled?: boolean;
- centered?: boolean;
-}
-
-const CommonModalLayout: FC = ({
- visible,
- children,
- title,
- buttonText,
- className,
- width,
- onClose,
- onSubmit,
- noFooter,
- disabled,
- centered,
-}) => {
- const store = useContext(Store);
- const { ui: { intl } } = store;
-
- useEffect(() => {
- const onEnter = (e: KeyboardEvent) => {
- if (e.key === 'Enter' && onSubmit) {
- onSubmit();
- }
- };
- if (onSubmit) {
- window.addEventListener('keyup', onEnter);
- }
- return () => {
- window.removeEventListener('keyup', onEnter);
- };
- }, [onSubmit]);
- const footer = noFooter ? null : [
-
- {buttonText}
- ,
-
- {intl.getMessage('cancel')}
- ,
- ];
-
- return (
- }
- width={width || 480}
- centered={centered}
- >
- {children}
-
- );
-};
-
-export default CommonModalLayout;
diff --git a/client2/src/components/common/ui/layouts/ConfirmModalLayout.tsx b/client2/src/components/common/ui/layouts/ConfirmModalLayout.tsx
deleted file mode 100644
index 503b858c..00000000
--- a/client2/src/components/common/ui/layouts/ConfirmModalLayout.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import React, { FC } from 'react';
-
-import CommonModalLayout from './CommonModalLayout';
-
-interface DeleteModalLayoutProps {
- visible: boolean;
- title: string;
- buttonText: string;
- onClose: () => void;
- onConfirm?: () => void;
-}
-
-const DeleteModalLayout: FC = ({
- visible,
- children,
- title,
- buttonText,
- onClose,
- onConfirm,
-}) => {
- return (
-
- {children}
-
- );
-};
-
-export default DeleteModalLayout;
diff --git a/client2/src/components/common/ui/layouts/InnerLayout.tsx b/client2/src/components/common/ui/layouts/InnerLayout.tsx
deleted file mode 100644
index 4ecab818..00000000
--- a/client2/src/components/common/ui/layouts/InnerLayout.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Layout } from 'antd';
-import React, { FC } from 'react';
-import cn from 'classnames';
-
-import theme from 'Lib/theme';
-
-interface InnerLayoutProps {
- title: string;
- className?: string;
- containerClassName?: string;
-}
-
-const InnerLayout: FC = ({
- children, title, className, containerClassName,
-}) => {
- return (
-
-
-
- );
-};
-
-export default InnerLayout;
diff --git a/client2/src/components/common/ui/layouts/index.ts b/client2/src/components/common/ui/layouts/index.ts
deleted file mode 100644
index 3751f879..00000000
--- a/client2/src/components/common/ui/layouts/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { default as CommonLayout } from './CommonLayout';
-export { default as InnerLayout } from './InnerLayout';
-export { default as ConfirmModalLayout } from './ConfirmModalLayout';
-export { default as CommonModalLayout } from './CommonModalLayout';
diff --git a/client2/src/lib/ant/Modal.pcss b/client2/src/lib/ant/Modal.pcss
deleted file mode 100644
index c0c98671..00000000
--- a/client2/src/lib/ant/Modal.pcss
+++ /dev/null
@@ -1,47 +0,0 @@
-.modal {
- & .ant-modal-close-x {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 24px;
- height: 24px;
- color: var(--black);
- border-radius: 2px;
- background-color: var(--white);
- transition: background-color 0.3s;
-
- &:hover,
- &:focus {
- background-color: var(--cloud);
- }
-
- &:active {
- background-color: var(--borders-white);
- }
-
- & svg {
- width: 20px;
- height: 20px;
- }
-
- @media (--s-viewport) {
- width: 40px;
- height: 40px;
-
- & svg {
- width: 24px;
- height: 24px;
- }
- }
- }
-
- & .ant-modal-close {
- top: 11px;
- right: 8px;
-
- @media (--s-viewport) {
- top: 15px;
- right: 15px;
- }
- }
-}
diff --git a/client2/src/lib/ant/Radio.pcss b/client2/src/lib/ant/Radio.pcss
deleted file mode 100644
index b3937d8d..00000000
--- a/client2/src/lib/ant/Radio.pcss
+++ /dev/null
@@ -1,15 +0,0 @@
-.ant-radio {
- margin-right: 18px;
-}
-
-.ant-radio-inner {
- width: 20px;
- height: 20px;
- background-color: transparent;
- border-color: var(--gray400);
-
- &::after {
- width: 12px;
- height: 12px;
- }
-}
\ No newline at end of file
diff --git a/client2/src/lib/ant/Sidebar.pcss b/client2/src/lib/ant/Sidebar.pcss
deleted file mode 100644
index a0d55dfe..00000000
--- a/client2/src/lib/ant/Sidebar.pcss
+++ /dev/null
@@ -1,26 +0,0 @@
-.sidebar {
- position: fixed;
- top: 0;
- height: 100vh;
- font-weight: 500;
- overflow: auto;
- z-index: 1041;
- scrollbar-width: none;
-
- &::-webkit-scrollbar {
- display: none;
- }
-
- @media (--l-viewport) {
- position: sticky;
- z-index: 1040;
- }
-
- & .ant-menu-item-group {
- @media (--m-viewport) {
- &:last-child {
- margin-top: auto;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/client2/src/lib/ant/Tabs.pcss b/client2/src/lib/ant/Tabs.pcss
deleted file mode 100644
index 0b110210..00000000
--- a/client2/src/lib/ant/Tabs.pcss
+++ /dev/null
@@ -1,45 +0,0 @@
-.tabs {
- border-radius: 2px;
- background-color: var(--white);
-
- & .ant-tabs-tab {
- padding: 10px 16px;
- margin-right: 10px;
- color: var(--gray900);
- transition: color var(--transition), background var(--transition);
-
- &.ant-tabs-tab-active {
- background-color: #E6F4EA;
- }
- }
-
- &.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab {
- @media (--l-viewport) {
- min-width: 230px;
- margin-bottom: 7px;
- padding: 10px 24px;
- }
- }
-
- &.ant-tabs-left > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane {
- @media (--l-viewport) {
- padding: 24px 40px;
- }
- }
-
- & .ant-tabs-nav {
- margin-bottom: 0;
- }
-
- & .ant-tabs-tabpane {
- padding: 24px 16px;
- }
-
- & .ant-tabs-nav-list {
- padding: 0 16px;
-
- @media (--l-viewport) {
- padding: 24px 0;
- }
- }
-}
diff --git a/client2/src/lib/ant/ant-overrides.less b/client2/src/lib/ant/ant-overrides.less
deleted file mode 100644
index 1de4b6e5..00000000
--- a/client2/src/lib/ant/ant-overrides.less
+++ /dev/null
@@ -1,12 +0,0 @@
-@primary-color: #67b279;
-@success-color: #4d995f;
-@text-color: #000;
-@link-hover-color: #4d995f;
-@link-active-color: #4d995f;
-@text-selection-bg: #e7efff;
-@layout-body-background: #f3f3f3;
-@layout-header-background: #131313;
-@menu-dark-submenu-bg: #131313;
-
-@font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
-@font-size-base: 14px;
diff --git a/client2/src/lib/ant/ant.less b/client2/src/lib/ant/ant.less
deleted file mode 100644
index a4e7d2ec..00000000
--- a/client2/src/lib/ant/ant.less
+++ /dev/null
@@ -1,6 +0,0 @@
-@import '~antd/dist/antd.less';
-@import './ant-overrides.less';
-
-::selection {
- color: #000;
-}
diff --git a/client2/src/lib/ant/index.ts b/client2/src/lib/ant/index.ts
deleted file mode 100644
index 9fd16b8d..00000000
--- a/client2/src/lib/ant/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import './Radio.pcss';
-import './Sidebar.pcss';
-import './Tabs.pcss';
-import './Modal.pcss';
-
-const insertStyles = true;
-export default insertStyles;
diff --git a/client2/src/lib/apis/blockedServices.ts b/client2/src/lib/apis/blockedServices.ts
deleted file mode 100644
index 7daa3344..00000000
--- a/client2/src/lib/apis/blockedServices.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class BlockedServicesApi {
- static async blockedServicesAvailableServices(): Promise {
- return await fetch(`/control/blocked_services/services`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async blockedServicesList(): Promise {
- return await fetch(`/control/blocked_services/list`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async blockedServicesSet(data: string[]): Promise {
- return await fetch(`/control/blocked_services/set`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(data),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/clients.ts b/client2/src/lib/apis/clients.ts
deleted file mode 100644
index 187bcc9c..00000000
--- a/client2/src/lib/apis/clients.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-import qs from 'qs';
-import AccessListResponse, { IAccessListResponse } from 'Entities/AccessListResponse';
-import AccessSetRequest, { IAccessSetRequest } from 'Entities/AccessSetRequest';
-import Client, { IClient } from 'Entities/Client';
-import ClientDelete, { IClientDelete } from 'Entities/ClientDelete';
-import ClientUpdate, { IClientUpdate } from 'Entities/ClientUpdate';
-import Clients, { IClients } from 'Entities/Clients';
-import ClientsFindEntry, { IClientsFindEntry } from 'Entities/ClientsFindEntry';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class ClientsApi {
- static async accessList(): Promise {
- return await fetch(`/control/access/list`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async accessSet(accesssetrequest: IAccessSetRequest): Promise {
- const haveError: string[] = [];
- const accesssetrequestValid = new AccessSetRequest(accesssetrequest);
- haveError.push(...accesssetrequestValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/access/set`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(accesssetrequestValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async clientsAdd(client: IClient): Promise {
- const haveError: string[] = [];
- const clientValid = new Client(client);
- haveError.push(...clientValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/clients/add`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(clientValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async clientsDelete(clientdelete: IClientDelete): Promise {
- const haveError: string[] = [];
- const clientdeleteValid = new ClientDelete(clientdelete);
- haveError.push(...clientdeleteValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/clients/delete`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(clientdeleteValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async clientsFind(ip0?: string): Promise {
- const queryParams = {
- ip0: ip0,
- }
- return await fetch(`/control/clients/find?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async clientsStatus(): Promise {
- return await fetch(`/control/clients`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async clientsUpdate(clientupdate: IClientUpdate): Promise {
- const haveError: string[] = [];
- const clientupdateValid = new ClientUpdate(clientupdate);
- haveError.push(...clientupdateValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/clients/update`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(clientupdateValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/dhcp.ts b/client2/src/lib/apis/dhcp.ts
deleted file mode 100644
index 2d2df29f..00000000
--- a/client2/src/lib/apis/dhcp.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-import DhcpConfig, { IDhcpConfig } from 'Entities/DhcpConfig';
-import DhcpSearchResult, { IDhcpSearchResult } from 'Entities/DhcpSearchResult';
-import DhcpStaticLease, { IDhcpStaticLease } from 'Entities/DhcpStaticLease';
-import DhcpStatus, { IDhcpStatus } from 'Entities/DhcpStatus';
-import NetInterfaces, { INetInterfaces } from 'Entities/NetInterfaces';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class DhcpApi {
- static async checkActiveDhcp(): Promise {
- return await fetch(`/control/dhcp/find_active_dhcp`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dhcpAddStaticLease(dhcpstaticlease: IDhcpStaticLease): Promise {
- const haveError: string[] = [];
- const dhcpstaticleaseValid = new DhcpStaticLease(dhcpstaticlease);
- haveError.push(...dhcpstaticleaseValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/dhcp/add_static_lease`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(dhcpstaticleaseValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dhcpInterfaces(): Promise {
- return await fetch(`/control/dhcp/interfaces`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dhcpRemoveStaticLease(dhcpstaticlease: IDhcpStaticLease): Promise {
- const haveError: string[] = [];
- const dhcpstaticleaseValid = new DhcpStaticLease(dhcpstaticlease);
- haveError.push(...dhcpstaticleaseValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/dhcp/remove_static_lease`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(dhcpstaticleaseValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dhcpReset(): Promise {
- return await fetch(`/control/dhcp/reset`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dhcpSetConfig(dhcpconfig: IDhcpConfig): Promise {
- const haveError: string[] = [];
- const dhcpconfigValid = new DhcpConfig(dhcpconfig);
- haveError.push(...dhcpconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/dhcp/set_config`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(dhcpconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dhcpStatus(): Promise {
- return await fetch(`/control/dhcp/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/filtering.ts b/client2/src/lib/apis/filtering.ts
deleted file mode 100644
index cdaf1e91..00000000
--- a/client2/src/lib/apis/filtering.ts
+++ /dev/null
@@ -1,167 +0,0 @@
-import qs from 'qs';
-import AddUrlRequest, { IAddUrlRequest } from 'Entities/AddUrlRequest';
-import FilterCheckHostResponse, { IFilterCheckHostResponse } from 'Entities/FilterCheckHostResponse';
-import FilterConfig, { IFilterConfig } from 'Entities/FilterConfig';
-import FilterRefreshRequest, { IFilterRefreshRequest } from 'Entities/FilterRefreshRequest';
-import FilterRefreshResponse, { IFilterRefreshResponse } from 'Entities/FilterRefreshResponse';
-import FilterSetUrl, { IFilterSetUrl } from 'Entities/FilterSetUrl';
-import FilterStatus, { IFilterStatus } from 'Entities/FilterStatus';
-import RemoveUrlRequest, { IRemoveUrlRequest } from 'Entities/RemoveUrlRequest';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class FilteringApi {
- static async filteringAddURL(addurlrequest: IAddUrlRequest): Promise {
- const haveError: string[] = [];
- const addurlrequestValid = new AddUrlRequest(addurlrequest);
- haveError.push(...addurlrequestValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/filtering/add_url`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(addurlrequestValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringCheckHost(name?: string): Promise {
- const queryParams = {
- name: name,
- }
- return await fetch(`/control/filtering/check_host?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringConfig(filterconfig: IFilterConfig): Promise {
- const haveError: string[] = [];
- const filterconfigValid = new FilterConfig(filterconfig);
- haveError.push(...filterconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/filtering/config`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(filterconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringRefresh(filterrefreshrequest: IFilterRefreshRequest): Promise {
- const haveError: string[] = [];
- const filterrefreshrequestValid = new FilterRefreshRequest(filterrefreshrequest);
- haveError.push(...filterrefreshrequestValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/filtering/refresh`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(filterrefreshrequestValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringRemoveURL(removeurlrequest: IRemoveUrlRequest): Promise {
- const haveError: string[] = [];
- const removeurlrequestValid = new RemoveUrlRequest(removeurlrequest);
- haveError.push(...removeurlrequestValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/filtering/remove_url`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(removeurlrequestValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringSetRules(data: string): Promise {
- const params = String(data);
- return await fetch(`/control/filtering/set_rules`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'text/plain',
- },
- body: params,
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringSetURL(filterseturl: IFilterSetUrl): Promise {
- const haveError: string[] = [];
- const filterseturlValid = new FilterSetUrl(filterseturl);
- haveError.push(...filterseturlValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/filtering/set_url`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(filterseturlValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async filteringStatus(): Promise {
- return await fetch(`/control/filtering/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/global.ts b/client2/src/lib/apis/global.ts
deleted file mode 100644
index d66e7139..00000000
--- a/client2/src/lib/apis/global.ts
+++ /dev/null
@@ -1,160 +0,0 @@
-import DNSConfig, { IDNSConfig } from 'Entities/DNSConfig';
-import GetVersionRequest, { IGetVersionRequest } from 'Entities/GetVersionRequest';
-import Login, { ILogin } from 'Entities/Login';
-import ProfileInfo, { IProfileInfo } from 'Entities/ProfileInfo';
-import ServerStatus, { IServerStatus } from 'Entities/ServerStatus';
-import UpstreamsConfig, { IUpstreamsConfig } from 'Entities/UpstreamsConfig';
-import UpstreamsConfigResponse, { IUpstreamsConfigResponse } from 'Entities/UpstreamsConfigResponse';
-import VersionInfo, { IVersionInfo } from 'Entities/VersionInfo';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class GlobalApi {
- static async beginUpdate(): Promise {
- return await fetch(`/control/update`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dnsConfig(dnsconfig: IDNSConfig): Promise {
- const haveError: string[] = [];
- const dnsconfigValid = new DNSConfig(dnsconfig);
- haveError.push(...dnsconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/dns_config`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(dnsconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async dnsInfo(): Promise {
- return await fetch(`/control/dns_info`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async getProfile(): Promise {
- return await fetch(`/control/profile`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async getVersionJson(getversionrequest: IGetVersionRequest): Promise {
- const haveError: string[] = [];
- const getversionrequestValid = new GetVersionRequest(getversionrequest);
- haveError.push(...getversionrequestValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/version.json`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(getversionrequestValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async login(login: ILogin): Promise {
- const haveError: string[] = [];
- const loginValid = new Login(login);
- haveError.push(...loginValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/login`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(loginValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async logout(): Promise {
- return await fetch(`/control/logout`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async status(): Promise {
- return await fetch(`/control/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async testUpstreamDNS(upstreamsconfig: IUpstreamsConfig): Promise {
- const haveError: string[] = [];
- const upstreamsconfigValid = new UpstreamsConfig(upstreamsconfig);
- haveError.push(...upstreamsconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/test_upstream_dns`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(upstreamsconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/i18n.ts b/client2/src/lib/apis/i18n.ts
deleted file mode 100644
index 045ea104..00000000
--- a/client2/src/lib/apis/i18n.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class I18nApi {
- static async changeLanguage(data: string): Promise {
- const params = String(data);
- return await fetch(`/control/i18n/change_language`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'text/plain',
- },
- body: params,
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async currentLanguage(): Promise {
- return await fetch(`/control/i18n/current_language`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/install.ts b/client2/src/lib/apis/install.ts
deleted file mode 100644
index 6de0d230..00000000
--- a/client2/src/lib/apis/install.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-import AddressesInfo, { IAddressesInfo } from 'Entities/AddressesInfo';
-import AddressesInfoBeta, { IAddressesInfoBeta } from 'Entities/AddressesInfoBeta';
-import CheckConfigRequest, { ICheckConfigRequest } from 'Entities/CheckConfigRequest';
-import CheckConfigRequestBeta, { ICheckConfigRequestBeta } from 'Entities/CheckConfigRequestBeta';
-import CheckConfigResponse, { ICheckConfigResponse } from 'Entities/CheckConfigResponse';
-import InitialConfiguration, { IInitialConfiguration } from 'Entities/InitialConfiguration';
-import InitialConfigurationBeta, { IInitialConfigurationBeta } from 'Entities/InitialConfigurationBeta';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class InstallApi {
- static async installCheckConfig(checkconfigrequest: ICheckConfigRequest): Promise {
- const haveError: string[] = [];
- const checkconfigrequestValid = new CheckConfigRequest(checkconfigrequest);
- haveError.push(...checkconfigrequestValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/install/check_config`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(checkconfigrequestValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async installCheckConfigBeta(checkconfigrequestbeta: ICheckConfigRequestBeta): Promise {
- const haveError: string[] = [];
- const checkconfigrequestbetaValid = new CheckConfigRequestBeta(checkconfigrequestbeta);
- haveError.push(...checkconfigrequestbetaValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/install/check_config_beta`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(checkconfigrequestbetaValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async installConfigure(initialconfiguration: IInitialConfiguration): Promise {
- const haveError: string[] = [];
- const initialconfigurationValid = new InitialConfiguration(initialconfiguration);
- haveError.push(...initialconfigurationValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/install/configure`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(initialconfigurationValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async installConfigureBeta(initialconfigurationbeta: IInitialConfigurationBeta): Promise {
- const haveError: string[] = [];
- const initialconfigurationbetaValid = new InitialConfigurationBeta(initialconfigurationbeta);
- haveError.push(...initialconfigurationbetaValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/install/configure_beta`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(initialconfigurationbetaValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async installGetAddresses(): Promise {
- return await fetch(`/control/install/get_addresses`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async installGetAddressesBeta(): Promise {
- return await fetch(`/control/install/get_addresses_beta`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/log.ts b/client2/src/lib/apis/log.ts
deleted file mode 100644
index f0aa37fb..00000000
--- a/client2/src/lib/apis/log.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import qs from 'qs';
-import QueryLog, { IQueryLog } from 'Entities/QueryLog';
-import QueryLogConfig, { IQueryLogConfig } from 'Entities/QueryLogConfig';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class LogApi {
- static async queryLog(older_than?: string, offset?: number, limit?: number, search?: string, response_status?: string): Promise {
- const queryParams = {
- older_than: older_than,
- offset: offset,
- limit: limit,
- search: search,
- response_status: response_status,
- }
- return await fetch(`/control/querylog?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async queryLogConfig(querylogconfig: IQueryLogConfig): Promise {
- const haveError: string[] = [];
- const querylogconfigValid = new QueryLogConfig(querylogconfig);
- haveError.push(...querylogconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/querylog_config`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(querylogconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async queryLogInfo(): Promise {
- return await fetch(`/control/querylog_info`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async querylogClear(): Promise {
- return await fetch(`/control/querylog_clear`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/mobileconfig.ts b/client2/src/lib/apis/mobileconfig.ts
deleted file mode 100644
index 5abeffa0..00000000
--- a/client2/src/lib/apis/mobileconfig.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import qs from 'qs';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class MobileconfigApi {
- static async mobileConfigDoH(host?: string, client_id?: string): Promise {
- const queryParams = {
- host: host,
- client_id: client_id,
- }
- return await fetch(`/control/apple/doh.mobileconfig?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async mobileConfigDoT(host?: string, client_id?: string): Promise {
- const queryParams = {
- host: host,
- client_id: client_id,
- }
- return await fetch(`/control/apple/dot.mobileconfig?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/parental.ts b/client2/src/lib/apis/parental.ts
deleted file mode 100644
index 61f693f5..00000000
--- a/client2/src/lib/apis/parental.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class ParentalApi {
- static async parentalDisable(): Promise {
- return await fetch(`/control/parental/disable`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async parentalEnable(data: string): Promise {
- const params = String(data);
- return await fetch(`/control/parental/enable`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'text/plain',
- },
- body: params,
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async parentalStatus(): Promise {
- return await fetch(`/control/parental/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/rewrite.ts b/client2/src/lib/apis/rewrite.ts
deleted file mode 100644
index eded5c97..00000000
--- a/client2/src/lib/apis/rewrite.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import RewriteEntry, { IRewriteEntry } from 'Entities/RewriteEntry';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class RewriteApi {
- static async rewriteAdd(rewriteentry: IRewriteEntry): Promise {
- const haveError: string[] = [];
- const rewriteentryValid = new RewriteEntry(rewriteentry);
- haveError.push(...rewriteentryValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/rewrite/add`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(rewriteentryValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async rewriteDelete(rewriteentry: IRewriteEntry): Promise {
- const haveError: string[] = [];
- const rewriteentryValid = new RewriteEntry(rewriteentry);
- haveError.push(...rewriteentryValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/rewrite/delete`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(rewriteentryValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async rewriteList(): Promise {
- return await fetch(`/control/rewrite/list`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/safebrowsing.ts b/client2/src/lib/apis/safebrowsing.ts
deleted file mode 100644
index 9d82a5a1..00000000
--- a/client2/src/lib/apis/safebrowsing.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class SafebrowsingApi {
- static async safebrowsingDisable(): Promise {
- return await fetch(`/control/safebrowsing/disable`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async safebrowsingEnable(): Promise {
- return await fetch(`/control/safebrowsing/enable`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async safebrowsingStatus(): Promise {
- return await fetch(`/control/safebrowsing/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/safesearch.ts b/client2/src/lib/apis/safesearch.ts
deleted file mode 100644
index e36e79f9..00000000
--- a/client2/src/lib/apis/safesearch.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class SafesearchApi {
- static async safesearchDisable(): Promise {
- return await fetch(`/control/safesearch/disable`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async safesearchEnable(): Promise {
- return await fetch(`/control/safesearch/enable`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async safesearchStatus(): Promise {
- return await fetch(`/control/safesearch/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/stats.ts b/client2/src/lib/apis/stats.ts
deleted file mode 100644
index 630f17c0..00000000
--- a/client2/src/lib/apis/stats.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import Stats, { IStats } from 'Entities/Stats';
-import StatsConfig, { IStatsConfig } from 'Entities/StatsConfig';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class StatsApi {
- static async stats(): Promise {
- return await fetch(`/control/stats`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async statsConfig(statsconfig: IStatsConfig): Promise {
- const haveError: string[] = [];
- const statsconfigValid = new StatsConfig(statsconfig);
- haveError.push(...statsconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/stats_config`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(statsconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async statsInfo(): Promise {
- return await fetch(`/control/stats_info`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async statsReset(): Promise {
- return await fetch(`/control/stats_reset`, {
- method: 'POST',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.status;
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/apis/tls.ts b/client2/src/lib/apis/tls.ts
deleted file mode 100644
index c9f064d7..00000000
--- a/client2/src/lib/apis/tls.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import TlsConfig, { ITlsConfig } from 'Entities/TlsConfig';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export default class TlsApi {
- static async tlsConfigure(tlsconfig: ITlsConfig): Promise {
- const haveError: string[] = [];
- const tlsconfigValid = new TlsConfig(tlsconfig);
- haveError.push(...tlsconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/tls/configure`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(tlsconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async tlsStatus(): Promise {
- return await fetch(`/control/tls/status`, {
- method: 'GET',
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-
- static async tlsValidate(tlsconfig: ITlsConfig): Promise {
- const haveError: string[] = [];
- const tlsconfigValid = new TlsConfig(tlsconfig);
- haveError.push(...tlsconfigValid.validate());
- if (haveError.length > 0) {
- return Promise.resolve(haveError);
- }
- return await fetch(`/control/tls/validate`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(tlsconfigValid.serialize()),
- }).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return new Error(String(res.status));
- }
- })
- }
-}
diff --git a/client2/src/lib/consts/common.ts b/client2/src/lib/consts/common.ts
deleted file mode 100644
index 668536b0..00000000
--- a/client2/src/lib/consts/common.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export const DEFAULT_NOTIFICATION_DURATION = 5;
-
-export const DHCP_LINK = 'https://github.com/AdguardTeam/AdGuardHome/wiki/DHCP';
diff --git a/client2/src/lib/consts/forms.ts b/client2/src/lib/consts/forms.ts
deleted file mode 100644
index 85b4220d..00000000
--- a/client2/src/lib/consts/forms.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const EMPTY_FIELD_ERROR = 'empty_field';
diff --git a/client2/src/lib/consts/install.ts b/client2/src/lib/consts/install.ts
deleted file mode 100644
index fcc3904f..00000000
--- a/client2/src/lib/consts/install.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const DEFAULT_IP_ADDRESS = '0.0.0.0';
-
-export const DEFAULT_IP_PORT = 80;
-
-export const DEFAULT_DNS_ADDRESS = '0.0.0.0';
-
-export const DEFAULT_DNS_PORT = 53;
diff --git a/client2/src/lib/entities/AccessList.ts b/client2/src/lib/entities/AccessList.ts
deleted file mode 100644
index 7d127465..00000000
--- a/client2/src/lib/entities/AccessList.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IAccessList {
- allowed_clients?: string[];
- blocked_hosts?: string[];
- disallowed_clients?: string[];
-}
-
-export default class AccessList {
- readonly _allowed_clients: string[] | undefined;
-
- /** */
- get allowedClients(): string[] | undefined {
- return this._allowed_clients;
- }
-
- readonly _blocked_hosts: string[] | undefined;
-
- /** */
- get blockedHosts(): string[] | undefined {
- return this._blocked_hosts;
- }
-
- readonly _disallowed_clients: string[] | undefined;
-
- /** */
- get disallowedClients(): string[] | undefined {
- return this._disallowed_clients;
- }
-
- constructor(props: IAccessList) {
- if (props.allowed_clients) {
- this._allowed_clients = props.allowed_clients;
- }
- if (props.blocked_hosts) {
- this._blocked_hosts = props.blocked_hosts;
- }
- if (props.disallowed_clients) {
- this._disallowed_clients = props.disallowed_clients;
- }
- }
-
- serialize(): IAccessList {
- const data: IAccessList = {
- };
- if (typeof this._allowed_clients !== 'undefined') {
- data.allowed_clients = this._allowed_clients;
- }
- if (typeof this._blocked_hosts !== 'undefined') {
- data.blocked_hosts = this._blocked_hosts;
- }
- if (typeof this._disallowed_clients !== 'undefined') {
- data.disallowed_clients = this._disallowed_clients;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- allowed_clients: !this._allowed_clients ? true : this._allowed_clients.reduce((result, p) => result && typeof p === 'string', true),
- disallowed_clients: !this._disallowed_clients ? true : this._disallowed_clients.reduce((result, p) => result && typeof p === 'string', true),
- blocked_hosts: !this._blocked_hosts ? true : this._blocked_hosts.reduce((result, p) => result && typeof p === 'string', true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): AccessList {
- return new AccessList({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/AccessListResponse.ts b/client2/src/lib/entities/AccessListResponse.ts
deleted file mode 100644
index c4443f0a..00000000
--- a/client2/src/lib/entities/AccessListResponse.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import AccessList, { IAccessList } from './AccessList';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export type IAccessListResponse = IAccessList;
-export default AccessList;
diff --git a/client2/src/lib/entities/AccessSetRequest.ts b/client2/src/lib/entities/AccessSetRequest.ts
deleted file mode 100644
index 45ebbab1..00000000
--- a/client2/src/lib/entities/AccessSetRequest.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import AccessList, { IAccessList } from './AccessList';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export type IAccessSetRequest = IAccessList;
-export default AccessList;
diff --git a/client2/src/lib/entities/AddUrlRequest.ts b/client2/src/lib/entities/AddUrlRequest.ts
deleted file mode 100644
index 076dd4d2..00000000
--- a/client2/src/lib/entities/AddUrlRequest.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IAddUrlRequest {
- name?: string;
- url?: string;
- whitelist?: boolean;
-}
-
-export default class AddUrlRequest {
- readonly _name: string | undefined;
-
- get name(): string | undefined {
- return this._name;
- }
-
- readonly _url: string | undefined;
-
- /**
- * Description: URL or an absolute path to the file containing filtering rules.
- *
- * Example: https://filters.adtidy.org/windows/filters/15.txt
- */
- get url(): string | undefined {
- return this._url;
- }
-
- readonly _whitelist: boolean | undefined;
-
- get whitelist(): boolean | undefined {
- return this._whitelist;
- }
-
- constructor(props: IAddUrlRequest) {
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- if (typeof props.url === 'string') {
- this._url = props.url.trim();
- }
- if (typeof props.whitelist === 'boolean') {
- this._whitelist = props.whitelist;
- }
- }
-
- serialize(): IAddUrlRequest {
- const data: IAddUrlRequest = {
- };
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- if (typeof this._url !== 'undefined') {
- data.url = this._url;
- }
- if (typeof this._whitelist !== 'undefined') {
- data.whitelist = this._whitelist;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- url: !this._url ? true : typeof this._url === 'string' && !this._url ? true : this._url,
- whitelist: !this._whitelist ? true : typeof this._whitelist === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): AddUrlRequest {
- return new AddUrlRequest({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/AddressInfo.ts b/client2/src/lib/entities/AddressInfo.ts
deleted file mode 100644
index 1afdecb4..00000000
--- a/client2/src/lib/entities/AddressInfo.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IAddressInfo {
- ip: string;
- port: number;
-}
-
-export default class AddressInfo {
- readonly _ip: string;
-
- /**
- * Description: undefined
- * Example: 127.0.0.1
- */
- get ip(): string {
- return this._ip;
- }
-
- static ipValidate(ip: string): boolean {
- return typeof ip === 'string' && !!ip.trim();
- }
-
- readonly _port: number;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get port(): number {
- return this._port;
- }
-
- static portValidate(port: number): boolean {
- return typeof port === 'number';
- }
-
- constructor(props: IAddressInfo) {
- this._ip = props.ip.trim();
- this._port = props.port;
- }
-
- serialize(): IAddressInfo {
- const data: IAddressInfo = {
- ip: this._ip,
- port: this._port,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ip: typeof this._ip === 'string' && !this._ip ? true : this._ip,
- port: typeof this._port === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): AddressInfo {
- return new AddressInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/AddressInfoBeta.ts b/client2/src/lib/entities/AddressInfoBeta.ts
deleted file mode 100644
index 8b5073a3..00000000
--- a/client2/src/lib/entities/AddressInfoBeta.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IAddressInfoBeta {
- ip: string[];
- port: number;
-}
-
-export default class AddressInfoBeta {
- readonly _ip: string[];
-
- /**
- * Description: undefined
- * Example: 127.0.0.1
- */
- get ip(): string[] {
- return this._ip;
- }
-
- static get ipMinItems() {
- return 1;
- }
-
- static ipValidate(ip: string[]): boolean {
- return ip.reduce((result, p) => result && (typeof p === 'string' && !!p.trim()), true);
- }
-
- readonly _port: number;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get port(): number {
- return this._port;
- }
-
- static portValidate(port: number): boolean {
- return typeof port === 'number';
- }
-
- constructor(props: IAddressInfoBeta) {
- this._ip = props.ip;
- this._port = props.port;
- }
-
- serialize(): IAddressInfoBeta {
- const data: IAddressInfoBeta = {
- ip: this._ip,
- port: this._port,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ip: this._ip.reduce((result, p) => result && typeof p === 'string', true),
- port: typeof this._port === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): AddressInfoBeta {
- return new AddressInfoBeta({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/AddressesInfo.ts b/client2/src/lib/entities/AddressesInfo.ts
deleted file mode 100644
index af864b17..00000000
--- a/client2/src/lib/entities/AddressesInfo.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import NetInterfaces, { INetInterfaces } from './NetInterfaces';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IAddressesInfo {
- dns_port: number;
- interfaces: INetInterfaces;
- web_port: number;
-}
-
-export default class AddressesInfo {
- readonly _dns_port: number;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get dnsPort(): number {
- return this._dns_port;
- }
-
- static dnsPortValidate(dnsPort: number): boolean {
- return typeof dnsPort === 'number';
- }
-
- readonly _interfaces: NetInterfaces;
-
- get interfaces(): NetInterfaces {
- return this._interfaces;
- }
-
- readonly _web_port: number;
-
- /**
- * Description: undefined
- * Example: 80
- */
- get webPort(): number {
- return this._web_port;
- }
-
- static webPortValidate(webPort: number): boolean {
- return typeof webPort === 'number';
- }
-
- constructor(props: IAddressesInfo) {
- this._dns_port = props.dns_port;
- this._interfaces = new NetInterfaces(props.interfaces);
- this._web_port = props.web_port;
- }
-
- serialize(): IAddressesInfo {
- const data: IAddressesInfo = {
- dns_port: this._dns_port,
- interfaces: this._interfaces.serialize(),
- web_port: this._web_port,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns_port: typeof this._dns_port === 'number',
- web_port: typeof this._web_port === 'number',
- interfaces: this._interfaces.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): AddressesInfo {
- return new AddressesInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/AddressesInfoBeta.ts b/client2/src/lib/entities/AddressesInfoBeta.ts
deleted file mode 100644
index 603adafe..00000000
--- a/client2/src/lib/entities/AddressesInfoBeta.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import NetInterface, { INetInterface } from './NetInterface';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IAddressesInfoBeta {
- dns_port: number;
- interfaces: INetInterface[];
- web_port: number;
-}
-
-export default class AddressesInfoBeta {
- readonly _dns_port: number;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get dnsPort(): number {
- return this._dns_port;
- }
-
- static dnsPortValidate(dnsPort: number): boolean {
- return typeof dnsPort === 'number';
- }
-
- readonly _interfaces: NetInterface[];
-
- /** */
- get interfaces(): NetInterface[] {
- return this._interfaces;
- }
-
- readonly _web_port: number;
-
- /**
- * Description: undefined
- * Example: 80
- */
- get webPort(): number {
- return this._web_port;
- }
-
- static webPortValidate(webPort: number): boolean {
- return typeof webPort === 'number';
- }
-
- constructor(props: IAddressesInfoBeta) {
- this._dns_port = props.dns_port;
- this._interfaces = props.interfaces.map((p) => new NetInterface(p));
- this._web_port = props.web_port;
- }
-
- serialize(): IAddressesInfoBeta {
- const data: IAddressesInfoBeta = {
- dns_port: this._dns_port,
- interfaces: this._interfaces.map((p) => p.serialize()),
- web_port: this._web_port,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns_port: typeof this._dns_port === 'number',
- web_port: typeof this._web_port === 'number',
- interfaces: this._interfaces.reduce((result, p) => result && p.validate().length === 0, true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): AddressesInfoBeta {
- return new AddressesInfoBeta({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/BlockedServicesArray.ts b/client2/src/lib/entities/BlockedServicesArray.ts
deleted file mode 100644
index 6c175abe..00000000
--- a/client2/src/lib/entities/BlockedServicesArray.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IBlockedServicesArray {
-}
-
-export default class BlockedServicesArray {
- constructor(props: IBlockedServicesArray) {
- }
-
- serialize(): IBlockedServicesArray {
- const data: IBlockedServicesArray = {
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): BlockedServicesArray {
- return new BlockedServicesArray({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigRequest.ts b/client2/src/lib/entities/CheckConfigRequest.ts
deleted file mode 100644
index dba0f741..00000000
--- a/client2/src/lib/entities/CheckConfigRequest.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import CheckConfigRequestInfo, { ICheckConfigRequestInfo } from './CheckConfigRequestInfo';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigRequest {
- dns?: ICheckConfigRequestInfo;
- set_static_ip?: boolean;
- web?: ICheckConfigRequestInfo;
-}
-
-export default class CheckConfigRequest {
- readonly _dns: CheckConfigRequestInfo | undefined;
-
- get dns(): CheckConfigRequestInfo | undefined {
- return this._dns;
- }
-
- readonly _set_static_ip: boolean | undefined;
-
- get setStaticIp(): boolean | undefined {
- return this._set_static_ip;
- }
-
- readonly _web: CheckConfigRequestInfo | undefined;
-
- get web(): CheckConfigRequestInfo | undefined {
- return this._web;
- }
-
- constructor(props: ICheckConfigRequest) {
- if (props.dns) {
- this._dns = new CheckConfigRequestInfo(props.dns);
- }
- if (typeof props.set_static_ip === 'boolean') {
- this._set_static_ip = props.set_static_ip;
- }
- if (props.web) {
- this._web = new CheckConfigRequestInfo(props.web);
- }
- }
-
- serialize(): ICheckConfigRequest {
- const data: ICheckConfigRequest = {
- };
- if (typeof this._dns !== 'undefined') {
- data.dns = this._dns.serialize();
- }
- if (typeof this._set_static_ip !== 'undefined') {
- data.set_static_ip = this._set_static_ip;
- }
- if (typeof this._web !== 'undefined') {
- data.web = this._web.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns: !this._dns ? true : this._dns.validate().length === 0,
- web: !this._web ? true : this._web.validate().length === 0,
- set_static_ip: !this._set_static_ip ? true : typeof this._set_static_ip === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigRequest {
- return new CheckConfigRequest({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigRequestBeta.ts b/client2/src/lib/entities/CheckConfigRequestBeta.ts
deleted file mode 100644
index b34c855f..00000000
--- a/client2/src/lib/entities/CheckConfigRequestBeta.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import CheckConfigRequestInfoBeta, { ICheckConfigRequestInfoBeta } from './CheckConfigRequestInfoBeta';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigRequestBeta {
- dns?: ICheckConfigRequestInfoBeta;
- set_static_ip?: boolean;
- web?: ICheckConfigRequestInfoBeta;
-}
-
-export default class CheckConfigRequestBeta {
- readonly _dns: CheckConfigRequestInfoBeta | undefined;
-
- get dns(): CheckConfigRequestInfoBeta | undefined {
- return this._dns;
- }
-
- readonly _set_static_ip: boolean | undefined;
-
- get setStaticIp(): boolean | undefined {
- return this._set_static_ip;
- }
-
- readonly _web: CheckConfigRequestInfoBeta | undefined;
-
- get web(): CheckConfigRequestInfoBeta | undefined {
- return this._web;
- }
-
- constructor(props: ICheckConfigRequestBeta) {
- if (props.dns) {
- this._dns = new CheckConfigRequestInfoBeta(props.dns);
- }
- if (typeof props.set_static_ip === 'boolean') {
- this._set_static_ip = props.set_static_ip;
- }
- if (props.web) {
- this._web = new CheckConfigRequestInfoBeta(props.web);
- }
- }
-
- serialize(): ICheckConfigRequestBeta {
- const data: ICheckConfigRequestBeta = {
- };
- if (typeof this._dns !== 'undefined') {
- data.dns = this._dns.serialize();
- }
- if (typeof this._set_static_ip !== 'undefined') {
- data.set_static_ip = this._set_static_ip;
- }
- if (typeof this._web !== 'undefined') {
- data.web = this._web.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns: !this._dns ? true : this._dns.validate().length === 0,
- web: !this._web ? true : this._web.validate().length === 0,
- set_static_ip: !this._set_static_ip ? true : typeof this._set_static_ip === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigRequestBeta {
- return new CheckConfigRequestBeta({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigRequestInfo.ts b/client2/src/lib/entities/CheckConfigRequestInfo.ts
deleted file mode 100644
index c8da0cf3..00000000
--- a/client2/src/lib/entities/CheckConfigRequestInfo.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigRequestInfo {
- autofix?: boolean;
- ip?: string;
- port?: number;
-}
-
-export default class CheckConfigRequestInfo {
- readonly _autofix: boolean | undefined;
-
- get autofix(): boolean | undefined {
- return this._autofix;
- }
-
- readonly _ip: string | undefined;
-
- /**
- * Description: undefined
- * Example: 127.0.0.1
- */
- get ip(): string | undefined {
- return this._ip;
- }
-
- readonly _port: number | undefined;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get port(): number | undefined {
- return this._port;
- }
-
- constructor(props: ICheckConfigRequestInfo) {
- if (typeof props.autofix === 'boolean') {
- this._autofix = props.autofix;
- }
- if (typeof props.ip === 'string') {
- this._ip = props.ip.trim();
- }
- if (typeof props.port === 'number') {
- this._port = props.port;
- }
- }
-
- serialize(): ICheckConfigRequestInfo {
- const data: ICheckConfigRequestInfo = {
- };
- if (typeof this._autofix !== 'undefined') {
- data.autofix = this._autofix;
- }
- if (typeof this._ip !== 'undefined') {
- data.ip = this._ip;
- }
- if (typeof this._port !== 'undefined') {
- data.port = this._port;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ip: !this._ip ? true : typeof this._ip === 'string' && !this._ip ? true : this._ip,
- port: !this._port ? true : typeof this._port === 'number',
- autofix: !this._autofix ? true : typeof this._autofix === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigRequestInfo {
- return new CheckConfigRequestInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigRequestInfoBeta.ts b/client2/src/lib/entities/CheckConfigRequestInfoBeta.ts
deleted file mode 100644
index d086e771..00000000
--- a/client2/src/lib/entities/CheckConfigRequestInfoBeta.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigRequestInfoBeta {
- autofix?: boolean;
- ip?: string[];
- port?: number;
-}
-
-export default class CheckConfigRequestInfoBeta {
- readonly _autofix: boolean | undefined;
-
- get autofix(): boolean | undefined {
- return this._autofix;
- }
-
- readonly _ip: string[] | undefined;
-
- /**
- * Description: undefined
- * Example: 127.0.0.1
- */
- get ip(): string[] | undefined {
- return this._ip;
- }
-
- static get ipMinItems() {
- return 1;
- }
-
- readonly _port: number | undefined;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get port(): number | undefined {
- return this._port;
- }
-
- constructor(props: ICheckConfigRequestInfoBeta) {
- if (typeof props.autofix === 'boolean') {
- this._autofix = props.autofix;
- }
- if (props.ip) {
- this._ip = props.ip;
- }
- if (typeof props.port === 'number') {
- this._port = props.port;
- }
- }
-
- serialize(): ICheckConfigRequestInfoBeta {
- const data: ICheckConfigRequestInfoBeta = {
- };
- if (typeof this._autofix !== 'undefined') {
- data.autofix = this._autofix;
- }
- if (typeof this._ip !== 'undefined') {
- data.ip = this._ip;
- }
- if (typeof this._port !== 'undefined') {
- data.port = this._port;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ip: !this._ip ? true : this._ip.reduce((result, p) => result && typeof p === 'string', true),
- port: !this._port ? true : typeof this._port === 'number',
- autofix: !this._autofix ? true : typeof this._autofix === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigRequestInfoBeta {
- return new CheckConfigRequestInfoBeta({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigResponse.ts b/client2/src/lib/entities/CheckConfigResponse.ts
deleted file mode 100644
index 74d45519..00000000
--- a/client2/src/lib/entities/CheckConfigResponse.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import CheckConfigResponseInfo, { ICheckConfigResponseInfo } from './CheckConfigResponseInfo';
-import CheckConfigStaticIpInfo, { ICheckConfigStaticIpInfo } from './CheckConfigStaticIpInfo';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigResponse {
- dns: ICheckConfigResponseInfo;
- static_ip: ICheckConfigStaticIpInfo;
- web: ICheckConfigResponseInfo;
-}
-
-export default class CheckConfigResponse {
- readonly _dns: CheckConfigResponseInfo;
-
- get dns(): CheckConfigResponseInfo {
- return this._dns;
- }
-
- readonly _static_ip: CheckConfigStaticIpInfo;
-
- get staticIp(): CheckConfigStaticIpInfo {
- return this._static_ip;
- }
-
- readonly _web: CheckConfigResponseInfo;
-
- get web(): CheckConfigResponseInfo {
- return this._web;
- }
-
- constructor(props: ICheckConfigResponse) {
- this._dns = new CheckConfigResponseInfo(props.dns);
- this._static_ip = new CheckConfigStaticIpInfo(props.static_ip);
- this._web = new CheckConfigResponseInfo(props.web);
- }
-
- serialize(): ICheckConfigResponse {
- const data: ICheckConfigResponse = {
- dns: this._dns.serialize(),
- static_ip: this._static_ip.serialize(),
- web: this._web.serialize(),
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns: this._dns.validate().length === 0,
- web: this._web.validate().length === 0,
- static_ip: this._static_ip.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigResponse {
- return new CheckConfigResponse({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigResponseInfo.ts b/client2/src/lib/entities/CheckConfigResponseInfo.ts
deleted file mode 100644
index 09d9d2a9..00000000
--- a/client2/src/lib/entities/CheckConfigResponseInfo.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigResponseInfo {
- can_autofix: boolean;
- status: string;
-}
-
-export default class CheckConfigResponseInfo {
- readonly _can_autofix: boolean;
-
- get canAutofix(): boolean {
- return this._can_autofix;
- }
-
- static canAutofixValidate(canAutofix: boolean): boolean {
- return typeof canAutofix === 'boolean';
- }
-
- readonly _status: string;
-
- get status(): string {
- return this._status;
- }
-
- static statusValidate(status: string): boolean {
- return typeof status === 'string' && !!status.trim();
- }
-
- constructor(props: ICheckConfigResponseInfo) {
- this._can_autofix = props.can_autofix;
- this._status = props.status.trim();
- }
-
- serialize(): ICheckConfigResponseInfo {
- const data: ICheckConfigResponseInfo = {
- can_autofix: this._can_autofix,
- status: this._status,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- status: typeof this._status === 'string' && !this._status ? true : this._status,
- can_autofix: typeof this._can_autofix === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigResponseInfo {
- return new CheckConfigResponseInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigStaticIpInfo.ts b/client2/src/lib/entities/CheckConfigStaticIpInfo.ts
deleted file mode 100644
index b7c7a34c..00000000
--- a/client2/src/lib/entities/CheckConfigStaticIpInfo.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { CheckConfigStaticIpInfoStatic } from './CheckConfigStaticIpInfoStatic';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ICheckConfigStaticIpInfo {
- error?: string;
- ip?: string;
- static?: CheckConfigStaticIpInfoStatic;
-}
-
-export default class CheckConfigStaticIpInfo {
- readonly _error: string | undefined;
-
- /** */
- get error(): string | undefined {
- return this._error;
- }
-
- readonly _ip: string | undefined;
-
- /**
- * Description: Current dynamic IP address. Set if static=no
- * Example: 192.168.1.1
- */
- get ip(): string | undefined {
- return this._ip;
- }
-
- readonly _static: CheckConfigStaticIpInfoStatic | undefined;
-
- get static(): CheckConfigStaticIpInfoStatic | undefined {
- return this._static;
- }
-
- constructor(props: ICheckConfigStaticIpInfo) {
- if (typeof props.error === 'string') {
- this._error = props.error.trim();
- }
- if (typeof props.ip === 'string') {
- this._ip = props.ip.trim();
- }
- if (props.static) {
- this._static = props.static;
- }
- }
-
- serialize(): ICheckConfigStaticIpInfo {
- const data: ICheckConfigStaticIpInfo = {
- };
- if (typeof this._error !== 'undefined') {
- data.error = this._error;
- }
- if (typeof this._ip !== 'undefined') {
- data.ip = this._ip;
- }
- if (typeof this._static !== 'undefined') {
- data.static = this._static;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ip: !this._ip ? true : typeof this._ip === 'string' && !this._ip ? true : this._ip,
- error: !this._error ? true : typeof this._error === 'string' && !this._error ? true : this._error,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): CheckConfigStaticIpInfo {
- return new CheckConfigStaticIpInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/CheckConfigStaticIpInfoStatic.ts b/client2/src/lib/entities/CheckConfigStaticIpInfoStatic.ts
deleted file mode 100644
index 9609e1ec..00000000
--- a/client2/src/lib/entities/CheckConfigStaticIpInfoStatic.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export enum CheckConfigStaticIpInfoStatic {
- YES = 'yes',
- NO = 'no',
- ERROR = 'error'
-}
diff --git a/client2/src/lib/entities/Client.ts b/client2/src/lib/entities/Client.ts
deleted file mode 100644
index c86a9d8f..00000000
--- a/client2/src/lib/entities/Client.ts
+++ /dev/null
@@ -1,176 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClient {
- blocked_services?: string[];
- filtering_enabled?: boolean;
- ids?: string[];
- name?: string;
- parental_enabled?: boolean;
- safebrowsing_enabled?: boolean;
- safesearch_enabled?: boolean;
- upstreams?: string[];
- use_global_blocked_services?: boolean;
- use_global_settings?: boolean;
-}
-
-export default class Client {
- readonly _blocked_services: string[] | undefined;
-
- get blockedServices(): string[] | undefined {
- return this._blocked_services;
- }
-
- readonly _filtering_enabled: boolean | undefined;
-
- get filteringEnabled(): boolean | undefined {
- return this._filtering_enabled;
- }
-
- readonly _ids: string[] | undefined;
-
- /** */
- get ids(): string[] | undefined {
- return this._ids;
- }
-
- readonly _name: string | undefined;
-
- /**
- * Description: Name
- * Example: localhost
- */
- get name(): string | undefined {
- return this._name;
- }
-
- readonly _parental_enabled: boolean | undefined;
-
- get parentalEnabled(): boolean | undefined {
- return this._parental_enabled;
- }
-
- readonly _safebrowsing_enabled: boolean | undefined;
-
- get safebrowsingEnabled(): boolean | undefined {
- return this._safebrowsing_enabled;
- }
-
- readonly _safesearch_enabled: boolean | undefined;
-
- get safesearchEnabled(): boolean | undefined {
- return this._safesearch_enabled;
- }
-
- readonly _upstreams: string[] | undefined;
-
- get upstreams(): string[] | undefined {
- return this._upstreams;
- }
-
- readonly _use_global_blocked_services: boolean | undefined;
-
- get useGlobalBlockedServices(): boolean | undefined {
- return this._use_global_blocked_services;
- }
-
- readonly _use_global_settings: boolean | undefined;
-
- get useGlobalSettings(): boolean | undefined {
- return this._use_global_settings;
- }
-
- constructor(props: IClient) {
- if (props.blocked_services) {
- this._blocked_services = props.blocked_services;
- }
- if (typeof props.filtering_enabled === 'boolean') {
- this._filtering_enabled = props.filtering_enabled;
- }
- if (props.ids) {
- this._ids = props.ids;
- }
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- if (typeof props.parental_enabled === 'boolean') {
- this._parental_enabled = props.parental_enabled;
- }
- if (typeof props.safebrowsing_enabled === 'boolean') {
- this._safebrowsing_enabled = props.safebrowsing_enabled;
- }
- if (typeof props.safesearch_enabled === 'boolean') {
- this._safesearch_enabled = props.safesearch_enabled;
- }
- if (props.upstreams) {
- this._upstreams = props.upstreams;
- }
- if (typeof props.use_global_blocked_services === 'boolean') {
- this._use_global_blocked_services = props.use_global_blocked_services;
- }
- if (typeof props.use_global_settings === 'boolean') {
- this._use_global_settings = props.use_global_settings;
- }
- }
-
- serialize(): IClient {
- const data: IClient = {
- };
- if (typeof this._blocked_services !== 'undefined') {
- data.blocked_services = this._blocked_services;
- }
- if (typeof this._filtering_enabled !== 'undefined') {
- data.filtering_enabled = this._filtering_enabled;
- }
- if (typeof this._ids !== 'undefined') {
- data.ids = this._ids;
- }
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- if (typeof this._parental_enabled !== 'undefined') {
- data.parental_enabled = this._parental_enabled;
- }
- if (typeof this._safebrowsing_enabled !== 'undefined') {
- data.safebrowsing_enabled = this._safebrowsing_enabled;
- }
- if (typeof this._safesearch_enabled !== 'undefined') {
- data.safesearch_enabled = this._safesearch_enabled;
- }
- if (typeof this._upstreams !== 'undefined') {
- data.upstreams = this._upstreams;
- }
- if (typeof this._use_global_blocked_services !== 'undefined') {
- data.use_global_blocked_services = this._use_global_blocked_services;
- }
- if (typeof this._use_global_settings !== 'undefined') {
- data.use_global_settings = this._use_global_settings;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- ids: !this._ids ? true : this._ids.reduce((result, p) => result && typeof p === 'string', true),
- use_global_settings: !this._use_global_settings ? true : typeof this._use_global_settings === 'boolean',
- filtering_enabled: !this._filtering_enabled ? true : typeof this._filtering_enabled === 'boolean',
- parental_enabled: !this._parental_enabled ? true : typeof this._parental_enabled === 'boolean',
- safebrowsing_enabled: !this._safebrowsing_enabled ? true : typeof this._safebrowsing_enabled === 'boolean',
- safesearch_enabled: !this._safesearch_enabled ? true : typeof this._safesearch_enabled === 'boolean',
- use_global_blocked_services: !this._use_global_blocked_services ? true : typeof this._use_global_blocked_services === 'boolean',
- blocked_services: !this._blocked_services ? true : this._blocked_services.reduce((result, p) => result && typeof p === 'string', true),
- upstreams: !this._upstreams ? true : this._upstreams.reduce((result, p) => result && typeof p === 'string', true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): Client {
- return new Client({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientAuto.ts b/client2/src/lib/entities/ClientAuto.ts
deleted file mode 100644
index 2696a4c2..00000000
--- a/client2/src/lib/entities/ClientAuto.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientAuto {
- ip?: string;
- name?: string;
- source?: string;
-}
-
-export default class ClientAuto {
- readonly _ip: string | undefined;
-
- /**
- * Description: IP address
- * Example: 127.0.0.1
- */
- get ip(): string | undefined {
- return this._ip;
- }
-
- readonly _name: string | undefined;
-
- /**
- * Description: Name
- * Example: localhost
- */
- get name(): string | undefined {
- return this._name;
- }
-
- readonly _source: string | undefined;
-
- /**
- * Description: The source of this information
- * Example: etc/hosts
- */
- get source(): string | undefined {
- return this._source;
- }
-
- constructor(props: IClientAuto) {
- if (typeof props.ip === 'string') {
- this._ip = props.ip.trim();
- }
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- if (typeof props.source === 'string') {
- this._source = props.source.trim();
- }
- }
-
- serialize(): IClientAuto {
- const data: IClientAuto = {
- };
- if (typeof this._ip !== 'undefined') {
- data.ip = this._ip;
- }
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- if (typeof this._source !== 'undefined') {
- data.source = this._source;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ip: !this._ip ? true : typeof this._ip === 'string' && !this._ip ? true : this._ip,
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- source: !this._source ? true : typeof this._source === 'string' && !this._source ? true : this._source,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientAuto {
- return new ClientAuto({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientDelete.ts b/client2/src/lib/entities/ClientDelete.ts
deleted file mode 100644
index 6a009c03..00000000
--- a/client2/src/lib/entities/ClientDelete.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientDelete {
- name?: string;
-}
-
-export default class ClientDelete {
- readonly _name: string | undefined;
-
- get name(): string | undefined {
- return this._name;
- }
-
- constructor(props: IClientDelete) {
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- }
-
- serialize(): IClientDelete {
- const data: IClientDelete = {
- };
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientDelete {
- return new ClientDelete({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientFindSubEntry.ts b/client2/src/lib/entities/ClientFindSubEntry.ts
deleted file mode 100644
index 8d067549..00000000
--- a/client2/src/lib/entities/ClientFindSubEntry.ts
+++ /dev/null
@@ -1,222 +0,0 @@
-import WhoisInfo, { IWhoisInfo } from './WhoisInfo';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientFindSubEntry {
- blocked_services?: string[];
- disallowed?: boolean;
- disallowed_rule?: string;
- filtering_enabled?: boolean;
- ids?: string[];
- name?: string;
- parental_enabled?: boolean;
- safebrowsing_enabled?: boolean;
- safesearch_enabled?: boolean;
- upstreams?: string[];
- use_global_blocked_services?: boolean;
- use_global_settings?: boolean;
- whois_info?: IWhoisInfo;
-}
-
-export default class ClientFindSubEntry {
- readonly _blocked_services: string[] | undefined;
-
- get blockedServices(): string[] | undefined {
- return this._blocked_services;
- }
-
- readonly _disallowed: boolean | undefined;
-
- /** */
- get disallowed(): boolean | undefined {
- return this._disallowed;
- }
-
- readonly _disallowed_rule: string | undefined;
-
- /** */
- get disallowedRule(): string | undefined {
- return this._disallowed_rule;
- }
-
- readonly _filtering_enabled: boolean | undefined;
-
- get filteringEnabled(): boolean | undefined {
- return this._filtering_enabled;
- }
-
- readonly _ids: string[] | undefined;
-
- /** */
- get ids(): string[] | undefined {
- return this._ids;
- }
-
- readonly _name: string | undefined;
-
- /**
- * Description: Name
- * Example: localhost
- */
- get name(): string | undefined {
- return this._name;
- }
-
- readonly _parental_enabled: boolean | undefined;
-
- get parentalEnabled(): boolean | undefined {
- return this._parental_enabled;
- }
-
- readonly _safebrowsing_enabled: boolean | undefined;
-
- get safebrowsingEnabled(): boolean | undefined {
- return this._safebrowsing_enabled;
- }
-
- readonly _safesearch_enabled: boolean | undefined;
-
- get safesearchEnabled(): boolean | undefined {
- return this._safesearch_enabled;
- }
-
- readonly _upstreams: string[] | undefined;
-
- get upstreams(): string[] | undefined {
- return this._upstreams;
- }
-
- readonly _use_global_blocked_services: boolean | undefined;
-
- get useGlobalBlockedServices(): boolean | undefined {
- return this._use_global_blocked_services;
- }
-
- readonly _use_global_settings: boolean | undefined;
-
- get useGlobalSettings(): boolean | undefined {
- return this._use_global_settings;
- }
-
- readonly _whois_info: WhoisInfo | undefined;
-
- get whoisInfo(): WhoisInfo | undefined {
- return this._whois_info;
- }
-
- constructor(props: IClientFindSubEntry) {
- if (props.blocked_services) {
- this._blocked_services = props.blocked_services;
- }
- if (typeof props.disallowed === 'boolean') {
- this._disallowed = props.disallowed;
- }
- if (typeof props.disallowed_rule === 'string') {
- this._disallowed_rule = props.disallowed_rule.trim();
- }
- if (typeof props.filtering_enabled === 'boolean') {
- this._filtering_enabled = props.filtering_enabled;
- }
- if (props.ids) {
- this._ids = props.ids;
- }
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- if (typeof props.parental_enabled === 'boolean') {
- this._parental_enabled = props.parental_enabled;
- }
- if (typeof props.safebrowsing_enabled === 'boolean') {
- this._safebrowsing_enabled = props.safebrowsing_enabled;
- }
- if (typeof props.safesearch_enabled === 'boolean') {
- this._safesearch_enabled = props.safesearch_enabled;
- }
- if (props.upstreams) {
- this._upstreams = props.upstreams;
- }
- if (typeof props.use_global_blocked_services === 'boolean') {
- this._use_global_blocked_services = props.use_global_blocked_services;
- }
- if (typeof props.use_global_settings === 'boolean') {
- this._use_global_settings = props.use_global_settings;
- }
- if (props.whois_info) {
- this._whois_info = new WhoisInfo(props.whois_info);
- }
- }
-
- serialize(): IClientFindSubEntry {
- const data: IClientFindSubEntry = {
- };
- if (typeof this._blocked_services !== 'undefined') {
- data.blocked_services = this._blocked_services;
- }
- if (typeof this._disallowed !== 'undefined') {
- data.disallowed = this._disallowed;
- }
- if (typeof this._disallowed_rule !== 'undefined') {
- data.disallowed_rule = this._disallowed_rule;
- }
- if (typeof this._filtering_enabled !== 'undefined') {
- data.filtering_enabled = this._filtering_enabled;
- }
- if (typeof this._ids !== 'undefined') {
- data.ids = this._ids;
- }
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- if (typeof this._parental_enabled !== 'undefined') {
- data.parental_enabled = this._parental_enabled;
- }
- if (typeof this._safebrowsing_enabled !== 'undefined') {
- data.safebrowsing_enabled = this._safebrowsing_enabled;
- }
- if (typeof this._safesearch_enabled !== 'undefined') {
- data.safesearch_enabled = this._safesearch_enabled;
- }
- if (typeof this._upstreams !== 'undefined') {
- data.upstreams = this._upstreams;
- }
- if (typeof this._use_global_blocked_services !== 'undefined') {
- data.use_global_blocked_services = this._use_global_blocked_services;
- }
- if (typeof this._use_global_settings !== 'undefined') {
- data.use_global_settings = this._use_global_settings;
- }
- if (typeof this._whois_info !== 'undefined') {
- data.whois_info = this._whois_info.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- ids: !this._ids ? true : this._ids.reduce((result, p) => result && typeof p === 'string', true),
- use_global_settings: !this._use_global_settings ? true : typeof this._use_global_settings === 'boolean',
- filtering_enabled: !this._filtering_enabled ? true : typeof this._filtering_enabled === 'boolean',
- parental_enabled: !this._parental_enabled ? true : typeof this._parental_enabled === 'boolean',
- safebrowsing_enabled: !this._safebrowsing_enabled ? true : typeof this._safebrowsing_enabled === 'boolean',
- safesearch_enabled: !this._safesearch_enabled ? true : typeof this._safesearch_enabled === 'boolean',
- use_global_blocked_services: !this._use_global_blocked_services ? true : typeof this._use_global_blocked_services === 'boolean',
- blocked_services: !this._blocked_services ? true : this._blocked_services.reduce((result, p) => result && typeof p === 'string', true),
- upstreams: !this._upstreams ? true : this._upstreams.reduce((result, p) => result && typeof p === 'string', true),
- whois_info: !this._whois_info ? true : this._whois_info.validate().length === 0,
- disallowed: !this._disallowed ? true : typeof this._disallowed === 'boolean',
- disallowed_rule: !this._disallowed_rule ? true : typeof this._disallowed_rule === 'string' && !this._disallowed_rule ? true : this._disallowed_rule,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientFindSubEntry {
- return new ClientFindSubEntry({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientUpdate.ts b/client2/src/lib/entities/ClientUpdate.ts
deleted file mode 100644
index 2a817b3a..00000000
--- a/client2/src/lib/entities/ClientUpdate.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import Client, { IClient } from './Client';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientUpdate {
- data?: IClient;
- name?: string;
-}
-
-export default class ClientUpdate {
- readonly _data: Client | undefined;
-
- get data(): Client | undefined {
- return this._data;
- }
-
- readonly _name: string | undefined;
-
- get name(): string | undefined {
- return this._name;
- }
-
- constructor(props: IClientUpdate) {
- if (props.data) {
- this._data = new Client(props.data);
- }
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- }
-
- serialize(): IClientUpdate {
- const data: IClientUpdate = {
- };
- if (typeof this._data !== 'undefined') {
- data.data = this._data.serialize();
- }
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- data: !this._data ? true : this._data.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientUpdate {
- return new ClientUpdate({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/Clients.ts b/client2/src/lib/entities/Clients.ts
deleted file mode 100644
index 8ba5a8e8..00000000
--- a/client2/src/lib/entities/Clients.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import Client, { IClient } from './Client';
-import ClientAuto, { IClientAuto } from './ClientAuto';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClients {
- auto_clients?: IClientAuto[];
- clients?: IClient[];
-}
-
-export default class Clients {
- readonly _auto_clients: ClientAuto[] | undefined;
-
- get autoClients(): ClientAuto[] | undefined {
- return this._auto_clients;
- }
-
- readonly _clients: Client[] | undefined;
-
- get clients(): Client[] | undefined {
- return this._clients;
- }
-
- constructor(props: IClients) {
- if (props.auto_clients) {
- this._auto_clients = props.auto_clients.map((p) => new ClientAuto(p));
- }
- if (props.clients) {
- this._clients = props.clients.map((p) => new Client(p));
- }
- }
-
- serialize(): IClients {
- const data: IClients = {
- };
- if (typeof this._auto_clients !== 'undefined') {
- data.auto_clients = this._auto_clients.map((p) => p.serialize());
- }
- if (typeof this._clients !== 'undefined') {
- data.clients = this._clients.map((p) => p.serialize());
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- clients: !this._clients ? true : this._clients.reduce((result, p) => result && p.validate().length === 0, true),
- auto_clients: !this._auto_clients ? true : this._auto_clients.reduce((result, p) => result && p.validate().length === 0, true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): Clients {
- return new Clients({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientsArray.ts b/client2/src/lib/entities/ClientsArray.ts
deleted file mode 100644
index 774e162b..00000000
--- a/client2/src/lib/entities/ClientsArray.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientsArray {
-}
-
-export default class ClientsArray {
- constructor(props: IClientsArray) {
- }
-
- serialize(): IClientsArray {
- const data: IClientsArray = {
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientsArray {
- return new ClientsArray({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientsAutoArray.ts b/client2/src/lib/entities/ClientsAutoArray.ts
deleted file mode 100644
index 855c9e8a..00000000
--- a/client2/src/lib/entities/ClientsAutoArray.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientsAutoArray {
-}
-
-export default class ClientsAutoArray {
- constructor(props: IClientsAutoArray) {
- }
-
- serialize(): IClientsAutoArray {
- const data: IClientsAutoArray = {
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientsAutoArray {
- return new ClientsAutoArray({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientsFindEntry.ts b/client2/src/lib/entities/ClientsFindEntry.ts
deleted file mode 100644
index 8b220a78..00000000
--- a/client2/src/lib/entities/ClientsFindEntry.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import ClientFindSubEntry, { IClientFindSubEntry } from './ClientFindSubEntry';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientsFindEntry {
- [key: string]: IClientFindSubEntry;
-}
-
-export default class ClientsFindEntry {
- readonly data: Record;
-
- constructor(props: IClientsFindEntry) {
- this.data = Object.entries(props).reduce>((prev, [key, value]) => {
- prev[key] = new ClientFindSubEntry(value!);
- return prev;
- }, {})
- }
-
- serialize(): IClientsFindEntry {
- return Object.entries(this.data).reduce>((prev, [key, value]) => {
- prev[key] = value.serialize();
- return prev;
- }, {})
- }
-
- validate(): string[] {
- return []
- }
-
- update(props: IClientsFindEntry): ClientsFindEntry {
- return new ClientsFindEntry({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ClientsFindResponse.ts b/client2/src/lib/entities/ClientsFindResponse.ts
deleted file mode 100644
index 63685be6..00000000
--- a/client2/src/lib/entities/ClientsFindResponse.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IClientsFindResponse {
-}
-
-export default class ClientsFindResponse {
- constructor(props: IClientsFindResponse) {
- }
-
- serialize(): IClientsFindResponse {
- const data: IClientsFindResponse = {
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ClientsFindResponse {
- return new ClientsFindResponse({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DNSConfig.ts b/client2/src/lib/entities/DNSConfig.ts
deleted file mode 100644
index d56883e5..00000000
--- a/client2/src/lib/entities/DNSConfig.ts
+++ /dev/null
@@ -1,250 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDNSConfig {
- blocking_ipv4?: string;
- blocking_ipv6?: string;
- blocking_mode?: string;
- bootstrap_dns?: string[];
- cache_size?: number;
- cache_ttl_max?: number;
- cache_ttl_min?: number;
- dhcp_available?: boolean;
- dnssec_enabled?: boolean;
- edns_cs_enabled?: boolean;
- protection_enabled?: boolean;
- ratelimit?: number;
- upstream_dns?: string[];
- upstream_dns_file?: string;
- upstream_mode?: any;
-}
-
-export default class DNSConfig {
- readonly _blocking_ipv4: string | undefined;
-
- get blockingIpv4(): string | undefined {
- return this._blocking_ipv4;
- }
-
- readonly _blocking_ipv6: string | undefined;
-
- get blockingIpv6(): string | undefined {
- return this._blocking_ipv6;
- }
-
- readonly _blocking_mode: string | undefined;
-
- get blockingMode(): string | undefined {
- return this._blocking_mode;
- }
-
- readonly _bootstrap_dns: string[] | undefined;
-
- /**
- * Description: Bootstrap servers, port is optional after colon. Empty value will reset it to default values.
- *
- * Example: 8.8.8.8:53,1.1.1.1:53
- */
- get bootstrapDns(): string[] | undefined {
- return this._bootstrap_dns;
- }
-
- readonly _cache_size: number | undefined;
-
- get cacheSize(): number | undefined {
- return this._cache_size;
- }
-
- readonly _cache_ttl_max: number | undefined;
-
- get cacheTtlMax(): number | undefined {
- return this._cache_ttl_max;
- }
-
- readonly _cache_ttl_min: number | undefined;
-
- get cacheTtlMin(): number | undefined {
- return this._cache_ttl_min;
- }
-
- readonly _dhcp_available: boolean | undefined;
-
- get dhcpAvailable(): boolean | undefined {
- return this._dhcp_available;
- }
-
- readonly _dnssec_enabled: boolean | undefined;
-
- get dnssecEnabled(): boolean | undefined {
- return this._dnssec_enabled;
- }
-
- readonly _edns_cs_enabled: boolean | undefined;
-
- get ednsCsEnabled(): boolean | undefined {
- return this._edns_cs_enabled;
- }
-
- readonly _protection_enabled: boolean | undefined;
-
- get protectionEnabled(): boolean | undefined {
- return this._protection_enabled;
- }
-
- readonly _ratelimit: number | undefined;
-
- get ratelimit(): number | undefined {
- return this._ratelimit;
- }
-
- readonly _upstream_dns: string[] | undefined;
-
- /**
- * Description: Upstream servers, port is optional after colon. Empty value will reset it to default values.
- *
- * Example: tls://1.1.1.1,tls://1.0.0.1
- */
- get upstreamDns(): string[] | undefined {
- return this._upstream_dns;
- }
-
- readonly _upstream_dns_file: string | undefined;
-
- get upstreamDnsFile(): string | undefined {
- return this._upstream_dns_file;
- }
-
- readonly _upstream_mode: any | undefined;
-
- get upstreamMode(): any | undefined {
- return this._upstream_mode;
- }
-
- constructor(props: IDNSConfig) {
- if (typeof props.blocking_ipv4 === 'string') {
- this._blocking_ipv4 = props.blocking_ipv4.trim();
- }
- if (typeof props.blocking_ipv6 === 'string') {
- this._blocking_ipv6 = props.blocking_ipv6.trim();
- }
- if (typeof props.blocking_mode === 'string') {
- this._blocking_mode = props.blocking_mode.trim();
- }
- if (props.bootstrap_dns) {
- this._bootstrap_dns = props.bootstrap_dns;
- }
- if (typeof props.cache_size === 'number') {
- this._cache_size = props.cache_size;
- }
- if (typeof props.cache_ttl_max === 'number') {
- this._cache_ttl_max = props.cache_ttl_max;
- }
- if (typeof props.cache_ttl_min === 'number') {
- this._cache_ttl_min = props.cache_ttl_min;
- }
- if (typeof props.dhcp_available === 'boolean') {
- this._dhcp_available = props.dhcp_available;
- }
- if (typeof props.dnssec_enabled === 'boolean') {
- this._dnssec_enabled = props.dnssec_enabled;
- }
- if (typeof props.edns_cs_enabled === 'boolean') {
- this._edns_cs_enabled = props.edns_cs_enabled;
- }
- if (typeof props.protection_enabled === 'boolean') {
- this._protection_enabled = props.protection_enabled;
- }
- if (typeof props.ratelimit === 'number') {
- this._ratelimit = props.ratelimit;
- }
- if (props.upstream_dns) {
- this._upstream_dns = props.upstream_dns;
- }
- if (typeof props.upstream_dns_file === 'string') {
- this._upstream_dns_file = props.upstream_dns_file.trim();
- }
- if (props.upstream_mode) {
- this._upstream_mode = props.upstream_mode;
- }
- }
-
- serialize(): IDNSConfig {
- const data: IDNSConfig = {
- };
- if (typeof this._blocking_ipv4 !== 'undefined') {
- data.blocking_ipv4 = this._blocking_ipv4;
- }
- if (typeof this._blocking_ipv6 !== 'undefined') {
- data.blocking_ipv6 = this._blocking_ipv6;
- }
- if (typeof this._blocking_mode !== 'undefined') {
- data.blocking_mode = this._blocking_mode;
- }
- if (typeof this._bootstrap_dns !== 'undefined') {
- data.bootstrap_dns = this._bootstrap_dns;
- }
- if (typeof this._cache_size !== 'undefined') {
- data.cache_size = this._cache_size;
- }
- if (typeof this._cache_ttl_max !== 'undefined') {
- data.cache_ttl_max = this._cache_ttl_max;
- }
- if (typeof this._cache_ttl_min !== 'undefined') {
- data.cache_ttl_min = this._cache_ttl_min;
- }
- if (typeof this._dhcp_available !== 'undefined') {
- data.dhcp_available = this._dhcp_available;
- }
- if (typeof this._dnssec_enabled !== 'undefined') {
- data.dnssec_enabled = this._dnssec_enabled;
- }
- if (typeof this._edns_cs_enabled !== 'undefined') {
- data.edns_cs_enabled = this._edns_cs_enabled;
- }
- if (typeof this._protection_enabled !== 'undefined') {
- data.protection_enabled = this._protection_enabled;
- }
- if (typeof this._ratelimit !== 'undefined') {
- data.ratelimit = this._ratelimit;
- }
- if (typeof this._upstream_dns !== 'undefined') {
- data.upstream_dns = this._upstream_dns;
- }
- if (typeof this._upstream_dns_file !== 'undefined') {
- data.upstream_dns_file = this._upstream_dns_file;
- }
- if (typeof this._upstream_mode !== 'undefined') {
- data.upstream_mode = this._upstream_mode;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- bootstrap_dns: !this._bootstrap_dns ? true : this._bootstrap_dns.reduce((result, p) => result && typeof p === 'string', true),
- upstream_dns: !this._upstream_dns ? true : this._upstream_dns.reduce((result, p) => result && typeof p === 'string', true),
- upstream_dns_file: !this._upstream_dns_file ? true : typeof this._upstream_dns_file === 'string' && !this._upstream_dns_file ? true : this._upstream_dns_file,
- protection_enabled: !this._protection_enabled ? true : typeof this._protection_enabled === 'boolean',
- dhcp_available: !this._dhcp_available ? true : typeof this._dhcp_available === 'boolean',
- ratelimit: !this._ratelimit ? true : typeof this._ratelimit === 'number',
- blocking_mode: !this._blocking_mode ? true : typeof this._blocking_mode === 'string' && !this._blocking_mode ? true : this._blocking_mode,
- blocking_ipv4: !this._blocking_ipv4 ? true : typeof this._blocking_ipv4 === 'string' && !this._blocking_ipv4 ? true : this._blocking_ipv4,
- blocking_ipv6: !this._blocking_ipv6 ? true : typeof this._blocking_ipv6 === 'string' && !this._blocking_ipv6 ? true : this._blocking_ipv6,
- edns_cs_enabled: !this._edns_cs_enabled ? true : typeof this._edns_cs_enabled === 'boolean',
- dnssec_enabled: !this._dnssec_enabled ? true : typeof this._dnssec_enabled === 'boolean',
- cache_size: !this._cache_size ? true : typeof this._cache_size === 'number',
- cache_ttl_min: !this._cache_ttl_min ? true : typeof this._cache_ttl_min === 'number',
- cache_ttl_max: !this._cache_ttl_max ? true : typeof this._cache_ttl_max === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DNSConfig {
- return new DNSConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpConfig.ts b/client2/src/lib/entities/DhcpConfig.ts
deleted file mode 100644
index 61874da0..00000000
--- a/client2/src/lib/entities/DhcpConfig.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import DhcpConfigV4, { IDhcpConfigV4 } from './DhcpConfigV4';
-import DhcpConfigV6, { IDhcpConfigV6 } from './DhcpConfigV6';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpConfig {
- enabled?: boolean;
- interface_name?: string;
- v4?: IDhcpConfigV4;
- v6?: IDhcpConfigV6;
-}
-
-export default class DhcpConfig {
- readonly _enabled: boolean | undefined;
-
- get enabled(): boolean | undefined {
- return this._enabled;
- }
-
- readonly _interface_name: string | undefined;
-
- get interfaceName(): string | undefined {
- return this._interface_name;
- }
-
- readonly _v4: DhcpConfigV4 | undefined;
-
- get v4(): DhcpConfigV4 | undefined {
- return this._v4;
- }
-
- readonly _v6: DhcpConfigV6 | undefined;
-
- get v6(): DhcpConfigV6 | undefined {
- return this._v6;
- }
-
- constructor(props: IDhcpConfig) {
- if (typeof props.enabled === 'boolean') {
- this._enabled = props.enabled;
- }
- if (typeof props.interface_name === 'string') {
- this._interface_name = props.interface_name.trim();
- }
- if (props.v4) {
- this._v4 = new DhcpConfigV4(props.v4);
- }
- if (props.v6) {
- this._v6 = new DhcpConfigV6(props.v6);
- }
- }
-
- serialize(): IDhcpConfig {
- const data: IDhcpConfig = {
- };
- if (typeof this._enabled !== 'undefined') {
- data.enabled = this._enabled;
- }
- if (typeof this._interface_name !== 'undefined') {
- data.interface_name = this._interface_name;
- }
- if (typeof this._v4 !== 'undefined') {
- data.v4 = this._v4.serialize();
- }
- if (typeof this._v6 !== 'undefined') {
- data.v6 = this._v6.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
- interface_name: !this._interface_name ? true : typeof this._interface_name === 'string' && !this._interface_name ? true : this._interface_name,
- v4: !this._v4 ? true : this._v4.validate().length === 0,
- v6: !this._v6 ? true : this._v6.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpConfig {
- return new DhcpConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpConfigV4.ts b/client2/src/lib/entities/DhcpConfigV4.ts
deleted file mode 100644
index ae4ebdc2..00000000
--- a/client2/src/lib/entities/DhcpConfigV4.ts
+++ /dev/null
@@ -1,117 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpConfigV4 {
- gateway_ip?: string;
- lease_duration?: number;
- range_end?: string;
- range_start?: string;
- subnet_mask?: string;
-}
-
-export default class DhcpConfigV4 {
- readonly _gateway_ip: string | undefined;
-
- /**
- * Description: undefined
- * Example: 192.168.1.1
- */
- get gatewayIp(): string | undefined {
- return this._gateway_ip;
- }
-
- readonly _lease_duration: number | undefined;
-
- get leaseDuration(): number | undefined {
- return this._lease_duration;
- }
-
- readonly _range_end: string | undefined;
-
- /**
- * Description: undefined
- * Example: 192.168.10.50
- */
- get rangeEnd(): string | undefined {
- return this._range_end;
- }
-
- readonly _range_start: string | undefined;
-
- /**
- * Description: undefined
- * Example: 192.168.1.2
- */
- get rangeStart(): string | undefined {
- return this._range_start;
- }
-
- readonly _subnet_mask: string | undefined;
-
- /**
- * Description: undefined
- * Example: 255.255.255.0
- */
- get subnetMask(): string | undefined {
- return this._subnet_mask;
- }
-
- constructor(props: IDhcpConfigV4) {
- if (typeof props.gateway_ip === 'string') {
- this._gateway_ip = props.gateway_ip.trim();
- }
- if (typeof props.lease_duration === 'number') {
- this._lease_duration = props.lease_duration;
- }
- if (typeof props.range_end === 'string') {
- this._range_end = props.range_end.trim();
- }
- if (typeof props.range_start === 'string') {
- this._range_start = props.range_start.trim();
- }
- if (typeof props.subnet_mask === 'string') {
- this._subnet_mask = props.subnet_mask.trim();
- }
- }
-
- serialize(): IDhcpConfigV4 {
- const data: IDhcpConfigV4 = {
- };
- if (typeof this._gateway_ip !== 'undefined') {
- data.gateway_ip = this._gateway_ip;
- }
- if (typeof this._lease_duration !== 'undefined') {
- data.lease_duration = this._lease_duration;
- }
- if (typeof this._range_end !== 'undefined') {
- data.range_end = this._range_end;
- }
- if (typeof this._range_start !== 'undefined') {
- data.range_start = this._range_start;
- }
- if (typeof this._subnet_mask !== 'undefined') {
- data.subnet_mask = this._subnet_mask;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- gateway_ip: !this._gateway_ip ? true : typeof this._gateway_ip === 'string' && !this._gateway_ip ? true : this._gateway_ip,
- subnet_mask: !this._subnet_mask ? true : typeof this._subnet_mask === 'string' && !this._subnet_mask ? true : this._subnet_mask,
- range_start: !this._range_start ? true : typeof this._range_start === 'string' && !this._range_start ? true : this._range_start,
- range_end: !this._range_end ? true : typeof this._range_end === 'string' && !this._range_end ? true : this._range_end,
- lease_duration: !this._lease_duration ? true : typeof this._lease_duration === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpConfigV4 {
- return new DhcpConfigV4({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpConfigV6.ts b/client2/src/lib/entities/DhcpConfigV6.ts
deleted file mode 100644
index cf7d6763..00000000
--- a/client2/src/lib/entities/DhcpConfigV6.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpConfigV6 {
- lease_duration?: number;
- range_start?: string;
-}
-
-export default class DhcpConfigV6 {
- readonly _lease_duration: number | undefined;
-
- get leaseDuration(): number | undefined {
- return this._lease_duration;
- }
-
- readonly _range_start: string | undefined;
-
- get rangeStart(): string | undefined {
- return this._range_start;
- }
-
- constructor(props: IDhcpConfigV6) {
- if (typeof props.lease_duration === 'number') {
- this._lease_duration = props.lease_duration;
- }
- if (typeof props.range_start === 'string') {
- this._range_start = props.range_start.trim();
- }
- }
-
- serialize(): IDhcpConfigV6 {
- const data: IDhcpConfigV6 = {
- };
- if (typeof this._lease_duration !== 'undefined') {
- data.lease_duration = this._lease_duration;
- }
- if (typeof this._range_start !== 'undefined') {
- data.range_start = this._range_start;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- range_start: !this._range_start ? true : typeof this._range_start === 'string' && !this._range_start ? true : this._range_start,
- lease_duration: !this._lease_duration ? true : typeof this._lease_duration === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpConfigV6 {
- return new DhcpConfigV6({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpLease.ts b/client2/src/lib/entities/DhcpLease.ts
deleted file mode 100644
index b285496b..00000000
--- a/client2/src/lib/entities/DhcpLease.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpLease {
- expires: string;
- hostname: string;
- ip: string;
- mac: string;
-}
-
-export default class DhcpLease {
- readonly _expires: string;
-
- /**
- * Description: undefined
- * Example: 2017-07-21T17:32:28Z
- */
- get expires(): string {
- return this._expires;
- }
-
- static expiresValidate(expires: string): boolean {
- return typeof expires === 'string' && !!expires.trim();
- }
-
- readonly _hostname: string;
-
- /**
- * Description: undefined
- * Example: dell
- */
- get hostname(): string {
- return this._hostname;
- }
-
- static hostnameValidate(hostname: string): boolean {
- return typeof hostname === 'string' && !!hostname.trim();
- }
-
- readonly _ip: string;
-
- /**
- * Description: undefined
- * Example: 192.168.1.22
- */
- get ip(): string {
- return this._ip;
- }
-
- static ipValidate(ip: string): boolean {
- return typeof ip === 'string' && !!ip.trim();
- }
-
- readonly _mac: string;
-
- /**
- * Description: undefined
- * Example: 00:11:09:b3:b3:b8
- */
- get mac(): string {
- return this._mac;
- }
-
- static macValidate(mac: string): boolean {
- return typeof mac === 'string' && !!mac.trim();
- }
-
- constructor(props: IDhcpLease) {
- this._expires = props.expires.trim();
- this._hostname = props.hostname.trim();
- this._ip = props.ip.trim();
- this._mac = props.mac.trim();
- }
-
- serialize(): IDhcpLease {
- const data: IDhcpLease = {
- expires: this._expires,
- hostname: this._hostname,
- ip: this._ip,
- mac: this._mac,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- mac: typeof this._mac === 'string' && !this._mac ? true : this._mac,
- ip: typeof this._ip === 'string' && !this._ip ? true : this._ip,
- hostname: typeof this._hostname === 'string' && !this._hostname ? true : this._hostname,
- expires: typeof this._expires === 'string' && !this._expires ? true : this._expires,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpLease {
- return new DhcpLease({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpSearchResult.ts b/client2/src/lib/entities/DhcpSearchResult.ts
deleted file mode 100644
index c168a244..00000000
--- a/client2/src/lib/entities/DhcpSearchResult.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import DhcpSearchV4, { IDhcpSearchV4 } from './DhcpSearchV4';
-import DhcpSearchV6, { IDhcpSearchV6 } from './DhcpSearchV6';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpSearchResult {
- v4?: IDhcpSearchV4;
- v6?: IDhcpSearchV6;
-}
-
-export default class DhcpSearchResult {
- readonly _v4: DhcpSearchV4 | undefined;
-
- get v4(): DhcpSearchV4 | undefined {
- return this._v4;
- }
-
- readonly _v6: DhcpSearchV6 | undefined;
-
- get v6(): DhcpSearchV6 | undefined {
- return this._v6;
- }
-
- constructor(props: IDhcpSearchResult) {
- if (props.v4) {
- this._v4 = new DhcpSearchV4(props.v4);
- }
- if (props.v6) {
- this._v6 = new DhcpSearchV6(props.v6);
- }
- }
-
- serialize(): IDhcpSearchResult {
- const data: IDhcpSearchResult = {
- };
- if (typeof this._v4 !== 'undefined') {
- data.v4 = this._v4.serialize();
- }
- if (typeof this._v6 !== 'undefined') {
- data.v6 = this._v6.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- v4: !this._v4 ? true : this._v4.validate().length === 0,
- v6: !this._v6 ? true : this._v6.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpSearchResult {
- return new DhcpSearchResult({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpSearchResultOtherServer.ts b/client2/src/lib/entities/DhcpSearchResultOtherServer.ts
deleted file mode 100644
index be50bbdd..00000000
--- a/client2/src/lib/entities/DhcpSearchResultOtherServer.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpSearchResultOtherServer {
- error?: string;
- found?: string;
-}
-
-export default class DhcpSearchResultOtherServer {
- readonly _error: string | undefined;
-
- /** */
- get error(): string | undefined {
- return this._error;
- }
-
- readonly _found: string | undefined;
-
- /**
- * Description: The result of searching the other DHCP server.
- *
- * Example: no
- */
- get found(): string | undefined {
- return this._found;
- }
-
- constructor(props: IDhcpSearchResultOtherServer) {
- if (typeof props.error === 'string') {
- this._error = props.error.trim();
- }
- if (typeof props.found === 'string') {
- this._found = props.found.trim();
- }
- }
-
- serialize(): IDhcpSearchResultOtherServer {
- const data: IDhcpSearchResultOtherServer = {
- };
- if (typeof this._error !== 'undefined') {
- data.error = this._error;
- }
- if (typeof this._found !== 'undefined') {
- data.found = this._found;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- found: !this._found ? true : typeof this._found === 'string' && !this._found ? true : this._found,
- error: !this._error ? true : typeof this._error === 'string' && !this._error ? true : this._error,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpSearchResultOtherServer {
- return new DhcpSearchResultOtherServer({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpSearchResultStaticIP.ts b/client2/src/lib/entities/DhcpSearchResultStaticIP.ts
deleted file mode 100644
index f3fc2155..00000000
--- a/client2/src/lib/entities/DhcpSearchResultStaticIP.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpSearchResultStaticIP {
- ip?: string;
- static?: string;
-}
-
-export default class DhcpSearchResultStaticIP {
- readonly _ip: string | undefined;
-
- /** */
- get ip(): string | undefined {
- return this._ip;
- }
-
- readonly _static: string | undefined;
-
- /**
- * Description: The result of determining static IP address.
- *
- * Example: yes
- */
- get static(): string | undefined {
- return this._static;
- }
-
- constructor(props: IDhcpSearchResultStaticIP) {
- if (typeof props.ip === 'string') {
- this._ip = props.ip.trim();
- }
- if (typeof props.static === 'string') {
- this._static = props.static.trim();
- }
- }
-
- serialize(): IDhcpSearchResultStaticIP {
- const data: IDhcpSearchResultStaticIP = {
- };
- if (typeof this._ip !== 'undefined') {
- data.ip = this._ip;
- }
- if (typeof this._static !== 'undefined') {
- data.static = this._static;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- static: !this._static ? true : typeof this._static === 'string' && !this._static ? true : this._static,
- ip: !this._ip ? true : typeof this._ip === 'string' && !this._ip ? true : this._ip,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpSearchResultStaticIP {
- return new DhcpSearchResultStaticIP({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpSearchV4.ts b/client2/src/lib/entities/DhcpSearchV4.ts
deleted file mode 100644
index 01af4419..00000000
--- a/client2/src/lib/entities/DhcpSearchV4.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import DhcpSearchResultOtherServer, { IDhcpSearchResultOtherServer } from './DhcpSearchResultOtherServer';
-import DhcpSearchResultStaticIP, { IDhcpSearchResultStaticIP } from './DhcpSearchResultStaticIP';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpSearchV4 {
- other_server?: IDhcpSearchResultOtherServer;
- static_ip?: IDhcpSearchResultStaticIP;
-}
-
-export default class DhcpSearchV4 {
- readonly _other_server: DhcpSearchResultOtherServer | undefined;
-
- get otherServer(): DhcpSearchResultOtherServer | undefined {
- return this._other_server;
- }
-
- readonly _static_ip: DhcpSearchResultStaticIP | undefined;
-
- get staticIp(): DhcpSearchResultStaticIP | undefined {
- return this._static_ip;
- }
-
- constructor(props: IDhcpSearchV4) {
- if (props.other_server) {
- this._other_server = new DhcpSearchResultOtherServer(props.other_server);
- }
- if (props.static_ip) {
- this._static_ip = new DhcpSearchResultStaticIP(props.static_ip);
- }
- }
-
- serialize(): IDhcpSearchV4 {
- const data: IDhcpSearchV4 = {
- };
- if (typeof this._other_server !== 'undefined') {
- data.other_server = this._other_server.serialize();
- }
- if (typeof this._static_ip !== 'undefined') {
- data.static_ip = this._static_ip.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- other_server: !this._other_server ? true : this._other_server.validate().length === 0,
- static_ip: !this._static_ip ? true : this._static_ip.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpSearchV4 {
- return new DhcpSearchV4({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpSearchV6.ts b/client2/src/lib/entities/DhcpSearchV6.ts
deleted file mode 100644
index e02134a5..00000000
--- a/client2/src/lib/entities/DhcpSearchV6.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import DhcpSearchResultOtherServer, { IDhcpSearchResultOtherServer } from './DhcpSearchResultOtherServer';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpSearchV6 {
- other_server?: IDhcpSearchResultOtherServer;
-}
-
-export default class DhcpSearchV6 {
- readonly _other_server: DhcpSearchResultOtherServer | undefined;
-
- get otherServer(): DhcpSearchResultOtherServer | undefined {
- return this._other_server;
- }
-
- constructor(props: IDhcpSearchV6) {
- if (props.other_server) {
- this._other_server = new DhcpSearchResultOtherServer(props.other_server);
- }
- }
-
- serialize(): IDhcpSearchV6 {
- const data: IDhcpSearchV6 = {
- };
- if (typeof this._other_server !== 'undefined') {
- data.other_server = this._other_server.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- other_server: !this._other_server ? true : this._other_server.validate().length === 0,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpSearchV6 {
- return new DhcpSearchV6({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpStaticLease.ts b/client2/src/lib/entities/DhcpStaticLease.ts
deleted file mode 100644
index a365f3b6..00000000
--- a/client2/src/lib/entities/DhcpStaticLease.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpStaticLease {
- hostname: string;
- ip: string;
- mac: string;
-}
-
-export default class DhcpStaticLease {
- readonly _hostname: string;
-
- /**
- * Description: undefined
- * Example: dell
- */
- get hostname(): string {
- return this._hostname;
- }
-
- static hostnameValidate(hostname: string): boolean {
- return typeof hostname === 'string' && !!hostname.trim();
- }
-
- readonly _ip: string;
-
- /**
- * Description: undefined
- * Example: 192.168.1.22
- */
- get ip(): string {
- return this._ip;
- }
-
- static ipValidate(ip: string): boolean {
- return typeof ip === 'string' && !!ip.trim();
- }
-
- readonly _mac: string;
-
- /**
- * Description: undefined
- * Example: 00:11:09:b3:b3:b8
- */
- get mac(): string {
- return this._mac;
- }
-
- static macValidate(mac: string): boolean {
- return typeof mac === 'string' && !!mac.trim();
- }
-
- constructor(props: IDhcpStaticLease) {
- this._hostname = props.hostname.trim();
- this._ip = props.ip.trim();
- this._mac = props.mac.trim();
- }
-
- serialize(): IDhcpStaticLease {
- const data: IDhcpStaticLease = {
- hostname: this._hostname,
- ip: this._ip,
- mac: this._mac,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- mac: typeof this._mac === 'string' && !this._mac ? true : this._mac,
- ip: typeof this._ip === 'string' && !this._ip ? true : this._ip,
- hostname: typeof this._hostname === 'string' && !this._hostname ? true : this._hostname,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpStaticLease {
- return new DhcpStaticLease({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DhcpStatus.ts b/client2/src/lib/entities/DhcpStatus.ts
deleted file mode 100644
index 604daf95..00000000
--- a/client2/src/lib/entities/DhcpStatus.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import DhcpConfigV4, { IDhcpConfigV4 } from './DhcpConfigV4';
-import DhcpConfigV6, { IDhcpConfigV6 } from './DhcpConfigV6';
-import DhcpLease, { IDhcpLease } from './DhcpLease';
-import DhcpStaticLease, { IDhcpStaticLease } from './DhcpStaticLease';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDhcpStatus {
- enabled?: boolean;
- interface_name?: string;
- leases: IDhcpLease[];
- static_leases?: IDhcpStaticLease[];
- v4?: IDhcpConfigV4;
- v6?: IDhcpConfigV6;
-}
-
-export default class DhcpStatus {
- readonly _enabled: boolean | undefined;
-
- get enabled(): boolean | undefined {
- return this._enabled;
- }
-
- readonly _interface_name: string | undefined;
-
- get interfaceName(): string | undefined {
- return this._interface_name;
- }
-
- readonly _leases: DhcpLease[];
-
- get leases(): DhcpLease[] {
- return this._leases;
- }
-
- readonly _static_leases: DhcpStaticLease[] | undefined;
-
- get staticLeases(): DhcpStaticLease[] | undefined {
- return this._static_leases;
- }
-
- readonly _v4: DhcpConfigV4 | undefined;
-
- get v4(): DhcpConfigV4 | undefined {
- return this._v4;
- }
-
- readonly _v6: DhcpConfigV6 | undefined;
-
- get v6(): DhcpConfigV6 | undefined {
- return this._v6;
- }
-
- constructor(props: IDhcpStatus) {
- if (typeof props.enabled === 'boolean') {
- this._enabled = props.enabled;
- }
- if (typeof props.interface_name === 'string') {
- this._interface_name = props.interface_name.trim();
- }
- this._leases = props.leases.map((p) => new DhcpLease(p));
- if (props.static_leases) {
- this._static_leases = props.static_leases.map((p) => new DhcpStaticLease(p));
- }
- if (props.v4) {
- this._v4 = new DhcpConfigV4(props.v4);
- }
- if (props.v6) {
- this._v6 = new DhcpConfigV6(props.v6);
- }
- }
-
- serialize(): IDhcpStatus {
- const data: IDhcpStatus = {
- leases: this._leases.map((p) => p.serialize()),
- };
- if (typeof this._enabled !== 'undefined') {
- data.enabled = this._enabled;
- }
- if (typeof this._interface_name !== 'undefined') {
- data.interface_name = this._interface_name;
- }
- if (typeof this._static_leases !== 'undefined') {
- data.static_leases = this._static_leases.map((p) => p.serialize());
- }
- if (typeof this._v4 !== 'undefined') {
- data.v4 = this._v4.serialize();
- }
- if (typeof this._v6 !== 'undefined') {
- data.v6 = this._v6.serialize();
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
- interface_name: !this._interface_name ? true : typeof this._interface_name === 'string' && !this._interface_name ? true : this._interface_name,
- v4: !this._v4 ? true : this._v4.validate().length === 0,
- v6: !this._v6 ? true : this._v6.validate().length === 0,
- leases: this._leases.reduce((result, p) => result && p.validate().length === 0, true),
- static_leases: !this._static_leases ? true : this._static_leases.reduce((result, p) => result && p.validate().length === 0, true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DhcpStatus {
- return new DhcpStatus({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DnsAnswer.ts b/client2/src/lib/entities/DnsAnswer.ts
deleted file mode 100644
index d3351be3..00000000
--- a/client2/src/lib/entities/DnsAnswer.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDnsAnswer {
- ttl?: number;
- type?: string;
- value?: string;
-}
-
-export default class DnsAnswer {
- readonly _ttl: number | undefined;
-
- /**
- * Description: undefined
- * Example: 55
- */
- get ttl(): number | undefined {
- return this._ttl;
- }
-
- readonly _type: string | undefined;
-
- /**
- * Description: undefined
- * Example: A
- */
- get type(): string | undefined {
- return this._type;
- }
-
- readonly _value: string | undefined;
-
- /**
- * Description: undefined
- * Example: 217.69.139.201
- */
- get value(): string | undefined {
- return this._value;
- }
-
- constructor(props: IDnsAnswer) {
- if (typeof props.ttl === 'number') {
- this._ttl = props.ttl;
- }
- if (typeof props.type === 'string') {
- this._type = props.type.trim();
- }
- if (typeof props.value === 'string') {
- this._value = props.value.trim();
- }
- }
-
- serialize(): IDnsAnswer {
- const data: IDnsAnswer = {
- };
- if (typeof this._ttl !== 'undefined') {
- data.ttl = this._ttl;
- }
- if (typeof this._type !== 'undefined') {
- data.type = this._type;
- }
- if (typeof this._value !== 'undefined') {
- data.value = this._value;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- ttl: !this._ttl ? true : typeof this._ttl === 'number',
- type: !this._type ? true : typeof this._type === 'string' && !this._type ? true : this._type,
- value: !this._value ? true : typeof this._value === 'string' && !this._value ? true : this._value,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DnsAnswer {
- return new DnsAnswer({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/DnsQuestion.ts b/client2/src/lib/entities/DnsQuestion.ts
deleted file mode 100644
index 42849b17..00000000
--- a/client2/src/lib/entities/DnsQuestion.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IDnsQuestion {
- class?: string;
- host?: string;
- type?: string;
-}
-
-export default class DnsQuestion {
- readonly _class: string | undefined;
-
- /**
- * Description: undefined
- * Example: IN
- */
- get class(): string | undefined {
- return this._class;
- }
-
- readonly _host: string | undefined;
-
- /**
- * Description: undefined
- * Example: example.org
- */
- get host(): string | undefined {
- return this._host;
- }
-
- readonly _type: string | undefined;
-
- /**
- * Description: undefined
- * Example: A
- */
- get type(): string | undefined {
- return this._type;
- }
-
- constructor(props: IDnsQuestion) {
- if (typeof props.class === 'string') {
- this._class = props.class.trim();
- }
- if (typeof props.host === 'string') {
- this._host = props.host.trim();
- }
- if (typeof props.type === 'string') {
- this._type = props.type.trim();
- }
- }
-
- serialize(): IDnsQuestion {
- const data: IDnsQuestion = {
- };
- if (typeof this._class !== 'undefined') {
- data.class = this._class;
- }
- if (typeof this._host !== 'undefined') {
- data.host = this._host;
- }
- if (typeof this._type !== 'undefined') {
- data.type = this._type;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- class: !this._class ? true : typeof this._class === 'string' && !this._class ? true : this._class,
- host: !this._host ? true : typeof this._host === 'string' && !this._host ? true : this._host,
- type: !this._type ? true : typeof this._type === 'string' && !this._type ? true : this._type,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): DnsQuestion {
- return new DnsQuestion({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/Error.ts b/client2/src/lib/entities/Error.ts
deleted file mode 100644
index 79d16b5c..00000000
--- a/client2/src/lib/entities/Error.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IError {
- message?: string;
-}
-
-export default class Error {
- readonly _message: string | undefined;
-
- /** */
- get message(): string | undefined {
- return this._message;
- }
-
- constructor(props: IError) {
- if (typeof props.message === 'string') {
- this._message = props.message.trim();
- }
- }
-
- serialize(): IError {
- const data: IError = {
- };
- if (typeof this._message !== 'undefined') {
- data.message = this._message;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- message: !this._message ? true : typeof this._message === 'string' && !this._message ? true : this._message,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): Error {
- return new Error({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/Filter.ts b/client2/src/lib/entities/Filter.ts
deleted file mode 100644
index c7f3ff87..00000000
--- a/client2/src/lib/entities/Filter.ts
+++ /dev/null
@@ -1,136 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilter {
- enabled: boolean;
- id: number;
- last_updated: string;
- name: string;
- rules_count: number;
- url: string;
-}
-
-export default class Filter {
- readonly _enabled: boolean;
-
- get enabled(): boolean {
- return this._enabled;
- }
-
- static enabledValidate(enabled: boolean): boolean {
- return typeof enabled === 'boolean';
- }
-
- readonly _id: number;
-
- /**
- * Description: undefined
- * Example: 1234
- */
- get id(): number {
- return this._id;
- }
-
- static idValidate(id: number): boolean {
- return typeof id === 'number';
- }
-
- readonly _last_updated: string;
-
- /**
- * Description: undefined
- * Example: 2018-10-30T12:18:57+03:00
- */
- get lastUpdated(): string {
- return this._last_updated;
- }
-
- static lastUpdatedValidate(lastUpdated: string): boolean {
- return typeof lastUpdated === 'string' && !!lastUpdated.trim();
- }
-
- readonly _name: string;
-
- /**
- * Description: undefined
- * Example: AdGuard Simplified Domain Names filter
- */
- get name(): string {
- return this._name;
- }
-
- static nameValidate(name: string): boolean {
- return typeof name === 'string' && !!name.trim();
- }
-
- readonly _rules_count: number;
-
- /**
- * Description: undefined
- * Example: 5912
- */
- get rulesCount(): number {
- return this._rules_count;
- }
-
- static rulesCountValidate(rulesCount: number): boolean {
- return typeof rulesCount === 'number';
- }
-
- readonly _url: string;
-
- /**
- * Description: undefined
- * Example: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
- *
- */
- get url(): string {
- return this._url;
- }
-
- static urlValidate(url: string): boolean {
- return typeof url === 'string' && !!url.trim();
- }
-
- constructor(props: IFilter) {
- this._enabled = props.enabled;
- this._id = props.id;
- this._last_updated = props.last_updated.trim();
- this._name = props.name.trim();
- this._rules_count = props.rules_count;
- this._url = props.url.trim();
- }
-
- serialize(): IFilter {
- const data: IFilter = {
- enabled: this._enabled,
- id: this._id,
- last_updated: this._last_updated,
- name: this._name,
- rules_count: this._rules_count,
- url: this._url,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: typeof this._enabled === 'boolean',
- id: typeof this._id === 'number',
- last_updated: typeof this._last_updated === 'string' && !this._last_updated ? true : this._last_updated,
- name: typeof this._name === 'string' && !this._name ? true : this._name,
- rules_count: typeof this._rules_count === 'number',
- url: typeof this._url === 'string' && !this._url ? true : this._url,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): Filter {
- return new Filter({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/FilterCheckHostResponse.ts b/client2/src/lib/entities/FilterCheckHostResponse.ts
deleted file mode 100644
index 2f0daa9a..00000000
--- a/client2/src/lib/entities/FilterCheckHostResponse.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-import ResultRule, { IResultRule } from './ResultRule';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilterCheckHostResponse {
- cname?: string;
- filter_id?: number;
- ip_addrs?: string[];
- reason?: string;
- rule?: string;
- rules?: IResultRule[];
- service_name?: string;
-}
-
-export default class FilterCheckHostResponse {
- readonly _cname: string | undefined;
-
- /** */
- get cname(): string | undefined {
- return this._cname;
- }
-
- readonly _filter_id: number | undefined;
-
- /** */
- get filterId(): number | undefined {
- return this._filter_id;
- }
-
- readonly _ip_addrs: string[] | undefined;
-
- /** */
- get ipAddrs(): string[] | undefined {
- return this._ip_addrs;
- }
-
- readonly _reason: string | undefined;
-
- /** */
- get reason(): string | undefined {
- return this._reason;
- }
-
- readonly _rule: string | undefined;
-
- /**
- * Description: Filtering rule applied to the request (if any).
- * Deprecated: use `rules[*].text` instead.
- *
- * Example: ||example.org^
- */
- get rule(): string | undefined {
- return this._rule;
- }
-
- readonly _rules: ResultRule[] | undefined;
-
- /** */
- get rules(): ResultRule[] | undefined {
- return this._rules;
- }
-
- readonly _service_name: string | undefined;
-
- /** */
- get serviceName(): string | undefined {
- return this._service_name;
- }
-
- constructor(props: IFilterCheckHostResponse) {
- if (typeof props.cname === 'string') {
- this._cname = props.cname.trim();
- }
- if (typeof props.filter_id === 'number') {
- this._filter_id = props.filter_id;
- }
- if (props.ip_addrs) {
- this._ip_addrs = props.ip_addrs;
- }
- if (typeof props.reason === 'string') {
- this._reason = props.reason.trim();
- }
- if (typeof props.rule === 'string') {
- this._rule = props.rule.trim();
- }
- if (props.rules) {
- this._rules = props.rules.map((p) => new ResultRule(p));
- }
- if (typeof props.service_name === 'string') {
- this._service_name = props.service_name.trim();
- }
- }
-
- serialize(): IFilterCheckHostResponse {
- const data: IFilterCheckHostResponse = {
- };
- if (typeof this._cname !== 'undefined') {
- data.cname = this._cname;
- }
- if (typeof this._filter_id !== 'undefined') {
- data.filter_id = this._filter_id;
- }
- if (typeof this._ip_addrs !== 'undefined') {
- data.ip_addrs = this._ip_addrs;
- }
- if (typeof this._reason !== 'undefined') {
- data.reason = this._reason;
- }
- if (typeof this._rule !== 'undefined') {
- data.rule = this._rule;
- }
- if (typeof this._rules !== 'undefined') {
- data.rules = this._rules.map((p) => p.serialize());
- }
- if (typeof this._service_name !== 'undefined') {
- data.service_name = this._service_name;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- reason: !this._reason ? true : typeof this._reason === 'string' && !this._reason ? true : this._reason,
- filter_id: !this._filter_id ? true : typeof this._filter_id === 'number',
- rule: !this._rule ? true : typeof this._rule === 'string' && !this._rule ? true : this._rule,
- rules: !this._rules ? true : this._rules.reduce((result, p) => result && p.validate().length === 0, true),
- service_name: !this._service_name ? true : typeof this._service_name === 'string' && !this._service_name ? true : this._service_name,
- cname: !this._cname ? true : typeof this._cname === 'string' && !this._cname ? true : this._cname,
- ip_addrs: !this._ip_addrs ? true : this._ip_addrs.reduce((result, p) => result && typeof p === 'string', true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): FilterCheckHostResponse {
- return new FilterCheckHostResponse({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/FilterConfig.ts b/client2/src/lib/entities/FilterConfig.ts
deleted file mode 100644
index b1691de1..00000000
--- a/client2/src/lib/entities/FilterConfig.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilterConfig {
- enabled?: boolean;
- interval?: number;
-}
-
-export default class FilterConfig {
- readonly _enabled: boolean | undefined;
-
- get enabled(): boolean | undefined {
- return this._enabled;
- }
-
- readonly _interval: number | undefined;
-
- get interval(): number | undefined {
- return this._interval;
- }
-
- constructor(props: IFilterConfig) {
- if (typeof props.enabled === 'boolean') {
- this._enabled = props.enabled;
- }
- if (typeof props.interval === 'number') {
- this._interval = props.interval;
- }
- }
-
- serialize(): IFilterConfig {
- const data: IFilterConfig = {
- };
- if (typeof this._enabled !== 'undefined') {
- data.enabled = this._enabled;
- }
- if (typeof this._interval !== 'undefined') {
- data.interval = this._interval;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
- interval: !this._interval ? true : typeof this._interval === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): FilterConfig {
- return new FilterConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/FilterRefreshRequest.ts b/client2/src/lib/entities/FilterRefreshRequest.ts
deleted file mode 100644
index 3b274ddb..00000000
--- a/client2/src/lib/entities/FilterRefreshRequest.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilterRefreshRequest {
- whitelist?: boolean;
-}
-
-export default class FilterRefreshRequest {
- readonly _whitelist: boolean | undefined;
-
- get whitelist(): boolean | undefined {
- return this._whitelist;
- }
-
- constructor(props: IFilterRefreshRequest) {
- if (typeof props.whitelist === 'boolean') {
- this._whitelist = props.whitelist;
- }
- }
-
- serialize(): IFilterRefreshRequest {
- const data: IFilterRefreshRequest = {
- };
- if (typeof this._whitelist !== 'undefined') {
- data.whitelist = this._whitelist;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- whitelist: !this._whitelist ? true : typeof this._whitelist === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): FilterRefreshRequest {
- return new FilterRefreshRequest({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/FilterRefreshResponse.ts b/client2/src/lib/entities/FilterRefreshResponse.ts
deleted file mode 100644
index 96d45b09..00000000
--- a/client2/src/lib/entities/FilterRefreshResponse.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilterRefreshResponse {
- updated?: number;
-}
-
-export default class FilterRefreshResponse {
- readonly _updated: number | undefined;
-
- get updated(): number | undefined {
- return this._updated;
- }
-
- constructor(props: IFilterRefreshResponse) {
- if (typeof props.updated === 'number') {
- this._updated = props.updated;
- }
- }
-
- serialize(): IFilterRefreshResponse {
- const data: IFilterRefreshResponse = {
- };
- if (typeof this._updated !== 'undefined') {
- data.updated = this._updated;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- updated: !this._updated ? true : typeof this._updated === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): FilterRefreshResponse {
- return new FilterRefreshResponse({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/FilterSetUrl.ts b/client2/src/lib/entities/FilterSetUrl.ts
deleted file mode 100644
index 92eccfc7..00000000
--- a/client2/src/lib/entities/FilterSetUrl.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilterSetUrl {
- data?: any;
- url?: string;
- whitelist?: boolean;
-}
-
-export default class FilterSetUrl {
- readonly _data: any | undefined;
-
- get data(): any | undefined {
- return this._data;
- }
-
- readonly _url: string | undefined;
-
- get url(): string | undefined {
- return this._url;
- }
-
- readonly _whitelist: boolean | undefined;
-
- get whitelist(): boolean | undefined {
- return this._whitelist;
- }
-
- constructor(props: IFilterSetUrl) {
- if (props.data) {
- this._data = props.data;
- }
- if (typeof props.url === 'string') {
- this._url = props.url.trim();
- }
- if (typeof props.whitelist === 'boolean') {
- this._whitelist = props.whitelist;
- }
- }
-
- serialize(): IFilterSetUrl {
- const data: IFilterSetUrl = {
- };
- if (typeof this._data !== 'undefined') {
- data.data = this._data;
- }
- if (typeof this._url !== 'undefined') {
- data.url = this._url;
- }
- if (typeof this._whitelist !== 'undefined') {
- data.whitelist = this._whitelist;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- url: !this._url ? true : typeof this._url === 'string' && !this._url ? true : this._url,
- whitelist: !this._whitelist ? true : typeof this._whitelist === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): FilterSetUrl {
- return new FilterSetUrl({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/FilterStatus.ts b/client2/src/lib/entities/FilterStatus.ts
deleted file mode 100644
index be63d512..00000000
--- a/client2/src/lib/entities/FilterStatus.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-import Filter, { IFilter } from './Filter';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IFilterStatus {
- enabled?: boolean;
- filters?: IFilter[];
- interval?: number;
- user_rules?: string[];
-}
-
-export default class FilterStatus {
- readonly _enabled: boolean | undefined;
-
- get enabled(): boolean | undefined {
- return this._enabled;
- }
-
- readonly _filters: Filter[] | undefined;
-
- get filters(): Filter[] | undefined {
- return this._filters;
- }
-
- readonly _interval: number | undefined;
-
- get interval(): number | undefined {
- return this._interval;
- }
-
- readonly _user_rules: string[] | undefined;
-
- get userRules(): string[] | undefined {
- return this._user_rules;
- }
-
- constructor(props: IFilterStatus) {
- if (typeof props.enabled === 'boolean') {
- this._enabled = props.enabled;
- }
- if (props.filters) {
- this._filters = props.filters.map((p) => new Filter(p));
- }
- if (typeof props.interval === 'number') {
- this._interval = props.interval;
- }
- if (props.user_rules) {
- this._user_rules = props.user_rules;
- }
- }
-
- serialize(): IFilterStatus {
- const data: IFilterStatus = {
- };
- if (typeof this._enabled !== 'undefined') {
- data.enabled = this._enabled;
- }
- if (typeof this._filters !== 'undefined') {
- data.filters = this._filters.map((p) => p.serialize());
- }
- if (typeof this._interval !== 'undefined') {
- data.interval = this._interval;
- }
- if (typeof this._user_rules !== 'undefined') {
- data.user_rules = this._user_rules;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
- interval: !this._interval ? true : typeof this._interval === 'number',
- filters: !this._filters ? true : this._filters.reduce((result, p) => result && p.validate().length === 0, true),
- user_rules: !this._user_rules ? true : this._user_rules.reduce((result, p) => result && typeof p === 'string', true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): FilterStatus {
- return new FilterStatus({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/GetVersionRequest.ts b/client2/src/lib/entities/GetVersionRequest.ts
deleted file mode 100644
index 8677bb11..00000000
--- a/client2/src/lib/entities/GetVersionRequest.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IGetVersionRequest {
- recheck_now?: boolean;
-}
-
-export default class GetVersionRequest {
- readonly _recheck_now: boolean | undefined;
-
- /** */
- get recheckNow(): boolean | undefined {
- return this._recheck_now;
- }
-
- constructor(props: IGetVersionRequest) {
- if (typeof props.recheck_now === 'boolean') {
- this._recheck_now = props.recheck_now;
- }
- }
-
- serialize(): IGetVersionRequest {
- const data: IGetVersionRequest = {
- };
- if (typeof this._recheck_now !== 'undefined') {
- data.recheck_now = this._recheck_now;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- recheck_now: !this._recheck_now ? true : typeof this._recheck_now === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): GetVersionRequest {
- return new GetVersionRequest({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/InitialConfiguration.ts b/client2/src/lib/entities/InitialConfiguration.ts
deleted file mode 100644
index 1bb32c3c..00000000
--- a/client2/src/lib/entities/InitialConfiguration.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-import AddressInfo, { IAddressInfo } from './AddressInfo';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IInitialConfiguration {
- dns: IAddressInfo;
- password: string;
- username: string;
- web: IAddressInfo;
-}
-
-export default class InitialConfiguration {
- readonly _dns: AddressInfo;
-
- get dns(): AddressInfo {
- return this._dns;
- }
-
- readonly _password: string;
-
- /**
- * Description: Basic auth password
- * Example: password
- */
- get password(): string {
- return this._password;
- }
-
- static passwordValidate(password: string): boolean {
- return typeof password === 'string' && !!password.trim();
- }
-
- readonly _username: string;
-
- /**
- * Description: Basic auth username
- * Example: admin
- */
- get username(): string {
- return this._username;
- }
-
- static usernameValidate(username: string): boolean {
- return typeof username === 'string' && !!username.trim();
- }
-
- readonly _web: AddressInfo;
-
- get web(): AddressInfo {
- return this._web;
- }
-
- constructor(props: IInitialConfiguration) {
- this._dns = new AddressInfo(props.dns);
- this._password = props.password.trim();
- this._username = props.username.trim();
- this._web = new AddressInfo(props.web);
- }
-
- serialize(): IInitialConfiguration {
- const data: IInitialConfiguration = {
- dns: this._dns.serialize(),
- password: this._password,
- username: this._username,
- web: this._web.serialize(),
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns: this._dns.validate().length === 0,
- web: this._web.validate().length === 0,
- username: typeof this._username === 'string' && !this._username ? true : this._username,
- password: typeof this._password === 'string' && !this._password ? true : this._password,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): InitialConfiguration {
- return new InitialConfiguration({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/InitialConfigurationBeta.ts b/client2/src/lib/entities/InitialConfigurationBeta.ts
deleted file mode 100644
index bbf09595..00000000
--- a/client2/src/lib/entities/InitialConfigurationBeta.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-import AddressInfoBeta, { IAddressInfoBeta } from './AddressInfoBeta';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IInitialConfigurationBeta {
- dns: IAddressInfoBeta;
- password: string;
- username: string;
- web: IAddressInfoBeta;
-}
-
-export default class InitialConfigurationBeta {
- readonly _dns: AddressInfoBeta;
-
- get dns(): AddressInfoBeta {
- return this._dns;
- }
-
- readonly _password: string;
-
- /**
- * Description: Basic auth password
- * Example: password
- */
- get password(): string {
- return this._password;
- }
-
- static passwordValidate(password: string): boolean {
- return typeof password === 'string' && !!password.trim();
- }
-
- readonly _username: string;
-
- /**
- * Description: Basic auth username
- * Example: admin
- */
- get username(): string {
- return this._username;
- }
-
- static usernameValidate(username: string): boolean {
- return typeof username === 'string' && !!username.trim();
- }
-
- readonly _web: AddressInfoBeta;
-
- get web(): AddressInfoBeta {
- return this._web;
- }
-
- constructor(props: IInitialConfigurationBeta) {
- this._dns = new AddressInfoBeta(props.dns);
- this._password = props.password.trim();
- this._username = props.username.trim();
- this._web = new AddressInfoBeta(props.web);
- }
-
- serialize(): IInitialConfigurationBeta {
- const data: IInitialConfigurationBeta = {
- dns: this._dns.serialize(),
- password: this._password,
- username: this._username,
- web: this._web.serialize(),
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns: this._dns.validate().length === 0,
- web: this._web.validate().length === 0,
- username: typeof this._username === 'string' && !this._username ? true : this._username,
- password: typeof this._password === 'string' && !this._password ? true : this._password,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): InitialConfigurationBeta {
- return new InitialConfigurationBeta({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/Login.ts b/client2/src/lib/entities/Login.ts
deleted file mode 100644
index 808c6f6e..00000000
--- a/client2/src/lib/entities/Login.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ILogin {
- name?: string;
- password?: string;
-}
-
-export default class Login {
- readonly _name: string | undefined;
-
- /** */
- get name(): string | undefined {
- return this._name;
- }
-
- readonly _password: string | undefined;
-
- /** */
- get password(): string | undefined {
- return this._password;
- }
-
- constructor(props: ILogin) {
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- if (typeof props.password === 'string') {
- this._password = props.password.trim();
- }
- }
-
- serialize(): ILogin {
- const data: ILogin = {
- };
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- if (typeof this._password !== 'undefined') {
- data.password = this._password;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- password: !this._password ? true : typeof this._password === 'string' && !this._password ? true : this._password,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): Login {
- return new Login({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/NetInterface.ts b/client2/src/lib/entities/NetInterface.ts
deleted file mode 100644
index c11d7a2c..00000000
--- a/client2/src/lib/entities/NetInterface.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface INetInterface {
- flags: string;
- hardware_address: string;
- ip_addresses?: string[];
- mtu: number;
- name: string;
-}
-
-export default class NetInterface {
- readonly _flags: string;
-
- /**
- * Description: Flags could be any combination of the following values, divided by the "|" character: "up", "broadcast", "loopback", "pointtopoint" and "multicast".
- *
- * Example: up|broadcast|multicast
- */
- get flags(): string {
- return this._flags;
- }
-
- static flagsValidate(flags: string): boolean {
- return typeof flags === 'string' && !!flags.trim();
- }
-
- readonly _hardware_address: string;
-
- /**
- * Description: undefined
- * Example: 52:54:00:11:09:ba
- */
- get hardwareAddress(): string {
- return this._hardware_address;
- }
-
- static hardwareAddressValidate(hardwareAddress: string): boolean {
- return typeof hardwareAddress === 'string' && !!hardwareAddress.trim();
- }
-
- readonly _ip_addresses: string[] | undefined;
-
- get ipAddresses(): string[] | undefined {
- return this._ip_addresses;
- }
-
- readonly _mtu: number;
-
- get mtu(): number {
- return this._mtu;
- }
-
- static mtuValidate(mtu: number): boolean {
- return typeof mtu === 'number';
- }
-
- readonly _name: string;
-
- /**
- * Description: undefined
- * Example: eth0
- */
- get name(): string {
- return this._name;
- }
-
- static nameValidate(name: string): boolean {
- return typeof name === 'string' && !!name.trim();
- }
-
- constructor(props: INetInterface) {
- this._flags = props.flags.trim();
- this._hardware_address = props.hardware_address.trim();
- if (props.ip_addresses) {
- this._ip_addresses = props.ip_addresses;
- }
- this._mtu = props.mtu;
- this._name = props.name.trim();
- }
-
- serialize(): INetInterface {
- const data: INetInterface = {
- flags: this._flags,
- hardware_address: this._hardware_address,
- mtu: this._mtu,
- name: this._name,
- };
- if (typeof this._ip_addresses !== 'undefined') {
- data.ip_addresses = this._ip_addresses;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- flags: typeof this._flags === 'string' && !this._flags ? true : this._flags,
- hardware_address: typeof this._hardware_address === 'string' && !this._hardware_address ? true : this._hardware_address,
- name: typeof this._name === 'string' && !this._name ? true : this._name,
- ip_addresses: !this._ip_addresses ? true : this._ip_addresses.reduce((result, p) => result && typeof p === 'string', true),
- mtu: typeof this._mtu === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): NetInterface {
- return new NetInterface({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/NetInterfaces.ts b/client2/src/lib/entities/NetInterfaces.ts
deleted file mode 100644
index 29a33304..00000000
--- a/client2/src/lib/entities/NetInterfaces.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import NetInterface, { INetInterface } from './NetInterface';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface INetInterfaces {
- [key: string]: INetInterface;
-}
-
-export default class NetInterfaces {
- readonly data: Record;
-
- constructor(props: INetInterfaces) {
- this.data = Object.entries(props).reduce>((prev, [key, value]) => {
- prev[key] = new NetInterface(value!);
- return prev;
- }, {})
- }
-
- serialize(): INetInterfaces {
- return Object.entries(this.data).reduce>((prev, [key, value]) => {
- prev[key] = value.serialize();
- return prev;
- }, {})
- }
-
- validate(): string[] {
- return []
- }
-
- update(props: INetInterfaces): NetInterfaces {
- return new NetInterfaces({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ProfileInfo.ts b/client2/src/lib/entities/ProfileInfo.ts
deleted file mode 100644
index 0a8f099c..00000000
--- a/client2/src/lib/entities/ProfileInfo.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IProfileInfo {
- name?: string;
-}
-
-export default class ProfileInfo {
- readonly _name: string | undefined;
-
- get name(): string | undefined {
- return this._name;
- }
-
- constructor(props: IProfileInfo) {
- if (typeof props.name === 'string') {
- this._name = props.name.trim();
- }
- }
-
- serialize(): IProfileInfo {
- const data: IProfileInfo = {
- };
- if (typeof this._name !== 'undefined') {
- data.name = this._name;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ProfileInfo {
- return new ProfileInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/QueryLog.ts b/client2/src/lib/entities/QueryLog.ts
deleted file mode 100644
index da2b7761..00000000
--- a/client2/src/lib/entities/QueryLog.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import QueryLogItem, { IQueryLogItem } from './QueryLogItem';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IQueryLog {
- data?: IQueryLogItem[];
- oldest?: string;
-}
-
-export default class QueryLog {
- readonly _data: QueryLogItem[] | undefined;
-
- get data(): QueryLogItem[] | undefined {
- return this._data;
- }
-
- readonly _oldest: string | undefined;
-
- /**
- * Description: undefined
- * Example: 2018-11-26T00:02:41+03:00
- */
- get oldest(): string | undefined {
- return this._oldest;
- }
-
- constructor(props: IQueryLog) {
- if (props.data) {
- this._data = props.data.map((p) => new QueryLogItem(p));
- }
- if (typeof props.oldest === 'string') {
- this._oldest = props.oldest.trim();
- }
- }
-
- serialize(): IQueryLog {
- const data: IQueryLog = {
- };
- if (typeof this._data !== 'undefined') {
- data.data = this._data.map((p) => p.serialize());
- }
- if (typeof this._oldest !== 'undefined') {
- data.oldest = this._oldest;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- oldest: !this._oldest ? true : typeof this._oldest === 'string' && !this._oldest ? true : this._oldest,
- data: !this._data ? true : this._data.reduce((result, p) => result && p.validate().length === 0, true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): QueryLog {
- return new QueryLog({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/QueryLogConfig.ts b/client2/src/lib/entities/QueryLogConfig.ts
deleted file mode 100644
index e767d72c..00000000
--- a/client2/src/lib/entities/QueryLogConfig.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IQueryLogConfig {
- anonymize_client_ip?: boolean;
- enabled?: boolean;
- interval?: number;
-}
-
-export default class QueryLogConfig {
- readonly _anonymize_client_ip: boolean | undefined;
-
- /** */
- get anonymizeClientIp(): boolean | undefined {
- return this._anonymize_client_ip;
- }
-
- readonly _enabled: boolean | undefined;
-
- /** */
- get enabled(): boolean | undefined {
- return this._enabled;
- }
-
- readonly _interval: number | undefined;
-
- /** */
- get interval(): number | undefined {
- return this._interval;
- }
-
- constructor(props: IQueryLogConfig) {
- if (typeof props.anonymize_client_ip === 'boolean') {
- this._anonymize_client_ip = props.anonymize_client_ip;
- }
- if (typeof props.enabled === 'boolean') {
- this._enabled = props.enabled;
- }
- if (typeof props.interval === 'number') {
- this._interval = props.interval;
- }
- }
-
- serialize(): IQueryLogConfig {
- const data: IQueryLogConfig = {
- };
- if (typeof this._anonymize_client_ip !== 'undefined') {
- data.anonymize_client_ip = this._anonymize_client_ip;
- }
- if (typeof this._enabled !== 'undefined') {
- data.enabled = this._enabled;
- }
- if (typeof this._interval !== 'undefined') {
- data.interval = this._interval;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
- interval: !this._interval ? true : typeof this._interval === 'number',
- anonymize_client_ip: !this._anonymize_client_ip ? true : typeof this._anonymize_client_ip === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): QueryLogConfig {
- return new QueryLogConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/QueryLogItem.ts b/client2/src/lib/entities/QueryLogItem.ts
deleted file mode 100644
index 6dffead3..00000000
--- a/client2/src/lib/entities/QueryLogItem.ts
+++ /dev/null
@@ -1,297 +0,0 @@
-import DnsAnswer, { IDnsAnswer } from './DnsAnswer';
-import DnsQuestion, { IDnsQuestion } from './DnsQuestion';
-import ResultRule, { IResultRule } from './ResultRule';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IQueryLogItem {
- answer?: IDnsAnswer[];
- answer_dnssec?: boolean;
- client?: string;
- client_id?: string;
- client_proto?: any;
- elapsedMs?: string;
- filterId?: number;
- original_answer?: IDnsAnswer[];
- question?: IDnsQuestion;
- reason?: string;
- rule?: string;
- rules?: IResultRule[];
- service_name?: string;
- status?: string;
- time?: string;
- upstream?: string;
-}
-
-export default class QueryLogItem {
- readonly _answer: DnsAnswer[] | undefined;
-
- get answer(): DnsAnswer[] | undefined {
- return this._answer;
- }
-
- readonly _answer_dnssec: boolean | undefined;
-
- get answerDnssec(): boolean | undefined {
- return this._answer_dnssec;
- }
-
- readonly _client: string | undefined;
-
- /**
- * Description: The client's IP address.
- *
- * Example: 192.168.0.1
- */
- get client(): string | undefined {
- return this._client;
- }
-
- readonly _client_id: string | undefined;
-
- /**
- * Description: The client ID, if provided in DOH, DOQ, or DOT.
- *
- * Example: cli123
- */
- get clientId(): string | undefined {
- return this._client_id;
- }
-
- readonly _client_proto: any | undefined;
-
- get clientProto(): any | undefined {
- return this._client_proto;
- }
-
- readonly _elapsedMs: string | undefined;
-
- /**
- * Description: undefined
- * Example: 54.023928
- */
- get elapsedMs(): string | undefined {
- return this._elapsedMs;
- }
-
- readonly _filterId: number | undefined;
-
- /**
- * Description: In case if there's a rule applied to this DNS request, this is ID of the filter list that the rule belongs to.
- * Deprecated: use `rules[*].filter_list_id` instead.
- *
- * Example: 123123
- */
- get filterId(): number | undefined {
- return this._filterId;
- }
-
- readonly _original_answer: DnsAnswer[] | undefined;
-
- /** */
- get originalAnswer(): DnsAnswer[] | undefined {
- return this._original_answer;
- }
-
- readonly _question: DnsQuestion | undefined;
-
- get question(): DnsQuestion | undefined {
- return this._question;
- }
-
- readonly _reason: string | undefined;
-
- /** */
- get reason(): string | undefined {
- return this._reason;
- }
-
- readonly _rule: string | undefined;
-
- /**
- * Description: Filtering rule applied to the request (if any).
- * Deprecated: use `rules[*].text` instead.
- *
- * Example: ||example.org^
- */
- get rule(): string | undefined {
- return this._rule;
- }
-
- readonly _rules: ResultRule[] | undefined;
-
- /** */
- get rules(): ResultRule[] | undefined {
- return this._rules;
- }
-
- readonly _service_name: string | undefined;
-
- /** */
- get serviceName(): string | undefined {
- return this._service_name;
- }
-
- readonly _status: string | undefined;
-
- /**
- * Description: DNS response status
- * Example: NOERROR
- */
- get status(): string | undefined {
- return this._status;
- }
-
- readonly _time: string | undefined;
-
- /**
- * Description: DNS request processing start time
- * Example: 2018-11-26T00:02:41+03:00
- */
- get time(): string | undefined {
- return this._time;
- }
-
- readonly _upstream: string | undefined;
-
- /** */
- get upstream(): string | undefined {
- return this._upstream;
- }
-
- constructor(props: IQueryLogItem) {
- if (props.answer) {
- this._answer = props.answer.map((p) => new DnsAnswer(p));
- }
- if (typeof props.answer_dnssec === 'boolean') {
- this._answer_dnssec = props.answer_dnssec;
- }
- if (typeof props.client === 'string') {
- this._client = props.client.trim();
- }
- if (typeof props.client_id === 'string') {
- this._client_id = props.client_id.trim();
- }
- if (props.client_proto) {
- this._client_proto = props.client_proto;
- }
- if (typeof props.elapsedMs === 'string') {
- this._elapsedMs = props.elapsedMs.trim();
- }
- if (typeof props.filterId === 'number') {
- this._filterId = props.filterId;
- }
- if (props.original_answer) {
- this._original_answer = props.original_answer.map((p) => new DnsAnswer(p));
- }
- if (props.question) {
- this._question = new DnsQuestion(props.question);
- }
- if (typeof props.reason === 'string') {
- this._reason = props.reason.trim();
- }
- if (typeof props.rule === 'string') {
- this._rule = props.rule.trim();
- }
- if (props.rules) {
- this._rules = props.rules.map((p) => new ResultRule(p));
- }
- if (typeof props.service_name === 'string') {
- this._service_name = props.service_name.trim();
- }
- if (typeof props.status === 'string') {
- this._status = props.status.trim();
- }
- if (typeof props.time === 'string') {
- this._time = props.time.trim();
- }
- if (typeof props.upstream === 'string') {
- this._upstream = props.upstream.trim();
- }
- }
-
- serialize(): IQueryLogItem {
- const data: IQueryLogItem = {
- };
- if (typeof this._answer !== 'undefined') {
- data.answer = this._answer.map((p) => p.serialize());
- }
- if (typeof this._answer_dnssec !== 'undefined') {
- data.answer_dnssec = this._answer_dnssec;
- }
- if (typeof this._client !== 'undefined') {
- data.client = this._client;
- }
- if (typeof this._client_id !== 'undefined') {
- data.client_id = this._client_id;
- }
- if (typeof this._client_proto !== 'undefined') {
- data.client_proto = this._client_proto;
- }
- if (typeof this._elapsedMs !== 'undefined') {
- data.elapsedMs = this._elapsedMs;
- }
- if (typeof this._filterId !== 'undefined') {
- data.filterId = this._filterId;
- }
- if (typeof this._original_answer !== 'undefined') {
- data.original_answer = this._original_answer.map((p) => p.serialize());
- }
- if (typeof this._question !== 'undefined') {
- data.question = this._question.serialize();
- }
- if (typeof this._reason !== 'undefined') {
- data.reason = this._reason;
- }
- if (typeof this._rule !== 'undefined') {
- data.rule = this._rule;
- }
- if (typeof this._rules !== 'undefined') {
- data.rules = this._rules.map((p) => p.serialize());
- }
- if (typeof this._service_name !== 'undefined') {
- data.service_name = this._service_name;
- }
- if (typeof this._status !== 'undefined') {
- data.status = this._status;
- }
- if (typeof this._time !== 'undefined') {
- data.time = this._time;
- }
- if (typeof this._upstream !== 'undefined') {
- data.upstream = this._upstream;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- answer: !this._answer ? true : this._answer.reduce((result, p) => result && p.validate().length === 0, true),
- original_answer: !this._original_answer ? true : this._original_answer.reduce((result, p) => result && p.validate().length === 0, true),
- upstream: !this._upstream ? true : typeof this._upstream === 'string' && !this._upstream ? true : this._upstream,
- answer_dnssec: !this._answer_dnssec ? true : typeof this._answer_dnssec === 'boolean',
- client: !this._client ? true : typeof this._client === 'string' && !this._client ? true : this._client,
- client_id: !this._client_id ? true : typeof this._client_id === 'string' && !this._client_id ? true : this._client_id,
- elapsedMs: !this._elapsedMs ? true : typeof this._elapsedMs === 'string' && !this._elapsedMs ? true : this._elapsedMs,
- question: !this._question ? true : this._question.validate().length === 0,
- filterId: !this._filterId ? true : typeof this._filterId === 'number',
- rule: !this._rule ? true : typeof this._rule === 'string' && !this._rule ? true : this._rule,
- rules: !this._rules ? true : this._rules.reduce((result, p) => result && p.validate().length === 0, true),
- reason: !this._reason ? true : typeof this._reason === 'string' && !this._reason ? true : this._reason,
- service_name: !this._service_name ? true : typeof this._service_name === 'string' && !this._service_name ? true : this._service_name,
- status: !this._status ? true : typeof this._status === 'string' && !this._status ? true : this._status,
- time: !this._time ? true : typeof this._time === 'string' && !this._time ? true : this._time,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): QueryLogItem {
- return new QueryLogItem({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/RemoveUrlRequest.ts b/client2/src/lib/entities/RemoveUrlRequest.ts
deleted file mode 100644
index b45571a0..00000000
--- a/client2/src/lib/entities/RemoveUrlRequest.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IRemoveUrlRequest {
- url?: string;
-}
-
-export default class RemoveUrlRequest {
- readonly _url: string | undefined;
-
- /**
- * Description: Previously added URL containing filtering rules
- * Example: https://filters.adtidy.org/windows/filters/15.txt
- */
- get url(): string | undefined {
- return this._url;
- }
-
- constructor(props: IRemoveUrlRequest) {
- if (typeof props.url === 'string') {
- this._url = props.url.trim();
- }
- }
-
- serialize(): IRemoveUrlRequest {
- const data: IRemoveUrlRequest = {
- };
- if (typeof this._url !== 'undefined') {
- data.url = this._url;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- url: !this._url ? true : typeof this._url === 'string' && !this._url ? true : this._url,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): RemoveUrlRequest {
- return new RemoveUrlRequest({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ResultRule.ts b/client2/src/lib/entities/ResultRule.ts
deleted file mode 100644
index d0f03c98..00000000
--- a/client2/src/lib/entities/ResultRule.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IResultRule {
- filter_list_id?: number;
- text?: string;
-}
-
-export default class ResultRule {
- readonly _filter_list_id: number | undefined;
-
- /**
- * Description: In case if there's a rule applied to this DNS request, this is ID of the filter list that the rule belongs to.
- *
- * Example: 123123
- */
- get filterListId(): number | undefined {
- return this._filter_list_id;
- }
-
- readonly _text: string | undefined;
-
- /**
- * Description: The text of the filtering rule applied to the request (if any).
- *
- * Example: ||example.org^
- */
- get text(): string | undefined {
- return this._text;
- }
-
- constructor(props: IResultRule) {
- if (typeof props.filter_list_id === 'number') {
- this._filter_list_id = props.filter_list_id;
- }
- if (typeof props.text === 'string') {
- this._text = props.text.trim();
- }
- }
-
- serialize(): IResultRule {
- const data: IResultRule = {
- };
- if (typeof this._filter_list_id !== 'undefined') {
- data.filter_list_id = this._filter_list_id;
- }
- if (typeof this._text !== 'undefined') {
- data.text = this._text;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- filter_list_id: !this._filter_list_id ? true : typeof this._filter_list_id === 'number',
- text: !this._text ? true : typeof this._text === 'string' && !this._text ? true : this._text,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ResultRule {
- return new ResultRule({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/RewriteEntry.ts b/client2/src/lib/entities/RewriteEntry.ts
deleted file mode 100644
index 31612b57..00000000
--- a/client2/src/lib/entities/RewriteEntry.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IRewriteEntry {
- answer?: string;
- domain?: string;
-}
-
-export default class RewriteEntry {
- readonly _answer: string | undefined;
-
- /**
- * Description: value of A, AAAA or CNAME DNS record
- * Example: 127.0.0.1
- */
- get answer(): string | undefined {
- return this._answer;
- }
-
- readonly _domain: string | undefined;
-
- /**
- * Description: Domain name
- * Example: example.org
- */
- get domain(): string | undefined {
- return this._domain;
- }
-
- constructor(props: IRewriteEntry) {
- if (typeof props.answer === 'string') {
- this._answer = props.answer.trim();
- }
- if (typeof props.domain === 'string') {
- this._domain = props.domain.trim();
- }
- }
-
- serialize(): IRewriteEntry {
- const data: IRewriteEntry = {
- };
- if (typeof this._answer !== 'undefined') {
- data.answer = this._answer;
- }
- if (typeof this._domain !== 'undefined') {
- data.domain = this._domain;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- domain: !this._domain ? true : typeof this._domain === 'string' && !this._domain ? true : this._domain,
- answer: !this._answer ? true : typeof this._answer === 'string' && !this._answer ? true : this._answer,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): RewriteEntry {
- return new RewriteEntry({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/RewriteList.ts b/client2/src/lib/entities/RewriteList.ts
deleted file mode 100644
index a92ff328..00000000
--- a/client2/src/lib/entities/RewriteList.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IRewriteList {
-}
-
-export default class RewriteList {
- constructor(props: IRewriteList) {
- }
-
- serialize(): IRewriteList {
- const data: IRewriteList = {
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): RewriteList {
- return new RewriteList({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/ServerStatus.ts b/client2/src/lib/entities/ServerStatus.ts
deleted file mode 100644
index d70f0adf..00000000
--- a/client2/src/lib/entities/ServerStatus.ts
+++ /dev/null
@@ -1,179 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IServerStatus {
- dhcp_available?: boolean;
- dns_addresses: string[];
- dns_port: number;
- http_port: number;
- language: string;
- protection_enabled: boolean;
- running: boolean;
- version: string;
-}
-
-export default class ServerStatus {
- readonly _dhcp_available: boolean | undefined;
-
- get dhcpAvailable(): boolean | undefined {
- return this._dhcp_available;
- }
-
- readonly _dns_addresses: string[];
-
- /**
- * Description: undefined
- * Example: 127.0.0.1
- */
- get dnsAddresses(): string[] {
- return this._dns_addresses;
- }
-
- static dnsAddressesValidate(dnsAddresses: string[]): boolean {
- return dnsAddresses.reduce((result, p) => result && (typeof p === 'string' && !!p.trim()), true);
- }
-
- readonly _dns_port: number;
-
- /**
- * Description: undefined
- * Example: 53
- */
- get dnsPort(): number {
- return this._dns_port;
- }
-
- static get dnsPortMinValue() {
- return 1;
- }
-
- static get dnsPortMaxValue() {
- return 65535;
- }
-
- static dnsPortValidate(dnsPort: number): boolean {
- return dnsPort >= 1 && dnsPort <= 65535;
- }
-
- readonly _http_port: number;
-
- /**
- * Description: undefined
- * Example: 80
- */
- get httpPort(): number {
- return this._http_port;
- }
-
- static get httpPortMinValue() {
- return 1;
- }
-
- static get httpPortMaxValue() {
- return 65535;
- }
-
- static httpPortValidate(httpPort: number): boolean {
- return httpPort >= 1 && httpPort <= 65535;
- }
-
- readonly _language: string;
-
- /**
- * Description: undefined
- * Example: en
- */
- get language(): string {
- return this._language;
- }
-
- static languageValidate(language: string): boolean {
- return typeof language === 'string' && !!language.trim();
- }
-
- readonly _protection_enabled: boolean;
-
- get protectionEnabled(): boolean {
- return this._protection_enabled;
- }
-
- static protectionEnabledValidate(protectionEnabled: boolean): boolean {
- return typeof protectionEnabled === 'boolean';
- }
-
- readonly _running: boolean;
-
- get running(): boolean {
- return this._running;
- }
-
- static runningValidate(running: boolean): boolean {
- return typeof running === 'boolean';
- }
-
- readonly _version: string;
-
- /**
- * Description: undefined
- * Example: 0.1
- */
- get version(): string {
- return this._version;
- }
-
- static versionValidate(version: string): boolean {
- return typeof version === 'string' && !!version.trim();
- }
-
- constructor(props: IServerStatus) {
- if (typeof props.dhcp_available === 'boolean') {
- this._dhcp_available = props.dhcp_available;
- }
- this._dns_addresses = props.dns_addresses;
- this._dns_port = props.dns_port;
- this._http_port = props.http_port;
- this._language = props.language.trim();
- this._protection_enabled = props.protection_enabled;
- this._running = props.running;
- this._version = props.version.trim();
- }
-
- serialize(): IServerStatus {
- const data: IServerStatus = {
- dns_addresses: this._dns_addresses,
- dns_port: this._dns_port,
- http_port: this._http_port,
- language: this._language,
- protection_enabled: this._protection_enabled,
- running: this._running,
- version: this._version,
- };
- if (typeof this._dhcp_available !== 'undefined') {
- data.dhcp_available = this._dhcp_available;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- dns_addresses: this._dns_addresses.reduce((result, p) => result && typeof p === 'string', true),
- dns_port: this._dns_port >= 1 && this._dns_port <= 65535,
- http_port: this._http_port >= 1 && this._http_port <= 65535,
- protection_enabled: typeof this._protection_enabled === 'boolean',
- dhcp_available: !this._dhcp_available ? true : typeof this._dhcp_available === 'boolean',
- running: typeof this._running === 'boolean',
- version: typeof this._version === 'string' && !this._version ? true : this._version,
- language: typeof this._language === 'string' && !this._language ? true : this._language,
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): ServerStatus {
- return new ServerStatus({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/Stats.ts b/client2/src/lib/entities/Stats.ts
deleted file mode 100644
index bae0e1b5..00000000
--- a/client2/src/lib/entities/Stats.ts
+++ /dev/null
@@ -1,257 +0,0 @@
-import TopArrayEntry, { ITopArrayEntry } from './TopArrayEntry';
-
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IStats {
- avg_processing_time?: number;
- blocked_filtering?: number[];
- dns_queries?: number[];
- num_blocked_filtering?: number;
- num_dns_queries?: number;
- num_replaced_parental?: number;
- num_replaced_safebrowsing?: number;
- num_replaced_safesearch?: number;
- replaced_parental?: number[];
- replaced_safebrowsing?: number[];
- time_units?: string;
- top_blocked_domains?: ITopArrayEntry[];
- top_clients?: ITopArrayEntry[];
- top_queried_domains?: ITopArrayEntry[];
-}
-
-export default class Stats {
- readonly _avg_processing_time: number | undefined;
-
- /**
- * Description: Average time in milliseconds on processing a DNS
- * Example: 0.34
- */
- get avgProcessingTime(): number | undefined {
- return this._avg_processing_time;
- }
-
- readonly _blocked_filtering: number[] | undefined;
-
- get blockedFiltering(): number[] | undefined {
- return this._blocked_filtering;
- }
-
- readonly _dns_queries: number[] | undefined;
-
- get dnsQueries(): number[] | undefined {
- return this._dns_queries;
- }
-
- readonly _num_blocked_filtering: number | undefined;
-
- /**
- * Description: Number of requests blocked by filtering rules
- * Example: 50
- */
- get numBlockedFiltering(): number | undefined {
- return this._num_blocked_filtering;
- }
-
- readonly _num_dns_queries: number | undefined;
-
- /**
- * Description: Total number of DNS queries
- * Example: 123
- */
- get numDnsQueries(): number | undefined {
- return this._num_dns_queries;
- }
-
- readonly _num_replaced_parental: number | undefined;
-
- /**
- * Description: Number of blocked adult websites
- * Example: 15
- */
- get numReplacedParental(): number | undefined {
- return this._num_replaced_parental;
- }
-
- readonly _num_replaced_safebrowsing: number | undefined;
-
- /**
- * Description: Number of requests blocked by safebrowsing module
- * Example: 5
- */
- get numReplacedSafebrowsing(): number | undefined {
- return this._num_replaced_safebrowsing;
- }
-
- readonly _num_replaced_safesearch: number | undefined;
-
- /**
- * Description: Number of requests blocked by safesearch module
- * Example: 5
- */
- get numReplacedSafesearch(): number | undefined {
- return this._num_replaced_safesearch;
- }
-
- readonly _replaced_parental: number[] | undefined;
-
- get replacedParental(): number[] | undefined {
- return this._replaced_parental;
- }
-
- readonly _replaced_safebrowsing: number[] | undefined;
-
- get replacedSafebrowsing(): number[] | undefined {
- return this._replaced_safebrowsing;
- }
-
- readonly _time_units: string | undefined;
-
- /**
- * Description: Time units
- * Example: hours
- */
- get timeUnits(): string | undefined {
- return this._time_units;
- }
-
- readonly _top_blocked_domains: TopArrayEntry[] | undefined;
-
- get topBlockedDomains(): TopArrayEntry[] | undefined {
- return this._top_blocked_domains;
- }
-
- readonly _top_clients: TopArrayEntry[] | undefined;
-
- get topClients(): TopArrayEntry[] | undefined {
- return this._top_clients;
- }
-
- readonly _top_queried_domains: TopArrayEntry[] | undefined;
-
- get topQueriedDomains(): TopArrayEntry[] | undefined {
- return this._top_queried_domains;
- }
-
- constructor(props: IStats) {
- if (typeof props.avg_processing_time === 'number') {
- this._avg_processing_time = props.avg_processing_time;
- }
- if (props.blocked_filtering) {
- this._blocked_filtering = props.blocked_filtering;
- }
- if (props.dns_queries) {
- this._dns_queries = props.dns_queries;
- }
- if (typeof props.num_blocked_filtering === 'number') {
- this._num_blocked_filtering = props.num_blocked_filtering;
- }
- if (typeof props.num_dns_queries === 'number') {
- this._num_dns_queries = props.num_dns_queries;
- }
- if (typeof props.num_replaced_parental === 'number') {
- this._num_replaced_parental = props.num_replaced_parental;
- }
- if (typeof props.num_replaced_safebrowsing === 'number') {
- this._num_replaced_safebrowsing = props.num_replaced_safebrowsing;
- }
- if (typeof props.num_replaced_safesearch === 'number') {
- this._num_replaced_safesearch = props.num_replaced_safesearch;
- }
- if (props.replaced_parental) {
- this._replaced_parental = props.replaced_parental;
- }
- if (props.replaced_safebrowsing) {
- this._replaced_safebrowsing = props.replaced_safebrowsing;
- }
- if (typeof props.time_units === 'string') {
- this._time_units = props.time_units.trim();
- }
- if (props.top_blocked_domains) {
- this._top_blocked_domains = props.top_blocked_domains.map((p) => new TopArrayEntry(p));
- }
- if (props.top_clients) {
- this._top_clients = props.top_clients.map((p) => new TopArrayEntry(p));
- }
- if (props.top_queried_domains) {
- this._top_queried_domains = props.top_queried_domains.map((p) => new TopArrayEntry(p));
- }
- }
-
- serialize(): IStats {
- const data: IStats = {
- };
- if (typeof this._avg_processing_time !== 'undefined') {
- data.avg_processing_time = this._avg_processing_time;
- }
- if (typeof this._blocked_filtering !== 'undefined') {
- data.blocked_filtering = this._blocked_filtering;
- }
- if (typeof this._dns_queries !== 'undefined') {
- data.dns_queries = this._dns_queries;
- }
- if (typeof this._num_blocked_filtering !== 'undefined') {
- data.num_blocked_filtering = this._num_blocked_filtering;
- }
- if (typeof this._num_dns_queries !== 'undefined') {
- data.num_dns_queries = this._num_dns_queries;
- }
- if (typeof this._num_replaced_parental !== 'undefined') {
- data.num_replaced_parental = this._num_replaced_parental;
- }
- if (typeof this._num_replaced_safebrowsing !== 'undefined') {
- data.num_replaced_safebrowsing = this._num_replaced_safebrowsing;
- }
- if (typeof this._num_replaced_safesearch !== 'undefined') {
- data.num_replaced_safesearch = this._num_replaced_safesearch;
- }
- if (typeof this._replaced_parental !== 'undefined') {
- data.replaced_parental = this._replaced_parental;
- }
- if (typeof this._replaced_safebrowsing !== 'undefined') {
- data.replaced_safebrowsing = this._replaced_safebrowsing;
- }
- if (typeof this._time_units !== 'undefined') {
- data.time_units = this._time_units;
- }
- if (typeof this._top_blocked_domains !== 'undefined') {
- data.top_blocked_domains = this._top_blocked_domains.map((p) => p.serialize());
- }
- if (typeof this._top_clients !== 'undefined') {
- data.top_clients = this._top_clients.map((p) => p.serialize());
- }
- if (typeof this._top_queried_domains !== 'undefined') {
- data.top_queried_domains = this._top_queried_domains.map((p) => p.serialize());
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- time_units: !this._time_units ? true : typeof this._time_units === 'string' && !this._time_units ? true : this._time_units,
- num_dns_queries: !this._num_dns_queries ? true : typeof this._num_dns_queries === 'number',
- num_blocked_filtering: !this._num_blocked_filtering ? true : typeof this._num_blocked_filtering === 'number',
- num_replaced_safebrowsing: !this._num_replaced_safebrowsing ? true : typeof this._num_replaced_safebrowsing === 'number',
- num_replaced_safesearch: !this._num_replaced_safesearch ? true : typeof this._num_replaced_safesearch === 'number',
- num_replaced_parental: !this._num_replaced_parental ? true : typeof this._num_replaced_parental === 'number',
- avg_processing_time: !this._avg_processing_time ? true : typeof this._avg_processing_time === 'number',
- top_queried_domains: !this._top_queried_domains ? true : this._top_queried_domains.reduce((result, p) => result && p.validate().length === 0, true),
- top_clients: !this._top_clients ? true : this._top_clients.reduce((result, p) => result && p.validate().length === 0, true),
- top_blocked_domains: !this._top_blocked_domains ? true : this._top_blocked_domains.reduce((result, p) => result && p.validate().length === 0, true),
- dns_queries: !this._dns_queries ? true : this._dns_queries.reduce((result, p) => result && typeof p === 'number', true),
- blocked_filtering: !this._blocked_filtering ? true : this._blocked_filtering.reduce((result, p) => result && typeof p === 'number', true),
- replaced_safebrowsing: !this._replaced_safebrowsing ? true : this._replaced_safebrowsing.reduce((result, p) => result && typeof p === 'number', true),
- replaced_parental: !this._replaced_parental ? true : this._replaced_parental.reduce((result, p) => result && typeof p === 'number', true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): Stats {
- return new Stats({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/StatsConfig.ts b/client2/src/lib/entities/StatsConfig.ts
deleted file mode 100644
index 516105ea..00000000
--- a/client2/src/lib/entities/StatsConfig.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IStatsConfig {
- interval?: number;
-}
-
-export default class StatsConfig {
- readonly _interval: number | undefined;
-
- /** */
- get interval(): number | undefined {
- return this._interval;
- }
-
- constructor(props: IStatsConfig) {
- if (typeof props.interval === 'number') {
- this._interval = props.interval;
- }
- }
-
- serialize(): IStatsConfig {
- const data: IStatsConfig = {
- };
- if (typeof this._interval !== 'undefined') {
- data.interval = this._interval;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- interval: !this._interval ? true : typeof this._interval === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): StatsConfig {
- return new StatsConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/TlsConfig.ts b/client2/src/lib/entities/TlsConfig.ts
deleted file mode 100644
index be3ecad1..00000000
--- a/client2/src/lib/entities/TlsConfig.ts
+++ /dev/null
@@ -1,404 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ITlsConfig {
- certificate_chain?: string;
- certificate_path?: string;
- dns_names?: string[];
- enabled?: boolean;
- force_https?: boolean;
- issuer?: string;
- key_type?: string;
- not_after?: string;
- not_before?: string;
- port_dns_over_quic?: number;
- port_dns_over_tls?: number;
- port_https?: number;
- private_key?: string;
- private_key_path?: string;
- server_name?: string;
- subject?: string;
- valid_cert?: boolean;
- valid_chain?: boolean;
- valid_key?: boolean;
- valid_pair?: boolean;
- warning_validation?: string;
-}
-
-export default class TlsConfig {
- readonly _certificate_chain: string | undefined;
-
- /** */
- get certificateChain(): string | undefined {
- return this._certificate_chain;
- }
-
- readonly _certificate_path: string | undefined;
-
- /** */
- get certificatePath(): string | undefined {
- return this._certificate_path;
- }
-
- readonly _dns_names: string[] | undefined;
-
- /**
- * Description: The value of SubjectAltNames field of the first certificate in the chain.
- *
- * Example: *.example.org
- */
- get dnsNames(): string[] | undefined {
- return this._dns_names;
- }
-
- readonly _enabled: boolean | undefined;
-
- /**
- * Description: enabled is the encryption (DOT/DOH/HTTPS) status
- * Example: true
- */
- get enabled(): boolean | undefined {
- return this._enabled;
- }
-
- readonly _force_https: boolean | undefined;
-
- /**
- * Description: if true, forces HTTP->HTTPS redirect
- * Example: true
- */
- get forceHttps(): boolean | undefined {
- return this._force_https;
- }
-
- readonly _issuer: string | undefined;
-
- /**
- * Description: The issuer of the first certificate in the chain.
- * Example: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
- */
- get issuer(): string | undefined {
- return this._issuer;
- }
-
- readonly _key_type: string | undefined;
-
- /**
- * Description: Key type.
- * Example: RSA
- */
- get keyType(): string | undefined {
- return this._key_type;
- }
-
- readonly _not_after: string | undefined;
-
- /**
- * Description: The NotAfter field of the first certificate in the chain.
- *
- * Example: 2019-05-01T10:47:32Z
- */
- get notAfter(): string | undefined {
- return this._not_after;
- }
-
- readonly _not_before: string | undefined;
-
- /**
- * Description: The NotBefore field of the first certificate in the chain.
- *
- * Example: 2019-01-31T10:47:32Z
- */
- get notBefore(): string | undefined {
- return this._not_before;
- }
-
- readonly _port_dns_over_quic: number | undefined;
-
- /**
- * Description: DNS-over-QUIC port. If 0, DOQ will be disabled.
- * Example: 784
- */
- get portDnsOverQuic(): number | undefined {
- return this._port_dns_over_quic;
- }
-
- readonly _port_dns_over_tls: number | undefined;
-
- /**
- * Description: DNS-over-TLS port. If 0, DOT will be disabled.
- * Example: 853
- */
- get portDnsOverTls(): number | undefined {
- return this._port_dns_over_tls;
- }
-
- readonly _port_https: number | undefined;
-
- /**
- * Description: HTTPS port. If 0, HTTPS will be disabled.
- * Example: 443
- */
- get portHttps(): number | undefined {
- return this._port_https;
- }
-
- readonly _private_key: string | undefined;
-
- /** */
- get privateKey(): string | undefined {
- return this._private_key;
- }
-
- readonly _private_key_path: string | undefined;
-
- /** */
- get privateKeyPath(): string | undefined {
- return this._private_key_path;
- }
-
- readonly _server_name: string | undefined;
-
- /**
- * Description: server_name is the hostname of your HTTPS/TLS server
- * Example: example.org
- */
- get serverName(): string | undefined {
- return this._server_name;
- }
-
- readonly _subject: string | undefined;
-
- /**
- * Description: The subject of the first certificate in the chain.
- * Example: CN=example.org
- */
- get subject(): string | undefined {
- return this._subject;
- }
-
- readonly _valid_cert: boolean | undefined;
-
- /**
- * Description: Set to true if the specified certificates chain is a valid chain of X509 certificates.
- *
- * Example: true
- */
- get validCert(): boolean | undefined {
- return this._valid_cert;
- }
-
- readonly _valid_chain: boolean | undefined;
-
- /**
- * Description: Set to true if the specified certificates chain is verified and issued by a known CA.
- *
- * Example: true
- */
- get validChain(): boolean | undefined {
- return this._valid_chain;
- }
-
- readonly _valid_key: boolean | undefined;
-
- /**
- * Description: Set to true if the key is a valid private key.
- * Example: true
- */
- get validKey(): boolean | undefined {
- return this._valid_key;
- }
-
- readonly _valid_pair: boolean | undefined;
-
- /**
- * Description: Set to true if both certificate and private key are correct.
- *
- * Example: true
- */
- get validPair(): boolean | undefined {
- return this._valid_pair;
- }
-
- readonly _warning_validation: string | undefined;
-
- /**
- * Description: A validation warning message with the issue description.
- *
- * Example: You have specified an empty certificate
- */
- get warningValidation(): string | undefined {
- return this._warning_validation;
- }
-
- constructor(props: ITlsConfig) {
- if (typeof props.certificate_chain === 'string') {
- this._certificate_chain = props.certificate_chain.trim();
- }
- if (typeof props.certificate_path === 'string') {
- this._certificate_path = props.certificate_path.trim();
- }
- if (props.dns_names) {
- this._dns_names = props.dns_names;
- }
- if (typeof props.enabled === 'boolean') {
- this._enabled = props.enabled;
- }
- if (typeof props.force_https === 'boolean') {
- this._force_https = props.force_https;
- }
- if (typeof props.issuer === 'string') {
- this._issuer = props.issuer.trim();
- }
- if (typeof props.key_type === 'string') {
- this._key_type = props.key_type.trim();
- }
- if (typeof props.not_after === 'string') {
- this._not_after = props.not_after.trim();
- }
- if (typeof props.not_before === 'string') {
- this._not_before = props.not_before.trim();
- }
- if (typeof props.port_dns_over_quic === 'number') {
- this._port_dns_over_quic = props.port_dns_over_quic;
- }
- if (typeof props.port_dns_over_tls === 'number') {
- this._port_dns_over_tls = props.port_dns_over_tls;
- }
- if (typeof props.port_https === 'number') {
- this._port_https = props.port_https;
- }
- if (typeof props.private_key === 'string') {
- this._private_key = props.private_key.trim();
- }
- if (typeof props.private_key_path === 'string') {
- this._private_key_path = props.private_key_path.trim();
- }
- if (typeof props.server_name === 'string') {
- this._server_name = props.server_name.trim();
- }
- if (typeof props.subject === 'string') {
- this._subject = props.subject.trim();
- }
- if (typeof props.valid_cert === 'boolean') {
- this._valid_cert = props.valid_cert;
- }
- if (typeof props.valid_chain === 'boolean') {
- this._valid_chain = props.valid_chain;
- }
- if (typeof props.valid_key === 'boolean') {
- this._valid_key = props.valid_key;
- }
- if (typeof props.valid_pair === 'boolean') {
- this._valid_pair = props.valid_pair;
- }
- if (typeof props.warning_validation === 'string') {
- this._warning_validation = props.warning_validation.trim();
- }
- }
-
- serialize(): ITlsConfig {
- const data: ITlsConfig = {
- };
- if (typeof this._certificate_chain !== 'undefined') {
- data.certificate_chain = this._certificate_chain;
- }
- if (typeof this._certificate_path !== 'undefined') {
- data.certificate_path = this._certificate_path;
- }
- if (typeof this._dns_names !== 'undefined') {
- data.dns_names = this._dns_names;
- }
- if (typeof this._enabled !== 'undefined') {
- data.enabled = this._enabled;
- }
- if (typeof this._force_https !== 'undefined') {
- data.force_https = this._force_https;
- }
- if (typeof this._issuer !== 'undefined') {
- data.issuer = this._issuer;
- }
- if (typeof this._key_type !== 'undefined') {
- data.key_type = this._key_type;
- }
- if (typeof this._not_after !== 'undefined') {
- data.not_after = this._not_after;
- }
- if (typeof this._not_before !== 'undefined') {
- data.not_before = this._not_before;
- }
- if (typeof this._port_dns_over_quic !== 'undefined') {
- data.port_dns_over_quic = this._port_dns_over_quic;
- }
- if (typeof this._port_dns_over_tls !== 'undefined') {
- data.port_dns_over_tls = this._port_dns_over_tls;
- }
- if (typeof this._port_https !== 'undefined') {
- data.port_https = this._port_https;
- }
- if (typeof this._private_key !== 'undefined') {
- data.private_key = this._private_key;
- }
- if (typeof this._private_key_path !== 'undefined') {
- data.private_key_path = this._private_key_path;
- }
- if (typeof this._server_name !== 'undefined') {
- data.server_name = this._server_name;
- }
- if (typeof this._subject !== 'undefined') {
- data.subject = this._subject;
- }
- if (typeof this._valid_cert !== 'undefined') {
- data.valid_cert = this._valid_cert;
- }
- if (typeof this._valid_chain !== 'undefined') {
- data.valid_chain = this._valid_chain;
- }
- if (typeof this._valid_key !== 'undefined') {
- data.valid_key = this._valid_key;
- }
- if (typeof this._valid_pair !== 'undefined') {
- data.valid_pair = this._valid_pair;
- }
- if (typeof this._warning_validation !== 'undefined') {
- data.warning_validation = this._warning_validation;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- enabled: !this._enabled ? true : typeof this._enabled === 'boolean',
- server_name: !this._server_name ? true : typeof this._server_name === 'string' && !this._server_name ? true : this._server_name,
- force_https: !this._force_https ? true : typeof this._force_https === 'boolean',
- port_https: !this._port_https ? true : typeof this._port_https === 'number',
- port_dns_over_tls: !this._port_dns_over_tls ? true : typeof this._port_dns_over_tls === 'number',
- port_dns_over_quic: !this._port_dns_over_quic ? true : typeof this._port_dns_over_quic === 'number',
- certificate_chain: !this._certificate_chain ? true : typeof this._certificate_chain === 'string' && !this._certificate_chain ? true : this._certificate_chain,
- private_key: !this._private_key ? true : typeof this._private_key === 'string' && !this._private_key ? true : this._private_key,
- certificate_path: !this._certificate_path ? true : typeof this._certificate_path === 'string' && !this._certificate_path ? true : this._certificate_path,
- private_key_path: !this._private_key_path ? true : typeof this._private_key_path === 'string' && !this._private_key_path ? true : this._private_key_path,
- valid_cert: !this._valid_cert ? true : typeof this._valid_cert === 'boolean',
- valid_chain: !this._valid_chain ? true : typeof this._valid_chain === 'boolean',
- subject: !this._subject ? true : typeof this._subject === 'string' && !this._subject ? true : this._subject,
- issuer: !this._issuer ? true : typeof this._issuer === 'string' && !this._issuer ? true : this._issuer,
- not_before: !this._not_before ? true : typeof this._not_before === 'string' && !this._not_before ? true : this._not_before,
- not_after: !this._not_after ? true : typeof this._not_after === 'string' && !this._not_after ? true : this._not_after,
- dns_names: !this._dns_names ? true : this._dns_names.reduce((result, p) => result && typeof p === 'string', true),
- valid_key: !this._valid_key ? true : typeof this._valid_key === 'boolean',
- key_type: !this._key_type ? true : typeof this._key_type === 'string' && !this._key_type ? true : this._key_type,
- warning_validation: !this._warning_validation ? true : typeof this._warning_validation === 'string' && !this._warning_validation ? true : this._warning_validation,
- valid_pair: !this._valid_pair ? true : typeof this._valid_pair === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): TlsConfig {
- return new TlsConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/TopArrayEntry.ts b/client2/src/lib/entities/TopArrayEntry.ts
deleted file mode 100644
index 2720683a..00000000
--- a/client2/src/lib/entities/TopArrayEntry.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface ITopArrayEntry {
- domain_or_ip?: number;
- [key: string]: number | undefined;
-}
-
-export default class TopArrayEntry {
- readonly _domain_or_ip: number | undefined;
-
- get domainOrIp(): number | undefined {
- return this._domain_or_ip;
- }
-
- readonly numberData: Record;
-
- constructor(props: ITopArrayEntry) {
- this.numberData = Object.entries(props).reduce>((prev, [key, value]) => {
- prev[key] = value!;
- return prev;
- }, {})
- }
-
- serialize(): ITopArrayEntry {
- return Object.entries(this.numberData).reduce>((prev, [key, value]) => {
- prev[key] = value;
- return prev;
- }, {})
- }
-
- validate(): string[] {
- const validate = {
- domain_or_ip: !this._domain_or_ip ? true : typeof this._domain_or_ip === 'number',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): TopArrayEntry {
- return new TopArrayEntry({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/UpstreamsConfig.ts b/client2/src/lib/entities/UpstreamsConfig.ts
deleted file mode 100644
index 5b9c0a6b..00000000
--- a/client2/src/lib/entities/UpstreamsConfig.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IUpstreamsConfig {
- bootstrap_dns: string[];
- upstream_dns: string[];
-}
-
-export default class UpstreamsConfig {
- readonly _bootstrap_dns: string[];
-
- /**
- * Description: Bootstrap servers, port is optional after colon. Empty value will reset it to default values.
- *
- * Example: 8.8.8.8:53,1.1.1.1:53
- */
- get bootstrapDns(): string[] {
- return this._bootstrap_dns;
- }
-
- static bootstrapDnsValidate(bootstrapDns: string[]): boolean {
- return bootstrapDns.reduce((result, p) => result && (typeof p === 'string' && !!p.trim()), true);
- }
-
- readonly _upstream_dns: string[];
-
- /**
- * Description: Upstream servers, port is optional after colon. Empty value will reset it to default values.
- *
- * Example: tls://1.1.1.1,tls://1.0.0.1
- */
- get upstreamDns(): string[] {
- return this._upstream_dns;
- }
-
- static upstreamDnsValidate(upstreamDns: string[]): boolean {
- return upstreamDns.reduce((result, p) => result && (typeof p === 'string' && !!p.trim()), true);
- }
-
- constructor(props: IUpstreamsConfig) {
- this._bootstrap_dns = props.bootstrap_dns;
- this._upstream_dns = props.upstream_dns;
- }
-
- serialize(): IUpstreamsConfig {
- const data: IUpstreamsConfig = {
- bootstrap_dns: this._bootstrap_dns,
- upstream_dns: this._upstream_dns,
- };
- return data;
- }
-
- validate(): string[] {
- const validate = {
- bootstrap_dns: this._bootstrap_dns.reduce((result, p) => result && typeof p === 'string', true),
- upstream_dns: this._upstream_dns.reduce((result, p) => result && typeof p === 'string', true),
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): UpstreamsConfig {
- return new UpstreamsConfig({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/UpstreamsConfigResponse.ts b/client2/src/lib/entities/UpstreamsConfigResponse.ts
deleted file mode 100644
index 5d827a7e..00000000
--- a/client2/src/lib/entities/UpstreamsConfigResponse.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IUpstreamsConfigResponse {
- [key: string]: string;
-}
-
-export default class UpstreamsConfigResponse {
- readonly data: Record;
-
- constructor(props: IUpstreamsConfigResponse) {
- this.data = Object.entries(props).reduce>((prev, [key, value]) => {
- prev[key] = value!;
- return prev;
- }, {})
- }
-
- serialize(): IUpstreamsConfigResponse {
- return Object.entries(this.data).reduce>((prev, [key, value]) => {
- prev[key] = value;
- return prev;
- }, {})
- }
-
- validate(): string[] {
- return []
- }
-
- update(props: IUpstreamsConfigResponse): UpstreamsConfigResponse {
- return new UpstreamsConfigResponse({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/VersionInfo.ts b/client2/src/lib/entities/VersionInfo.ts
deleted file mode 100644
index 59d4b937..00000000
--- a/client2/src/lib/entities/VersionInfo.ts
+++ /dev/null
@@ -1,115 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IVersionInfo {
- announcement?: string;
- announcement_url?: string;
- can_autoupdate?: boolean;
- disabled: boolean;
- new_version?: string;
-}
-
-export default class VersionInfo {
- readonly _announcement: string | undefined;
-
- /**
- * Description: undefined
- * Example: AdGuard Home v0.9 is now available!
- */
- get announcement(): string | undefined {
- return this._announcement;
- }
-
- readonly _announcement_url: string | undefined;
-
- /**
- * Description: undefined
- * Example: https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.9
- *
- */
- get announcementUrl(): string | undefined {
- return this._announcement_url;
- }
-
- readonly _can_autoupdate: boolean | undefined;
-
- get canAutoupdate(): boolean | undefined {
- return this._can_autoupdate;
- }
-
- readonly _disabled: boolean;
-
- /** */
- get disabled(): boolean {
- return this._disabled;
- }
-
- static disabledValidate(disabled: boolean): boolean {
- return typeof disabled === 'boolean';
- }
-
- readonly _new_version: string | undefined;
-
- /**
- * Description: undefined
- * Example: v0.9
- */
- get newVersion(): string | undefined {
- return this._new_version;
- }
-
- constructor(props: IVersionInfo) {
- if (typeof props.announcement === 'string') {
- this._announcement = props.announcement.trim();
- }
- if (typeof props.announcement_url === 'string') {
- this._announcement_url = props.announcement_url.trim();
- }
- if (typeof props.can_autoupdate === 'boolean') {
- this._can_autoupdate = props.can_autoupdate;
- }
- this._disabled = props.disabled;
- if (typeof props.new_version === 'string') {
- this._new_version = props.new_version.trim();
- }
- }
-
- serialize(): IVersionInfo {
- const data: IVersionInfo = {
- disabled: this._disabled,
- };
- if (typeof this._announcement !== 'undefined') {
- data.announcement = this._announcement;
- }
- if (typeof this._announcement_url !== 'undefined') {
- data.announcement_url = this._announcement_url;
- }
- if (typeof this._can_autoupdate !== 'undefined') {
- data.can_autoupdate = this._can_autoupdate;
- }
- if (typeof this._new_version !== 'undefined') {
- data.new_version = this._new_version;
- }
- return data;
- }
-
- validate(): string[] {
- const validate = {
- disabled: typeof this._disabled === 'boolean',
- new_version: !this._new_version ? true : typeof this._new_version === 'string' && !this._new_version ? true : this._new_version,
- announcement: !this._announcement ? true : typeof this._announcement === 'string' && !this._announcement ? true : this._announcement,
- announcement_url: !this._announcement_url ? true : typeof this._announcement_url === 'string' && !this._announcement_url ? true : this._announcement_url,
- can_autoupdate: !this._can_autoupdate ? true : typeof this._can_autoupdate === 'boolean',
- };
- const isError: string[] = [];
- Object.keys(validate).forEach((key) => {
- if (!(validate as any)[key]) {
- isError.push(key);
- }
- });
- return isError;
- }
-
- update(props: Partial): VersionInfo {
- return new VersionInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/entities/WhoisInfo.ts b/client2/src/lib/entities/WhoisInfo.ts
deleted file mode 100644
index aa5ee628..00000000
--- a/client2/src/lib/entities/WhoisInfo.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file was autogenerated. Please do not change.
-// All changes will be overwrited on commit.
-export interface IWhoisInfo {
- [key: string]: string;
-}
-
-export default class WhoisInfo {
- readonly data: Record;
-
- constructor(props: IWhoisInfo) {
- this.data = Object.entries(props).reduce>((prev, [key, value]) => {
- prev[key] = value!;
- return prev;
- }, {})
- }
-
- serialize(): IWhoisInfo {
- return Object.entries(this.data).reduce>((prev, [key, value]) => {
- prev[key] = value;
- return prev;
- }, {})
- }
-
- validate(): string[] {
- return []
- }
-
- update(props: IWhoisInfo): WhoisInfo {
- return new WhoisInfo({ ...this.serialize(), ...props });
- }
-}
diff --git a/client2/src/lib/helpers/apiErrors.ts b/client2/src/lib/helpers/apiErrors.ts
deleted file mode 100644
index c1916e1f..00000000
--- a/client2/src/lib/helpers/apiErrors.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-interface ErrorCheck {
- error?: Error;
- result?: T;
-}
-
-export function errorChecker(response: Error | any): ErrorCheck {
- if (typeof response !== 'object') {
- return { result: response };
- }
- if (response instanceof Error) {
- return { error: response };
- }
- return { result: response };
-}
diff --git a/client2/src/lib/helpers/installHelpers.ts b/client2/src/lib/helpers/installHelpers.ts
deleted file mode 100644
index a4258402..00000000
--- a/client2/src/lib/helpers/installHelpers.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export enum NETWORK_TYPE {
- LOCAL = 'LOCAL',
- ETHERNET = 'ETHERNET',
- OTHER = 'OTHER',
-}
-
-export const chechNetworkType = (network: string | undefined) => {
- if (!network) {
- return NETWORK_TYPE.OTHER;
- }
- if (network.includes('en')) {
- return NETWORK_TYPE.ETHERNET;
- }
- if (network.includes('lo')) {
- return NETWORK_TYPE.LOCAL;
- }
-};
diff --git a/client2/src/lib/theme/Content.module.pcss b/client2/src/lib/theme/Content.module.pcss
deleted file mode 100644
index 8f2246df..00000000
--- a/client2/src/lib/theme/Content.module.pcss
+++ /dev/null
@@ -1,51 +0,0 @@
-.content {
- min-height: 100vh;
-
- &_auth {
- @media (--m-viewport) {
- background-color: var(--gray100);
- background-image: url('../../assets/img/install.png');
- background-position: center 20px;
- background-repeat: no-repeat;
- background-size: 100%;
- }
- }
-
- &_inner {
- min-height: calc(100vh - var(--header-height));
- }
-}
-
-.container {
- width: 100%;
- margin: 0 auto;
- padding: 16px;
-
- @media (--l-viewport) {
- padding: 24px;
- }
-
- &_auth {
- max-width: 432px;
- padding: 24px 16px 40px;
-
- @media (--m-viewport) {
- padding: 40px 16px;
- }
- }
-}
-
-.header {
- margin-bottom: 16px;
- padding: 0 16px;
-
- @media (--m-viewport) {
- margin-bottom: 24px;
- padding: 0 24px;
- }
-}
-
-.title {
- font-size: 16px;
- font-weight: 600;
-}
diff --git a/client2/src/lib/theme/Form.module.pcss b/client2/src/lib/theme/Form.module.pcss
deleted file mode 100644
index f4988df6..00000000
--- a/client2/src/lib/theme/Form.module.pcss
+++ /dev/null
@@ -1,78 +0,0 @@
-.group {
- display: block;
- margin-bottom: 24px;
-
- &_last,
- &:last-child {
- margin-bottom: 0;
- }
-}
-
-.label {
- margin-bottom: 4px;
- font-size: 14px;
- color: var(--gray700);
-}
-
-.reveal {
- color: var(--black);
- transition: color var(--transition);
- cursor: pointer;
-
- &:hover,
- &:focus {
- color: var(--gray);
- }
-}
-
-.reveal + .suffix {
- margin-left: 16px;
-}
-
-.addon {
- display: flex;
- height: 48px;
- padding: 14px 3px 14px 14px;
- font-size: 14px;
- font-weight: 500;
- line-height: 1.4;
- cursor: pointer;
- overflow: hidden;
-
- @media (--m-viewport) {
- padding-right: 6px;
- font-size: 16px;
- line-height: 1.3;
- }
-}
-
-.addonCountry {
- min-width: 28px;
- margin-right: 3px;
-
- @media (--m-viewport) {
- margin-right: 12px;
- }
-}
-
-.addonIcon {
- position: relative;
- top: -2px;
- margin-right: 9px;
- color: var(--concrete);
-}
-
-.addonCode {
- position: relative;
- padding-left: 12px;
-
- &::before {
- content: "";
- position: absolute;
- top: -14px;
- left: 0;
- width: 1px;
- height: 48px;
- background-color: var(--borders-white);
- }
-}
diff --git a/client2/src/lib/theme/Install.module.pcss b/client2/src/lib/theme/Install.module.pcss
deleted file mode 100644
index 39b5d682..00000000
--- a/client2/src/lib/theme/Install.module.pcss
+++ /dev/null
@@ -1,130 +0,0 @@
-.title,
-.subtitle,
-.text {
- color: var(--gray900);
-}
-
-.title {
- margin-bottom: 20px;
- font-size: 28px;
- line-height: 1.1;
-}
-
-.subtitle {
- margin-bottom: 12px;
- font-size: 20px;
- line-height: 1.4;
-}
-
-.text {
- font-size: 16px;
- line-height: 1.5;
-
- &_block {
- margin-bottom: 35px;
- }
-
- &_base {
- margin-bottom: 12px;
- }
-}
-
-.danger {
- text-transform: capitalize;
- color: var(--red400);
- font-weight: bold;
-}
-
-.actions {
- display: flex;
- align-items: center;
- justify-content: space-between;
- flex-direction: column-reverse;
- margin-top: 48px;
-
- @media (--m-viewport) {
- flex-direction: row;
- }
-}
-
-.button {
- width: 100%;
- min-width: 188px;
-
- &:last-child {
- margin-bottom: 16px;
- }
-
- &:only-child {
- margin: 0;
- }
-
- @media (--m-viewport) {
- width: auto;
-
- &:first-child {
- margin-right: 12px;
- }
-
- &:last-child {
- margin-bottom: 0;
- margin-left: 12px;
- }
-
- &:only-child {
- margin: 0;
- }
- }
-}
-
-.logo {
- width: 130px;
- height: 40px;
- margin-bottom: 35px;
-
- @media (--m-viewport) {
- width: 185px;
- height: 57px;
- }
-}
-
-.ip {
- font-family: var(--font-family-monospace);
- font-size: 16px;
- font-weight: 600;
- word-break: break-all;
- color: var(--green400);
-}
-
-.options {
- margin-bottom: 48px;
-}
-
-.name {
- padding-bottom: 5px;
- border-bottom: 1px solid var(--gray300);
- margin-bottom: 16px;
- margin-top: 20px;
-}
-
-.option {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 8px;
-}
-
-.address {
- margin-right: 16px;
- word-break: break-all;
- color: var(--gray400);
-}
-
-.tabs {
- width: 100%;
-
- @media (--m-viewport) {
- width: 505px;
- margin-left: -131px;
- }
-}
diff --git a/client2/src/lib/theme/Link.module.pcss b/client2/src/lib/theme/Link.module.pcss
deleted file mode 100644
index b0751d90..00000000
--- a/client2/src/lib/theme/Link.module.pcss
+++ /dev/null
@@ -1,27 +0,0 @@
-.link {
- color: var(--green400);
- text-decoration: underline;
-
- &:hover,
- &:focus {
- color: var(--green700);
- text-decoration: none;
- }
-
- &:active {
- color: var(--green400);
- }
-
- &.gray {
- color: var(--gray900);
-
- &:hover,
- &:focus {
- color: var(--gray700);
- }
-
- &:active {
- color: var(--gray700);
- }
- }
-}
diff --git a/client2/src/lib/theme/Text.module.pcss b/client2/src/lib/theme/Text.module.pcss
deleted file mode 100644
index 55a5f4e3..00000000
--- a/client2/src/lib/theme/Text.module.pcss
+++ /dev/null
@@ -1,41 +0,0 @@
-.f14 {
- font-size: 14px;
-}
-
-.f16 {
- font-size: 16px;
-}
-
-.f20 {
- font-size: 20px;
-}
-
-.bold {
- font-weight: 700;
-}
-
-.medium {
- font-weight: 600;
-}
-
-.regular {
- font-weight: 400;
-}
-
-.code {
- padding: 3px 5px;
- font-size: 14px;
- font-family: var(--font-family-monospace);
- background-color: var(--gray300);
- border-radius: 2px;
-}
-
-.danger {
- text-transform: uppercase;
- color: var(--red400);
- font-weight: bold;
-}
-
-.center {
- text-align: center;
-}
diff --git a/client2/src/lib/theme/colors.ts b/client2/src/lib/theme/colors.ts
deleted file mode 100644
index 09b157b8..00000000
--- a/client2/src/lib/theme/colors.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export const colors = {
- red: '#c23814',
- orange: '#eb9300',
- purple: '#b267a0',
- green: '#67b279',
- gray300: '#d8d8d8',
- gray700: '#888888',
-};
diff --git a/client2/src/lib/theme/index.ts b/client2/src/lib/theme/index.ts
deleted file mode 100644
index c215d1a0..00000000
--- a/client2/src/lib/theme/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import form from './Form.module.pcss';
-import text from './Text.module.pcss';
-import install from './Install.module.pcss';
-import link from './Link.module.pcss';
-import content from './Content.module.pcss';
-
-import { colors } from './colors';
-
-const theme = {
- form,
- chartColors: colors,
- text,
- install,
- link,
- content,
-};
-
-export default theme;
diff --git a/client2/src/localization/index.ts b/client2/src/localization/index.ts
deleted file mode 100644
index a5a02eae..00000000
--- a/client2/src/localization/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Locale, DatePickerLocale, messages, DEFAULT_LOCALE, LANGUAGES } from './locales';
-
-export { Locale, DatePickerLocale, messages, DEFAULT_LOCALE, LANGUAGES };
-export const i18n = (lang: Locale) => ({
- getMessage: (key: string) => messages[lang][key],
- getUILanguage: () => lang,
- getBaseMessage: (key: string) => messages[DEFAULT_LOCALE][key] || key,
- getBaseUILanguage: () => DEFAULT_LOCALE,
-});
diff --git a/client2/src/localization/locales/en.json b/client2/src/localization/locales/en.json
deleted file mode 100644
index a0094f6a..00000000
--- a/client2/src/localization/locales/en.json
+++ /dev/null
@@ -1,137 +0,0 @@
-{
- "back": "Back",
- "ethernet": "Ethernet",
- "localhost": "localhost",
- "login": "Login",
- "password": "Password",
- "next": "Next",
- "port": "Port",
- "router": "Router",
- "username": "Username",
- "sign_in": "Sign in",
- "sign_out": "Sign out",
- "dashboard": "Dashboard",
- "setup_guide": "Setup guide",
- "query_log": "Query Log",
- "filters": "Filters",
- "settings": "Settings",
- "general_settings": "General settings",
- "dns_settings": "DNS settings",
- "encryption_settings": "Encryption settings",
- "client_settings": "Client settings",
- "dhcp_settings": "DHCP settings",
- "disable": "Disable",
- "disabled": "Disabled",
- "enable": "Enable",
- "clear": "Clear",
- "cancel": "Cancel",
-
- "login_password_title": "Reset Password",
- "login_password_link": "Forgot password?",
- "login_password_hash": "AdGuard Home stores passwords as a BCrypt-encoded hash. Here's what you need to do to change the password:",
- "login_password_step_1": "Stop AdGuard Home",
- "login_password_step_2": "Edit AdGuardHome.yaml
",
- "login_password_step_3": "Find password
field there",
- "login_password_step_4": "Replace it with the new value. You can use .htpasswd password generator tool or any online BCrypt generator tool (there are many available online).",
- "login_password_step_5": "Start AdGuard Home",
- "login_password_result": "Now you'll be able to log in to web interface using your new password.",
-
- "install_admin_interface_port_desc": "Now it is working at 3000 port, just in case, but we recomended to use 80 port. Using this ports allow to access to Web interface like to common site",
- "install_admin_interface_port": "Which port will be used",
- "install_admin_interface_title_decs": "Admin web interface is used to control AdGuard Home. You can open it in your browser and it does not require using a client-side program",
- "install_admin_interface_title": "Admin interface settings",
- "install_admin_interface_where_interface_desc": "Set what kind of networks will be able to access to Admin interface. For example: if you choose a local interface only, then Admin inteface will be accessed by this local device only",
- "install_admin_interface_where_interface": "Where can I open Admin interface",
-
- "install_all_networks_description": "All available web interfaces",
- "install_all_networks": "All networks",
- "install_choose_networks_desc": "For advanced users",
- "install_choose_networks": "Choose manually",
-
- "install_wellcome_button": "Let's go",
- "install_wellcome_desc": "You have installed AdGuard Home on your device. It is a network-wide ad-and-tracker blocking DNS server with Admin Web interface. Let’s set some settings to correct DNS working",
- "install_wellcome_title": "Welcome to AdGuard Home",
-
- "install_auth_title": "Login and password",
- "install_auth_description": "Set login and password for accessing to Web interface",
-
- "install_dns_server_title": "DNS server settings",
- "install_dns_server_desc": "AdGuard DNS server works like common DNS server but also blocks ads and tracking domains",
- "install_dns_server_network_interfaces": "Network interfaces",
- "install_dns_server_network_interfaces_desc": "You should set for what kind of networks will be use AdGuard Home DNS server. Most often you need to have available all interfaces",
- "install_dns_server_port": "Which port will be used",
- "install_dns_server_port_desc": "You have to use port 53 for correct internet working. Change this value only if you have reason",
- "install_dns_server_non_static_ip": "How to use non-static IP adresses?",
-
- "install_configure_title": "Configure your devices",
- "install_configure_danger_notice": "IMPORTANT! To start using AdGuard Home, you need to configure your devices manually",
- "install_configure_how_to_title": "How to configure %value%",
- "install_configure_router": "This setup will automatically cover all the devices connected to your home router and you will not need to configure each of them manually.
Open the preferences for your router. Usually, you can access it from your browser via a URL (like http://192.168.0.1/ or http://192.168.1.1/). You may be asked to enter the password. If you don't remember it, you can often reset the password by pressing a button on the router itself. Some routers require a specific application, which in that case should be already installed on your computer/phone.
Find the DHCP/DNS settings. Look for the DNS letters next to a field which allows two or three sets of numbers, each broken into four groups of one to three digits.
Enter your AdGuard Home server addresses there.
",
- "install_configure_windows": "Open Control Panel through Start menu or Windows search.
Go to Network and Internet category and then to Network and Sharing Center.
On the left side of the screen find Change adapter settings and click on it.
Select your active connection, right-click on it and choose Properties.
Find Internet Protocol Version 4 (TCP/IP) in the list, select it and then click on Properties again.
Choose Use the following DNS server addresses and enter your AdGuard Home server addresses.
",
- "install_configure_macos": "Click on Apple icon and go to System Preferences.
Click on Network.
Select the first connection in your list and click Advanced.
Select the DNS tab and enter your AdGuard Home server addresses.
",
- "install_configure_android": "From the Android Menu home screen, tap Settings.
Tap Wi-Fi on the menu. The screen listing all of the available networks will be shown (it is impossible to set custom DNS for mobile connection).
Long press the network you're connected to, and tap Modify Network.
On some devices, you may need to check the box for Advanced to see further settings. To adjust your Android DNS settings, you will need to switch the IP settings from DHCP to Static.
Change set DNS 1 and DNS 2 values to your AdGuard Home server addresses.
",
- "install_configure_ios": "From the home screen, tap Settings.
Choose Wi-Fi in the left menu (it is impossible to configure DNS for mobile networks).
Tap on the name of the currently active network.
In the DNS field enter your AdGuard Home server addresses.
",
- "install_configure_adresses": "AdGuard Home addresses:",
- "install_configure_dhcp": "You can't set a custom DNS server on some types of routers. In this case it may help if you set up AdGuard Home as a DHCP server . Otherwise, you should search for the manual on how to customize DNS servers for your particular router model.",
-
- "header_adguard_status_enabled": "AdGuard Home is enabled",
- "header_adguard_status_disabled": "AdGuard Home is disabled",
- "header_server_uptime": "Server uptime is %value%",
-
- "top_clients": "Top clients",
- "client_table_header": "Client",
- "requests": "Requests",
- "show_blocked_responses": "Blocked",
-
- "filter_category_general": "General",
- "query_log_configuration": "Logs configuration",
- "statistics_configuration": "Statistics configuration",
- "statistics_clear": " Clear statistics",
- "interval_24_hour": "24 hours",
- "interval_days": "| %count% day | %count% days",
- "interval_hours": "| %count% hour | %count% hours",
- "save_btn": "Save",
- "stats_reset": "Statistics reseted succesfully",
- "statistics_retention": "Statistics retention",
- "statistics_retention_desc": "If you decrease the interval value, some data will be lost",
- "query_log_enable": "Enable log",
- "query_log_clear": "Clear query logs",
- "query_log_retention": "Query logs retention",
- "query_log_cleared": "The query log has been successfully cleared",
- "anonymize_client_ip": "Anonymize client IP",
- "anonymize_client_ip_desc": "Don't save the full IP address of the client in logs and statistics",
- "query_log_retention_confirm": "If you decrease the interval value, some data will be lost",
- "query_log_confirm_clear": "Are you sure you want to clear the entire query log?",
- "query_log_reset": "Query log cleared succesfully",
- "statistics_clear_confirm": "Are you sure you want to clear statistics?",
-
- "stats_query_domain": "Top queried domains",
- "top_blocked_domains": "Top blocked domains",
- "domain": "Domain",
- "all_queries": "All queries",
-
- "block_domain_use_filters_and_hosts": "Block domains using filters and hosts files",
- "filters_interval": "Filters update interval",
- "filters_block_toggle_hint": "You can setup blocking rules in the Filters settings.",
- "use_adguard_browsing_sec": "Use AdGuard browsing security web service",
- "use_adguard_browsing_sec_hint": "AdGuard Home will check if domain is blacklisted by the browsing security web service. It will use privacy-friendly lookup API to perform the check: only a short prefix of the domain name SHA256 hash is sent to the server.",
- "use_adguard_parental": "Use AdGuard parental control web service",
- "use_adguard_parental_hint": "AdGuard Home will check if domain contains adult materials. It uses the same privacy-friendly API as the browsing security web service.",
- "enforce_safe_search": "Enforce safe search",
- "enforce_save_search_hint": "AdGuard Home can enforce safe search in the following search engines: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
-
- "dashboard_blocked_ads": "Blocked Ads",
- "dashboard_blocked_trackers": "Blocked trackers",
- "dashboard_filter_rules": "Count of filter rules",
- "dashboard_blocked_queries": "Blocked queries",
- "dashboard_filter_rules_count": "%enabled% of %all% filters",
- "dashboard_server_statistics": "Internal server statistic",
- "other" : "Other",
- "ads" : "Ads",
- "trackers" : "Trackers",
- "stats_adult": "Blocked adult websites",
- "stats_malware_phishing": "Blocked malware/phishing",
- "average_processing_time": "Average processing time",
- "milliseconds_abbreviation": "ms"
-
-}
diff --git a/client2/src/localization/locales/index.ts b/client2/src/localization/locales/index.ts
deleted file mode 100644
index 98266112..00000000
--- a/client2/src/localization/locales/index.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import 'dayjs/locale/ru';
-
-import { PickerLocale } from 'antd/es/date-picker/generatePicker';
-import ruPicker from 'antd/es/date-picker/locale/ru_RU';
-import enPicker from 'antd/es/date-picker/locale/en_GB';
-
-import ruLang from './ru.json';
-import enLang from './en.json';
-
-export enum Locale {
- en = 'en',
- ru = 'ru',
-}
-export const DatePickerLocale: Record = {
- [Locale.ru]: ruPicker,
- [Locale.en]: enPicker,
-};
-
-export const messages: Record> = {
- [Locale.ru]: ruLang,
- [Locale.en]: enLang,
-};
-
-// TODO get languages and default locale from .twosky file
-export const DEFAULT_LOCALE = Locale.en;
-
-export const LANGUAGES: { code: Locale; name: string }[] = [
- {
- code: Locale.en,
- name: 'English',
- },
- {
- code: Locale.ru,
- name: 'Русский',
- },
-];
diff --git a/client2/src/localization/locales/ru.json b/client2/src/localization/locales/ru.json
deleted file mode 100644
index af53fc02..00000000
--- a/client2/src/localization/locales/ru.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "install_wellcome_title": "Добро пожаловать в AdGuard Home",
- "install_wellcome_desc": "Русский текст"
-}
\ No newline at end of file
diff --git a/client2/src/main.pcss b/client2/src/main.pcss
deleted file mode 100644
index 9d7573ba..00000000
--- a/client2/src/main.pcss
+++ /dev/null
@@ -1,31 +0,0 @@
-:root {
- --white: #ffffff;
- --gray100: #f3f3f3;
- --gray300: #d8d8d8;
- --gray400: #a4a4a4;
- --gray700: #888888;
- --gray900: #4d4d4d;
- --black: #131313;
- --green400: #67b279;
- --green700: #4d995f;
- --red400: #c23814;
- --text-selection: #e7efff;
- --header-height: 48px;
- --transition: 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
- --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
- --font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace;
-}
-
-body {
- font-size: 16px;
- color: var(--gray900);
-}
-
-::selection {
- background: var(--text-selection);
- color: var(--black);
-}
-
-@custom-media --m-viewport (min-width: 768px);
-@custom-media --l-viewport (min-width: 992px);
-@custom-media --xl-viewport (min-width: 1200px);
diff --git a/client2/src/store/index.ts b/client2/src/store/index.ts
deleted file mode 100644
index a1c7b93b..00000000
--- a/client2/src/store/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default, Store, storeValue } from './store';
diff --git a/client2/src/store/installStore.ts b/client2/src/store/installStore.ts
deleted file mode 100644
index dfe7bfd7..00000000
--- a/client2/src/store/installStore.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { createContext } from 'react';
-import Install from './stores/Install';
-import UI from './stores/ui';
-
-export class Store {
- ui: UI;
-
- install: Install;
-
- constructor() {
- this.ui = new UI(this);
- this.install = new Install(this);
- }
-}
-
-export const storeValue = new Store();
-
-const StoreContext = createContext(storeValue);
-export default StoreContext;
diff --git a/client2/src/store/store.ts b/client2/src/store/store.ts
deleted file mode 100644
index 4debd161..00000000
--- a/client2/src/store/store.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { createContext } from 'react';
-import UI from './stores/ui';
-import Login from './stores/Login';
-import Dashboard from './stores/Dasnboard';
-import System from './stores/System';
-import GeneralSettings from './stores/GeneralSettings';
-
-export class Store {
- ui: UI;
-
- login: Login;
-
- dashboard: Dashboard;
-
- system: System;
-
- generalSettings: GeneralSettings;
-
- constructor() {
- this.ui = new UI(this);
- this.login = new Login(this);
- this.dashboard = new Dashboard(this);
- this.system = new System(this);
- this.generalSettings = new GeneralSettings(this);
- }
-
- init() {
- this.dashboard.init();
- this.system.init();
- }
-}
-
-export const storeValue = new Store();
-
-const StoreContext = createContext(storeValue);
-export default StoreContext;
diff --git a/client2/src/store/stores/Dasnboard.ts b/client2/src/store/stores/Dasnboard.ts
deleted file mode 100644
index c4aa3062..00000000
--- a/client2/src/store/stores/Dasnboard.ts
+++ /dev/null
@@ -1,120 +0,0 @@
-import { flow, makeAutoObservable, observable } from 'mobx';
-
-import clientsApi from 'Apis/clients';
-import statsApi from 'Apis/stats';
-import filteringApi from 'Apis/filtering';
-import tlsApi from 'Apis/tls';
-
-import { errorChecker } from 'Helpers/apiErrors';
-import { Store } from 'Store';
-import Stats, { IStats } from 'Entities/Stats';
-import StatsConfig, { IStatsConfig } from 'Entities/StatsConfig';
-import TlsConfig, { ITlsConfig } from 'Entities/TlsConfig';
-import { IClientsFindEntry } from 'Entities/ClientsFindEntry';
-import ClientFindSubEntry from 'Entities/ClientFindSubEntry';
-import FilterStatus, { IFilterStatus } from 'Entities/FilterStatus';
-
-import { IStore } from './utils';
-
-export default class Dashboard implements IStore {
- rootStore: Store;
-
- inited = false;
-
- stats: Stats | undefined;
-
- statsConfig: StatsConfig | undefined;
-
- clientsInfo: Map;
-
- tlsConfig: TlsConfig | undefined;
-
- filteringConfig: FilterStatus | undefined;
-
- constructor(rootStore: Store) {
- this.rootStore = rootStore;
- makeAutoObservable(this, {
- rootStore: false,
- inited: observable,
- init: flow,
-
- getStatsConfig: flow,
- getTlsConfig: flow,
- getClient: flow,
- filteringStatus: flow,
-
- stats: observable.ref,
- statsConfig: observable.ref,
- clientsInfo: observable.ref,
- tlsConfig: observable.ref,
- filteringConfig: observable.ref,
- });
- this.clientsInfo = new Map();
- if (this.rootStore.login.loggedIn) {
- this.init();
- }
- }
-
- * init() {
- yield this.getStatsConfig();
- yield this.getTlsConfig();
- yield this.getStats();
- yield this.filteringStatus();
- this.inited = true;
- }
-
- * getStats() {
- const response = yield statsApi.stats();
- const { result } = errorChecker(response);
- if (result) {
- this.stats = new Stats(result);
- if (this.stats.topClients) {
- // TODO: fix bycicle
- const topClients = this.stats.topClients.map((e) => {
- return Object.keys(e.numberData)[0];
- });
- let firstClient = topClients.shift();
- firstClient += '&';
- const topClientsReq = firstClient + topClients.map((ip, index) => `ip${index + 1}=${ip}`).join('&');
- yield this.getClient(topClientsReq);
- }
- }
- }
-
- * getClient(ip: string) {
- // if & is encoding set in clientsFind qs options - encode: false
- const response = yield clientsApi.clientsFind(ip);
- const { result } = errorChecker(response);
- if (result) {
- this.clientsInfo = new Map();
- result.forEach((client) => {
- const [clientIp, data] = Object.entries(client)[0];
- this.clientsInfo.set(clientIp, new ClientFindSubEntry(data));
- });
- }
- }
-
- * getStatsConfig() {
- const response = yield statsApi.statsInfo();
- const { result } = errorChecker(response);
- if (result) {
- this.statsConfig = new StatsConfig(result);
- }
- }
-
- * getTlsConfig() {
- const response = yield tlsApi.tlsStatus();
- const { result } = errorChecker(response);
- if (result) {
- this.tlsConfig = new TlsConfig(result);
- }
- }
-
- * filteringStatus() {
- const response = yield filteringApi.filteringStatus();
- const { result } = errorChecker(response);
- if (result) {
- this.filteringConfig = new FilterStatus(result);
- }
- }
-}
diff --git a/client2/src/store/stores/GeneralSettings.ts b/client2/src/store/stores/GeneralSettings.ts
deleted file mode 100644
index 6b5e8287..00000000
--- a/client2/src/store/stores/GeneralSettings.ts
+++ /dev/null
@@ -1,218 +0,0 @@
-import { flow, makeAutoObservable, observable } from 'mobx';
-import { Store } from 'Store';
-
-import statsApi from 'Apis/stats';
-import queryApi from 'Apis/log';
-import safeBrowsingApi from 'Apis/safebrowsing';
-import filteringApi from 'Apis/filtering';
-import parentalApi from 'Apis/parental';
-import safesearchApi from 'Apis/safesearch';
-
-import StatsConfig, { IStatsConfig } from 'Entities/StatsConfig';
-import QueryLogConfig, { IQueryLogConfig } from 'Entities/QueryLogConfig';
-import FilterConfig, { IFilterConfig } from 'Entities/FilterConfig';
-import FilterStatus, { IFilterStatus } from 'Entities/FilterStatus';
-
-import { errorChecker } from 'Helpers/apiErrors';
-
-import { IStore } from './utils';
-
-export default class SomeStore implements IStore {
- rootStore: Store;
-
- inited = false;
-
- statsConfig: StatsConfig | undefined;
-
- queryLogConfig: QueryLogConfig | undefined;
-
- safebrowsing: boolean | undefined;
-
- filteringConfig: FilterConfig | undefined;
-
- parental: boolean | undefined;
-
- safesearch: boolean | undefined;
-
- constructor(rootStore: Store) {
- this.rootStore = rootStore;
- makeAutoObservable(this, {
- rootStore: false,
- inited: observable,
- init: flow,
-
- statsConfig: observable.ref,
- queryLogConfig: observable.ref,
- safebrowsing: observable,
- filteringConfig: observable.ref,
- parental: observable,
- safesearch: observable,
-
- updateStatsConfig: flow,
- statsInfo: flow,
- statsReset: flow,
- updateQueryLogConfig: flow,
- queryLogInfo: flow,
- querylogClear: flow,
- safebrowsingDisable: flow,
- safebrowsingEnable: flow,
- safebrowsingStatus: flow,
- updateFilteringConfig: flow,
- filteringStatus: flow,
- parentalDisable: flow,
- parentalEnable: flow,
- parentalStatus: flow,
- safesearchDisable: flow,
- safesearchEnable: flow,
- safesearchStatus: flow,
- });
- }
-
- * init() {
- yield this.statsInfo();
- yield this.queryLogInfo();
- yield this.safebrowsingStatus();
- yield this.filteringStatus();
- yield this.parentalStatus();
- yield this.safesearchStatus();
- this.inited = yield true;
- }
-
- * updateStatsConfig(statsconfig: IStatsConfig) {
- const response = yield statsApi.statsConfig(statsconfig);
- const { result } = errorChecker(response);
- if (result) {
- yield this.statsInfo();
- }
- }
-
- * statsInfo() {
- const response = yield statsApi.statsInfo();
- const { result } = errorChecker(response);
- if (result) {
- this.statsConfig = new StatsConfig(result);
- }
- }
-
- * statsReset() {
- const response = yield statsApi.statsReset();
- const { result } = errorChecker(response);
- if (result) {
- yield this.statsInfo();
- return true;
- }
- }
-
- * updateQueryLogConfig(querylogconfig: IQueryLogConfig) {
- const response = yield queryApi.queryLogConfig(querylogconfig);
- const { result } = errorChecker(response);
- if (result) {
- yield this.queryLogInfo();
- }
- }
-
- * queryLogInfo() {
- const response = yield queryApi.queryLogInfo();
- const { result } = errorChecker(response);
- if (result) {
- this.queryLogConfig = new QueryLogConfig(result);
- }
- }
-
- * querylogClear() {
- const response = yield queryApi.querylogClear();
- const { result } = errorChecker(response);
- if (result) {
- yield this.queryLogInfo();
- }
- }
-
- * safebrowsingDisable() {
- const response = yield safeBrowsingApi.safebrowsingDisable();
- const { result } = errorChecker(response);
- if (result) {
- this.safebrowsing = false;
- }
- }
-
- * safebrowsingEnable() {
- const response = yield safeBrowsingApi.safebrowsingEnable();
- const { result } = errorChecker(response);
- if (result) {
- this.safebrowsing = true;
- }
- }
-
- * safebrowsingStatus() {
- const response = yield safeBrowsingApi.safebrowsingStatus();
- const { result } = errorChecker(response);
- if (result) {
- this.safebrowsing = result.enabled;
- }
- }
-
- * updateFilteringConfig(filterconfig: IFilterConfig) {
- const response = yield filteringApi.filteringConfig(filterconfig);
- const { result } = errorChecker(response);
- if (result) {
- yield this.filteringStatus();
- }
- }
-
- * filteringStatus() {
- const response = yield filteringApi.filteringStatus();
- const { result } = errorChecker(response);
- if (result) {
- this.filteringConfig = new FilterStatus(result);
- }
- }
-
- * parentalDisable() {
- const response = yield parentalApi.parentalDisable();
- const { result } = errorChecker(response);
- if (result) {
- this.parental = false;
- }
- }
-
- * parentalEnable() {
- // TODO: remove magic;
- const response = yield parentalApi.parentalEnable('sensitivity=TEEN');
- const { result } = errorChecker(response);
- if (result) {
- this.parental = true;
- }
- }
-
- * parentalStatus() {
- const response = yield parentalApi.parentalStatus();
- const { result } = errorChecker(response);
- if (result) {
- this.parental = result.enabled;
- }
- }
-
- * safesearchDisable() {
- const response = yield safesearchApi.safesearchDisable();
- const { result } = errorChecker(response);
- if (result) {
- this.safesearch = false;
- }
- }
-
- * safesearchEnable() {
- const response = yield safesearchApi.safesearchEnable();
- const { result } = errorChecker(response);
- if (result) {
- this.safesearch = true;
- }
- }
-
- * safesearchStatus() {
- const response = yield safesearchApi.safesearchStatus();
- const { result } = errorChecker(response);
- if (result) {
- this.safesearch = result.enabled;
- }
- }
-}
diff --git a/client2/src/store/stores/Install.ts b/client2/src/store/stores/Install.ts
deleted file mode 100644
index 92b2ff06..00000000
--- a/client2/src/store/stores/Install.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import InstallApi from 'Apis/install';
-import AddressesInfoBeta, { IAddressesInfoBeta } from 'Entities/AddressesInfoBeta';
-import { ICheckConfigRequestBeta } from 'Entities/CheckConfigRequestBeta';
-import CheckConfigResponse, { ICheckConfigResponse } from 'Entities/CheckConfigResponse';
-import { IInitialConfigurationBeta } from 'Entities/InitialConfigurationBeta';
-import { errorChecker } from 'Helpers/apiErrors';
-import { flow, makeAutoObservable } from 'mobx';
-
-import { Store } from 'Store/installStore';
-
-export default class Install {
- rootStore: Store;
-
- addresses: AddressesInfoBeta | null;
-
- constructor(rootStore: Store) {
- this.rootStore = rootStore;
- this.addresses = null;
-
- makeAutoObservable(this, {
- rootStore: false,
- getAddresses: flow,
- });
- this.getAddresses();
- }
-
- * getAddresses() {
- const response = yield InstallApi.installGetAddressesBeta();
- const { result } = errorChecker(response);
- if (result) {
- this.addresses = new AddressesInfoBeta(result);
- }
- }
-
- static async checkConfig(config: ICheckConfigRequestBeta) {
- const response = await InstallApi.installCheckConfigBeta(config);
- const { result } = errorChecker(response);
- if (result) {
- return new CheckConfigResponse(result);
- }
- }
-
- static async configure(config: IInitialConfigurationBeta) {
- const response = await InstallApi.installConfigureBeta(config);
- const { result } = errorChecker(response);
- if (result) {
- return true;
- }
- }
-}
diff --git a/client2/src/store/stores/Login.ts b/client2/src/store/stores/Login.ts
deleted file mode 100644
index b1534731..00000000
--- a/client2/src/store/stores/Login.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { flow, makeAutoObservable, observable } from 'mobx';
-import globalApi from 'Apis/global';
-
-import { Store } from 'Store';
-import { errorChecker } from 'Helpers/apiErrors';
-import ProfileInfo, { IProfileInfo } from 'Entities/ProfileInfo';
-import { ILogin } from 'Entities/Login';
-
-export default class Login {
- rootStore: Store;
-
- loggedIn = false;
-
- constructor(rootStore: Store) {
- this.rootStore = rootStore;
- makeAutoObservable(this, {
- loggedIn: observable,
- rootStore: false,
- checkLoggedIn: flow,
- login: flow,
- });
- this.checkLoggedIn();
- }
-
- * checkLoggedIn() {
- const response = yield globalApi.getProfile();
- const { result } = errorChecker(response);
- if (result) {
- this.loggedIn = true;
- this.rootStore.system.setProfile(new ProfileInfo(result));
- this.rootStore.init();
- }
- // TODO: make smth with result, to not duplicate the request;
- }
-
- * login(login: ILogin) {
- const response = yield globalApi.login(login);
- const { result, error } = errorChecker(response);
- if (result === 200) {
- this.loggedIn = true;
- return;
- }
- return error;
- }
-}
diff --git a/client2/src/store/stores/System.ts b/client2/src/store/stores/System.ts
deleted file mode 100644
index 41652998..00000000
--- a/client2/src/store/stores/System.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { flow, makeAutoObservable, observable, action } from 'mobx';
-import globalApi from 'Apis/global';
-
-import { Store } from 'Store';
-import { errorChecker } from 'Helpers/apiErrors';
-import ProfileInfo, { IProfileInfo } from 'Entities/ProfileInfo';
-import ServerStatus, { IServerStatus } from 'Entities/ServerStatus';
-
-import { IStore } from './utils';
-
-export default class System implements IStore {
- rootStore: Store;
-
- inited = false;
-
- status: ServerStatus | undefined;
-
- profile: ProfileInfo | undefined;
-
- constructor(rootStore: Store) {
- this.rootStore = rootStore;
- makeAutoObservable(this, {
- rootStore: false,
- inited: observable,
- getServerStatus: flow,
- init: flow,
- setProfile: action,
- switchServerStatus: flow,
- getProfile: flow,
- status: observable,
- profile: observable,
- });
- if (this.rootStore.login.loggedIn) {
- this.init();
- }
- }
-
- * init() {
- yield this.getServerStatus();
- if (!this.profile) {
- yield this.getProfile();
- }
- this.inited = true;
- }
-
- setProfile(profile: ProfileInfo) {
- this.profile = profile;
- }
-
- * getProfile() {
- const response = yield globalApi.getProfile();
- const { result } = errorChecker(response);
- if (result) {
- this.profile = new ProfileInfo(result);
- }
- }
-
- * getServerStatus() {
- const response = yield globalApi.status();
- const { result } = errorChecker(response);
- if (result) {
- this.status = new ServerStatus(result);
- }
- }
-
- * switchServerStatus(enable: boolean) {
- const response = yield globalApi.dnsConfig({
- protection_enabled: enable,
- });
- const { result } = errorChecker(response);
- if (result) {
- yield this.getServerStatus();
- }
- }
-}
diff --git a/client2/src/store/stores/ui.ts b/client2/src/store/stores/ui.ts
deleted file mode 100644
index c0d0377e..00000000
--- a/client2/src/store/stores/ui.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react';
-import { makeAutoObservable, observable, action } from 'mobx';
-import { translate } from '@adguard/translate';
-
-import { Locale, DEFAULT_LOCALE, i18n } from 'Localization';
-import { Store } from 'Store';
-import { Store as InstallStore } from 'Store/installStore';
-
-export default class UI {
- rootStore: Store | InstallStore;
-
- currentLang = DEFAULT_LOCALE;
-
- intl = translate.createReactTranslator(i18n(this.currentLang), React);
-
- sidebarOpen = false;
-
- constructor(rootStore: Store | InstallStore) {
- this.rootStore = rootStore;
- makeAutoObservable(this, {
- intl: observable.struct,
- rootStore: false,
- sidebarOpen: observable,
- toggleSidebar: action,
- });
- }
-
- updateLang = (lang: Locale) => {
- this.currentLang = lang;
- this.intl = translate.createReactTranslator(i18n(this.currentLang), React);
- };
-
- toggleSidebar = () => {
- this.sidebarOpen = !this.sidebarOpen;
- };
-}
diff --git a/client2/src/store/stores/utils.ts b/client2/src/store/stores/utils.ts
deleted file mode 100644
index df679d58..00000000
--- a/client2/src/store/stores/utils.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Store } from 'Store';
-
-export interface IStore {
- rootStore: Store;
- init: () => void;
- inited: boolean;
-}
-/*
-Each store should implement IStore to work properly if user not loggged in
-and after log in like:
-
-import { flow, makeAutoObservable, observable } from 'mobx';
-import { Store } from 'Store';
-import { IStore } from './utils';
-
-export default class SomeStore implements IStore {
- rootStore: Store;
-
- inited = false;
-
- constructor(rootStore: Store) {
- this.rootStore = rootStore;
- makeAutoObservable(this, {
- rootStore: false,
- inited: observable,
- init: flow,
- });
- if (this.rootStore.login.loggedIn) {
- this.init();
- }
- }
-
- * init() {
- this.inited = true;
- }
-}
-
-*/
diff --git a/client2/tsconfig.json b/client2/tsconfig.json
deleted file mode 100644
index fa3398ad..00000000
--- a/client2/tsconfig.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "compilerOptions": {
- "allowSyntheticDefaultImports": true,
- "alwaysStrict": true,
- "target": "es6",
- "module": "ESNext",
- "moduleResolution": "node",
- "noResolve": false,
- "noImplicitAny": true,
- "strict": true,
- "removeComments": true,
- "sourceMap": true,
- "jsx": "react",
- "resolveJsonModule": true,
- "baseUrl": "src",
- "paths": {
- "Apis/*": ["lib/apis/*"],
- "Common": ["components/common/index"],
- "Common/*": ["components/common/*"],
- "Components/*": ["components/*"],
- "Consts/*": ["lib/consts/*"],
- "Entities/*": ["lib/entities/*"],
- "Hooks": ["lib/hooks"],
- "Helpers/*": ["lib/helpers/*"],
- "Lib/*": ["lib/*"],
- "Localization": ["localization/index"],
- "Paths": ["components/App/Routes/Paths"],
- "Store": ["store/store"],
- "Store/*": ["store/*"]
- },
- "types": [
- "react",
- "react-dom",
- "node"
- ],
- "useDefineForClassFields": true
- },
- "include": ["src/**/*", "./declaration.d.ts"],
- "exclude": ["./node_modules/**/*", "./scripts/generator/**/*"]
-}
diff --git a/client2/yarn.lock b/client2/yarn.lock
deleted file mode 100644
index d171bb54..00000000
--- a/client2/yarn.lock
+++ /dev/null
@@ -1,8554 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@adguard/translate@^0.2.0":
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/@adguard/translate/-/translate-0.2.0.tgz#6b74b037167ec0cae32e6b7423cb35eb1b08a1b3"
- integrity sha512-zvpaEKMABcCCuEr7WpGRGgfdzp8L0OMuM0KUI7uwWapX+/i75ifffbWnKxi/LUdZDJu8kJPnmLN/DD5hngZuQQ==
-
-"@ant-design/colors@^5.0.0":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.0.1.tgz#09670f2f44a7473d7bc01be901c48ec10f12c7a4"
- integrity sha512-x1TUaRILaqy3zgFNo+kIqOa3eTYPt81H1/3E4dCjDP4Qvk/xaPEizLDFdRUcIx0cWwyu2LklwfyLHWpbYK8v6A==
- dependencies:
- "@ctrl/tinycolor" "^3.3.1"
-
-"@ant-design/icons-svg@^4.0.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c"
- integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==
-
-"@ant-design/icons@^4.4.0":
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.4.0.tgz#d4e4ba5910454e1d3f67a802d2aad9ee75a51dea"
- integrity sha512-+X44IouK56JbP3r7zM+Zoykv5wQlXBlxY0NTaFXGpiyYSS/Bh6HIo9aTF62QkSuDTqA3UpeNVTRFioKKRmkWDQ==
- dependencies:
- "@ant-design/colors" "^5.0.0"
- "@ant-design/icons-svg" "^4.0.0"
- "@babel/runtime" "^7.11.2"
- classnames "^2.2.6"
- insert-css "^2.0.0"
- rc-util "^5.0.1"
-
-"@ant-design/react-slick@~0.28.1":
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.28.1.tgz#2e0720838cb57ab8818384dcc96b2a8c61fcd01e"
- integrity sha512-Uk+GNexHOmiK3BMk/xvliNsNt+LYnN49u5o4lqeuMKXJlNqE9kGpEF03KpxDqu/zybO0/0yAJALha8oPtR5iHA==
- dependencies:
- "@babel/runtime" "^7.10.4"
- classnames "^2.2.5"
- json2mq "^0.2.0"
- lodash "^4.17.15"
- resize-observer-polyfill "^1.5.0"
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
- integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
-"@babel/core@>=7.9.0":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
- integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.10"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helpers" "^7.12.5"
- "@babel/parser" "^7.12.10"
- "@babel/template" "^7.12.7"
- "@babel/traverse" "^7.12.10"
- "@babel/types" "^7.12.10"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.1"
- json5 "^2.1.2"
- lodash "^4.17.19"
- semver "^5.4.1"
- source-map "^0.5.0"
-
-"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
- integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
- dependencies:
- "@babel/types" "^7.12.11"
- jsesc "^2.5.1"
- source-map "^0.5.0"
-
-"@babel/helper-function-name@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
- integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
- dependencies:
- "@babel/helper-get-function-arity" "^7.12.10"
- "@babel/template" "^7.12.7"
- "@babel/types" "^7.12.11"
-
-"@babel/helper-get-function-arity@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
- integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
- dependencies:
- "@babel/types" "^7.12.10"
-
-"@babel/helper-member-expression-to-functions@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
- integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
- dependencies:
- "@babel/types" "^7.12.7"
-
-"@babel/helper-module-imports@^7.12.1":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
- integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
- dependencies:
- "@babel/types" "^7.12.5"
-
-"@babel/helper-module-transforms@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
- integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
- dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-simple-access" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.11.0"
- "@babel/helper-validator-identifier" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
- lodash "^4.17.19"
-
-"@babel/helper-optimise-call-expression@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
- integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
- dependencies:
- "@babel/types" "^7.12.10"
-
-"@babel/helper-replace-supers@^7.12.1":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
- integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
- dependencies:
- "@babel/helper-member-expression-to-functions" "^7.12.7"
- "@babel/helper-optimise-call-expression" "^7.12.10"
- "@babel/traverse" "^7.12.10"
- "@babel/types" "^7.12.11"
-
-"@babel/helper-simple-access@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
- integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
- integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
- dependencies:
- "@babel/types" "^7.12.11"
-
-"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
- integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-
-"@babel/helpers@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
- integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
- dependencies:
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.5"
- "@babel/types" "^7.12.5"
-
-"@babel/highlight@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
- integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
- dependencies:
- "@babel/helper-validator-identifier" "^7.10.4"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
-"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
- integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
-
-"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
- integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
- dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/template@^7.10.4", "@babel/template@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
- integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/parser" "^7.12.7"
- "@babel/types" "^7.12.7"
-
-"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
- integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
- dependencies:
- "@babel/code-frame" "^7.12.11"
- "@babel/generator" "^7.12.11"
- "@babel/helper-function-name" "^7.12.11"
- "@babel/helper-split-export-declaration" "^7.12.11"
- "@babel/parser" "^7.12.11"
- "@babel/types" "^7.12.12"
- debug "^4.1.0"
- globals "^11.1.0"
- lodash "^4.17.19"
-
-"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
- integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
- dependencies:
- "@babel/helper-validator-identifier" "^7.12.11"
- lodash "^4.17.19"
- to-fast-properties "^2.0.0"
-
-"@csstools/convert-colors@^1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
- integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
-
-"@ctrl/tinycolor@^3.3.1":
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.3.3.tgz#980487763bc7c9238d6d88d1ac0dee2d4df3df68"
- integrity sha512-v75yutF4BDMv9weDQVM+K5XEfjiODhugSV729pnoxtBDO61ij2CsDnQa4N4E9xGaH3/FX5ASZjnajljT2F71tA==
-
-"@discoveryjs/json-ext@^0.5.0":
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
- integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==
-
-"@dsherret/to-absolute-glob@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1f6475dc8bd974cea07a2daf3864b317b1dd332c"
- integrity sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=
- dependencies:
- is-absolute "^1.0.0"
- is-negated-glob "^1.0.0"
-
-"@eslint/eslintrc@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318"
- integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==
- dependencies:
- ajv "^6.12.4"
- debug "^4.1.1"
- espree "^7.3.0"
- globals "^12.1.0"
- ignore "^4.0.6"
- import-fresh "^3.2.1"
- js-yaml "^3.13.1"
- lodash "^4.17.20"
- minimatch "^3.0.4"
- strip-json-comments "^3.1.1"
-
-"@nodelib/fs.scandir@2.1.4":
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
- integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
- dependencies:
- "@nodelib/fs.stat" "2.0.4"
- run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
- integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
-
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
- integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
- dependencies:
- "@nodelib/fs.scandir" "2.1.4"
- fastq "^1.6.0"
-
-"@npmcli/move-file@^1.0.1":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.0.tgz#4ef8a53d727b9e43facf35404caf55ebf92cfec8"
- integrity sha512-Iv2iq0JuyYjKeFkSR4LPaCdDZwlGK9X2cP/01nJcp3yMJ1FjNd9vpiEYvLUgzBxKPg2SFmaOhizoQsPc0LWeOQ==
- dependencies:
- mkdirp "^1.0.4"
- rimraf "^2.7.1"
-
-"@sentry/browser@5.30.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.30.0.tgz#c28f49d551db3172080caef9f18791a7fd39e3b3"
- integrity sha512-rOb58ZNVJWh1VuMuBG1mL9r54nZqKeaIlwSlvzJfc89vyfd7n6tQ1UXMN383QBz/MS5H5z44Hy5eE+7pCrYAfw==
- dependencies:
- "@sentry/core" "5.30.0"
- "@sentry/types" "5.30.0"
- "@sentry/utils" "5.30.0"
- tslib "^1.9.3"
-
-"@sentry/core@5.30.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3"
- integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==
- dependencies:
- "@sentry/hub" "5.30.0"
- "@sentry/minimal" "5.30.0"
- "@sentry/types" "5.30.0"
- "@sentry/utils" "5.30.0"
- tslib "^1.9.3"
-
-"@sentry/hub@5.30.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100"
- integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==
- dependencies:
- "@sentry/types" "5.30.0"
- "@sentry/utils" "5.30.0"
- tslib "^1.9.3"
-
-"@sentry/minimal@5.30.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b"
- integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==
- dependencies:
- "@sentry/hub" "5.30.0"
- "@sentry/types" "5.30.0"
- tslib "^1.9.3"
-
-"@sentry/react@^5.27.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.30.0.tgz#320e05f766b6a26faefa8d76d1101fd50c69f541"
- integrity sha512-dvn4mqCgbeEuUXEGp5P9PaW5j4GWTFUSdx/yG8f9IxNZv5zM+7otjog9ukrubFZvlxVxD/PrIxK0MhadfFY/Dw==
- dependencies:
- "@sentry/browser" "5.30.0"
- "@sentry/minimal" "5.30.0"
- "@sentry/types" "5.30.0"
- "@sentry/utils" "5.30.0"
- hoist-non-react-statics "^3.3.2"
- tslib "^1.9.3"
-
-"@sentry/types@5.30.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402"
- integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==
-
-"@sentry/utils@5.30.0":
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980"
- integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==
- dependencies:
- "@sentry/types" "5.30.0"
- tslib "^1.9.3"
-
-"@stylelint/postcss-css-in-js@^0.37.2":
- version "0.37.2"
- resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2"
- integrity sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==
- dependencies:
- "@babel/core" ">=7.9.0"
-
-"@stylelint/postcss-markdown@^0.36.2":
- version "0.36.2"
- resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391"
- integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==
- dependencies:
- remark "^13.0.0"
- unist-util-find-all-after "^3.0.2"
-
-"@ts-morph/common@~0.6.0":
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.6.0.tgz#cbd4ee57c5ef971511b9c5778e0bb8eb27de4783"
- integrity sha512-pI35nZz5bs3tL3btSVX2cWkAE8rc80F+Fn4TwSC6bQvn7fgn9IyLXVcAfpG6X6NBY5wN9TkSWXn/QYUkBvR/Fw==
- dependencies:
- "@dsherret/to-absolute-glob" "^2.0.2"
- fast-glob "^3.2.4"
- fs-extra "^9.0.1"
- is-negated-glob "^1.0.0"
- multimatch "^4.0.0"
- typescript "~4.0.2"
-
-"@types/anymatch@*":
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
- integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
-
-"@types/classnames@^2.2.10":
- version "2.2.11"
- resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf"
- integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw==
-
-"@types/eslint-scope@^3.7.0":
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86"
- integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==
- dependencies:
- "@types/eslint" "*"
- "@types/estree" "*"
-
-"@types/eslint@*":
- version "7.2.6"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c"
- integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==
- dependencies:
- "@types/estree" "*"
- "@types/json-schema" "*"
-
-"@types/estree@*", "@types/estree@^0.0.46":
- version "0.0.46"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
- integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==
-
-"@types/glob@^7.1.1":
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
- integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
- dependencies:
- "@types/minimatch" "*"
- "@types/node" "*"
-
-"@types/history@*":
- version "4.7.8"
- resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934"
- integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==
-
-"@types/hoist-non-react-statics@^3.3.0":
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
- integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
- dependencies:
- "@types/react" "*"
- hoist-non-react-statics "^3.3.0"
-
-"@types/html-minifier-terser@^5.0.0":
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
- integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==
-
-"@types/http-proxy@^1.17.4":
- version "1.17.5"
- resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d"
- integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==
- dependencies:
- "@types/node" "*"
-
-"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
- version "7.0.7"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
- integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
-
-"@types/json5@^0.0.29":
- version "0.0.29"
- resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
- integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
-
-"@types/mdast@^3.0.0":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
- integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==
- dependencies:
- "@types/unist" "*"
-
-"@types/minimatch@*", "@types/minimatch@^3.0.3":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
- integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
-
-"@types/minimist@^1.2.0":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
- integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==
-
-"@types/node@*":
- version "14.14.22"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18"
- integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==
-
-"@types/normalize-package-data@^2.4.0":
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
- integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
-
-"@types/parse-json@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
- integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
-
-"@types/prop-types@*":
- version "15.7.3"
- resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
- integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
-
-"@types/q@^1.5.1":
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
- integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
-
-"@types/qs@^6.9.5":
- version "6.9.5"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b"
- integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==
-
-"@types/react-dom@^16.9.8":
- version "16.9.10"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.10.tgz#4485b0bec3d41f856181b717f45fd7831101156f"
- integrity sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==
- dependencies:
- "@types/react" "^16"
-
-"@types/react-redux@^7.1.9":
- version "7.1.16"
- resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.16.tgz#0fbd04c2500c12105494c83d4a3e45c084e3cb21"
- integrity sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==
- dependencies:
- "@types/hoist-non-react-statics" "^3.3.0"
- "@types/react" "*"
- hoist-non-react-statics "^3.3.0"
- redux "^4.0.0"
-
-"@types/react-router-dom@^5.1.6":
- version "5.1.7"
- resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271"
- integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg==
- dependencies:
- "@types/history" "*"
- "@types/react" "*"
- "@types/react-router" "*"
-
-"@types/react-router@*":
- version "5.1.11"
- resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.11.tgz#b01ce4cb21bf7d6b32edc862fc1e2c0088044b5b"
- integrity sha512-ofHbZMlp0Y2baOHgsWBQ4K3AttxY61bDMkwTiBOkPg7U6C/3UwwB5WaIx28JmSVi/eX3uFEMRo61BV22fDQIvg==
- dependencies:
- "@types/history" "*"
- "@types/react" "*"
-
-"@types/react@*":
- version "17.0.0"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8"
- integrity sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==
- dependencies:
- "@types/prop-types" "*"
- csstype "^3.0.2"
-
-"@types/react@^16", "@types/react@^16.9.53":
- version "16.14.2"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.2.tgz#85dcc0947d0645349923c04ccef6018a1ab7538c"
- integrity sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==
- dependencies:
- "@types/prop-types" "*"
- csstype "^3.0.2"
-
-"@types/source-list-map@*":
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
- integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
-
-"@types/tapable@*", "@types/tapable@^1.0.5":
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74"
- integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==
-
-"@types/uglify-js@*":
- version "3.11.1"
- resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb"
- integrity sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==
- dependencies:
- source-map "^0.6.1"
-
-"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
- integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
-
-"@types/webpack-sources@*":
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10"
- integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==
- dependencies:
- "@types/node" "*"
- "@types/source-list-map" "*"
- source-map "^0.7.3"
-
-"@types/webpack@^4.41.8":
- version "4.41.26"
- resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef"
- integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==
- dependencies:
- "@types/anymatch" "*"
- "@types/node" "*"
- "@types/tapable" "*"
- "@types/uglify-js" "*"
- "@types/webpack-sources" "*"
- source-map "^0.6.0"
-
-"@typescript-eslint/eslint-plugin@^4.5.0":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.1.tgz#22dd301ce228aaab3416b14ead10b1db3e7d3180"
- integrity sha512-5JriGbYhtqMS1kRcZTQxndz1lKMwwEXKbwZbkUZNnp6MJX0+OVXnG0kOlBZP4LUAxEyzu3cs+EXd/97MJXsGfw==
- dependencies:
- "@typescript-eslint/experimental-utils" "4.14.1"
- "@typescript-eslint/scope-manager" "4.14.1"
- debug "^4.1.1"
- functional-red-black-tree "^1.0.1"
- lodash "^4.17.15"
- regexpp "^3.0.0"
- semver "^7.3.2"
- tsutils "^3.17.1"
-
-"@typescript-eslint/experimental-utils@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.1.tgz#a5c945cb24dabb96747180e1cfc8487f8066f471"
- integrity sha512-2CuHWOJwvpw0LofbyG5gvYjEyoJeSvVH2PnfUQSn0KQr4v8Dql2pr43ohmx4fdPQ/eVoTSFjTi/bsGEXl/zUUQ==
- dependencies:
- "@types/json-schema" "^7.0.3"
- "@typescript-eslint/scope-manager" "4.14.1"
- "@typescript-eslint/types" "4.14.1"
- "@typescript-eslint/typescript-estree" "4.14.1"
- eslint-scope "^5.0.0"
- eslint-utils "^2.0.0"
-
-"@typescript-eslint/parser@4.4.1":
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.4.1.tgz#25fde9c080611f303f2f33cedb145d2c59915b80"
- integrity sha512-S0fuX5lDku28Au9REYUsV+hdJpW/rNW0gWlc4SXzF/kdrRaAVX9YCxKpziH7djeWT/HFAjLZcnY7NJD8xTeUEg==
- dependencies:
- "@typescript-eslint/scope-manager" "4.4.1"
- "@typescript-eslint/types" "4.4.1"
- "@typescript-eslint/typescript-estree" "4.4.1"
- debug "^4.1.1"
-
-"@typescript-eslint/parser@^4.5.0":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.1.tgz#3bd6c24710cd557d8446625284bcc9c6d52817c6"
- integrity sha512-mL3+gU18g9JPsHZuKMZ8Z0Ss9YP1S5xYZ7n68Z98GnPq02pYNQuRXL85b9GYhl6jpdvUc45Km7hAl71vybjUmw==
- dependencies:
- "@typescript-eslint/scope-manager" "4.14.1"
- "@typescript-eslint/types" "4.14.1"
- "@typescript-eslint/typescript-estree" "4.14.1"
- debug "^4.1.1"
-
-"@typescript-eslint/scope-manager@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.14.1.tgz#8444534254c6f370e9aa974f035ced7fe713ce02"
- integrity sha512-F4bjJcSqXqHnC9JGUlnqSa3fC2YH5zTtmACS1Hk+WX/nFB0guuynVK5ev35D4XZbdKjulXBAQMyRr216kmxghw==
- dependencies:
- "@typescript-eslint/types" "4.14.1"
- "@typescript-eslint/visitor-keys" "4.14.1"
-
-"@typescript-eslint/scope-manager@4.4.1":
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz#d19447e60db2ce9c425898d62fa03b2cce8ea3f9"
- integrity sha512-2oD/ZqD4Gj41UdFeWZxegH3cVEEH/Z6Bhr/XvwTtGv66737XkR4C9IqEkebCuqArqBJQSj4AgNHHiN1okzD/wQ==
- dependencies:
- "@typescript-eslint/types" "4.4.1"
- "@typescript-eslint/visitor-keys" "4.4.1"
-
-"@typescript-eslint/types@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.1.tgz#b3d2eb91dafd0fd8b3fce7c61512ac66bd0364aa"
- integrity sha512-SkhzHdI/AllAgQSxXM89XwS1Tkic7csPdndUuTKabEwRcEfR8uQ/iPA3Dgio1rqsV3jtqZhY0QQni8rLswJM2w==
-
-"@typescript-eslint/types@4.4.1":
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.4.1.tgz#c507b35cf523bc7ba00aae5f75ee9b810cdabbc1"
- integrity sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w==
-
-"@typescript-eslint/typescript-estree@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.1.tgz#20d3b8c8e3cdc8f764bdd5e5b0606dd83da6075b"
- integrity sha512-M8+7MbzKC1PvJIA8kR2sSBnex8bsR5auatLCnVlNTJczmJgqRn8M+sAlQfkEq7M4IY3WmaNJ+LJjPVRrREVSHQ==
- dependencies:
- "@typescript-eslint/types" "4.14.1"
- "@typescript-eslint/visitor-keys" "4.14.1"
- debug "^4.1.1"
- globby "^11.0.1"
- is-glob "^4.0.1"
- lodash "^4.17.15"
- semver "^7.3.2"
- tsutils "^3.17.1"
-
-"@typescript-eslint/typescript-estree@4.4.1":
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.4.1.tgz#598f6de488106c2587d47ca2462c60f6e2797cb8"
- integrity sha512-wP/V7ScKzgSdtcY1a0pZYBoCxrCstLrgRQ2O9MmCUZDtmgxCO/TCqOTGRVwpP4/2hVfqMz/Vw1ZYrG8cVxvN3g==
- dependencies:
- "@typescript-eslint/types" "4.4.1"
- "@typescript-eslint/visitor-keys" "4.4.1"
- debug "^4.1.1"
- globby "^11.0.1"
- is-glob "^4.0.1"
- lodash "^4.17.15"
- semver "^7.3.2"
- tsutils "^3.17.1"
-
-"@typescript-eslint/visitor-keys@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.1.tgz#e93c2ff27f47ee477a929b970ca89d60a117da91"
- integrity sha512-TAblbDXOI7bd0C/9PE1G+AFo7R5uc+ty1ArDoxmrC1ah61Hn6shURKy7gLdRb1qKJmjHkqu5Oq+e4Kt0jwf1IA==
- dependencies:
- "@typescript-eslint/types" "4.14.1"
- eslint-visitor-keys "^2.0.0"
-
-"@typescript-eslint/visitor-keys@4.4.1":
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.4.1.tgz#1769dc7a9e2d7d2cfd3318b77ed8249187aed5c3"
- integrity sha512-H2JMWhLaJNeaylSnMSQFEhT/S/FsJbebQALmoJxMPMxLtlVAMy2uJP/Z543n9IizhjRayLSqoInehCeNW9rWcw==
- dependencies:
- "@typescript-eslint/types" "4.4.1"
- eslint-visitor-keys "^2.0.0"
-
-"@webassemblyjs/ast@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f"
- integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==
- dependencies:
- "@webassemblyjs/helper-numbers" "1.11.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
-
-"@webassemblyjs/floating-point-hex-parser@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c"
- integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==
-
-"@webassemblyjs/helper-api-error@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4"
- integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==
-
-"@webassemblyjs/helper-buffer@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642"
- integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==
-
-"@webassemblyjs/helper-numbers@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9"
- integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==
- dependencies:
- "@webassemblyjs/floating-point-hex-parser" "1.11.0"
- "@webassemblyjs/helper-api-error" "1.11.0"
- "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/helper-wasm-bytecode@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1"
- integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==
-
-"@webassemblyjs/helper-wasm-section@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b"
- integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==
- dependencies:
- "@webassemblyjs/ast" "1.11.0"
- "@webassemblyjs/helper-buffer" "1.11.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
- "@webassemblyjs/wasm-gen" "1.11.0"
-
-"@webassemblyjs/ieee754@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf"
- integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==
- dependencies:
- "@xtuc/ieee754" "^1.2.0"
-
-"@webassemblyjs/leb128@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b"
- integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==
- dependencies:
- "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/utf8@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf"
- integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==
-
-"@webassemblyjs/wasm-edit@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78"
- integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==
- dependencies:
- "@webassemblyjs/ast" "1.11.0"
- "@webassemblyjs/helper-buffer" "1.11.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
- "@webassemblyjs/helper-wasm-section" "1.11.0"
- "@webassemblyjs/wasm-gen" "1.11.0"
- "@webassemblyjs/wasm-opt" "1.11.0"
- "@webassemblyjs/wasm-parser" "1.11.0"
- "@webassemblyjs/wast-printer" "1.11.0"
-
-"@webassemblyjs/wasm-gen@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe"
- integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==
- dependencies:
- "@webassemblyjs/ast" "1.11.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
- "@webassemblyjs/ieee754" "1.11.0"
- "@webassemblyjs/leb128" "1.11.0"
- "@webassemblyjs/utf8" "1.11.0"
-
-"@webassemblyjs/wasm-opt@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978"
- integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==
- dependencies:
- "@webassemblyjs/ast" "1.11.0"
- "@webassemblyjs/helper-buffer" "1.11.0"
- "@webassemblyjs/wasm-gen" "1.11.0"
- "@webassemblyjs/wasm-parser" "1.11.0"
-
-"@webassemblyjs/wasm-parser@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754"
- integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==
- dependencies:
- "@webassemblyjs/ast" "1.11.0"
- "@webassemblyjs/helper-api-error" "1.11.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
- "@webassemblyjs/ieee754" "1.11.0"
- "@webassemblyjs/leb128" "1.11.0"
- "@webassemblyjs/utf8" "1.11.0"
-
-"@webassemblyjs/wast-printer@1.11.0":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e"
- integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==
- dependencies:
- "@webassemblyjs/ast" "1.11.0"
- "@xtuc/long" "4.2.2"
-
-"@webpack-cli/configtest@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.0.tgz#2aff5f1ebc6f793c13ba9b2a701d180eab17f5ee"
- integrity sha512-Un0SdBoN1h4ACnIO7EiCjWuyhNI0Jl96JC+63q6xi4HDUYRZn8Auluea9D+v9NWKc5J4sICVEltdBaVjLX39xw==
-
-"@webpack-cli/info@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.1.tgz#af98311f983d0b9fce7284cfcf1acaf1e9f4879c"
- integrity sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==
- dependencies:
- envinfo "^7.7.3"
-
-"@webpack-cli/serve@^1.2.2":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.2.2.tgz#1f8eee44f96524756268f5e3f43e9d943f864d41"
- integrity sha512-03GkWxcgFfm8+WIwcsqJb9agrSDNDDoxaNnexPnCCexP5SCE4IgFd9lNpSy+K2nFqVMpgTFw6SwbmVAVTndVew==
-
-"@xtuc/ieee754@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
- integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
-
-"@xtuc/long@4.2.2":
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
- integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-
-accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
- dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
-
-acorn-jsx@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
- integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
-
-acorn@^7.4.0:
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
- integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
-acorn@^8.0.4:
- version "8.0.5"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7"
- integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==
-
-aggregate-error@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
- integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
- dependencies:
- clean-stack "^2.0.0"
- indent-string "^4.0.0"
-
-ajv-errors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
- integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
-
-ajv-keywords@^3.1.0, ajv-keywords@^3.5.2:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
- integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-
-ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5:
- version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
- dependencies:
- fast-deep-equal "^3.1.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-ajv@^7.0.2:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2"
- integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==
- dependencies:
- fast-deep-equal "^3.1.1"
- json-schema-traverse "^1.0.0"
- require-from-string "^2.0.2"
- uri-js "^4.2.2"
-
-alphanum-sort@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
- integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-
-ansi-colors@^3.0.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
- integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-
-ansi-colors@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
- integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
-ansi-html@0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
- integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-
-ansi-regex@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
- integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
-
-ansi-styles@^3.2.0, ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-antd-dayjs-webpack-plugin@^1.0.1:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/antd-dayjs-webpack-plugin/-/antd-dayjs-webpack-plugin-1.0.6.tgz#7d98bcb51422248b8cd4a32e352a0425a3bffa3a"
- integrity sha512-UlK3BfA0iE2c5+Zz/Bd2iPAkT6cICtrKG4/swSik5MZweBHtgmu1aUQCHvICdiv39EAShdZy/edfP6mlkS/xXg==
-
-antd@^4.7.2:
- version "4.11.2"
- resolved "https://registry.yarnpkg.com/antd/-/antd-4.11.2.tgz#28c20409e2d186d8915cdc6eacf1cfb2b82d9b5b"
- integrity sha512-cdjPRlmamETae6c2uvQHRXDN5/T7I/zPiByaeolbq/FRG14JYv9hyUaydXI7n4s6rynPQ2Q6bFdCQ+/r9xZYbA==
- dependencies:
- "@ant-design/colors" "^5.0.0"
- "@ant-design/icons" "^4.4.0"
- "@ant-design/react-slick" "~0.28.1"
- "@babel/runtime" "^7.11.2"
- array-tree-filter "^2.1.0"
- classnames "^2.2.6"
- copy-to-clipboard "^3.2.0"
- lodash "^4.17.20"
- moment "^2.25.3"
- rc-cascader "~1.4.0"
- rc-checkbox "~2.3.0"
- rc-collapse "~3.1.0"
- rc-dialog "~8.5.1"
- rc-drawer "~4.2.0"
- rc-dropdown "~3.2.0"
- rc-field-form "~1.18.0"
- rc-image "~5.1.1"
- rc-input-number "~6.1.0"
- rc-mentions "~1.5.0"
- rc-menu "~8.10.0"
- rc-motion "^2.4.0"
- rc-notification "~4.5.2"
- rc-pagination "~3.1.2"
- rc-picker "~2.5.1"
- rc-progress "~3.1.0"
- rc-rate "~2.9.0"
- rc-resize-observer "^1.0.0"
- rc-select "~12.1.0"
- rc-slider "~9.7.1"
- rc-steps "~4.1.0"
- rc-switch "~3.2.0"
- rc-table "~7.12.0"
- rc-tabs "~11.7.0"
- rc-textarea "~0.3.0"
- rc-tooltip "~5.0.0"
- rc-tree "~4.1.0"
- rc-tree-select "~4.3.0"
- rc-trigger "^5.2.1"
- rc-upload "~3.3.4"
- rc-util "^5.7.0"
- scroll-into-view-if-needed "^2.2.25"
- warning "^4.0.3"
-
-anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
-arg@^4.1.0:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
- integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
-
-argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-differ@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
- integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
-
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-
-array-flatten@^2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
- integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
-
-array-includes@^3.1.1, array-includes@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
- integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
- get-intrinsic "^1.0.1"
- is-string "^1.0.5"
-
-array-tree-filter@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190"
- integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==
-
-array-union@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
- integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
- dependencies:
- array-uniq "^1.0.1"
-
-array-union@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-
-array-uniq@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
- integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
-
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
- integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-array.prototype.flat@^1.2.3:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
- integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
-
-array.prototype.flatmap@^1.2.3:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
- integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
- function-bind "^1.1.1"
-
-arrify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
- integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-
-arrify@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
- integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-astral-regex@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
- integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
-
-async-each@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
- integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-
-async-limiter@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
- integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-
-async-validator@^3.0.3:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.1.tgz#cd62b9688b2465f48420e27adb47760ab1b5559f"
- integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ==
-
-async@^2.6.2:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
- integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
- dependencies:
- lodash "^4.17.14"
-
-at-least-node@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
- integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
-atob@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-autoprefixer@^10.0.1:
- version "10.2.3"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.3.tgz#2834b55b75cfc10fa80c66000a66dc94b7136804"
- integrity sha512-vlz+iv+EnLkVaTgX8wApfYzmK3LUfK8Z9XAnmflzxMy/+oFuNK8fVGQV79SOpBv4jxk2YQJimw4hXIKZ29570A==
- dependencies:
- browserslist "^4.16.1"
- caniuse-lite "^1.0.30001178"
- colorette "^1.2.1"
- fraction.js "^4.0.13"
- normalize-range "^0.1.2"
- postcss-value-parser "^4.1.0"
-
-autoprefixer@^9.6.1, autoprefixer@^9.8.6:
- version "9.8.6"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
- integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
- dependencies:
- browserslist "^4.12.0"
- caniuse-lite "^1.0.30001109"
- colorette "^1.2.1"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^7.0.32"
- postcss-value-parser "^4.1.0"
-
-bail@^1.0.0:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
- integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
-batch@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
- integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-
-big.js@^5.2.2:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
- integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-
-binary-extensions@^1.0.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
- integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-
-bindings@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
- integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
- dependencies:
- file-uri-to-path "1.0.0"
-
-body-parser@1.19.0:
- version "1.19.0"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
- integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
- dependencies:
- bytes "3.1.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.2"
- http-errors "1.7.2"
- iconv-lite "0.4.24"
- on-finished "~2.3.0"
- qs "6.7.0"
- raw-body "2.4.0"
- type-is "~1.6.17"
-
-bonjour@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
- integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
- dependencies:
- array-flatten "^2.1.0"
- deep-equal "^1.0.1"
- dns-equal "^1.0.0"
- dns-txt "^2.0.2"
- multicast-dns "^6.0.1"
- multicast-dns-service-types "^1.1.0"
-
-boolbase@^1.0.0, boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^2.3.1, braces@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
-braces@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.6.4:
- version "4.16.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
- integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
- dependencies:
- caniuse-lite "^1.0.30001173"
- colorette "^1.2.1"
- electron-to-chromium "^1.3.634"
- escalade "^3.1.1"
- node-releases "^1.1.69"
-
-buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
-buffer-indexof@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
- integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
-
-bytes@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
- integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-
-bytes@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
- integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
-cacache@^15.0.5:
- version "15.0.5"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0"
- integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==
- dependencies:
- "@npmcli/move-file" "^1.0.1"
- chownr "^2.0.0"
- fs-minipass "^2.0.0"
- glob "^7.1.4"
- infer-owner "^1.0.4"
- lru-cache "^6.0.0"
- minipass "^3.1.1"
- minipass-collect "^1.0.2"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.2"
- mkdirp "^1.0.3"
- p-map "^4.0.0"
- promise-inflight "^1.0.1"
- rimraf "^3.0.2"
- ssri "^8.0.0"
- tar "^6.0.2"
- unique-filename "^1.1.1"
-
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
-call-bind@^1.0.0, call-bind@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
- dependencies:
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
-
-caller-callsite@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
- integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
- dependencies:
- callsites "^2.0.0"
-
-caller-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
- integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
- dependencies:
- caller-callsite "^2.0.0"
-
-callsites@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
- integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
-
-callsites@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
- integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
-camel-case@^4.1.1:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
- integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
- dependencies:
- pascal-case "^3.1.2"
- tslib "^2.0.3"
-
-camelcase-css@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
- integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-
-camelcase-keys@^6.2.2:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
- integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
- dependencies:
- camelcase "^5.3.1"
- map-obj "^4.0.0"
- quick-lru "^4.0.1"
-
-camelcase@^5.0.0, camelcase@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-camelcase@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
- integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
-
-caniuse-api@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
- integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
- dependencies:
- browserslist "^4.0.0"
- caniuse-lite "^1.0.0"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
-
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001178:
- version "1.0.30001180"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001180.tgz#67abcd6d1edf48fa5e7d1e84091d1d65ab76e33b"
- integrity sha512-n8JVqXuZMVSPKiPiypjFtDTXc4jWIdjxull0f92WLo7e1MSi3uJ3NvveakSh/aCl1QKFAvIz3vIj0v+0K+FrXw==
-
-chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chalk@^4.0.0, chalk@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
- integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-character-entities-legacy@^1.0.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
- integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
-
-character-entities@^1.0.0:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
- integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
-
-character-reference-invalid@^1.0.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
- integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
-
-chokidar@^2.1.8:
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
- integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.1"
- braces "^2.3.2"
- glob-parent "^3.1.0"
- inherits "^2.0.3"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- normalize-path "^3.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.2.1"
- upath "^1.1.1"
- optionalDependencies:
- fsevents "^1.2.7"
-
-chownr@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
- integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-
-chrome-trace-event@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
- integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
- dependencies:
- tslib "^1.9.0"
-
-class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
-classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
- integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
-
-clean-css@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
- integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
- dependencies:
- source-map "~0.6.0"
-
-clean-stack@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
- integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-
-cliui@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
- integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
- dependencies:
- string-width "^3.1.0"
- strip-ansi "^5.2.0"
- wrap-ansi "^5.1.0"
-
-clone-deep@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
- integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
- dependencies:
- is-plain-object "^2.0.4"
- kind-of "^6.0.2"
- shallow-clone "^3.0.0"
-
-clone-regexp@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f"
- integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==
- dependencies:
- is-regexp "^2.0.0"
-
-clone@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
- integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-
-coa@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
- integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
- dependencies:
- "@types/q" "^1.5.1"
- chalk "^2.4.1"
- q "^1.1.2"
-
-code-block-writer@^10.1.0:
- version "10.1.1"
- resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-10.1.1.tgz#ad5684ed4bfb2b0783c8b131281ae84ee640a42f"
- integrity sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==
-
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
-color-convert@^1.9.0, color-convert@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-name@^1.0.0, color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-string@^1.5.4:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
- integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
-color@^3.0.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
- integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
- dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.4"
-
-colorette@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
- integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
-
-commander@^2.20.0:
- version "2.20.3"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
- integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-
-commander@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
- integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
-
-commander@^6.2.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
- integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
-component-emitter@^1.2.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
- integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-
-compressible@~2.0.16:
- version "2.0.18"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
- integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
- dependencies:
- mime-db ">= 1.43.0 < 2"
-
-compression@^1.7.4:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
- integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
- dependencies:
- accepts "~1.3.5"
- bytes "3.0.0"
- compressible "~2.0.16"
- debug "2.6.9"
- on-headers "~1.0.2"
- safe-buffer "5.1.2"
- vary "~1.1.2"
-
-compute-scroll-into-view@^1.0.16:
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088"
- integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.9:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
- integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
-
-connect-history-api-fallback@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
- integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
-
-contains-path@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
- integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-
-content-disposition@0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
- integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
- dependencies:
- safe-buffer "5.1.2"
-
-content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
-convert-source-map@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
- integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
- dependencies:
- safe-buffer "~5.1.1"
-
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-
-cookie@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
- integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
-
-copy-anything@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.1.tgz#2afbce6da684bdfcbec93752fa762819cb480d9a"
- integrity sha512-lA57e7viQHOdPQcrytv5jFeudZZOXuyk47lZym279FiDQ8jeZomXiGuVf6ffMKkJ+3TIai3J1J3yi6M+/4U35g==
- dependencies:
- is-what "^3.7.1"
-
-copy-descriptor@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
- integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-copy-to-clipboard@^3.2.0:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
- integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==
- dependencies:
- toggle-selection "^1.0.6"
-
-copy-webpack-plugin@^6.2.1:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz#138cd9b436dbca0a6d071720d5414848992ec47e"
- integrity sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==
- dependencies:
- cacache "^15.0.5"
- fast-glob "^3.2.4"
- find-cache-dir "^3.3.1"
- glob-parent "^5.1.1"
- globby "^11.0.1"
- loader-utils "^2.0.0"
- normalize-path "^3.0.0"
- p-limit "^3.0.2"
- schema-utils "^3.0.0"
- serialize-javascript "^5.0.1"
- webpack-sources "^1.4.3"
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cosmiconfig@^5.0.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
- integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
- dependencies:
- import-fresh "^2.0.0"
- is-directory "^0.3.1"
- js-yaml "^3.13.1"
- parse-json "^4.0.0"
-
-cosmiconfig@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
- integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
- dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.2.1"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.10.0"
-
-create-require@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
- integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
-
-cross-spawn@^6.0.0:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-cross-spawn@^7.0.2, cross-spawn@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-css-blank-pseudo@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5"
- integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==
- dependencies:
- postcss "^7.0.5"
-
-css-color-names@0.0.4, css-color-names@^0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
- integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
-
-css-declaration-sorter@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
- integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
- dependencies:
- postcss "^7.0.1"
- timsort "^0.3.0"
-
-css-has-pseudo@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee"
- integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==
- dependencies:
- postcss "^7.0.6"
- postcss-selector-parser "^5.0.0-rc.4"
-
-css-loader@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.1.tgz#9e4de0d6636a6266a585bd0900b422c85539d25f"
- integrity sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==
- dependencies:
- camelcase "^6.2.0"
- cssesc "^3.0.0"
- icss-utils "^5.0.0"
- loader-utils "^2.0.0"
- postcss "^8.1.4"
- postcss-modules-extract-imports "^3.0.0"
- postcss-modules-local-by-default "^4.0.0"
- postcss-modules-scope "^3.0.0"
- postcss-modules-values "^4.0.0"
- postcss-value-parser "^4.1.0"
- schema-utils "^3.0.0"
- semver "^7.3.2"
-
-css-prefers-color-scheme@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4"
- integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==
- dependencies:
- postcss "^7.0.5"
-
-css-select-base-adapter@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
- integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
-
-css-select@^2.0.0, css-select@^2.0.2:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
- integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
- dependencies:
- boolbase "^1.0.0"
- css-what "^3.2.1"
- domutils "^1.7.0"
- nth-check "^1.0.2"
-
-css-tree@1.0.0-alpha.37:
- version "1.0.0-alpha.37"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
- integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
- dependencies:
- mdn-data "2.0.4"
- source-map "^0.6.1"
-
-css-tree@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5"
- integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==
- dependencies:
- mdn-data "2.0.14"
- source-map "^0.6.1"
-
-css-unit-converter@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21"
- integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==
-
-css-what@^3.2.1:
- version "3.4.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
- integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
-
-cssdb@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0"
- integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==
-
-cssesc@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
- integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
-cssnano-preset-default@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
- integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
- dependencies:
- css-declaration-sorter "^4.0.1"
- cssnano-util-raw-cache "^4.0.1"
- postcss "^7.0.0"
- postcss-calc "^7.0.1"
- postcss-colormin "^4.0.3"
- postcss-convert-values "^4.0.1"
- postcss-discard-comments "^4.0.2"
- postcss-discard-duplicates "^4.0.2"
- postcss-discard-empty "^4.0.1"
- postcss-discard-overridden "^4.0.1"
- postcss-merge-longhand "^4.0.11"
- postcss-merge-rules "^4.0.3"
- postcss-minify-font-values "^4.0.2"
- postcss-minify-gradients "^4.0.2"
- postcss-minify-params "^4.0.2"
- postcss-minify-selectors "^4.0.2"
- postcss-normalize-charset "^4.0.1"
- postcss-normalize-display-values "^4.0.2"
- postcss-normalize-positions "^4.0.2"
- postcss-normalize-repeat-style "^4.0.2"
- postcss-normalize-string "^4.0.2"
- postcss-normalize-timing-functions "^4.0.2"
- postcss-normalize-unicode "^4.0.1"
- postcss-normalize-url "^4.0.1"
- postcss-normalize-whitespace "^4.0.2"
- postcss-ordered-values "^4.1.2"
- postcss-reduce-initial "^4.0.3"
- postcss-reduce-transforms "^4.0.2"
- postcss-svgo "^4.0.2"
- postcss-unique-selectors "^4.0.1"
-
-cssnano-util-get-arguments@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
- integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
-
-cssnano-util-get-match@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
- integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
-
-cssnano-util-raw-cache@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
- integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
- dependencies:
- postcss "^7.0.0"
-
-cssnano-util-same-parent@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
- integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
-
-cssnano@^4.1.10:
- version "4.1.10"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
- integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
- dependencies:
- cosmiconfig "^5.0.0"
- cssnano-preset-default "^4.0.7"
- is-resolvable "^1.0.0"
- postcss "^7.0.0"
-
-csso@^4.0.2:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
- integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
- dependencies:
- css-tree "^1.1.2"
-
-csstype@^3.0.2:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef"
- integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw==
-
-d3-array@^2.3.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.11.0.tgz#5ed6a2869bc7d471aec8df9ff6ed9fef798facc4"
- integrity sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==
- dependencies:
- internmap "^1.0.0"
-
-"d3-color@1 - 2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e"
- integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==
-
-"d3-format@1 - 2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767"
- integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==
-
-"d3-interpolate@1.2.0 - 2", d3-interpolate@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163"
- integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==
- dependencies:
- d3-color "1 - 2"
-
-"d3-path@1 - 2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0.tgz#55d86ac131a0548adae241eebfb56b4582dd09d8"
- integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==
-
-d3-scale@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd"
- integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g==
- dependencies:
- d3-array "^2.3.0"
- d3-format "1 - 2"
- d3-interpolate "1.2.0 - 2"
- d3-time "1 - 2"
- d3-time-format "2 - 3"
-
-d3-shape@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0.tgz#2331b62fa784a2a1daac47a7233cfd69301381fd"
- integrity sha512-djpGlA779ua+rImicYyyjnOjeubyhql1Jyn1HK0bTyawuH76UQRWXd+pftr67H6Fa8hSwetkgb/0id3agKWykw==
- dependencies:
- d3-path "1 - 2"
-
-"d3-time-format@2 - 3":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6"
- integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==
- dependencies:
- d3-time "1 - 2"
-
-"d3-time@1 - 2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab"
- integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q==
-
-date-fns@^2.15.0:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b"
- integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==
-
-dayjs@^1.8.30, dayjs@^1.9.3:
- version "1.10.4"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
- integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
-
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^3.1.1, debug@^3.2.6:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
- integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
- dependencies:
- ms "^2.1.1"
-
-debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
- integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
- dependencies:
- ms "2.1.2"
-
-decamelize-keys@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
- integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
- dependencies:
- decamelize "^1.1.0"
- map-obj "^1.0.0"
-
-decamelize@^1.1.0, decamelize@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
- integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
-decimal.js-light@^2.4.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934"
- integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==
-
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-deep-equal@^1.0.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
- integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
- dependencies:
- is-arguments "^1.0.4"
- is-date-object "^1.0.1"
- is-regex "^1.0.4"
- object-is "^1.0.1"
- object-keys "^1.1.1"
- regexp.prototype.flags "^1.2.0"
-
-deep-is@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
- integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-
-deepmerge@^2.1.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
- integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
-
-default-gateway@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
- integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
- dependencies:
- execa "^1.0.0"
- ip-regex "^2.1.0"
-
-define-properties@^1.1.2, define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
- dependencies:
- is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
-del@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
- integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
- dependencies:
- "@types/glob" "^7.1.1"
- globby "^6.1.0"
- is-path-cwd "^2.0.0"
- is-path-in-cwd "^2.0.0"
- p-map "^2.0.0"
- pify "^4.0.1"
- rimraf "^2.6.3"
-
-depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
-destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
- integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-
-detect-node@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
- integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
-
-diff@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
- integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-
-dir-glob@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
- dependencies:
- path-type "^4.0.0"
-
-dns-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
- integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
-
-dns-packet@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
- integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==
- dependencies:
- ip "^1.1.0"
- safe-buffer "^5.0.1"
-
-dns-txt@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
- integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
- dependencies:
- buffer-indexof "^1.0.0"
-
-doctrine@1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
- integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
-doctrine@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
- integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
- dependencies:
- esutils "^2.0.2"
-
-doctrine@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
- integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
- dependencies:
- esutils "^2.0.2"
-
-dom-align@^1.7.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c"
- integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==
-
-dom-converter@^0.2:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
- integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
- dependencies:
- utila "~0.4"
-
-dom-helpers@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
- integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==
- dependencies:
- "@babel/runtime" "^7.1.2"
-
-dom-serializer@0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
- integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
- dependencies:
- domelementtype "^2.0.1"
- entities "^2.0.0"
-
-dom-serializer@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
- integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
- dependencies:
- domelementtype "^1.3.0"
- entities "^1.1.1"
-
-domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
-domelementtype@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
- integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
-
-domhandler@^2.3.0:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
- integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
- dependencies:
- domelementtype "1"
-
-domutils@^1.5.1, domutils@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-dot-case@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
- integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
- dependencies:
- no-case "^3.0.4"
- tslib "^2.0.3"
-
-dot-prop@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
- integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
- dependencies:
- is-obj "^2.0.0"
-
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
-electron-to-chromium@^1.3.634:
- version "1.3.645"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz#c0b269ae2ecece5aedc02dd4586397d8096affb1"
- integrity sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g==
-
-emoji-regex@^7.0.1:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
- integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
-
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-emojis-list@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
- integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
-end-of-stream@^1.1.0:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
-
-enhanced-resolve@^4.0.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
- integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.5.0"
- tapable "^1.0.0"
-
-enhanced-resolve@^5.7.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c"
- integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==
- dependencies:
- graceful-fs "^4.2.4"
- tapable "^2.2.0"
-
-enquirer@^2.3.5, enquirer@^2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
- integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
- dependencies:
- ansi-colors "^4.1.1"
-
-entities@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
- integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
-
-entities@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
- integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-
-envinfo@^7.7.3:
- version "7.7.3"
- resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc"
- integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==
-
-errno@^0.1.1, errno@^0.1.3:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
- integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
- dependencies:
- prr "~1.0.1"
-
-error-ex@^1.2.0, error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.17.2:
- version "1.17.7"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
- integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.2"
- is-regex "^1.1.1"
- object-inspect "^1.8.0"
- object-keys "^1.1.1"
- object.assign "^4.1.1"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-abstract@^1.18.0-next.1:
- version "1.18.0-next.2"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
- integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
- dependencies:
- call-bind "^1.0.2"
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.2"
- is-negative-zero "^2.0.1"
- is-regex "^1.1.1"
- object-inspect "^1.9.0"
- object-keys "^1.1.1"
- object.assign "^4.1.2"
- string.prototype.trimend "^1.0.3"
- string.prototype.trimstart "^1.0.3"
-
-es-module-lexer@^0.3.26:
- version "0.3.26"
- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b"
- integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-
-escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-eslint-config-airbnb-base@14.2.0:
- version "14.2.0"
- resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4"
- integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q==
- dependencies:
- confusing-browser-globals "^1.0.9"
- object.assign "^4.1.0"
- object.entries "^1.1.2"
-
-eslint-config-airbnb-base@^14.2.0:
- version "14.2.1"
- resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e"
- integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==
- dependencies:
- confusing-browser-globals "^1.0.10"
- object.assign "^4.1.2"
- object.entries "^1.1.2"
-
-eslint-config-airbnb-typescript@^12.0.0:
- version "12.0.0"
- resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-12.0.0.tgz#4bb6b4b72b1cfc45ef1fa0607735679ceb9a3814"
- integrity sha512-TUCVru1Z09eKnVAX5i3XoNzjcCOU3nDQz2/jQGkg1jVYm+25fKClveziSl16celfCq+npU0MBPW/ZnXdGFZ9lw==
- dependencies:
- "@typescript-eslint/parser" "4.4.1"
- eslint-config-airbnb "18.2.0"
- eslint-config-airbnb-base "14.2.0"
-
-eslint-config-airbnb@18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.0.tgz#8a82168713effce8fc08e10896a63f1235499dcd"
- integrity sha512-Fz4JIUKkrhO0du2cg5opdyPKQXOI2MvF8KUvN2710nJMT6jaRUpRE2swrJftAjVGL7T1otLM5ieo5RqS1v9Udg==
- dependencies:
- eslint-config-airbnb-base "^14.2.0"
- object.assign "^4.1.0"
- object.entries "^1.1.2"
-
-eslint-import-resolver-node@^0.3.4:
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
- integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
- dependencies:
- debug "^2.6.9"
- resolve "^1.13.1"
-
-eslint-import-resolver-typescript@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.3.0.tgz#0870988098bc6c6419c87705e6b42bee89425445"
- integrity sha512-MHSXvmj5e0SGOOBhBbt7C+fWj1bJbtSYFAD85Xeg8nvUtuooTod2HQb8bfhE9f5QyyNxEfgzqOYFCvmdDIcCuw==
- dependencies:
- debug "^4.1.1"
- glob "^7.1.6"
- is-glob "^4.0.1"
- resolve "^1.17.0"
- tsconfig-paths "^3.9.0"
-
-eslint-loader@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-4.0.2.tgz#386a1e21bcb613b3cf2d252a3b708023ccfb41ec"
- integrity sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==
- dependencies:
- find-cache-dir "^3.3.1"
- fs-extra "^8.1.0"
- loader-utils "^2.0.0"
- object-hash "^2.0.3"
- schema-utils "^2.6.5"
-
-eslint-module-utils@^2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
- integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
- dependencies:
- debug "^2.6.9"
- pkg-dir "^2.0.0"
-
-eslint-plugin-import@^2.22.1:
- version "2.22.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
- integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
- dependencies:
- array-includes "^3.1.1"
- array.prototype.flat "^1.2.3"
- contains-path "^0.1.0"
- debug "^2.6.9"
- doctrine "1.5.0"
- eslint-import-resolver-node "^0.3.4"
- eslint-module-utils "^2.6.0"
- has "^1.0.3"
- minimatch "^3.0.4"
- object.values "^1.1.1"
- read-pkg-up "^2.0.0"
- resolve "^1.17.0"
- tsconfig-paths "^3.9.0"
-
-eslint-plugin-react-hooks@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
- integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==
-
-eslint-plugin-react@^7.21.5:
- version "7.22.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269"
- integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==
- dependencies:
- array-includes "^3.1.1"
- array.prototype.flatmap "^1.2.3"
- doctrine "^2.1.0"
- has "^1.0.3"
- jsx-ast-utils "^2.4.1 || ^3.0.0"
- object.entries "^1.1.2"
- object.fromentries "^2.0.2"
- object.values "^1.1.1"
- prop-types "^15.7.2"
- resolve "^1.18.1"
- string.prototype.matchall "^4.0.2"
-
-eslint-scope@^5.0.0, eslint-scope@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
- integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^4.1.1"
-
-eslint-utils@^2.0.0, eslint-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
- integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
- dependencies:
- eslint-visitor-keys "^1.1.0"
-
-eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
- integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-
-eslint-visitor-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
- integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-
-eslint@^7.11.0:
- version "7.18.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67"
- integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@eslint/eslintrc" "^0.3.0"
- ajv "^6.10.0"
- chalk "^4.0.0"
- cross-spawn "^7.0.2"
- debug "^4.0.1"
- doctrine "^3.0.0"
- enquirer "^2.3.5"
- eslint-scope "^5.1.1"
- eslint-utils "^2.1.0"
- eslint-visitor-keys "^2.0.0"
- espree "^7.3.1"
- esquery "^1.2.0"
- esutils "^2.0.2"
- file-entry-cache "^6.0.0"
- functional-red-black-tree "^1.0.1"
- glob-parent "^5.0.0"
- globals "^12.1.0"
- ignore "^4.0.6"
- import-fresh "^3.0.0"
- imurmurhash "^0.1.4"
- is-glob "^4.0.0"
- js-yaml "^3.13.1"
- json-stable-stringify-without-jsonify "^1.0.1"
- levn "^0.4.1"
- lodash "^4.17.20"
- minimatch "^3.0.4"
- natural-compare "^1.4.0"
- optionator "^0.9.1"
- progress "^2.0.0"
- regexpp "^3.1.0"
- semver "^7.2.1"
- strip-ansi "^6.0.0"
- strip-json-comments "^3.1.0"
- table "^6.0.4"
- text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
-
-espree@^7.3.0, espree@^7.3.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
- integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
- dependencies:
- acorn "^7.4.0"
- acorn-jsx "^5.3.1"
- eslint-visitor-keys "^1.3.0"
-
-esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
-esquery@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
- integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
- dependencies:
- estraverse "^5.1.0"
-
-esrecurse@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
- integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
- dependencies:
- estraverse "^5.2.0"
-
-estraverse@^4.1.1:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
- integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-
-estraverse@^5.1.0, estraverse@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
- integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
-
-esutils@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
- integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-
-eventemitter3@^4.0.0, eventemitter3@^4.0.1:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
- integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-
-events@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
- integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
-
-eventsource@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0"
- integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==
- dependencies:
- original "^1.0.0"
-
-execa@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
- integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
- dependencies:
- cross-spawn "^6.0.0"
- get-stream "^4.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
-execa@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376"
- integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==
- 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"
-
-execall@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45"
- integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==
- dependencies:
- clone-regexp "^2.1.0"
-
-expand-brackets@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
- dependencies:
- debug "^2.3.3"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- posix-character-classes "^0.1.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-express@^4.17.1:
- version "4.17.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
- integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
- dependencies:
- accepts "~1.3.7"
- array-flatten "1.1.1"
- body-parser "1.19.0"
- content-disposition "0.5.3"
- content-type "~1.0.4"
- cookie "0.4.0"
- cookie-signature "1.0.6"
- debug "2.6.9"
- depd "~1.1.2"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- finalhandler "~1.1.2"
- fresh "0.5.2"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "~2.3.0"
- parseurl "~1.3.3"
- path-to-regexp "0.1.7"
- proxy-addr "~2.0.5"
- qs "6.7.0"
- range-parser "~1.2.1"
- safe-buffer "5.1.2"
- send "0.17.1"
- serve-static "1.14.1"
- setprototypeof "1.1.1"
- statuses "~1.5.0"
- type-is "~1.6.18"
- utils-merge "1.0.1"
- vary "~1.1.2"
-
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extend@^3.0.0, extend@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
- dependencies:
- array-unique "^0.3.2"
- define-property "^1.0.0"
- expand-brackets "^2.1.4"
- extend-shallow "^2.0.1"
- fragment-cache "^0.2.1"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-fast-deep-equal@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
- integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.5:
- version "3.2.5"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
- integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.0"
- merge2 "^1.3.0"
- micromatch "^4.0.2"
- picomatch "^2.2.1"
-
-fast-json-stable-stringify@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
- integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
-fast-levenshtein@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
- integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-
-fastest-levenshtein@^1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
- integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
-
-fastq@^1.6.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb"
- integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==
- dependencies:
- reusify "^1.0.4"
-
-faye-websocket@^0.11.3:
- version "0.11.3"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
- integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
- dependencies:
- websocket-driver ">=0.5.1"
-
-file-entry-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
- integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==
- dependencies:
- flat-cache "^3.0.4"
-
-file-loader@^6.1.1:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
- integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
- dependencies:
- loader-utils "^2.0.0"
- schema-utils "^3.0.0"
-
-file-uri-to-path@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
- integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-finalhandler@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
- integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.3"
- statuses "~1.5.0"
- unpipe "~1.0.0"
-
-find-cache-dir@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
- integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
- dependencies:
- commondir "^1.0.1"
- make-dir "^3.0.2"
- pkg-dir "^4.1.0"
-
-find-up@^2.0.0, find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
- dependencies:
- locate-path "^2.0.0"
-
-find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
-find-up@^4.0.0, find-up@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
- integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
- dependencies:
- locate-path "^5.0.0"
- path-exists "^4.0.0"
-
-find-up@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
- integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
- dependencies:
- locate-path "^6.0.0"
- path-exists "^4.0.0"
-
-flat-cache@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
- integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
- dependencies:
- flatted "^3.1.0"
- rimraf "^3.0.2"
-
-flatted@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
- integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
-
-flatten@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
- integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
-
-follow-redirects@^1.0.0:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147"
- integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==
-
-for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
- integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-formik@^2.2.0:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.6.tgz#378a4bafe4b95caf6acf6db01f81f3fe5147559d"
- integrity sha512-Kxk2zQRafy56zhLmrzcbryUpMBvT0tal5IvcifK5+4YNGelKsnrODFJ0sZQRMQboblWNym4lAW3bt+tf2vApSA==
- dependencies:
- deepmerge "^2.1.1"
- hoist-non-react-statics "^3.3.0"
- lodash "^4.17.14"
- lodash-es "^4.17.14"
- react-fast-compare "^2.0.1"
- tiny-warning "^1.0.2"
- tslib "^1.10.0"
-
-forwarded@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
- integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
-
-fraction.js@^4.0.13:
- version "4.0.13"
- resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe"
- integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==
-
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
- dependencies:
- map-cache "^0.2.2"
-
-fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-
-fs-extra@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
- integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-extra@^9.0.1:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
- integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
- dependencies:
- at-least-node "^1.0.0"
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^2.0.0"
-
-fs-minipass@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
- integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
- dependencies:
- minipass "^3.0.0"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@^1.2.7:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
- integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
- dependencies:
- bindings "^1.5.0"
- nan "^2.12.1"
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-functional-red-black-tree@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
-generic-names@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872"
- integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==
- dependencies:
- loader-utils "^1.1.0"
-
-gensync@^1.0.0-beta.1:
- version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
- integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
-get-caller-file@^2.0.1:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
- integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-
-get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e"
- integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
-
-get-stdin@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
- integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
-
-get-stream@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
-get-stream@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718"
- integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==
-
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
- integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
- integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
- dependencies:
- is-glob "^4.0.1"
-
-glob-to-regexp@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
- integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-
-glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-global-modules@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
- integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
- dependencies:
- global-prefix "^3.0.0"
-
-global-prefix@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
- integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
- dependencies:
- ini "^1.3.5"
- kind-of "^6.0.2"
- which "^1.3.1"
-
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-globals@^12.1.0:
- version "12.4.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
- integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
- dependencies:
- type-fest "^0.8.1"
-
-globby@^11.0.1, globby@^11.0.2:
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
- integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.1.1"
- ignore "^5.1.4"
- merge2 "^1.3.0"
- slash "^3.0.0"
-
-globby@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
- integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
- dependencies:
- array-union "^1.0.1"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-globjoin@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
- integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=
-
-gonzales-pe@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3"
- integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==
- dependencies:
- minimist "^1.2.5"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
- integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
-
-handle-thing@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
- integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
-
-hard-rejection@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
- integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-symbols@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
- integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
- integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-has@^1.0.0, has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-he@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
- integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-
-hex-color-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
- integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-
-history@^4.9.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
- integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
- dependencies:
- "@babel/runtime" "^7.1.2"
- loose-envify "^1.2.0"
- resolve-pathname "^3.0.0"
- tiny-invariant "^1.0.2"
- tiny-warning "^1.0.0"
- value-equal "^1.0.1"
-
-hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
- integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
- dependencies:
- react-is "^16.7.0"
-
-hosted-git-info@^2.1.4:
- version "2.8.8"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
- integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
-
-hosted-git-info@^3.0.6:
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c"
- integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==
- dependencies:
- lru-cache "^6.0.0"
-
-hpack.js@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
- integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
- dependencies:
- inherits "^2.0.1"
- obuf "^1.0.0"
- readable-stream "^2.0.1"
- wbuf "^1.1.0"
-
-hsl-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
- integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-
-hsla-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
- integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-
-html-comment-regex@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
- integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
-
-html-entities@^1.3.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc"
- integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
-
-html-minifier-terser@^5.0.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054"
- integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==
- dependencies:
- camel-case "^4.1.1"
- clean-css "^4.2.3"
- commander "^4.1.1"
- he "^1.2.0"
- param-case "^3.0.3"
- relateurl "^0.2.7"
- terser "^4.6.3"
-
-html-tags@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
- integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
-
-html-webpack-plugin@^4.5.0:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz#40aaf1b5cb78f2f23a83333999625c20929cda65"
- integrity sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==
- dependencies:
- "@types/html-minifier-terser" "^5.0.0"
- "@types/tapable" "^1.0.5"
- "@types/webpack" "^4.41.8"
- html-minifier-terser "^5.0.1"
- loader-utils "^1.2.3"
- lodash "^4.17.20"
- pretty-error "^2.1.1"
- tapable "^1.1.3"
- util.promisify "1.0.0"
-
-htmlparser2@^3.10.0, htmlparser2@^3.10.1:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
- integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
- dependencies:
- domelementtype "^1.3.1"
- domhandler "^2.3.0"
- domutils "^1.5.1"
- entities "^1.1.1"
- inherits "^2.0.1"
- readable-stream "^3.1.1"
-
-http-deceiver@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
- integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
-
-http-errors@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
- integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
-http-errors@~1.7.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
- integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.4"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
-http-parser-js@>=0.5.1:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
- integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
-
-http-proxy-middleware@0.19.1:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
- integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
- dependencies:
- http-proxy "^1.17.0"
- is-glob "^4.0.0"
- lodash "^4.17.11"
- micromatch "^3.1.10"
-
-http-proxy-middleware@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.0.6.tgz#0618557722f450375d3796d701a8ac5407b3b94e"
- integrity sha512-NyL6ZB6cVni7pl+/IT2W0ni5ME00xR0sN27AQZZrpKn1b+qRh+mLbBxIq9Cq1oGfmTc7BUq4HB77mxwCaxAYNg==
- dependencies:
- "@types/http-proxy" "^1.17.4"
- http-proxy "^1.18.1"
- is-glob "^4.0.1"
- lodash "^4.17.20"
- micromatch "^4.0.2"
-
-http-proxy@^1.17.0, http-proxy@^1.18.1:
- version "1.18.1"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
- integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
- dependencies:
- eventemitter3 "^4.0.0"
- follow-redirects "^1.0.0"
- requires-port "^1.0.0"
-
-human-signals@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
- integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-
-iconv-lite@0.4.24:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-icss-replace-symbols@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
- integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
-
-icss-utils@^4.0.0, icss-utils@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
- integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
- dependencies:
- postcss "^7.0.14"
-
-icss-utils@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
- integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
-
-ignore@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
- integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
-ignore@^5.1.4, ignore@^5.1.8:
- version "5.1.8"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
- integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
-
-image-size@~0.5.0:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
- integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
-
-import-fresh@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
- integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
- dependencies:
- caller-path "^2.0.0"
- resolve-from "^3.0.0"
-
-import-fresh@^3.0.0, import-fresh@^3.2.1:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
- integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
- dependencies:
- parent-module "^1.0.0"
- resolve-from "^4.0.0"
-
-import-lazy@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
- integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
-
-import-local@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
- integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
- dependencies:
- pkg-dir "^3.0.0"
- resolve-cwd "^2.0.0"
-
-import-local@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
- integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
- dependencies:
- pkg-dir "^4.2.0"
- resolve-cwd "^3.0.0"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-indent-string@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
- integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
-
-indexes-of@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
- integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
-
-infer-owner@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
- integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
-ini@^1.3.5:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
-insert-css@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4"
- integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ=
-
-internal-ip@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
- integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
- dependencies:
- default-gateway "^4.2.0"
- ipaddr.js "^1.9.0"
-
-internal-slot@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
- integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
- dependencies:
- get-intrinsic "^1.1.0"
- has "^1.0.3"
- side-channel "^1.0.4"
-
-internmap@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.0.tgz#3c6bf0944b0eae457698000412108752bbfddb56"
- integrity sha512-SdoDWwNOTE2n4JWUsLn4KXZGuZPjPF9yyOGc8bnfWnBQh7BD/l80rzSznKc/r4Y0aQ7z3RTk9X+tV4tHBpu+dA==
-
-interpret@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
- integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
-
-ip-regex@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
- integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-
-ip@^1.1.0, ip@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
- integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
-
-ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
- integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
-
-is-absolute-url@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
- integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
-
-is-absolute-url@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
- integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
-
-is-absolute@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
- integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
- dependencies:
- is-relative "^1.0.0"
- is-windows "^1.0.1"
-
-is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
- dependencies:
- kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-alphabetical@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
- integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
-
-is-alphanumerical@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
- integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
- dependencies:
- is-alphabetical "^1.0.0"
- is-decimal "^1.0.0"
-
-is-arguments@^1.0.4:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
- integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
- dependencies:
- call-bind "^1.0.0"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-buffer@^2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
- integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
-
-is-callable@^1.1.4, is-callable@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
- integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
-
-is-color-stop@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
- integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
- dependencies:
- css-color-names "^0.0.4"
- hex-color-regex "^1.1.0"
- hsl-regex "^1.0.0"
- hsla-regex "^1.0.0"
- rgb-regex "^1.0.1"
- rgba-regex "^1.0.0"
-
-is-core-module@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
- integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
- dependencies:
- has "^1.0.3"
-
-is-data-descriptor@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
- dependencies:
- kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-date-object@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
- integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
-
-is-decimal@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
- integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
-
-is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
-is-directory@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
- integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
- dependencies:
- is-extglob "^2.1.0"
-
-is-glob@^4.0.0, is-glob@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-hexadecimal@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
- integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
-
-is-negated-glob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
- integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
-
-is-negative-zero@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
- integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-obj@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
- integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
-
-is-path-cwd@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
- integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
-
-is-path-in-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
- integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
- dependencies:
- is-path-inside "^2.1.0"
-
-is-path-inside@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
- integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
- dependencies:
- path-is-inside "^1.0.2"
-
-is-plain-obj@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
- integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
-
-is-plain-obj@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
- integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
-is-regex@^1.0.4, is-regex@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
- integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
- dependencies:
- has-symbols "^1.0.1"
-
-is-regexp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d"
- integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==
-
-is-relative@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
- integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
- dependencies:
- is-unc-path "^1.0.0"
-
-is-resolvable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
- integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
-
-is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
- integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
-is-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
- integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
-
-is-string@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
- integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
-
-is-svg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
- integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
- dependencies:
- html-comment-regex "^1.1.0"
-
-is-symbol@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
- integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
- dependencies:
- has-symbols "^1.0.1"
-
-is-typedarray@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-unc-path@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
- integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
- dependencies:
- unc-path-regex "^0.1.2"
-
-is-what@^3.7.1:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.12.0.tgz#f4405ce4bd6dd420d3ced51a026fb90e03705e55"
- integrity sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw==
-
-is-windows@^1.0.1, is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-is-wsl@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
- integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
- dependencies:
- isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-jest-worker@^26.6.2:
- version "26.6.2"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
- integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
- dependencies:
- "@types/node" "*"
- merge-stream "^2.0.0"
- supports-color "^7.0.0"
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-js-yaml@^3.13.1:
- version "3.14.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
- integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-
-json-parse-even-better-errors@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
- integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-schema-traverse@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
- integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-
-json-stable-stringify-without-jsonify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
- integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-json2mq@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a"
- integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=
- dependencies:
- string-convert "^0.2.0"
-
-json3@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
- integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
-
-json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
- dependencies:
- minimist "^1.2.0"
-
-json5@^2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
- integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
- dependencies:
- minimist "^1.2.5"
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonfile@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
- integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
- dependencies:
- universalify "^2.0.0"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-"jsx-ast-utils@^2.4.1 || ^3.0.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
- integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
- dependencies:
- array-includes "^3.1.2"
- object.assign "^4.1.2"
-
-killable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
- integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
- integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-klona@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
- integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
-
-known-css-properties@^0.20.0:
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.20.0.tgz#0570831661b47dd835293218381166090ff60e96"
- integrity sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==
-
-last-call-webpack-plugin@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
- integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
- dependencies:
- lodash "^4.17.5"
- webpack-sources "^1.1.0"
-
-less-loader@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466"
- integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==
- dependencies:
- clone "^2.1.1"
- loader-utils "^1.1.0"
- pify "^4.0.1"
-
-less@^3.12.2:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/less/-/less-3.13.1.tgz#0ebc91d2a0e9c0c6735b83d496b0ab0583077909"
- integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==
- dependencies:
- copy-anything "^2.0.1"
- tslib "^1.10.0"
- optionalDependencies:
- errno "^0.1.1"
- graceful-fs "^4.1.2"
- image-size "~0.5.0"
- make-dir "^2.1.0"
- mime "^1.4.1"
- native-request "^1.0.5"
- source-map "~0.6.0"
-
-levn@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
- integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
- dependencies:
- prelude-ls "^1.2.1"
- type-check "~0.4.0"
-
-lines-and-columns@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
- integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
-load-json-file@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
- integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- strip-bom "^3.0.0"
-
-loader-runner@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
- integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
-
-loader-utils@^1.1.0, loader-utils@^1.2.3:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
- integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^3.0.0"
- json5 "^1.0.1"
-
-loader-utils@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
- integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^3.0.0"
- json5 "^2.1.2"
-
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
-locate-path@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
- integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
- dependencies:
- p-locate "^4.1.0"
-
-locate-path@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
- integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
- dependencies:
- p-locate "^5.0.0"
-
-lodash-es@^4.17.14:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7"
- integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA==
-
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
-lodash.camelcase@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
- integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
-
-lodash.difference@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
- integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=
-
-lodash.forown@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.forown/-/lodash.forown-4.4.0.tgz#85115cf04f73ef966eced52511d3893cc46683af"
- integrity sha1-hRFc8E9z75ZuztUlEdOJPMRmg68=
-
-lodash.get@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
- integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
-
-lodash.groupby@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1"
- integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=
-
-lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-
-lodash.sortby@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
- integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
-
-lodash.template@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
- integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.templatesettings "^4.0.0"
-
-lodash.templatesettings@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
- integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
- dependencies:
- lodash._reinterpolate "^3.0.0"
-
-lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-
-lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5, lodash@~4.17.4:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-
-log-symbols@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
- integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
- dependencies:
- chalk "^4.0.0"
-
-loglevel@^1.6.8:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
- integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
-
-longest-streak@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
- integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
-
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
-lower-case@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
- integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
- dependencies:
- tslib "^2.0.3"
-
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
-
-make-dir@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
- dependencies:
- pify "^4.0.1"
- semver "^5.6.0"
-
-make-dir@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
- integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
- dependencies:
- semver "^6.0.0"
-
-make-error@^1.1.1:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
- integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
-
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
- integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-obj@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
- integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
-map-obj@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5"
- integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==
-
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
- dependencies:
- object-visit "^1.0.0"
-
-mathml-tag-names@^2.1.3:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
- integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
-
-mdast-util-from-markdown@^0.8.0:
- version "0.8.4"
- resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz#2882100c1b9fc967d3f83806802f303666682d32"
- integrity sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==
- dependencies:
- "@types/mdast" "^3.0.0"
- mdast-util-to-string "^2.0.0"
- micromark "~2.11.0"
- parse-entities "^2.0.0"
- unist-util-stringify-position "^2.0.0"
-
-mdast-util-to-markdown@^0.6.0:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz#8fe6f42a2683c43c5609dfb40407c095409c85b4"
- integrity sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg==
- dependencies:
- "@types/unist" "^2.0.0"
- longest-streak "^2.0.0"
- mdast-util-to-string "^2.0.0"
- parse-entities "^2.0.0"
- repeat-string "^1.0.0"
- zwitch "^1.0.0"
-
-mdast-util-to-string@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b"
- integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==
-
-mdn-data@2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
- integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
-
-mdn-data@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
- integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
-memory-fs@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
- integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-memory-fs@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
- integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-meow@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
- integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
- dependencies:
- "@types/minimist" "^1.2.0"
- camelcase-keys "^6.2.2"
- decamelize "^1.2.0"
- decamelize-keys "^1.1.0"
- hard-rejection "^2.1.0"
- minimist-options "4.1.0"
- normalize-package-data "^3.0.0"
- read-pkg-up "^7.0.1"
- redent "^3.0.0"
- trim-newlines "^3.0.0"
- type-fest "^0.18.0"
- yargs-parser "^20.2.3"
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-
-merge-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
- integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-merge2@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-
-micromark@~2.11.0:
- version "2.11.2"
- resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.2.tgz#e8b6a05f54697d2d3d27fc89600c6bc40dd05f35"
- integrity sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==
- dependencies:
- debug "^4.0.0"
- parse-entities "^2.0.0"
-
-micromatch@^3.1.10, micromatch@^3.1.4:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- braces "^2.3.1"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- extglob "^2.0.4"
- fragment-cache "^0.2.1"
- kind-of "^6.0.2"
- nanomatch "^1.2.9"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.2"
-
-micromatch@^4.0.0, micromatch@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
- integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
- dependencies:
- braces "^3.0.1"
- picomatch "^2.0.5"
-
-mime-db@1.45.0, "mime-db@>= 1.43.0 < 2":
- version "1.45.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
- integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
-
-mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24:
- version "2.1.28"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
- integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
- dependencies:
- mime-db "1.45.0"
-
-mime@1.6.0, mime@^1.4.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
- integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-
-mime@^2.4.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1"
- integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==
-
-mimic-fn@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
- integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-
-min-indent@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
- integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-
-mini-create-react-context@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
- integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==
- dependencies:
- "@babel/runtime" "^7.12.1"
- tiny-warning "^1.0.3"
-
-mini-css-extract-plugin@^1.1.1:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.4.tgz#706e69632cdcdb8b15bf8e638442a0dba304a9c8"
- integrity sha512-dNjqyeogUd8ucUgw5sxm1ahvSfSUgef7smbmATRSbDm4EmNx5kQA6VdUEhEeCKSjX6CTYjb5vxgMUvRjqP3uHg==
- dependencies:
- loader-utils "^2.0.0"
- schema-utils "^3.0.0"
- webpack-sources "^1.1.0"
-
-mini-store@^3.0.1:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/mini-store/-/mini-store-3.0.6.tgz#44b86be5b2877271224ce0689b3a35a2dffb1ca9"
- integrity sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==
- dependencies:
- hoist-non-react-statics "^3.3.2"
- shallowequal "^1.0.2"
-
-minimalistic-assert@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
- integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-
-minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist-options@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
- integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
- dependencies:
- arrify "^1.0.1"
- is-plain-obj "^1.1.0"
- kind-of "^6.0.3"
-
-minimist@^1.2.0, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-
-minipass-collect@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
- integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
- dependencies:
- minipass "^3.0.0"
-
-minipass-flush@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
- integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
- dependencies:
- minipass "^3.0.0"
-
-minipass-pipeline@^1.2.2:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
- integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
- dependencies:
- minipass "^3.0.0"
-
-minipass@^3.0.0, minipass@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
- integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
- dependencies:
- yallist "^4.0.0"
-
-minizlib@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
- integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
- dependencies:
- minipass "^3.0.0"
- yallist "^4.0.0"
-
-mixin-deep@^1.2.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
- integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
-mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
- integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
- dependencies:
- minimist "^1.2.5"
-
-mkdirp@^1.0.3, mkdirp@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
-mobx-react-lite@^3.0.1:
- version "3.1.7"
- resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.1.7.tgz#8896e9ec4f3d2117ddc0a5bfc60802c39a5258f4"
- integrity sha512-G6kgur98RrEpoi563ERzxlSwn606xY6Ay4BOtfYXl/QaHZYXbhbCe3YJGROPU2ao4f2bfhnt8iZW3YnBW2BqXQ==
-
-mobx@^6.0.1:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.0.5.tgz#617e716b7aa81d5b700598af3bb1643ff2144410"
- integrity sha512-Q3/GiSj/QyazDn1n44PjdiMlokCE6gVs85BnFR0xCJmkF2d34k/ZnWAEG7wGbnJYEi+0f5CdvzDquBiKeo56bA==
-
-moment@^2.24.0, moment@^2.25.3:
- version "2.29.1"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
- integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-multicast-dns-service-types@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
- integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
-
-multicast-dns@^6.0.1:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
- integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
- dependencies:
- dns-packet "^1.3.1"
- thunky "^1.0.2"
-
-multimatch@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3"
- integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==
- dependencies:
- "@types/minimatch" "^3.0.3"
- array-differ "^3.0.0"
- array-union "^2.1.0"
- arrify "^2.0.1"
- minimatch "^3.0.4"
-
-nan@^2.12.1:
- version "2.14.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
- integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
-
-nanoid@^3.1.20:
- version "3.1.20"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
- integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==
-
-nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- fragment-cache "^0.2.1"
- is-windows "^1.0.2"
- kind-of "^6.0.2"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-native-request@^1.0.5:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.8.tgz#8f66bf606e0f7ea27c0e5995eb2f5d03e33ae6fb"
- integrity sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==
-
-natural-compare@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
- integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
-neo-async@^2.6.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
- integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-no-case@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
- integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
- dependencies:
- lower-case "^2.0.2"
- tslib "^2.0.3"
-
-node-forge@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
- integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
-
-node-releases@^1.1.69:
- version "1.1.70"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08"
- integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
- dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-package-data@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a"
- integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==
- dependencies:
- hosted-git-info "^3.0.6"
- resolve "^1.17.0"
- semver "^7.3.2"
- validate-npm-package-license "^3.0.1"
-
-normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
-normalize-selector@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03"
- integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=
-
-normalize-url@^3.0.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
- integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
- dependencies:
- path-key "^2.0.0"
-
-npm-run-path@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
- integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
- dependencies:
- path-key "^3.0.0"
-
-nth-check@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
- dependencies:
- boolbase "~1.0.0"
-
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
- integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-
-object-assign@^4.0.1, object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
-object-hash@^2.0.3:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09"
- integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==
-
-object-inspect@^1.8.0, object-inspect@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
- integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
-
-object-is@^1.0.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068"
- integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
-
-object-keys@^1.0.12, object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
- dependencies:
- isobject "^3.0.0"
-
-object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
- integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- has-symbols "^1.0.1"
- object-keys "^1.1.1"
-
-object.entries@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6"
- integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
- has "^1.0.3"
-
-object.fromentries@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072"
- integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
- has "^1.0.3"
-
-object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544"
- integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
-
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
- dependencies:
- isobject "^3.0.1"
-
-object.values@^1.1.0, object.values@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
- integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
- has "^1.0.3"
-
-obuf@^1.0.0, obuf@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
- dependencies:
- ee-first "1.1.1"
-
-on-headers@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
- integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-onetime@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
- integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
- dependencies:
- mimic-fn "^2.1.0"
-
-opn@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
- integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
- dependencies:
- is-wsl "^1.1.0"
-
-optimize-css-assets-webpack-plugin@^5.0.4:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90"
- integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==
- dependencies:
- cssnano "^4.1.10"
- last-call-webpack-plugin "^3.0.0"
-
-optionator@^0.9.1:
- version "0.9.1"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
- integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
- dependencies:
- deep-is "^0.1.3"
- fast-levenshtein "^2.0.6"
- levn "^0.4.1"
- prelude-ls "^1.2.1"
- type-check "^0.4.0"
- word-wrap "^1.2.3"
-
-original@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
- integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
- dependencies:
- url-parse "^1.4.3"
-
-p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
- integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
-p-limit@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
- integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
- dependencies:
- p-try "^1.0.0"
-
-p-limit@^2.0.0, p-limit@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
- integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
- dependencies:
- p-try "^2.0.0"
-
-p-limit@^3.0.2, p-limit@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
- integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
- dependencies:
- yocto-queue "^0.1.0"
-
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
- dependencies:
- p-limit "^1.1.0"
-
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
-p-locate@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
- integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
- dependencies:
- p-limit "^2.2.0"
-
-p-locate@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
- integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
- dependencies:
- p-limit "^3.0.2"
-
-p-map@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
- integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
-
-p-map@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
- integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
- dependencies:
- aggregate-error "^3.0.0"
-
-p-retry@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328"
- integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
- dependencies:
- retry "^0.12.0"
-
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
- integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
-param-case@^3.0.3:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
- integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
- dependencies:
- dot-case "^3.0.4"
- tslib "^2.0.3"
-
-parent-module@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
- integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
- dependencies:
- callsites "^3.0.0"
-
-parse-entities@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
- integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==
- dependencies:
- character-entities "^1.0.0"
- character-entities-legacy "^1.0.0"
- character-reference-invalid "^1.0.0"
- is-alphanumerical "^1.0.0"
- is-decimal "^1.0.0"
- is-hexadecimal "^1.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
- dependencies:
- error-ex "^1.2.0"
-
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
-parse-json@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
- integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
- 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"
-
-parseurl@~1.3.2, parseurl@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
-
-pascal-case@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
- integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
- dependencies:
- no-case "^3.0.4"
- tslib "^2.0.3"
-
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
- integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-exists@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
- integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-is-inside@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
- integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-
-path-key@^2.0.0, path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
-path-key@^3.0.0, path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-
-path-to-regexp@^1.7.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
- integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
- dependencies:
- isarray "0.0.1"
-
-path-type@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
- integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
- dependencies:
- pify "^2.0.0"
-
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-
-picomatch@^2.0.5, picomatch@^2.2.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
- integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-
-pify@^2.0.0, pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pify@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
- integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
- dependencies:
- find-up "^2.1.0"
-
-pkg-dir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
- integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
- dependencies:
- find-up "^3.0.0"
-
-pkg-dir@^4.1.0, pkg-dir@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
- integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
- dependencies:
- find-up "^4.0.0"
-
-pkg-dir@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
- integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
- dependencies:
- find-up "^5.0.0"
-
-portfinder@^1.0.26:
- version "1.0.28"
- resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
- integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
- dependencies:
- async "^2.6.2"
- debug "^3.1.1"
- mkdirp "^0.5.5"
-
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
- integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-postcss-attribute-case-insensitive@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880"
- integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^6.0.2"
-
-postcss-calc@^7.0.1, postcss-calc@^7.0.5:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
- integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
- dependencies:
- postcss "^7.0.27"
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.0.2"
-
-postcss-color-functional-notation@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0"
- integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-color-gray@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547"
- integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==
- dependencies:
- "@csstools/convert-colors" "^1.4.0"
- postcss "^7.0.5"
- postcss-values-parser "^2.0.0"
-
-postcss-color-hex-alpha@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388"
- integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==
- dependencies:
- postcss "^7.0.14"
- postcss-values-parser "^2.0.1"
-
-postcss-color-mod-function@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d"
- integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==
- dependencies:
- "@csstools/convert-colors" "^1.4.0"
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-color-rebeccapurple@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77"
- integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-colormin@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
- integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
- dependencies:
- browserslist "^4.0.0"
- color "^3.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-convert-values@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
- integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-css-variables@^0.17.0:
- version "0.17.0"
- resolved "https://registry.yarnpkg.com/postcss-css-variables/-/postcss-css-variables-0.17.0.tgz#56cba1d9f0360609136cfbfda8bbd2c1ed2e4082"
- integrity sha512-/ZpFnJgksNOrQA72b3DKhExYh+0e2P5nEc3aPZ62G7JLmdDjWRFv3k/q4LxV7uzXFnmvkhXRbdVIiH5tKgfFNA==
- dependencies:
- balanced-match "^1.0.0"
- escape-string-regexp "^1.0.3"
- extend "^3.0.1"
- postcss "^6.0.8"
-
-postcss-custom-media@^7.0.8:
- version "7.0.8"
- resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c"
- integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==
- dependencies:
- postcss "^7.0.14"
-
-postcss-custom-properties@^8.0.11:
- version "8.0.11"
- resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97"
- integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==
- dependencies:
- postcss "^7.0.17"
- postcss-values-parser "^2.0.1"
-
-postcss-custom-selectors@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba"
- integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^5.0.0-rc.3"
-
-postcss-dir-pseudo-class@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2"
- integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^5.0.0-rc.3"
-
-postcss-discard-comments@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
- integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-duplicates@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
- integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-empty@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
- integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-overridden@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
- integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
- dependencies:
- postcss "^7.0.0"
-
-postcss-double-position-gradients@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e"
- integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==
- dependencies:
- postcss "^7.0.5"
- postcss-values-parser "^2.0.0"
-
-postcss-env-function@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7"
- integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-focus-visible@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e"
- integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==
- dependencies:
- postcss "^7.0.2"
-
-postcss-focus-within@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680"
- integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==
- dependencies:
- postcss "^7.0.2"
-
-postcss-font-variant@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641"
- integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==
- dependencies:
- postcss "^7.0.2"
-
-postcss-gap-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715"
- integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==
- dependencies:
- postcss "^7.0.2"
-
-postcss-html@^0.36.0:
- version "0.36.0"
- resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204"
- integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==
- dependencies:
- htmlparser2 "^3.10.0"
-
-postcss-image-set-function@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288"
- integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-import@^13.0.0:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-13.0.0.tgz#d6960cd9e3de5464743b04dd8cd9d870662f8b8c"
- integrity sha512-LPUbm3ytpYopwQQjqgUH4S3EM/Gb9QsaSPP/5vnoi+oKVy3/mIk2sc0Paqw7RL57GpScm9MdIMUypw2znWiBpg==
- dependencies:
- postcss-value-parser "^4.0.0"
- read-cache "^1.0.0"
- resolve "^1.1.7"
-
-postcss-initial@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d"
- integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==
- dependencies:
- lodash.template "^4.5.0"
- postcss "^7.0.2"
-
-postcss-inline-svg@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-inline-svg/-/postcss-inline-svg-4.1.0.tgz#54e9199632242cc181af5b55f0f0691ad1020f95"
- integrity sha512-0pYBJyoQ9/sJViYRc1cNOOTM7DYh0/rmASB0TBeRmWkG8YFK2tmgdkfjHkbRma1iFtBFKFHZFsHwRTDZTMKzSQ==
- dependencies:
- css-select "^2.0.2"
- dom-serializer "^0.1.1"
- htmlparser2 "^3.10.1"
- postcss "^7.0.17"
- postcss-value-parser "^4.0.0"
-
-postcss-js@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33"
- integrity sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==
- dependencies:
- camelcase-css "^2.0.1"
- postcss "^8.1.6"
-
-postcss-lab-function@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e"
- integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==
- dependencies:
- "@csstools/convert-colors" "^1.4.0"
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-less@^3.1.4:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad"
- integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==
- dependencies:
- postcss "^7.0.14"
-
-postcss-loader@^4.0.4:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.2.0.tgz#f6993ea3e0f46600fb3ee49bbd010448123a7db4"
- integrity sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==
- dependencies:
- cosmiconfig "^7.0.0"
- klona "^2.0.4"
- loader-utils "^2.0.0"
- schema-utils "^3.0.0"
- semver "^7.3.4"
-
-postcss-logical@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5"
- integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==
- dependencies:
- postcss "^7.0.2"
-
-postcss-media-minmax@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5"
- integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==
- dependencies:
- postcss "^7.0.2"
-
-postcss-media-query-parser@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
- integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
-
-postcss-merge-longhand@^4.0.11:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
- integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
- dependencies:
- css-color-names "0.0.4"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- stylehacks "^4.0.0"
-
-postcss-merge-rules@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
- integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
- dependencies:
- browserslist "^4.0.0"
- caniuse-api "^3.0.0"
- cssnano-util-same-parent "^4.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
- vendors "^1.0.0"
-
-postcss-minify-font-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
- integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-minify-gradients@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
- integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- is-color-stop "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-minify-params@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
- integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
- dependencies:
- alphanum-sort "^1.0.0"
- browserslist "^4.0.0"
- cssnano-util-get-arguments "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- uniqs "^2.0.0"
-
-postcss-minify-selectors@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
- integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
- dependencies:
- alphanum-sort "^1.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
-postcss-mixins@^7.0.1:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-7.0.2.tgz#9c5b9db70aa74095402062b3cf38431259b58971"
- integrity sha512-er22AZ/2C1P+jZOL4ZExVEz0XuPWJWWy7SySbb2HWFmAgXG8F4qaOmMaRTdLfSK1AbgWxRT+KQ8GQ2i5kOn1aw==
- dependencies:
- globby "^11.0.1"
- postcss-js "^3.0.3"
- postcss-simple-vars "^6.0.1"
- sugarss "^3.0.3"
-
-postcss-modules-extract-imports@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
- integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
- dependencies:
- postcss "^7.0.5"
-
-postcss-modules-extract-imports@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
- integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
-
-postcss-modules-local-by-default@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0"
- integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
- dependencies:
- icss-utils "^4.1.1"
- postcss "^7.0.32"
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.1.0"
-
-postcss-modules-local-by-default@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
- integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
- dependencies:
- icss-utils "^5.0.0"
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.1.0"
-
-postcss-modules-scope@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee"
- integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
- dependencies:
- postcss "^7.0.6"
- postcss-selector-parser "^6.0.0"
-
-postcss-modules-scope@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
- integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
- dependencies:
- postcss-selector-parser "^6.0.4"
-
-postcss-modules-values@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10"
- integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
- dependencies:
- icss-utils "^4.0.0"
- postcss "^7.0.6"
-
-postcss-modules-values@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
- integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
- dependencies:
- icss-utils "^5.0.0"
-
-postcss-modules@^3.2.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f"
- integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==
- dependencies:
- generic-names "^2.0.1"
- icss-replace-symbols "^1.1.0"
- lodash.camelcase "^4.3.0"
- postcss "^7.0.32"
- postcss-modules-extract-imports "^2.0.0"
- postcss-modules-local-by-default "^3.0.2"
- postcss-modules-scope "^2.2.0"
- postcss-modules-values "^3.0.0"
- string-hash "^1.1.1"
-
-postcss-nested@^5.0.1:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.3.tgz#2f46d77a06fc98d9c22344fd097396f5431386db"
- integrity sha512-R2LHPw+u5hFfDgJG748KpGbJyTv7Yr33/2tIMWxquYuHTd9EXu27PYnKi7BxMXLtzKC0a0WVsqHtd7qIluQu/g==
- dependencies:
- postcss-selector-parser "^6.0.4"
-
-postcss-nesting@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052"
- integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==
- dependencies:
- postcss "^7.0.2"
-
-postcss-normalize-charset@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
- integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
- dependencies:
- postcss "^7.0.0"
-
-postcss-normalize-display-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
- integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-positions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
- integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-repeat-style@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
- integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-string@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
- integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
- dependencies:
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-timing-functions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
- integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-unicode@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
- integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-url@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
- integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
- dependencies:
- is-absolute-url "^2.0.0"
- normalize-url "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-whitespace@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
- integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-ordered-values@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
- integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-overflow-shorthand@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30"
- integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==
- dependencies:
- postcss "^7.0.2"
-
-postcss-page-break@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf"
- integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==
- dependencies:
- postcss "^7.0.2"
-
-postcss-place@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62"
- integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-preset-env@^6.7.0:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5"
- integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==
- dependencies:
- autoprefixer "^9.6.1"
- browserslist "^4.6.4"
- caniuse-lite "^1.0.30000981"
- css-blank-pseudo "^0.1.4"
- css-has-pseudo "^0.10.0"
- css-prefers-color-scheme "^3.1.1"
- cssdb "^4.4.0"
- postcss "^7.0.17"
- postcss-attribute-case-insensitive "^4.0.1"
- postcss-color-functional-notation "^2.0.1"
- postcss-color-gray "^5.0.0"
- postcss-color-hex-alpha "^5.0.3"
- postcss-color-mod-function "^3.0.3"
- postcss-color-rebeccapurple "^4.0.1"
- postcss-custom-media "^7.0.8"
- postcss-custom-properties "^8.0.11"
- postcss-custom-selectors "^5.1.2"
- postcss-dir-pseudo-class "^5.0.0"
- postcss-double-position-gradients "^1.0.0"
- postcss-env-function "^2.0.2"
- postcss-focus-visible "^4.0.0"
- postcss-focus-within "^3.0.0"
- postcss-font-variant "^4.0.0"
- postcss-gap-properties "^2.0.0"
- postcss-image-set-function "^3.0.1"
- postcss-initial "^3.0.0"
- postcss-lab-function "^2.0.1"
- postcss-logical "^3.0.0"
- postcss-media-minmax "^4.0.0"
- postcss-nesting "^7.0.0"
- postcss-overflow-shorthand "^2.0.0"
- postcss-page-break "^2.0.0"
- postcss-place "^4.0.1"
- postcss-pseudo-class-any-link "^6.0.0"
- postcss-replace-overflow-wrap "^3.0.0"
- postcss-selector-matches "^4.0.0"
- postcss-selector-not "^4.0.0"
-
-postcss-pseudo-class-any-link@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1"
- integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^5.0.0-rc.3"
-
-postcss-reduce-initial@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
- integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
- dependencies:
- browserslist "^4.0.0"
- caniuse-api "^3.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
-
-postcss-reduce-transforms@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
- integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-replace-overflow-wrap@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c"
- integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==
- dependencies:
- postcss "^7.0.2"
-
-postcss-reporter@^7.0.1:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.2.tgz#03e9e7381c1afe40646f9c22e7aeeb860e051065"
- integrity sha512-JyQ96NTQQsso42y6L1H1RqHfWH1C3Jr0pt91mVv5IdYddZAE9DUZxuferNgk6q0o6vBVOrfVJb10X1FgDzjmDw==
- dependencies:
- colorette "^1.2.1"
- lodash.difference "^4.5.0"
- lodash.forown "^4.4.0"
- lodash.get "^4.4.2"
- lodash.groupby "^4.6.0"
- lodash.sortby "^4.7.0"
-
-postcss-resolve-nested-selector@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
- integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=
-
-postcss-safe-parser@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96"
- integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==
- dependencies:
- postcss "^7.0.26"
-
-postcss-sass@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3"
- integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==
- dependencies:
- gonzales-pe "^4.3.0"
- postcss "^7.0.21"
-
-postcss-scss@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383"
- integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==
- dependencies:
- postcss "^7.0.6"
-
-postcss-selector-matches@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff"
- integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==
- dependencies:
- balanced-match "^1.0.0"
- postcss "^7.0.2"
-
-postcss-selector-not@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf"
- integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==
- dependencies:
- balanced-match "^1.0.0"
- postcss "^7.0.2"
-
-postcss-selector-parser@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
- integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
- dependencies:
- dot-prop "^5.2.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
- integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
- dependencies:
- cssesc "^2.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
- integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
- dependencies:
- cssesc "^3.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
- util-deprecate "^1.0.2"
-
-postcss-simple-vars@^6.0.1:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-6.0.2.tgz#cc0cc7745fb53c83245df99aaf4452475b454eda"
- integrity sha512-tABK0OVtCa88TgJjgosa/1aLgiF4hTJBJxUjVE5idTGA0597OVdzWZvbySAF+HKo/sZidxSSpnWhUycDrxO8LA==
-
-postcss-svgo@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
- integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
- dependencies:
- is-svg "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- svgo "^1.0.0"
-
-postcss-syntax@^0.36.2:
- version "0.36.2"
- resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c"
- integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==
-
-postcss-unique-selectors@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
- integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
- dependencies:
- alphanum-sort "^1.0.0"
- postcss "^7.0.0"
- uniqs "^2.0.0"
-
-postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
- integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
-
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
- integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
-
-postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f"
- integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==
- dependencies:
- flatten "^1.0.2"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-variables@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/postcss-variables/-/postcss-variables-1.1.1.tgz#f86856acd0583b0c493767f22f7258509d37f9e0"
- integrity sha512-a9b2ZXoy60xl28m+jedXYvbXLdYSLPXOqvgkLUHhOUbhIRlVoSHRGhGtpMLkcgVc05lu3JUBEypLVcTYNcltMw==
- dependencies:
- postcss "^6.0.9"
-
-postcss@^6.0.8, postcss@^6.0.9:
- version "6.0.23"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
- integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
- dependencies:
- chalk "^2.4.1"
- source-map "^0.6.1"
- supports-color "^5.4.0"
-
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6:
- version "7.0.35"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
- integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
- dependencies:
- chalk "^2.4.2"
- source-map "^0.6.1"
- supports-color "^6.1.0"
-
-postcss@^8.1.2, postcss@^8.1.4, postcss@^8.1.6:
- version "8.2.4"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04"
- integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==
- dependencies:
- colorette "^1.2.1"
- nanoid "^3.1.20"
- source-map "^0.6.1"
-
-prelude-ls@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
- integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-
-pretty-error@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
- integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
- dependencies:
- lodash "^4.17.20"
- renderkid "^2.0.4"
-
-process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-progress@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
- integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
-promise-inflight@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
- integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-
-prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2:
- version "15.7.2"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
- integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
- dependencies:
- loose-envify "^1.4.0"
- object-assign "^4.1.1"
- react-is "^16.8.1"
-
-proxy-addr@~2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
- integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
- dependencies:
- forwarded "~0.1.2"
- ipaddr.js "1.9.1"
-
-prr@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
- integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-
-pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-
-punycode@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-q@^1.1.2:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
- integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-
-qs@6.7.0:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
- integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-
-qs@^6.9.4:
- version "6.9.6"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
- integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==
-
-querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
- integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-
-querystringify@^2.1.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
- integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
-
-quick-lru@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
- integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
-
-raf-schd@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0"
- integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==
-
-raf@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
- integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
- dependencies:
- performance-now "^2.1.0"
-
-randombytes@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
- integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
- dependencies:
- safe-buffer "^5.1.0"
-
-range-parser@^1.2.1, range-parser@~1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
-raw-body@2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
- integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
- dependencies:
- bytes "3.1.0"
- http-errors "1.7.2"
- iconv-lite "0.4.24"
- unpipe "1.0.0"
-
-rc-align@^4.0.0:
- version "4.0.9"
- resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.9.tgz#46d8801c4a139ff6a65ad1674e8efceac98f85f2"
- integrity sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- dom-align "^1.7.0"
- rc-util "^5.3.0"
- resize-observer-polyfill "^1.5.1"
-
-rc-cascader@~1.4.0:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.2.tgz#caa81098e3ef4d5f823f9156f6d8d6dbd6321afa"
- integrity sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ==
- dependencies:
- "@babel/runtime" "^7.12.5"
- array-tree-filter "^2.1.0"
- rc-trigger "^5.0.4"
- rc-util "^5.0.1"
- warning "^4.0.1"
-
-rc-checkbox@~2.3.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1"
- integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.1"
-
-rc-collapse@~3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.1.0.tgz#4ce5e612568c5fbeaf368cc39214471c1461a1a1"
- integrity sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- rc-motion "^2.3.4"
- rc-util "^5.2.1"
- shallowequal "^1.1.0"
-
-rc-dialog@~8.5.0, rc-dialog@~8.5.1:
- version "8.5.1"
- resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.5.1.tgz#df316dd93e1685d7df1f5e4164ee35cba4a9af88"
- integrity sha512-EcLgHHjF3Jp4C+TFceO2j7gIrpx0YIhY6ronki5QJDL/z+qWYozY5RNh4rnv4a6R21SPVhV+SK+gMMlMHZ/YRQ==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.6"
- rc-motion "^2.3.0"
- rc-util "^5.6.1"
-
-rc-drawer@~4.2.0:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.2.2.tgz#5fd8b18ce20575ff22b36e0c5ddbe363c13db555"
- integrity sha512-zw48FATkAmJrEnfeRWiMqvKAzqGzUDLN1UXlluB7q7GgbR6mJFvc+QsmNrgxsFuMz86Lh9mKSIi7rXlPINmuzw==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.6"
- rc-util "^5.7.0"
-
-rc-dropdown@^3.1.3, rc-dropdown@~3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090"
- integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.6"
- rc-trigger "^5.0.4"
-
-rc-field-form@~1.18.0:
- version "1.18.1"
- resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.18.1.tgz#41027816c80d1acf6f51db085d34c2c35213a701"
- integrity sha512-/YRnelnHLxygl/ROGhFqfCT+uAZ5xLvu3qjtlETOneb7fXKk7tqp+RGfYqZ4uNViXlsfxox3qqMMTVet6wYfEA==
- dependencies:
- "@babel/runtime" "^7.8.4"
- async-validator "^3.0.3"
- rc-util "^5.0.0"
-
-rc-image@~5.1.1:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-5.1.4.tgz#e251101159db80c3e33276aaa4669a991c7486c0"
- integrity sha512-hilxwwEAYJXocY6i+lEdEibvHVOLgN43EQFfjKFiiruRNiUQzGWcdCseyaeTZgInTDrf+QWZP6MujlZjtEbpkA==
- dependencies:
- "@babel/runtime" "^7.11.2"
- classnames "^2.2.6"
- rc-dialog "~8.5.0"
- rc-util "^5.0.6"
-
-rc-input-number@~6.1.0:
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.1.3.tgz#d558be65793429807cc2cdc360af407599d80283"
- integrity sha512-qCLWK9NuuKGTsPXjRU/XvSOX7EKdnHlOpg59nPjYSDdH/czsAHZyYq50O6b6RF2TMPOjVpmsZQoMjNJYcnn6JA==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.5"
- rc-util "^5.0.1"
-
-rc-mentions@~1.5.0:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.5.3.tgz#b92bebadf8ad9fb3586ba1af922d63b49d991c67"
- integrity sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.6"
- rc-menu "^8.0.1"
- rc-textarea "^0.3.0"
- rc-trigger "^5.0.4"
- rc-util "^5.0.1"
-
-rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.10.0:
- version "8.10.5"
- resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.10.5.tgz#44b7381c650cc76020dfd65753b535f415012179"
- integrity sha512-8Ets93wQFy9IysmgRUm1VGdrEz6XfZTM0jQOqOPLYNXah5HgAmCh4xT0UOygfHB3IWiQeqDgr2uPB4uVhwI2+Q==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- mini-store "^3.0.1"
- rc-motion "^2.0.1"
- rc-trigger "^5.1.2"
- rc-util "^5.7.0"
- resize-observer-polyfill "^1.5.0"
- shallowequal "^1.1.0"
-
-rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.1.tgz#323f47c8635e6b2bc0cba2dfad25fc415b58e1dc"
- integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg==
- dependencies:
- "@babel/runtime" "^7.11.1"
- classnames "^2.2.1"
- rc-util "^5.2.1"
-
-rc-notification@~4.5.2:
- version "4.5.4"
- resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.4.tgz#1292e163003db4b9162c856a4630e5d0f1359356"
- integrity sha512-VsN0ouF4uglE5g3C9oDsXLNYX0Sz++ZNUFYCswkxhpImYJ9u6nJOpyA71uOYDVCu6bAF54Y5Hi/b+EcnMzkepg==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- rc-motion "^2.2.0"
- rc-util "^5.0.1"
-
-rc-overflow@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.0.2.tgz#f56bcd920029979989f576d55084b81f9632c19c"
- integrity sha512-GXj4DAyNxm4f57LvXLwhJaZoJHzSge2l2lQq64MZP7NJAfLpQqOLD+v9JMV9ONTvDPZe8kdzR+UMmkAn7qlzFA==
- dependencies:
- "@babel/runtime" "^7.11.1"
- classnames "^2.2.1"
- rc-resize-observer "^1.0.0"
- rc-util "^5.5.1"
-
-rc-pagination@~3.1.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.3.tgz#afd779839fefab2cb14248d5e7b74027960bb48b"
- integrity sha512-Z7CdC4xGkedfAwcUHPtfqNhYwVyDgkmhkvfsmoByCOwAd89p42t5O5T3ORar1wRmVWf3jxk/Bf4k0atenNvlFA==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.1"
-
-rc-picker@~2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.2.tgz#36d91b8cdddbf8b2474af29c2853b77502a7fb01"
- integrity sha512-rQLgvjyFrxjiWlR+Q7CyXdTOP/gHbiXlBca7irOtuEb6HMRLdm+/OfIB7xaaPHgdkv1ZOsxCk8zCEX6j0qf24g==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.1"
- date-fns "^2.15.0"
- dayjs "^1.8.30"
- moment "^2.24.0"
- rc-trigger "^5.0.4"
- rc-util "^5.4.0"
- shallowequal "^1.1.0"
-
-rc-progress@~3.1.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.3.tgz#d77d8fd26d9d948d72c2a28b64b71a6e86df2426"
- integrity sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.6"
-
-rc-rate@~2.9.0:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731"
- integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.5"
- rc-util "^5.0.1"
-
-rc-resize-observer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz#97fb89856f62fec32ab6e40933935cf58e2e102d"
- integrity sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.1"
- rc-util "^5.0.0"
- resize-observer-polyfill "^1.5.1"
-
-rc-select@^12.0.0, rc-select@~12.1.0:
- version "12.1.2"
- resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-12.1.2.tgz#7f5f06838b8a8c86516acb66ead26adbc55fbc16"
- integrity sha512-WEcqj4ljz5kgp/yPN4RDQEZRvjGkwdk1PugpFrtd6tY+YqwKZs7vSZt6xphVIvWlmtwmZMe7e9G1U8XykUN0+g==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- rc-motion "^2.0.1"
- rc-overflow "^1.0.0"
- rc-trigger "^5.0.4"
- rc-util "^5.0.1"
- rc-virtual-list "^3.2.0"
-
-rc-slider@~9.7.1:
- version "9.7.1"
- resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.1.tgz#63535177a74a3ee44f090909e8c6f98426eb9dba"
- integrity sha512-r9r0dpFA3PEvxBhIfVi1lVzxuSogWxeY+tGvi2AqMM1rPgaOXQ7WbtT+9kVFkJ9K8TntA/vYPgiCCKfN29KTkw==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.5"
- rc-tooltip "^5.0.1"
- rc-util "^5.0.0"
- shallowequal "^1.1.0"
-
-rc-steps@~4.1.0:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.3.tgz#208580e22db619e3830ddb7fa41bc886c65d9803"
- integrity sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA==
- dependencies:
- "@babel/runtime" "^7.10.2"
- classnames "^2.2.3"
- rc-util "^5.0.1"
-
-rc-switch@~3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8"
- integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.1"
- rc-util "^5.0.1"
-
-rc-table@~7.12.0:
- version "7.12.3"
- resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.12.3.tgz#c86e93b40dc3e2b8aae9e54ad7aa5a64ff7d261e"
- integrity sha512-R87lx28os4Ftm/9x+MamwzLw+Dtp9yxihceAgLA/9JS9QP/sqej1qlO+3T/Uw4paZqCg9SpW0XzLI1MandviWA==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.5"
- rc-resize-observer "^1.0.0"
- rc-util "^5.4.0"
- shallowequal "^1.1.0"
-
-rc-tabs@~11.7.0:
- version "11.7.3"
- resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.7.3.tgz#32a30e59c6992d60fb58115ba0bf2652b337ed43"
- integrity sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w==
- dependencies:
- "@babel/runtime" "^7.11.2"
- classnames "2.x"
- rc-dropdown "^3.1.3"
- rc-menu "^8.6.1"
- rc-resize-observer "^1.0.0"
- rc-util "^5.5.0"
-
-rc-textarea@^0.3.0, rc-textarea@~0.3.0:
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.4.tgz#1408a64c87b5e76db5c847699ef9ab5ee97dd6f9"
- integrity sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.1"
- rc-resize-observer "^1.0.0"
- rc-util "^5.7.0"
-
-rc-tooltip@^5.0.1, rc-tooltip@~5.0.0:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.2.tgz#e48258fc9931bd9281102b2d9eacc5b986cf3258"
- integrity sha512-A4FejSG56PzYtSNUU4H1pVzfhtkV/+qMT2clK0CsSj+9mbc4USEtpWeX6A/jjVL+goBOMKj8qlH7BCZmZWh/Nw==
- dependencies:
- "@babel/runtime" "^7.11.2"
- rc-trigger "^5.0.0"
-
-rc-tree-select@~4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.3.0.tgz#714a4fe658aa73f2a7b0aa4bd6e43be63194a6ce"
- integrity sha512-EEXB9dKBsJNJuKIU5NERZsaJ71GDGIj5uWLl7A4XiYr2jXM4JICfScvvp3O5jHMDfhqmgpqNc0z90mHkgh3hKg==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- rc-select "^12.0.0"
- rc-tree "^4.0.0"
- rc-util "^5.0.5"
-
-rc-tree@^4.0.0, rc-tree@~4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-4.1.1.tgz#d40f418b31b75e61886e3969481df1444232c98b"
- integrity sha512-ufq7CkWfvTQa+xMPzEWYfOjTfsEALlPr0/IyujEG4+4d8NdaR3e+0dc8LkkVWoe1VCcXV2FQqAsgr2z/ThFUrQ==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "2.x"
- rc-motion "^2.0.1"
- rc-util "^5.0.0"
- rc-virtual-list "^3.0.1"
-
-rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.1.tgz#54686220b884ed1e0750c4f2411fbb34d4928c99"
- integrity sha512-XZilSlSDnb0L/R3Ff2xo9C0Fho2aBDoAn8u3coM60XdLqTCo24nsOh1bfAMm0uIB1qVjh5eqeyFqnBPmXi8pJg==
- dependencies:
- "@babel/runtime" "^7.11.2"
- classnames "^2.2.6"
- rc-align "^4.0.0"
- rc-motion "^2.0.0"
- rc-util "^5.5.0"
-
-rc-upload@~3.3.4:
- version "3.3.4"
- resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.3.4.tgz#b0668d18661595c69c0621cec220fd116cc79952"
- integrity sha512-v2sirR4JL31UTHD/f0LGUdd+tpFaOVUTPeIEjAXRP9kRN8TFhqOgcXl5ixtyqj90FmtRUmKmafCv0EmhBQUHqQ==
- dependencies:
- "@babel/runtime" "^7.10.1"
- classnames "^2.2.5"
- rc-util "^5.2.0"
-
-rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.7.0.tgz#776b14cf5bbfc24f419fd40c42ffadddda0718fc"
- integrity sha512-0hh5XkJ+vBDeMJsHElqT1ijMx+gC3gpClwQ10h/5hccrrgrMx8VUem183KLlH1YrWCfMMPmDXWWNnwsn+p6URw==
- dependencies:
- "@babel/runtime" "^7.12.5"
- react-is "^16.12.0"
- shallowequal "^1.1.0"
-
-rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz#2c92a40f4425e19881b38134d6bd286a11137d2d"
- integrity sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q==
- dependencies:
- classnames "^2.2.6"
- rc-resize-observer "^1.0.0"
- rc-util "^5.0.7"
-
-react-dom@^17.0.0:
- version "17.0.1"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6"
- integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
- scheduler "^0.20.1"
-
-react-fast-compare@^2.0.1:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
- integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
-
-react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
- version "16.13.1"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
- integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-
-react-lifecycles-compat@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
- integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
-
-react-resize-detector@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-5.2.0.tgz#992083834432308c551a8251a2c52306d9d16718"
- integrity sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A==
- dependencies:
- lodash "^4.17.20"
- prop-types "^15.7.2"
- raf-schd "^4.0.2"
- resize-observer-polyfill "^1.5.1"
-
-react-router-dom@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662"
- integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==
- dependencies:
- "@babel/runtime" "^7.1.2"
- history "^4.9.0"
- loose-envify "^1.3.1"
- prop-types "^15.6.2"
- react-router "5.2.0"
- tiny-invariant "^1.0.2"
- tiny-warning "^1.0.0"
-
-react-router@5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293"
- integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==
- dependencies:
- "@babel/runtime" "^7.1.2"
- history "^4.9.0"
- hoist-non-react-statics "^3.1.0"
- loose-envify "^1.3.1"
- mini-create-react-context "^0.4.0"
- path-to-regexp "^1.7.0"
- prop-types "^15.6.2"
- react-is "^16.6.0"
- tiny-invariant "^1.0.2"
- tiny-warning "^1.0.0"
-
-react-smooth@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a"
- integrity sha512-B2vL4trGpNSMSOzFiAul9kFAsxTukL9Wyy9EXtkQy3GJr6sZqW9e1nShdVOJ3hRYamPZ94O17r3Q0bjSw3UYtg==
- dependencies:
- lodash "~4.17.4"
- prop-types "^15.6.0"
- raf "^3.4.0"
- react-transition-group "^2.5.0"
-
-react-transition-group@^2.5.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d"
- integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==
- dependencies:
- dom-helpers "^3.4.0"
- loose-envify "^1.4.0"
- prop-types "^15.6.2"
- react-lifecycles-compat "^3.0.4"
-
-react@^17.0.0:
- version "17.0.1"
- resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
- integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
-read-cache@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
- integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=
- dependencies:
- pify "^2.3.0"
-
-read-pkg-up@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
- integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
- dependencies:
- find-up "^2.0.0"
- read-pkg "^2.0.0"
-
-read-pkg-up@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
- integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
- dependencies:
- find-up "^4.1.0"
- read-pkg "^5.2.0"
- type-fest "^0.8.1"
-
-read-pkg@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
- integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
- dependencies:
- load-json-file "^2.0.0"
- normalize-package-data "^2.3.2"
- path-type "^2.0.0"
-
-read-pkg@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
- integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
- dependencies:
- "@types/normalize-package-data" "^2.4.0"
- normalize-package-data "^2.5.0"
- parse-json "^5.0.0"
- type-fest "^0.6.0"
-
-readable-stream@^2.0.1, readable-stream@^2.0.2:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
-readable-stream@^3.0.6, readable-stream@^3.1.1:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readdirp@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
- integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
- dependencies:
- graceful-fs "^4.1.11"
- micromatch "^3.1.10"
- readable-stream "^2.0.2"
-
-recharts-scale@^0.4.2:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59"
- integrity sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA==
- dependencies:
- decimal.js-light "^2.4.1"
-
-recharts@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.0.4.tgz#0ffaa9437762ed0bf021968af42154777f97c94c"
- integrity sha512-XwFRhyOW6APMKvrCqN8e1IPHAQi7lmrOqp48LKi40NFI8WjFWHgTaTfwBBMsGCnTJSezJEEd/41L3bo/tfevkw==
- dependencies:
- classnames "^2.2.5"
- d3-interpolate "^2.0.1"
- d3-scale "^3.2.3"
- d3-shape "^2.0.0"
- eventemitter3 "^4.0.1"
- lodash "^4.17.19"
- react-resize-detector "^5.2.0"
- react-smooth "^1.0.6"
- recharts-scale "^0.4.2"
- reduce-css-calc "^2.1.7"
-
-rechoir@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca"
- integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==
- dependencies:
- resolve "^1.9.0"
-
-redent@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
- integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
- dependencies:
- indent-string "^4.0.0"
- strip-indent "^3.0.0"
-
-reduce-css-calc@^2.1.7:
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03"
- integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==
- dependencies:
- css-unit-converter "^1.1.1"
- postcss-value-parser "^3.3.0"
-
-redux@^4.0.0:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
- integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==
- dependencies:
- loose-envify "^1.4.0"
- symbol-observable "^1.2.0"
-
-regenerator-runtime@^0.13.4:
- version "0.13.7"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
- integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
-
-regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
-regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
- integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
-
-regexpp@^3.0.0, regexpp@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
- integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
-
-relateurl@^0.2.7:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
- integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
-
-remark-parse@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640"
- integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==
- dependencies:
- mdast-util-from-markdown "^0.8.0"
-
-remark-stringify@^9.0.0:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894"
- integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==
- dependencies:
- mdast-util-to-markdown "^0.6.0"
-
-remark@^13.0.0:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425"
- integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==
- dependencies:
- remark-parse "^9.0.0"
- remark-stringify "^9.0.0"
- unified "^9.1.0"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-renderkid@^2.0.4:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5"
- integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==
- dependencies:
- css-select "^2.0.2"
- dom-converter "^0.2"
- htmlparser2 "^3.10.1"
- lodash "^4.17.20"
- strip-ansi "^3.0.0"
-
-repeat-element@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
- integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-
-repeat-string@^1.0.0, repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-require-from-string@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
- integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
-require-main-filename@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
- integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
-
-requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-
-resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
- integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
-
-resolve-cwd@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
- integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
- dependencies:
- resolve-from "^3.0.0"
-
-resolve-cwd@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
- integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
- dependencies:
- resolve-from "^5.0.0"
-
-resolve-from@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
- integrity sha1-six699nWiBvItuZTM17rywoYh0g=
-
-resolve-from@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
- integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-
-resolve-from@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
- integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-
-resolve-pathname@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
- integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
-
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
- integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.9.0:
- version "1.19.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
- integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
- dependencies:
- is-core-module "^2.1.0"
- path-parse "^1.0.6"
-
-ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-retry@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
- integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
-
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
-rgb-regex@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
- integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
-
-rgba-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
- integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-
-rimraf@^2.6.3, rimraf@^2.7.1:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
- integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
- dependencies:
- glob "^7.1.3"
-
-rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
-run-parallel@^1.1.9:
- version "1.1.10"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef"
- integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==
-
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
- dependencies:
- ret "~0.1.10"
-
-"safer-buffer@>= 2.1.2 < 3":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sax@~1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-scheduler@^0.20.1:
- version "0.20.1"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
- integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
-schema-utils@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
- integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
- dependencies:
- ajv "^6.1.0"
- ajv-errors "^1.0.0"
- ajv-keywords "^3.1.0"
-
-schema-utils@^2.6.5:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
- integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
- dependencies:
- "@types/json-schema" "^7.0.5"
- ajv "^6.12.4"
- ajv-keywords "^3.5.2"
-
-schema-utils@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
- integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
- dependencies:
- "@types/json-schema" "^7.0.6"
- ajv "^6.12.5"
- ajv-keywords "^3.5.2"
-
-scroll-into-view-if-needed@^2.2.25:
- version "2.2.26"
- resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz#e4917da0c820135ff65ad6f7e4b7d7af568c4f13"
- integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw==
- dependencies:
- compute-scroll-into-view "^1.0.16"
-
-select-hose@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
- integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
-
-selfsigned@^1.10.8:
- version "1.10.8"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30"
- integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==
- dependencies:
- node-forge "^0.10.0"
-
-"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
-semver@^6.0.0, semver@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-
-semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
- integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
- dependencies:
- lru-cache "^6.0.0"
-
-send@0.17.1:
- version "0.17.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
- integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
- dependencies:
- debug "2.6.9"
- depd "~1.1.2"
- destroy "~1.0.4"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- fresh "0.5.2"
- http-errors "~1.7.2"
- mime "1.6.0"
- ms "2.1.1"
- on-finished "~2.3.0"
- range-parser "~1.2.1"
- statuses "~1.5.0"
-
-serialize-javascript@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
- integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==
- dependencies:
- randombytes "^2.1.0"
-
-serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
- dependencies:
- accepts "~1.3.4"
- batch "0.6.1"
- debug "2.6.9"
- escape-html "~1.0.3"
- http-errors "~1.6.2"
- mime-types "~2.1.17"
- parseurl "~1.3.2"
-
-serve-static@1.14.1:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
- integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.3"
- send "0.17.1"
-
-set-blocking@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
-set-value@^2.0.0, set-value@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
- integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
-setprototypeof@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
- integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
-
-shallow-clone@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
- integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
- dependencies:
- kind-of "^6.0.2"
-
-shallowequal@^1.0.2, shallowequal@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
- integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-side-channel@^1.0.3, side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
-signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
- integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
-
-simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
- dependencies:
- is-arrayish "^0.3.1"
-
-slash@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
- integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-
-slice-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
- integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
- dependencies:
- ansi-styles "^4.0.0"
- astral-regex "^2.0.0"
- is-fullwidth-code-point "^3.0.0"
-
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
- dependencies:
- base "^0.11.1"
- debug "^2.2.0"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- map-cache "^0.2.2"
- source-map "^0.5.6"
- source-map-resolve "^0.5.0"
- use "^3.1.0"
-
-sockjs-client@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add"
- integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==
- dependencies:
- debug "^3.2.6"
- eventsource "^1.0.7"
- faye-websocket "^0.11.3"
- inherits "^2.0.4"
- json3 "^3.3.3"
- url-parse "^1.4.7"
-
-sockjs@^0.3.21:
- version "0.3.21"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
- integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==
- dependencies:
- faye-websocket "^0.11.3"
- uuid "^3.4.0"
- websocket-driver "^0.7.4"
-
-source-list-map@^2.0.0, source-list-map@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
- integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
-
-source-map-resolve@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
- integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
- dependencies:
- atob "^2.1.2"
- decode-uri-component "^0.2.0"
- resolve-url "^0.2.1"
- source-map-url "^0.4.0"
- urix "^0.1.0"
-
-source-map-support@^0.5.17, source-map-support@~0.5.12, source-map-support@~0.5.19:
- version "0.5.19"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
- integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
-source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
- integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
-source-map@^0.5.0, source-map@^0.5.6:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-source-map@^0.7.3, source-map@~0.7.2:
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
- integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
-
-spdx-correct@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
- integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
- integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
- integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
- integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
-
-spdy-transport@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
- integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
- dependencies:
- debug "^4.1.0"
- detect-node "^2.0.4"
- hpack.js "^2.1.6"
- obuf "^1.1.2"
- readable-stream "^3.0.6"
- wbuf "^1.7.3"
-
-spdy@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
- integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
- dependencies:
- debug "^4.1.0"
- handle-thing "^2.0.0"
- http-deceiver "^1.2.7"
- select-hose "^2.0.0"
- spdy-transport "^3.0.0"
-
-specificity@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019"
- integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==
-
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
- dependencies:
- extend-shallow "^3.0.0"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-ssri@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808"
- integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==
- dependencies:
- minipass "^3.1.1"
-
-stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
-"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
-string-convert@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
- integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=
-
-string-hash@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
- integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
-
-string-width@^3.0.0, string-width@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
- integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
- dependencies:
- emoji-regex "^7.0.1"
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^5.1.0"
-
-string-width@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
- integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.0"
-
-string.prototype.matchall@^4.0.2:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a"
- integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
- has-symbols "^1.0.1"
- internal-slot "^1.0.2"
- regexp.prototype.flags "^1.3.0"
- side-channel "^1.0.3"
-
-string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
- integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
-
-string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
- integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
- integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
- dependencies:
- ansi-regex "^4.1.0"
-
-strip-ansi@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
- integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
- dependencies:
- ansi-regex "^5.0.0"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
- integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
- integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
-strip-final-newline@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
- integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-
-strip-indent@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
- integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
- dependencies:
- min-indent "^1.0.0"
-
-strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
- integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-
-style-loader@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c"
- integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==
- dependencies:
- loader-utils "^2.0.0"
- schema-utils "^3.0.0"
-
-style-search@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
- integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=
-
-stylehacks@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
- integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
-stylelint-webpack-plugin@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/stylelint-webpack-plugin/-/stylelint-webpack-plugin-2.1.1.tgz#1c8ae72a4e5818f7e5925e3fff10502ad34a52a5"
- integrity sha512-WHdaWCp4NANcTcltuRjZCjM7jVhdaSg7ag/sQLE22Bf84g5nQC4nBBK8FBdHAssJsho0fDRiwyrzGsIPO+b94A==
- dependencies:
- arrify "^2.0.1"
- micromatch "^4.0.2"
- schema-utils "^3.0.0"
-
-stylelint@^13.7.2:
- version "13.9.0"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.9.0.tgz#93921ee6e11d4556b9f31131f485dc813b68e32a"
- integrity sha512-VVWH2oixOAxpWL1vH+V42ReCzBjW2AeqskSAbi8+3OjV1Xg3VZkmTcAqBZfRRvJeF4BvYuDLXebW3tIHxgZDEg==
- dependencies:
- "@stylelint/postcss-css-in-js" "^0.37.2"
- "@stylelint/postcss-markdown" "^0.36.2"
- autoprefixer "^9.8.6"
- balanced-match "^1.0.0"
- chalk "^4.1.0"
- cosmiconfig "^7.0.0"
- debug "^4.3.1"
- execall "^2.0.0"
- fast-glob "^3.2.5"
- fastest-levenshtein "^1.0.12"
- file-entry-cache "^6.0.0"
- get-stdin "^8.0.0"
- global-modules "^2.0.0"
- globby "^11.0.2"
- globjoin "^0.1.4"
- html-tags "^3.1.0"
- ignore "^5.1.8"
- import-lazy "^4.0.0"
- imurmurhash "^0.1.4"
- known-css-properties "^0.20.0"
- lodash "^4.17.20"
- log-symbols "^4.0.0"
- mathml-tag-names "^2.1.3"
- meow "^9.0.0"
- micromatch "^4.0.2"
- normalize-selector "^0.2.0"
- postcss "^7.0.35"
- postcss-html "^0.36.0"
- postcss-less "^3.1.4"
- postcss-media-query-parser "^0.2.3"
- postcss-resolve-nested-selector "^0.1.1"
- postcss-safe-parser "^4.0.2"
- postcss-sass "^0.4.4"
- postcss-scss "^2.1.1"
- postcss-selector-parser "^6.0.4"
- postcss-syntax "^0.36.2"
- postcss-value-parser "^4.1.0"
- resolve-from "^5.0.0"
- slash "^3.0.0"
- specificity "^0.4.1"
- string-width "^4.2.0"
- strip-ansi "^6.0.0"
- style-search "^0.1.0"
- sugarss "^2.0.0"
- svg-tags "^1.0.0"
- table "^6.0.7"
- v8-compile-cache "^2.2.0"
- write-file-atomic "^3.0.3"
-
-sugarss@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d"
- integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==
- dependencies:
- postcss "^7.0.2"
-
-sugarss@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-3.0.3.tgz#bb2489961b98fbd15e4e35d6b9f4f2ee5547a6cb"
- integrity sha512-uxa2bbuc+w7ov7DyYIhF6bM0qZF3UkFT5/nE8AJgboiVnKsBDbwxs++dehEIe1JNhpMaGJc37wGQ2QrrWey2Sg==
- dependencies:
- postcss "^8.1.6"
-
-supports-color@^5.3.0, supports-color@^5.4.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
- integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^7.0.0, supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-svg-tags@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
- integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
-
-svgo@^1.0.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
- integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
- dependencies:
- chalk "^2.4.1"
- coa "^2.0.2"
- css-select "^2.0.0"
- css-select-base-adapter "^0.1.1"
- css-tree "1.0.0-alpha.37"
- csso "^4.0.2"
- js-yaml "^3.13.1"
- mkdirp "~0.5.1"
- object.values "^1.1.0"
- sax "~1.2.4"
- stable "^0.1.8"
- unquote "~1.1.1"
- util.promisify "~1.0.0"
-
-symbol-observable@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
- integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
-
-table@^6.0.4, table@^6.0.7:
- version "6.0.7"
- resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
- integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==
- dependencies:
- ajv "^7.0.2"
- lodash "^4.17.20"
- slice-ansi "^4.0.0"
- string-width "^4.2.0"
-
-tapable@^1.0.0, tapable@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-
-tapable@^2.1.1, tapable@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
- integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==
-
-tar@^6.0.2:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
- integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
- dependencies:
- chownr "^2.0.0"
- fs-minipass "^2.0.0"
- minipass "^3.0.0"
- minizlib "^2.1.1"
- mkdirp "^1.0.3"
- yallist "^4.0.0"
-
-terser-webpack-plugin@^5.0.0, terser-webpack-plugin@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673"
- integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==
- dependencies:
- jest-worker "^26.6.2"
- p-limit "^3.1.0"
- schema-utils "^3.0.0"
- serialize-javascript "^5.0.1"
- source-map "^0.6.1"
- terser "^5.5.1"
-
-terser@^4.6.3:
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
- integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
- dependencies:
- commander "^2.20.0"
- source-map "~0.6.1"
- source-map-support "~0.5.12"
-
-terser@^5.5.1:
- version "5.5.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289"
- integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==
- dependencies:
- commander "^2.20.0"
- source-map "~0.7.2"
- source-map-support "~0.5.19"
-
-text-table@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
- integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-
-thunky@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
- integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
-
-timsort@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
- integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-
-tiny-invariant@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
- integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==
-
-tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
- integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
-
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
-toggle-selection@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
- integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI=
-
-toidentifier@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
- integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
-
-trim-newlines@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30"
- integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==
-
-trough@^1.0.0:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
- integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
-
-ts-loader@^8.0.6:
- version "8.0.14"
- resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.14.tgz#e46ac1f8dcb88808d0b1335d2eae65b74bd78fe8"
- integrity sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA==
- dependencies:
- chalk "^4.1.0"
- enhanced-resolve "^4.0.0"
- loader-utils "^2.0.0"
- micromatch "^4.0.0"
- semver "^7.3.4"
-
-ts-morph@^8.1.2:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-8.2.0.tgz#41d83cd501cbd897eb029ac489d6d5b927555c57"
- integrity sha512-NHHWu+7I2/AOZiTni5w3f+xCfIxrkzPCcQbTGa81Yk3pr23a4h9xLLEE6tIGuYIubWjkjr9QVC3ITqgmA5touQ==
- dependencies:
- "@dsherret/to-absolute-glob" "^2.0.2"
- "@ts-morph/common" "~0.6.0"
- code-block-writer "^10.1.0"
-
-ts-node@^9.0.0:
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
- integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
- dependencies:
- arg "^4.1.0"
- create-require "^1.1.0"
- diff "^4.0.1"
- make-error "^1.1.1"
- source-map-support "^0.5.17"
- yn "3.1.1"
-
-tsconfig-paths@^3.9.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
- integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
- dependencies:
- "@types/json5" "^0.0.29"
- json5 "^1.0.1"
- minimist "^1.2.0"
- strip-bom "^3.0.0"
-
-tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
- integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-
-tslib@^2.0.3:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
- integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
-
-tsutils@^3.17.1:
- version "3.20.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
- integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==
- dependencies:
- tslib "^1.8.1"
-
-type-check@^0.4.0, type-check@~0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
- integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
- dependencies:
- prelude-ls "^1.2.1"
-
-type-fest@^0.18.0:
- version "0.18.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
- integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
-
-type-fest@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
- integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
-
-type-fest@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
- integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-
-type-is@~1.6.17, type-is@~1.6.18:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
-
-typedarray-to-buffer@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
- dependencies:
- is-typedarray "^1.0.0"
-
-typescript@^4.0.3:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
- integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
-
-typescript@~4.0.2:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389"
- integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==
-
-unc-path-regex@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
- integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
-
-unified@^9.1.0:
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
- integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
- dependencies:
- bail "^1.0.0"
- extend "^3.0.0"
- is-buffer "^2.0.0"
- is-plain-obj "^2.0.0"
- trough "^1.0.0"
- vfile "^4.0.0"
-
-union-value@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
- integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^2.0.1"
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
- integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
-
-uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
- integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
-
-unique-filename@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
- integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
- dependencies:
- unique-slug "^2.0.0"
-
-unique-slug@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
- integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
- dependencies:
- imurmurhash "^0.1.4"
-
-unist-util-find-all-after@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6"
- integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==
- dependencies:
- unist-util-is "^4.0.0"
-
-unist-util-is@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50"
- integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==
-
-unist-util-stringify-position@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
- integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==
- dependencies:
- "@types/unist" "^2.0.2"
-
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-universalify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
- integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
-unquote@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
- integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
-
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
-upath@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
- integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-
-uri-js@^4.2.2:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
- integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
- dependencies:
- punycode "^2.1.0"
-
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
- integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-url-loader@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
- integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==
- dependencies:
- loader-utils "^2.0.0"
- mime-types "^2.1.27"
- schema-utils "^3.0.0"
-
-url-parse@^1.4.3, url-parse@^1.4.7:
- version "1.4.7"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
- integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
- dependencies:
- querystringify "^2.1.1"
- requires-port "^1.0.0"
-
-url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
-use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-util.promisify@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
- integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
- dependencies:
- define-properties "^1.1.2"
- object.getownpropertydescriptors "^2.0.3"
-
-util.promisify@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
- integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.2"
- has-symbols "^1.0.1"
- object.getownpropertydescriptors "^2.1.0"
-
-utila@~0.4:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
- integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
-
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
-uuid@^3.3.2, uuid@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
- integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-
-v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
- integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
-
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
-value-equal@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
- integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
-
-vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-
-vendors@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
- integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
-
-vfile-message@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
- integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
- dependencies:
- "@types/unist" "^2.0.0"
- unist-util-stringify-position "^2.0.0"
-
-vfile@^4.0.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624"
- integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==
- dependencies:
- "@types/unist" "^2.0.0"
- is-buffer "^2.0.0"
- unist-util-stringify-position "^2.0.0"
- vfile-message "^2.0.0"
-
-warning@^4.0.1, warning@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
- integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
- dependencies:
- loose-envify "^1.0.0"
-
-watchpack@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.0.tgz#e63194736bf3aa22026f7b191cd57907b0f9f696"
- integrity sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==
- dependencies:
- glob-to-regexp "^0.4.1"
- graceful-fs "^4.1.2"
-
-wbuf@^1.1.0, wbuf@^1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
- integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
- dependencies:
- minimalistic-assert "^1.0.0"
-
-webpack-cli@^4.2.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.4.0.tgz#38c7fa01ea31510f5c490245dd1bb28018792f1b"
- integrity sha512-/Qh07CXfXEkMu5S8wEpjuaw2Zj/CC0hf/qbTDp6N8N7JjdGuaOjZ7kttz+zhuJO/J5m7alQEhNk9lsc4rC6xgQ==
- dependencies:
- "@discoveryjs/json-ext" "^0.5.0"
- "@webpack-cli/configtest" "^1.0.0"
- "@webpack-cli/info" "^1.2.1"
- "@webpack-cli/serve" "^1.2.2"
- colorette "^1.2.1"
- commander "^6.2.0"
- enquirer "^2.3.6"
- execa "^5.0.0"
- fastest-levenshtein "^1.0.12"
- import-local "^3.0.2"
- interpret "^2.2.0"
- rechoir "^0.7.0"
- v8-compile-cache "^2.2.0"
- webpack-merge "^5.7.3"
-
-webpack-dev-middleware@^3.7.2:
- version "3.7.3"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5"
- integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
- dependencies:
- memory-fs "^0.4.1"
- mime "^2.4.4"
- mkdirp "^0.5.1"
- range-parser "^1.2.1"
- webpack-log "^2.0.0"
-
-webpack-dev-server@^3.11.0:
- version "3.11.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708"
- integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==
- dependencies:
- ansi-html "0.0.7"
- bonjour "^3.5.0"
- chokidar "^2.1.8"
- compression "^1.7.4"
- connect-history-api-fallback "^1.6.0"
- debug "^4.1.1"
- del "^4.1.1"
- express "^4.17.1"
- html-entities "^1.3.1"
- http-proxy-middleware "0.19.1"
- import-local "^2.0.0"
- internal-ip "^4.3.0"
- ip "^1.1.5"
- is-absolute-url "^3.0.3"
- killable "^1.0.1"
- loglevel "^1.6.8"
- opn "^5.5.0"
- p-retry "^3.0.1"
- portfinder "^1.0.26"
- schema-utils "^1.0.0"
- selfsigned "^1.10.8"
- semver "^6.3.0"
- serve-index "^1.9.1"
- sockjs "^0.3.21"
- sockjs-client "^1.5.0"
- spdy "^4.0.2"
- strip-ansi "^3.0.1"
- supports-color "^6.1.0"
- url "^0.11.0"
- webpack-dev-middleware "^3.7.2"
- webpack-log "^2.0.0"
- ws "^6.2.1"
- yargs "^13.3.2"
-
-webpack-log@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
- integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
- dependencies:
- ansi-colors "^3.0.0"
- uuid "^3.3.2"
-
-webpack-merge@^5.2.0, webpack-merge@^5.7.3:
- version "5.7.3"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213"
- integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==
- dependencies:
- clone-deep "^4.0.1"
- wildcard "^2.0.0"
-
-webpack-sources@^1.1.0, webpack-sources@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
- integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
- dependencies:
- source-list-map "^2.0.0"
- source-map "~0.6.1"
-
-webpack-sources@^2.1.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac"
- integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==
- dependencies:
- source-list-map "^2.0.1"
- source-map "^0.6.1"
-
-webpack@^5.10.0:
- version "5.18.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.18.0.tgz#bbcf13094aa0da0534d513f27d7ee72d74e499c6"
- integrity sha512-RmiP/iy6ROvVe/S+u0TrvL/oOmvP+2+Bs8MWjvBwwY/j82Q51XJyDJ75m0QAGntL1Wx6B//Xc0+4VPP/hlNHmw==
- dependencies:
- "@types/eslint-scope" "^3.7.0"
- "@types/estree" "^0.0.46"
- "@webassemblyjs/ast" "1.11.0"
- "@webassemblyjs/wasm-edit" "1.11.0"
- "@webassemblyjs/wasm-parser" "1.11.0"
- acorn "^8.0.4"
- browserslist "^4.14.5"
- chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.7.0"
- es-module-lexer "^0.3.26"
- eslint-scope "^5.1.1"
- events "^3.2.0"
- glob-to-regexp "^0.4.1"
- graceful-fs "^4.2.4"
- json-parse-better-errors "^1.0.2"
- loader-runner "^4.2.0"
- mime-types "^2.1.27"
- neo-async "^2.6.2"
- pkg-dir "^5.0.0"
- schema-utils "^3.0.0"
- tapable "^2.1.1"
- terser-webpack-plugin "^5.1.1"
- watchpack "^2.0.0"
- webpack-sources "^2.1.1"
-
-websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
- integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
- dependencies:
- http-parser-js ">=0.5.1"
- safe-buffer ">=5.1.0"
- websocket-extensions ">=0.1.1"
-
-websocket-extensions@>=0.1.1:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
- integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
-
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which@^1.2.9, which@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
-which@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-wildcard@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
- integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
-
-word-wrap@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
- integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-
-wrap-ansi@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
- integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
- dependencies:
- ansi-styles "^3.2.0"
- string-width "^3.0.0"
- strip-ansi "^5.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-write-file-atomic@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
- integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
- dependencies:
- imurmurhash "^0.1.4"
- is-typedarray "^1.0.0"
- signal-exit "^3.0.2"
- typedarray-to-buffer "^3.1.5"
-
-ws@^6.2.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
- integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
- dependencies:
- async-limiter "~1.0.0"
-
-y18n@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
- integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yaml@^1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
- integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
-
-yargs-parser@^13.1.2:
- version "13.1.2"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
- integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
-
-yargs-parser@^20.2.3:
- version "20.2.4"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
- integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
-
-yargs@^13.3.2:
- version "13.3.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
- integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
- dependencies:
- cliui "^5.0.0"
- find-up "^3.0.0"
- get-caller-file "^2.0.1"
- require-directory "^2.1.1"
- require-main-filename "^2.0.0"
- set-blocking "^2.0.0"
- string-width "^3.0.0"
- which-module "^2.0.0"
- y18n "^4.0.0"
- yargs-parser "^13.1.2"
-
-yn@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
- integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
-
-yocto-queue@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
- integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
-
-zwitch@^1.0.0:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
- integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==
diff --git a/go.mod b/go.mod
index efdda558..cf15d902 100644
--- a/go.mod
+++ b/go.mod
@@ -3,9 +3,10 @@ module github.com/AdguardTeam/AdGuardHome
go 1.18
require (
- github.com/AdguardTeam/dnsproxy v0.46.5
- github.com/AdguardTeam/golibs v0.11.3
- github.com/AdguardTeam/urlfilter v0.16.0
+ // TODO(a.garipov): Return to a tagged version once DNS64 is in.
+ github.com/AdguardTeam/dnsproxy v0.46.6-0.20230125113741-98cb8a899e49
+ github.com/AdguardTeam/golibs v0.11.4
+ github.com/AdguardTeam/urlfilter v0.16.1
github.com/NYTimes/gziphandler v1.1.1
github.com/ameshkov/dnscrypt/v2 v2.2.5
github.com/digineo/go-ipset/v2 v2.2.1
@@ -16,22 +17,22 @@ require (
github.com/google/gopacket v1.1.19
github.com/google/renameio v1.0.1
github.com/google/uuid v1.3.0
- github.com/insomniacslk/dhcp v0.0.0-20221001123530-5308ebe5334c
+ github.com/insomniacslk/dhcp v0.0.0-20221215072855-de60144f33f8
github.com/kardianos/service v1.2.2
- github.com/lucas-clemente/quic-go v0.31.0
+ github.com/lucas-clemente/quic-go v0.31.1
github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118
- github.com/mdlayher/netlink v1.6.2
+ github.com/mdlayher/netlink v1.7.1
// TODO(a.garipov): This package is deprecated; find a new one or use
// our own code for that. Perhaps, use gopacket.
github.com/mdlayher/raw v0.1.0
github.com/miekg/dns v1.1.50
- github.com/stretchr/testify v1.8.0
- github.com/ti-mo/netfilter v0.4.0
- go.etcd.io/bbolt v1.3.6
- golang.org/x/crypto v0.1.0
- golang.org/x/exp v0.0.0-20221106115401-f9659909a136
- golang.org/x/net v0.4.0
- golang.org/x/sys v0.3.0
+ github.com/stretchr/testify v1.8.1
+ github.com/ti-mo/netfilter v0.5.0
+ go.etcd.io/bbolt v1.3.7
+ golang.org/x/crypto v0.5.0
+ golang.org/x/exp v0.0.0-20230131160201-f062dba9d201
+ golang.org/x/net v0.5.0
+ golang.org/x/sys v0.4.0
gopkg.in/natefinch/lumberjack.v2 v2.0.0
gopkg.in/yaml.v3 v3.0.1
howett.net/plist v1.0.0
@@ -47,20 +48,20 @@ require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
github.com/golang/mock v1.6.0 // indirect
- github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
- github.com/josharian/native v1.0.0 // indirect
+ github.com/google/pprof v0.0.0-20230131232505-5a9e8f65f08f // indirect
+ github.com/josharian/native v1.1.0 // indirect
github.com/marten-seemann/qpack v0.3.0 // indirect
- github.com/marten-seemann/qtls-go1-18 v0.1.3 // indirect
- github.com/marten-seemann/qtls-go1-19 v0.1.1 // indirect
- github.com/mdlayher/packet v1.0.0 // indirect
- github.com/mdlayher/socket v0.2.3 // indirect
- github.com/onsi/ginkgo/v2 v2.5.0 // indirect
+ github.com/marten-seemann/qtls-go1-18 v0.1.4 // indirect
+ github.com/marten-seemann/qtls-go1-19 v0.1.2 // indirect
+ github.com/mdlayher/packet v1.1.1 // indirect
+ github.com/mdlayher/socket v0.4.0 // indirect
+ github.com/onsi/ginkgo/v2 v2.8.0 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/u-root/uio v0.0.0-20220204230159-dac05f7d2cb4 // indirect
- golang.org/x/mod v0.6.0 // indirect
+ github.com/u-root/uio v0.0.0-20221213070652-c3537552635f // indirect
+ golang.org/x/mod v0.7.0 // indirect
golang.org/x/sync v0.1.0 // indirect
- golang.org/x/text v0.5.0 // indirect
- golang.org/x/tools v0.2.0 // indirect
+ golang.org/x/text v0.6.0 // indirect
+ golang.org/x/tools v0.5.0 // indirect
)
diff --git a/go.sum b/go.sum
index 46d70dc0..a5b49b33 100644
--- a/go.sum
+++ b/go.sum
@@ -1,12 +1,12 @@
-github.com/AdguardTeam/dnsproxy v0.46.5 h1:TiJZhwaIDDaKkqEfJ9AD9aroFjcHN8oEbKB8WfTjSIs=
-github.com/AdguardTeam/dnsproxy v0.46.5/go.mod h1:yKBVgFlE6CqTQtye++3e7SATaMPc4Ixij+KkHsM6HhM=
+github.com/AdguardTeam/dnsproxy v0.46.6-0.20230125113741-98cb8a899e49 h1:TDZsKB8BrKA2na6p5l20BvEu3MmgOWhIfTANz5laFuE=
+github.com/AdguardTeam/dnsproxy v0.46.6-0.20230125113741-98cb8a899e49/go.mod h1:ZEkTmTJ2XInT3aVy0mHtEnSWSclpHHj/9hfNXDuAk5k=
github.com/AdguardTeam/golibs v0.4.0/go.mod h1:skKsDKIBB7kkFflLJBpfGX+G8QFTx0WKUzB6TIgtUj4=
github.com/AdguardTeam/golibs v0.10.4/go.mod h1:rSfQRGHIdgfxriDDNgNJ7HmE5zRoURq8R+VdR81Zuzw=
-github.com/AdguardTeam/golibs v0.11.3 h1:Oif+REq2WLycQ2Xm3ZPmJdfftptss0HbGWbxdFaC310=
-github.com/AdguardTeam/golibs v0.11.3/go.mod h1:87bN2x4VsTritptE3XZg9l8T6gznWsIxHBcQ1DeRIXA=
+github.com/AdguardTeam/golibs v0.11.4 h1:IltyvxwCTN+xxJF5sh6VadF8Zfbf8elgCm9dgijSVzM=
+github.com/AdguardTeam/golibs v0.11.4/go.mod h1:87bN2x4VsTritptE3XZg9l8T6gznWsIxHBcQ1DeRIXA=
github.com/AdguardTeam/gomitmproxy v0.2.0/go.mod h1:Qdv0Mktnzer5zpdpi5rAwixNJzW2FN91LjKJCkVbYGU=
-github.com/AdguardTeam/urlfilter v0.16.0 h1:IO29m+ZyQuuOnPLTzHuXj35V1DZOp1Dcryl576P2syg=
-github.com/AdguardTeam/urlfilter v0.16.0/go.mod h1:46YZDOV1+qtdRDuhZKVPSSp7JWWes0KayqHrKAFBdEI=
+github.com/AdguardTeam/urlfilter v0.16.1 h1:ZPi0rjqo8cQf2FVdzo6cqumNoHZx2KPXj2yZa1A5BBw=
+github.com/AdguardTeam/urlfilter v0.16.1/go.mod h1:46YZDOV1+qtdRDuhZKVPSSp7JWWes0KayqHrKAFBdEI=
github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I=
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
@@ -25,9 +25,6 @@ github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0 h1:0b2vaepXIfMsG+
github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA=
github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw=
github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -60,8 +57,8 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo=
-github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
-github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20230131232505-5a9e8f65f08f h1:gl1DCiSk+mrXXBGPm6CEeS2MkJuMVzAOrXg34oVj1QI=
+github.com/google/pprof v0.0.0-20230131232505-5a9e8f65f08f/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
github.com/google/renameio v1.0.1 h1:Lh/jXZmvZxb0BBeSY5VKEfidcbcbenKjZFzM/q0fSeU=
github.com/google/renameio v1.0.1/go.mod h1:t/HQoYBZSsWSNK35C6CO/TpPLDVWvxOHboWUAweKUpk=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -70,12 +67,13 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714 h1:/jC7qQFrv8CrSJVmaolDVOxTfS9kc36uB6H40kdbQq8=
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714/go.mod h1:2Goc3h8EklBH5mspfHFxBnEoURQCGzQQH1ga9Myjvis=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/insomniacslk/dhcp v0.0.0-20221001123530-5308ebe5334c h1:OCFM4+DXTWfNlyeoddrTwdup/ztkGSyAMR2UGcPckNQ=
-github.com/insomniacslk/dhcp v0.0.0-20221001123530-5308ebe5334c/go.mod h1:h+MxyHxRg9NH3terB1nfRIUaQEcI0XOVkdR9LNBlp8E=
+github.com/insomniacslk/dhcp v0.0.0-20221215072855-de60144f33f8 h1:Z72DOke2yOK0Ms4Z2LK1E1OrRJXOxSj5DllTz2FYTRg=
+github.com/insomniacslk/dhcp v0.0.0-20221215072855-de60144f33f8/go.mod h1:m5WMe03WCvWcXjRnhvaAbAAXdCnu20J5P+mmH44ZzpE=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-github.com/josharian/native v1.0.0 h1:Ts/E8zCSEsG17dUqv7joXJFybuMLjQfWE04tsBODTxk=
github.com/josharian/native v1.0.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
+github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw=
github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ=
github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqoO/u39cqLeBLebZ8fWdE96O7FxrAsRYhnVOdgHxok=
@@ -87,14 +85,14 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/lucas-clemente/quic-go v0.31.0 h1:MfNp3fk0wjWRajw6quMFA3ap1AVtlU+2mtwmbVogB2M=
-github.com/lucas-clemente/quic-go v0.31.0/go.mod h1:0wFbizLgYzqHqtlyxyCaJKlE7bYgE6JQ+54TLd/Dq2g=
+github.com/lucas-clemente/quic-go v0.31.1 h1:O8Od7hfioqq0PMYHDyBkxU2aA7iZ2W9pjbrWuja2YR4=
+github.com/lucas-clemente/quic-go v0.31.1/go.mod h1:0wFbizLgYzqHqtlyxyCaJKlE7bYgE6JQ+54TLd/Dq2g=
github.com/marten-seemann/qpack v0.3.0 h1:UiWstOgT8+znlkDPOg2+3rIuYXJ2CnGDkGUXN6ki6hE=
github.com/marten-seemann/qpack v0.3.0/go.mod h1:cGfKPBiP4a9EQdxCwEwI/GEeWAsjSekBvx/X8mh58+g=
-github.com/marten-seemann/qtls-go1-18 v0.1.3 h1:R4H2Ks8P6pAtUagjFty2p7BVHn3XiwDAl7TTQf5h7TI=
-github.com/marten-seemann/qtls-go1-18 v0.1.3/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4=
-github.com/marten-seemann/qtls-go1-19 v0.1.1 h1:mnbxeq3oEyQxQXwI4ReCgW9DPoPR94sNlqWoDZnjRIE=
-github.com/marten-seemann/qtls-go1-19 v0.1.1/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI=
+github.com/marten-seemann/qtls-go1-18 v0.1.4 h1:ogomB+lWV3Vmwiu6RTwDVTMGx+9j7SEi98e8QB35Its=
+github.com/marten-seemann/qtls-go1-18 v0.1.4/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4=
+github.com/marten-seemann/qtls-go1-19 v0.1.2 h1:ZevAEqKXH0bZmoOBPiqX2h5rhQ7cbZi+X+rlq2JUbCE=
+github.com/marten-seemann/qtls-go1-19 v0.1.2/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI=
github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7/go.mod h1:U6ZQobyTjI/tJyq2HG+i/dfSoFUt8/aZCM+GKtmFk/Y=
github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118 h1:2oDp6OOhLxQ9JBoUuysVz9UZ9uI6oLUbvAZu0x8o+vE=
github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118/go.mod h1:ZFUnHIVchZ9lJoWoEGUg8Q3M4U8aNNWA3CVSUTkW4og=
@@ -103,26 +101,26 @@ github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE
github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M=
github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcKp9uZHgmY=
github.com/mdlayher/netlink v1.1.1/go.mod h1:WTYpFb/WTvlRJAyKhZL5/uy69TDDpHHu2VZmb2XgV7o=
-github.com/mdlayher/netlink v1.1.2-0.20201013204415-ded538f7f4be/go.mod h1:WTYpFb/WTvlRJAyKhZL5/uy69TDDpHHu2VZmb2XgV7o=
-github.com/mdlayher/netlink v1.6.2 h1:D2zGSkvYsJ6NreeED3JiVTu1lj2sIYATqSaZlhPzUgQ=
-github.com/mdlayher/netlink v1.6.2/go.mod h1:O1HXX2sIWSMJ3Qn1BYZk1yZM+7iMki/uYGGiwGyq/iU=
-github.com/mdlayher/packet v1.0.0 h1:InhZJbdShQYt6XV2GPj5XHxChzOfhJJOMbvnGAmOfQ8=
+github.com/mdlayher/netlink v1.7.1 h1:FdUaT/e33HjEXagwELR8R3/KL1Fq5x3G5jgHLp/BTmg=
+github.com/mdlayher/netlink v1.7.1/go.mod h1:nKO5CSjE/DJjVhk/TNp6vCE1ktVxEA8VEh8drhZzxsQ=
github.com/mdlayher/packet v1.0.0/go.mod h1:eE7/ctqDhoiRhQ44ko5JZU2zxB88g+JH/6jmnjzPjOU=
+github.com/mdlayher/packet v1.1.1 h1:7Fv4OEMYqPl7//uBm04VgPpnSNi8fbBZznppgh6WMr8=
+github.com/mdlayher/packet v1.1.1/go.mod h1:DRvYY5mH4M4lUqAnMg04E60U4fjUKMZ/4g2cHElZkKo=
github.com/mdlayher/raw v0.0.0-20190606142536-fef19f00fc18/go.mod h1:7EpbotpCmVZcu+KCX4g9WaRNuu11uyhiW7+Le1dKawg=
github.com/mdlayher/raw v0.0.0-20191009151244-50f2db8cc065/go.mod h1:7EpbotpCmVZcu+KCX4g9WaRNuu11uyhiW7+Le1dKawg=
github.com/mdlayher/raw v0.1.0 h1:K4PFMVy+AFsp0Zdlrts7yNhxc/uXoPVHi9RzRvtZF2Y=
github.com/mdlayher/raw v0.1.0/go.mod h1:yXnxvs6c0XoF/aK52/H5PjsVHmWBCFfZUfoh/Y5s9Sg=
github.com/mdlayher/socket v0.2.1/go.mod h1:QLlNPkFR88mRUNQIzRBMfXxwKal8H7u1h3bL1CV+f0E=
-github.com/mdlayher/socket v0.2.3 h1:XZA2X2TjdOwNoNPVPclRCURoX/hokBY8nkTmRZFEheM=
-github.com/mdlayher/socket v0.2.3/go.mod h1:bz12/FozYNH/VbvC3q7TRIK/Y6dH1kCKsXaUeXi/FmY=
+github.com/mdlayher/socket v0.4.0 h1:280wsy40IC9M9q1uPGcLBwXpcTQDtoGwVt+BNoITxIw=
+github.com/mdlayher/socket v0.4.0/go.mod h1:xxFqz5GRCUN3UEOm9CZqEJsAbe1C8OwSK46NlmWuVoc=
github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/onsi/ginkgo/v2 v2.5.0 h1:TRtrvv2vdQqzkwrQ1ke6vtXf7IK34RBUJafIy1wMwls=
-github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
-github.com/onsi/gomega v1.24.0 h1:+0glovB9Jd6z3VR+ScSwQqXVTIfJcGA9UBM8yzQxhqg=
+github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI=
+github.com/onsi/ginkgo/v2 v2.8.0/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU=
+github.com/onsi/gomega v1.25.0 h1:Vw7br2PCDYijJHSfBOWhov+8cAnUf8MfMaIOV323l6Y=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -135,40 +133,41 @@ github.com/shirou/gopsutil/v3 v3.21.8/go.mod h1:YWp/H8Qs5fVmf17v7JNZzA0mPJ+mS2e9
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/ti-mo/netfilter v0.2.0/go.mod h1:8GbBGsY/8fxtyIdfwy29JiluNcPK4K7wIT+x42ipqUU=
-github.com/ti-mo/netfilter v0.4.0 h1:rTN1nBYULDmMfDeBHZpKuNKX/bWEXQUhe02a/10orzg=
-github.com/ti-mo/netfilter v0.4.0/go.mod h1:V54q75mUx8CNA2JnFl+wv9iZ5+JP9nCcRlaFS5OZSRM=
+github.com/ti-mo/netfilter v0.5.0 h1:MZmsUw5bFRecOb0AeyjOPxTHg4UxYzyEs0Ek/6Lxoy8=
+github.com/ti-mo/netfilter v0.5.0/go.mod h1:nt+8B9hx/QpqHr7Hazq+2qMCCA8u2OTkyc/7+U9ARz8=
github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo=
github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs=
github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ=
github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8=
-github.com/u-root/uio v0.0.0-20210528114334-82958018845c/go.mod h1:LpEX5FO/cB+WF4TYGY1V5qktpaZLkKkSegbr0V4eYXA=
-github.com/u-root/uio v0.0.0-20220204230159-dac05f7d2cb4 h1:hl6sK6aFgTLISijk6xIzeqnPzQcsLqqvL6vEfTPinME=
-github.com/u-root/uio v0.0.0-20220204230159-dac05f7d2cb4/go.mod h1:LpEX5FO/cB+WF4TYGY1V5qktpaZLkKkSegbr0V4eYXA=
+github.com/u-root/uio v0.0.0-20221213070652-c3537552635f h1:dpx1PHxYqAnXzbryJrWP1NQLzEjwcVgFLhkknuFQ7ww=
+github.com/u-root/uio v0.0.0-20221213070652-c3537552635f/go.mod h1:IogEAUBXDEwX7oR/BMmCctShYs80ql4hF0ySdzGxf7E=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=
-go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
+go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
+go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
-golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
-golang.org/x/exp v0.0.0-20221106115401-f9659909a136 h1:Fq7F/w7MAa1KJ5bt2aJ62ihqp9HDcRuyILskkpIAurw=
-golang.org/x/exp v0.0.0-20221106115401-f9659909a136/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
+golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
+golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 h1:BEABXpNXLEz0WxtA+6CQIz2xkg80e+1zrhWyMcq8VzE=
+golang.org/x/exp v0.0.0-20230131160201-f062dba9d201/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I=
-golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
+golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
+golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190419010253-1f3472d942ba/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -179,19 +178,16 @@ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201016165138-7b1cca2348c0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210929193557-e81a3d93ecf6/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
-golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
+golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
+golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -204,13 +200,10 @@ golang.org/x/sys v0.0.0-20190606122018-79a91cf218c4/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -218,35 +211,31 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
+golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
-golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
+golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE=
-golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
+golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4=
+golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/internal/aghalg/nullbool.go b/internal/aghalg/nullbool.go
index 01a8c974..861f74bb 100644
--- a/internal/aghalg/nullbool.go
+++ b/internal/aghalg/nullbool.go
@@ -4,6 +4,8 @@ import (
"bytes"
"encoding/json"
"fmt"
+
+ "github.com/AdguardTeam/golibs/mathutil"
)
// NullBool is a nullable boolean. Use these in JSON requests and responses
@@ -33,11 +35,7 @@ func (nb NullBool) String() (s string) {
// BoolToNullBool converts a bool into a NullBool.
func BoolToNullBool(cond bool) (nb NullBool) {
- if cond {
- return NBTrue
- }
-
- return NBFalse
+ return NBFalse - mathutil.BoolToNumber[NullBool](cond)
}
// type check
diff --git a/internal/aghio/limitedreader.go b/internal/aghio/limitedreader.go
index 02905e76..dbf7edce 100644
--- a/internal/aghio/limitedreader.go
+++ b/internal/aghio/limitedreader.go
@@ -4,6 +4,9 @@ package aghio
import (
"fmt"
"io"
+
+ "github.com/AdguardTeam/golibs/errors"
+ "github.com/AdguardTeam/golibs/mathutil"
)
// LimitReachedError records the limit and the operation that caused it.
@@ -11,22 +14,22 @@ type LimitReachedError struct {
Limit int64
}
-// Error implements the error interface for LimitReachedError.
+// Error implements the [error] interface for *LimitReachedError.
//
// TODO(a.garipov): Think about error string format.
func (lre *LimitReachedError) Error() string {
return fmt.Sprintf("attempted to read more than %d bytes", lre.Limit)
}
-// limitedReader is a wrapper for io.Reader with limited reader and dealing with
-// errors package.
+// limitedReader is a wrapper for [io.Reader] limiting the input and dealing
+// with errors package.
type limitedReader struct {
r io.Reader
limit int64
n int64
}
-// Read implements Reader interface.
+// Read implements the [io.Reader] interface.
func (lr *limitedReader) Read(p []byte) (n int, err error) {
if lr.n == 0 {
return 0, &LimitReachedError{
@@ -34,9 +37,7 @@ func (lr *limitedReader) Read(p []byte) (n int, err error) {
}
}
- if int64(len(p)) > lr.n {
- p = p[:lr.n]
- }
+ p = p[:mathutil.Min(lr.n, int64(len(p)))]
n, err = lr.r.Read(p)
lr.n -= int64(n)
@@ -48,7 +49,7 @@ func (lr *limitedReader) Read(p []byte) (n int, err error) {
// n bytes read.
func LimitReader(r io.Reader, n int64) (limited io.Reader, err error) {
if n < 0 {
- return nil, fmt.Errorf("aghio: invalid n in LimitReader: %d", n)
+ return nil, errors.Error("limit must be non-negative")
}
return &limitedReader{
diff --git a/internal/aghio/limitedreader_test.go b/internal/aghio/limitedreader_test.go
index 15c5fc81..b3cef08d 100644
--- a/internal/aghio/limitedreader_test.go
+++ b/internal/aghio/limitedreader_test.go
@@ -24,7 +24,7 @@ func TestLimitReader(t *testing.T) {
name: "zero",
n: 0,
}, {
- wantErrMsg: "aghio: invalid n in LimitReader: -1",
+ wantErrMsg: "limit must be non-negative",
name: "negative",
n: -1,
}}
diff --git a/internal/aghnet/hostscontainer.go b/internal/aghnet/hostscontainer.go
index a8170447..62886730 100644
--- a/internal/aghnet/hostscontainer.go
+++ b/internal/aghnet/hostscontainer.go
@@ -56,7 +56,7 @@ func (rm *requestMatcher) MatchRequest(
) (res *urlfilter.DNSResult, ok bool) {
switch req.DNSType {
case dns.TypeA, dns.TypeAAAA, dns.TypePTR:
- log.Debug("%s: handling the request", hostsContainerPref)
+ log.Debug("%s: handling the request for %s", hostsContainerPref, req.Hostname)
default:
return nil, false
}
@@ -481,9 +481,6 @@ func (hc *HostsContainer) refresh() (err error) {
}
// hc.last is nil on the first refresh, so let that one through.
- //
- // TODO(a.garipov): Once https://github.com/golang/go/issues/56621 is
- // resolved, remove the first condition.
if hc.last != nil && maps.EqualFunc(hp.table, hc.last, (*HostsRecord).equal) {
log.Debug("%s: no changes detected", hostsContainerPref)
diff --git a/internal/aghos/os.go b/internal/aghos/os.go
index 67496c78..40c79964 100644
--- a/internal/aghos/os.go
+++ b/internal/aghos/os.go
@@ -17,6 +17,8 @@ import (
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/log"
+ "github.com/AdguardTeam/golibs/mathutil"
+ "golang.org/x/exp/slices"
)
// UnsupportedError is returned by functions and methods when a particular
@@ -60,9 +62,8 @@ const MaxCmdOutputSize = 64 * 1024
func RunCommand(command string, arguments ...string) (code int, output []byte, err error) {
cmd := exec.Command(command, arguments...)
out, err := cmd.Output()
- if len(out) > MaxCmdOutputSize {
- out = out[:MaxCmdOutputSize]
- }
+
+ out = out[:mathutil.Min(len(out), MaxCmdOutputSize)]
if err != nil {
if eerr := new(exec.ExitError); errors.As(err, &eerr) {
@@ -136,14 +137,12 @@ func parsePSOutput(r io.Reader, cmdName string, ignore []int) (largest, instNum
}
cur, aerr := strconv.Atoi(fields[0])
- if aerr != nil || cur < 0 || intIn(cur, ignore) {
+ if aerr != nil || cur < 0 || slices.Contains(ignore, cur) {
continue
}
instNum++
- if cur > largest {
- largest = cur
- }
+ largest = mathutil.Max(largest, cur)
}
if err = s.Err(); err != nil {
return 0, 0, fmt.Errorf("scanning stdout: %w", err)
@@ -152,17 +151,6 @@ func parsePSOutput(r io.Reader, cmdName string, ignore []int) (largest, instNum
return largest, instNum, nil
}
-// intIn returns true if nums contains n.
-func intIn(n int, nums []int) (ok bool) {
- for _, nn := range nums {
- if n == nn {
- return true
- }
- }
-
- return false
-}
-
// IsOpenWrt returns true if host OS is OpenWrt.
func IsOpenWrt() (ok bool) {
return isOpenWrt()
diff --git a/internal/dnsforward/config.go b/internal/dnsforward/config.go
index 6357d681..c30d0d89 100644
--- a/internal/dnsforward/config.go
+++ b/internal/dnsforward/config.go
@@ -224,6 +224,9 @@ type ServerConfig struct {
// resolving PTR queries for local addresses.
LocalPTRResolvers []string
+ // DNS64Prefixes is a slice of NAT64 prefixes to be used for DNS64.
+ DNS64Prefixes []string
+
// ResolveClients signals if the RDNS should resolve clients' addresses.
ResolveClients bool
@@ -231,6 +234,9 @@ type ServerConfig struct {
// locally-served networks should be resolved via private PTR resolvers.
UsePrivateRDNS bool
+ // UseDNS64 defines if DNS64 is enabled for incoming requests.
+ UseDNS64 bool
+
// ServeHTTP3 defines if HTTP/3 is be allowed for incoming requests.
ServeHTTP3 bool
diff --git a/internal/dnsforward/dns.go b/internal/dnsforward/dns.go
index e4ca6520..1411a0f4 100644
--- a/internal/dnsforward/dns.go
+++ b/internal/dnsforward/dns.go
@@ -28,9 +28,10 @@ type dnsContext struct {
// response is modified by filters.
origResp *dns.Msg
- // unreversedReqIP stores an IP address obtained from PTR request if it
- // parsed successfully and belongs to one of locally-served IP ranges as per
- // RFC 6303.
+ // unreversedReqIP stores an IP address obtained from a PTR request if it
+ // was parsed successfully and belongs to one of the locally served IP
+ // ranges. It is also filled with unmapped version of the address if it's
+ // within DNS64 prefixes.
unreversedReqIP net.IP
// err is the error returned from a processing function.
@@ -57,7 +58,7 @@ type dnsContext struct {
// responseAD shows if the response had the AD bit set.
responseAD bool
- // isLocalClient shows if client's IP address is from locally-served
+ // isLocalClient shows if client's IP address is from locally served
// network.
isLocalClient bool
}
@@ -133,8 +134,8 @@ func (s *Server) handleDNSRequest(_ *proxy.Proxy, pctx *proxy.DNSContext) error
return nil
}
-// processRecursion checks the incoming request and halts it's handling if s
-// have tried to resolve it recently.
+// processRecursion checks the incoming request and halts its handling by
+// answering NXDOMAIN if s has tried to resolve it recently.
func (s *Server) processRecursion(dctx *dnsContext) (rc resultCode) {
pctx := dctx.proxyCtx
@@ -349,8 +350,8 @@ func (s *Server) makeDDRResponse(req *dns.Msg) (resp *dns.Msg) {
return resp
}
-// processDetermineLocal determines if the client's IP address is from
-// locally-served network and saves the result into the context.
+// processDetermineLocal determines if the client's IP address is from locally
+// served network and saves the result into the context.
func (s *Server) processDetermineLocal(dctx *dnsContext) (rc resultCode) {
rc = resultCodeSuccess
@@ -377,7 +378,8 @@ func (s *Server) dhcpHostToIP(host string) (ip netip.Addr, ok bool) {
}
// processDHCPHosts respond to A requests if the target hostname is known to
-// the server.
+// the server. It responds with a mapped IP address if the DNS64 is enabled and
+// the request is for AAAA.
//
// TODO(a.garipov): Adapt to AAAA as well.
func (s *Server) processDHCPHosts(dctx *dnsContext) (rc resultCode) {
@@ -409,20 +411,34 @@ func (s *Server) processDHCPHosts(dctx *dnsContext) (rc resultCode) {
log.Debug("dnsforward: dhcp record for %q is %s", reqHost, ip)
resp := s.makeResponse(req)
- if q.Qtype == dns.TypeA {
+ switch q.Qtype {
+ case dns.TypeA:
a := &dns.A{
Hdr: s.hdr(req, dns.TypeA),
A: ip.AsSlice(),
}
resp.Answer = append(resp.Answer, a)
+ case dns.TypeAAAA:
+ if len(s.dns64Prefs) > 0 {
+ // Respond with DNS64-mapped address for IPv4 host if DNS64 is
+ // enabled.
+ aaaa := &dns.AAAA{
+ Hdr: s.hdr(req, dns.TypeAAAA),
+ AAAA: s.mapDNS64(ip),
+ }
+ resp.Answer = append(resp.Answer, aaaa)
+ }
+ default:
+ // Go on.
}
+
dctx.proxyCtx.Res = resp
return resultCodeSuccess
}
// processRestrictLocal responds with NXDOMAIN to PTR requests for IP addresses
-// in locally-served network from external clients.
+// in locally served network from external clients.
func (s *Server) processRestrictLocal(dctx *dnsContext) (rc resultCode) {
pctx := dctx.proxyCtx
req := pctx.Req
@@ -452,15 +468,24 @@ func (s *Server) processRestrictLocal(dctx *dnsContext) (rc resultCode) {
return resultCodeSuccess
}
- // Restrict an access to local addresses for external clients. We also
- // assume that all the DHCP leases we give are locally-served or at least
- // don't need to be accessible externally.
- if !s.privateNets.Contains(ip) {
- log.Debug("dnsforward: addr %s is not from locally-served network", ip)
+ if s.shouldStripDNS64(ip) {
+ // Strip the prefix from the address to get the original IPv4.
+ ip = ip[nat64PrefixLen:]
+ // Treat a DNS64-prefixed address as a locally served one since those
+ // queries should never be sent to the global DNS.
+ dctx.unreversedReqIP = ip
+ }
+
+ // Restrict an access to local addresses for external clients. We also
+ // assume that all the DHCP leases we give are locally served or at least
+ // shouldn't be accessible externally.
+ if !s.privateNets.Contains(ip) {
return resultCodeSuccess
}
+ log.Debug("dnsforward: addr %s is from locally served network", ip)
+
if !dctx.isLocalClient {
log.Debug("dnsforward: %q requests an internal ip", pctx.Addr)
pctx.Res = s.genNXDomain(req)
@@ -473,7 +498,7 @@ func (s *Server) processRestrictLocal(dctx *dnsContext) (rc resultCode) {
dctx.unreversedReqIP = ip
// There is no need to filter request from external addresses since this
- // code is only executed when the request is for locally-served ARPA
+ // code is only executed when the request is for locally served ARPA
// hostname so disable redundant filters.
dctx.setts.ParentalEnabled = false
dctx.setts.SafeBrowsingEnabled = false
@@ -508,7 +533,7 @@ func (s *Server) processDHCPAddrs(dctx *dnsContext) (rc resultCode) {
return resultCodeSuccess
}
- // TODO(a.garipov): Remove once we switch to netip.Addr more fully.
+ // TODO(a.garipov): Remove once we switch to [netip.Addr] more fully.
ipAddr, err := netutil.IPToAddrNoMapped(ip)
if err != nil {
log.Debug("dnsforward: bad reverse ip %v from dhcp: %s", ip, err)
@@ -556,10 +581,6 @@ func (s *Server) processLocalPTR(dctx *dnsContext) (rc resultCode) {
s.serverLock.RLock()
defer s.serverLock.RUnlock()
- if !s.privateNets.Contains(ip) {
- return resultCodeSuccess
- }
-
if s.conf.UsePrivateRDNS {
s.recDetector.add(*pctx.Req)
if err := s.localResolvers.Resolve(pctx); err != nil {
@@ -636,9 +657,8 @@ func (s *Server) processUpstream(dctx *dnsContext) (rc resultCode) {
origReqAD := false
if s.conf.EnableDNSSEC {
- if req.AuthenticatedData {
- origReqAD = true
- } else {
+ origReqAD = req.AuthenticatedData
+ if !req.AuthenticatedData {
req.AuthenticatedData = true
}
}
@@ -655,6 +675,10 @@ func (s *Server) processUpstream(dctx *dnsContext) (rc resultCode) {
return resultCodeError
}
+ if s.performDNS64(prx, dctx) == resultCodeError {
+ return resultCodeError
+ }
+
dctx.responseFromUpstream = true
dctx.responseAD = pctx.Res.AuthenticatedData
diff --git a/internal/dnsforward/dns64.go b/internal/dnsforward/dns64.go
new file mode 100644
index 00000000..d6ea9c8f
--- /dev/null
+++ b/internal/dnsforward/dns64.go
@@ -0,0 +1,345 @@
+package dnsforward
+
+import (
+ "fmt"
+ "net"
+ "net/netip"
+
+ "github.com/AdguardTeam/dnsproxy/proxy"
+ "github.com/AdguardTeam/golibs/log"
+ "github.com/AdguardTeam/golibs/mathutil"
+ "github.com/AdguardTeam/golibs/netutil"
+ "github.com/miekg/dns"
+)
+
+const (
+ // maxNAT64PrefixBitLen is the maximum length of a NAT64 prefix in bits.
+ // See https://datatracker.ietf.org/doc/html/rfc6147#section-5.2.
+ maxNAT64PrefixBitLen = 96
+
+ // nat64PrefixLen is the length of a NAT64 prefix in bytes.
+ nat64PrefixLen = net.IPv6len - net.IPv4len
+
+ // maxDNS64SynTTL is the maximum TTL for synthesized DNS64 responses with no
+ // SOA records in seconds.
+ //
+ // If the SOA RR was not delivered with the negative response to the AAAA
+ // query, then the DNS64 SHOULD use the TTL of the original A RR or 600
+ // seconds, whichever is shorter.
+ //
+ // See https://datatracker.ietf.org/doc/html/rfc6147#section-5.1.7.
+ maxDNS64SynTTL uint32 = 600
+)
+
+// setupDNS64 initializes DNS64 settings, the NAT64 prefixes in particular. If
+// the DNS64 feature is enabled and no prefixes are configured, the default
+// Well-Known Prefix is used, just like Section 5.2 of RFC 6147 prescribes. Any
+// configured set of prefixes discards the default Well-Known prefix unless it
+// is specified explicitly. Each prefix also validated to be a valid IPv6
+// CIDR with a maximum length of 96 bits. The first specified prefix is then
+// used to synthesize AAAA records.
+func (s *Server) setupDNS64() (err error) {
+ if !s.conf.UseDNS64 {
+ return nil
+ }
+
+ l := len(s.conf.DNS64Prefixes)
+ if l == 0 {
+ s.dns64Prefs = []netip.Prefix{dns64WellKnownPref}
+
+ return nil
+ }
+
+ prefs := make([]netip.Prefix, 0, l)
+ for i, pref := range s.conf.DNS64Prefixes {
+ var p netip.Prefix
+ p, err = netip.ParsePrefix(pref)
+ if err != nil {
+ return fmt.Errorf("prefix at index %d: %w", i, err)
+ }
+
+ addr := p.Addr()
+ if !addr.Is6() {
+ return fmt.Errorf("prefix at index %d: %q is not an IPv6 prefix", i, pref)
+ }
+
+ if p.Bits() > maxNAT64PrefixBitLen {
+ return fmt.Errorf("prefix at index %d: %q is too long for DNS64", i, pref)
+ }
+
+ prefs = append(prefs, p.Masked())
+ }
+
+ s.dns64Prefs = prefs
+
+ return nil
+}
+
+// checkDNS64 checks if DNS64 should be performed. It returns a DNS64 request
+// to resolve or nil if DNS64 is not desired. It also filters resp to not
+// contain any NAT64 excluded addresses in the answer section, if needed. Both
+// req and resp must not be nil.
+//
+// See https://datatracker.ietf.org/doc/html/rfc6147.
+func (s *Server) checkDNS64(req, resp *dns.Msg) (dns64Req *dns.Msg) {
+ if len(s.dns64Prefs) == 0 {
+ return nil
+ }
+
+ q := req.Question[0]
+ if q.Qtype != dns.TypeAAAA || q.Qclass != dns.ClassINET {
+ // DNS64 operation for classes other than IN is undefined, and a DNS64
+ // MUST behave as though no DNS64 function is configured.
+ return nil
+ }
+
+ rcode := resp.Rcode
+ if rcode == dns.RcodeNameError {
+ // A result with RCODE=3 (Name Error) is handled according to normal DNS
+ // operation (which is normally to return the error to the client).
+ return nil
+ }
+
+ if rcode == dns.RcodeSuccess {
+ // If resolver receives an answer with at least one AAAA record
+ // containing an address outside any of the excluded range(s), then it
+ // by default SHOULD build an answer section for a response including
+ // only the AAAA record(s) that do not contain any of the addresses
+ // inside the excluded ranges.
+ var hasAnswers bool
+ if resp.Answer, hasAnswers = s.filterNAT64Answers(resp.Answer); hasAnswers {
+ return nil
+ }
+
+ // Any other RCODE is treated as though the RCODE were 0 and the answer
+ // section were empty.
+ }
+
+ return &dns.Msg{
+ MsgHdr: dns.MsgHdr{
+ Id: dns.Id(),
+ RecursionDesired: req.RecursionDesired,
+ AuthenticatedData: req.AuthenticatedData,
+ CheckingDisabled: req.CheckingDisabled,
+ },
+ Question: []dns.Question{{
+ Name: req.Question[0].Name,
+ Qtype: dns.TypeA,
+ Qclass: dns.ClassINET,
+ }},
+ }
+}
+
+// filterNAT64Answers filters out AAAA records that are within one of NAT64
+// exclusion prefixes. hasAnswers is true if the filtered slice contains at
+// least a single AAAA answer not within the prefixes or a CNAME.
+func (s *Server) filterNAT64Answers(rrs []dns.RR) (filtered []dns.RR, hasAnswers bool) {
+ filtered = make([]dns.RR, 0, len(rrs))
+ for _, ans := range rrs {
+ switch ans := ans.(type) {
+ case *dns.AAAA:
+ addr, err := netutil.IPToAddrNoMapped(ans.AAAA)
+ if err != nil {
+ log.Error("dnsforward: bad AAAA record: %s", err)
+
+ continue
+ }
+
+ if s.withinDNS64(addr) {
+ // Filter the record.
+ continue
+ }
+
+ filtered, hasAnswers = append(filtered, ans), true
+ case *dns.CNAME, *dns.DNAME:
+ // If the response contains a CNAME or a DNAME, then the CNAME or
+ // DNAME chain is followed until the first terminating A or AAAA
+ // record is reached.
+ //
+ // Just treat CNAME and DNAME responses as passable answers since
+ // AdGuard Home doesn't follow any of these chains except the
+ // dnsrewrite-defined ones.
+ filtered, hasAnswers = append(filtered, ans), true
+ default:
+ filtered = append(filtered, ans)
+ }
+ }
+
+ return filtered, hasAnswers
+}
+
+// synthDNS64 synthesizes a DNS64 response using the original response as a
+// basis and modifying it with data from resp. It returns true if the response
+// was actually modified.
+func (s *Server) synthDNS64(origReq, origResp, resp *dns.Msg) (ok bool) {
+ if len(resp.Answer) == 0 {
+ // If there is an empty answer, then the DNS64 responds to the original
+ // querying client with the answer the DNS64 received to the original
+ // (initiator's) query.
+ return false
+ }
+
+ // The Time to Live (TTL) field is set to the minimum of the TTL of the
+ // original A RR and the SOA RR for the queried domain. If the original
+ // response contains no SOA records, the minimum of the TTL of the original
+ // A RR and [maxDNS64SynTTL] should be used. See [maxDNS64SynTTL].
+ soaTTL := maxDNS64SynTTL
+ for _, rr := range origResp.Ns {
+ if hdr := rr.Header(); hdr.Rrtype == dns.TypeSOA && hdr.Name == origReq.Question[0].Name {
+ soaTTL = hdr.Ttl
+
+ break
+ }
+ }
+
+ newAns := make([]dns.RR, 0, len(resp.Answer))
+ for _, ans := range resp.Answer {
+ rr := s.synthRR(ans, soaTTL)
+ if rr == nil {
+ // The error should have already been logged.
+ return false
+ }
+
+ newAns = append(newAns, rr)
+ }
+
+ origResp.Answer = newAns
+ origResp.Ns = resp.Ns
+ origResp.Extra = resp.Extra
+
+ return true
+}
+
+// dns64WellKnownPref is the default prefix to use in an algorithmic mapping for
+// DNS64. See https://datatracker.ietf.org/doc/html/rfc6052#section-2.1.
+var dns64WellKnownPref = netip.MustParsePrefix("64:ff9b::/96")
+
+// withinDNS64 checks if ip is within one of the configured DNS64 prefixes.
+//
+// TODO(e.burkov): We actually using bytes of only the first prefix from the
+// set to construct the answer, so consider using some implementation of a
+// prefix set for the rest.
+func (s *Server) withinDNS64(ip netip.Addr) (ok bool) {
+ for _, n := range s.dns64Prefs {
+ if n.Contains(ip) {
+ return true
+ }
+ }
+
+ return false
+}
+
+// shouldStripDNS64 returns true if DNS64 is enabled and ip has either one of
+// custom DNS64 prefixes or the Well-Known one. This is intended to be used
+// with PTR requests.
+//
+// The requirement is to match any Pref64::/n used at the site, and not merely
+// the locally configured Pref64::/n. This is because end clients could ask for
+// a PTR record matching an address received through a different (site-provided)
+// DNS64.
+//
+// See https://datatracker.ietf.org/doc/html/rfc6147#section-5.3.1.
+func (s *Server) shouldStripDNS64(ip net.IP) (ok bool) {
+ if len(s.dns64Prefs) == 0 {
+ return false
+ }
+
+ addr, err := netutil.IPToAddr(ip, netutil.AddrFamilyIPv6)
+ if err != nil {
+ return false
+ }
+
+ switch {
+ case s.withinDNS64(addr):
+ log.Debug("dnsforward: %s is within DNS64 custom prefix set", ip)
+ case dns64WellKnownPref.Contains(addr):
+ log.Debug("dnsforward: %s is within DNS64 well-known prefix", ip)
+ default:
+ return false
+ }
+
+ return true
+}
+
+// mapDNS64 maps ip to IPv6 address using configured DNS64 prefix. ip must be a
+// valid IPv4. It panics, if there are no configured DNS64 prefixes, because
+// synthesis should not be performed unless DNS64 function enabled.
+func (s *Server) mapDNS64(ip netip.Addr) (mapped net.IP) {
+ // Don't mask the address here since it should have already been masked on
+ // initialization stage.
+ pref := s.dns64Prefs[0].Addr().As16()
+ ipData := ip.As4()
+
+ mapped = make(net.IP, net.IPv6len)
+ copy(mapped[:nat64PrefixLen], pref[:])
+ copy(mapped[nat64PrefixLen:], ipData[:])
+
+ return mapped
+}
+
+// performDNS64 processes the current state of dctx assuming that it has already
+// been tried to resolve, checks if it contains any acceptable response, and if
+// it doesn't, performs DNS64 request and the following synthesis. It returns
+// the [resultCodeError] if there was an error set to dctx.
+func (s *Server) performDNS64(prx *proxy.Proxy, dctx *dnsContext) (rc resultCode) {
+ pctx := dctx.proxyCtx
+ req := pctx.Req
+
+ dns64Req := s.checkDNS64(req, pctx.Res)
+ if dns64Req == nil {
+ return resultCodeSuccess
+ }
+
+ log.Debug("dnsforward: received an empty AAAA response, checking DNS64")
+
+ origReq := pctx.Req
+ origResp := pctx.Res
+ origUps := pctx.Upstream
+
+ pctx.Req = dns64Req
+ defer func() { pctx.Req = origReq }()
+
+ if dctx.err = prx.Resolve(pctx); dctx.err != nil {
+ return resultCodeError
+ }
+
+ dns64Resp := pctx.Res
+ pctx.Res = origResp
+ if dns64Resp != nil && s.synthDNS64(origReq, pctx.Res, dns64Resp) {
+ log.Debug("dnsforward: synthesized AAAA response for %q", origReq.Question[0].Name)
+ } else {
+ pctx.Upstream = origUps
+ }
+
+ return resultCodeSuccess
+}
+
+// synthRR synthesizes a DNS64 resource record in compliance with RFC 6147. If
+// rr is not an A record, it's returned as is. A records are modified to become
+// a DNS64-synthesized AAAA records, and the TTL is set according to the
+// original TTL of a record and soaTTL. It returns nil on invalid A records.
+func (s *Server) synthRR(rr dns.RR, soaTTL uint32) (result dns.RR) {
+ aResp, ok := rr.(*dns.A)
+ if !ok {
+ return rr
+ }
+
+ addr, err := netutil.IPToAddr(aResp.A, netutil.AddrFamilyIPv4)
+ if err != nil {
+ log.Error("dnsforward: bad A record: %s", err)
+
+ return nil
+ }
+
+ aaaa := &dns.AAAA{
+ Hdr: dns.RR_Header{
+ Name: aResp.Hdr.Name,
+ Rrtype: dns.TypeAAAA,
+ Class: aResp.Hdr.Class,
+ Ttl: mathutil.Min(aResp.Hdr.Ttl, soaTTL),
+ },
+ AAAA: s.mapDNS64(addr),
+ }
+
+ return aaaa
+}
diff --git a/internal/dnsforward/dns64_test.go b/internal/dnsforward/dns64_test.go
new file mode 100644
index 00000000..12925504
--- /dev/null
+++ b/internal/dnsforward/dns64_test.go
@@ -0,0 +1,290 @@
+package dnsforward
+
+import (
+ "net"
+ "testing"
+ "time"
+
+ "github.com/AdguardTeam/AdGuardHome/internal/aghtest"
+ "github.com/AdguardTeam/AdGuardHome/internal/filtering"
+ "github.com/AdguardTeam/dnsproxy/proxy"
+ "github.com/AdguardTeam/dnsproxy/upstream"
+ "github.com/AdguardTeam/golibs/netutil"
+ "github.com/AdguardTeam/golibs/testutil"
+ "github.com/miekg/dns"
+ "github.com/stretchr/testify/require"
+)
+
+// newRR is a helper that creates a new dns.RR with the given name, qtype, ttl
+// and value. It fails the test if the qtype is not supported or the type of
+// value doesn't match the qtype.
+func newRR(t *testing.T, name string, qtype uint16, ttl uint32, val any) (rr dns.RR) {
+ t.Helper()
+
+ switch qtype {
+ case dns.TypeA:
+ rr = &dns.A{A: testutil.RequireTypeAssert[net.IP](t, val)}
+ case dns.TypeAAAA:
+ rr = &dns.AAAA{AAAA: testutil.RequireTypeAssert[net.IP](t, val)}
+ case dns.TypeCNAME:
+ rr = &dns.CNAME{Target: testutil.RequireTypeAssert[string](t, val)}
+ case dns.TypeSOA:
+ rr = &dns.SOA{
+ Ns: "ns." + name,
+ Mbox: "hostmaster." + name,
+ Serial: 1,
+ Refresh: 1,
+ Retry: 1,
+ Expire: 1,
+ Minttl: 1,
+ }
+ case dns.TypePTR:
+ rr = &dns.PTR{Ptr: testutil.RequireTypeAssert[string](t, val)}
+ default:
+ t.Fatalf("unsupported qtype: %d", qtype)
+ }
+
+ *rr.Header() = dns.RR_Header{
+ Name: name,
+ Rrtype: qtype,
+ Class: dns.ClassINET,
+ Ttl: ttl,
+ }
+
+ return rr
+}
+
+func TestServer_HandleDNSRequest_dns64(t *testing.T) {
+ const (
+ ipv4Domain = "ipv4.only."
+ ipv6Domain = "ipv6.only."
+ soaDomain = "ipv4.soa."
+ mappedDomain = "filterable.ipv6."
+ anotherDomain = "another.domain."
+
+ pointedDomain = "local1234.ipv4."
+ globDomain = "real1234.ipv4."
+ )
+
+ someIPv4 := net.IP{1, 2, 3, 4}
+ someIPv6 := net.IP{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
+ mappedIPv6 := net.ParseIP("64:ff9b::102:304")
+
+ ptr64Domain, err := netutil.IPToReversedAddr(mappedIPv6)
+ require.NoError(t, err)
+ ptr64Domain = dns.Fqdn(ptr64Domain)
+
+ ptrGlobDomain, err := netutil.IPToReversedAddr(someIPv4)
+ require.NoError(t, err)
+ ptrGlobDomain = dns.Fqdn(ptrGlobDomain)
+
+ const (
+ sectionAnswer = iota
+ sectionAuthority
+ sectionAdditional
+
+ sectionsNum
+ )
+
+ // answerMap is a convenience alias for describing the upstream response for
+ // a given question type.
+ type answerMap = map[uint16][sectionsNum][]dns.RR
+
+ pt := testutil.PanicT{}
+ newUps := func(answers answerMap) (u upstream.Upstream) {
+ return aghtest.NewUpstreamMock(func(req *dns.Msg) (resp *dns.Msg, err error) {
+ q := req.Question[0]
+ require.Contains(pt, answers, q.Qtype)
+
+ answer := answers[q.Qtype]
+
+ resp = (&dns.Msg{}).SetReply(req)
+ resp.Answer = answer[sectionAnswer]
+ resp.Ns = answer[sectionAuthority]
+ resp.Extra = answer[sectionAdditional]
+
+ return resp, nil
+ })
+ }
+
+ testCases := []struct {
+ name string
+ qname string
+ upsAns answerMap
+ wantAns []dns.RR
+ qtype uint16
+ }{{
+ name: "simple_a",
+ qname: ipv4Domain,
+ upsAns: answerMap{
+ dns.TypeA: {
+ sectionAnswer: {newRR(t, ipv4Domain, dns.TypeA, 3600, someIPv4)},
+ },
+ dns.TypeAAAA: {},
+ },
+ wantAns: []dns.RR{&dns.A{
+ Hdr: dns.RR_Header{
+ Name: ipv4Domain,
+ Rrtype: dns.TypeA,
+ Class: dns.ClassINET,
+ Ttl: 3600,
+ Rdlength: 4,
+ },
+ A: someIPv4,
+ }},
+ qtype: dns.TypeA,
+ }, {
+ name: "simple_aaaa",
+ qname: ipv6Domain,
+ upsAns: answerMap{
+ dns.TypeA: {},
+ dns.TypeAAAA: {
+ sectionAnswer: {newRR(t, ipv6Domain, dns.TypeAAAA, 3600, someIPv6)},
+ },
+ },
+ wantAns: []dns.RR{&dns.AAAA{
+ Hdr: dns.RR_Header{
+ Name: ipv6Domain,
+ Rrtype: dns.TypeAAAA,
+ Class: dns.ClassINET,
+ Ttl: 3600,
+ Rdlength: 16,
+ },
+ AAAA: someIPv6,
+ }},
+ qtype: dns.TypeAAAA,
+ }, {
+ name: "actual_dns64",
+ qname: ipv4Domain,
+ upsAns: answerMap{
+ dns.TypeA: {
+ sectionAnswer: {newRR(t, ipv4Domain, dns.TypeA, 3600, someIPv4)},
+ },
+ dns.TypeAAAA: {},
+ },
+ wantAns: []dns.RR{&dns.AAAA{
+ Hdr: dns.RR_Header{
+ Name: ipv4Domain,
+ Rrtype: dns.TypeAAAA,
+ Class: dns.ClassINET,
+ Ttl: maxDNS64SynTTL,
+ Rdlength: 16,
+ },
+ AAAA: mappedIPv6,
+ }},
+ qtype: dns.TypeAAAA,
+ }, {
+ name: "actual_dns64_soattl",
+ qname: soaDomain,
+ upsAns: answerMap{
+ dns.TypeA: {
+ sectionAnswer: {newRR(t, soaDomain, dns.TypeA, 3600, someIPv4)},
+ },
+ dns.TypeAAAA: {
+ sectionAuthority: {newRR(t, soaDomain, dns.TypeSOA, maxDNS64SynTTL+50, nil)},
+ },
+ },
+ wantAns: []dns.RR{&dns.AAAA{
+ Hdr: dns.RR_Header{
+ Name: soaDomain,
+ Rrtype: dns.TypeAAAA,
+ Class: dns.ClassINET,
+ Ttl: maxDNS64SynTTL + 50,
+ Rdlength: 16,
+ },
+ AAAA: mappedIPv6,
+ }},
+ qtype: dns.TypeAAAA,
+ }, {
+ name: "filtered",
+ qname: mappedDomain,
+ upsAns: answerMap{
+ dns.TypeA: {},
+ dns.TypeAAAA: {
+ sectionAnswer: {
+ newRR(t, mappedDomain, dns.TypeAAAA, 3600, net.ParseIP("64:ff9b::506:708")),
+ newRR(t, mappedDomain, dns.TypeCNAME, 3600, anotherDomain),
+ },
+ },
+ },
+ wantAns: []dns.RR{&dns.CNAME{
+ Hdr: dns.RR_Header{
+ Name: mappedDomain,
+ Rrtype: dns.TypeCNAME,
+ Class: dns.ClassINET,
+ Ttl: 3600,
+ Rdlength: 16,
+ },
+ Target: anotherDomain,
+ }},
+ qtype: dns.TypeAAAA,
+ }, {
+ name: "ptr",
+ qname: ptr64Domain,
+ upsAns: nil,
+ wantAns: []dns.RR{&dns.PTR{
+ Hdr: dns.RR_Header{
+ Name: ptr64Domain,
+ Rrtype: dns.TypePTR,
+ Class: dns.ClassINET,
+ Ttl: 3600,
+ Rdlength: 16,
+ },
+ Ptr: pointedDomain,
+ }},
+ qtype: dns.TypePTR,
+ }, {
+ name: "ptr_glob",
+ qname: ptrGlobDomain,
+ upsAns: answerMap{
+ dns.TypePTR: {
+ sectionAnswer: {newRR(t, ptrGlobDomain, dns.TypePTR, 3600, globDomain)},
+ },
+ },
+ wantAns: []dns.RR{&dns.PTR{
+ Hdr: dns.RR_Header{
+ Name: ptrGlobDomain,
+ Rrtype: dns.TypePTR,
+ Class: dns.ClassINET,
+ Ttl: 3600,
+ Rdlength: 15,
+ },
+ Ptr: globDomain,
+ }},
+ qtype: dns.TypePTR,
+ }}
+
+ localRR := newRR(t, ptr64Domain, dns.TypePTR, 3600, pointedDomain)
+ localUps := aghtest.NewUpstreamMock(func(req *dns.Msg) (resp *dns.Msg, err error) {
+ require.Equal(pt, req.Question[0].Name, ptr64Domain)
+ resp = (&dns.Msg{}).SetReply(req)
+ resp.Answer = []dns.RR{localRR}
+
+ return resp, nil
+ })
+
+ s := createTestServer(t, &filtering.Config{}, ServerConfig{
+ UDPListenAddrs: []*net.UDPAddr{{}},
+ TCPListenAddrs: []*net.TCPAddr{{}},
+ UseDNS64: true,
+ }, localUps)
+
+ client := &dns.Client{
+ Net: "tcp",
+ Timeout: 1 * time.Second,
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ s.conf.UpstreamConfig.Upstreams = []upstream.Upstream{newUps(tc.upsAns)}
+ startDeferStop(t, s)
+
+ req := (&dns.Msg{}).SetQuestion(tc.qname, tc.qtype)
+
+ resp, _, excErr := client.Exchange(req, s.dnsProxy.Addr(proxy.ProtoTCP).String())
+ require.NoError(t, excErr)
+
+ require.Equal(t, tc.wantAns, resp.Answer)
+ })
+ }
+}
diff --git a/internal/dnsforward/dnsforward.go b/internal/dnsforward/dnsforward.go
index 8999845b..4ff9fc02 100644
--- a/internal/dnsforward/dnsforward.go
+++ b/internal/dnsforward/dnsforward.go
@@ -82,6 +82,9 @@ type Server struct {
sysResolvers aghnet.SystemResolvers
recDetector *recursionDetector
+ // dns64Prefix is the set of NAT64 prefixes used for DNS64 handling.
+ dns64Prefs []netip.Prefix
+
// anonymizer masks the client's IP addresses if needed.
anonymizer *aghnet.IPMut
@@ -488,9 +491,11 @@ func (s *Server) Prepare(conf *ServerConfig) (err error) {
return fmt.Errorf("preparing access: %w", err)
}
- if !webRegistered && s.conf.HTTPRegister != nil {
- webRegistered = true
- s.registerHandlers()
+ s.registerHandlers()
+
+ err = s.setupDNS64()
+ if err != nil {
+ return fmt.Errorf("preparing DNS64: %w", err)
}
s.dnsProxy = &proxy.Proxy{Config: proxyConfig}
diff --git a/internal/dnsforward/http.go b/internal/dnsforward/http.go
index 5668573b..18c4e82e 100644
--- a/internal/dnsforward/http.go
+++ b/internal/dnsforward/http.go
@@ -712,6 +712,10 @@ func (s *Server) handleDoH(w http.ResponseWriter, r *http.Request) {
}
func (s *Server) registerHandlers() {
+ if webRegistered || s.conf.HTTPRegister == nil {
+ return
+ }
+
s.conf.HTTPRegister(http.MethodGet, "/control/dns_info", s.handleGetConfig)
s.conf.HTTPRegister(http.MethodPost, "/control/dns_config", s.handleSetConfig)
s.conf.HTTPRegister(http.MethodPost, "/control/test_upstream_dns", s.handleTestUpstreamDNS)
@@ -730,4 +734,6 @@ func (s *Server) registerHandlers() {
// See also https://github.com/AdguardTeam/AdGuardHome/issues/2628.
s.conf.HTTPRegister("", "/dns-query", s.handleDoH)
s.conf.HTTPRegister("", "/dns-query/", s.handleDoH)
+
+ webRegistered = true
}
diff --git a/internal/filtering/filtering.go b/internal/filtering/filtering.go
index fd5953e3..977691f9 100644
--- a/internal/filtering/filtering.go
+++ b/internal/filtering/filtering.go
@@ -22,6 +22,7 @@ import (
"github.com/AdguardTeam/golibs/cache"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/log"
+ "github.com/AdguardTeam/golibs/mathutil"
"github.com/AdguardTeam/golibs/stringutil"
"github.com/AdguardTeam/urlfilter"
"github.com/AdguardTeam/urlfilter/filterlist"
@@ -287,12 +288,7 @@ func (r Reason) In(reasons ...Reason) (ok bool) { return slices.Contains(reasons
// SetEnabled sets the status of the *DNSFilter.
func (d *DNSFilter) SetEnabled(enabled bool) {
- var i int32
- if enabled {
- i = 1
- }
-
- atomic.StoreUint32(&d.enabled, uint32(i))
+ atomic.StoreUint32(&d.enabled, mathutil.BoolToNumber[uint32](enabled))
}
// GetConfig - get configuration
diff --git a/internal/filtering/rewrites.go b/internal/filtering/rewrites.go
index 057a9c4e..873272a1 100644
--- a/internal/filtering/rewrites.go
+++ b/internal/filtering/rewrites.go
@@ -9,6 +9,7 @@ import (
"strings"
"github.com/AdguardTeam/golibs/errors"
+ "github.com/AdguardTeam/golibs/mathutil"
"github.com/miekg/dns"
"golang.org/x/exp/slices"
)
@@ -201,7 +202,7 @@ func findRewrites(
if isWildcard(r.Domain) {
// Don't use rewrites[:0], because we need to return at least one
// item here.
- rewrites = rewrites[:max(1, i)]
+ rewrites = rewrites[:mathutil.Max(1, i)]
break
}
@@ -209,11 +210,3 @@ func findRewrites(
return rewrites, matched
}
-
-func max(a, b int) int {
- if a > b {
- return a
- }
-
- return b
-}
diff --git a/internal/filtering/safebrowsing.go b/internal/filtering/safebrowsing.go
index c6b7c34c..2e648346 100644
--- a/internal/filtering/safebrowsing.go
+++ b/internal/filtering/safebrowsing.go
@@ -10,6 +10,7 @@ import (
"net/http"
"sort"
"strings"
+ "sync"
"time"
"github.com/AdguardTeam/AdGuardHome/internal/aghhttp"
@@ -109,8 +110,8 @@ func (c *sbCtx) getCached() int {
now := time.Now().Unix()
hashesToRequest := map[[32]byte]string{}
for k, v := range c.hashToHost {
- key := k[0:2]
- val := c.cache.Get(key)
+ // nolint:looppointer // The subsilce is used for a safe cache lookup.
+ val := c.cache.Get(k[0:2])
if val == nil || now >= int64(binary.BigEndian.Uint32(val)) {
hashesToRequest[k] = v
continue
@@ -185,8 +186,7 @@ func (c *sbCtx) getQuestion() string {
b := &strings.Builder{}
for hash := range c.hashToHost {
- // TODO(e.burkov, a.garipov): Find out and document why exactly
- // this slice.
+ // nolint:looppointer // The subsilce is used for safe hex encoding.
stringutil.WriteToBuilder(b, hex.EncodeToString(hash[0:2]), ".")
}
@@ -248,8 +248,8 @@ func (c *sbCtx) storeCache(hashes [][]byte) {
var curData []byte
var prevPrefix []byte
for i, hash := range hashes {
- prefix := hash[0:2]
- if !bytes.Equal(prefix, prevPrefix) {
+ // nolint:looppointer // The subsilce is used for a safe comparison.
+ if !bytes.Equal(hash[0:2], prevPrefix) {
if i != 0 {
c.setCache(prevPrefix, curData)
curData = nil
@@ -264,6 +264,7 @@ func (c *sbCtx) storeCache(hashes [][]byte) {
}
for hash := range c.hashToHost {
+ // nolint:looppointer // The subsilce is used for a safe cache lookup.
prefix := hash[0:2]
val := c.cache.Get(prefix)
if val == nil {
@@ -369,13 +370,35 @@ func (d *DNSFilter) checkParental(
return check(sctx, res, d.parentalUpstream)
}
+// setProtectedBool sets the value of a boolean pointer under a lock. l must
+// protect the value under ptr.
+//
+// TODO(e.burkov): Make it generic?
+func setProtectedBool(mu *sync.RWMutex, ptr *bool, val bool) {
+ mu.Lock()
+ defer mu.Unlock()
+
+ *ptr = val
+}
+
+// protectedBool gets the value of a boolean pointer under a read lock. l must
+// protect the value under ptr.
+//
+// TODO(e.burkov): Make it generic?
+func protectedBool(mu *sync.RWMutex, ptr *bool) (val bool) {
+ mu.RLock()
+ defer mu.RUnlock()
+
+ return *ptr
+}
+
func (d *DNSFilter) handleSafeBrowsingEnable(w http.ResponseWriter, r *http.Request) {
- d.Config.SafeBrowsingEnabled = true
+ setProtectedBool(&d.confLock, &d.Config.SafeBrowsingEnabled, true)
d.Config.ConfigModified()
}
func (d *DNSFilter) handleSafeBrowsingDisable(w http.ResponseWriter, r *http.Request) {
- d.Config.SafeBrowsingEnabled = false
+ setProtectedBool(&d.confLock, &d.Config.SafeBrowsingEnabled, false)
d.Config.ConfigModified()
}
@@ -383,19 +406,19 @@ func (d *DNSFilter) handleSafeBrowsingStatus(w http.ResponseWriter, r *http.Requ
resp := &struct {
Enabled bool `json:"enabled"`
}{
- Enabled: d.Config.SafeBrowsingEnabled,
+ Enabled: protectedBool(&d.confLock, &d.Config.SafeBrowsingEnabled),
}
_ = aghhttp.WriteJSONResponse(w, r, resp)
}
func (d *DNSFilter) handleParentalEnable(w http.ResponseWriter, r *http.Request) {
- d.Config.ParentalEnabled = true
+ setProtectedBool(&d.confLock, &d.Config.ParentalEnabled, true)
d.Config.ConfigModified()
}
func (d *DNSFilter) handleParentalDisable(w http.ResponseWriter, r *http.Request) {
- d.Config.ParentalEnabled = false
+ setProtectedBool(&d.confLock, &d.Config.ParentalEnabled, false)
d.Config.ConfigModified()
}
@@ -403,7 +426,7 @@ func (d *DNSFilter) handleParentalStatus(w http.ResponseWriter, r *http.Request)
resp := &struct {
Enabled bool `json:"enabled"`
}{
- Enabled: d.Config.ParentalEnabled,
+ Enabled: protectedBool(&d.confLock, &d.Config.ParentalEnabled),
}
_ = aghhttp.WriteJSONResponse(w, r, resp)
diff --git a/internal/filtering/safesearch.go b/internal/filtering/safesearch.go
index 8b3dcb9b..f7661dd6 100644
--- a/internal/filtering/safesearch.go
+++ b/internal/filtering/safesearch.go
@@ -135,12 +135,12 @@ func (d *DNSFilter) checkSafeSearch(
}
func (d *DNSFilter) handleSafeSearchEnable(w http.ResponseWriter, r *http.Request) {
- d.Config.SafeSearchEnabled = true
+ setProtectedBool(&d.confLock, &d.Config.SafeSearchEnabled, true)
d.Config.ConfigModified()
}
func (d *DNSFilter) handleSafeSearchDisable(w http.ResponseWriter, r *http.Request) {
- d.Config.SafeSearchEnabled = false
+ setProtectedBool(&d.confLock, &d.Config.SafeSearchEnabled, false)
d.Config.ConfigModified()
}
@@ -148,7 +148,7 @@ func (d *DNSFilter) handleSafeSearchStatus(w http.ResponseWriter, r *http.Reques
resp := &struct {
Enabled bool `json:"enabled"`
}{
- Enabled: d.Config.SafeSearchEnabled,
+ Enabled: protectedBool(&d.confLock, &d.Config.SafeSearchEnabled),
}
_ = aghhttp.WriteJSONResponse(w, r, resp)
diff --git a/internal/filtering/servicelist.go b/internal/filtering/servicelist.go
index b28ad2c1..e5b36d97 100644
--- a/internal/filtering/servicelist.go
+++ b/internal/filtering/servicelist.go
@@ -25,13 +25,39 @@ var blockedServices = []blockedService{{
IconSVG: []byte(" "),
Rules: []string{
"||a2z.com^",
+ "||a2z.org.cn^",
+ "||aboutamazon.cn^",
+ "||aboutamazon.co.uk^",
+ "||aboutamazon.com.au^",
+ "||aboutamazon.com^",
+ "||aboutamazon.de^",
+ "||aboutamazon.es^",
+ "||aboutamazon.eu^",
+ "||aboutamazon.fr^",
+ "||aboutamazon.in^",
+ "||aboutamazon.it^",
+ "||aboutamazon.jp^",
+ "||aboutamazon.pl^",
+ "||acmvalidations.com^",
+ "||acmvalidationsaws.com^",
+ "||aesworkshops.com^",
+ "||aiv-cdn.net^",
+ "||alexa.com^",
+ "||alexafund.cn^",
+ "||alexafund.com.cn^",
+ "||amaaozn.com^",
"||amazon-adsystem.com^",
+ "||amazon-fashions.com^",
+ "||amazon-jp-recruiting.com^",
+ "||amazon-lantern.com^",
+ "||amazon-launchpad.com^",
"||amazon.ae^",
"||amazon.ca^",
"||amazon.cn^",
"||amazon.co.jp^",
"||amazon.co.uk^",
"||amazon.com.au^",
+ "||amazon.com.be^",
"||amazon.com.br^",
"||amazon.com.mx^",
"||amazon.com.tr^",
@@ -41,57 +67,243 @@ var blockedServices = []blockedService{{
"||amazon.fr^",
"||amazon.in^",
"||amazon.it^",
+ "||amazon.jobs^",
+ "||amazon.jp^",
"||amazon.nl^",
+ "||amazon.red^",
+ "||amazon.sg^",
+ "||amazon^",
+ "||amazonalexavoxcon.com^",
+ "||amazonauthorinsights.com^",
+ "||amazonaws-china.com^",
+ "||amazonaws.cn^",
+ "||amazonaws.co.uk^",
+ "||amazonaws.com.cn^",
+ "||amazonaws.com^$dnstype=~CNAME",
+ "||amazonaws.tv^",
+ "||amazonbusiness.cn^",
+ "||amazonbusiness.com.cn^",
+ "||amazonbusiness.org^",
+ "||amazonbusinessblog.com^",
+ "||amazonchoice.cn^",
+ "||amazonchoice.com.cn^",
+ "||amazonchoices.cn^",
+ "||amazonchoices.com.cn^",
+ "||amazondevicesupport.com^",
+ "||amazonfctours.com^",
+ "||amazonianblog.com^",
+ "||amazonimages.com^",
+ "||amazoninspire.cn^",
+ "||amazoninspire.com.cn^",
+ "||amazonlaunchpad.cn^",
+ "||amazonlaunchpad.com.cn^",
+ "||amazonlaunchpad.com^",
+ "||amazonlending.com.cn^",
+ "||amazonliterarypartnership.com^",
+ "||amazonlumberyard.wang^",
+ "||amazonnow.cn^",
+ "||amazonnow.com.cn^",
"||amazonpay.com^",
"||amazonpay.in^",
+ "||amazonprimevideo.cn^",
+ "||amazonprimevideo.com.cn^",
+ "||amazonprimevideos.com^",
+ "||amazonsdi.com^",
+ "||amazonses.com^",
+ "||amazonstudiosguilds.com^",
"||amazontrust.com^",
- "||aws",
+ "||amazonvideo.cc^",
+ "||amazonvideo.com^",
+ "||amazonvideodirect.com^",
+ "||amazonwebservices.com.cn^",
+ "||amazonworkdocs.cn^",
+ "||amazonworkdocs.com.cn^",
+ "||amazonworkdocs.com^",
+ "||amplifyapp.com^",
+ "||amplifyframework.com^",
+ "||amzn.asia^",
+ "||amzn.com^",
+ "||amzn.to^",
+ "||amznl.com^",
+ "||asfiovnxocqpcry.com.cn^",
+ "||assoc-amazon.cn^",
+ "||associates-amazon.com^",
+ "||audible.com^",
+ "||aws-border.cn^",
+ "||aws-icp-domain-manager.cn^",
+ "||aws-iot-hackathon.com^",
+ "||aws^",
+ "||awsapps.cn^",
+ "||awsapps.com.cn^",
+ "||awsautopilot.com^",
+ "||awsautoscaling.com^",
+ "||awsbraket.com^",
+ "||awscommandlineinterface.com^",
+ "||awsdns-*.co.uk^",
+ "||awsdns-*.com^",
+ "||awsdns-*.net^",
+ "||awsdns-*.org^",
+ "||awsdns-cn-*.biz^",
+ "||awsdns-cn-*.cn^",
+ "||awsdns-cn-*.top^",
+ "||awsedstart.com^",
+ "||awseducate.com^",
+ "||awseducate.net^",
+ "||awseducate.org^",
+ "||awsglobalaccelerator.com^",
+ "||awsloft-johannesburg.com^",
+ "||awsloft-stockholm.com^",
+ "||awssecworkshops.com^",
+ "||awsstatic.cn^",
+ "||awsstatic.com^",
+ "||awsthinkbox.com^",
+ "||awstrack.me^",
+ "||awstrust.com^",
+ "||boxofficemojo.com^",
+ "||cdkworkshop.com^",
+ "||cloudfront-cn.net^",
+ "||cloudfront-test.cn^",
+ "||cloudfront.cn^",
+ "||cloudfront.net^",
+ "||containersonaws.com^",
"||createspace.com^",
+ "||elasticbeanstalk.com^",
+ "||gameon-masters.com^",
+ "||gdansk-amazon.com^",
"||images-amazon.com^",
+ "||imdb.com^",
+ "||imdb.to^",
+ "||imdb^",
+ "||kindle.cn^",
+ "||kindle.co.jp^",
+ "||kindle.co.uk^",
+ "||kindle.com^",
+ "||kindle.de^",
+ "||kindle.es^",
+ "||kindle.fr^",
+ "||kindle.in^",
+ "||kindle.it^",
+ "||kindle.jp^",
+ "||kindle^",
+ "||kindleoasis.cn^",
+ "||kindleoasis.com.cn^",
+ "||kindleoasis.com^",
+ "||kindleoasis.info^",
+ "||kindleoasis.jp^",
+ "||kindleoasis.org^",
+ "||kindleoasis.us^",
+ "||kindleoasisnews.com^",
+ "||kindleproject.com^",
"||media-amazon.com^",
+ "||media-imdb.com^",
+ "||nwcdcloud.cn^",
+ "||nwcdcloud.com.cn^",
+ "||nwcddns.cn^",
+ "||nwcdinfosec.cn^",
+ "||prime-video.com^",
+ "||primeday.cn^",
+ "||primeday.com.cn^",
+ "||primeday.info^",
+ "||primevideo.cc^",
"||primevideo.com^",
+ "||primevideo.info^",
+ "||primevideo.org^",
+ "||primevideo.tv^",
+ "||route53.cn^",
+ "||sagemaker.com.cn^",
+ "||serving-sys.com^",
+ "||siege-amazon.com^",
+ "||ss2.us^",
"||ssl-images-amazon.com^",
+ "||thinkboxsoftware.com^",
+ "||ueberamazon.de^",
+ "||xn--cckwcxetd^",
+ "||xn--jlq480n2rg^",
+ "||yamaxun.cn^",
+ "||yamaxun.com^",
+ "||yamaxun^",
+ "||z.cn^",
+ "||zappos^",
},
}, {
ID: "bilibili",
Name: "Bilibili",
IconSVG: []byte(" "),
Rules: []string{
+ "|upos-hz-mirrorakam.akamaized.net^",
+ "||acg.tv^",
+ "||acgvideo.com^",
+ "||animetamashi.cn^",
+ "||animetamashi.com^",
+ "||anitama.cn^",
+ "||anitama.net^",
"||b23.tv^",
+ "||bigfun.cn^",
+ "||bili22.cn^",
+ "||bili2233.cn^",
+ "||bili23.cn^",
+ "||bili33.cn^",
+ "||biliapi.com^",
"||biliapi.net^",
+ "||bilibili.cc^",
"||bilibili.com^",
+ "||bilibili.net^",
+ "||bilibili.tv^",
+ "||bilibiligame.cn^",
+ "||bilibiligame.co^",
+ "||bilibiligame.net^",
+ "||bilibilipay.cn^",
+ "||bilibilipay.com^",
"||bilicdn1.com^",
"||bilicdn2.com^",
+ "||bilicdn3.com^",
+ "||bilicdn4.com^",
+ "||bilicdn5.com^",
+ "||biligame.co^",
"||biligame.com^",
+ "||biligame.net^",
+ "||biligo.com^",
"||bilivideo.cn^",
"||bilivideo.com^",
+ "||bilivideo.net^",
"||dreamcast.hk^",
"||hdslb.com^",
+ "||hdslb.org^",
+ "||im9.com^",
+ "||maoercdn.com^",
+ "||mincdn.com^",
+ "||yo9.com^",
},
}, {
ID: "cloudflare",
Name: "CloudFlare",
IconSVG: []byte(" "),
Rules: []string{
- "||1.1.1.1^",
"||argotunnel.com^",
+ "||cf-ipfs.com^",
"||cloudflare-dns.com^",
"||cloudflare-ipfs.com^",
"||cloudflare-quic.com^",
- "||cloudflare.cn^",
"||cloudflare.com^",
"||cloudflare.net^",
+ "||cloudflare.tv^",
"||cloudflareaccess.com^",
"||cloudflareapps.com^",
"||cloudflarebolt.com^",
"||cloudflareclient.com^",
"||cloudflareinsights.com^",
+ "||cloudflareok.com^",
+ "||cloudflarepreview.com^",
"||cloudflareresolve.com^",
+ "||cloudflaressl.com^",
"||cloudflarestatus.com^",
+ "||cloudflarestorage.com^",
"||cloudflarestream.com^",
+ "||cloudflaretest.com^",
"||cloudflarewarp.com^",
- "||dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion^",
- "||one.one^",
+ "||every1dns.net^",
+ "||one.one.one^",
+ "||pacloudflare.com^",
"||pages.dev^",
"||trycloudflare.com^",
"||videodelivery.net^",
@@ -120,12 +332,33 @@ var blockedServices = []blockedService{{
Name: "Discord",
IconSVG: []byte(" "),
Rules: []string{
+ "|hammerandchisel.ssl.zendesk.com^",
+ "||airhorn.solutions^",
+ "||airhornbot.com^",
+ "||bigbeans.solutions^",
+ "||dis.gd^",
+ "||discord-activities.com^",
+ "||discord.co^",
"||discord.com^",
+ "||discord.design^",
+ "||discord.dev^",
"||discord.gg^",
- "||discord.gift",
+ "||discord.gift^",
+ "||discord.gifts^",
"||discord.media^",
+ "||discord.new^",
+ "||discord.store^",
+ "||discord.tools^",
+ "||discordactivities.com^",
"||discordapp.com^",
+ "||discordapp.io^",
"||discordapp.net^",
+ "||discordcdn.com^",
+ "||discordmerch.com^",
+ "||discordpartygames.com^",
+ "||discordsays.com^",
+ "||discordstatus.com^",
+ "||watchanimeattheoffice.com^",
},
}, {
ID: "disneyplus",
@@ -147,6 +380,7 @@ var blockedServices = []blockedService{{
IconSVG: []byte(" "),
Rules: []string{
"||douban.com^",
+ "||douban.fm^",
"||doubanio.com^",
},
}, {
@@ -154,16 +388,94 @@ var blockedServices = []blockedService{{
Name: "EBay",
IconSVG: []byte(" "),
Rules: []string{
+ "|ebay-*.s3-us-west-1.amazonaws.com^",
+ "||21centuryaccess.com^",
+ "||4ebaytraders.com^",
+ "||adcommerce.cn^",
+ "||adcommerce.tv^",
+ "||appforebay.cn^",
+ "||appsonebay.net^",
+ "||asebay.com^",
+ "||baazee.com^",
+ "||bidbay.com^",
+ "||bidorbuyindia.com^",
+ "||billpoint.com^",
+ "||billpoint.info^",
+ "||billpoint.tv^",
+ "||billpoint.us^",
+ "||billpointnewzealand.com^",
+ "||blogebay.com^",
+ "||bookclubcorner.com^",
+ "||builtfromebay.com^",
+ "||buyitnow.com^",
+ "||buyitnow.net^",
+ "||buyitnow.org^",
+ "||buyitnow.tv^",
+ "||buyitnowshop.net^",
+ "||cafr.ca^",
+ "||carebay.com^",
+ "||cargigileads.com^",
+ "||cebay.com^",
+ "||collective99.com^",
+ "||commerceos.com^",
+ "||connectcommerce.cn^",
+ "||connectcommerce.com.cn^",
+ "||connectcommerce.hk^",
+ "||connectcommerce.info^",
+ "||connectcommerce.tv^",
+ "||connectedcommerce.cn^",
+ "||connectedcommerce.com^",
+ "||connectedcommerce.tv^",
+ "||crececonebay.com^",
+ "||creditcardsbay.com^",
+ "||cyber-bay.cn^",
+ "||cyber-bay.com.cn^",
+ "||cyber-bay.info^",
+ "||cyber-bay.org^",
+ "||dba.dk^",
+ "||dealbay.com^",
+ "||dealtime.com^",
+ "||didce.com^",
+ "||douya.org^",
+ "||dreamtoplay.com^",
+ "||e-bay.com^",
+ "||e-bay.it^",
+ "||e-bay.net^",
+ "||eachpay.com^",
+ "||eachpay.net^",
+ "||ebahy.com^",
+ "||ebay-authenticate.net^",
+ "||ebay-confirm.com^",
+ "||ebay-course.com^",
+ "||ebay-cz.com^",
+ "||ebay-delivery.com^",
+ "||ebay-discoveries.com^",
+ "||ebay-fashion.com^",
+ "||ebay-inc.com^",
+ "||ebay-inc.net^",
+ "||ebay-inc.org^",
+ "||ebay-online.com^",
+ "||ebay-sales.com^",
+ "||ebay-stories.com^",
+ "||ebay-us.com^",
+ "||ebay-vacation.com^",
"||ebay.at^",
"||ebay.be^",
"||ebay.ca^",
"||ebay.ch^",
"||ebay.cn^",
+ "||ebay.co.nz^",
"||ebay.co.uk^",
+ "||ebay.co.ve^",
+ "||ebay.co.za^",
+ "||ebay.com.ar^",
"||ebay.com.au^",
"||ebay.com.cn^",
+ "||ebay.com.ec^",
"||ebay.com.hk^",
+ "||ebay.com.mt^",
"||ebay.com.my^",
+ "||ebay.com.ph^",
"||ebay.com.sg^",
"||ebay.com^",
"||ebay.de^",
@@ -172,19 +484,239 @@ var blockedServices = []blockedService{{
"||ebay.ie^",
"||ebay.in^",
"||ebay.it^",
+ "||ebay.jp^",
+ "||ebay.lt^",
+ "||ebay.mn^",
+ "||ebay.net.cn^",
"||ebay.nl^",
+ "||ebay.org.cn^",
+ "||ebay.org^",
"||ebay.ph^",
+ "||ebay.pk^",
"||ebay.pl^",
+ "||ebay.sg^",
+ "||ebay.us^",
+ "||ebay.vn^",
+ "||ebay.yn.cn^",
+ "||ebay.zj.cn^",
+ "||ebay25.com^",
+ "||ebay68.com^",
+ "||ebaya.com^",
+ "||ebayads.com^",
+ "||ebayads.net^",
+ "||ebayadvertising.cn^",
+ "||ebayadvertising.com^",
+ "||ebayanunsios.net^",
+ "||ebayauction.com^",
+ "||ebayaustralia.com^",
+ "||ebayauthenticate.com.cn^",
+ "||ebaybags.com^",
+ "||ebaybank.com^",
+ "||ebaybenefits.com^",
+ "||ebayboutique.com^",
+ "||ebayca.com^",
+ "||ebayca.org^",
+ "||ebaycafe.com^",
+ "||ebaycar.com^",
+ "||ebaycareers.com^",
+ "||ebaycbt.co.kr^",
"||ebaycdn.net^",
+ "||ebaychina.net^",
+ "||ebayclassifieds.cn^",
+ "||ebayclassifieds.com.cn^",
+ "||ebayclassifieds.com^",
+ "||ebayclassifieds.info^",
+ "||ebayclassifieds.org^",
+ "||ebayclassifieds.tv^",
+ "||ebayclassifiedsgroup.com^",
+ "||ebayclassifiedsgroup.com^",
+ "||ebayclassifiedsgroup.info^",
+ "||ebayclassifiedsgroup.org^",
+ "||ebayclassifies.com^",
+ "||ebayclub.com^",
+ "||ebaycoins.com^",
+ "||ebaycom.com^",
+ "||ebaycommercenetwork.com^",
+ "||ebaycourse.com^",
+ "||ebayd.com^",
+ "||ebayde.com^",
+ "||ebaydesc.cn^",
+ "||ebaydesc.com.cn^",
+ "||ebaydlassifieds.com^",
+ "||ebaydns.cn^",
+ "||ebaydts.com^",
+ "||ebayedu.com^",
+ "||ebayeletro.com^",
+ "||ebayenterprise.cn^",
+ "||ebayenterprise.com.cn^",
+ "||ebayenterprise.com^",
+ "||ebayenterprise.info^",
+ "||ebayenterprise.net^",
+ "||ebayenterprise.tv^",
+ "||ebayetc.com^",
+ "||ebayexpress.sg^",
+ "||ebayfashion.com^",
+ "||ebayfashion.net^",
+ "||ebayforcharity.org^",
+ "||ebayforeclosure.org^",
+ "||ebayfrance.com^",
+ "||ebayglobalshipping.com^",
+ "||ebaygroup.com^",
+ "||ebayhabit.com^",
+ "||ebayheels.com^",
+ "||ebayhots.com^",
"||ebayimg.com^",
"||ebayinc.com^",
+ "||ebayinc.net^",
+ "||ebayinc.org^",
+ "||ebayincconnectedcommerce.net^",
+ "||ebayinkblog.com^",
+ "||ebayinternetsalestax.com^",
+ "||ebayit.com^",
+ "||ebayjewelry.com^",
+ "||ebayjob.com^",
+ "||ebayla.org^",
+ "||ebaylisting.com^",
+ "||ebaylocal.net^",
+ "||ebaylocationsdevacances.com^",
+ "||ebaymag.com^",
+ "||ebaymainstreet.com^",
+ "||ebaymall.com^",
+ "||ebaymarketplace.net^",
+ "||ebaymotors.ca^",
+ "||ebaymotors.cn^",
+ "||ebaymotors.com.cn^",
+ "||ebaymotors.com^",
+ "||ebaymotors.org^",
+ "||ebaymotorsblog.com^",
+ "||ebaynow.com^",
+ "||ebaynyc.com^",
+ "||ebayon.com^",
+ "||ebayon.net^",
+ "||ebayoncampus.com^",
+ "||ebayopen.com^",
+ "||ebayopensource.com^",
+ "||ebayopensource.net^",
+ "||ebaypakistan.net^",
+ "||ebaypark.com^",
+ "||ebayparts.com^",
+ "||ebaypedia.cn^",
+ "||ebaypedia.com.cn^",
+ "||ebayprivacycenter.com^",
+ "||ebayqq.com^",
+ "||ebayradio.com^",
+ "||ebayrtm.com^",
+ "||ebayseller.com^",
+ "||ebayshoesstore.com^",
+ "||ebayshop.com^",
+ "||ebayshop111.com^",
+ "||ebayshopping.cn^",
+ "||ebayshopping.com.cn^",
+ "||ebayshopping.org^",
+ "||ebaysocial.com^",
+ "||ebaysocial.ru^",
+ "||ebaysoho.com^",
+ "||ebaysohos.com^",
+ "||ebaystatic.cn^",
"||ebaystatic.com^",
+ "||ebaystore.com^",
+ "||ebaystore77.com^",
+ "||ebaystores.cn^",
+ "||ebaystyle.com^",
+ "||ebaysweden.com^",
+ "||ebayt.com^",
+ "||ebaytechblog.com^",
+ "||ebaytopratedseller.net^",
+ "||ebaytrading.com^",
+ "||ebaytradingassistant.com^",
+ "||ebaytv.org^",
+ "||ebayuae.net^",
+ "||ebayvakantiehuizen.com^",
+ "||ebayvalet.com^",
+ "||ebayvietnam.net^",
+ "||ebayworlds.com^",
+ "||ebayy.com^",
+ "||edisebay.com^",
+ "||eebay.com^",
+ "||epinions.com^",
+ "||eu-consumer-empowerment.com^",
+ "||expertmaker.com^",
+ "||fairmarket.com^",
+ "||fragrancebay.com^",
+ "||francemail.com^",
+ "||half.com.cn^",
+ "||half.com^",
+ "||half.tv^",
+ "||halfcanada.com^",
+ "||halfjapan.com^",
+ "||handbagsoutletebay.com^",
+ "||iebay.com^",
+ "||irribay.com^",
+ "||itsbetterwhenyouwinit.com^",
+ "||liketwice.com^",
+ "||liveauction.com^",
+ "||milofetch.com^",
+ "||musicbay.net^",
+ "||myconstructionworld.net^",
+ "||myebay.com^",
+ "||nebay.net^",
+ "||paisapay.cc^",
+ "||paisapay.info^",
+ "||paisapay.tv^",
+ "||premobay.com^",
+ "||privatemarketplaces.net^",
+ "||privatemarketplaces.us^",
+ "||prostores.cn^",
+ "||prostores.com.cn^",
+ "||prostores.com^",
+ "||rethink.net^",
+ "||shopibay.net^",
+ "||shoping.com^",
+ "||sourcingforebay.com.cn^",
+ "||sourcingforebay.net^",
+ "||sourcingforebay.tv^",
+ "||speybay.com^",
+ "||storesense.com^",
+ "||svpply.com^",
+ "||telebay.com^",
+ "||telesell.com^",
+ "||texttobuy.org^",
+ "||theebayshop.com^",
+ "||theopportunityproject.org^",
+ "||towerauction.com^",
+ "||vendu.com^",
+ "||watch-ebay.org^",
+ "||weareebay.com^",
+ "||wwwdecide.com^",
+ "||wwwebay.com^",
+ "||wwwebay.net^",
+ "||wwwwebay.com^",
+ "||xindelu.com^",
+ "||xn--3et96bj49ahpq.com^",
+ "||xn--4vq475g.com^",
+ "||xn--4vq477m.com^",
+ "||xn--7hv594h.com^",
+ "||xn--7hvy28f.cn^",
+ "||xn--hb4aw0g.com^",
+ "||xn--q41am8x.com^",
+ "||xn--qoq462m.com^",
+ "||xn--tkry91n.com^",
+ "||xn--ubt498knmf.com^",
+ "||xn--xsq421m.com^",
+ "||xn--xsq605n.com^",
+ "||xn--xsq959n.com^",
+ "||xn--yf1at58a.com^",
+ "||xxbay.com^",
+ "||yibei.org^",
},
}, {
ID: "epic_games",
Name: "Epic Games",
IconSVG: []byte(" "),
Rules: []string{
+ "|cdn*-epicgames-*.file.myqcloud.com^",
+ "|epicgames-download*-*.file.myqcloud.com^",
+ "|epicgames-download*.akamaized.net^",
"||eac-cdn.com^",
"||easy.ac^",
"||easyanticheat.net^",
@@ -195,19 +727,449 @@ var blockedServices = []blockedService{{
Name: "Facebook",
IconSVG: []byte(" "),
Rules: []string{
+ "|fbcdn-a.akamaihd.net^",
+ "||aboutfacebook.com^",
+ "||accessfacebookfromschool.com^",
"||accountkit.com^",
+ "||accountkit.com^",
+ "||acebooik.com^",
+ "||acebook.com^",
+ "||advancediddetection.com^",
+ "||askfacebook.net^",
+ "||askfacebook.org^",
+ "||atdmt2.com^",
+ "||atlasdmt.com^",
+ "||atlasonepoint.com^",
+ "||atscaleconference.com^",
+ "||botorch.org^",
+ "||buck.build^",
+ "||buckbuild.com^",
+ "||buyingfacebooklikes.com^",
+ "||careersatfb.com^",
+ "||celebgramme.com^",
+ "||china-facebook.com^",
+ "||click-url.com^",
+ "||como-hackearfacebook.com^",
+ "||componentkit.org^",
+ "||crowdtangle.com^",
+ "||dacebook.com^",
+ "||dlfacebook.com^",
+ "||dotfacebook.com^",
+ "||dotfacebook.net^",
+ "||draftjs.org^",
+ "||expresswifi.com^",
+ "||f8.com^",
+ "||faacebok.com^",
+ "||faacebook.com^",
+ "||faasbook.com^",
+ "||facbebook.com^",
+ "||facbeok.com^",
+ "||facboo.com^",
+ "||facbook.com^",
+ "||facbool.com^",
+ "||facboox.com^",
+ "||faccebook.com^",
+ "||faccebookk.com^",
+ "||facdbook.com^",
+ "||facdebook.com^",
+ "||face-book.com^",
+ "||faceabook.com^",
+ "||facebboc.com^",
+ "||facebbook.com^",
+ "||facebboook.com^",
+ "||facebcook.com^",
+ "||facebdok.com^",
+ "||facebgook.com^",
+ "||facebhook.com^",
+ "||facebkkk.com^",
+ "||facebo-ok.com^",
+ "||faceboak.com^",
+ "||facebock.com^",
+ "||facebocke.com^",
+ "||facebof.com^",
+ "||faceboik.com^",
+ "||facebok.com^",
+ "||facebokbook.com^",
+ "||facebokc.com^",
+ "||facebokk.com^",
+ "||facebokok.com^",
+ "||faceboks.com^",
+ "||facebol.com^",
+ "||facebolk.com^",
+ "||facebomok.com^",
+ "||faceboo.com^",
+ "||facebooa.com^",
+ "||faceboob.com^",
+ "||faceboobok.com^",
+ "||facebooc.com^",
+ "||faceboock.com^",
+ "||facebood.com^",
+ "||facebooe.com^",
+ "||faceboof.com^",
+ "||facebooi.com^",
+ "||facebooik.com^",
+ "||facebooik.org^",
+ "||facebooj.com^",
+ "||facebook-corp.com^",
+ "||facebook-covid-19.com^",
+ "||facebook-ebook.com^",
+ "||facebook-forum.com^",
+ "||facebook-hardware.com^",
+ "||facebook-inc.com^",
+ "||facebook-login.com^",
+ "||facebook-newsroom.com^",
+ "||facebook-newsroom.org^",
+ "||facebook-pmdcenter.com^",
+ "||facebook-pmdcenter.net^",
+ "||facebook-pmdcenter.org^",
+ "||facebook-privacy.com^",
+ "||facebook-program.com^",
+ "||facebook-studio.com^",
+ "||facebook-support.org^",
+ "||facebook-texas-holdem.com^",
+ "||facebook-texas-holdem.net^",
+ "||facebook.br^",
+ "||facebook.ca^",
+ "||facebook.cc^",
"||facebook.com^",
+ "||facebook.design^",
+ "||facebook.hu^",
+ "||facebook.in^",
"||facebook.net^",
- "||facebookcorewwwi.onion^",
+ "||facebook.nl^",
+ "||facebook.org^",
+ "||facebook.se^",
+ "||facebook.shop^",
+ "||facebook.tv^",
+ "||facebook.us^",
+ "||facebook.wang^",
+ "||facebook123.org^",
+ "||facebook30.com^",
+ "||facebook30.net^",
+ "||facebook30.org^",
+ "||facebook4business.com^",
+ "||facebookads.com^",
+ "||facebookadvertisingsecrets.com^",
+ "||facebookappcenter.info^",
+ "||facebookappcenter.net^",
+ "||facebookappcenter.org^",
+ "||facebookatschool.com^",
+ "||facebookawards.com^",
+ "||facebookblueprint.net^",
+ "||facebookbrand.com^",
+ "||facebookbrand.net^",
+ "||facebookcanadianelectionintegrityinitiative.com^",
+ "||facebookcareer.com^",
+ "||facebookcheats.com^",
+ "||facebookck.com^",
+ "||facebookclub.com^",
+ "||facebookcom.com^",
+ "||facebookconnect.com^",
+ "||facebookconsultant.org^",
+ "||facebookcoronavirus.com^",
+ "||facebookcovers.org^",
+ "||facebookcredits.info^",
+ "||facebookdating.net^",
+ "||facebookdevelopergarage.com^",
+ "||facebookdusexe.org^",
+ "||facebookemail.com^",
+ "||facebookenespanol.com^",
+ "||facebookexchange.com^",
+ "||facebookexchange.net^",
+ "||facebookfacebook.com^",
+ "||facebookflow.com^",
+ "||facebookgames.com^",
+ "||facebookgraphsearch.com^",
+ "||facebookgraphsearch.info^",
+ "||facebookgroups.com^",
+ "||facebookhome.cc^",
+ "||facebookhome.com^",
+ "||facebookhome.info^",
+ "||facebookhub.com^",
+ "||facebooki.com^",
+ "||facebookinc.com^",
+ "||facebookland.com^",
+ "||facebooklikeexchange.com^",
+ "||facebooklive.com^",
+ "||facebooklivestaging.net^",
+ "||facebooklivestaging.org^",
+ "||facebooklogin.com^",
+ "||facebooklogin.info^",
+ "||facebookloginhelp.net^",
+ "||facebooklogs.com^",
+ "||facebookmail.com^",
+ "||facebookmail.tv^",
+ "||facebookmanager.info^",
+ "||facebookmarketing.info^",
+ "||facebookmarketingpartner.com^",
+ "||facebookmarketingpartners.com^",
+ "||facebookmobile.com^",
+ "||facebookmsn.com^",
+ "||facebooknews.com^",
+ "||facebooknfl.com^",
+ "||facebooknude.com^",
+ "||facebookofsex.com^",
+ "||facebookook.com^",
+ "||facebookpaper.com^",
+ "||facebookpay.com^",
+ "||facebookphonenumber.net^",
+ "||facebookphoto.com^",
+ "||facebookphotos.com^",
+ "||facebookpmdcenter.com^",
+ "||facebookpoke.net^",
+ "||facebookpoke.org^",
+ "||facebookpoker.info^",
+ "||facebookpokerchips.info^",
+ "||facebookporn.net^",
+ "||facebookporn.org^",
+ "||facebookporno.net^",
+ "||facebookportal.com^",
+ "||facebooks.com^",
+ "||facebooksafety.com^",
+ "||facebooksecurity.net^",
+ "||facebookshop.com^",
+ "||facebooksignup.net^",
+ "||facebooksite.net^",
+ "||facebookstories.com^",
+ "||facebookstudios.net^",
+ "||facebookstudios.org^",
+ "||facebooksupplier.com^",
+ "||facebooksuppliers.com^",
+ "||facebookswagemea.com^",
+ "||facebookswagstore.com^",
+ "||facebooksz.com^",
+ "||facebookthreads.net^",
+ "||facebooktv.net^",
+ "||facebooktv.org^",
+ "||facebookvacation.com^",
+ "||facebookw.com^",
+ "||facebookwork.com^",
+ "||facebookworld.com^",
+ "||facebool.com^",
+ "||facebool.info^",
+ "||facebooll.com^",
+ "||faceboom.com^",
+ "||faceboon.com^",
+ "||faceboonk.com^",
+ "||faceboooik.com^",
+ "||faceboook.com^",
+ "||faceboop.com^",
+ "||faceboot.com^",
+ "||faceboox.com^",
+ "||facebopk.com^",
+ "||facebpook.com^",
+ "||facebuk.com^",
+ "||facebuok.com^",
+ "||facebvook.com^",
+ "||facebyook.com^",
+ "||facebzook.com^",
+ "||facecbgook.com^",
+ "||facecbook.com^",
+ "||facecbook.org^",
+ "||facecook.com^",
+ "||facecook.org^",
+ "||facedbook.com^",
+ "||faceebok.com^",
+ "||faceebook.com^",
+ "||faceebot.com^",
+ "||facegbok.com^",
+ "||facegbook.com^",
+ "||faceobk.com^",
+ "||faceobok.com^",
+ "||faceobook.com^",
+ "||faceook.com^",
+ "||facerbooik.com^",
+ "||facerbook.com^",
+ "||facesbooc.com^",
+ "||facesounds.com^",
+ "||facetook.com^",
+ "||facevbook.com^",
+ "||facewbook.co^",
+ "||facewook.com^",
+ "||facfacebook.com^",
+ "||facfebook.com^",
+ "||faciometrics.com^",
+ "||fackebook.com^",
+ "||facnbook.com^",
+ "||facrbook.com^",
+ "||facvebook.com^",
+ "||facwebook.com^",
+ "||facxebook.com^",
+ "||fadebook.com^",
+ "||faebok.com^",
+ "||faebook.com^",
+ "||faebookc.com^",
+ "||faeboook.com^",
+ "||faecebok.com^",
+ "||faesebook.com^",
+ "||fafacebook.com^",
+ "||faicbooc.com^",
+ "||fasebokk.com^",
+ "||fasebook.com^",
+ "||faseboox.com^",
+ "||fasttext.cc^",
+ "||favebook.com^",
+ "||faycbok.com^",
+ "||fb.careers^",
"||fb.com^",
"||fb.gg^",
"||fb.me^",
"||fb.watch^",
+ "||fbacebook.com^",
+ "||fbbmarket.com^",
+ "||fbboostyourbusiness.com^",
"||fbcdn.com^",
"||fbcdn.net^",
+ "||fbf8.com^",
+ "||fbfeedback.com^",
+ "||fbhome.com^",
+ "||fbidb.io^",
+ "||fbinc.com^",
+ "||fbinfer.com^",
+ "||fbinnovation.com^",
+ "||fblitho.com^",
+ "||fbmarketing.com^",
+ "||fbmessenger.com^",
+ "||fbredex.com^",
+ "||fbreg.com^",
+ "||fbrell.com^",
+ "||fbrpms.com^",
"||fbsbx.com^",
+ "||fbsbx.net^",
+ "||fbsupport-covid.net^",
+ "||fbthirdpartypixel.com^",
+ "||fbthirdpartypixel.net^",
+ "||fbthirdpartypixel.org^",
+ "||fburl.com^",
"||fbwat.ch^",
+ "||fbworkmail.com^",
+ "||fcacebook.com^",
+ "||fcaebook.com^",
+ "||fcebook.com^",
+ "||fcebookk.com^",
+ "||fcfacebook.com^",
+ "||fdacebook.info^",
+ "||feacboo.com^",
+ "||feacbook.com^",
+ "||feacbooke.com^",
+ "||feacebook.com^",
+ "||fecbbok.com^",
+ "||fecbooc.com^",
+ "||fecbook.com^",
+ "||feceboock.com^",
+ "||fecebook.net^",
+ "||feceboox.com^",
+ "||fececbook.com^",
+ "||feook.com^",
+ "||ferabook.com^",
+ "||fescebook.com^",
+ "||fesebook.com^",
+ "||ffacebook.com^",
+ "||fgacebook.com^",
+ "||ficeboock.com^",
+ "||flow.dev^",
+ "||flow.org^",
+ "||flowtype.org^",
+ "||fmcebook.com^",
+ "||fnacebook.com^",
+ "||fosebook.com^",
+ "||fpacebook.com^",
+ "||fqcebook.com^",
+ "||fracebook.com^",
+ "||freeb.com^",
+ "||freebasics.com^",
+ "||freebasics.net^",
+ "||freebs.com^",
+ "||freefacebook.com^",
+ "||freefacebook.net^",
+ "||freefacebookads.net^",
+ "||freefblikes.com^",
+ "||freindfeed.com^",
+ "||frescolib.org^",
+ "||friendbook.info^",
+ "||friendfed.com^",
+ "||friendfeed-api.com^",
+ "||friendfeed-media.com^",
+ "||friendfeed.com^",
+ "||friendfeedmedia.com^",
+ "||fsacebok.com^",
+ "||fscebook.com^",
+ "||fundraisingwithfacebook.com^",
+ "||funnyfacebook.org^",
+ "||futureofbusinesssurvey.org^",
+ "||gacebook.com^",
+ "||gameroom.com^",
+ "||gfacecbook.com^",
+ "||groups.com^",
+ "||hackerfacebook.com^",
+ "||hackfacebook.com^",
+ "||hackfacebookid.com^",
+ "||hacklang.org^",
+ "||hhvm.com^",
+ "||hifacebook.info^",
+ "||howtohackfacebook-account.com^",
+ "||hsfacebook.com^",
+ "||httpfacebook.com^",
+ "||httpsfacebook.com^",
+ "||httpwwwfacebook.com^",
+ "||i.org^",
+ "||internet.org^",
+ "||klik.me^",
+ "||liverail.com^",
+ "||liverail.tv^",
+ "||login-account.net^",
+ "||m.me^",
+ "||makeitopen.com^",
+ "||markzuckerberg.com^",
+ "||mcrouter.net^",
+ "||mcrouter.org^",
"||messenger.com^",
+ "||messengerdevelopers.com^",
+ "||midentsolutions.com^",
+ "||mobilefacebook.com^",
+ "||moneywithfacebook.com^",
+ "||myfbfans.com^",
+ "||nbabot.net^",
+ "||newsfeed.com^",
+ "||nextstop.com^",
+ "||ogp.me^",
+ "||online-deals.net^",
+ "||opencreate.org^",
+ "||opengraphprotocol.com^",
+ "||opengraphprotocol.org^",
+ "||parse.com^",
+ "||pyrobot.org^",
+ "||reachtheworldonfacebook.com^",
+ "||react.com^",
+ "||reactjs.com^",
+ "||reactjs.org^",
+ "||recoiljs.org^",
+ "||redkix.com^",
+ "||rocksdb.com^",
+ "||rocksdb.net^",
+ "||rocksdb.org^",
+ "||rocksdb.org^",
+ "||shopfacebook.com^",
+ "||sportsfacebook.com^",
+ "||sportstream.com^",
+ "||supportfacebook.com^",
+ "||terragraph.com^",
+ "||thefacebook.com^",
+ "||thefacebook.net^",
+ "||thefind.com^",
+ "||toplayerserver.com^",
+ "||viewpointsfromfacebook.com^",
+ "||whyfacebook.com^",
+ "||workplace.com^",
+ "||workplaceusecases.com^",
+ "||worldhack.com^",
+ "||www-facebook.com^",
+ "||wwwfacebok.com^",
+ "||wwwfacebook.com^",
+ "||wwwmfacebook.com^",
+ "||yogalayout.com^",
+ "||zuckerberg.com^",
+ "||zuckerberg.net^",
},
}, {
ID: "hulu",
@@ -221,6 +1183,7 @@ var blockedServices = []blockedService{{
Name: "iCloud Private Relay",
IconSVG: []byte(" "),
Rules: []string{
+ "||mask-canary.icloud.com^$dnsrewrite=NXDOMAIN;;",
"||mask-h2.icloud.com^$dnsrewrite=NXDOMAIN;;",
"||mask.icloud.com^$dnsrewrite=NXDOMAIN;;",
},
@@ -236,15 +1199,106 @@ var blockedServices = []blockedService{{
Name: "Instagram",
IconSVG: []byte(" "),
Rules: []string{
+ "||achat-followers-instagram.com^",
+ "||acheter-followers-instagram.com^",
+ "||acheterdesfollowersinstagram.com^",
+ "||acheterfollowersinstagram.com^",
+ "||bookstagram.com^",
+ "||carstagram.com^",
"||cdninstagram.com^",
+ "||chickstagram.com^",
+ "||ig.me^",
+ "||igcdn.com^",
+ "||igsonar.com^",
+ "||igtv.com^",
+ "||imstagram.com^",
+ "||imtagram.com^",
+ "||instaadder.com^",
+ "||instachecker.com^",
+ "||instafallow.com^",
+ "||instafollower.com^",
+ "||instagainer.com^",
+ "||instagda.com^",
+ "||instagify.com^",
+ "||instagmania.com^",
+ "||instagor.com^",
+ "||instagram-brand.com^",
+ "||instagram-engineering.com^",
+ "||instagram-help.com^",
+ "||instagram-press.com^",
+ "||instagram-press.net^",
"||instagram.com^",
+ "||instagramci.com^",
+ "||instagramcn.com^",
+ "||instagramdi.com^",
+ "||instagramhashtags.net^",
+ "||instagramhilecim.com^",
+ "||instagramhilesi.org^",
+ "||instagramium.com^",
+ "||instagramizlenme.com^",
+ "||instagramkusu.com^",
+ "||instagramlogin.com^",
+ "||instagramm.com^",
+ "||instagramn.com^",
+ "||instagrampartners.com^",
+ "||instagramphoto.com^",
+ "||instagramq.com^",
+ "||instagramsepeti.com^",
+ "||instagramtakipcisatinal.net^",
+ "||instagramtakiphilesi.com^",
+ "||instagramtips.com^",
+ "||instagramtr.com^",
+ "||instagran.com^",
+ "||instagranm.com^",
+ "||instagrem.com^",
+ "||instagrm.com^",
+ "||instagtram.com^",
+ "||instagy.com^",
+ "||instamgram.com^",
+ "||instangram.com^",
+ "||instanttelegram.com^",
+ "||instaplayer.net^",
+ "||instastyle.tv^",
+ "||instgram.com^",
+ "||intagram.com^",
+ "||intagrm.com^",
+ "||intgram.com^",
+ "||kingstagram.com^",
+ "||lnstagram-help.com^",
+ "||oninstagram.com^",
+ "||online-instagram.com^",
+ "||onlineinstagram.com^",
+ "||theinstagramhack.com^",
+ "||web-instagram.net^",
+ "||wwwinstagram.com^",
+ },
+}, {
+ ID: "iqiyi",
+ Name: "iQIYI",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||iq.com^",
+ "||iqiyi.com^",
+ },
+}, {
+ ID: "leagueoflegends",
+ Name: "League of Legends",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||leagueoflegends.co.kr^",
+ "||leagueoflegends.com^",
+ "||lol.riotgames.com^",
+ "||lolstatic.com^",
+ "||lolusercontent.com^",
},
}, {
ID: "mail_ru",
Name: "Mail.ru",
IconSVG: []byte(" "),
Rules: []string{
+ "||imgsmail.ru^",
"||mail.ru^",
+ "||mycdn.me^",
},
}, {
ID: "mastodon",
@@ -253,8 +1307,10 @@ var blockedServices = []blockedService{{
Rules: []string{
"||aus.social^",
"||awscommunity.social^",
- "||dresden.network^",
- "||fedibird.com^",
+ "||cupoftea.social^",
+ "||cyberplace.social^",
+ "||defcon.social^",
+ "||det.social^",
"||fosstodon.org^",
"||glasgow.social^",
"||h4.io^",
@@ -269,44 +1325,42 @@ var blockedServices = []blockedService{{
"||kolektiva.social^",
"||livellosegreto.it^",
"||lor.sh^",
+ "||lou.lt^",
"||m.cmx.im^",
"||mas.to^",
"||masto.ai^",
"||masto.es^",
- "||masto.nobigtech.es^",
+ "||masto.nu^",
"||masto.pt^",
"||mastodon.au^",
"||mastodon.bida.im^",
"||mastodon.com.tr^",
"||mastodon.eus^",
+ "||mastodon.green^",
"||mastodon.ie^",
"||mastodon.iriseden.eu^",
- "||mastodon.lol^",
"||mastodon.nl^",
"||mastodon.nu^",
"||mastodon.nz^",
"||mastodon.online^",
- "||mastodon.online^",
"||mastodon.scot^",
"||mastodon.sdf.org^",
"||mastodon.social^",
- "||mastodon.social^",
"||mastodon.top^",
"||mastodon.uno^",
"||mastodon.world^",
"||mastodon.zaclys.com^",
"||mastodonapp.uk^",
+ "||mastodonners.nl^",
"||mastodont.cat^",
"||mastodontech.de^",
"||mastodontti.fi^",
"||mastouille.fr^",
"||mathstodon.xyz^",
- "||meow.social^",
"||metalhead.club^",
"||mindly.social^",
"||mstdn.ca^",
"||mstdn.jp^",
- "||mstdn.party^",
"||mstdn.social^",
"||muenchen.social^",
"||muenster.im^",
@@ -317,10 +1371,8 @@ var blockedServices = []blockedService{{
"||o3o.ca^",
"||ohai.social^",
"||pewtix.com^",
- "||phpc.social^",
"||piaille.fr^",
"||pol.social^",
- "||qdon.space^",
"||ravenation.club^",
"||rollenspiel.social^",
"||ruby.social^",
@@ -330,25 +1382,27 @@ var blockedServices = []blockedService{{
"||social.anoxinon.de^",
"||social.cologne^",
"||social.dev-wiki.de^",
- "||social.linux.pizza^",
"||social.politicaconciencia.org^",
"||social.vivaldi.net^",
"||sself.co^",
+ "||stranger.social^",
"||sueden.social^",
"||tech.lgbt^",
"||techhub.social^",
"||theblower.au^",
"||tkz.one^",
- "||todon.eu^",
"||toot.aquilenet.fr^",
"||toot.community^",
"||toot.funami.tech^",
+ "||toot.io^",
"||toot.wales^",
"||troet.cafe^",
"||twingyeo.kr^",
+ "||uiuxdev.social^",
"||union.place^",
"||universeodon.com^",
"||urbanists.social^",
+ "||vocalodon.net^",
"||wxw.moe^",
},
}, {
@@ -365,9 +1419,29 @@ var blockedServices = []blockedService{{
Name: "Netflix",
IconSVG: []byte(" "),
Rules: []string{
+ "|netflix.com.edgesuite.net^",
+ "||dualstack.apiproxy-*.amazonaws.com^",
+ "||dualstack.ichnaea-web-*.amazonaws.com^",
+ "||fast.com^",
+ "||netflix.ca^",
"||netflix.com^",
+ "||netflix.net^",
+ "||netflixdnstest1.com^",
+ "||netflixdnstest10.com^",
+ "||netflixdnstest2.com^",
+ "||netflixdnstest3.com^",
+ "||netflixdnstest4.com^",
+ "||netflixdnstest5.com^",
+ "||netflixdnstest6.com^",
+ "||netflixdnstest7.com^",
+ "||netflixdnstest8.com^",
+ "||netflixdnstest9.com^",
+ "||netflixinvestor.com^",
+ "||netflixtechblog.com^",
"||nflxext.com^",
+ "||nflximg.com^",
"||nflximg.net^",
+ "||nflxsearch.net^",
"||nflxso.net^",
"||nflxvideo.net^",
},
@@ -378,13 +1452,28 @@ var blockedServices = []blockedService{{
Rules: []string{
"||ok.ru^",
},
+}, {
+ ID: "onlyfans",
+ Name: "OnlyFans",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||onlyfans.com^",
+ },
}, {
ID: "origin",
Name: "Origin",
IconSVG: []byte(" "),
Rules: []string{
+ "|cloudsync-prod.s3.amazonaws.com^",
+ "|origin-a.akamaihd.net^",
+ "|rtm.tnt-ea.com^",
+ "|ssl-lvlt.cdn.ea.com^",
"||accounts.ea.com^",
+ "||dawngate.com^",
+ "||eastore.com^",
+ "||lordofultima.com^",
"||origin.com^",
+ "||origin.tv^",
"||signin.ea.com^",
},
}, {
@@ -392,8 +1481,55 @@ var blockedServices = []blockedService{{
Name: "Pinterest",
IconSVG: []byte(" "),
Rules: []string{
+ "||pin.it^",
"||pinimg.com^",
- "||pinterest.*^",
+ "||pinterest.at^",
+ "||pinterest.be^",
+ "||pinterest.ca^",
+ "||pinterest.ch^",
+ "||pinterest.cl^",
+ "||pinterest.co.at^",
+ "||pinterest.co.in^",
+ "||pinterest.co.kr^",
+ "||pinterest.co.nz^",
+ "||pinterest.co.uk^",
+ "||pinterest.co^",
+ "||pinterest.com.au^",
+ "||pinterest.com.bo^",
+ "||pinterest.com.ec^",
+ "||pinterest.com.mx^",
+ "||pinterest.com.pe^",
+ "||pinterest.com.py^",
+ "||pinterest.com.uy^",
+ "||pinterest.com.vn^",
+ "||pinterest.com^",
+ "||pinterest.de^",
+ "||pinterest.dk^",
+ "||pinterest.ec^",
+ "||pinterest.engineering^",
+ "||pinterest.es^",
+ "||pinterest.fr^",
+ "||pinterest.hu^",
+ "||pinterest.id^",
+ "||pinterest.ie^",
+ "||pinterest.in^",
+ "||pinterest.info^",
+ "||pinterest.it^",
+ "||pinterest.jp^",
+ "||pinterest.kr^",
+ "||pinterest.mx^",
+ "||pinterest.nl^",
+ "||pinterest.nz^",
+ "||pinterest.pe^",
+ "||pinterest.ph^",
+ "||pinterest.pt^",
+ "||pinterest.ru^",
+ "||pinterest.se^",
+ "||pinterest.th^",
+ "||pinterest.tw^",
+ "||pinterest.uk^",
+ "||pinterest.vn^",
+ "||pinterestmail.com^",
},
}, {
ID: "qq",
@@ -404,6 +1540,15 @@ var blockedServices = []blockedService{{
"||qq.com^$denyallow=wx.qq.com|weixin.qq.com",
"||url.cn^",
},
+}, {
+ ID: "rakuten_viki",
+ Name: "Rakuten Viki",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||m-content-viki.s.llnwi.net^",
+ "||viki.com^",
+ "||viki.io^",
+ },
}, {
ID: "reddit",
Name: "Reddit",
@@ -411,6 +1556,7 @@ var blockedServices = []blockedService{{
Rules: []string{
"||redd.it^",
"||reddit.com^",
+ "||redditmail.com^",
"||redditmedia.com^",
"||redditstatic.com^",
},
@@ -421,8 +1567,11 @@ var blockedServices = []blockedService{{
Rules: []string{
"||rbxadder.com^",
"||rbxcdn.com^",
+ "||roblox.cn^",
"||roblox.com^",
+ "||roblox.qq.com^",
"||robloxcdn.com^",
+ "||robloxdev.cn^",
},
}, {
ID: "skype",
@@ -432,7 +1581,10 @@ var blockedServices = []blockedService{{
"||edge-skype-com.s-0001.s-msedge.net^",
"||skype-edf.akadns.net^",
"||skype.com^",
+ "||skype.net^",
+ "||skype^",
"||skypeassets.com^",
+ "||skypeassets.net^",
"||skypedata.akadns.net^",
},
}, {
@@ -453,43 +1605,96 @@ var blockedServices = []blockedService{{
IconSVG: []byte(" "),
Rules: []string{
"/_spotify-connect._tcp.local/",
- "||audio-ak-spotify-com.akamaized.net^",
- "||audio4-ak-spotify-com.akamaized.net^",
- "||heads-ak-spotify-com.akamaized.net^",
- "||heads4-ak-spotify-com.akamaized.net^",
+ "|audio-ak-spotify-com.akamaized.net^",
+ "|audio4-ak-spotify-com.akamaized.net^",
+ "|heads-ak-spotify-com.akamaized.net^",
+ "|heads4-ak-spotify-com.akamaized.net^",
+ "|spotify.com.edgesuite.net^",
+ "|spotify.map.fastly.net^",
+ "|spotify.map.fastlylb.net^",
+ "||byspotify.com^",
+ "||pscdn.co^",
"||scdn.co^",
- "||spotify.com.edgesuite.net^",
+ "||spoti.fi^",
+ "||spotify-everywhere.com^",
"||spotify.com^",
- "||spotify.map.fastly.net^",
- "||spotify.map.fastlylb.net^",
+ "||spotify.design^",
+ "||spotifycdn.com^",
"||spotifycdn.net^",
+ "||spotifycharts.com^",
+ "||spotifycodes.com^",
+ "||spotifyforbrands.com^",
+ "||spotifyjobs.com^",
},
}, {
ID: "steam",
Name: "Steam",
IconSVG: []byte(" "),
Rules: []string{
- "||steam.com^",
- "||steamcdn-a.akamaihd.net^",
+ "|steambroadcast.akamaized.net^",
+ "|steamcdn-a.akamaihd.net^",
+ "|steamcommunity-a.akamaihd.net^",
+ "|steamstore-a.akamaihd.net^",
+ "|steamusercontent-a.akamaihd.net^",
+ "|steamuserimages-a.akamaihd.net^",
+ "|steamvideo-a.akamaihd.net^",
+ "|xz.pphimalayanrt.com^",
+ "||csgo.wmsj.cn^",
+ "||dl.steam.clngaa.com^",
+ "||dl.steam.ksyna.com^",
+ "||dota2.wmsj.cn^",
+ "||playartifact.com^",
+ "||s.team^",
+ "||st.dl.bscstorage.net^",
+ "||st.dl.eccdnx.com^",
+ "||st.dl.pinyuncloud.com^",
+ "||steam-api.com^",
+ "||steam-chat.com^",
+ "||steamchina.com^",
"||steamcommunity.com^",
+ "||steamcontent.com^",
+ "||steamdeck.com^",
+ "||steamgames.com^",
+ "||steampipe.steamcontent.tnkjmec.com^",
+ "||steampowered.com.8686c.com^",
"||steampowered.com^",
+ "||steamserver.net^",
+ "||steamstatic.com.8686c.com^",
"||steamstatic.com^",
- "||steamstore-a.akamaihd.net^",
+ "||steamusercontent.com^",
+ "||underlords.com^",
+ "||valvesoftware.com^",
+ "||wmsjsteam.com^",
},
}, {
ID: "telegram",
Name: "Telegram",
IconSVG: []byte(" "),
Rules: []string{
+ "||comments.app^",
+ "||contest.com^",
+ "||graph.org^",
+ "||quiz.directory^",
"||t.me^",
+ "||tdesktop.com^",
+ "||telega.one^",
+ "||telegra.ph^",
+ "||telegram-cdn.org^",
+ "||telegram.dog^",
"||telegram.me^",
"||telegram.org^",
+ "||telegram.space^",
+ "||telesco.pe^",
+ "||tg.dev^",
+ "||tx.me^",
+ "||usercontent.dev^",
},
}, {
ID: "tiktok",
Name: "TikTok",
IconSVG: []byte(" "),
Rules: []string{
+ "|p16-tiktokcdn-com.akamaized.net^",
"||amemv.com^",
"||bdurl.com^",
"||bytecdn.cn^",
@@ -499,11 +1704,13 @@ var blockedServices = []blockedService{{
"||byteoversea.com^",
"||douyin.com^",
"||douyincdn.com^",
+ "||douyinliving.com^",
"||douyinpic.com^",
"||douyinstatic.com^",
"||douyinvod.com^",
- "||ixigua.com^",
- "||ixiguavideo.com^",
+ "||huoshan.com^",
+ "||huoshanstatic.com^",
+ "||huoshanzhibo.com^",
"||muscdn.com^",
"||musical.ly^",
"||pstatp.com^",
@@ -511,10 +1718,6 @@ var blockedServices = []blockedService{{
"||tiktok.com^",
"||tiktokcdn.com^",
"||tiktokv.com^",
- "||toutiao.com^",
- "||toutiaocloud.com^",
- "||toutiaocloud.net^",
- "||toutiaovod.com^",
},
}, {
ID: "tinder",
@@ -530,21 +1733,40 @@ var blockedServices = []blockedService{{
Name: "Twitch",
IconSVG: []byte(" "),
Rules: []string{
+ "||ext-twitch.tv^",
"||jtvnw.net^",
"||ttvnw.net^",
"||twitch.tv^",
"||twitchcdn.net^",
+ "||twitchsvc.net^",
},
}, {
ID: "twitter",
Name: "Twitter",
IconSVG: []byte(" "),
Rules: []string{
+ "||ads-twitter.com^",
+ "||cms-twdigitalassets.com^",
+ "||periscope.tv^",
"||pscp.tv^",
"||t.co^",
+ "||tellapart.com^",
+ "||tweetdeck.com^",
"||twimg.com^",
+ "||twitpic.com^",
+ "||twitter.biz^",
"||twitter.com^",
+ "||twitter.jp^",
+ "||twittercommunity.com^",
+ "||twitterflightschool.com^",
+ "||twitterinc.com^",
+ "||twitteroauth.com^",
+ "||twitterstat.us^",
+ "||twtrdns.net^",
"||twttr.com^",
+ "||twttr.net^",
+ "||twvid.com^",
+ "||vine.co^",
},
}, {
ID: "viber",
@@ -559,17 +1781,47 @@ var blockedServices = []blockedService{{
IconSVG: []byte(" "),
Rules: []string{
"*vod-adaptive.akamaized.net^",
+ "||livestream.com^",
+ "||vhx.tv^",
+ "||vhxqa1.com^",
+ "||vhxqa2.com^",
+ "||vhxqa3.com^",
+ "||vhxqa4.com^",
+ "||vhxqa6.com^",
+ "||vimeo-staging.com^",
+ "||vimeo-staging2.com^",
"||vimeo.com^",
+ "||vimeo.fr^",
+ "||vimeobusiness.com^",
"||vimeocdn.com^",
+ "||vimeogoods.com^",
+ "||vimeoondemand.com^",
+ "||vimeostatus.com^",
},
}, {
ID: "vk",
Name: "VK.com",
IconSVG: []byte(" "),
Rules: []string{
+ "||mvk.com^",
"||userapi.com^",
+ "||vk-cdn.me^",
"||vk-cdn.net^",
+ "||vk-portal.net^",
+ "||vk.cc^",
"||vk.com^",
+ "||vk.design^",
+ "||vk.link^",
+ "||vk.me^",
+ "||vkcache.com^",
+ "||vkgo.app^",
+ "||vklive.app^",
+ "||vkmessenger.app^",
+ "||vkmessenger.com^",
+ "||vkontakte.ru^",
+ "||vkuseraudio.com^",
+ "||vkuserlive.net^",
+ "||vkuservideo.com^",
"||vkuservideo.net^",
},
}, {
@@ -588,7 +1840,11 @@ var blockedServices = []blockedService{{
Name: "Weibo",
IconSVG: []byte(" "),
Rules: []string{
+ "||wbimg.cn^",
+ "||wbimg.com^",
+ "||wcdn.cn^",
"||weibo.cn^",
+ "||weibo.com.cn^",
"||weibo.com^",
"||weibocdn.com^",
},
@@ -597,22 +1853,212 @@ var blockedServices = []blockedService{{
Name: "WhatsApp",
IconSVG: []byte(" "),
Rules: []string{
+ "||wa.me^",
+ "||whatsapp-plus.info^",
+ "||whatsapp-plus.me^",
+ "||whatsapp-plus.net^",
+ "||whatsapp.cc^",
"||whatsapp.com^",
+ "||whatsapp.info^",
"||whatsapp.net^",
+ "||whatsapp.org^",
+ "||whatsapp.tv^",
+ "||whatsappbrand.com^",
+ },
+}, {
+ ID: "xboxlive",
+ Name: "Xbox Live",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||gamepass.com^",
+ "||xbox-global.ifs.windows.com^",
+ "||xbox-guide-public.rec.mp.microsoft.com^",
+ "||xbox.ipv6.microsoft.com^",
+ "||xboxab.com^",
+ "||xboxab.net^",
+ "||xboxlive.com^",
+ "||xboxservices.com^",
},
}, {
ID: "youtube",
Name: "YouTube",
IconSVG: []byte(" "),
Rules: []string{
+ "||ggpht.cn^",
+ "||ggpht.com^",
"||googlevideo.com^",
"||wide-youtube.l.google.com^",
+ "||withyoutube.com^",
"||youtu.be^",
- "||youtube",
"||youtube-nocookie.com^",
+ "||youtube-ui.l.google.com^",
+ "||youtube.ae^",
+ "||youtube.al^",
+ "||youtube.am^",
+ "||youtube.at^",
+ "||youtube.az^",
+ "||youtube.ba^",
+ "||youtube.be^",
+ "||youtube.bg^",
+ "||youtube.bh^",
+ "||youtube.bo^",
+ "||youtube.by^",
+ "||youtube.ca^",
+ "||youtube.cat^",
+ "||youtube.ch^",
+ "||youtube.cl^",
+ "||youtube.co.ae^",
+ "||youtube.co.at^",
+ "||youtube.co.cr^",
+ "||youtube.co.hu^",
+ "||youtube.co.id^",
+ "||youtube.co.il^",
+ "||youtube.co.in^",
+ "||youtube.co.jp^",
+ "||youtube.co.ke^",
+ "||youtube.co.kr^",
+ "||youtube.co.ma^",
+ "||youtube.co.nz^",
+ "||youtube.co.th^",
+ "||youtube.co.tz^",
+ "||youtube.co.ug^",
+ "||youtube.co.uk^",
+ "||youtube.co.ve^",
+ "||youtube.co.za^",
+ "||youtube.co.zw^",
+ "||youtube.co^",
+ "||youtube.com.ar^",
+ "||youtube.com.au^",
+ "||youtube.com.az^",
+ "||youtube.com.bd^",
+ "||youtube.com.bh^",
+ "||youtube.com.bo^",
+ "||youtube.com.br^",
+ "||youtube.com.by^",
+ "||youtube.com.co^",
+ "||youtube.com.do^",
+ "||youtube.com.ec^",
+ "||youtube.com.ee^",
+ "||youtube.com.eg^",
+ "||youtube.com.es^",
+ "||youtube.com.gh^",
+ "||youtube.com.gr^",
+ "||youtube.com.gt^",
+ "||youtube.com.hk^",
+ "||youtube.com.hn^",
+ "||youtube.com.hr^",
+ "||youtube.com.jm^",
+ "||youtube.com.jo^",
+ "||youtube.com.kw^",
+ "||youtube.com.lb^",
+ "||youtube.com.lv^",
+ "||youtube.com.ly^",
+ "||youtube.com.mk^",
+ "||youtube.com.mt^",
+ "||youtube.com.mx^",
+ "||youtube.com.my^",
+ "||youtube.com.ng^",
+ "||youtube.com.ni^",
+ "||youtube.com.om^",
+ "||youtube.com.pa^",
+ "||youtube.com.pe^",
+ "||youtube.com.ph^",
+ "||youtube.com.pk^",
+ "||youtube.com.pt^",
+ "||youtube.com.py^",
+ "||youtube.com.qa^",
+ "||youtube.com.ro^",
+ "||youtube.com.sa^",
+ "||youtube.com.sg^",
+ "||youtube.com.sv^",
+ "||youtube.com.tn^",
+ "||youtube.com.tr^",
+ "||youtube.com.tw^",
+ "||youtube.com.ua^",
+ "||youtube.com.uy^",
+ "||youtube.com.ve^",
"||youtube.com^",
+ "||youtube.cr^",
+ "||youtube.cz^",
+ "||youtube.de^",
+ "||youtube.dk^",
+ "||youtube.ee^",
+ "||youtube.es^",
+ "||youtube.fi^",
+ "||youtube.fr^",
+ "||youtube.ge^",
+ "||youtube.googleapis.com^",
+ "||youtube.gr^",
+ "||youtube.gt^",
+ "||youtube.hk^",
+ "||youtube.hr^",
+ "||youtube.hu^",
+ "||youtube.ie^",
+ "||youtube.in^",
+ "||youtube.iq^",
+ "||youtube.is^",
+ "||youtube.it^",
+ "||youtube.jo^",
+ "||youtube.jp^",
+ "||youtube.kr^",
+ "||youtube.kz^",
+ "||youtube.la^",
+ "||youtube.lk^",
+ "||youtube.lt^",
+ "||youtube.lu^",
+ "||youtube.lv^",
+ "||youtube.ly^",
+ "||youtube.ma^",
+ "||youtube.md^",
+ "||youtube.me^",
+ "||youtube.mk^",
+ "||youtube.mn^",
+ "||youtube.mx^",
+ "||youtube.my^",
+ "||youtube.ng^",
+ "||youtube.ni^",
+ "||youtube.nl^",
+ "||youtube.no^",
+ "||youtube.pa^",
+ "||youtube.pe^",
+ "||youtube.ph^",
+ "||youtube.pk^",
+ "||youtube.pl^",
+ "||youtube.pr^",
+ "||youtube.pt^",
+ "||youtube.qa^",
+ "||youtube.ro^",
+ "||youtube.rs^",
+ "||youtube.ru^",
+ "||youtube.sa^",
+ "||youtube.se^",
+ "||youtube.sg^",
+ "||youtube.si^",
+ "||youtube.sk^",
+ "||youtube.sn^",
+ "||youtube.soy^",
+ "||youtube.sv^",
+ "||youtube.tn^",
+ "||youtube.tv^",
+ "||youtube.ua^",
+ "||youtube.ug^",
+ "||youtube.uy^",
+ "||youtube.vn^",
+ "||youtube^",
+ "||youtubeeducation.com^",
+ "||youtubeembeddedplayer.googleapis.com^",
+ "||youtubefanfest.com^",
+ "||youtubegaming.com^",
+ "||youtubego.co.id^",
+ "||youtubego.co.in^",
+ "||youtubego.com.br^",
+ "||youtubego.com^",
+ "||youtubego.id^",
+ "||youtubego.in^",
"||youtubei.googleapis.com^",
"||youtubekids.com^",
+ "||youtubemobilesupport.com^",
+ "||yt.be^",
"||ytimg.com^",
},
}, {
diff --git a/internal/home/authratelimiter.go b/internal/home/authratelimiter.go
index acdee35c..fcd2c127 100644
--- a/internal/home/authratelimiter.go
+++ b/internal/home/authratelimiter.go
@@ -66,11 +66,12 @@ func (ab *authRateLimiter) check(usrID string) (left time.Duration) {
defer ab.failedAuthsLock.Unlock()
ab.cleanupLocked(now)
+
return ab.checkLocked(usrID, now)
}
// incLocked increments the number of unsuccessful attempts for attempter with
-// ip and updates it's blocking moment if needed. For internal use only.
+// usrID and updates it's blocking moment if needed. For internal use only.
func (ab *authRateLimiter) incLocked(usrID string, now time.Time) {
until := now.Add(failedAuthTTL)
var attNum uint = 1
diff --git a/internal/home/config.go b/internal/home/config.go
index dd2f0730..f2fc98f5 100644
--- a/internal/home/config.go
+++ b/internal/home/config.go
@@ -90,9 +90,6 @@ type configuration struct {
BindHost netip.Addr `yaml:"bind_host"`
// BindPort is the port for the web interface server to listen on.
BindPort int `yaml:"bind_port"`
- // BetaBindPort is the port for the new client's web interface server to
- // listen on.
- BetaBindPort int `yaml:"beta_bind_port"`
// Users are the clients capable for accessing the web interface.
Users []webUser `yaml:"users"`
@@ -187,6 +184,12 @@ type dnsConfig struct {
// for PTR queries for locally-served networks.
LocalPTRResolvers []string `yaml:"local_ptr_upstreams"`
+ // UseDNS64 defines if DNS64 should be used for incoming requests.
+ UseDNS64 bool `yaml:"use_dns64"`
+
+ // DNS64Prefixes is the list of NAT64 prefixes to be used for DNS64.
+ DNS64Prefixes []string `yaml:"dns64_prefixes"`
+
// ServeHTTP3 defines if HTTP/3 is be allowed for incoming requests.
//
// TODO(a.garipov): Add to the UI when HTTP/3 support is no longer
@@ -230,7 +233,6 @@ type tlsConfigSettings struct {
// TODO(a.garipov, e.burkov): This global is awful and must be removed.
var config = &configuration{
BindPort: 3000,
- BetaBindPort: 0,
BindHost: netip.IPv4Unspecified(),
AuthAttempts: 5,
AuthBlockMin: 15,
@@ -372,7 +374,7 @@ func parseConfig() (err error) {
}
tcpPorts := aghalg.UniqChecker[tcpPort]{}
- addPorts(tcpPorts, tcpPort(config.BindPort), tcpPort(config.BetaBindPort))
+ addPorts(tcpPorts, tcpPort(config.BindPort))
udpPorts := aghalg.UniqChecker[udpPort]{}
addPorts(udpPorts, udpPort(config.DNS.Port))
diff --git a/internal/home/controlinstall.go b/internal/home/controlinstall.go
index 0cbddf00..7b053f14 100644
--- a/internal/home/controlinstall.go
+++ b/internal/home/controlinstall.go
@@ -11,7 +11,6 @@ import (
"os/exec"
"path/filepath"
"runtime"
- "strings"
"time"
"unicode/utf8"
@@ -99,7 +98,7 @@ func (req *checkConfReq) validateWeb(tcpPorts aghalg.UniqChecker[tcpPort]) (err
portInt := req.Web.Port
port := tcpPort(portInt)
- addPorts(tcpPorts, tcpPort(config.BetaBindPort), port)
+ addPorts(tcpPorts, port)
if err = tcpPorts.Validate(); err != nil {
// Reset the value for the port to 1 to make sure that validateDNS
// doesn't throw the same error, unless the same TCP port is set there
@@ -321,7 +320,6 @@ type applyConfigReq struct {
func copyInstallSettings(dst, src *configuration) {
dst.BindHost = src.BindHost
dst.BindPort = src.BindPort
- dst.BetaBindPort = src.BetaBindPort
dst.DNS.BindHosts = src.DNS.BindHosts
dst.DNS.Port = src.DNS.Port
}
@@ -472,7 +470,6 @@ func (web *Web) handleInstallConfigure(w http.ResponseWriter, r *http.Request) {
defer cancel()
shutdownSrv(ctx, web.httpServer)
- shutdownSrv(ctx, web.httpServerBeta)
}(shutdownTimeout)
}
@@ -511,191 +508,3 @@ func (web *Web) registerInstallHandlers() {
Context.mux.HandleFunc("/control/install/check_config", preInstall(ensurePOST(web.handleInstallCheckConfig)))
Context.mux.HandleFunc("/control/install/configure", preInstall(ensurePOST(web.handleInstallConfigure)))
}
-
-// checkConfigReqEntBeta is a struct representing new client's config check
-// request entry. It supports multiple IP values unlike the checkConfigReqEnt.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default checkConfigReqEnt.
-type checkConfigReqEntBeta struct {
- IP []netip.Addr `json:"ip"`
- Port int `json:"port"`
- Autofix bool `json:"autofix"`
-}
-
-// checkConfigReqBeta is a struct representing new client's config check request
-// body. It uses checkConfigReqEntBeta instead of checkConfigReqEnt.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default checkConfigReq.
-type checkConfigReqBeta struct {
- Web checkConfigReqEntBeta `json:"web"`
- DNS checkConfigReqEntBeta `json:"dns"`
- SetStaticIP bool `json:"set_static_ip"`
-}
-
-// handleInstallCheckConfigBeta is a substitution of /install/check_config
-// handler for new client.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default handleInstallCheckConfig.
-func (web *Web) handleInstallCheckConfigBeta(w http.ResponseWriter, r *http.Request) {
- reqData := checkConfigReqBeta{}
- err := json.NewDecoder(r.Body).Decode(&reqData)
- if err != nil {
- aghhttp.Error(r, w, http.StatusBadRequest, "Failed to parse 'check_config' JSON data: %s", err)
-
- return
- }
-
- if len(reqData.DNS.IP) == 0 || len(reqData.Web.IP) == 0 {
- aghhttp.Error(r, w, http.StatusBadRequest, http.StatusText(http.StatusBadRequest))
-
- return
- }
-
- nonBetaReqData := checkConfReq{
- Web: checkConfReqEnt{
- IP: reqData.Web.IP[0],
- Port: reqData.Web.Port,
- Autofix: reqData.Web.Autofix,
- },
- DNS: checkConfReqEnt{
- IP: reqData.DNS.IP[0],
- Port: reqData.DNS.Port,
- Autofix: reqData.DNS.Autofix,
- },
- SetStaticIP: reqData.SetStaticIP,
- }
-
- nonBetaReqBody := &strings.Builder{}
-
- err = json.NewEncoder(nonBetaReqBody).Encode(nonBetaReqData)
- if err != nil {
- aghhttp.Error(r, w, http.StatusBadRequest, "encoding check_config: %s", err)
-
- return
- }
-
- body := nonBetaReqBody.String()
- r.Body = io.NopCloser(strings.NewReader(body))
- r.ContentLength = int64(len(body))
-
- web.handleInstallCheckConfig(w, r)
-}
-
-// applyConfigReqEntBeta is a struct representing new client's config setting
-// request entry. It supports multiple IP values unlike the applyConfigReqEnt.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default applyConfigReqEnt.
-type applyConfigReqEntBeta struct {
- IP []netip.Addr `json:"ip"`
- Port int `json:"port"`
-}
-
-// applyConfigReqBeta is a struct representing new client's config setting
-// request body. It uses applyConfigReqEntBeta instead of applyConfigReqEnt.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default applyConfigReq.
-type applyConfigReqBeta struct {
- Username string `json:"username"`
- Password string `json:"password"`
-
- Web applyConfigReqEntBeta `json:"web"`
- DNS applyConfigReqEntBeta `json:"dns"`
-}
-
-// handleInstallConfigureBeta is a substitution of /install/configure handler
-// for new client.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default handleInstallConfigure.
-func (web *Web) handleInstallConfigureBeta(w http.ResponseWriter, r *http.Request) {
- reqData := applyConfigReqBeta{}
- err := json.NewDecoder(r.Body).Decode(&reqData)
- if err != nil {
- aghhttp.Error(r, w, http.StatusBadRequest, "Failed to parse 'check_config' JSON data: %s", err)
-
- return
- }
-
- if len(reqData.DNS.IP) == 0 || len(reqData.Web.IP) == 0 {
- aghhttp.Error(r, w, http.StatusBadRequest, http.StatusText(http.StatusBadRequest))
-
- return
- }
-
- nonBetaReqData := applyConfigReq{
- Web: applyConfigReqEnt{
- IP: reqData.Web.IP[0],
- Port: reqData.Web.Port,
- },
- DNS: applyConfigReqEnt{
- IP: reqData.DNS.IP[0],
- Port: reqData.DNS.Port,
- },
- Username: reqData.Username,
- Password: reqData.Password,
- }
-
- nonBetaReqBody := &strings.Builder{}
-
- err = json.NewEncoder(nonBetaReqBody).Encode(nonBetaReqData)
- if err != nil {
- aghhttp.Error(r, w, http.StatusBadRequest, "encoding configure: %s", err)
-
- return
- }
- body := nonBetaReqBody.String()
- r.Body = io.NopCloser(strings.NewReader(body))
- r.ContentLength = int64(len(body))
-
- web.handleInstallConfigure(w, r)
-}
-
-// getAddrsResponseBeta is a struct representing new client's getting addresses
-// request body. It uses array of structs instead of map.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default firstRunData.
-type getAddrsResponseBeta struct {
- Interfaces []*aghnet.NetInterface `json:"interfaces"`
- WebPort int `json:"web_port"`
- DNSPort int `json:"dns_port"`
-}
-
-// handleInstallConfigureBeta is a substitution of /install/get_addresses
-// handler for new client.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default handleInstallGetAddresses.
-func (web *Web) handleInstallGetAddressesBeta(w http.ResponseWriter, r *http.Request) {
- data := getAddrsResponseBeta{
- WebPort: defaultPortHTTP,
- DNSPort: defaultPortDNS,
- }
-
- ifaces, err := aghnet.GetValidNetInterfacesForWeb()
- if err != nil {
- aghhttp.Error(r, w, http.StatusInternalServerError, "Couldn't get interfaces: %s", err)
-
- return
- }
-
- data.Interfaces = ifaces
-
- _ = aghhttp.WriteJSONResponse(w, r, data)
-}
-
-// registerBetaInstallHandlers registers the install handlers for new client
-// with the structures it supports.
-//
-// TODO(e.burkov): This should removed with the API v1 when the appropriate
-// functionality will appear in default handlers.
-func (web *Web) registerBetaInstallHandlers() {
- Context.mux.HandleFunc("/control/install/get_addresses_beta", preInstall(ensureGET(web.handleInstallGetAddressesBeta)))
- Context.mux.HandleFunc("/control/install/check_config_beta", preInstall(ensurePOST(web.handleInstallCheckConfigBeta)))
- Context.mux.HandleFunc("/control/install/configure_beta", preInstall(ensurePOST(web.handleInstallConfigureBeta)))
-}
diff --git a/internal/home/dns.go b/internal/home/dns.go
index 9d073d7b..4db9b1b2 100644
--- a/internal/home/dns.go
+++ b/internal/home/dns.go
@@ -242,6 +242,8 @@ func generateServerConfig(
ConfigModified: onConfigModified,
HTTPRegister: httpReg,
OnDNSRequest: onDNSRequest,
+ UseDNS64: config.DNS.UseDNS64,
+ DNS64Prefixes: config.DNS.DNS64Prefixes,
}
if tlsConf.Enabled {
diff --git a/internal/home/home.go b/internal/home/home.go
index ce464060..2fb74b3c 100644
--- a/internal/home/home.go
+++ b/internal/home/home.go
@@ -148,13 +148,6 @@ func Main(clientBuildFS fs.FS) {
func setupContext(opts options) {
setupContextFlags(opts)
- switch version.Channel() {
- case version.ChannelEdge, version.ChannelDevelopment:
- config.BetaBindPort = 3001
- default:
- // Go on.
- }
-
Context.tlsRoots = aghtls.SystemRootCAs()
Context.transport = &http.Transport{
DialContext: customDialContext,
@@ -339,7 +332,7 @@ func setupConfig(opts options) (err error) {
if opts.bindPort != 0 {
tcpPorts := aghalg.UniqChecker[tcpPort]{}
- addPorts(tcpPorts, tcpPort(opts.bindPort), tcpPort(config.BetaBindPort))
+ addPorts(tcpPorts, tcpPort(opts.bindPort))
udpPorts := aghalg.UniqChecker[udpPort]{}
addPorts(udpPorts, udpPort(config.DNS.Port))
@@ -376,36 +369,28 @@ func setupConfig(opts options) (err error) {
}
func initWeb(opts options, clientBuildFS fs.FS) (web *Web, err error) {
- var clientFS, clientBetaFS fs.FS
+ var clientFS fs.FS
if opts.localFrontend {
log.Info("warning: using local frontend files")
clientFS = os.DirFS("build/static")
- clientBetaFS = os.DirFS("build2/static")
} else {
clientFS, err = fs.Sub(clientBuildFS, "build/static")
if err != nil {
return nil, fmt.Errorf("getting embedded client subdir: %w", err)
}
-
- clientBetaFS, err = fs.Sub(clientBuildFS, "build2/static")
- if err != nil {
- return nil, fmt.Errorf("getting embedded beta client subdir: %w", err)
- }
}
webConf := webConfig{
- firstRun: Context.firstRun,
- BindHost: config.BindHost,
- BindPort: config.BindPort,
- BetaBindPort: config.BetaBindPort,
+ firstRun: Context.firstRun,
+ BindHost: config.BindHost,
+ BindPort: config.BindPort,
ReadTimeout: readTimeout,
ReadHeaderTimeout: readHdrTimeout,
WriteTimeout: writeTimeout,
- clientFS: clientFS,
- clientBetaFS: clientBetaFS,
+ clientFS: clientFS,
serveHTTP3: config.DNS.ServeHTTP3,
}
@@ -804,23 +789,12 @@ func loadCmdLineOpts() (opts options) {
}
// printWebAddrs prints addresses built from proto, addr, and an appropriate
-// port. At least one address is printed with the value of port. If the value
-// of betaPort is 0, the second address is not printed. Output example:
+// port. At least one address is printed with the value of port. Output
+// example:
//
-// Go to http://127.0.0.1:80
-// Go to http://127.0.0.1:3000 (BETA)
-func printWebAddrs(proto, addr string, port, betaPort int) {
- const (
- hostMsg = "Go to %s://%s"
- hostBetaMsg = hostMsg + " (BETA)"
- )
-
- log.Printf(hostMsg, proto, netutil.JoinHostPort(addr, port))
- if betaPort == 0 {
- return
- }
-
- log.Printf(hostBetaMsg, proto, netutil.JoinHostPort(addr, config.BetaBindPort))
+// go to http://127.0.0.1:80
+func printWebAddrs(proto, addr string, port int) {
+ log.Printf("go to %s://%s", proto, netutil.JoinHostPort(addr, port))
}
// printHTTPAddresses prints the IP addresses which user can use to access the
@@ -838,14 +812,14 @@ func printHTTPAddresses(proto string) {
// TODO(e.burkov): Inspect and perhaps merge with the previous condition.
if proto == aghhttp.SchemeHTTPS && tlsConf.ServerName != "" {
- printWebAddrs(proto, tlsConf.ServerName, tlsConf.PortHTTPS, 0)
+ printWebAddrs(proto, tlsConf.ServerName, tlsConf.PortHTTPS)
return
}
bindhost := config.BindHost
if !bindhost.IsUnspecified() {
- printWebAddrs(proto, bindhost.String(), port, config.BetaBindPort)
+ printWebAddrs(proto, bindhost.String(), port)
return
}
@@ -856,14 +830,14 @@ func printHTTPAddresses(proto string) {
// That's weird, but we'll ignore it.
//
// TODO(e.burkov): Find out when it happens.
- printWebAddrs(proto, bindhost.String(), port, config.BetaBindPort)
+ printWebAddrs(proto, bindhost.String(), port)
return
}
for _, iface := range ifaces {
for _, addr := range iface.Addresses {
- printWebAddrs(proto, addr.String(), config.BindPort, config.BetaBindPort)
+ printWebAddrs(proto, addr.String(), config.BindPort)
}
}
}
diff --git a/internal/home/middlewares.go b/internal/home/middlewares.go
index 73e1566e..5ad02ee0 100644
--- a/internal/home/middlewares.go
+++ b/internal/home/middlewares.go
@@ -75,18 +75,3 @@ func limitRequestBody(h http.Handler) (limited http.Handler) {
h.ServeHTTP(w, rr)
})
}
-
-// wrapIndexBeta returns handler that deals with new client.
-func (web *Web) wrapIndexBeta(http.Handler) (wrapped http.Handler) {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- h, pattern := Context.mux.Handler(r)
- switch pattern {
- case "/":
- web.handlerBeta.ServeHTTP(w, r)
- case "/install.html":
- web.installerBeta.ServeHTTP(w, r)
- default:
- h.ServeHTTP(w, r)
- }
- })
-}
diff --git a/internal/home/tls.go b/internal/home/tls.go
index 4be63d9d..741df548 100644
--- a/internal/home/tls.go
+++ b/internal/home/tls.go
@@ -301,7 +301,6 @@ func (m *tlsManager) handleTLSValidate(w http.ResponseWriter, r *http.Request) {
if setts.Enabled {
err = validatePorts(
tcpPort(config.BindPort),
- tcpPort(config.BetaBindPort),
tcpPort(setts.PortHTTPS),
tcpPort(setts.PortDNSOverTLS),
tcpPort(setts.PortDNSCrypt),
@@ -389,7 +388,6 @@ func (m *tlsManager) handleTLSConfigure(w http.ResponseWriter, r *http.Request)
if req.Enabled {
err = validatePorts(
tcpPort(config.BindPort),
- tcpPort(config.BetaBindPort),
tcpPort(req.PortHTTPS),
tcpPort(req.PortDNSOverTLS),
tcpPort(req.PortDNSCrypt),
@@ -464,14 +462,13 @@ func (m *tlsManager) handleTLSConfigure(w http.ResponseWriter, r *http.Request)
// validatePorts validates the uniqueness of TCP and UDP ports for AdGuard Home
// DNS protocols.
func validatePorts(
- bindPort, betaBindPort, dohPort, dotPort, dnscryptTCPPort tcpPort,
+ bindPort, dohPort, dotPort, dnscryptTCPPort tcpPort,
dnsPort, doqPort udpPort,
) (err error) {
tcpPorts := aghalg.UniqChecker[tcpPort]{}
addPorts(
tcpPorts,
tcpPort(bindPort),
- tcpPort(betaBindPort),
tcpPort(dohPort),
tcpPort(dotPort),
tcpPort(dnscryptTCPPort),
diff --git a/internal/home/web.go b/internal/home/web.go
index 7836355f..96c0a6a9 100644
--- a/internal/home/web.go
+++ b/internal/home/web.go
@@ -33,13 +33,11 @@ const (
)
type webConfig struct {
- clientFS fs.FS
- clientBetaFS fs.FS
+ clientFS fs.FS
- BindHost netip.Addr
- BindPort int
- BetaBindPort int
- PortHTTPS int
+ BindHost netip.Addr
+ BindPort int
+ PortHTTPS int
// ReadTimeout is an option to pass to http.Server for setting an
// appropriate field.
@@ -81,15 +79,6 @@ type Web struct {
// TODO(a.garipov): Refactor all these servers.
httpServer *http.Server
- // httpServerBeta is a server for new client.
- httpServerBeta *http.Server
-
- // handlerBeta is the handler for new client.
- handlerBeta http.Handler
-
- // installerBeta is the pre-install handler for new client.
- installerBeta http.Handler
-
// httpsServer is the server that handles HTTPS traffic. If it is not nil,
// [Web.http3Server] must also not be nil.
httpsServer httpsServer
@@ -106,20 +95,15 @@ func newWeb(conf *webConfig) (w *Web) {
}
clientFS := http.FileServer(http.FS(conf.clientFS))
- betaClientFS := http.FileServer(http.FS(conf.clientBetaFS))
// if not configured, redirect / to /install.html, otherwise redirect /install.html to /
Context.mux.Handle("/", withMiddlewares(clientFS, gziphandler.GzipHandler, optionalAuthHandler, postInstallHandler))
- w.handlerBeta = withMiddlewares(betaClientFS, gziphandler.GzipHandler, optionalAuthHandler, postInstallHandler)
// add handlers for /install paths, we only need them when we're not configured yet
if conf.firstRun {
log.Info("This is the first launch of AdGuard Home, redirecting everything to /install.html ")
Context.mux.Handle("/install.html", preInstallHandler(clientFS))
- w.installerBeta = preInstallHandler(betaClientFS)
w.registerInstallHandlers()
- // This must be removed in API v1.
- w.registerBetaInstallHandlers()
} else {
registerControlHandlers()
}
@@ -208,8 +192,6 @@ func (web *Web) Start() {
errs <- web.httpServer.ListenAndServe()
}()
- web.startBetaServer(hostStr)
-
err := <-errs
if !errors.Is(err, http.ErrServerClosed) {
cleanupAlways()
@@ -221,36 +203,6 @@ func (web *Web) Start() {
}
}
-// startBetaServer starts the beta HTTP server if necessary.
-func (web *Web) startBetaServer(hostStr string) {
- if web.conf.BetaBindPort == 0 {
- return
- }
-
- // Use an h2c handler to support unencrypted HTTP/2, e.g. for proxies.
- hdlr := h2c.NewHandler(
- withMiddlewares(Context.mux, limitRequestBody, web.wrapIndexBeta),
- &http2.Server{},
- )
-
- web.httpServerBeta = &http.Server{
- ErrorLog: log.StdLog("web: plain: beta", log.DEBUG),
- Addr: netutil.JoinHostPort(hostStr, web.conf.BetaBindPort),
- Handler: hdlr,
- ReadTimeout: web.conf.ReadTimeout,
- ReadHeaderTimeout: web.conf.ReadHeaderTimeout,
- WriteTimeout: web.conf.WriteTimeout,
- }
- go func() {
- defer log.OnPanic("web: plain: beta")
-
- betaErr := web.httpServerBeta.ListenAndServe()
- if betaErr != nil && !errors.Is(betaErr, http.ErrServerClosed) {
- log.Error("starting beta http server: %s", betaErr)
- }
- }()
-}
-
// Close gracefully shuts down the HTTP servers.
func (web *Web) Close(ctx context.Context) {
log.Info("stopping http server...")
@@ -266,7 +218,6 @@ func (web *Web) Close(ctx context.Context) {
shutdownSrv(ctx, web.httpsServer.server)
shutdownSrv3(web.httpsServer.server3)
shutdownSrv(ctx, web.httpServer)
- shutdownSrv(ctx, web.httpServerBeta)
log.Info("stopped http server")
}
diff --git a/internal/tools/go.mod b/internal/tools/go.mod
index e37598fc..bf45d275 100644
--- a/internal/tools/go.mod
+++ b/internal/tools/go.mod
@@ -5,15 +5,15 @@ go 1.18
require (
github.com/fzipp/gocyclo v0.6.0
github.com/golangci/misspell v0.4.0
- github.com/gordonklaus/ineffassign v0.0.0-20220928193011-d2c82e48359b
- github.com/kisielk/errcheck v1.6.2
- github.com/kyoh86/looppointer v0.1.9
+ github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28
+ github.com/kisielk/errcheck v1.6.3
+ github.com/kyoh86/looppointer v0.2.1
github.com/securego/gosec/v2 v2.14.0
- golang.org/x/tools v0.2.0
- golang.org/x/vuln v0.0.0-20221103225512-4f561ca73b59
+ golang.org/x/tools v0.5.1-0.20230117180257-8aba49bb5ea2
+ golang.org/x/vuln v0.0.0-20230130175424-dd534eeddf33
honnef.co/go/tools v0.3.3
mvdan.cc/gofumpt v0.4.0
- mvdan.cc/unparam v0.0.0-20220926085101-66de63301820
+ mvdan.cc/unparam v0.0.0-20230125043941-70a0ce6e7b95
)
require (
@@ -24,10 +24,10 @@ require (
github.com/kyoh86/nolint v0.0.1 // indirect
github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
- golang.org/x/exp v0.0.0-20221106115401-f9659909a136 // indirect
- golang.org/x/exp/typeparams v0.0.0-20221106115401-f9659909a136 // indirect
- golang.org/x/mod v0.6.0 // indirect
+ golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 // indirect
+ golang.org/x/exp/typeparams v0.0.0-20230131160201-f062dba9d201 // indirect
+ golang.org/x/mod v0.7.0 // indirect
golang.org/x/sync v0.1.0 // indirect
- golang.org/x/sys v0.2.0 // indirect
+ golang.org/x/sys v0.4.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
diff --git a/internal/tools/go.sum b/internal/tools/go.sum
index 5fa4c6bf..4006de44 100644
--- a/internal/tools/go.sum
+++ b/internal/tools/go.sum
@@ -17,14 +17,14 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gookit/color v1.5.2 h1:uLnfXcaFjlrDnQDT+NCBcfhrXqYTx/rcCa6xn01Y8yI=
github.com/gookit/color v1.5.2/go.mod h1:w8h4bGiHeeBpvQVePTutdbERIUf3oJE5lZ8HM0UgXyg=
-github.com/gordonklaus/ineffassign v0.0.0-20220928193011-d2c82e48359b h1:TYNAU9lu7ggdAereRq0dzCIDzHu9mNyGLj/hd5PXq8I=
-github.com/gordonklaus/ineffassign v0.0.0-20220928193011-d2c82e48359b/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
-github.com/kisielk/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c=
-github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
+github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U=
+github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
+github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8=
+github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kyoh86/looppointer v0.1.9 h1:siTt2dqv+pW3y5gvykZXhlVcTnUVMDf11bGlB9GL5PI=
-github.com/kyoh86/looppointer v0.1.9/go.mod h1:q358WcM8cMWU+5vzqukvaZtnJi1kw/MpRHQm3xvTrjw=
+github.com/kyoh86/looppointer v0.2.1 h1:Jx9fnkBj/JrIryBLMTYNTj9rvc2SrPS98Dg0w7fxdJg=
+github.com/kyoh86/looppointer v0.2.1/go.mod h1:q358WcM8cMWU+5vzqukvaZtnJi1kw/MpRHQm3xvTrjw=
github.com/kyoh86/nolint v0.0.1 h1:GjNxDEkVn2wAxKHtP7iNTrRxytRZ1wXxLV5j4XzGfRU=
github.com/kyoh86/nolint v0.0.1/go.mod h1:1ZiZZ7qqrZ9dZegU96phwVcdQOMKIqRzFJL3ewq9gtI=
github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA=
@@ -53,22 +53,22 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/exp v0.0.0-20221106115401-f9659909a136 h1:Fq7F/w7MAa1KJ5bt2aJ62ihqp9HDcRuyILskkpIAurw=
-golang.org/x/exp v0.0.0-20221106115401-f9659909a136/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
-golang.org/x/exp/typeparams v0.0.0-20221106115401-f9659909a136 h1:962j4VxUJV3GKI6NxKDI9NjATh+tAixlH+9k9MvHSlU=
-golang.org/x/exp/typeparams v0.0.0-20221106115401-f9659909a136/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
+golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 h1:BEABXpNXLEz0WxtA+6CQIz2xkg80e+1zrhWyMcq8VzE=
+golang.org/x/exp v0.0.0-20230131160201-f062dba9d201/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/exp/typeparams v0.0.0-20230131160201-f062dba9d201 h1:O1QcdQUR9htWjzzsXVFPX+RJ3n1P/u/5bsQR8dbs5BY=
+golang.org/x/exp/typeparams v0.0.0-20230131160201-f062dba9d201/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
-golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I=
-golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
+golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
+golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
+golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -83,8 +83,8 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
+golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -96,10 +96,10 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20201007032633-0806396f153e/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
-golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE=
-golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
-golang.org/x/vuln v0.0.0-20221103225512-4f561ca73b59 h1:eOOJSuIRc2QwKAgX5qOIhUZJAd2LLKSBfk839dv+Clo=
-golang.org/x/vuln v0.0.0-20221103225512-4f561ca73b59/go.mod h1:F12iebNzxRMpJsm4W7ape+r/KdnXiSy3VC94WsyCG68=
+golang.org/x/tools v0.5.1-0.20230117180257-8aba49bb5ea2 h1:v0FhRDmSCNH/0EurAT6T8KRY4aNuUhz6/WwBMxG+gvQ=
+golang.org/x/tools v0.5.1-0.20230117180257-8aba49bb5ea2/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
+golang.org/x/vuln v0.0.0-20230130175424-dd534eeddf33 h1:je2aB5nnlseeGvJy5clg6EyC3jjbbCNsRDroC3qQJsA=
+golang.org/x/vuln v0.0.0-20230130175424-dd534eeddf33/go.mod h1:cBP4HMKv0X+x96j8IJWCKk0eqpakBmmHjKGSSC0NaYE=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -114,5 +114,5 @@ honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA=
honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw=
mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
-mvdan.cc/unparam v0.0.0-20220926085101-66de63301820 h1:fggBTMFbBz7CMny3mWZphe0B/6D8ILBunvvB1cNNHi8=
-mvdan.cc/unparam v0.0.0-20220926085101-66de63301820/go.mod h1:7fKhD/gH+APJ9Y27S2PYO7+oVWtb3XPrw9W5ayxVq2A=
+mvdan.cc/unparam v0.0.0-20230125043941-70a0ce6e7b95 h1:n/xhncJPSt0YzfOhnyn41XxUdrWQNgmLBG72FE27Fqw=
+mvdan.cc/unparam v0.0.0-20230125043941-70a0ce6e7b95/go.mod h1:2vU506e8nGWodqcci641NLi4im2twWSq4Lod756epHQ=
diff --git a/main.go b/main.go
index 505eb3e5..b0c10213 100644
--- a/main.go
+++ b/main.go
@@ -10,7 +10,7 @@ import (
// internal directory and the embed package is unable to embed files located
// outside of the same or underlying directory.
-//go:embed build build2
+//go:embed build
var clientBuildFS embed.FS
func main() {
diff --git a/openapi/CHANGELOG.md b/openapi/CHANGELOG.md
index b583ad60..20dde662 100644
--- a/openapi/CHANGELOG.md
+++ b/openapi/CHANGELOG.md
@@ -6,6 +6,21 @@
+## v0.107.23: API changes
+
+### Experimental “beta” APIs removed
+
+The following experimental beta APIs have been removed:
+
+ * `GET /control/install/get_addresses_beta`;
+ * `POST /control/install/check_config_beta`;
+ * `POST /control/install/configure_beta`.
+
+They never quite worked properly, and the future new version of AdGuard Home API
+will probably be different.
+
+
+
## v0.107.22: API changes
### `POST /control/i18n/change_language` is deprecated
diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml
index 68401830..0bbac1e0 100644
--- a/openapi/openapi.yaml
+++ b/openapi/openapi.yaml
@@ -999,20 +999,6 @@
'application/json':
'schema':
'$ref': '#/components/schemas/LanguageSettings'
- '/install/get_addresses_beta':
- 'get':
- 'tags':
- - 'install'
- 'operationId': 'installGetAddressesBeta'
- 'summary': >
- 'UNSTABLE!: Gets the network interfaces information.'
- 'responses':
- '200':
- 'description': 'OK.'
- 'content':
- 'application/json':
- 'schema':
- '$ref': '#/components/schemas/AddressesInfoBeta'
'/install/get_addresses':
'get':
'tags':
@@ -1026,30 +1012,6 @@
'application/json':
'schema':
'$ref': '#/components/schemas/AddressesInfo'
- '/install/check_config_beta':
- 'post':
- 'tags':
- - 'install'
- 'operationId': 'installCheckConfigBeta'
- 'summary': >
- 'UNSTABLE!: Checks configuration'
- 'requestBody':
- 'content':
- 'application/json':
- 'schema':
- '$ref': '#/components/schemas/CheckConfigRequestBeta'
- 'description': 'Configuration to be checked'
- 'required': true
- 'responses':
- '200':
- 'description': 'OK.'
- 'content':
- 'application/json':
- 'schema':
- '$ref': '#/components/schemas/CheckConfigResponse'
- '400':
- 'description': >
- Failed to parse JSON or cannot listen on the specified address.
'/install/check_config':
'post':
'tags':
@@ -1073,29 +1035,6 @@
'400':
'description': >
Failed to parse JSON or cannot listen on the specified address.
- '/install/configure_beta':
- 'post':
- 'tags':
- - 'install'
- 'operationId': 'installConfigureBeta'
- 'summary': >
- 'UNSTABLE!: Applies the initial configuration.'
- 'requestBody':
- 'content':
- 'application/json':
- 'schema':
- '$ref': '#/components/schemas/InitialConfigurationBeta'
- 'description': 'Initial configuration JSON'
- 'required': true
- 'responses':
- '200':
- 'description': 'OK.'
- '400':
- 'description': >
- Failed to parse initial configuration or cannot listen to the
- specified addresses.
- '500':
- 'description': 'Cannot start the DNS server'
'/install/configure':
'post':
'tags':
@@ -2273,24 +2212,6 @@
'type': 'string'
'mtu':
'type': 'integer'
- 'AddressInfoBeta':
- 'type': 'object'
- 'description': 'Port information'
- 'required':
- - 'ip'
- - 'port'
- 'properties':
- 'ip':
- 'type': 'array'
- 'items':
- 'type': 'string'
- 'minItems': 1
- 'example':
- - '127.0.0.1'
- 'port':
- 'type': 'integer'
- 'format': 'uint16'
- 'example': 53
'AddressInfo':
'type': 'object'
'description': 'Port information'
@@ -2327,28 +2248,6 @@
'type': 'integer'
'format': 'uint16'
'example': 80
- 'AddressesInfoBeta':
- 'type': 'object'
- 'description': 'AdGuard Home addresses configuration'
- 'required':
- - 'dns_port'
- - 'web_port'
- - 'interfaces'
- 'properties':
- 'dns_port':
- 'type': 'integer'
- 'format': 'uint16'
- 'example': 53
- 'web_port':
- 'type': 'integer'
- 'format': 'uint16'
- 'example': 80
- 'interfaces':
- 'type': 'array'
- 'description': >
- Network interfaces dictionary, keys are interface names.
- 'items':
- '$ref': '#/components/schemas/NetInterface'
'ProfileInfo':
'type': 'object'
'description': 'Information about the current user'
@@ -2633,17 +2532,6 @@
- 'name'
- 'rules'
'type': 'object'
- 'CheckConfigRequestBeta':
- 'type': 'object'
- 'description': 'Configuration to be checked'
- 'properties':
- 'dns':
- '$ref': '#/components/schemas/CheckConfigRequestInfoBeta'
- 'web':
- '$ref': '#/components/schemas/CheckConfigRequestInfoBeta'
- 'set_static_ip':
- 'type': 'boolean'
- 'example': false
'CheckConfigRequest':
'type': 'object'
'description': 'Configuration to be checked'
@@ -2655,23 +2543,6 @@
'set_static_ip':
'type': 'boolean'
'example': false
- 'CheckConfigRequestInfoBeta':
- 'type': 'object'
- 'properties':
- 'ip':
- 'type': 'array'
- 'items':
- 'type': 'string'
- 'minItems': 1
- 'example':
- - '127.0.0.1'
- 'port':
- 'type': 'integer'
- 'format': 'uint16'
- 'example': 53
- 'autofix':
- 'type': 'boolean'
- 'example': false
'CheckConfigRequestInfo':
'type': 'object'
'properties':
@@ -2732,28 +2603,6 @@
'type': 'string'
'default': ''
'description': 'Error text. Set if static=error'
- 'InitialConfigurationBeta':
- 'type': 'object'
- 'description': >
- AdGuard Home initial configuration for the first-install wizard.
- 'required':
- - 'dns'
- - 'web'
- - 'username'
- - 'password'
- 'properties':
- 'dns':
- '$ref': '#/components/schemas/AddressInfoBeta'
- 'web':
- '$ref': '#/components/schemas/AddressInfoBeta'
- 'username':
- 'type': 'string'
- 'description': 'Basic auth username'
- 'example': 'admin'
- 'password':
- 'type': 'string'
- 'description': 'Basic auth password'
- 'example': 'password'
'InitialConfiguration':
'type': 'object'
'description': >
diff --git a/scripts/hooks/pre-commit b/scripts/hooks/pre-commit
index 9866e3ed..a76639af 100755
--- a/scripts/hooks/pre-commit
+++ b/scripts/hooks/pre-commit
@@ -77,11 +77,6 @@ then
make VERBOSE="$verbose" js-lint js-test
fi
-if [ "$( git diff --cached --name-only -- 'client2/*.js' 'client2/*.ts' 'client2/*.tsx' )" ]
-then
- make VERBOSE="$verbose" js-beta-lint js-beta-test
-fi
-
if [ "$( git diff --cached --name-only -- '*.go' '*.mod' '*.sh' 'Makefile' )" ]
then
make VERBOSE="$verbose" go-os-check go-lint go-test
diff --git a/scripts/make/build-release.sh b/scripts/make/build-release.sh
index 72ba8aeb..6194d87b 100644
--- a/scripts/make/build-release.sh
+++ b/scripts/make/build-release.sh
@@ -320,7 +320,7 @@ done
log "packing frontend"
build_archive="./${dist}/AdGuardHome_frontend.tar.gz"
-tar -c -f - ./build ./build2 | gzip -9 - > "$build_archive"
+tar -c -f - ./build | gzip -9 - > "$build_archive"
log "$build_archive"
log "calculating checksums"
diff --git a/scripts/make/clean.sh b/scripts/make/clean.sh
index f7384641..666af7e2 100644
--- a/scripts/make/clean.sh
+++ b/scripts/make/clean.sh
@@ -23,9 +23,7 @@ $sudo_cmd rm -f\
$sudo_cmd rm -f -r\
./bin/\
./build/static/\
- ./build2/static/\
./client/node_modules/\
- ./client2/node_modules/\
./data/\
"./${dist_dir}/"\
;
diff --git a/scripts/make/go-lint.sh b/scripts/make/go-lint.sh
index 07b1fda0..ff8e803f 100644
--- a/scripts/make/go-lint.sh
+++ b/scripts/make/go-lint.sh
@@ -226,8 +226,8 @@ gocyclo --over 13 ./internal/dhcpd ./internal/filtering/ ./internal/home/
# Apply stricter standards to new or somewhat refactored code.
gocyclo --over 10 ./internal/aghio/ ./internal/aghnet/ ./internal/aghos/\
- ./internal/aghtest/ ./internal/dnsforward/ ./internal/stats/\
- ./internal/tools/ ./internal/updater/ ./internal/version/\
+ ./internal/aghtest/ ./internal/dnsforward/ ./internal/filtering/rewrite/\
+ ./internal/stats/ ./internal/tools/ ./internal/updater/ ./internal/version/\
./scripts/vetted-filters/ ./main.go
ineffassign ./...