*
, vÅ¡echny události jsou ohlášeny. PodÃvejte se na dokumentaci syntaxe na github.com/gobwas/glob. PÅ™Ãklady: master
, {master,release*}
.
settings.authorization_header=AutorizaÄnà hlaviÄka
settings.authorization_header_desc=Pokud vyplnÄ›no, bude pÅ™ipojeno k požadavkům jako autorizaÄnà hlaviÄka. PÅ™Ãklady: %s.
settings.active=AktivnÃ
@@ -2364,7 +2353,6 @@ settings.protect_status_check_matched=OdpovÃdá
settings.protect_invalid_status_check_pattern=Neplatný vzor kontroly stavu: „%s“.
settings.protect_no_valid_status_check_patterns=Žádné platné vzory kontroly stavu.
settings.protect_required_approvals=Požadovaná schválenÃ:
-settings.protect_required_approvals_desc=Umožnit slouÄenà pouze pull requestů s dostateÄným pozitivnÃm hodnocenÃm.
settings.dismiss_stale_approvals=OdmÃtnout nekvalitnà schválenÃ
settings.dismiss_stale_approvals_desc=Pokud budou do vÄ›tve nahrány nové revize, které mÄ›nà obsah tohoto pull requestu, vÅ¡echna stará schválenà budou zamÃtnuta.
settings.ignore_stale_approvals=Ignorovat zastaralá schválenÃ
@@ -2372,12 +2360,9 @@ settings.ignore_stale_approvals_desc=NezapoÄÃtávejte schválenÃ, která byla
settings.require_signed_commits=Vyžadovat podepsané revize
settings.require_signed_commits_desc=OdmÃtnout nahránà do této vÄ›tve pokud nejsou podepsaná nebo jsou neověřitelná.
settings.protect_branch_name_pattern=Vzor jména chránÄ›ných vÄ›tvÃ
-settings.protect_branch_name_pattern_desc=Vzory jmen chránÄ›ných vÄ›tvÃ. Pro vzorovou syntaxi viz dokumentace. PÅ™Ãklady: main, release/**
settings.protect_patterns=Vzory
settings.protect_protected_file_patterns=Vzory chránÄ›ných souborů (oddÄ›lené stÅ™ednÃkem „;“):
-settings.protect_protected_file_patterns_desc=ChránÄ›né soubory, které nemajà povoleno být mÄ›nÄ›ny pÅ™Ãmo, i když uživatel má právo pÅ™idávat, upravovat nebo mazat soubory v této vÄ›tvi. VÃce vzorů lze oddÄ›lit pomocà stÅ™ednÃku („;“). PodÃvejte se na github.com/gobwas/glob dokumentaci pro syntaxi vzoru. PÅ™Ãklady: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Vzory nechránÄ›ných souborů (oddÄ›lené stÅ™ednÃkem „;“):
-settings.protect_unprotected_file_patterns_desc=NechránÄ›né soubory, které je možné mÄ›nit pÅ™Ãmo, pokud má uživatel právo zápisu, ÄÃmž se obejde omezenà push. VÃce vzorů lze oddÄ›lit pomocà stÅ™ednÃku („;“). PodÃvejte se na github.com/gobwas/glob dokumentaci pro syntaxi vzoru. PÅ™Ãklady: .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=Zapnout ochranu
settings.delete_protected_branch=Vypnout ochranu
settings.update_protect_branch_success=Ochrana větvà pro větev „%s“ byla aktualizována.
@@ -2407,7 +2392,6 @@ settings.tags.protection.allowed.teams=Povolené týmy
settings.tags.protection.allowed.noone=Nikdo
settings.tags.protection.create=Chránit znaÄku
settings.tags.protection.none=Neexistujà žádné chránÄ›né znaÄky.
-settings.tags.protection.pattern.description=Můžete použÃt jediné jméno nebo vzor glob nebo regulárnà výraz, který bude odpovÃdat vÃce znaÄek. PÅ™eÄtÄ›te si vÃce v průvodci chránÄ›nými znaÄkami.
settings.bot_token=Token pro robota
settings.chat_id=ID chatu
settings.thread_id=ID vlákna
@@ -2575,7 +2559,7 @@ branch.delete_desc=Smazánà větve je trvalé. Přestože zrušená větev mů
branch.deletion_success=Větev „%s“ byla smazána.
branch.deletion_failed=Nepodařilo se odstranit větev „%s“.
branch.delete_branch_has_new_commits=VÄ›tev „%s“ nemůže být smazána, protože byly pÅ™idány nové commity po slouÄenÃ.
-branch.create_branch=Vytvořit větev %s
+branch.create_branch=Vytvořit větev %s
branch.create_from=z „%s“
branch.create_success=Větev „%s“ byla vytvořena.
branch.branch_already_exists=Větev „%s“ již existuje v tomto repozitáři.
@@ -2601,7 +2585,7 @@ branch.new_branch=Vytvořit novou větev
branch.new_branch_from=Vytvořit novou větev z „%s“
branch.renamed=Větev %s byla přejmenována na %s.
-tag.create_tag=VytvoÅ™it znaÄku %s
+tag.create_tag=VytvoÅ™it znaÄku %s
tag.create_tag_operation=VytvoÅ™it znaÄku
tag.confirm_create_tag=VytvoÅ™it znaÄku
tag.create_tag_from=VytvoÅ™it novou znaÄku z „%s“
@@ -2774,7 +2758,6 @@ last_page=PoslednÃ
total=Celkem: %d
settings=Nastavenà správce
-dashboard.new_version_hint=Gitea %s je nynà k dispozici, právÄ› u vás běži %s. PodÃvej se na blogu pro vÃce informacÃ.
dashboard.statistic=Souhrn
dashboard.maintenance_operations=Operace údržby
dashboard.system_status=Status systému
@@ -2955,12 +2938,10 @@ packages.size=Velikost
packages.published=Publikováno
defaulthooks=Výchozà webové háÄky
-defaulthooks.desc=Webové háÄky automaticky vytvářejà HTTP POST dotazy na server pÅ™i urÄitých Gitea událostech. Webové háÄky definované zde jsou výchozà a budou zkopÃrovány do vÅ¡ech nových repozitářů. PÅ™eÄtÄ›te si vÃce v průvodci webovými háÄky.
defaulthooks.add_webhook=PÅ™idat výchozà webový háÄek
defaulthooks.update_webhook=Aktualizovat výchozà webový háÄek
systemhooks=Systémové webové háÄky
-systemhooks.desc=Webové háÄky automaticky vytvářejà HTTP POST dotazy na server pÅ™i urÄitých Gitea událostech. Webové háÄky definované zde budou vykonány na vÅ¡ech repozitářÃch systému, proto prosÃm zvažte jakékoli důsledky, které to může mÃt na výkon. PÅ™eÄtÄ›te si vÃce v průvodci webovými háÄky.
systemhooks.add_webhook=PÅ™idat systémový webový háÄek
systemhooks.update_webhook=Aktualizovat systémový webový háÄek
@@ -3055,18 +3036,8 @@ auths.tips=Tipy
auths.tips.oauth2.general=Ověřovánà OAuth2
auths.tips.oauth2.general.tip=Při registraci nové OAuth2 autentizace by URL callbacku/přesměrovánà měla být:
auths.tip.oauth2_provider=Poskytovatel OAuth2
-auths.tip.bitbucket=Vytvořte nového OAuth konzumenta na https://bitbucket.org/account/user/{vase-uzivatelske-jmeno}/oauth-consumers/new a přidejte oprávněnà „Account“ - „Read“
auths.tip.nextcloud=Zaregistrujte nového OAuth konzumenta na vaÅ¡Ã instanci pomocà následujÃcÃho menu „Nastavenà -> ZabezpeÄenà -> OAuth 2.0 klient“
-auths.tip.dropbox=Vytvořte novou aplikaci na https://www.dropbox.com/developers/apps
-auths.tip.facebook=Registrujte novou aplikaci na https://developers.facebook.com/apps a přidejte produkt „Facebook Login“
-auths.tip.github=Registrujte novou OAuth aplikaci na https://github.com/settings/applications/new
-auths.tip.gitlab_new=Zaregistrujte novou aplikaci na https://gitlab.com/-/profile/applications
-auths.tip.google_plus=ZÃskejte klientské pověřenà OAuth2 z Google API konzole na https://console.developers.google.com/
auths.tip.openid_connect=Použijte OpenID Connect URL pro objevovánà spojenà „https://{server}/.well-known/openid-configuration“ k nastavenà koncových bodů
-auths.tip.twitter=Jděte na https://dev.twitter.com/apps, vytvořte aplikaci a ujistěte se, že volba „Allow this application to be used to Sign in with Twitter“ je povolená
-auths.tip.discord=Registrujte novou aplikaci na https://discordapp.com/developers/applications/me
-auths.tip.gitea=Registrovat novou Oauth2 aplikaci. Návod naleznete na https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=VytvoÅ™te novou aplikaci na https://oauth.yandex.com/client/new. Vyberte následujÃcà oprávnÄ›nà z „Yandex.Passport API“ sekce: „PÅ™Ãstup k e-mailové adrese“, „PÅ™Ãstup k uživatelskému avataru“ a „PÅ™Ãstup k uživatelskému jménu, jménu a pÅ™ÃjmenÃ, pohlavÓ
auths.tip.mastodon=Vložte vlastnà URL instance pro mastodon, kterou se chcete autentizovat (nebo použijte výchozÃ)
auths.edit=Upravit zdroj ověřovánÃ
auths.activated=Tento zdroj ověřovánà je aktivován
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index ab6a3cfcd69dd..4f011663e8838 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -213,22 +213,16 @@ string.desc=Z–A
[error]
occurred=Ein Fehler ist aufgetreten
-report_message=Wenn du glaubst, dass dies ein Fehler von Gitea ist, suche bitte auf GitHub nach diesem Fehler und erstelle gegebenenfalls einen neuen Bugreport.
-missing_csrf=Fehlerhafte Anfrage: Kein CSRF Token verfügbar
-invalid_csrf=Fehlerhafte Anfrage: Ungültiger CSRF Token
not_found=Das Ziel konnte nicht gefunden werden.
network_error=Netzwerkfehler
[startpage]
app_desc=Ein einfacher, selbst gehosteter Git-Service
install=Einfach zu installieren
-install_desc=Starte einfach die Anwendung für deine Plattform oder nutze Docker. Es existieren auch paketierte Versionen.
platform=Plattformübergreifend
-platform_desc=Gitea läuft überall, wo Go kompiliert: Windows, macOS, Linux, ARM, etc. Wähle das System, das dir am meisten gefällt!
lightweight=Leichtgewicht
lightweight_desc=Gitea hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden!
license=Quelloffen
-license_desc=Der komplette Code befindet sich auf GitHub! Unterstütze uns bei der Verbesserung dieses Projekts. Trau dich!
[install]
install=Installation
@@ -446,7 +440,6 @@ authorize_title=`"%s" den Zugriff auf deinen Account gestatten?`
authorization_failed=Autorisierung fehlgeschlagen
authorization_failed_desc=Die Autorisierung ist fehlgeschlagen, da wir eine ungültige Anfrage erkannt haben. Bitte kontaktiere den Betreuer der App, die du zu autorisieren versucht hast.
sspi_auth_failed=SSPI-Authentifizierung fehlgeschlagen
-password_pwned=Das von dir gewählte Passwort befindet sich auf einer List gestohlener Passwörter, die öffentlich verfügbar sind. Bitte versuche es erneut mit einem anderen Passwort und ziehe in Erwägung, auch anderswo deine Passwörter zu ändern.
password_pwned_err=Anfrage an HaveIBeenPwned konnte nicht abgeschlossen werden
last_admin=Du kannst den letzten Admin nicht entfernen. Es muss mindestens einen Administrator geben.
@@ -690,7 +683,6 @@ public_profile=Öffentliches Profil
biography_placeholder=Erzähle uns ein wenig über Dich selbst! (Du kannst Markdown verwenden)
location_placeholder=Teile Deinen ungefähren Standort mit anderen
profile_desc=Lege fest, wie dein Profil anderen Benutzern angezeigt wird. Deine primäre E-Mail-Adresse wird für Benachrichtigungen, Passwort-Wiederherstellung und webbasierte Git-Operationen verwendet.
-password_username_disabled=Benutzer, die nicht von Gitea verwaltet werden können ihren Benutzernamen nicht ändern. Bitte kontaktiere deinen Administrator für mehr Details.
full_name=Vollständiger Name
website=Webseite
location=Standort
@@ -929,7 +921,6 @@ then_enter_passcode=Und gebe dann die angezeigte PIN der Anwendung ein:
passcode_invalid=Die PIN ist falsch. Probiere es erneut.
twofa_failed_get_secret=Fehler beim Abrufen des Secrets.
-webauthn_desc=Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beeinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard „WebAuthn“ unterstützen.
webauthn_register_key=Sicherheitsschlüssel hinzufügen
webauthn_nickname=Nickname
webauthn_delete_key=Sicherheitsschlüssel entfernen
@@ -1687,7 +1678,6 @@ issues.dependency.add_error_dep_not_same_repo=Beide Issues müssen sich im selbe
issues.review.self.approval=Du kannst nicht dein eigenen Pull-Request genehmigen.
issues.review.self.rejection=Du kannst keine Änderungen an deinem eigenen Pull-Request anfragen.
issues.review.approve=hat die Änderungen %s genehmigt
-issues.review.comment=hat %s überprüft
issues.review.dismissed=verwarf %ss Review %s
issues.review.dismissed_label=Verworfen
issues.review.left_comment=hat einen Kommentar hinterlassen
@@ -1712,6 +1702,7 @@ issues.review.hide_resolved=Gelöste ausblenden
issues.review.resolve_conversation=Diskussion als "erledigt" markieren
issues.review.un_resolve_conversation=Diskussion als "nicht-erledigt" markieren
issues.review.resolved_by=markierte diese Unterhaltung als gelöst
+issues.review.commented=Kommentieren
issues.assignee.error=Aufgrund eines unerwarteten Fehlers konnten nicht alle Beauftragten hinzugefügt werden.
issues.reference_issue.body=Beschreibung
issues.content_history.deleted=gelöscht
@@ -1783,7 +1774,6 @@ pulls.is_empty=Die Änderungen an diesem Branch sind bereits auf dem Zielbranch.
pulls.required_status_check_failed=Einige erforderliche Prüfungen waren nicht erfolgreich.
pulls.required_status_check_missing=Einige erforderliche Prüfungen fehlen.
pulls.required_status_check_administrator=Als Administrator kannst du diesen Pull-Request weiterhin mergen.
-pulls.blocked_by_approvals=Dieser Pull-Request hat noch nicht genügend Zustimmungen. %d von %d Zustimmungen erteilt.
pulls.blocked_by_rejection=Dieser Pull-Request hat Änderungen, die von einem offiziellen Reviewer angefragt wurden.
pulls.blocked_by_official_review_requests=Dieser Pull Request hat offizielle Review-Anfragen.
pulls.blocked_by_outdated_branch=Dieser Pull Request ist blockiert, da er veraltet ist.
@@ -2273,7 +2263,6 @@ settings.event_pull_request_merge=Pull-Request-Merge
settings.event_package=Paket
settings.event_package_desc=Paket wurde in einem Repository erstellt oder gelöscht.
settings.branch_filter=Branch-Filter
-settings.branch_filter_desc=Whitelist für Branches für Push-, Erzeugungs- und Löschevents, als glob Pattern beschrieben. Es werden Events für alle Branches gemeldet, falls das Pattern *
ist, oder falls es leer ist. Siehe die github.com/gobwas/glob Dokumentation für die Syntax (Englisch). Beispiele: master
, {master,release*}
.
settings.authorization_header=Authorization-Header
settings.authorization_header_desc=Wird, falls vorhanden, als Authorization-Header mitgesendet. Beispiele: %s.
settings.active=Aktiv
@@ -2338,7 +2327,6 @@ settings.protect_status_check_matched=Ãœbereinstimmung
settings.protect_invalid_status_check_pattern=Ungültiges Muster: "%s".
settings.protect_no_valid_status_check_patterns=Keine gültigen Statuscheck-Muster.
settings.protect_required_approvals=Erforderliche Zustimmungen:
-settings.protect_required_approvals_desc=Erlaube das Mergen des Pull-Requests nur mit genügend positiven Reviews.
settings.dismiss_stale_approvals=Entferne alte Genehmigungen
settings.dismiss_stale_approvals_desc=Wenn neue Commits gepusht werden, die den Inhalt des Pull-Requests ändern, werden alte Genehmigungen entfernt.
settings.ignore_stale_approvals=Veraltete Genehmigungen ignorieren
@@ -2346,12 +2334,9 @@ settings.ignore_stale_approvals_desc=Genehmigungen, die für ältere Commits ert
settings.require_signed_commits=Signierte Commits erforderlich
settings.require_signed_commits_desc=Pushes auf diesen Branch ablehnen, wenn Commits nicht signiert oder nicht überprüfbar sind.
settings.protect_branch_name_pattern=Muster für geschützte Branchnamen
-settings.protect_branch_name_pattern_desc=Geschützte Branch-Namensmuster. Siehe die Dokumentation für die Muster-Syntax. Beispiele: main, release/**
settings.protect_patterns=Muster
settings.protect_protected_file_patterns=Geschützte Dateimuster (durch Semikolon ';' getrennt):
-settings.protect_protected_file_patterns_desc=Geschützte Dateien dürfen nicht direkt geändert werden, auch wenn der Benutzer Rechte hat, Dateien in diesem Branch hinzuzufügen, zu bearbeiten oder zu löschen. Mehrere Muster können mit Semikolon (';') getrennt werden. Siehe github.com/gobwas/glob Dokumentation zur Mustersyntax. Beispiele: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Ungeschützte Dateimuster (durch Semikolon ';' getrennt):
-settings.protect_unprotected_file_patterns_desc=Ungeschützte Dateien, die direkt geändert werden dürfen, wenn der Benutzer Schreibzugriff hat, können die Push-Beschränkung umgehen. Mehrere Muster können mit Semikolon (';') getrennt werden. Siehe github.com/gobwas/glob Dokumentation zur Mustersyntax. Beispiele: .drone.yml
, /docs/**/*.txt
.
settings.update_protect_branch_success=Branchschutzregel "%s" wurde geändert.
settings.remove_protected_branch_success=Branchschutzregel "%s" wurde deaktiviert.
settings.remove_protected_branch_failed=Entfernen der Branchschutzregel "%s" fehlgeschlagen.
@@ -2379,7 +2364,6 @@ settings.tags.protection.allowed.teams=Erlaubte Teams
settings.tags.protection.allowed.noone=Niemand
settings.tags.protection.create=Tag schützen
settings.tags.protection.none=Es gibt keine geschützten Tags.
-settings.tags.protection.pattern.description=Du kannst einen einzigen Namen oder ein globales Schema oder einen regulären Ausdruck verwenden, um mehrere Tags zu schützen. Mehr dazu im Guide für geschützte Tags (Englisch).
settings.bot_token=Bot-Token
settings.chat_id=Chat-ID
settings.thread_id=Thread-ID
@@ -2547,7 +2531,7 @@ branch.delete_desc=Das Löschen eines Branches ist permanent. Obwohl der Branch
branch.deletion_success=Branch "%s" wurde gelöscht.
branch.deletion_failed=Branch "%s" konnte nicht gelöscht werden.
branch.delete_branch_has_new_commits=Der Branch "%s" kann nicht gelöscht werden, da seit dem letzten Merge neue Commits hinzugefügt wurden.
-branch.create_branch=Erstelle Branch %s
+branch.create_branch=Erstelle Branch %s
branch.create_from=`von "%s"`
branch.create_success=Branch "%s" wurde erstellt.
branch.branch_already_exists=Branch "%s" existiert bereits in diesem Repository.
@@ -2573,7 +2557,7 @@ branch.new_branch=Neue Branch erstellen
branch.new_branch_from=Neuen Branch von "%s" erstellen
branch.renamed=Branch %s wurde in %s umbenannt.
-tag.create_tag=Tag %s erstellen
+tag.create_tag=Tag %s erstellen
tag.create_tag_operation=Tag erstellen
tag.confirm_create_tag=Tag erstellen
tag.create_tag_from=Neuen Tag von "%s" erstellen
@@ -2746,7 +2730,6 @@ last_page=Letzte
total=Gesamt: %d
settings=Administratoreinstellungen
-dashboard.new_version_hint=Gitea %s ist jetzt verfügbar, deine derzeitige Version ist %s. Weitere Details findest du im Blog.
dashboard.statistic=Ãœbersicht
dashboard.system_status=System-Status
dashboard.operation_name=Name der Operation
@@ -2926,12 +2909,10 @@ packages.size=Größe
packages.published=Veröffentlicht
defaulthooks=Standard-Webhooks
-defaulthooks.desc=Webhooks senden automatisch eine HTTP-POST-Anfrage an einen Server, wenn bestimmte Gitea-Events ausgelöst werden. Hier definierte Webhooks sind die Standardwerte, die in alle neuen Repositories kopiert werden. Mehr Infos findest du in der Webhooks-Anleitung (auf Englisch).
defaulthooks.add_webhook=Standard-Webhook hinzufügen
defaulthooks.update_webhook=Standard-Webhook aktualisieren
systemhooks=System-Webhooks
-systemhooks.desc=Webhooks senden automatisch HTTP-POST-Anfragen an einen Server, wenn bestimmte Gitea-Events ausgelöst werden. Hier definierte Webhooks werden auf alle Repositories des Systems übertragen, beachte daher mögliche Performance-Einbrüche. Mehr Infos findest du in der Webhooks-Anleitung (auf Englisch).
systemhooks.add_webhook=System-Webhook hinzufügen
systemhooks.update_webhook=System-Webhook aktualisieren
@@ -3027,15 +3008,6 @@ auths.tips.oauth2.general=OAuth2-Authentifizierung
auths.tips.oauth2.general.tip=Beim Registrieren einer OAuth2-Anwendung sollte die Callback-URL folgendermaßen lauten:
auths.tip.oauth2_provider=OAuth2-Anbieter
auths.tip.nextcloud=Registriere über das "Settings -> Security -> OAuth 2.0 client"-Menü einen neuen "OAuth consumer" auf der Nextcloud-Instanz
-auths.tip.dropbox=Erstelle eine neue App auf https://www.dropbox.com/developers/apps.
-auths.tip.facebook=Erstelle eine neue Anwendung auf https://developers.facebook.com/apps und füge das Produkt „Facebook Login“ hinzu.
-auths.tip.github=Erstelle unter https://github.com/settings/applications/new eine neue OAuth-Anwendung.
-auths.tip.gitlab_new=Erstelle eine neue Anwendung unter https://gitlab.com/-/profile/applications
-auths.tip.google_plus=Du erhältst die OAuth2-Client-Zugangsdaten in der Google-API-Konsole unter https://console.developers.google.com/
-auths.tip.twitter=Gehe auf https://dev.twitter.com/apps, erstelle eine Anwendung und stelle sicher, dass die Option „Allow this application to be used to Sign in with Twitter“ aktiviert ist
-auths.tip.discord=Erstelle unter https://discordapp.com/developers/applications/me eine neue Anwendung.
-auths.tip.gitea=Registriere eine neue OAuth2-Anwendung. Eine Anleitung findest du unter https://docs.gitea.com/development/oauth2-provider/
-auths.tip.yandex=`Erstelle eine neue Anwendung auf https://oauth.yandex.com/client/new. Wähle folgende Berechtigungen aus dem "Yandex.Passport API" Bereich: "Zugriff auf E-Mail-Adresse", "Zugriff auf Benutzeravatar" und "Zugriff auf Benutzername, Vor- und Nachname, Geschlecht"`
auths.tip.mastodon=Gebe eine benutzerdefinierte URL für die Mastodon-Instanz ein, mit der du dich authentifizieren möchtest (oder benutze die standardmäßige)
auths.edit=Authentifikationsquelle bearbeiten
auths.activated=Diese Authentifikationsquelle ist aktiviert
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index 7ed45df23c32f..8a82d9353a300 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -184,22 +184,16 @@ string.desc=Z - A
[error]
occurred=ΠαÏουσιάστηκε Îνα σφάλμα
-report_message=Αν πιστεÏετε ότι αυτό είναι Îνα Ï€Ïόβλημα στο Gitea, παÏακαλοÏμε αναζητήστε ζητήματα στο GitHub ή ανοίξτε Îνα νÎο ζήτημα εάν είναι απαÏαίτητο.
-missing_csrf=Bad Request: δεν υπάÏχει διακÏιτικό CSRF
-invalid_csrf=Λάθος Αίτημα: μη ÎγκυÏο διακÏιτικό CSRF
not_found=Ο Ï€ÏοοÏισμός δεν βÏÎθηκε.
network_error=Σφάλμα δικτÏου
[startpage]
app_desc=Μια ανώδυνη, αυτο-φιλοξενοÏμενη υπηÏεσία Git
install=ΕÏκολο στην εγκατάσταση
-install_desc=Απλά εκτελÎστε το αÏχείο Ï€ÏογÏάμματος για την πλατφόÏμα σας, χÏήσιμοποιήστε το με το Docker, ή εγκαταστήστε το πακÎτο.
platform=ΠολυπλατφοÏμικό
-platform_desc=Ο Gitea Ï„ÏÎχει οπουδήποτε Go μποÏεί να γίνει compile για: Windows, macOS, Linux, ARM, κλπ. ΕπιλÎξτε αυτό που αγαπάτε!
lightweight=ΕλαφÏÏ
lightweight_desc=Gitea Îχει χαμηλÎÏ‚ ελάχιστες απαιτήσεις και μποÏεί να Ï„ÏÎξει σε Îνα οικονομικό Raspberry Pi. Εξοικονομήστε ενÎÏγεια!
license=Î‘Î½Î¿Î¹ÎºÏ„Î¿Ï ÎºÏŽÎ´Î¹ÎºÎ±
-license_desc=Κατεβάστε το code.gitea.io/gitea! Ελάτε μαζί μας και συνεισφÎÏετε για να κάνετε αυτό το ÎÏγο ακόμα καλÏτεÏο. Δεν είναι ντÏοπή να συνεισφÎÏετε!
[install]
install=Εγκατάσταση
@@ -413,7 +407,6 @@ authorize_title=Εξουσιοδότηση του "%s" για Îχει Ï€Ïόσ
authorization_failed=Αποτυχία εξουσιοδότησης
authorization_failed_desc=Η εξουσιοδότηση απÎτυχε επειδή εντοπίστηκε μια μη ÎγκυÏη αίτηση. ΠαÏακαλοÏμε επικοινωνήστε με το συντηÏητή της εφαÏμογής που Ï€Ïοσπαθήσατε να εξουσιοδοτήσετε.
sspi_auth_failed=Αποτυχία ταυτοποίησης SSPI
-password_pwned=Ο κωδικός Ï€Ïόσβασης που επιλÎξατε είναι σε μια λίστα κλεμμÎνων κωδικών Ï€Ïόσβασης που Ï€ÏοηγουμÎνως εκτÎθηκαν σε παÏαβίαση δημόσιων δεδομÎνων. ΠαÏακαλώ δοκιμάστε ξανά με διαφοÏετικό κωδικό Ï€Ïόσβασης και σκεφτείτε να αλλάξετε αυτόν τον κωδικό Ï€Ïόσβασης όπου Î±Î»Î»Î¿Ï Ï‡Ïησιμοποιείται.
password_pwned_err=Δεν ήταν δυνατή η ολοκλήÏωση του αιτήματος Ï€Ïος το HaveIBeenPwned
[mail]
@@ -627,7 +620,6 @@ public_profile=Δημόσιο Î Ïοφίλ
biography_placeholder=Πείτε μας λίγο για τον εαυτό σας! (ΜποÏείτε να γÏάψετε με Markdown)
location_placeholder=ΜοιÏαστείτε την κατά Ï€ÏοσÎγγιση τοποθεσία σας με άλλους
profile_desc=ΕλÎγξτε πώς εμφανίζεται το Ï€Ïοφίλ σας σε άλλους χÏήστες. Η κÏÏια διεÏθυνση email σας θα χÏησιμοποιηθεί για ειδοποιήσεις, ανάκτηση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης και λειτουÏγίες Git που βασίζονται στο web.
-password_username_disabled=Οι μη τοπικοί χÏήστες δεν επιτÏÎπεται να αλλάξουν το όνομα χÏήστη τους. Επικοινωνήστε με το διαχειÏιστή σας για πεÏισσότεÏες λεπτομÎÏειες.
full_name=ΠλήÏες Όνομα
website=Ιστοσελίδα
location=Τοποθεσία
@@ -868,7 +860,6 @@ then_enter_passcode=Και εισάγετε τον κωδικό που εμφα
passcode_invalid=Ο κωδικός είναι λάθος. Δοκιμάστε ξανά.
twofa_failed_get_secret=Αποτυχία λήψης μυστικοÏ.
-webauthn_desc=Τα κλειδιά ασφαλείας είναι συσκευÎÏ‚ που πεÏιÎχουν κÏυπτογÏαφικά κλειδιά. ΜποÏοÏν να χÏησιμοποιηθοÏν για Îλεγχο ταυτότητας δÏο παÏαγόντων. Τα κλειδιά ασφαλείας Ï€ÏÎπει να υποστηÏίζουν το Ï€Ïότυπο WebAuthn Authn Authenticator.
webauthn_register_key=Î Ïοσθήκη ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï Î‘ÏƒÏ†Î±Î»ÎµÎ¯Î±Ï‚
webauthn_nickname=Ψευδώνυμο
webauthn_delete_key=ΑφαίÏεση ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï Î‘ÏƒÏ†Î±Î»ÎµÎ¯Î±Ï‚
@@ -1609,7 +1600,6 @@ issues.dependency.add_error_dep_not_same_repo=Και τα δÏο ζητήματ
issues.review.self.approval=Δεν μποÏείτε να εγκÏίνετε το δικό σας pull request.
issues.review.self.rejection=Δεν μποÏείτε να ζητήσετε αλλαγÎÏ‚ στο δικό σας pull request.
issues.review.approve=ενÎκÏινε αυτÎÏ‚ τις αλλαγÎÏ‚ %s
-issues.review.comment=αξιολόγησε %s
issues.review.dismissed=απÎÏÏιψε την αξιολόγηση %s %s
issues.review.dismissed_label=ΑποÏÏίφθηκε
issues.review.left_comment=άφησε Îνα σχόλιο
@@ -1634,6 +1624,7 @@ issues.review.hide_resolved=ΑπόκÏυψη επιλυμÎνων
issues.review.resolve_conversation=Επίλυση συνομιλίας
issues.review.un_resolve_conversation=Ανεπίλυτη συνομιλία
issues.review.resolved_by=σημείωση αυτή την συνομιλία ως επιλυμÎνη
+issues.review.commented=Σχόλιο
issues.assignee.error=Δεν Ï€ÏοστÎθηκαν όλοι οι παÏαλήπτες λόγω απÏοσδόκητου σφάλματος.
issues.reference_issue.body=Σώμα
issues.content_history.deleted=διαγÏάφηκε
@@ -1703,7 +1694,6 @@ pulls.is_empty=Οι αλλαγÎÏ‚ σε αυτόν τον κλάδο είναι
pulls.required_status_check_failed=ΟÏισμÎνοι απαιτοÏμενοι Îλεγχοι δεν ήταν επιτυχείς.
pulls.required_status_check_missing=Λείπουν οÏισμÎνοι απαιτοÏμενοι Îλεγχοι.
pulls.required_status_check_administrator=Ως διαχειÏιστής, μποÏείτε ακόμα να συγχωνεÏσετε αυτό το pull request.
-pulls.blocked_by_approvals=Το pull request δεν Îχει ακόμα αÏκετÎÏ‚ εγκÏίσεις. Δόθηκαν %d από %d εγκÏίσεις.
pulls.blocked_by_rejection=Αυτό το Pull Request Îχει αλλαγÎÏ‚ που ζητοÏνται από Îναν επίσημο εξεταστή.
pulls.blocked_by_official_review_requests=Αυτό το Pull Request Îχει επίσημες αιτήσεις αξιολόγησης.
pulls.blocked_by_outdated_branch=Αυτό το pull request Îχει αποκλειστεί επειδή είναι παÏωχημÎνο.
@@ -2178,7 +2168,6 @@ settings.event_pull_request_merge=Συγχώνευση Pull Request
settings.event_package=ΠακÎτο
settings.event_package_desc=Το πακÎτο δημιουÏγήθηκε ή διαγÏάφηκε σε Îνα αποθετήÏιο.
settings.branch_filter=ΦίλτÏο κλάδου
-settings.branch_filter_desc=Λίστα επιτÏεπόμενων κλάδων για ωθήσεις, δημιουÏγία κλάδων και γεγονότα διαγÏαφής κλάδων, που οÏίζονται ως μοτίβο glob. Εάν είναι κενό ή *
, αναφÎÏονται συμβάντα για όλους τους κλάδους. Δείτε τη τεκμηÏίωσηgithub.com/gobwas/glob για σÏνταξη. ΠαÏαδείγματα: master
, {master,release*}
.
settings.authorization_header=Κεφαλίδα Authorization
settings.authorization_header_desc=Αν υπάÏχει, θα Ï€Ïοστίθεται ως κεφαλίδα authorization στις αιτήσεις HTTP. ΠαÏαδείγματα: %s.
settings.active=ΕνεÏγό
@@ -2245,18 +2234,14 @@ settings.protect_status_check_matched=ΤαιÏιάζει
settings.protect_invalid_status_check_pattern=Μη ÎγκυÏο μοτίβο ελÎγχου κατάστασης: "%s".
settings.protect_no_valid_status_check_patterns=Μη ÎγκυÏα μοτίβα ελÎγχου κατάστασης.
settings.protect_required_approvals=ΑπαιτοÏμενες εγκÏίσεις:
-settings.protect_required_approvals_desc=ΕπιτÏÎψτε μόνο να συγχωνεÏσετε pull request με αÏκετÎÏ‚ θετικÎÏ‚ κÏιτικÎÏ‚.
settings.dismiss_stale_approvals=ΠαÏάβλεψη καθυστεÏημÎνων εγκÏίσεων
settings.dismiss_stale_approvals_desc=Όταν οι νÎες υποβολÎÏ‚ που αλλάζουν το πεÏιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιÎÏ‚ εγκÏίσεις αποÏÏίπτονται.
settings.require_signed_commits=ΑπαιτοÏνται ΥπογεγÏαμμÎνες ΥποβολÎÏ‚
settings.require_signed_commits_desc=ΑπόÏÏιψη νÎων υποβολών σε αυτόν τον κλάδο εάν είναι μη υπογεγÏαμμÎνες ή μη επαληθεÏσιμες.
settings.protect_branch_name_pattern=Μοτίβο Î ÏοστατευμÎνου Ονόματος Κλάδου
-settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος Ï€ÏοστατευμÎνων κλάδων. Δείτε την τεκμηÏίωση για σÏνταξη μοτίβου. ΠαÏαδείγματα: main, release/**
settings.protect_patterns=Μοτίβα
settings.protect_protected_file_patterns=Μοτίβα Ï€ÏοστατευμÎνων αÏχείων (διαχωÏισμÎνα με εÏωτηματικό ';'):
-settings.protect_protected_file_patterns_desc=Τα Ï€Ïοστατευόμενα αÏχεία δεν επιτÏÎπεται να αλλάξουν άμεσα, ακόμη και αν ο χÏήστης Îχει δικαιώματα να Ï€ÏοσθÎσει, να επεξεÏγαστεί ή να διαγÏάψει αÏχεία σε αυτόν τον κλάδο. ΕπιπλÎων μοτίβα μποÏοÏν να διαχωÏιστοÏν με εÏωτηματικό (';'). Δείτε την τεκμηÏίωση github.com/gobwas/glob για τη σÏνταξη του μοτίβου. Πχ: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Μοτίβα μη Ï€ÏοστατευμÎνων αÏχείων (διαχωÏισμÎνα με εÏωτηματικό ';'):
-settings.protect_unprotected_file_patterns_desc=Μη Ï€ÏοστατευμÎνα αÏχεία που επιτÏÎπεται να αλλάξουν απευθείας εάν ο χÏήστης Îχει Ï€Ïόσβαση εγγÏαφής, παÏακάμπτοντας τον πεÏιοÏισμό ώθησης. ΕπιπλÎων μοτίβα μποÏοÏν να διαχωÏιστοÏν με εÏωτηματικό (';'). Δείτε την τεκμηÏίωση github.com/gobwas/glob για τη σÏνταξη του μοτίβου. Πχ: .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=ΕνεÏγοποίηση Ï€Ïοστασίας
settings.delete_protected_branch=ΑπενεÏγοποίηση Ï€Ïοστασίας
settings.update_protect_branch_success=Η Ï€Ïοστασία κλάδου για τον κανόνα "%s" ενημεÏώθηκε.
@@ -2286,7 +2271,6 @@ settings.tags.protection.allowed.teams=ΕπιτÏεπόμενες ομάδες
settings.tags.protection.allowed.noone=Καμία
settings.tags.protection.create=Î Ïοστασία ΕτικÎτας
settings.tags.protection.none=Δεν υπάÏχουν Ï€ÏοστατευμÎνες ετικÎτες.
-settings.tags.protection.pattern.description=ΜποÏείτε να χÏησιμοποιήσετε Îνα μόνο όνομα ή Îνα μοτίβο Ï„Ïπου glob ή κανονική ÎκφÏαση για να ταιÏιάξετε πολλαπλÎÏ‚ ετικÎτες. Διαβάστε πεÏισσότεÏα στον οδηγό Ï€ÏοστατευμÎνων ετικετών.
settings.bot_token=ΔιακÏιτικό Bot
settings.chat_id=ID Συνομιλίας
settings.thread_id=ID Îήματος
@@ -2453,7 +2437,7 @@ branch.delete_desc=Η διαγÏαφή ενός κλάδου είναι μόνι
branch.deletion_success=Ο κλάδος "%s" διαγÏάφηκε.
branch.deletion_failed=Αποτυχία διαγÏαφής του κλάδου "%s".
branch.delete_branch_has_new_commits=Ο κλάδος "%s" δεν μποÏεί να διαγÏαφεί επειδή Ï€ÏοστÎθηκαν νÎες υποβολÎÏ‚ μετά τη συγχώνευση.
-branch.create_branch=ΔημιουÏγία κλάδου %s
+branch.create_branch=ΔημιουÏγία κλάδου %s
branch.create_from=`από το "%s"`
branch.create_success=Ο κλάδος "%s" δημιουÏγήθηκε.
branch.branch_already_exists=Ο κλάδος "%s" υπάÏχει ήδη σε αυτό το αποθετήÏιο.
@@ -2479,7 +2463,7 @@ branch.new_branch=ΔημιουÏγία νÎου κλάδου
branch.new_branch_from=`ΔημιουÏγία νÎου κλάδου από το "%s"`
branch.renamed=Ο κλάδος %s μετονομάστηκε σε %s.
-tag.create_tag=ΔημιουÏγία ετικÎτας %s
+tag.create_tag=ΔημιουÏγία ετικÎτας %s
tag.create_tag_operation=ΔημιουÏγία ετικÎτας
tag.confirm_create_tag=ΔημιουÏγία ετικÎτας
tag.create_tag_from=`ΔημιουÏγία νÎας ετικÎτας από το "%s"`
@@ -2642,7 +2626,6 @@ last_page=Τελευταίο
total=ΣÏνολο: %d
settings=Ρυθμίσεις ΔιαχειÏιστή
-dashboard.new_version_hint=Το Gitea %s είναι διαθÎσιμο, Ï„ÏŽÏα εκτελείτε το %s. ΑνατÏÎξτε στο blog για πεÏισσότεÏες λεπτομÎÏειες.
dashboard.statistic=ΠεÏίληψη
dashboard.system_status=Κατάσταση Συστήματος
dashboard.operation_name=Όνομα ΛειτουÏγίας
@@ -2820,12 +2803,10 @@ packages.size=ÎœÎγεθος
packages.published=ΔημοσιευμÎνα
defaulthooks=Î ÏοεπιλεγμÎνα Webhooks
-defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε Îνα διακομιστή όταν ενεÏγοποιοÏν οÏισμÎνα γεγονότα στο Gitea. Τα Webhooks που οÏίζονται εδώ είναι Ï€ÏοκαθοÏισμÎνα και θα αντιγÏαφοÏν σε όλα τα νÎα αποθετήÏια. Διαβάστε πεÏισσότεÏα στον οδηγό webhooks.
defaulthooks.add_webhook=Î Ïοσθήκη Î ÏοεπιλεγμÎνου Webhook
defaulthooks.update_webhook=ΕνημÎÏωση Î ÏοεπιλεγμÎνου Webhook
systemhooks=Webhooks Συστήματος
-systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε Îνα διακομιστή όταν ενεÏγοποιοÏνται οÏισμÎνα γεγονότα στο Gitea. Τα Webhooks που οÏίζονται εδώ θα ενεÏγοÏν σε όλα τα αποθετήÏια του συστήματος, γι 'αυτό παÏακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μποÏεί να Îχει. Διαβάστε πεÏισσότεÏα στον οδηγό webhooks.
systemhooks.add_webhook=Î Ïοσθήκη Webhook Συστήματος
systemhooks.update_webhook=ΕνημÎÏωση Webhook Συστήματος
@@ -2921,14 +2902,6 @@ auths.tips.oauth2.general=Ταυτοποίηση OAuth2
auths.tips.oauth2.general.tip=Κατά την εγγÏαφή μιας νÎας ταυτοποίησης OAuth2, το URL κλήσης/ανακατεÏθυνσης Ï€ÏÎπει να είναι:
auths.tip.oauth2_provider=ΠάÏοχος OAuth2
auths.tip.nextcloud=`ΚαταχωÏήστε Îνα νÎο καταναλωτή OAuth στην υπηÏεσία σας χÏησιμοποιώντας το παÏακάτω Î¼ÎµÎ½Î¿Ï "Settings -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=ΔημιουÏγήστε μια νÎα εφαÏμογή στο https://www.dropbox.com/developers/apps
-auths.tip.facebook=`ΚαταχωÏήστε μια νÎα εφαÏμογή στο https://developers.facebook.com/apps και Ï€ÏοσθÎστε το Ï€Ïοϊόν "Facebook Login"`
-auths.tip.github=ΚαταχωÏήστε μια νÎα εφαÏμογή OAuth στο https://github.com/settings/applications/new
-auths.tip.google_plus=Αποκτήστε τα διαπιστευτήÏια πελάτη OAuth2 από την κονσόλα API της Google στο https://console.developers.google.com/
-auths.tip.twitter=Πηγαίνετε στο https://dev.twitter.com/apps, δημιουÏγήστε μια εφαÏμογή και βεβαιωθείτε ότι η επιλογή “Allow this application to be used to Sign in with Twitter†είναι ενεÏγοποιημÎνη
-auths.tip.discord=ΚαταχωÏήστε μια νÎα εφαÏμογή στο https://discordapp.com/developers/applications/me
-auths.tip.gitea=ΚαταχωÏήστε μια νÎα εφαÏμογή OAuth2. ΜποÏείτε να βÏείτε τον οδηγό στο https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`ΔημιουÏγήστε μια νÎα εφαÏμογή στο https://oauth.yandex.com/client/new. ΕπιλÎξτε τα ακόλουθα δικαιώματα από την ενότητα "Yandex.Passport API": "Access to email address", "Access to user avatar" και "Access to username, first name and surname, gender"`
auths.tip.mastodon=Εισαγάγετε Îνα Ï€ÏοσαÏμομÎνο URL για την υπηÏεσία mastodon με την οποία θÎλετε να πιστοποιήσετε (ή να χÏησιμοποιήσετε την Ï€ÏοεπιλεγμÎνη)
auths.edit=ΕπεξεÏγασία Πηγής Ταυτοποίησης
auths.activated=Αυτή η Πηγή Ταυτοποίησης είναι ΕνεÏγοποιημÎνη
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 13f01d8ee3128..b22a83087888a 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -159,6 +159,7 @@ filter.public = Public
filter.private = Private
no_results_found = No results found.
+internal_error_skipped = Internal error occurred but is skipped: %s
[search]
search = Search...
@@ -177,6 +178,8 @@ code_search_by_git_grep = Current code search results are provided by "git grep"
package_kind = Search packages...
project_kind = Search projects...
branch_kind = Search branches...
+tag_kind = Search tags...
+tag_tooltip = Search for matching tags. Use '%' to match any sequence of numbers.
commit_kind = Search commits...
runner_kind = Search runners...
no_results = No matching results found.
@@ -218,22 +221,20 @@ string.desc = Z - A
[error]
occurred = An error occurred
-report_message = If you believe that this is a Gitea bug, please search for issues on GitHub or open a new issue if necessary.
-missing_csrf = Bad Request: no CSRF token present
-invalid_csrf = Bad Request: invalid CSRF token
+report_message = If you believe that this is a Gitea bug, please search for issues on GitHub or open a new issue if necessary.
not_found = The target couldn't be found.
network_error = Network error
[startpage]
app_desc = A painless, self-hosted Git service
install = Easy to install
-install_desc = Simply run the binary for your platform, ship it with Docker, or get it packaged.
+install_desc = Simply run the binary for your platform, ship it with Docker, or get it packaged.
platform = Cross-platform
-platform_desc = Gitea runs anywhere Go can compile for: Windows, macOS, Linux, ARM, etc. Choose the one you love!
+platform_desc = Gitea runs anywhere Go can compile for: Windows, macOS, Linux, ARM, etc. Choose the one you love!
lightweight = Lightweight
lightweight_desc = Gitea has low minimal requirements and can run on an inexpensive Raspberry Pi. Save your machine energy!
license = Open Source
-license_desc = Go get code.gitea.io/gitea! Join us by contributing to make this project even better. Don't be shy to be a contributor!
+license_desc = Go get %[2]s! Join us by contributing to make this project even better. Don't be shy to be a contributor!
[install]
install = Installation
@@ -456,7 +457,7 @@ authorize_title = Authorize "%s" to access your account?
authorization_failed = Authorization failed
authorization_failed_desc = The authorization failed because we detected an invalid request. Please contact the maintainer of the app you have tried to authorize.
sspi_auth_failed = SSPI authentication failed
-password_pwned = The password you chose is on a list of stolen passwords previously exposed in public data breaches. Please try again with a different password and consider changing this password elsewhere too.
+password_pwned = The password you chose is on a list of stolen passwords previously exposed in public data breaches. Please try again with a different password and consider changing this password elsewhere too.
password_pwned_err = Could not complete request to HaveIBeenPwned
last_admin = You cannot remove the last admin. There must be at least one admin.
signin_passkey = Sign in with a passkey
@@ -579,6 +580,8 @@ lang_select_error = Select a language from the list.
username_been_taken = The username is already taken.
username_change_not_local_user = Non-local users are not allowed to change their username.
+change_username_disabled = Changing username is disabled.
+change_full_name_disabled = Changing full name is disabled.
username_has_not_been_changed = Username has not been changed
repo_name_been_taken = The repository name is already used.
repository_force_private = Force Private is enabled: private repositories cannot be made public.
@@ -704,7 +707,8 @@ public_profile = Public Profile
biography_placeholder = Tell us a little bit about yourself! (You can use Markdown)
location_placeholder = Share your approximate location with others
profile_desc = Control how your profile is show to other users. Your primary email address will be used for notifications, password recovery and web-based Git operations.
-password_username_disabled = Non-local users are not allowed to change their username. Please contact your site administrator for more details.
+password_username_disabled = You are not allowed to change their username. Please contact your site administrator for more details.
+password_full_name_disabled = You are not allowed to change their full name. Please contact your site administrator for more details.
full_name = Full Name
website = Website
location = Location
@@ -954,7 +958,7 @@ passcode_invalid = The passcode is incorrect. Try again.
twofa_enrolled = Your account has been successfully enrolled. Store your single-use recovery key (%s) in a safe place, as it will not be shown again.
twofa_failed_get_secret = Failed to get secret.
-webauthn_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the WebAuthn Authenticator standard.
+webauthn_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the WebAuthn Authenticator standard.
webauthn_register_key = Add Security Key
webauthn_nickname = Nickname
webauthn_delete_key = Remove Security Key
@@ -1039,6 +1043,7 @@ issue_labels_helper = Select an issue label set.
license = License
license_helper = Select a license file.
license_helper_desc = A license governs what others can and can't do with your code. Not sure which one is right for your project? See Choose a license.
+multiple_licenses = Multiple Licenses
object_format = Object Format
object_format_helper = Object format of the repository. Cannot be changed later. SHA1 is most compatible.
readme = README
@@ -1176,6 +1181,11 @@ migrate.gogs.description = Migrate data from notabug.org or other Gogs instances
migrate.onedev.description = Migrate data from code.onedev.io or other OneDev instances.
migrate.codebase.description = Migrate data from codebasehq.com.
migrate.gitbucket.description = Migrate data from GitBucket instances.
+migrate.codecommit.description = Migrate data from AWS CodeCommit.
+migrate.codecommit.aws_access_key_id = AWS Access Key ID
+migrate.codecommit.aws_secret_access_key = AWS Secret Access Key
+migrate.codecommit.https_git_credentials_username = HTTPS Git Credentials Username
+migrate.codecommit.https_git_credentials_password = HTTPS Git Credentials Password
migrate.migrating_git = Migrating Git Data
migrate.migrating_topics = Migrating Topics
migrate.migrating_milestones = Migrating Milestones
@@ -1274,7 +1284,6 @@ commit_graph.color = Color
commit.contained_in = This commit is contained in:
commit.contained_in_default_branch = This commit is part of the default branch
commit.load_referencing_branches_and_tags = Load branches and tags referencing this commit
-commit.load_tags_failed = Load tags failed because of internal error
blame = Blame
download_file = Download file
normal_view = Normal View
@@ -1757,6 +1766,12 @@ issues.review.hide_resolved = Hide resolved
issues.review.resolve_conversation = Resolve conversation
issues.review.un_resolve_conversation = Unresolve conversation
issues.review.resolved_by = marked this conversation as resolved
+issues.review.commented = Comment
+issues.review.official = Approved
+issues.review.requested = Review pending
+issues.review.rejected = Changes requested
+issues.review.stale = Updated since approval
+issues.review.unofficial = Uncounted approval
issues.assignee.error = Not all assignees was added due to an unexpected error.
issues.reference_issue.body = Body
issues.content_history.deleted = deleted
@@ -1830,7 +1845,8 @@ pulls.is_empty = "The changes on this branch are already on the target branch. T
pulls.required_status_check_failed = Some required checks were not successful.
pulls.required_status_check_missing = Some required checks are missing.
pulls.required_status_check_administrator = As an administrator, you may still merge this pull request.
-pulls.blocked_by_approvals = "This pull request doesn't have enough approvals yet. %d of %d approvals granted."
+pulls.blocked_by_approvals = "This pull request doesn't have enough required approvals yet. %d of %d official approvals granted."
+pulls.blocked_by_approvals_whitelisted = "This pull request doesn't have enough required approvals yet. %d of %d approvals granted from users or teams on the allowlist."
pulls.blocked_by_rejection = "This pull request has changes requested by an official reviewer."
pulls.blocked_by_official_review_requests = "This pull request has official review requests."
pulls.blocked_by_outdated_branch = "This pull request is blocked because it's outdated."
@@ -1920,6 +1936,7 @@ pulls.delete.text = Do you really want to delete this pull request? (This will p
pulls.recently_pushed_new_branches = You pushed on branch %[1]s %[2]s
pull.deleted_branch = (deleted):%s
+pull.agit_documentation = Review documentation about AGit
comments.edit.already_changed = Unable to save changes to the comment. It appears the content has already been changed by another user. Please refresh the page and try editing again to avoid overwriting their changes
@@ -2330,7 +2347,7 @@ settings.event_pull_request_merge = Pull Request Merge
settings.event_package = Package
settings.event_package_desc = Package created or deleted in a repository.
settings.branch_filter = Branch filter
-settings.branch_filter_desc = Branch whitelist for push, branch creation and branch deletion events, specified as glob pattern. If empty or *
, events for all branches are reported. See github.com/gobwas/glob documentation for syntax. Examples: master
, {master,release*}
.
+settings.branch_filter_desc = Branch whitelist for push, branch creation and branch deletion events, specified as glob pattern. If empty or *
, events for all branches are reported. See %[2]s documentation for syntax. Examples: master
, {master,release*}
.
settings.authorization_header = Authorization Header
settings.authorization_header_desc = Will be included as authorization header for requests when present. Examples: %s.
settings.active = Active
@@ -2418,7 +2435,7 @@ settings.protect_status_check_matched = Matched
settings.protect_invalid_status_check_pattern = Invalid status check pattern: "%s".
settings.protect_no_valid_status_check_patterns = No valid status check patterns.
settings.protect_required_approvals = Required approvals:
-settings.protect_required_approvals_desc = Allow only to merge pull request with enough positive reviews.
+settings.protect_required_approvals_desc = Allow only to merge pull request with enough required approvals. Required approvals are either from users or teams who are on the allowlist or anyone with write access.
settings.protect_approvals_whitelist_enabled = Restrict approvals to allowlisted users or teams
settings.protect_approvals_whitelist_enabled_desc = Only reviews from allowlisted users or teams will count to the required approvals. Without approval allowlist, reviews from anyone with write access count to the required approvals.
settings.protect_approvals_whitelist_users = Allowlisted reviewers:
@@ -2430,12 +2447,12 @@ settings.ignore_stale_approvals_desc = Do not count approvals that were made on
settings.require_signed_commits = Require Signed Commits
settings.require_signed_commits_desc = Reject pushes to this branch if they are unsigned or unverifiable.
settings.protect_branch_name_pattern = Protected Branch Name Pattern
-settings.protect_branch_name_pattern_desc = "Protected branch name patterns. See the documentation for pattern syntax. Examples: main, release/**"
+settings.protect_branch_name_pattern_desc = "Protected branch name patterns. See the documentation for pattern syntax. Examples: main, release/**"
settings.protect_patterns = Patterns
settings.protect_protected_file_patterns = "Protected file patterns (separated using semicolon ';'):"
-settings.protect_protected_file_patterns_desc = "Protected files are not allowed to be changed directly even if user has rights to add, edit, or delete files in this branch. Multiple patterns can be separated using semicolon (';'). See github.com/gobwas/glob documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
+settings.protect_protected_file_patterns_desc = "Protected files are not allowed to be changed directly even if user has rights to add, edit, or delete files in this branch. Multiple patterns can be separated using semicolon (';'). See %[2]s documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
settings.protect_unprotected_file_patterns = "Unprotected file patterns (separated using semicolon ';'):"
-settings.protect_unprotected_file_patterns_desc = "Unprotected files that are allowed to be changed directly if user has write access, bypassing push restriction. Multiple patterns can be separated using semicolon (';'). See github.com/gobwas/glob documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
+settings.protect_unprotected_file_patterns_desc = "Unprotected files that are allowed to be changed directly if user has write access, bypassing push restriction. Multiple patterns can be separated using semicolon (';'). See %[2]s documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
settings.add_protected_branch = Enable protection
settings.delete_protected_branch = Disable protection
settings.update_protect_branch_success = Branch protection for rule "%s" has been updated.
@@ -2467,7 +2484,7 @@ settings.tags.protection.allowed.teams = Allowed teams
settings.tags.protection.allowed.noone = No One
settings.tags.protection.create = Protect Tag
settings.tags.protection.none = There are no protected tags.
-settings.tags.protection.pattern.description = You can use a single name or a glob pattern or regular expression to match multiple tags. Read more in the protected tags guide.
+settings.tags.protection.pattern.description = You can use a single name or a glob pattern or regular expression to match multiple tags. Read more in the protected tags guide.
settings.bot_token = Bot Token
settings.chat_id = Chat ID
settings.thread_id = Thread ID
@@ -2647,7 +2664,7 @@ branch.delete_desc = Deleting a branch is permanent. Although the deleted branch
branch.deletion_success = Branch "%s" has been deleted.
branch.deletion_failed = Failed to delete branch "%s".
branch.delete_branch_has_new_commits = Branch "%s" cannot be deleted because new commits have been added after merging.
-branch.create_branch = Create branch %s
+branch.create_branch = Create branch %s
branch.create_from = from "%s"
branch.create_success = Branch "%s" has been created.
branch.branch_already_exists = Branch "%s" already exists in this repository.
@@ -2673,7 +2690,7 @@ branch.new_branch = Create new branch
branch.new_branch_from = Create new branch from "%s"
branch.renamed = Branch %s was renamed to %s.
-tag.create_tag = Create tag %s
+tag.create_tag = Create tag %s
tag.create_tag_operation = Create tag
tag.confirm_create_tag = Create tag
tag.create_tag_from = Create new tag from "%s"
@@ -2849,7 +2866,7 @@ last_page = Last
total = Total: %d
settings = Admin Settings
-dashboard.new_version_hint = Gitea %s is now available, you are running %s. Check the blog for more details.
+dashboard.new_version_hint = Gitea %s is now available, you are running %s. Check the blog for more details.
dashboard.statistic = Summary
dashboard.maintenance_operations = Maintenance Operations
dashboard.system_status = System Status
@@ -2934,6 +2951,7 @@ dashboard.start_schedule_tasks = Start actions schedule tasks
dashboard.sync_branch.started = Branches Sync started
dashboard.sync_tag.started = Tags Sync started
dashboard.rebuild_issue_indexer = Rebuild issue indexer
+dashboard.sync_repo_licenses = Sync repo licenses
users.user_manage_panel = User Account Management
users.new_account = Create User Account
@@ -3041,12 +3059,12 @@ packages.size = Size
packages.published = Published
defaulthooks = Default Webhooks
-defaulthooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the webhooks guide.
+defaulthooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the webhooks guide.
defaulthooks.add_webhook = Add Default Webhook
defaulthooks.update_webhook = Update Default Webhook
systemhooks = System Webhooks
-systemhooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here will act on all repositories on the system, so please consider any performance implications this may have. Read more in the webhooks guide.
+systemhooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here will act on all repositories on the system, so please consider any performance implications this may have. Read more in the webhooks guide.
systemhooks.add_webhook = Add System Webhook
systemhooks.update_webhook = Update System Webhook
@@ -3141,18 +3159,18 @@ auths.tips = Tips
auths.tips.oauth2.general = OAuth2 Authentication
auths.tips.oauth2.general.tip = When registering a new OAuth2 authentication, the callback/redirect URL should be:
auths.tip.oauth2_provider = OAuth2 Provider
-auths.tip.bitbucket = Register a new OAuth consumer on https://bitbucket.org/account/user/{your-username}/oauth-consumers/new and add the permission 'Account' - 'Read'
+auths.tip.bitbucket = Register a new OAuth consumer on %s and add the permission 'Account' - 'Read'
auths.tip.nextcloud = Register a new OAuth consumer on your instance using the following menu "Settings -> Security -> OAuth 2.0 client"
-auths.tip.dropbox = Create a new application at https://www.dropbox.com/developers/apps
-auths.tip.facebook = Register a new application at https://developers.facebook.com/apps and add the product "Facebook Login"
-auths.tip.github = Register a new OAuth application on https://github.com/settings/applications/new
-auths.tip.gitlab_new = Register a new application on https://gitlab.com/-/profile/applications
-auths.tip.google_plus = Obtain OAuth2 client credentials from the Google API console at https://console.developers.google.com/
+auths.tip.dropbox = Create a new application at %s
+auths.tip.facebook = Register a new application at %s and add the product "Facebook Login"
+auths.tip.github = Register a new OAuth application on %s
+auths.tip.gitlab_new = Register a new application on %s
+auths.tip.google_plus = Obtain OAuth2 client credentials from the Google API console at %s
auths.tip.openid_connect = Use the OpenID Connect Discovery URL "https://{server}/.well-known/openid-configuration" to specify the endpoints
-auths.tip.twitter = Go to https://dev.twitter.com/apps, create an application and ensure that the “Allow this application to be used to Sign in with Twitter†option is enabled
-auths.tip.discord = Register a new application on https://discordapp.com/developers/applications/me
-auths.tip.gitea = Register a new OAuth2 application. Guide can be found at https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex = Create a new application at https://oauth.yandex.com/client/new. Select following permissions from the "Yandex.Passport API" section: "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"
+auths.tip.twitter = Go to %s, create an application and ensure that the “Allow this application to be used to Sign in with Twitter†option is enabled
+auths.tip.discord = Register a new application on %s
+auths.tip.gitea = Register a new OAuth2 application. Guide can be found at %s
+auths.tip.yandex = Create a new application at %s. Select following permissions from the "Yandex.Passport API" section: "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"
auths.tip.mastodon = Input a custom instance URL for the mastodon instance you want to authenticate with (or use the default one)
auths.edit = Edit Authentication Source
auths.activated = This Authentication Source is Activated
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index 5f142e99b3733..423f74f8b2064 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -182,22 +182,16 @@ string.desc=Z - A
[error]
occurred=Ha ocurrido un error
-report_message=Si crees que este es un error de Gitea, por favor busca incidencias en GitHub o abre una nueva incidencia si es necesario.
-missing_csrf=Solicitud incorrecta: sin token CSRF
-invalid_csrf=Solicitud incorrecta: el token CSRF no es válido
not_found=El objetivo no pudo ser encontrado.
network_error=Error de red
[startpage]
app_desc=Un servicio de Git autoalojado y sin complicaciones
install=Fácil de instalar
-install_desc=Simplemente ejecuta el binario para tu plataforma, lánzalo con Dockero consÃguelo empaquetado.
platform=Multiplataforma
-platform_desc=Gitea funciona en cualquier platforma Go puede compilarlo en: Windows, macOS, Linux, ARM, etc. ¡Elige tu favorita!
lightweight=Ligero
lightweight_desc=Gitea tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energÃa!
license=Código abierto
-license_desc=¡Está todo en < code.gitea.io/gitea! Únase contribuyendo a hacer este proyecto todavÃa mejor. ¡No sea tÃmido y colabore!
[install]
install=Instalación
@@ -410,7 +404,6 @@ authorize_title=¿Autorizar a "%s" a acceder a su cuenta?
authorization_failed=Autorización fallida
authorization_failed_desc=La autorización ha fallado porque hemos detectado una solicitud no válida. Por favor, póngase en contacto con el responsable de la aplicación que ha intentado autorizar.
sspi_auth_failed=Fallo en la autenticación SSPI
-password_pwned=La contraseña que eligió está en una lista de contraseñas robadas previamente expuestas en violaciones de datos públicos. Por favor, inténtelo de nuevo con una contraseña diferente y considere cambiar esta contraseña también en otros lugares.
password_pwned_err=No se pudo completar la solicitud a HaveIBeenPwned
[mail]
@@ -624,7 +617,6 @@ public_profile=Perfil público
biography_placeholder=¡Cuéntanos un poco sobre ti mismo! (Puedes usar Markdown)
location_placeholder=Comparte tu ubicación aproximada con otros
profile_desc=Controla cómo se muestra su perfil a otros usuarios. Tu dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y operaciones de Git basadas en la web.
-password_username_disabled=Usuarios no locales no tienen permitido cambiar su nombre de usuario. Por favor, contacta con el administrador del sistema para más detalles.
full_name=Nombre completo
website=Página web
location=Localización
@@ -861,7 +853,6 @@ then_enter_passcode=E introduzca el código de acceso mostrado en la aplicación
passcode_invalid=El código de acceso es incorrecto. Vuelva a intentarlo.
twofa_failed_get_secret=No se pudo obtener el secreto.
-webauthn_desc=Las claves de seguridad son dispositivos hardware que contienen claves criptográficas. Pueden ser usados para la autenticación de doble factor. Las claves de seguridad deben soportar el estándar WebAuthn Authenticator.
webauthn_register_key=Añadir clave de seguridad
webauthn_nickname=Apodo
webauthn_delete_key=Eliminar clave de seguridad
@@ -1599,7 +1590,6 @@ issues.dependency.add_error_dep_not_same_repo=Ambas incidencias deben estar en e
issues.review.self.approval=No puede aprobar su propio pull request.
issues.review.self.rejection=No puede sugerir cambios en su propio pull request.
issues.review.approve=aprobado estos cambios %s
-issues.review.comment=revisado %s
issues.review.dismissed=descartó la revisión de %s %s
issues.review.dismissed_label=Descartado
issues.review.left_comment=dejó un comentario
@@ -1624,6 +1614,7 @@ issues.review.hide_resolved=Ocultar resueltos
issues.review.resolve_conversation=Resolver conversación
issues.review.un_resolve_conversation=Marcar conversación sin resolver
issues.review.resolved_by=ha marcado esta conversación como resuelta
+issues.review.commented=Comentario
issues.assignee.error=No todos los asignados fueron añadidos debido a un error inesperado.
issues.reference_issue.body=Cuerpo
issues.content_history.deleted=borrado
@@ -1693,7 +1684,6 @@ pulls.is_empty=Los cambios en esta rama ya están en la rama de destino. Esto se
pulls.required_status_check_failed=Algunos controles requeridos no han tenido éxito.
pulls.required_status_check_missing=Faltan algunos controles necesarios.
pulls.required_status_check_administrator=Como administrador, aún puede fusionar este Pull Request.
-pulls.blocked_by_approvals=Esta pull request aún no tiene suficientes aprobaciones. %d de %d aprobaciones concedidas.
pulls.blocked_by_rejection=Este pull request tiene cambios solicitados por un revisor oficial.
pulls.blocked_by_official_review_requests=Esta pull request tiene solicitudes de revisión oficiales.
pulls.blocked_by_outdated_branch=Esta pull request está bloqueada porque está desactualizada.
@@ -2161,7 +2151,6 @@ settings.event_pull_request_merge=Fusionar Pull Request
settings.event_package=Paquete
settings.event_package_desc=Paquete creado o eliminado en un repositorio.
settings.branch_filter=Filtro de rama
-settings.branch_filter_desc=Lista blanca de rama para eventos de push, creación de rama y eliminación de rama, especificados como patrón globo. Si está vacÃo o *
, se reportan eventos para todas las ramas. Ver github.com/gobwas/glob documentación para la sintaxis. Ejemplos: master
, {master,release*}
.
settings.authorization_header=Encabezado de autorización
settings.authorization_header_desc=Se incluirá como encabezado de autorización para solicitudes cuando esté presente. Ejemplo: %s.
settings.active=Activo
@@ -2228,7 +2217,6 @@ settings.protect_status_check_matched=Coincide
settings.protect_invalid_status_check_pattern=Patrón de verificación de estado no válido: "%s".
settings.protect_no_valid_status_check_patterns=No hay patrones de verificación de estado.
settings.protect_required_approvals=Aprobaciones requeridas:
-settings.protect_required_approvals_desc=Permite fusionar sólo los pull request con suficientes comentarios positivos.
settings.dismiss_stale_approvals=Descartar aprobaciones obsoletas
settings.dismiss_stale_approvals_desc=Cuando los nuevos commits que cambien el contenido de la pull request sean empujados a la rama, se descartarán las aprobaciones antiguas.
settings.require_signed_commits=Requiere commits firmados
@@ -2236,9 +2224,7 @@ settings.require_signed_commits_desc=Rechazar push en esta rama si los commits n
settings.protect_branch_name_pattern=Patrón de nombre de la rama protegida
settings.protect_patterns=Patrones
settings.protect_protected_file_patterns=Patrones de archivos protegidos (separados con punto y coma ';'):
-settings.protect_protected_file_patterns_desc=No está permitido cambiar archivos directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma (';'). Refvisa la documentación de github.com/gobwas/glob para la sintaxis de patrones. Ejemplos: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Patrones de archivos sin protección (separados con punto y coma ';'):
-settings.protect_unprotected_file_patterns_desc=Los archivos sin protección se pueden cambiar directamente si el usuario tiene acceso de escritura, evitando la restricción push. Múltiples patrones pueden separarse usando punto y coma (';'). Vea la documentación de github.com/gobwas/glob para la sintaxis de patrones. Ejemplos: .drone.yml
, /docs/**/*.txt
.
settings.update_protect_branch_success=Se ha actualizado la protección de la rama para la regla "%s".
settings.remove_protected_branch_success=Se ha eliminado la protección de la rama para la regla "%s".
settings.remove_protected_branch_failed=Error al eliminar la regla de protección de rama "%s".
@@ -2266,7 +2252,6 @@ settings.tags.protection.allowed.teams=Equipos permitidos
settings.tags.protection.allowed.noone=Ningún
settings.tags.protection.create=Proteger Etiqueta
settings.tags.protection.none=No hay etiquetas protegidas.
-settings.tags.protection.pattern.description=Puede usar un solo nombre, un patrón de glob o expresión regular para que coincida con varias etiquetas. Lea más en la guÃa de etiquetas protegidas.
settings.bot_token=Token del Bot
settings.chat_id=ID Chat
settings.thread_id=ID del hilo
@@ -2433,7 +2418,7 @@ branch.delete_desc=Eliminar una rama es permanente. Aunque la rama eliminada pue
branch.deletion_success=La rama "%s" ha sido eliminada.
branch.deletion_failed=Error al eliminar la rama "%s".
branch.delete_branch_has_new_commits=La rama "%s" no se puede eliminar porque se han añadido nuevos commits después de la fusión.
-branch.create_branch=Crear rama %s
+branch.create_branch=Crear rama %s
branch.create_from=`de "%s"`
branch.create_success=La rama "%s" ha sido creada.
branch.branch_already_exists=La rama "%s" ya existe en este repositorio.
@@ -2459,7 +2444,7 @@ branch.new_branch=Crear nueva rama
branch.new_branch_from=`Crear nueva rama de "%s"`
branch.renamed=La rama %s fue renombrada a %s.
-tag.create_tag=Crear etiqueta %s
+tag.create_tag=Crear etiqueta %s
tag.create_tag_operation=Crear etiqueta
tag.confirm_create_tag=Crear etiqueta
tag.create_tag_from=`Crear nueva etiqueta de "%s"`
@@ -2622,7 +2607,6 @@ last_page=Última
total=Total: %d
settings=Configuración de Admin
-dashboard.new_version_hint=Gitea %s ya está disponible, estás ejecutando %s. Revisa el blog para más detalles.
dashboard.statistic=Resumen
dashboard.system_status=Estado del sistema
dashboard.operation_name=Nombre de la operación
@@ -2798,12 +2782,10 @@ packages.size=Tamaño
packages.published=Publicado
defaulthooks=Webhooks por defecto
-defaulthooks.desc=Los webhooks automáticamente hacen peticiones HTTP POST a un servidor cuando ciertos eventos de Gitea se activan. Los webhooks definidos aquà son predeterminados y serán copiados en todos los repositorios nuevos. Leer más en la guÃa webhooks.
defaulthooks.add_webhook=Añadir Webhook por defecto
defaulthooks.update_webhook=Actualizar Webhook por defecto
systemhooks=Webhooks del sistema
-systemhooks.desc=Los webhooks automáticamente hacen peticiones HTTP POST a un servidor cuando ciertos eventos de Gitea se activan. Los webhooks definidos aquà actuarán en todos los repositorios del sistema, asà que por favor considere las implicaciones de rendimiento que esto pueda tener. Lea más en la guÃa de webhooks.
systemhooks.add_webhook=Añadir Webhook del Sistema
systemhooks.update_webhook=Actualizar Webhook del Sistema
@@ -2899,14 +2881,6 @@ auths.tips.oauth2.general=Autenticación OAuth2
auths.tips.oauth2.general.tip=Al registrar una nueva autenticación de OAuth2, la URL de devolución de llamada/redirección debe ser:
auths.tip.oauth2_provider=Proveedor OAuth2
auths.tip.nextcloud=`Registre un nuevo consumidor OAuth en su instancia usando el siguiente menú "Configuración-> Seguridad-> cliente OAuth 2.0"`
-auths.tip.dropbox=Crear nueva aplicación en https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Registre una nueva aplicación en https://developers.facebook.com/apps y agregue el producto "Facebook Login"`
-auths.tip.github=Registre una nueva aplicación OAuth en https://github.com/settings/applications/new
-auths.tip.google_plus=Obtener credenciales de cliente OAuth2 desde la consola API de Google en https://console.developers.google.com/
-auths.tip.twitter=Ir a https://dev.twitter.com/apps, crear una aplicación y asegurarse de que la opción "Permitir que esta aplicación sea usada para iniciar sesión con Twitter" está activada
-auths.tip.discord=Registrar una nueva aplicación en https://discordapp.com/developers/applications/me
-auths.tip.gitea=Registrar una nueva aplicación OAuth2. Puede encontrar la guÃa en https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Crear una nueva aplicación en https://oauth.yandex.com/client/new. Seleccione los siguientes permisos del "Yandex.Passport API": "Access to email address", "Access to user avatar" y "Access to username, first name and surname, gender"`
auths.tip.mastodon=Introduzca una URL de instancia personalizada para la instancia mastodon con la que desea autenticarse (o utilice la predeterminada)
auths.edit=Editar origen de autenticación
auths.activated=Este origen de autenticación ha sido activado
diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini
index 2d159333a402e..33d72ee7eb7fd 100644
--- a/options/locale/locale_fa-IR.ini
+++ b/options/locale/locale_fa-IR.ini
@@ -118,17 +118,14 @@ filter.private=خصوصی
[filter]
[error]
-missing_csrf=درخواست بد: بلیط CSRF ندارد
[startpage]
app_desc=یک سرویس گیت بی‌درد سر Ùˆ راØت
install=راه‌اندازی ساده
platform=مستقل از سکو
-platform_desc=گیت همه جا اجرا می‌شود بریم! می‌توانید Windows, macOS, Linux, ARM و ... هر کدام را دوست داشتید انتخاب کنید!
lightweight=ابزارک سبک
lightweight_desc=گیتی با Øداقل منابع میتوانید برای روی دستگاه Raspberry Pi اجرا شود Ùˆ مصر٠انرژی شما را کاهش دهد!
license=متن باز
-license_desc=برو به code.gitea.io/gitea! به ملØÙ‚ شوید با مشارکت کردن برای این Ú©Ù‡ این پروژه بهتر شود. برای مشارکت کردن خجالت نکشید!
[install]
install=نصب و راه اندازی
@@ -494,7 +491,6 @@ account_link=Øساب‌های مرتبط
organization=سازمان ها
public_profile=نمایه عمومی
-password_username_disabled=Øساب‌های غیر Ù…ØÙ„ÛŒ مجاز به تغییر نام کاربری نیستند. لطÙا با مدیر سایت در ارتباط باشید.
full_name=نام کامل
website=تارنما
location=موقعیت مکانی
@@ -1237,7 +1233,6 @@ issues.dependency.add_error_dep_not_same_repo=هر دو موضوع باید از
issues.review.self.approval=شما نمی‌توانید تقاضای واکشی خود را تایید کنید.
issues.review.self.rejection=شما نمی‌توانید تقاضا تغییرات تقاضای واکشی خود را تغییر دهید.
issues.review.approve=این تغییرات را تایید شدند %s
-issues.review.comment=بازبینی شدند %s
issues.review.dismissed=بررسی %s %s را رد شده
issues.review.dismissed_label=رها شده
issues.review.left_comment=یک نظر ثبت کرد
@@ -1258,6 +1253,7 @@ issues.review.hide_resolved=مخÙÛŒ کردن ØÙ„ شده ها
issues.review.resolve_conversation=مکالمه را بعنوان ØÙ„ شده علامت گذاری کردن
issues.review.un_resolve_conversation=مکالمه را بعنوان ØÙ„ نشده علامت گذاری کردن
issues.review.resolved_by=علامت گذاری این مکالمه بعنوان ØÙ„ شده
+issues.review.commented=دیدگاه
issues.assignee.error=به دلیل خطای غیرمنتظره همه تکالی٠اضاÙÙ‡ نشد.
issues.reference_issue.body=Body
issues.content_history.deleted=Øذ٠شده
@@ -1675,7 +1671,6 @@ settings.event_pull_request_review_desc=درخواست pull تایید شده،
settings.event_pull_request_sync=درخواست pull همگام شده
settings.event_pull_request_sync_desc=درخواست کشش همگام شده است.
settings.branch_filter=صاÙÛŒ شاخه
-settings.branch_filter_desc=Ùهرست سÙید شاخه برای رویدادهای pushØŒ ایجاد شاخه Ùˆ Øذ٠شاخه، Ú©Ù‡ به عنوان الگوی glob مشخص شده است. اگر خالی یا *
باشد، رویدادها برای همه شاخه ها گزارش می شوند. برای syntax به اسناد github.com/gobwas/glob مراجعه کنید. مثال‌ها: master
، {master,release*}
.
settings.active=Ùعال
settings.active_helper=اطلاعات درباره کشیده شدن ماشه رویدادها به این نشانی هوک تØت وب ارسال خواهد شد.
settings.add_hook_success=یک هوک تØت وب جدید اÙزوده شده است.
@@ -1713,7 +1708,6 @@ settings.protect_enable_push_desc=هرکسی که دسترسی به نوشتن
settings.protect_check_status_contexts=Ùعال کردن Øالات بررسی
settings.protect_check_status_contexts_list=آخرین بررسی Øالات این مخزن در Ù‡Ùته گذشته اتÙاق اÙتاده است
settings.protect_required_approvals=نیازمند تاییدیه:
-settings.protect_required_approvals_desc=Ùقط مجاز به ادغام تقاضای واکشی با بررسی های مثبت کاÙÛŒ Ù…ÛŒ شوند.
settings.dismiss_stale_approvals=تاییدیه های قدیمی را رد کنید
settings.dismiss_stale_approvals_desc=وقتی commit های جدیدی Ú©Ù‡ Ù…Øتوای درخواست pull را تغییر می‌دهند به شاخه ارسال می‌شوند، تأییدیه‌های قدیمی رد می‌شوند.
settings.require_signed_commits=نیاز به commit های امضا شده
@@ -1879,7 +1873,7 @@ release.add_tag=Ùقط تگ ایجاد کنید
branch.name=نام شاخه
branch.delete_head=ØØ°Ù
branch.delete_html=Øذ٠شاخه
-branch.create_branch=ساختن شاخه %s
+branch.create_branch=ساختن شاخه %s
branch.deleted_by=Øذ٠شده توسط %s
branch.included_desc=این شاخه بخشی از شاخه پیش Ùرض است
branch.included=مشمول شده
@@ -1890,7 +1884,7 @@ branch.create_branch_operation=ایجاد شاخه
branch.new_branch=شاخه جدید ایجاد کنید
branch.renamed=شاخه %s قبلا به %s تغییر کرده است.
-tag.create_tag=تگ %s ایجاد کنید
+tag.create_tag=تگ %s ایجاد کنید
topic.manage_topics=مدیریت موضوعات
@@ -2259,13 +2253,6 @@ auths.tips=ﻧﮑﺎﺕ
auths.tips.oauth2.general=اØراز هویت OAuth2
auths.tip.oauth2_provider=تامین کننده OAuth2
auths.tip.nextcloud=با استÙاده از منوی زیر "تنظیمات -> امنیت -> مشتری OAuth 2.0" مصر٠کننده OAuth جدیدی را در نمونه خود ثبت کنید
-auths.tip.dropbox=یک برنامه جدید در https://www.dropbox.com/developers/apps بسازید
-auths.tip.facebook=`یک برنامه جدید در https://developers.facebook.com/apps بسازید برای ورود از طریق Ùیس بوک قسمت Ù…Øصولات "Facebook Login"`
-auths.tip.github=یک برنامه OAuth جدید در https://github.com/settings/applications/new ثبت کنید
-auths.tip.google_plus=اطلاعات مربوط به مشتری OAuth2 را از کلاینت API Google در https://console.developers.google.com/
-auths.tip.twitter=به https://dev.twitter.com/apps بروید ØŒ برنامه ای ایجاد کنید Ùˆ اطمینان Øاصل کنید Ú©Ù‡ گزینه "اجازه استÙاده از این برنامه برای ورود به سیستم با Twitter" را Ùعال کنید
-auths.tip.discord=یک برنامه جدید را در https://discordapp.com/developers/applications/me ثبت کنید
-auths.tip.yandex=`یک برنامه جدید در https://oauth.yandex.com/client/new ایجاد کنید. مجوزهای زیر را از بخش "Yandex.Passport API" انتخاب کنید: "دسترسی به آدرس ایمیل"، "دسترسی به آواتار کاربر" و "دسترسی به نام کاربری، نام و نام خانوادگی، جنسیت"`
auths.tip.mastodon=یک URL نمونه سÙارشی برای نمونه ماستودون Ú©Ù‡ Ù…ÛŒ خواهید با آن اØراز هویت کنید وارد کنید (یا از یک پیش Ùرض استÙاده کنید)
auths.edit=ویرایش منبع اØراز هویت
auths.activated=این منبع اØراز هویت Ùعال شده است
diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini
index 4b6b708d6e41f..d16efb8834d32 100644
--- a/options/locale/locale_fi-FI.ini
+++ b/options/locale/locale_fi-FI.ini
@@ -133,8 +133,6 @@ filter.private=Yksityinen
[error]
occurred=Virhe tapahtui
-missing_csrf=Virheellinen pyyntö: CSRF-tunnusta ei ole olemassa
-invalid_csrf=Virheellinen pyyntö: Virheellinen CSRF-tunniste
not_found=Kohdetta ei löytynyt.
network_error=Verkkovirhe
@@ -142,11 +140,9 @@ network_error=Verkkovirhe
app_desc=Kivuton, itsehostattu Git-palvelu
install=Helppo asentaa
platform=Alustariippumaton
-platform_desc=Gitea käy missä tahansa alustassa, johon Go kykenee kääntämään. Windows, macOS, Linux, ARM, jne. Valitse omasi!
lightweight=Kevyt
lightweight_desc=Gitealla on vähäiset vähimmäisvaatimukset, joten se toimii jopa halvassa Raspberry Pi:ssä. Säästä koneesi energiaa!
license=Avoin lähdekoodi
-license_desc=Mene osoitteeseen code.gitea.io/gitea! Liity mukaan tekemään projektista entistäkin parempi. Älä ujostele avustamista!
[install]
install=Asennus
@@ -455,7 +451,6 @@ account_link=Linkitetyt tilit
organization=Organisaatiot
public_profile=Julkinen profiili
-password_username_disabled=Ei-paikalliset käyttäjät eivät voi muuttaa käyttäjätunnustaan. Ole hyvä ja ota yhteyttä sivuston ylläpitäjään saadaksesi lisätietoa.
full_name=Kokonimi
website=Nettisivut
location=Sijainti
@@ -952,10 +947,12 @@ issues.dependency.remove_info=Poistä tämä riippuvuus
issues.review.self.approval=Et voi hyväksyä omia vetopyyntöjä.
issues.review.self.rejection=Et voi pyytää muutoksia omaan vetopyyntöön.
issues.review.approve=hyväksyi nämä muutokset %s
+issues.review.comment=Kommentoi
issues.review.left_comment=jätti kommentin
issues.review.pending=Odottaa
issues.review.show_resolved=Näytä ratkaisu
issues.review.hide_resolved=Piilota ratkaisu
+issues.review.commented=Kommentoi
issues.reference_issue.body=Kuvaus
issues.content_history.deleted=poistettu
issues.content_history.edited=muokattu
@@ -1282,7 +1279,7 @@ release.downloads=Lataukset
branch.name=Haaran nimi
branch.delete_head=Poista
-branch.create_branch=Luo haara %s
+branch.create_branch=Luo haara %s
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index 6628b7d4556ac..f58ce74564abe 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -31,6 +31,7 @@ username=Nom d'utilisateur
email=Courriel
password=Mot de passe
access_token=Jeton d’accès
+re_type=Confirmez le mot de passe
captcha=CAPTCHA
twofa=Authentification à deux facteurs
twofa_scratch=Code de secours pour l'authentification à deux facteurs
@@ -158,6 +159,7 @@ filter.public=Public
filter.private=Privé
no_results_found=Aucun résultat trouvé.
+internal_error_skipped=Une erreur interne est survenue, mais ignorée : %s
[search]
search=Rechercher…
@@ -176,6 +178,8 @@ code_search_by_git_grep=Les résultats de recherche de code actuels sont fournis
package_kind=Chercher des paquets…
project_kind=Chercher des projets…
branch_kind=Chercher des branches…
+tag_kind=Chercher des étiquettes…
+tag_tooltip=Cherchez des étiquettes correspondantes. Utilisez « % » pour rechercher n’importe quelle suite de nombres.
commit_kind=Chercher des révisions…
runner_kind=Chercher des exécuteurs…
no_results=Aucun résultat correspondant trouvé.
@@ -217,22 +221,20 @@ string.desc=Z - A
[error]
occurred=Une erreur s’est produite
-report_message=Si vous pensez qu'il s'agit d'un bug Gitea, veuillez consulter notre board GitHub ou ouvrir un nouveau ticket si nécessaire.
-missing_csrf=Requête incorrecte: aucun jeton CSRF présent
-invalid_csrf=Requête incorrecte : jeton CSRF invalide
+report_message=Si vous pensez qu’il s’agit d’un bug Gitea, veuillez consulter notre board GitHub ou ouvrir un nouveau ticket si nécessaire.
not_found=La cible n'a pu être trouvée.
network_error=Erreur réseau
[startpage]
app_desc=Un service Git auto-hébergé sans prise de tête
install=Facile à installer
-install_desc=Il suffit de lancer l’exécutable adapté à votre plateforme, le déployer avec Docker ou de l’installer depuis un gestionnaire de paquet.
+install_desc=Il suffit de lancer l’exécutable adapté à votre plateforme, le déployer avec Docker ou de l’installer depuis un gestionnaire de paquet.
platform=Multi-plateforme
-platform_desc=Gitea tourne partout où Go peut être compilé : Windows, macOS, Linux, ARM, etc. Choisissez votre préféré !
+platform_desc=Gitea tourne partout où Go peut être compilé : Windows, macOS, Linux, ARM, etc. Choisissez votre préféré !
lightweight=Léger
lightweight_desc=Gitea utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
license=Open Source
-license_desc=Toutes les sources sont sur GitHub ! Rejoignez-nous et contribuez à rendre ce projet encore meilleur!
+license_desc=Venez récupérer %[2]s ! Rejoignez-nous en contribuant à rendre ce projet encore meilleur !
[install]
install=Installation
@@ -316,6 +318,7 @@ admin_setting_desc=La création d'un compte administrateur est facultative. Le p
admin_title=Paramètres de compte administrateur
admin_name=Nom d’utilisateur administrateur
admin_password=Mot de passe
+confirm_password=Confirmez le mot de passe
admin_email=Courriel
install_btn_confirm=Installer Gitea
test_git_failed=Le test de la commande "git" a échoué : %v
@@ -454,7 +457,7 @@ authorize_title=Autoriser "%s" à accéder à votre compte ?
authorization_failed=L’autorisation a échoué
authorization_failed_desc=L'autorisation a échoué car nous avons détecté une demande incorrecte. Veuillez contacter le responsable de l'application que vous avez essayé d'autoriser.
sspi_auth_failed=Échec de l'authentification SSPI
-password_pwned=Le mot de passe que vous avez choisi se trouve sur la liste des mots de passe ayant fuité sur internet. Veuillez réessayer avec un mot de passe différent et considérer remplacer ce mot de passe si vous l'utilisez ailleurs.
+password_pwned=Le mot de passe que vous avez choisi fait partit des mots de passe ayant fuité sur internet. Veuillez réessayer avec un mot de passe différent et considérez remplacer ce mot de passe si vous l’utilisez ailleurs.
password_pwned_err=Impossible d'envoyer la demande à HaveIBeenPwned
last_admin=Vous ne pouvez pas supprimer ce compte car au moins un administrateur est requis.
signin_passkey=Se connecter avec une clé d’identification (passkey)
@@ -538,6 +541,7 @@ UserName=Nom d'utilisateur
RepoName=Nom du dépôt
Email=Courriel
Password=Mot de passe
+Retype=Confirmez le mot de passe
SSHTitle=Nom de la clé SSH
HttpsUrl=URL HTTPS
PayloadUrl=URL des données utiles
@@ -576,6 +580,8 @@ lang_select_error=Sélectionnez une langue dans la liste.
username_been_taken=Le nom d'utilisateur est déjà pris.
username_change_not_local_user=Les utilisateurs non-locaux n'ont pas le droit de modifier leur nom d'utilisateur.
+change_username_disabled=Le changement de nom d’utilisateur est désactivé.
+change_full_name_disabled=Le changement de nom complet est désactivé.
username_has_not_been_changed=Le nom d'utilisateur n'a pas été modifié
repo_name_been_taken=Ce nom de dépôt est déjà utilisé.
repository_force_private=Force Private est activé : les dépôts privés ne peuvent pas être rendus publics.
@@ -625,6 +631,7 @@ org_still_own_repo=Cette organisation possède encore un ou plusieurs dépôts.
org_still_own_packages=Cette organisation possède encore un ou plusieurs paquets. Vous devez d’abord les supprimer.
target_branch_not_exist=La branche cible n'existe pas.
+target_ref_not_exist=La réf cible %s n’existe pas
admin_cannot_delete_self=Vous ne pouvez pas vous supprimer vous-même lorsque vous êtes admin. Veuillez d’abord supprimer vos privilèges d’administrateur.
@@ -690,15 +697,16 @@ applications=Applications
orgs=Gérer les organisations
repos=Dépôts
delete=Supprimer le compte
+twofa=Authentification à deux facteurs (TOTP)
account_link=Comptes liés
organization=Organisations
uid=UID
+webauthn=Authentification à deux facteurs (Clés de sécurité)
public_profile=Profil public
biography_placeholder=Parlez-nous un peu de vous ! (Vous pouvez utiliser Markdown)
location_placeholder=Partagez votre position approximative avec d'autres personnes
profile_desc=Contrôlez comment votre profil est affiché aux autres utilisateurs. Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et les opérations Git basées sur le Web.
-password_username_disabled=Les utilisateurs externes ne sont pas autorisés à modifier leur nom d'utilisateur. Veuillez contacter l'administrateur de votre site pour plus de détails.
full_name=Nom complet
website=Site Web
location=Localisation
@@ -790,6 +798,7 @@ add_email_success=La nouvelle adresse e-mail a été ajoutée.
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
keep_email_private=Cacher l'adresse e-mail
+keep_email_private_popup=Ceci masquera votre adresse e-mail de votre profil, de vos demandes d’ajout et des fichiers modifiés depuis l'interface Web. Les révisions déjà soumises ne seront pas modifiés. Utilisez %s dans les révisions pour les associer à votre compte.
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
manage_ssh_keys=Gérer les clés SSH
@@ -928,21 +937,26 @@ revoke_oauth2_grant=Révoquer l'accès
revoke_oauth2_grant_description=La révocation de l'accès à cette application tierce l'empêchera d'accéder à vos données. Vous êtes sûr ?
revoke_oauth2_grant_success=Accès révoqué avec succès.
+twofa_desc=Pour protéger votre compte contre les vols de mot de passes, vous pouvez utiliser un smartphone ou autres appareils pour recevoir un code temporaire à usage unique (TOTP).
twofa_recovery_tip=Si vous perdez votre appareil, vous pourrez utiliser une clé de récupération à usage unique pour obtenir l’accès à votre compte.
twofa_is_enrolled=Votre compte est inscrit à l'authentification à deux facteurs.
twofa_not_enrolled=Votre compte n'est pas inscrit à l'authentification à deux facteurs.
twofa_disable=Désactiver l'authentification à deux facteurs
+twofa_scratch_token_regenerate=Régénérer une clé de secours à usage unique
+twofa_scratch_token_regenerated=Votre clé de secours à usage unique est désormais « %s ». Stockez-la dans un endroit sûr, elle ne sera plus jamais affichée.
twofa_enroll=Activer l'authentification à deux facteurs
twofa_disable_note=Vous pouvez désactiver l'authentification à deux facteurs si nécessaire.
twofa_disable_desc=Désactiver l'authentification à deux facteurs rendra votre compte plus vulnérable. Confirmer ?
+regenerate_scratch_token_desc=Si vous avez égaré votre clé de secours ou avez dû l’utiliser pour vous authentifier, vous pouvez la régénérer.
twofa_disabled=L'authentification à deux facteurs a été désactivée.
scan_this_image=Scannez cette image avec votre application d'authentification :
or_enter_secret=Ou saisissez le code %s
then_enter_passcode=Et entrez le code de passe s'affichant dans l'application :
passcode_invalid=Le mot de passe est invalide. Réessayez.
+twofa_enrolled=L’authentification à deux facteurs a été activée pour votre compte. Gardez votre clé de secours (%s) en lieu sûr, car il ne vous sera montré qu'une seule fois.
twofa_failed_get_secret=Impossible d'obtenir le secret.
-webauthn_desc=Les clefs de sécurité sont des dispositifs matériels contenant des clefs cryptographiques. Elles peuvent être utilisées pour l'authentification à deux facteurs. La clef de sécurité doit supporter le standard WebAuthn Authenticator.
+webauthn_desc=Les clefs de sécurité sont des dispositifs matériels contenant des clefs cryptographiques. Elles peuvent être utilisées pour l’authentification à deux facteurs. La clef de sécurité doit supporter le standard WebAuthn Authenticator.
webauthn_register_key=Ajouter une clé de sécurité
webauthn_nickname=Pseudonyme
webauthn_delete_key=Retirer la clé de sécurité
@@ -1027,6 +1041,7 @@ issue_labels_helper=Sélectionner un jeu de label.
license=Licence
license_helper=Sélectionner une licence
license_helper_desc=Une licence réglemente ce que les autres peuvent ou ne peuvent pas faire avec votre code. Vous ne savez pas laquelle est la bonne pour votre projet ? Comment choisir une licence.
+multiple_licenses=Licences multiples
object_format=Format d'objet
object_format_helper=Format d’objet pour ce dépôt. Ne peut être modifié plus tard. SHA1 est le plus compatible.
readme=LISEZMOI
@@ -1087,7 +1102,9 @@ tree_path_not_found_branch=Le chemin %[1]s n’existe pas dans la branche %[2]s.
tree_path_not_found_tag=Le chemin %[1]s n’existe pas dans l’étiquette %[2]s.
transfer.accept=Accepter le transfert
+transfer.accept_desc=Transférer à  « %s »
transfer.reject=Refuser le transfert
+transfer.reject_desc=Annuler le transfert à « %s »
transfer.no_permission_to_accept=Vous n’êtes pas autorisé à accepter ce transfert.
transfer.no_permission_to_reject=Vous n’êtes pas autorisé à rejeter ce transfert.
@@ -1162,6 +1179,11 @@ migrate.gogs.description=Migrer les données depuis notabug.org ou d’autres in
migrate.onedev.description=Migrer les données depuis code.onedev.io ou d’autre instance de OneDev.
migrate.codebase.description=Migrer les données depuis codebasehq.com.
migrate.gitbucket.description=Migrer les données depuis des instances GitBucket.
+migrate.codecommit.description=Migrer les données depuis AWS CodeCommit.
+migrate.codecommit.aws_access_key_id=ID de la clé d’accès AWS
+migrate.codecommit.aws_secret_access_key=Clé d’accès secrète AWS
+migrate.codecommit.https_git_credentials_username=Nom d’utilisateur Git HTTPS
+migrate.codecommit.https_git_credentials_password=Mot de passe Git HTTPS
migrate.migrating_git=Migration des données Git
migrate.migrating_topics=Migration des sujets
migrate.migrating_milestones=Migration des jalons
@@ -1222,6 +1244,7 @@ releases=Publications
tag=Étiquette
released_this=a publié ceci
tagged_this=a étiqueté
+file.title=%s sur %s
file_raw=Brut
file_history=Historique
file_view_source=Voir le code source
@@ -1461,6 +1484,7 @@ issues.remove_labels=a supprimé les labels %s %s.
issues.add_remove_labels=a ajouté le label %s et supprimé %s %s.
issues.add_milestone_at=`a ajouté ça au jalon %s %s.`
issues.add_project_at=`a ajouté ça au projet %s %s.`
+issues.move_to_column_of_project=`a déplacé ça vers %s dans %s sur %s`
issues.change_milestone_at=`a remplacé le jalon *
englobent toutes les branches. Voir la syntaxe Glob. Exemples : master
, {master,release*}
.
+settings.branch_filter_desc=Liste de branches et motifs globs autorisant la soumission, la création et suppression de branches. Laisser vide ou utiliser *
englobent toutes les branches. Voir la %[2]s. Exemples : master
, {master,release*}
.
settings.authorization_header=En-tête « Authorization »
settings.authorization_header_desc=Si présent, sera ajouté aux requêtes comme en-tête d’authentification. Exemples : %s.
settings.active=Actif
@@ -2346,9 +2385,13 @@ settings.deploy_key_deletion=Supprimer une clef de déploiement
settings.deploy_key_deletion_desc=La suppression d'une clef de déploiement révoque son accès à ce dépôt. Continuer ?
settings.deploy_key_deletion_success=La clé de déploiement a été supprimée.
settings.branches=Branches
+settings.protected_branch=Protection de branche
settings.protected_branch.save_rule=Enregistrer la règle
settings.protected_branch.delete_rule=Supprimer la règle
settings.protected_branch_can_push=Autoriser la soumission ?
+settings.protected_branch_can_push_yes=Vous pouvez soumettre
+settings.protected_branch_can_push_no=Vous ne pouvez pas soumettre
+settings.branch_protection=Paramètres de protection de branches pour la branche %s
settings.protect_this_branch=Activer la protection de branche
settings.protect_this_branch_desc=Empêche les suppressions et limite les poussées et fusions sur cette branche.
settings.protect_disable_push=Désactiver la soumission
@@ -2378,6 +2421,7 @@ settings.protect_merge_whitelist_teams=Équipes autorisées à fusionner :
settings.protect_check_status_contexts=Activer le Contrôle Qualité
settings.protect_status_check_patterns=Motifs de vérification des statuts :
settings.protect_status_check_patterns_desc=Entrez des motifs pour spécifier quelles vérifications doivent réussir avant que des branches puissent être fusionnées. Un motif par ligne. Un motif ne peut être vide.
+settings.protect_check_status_contexts_desc=Exiger le status « succès » avant de fusionner. Quand activée, une branche protégée ne peux accepter que des soumissions ou des fusions ayant le status « succès ». Lorsqu'il n’y a pas de contexte, la dernière révision fait foi.
settings.protect_check_status_contexts_list=Contrôles qualité trouvés au cours de la semaine dernière pour ce dépôt
settings.protect_status_check_matched=Correspondant
settings.protect_invalid_status_check_pattern=Motif de vérification des statuts incorrect : « %s ».
@@ -2395,15 +2439,18 @@ settings.ignore_stale_approvals_desc=Ignorer les approbations d’anciennes rév
settings.require_signed_commits=Exiger des révisions signées
settings.require_signed_commits_desc=Rejeter les soumissions sur cette branche lorsqu'ils ne sont pas signés ou vérifiables.
settings.protect_branch_name_pattern=Motif de nom de branche protégé
-settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la documentation pour la syntaxe du motif. Exemples : main
, release/**
+settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la documentation pour la syntaxe du motif. Exemples : main
, release/**
settings.protect_patterns=Motifs
settings.protect_protected_file_patterns=Liste des fichiers et motifs protégés
-settings.protect_protected_file_patterns_desc=Liste de fichiers et de motifs, séparés par un point-virgule « ; », qui ne pourront pas être modifiés même si les utilisateurs disposent des droits sur la branche. Voir la syntaxe glob. Exemples : .drone.yml ; /docs/**/*.txt
.
+settings.protect_protected_file_patterns_desc=Liste de fichiers et de motifs, séparés par un point-virgule « ; », qui ne pourront pas être modifiés même si les utilisateurs disposent des droits sur la branche. Consultez la %[2]s. Exemples : .drone.yml ; /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Liste des fichiers et motifs exclus
-settings.protect_unprotected_file_patterns_desc=Liste de fichiers et de motifs globs, séparés par un point-virgule « ; », qui pourront être modifiés malgré la protection de branche, par les utilisateurs autorisés. Voir la syntaxe Glob. Exemples : .drone.yml ; /docs/**/*.txt
.
+settings.protect_unprotected_file_patterns_desc=Liste de fichiers et de motifs globs, séparés par un point-virgule « ; », qui pourront être modifiés malgré la protection de branche, par les utilisateurs autorisés. Voir la %[2]s. Exemples : .drone.yml ; /docs/**/*.txt
.
+settings.add_protected_branch=Activer la protection
+settings.delete_protected_branch=Désactiver la protection
settings.update_protect_branch_success=La règle de protection de branche "%s" a été mise à jour.
settings.remove_protected_branch_success=La règle de protection de branche "%s" a été retirée.
settings.remove_protected_branch_failed=Impossible de retirer la règle de protection de branche "%s".
+settings.protected_branch_deletion=Désactiver la protection de branche
settings.protected_branch_deletion_desc=Désactiver la protection de branche permet aux utilisateurs ayant accès en écriture de pousser des modifications sur la branche. Continuer ?
settings.block_rejected_reviews=Bloquer la fusion en cas d’évaluations négatives
settings.block_rejected_reviews_desc=La fusion ne sera pas possible lorsque des modifications sont demandées par les évaluateurs officiels, même s'il y a suffisamment d’approbations.
@@ -2413,6 +2460,7 @@ settings.block_outdated_branch=Bloquer la fusion si la demande d'ajout est obsol
settings.block_outdated_branch_desc=La fusion ne sera pas possible lorsque la branche principale est derrière la branche de base.
settings.default_branch_desc=Sélectionnez une branche par défaut pour les demandes de fusion et les révisions :
settings.merge_style_desc=Styles de fusion
+settings.default_merge_style_desc=Méthode de fusion par défaut
settings.choose_branch=Choisissez une branche…
settings.no_protected_branch=Il n'y a pas de branche protégée.
settings.edit_protected_branch=Éditer
@@ -2428,13 +2476,25 @@ settings.tags.protection.allowed.teams=Équipes autorisées
settings.tags.protection.allowed.noone=Personne
settings.tags.protection.create=Protéger l'étiquette
settings.tags.protection.none=Il n'y a pas d'étiquettes protégées.
-settings.tags.protection.pattern.description=Vous pouvez utiliser au choix un nom unique, un motif de glob ou une expression régulière qui correspondra à plusieurs étiquettes. Pour plus d’informations, consultez le guide sur les étiquettes protégées.
+settings.tags.protection.pattern.description=Vous pouvez utiliser au choix un nom unique, un motif de glob ou une expression régulière qui correspondra à plusieurs étiquettes. Pour plus d’informations, consultez le guide sur les étiquettes protégées.
settings.bot_token=Jeton de Bot
settings.chat_id=ID de conversation
settings.thread_id=ID du fil
settings.matrix.homeserver_url=URL du serveur d'accueil
settings.matrix.room_id=ID de la salle
settings.matrix.message_type=Type de message
+settings.visibility.private.button=Rendre privé
+settings.visibility.private.text=Rendre le dépôt privé rendra non seulement le dépôt visible uniquement aux membres autorisés, mais peut également rompre la relation entre lui et ses bifurcations, observateurs, et favoris.
+settings.visibility.private.bullet_title=Changer la visibilité en privé :
+settings.visibility.private.bullet_one=Va rendre le dépôt visible uniquement par les membres autorisés
+settings.visibility.private.bullet_two=Peut supprimer la relation avec ses bifurcations, ses observateurs et ses favoris
+settings.visibility.public.button=Rendre public
+settings.visibility.public.text=Rendre le dépôt public rendra le dépôt visible à tout le monde.
+settings.visibility.public.bullet_title=Changer la visibilité en public va :
+settings.visibility.public.bullet_one=Rendre le dépôt visible à tout le monde.
+settings.visibility.success=Visibilité du dépôt changée.
+settings.visibility.error=Une erreur s’est produite en essayant de changer la visibilité du dépôt.
+settings.visibility.fork_error=Impossible de changer la visibilité d’un dépôt bifurqué.
settings.archive.button=Archiver ce dépôt
settings.archive.header=Archiver ce dépôt
settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous!).
@@ -2596,7 +2656,7 @@ branch.delete_desc=La suppression d’une branche est permanente. Bien qu’une
branch.deletion_success=La branche "%s" a été supprimée.
branch.deletion_failed=Impossible de supprimer la branche "%s".
branch.delete_branch_has_new_commits=La branche "%s" ne peut être supprimé, car de nouvelles révisions ont été ajoutées après la fusion.
-branch.create_branch=Créer la branche %s
+branch.create_branch=Créer la branche %s
branch.create_from=`de "%s"`
branch.create_success=La branche "%s" a été créée.
branch.branch_already_exists=La branche "%s" existe déjà dans ce dépôt.
@@ -2622,7 +2682,7 @@ branch.new_branch=Créer une nouvelle branche
branch.new_branch_from=`Créer une nouvelle branche à partir de "%s"`
branch.renamed=La branche %s à été renommée en %s.
-tag.create_tag=Créer l'étiquette %s
+tag.create_tag=Créer l'étiquette %s
tag.create_tag_operation=Créer une étiquette
tag.confirm_create_tag=Créer une étiquette
tag.create_tag_from=`Créer une nouvelle étiquette à partir de "%s"`
@@ -2631,6 +2691,7 @@ tag.create_success=L'étiquette "%s" a été créée.
topic.manage_topics=Gérer les sujets
topic.done=Terminé
+topic.count_prompt=Vous ne pouvez pas sélectionner plus de 25 sujets
topic.format_prompt=Les sujets doivent commencer par un caractère alphanumérique, peuvent inclure des traits d’union « - » et des points « . », et mesurer jusqu'à 35 caractères. Les lettres doivent être en minuscules.
find_file.go_to_file=Aller au fichier
@@ -2797,7 +2858,7 @@ last_page=Dernière
total=Total : %d
settings=Paramètres administrateur
-dashboard.new_version_hint=Gitea %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.
+dashboard.new_version_hint=Gitea %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.
dashboard.statistic=Résumé
dashboard.maintenance_operations=Opérations de maintenance
dashboard.system_status=État du système
@@ -2840,6 +2901,7 @@ dashboard.reinit_missing_repos=Réinitialiser tous les dépôts Git manquants po
dashboard.sync_external_users=Synchroniser les données de l’utilisateur externe
dashboard.cleanup_hook_task_table=Nettoyer la table hook_task
dashboard.cleanup_packages=Nettoyer des paquets expirés
+dashboard.cleanup_actions=Nettoyer les reliquats des actions obsolètes
dashboard.server_uptime=Uptime du serveur
dashboard.current_goroutine=Goroutines actuelles
dashboard.current_memory_usage=Utilisation Mémoire actuelle
@@ -2869,12 +2931,19 @@ dashboard.total_gc_time=Pause GC
dashboard.total_gc_pause=Pause GC
dashboard.last_gc_pause=Dernière Pause GC
dashboard.gc_times=Nombres de GC
+dashboard.delete_old_actions=Supprimer toutes les anciennes activités de la base de données
+dashboard.delete_old_actions.started=La suppression des anciennes activités de la base de données a démarré.
dashboard.update_checker=Vérificateur de mise à jour
dashboard.delete_old_system_notices=Supprimer toutes les anciennes observations de la base de données
dashboard.gc_lfs=Épousseter les métaobjets LFS
+dashboard.stop_zombie_tasks=Arrêter les tâches zombies
+dashboard.stop_endless_tasks=Arrêter les tâches interminables
+dashboard.cancel_abandoned_jobs=Annuler les travaux abandonnés
+dashboard.start_schedule_tasks=Démarrer les tâches planifiées
dashboard.sync_branch.started=Début de la synchronisation des branches
dashboard.sync_tag.started=Synchronisation des étiquettes
dashboard.rebuild_issue_indexer=Reconstruire l’indexeur des tickets
+dashboard.sync_repo_licenses=Synchroniser les licences du dépôt
users.user_manage_panel=Gestion du compte utilisateur
users.new_account=Créer un compte
@@ -2982,12 +3051,12 @@ packages.size=Taille
packages.published=Publiés
defaulthooks=Déclencheurs web par défaut
-defaulthooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créés ici sont par défaut copiés sur tous les nouveaux dépôts. Pour plus d'information, consultez le guide des webhooks.
+defaulthooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créés ici sont par défaut copiés sur tous les nouveaux dépôts. Pour plus d'information, consultez le guide des webhooks.
defaulthooks.add_webhook=Ajouter un déclencheur web par défaut
defaulthooks.update_webhook=Mettre à jour le déclencheur web par défaut
systemhooks=Webhooks système
-systemhooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créé ici agiront sur tous les dépôts, ce qui peux impacter les performances du système. Pour plus d’information, consultez le guide des webhooks.
+systemhooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créé ici agiront sur tous les dépôts, ce qui peux impacter les performances du système. Pour plus d’information, consultez le guide des webhooks.
systemhooks.add_webhook=Ajouter un rappel système
systemhooks.update_webhook=Mettre à jour un rappel système
@@ -3082,18 +3151,18 @@ auths.tips=Conseils
auths.tips.oauth2.general=Authentification OAuth2
auths.tips.oauth2.general.tip=Lors de l'enregistrement d'une nouvelle authentification OAuth2, l'URL de rappel/redirection doit être :
auths.tip.oauth2_provider=Fournisseur OAuth2
-auths.tip.bitbucket=Créez un nouveau jeton OAuth sur https://bitbucket.org/account/user/{your username}/oauth-consumers/new et ajoutez la permission “Compteâ€Â - “Lectureâ€.
+auths.tip.bitbucket=Créez un nouveau jeton OAuth sur %s et ajoutez la permission « Compte » → « Lecture ».
auths.tip.nextcloud=`Enregistrez un nouveau consommateur OAuth sur votre instance en utilisant le menu "Paramètres -> Sécurité -> Client OAuth 2.0"`
-auths.tip.dropbox=Créez une nouvelle application sur https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Enregistrez une nouvelle application sur https://developers.facebook.com/apps et ajoutez le produit "Facebook Login"`
-auths.tip.github=Créez une nouvelle application OAuth sur https://github.com/settings/applications/new
-auths.tip.gitlab_new=Enregistrez une nouvelle application sur https://gitlab.com/-/profile/applications
-auths.tip.google_plus=Obtenez des identifiants OAuth2 sur la console API de Google (https://console.developers.google.com/)
+auths.tip.dropbox=Créez une nouvelle application sur %s
+auths.tip.facebook=Enregistrez une nouvelle application sur%s et ajoutez le produit « Facebook Login ».
+auths.tip.github=Créez une nouvelle application OAuth sur %s
+auths.tip.gitlab_new=Enregistrez une nouvelle application sur %s
+auths.tip.google_plus=Obtenez des identifiants OAuth2 sur la console API de Google (%s)
auths.tip.openid_connect=Utilisez l’URL de découverte OpenID « https://{server}/.well-known/openid-configuration » pour spécifier les points d'accès.
-auths.tip.twitter=Rendez-vous sur https://dev.twitter.com/apps, créez une application et assurez-vous que l'option "Autoriser l'application à être utilisée avec Twitter Connect" est activée
-auths.tip.discord=Enregistrer une nouvelle application sur https://discordapp.com/developers/applications/me
-auths.tip.gitea=Enregistrez une nouvelle application OAuth2. Le guide peut être trouvé sur https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Créez une nouvelle application sur https://oauth.yandex.com/client/new. Sélectionnez les autorisations suivantes dans la section "Yandex API passport" : "Accès à l'adresse e-mail", "Accès à l'avatar de l'utilisateur" et "Accès au nom d'utilisateur, prénom et prénom, genre"`
+auths.tip.twitter=Rendez-vous sur %s, créez une application et assurez-vous que l’option « Autoriser l’application à être utilisée avec Twitter Connect » est activée.
+auths.tip.discord=Enregistrer une nouvelle application sur %s
+auths.tip.gitea=Enregistrez une nouvelle application OAuth2. Le guide peut être trouvé sur %s.
+auths.tip.yandex=Créez une nouvelle application sur %s. Sélectionnez les autorisations suivantes dans la section « Yandex.Passport API » : « Accès à l’adresse e-mail », « Accès à l’avatar de l’utilisateur » et « Accès au nom d’utilisateur, prénom, surnom et genre ».
auths.tip.mastodon=Entrez une URL d'instance personnalisée pour l'instance mastodon avec laquelle vous voulez vous authentifier (ou utiliser celle par défaut)
auths.edit=Mettre à jour la source d'authentification
auths.activated=Cette source d'authentification est activée
@@ -3267,6 +3336,8 @@ monitor.start=Heure de démarrage
monitor.execute_time=Heure d'Éxécution
monitor.last_execution_result=Résultat
monitor.process.cancel=Annuler le processus
+monitor.process.cancel_desc=L’annulation d’un processus peut entraîner une perte de données.
+monitor.process.cancel_notices=Annuler : %s ?
monitor.process.children=Enfant
monitor.queues=Files d'attente
@@ -3368,6 +3439,7 @@ raw_minutes=minutes
[dropzone]
default_message=Déposez les fichiers ou cliquez ici pour téléverser.
+invalid_input_type=Vous ne pouvez pas téléverser des fichiers de ce type.
file_too_big=La taille du fichier ({{filesize}} Mo) dépasse la taille maximale ({{maxFilesize}} Mo).
remove_file=Supprimer le fichier
@@ -3639,12 +3711,18 @@ runs.no_workflows.quick_start=Vous découvrez les Actions Gitea ? Consultez la documentation.
runs.no_runs=Le flux de travail n'a pas encore d'exécution.
runs.empty_commit_message=(message de révision vide)
+runs.expire_log_message=Les journaux ont été supprimés car ils étaient trop anciens.
workflow.disable=Désactiver le flux de travail
workflow.disable_success=Le flux de travail « %s » a bien été désactivé.
workflow.enable=Activer le flux de travail
workflow.enable_success=Le flux de travail « %s » a bien été activé.
workflow.disabled=Le flux de travail est désactivé.
+workflow.run=Exécuter le flux de travail
+workflow.not_found=Flux de travail « %s » introuvable.
+workflow.run_success=Le flux de travail « %s » s’est correctement exécuté.
+workflow.from_ref=Utiliser le flux de travail depuis
+workflow.has_workflow_dispatch=Ce flux de travail a un déclencheur d’événement workflow_dispatch.
need_approval_desc=Besoin d’approbation pour exécuter des flux de travail pour une demande d’ajout de bifurcation.
@@ -3665,6 +3743,7 @@ variables.update.failed=Impossible d’éditer la variable.
variables.update.success=La variable a bien été modifiée.
[projects]
+deleted.display_name=Projet supprimé
type-1.display_name=Projet personnel
type-2.display_name=Projet de dépôt
type-3.display_name=Projet d’organisation
diff --git a/options/locale/locale_ga-IE.ini b/options/locale/locale_ga-IE.ini
new file mode 100644
index 0000000000000..5ccbc4315f1c5
--- /dev/null
+++ b/options/locale/locale_ga-IE.ini
@@ -0,0 +1,3473 @@
+home=Baile
+dashboard=Deais
+explore=Iniúch
+help=Cabhair
+logo=Lógó
+sign_in=SÃnigh isteach
+sign_in_with_provider=SÃnigh isteach le %s
+sign_in_or=nó
+sign_out=SÃnigh amach
+sign_up=Cláraigh
+link_account=Cuntas Nasc
+register=Cláraigh
+version=Leagan
+powered_by=Cumhachtaithe ag %s
+page=Leathanach
+template=Teimpléad
+language=Teanga
+notifications=FógraÃ
+active_stopwatch=Rianaitheoir Ama GnÃomhach
+tracked_time_summary=Achoimre ar an am rianaithe bunaithe ar scagairà an liosta eisiúna
+create_new=Cruthaigh...
+user_profile_and_more=PróifÃl agus Socruithe...
+signed_in_as=SÃnithe isteach mar
+enable_javascript=ÉilÃonn JavaScript ar an suÃomh Gréasáin seo.
+toc=Tábla na nÃbhar
+licenses=Ceadúnais
+return_to_gitea=Fill ar Gitea
+more_items=Tuilleadh mÃreanna
+
+username=Ainm úsáideora
+email=Seoladh rÃomhphoist
+password=Pasfhocal
+access_token=Comhartha Rochtana
+re_type=Deimhnigh Pasfhocal
+captcha=CAPTCHA
+twofa=FÃordheimhniú Dhá-Fhachtóir
+twofa_scratch=Cód Scratch Dhá-Fhachtóra
+passcode=Paschód
+
+webauthn_insert_key=Cuir isteach d'eochair slándála
+webauthn_sign_in=Brúigh an cnaipe ar d'eochair slándála. Mura bhfuil aon chnaipe ag d'eochair slándála, cuir isteach é arÃs.
+webauthn_press_button=Brúigh an cnaipe ar d'eochair slándála le do thoil…
+webauthn_use_twofa=Úsáid cód dhá fhachtóir ó do ghuthán
+webauthn_error=Nà fhéadfaà do eochair slándála a léamh.
+webauthn_unsupported_browser=Nà thacaÃonn do bhrabhsálaà le WebAuthn faoi láthair.
+webauthn_error_unknown=Tharla earráid anaithnid. Déan iarracht arÃs.
+webauthn_error_insecure=Nà thacaÃonn WebAuthn ach le naisc slán. Le haghaidh tástála thar HTTP, is féidir leat an bunús “localhost†nó "127.0.0.1" a úsáid
+webauthn_error_unable_to_process=Nà fhéadfadh an freastalaà d'iarratas a phróiseáil.
+webauthn_error_duplicated=Nà cheadaÃtear an eochair slándála don iarratas seo. Déan cinnte le do thoil nach bhfuil an eochair cláraithe cheana féin.
+webauthn_error_empty=Nà mór duit ainm a shocrú don eochair seo.
+webauthn_error_timeout=Sroicheadh an teorainn ama sula bhféadfaà d’eochair a léamh. Athlódáil an leathanach seo, le do thoil, agus déan iarracht arÃs.
+webauthn_reload=Athlódáil
+
+repository=Stór
+organization=EagraÃocht
+mirror=Scáthán
+new_repo=Stór Nua
+new_migrate=Imirce Nua
+new_mirror=Scáthán Nua
+new_fork=Forc Stór Nua
+new_org=EagraÃocht Nua
+new_project=Tionscadal Nua
+new_project_column=Colún Nua
+manage_org=EagraÃochtaà a bhainistiú
+admin_panel=Riarachán Láithreáin
+account_settings=Socruithe Cuntais
+settings=Socruithe
+your_profile=PróifÃl
+your_starred=Réaltaigh
+your_settings=Socruithe
+
+all=Gach
+sources=FoinsÃ
+mirrors=Scátháin
+collaborative=Comhoibritheach
+forks=Forcanna
+
+activities=GnÃomhaÃochtaÃ
+pull_requests=Iarrataà Tarraing
+issues=Saincheisteanna
+milestones=Clocha mÃle
+
+ok=CEART GO LEOR
+cancel=Cealaigh
+retry=Atriail
+rerun=Ath-rith
+rerun_all=Ath-rith na poist go léir
+save=Sábháil
+add=Cuir
+add_all=Cuir Gach
+remove=Bain
+remove_all=Bain Gach
+remove_label_str=Bain mÃr “%sâ€
+edit=Cuir in eagar
+view=Amharc
+test=Tástáil
+
+enabled=Cumasaithe
+disabled=DÃchumasaithe
+locked=Faoi ghlas
+
+copy=Cóipeáil
+copy_url=Cóipeáil URL
+copy_hash=Cóipeáil hais
+copy_content=Cóipeáil ábhair
+copy_branch=Ainm brainse cóipeáil
+copy_success=Cóipeáil!
+copy_error=Theip ar an gcóip
+copy_type_unsupported=Nà féidir an cineál comhaid seo a chóipeáil
+
+write=ScrÃobh
+preview=Réamhamharc
+loading=à lódáil...
+
+error=Earráid
+error404=NÃl an leathanach atá tú ag iarraidh a bhaint amach ann nó nÃl tú údaraithe chun é a fheiceáil.
+go_back=Ar ais
+invalid_data=Sonraà neamhbhailÃ: %v
+
+never=Riamh
+unknown=Anaithnid
+
+rss_feed=Fothú RSS
+
+pin=Bioráin
+unpin=DÃphoráil
+
+artifacts=Déantáin
+confirm_delete_artifact=An bhfuil tú cinnte gur mhaith leat an déantán '%s' a scriosadh?
+
+archived=Cartlann
+
+concept_system_global=Domhanda
+concept_user_individual=Duine aonair
+concept_code_repository=Stóráil
+concept_user_organization=EagraÃocht
+
+show_timestamps=Taispeáin stampaà ama
+show_log_seconds=Taispeáin soicindÃ
+show_full_screen=Taispeáin scáileán iomlán
+download_logs=Ãoslódáil logaÃ
+
+confirm_delete_selected=Deimhnigh chun gach earra roghnaithe a scriosadh?
+
+name=Ainm
+value=Luach
+
+filter=Scagaire
+filter.clear=Scagaire Soiléir
+filter.is_archived=Cartlannaithe
+filter.not_archived=Gan Cartlannaithe
+filter.is_fork=Forcailte
+filter.not_fork=Gan Forcailte
+filter.is_mirror=Scáthánaithe
+filter.not_mirror=Gan Scáthánaithe
+filter.is_template=Teimpléad
+filter.not_template=Gan Teimpléad
+filter.public=PoiblÃ
+filter.private=PrÃobháideach
+
+no_results_found=NÃor aimsÃodh aon torthaÃ.
+internal_error_skipped=Tharla earráid inmheánach ach éirithe as: %s
+
+[search]
+search=Cuardaigh...
+type_tooltip=Cineál cuardaigh
+fuzzy=Doiléir
+fuzzy_tooltip=Cuir san áireamh torthaà a mheaitseálann an téarma cuardaigh go dlúth freisin
+exact=Beacht
+exact_tooltip=Nà chuir san áireamh ach torthaà a mheaitseálann leis an téarma
+repo_kind=Cuardaigh stórtha...
+user_kind=Cuardaigh úsáideoirÃ...
+org_kind=Cuardaigh eagraÃochtaÃ...
+team_kind=Cuardaigh foirne...
+code_kind=Cód cuardaigh...
+code_search_unavailable=NÃl cuardach cód ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin.
+code_search_by_git_grep=SoláthraÃonn “git grep†torthaà cuardaigh cód reatha. D'fhéadfadh torthaà nÃos fearr a bheith ann má chuireann riarthóir an láithreáin ar chumas Innéacsaithe
+package_kind=Cuardaigh pacáistÃ...
+project_kind=Cuardaigh tionscadail...
+branch_kind=Cuardaigh brainsÃ...
+tag_kind=Cuardaigh clibeanna...
+tag_tooltip=Cuardaigh clibeanna meaitseála. Úsáid '%' le haon seicheamh uimhreacha a mheaitseáil.
+commit_kind=Cuardaigh tiomáintÃ...
+runner_kind=Cuardaigh reathaithe...
+no_results=NÃl aon torthaà meaitseála le fáil.
+issue_kind=Saincheisteanna cuardaigh...
+pull_kind=Cuardaigh iarratais tarraingthe...
+keyword_search_unavailable=NÃl cuardach de réir eochairfhocal ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin.
+
+[aria]
+navbar=Barra Nascleanúint
+footer=Buntásc
+footer.software=Maidir le BogearraÃ
+footer.links=Naisc
+
+[heatmap]
+number_of_contributions_in_the_last_12_months=%s rannÃocaÃochtaà le 12 mhà anuas
+no_contributions=Gan rannÃocaÃochtaÃ
+less=NÃos lú
+more=NÃos mó
+
+[editor]
+buttons.heading.tooltip=Cuir ceannteideal leis
+buttons.bold.tooltip=Cuir téacs trom leis
+buttons.italic.tooltip=Cuir téacs iodálach leis
+buttons.quote.tooltip=Téacs luaigh
+buttons.code.tooltip=Cuir cód leis
+buttons.link.tooltip=Cuir nasc leis
+buttons.list.unordered.tooltip=Cuir liosta piléar leis
+buttons.list.ordered.tooltip=Cuir liosta uimhrithe
+buttons.list.task.tooltip=Cuir liosta tascanna leis
+buttons.mention.tooltip=Luaigh úsáideoir nó foireann
+buttons.ref.tooltip=Déan tagairt d'eisiúint nó iarratas tarraingthe
+buttons.switch_to_legacy.tooltip=Úsáid an eagarthóir oidhreachta ina ionad
+buttons.enable_monospace_font=Cumasaigh cló monospace
+buttons.disable_monospace_font=DÃchumasaigh cló monospace
+
+[filter]
+string.asc=A - Z
+string.desc=Z - A
+
+[error]
+occurred=Tharla earráid
+report_message=Má chreideann tú gur fabht Gitea é seo, déan cuardach le haghaidh ceisteanna ar GitHub nó oscail eagrán nua más gá.
+not_found=Nà raibh an sprioc in ann a fháil.
+network_error=Earráid lÃonra
+
+[startpage]
+app_desc=SeirbhÃs Git gan phian, féin-óstáil
+install=Éasca a shuiteáil
+install_desc=NÃl ort ach rith an dénártha do d'ardán, seol é le Docker, nó faigh pacáilte é.
+platform=Tras-ardán
+platform_desc=Ritheann Gitea áit ar bith is féidir le Go tiomsú le haghaidh: Windows, macOS, Linux, ARM, srl Roghnaigh an ceann is breá leat!
+lightweight=Éadrom
+lightweight_desc=Tá Ãosta riachtanais Ãseal ag Gitea agus is féidir leo rith ar Raspberry Pi saor. Sábháil fuinneamh do mheaisÃn!
+license=Foinse Oscailte
+license_desc=Téigh go bhfaighidh %[2]s! Bà linn trà cur leis chun an tionscadal seo a fheabhsú fós. Ná bÃodh cúthail ort a bheith i do rannpháirtÃ!
+
+[install]
+install=Suiteáil
+title=CumraÃocht Tosaigh
+docker_helper=Má ritheann tú Gitea taobh istigh de Docker, léigh an doiciméadúchán roimh aon socruithe a athrú.
+require_db_desc=ÉilÃonn Gitea MySQL, PostgreSQL, MSSQL, SQLite3 nó TiDB (prótacal MySQL).
+db_title=Socruithe Bunachar SonraÃ
+db_type=Cineál Bunachar SonraÃ
+host=Óstach
+user=Ainm úsáideora
+password=Pasfhocal
+db_name=Ainm Bunachar SonraÃ
+db_schema=Scéim
+db_schema_helper=Fág bán le haghaidh réamhshocraithe bunachar sonraà ("poiblÃ").
+ssl_mode=SSL
+path=Cosán
+sqlite_helper=Conair comhad don bhunachar sonraà SQLite3. Cuir alt
+ cliceáil/iontráil
chun lipéid a eisiamh`
+issues.filter_label_no_select=Gach lipéad
+issues.filter_label_select_no_label=Gan lipéad
+issues.filter_milestone=Cloch MhÃle
+issues.filter_milestone_all=Gach cloch mhÃle
+issues.filter_milestone_none=Gan aon clocha mhÃle
+issues.filter_milestone_open=Clocha mhÃle oscailte
+issues.filter_milestone_closed=Clocha mhÃle dúnta
+issues.filter_project=Tionscadal
+issues.filter_project_all=Gach tionscadal
+issues.filter_project_none=Gan aon tionscadal
+issues.filter_assignee=Sannaitheoir
+issues.filter_assginee_no_select=Gach sannaithe
+issues.filter_assginee_no_assignee=Gan sannaitheoir
+issues.filter_poster=Údar
+issues.filter_poster_no_select=Gach údair
+issues.filter_type=Cineál
+issues.filter_type.all_issues=Gach saincheist
+issues.filter_type.assigned_to_you=Sannta duit
+issues.filter_type.created_by_you=Cruthaithe agat
+issues.filter_type.mentioning_you=Ag tagairt duit
+issues.filter_type.review_requested=Athbhreithniú iarrtha
+issues.filter_type.reviewed_by_you=Athbhreithnithe agat
+issues.filter_sort=Sórtáil
+issues.filter_sort.latest=Is nuaÃ
+issues.filter_sort.oldest=Is sine
+issues.filter_sort.recentupdate=Nuashonraithe le déanaÃ
+issues.filter_sort.leastupdate=Is lú a nuashonraÃodh le déanaÃ
+issues.filter_sort.mostcomment=Is mó a bhfuil tráchtanna air
+issues.filter_sort.leastcomment=Is lú a bhfuil tráchtanna air
+issues.filter_sort.nearduedate=An dáta dlite is gaire
+issues.filter_sort.farduedate=An dáta dlite is faide
+issues.filter_sort.moststars=An lÃon réaltaà is mó
+issues.filter_sort.feweststars=An lÃon réaltaà is lú
+issues.filter_sort.mostforks=An lÃon forcanna is mó
+issues.filter_sort.fewestforks=An lÃon forcanna is lú
+issues.action_open=Oscailte
+issues.action_close=Dún
+issues.action_label=Lipéad
+issues.action_milestone=Cloch MhÃle
+issues.action_milestone_no_select=Gan Chloch MhÃle
+issues.action_assignee=Sannaitheoir
+issues.action_assignee_no_select=Gan sannaitheoir
+issues.action_check=Seiceáil/DÃsheiceáil
+issues.action_check_all=Seiceáil/DÃsheiceáil gach mireanna
+issues.opened_by=oscail %[1]s le %[3]s
+pulls.merged_by=le %[3]s cumasc %[1]s
+pulls.merged_by_fake=le %[2]s a chumasc %[1]s
+issues.closed_by=le dúnadh %[3]s %[1]s
+issues.opened_by_fake=oscail %[1]s le %[2]s
+issues.closed_by_fake=faoi ​​%[2]s dúnadh %[1]s
+issues.previous=Roimhe Seo
+issues.next=Ar Aghaidh
+issues.open_title=Oscailte
+issues.closed_title=Dúnta
+issues.draft_title=Dréacht
+issues.num_comments_1=%d trácht
+issues.num_comments=%d tráchtanna
+issues.commented_at=`trácht %s `
+issues.delete_comment_confirm=An bhfuil tú cinnte gur mhaith leat an trácht seo a scriosadh?
+issues.context.copy_link=Cóipeáil Nasc
+issues.context.quote_reply=Luaigh Freagra
+issues.context.reference_issue=Tagairt in Eagrán Nua
+issues.context.edit=Cuir in eagar
+issues.context.delete=Scrios
+issues.no_content=NÃl aon tuairisc ar fáil.
+issues.close=Dún Eagrán
+issues.comment_pull_merged_at=cumasc tiomantas %[1]s le %[2]s %[3]s
+issues.comment_manually_pull_merged_at=cumasc tiomantas %[1]s le %[2]s %[3]s
+issues.close_comment_issue=Dún le trácht
+issues.reopen_issue=Athoscail
+issues.reopen_comment_issue=Athoscail le trácht
+issues.create_comment=Trácht
+issues.comment.blocked_user=Nà féidir trácht a chruthú nó a chur in eagar toisc go bhfuil an tráchtaire nó úinéir an stórais bac ort.
+issues.closed_at=`dhún an cheist seo %[2]s`
+issues.reopened_at=`athoscail an t-eagrán seo %[2]s`
+issues.commit_ref_at=`rinne tagairt don cheist seo ó ghealltanas %[2]s`
+issues.ref_issue_from=`rinne dagairt don cheist seo %[4]s %[2]s`
+issues.ref_pull_from=`rinne dagairt don iarratas tarraingthe seo %[4]s %[ 2]s`
+issues.ref_closing_from=`rinne dagairt d'iarratas tarraingthe %[4]s a dhúnfaidh an cheist seo %[2]s`
+issues.ref_reopening_from=`rinne dagairt d'iarratas tarraingthe %[4]s a athosclóidh an cheist seo %[2]s`
+issues.ref_closed_from=`dhún an cheist seo %[4]s %[2]s`
+issues.ref_reopened_from=`d'athoscail an eagrán seo %[4]s %[2]s`
+issues.ref_from=`ó %[1]s`
+issues.author=Údar
+issues.author_helper=Is é an t-úsáideoir seo an t-údar.
+issues.role.owner=Úinéir
+issues.role.owner_helper=Is é an t-úsáideoir seo úinéir an stór seo.
+issues.role.member=Comhalta
+issues.role.member_helper=Is ball den eagraÃocht é an t-úsáideoir seo a bhfuil an stór seo ina úinéireacht.
+issues.role.collaborator=Comhoibritheoir
+issues.role.collaborator_helper=Tugadh cuireadh don úsáideoir seo comhoibriú ar an stóras.
+issues.role.first_time_contributor=Cuiditheoir den chéad uair
+issues.role.first_time_contributor_helper=Seo é an chéad uair a chuir an t-úsáideoir seo leis an stóras.
+issues.role.contributor=Cuiditheoir
+issues.role.contributor_helper=Tá an t-úsáideoir seo tiomanta don stóras roimhe seo.
+issues.re_request_review=Athiarraigh athbhreithniú
+issues.is_stale=Rinneadh athruithe ar an PR seo ón athbhreithniú seo
+issues.remove_request_review=Bain iarratas athbhreithni
+issues.remove_request_review_block=Nà féidir iarratas athbhreithnithe a bhaint
+issues.dismiss_review=DÃbhe Athbhreithnithe
+issues.dismiss_review_warning=An bhfuil tú cinnte gur mhaith leat an athbhreithnithe seo a dhÃbhe?
+issues.sign_in_require_desc=SÃnigh isteach chun dul isteach sa chomhrá seo.
+issues.edit=Cuir in eagar
+issues.cancel=Cealaigh
+issues.save=Sábháil
+issues.label_title=Ainm
+issues.label_description=Cur sÃos
+issues.label_color=Dath
+issues.label_exclusive=Eisiach
+issues.label_archive=Lipéad Cartlann
+issues.label_archived_filter=Taispeáin lipéid cartlainne
+issues.label_archive_tooltip=Eisiatar lipéid chartlainne de réir réamhshocraithe ó na moltaà nuair a dhéantar cuardach de réir lipéid.
+issues.label_exclusive_desc=Ainmnigh an lipéad scope/item
chun é a dhéanamh comheisiatach le lipéid scope/
eile.
+issues.label_exclusive_warning=Bainfear aon lipéid scóipe contrártha le linn eagarthóireacht a dhéanamh ar lipéid iarratais eisiúna nó tarraingthe.
+issues.label_count=%d lipéid
+issues.label_open_issues=%d saincheisteanna oscailte/iarratais tarraing
+issues.label_edit=Cuir in eagar
+issues.label_delete=Scrios
+issues.label_modify=Cuir Lipéad in Eagar
+issues.label_deletion=Scrios Lipéad
+issues.label_deletion_desc=Baineann lipéad a scriosadh é ó gach saincheist. Lean ar aghaidh?
+issues.label_deletion_success=Tá an lipéad scriosta.
+issues.label.filter_sort.alphabetically=AibÃtreach
+issues.label.filter_sort.reverse_alphabetically=Aisiompú in ord aibÃtre
+issues.label.filter_sort.by_size=Méid is lú
+issues.label.filter_sort.reverse_by_size=Méid is mó
+issues.num_participants=%d Rannpháirtithe
+issues.attachment.open_tab=`Cliceáil chun "%s" a fheiceáil i gcluaisÃn nua`
+issues.attachment.download=`Cliceáil chun "%s" a Ãoslódáil
+issues.subscribe=Liostáil
+issues.unsubscribe=DÃliostáil
+issues.unpin_issue=Bain pionna an t-eagrán
+issues.max_pinned=Nà féidir leat nÃos mó saincheisteanna a phionadh
+issues.pin_comment=phionnáil an %s seo
+issues.unpin_comment=bain pionna an %s seo
+issues.lock=Cuir glas ar an gcomhrá
+issues.unlock=DÃghlasáil comhrá
+issues.lock.unknown_reason=Nà féidir fadhb a ghlasáil le cúis anaithnid.
+issues.lock_duplicate=Nà féidir saincheist a ghlasáil faoi dhó.
+issues.unlock_error=Nà féidir saincheist nach bhfuil glasáilte a dhÃghlasáil.
+issues.lock_with_reason=curtha ar ceal mar %s agus comhrá teoranta do chomhoibrithe %s
+issues.lock_no_reason=comhrá faoi ghlas agus teoranta do chomhoibrithe %s
+issues.unlock_comment=an comhrá seo a dhÃghlasáil %s
+issues.lock_confirm=Glas
+issues.unlock_confirm=DÃghlasáil
+issues.lock.notice_1=- Nà féidir le húsáideoirà eile tuairimà nua a chur leis an gceist seo.
+issues.lock.notice_2=- Is féidir leatsa agus le comhoibrithe eile a bhfuil rochtain acu ar an stór seo fós tuairimà a fhágáil a fheiceann daoine eile.
+issues.lock.notice_3=- Is féidir leat an tsaincheist seo a dhÃghlasáil arÃs sa todhchaÃ.
+issues.unlock.notice_1=- Bheadh gach duine in ann trácht a dhéanamh ar an gceist seo arÃs.
+issues.unlock.notice_2=- Is féidir leat an tsaincheist seo a ghlasáil arÃs sa todhchaà i gcónaÃ.
+issues.lock.reason=Cúis le glasáil
+issues.lock.title=Glas comhrá ar an gceist seo.
+issues.unlock.title=DÃghlasáil comhrá ar an gceist seo.
+issues.comment_on_locked=Nà féidir leat trácht a dhéanamh ar shaincheist faoi ghlas.
+issues.delete=Scrios
+issues.delete.title=Scrios an t-eagrán seo?
+issues.delete.text=An bhfuil tú cinnte gur mhaith leat an cheist seo a scriosadh? (Bainfidh sé seo an t-inneachar go léir go buan. Smaoinigh ar é a dhúnadh ina ionad sin, má tá sé i gceist agat é a choinneáil i gcartlann)
+issues.tracker=Rianaitheoir Ama
+issues.start_tracking_short=Tosaigh Uaineoir
+issues.start_tracking=Rianú Am Tosaigh
+issues.start_tracking_history=`thosaigh sé ag obair %s`
+issues.tracker_auto_close=Stopfar ama go huathoibrÃoch nuair a dhúnfar an tsaincheist seo
+issues.tracking_already_started=`Tá tús curtha agat cheana féin ag rianú ama ar eagrán eile!`
+issues.stop_tracking=Stop Uaineadóir
+issues.stop_tracking_history=`stop sé ag obair %s`
+issues.cancel_tracking=Caith amach
+issues.cancel_tracking_history=`rianú ama curtha ar ceal %s`
+issues.add_time=Láimh Cuir Am leis
+issues.del_time=Scrios an log ama seo
+issues.add_time_short=Cuir Am leis
+issues.add_time_cancel=Cealaigh
+issues.add_time_history=`am caite curtha leis %s`
+issues.del_time_history=`an t-am caite scriosta %s`
+issues.add_time_hours=Uaireanta
+issues.add_time_minutes=Miontuairi
+issues.add_time_sum_to_small=NÃor iontráilÃodh aon am.
+issues.time_spent_total=An t-am iomlán a chaitear
+issues.time_spent_from_all_authors=`Am Iomlán Caitear: %s`
+issues.due_date=Dáta dlite
+issues.invalid_due_date_format=Nà mór 'bbbb-mm-ll' a bheith i bhformáid an dáta dlite.
+issues.error_modifying_due_date=Theip ar an dáta dlite a mhodhnú.
+issues.error_removing_due_date=Theip ar an dáta dlite a bhaint.
+issues.push_commit_1=Cuir %d gealltanas %s leis
+issues.push_commits_n=cuireadh %d tiomantas %s leis
+issues.force_push_codes=`bhrú i bhfeidhm %[1]s ó %[2]s
go %[4]s
%[6]s`
+issues.force_push_compare=Déan comparáid
+issues.due_date_form=bbbb-mm-ll
+issues.due_date_form_add=Cuir dáta dlite leis
+issues.due_date_form_edit=Cuir in eagar
+issues.due_date_form_remove=Bain
+issues.due_date_not_writer=Nà mór duit rochtain scrÃofa ar an stór seo d'fhonn dáta dlite eisiúna a nuashonrú.
+issues.due_date_not_set=NÃl aon dáta dlite socraithe.
+issues.due_date_added=cuireadh an dáta dlite %s %s
+issues.due_date_modified=d'athraigh an dáta dlite ó %[2]s go %[1]s %[3]s
+issues.due_date_remove=bainte an dáta dlite %s %s
+issues.due_date_overdue=Thar téarma
+issues.due_date_invalid=Tá an dáta dlite neamhbhailà nó lasmuigh den raon. Úsáid an fhormáid 'bbbb-mm-ll' le do thoil.
+issues.dependency.title=SpleithiúlachtaÃ
+issues.dependency.issue_no_dependencies=NÃl aon spleáchais leagtha sÃos.
+issues.dependency.pr_no_dependencies=NÃl aon spleáchais leagtha sÃos.
+issues.dependency.no_permission_1=NÃl cead agat spleáchas %d a léamh
+issues.dependency.no_permission_n=NÃl cead agat spleáchais %d a léamh
+issues.dependency.no_permission.can_remove=NÃl cead agat an spleáchas seo a léamh ach is féidir leis an spleáchas seo a bhaint
+issues.dependency.add=Cuir spleáchas leis…
+issues.dependency.cancel=Cealaigh
+issues.dependency.remove=Bain
+issues.dependency.remove_info=Bain an spleáchas seo
+issues.dependency.added_dependency=`cuireadh spleáchas nua %s`
+issues.dependency.removed_dependency=`bainte spleáchas %s`
+issues.dependency.pr_closing_blockedby=Cuireann na saincheisteanna seo a leanas bac ar an iarratas tarraingte seo a dhúnadh
+issues.dependency.issue_closing_blockedby=Tá na saincheisteanna seo a leanas bac ar dhúnadh an cheist seo
+issues.dependency.issue_close_blocks=Cuireann an tsaincheist seo bac ar dhúnadh na saincheisteanna
+issues.dependency.pr_close_blocks=Cuireann an iarratas tarraingthe seo bac ar dhúnadh na saincheisteanna
+issues.dependency.issue_close_blocked=Nà mór duit gach saincheist a chuireann bac ar an gceist seo a dhúnadh sular féidir leat é a dhúnadh.
+issues.dependency.issue_batch_close_blocked=Nà féidir saincheisteanna a roghnaÃonn tú a dhúnadh, toisc go bhfuil spleáchais oscailte fós ag eisiúint #%d
+issues.dependency.pr_close_blocked=Nà mór duit gach saincheist a bhlocálann an iarratas tarraingthe seo a dhúnadh sula féidir leat é a chumasc.
+issues.dependency.blocks_short=Bloic
+issues.dependency.blocked_by_short=Ag brath ar
+issues.dependency.remove_header=Bain spleáchas
+issues.dependency.issue_remove_text=Bainfidh sé seo an spleáchas ón gceist seo. Lean ar aghaidh?
+issues.dependency.pr_remove_text=Bainfidh sé seo an spleáchas ón iarratas tarraingthe seo. Lean ar aghaidh?
+issues.dependency.setting=Cumasaigh spleáchais le haghaidh Saincheisteanna agus Iarrataà Tar
+issues.dependency.add_error_same_issue=Nà féidir leat ceist a dhéanamh ag brath air féin.
+issues.dependency.add_error_dep_issue_not_exist=NÃl saincheist spleách ann.
+issues.dependency.add_error_dep_not_exist=Nà bhÃonn spleáchas ann.
+issues.dependency.add_error_dep_exists=Tá spleáchas ann cheana féin.
+issues.dependency.add_error_cannot_create_circular=Nà féidir leat spleáchas a chruthú le dhá shaincheist a chuireann bac ar a chéile.
+issues.dependency.add_error_dep_not_same_repo=Caithfidh an dá shaincheist a bheith sa stór céanna.
+issues.review.self.approval=Nà féidir leat d'iarratas tarraingthe féin a cheadú.
+issues.review.self.rejection=Nà féidir leat athruithe a iarraidh ar d'iarratas tarraingthe féin.
+issues.review.approve=ceadaigh na hathruithe seo %s
+issues.review.comment=athbhreithnithe %s
+issues.review.dismissed=dhiúltaigh athbhreithniú %s ó %s
+issues.review.dismissed_label=Dhiúltaigh
+issues.review.left_comment=d'fhág trácht
+issues.review.content.empty=Nà mór duit trácht a fhágáil a léirÃonn an t-athrú (Ã) iarrtha.
+issues.review.reject=athruithe iarrtha %s
+issues.review.wait=iarradh athbhreithniú %s
+issues.review.add_review_request=athbhreithniú iarrtha ó %s %s
+issues.review.remove_review_request=iarratas athbhreithnithe bainte le haghaidh %s %s
+issues.review.remove_review_request_self=dhiúltaigh %s a athbhreithniú
+issues.review.pending=Ar feitheamh
+issues.review.pending.tooltip=NÃl an nóta tráchta seo le feiceáil ag úsáideoirà eile faoi láthair. Chun do thuairimà ar feitheamh a chur isteach, roghnaigh "%s" -> "%s/%s/%s" ag barr an leathanaigh.
+issues.review.review=Léirmheas
+issues.review.reviewers=LéirmheasóirÃ
+issues.review.outdated=As dáta
+issues.review.outdated_description=Tá athrú tagtha ar ábhar ó rinneadh an trácht seo
+issues.review.option.show_outdated_comments=Taispeáin tráchtanna atá as dáta
+issues.review.option.hide_outdated_comments=Folaigh tráchtanna atá as dáta
+issues.review.show_outdated=Taispeáin as dáta
+issues.review.hide_outdated=Folaigh as dáta
+issues.review.show_resolved=Taispeáin réitithe
+issues.review.hide_resolved=Folaigh réitithe
+issues.review.resolve_conversation=Réitigh comhrá
+issues.review.un_resolve_conversation=Comhrá gan réiteach
+issues.review.resolved_by=mharcáil an comhrá seo mar réitigh
+issues.review.commented=Trácht
+issues.review.official=Ceadaithe
+issues.review.requested=Athbhreithniú ar feitheamh
+issues.review.rejected=Athruithe iarrtha
+issues.review.stale=Nuashonraithe ó faomhadh
+issues.review.unofficial=Ceadú gan áireamh
+issues.assignee.error=NÃor cuireadh gach sannaà leis mar gheall ar earráid gan choinne.
+issues.reference_issue.body=Comhlacht
+issues.content_history.deleted=scriosta
+issues.content_history.edited=curtha in eagar
+issues.content_history.created=cruthaithe
+issues.content_history.delete_from_history=Scrios ón stair
+issues.content_history.delete_from_history_confirm=Scrios ón stair?
+issues.content_history.options=Roghanna
+issues.reference_link=Tagairt: %s
+
+compare.compare_base=bonn
+compare.compare_head=déan comparáid
+
+pulls.desc=Cumasaigh iarratais tarraingthe agus athbhreithnithe cód.
+pulls.new=Iarratas Tarraingthe Nua
+pulls.new.blocked_user=Nà féidir iarratas tarraingthe a chruthú toisc go bhfuil úinéir an stórais bac ort.
+pulls.new.must_collaborator=Caithfidh tú a bheith ina chomhoibritheoir chun iarratas tarraingthe a chruthú.
+pulls.edit.already_changed=Nà féidir athruithe a shábháil ar an iarratas tarraingthe. DealraÃonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arÃs chun a gcuid athruithe a sheachaint
+pulls.view=Féach ar Iarratas Tarraing
+pulls.compare_changes=Iarratas Tarraingthe Nua
+pulls.allow_edits_from_maintainers=Ceadaigh eagarthóirà ó chothabhálaÃ
+pulls.allow_edits_from_maintainers_desc=Is féidir le húsáideoirà a bhfuil rochtain scrÃofa acu ar an mbunbhrainse brú chuig an bhrainse
+pulls.allow_edits_from_maintainers_err=Theip ar nuashonrú
+pulls.compare_changes_desc=Roghnaigh an brainse le cumasc isteach agus an brainse le tarraingt uaidh.
+pulls.has_viewed_file=Breathnaithe
+pulls.has_changed_since_last_review=Athraithe ó d'athbhreithniú deire
+pulls.viewed_files_label=BreathnaÃodh ar %[1]d / %[2]d comhaid
+pulls.expand_files=Leathnaigh gach comhaid
+pulls.collapse_files=Laghdaigh gach comhaid
+pulls.compare_base=cumaisc isteach
+pulls.compare_compare=tarraing ó
+pulls.switch_comparison_type=Athraigh cineál comparáide
+pulls.switch_head_and_base=Athraigh ceann agus bonn
+pulls.filter_branch=Brainse scagaire
+pulls.show_all_commits=Taispeáin gach gealltanas
+pulls.show_changes_since_your_last_review=Taispeáin athruithe ón léirmheas deiridh
+pulls.showing_only_single_commit=Ag taispeáint athruithe tiomantais %[1]s amháin
+pulls.showing_specified_commit_range=Ag taispeáint athruithe idir %[1]s..%[2]s
+pulls.select_commit_hold_shift_for_range=Roghnaigh tiomantas. Coinnigh shift + cliceáil chun raon a roghnú
+pulls.review_only_possible_for_full_diff=Nà féidir athbhreithniú a dhéanamh ach amháin nuair a bhreathnaÃtear ar an difrÃocht iomlán
+pulls.filter_changes_by_commit=Scagaigh de réir tiomantas
+pulls.nothing_to_compare=Tá na brainsà seo cothrom. Nà gá iarratas tarraingthe a chruthú.
+pulls.nothing_to_compare_have_tag=Tá an brainse/clib roghnaithe cothrom.
+pulls.nothing_to_compare_and_allow_empty_pr=Tá na brainsà seo cothrom. Beidh an PR seo folamh.
+pulls.has_pull_request=`Tá iarratas tarraingthe idir na brainsà seo ann cheana: %[2]s#%[3]d`
+pulls.create=Cruthaigh Iarratas Tarraing
+pulls.title_desc=ag iarraidh %[1]d gealltanas a chumasc ó %[2]s
go %[3]s
+pulls.merged_title_desc=cumasc %[1]d tiomantas ó %[2]s
go %[3]s
%[4]s
+pulls.change_target_branch_at=`athraigh an spriocbhrainse ó %s go %s %s`
+pulls.tab_conversation=Comhrá
+pulls.tab_commits=TiomáintÃ
+pulls.tab_files=Comhaid Athraithe
+pulls.reopen_to_merge=Athoscail an t-iarratas tarraingthe seo le do thoil chun cumasc a dhéanamh.
+pulls.cant_reopen_deleted_branch=Nà féidir an t-iarratas tarraingthe seo a athoscailt toisc gur scriosadh an brainse.
+pulls.merged=Cumaiscthe
+pulls.merged_success=D'éirigh leis an iarratas tarraingthe a chumasc agus a dhúnadh
+pulls.closed=Iarratas tarraingthe dúnta
+pulls.manually_merged=Cumaisc de láimh
+pulls.merged_info_text=Is féidir an brainse %s a scriosadh anois.
+pulls.is_closed=Tá an t-iarratas tarraingthe dúnta.
+pulls.title_wip_desc=`Tosaigh an teideal le %s chun an t-iarratas tarraingthe a chosc ó chumasc de thaisme.`
+pulls.cannot_merge_work_in_progress=Tá an t-iarratas tarraingthe seo marcáilte mar obair atá ar siúl.
+pulls.still_in_progress=Fós ar siúl?
+pulls.add_prefix=Cuir réimÃr %s leis
+pulls.remove_prefix=Bain an réimÃr %s
+pulls.data_broken=Tá an t-iarratas tarraingthe seo briste mar gheall ar fhaisnéis forc a bheith in easnamh.
+pulls.files_conflicted=Tá athruithe ag an iarratas tarraingthe seo atá contrártha leis an spriocbhrainse.
+pulls.is_checking=Tá seiceáil coinbhleachta cumaisc ar siúl. Bain triail eile as i gceann cúpla nóiméad.
+pulls.is_ancestor=Tá an brainse seo san áireamh cheana féin sa spriocbhrainse. NÃl aon rud le cumasc.
+pulls.is_empty=Tá na hathruithe ar an mbrainse seo ar an spriocbhrainse cheana féin. Is tiomantas folamh é seo.
+pulls.required_status_check_failed=NÃor éirigh le roinnt seiceálacha riachtanacha.
+pulls.required_status_check_missing=Tá roinnt seiceanna riachtanacha ar iarraidh.
+pulls.required_status_check_administrator=Mar riarthóir, féadfaidh tú an t-iarratas tarraingthe seo a chumasc fós.
+pulls.blocked_by_approvals=NÃl go leor ceadaithe ag an iarraidh tarraingthe seo fós. DeonaÃodh %d den fhaomhadh %d.
+pulls.blocked_by_approvals_whitelisted=NÃl go leor ceaduithe riachtanacha ag an iarratas tarraingte seo go fóill. %d de %d faomhadh tugtha ó úsáideoirà nó foirne ar an liosta ceadaithe.
+pulls.blocked_by_rejection=Tá athruithe ag athbhreithneoir oifigiúil ag an iarratas tarraingthe seo.
+pulls.blocked_by_official_review_requests=Tá iarratais ar athbhreithniú oifigiúil ag an iarratas tarraingte seo.
+pulls.blocked_by_outdated_branch=Tá bac ar an iarratas tarraingte seo toisc go bhfuil sé as dáta.
+pulls.blocked_by_changed_protected_files_1=Cuirtear bac ar an iarratas tarraingthe seo toisc go n-athraÃonn sé comhad cosanta:
+pulls.blocked_by_changed_protected_files_n=Tá bac ar an iarratas tarraingthe seo toisc go n-athraÃonn sé comhaid chosanta:
+pulls.can_auto_merge_desc=Is féidir an t-iarratas tarraingt seo a chumasc go huathoibrÃoch.
+pulls.cannot_auto_merge_desc=Nà féidir an t-iarratas tarraingthe seo a chumasc go huathoibrÃoch mar gheall ar choinbhleachtaÃ.
+pulls.cannot_auto_merge_helper=Cumaisc de láimh chun na coinbhleachtaà a réiteach.
+pulls.num_conflicting_files_1=Comhad contrártha %d
+pulls.num_conflicting_files_n=%d comhaid contrártha
+pulls.approve_count_1=%d ceadú
+pulls.approve_count_n=%d faomhadh
+pulls.reject_count_1=%d iarratas athraithe
+pulls.reject_count_n=%d iarratas ar athrú
+pulls.waiting_count_1=%d athbhreithniú feithimh
+pulls.waiting_count_n=%d athbhreithnithe feithimh
+pulls.wrong_commit_id=caithfidh comhad id a bheith ina id tiomanta ar an spriocbhrainse
+
+pulls.no_merge_desc=Nà féidir an t-iarratas tarraingthe seo a chumasc toisc go bhfuil gach rogha cumaisc stór dÃchumasaithe.
+pulls.no_merge_helper=Cumasaigh roghanna cumaisc i socruithe an stór nó cumasc an t-iarratas tarraingthe de láimh.
+pulls.no_merge_wip=Nà féidir an t-iarratas tarraingthe seo a chumasc toisc go bhfuil sé marcáilte mar obair atá ar siúl é.
+pulls.no_merge_not_ready=NÃl an t-iarratas tarraingthe seo réidh le cumasc, seiceáil stádas athbhreithnithe agus seiceálacha stádais.
+pulls.no_merge_access=NÃl tú údaraithe chun an t-iarratas tarraingthe seo a chumasc.
+pulls.merge_pull_request=Cruthaigh tiomantas cumaisc
+pulls.rebase_merge_pull_request=Athbhunaigh ansin go tapa ar aghaidh
+pulls.rebase_merge_commit_pull_request=Rebase ansin cruthaigh tiomantas cumaisc
+pulls.squash_merge_pull_request=Cruthaigh tiomantas scuaise
+pulls.fast_forward_only_merge_pull_request=Go tapa ar aghaidh amháin
+pulls.merge_manually=Cumaisc de láimh
+pulls.merge_commit_id=ID an tiomantis cumaisc
+pulls.require_signed_wont_sign=ÉilÃonn an bhrainse tiomáintà shÃnithe, ach nà shÃnÃfear an cumasc seo
+
+pulls.invalid_merge_option=Nà féidir leat an rogha cumaisc seo a úsáid don iarratas tarraingthe seo.
+pulls.merge_conflict=Theip ar Cumaisc: Bhà coinbhleacht ann agus é ag cumasc. Leid: Bain triail as straitéis dhifriúil
+pulls.merge_conflict_summary=Teachtaireacht Earráide
+pulls.rebase_conflict=Theip ar Chumasc: Bhà coinbhleacht ann agus tiomantas á athbhunú: %[1]s. Leid: Bain triail as straitéis eile
+pulls.rebase_conflict_summary=Teachtaireacht Earráide
+pulls.unrelated_histories=Theip ar Cumaisc: Nà roinneann an ceann cumaisc agus an bonn stair choiteann. Leid: Bain triail as straitéis dhifriúil
+pulls.merge_out_of_date=Theip ar Cumaisc: Agus an cumaisc á ghiniúint, nuashonraÃodh an bonn. Leid: Bain triail as arÃs.
+pulls.head_out_of_date=Theip ar Cumaisc: Agus an cumaisc á ghiniúint, nuashonraÃodh an ceann. Leid: Bain triail as arÃs.
+pulls.has_merged=Theip ar: CumaisÃodh an t-iarratas tarraingthe, nà féidir leat a chumasc arÃs nó an spriocbhrainse a athrú.
+pulls.push_rejected=Theip ar Brúigh: DiúltaÃodh don bhrú. Déan athbhreithniú ar na Git Hooks don stór seo.
+pulls.push_rejected_summary=Teachtaireacht Diúltaithe Iomlán
+pulls.push_rejected_no_message=Theip ar Brúigh: DiúltaÃodh don bhrú ach nà raibh aon teachtaireacht iargúlta ann. Déan athbhreithniú ar Git Hooks don stór seo
+pulls.open_unmerged_pull_exists=`Nà féidir leat oibrÃocht athoscailte a dhéanamh toisc go bhfuil iarratas tarraingthe ar feitheamh (#%d) le hairÃonna comhionanna. `
+pulls.status_checking=Tá roinnt seiceála ar feitheamh
+pulls.status_checks_success=D'éirigh le gach seiceáil
+pulls.status_checks_warning=Thuairiscigh roinnt seiceálacha rabhaidh
+pulls.status_checks_failure=Theip ar roinnt seiceálacha
+pulls.status_checks_error=Thug roinnt seiceálacha earráidÃ
+pulls.status_checks_requested=Riachtanach
+pulls.status_checks_details=SonraÃ
+pulls.status_checks_hide_all=Folaigh gach seiceáil
+pulls.status_checks_show_all=Taispeáin gach seiceáil
+pulls.update_branch=Nuashonrú brainse trà chumasc
+pulls.update_branch_rebase=Nuashonraigh an bhrainse trà athbhunú
+pulls.update_branch_success=Bhà nuashonrú brainse rathúil
+pulls.update_not_allowed=Nà cheadaÃtear duit brainse a nuashonrú
+pulls.outdated_with_base_branch=Tá an brainse seo as dáta leis an mbunbhrainse
+pulls.close=Dún Iarratas Tarraing
+pulls.closed_at=`dhún an t-iarratas tarraingthe seo %[2]s`
+pulls.reopened_at=`athoscail an t-iarratas tarraingthe seo %[2]s`
+pulls.cmd_instruction_hint=`Féach ar treoracha na lÃne ordaithe.`
+pulls.cmd_instruction_checkout_title=Seiceáil
+pulls.cmd_instruction_checkout_desc=Ó stór tionscadail, seiceáil brainse nua agus déan tástáil ar na hathruithe.
+pulls.cmd_instruction_merge_title=Cumaisc
+pulls.cmd_instruction_merge_desc=Cumaisc na hathruithe agus nuashonrú ar Gitea.
+pulls.cmd_instruction_merge_warning=Rabhadh: Nà féidir leis an oibrÃocht seo an t-iarratas tarraingthe a chumasc toisc nach raibh "cumasc láimhe uathoibrÃoch" cumasaithe
+pulls.clear_merge_message=Glan an teachtaireacht chumaisc
+pulls.clear_merge_message_hint=Má imrÃtear an teachtaireacht chumaisc nà bhainfear ach ábhar na teachtaireachta tiomanta agus coimeádfar leantóirà git ginte ar nós "Co-Authored-By …".
+
+pulls.auto_merge_button_when_succeed=(Nuair a éirÃonn le seiceálacha)
+pulls.auto_merge_when_succeed=Cumaisc uathoibrÃoch nuair a éirÃonn
+pulls.auto_merge_newly_scheduled=Bhà an t-iarratas tarraingt sceidealta le cumasc nuair a éirÃonn le gach seiceáil.
+pulls.auto_merge_has_pending_schedule=Bhà an t-iarratas tarraingthe seo sceidealaithe ag %[1]s chun cumasc uathoibrÃoch a dhéanamh nuair a éirÃonn le gach seiceáil %[2]s.
+
+pulls.auto_merge_cancel_schedule=Cealaigh cumasc uathoibrÃoch
+pulls.auto_merge_not_scheduled=NÃl an t-iarratas tarraingthe seo sceidealaithe le cumasc go huathoibrÃoch.
+pulls.auto_merge_canceled_schedule=CealaÃodh an cumaisc uathoibrÃoch don iarratas tarraingthe seo.
+
+pulls.auto_merge_newly_scheduled_comment=`sceidealta an t-iarratas tarraingthe seo le cumasc uathoibrithe nuair a éirÃonn le gach seiceáil %[1]s`
+pulls.auto_merge_canceled_schedule_comment=`curtha ar ceal uathchumasc leis an iarratas tarraingthe seo nuair a éirÃonn le gach seiceáil %[1]s`
+
+pulls.delete.title=Scrios an t-iarratas tarraingthe seo?
+pulls.delete.text=An bhfuil tú cinnte gur mhaith leat an t-iarratas tarraingthe seo a scriosadh? (Bainfidh sé seo an t-inneachar go léir go buan. Smaoinigh ar é a dhúnadh ina ionad sin, má tá sé i gceist agat é a choinneáil i gcartlann)
+
+pulls.recently_pushed_new_branches=Bhrúigh tú ar bhrainse %[1]s %[2]s
+
+pull.deleted_branch=(scriosta): %s
+pull.agit_documentation=Déan athbhreithniú ar dhoiciméid faoi AGit
+
+comments.edit.already_changed=Nà féidir athruithe a shábháil ar an trácht. DealraÃonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arÃs chun a gcuid athruithe a sheachaint
+
+milestones.new=Cloch MhÃle Nua
+milestones.closed=Dúnta %s
+milestones.update_ago=Nuashonraithe %s
+milestones.no_due_date=Gan dáta dlite
+milestones.open=Oscailte
+milestones.close=Dún
+milestones.new_subheader=Is féidir le clocha mÃle cabhrú leat ceisteanna a eagrú agus a ndul chun cinn a rianú.
+milestones.completeness=%d%% CrÃochnaithe
+milestones.create=Cruthaigh Cloch MhÃle
+milestones.title=Teideal
+milestones.desc=Cur sÃos
+milestones.due_date=Dáta dlite (roghnach)
+milestones.clear=Glan
+milestones.invalid_due_date_format=Caithfidh formáid dáta dlite a bheith 'bbbb-mm-ll'.
+milestones.create_success=CruthaÃodh an chloch mhÃle "%s".
+milestones.edit=Cuir Cloch MhÃle in eagar
+milestones.edit_subheader=EagraÃonn Garspriocanna saincheisteanna agus rianaÃtear dul chun cinn.
+milestones.cancel=Cealaigh
+milestones.modify=Nuashonraigh Cloch MhÃle
+milestones.edit_success=NuashonraÃodh cloch mhÃle "%s".
+milestones.deletion=Scrios Cloch MhÃle
+milestones.deletion_desc=Cuireann scriosadh cloch mhÃle é as gach saincheist ghaolmhar. Lean ar aghaidh?
+milestones.deletion_success=Tá an chloch mhÃle scriosta.
+milestones.filter_sort.name=Ainm
+milestones.filter_sort.earliest_due_data=An dáta dlite is luaithe
+milestones.filter_sort.latest_due_date=An dáta dlite is déanaÃ
+milestones.filter_sort.least_complete=Is lú crÃochnaithe
+milestones.filter_sort.most_complete=Is mó crÃochnaithe
+milestones.filter_sort.most_issues=Saincheisteanna is mó
+milestones.filter_sort.least_issues=Saincheisteanna is lú
+
+signing.will_sign=SÃneofar an gealltanas seo le heochair "%s".
+signing.wont_sign.error=Bhà earráid ann agus tú ag seiceáil an féidir an tiomantas a shÃniú.
+signing.wont_sign.nokey=NÃl aon eochair ar fáil chun an tiomantas seo a shÃniú.
+signing.wont_sign.never=Nà shÃnÃtear tiomáintà riamh.
+signing.wont_sign.always=SÃnÃtear tiomáintà i gcónaÃ.
+signing.wont_sign.pubkey=Nà shÃnÃofar an tiomantas toisc nach bhfuil eochair phoiblà agat a bhaineann le do chuntas.
+signing.wont_sign.twofa=Caithfidh fÃordheimhniú dhá-fhachtóir a bheith agat chun tiomáintà a shÃniú.
+signing.wont_sign.parentsigned=NÃ shÃnÃofar an tiomantas toisc nach bhfuil an tiomantas tuismitheora sÃnithe.
+signing.wont_sign.basesigned=NÃ shÃnÃfear an cumasc toisc nach bhfuil an tiomantas bunaithe sÃnithe.
+signing.wont_sign.headsigned=NÃ shÃnÃfear an cumasc toisc nach bhfuil an tiomantas ceann sÃnithe.
+signing.wont_sign.commitssigned=Nà shÃnÃfear an cumasc toisc nach bhfuil na tiomáintà gaolmhara go léir sÃnithe.
+signing.wont_sign.approved=NÃ shÃnÃofar an cumaisc toisc nach bhfuil an PR ceadaithe.
+signing.wont_sign.not_signed_in=NÃl tú sÃnithe isteach.
+
+ext_wiki=Rochtain ar Vicà Seachtrach
+ext_wiki.desc=Nasc le vicà seachtrach.
+
+wiki=VicÃ
+wiki.welcome=Fáilte go dtà an VicÃ.
+wiki.welcome_desc=Ligeann an vicà duit cáipéisÃocht a scrÃobh agus a roinnt le comhoibrithe.
+wiki.desc=ScrÃobh agus roinn cáipéisÃocht le comhoibrithe.
+wiki.create_first_page=Cruthaigh an Chéad Leathanach
+wiki.page=Leathanach
+wiki.filter_page=Leathanach scagaire
+wiki.new_page=Leathanach
+wiki.page_title=Teideal an leathanaigh
+wiki.page_content=Ãbhar an leathanaigh
+wiki.default_commit_message=ScrÃobh nóta faoin nuashonrú leathanaigh seo (roghnach).
+wiki.save_page=Sábháil Leathanach
+wiki.last_commit_info=Cuireadh %s an leathanach seo in eagar %s
+wiki.edit_page_button=Cuir in eagar
+wiki.new_page_button=Leathanach Nua
+wiki.file_revision=Athbhreithniú Leathanach
+wiki.wiki_page_revisions=Athbhreithnithe Leathanach VicÃ
+wiki.back_to_wiki=Ar ais go leathanach vicÃ
+wiki.delete_page_button=Scrios Leathanach
+wiki.delete_page_notice_1=Nà féidir leathanach vicà "%s" a scriosadh. Lean ort?
+wiki.page_already_exists=Tá leathanach vicà leis an ainm céanna ann cheana féin.
+wiki.reserved_page=Tá an t-ainm leathanaigh vicà "%s" in áirithe.
+wiki.pages=Leathanaigh
+wiki.last_updated=Nuashonraithe deireanach %s
+wiki.page_name_desc=Cuir isteach ainm don leathanach Vicà seo. Is iad roinnt ainmneacha speisialta: 'Baile', '_Sidebar' agus '_Footer'.
+wiki.original_git_entry_tooltip=Féach ar an gcomhad bunaidh Git in ionad nasc cairdiúil a úsáid.
+
+activity=GnÃomhaÃocht
+activity.navbar.pulse=Cuisle
+activity.navbar.code_frequency=MinicÃocht Cód
+activity.navbar.contributors=Rannpháirtithe
+activity.navbar.recent_commits=Tiomáintà le déanaÃ
+activity.period.filter_label=Tréimhse:
+activity.period.daily=1 lá
+activity.period.halfweekly=3 lá
+activity.period.weekly=1 seachtain
+activity.period.monthly=1 mhÃ
+activity.period.quarterly=3 mhÃ
+activity.period.semiyearly=6 mhÃ
+activity.period.yearly=1 bhliain
+activity.overview=Forbhreathnú
+activity.active_prs_count_1=%d Iarratas Tarraingthe GnÃomhach
+activity.active_prs_count_n=%d Iarratais Tharraing GhnÃomhach
+activity.merged_prs_count_1=Iarratas Tarraing Cumaisc
+activity.merged_prs_count_n=Iarratais Tharraing Chomhcheangail
+activity.opened_prs_count_1=Iarratas Tarraing Beartaithe
+activity.opened_prs_count_n=Iarratais Tarraing Beartaithe
+activity.title.user_1=%d úsáideoir
+activity.title.user_n=%d úsáideoirÃ
+activity.title.prs_1=Iarratas tarraing %d
+activity.title.prs_n=%d Iarratais Tarraing
+activity.title.prs_merged_by=%s a chumasc ag %s
+activity.title.prs_opened_by=%s arna mholadh ag %s
+activity.merged_prs_label=Cumaiscthe
+activity.opened_prs_label=Molta
+activity.active_issues_count_1=%d Eagrán GnÃomhach
+activity.active_issues_count_n=%d Ceisteanna GnÃomhacha
+activity.closed_issues_count_1=Saincheist Dúnta
+activity.closed_issues_count_n=Saincheisteanna Dúnta
+activity.title.issues_1=Saincheist %d
+activity.title.issues_n=Saincheisteanna %d
+activity.title.issues_closed_from=%s dúnta ó %s
+activity.title.issues_created_by=%s cruthaithe ag %s
+activity.closed_issue_label=Dúnta
+activity.new_issues_count_1=Eagrán Nua
+activity.new_issues_count_n=Saincheisteanna Nua
+activity.new_issue_label=OsclaÃodh
+activity.title.unresolved_conv_1=%d Comhrá Neamhréitithe
+activity.title.unresolved_conv_n=%d Comhráite Neamhréitithe
+activity.unresolved_conv_desc=NÃor réitÃodh na saincheisteanna agus na hiarratais tarraingthe seo le déanaà fós.
+activity.unresolved_conv_label=Oscailte
+activity.title.releases_1=Scaoileadh %d
+activity.title.releases_n=Eisiúintà %d
+activity.title.releases_published_by=%s foilsithe ag %s
+activity.published_release_label=Foilsithe
+activity.no_git_activity=NÃor rinneadh aon ghnÃomhaÃocht tiomanta sa tréimhse seo.
+activity.git_stats_exclude_merges=Gan cumaisc a áireamh,
+activity.git_stats_author_1=%d údar
+activity.git_stats_author_n=%d údair
+activity.git_stats_pushed_1=tá sé brúite
+activity.git_stats_pushed_n=tá brú orthu
+activity.git_stats_commit_1=%d tiomantas
+activity.git_stats_commit_n=%d tiomáintÃ
+activity.git_stats_push_to_branch=chuig %s agus
+activity.git_stats_push_to_all_branches=chuig gach brainse.
+activity.git_stats_on_default_branch=Ar %s,
+activity.git_stats_file_1=%d comhad
+activity.git_stats_file_n=%d comhaid
+activity.git_stats_files_changed_1=tá athrú tagtha
+activity.git_stats_files_changed_n=tá athraithe
+activity.git_stats_additions=agus tá ann
+activity.git_stats_addition_1=%d breisiú
+activity.git_stats_addition_n=%d breiseanna
+activity.git_stats_and_deletions=agus
+activity.git_stats_deletion_1=%d scriosadh
+activity.git_stats_deletion_n=%d scriosta
+
+contributors.contribution_type.filter_label=Cineál rannÃocaÃochta:
+contributors.contribution_type.commits=TiomáintÃ
+contributors.contribution_type.additions=Breiseanna
+contributors.contribution_type.deletions=Scriosadh
+
+settings=Socruithe
+settings.desc=Is é socruithe an áit ar féidir leat na socruithe don stóras a bhainistiú
+settings.options=Stóras
+settings.collaboration=ComhoibritheoirÃ
+settings.collaboration.admin=Riarthóir
+settings.collaboration.write=ScrÃobh
+settings.collaboration.read=Léigh
+settings.collaboration.owner=Úinéir
+settings.collaboration.undefined=Neamhshainithe
+settings.hooks=Crúcaà Gréasán
+settings.githooks=Crúcanna Git
+settings.basic_settings=Socruithe Bunúsacha
+settings.mirror_settings=Socruithe Scáthán
+settings.mirror_settings.docs=Cuir do stóras ar bun chun tiomáintÃ, clibeanna agus brainsà a shioncronú go huathoibrÃoch le stóras eile.
+settings.mirror_settings.docs.disabled_pull_mirror.instructions=Socraigh do thionscadal chun tiomáintÃ, clibeanna agus brainsà a bhrú go huathoibrÃoch chuig stóras eile. Tá scátháin tarraingthe dÃchumasaithe ag riarthóir do shuÃomh.
+settings.mirror_settings.docs.disabled_push_mirror.instructions=Socraigh do thionscadal chun tiomáintÃ, clibeanna agus brainsà a tharraingt go huathoibrÃoch ó stóras eile.
+settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Faoi láthair, nà féidir é seo a dhéanamh ach sa roghchlár "Imirce Nua". Le haghaidh tuilleadh eolais, téigh i gcomhairle le do thoil:
+settings.mirror_settings.docs.disabled_push_mirror.info=Chuir riarthóir do shuÃomh faoi dhÃchumasú scátháin bhrú.
+settings.mirror_settings.docs.no_new_mirrors=Tá do stóras ag teacht le hathruithe chuig nó ó stóras eile. Cuimhnigh le do thoil nach féidir leat scátháin nua a chruthú faoi láthair.
+settings.mirror_settings.docs.can_still_use=Cé nach féidir leat scátháin atá ann cheana a mhodhnú nó cinn nua a chruthú, féadfaidh tú do scáthán atá ann cheana a úsáid fós.
+settings.mirror_settings.docs.pull_mirror_instructions=Chun scáthán tarraingthe a shocrú, téigh i gcomhairle le do thoil:
+settings.mirror_settings.docs.more_information_if_disabled=Is féidir leat tuilleadh eolais a fháil faoi scátháin bhrú agus tarraingthe anseo:
+settings.mirror_settings.docs.doc_link_title=Conas is féidir liom na stórtha a scáthánú?
+settings.mirror_settings.docs.doc_link_pull_section=an chuid "Ag tarraingt ó stóras" den doiciméadú.
+settings.mirror_settings.docs.pulling_remote_title=Ag tarraingt ó stóras cianda
+settings.mirror_settings.mirrored_repository=Stóras scátháin
+settings.mirror_settings.pushed_repository=Stóras brúite
+settings.mirror_settings.direction=Treo
+settings.mirror_settings.direction.pull=Tarraingt
+settings.mirror_settings.direction.push=Brúigh
+settings.mirror_settings.last_update=Nuashonrú deireanach
+settings.mirror_settings.push_mirror.none=NÃl aon scátháin bhrú cumraithe
+settings.mirror_settings.push_mirror.remote_url=URL Stóras Cianda Git
+settings.mirror_settings.push_mirror.add=Cuir Scáthán Brúigh leis
+settings.mirror_settings.push_mirror.edit_sync_time=Eagar eatramh sioncronaithe scátháin
+
+settings.sync_mirror=Sioncronaigh Anois
+settings.pull_mirror_sync_in_progress=Athruithe a tharraingt ón iargúlta %s i láthair na huaire.
+settings.push_mirror_sync_in_progress=Athruithe a bhrú ar an iargúlta %s i láthair na huaire.
+settings.site=Láithreán Gréasáin
+settings.update_settings=Nuashonrú Socruithe
+settings.update_mirror_settings=Nuashonraigh Socruithe Scátháin
+settings.branches.switch_default_branch=Athraigh Brainse Réamhshocraithe
+settings.branches.update_default_branch=An Brainse Réamhshocraithe a nuashonrú
+settings.branches.add_new_rule=Cuir Riail Nua leis
+settings.advanced_settings=Ardsocruithe
+settings.wiki_desc=Cumasaigh Stór VicÃ
+settings.use_internal_wiki=Úsáid Vicà Insuite
+settings.default_wiki_branch_name=Ainm Brainse Réamhshocraithe VicÃ
+settings.default_wiki_everyone_access=Cead Rochtana Réamhshocraithe d'úsáideoirà sÃnithe isteach:
+settings.failed_to_change_default_wiki_branch=Theip ar an brainse réamhshocraithe vicà a athrú.
+settings.use_external_wiki=Úsáid Vicà Seachtrach
+settings.external_wiki_url=URL Vicà Seachtrach
+settings.external_wiki_url_error=Nà URL bailà é URL seachtrach vicÃ.
+settings.external_wiki_url_desc=AtreoraÃtear cuairteoirà chuig an URL wiki seachtrach agus iad ag cliceáil ar an gcluaisÃn wiki.
+settings.issues_desc=Cumasaigh Rianóir Saincheist Stórais
+settings.use_internal_issue_tracker=Úsáid Rianóir Saincheist Ionsuite
+settings.use_external_issue_tracker=Úsáid Rianaire Eisiúint Sheachtrach
+settings.external_tracker_url=URL Rianaithe Saincheisteanna Seachtrach
+settings.external_tracker_url_error=Nà URL bailà é an URL rianaitheora saincheisteanna seachtrach.
+settings.external_tracker_url_desc=Déantar cuairteoirà a atreorú chuig an URL rianaithe eisiúintà seachtracha nuair a chliceálann siad ar an táb saincheisteanna.
+settings.tracker_url_format=Formáid URL Rianaithe Saincheist Seachtrach
+settings.tracker_url_format_error=Nà URL bailà é an fhormáid URL rianaitheora saincheisteanna seachtrach.
+settings.tracker_issue_style=Formáid Uimhir Rianaithe Saincheisteanna
+settings.tracker_issue_style.numeric=Uimhriúil
+settings.tracker_issue_style.alphanumeric=Alfauméireacha
+settings.tracker_issue_style.regexp=Léiriú Rialta
+settings.tracker_issue_style.regexp_pattern=Patrún Léirithe Rialta
+settings.tracker_issue_style.regexp_pattern_desc=Úsáidfear an chéad ghrúpa a gabhadh in ionad {index}
.
+settings.tracker_url_format_desc=Úsáid na sealbhóirà áite {user}
, {repo}
agus {index}
le haghaidh an ainm úsáideora, an t-ainm stórtha agus an t-innéacs eisiúna.
+settings.enable_timetracker=Cumasaigh Rianú Ama
+settings.allow_only_contributors_to_track_time=Lig do Rannpháirtithe Amach Am a Rianú
+settings.pulls_desc=Cumasaigh Iarratais Tarraingthe Stóras
+settings.pulls.ignore_whitespace=Déan neamhaird de spás bán le haghaidh coinbhleachtaÃ
+settings.pulls.enable_autodetect_manual_merge=Cumasaigh cumasc láimhe autodetector (Nóta: I roinnt cásanna speisialta, is féidir mÃbhreithiúnais tarlú)
+settings.pulls.allow_rebase_update=Cumasaigh brainse iarratais tarraingthe a nuashonrú trà athbhunú
+settings.pulls.default_delete_branch_after_merge=Scrios brainse an iarratais tarraingthe tar éis cumasc de réir réamhshocraithe
+settings.pulls.default_allow_edits_from_maintainers=Ceadaigh eagarthóirà ó chothabhálaà de réir réamhshocraithe
+settings.releases_desc=Cumasaigh Eisiúintà Stórais
+settings.packages_desc=Cumasaigh Clárlann na bPacáistà Taisclainne
+settings.projects_desc=Cumasaigh Tionscadail
+settings.projects_mode_desc=Mód Tionscadail (cé na cineálacha tionscadail le taispeáint)
+settings.projects_mode_repo=Tionscadail stórais amháin
+settings.projects_mode_owner=Tionscadail úsáideora nó org amháin
+settings.projects_mode_all=Gach tionscadal
+settings.actions_desc=Cumasaigh GnÃomhartha Taiscthe
+settings.admin_settings=Socruithe Riarthóra
+settings.admin_enable_health_check=Cumasaigh Seiceálacha Sláinte Stórais (git fsck)
+settings.admin_code_indexer=Innéacsaitheoir Cód
+settings.admin_stats_indexer=Innéacsóir Staitisticà Cód
+settings.admin_indexer_commit_sha=SHA Innéacsaithe Deiridh
+settings.admin_indexer_unindexed=Neamh-innéacsaithe
+settings.reindex_button=Cuir le Scuaine Reindex
+settings.reindex_requested=Athinnéacsú Iarrtha
+settings.admin_enable_close_issues_via_commit_in_any_branch=Saincheist a dhúnadh trà ghealltanas a rinneadh i mbrainse neamh-mhainneachtana
+settings.danger_zone=Crios Contúirte
+settings.new_owner_has_same_repo=Tá stóras leis an ainm céanna ag an úinéir nua cheana féin. Roghnaigh ainm eile le do thoil.
+settings.convert=Tiontaigh go Stóras Rialta
+settings.convert_desc=Is féidir leat an scáthán seo a thiontú ina stór rialta. Nà féidir é seo a chur ar ais.
+settings.convert_notices_1=Déanfaidh an oibrÃocht seo an scáthán a thiontú ina stóras rialta agus nà féidir é a chur ar ais.
+settings.convert_confirm=Tiontaigh Stóras
+settings.convert_succeed=Tá an scáthán tiontaithe ina stóras rialta.
+settings.convert_fork=Tiontaigh go Stóras Rialta
+settings.convert_fork_desc=Is féidir leat an forc seo a thiontú ina stóras rialta. Nà féidir é seo a chur ar ais.
+settings.convert_fork_notices_1=Déanfaidh an oibrÃocht seo an forc a thiontú ina stóras rialta agus nà féidir é a chur ar ais.
+settings.convert_fork_confirm=Tiontaigh Stóras
+settings.convert_fork_succeed=Tá an forc tiontaithe ina stóras rialta.
+settings.transfer=Úinéireacht Aistrithe
+settings.transfer.rejected=DiúltaÃodh d'aistriú stóras.
+settings.transfer.success=D'éirigh le haistriú stóras.
+settings.transfer.blocked_user=Nà féidir an stóras a aistriú toisc go bhfuil bac á chur ort ag an úinéir nua.
+settings.transfer_abort=Cealaigh aistriú
+settings.transfer_abort_invalid=Nà féidir leat aistriú stóras nach bhfuil ann a chealú.
+settings.transfer_abort_success=Cuireadh an t-aistriú stóras chuig %s ar ceal go rathúil.
+settings.transfer_desc=Aistrigh an stóras seo chuig úsáideoir nó chuig eagraÃocht a bhfuil cearta riarthóra agat ina leith.
+settings.transfer_form_title=Cuir isteach ainm an stóras mar dhearbhú:
+settings.transfer_in_progress=Tá aistriú leanúnach ann faoi láthair. Cealaigh é más mian leat an stóras seo a aistriú chuig úsáideoir eile.
+settings.transfer_notices_1=- Caillfidh tú rochtain ar an stóras má aistrÃonn tú é chuig úsáideoir aonair.
+settings.transfer_notices_2=- Coimeádfaidh tú rochtain ar an stóras má aistrÃonn tú é chuig eagraÃocht a bhfuil (comh)úinéir agat.
+settings.transfer_notices_3=- Má tá an stóras prÃobháideach agus má aistrÃtear é chuig úsáideoir aonair, cinnteoidh an gnÃomh seo go bhfuil ar a laghad cead léite ag an úsáideoir (agus athraÃonn sé ceadanna más gá).
+settings.transfer_notices_4=- Más le heagraÃocht an stóras, agus má aistrÃonn tú chuig eagraÃocht nó duine aonair eile é, caillfidh tú na naisc idir saincheisteanna an taisclainne agus bord tionscadail na heagraÃochta.
+settings.transfer_owner=Úinéir nua
+settings.transfer_perform=Déan Aistriú
+settings.transfer_started=`Tá an stóras seo marcáilte le haistriú agus tá sé ag fanacht le deimhniú ó "%s"`
+settings.transfer_succeed=Tá an stóras aistrithe.
+settings.signing_settings=Socruithe FÃoraithe SÃnithe
+settings.trust_model=Samhail Iontaobhas SÃnithe
+settings.trust_model.default=Múnla Iontaobhais Réamhshocraithe
+settings.trust_model.default.desc=Úsáid an tsamhail iontaobhais stórais réamhshocraithe don suiteáil
+settings.trust_model.collaborator=Comhoibritheoir
+settings.trust_model.collaborator.long=Comhoibritheoir: SÃnithe muinÃn ag comhoibrithe
+settings.trust_model.collaborator.desc=Déanfar sÃnithe bailà ó chomhoibritheoirà an stóras seo a mharcáil mar 'iontaofa' – (cibé acu a mheaitseálann siad an tiomnóir nó nach bhfuil). Seachas sin, marcálfar sÃnithe bailà mar 'neamhiontaofa' má mheaitseálann an sÃniú an tiomnóir agus mar 'neamh-mheaitseáilte' mura bhfuil.
+settings.trust_model.committer=Coimisitheoir
+settings.trust_model.committer.long=Gealltóir: SÃnithe iontaobhais a mheaitseálann na coimitheoirà (Meaitseálann sé seo le GitHub agus cuirfidh sé iallach ar Gitea gealltanais sÃnithe Gitea a bheith mar an tiomnóir)
+settings.trust_model.committer.desc=Nà mharcálfar "muinÃn" ar shÃnithe bailà ach amháin má mheaitseálann siad leis an gcoiste, nó déanfar iad a mharcáil "gan mheaitseáil". Cuireann sé seo iachall ar Gitea a bheith mar an tiomnóir ar ghealltanais sÃnithe agus an fÃor-chimisteoir marcáilte mar Comhúdar: agus Co-tiomanta ag: leantóir sa chimiú. Caithfidh an eochair réamhshocraithe Gitea a bheith ag teacht le hÚsáideoir sa bhunachar sonraÃ.
+settings.trust_model.collaboratorcommitter=Comhoibritheo+Coimiteoir
+settings.trust_model.collaboratorcommitter.long=ComhoibrÃ+Coiste: sÃnithe muinÃne ó chomhoibrithe a mheaitseálann an tiomnóir
+settings.trust_model.collaboratorcommitter.desc=Déanfar sÃnithe bailà ó chomhoibritheoirà ar an stór seo a mharcáil "muinÃn" má mheaitseálann siad leis an gcoiste. Seachas sin, marcálfar "neamhiontaofa" ar shÃnithe bailà má mheaitseálann an sÃniú leis an gcoiste agus "gan mheaitseáil" ar shlà eile. Cuirfidh sé seo iallach ar Gitea a mharcáil mar an tiomnóir ar ghealltanais shÃnithe agus an fÃor-choiste a bheith marcáilte mar Comhúdaraithe Ag: agus Comhthiomanta Ag: leantóir sa ghealltanas. Caithfidh an eochair réamhshocraithe Gitea a bheith ag teacht le hÚsáideoir sa bhunachar sonraÃ.
+settings.wiki_delete=Scrios Sonraà VicÃ
+settings.wiki_delete_desc=Tá sonraà wiki stóras a scriosadh buan agus nà féidir iad a chur ar ais.
+settings.wiki_delete_notices_1=- Scriosfaidh agus dÃchumasóidh sé seo an stóras vicà do %s go buan.
+settings.confirm_wiki_delete=Scrios Sonraà VicÃ
+settings.wiki_deletion_success=Scriosadh sonraà vicà an stórais.
+settings.delete=Scrios an Stóras seo
+settings.delete_desc=Tá scriosadh stóras buan agus nà féidir é a chealú.
+settings.delete_notices_1=- Nà FÉIDIR an oibrÃocht seo a chealú.
+settings.delete_notices_2=- Scriosfaidh an oibrÃocht seo stór %s go buan lena n-áirÃtear cód, ceisteanna, nótaà tráchta, sonraà vicà agus socruithe comhoibrithe.
+settings.delete_notices_fork_1=- Beidh forcanna den stóras seo neamhspleách tar éis iad a scriosadh.
+settings.deletion_success=Tá an stóras scriosta.
+settings.update_settings_success=NuashonraÃodh na socruithe stóras.
+settings.update_settings_no_unit=Ba cheart go gceadódh an stóras idirghnÃomhú de chineál éigin ar a laghad.
+settings.confirm_delete=Scrios Stóras
+settings.add_collaborator=Cuir Comhoibritheoir leis
+settings.add_collaborator_success=Cuireadh an comhoibritheoir leis.
+settings.add_collaborator_inactive_user=Nà féidir úsáideoir neamhghnÃomhach a chur mar chomhoibritheoir.
+settings.add_collaborator_owner=Nà féidir úinéir a chur leis mar chomhoibritheoir.
+settings.add_collaborator_duplicate=Tá an comhoibrà curtha leis an stóras seo cheana féin.
+settings.add_collaborator.blocked_user=Cuireann úinéir an stóras bac ar an gcomhoibritheoir nó a mhalairt.
+settings.delete_collaborator=Bain
+settings.collaborator_deletion=Bain Comhoibritheoir
+settings.collaborator_deletion_desc=Má dhéantar comhoibrà a bhaint, déanfar a rochtain ar an stóras seo a chúlghairm. Lean ort?
+settings.remove_collaborator_success=Tá an comhoibritheoir bainte.
+settings.org_not_allowed_to_be_collaborator=Nà féidir eagraÃochtaà a chur leis mar chomhoibritheoir.
+settings.change_team_access_not_allowed=Tá rochtain foirne a athrú don stóras teoranta d'úinéir eagraÃochta
+settings.team_not_in_organization=NÃl an fhoireann san eagraÃocht chéanna leis an stóras
+settings.teams=Foirne
+settings.add_team=Cuir Foireann leis
+settings.add_team_duplicate=Tá an stóras ag an bhfoireann cheana féin
+settings.add_team_success=Tá rochtain ag an bhfoireann anois ar an stóras.
+settings.change_team_permission_tip=Tá cead na foirne socraithe ar leathanach socraithe foirne agus nà féidir é a athrú in aghaidh an stóras
+settings.delete_team_tip=Tá rochtain ag an bhfoireann seo ar gach stórais agus nà féidir à a bhaint
+settings.remove_team_success=Tá rochtain na foirne ar an stóras bainte amach.
+settings.add_webhook=Cuir Crúca Gréasán leis
+settings.add_webhook.invalid_channel_name=Nà féidir ainm cainéal Crúca Gréasán a bheith folamh agus nà féidir ach carachtar # a bheith ann.
+settings.hooks_desc=Déanann Crúcaà Gréasán iarratais HTTP POST go huathoibrÃoch chuig freastalaà nuair a chuireann imeachtaà áirithe Gitea tús. Léigh tuilleadh sa treoirleabhair gréasáin.
+settings.webhook_deletion=Bain Crúca Gréasán
+settings.webhook_deletion_desc=Scriostar a shocruithe agus a stair seachadta a bhaineann le Crúca Gréasán a bhaint. Lean ar aghaidh?
+settings.webhook_deletion_success=Tá an Crúca Gréasán bainte amach.
+settings.webhook.test_delivery=Seachadadh Tástála
+settings.webhook.test_delivery_desc=Déan tástáil ar an Crúca Gréasán seo le himeacht bhréige.
+settings.webhook.test_delivery_desc_disabled=Chun an Crúca Gréasán seo a thástáil le himeacht bhréige, gnÃomhachtaigh é.
+settings.webhook.request=Iarratas
+settings.webhook.response=Freagra
+settings.webhook.headers=Ceanntásca
+settings.webhook.payload=Ãbhar
+settings.webhook.body=Comhlacht
+settings.webhook.replay.description=Seinn an Crúca Gréasán seo arÃs.
+settings.webhook.replay.description_disabled=Chun an Crúca Gréasán seo a athsheinm, gnÃomhachtaigh é.
+settings.webhook.delivery.success=Cuireadh imeacht leis an scuaine seachadta. D'fhéadfadh sé cúpla soicind a thógáil sula dtaispeántar sé sa stair seachadta.
+settings.githooks_desc=Tá Git Crúcaà faoi thiomáint ag Git féin. Is féidir leat comhaid crúca a chur in eagar thÃos chun oibrÃochtaà saincheaptha a shocrú.
+settings.githook_edit_desc=Mura bhfuil an hook neamhghnÃomhach, cuirfear ábhar samplach i láthair. Má fhágann tú ábhar go luach folamh dÃchumasófar an crúca seo.
+settings.githook_name=Ainm Crúca
+settings.githook_content=Ãbhar Crúca
+settings.update_githook=Nuashonraigh Crúca
+settings.add_webhook_desc=Seolfaidh Gitea iarratais POST
le cineál ábhar sonraithe chuig an spriocURL. Léigh tuilleadh sa treoir Crúcaà Gréasán.
+settings.payload_url=URL spriocdhÃrithe
+settings.http_method=Modh HTTP
+settings.content_type=Cineál Ãbhar POST
+settings.secret=Rúnda
+settings.slack_username=Ainm úsáideora
+settings.slack_icon_url=URL deilbhÃn
+settings.slack_color=Dath
+settings.discord_username=Ainm úsáideora
+settings.discord_icon_url=URL deilbhÃn
+settings.event_desc=Truicear Ar:
+settings.event_push_only=Imeachtaà Brúigh
+settings.event_send_everything=Gach Imeacht
+settings.event_choose=Imeachtaà Saincheaptha…
+settings.event_header_repository=Imeachtaà Stóras
+settings.event_create=Cruthaigh
+settings.event_create_desc=CruthaÃodh brainse nó clib.
+settings.event_delete=Scrios
+settings.event_delete_desc=Brainse nó clib scriosta.
+settings.event_fork=Forc
+settings.event_fork_desc=Forcadh stóras.
+settings.event_wiki=VicÃ
+settings.event_wiki_desc=Leathanach Vicà cruthaithe, athainmnithe, curtha in eagar nó scriosta.
+settings.event_release=Scaoileadh
+settings.event_release_desc=Scaoileadh foilsithe, nuashonraithe nó scriosta i stóras.
+settings.event_push=Brúigh
+settings.event_force_push=Fórsa Brúigh
+settings.event_push_desc=Brúigh Git chuig stóras.
+settings.event_repository=Stóras
+settings.event_repository_desc=Stóras a cruthaÃodh nó a scriosadh.
+settings.event_header_issue=Imeachtaà Eisiúint
+settings.event_issues=Saincheisteanna
+settings.event_issues_desc=OsclaÃodh, dúnadh, athosclaÃodh nó cuireadh an cheist in eagar.
+settings.event_issue_assign=Saincheist Sannaithe
+settings.event_issue_assign_desc=Eisiúint sannta nó neamhshannta.
+settings.event_issue_label=Eisiúint Lipéadaithe
+settings.event_issue_label_desc=Lipéid eisiúna nuashonraithe nó glanta.
+settings.event_issue_milestone=Clocha MÃle Saincheiste
+settings.event_issue_milestone_desc=Clocha MÃle Saincheiste nó Clocha MÃle de-Saincheiste.
+settings.event_issue_comment=Trácht Eisiúna
+settings.event_issue_comment_desc=Trácht eisiúna cruthaithe, curtha in eagar nó a scriosadh.
+settings.event_header_pull_request=Tarraingt Imeachtaà Iarratas
+settings.event_pull_request=Iarratas Tarraingthe
+settings.event_pull_request_desc=Iarratas tarraingthe oscailte, dúnta, athoscailte nó curtha in eagar.
+settings.event_pull_request_assign=Iarratas Tarraingthe Sannta
+settings.event_pull_request_assign_desc=Iarratas tarraingthe sannta nó neamhshannta.
+settings.event_pull_request_label=Iarratas Tarraingthe Lipéadaithe
+settings.event_pull_request_label_desc=Tarraing lipéid iarratais nuashonraithe nó glanta.
+settings.event_pull_request_milestone=Iarratas Tarraing Cloch MhÃle
+settings.event_pull_request_milestone_desc=Iarratas tarraing clocha mÃle nó dÃ-chlocha mÃle.
+settings.event_pull_request_comment=Trácht ar Iarratas Tarraingthe
+settings.event_pull_request_comment_desc=Trácht ar iarratas tarraingthe cruthaithe, curtha in eagar, nó scriosta.
+settings.event_pull_request_review=Iarratas Tarraingthe Athbhreithnithe
+settings.event_pull_request_review_desc=Tarraing iarratas ceadaithe, diúltaithe nó trácht athbhreithnithe.
+settings.event_pull_request_sync=Iarratas Tarraing Sincronaithe
+settings.event_pull_request_sync_desc=Tarraing iarratas sioncrónaithe.
+settings.event_pull_request_review_request=Iarratas ar Athbhreithniú Tarraingthe Iarrtha
+settings.event_pull_request_review_request_desc=Tarraing athbhreithniú iarratais iarrtha nó baineadh iarratas athbhreithnithe.
+settings.event_pull_request_approvals=Ceaduithe Iarratais Tarraing
+settings.event_pull_request_merge=Cumaisc Iarratas Tarraing
+settings.event_package=Pacáiste
+settings.event_package_desc=Pacáiste a cruthaÃodh nó a scriosadh i stóras.
+settings.branch_filter=Scagaire brainse
+settings.branch_filter_desc=Liosta bán brainse le haghaidh brú, cruthú brainse agus imeachtaà scriosta brainse, sonraithe mar phatrún glob. Má tá sé folamh nó *
, tuairiscÃtear imeachtaà do gach brainse. Féach %[2]s doiciméadú le haghaidh comhréire. SamplaÃ: máistir
, {master,release*}
.
+settings.authorization_header=Ceanntásc Údaraithe
+settings.authorization_header_desc=Cuirfear san áireamh mar cheanntásc údaraithe d'iarratais nuair a bheidh ann SamplaÃ: %s.
+settings.active=GnÃomhach
+settings.active_helper=Seolfar faisnéis faoi imeachtaà spreagtha chuig an URL Crúca Gréasán seo.
+settings.add_hook_success=Cuireadh an Crúca Gréasán leis.
+settings.update_webhook=Nuashonraigh Crúca Gréasán
+settings.update_hook_success=NuashonraÃodh an Crúca Gréasán.
+settings.delete_webhook=Bain Crúca Gréasán
+settings.recent_deliveries=Seachadtaà le déana
+settings.hook_type=Cineál Crúca
+settings.slack_token=Comhartha
+settings.slack_domain=Fearann
+settings.slack_channel=Cainéal
+settings.add_web_hook_desc=Comhtháthaigh %s isteach i do stóras.
+settings.web_hook_name_gitea=Gitea
+settings.web_hook_name_gogs=Gogs
+settings.web_hook_name_slack=Slack
+settings.web_hook_name_discord=Discord
+settings.web_hook_name_dingtalk=DingTalk
+settings.web_hook_name_telegram=Teileagram
+settings.web_hook_name_matrix=MaitrÃs
+settings.web_hook_name_msteams=Microsoft Teams
+settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite
+settings.web_hook_name_feishu=Feishu
+settings.web_hook_name_larksuite=Lark Suite
+settings.web_hook_name_wechatwork=WeCom (Wechat Work)
+settings.web_hook_name_packagist=Packagist
+settings.packagist_username=Ainm úsáideora Pacagist
+settings.packagist_api_token=Comhartha API
+settings.packagist_package_url=URL pacáiste Packagist
+settings.deploy_keys=Eochracha a imscaradh
+settings.add_deploy_key=Cuir Eochair Imscartha leis
+settings.deploy_key_desc=Tá rochtain tarraingthe léite amháin ag eochracha imscartha ar an stóras.
+settings.is_writable=Cumasaigh Rochtain ScrÃobh
+settings.is_writable_info=Lig don eochair imlonnaithe seo a bhrú chuig an stóras.
+settings.no_deploy_keys=NÃl aon eochracha imscartha ann fós.
+settings.title=Teideal
+settings.deploy_key_content=Ãbhar
+settings.key_been_used=Tá eochair imscartha le hábhar comhionann in úsáid cheana féin.
+settings.key_name_used=Tá eochair imscartha leis an ainm céanna ann cheana féin.
+settings.add_key_success=Tá an eochair imlonnaithe "%s" curtha leis.
+settings.deploy_key_deletion=Bain Eochair Imlonnaithe
+settings.deploy_key_deletion_desc=Ag baint eochair imscartha, cuirfear a rochtain ar an stóras seo a chúlghairm. Lean ar aghaidh?
+settings.deploy_key_deletion_success=Tá an eochair imscartha bainte amach.
+settings.branches=BrainsÃ
+settings.protected_branch=Cosaint Brainse
+settings.protected_branch.save_rule=Sábháil Riail
+settings.protected_branch.delete_rule=Scrios Riail
+settings.protected_branch_can_push=Ceadaigh bhrú?
+settings.protected_branch_can_push_yes=Is féidir leat a bhrú
+settings.protected_branch_can_push_no=Nà féidir leat a bhrú
+settings.branch_protection=Rialacha Cosanta Brainse do Bhrainse '%s'
+settings.protect_this_branch=Cumasaigh Cosaint Brainse
+settings.protect_this_branch_desc=Cosc ar scriosadh agus cuireann sé srian le Git a bhrú agus a chumasc go dtà an brainse.
+settings.protect_disable_push=DÃchumasaigh Brúigh
+settings.protect_disable_push_desc=Nà cheadfar aon bhrú chuig an mbrainse seo.
+settings.protect_disable_force_push=DÃchumasaigh Fórsa Brú
+settings.protect_disable_force_push_desc=Nà cheadfar aon fhórsa a bhrú chuig an mbrainse seo.
+settings.protect_enable_push=Cumasaigh Brúigh
+settings.protect_enable_push_desc=Beidh cead ag aon duine a bhfuil rochtain scrÃofa aige/aici brú chuig an mbrainse seo (ach gan brú a bhrú).
+settings.protect_enable_force_push_all=Cumasaigh Fórsa Brúigh
+settings.protect_enable_force_push_all_desc=Beidh cead ag duine ar bith a bhfuil rochtain brú aige brú a chur ar an mbrainse seo.
+settings.protect_enable_force_push_allowlist=Brú Fórsa Srianta ón Liosta Ceadaithe
+settings.protect_enable_force_push_allowlist_desc=Nà cheadófar ach d’úsáideoirà liostaithe nó foirne a bhfuil rochtain bhrú acu brú a chur ar an mbrainse seo.
+settings.protect_enable_merge=Cumasaigh Cumaisc
+settings.protect_enable_merge_desc=Beidh cead ag aon duine a bhfuil rochtain scrÃofa aige na hiarratais tarraingte a chumasc leis an mbrainse seo.
+settings.protect_whitelist_committers=Brú Srianta ón Liosta Ceadaithe
+settings.protect_whitelist_committers_desc=Nà bheidh cead ach úsáideoirà nó foirne liostaithe ceadaithe brú chuig an mbrainse seo (ach gan brú a chur i bhfeidhm).
+settings.protect_whitelist_deploy_keys=Eochracha imscartha ón Liosta Ceadaithe le rochtain scrÃofa chun brú.
+settings.protect_whitelist_users=Úsáideoirà ar an Liosta Ceadaithe chun brú a dhéanamh:
+settings.protect_whitelist_teams=Foirne ar an Liosta Ceadaithe chun brú a dhéanamh:
+settings.protect_force_push_allowlist_users=Úsáideoirà ar an Liosta Ceadaithe le haghaidh brú fórsa a dhéanamh:
+settings.protect_force_push_allowlist_teams=Foirne ar an Liosta Ceadaithe le haghaidh brú fórsa a dhéanamh:
+settings.protect_force_push_allowlist_deploy_keys=Eochracha imscaradh le rochtain brú ar an Liosta Ceadaithe le haghaidh brú fórsa a dhéanamh.
+settings.protect_merge_whitelist_committers=Cumasaigh Liosta Ceadaithe Cumaisc
+settings.protect_merge_whitelist_committers_desc=Nà lig ach d'úsáideoirà nó d'fhoirne liostaithe iarratais tarraingthe isteach sa bhrainse seo a chumasc.
+settings.protect_merge_whitelist_users=Úsáideoirà ar an Liosta Ceadaithe le haghaidh cumasc:
+settings.protect_merge_whitelist_teams=Foirne ar an Liosta Ceadaithe le haghaidh cumasc:
+settings.protect_check_status_contexts=Cumasaigh Seiceáil Stádas
+settings.protect_status_check_patterns=Patrúin seiceála stádais:
+settings.protect_status_check_patterns_desc=Iontráil patrúin chun a shonrú cé na seiceálacha stádais a chaithfidh pas a fháil sular féidir brainsà a chumasc le brainse a chomhoibrÃonn leis an riail seo. SonraÃonn gach lÃne patrún. Nà féidir patrúin a bheith folamh.
+settings.protect_check_status_contexts_desc=A cheangal ar sheiceálacha stádais pas a fháil roimh chumasc. Nuair a bheidh sé cumasaithe, nà mór gealltanais a bhrú ar dtús chuig brainse eile, ansin iad a chumasc nó a bhrú go dÃreach chuig brainse a thagann leis an riail seo tar éis do sheiceálacha stádais a bheith caite. Mura ndéantar comhthéacs ar bith a mheaitseáil, nà mór go n-éireodh leis an ngealltanas deiridh beag beann ar an gcomhthéacs.
+settings.protect_check_status_contexts_list=Seiceálacha stádais a fuarthas sa tseachtain seo caite don stóras seo
+settings.protect_status_check_matched=Comhoiriúnach
+settings.protect_invalid_status_check_pattern=Patrún seiceála stádais neamhbhailÃ: "%s".
+settings.protect_no_valid_status_check_patterns=Gan aon phatrúin seiceála stádais bailÃ.
+settings.protect_required_approvals=Ceaduithe riachtanacha:
+settings.protect_required_approvals_desc=Ná lig ach iarratas tarraingthe a chumasc le go leor ceaduithe riachtanacha. Tá ceaduithe riachtanacha ó úsáideoirà nó foirne atá ar an liosta ceadaithe nó ó aon duine a bhfuil rochtain scrÃofa acu.
+settings.protect_approvals_whitelist_enabled=Ceaduithe a theorannú le húsáideoirà nó foirne liostaithe
+settings.protect_approvals_whitelist_enabled_desc=Nà dhéanfar ach léirmheasanna ó úsáideoirà nó foirne ceadaithe a áireamh chuig na formheasanna riachtanacha. Gan liosta ceadaithe formheasa, áireofar léirmheasanna ó aon duine a bhfuil rochtain scrÃofa acu ar na ceaduithe riachtanacha.
+settings.protect_approvals_whitelist_users=Léirmheastóirà ón Liosta Ceadaithe:
+settings.protect_approvals_whitelist_teams=Foirne ar an Liosta Ceadaithe le haghaidh athbhreithnithe:
+settings.dismiss_stale_approvals=Déan seancheaduithe a dhÃbhe
+settings.dismiss_stale_approvals_desc=Nuair a bhrúitear gealltanais nua a athraÃonn ábhar an iarratais tarraingthe chuig an mbrainse, déanfar sean-cheaduithe a dhÃchur.
+settings.ignore_stale_approvals=Déan neamhaird de sheancheaduithe
+settings.ignore_stale_approvals_desc=Ná cuir faomhadh a rinneadh ar ghealltanais nÃos sine (athbhreithnithe seanchaite) san áireamh i dtreo cé mhéad faomhadh atá ag an PR. Nà bhaineann le hábhar má dhéantar athbhreithnithe seanchaite a dhÃbhe cheana féin.
+settings.require_signed_commits=Ceangaltais SÃnithe a cheangal
+settings.require_signed_commits_desc=Diúltaigh brú chuig an mbrainse seo má tá siad neamhshÃnithe nó neamh-fhÃoraithe.
+settings.protect_branch_name_pattern=Patrún Ainm Brainse Cosanta
+settings.protect_branch_name_pattern_desc=Patrúin ainmneacha brainse faoi chosaint. Féach an cháipéisÃocht le haghaidh comhréire patrún. SamplaÃ: prÃomh, scaoileadh/**
+settings.protect_patterns=Patrúin
+settings.protect_protected_file_patterns=Patrúin comhaid faoi chosaint (scartha ag baint úsáide as leathchóilÃn ';'):
+settings.protect_protected_file_patterns_desc=Nà cheadaÃtear comhaid chosanta a athrú go dÃreach fiú má tá cearta ag an úsáideoir comhaid sa bhrainse seo a chur leis, a chur in eagar nó a scriosadh. Is féidir patrúin iolracha a dheighilt trà úsáid a bhaint as leathstad (';'). Féach ar %[2]s do chomhréir phatrúin. SamplaÃ: .drone.yml
, /docs/**/*.txt
.
+settings.protect_unprotected_file_patterns=Patrúin comhaid gan chosaint (scartha ag baint úsáide as leathchóilÃn ';'):
+settings.protect_unprotected_file_patterns_desc=Comhaid gan chosaint a cheadaÃtear a athrú go dÃreach má tá rochtain scrÃofa ag an úsáideoir, ag seachaint srianadh brú. Is féidir patrúin iolracha a dheighilt trà úsáid a bhaint as leathstad (';'). Féach ar %[2]s do chomhréir phatrúin. SamplaÃ: .drone.yml
, /docs/**/*.txt
.
+settings.add_protected_branch=Cumasaigh cosaint
+settings.delete_protected_branch=DÃchumasaigh cosaint
+settings.update_protect_branch_success=Tá cosaint brainse don riail "%s" nuashonraithe.
+settings.remove_protected_branch_success=Baineadh cosaint brainse don riail "%s".
+settings.remove_protected_branch_failed=Theip ar riail cosanta brainse "%s" a bhaint.
+settings.protected_branch_deletion=Scrios Cosaint Brainse
+settings.protected_branch_deletion_desc=Ligeann cosaint brainse a dhÃchumasú d'úsáideoirà a bhfuil cead scrÃofa acu brú chuig an mbrainse. Lean ar aghaidh?
+settings.block_rejected_reviews=Cuir bac ar chumasc ar léirmheasanna diúltaithe
+settings.block_rejected_reviews_desc=Nà bheidh cumasc indéanta nuair a iarrann athbhreithnithe oifigiúla athruithe, fiú má tá go leor ceadaithe ann.
+settings.block_on_official_review_requests=Cuir bac ar chumasc ar iarratais ar athbhreithniú oifigiúil
+settings.block_on_official_review_requests_desc=Nà bheidh sé indéanta cumasc nuair a bhÃonn iarratais oifigiúla ar athbhreithniú aige, fiú má tá go leor ceadaithe ann.
+settings.block_outdated_branch=Cuir bac ar chumasc má tá an t-iarratas tarraingthe as dáta
+settings.block_outdated_branch_desc=Nà bheidh cumasc indéanta nuair a bhÃonn ceannbhrainse taobh thiar de bhronnbhrainse.
+settings.default_branch_desc=Roghnaigh brainse stóras réamhshocraithe le haghaidh iarratas tarraingte agus geallann an cód:
+settings.merge_style_desc=StÃleanna Cumaisc
+settings.default_merge_style_desc=StÃl Cumaisc Réamhshocraithe
+settings.choose_branch=Roghnaigh brainse…
+settings.no_protected_branch=NÃl aon bhrainsà cosanta ann.
+settings.edit_protected_branch=Cuir in eagar
+settings.protected_branch_required_rule_name=Ainm riail riachtanach
+settings.protected_branch_duplicate_rule_name=Ainm riail dúblach
+settings.protected_branch_required_approvals_min=Nà féidir ceaduithe riachtanacha a bheith diúltach.
+settings.tags=Clibeanna
+settings.tags.protection=Cosaint Clib
+settings.tags.protection.pattern=Patrún Clib
+settings.tags.protection.allowed=Ceadaithe
+settings.tags.protection.allowed.users=Úsáideoirà ceadaithe
+settings.tags.protection.allowed.teams=Foirne ceadaithe
+settings.tags.protection.allowed.noone=NÃl aon duine
+settings.tags.protection.create=Clib a chosaint
+settings.tags.protection.none=NÃl aon chlibeanna cosanta ann.
+settings.tags.protection.pattern.description=Is féidir leat ainm amháin nó patrún glob nó slonn rialta a úsáid chun clibeanna iolracha a mheaitseáil. Léigh tuilleadh sa treoir na gclibeanna cosanta.
+settings.bot_token=Comhartha Bota
+settings.chat_id=ID Comhrá
+settings.thread_id=ID Snáithe
+settings.matrix.homeserver_url=URL sheirbhÃse baile
+settings.matrix.room_id=ID seomra
+settings.matrix.message_type=Cineál teachtaireachta
+settings.visibility.private.button=Déan PrÃobháideach
+settings.visibility.private.text=Nà amháin go gcuirfidh an infheictheacht a athrú go prÃobháideach an repo infheicthe amháin do bhaill cheadaithe ach féadfaidh sé an gaol idir é agus forcanna, féachadóirà agus réaltaà a bhaint.
+settings.visibility.private.bullet_title=An infheictheacht a athrú go toil phrÃobháide
+settings.visibility.private.bullet_one=Déan an stóras infheicthe do chomhaltaà ceadaithe amháin.
+settings.visibility.private.bullet_two=B’fhéidir go mbainfear an gaol idir é agus forcanna, faireoirÃ, agus réaltaÃ.
+settings.visibility.public.button=Déan PoiblÃ
+settings.visibility.public.text=Má athraÃonn an infheictheacht don phobal, beidh an stóras le feiceáil do dhuine ar bith.
+settings.visibility.public.bullet_title=Athróidh an infheictheacht go poiblÃ:
+settings.visibility.public.bullet_one=Déan an repo le feiceáil do dhuine ar bith.
+settings.visibility.success=Athraigh infheictheacht stóras.
+settings.visibility.error=Tharla earráid agus tú ag iarraidh infheictheacht an stóras a athrú.
+settings.visibility.fork_error=Nà féidir infheictheacht stóras forcáilte a athrú.
+settings.archive.button=Cartlann Stóras
+settings.archive.header=Cartlann an Stóras seo
+settings.archive.text=Má dhéantar an stóras a chartlannú, beidh sé léite go hiomlán amháin. Beidh sé i bhfolach ón bpainéal. Aon duine (nà fiú tú!) beidh siad in ann tiomantas nua a dhéanamh, nó aon saincheisteanna nó iarratais a tharraingt a oscailt.
+settings.archive.success=Rinneadh an stóras a chartlannú go rathúil.
+settings.archive.error=Tharla earráid agus tú ag iarraidh an stóras a chartlannú. Féach an logáil le haghaidh tuilleadh sonraÃ.
+settings.archive.error_ismirror=Nà féidir leat stóras scátháin a chartlannú.
+settings.archive.branchsettings_unavailable=NÃl socruithe brainse ar fáil má tá an stóras i gcartlann.
+settings.archive.tagsettings_unavailable=NÃl socruithe clibeanna ar fáil má tá an stóras i gcartlann.
+settings.archive.mirrors_unavailable=NÃl scátháin ar fáil má tá an stóras i gcartlann.
+settings.unarchive.button=Stóras gan cartlann
+settings.unarchive.header=DÃchartlannaigh an stóras seo
+settings.unarchive.text=Beidh an stóras a dhÃcheangal ag athghairm a chumas chun tiomanta agus brúigh a fháil, chomh maith le fadhbanna nua agus iarratais tarraing.
+settings.unarchive.success=Rinneadh an stóras a dhÃchartlann go rathúil.
+settings.unarchive.error=Tharla earráid agus tú ag iarraidh an stóras a dhÃchartlannú. Féach an logáil le haghaidh tuilleadh sonraÃ.
+settings.update_avatar_success=NuashonraÃodh avatar an stóras.
+settings.lfs=LFS
+settings.lfs_filelist=Comhaid LFS a stóráiltear sa stóras seo
+settings.lfs_no_lfs_files=NÃl aon chomhaid LFS stóráilte sa stóras seo
+settings.lfs_findcommits=Aimsigh gealltanais
+settings.lfs_lfs_file_no_commits=NÃor aimsÃodh aon ghealltanais don chomhad LFS seo
+settings.lfs_noattribute=NÃl an tréith inghlasáilte sa bhrainse réamhshocraithe ag an gcosán seo
+settings.lfs_delete=Scrios comhad LFS le OID %s
+settings.lfs_delete_warning=D'fhéadfadh earráidà 'nÃl réad ann 'ar an tseiceáil a bheith ina chúis le comhad LFS a scriosadh. An bhfuil tú cinnte?
+settings.lfs_findpointerfiles=Faigh comhaid pointeora
+settings.lfs_locks=Glais
+settings.lfs_invalid_locking_path=Cosan neamhbhailÃ: %s
+settings.lfs_invalid_lock_directory=Nà féidir eolaire a ghlasáil: %s
+settings.lfs_lock_already_exists=Tá an glas ann cheana féin: %s
+settings.lfs_lock=Glas
+settings.lfs_lock_path=Cosán comhad le haghaidh glasáil...
+settings.lfs_locks_no_locks=Gan Glais
+settings.lfs_lock_file_no_exist=NÃl an comhad faoi ghlas sa bhrainse réamhshocraithe
+settings.lfs_force_unlock=DÃghlasáil Fórsa
+settings.lfs_pointers.found=AimsÃodh %d pointeoir(Ã) blob - %d bainteach, %d neamhghaolmhar (%d in easnamh ón siopa)
+settings.lfs_pointers.sha=SHA Blob
+settings.lfs_pointers.oid=OID
+settings.lfs_pointers.inRepo=I Stóras
+settings.lfs_pointers.exists=Ann sa siopa
+settings.lfs_pointers.accessible=Inrochtana don Úsáideoir
+settings.lfs_pointers.associateAccessible=Comhlach %d OID inrochtana
+settings.rename_branch_failed_exist=Nà féidir brainse a athainmniú toisc go bhfuil spriocbhrainse %s ann.
+settings.rename_branch_failed_not_exist=Nà féidir brainse %s a athainmniú toisc nach bhfuil sé ann.
+settings.rename_branch_success=AinmnÃodh brainse %s go rathúil go %s.
+settings.rename_branch_from=sean-ainm brainse
+settings.rename_branch_to=ainm brainse nua
+settings.rename_branch=Athainmnigh brainse
+
+diff.browse_source=Brabhsáil Foinse
+diff.parent=tuismitheoir
+diff.commit=tiomantas
+diff.git-notes=NótaÃ
+diff.data_not_available=NÃl Ãbhar DifrÃochtaà Ar Fáil
+diff.options_button=Roghanna Diff
+diff.show_diff_stats=Taispeáin StaitisticÃ
+diff.download_patch=Ãoslódáil an comhad paiste
+diff.download_diff=Ãoslódáil Comhad Diff
+diff.show_split_view=Amharc Scoilt
+diff.show_unified_view=Amharc Aontaithe
+diff.whitespace_button=Spás bán
+diff.whitespace_show_everything=Taispeáin gach athrú
+diff.whitespace_ignore_all_whitespace=Déan neamhaird de spás bán nuair a dhéantar comparáid idir lÃnte
+diff.whitespace_ignore_amount_changes=Déan neamhaird de athruithe ar an méid spás bán
+diff.whitespace_ignore_at_eol=Déan neamhaird ar athruithe ar spás bán ag EOL
+diff.stats_desc=D'athraigh %d comhad le %d breiseanna agus %d scriosta
+diff.stats_desc_file=%d athruithe: %d breiseanna agus scriosadh %d
+diff.bin=BRUSCAIR
+diff.bin_not_shown=Nà thaispeántar comhad dénártha.
+diff.view_file=Féach ar an gComhad
+diff.file_before=Roimhe
+diff.file_after=Tar éis
+diff.file_image_width=Leithead
+diff.file_image_height=Airde
+diff.file_byte_size=Méid
+diff.file_suppressed=Tá difrÃocht comhad cosc orthu toisc go bhfuil sé ró-mhór
+diff.file_suppressed_line_too_long=Cuirtear difrÃocht comhad faoi chois toisc go bhfuil lÃne amháin nó nÃos mó rófhada
+diff.too_many_files=NÃor taispeánadh roinnt comhad mar go bhfuil an iomarca comhad athraithe sa difrÃocht seo
+diff.show_more=Taispeáin Tuilleadh
+diff.load=DifrÃocht Luchtaigh
+diff.generated=a ghintear
+diff.vendored=curtha ar fáil
+diff.comment.add_line_comment=Cuir trácht lÃne leis
+diff.comment.placeholder=Fág trácht
+diff.comment.markdown_info=TacaÃtear le stÃliú le marcáil.
+diff.comment.add_single_comment=Cuir trácht aonair leis
+diff.comment.add_review_comment=Cuir trácht leis
+diff.comment.start_review=Tosaigh athbhreithniú
+diff.comment.reply=Freagra
+diff.review=Léirmheas
+diff.review.header=Cuir isteach léirmheas
+diff.review.placeholder=Trácht athbhreithnithe
+diff.review.comment=Trácht
+diff.review.approve=Ceadú
+diff.review.self_reject=Nà féidir le húdair iarratais tarraing athruithe a iarraidh ar a n-iarratas tarraingthe
+diff.review.reject=Iarr athruithe
+diff.review.self_approve=Nà féidir le húdair iarratais tarraing a n-iarratas tarraingthe féin a chead
+diff.committed_by=tiomanta ag
+diff.protected=Cosanta
+diff.image.side_by_side=Taobh le Taobh
+diff.image.swipe=Scaoil
+diff.image.overlay=Forleagan
+diff.has_escaped=Tá carachtair Unicode i bhfolach ag an lÃne seo
+diff.show_file_tree=Taispeáin crann comhad
+diff.hide_file_tree=Folaigh crann comhad
+
+releases.desc=Rian leaganacha tionscadal agus Ãoslódálacha.
+release.releases=EisiúintÃ
+release.detail=Sonraà eisithe
+release.tags=Clibeanna
+release.new_release=Scaoileadh Nua
+release.draft=Dréacht
+release.prerelease=Réamh-eisiúint
+release.stable=CobhsaÃ
+release.compare=Déan comparáid
+release.edit=cuir in eagar
+release.ahead.commits=Geallann %d
+release.ahead.target=go %s ón scaoileadh seo
+tag.ahead.target=chuig %s ón gclib seo
+release.source_code=Cód Foinse
+release.new_subheader=EagraÃonn eiseachtaà leaganacha tionscadail
+release.edit_subheader=EagraÃonn eisiúintà leaganacha tionscadal.
+release.tag_name=Ainm chlib
+release.target=Sprioc
+release.tag_helper=Roghnaigh clib atá ann cheana nó cruthaigh clib nua.
+release.tag_helper_new=Clib nua. Cruthófar an chlib seo ón sprioc.
+release.tag_helper_existing=Clib atá ann cheana.
+release.title=Teideal scaoileadh
+release.title_empty=Nà féidir leis an teideal a bheith folamh.
+release.message=Déan cur sÃos ar an eisiúint seo
+release.prerelease_desc=Marcáil mar Réamh-eisiúint
+release.prerelease_helper=Marcáil an scaoileadh seo mÃ-oiriúnach le húsáid táirgeachta.
+release.cancel=Cealaigh
+release.publish=Foilsigh Eisiúint
+release.save_draft=Sábháil Dréacht
+release.edit_release=Eisiúint Nuashonraithe
+release.delete_release=Scrios Scaoilte
+release.delete_tag=Scrios Clib
+release.deletion=Scrios Scaoilte
+release.deletion_desc=Nà bhÃonn scaoileadh ag scriosadh ach é ó Gitea. Nà dhéanfaidh sé difear do chlib Git, ar ábhar do stóras nó ar a stair. Lean ar aghaidh?
+release.deletion_success=Tá an scaoileadh scriosta.
+release.deletion_tag_desc=Scriosfar an chlib seo ón stóras. Nà athraÃtear inneachar agus stair na stórtha. Lean ort?
+release.deletion_tag_success=Tá an chlib scriosta.
+release.tag_name_already_exist=Tá eisiúint leis an ainm clib seo ann cheana féin.
+release.tag_name_invalid=NÃl ainm an chlib bailÃ.
+release.tag_name_protected=Tá ainm an chlib cosanta.
+release.tag_already_exist=Tá an t-ainm clib seo ann cheana féin.
+release.downloads=Ãoslódálacha
+release.download_count=Ãoslódálacha: %s
+release.add_tag_msg=Úsáid teideal agus ábhar an eisiúna mar theachtaireacht chlibe.
+release.add_tag=Cruthaigh Clib Amháin
+release.releases_for=Eisiúintà do %s
+release.tags_for=Clibeanna do %s
+
+branch.name=Ainm Brainse
+branch.already_exists=Tá brainse leis an ainm "%s" ann cheana féin.
+branch.delete_head=Scrios
+branch.delete=`Scrios Brainse "%s"`
+branch.delete_html=Scrios Brainse
+branch.delete_desc=Tá brainse a scriosadh buan. Cé go bhféadfadh an brainse scriosta leanúint ar aghaidh ag bheith ann ar feadh tréimhse ghearr sula mbaintear à i ndáirÃre, Nà FÉIDIR é a dhÃchur i bhformhór Lean ar aghaidh?
+branch.deletion_success=Tá brainse "%s" scriosta.
+branch.deletion_failed=Theip ar scriosadh brainse "%s".
+branch.delete_branch_has_new_commits=Nà féidir brainse “%s†a scriosadh toisc go bhfuil tiomáintà nua curtha leis tar éis a chumasc.
+branch.create_branch=Cruthaigh brainse %s
+branch.create_from=`ó "%s"`
+branch.create_success=Tá brainse "%s" cruthaithe.
+branch.branch_already_exists=Tá brainse "%s" sa stóras seo cheana.
+branch.branch_name_conflict=Tagann an t-ainm brainse "%s" leis an mbrainse "%s" atá ann cheana féin.
+branch.tag_collision=Nà féidir brainse "%s" a chruthú mar tá clib leis an ainm céanna sa stóras cheana féin.
+branch.deleted_by=Scriosta ag %s
+branch.restore_success=Tá brainse "%s" curtha ar ais.
+branch.restore_failed=Theip ar chur ar ais brainse "%s".
+branch.protected_deletion_failed=Tá brainse "%s" cosanta. Nà féidir é a scriosadh.
+branch.default_deletion_failed=Is é brainse "%s" an brainse réamhshocraithe. Nà féidir é a scriosadh.
+branch.restore=`Athchóirigh Brainse "%s"`
+branch.download=`Brainse Ãosluchtaithe "%s"`
+branch.rename=`Athainmnigh Brainse "%s"`
+branch.included_desc=Tá an brainse seo mar chuid den bhrainse réamhshocraithe
+branch.included=San áireamh
+branch.create_new_branch=Cruthaigh brainse ón mbrainse:
+branch.confirm_create_branch=Cruthaigh brainse
+branch.warning_rename_default_branch=Tá tú ag athainmniú an bhrainse réamhshocraithe.
+branch.rename_branch_to=Athainmnigh "%s" go:
+branch.confirm_rename_branch=Athainmnigh brainse
+branch.create_branch_operation=Cruthaigh brainse
+branch.new_branch=Cruthaigh brainse nua
+branch.new_branch_from=`Cruthaigh brainse nua ó "%s"`
+branch.renamed=AinmnÃodh brainse %s go %s.
+
+tag.create_tag=Cruthaigh clib %s
+tag.create_tag_operation=Cruthaigh clib
+tag.confirm_create_tag=Cruthaigh clib
+tag.create_tag_from=`Cruthaigh clib nua ó "%s"`
+
+tag.create_success=Tá clib "%s" cruthaithe.
+
+topic.manage_topics=Bainistigh topaicÃ
+topic.done=Déanta
+topic.count_prompt=Nà féidir leat nÃos mó ná 25 topaicà a roghnú
+topic.format_prompt=Nà mór do thopaicà tosú le litir nó uimhir, is féidir daiseanna ('-') agus poncanna ('.') a áireamh, a bheith suas le 35 carachtar ar fad. Nà mór litreacha a bheith i litreacha beaga.
+
+find_file.go_to_file=Téigh go dtà an comhad
+find_file.no_matching=NÃl aon chomhad meaitseála le fáil
+
+error.csv.too_large=Nà féidir an comhad seo a rinneadh toisc go bhfuil sé ró-mhór.
+error.csv.unexpected=Nà féidir an comhad seo a rindreáil toisc go bhfuil carachtar ann gan súil leis i lÃne %d agus i gcolún %d.
+error.csv.invalid_field_count=Nà féidir an comhad seo a rindreáil toisc go bhfuil lÃon mÃcheart réimsà i lÃne %d.
+error.broken_git_hook=Is cosúil go bhfuil crúcaà git den stór seo briste. Lean an doiciméadúchán chun iad a cheartú, ansin brúigh roinnt gealltanas chun an stádas a athnuachan.
+
+[graphs]
+component_loading=à lódáil %s...
+component_loading_failed=Nà fhéadfaà %s a luchtú
+component_loading_info=Seans go dtógfaidh sé seo beagán…
+component_failed_to_load=Tharla earráid gan choinne.
+code_frequency.what=minicÃocht cód
+contributors.what=rannÃocaÃochtaÃ
+recent_commits.what=tiomantáin le déanaÃ
+
+[org]
+org_name_holder=Ainm na hEagraÃochta
+org_full_name_holder=Ainm iomlán na hEagraÃochta
+org_name_helper=Ba cheart go mbeadh ainmneacha eagraÃochta gearr agus i gcuimhne.
+create_org=Cruthaigh EagraÃocht
+repo_updated=Nuashonraithe
+members=ComhaltaÃ
+teams=Foirne
+code=Cód
+lower_members=comhaltaÃ
+lower_repositories=stórais
+create_new_team=Foireann Nua
+create_team=Cruthaigh Foireann
+org_desc=Cur sÃos
+team_name=Ainm Foirne
+team_desc=Cur sÃos
+team_name_helper=Ba chóir go mbeadh ainmneacha foirne gearr agus i gcuimhne.
+team_desc_helper=Déan cur sÃos ar chuspóir nó ról na foirne.
+team_access_desc=Rochtain stórais
+team_permission_desc=Cead
+team_unit_desc=Ceadaigh Rochtain ar Rannóga Stóras
+team_unit_disabled=(DÃchumasaithe)
+
+form.name_reserved=Tá an t-ainm eagraÃochta "%s" curtha in áirithe.
+form.name_pattern_not_allowed=Nà cheadaÃtear an patrún "%s" in ainm eagraÃochta.
+form.create_org_not_allowed=NÃl cead agat eagraÃocht a chruthú.
+
+settings=Socruithe
+settings.options=EagraÃocht
+settings.full_name=Ainm Iomlán
+settings.email=RÃomhphost Teagmhála
+settings.website=Láithreán Gréasáin
+settings.location=SuÃomh
+settings.permission=Ceadanna
+settings.repoadminchangeteam=Is féidir le riarthóir an stórais rochtain d'fhoirne a chur leis agus a bhaint
+settings.visibility=Infheictheacht
+settings.visibility.public=PoiblÃ
+settings.visibility.limited=Teoranta (Infheicthe d'úsáideoirà fÃordheimhnithe amháin)
+settings.visibility.limited_shortname=Teoranta
+settings.visibility.private=PrÃobháideach (Infheicthe amháin do bhaill eagraÃochta)
+settings.visibility.private_shortname=PrÃobháideach
+
+settings.update_settings=Nuashonrú Socruithe
+settings.update_setting_success=NuashonraÃodh socruithe eagraÃochta.
+settings.change_orgname_prompt=Nóta: Athróidh ainm na heagraÃochta ag athrú URL d'eagraÃochta agus saorfar an sean-ainm.
+settings.change_orgname_redirect_prompt=Déanfaidh an sean-ainm a atreorú go dtà go n-éilÃtear é.
+settings.update_avatar_success=NuashonraÃodh avatar na heagraÃochta.
+settings.delete=Scrios EagraÃocht
+settings.delete_account=Scrios an EagraÃocht seo
+settings.delete_prompt=Bainfear an eagraÃocht go buan. Nà FÉIDIR é seo a chealú!
+settings.confirm_delete_account=Deimhnigh scriosadh
+settings.delete_org_title=Scrios EagraÃocht
+settings.delete_org_desc=Scriosfar an eagraÃocht seo go buan. Lean ar aghaidh?
+settings.hooks_desc=Cuir crúcaà gréasán in leis a spreagfar do gach stóras faoin eagraÃocht seo.
+
+settings.labels_desc=Cuir lipéid leis ar féidir iad a úsáid ar shaincheisteanna do gach stóras faoin eagraÃocht seo.
+
+members.membership_visibility=Infheictheacht BallraÃochta:
+members.public=Infheicthe
+members.public_helper=dhéanamh i bhfolach
+members.private=I bhfolach
+members.private_helper=a dhéanamh le feiceáil
+members.member_role=Ról Comhalta:
+members.owner=Úinéir
+members.member=Comhalta
+members.remove=Bain
+members.remove.detail=Bain %[1]s de %[2]s?
+members.leave=Fágáil
+members.leave.detail=Fág %s?
+members.invite_desc=Cuir ball nua le %s:
+members.invite_now=Tabhair cuireadh Anois
+
+teams.join=BÃgÃ
+teams.leave=Fág
+teams.leave.detail=Fág %s?
+teams.can_create_org_repo=Cruthaigh stórais
+teams.can_create_org_repo_helper=Is féidir le baill stóras nua a chruthú san eagraÃocht. Gheobhaidh an cruthaitheoir rochtain riarthóra ar an stóras nua.
+teams.none_access=Gan Rochtain
+teams.none_access_helper=Nà féidir le baill aon ghnÃomhaÃocht eile a fheiceáil nó a dhéanamh ar an aonad seo. NÃl aon éifeacht aige ar stórais phoiblÃ.
+teams.general_access=Rochtain Ginearálta
+teams.general_access_helper=Déanfar ceadanna baill a chinneadh ag an tábla ceadanna thÃos.
+teams.read_access=Léigh
+teams.read_access_helper=Is féidir le baill stórais foirne a fheiceáil agus a chlónáil.
+teams.write_access=ScrÃobh
+teams.write_access_helper=Is féidir le baill léamh agus brú chuig stórais foirne.
+teams.admin_access=Rochtain Riarthóra
+teams.admin_access_helper=Is féidir le baill tarraingt agus brú chuig stórais foirne agus comhoibritheoirà a chur leo.
+teams.no_desc=NÃl aon tuairisc ag an bhfoireann seo
+teams.settings=Socruithe
+teams.owners_permission_desc=Tá rochtain iomlán ag úinéirà ar gach stórais agus tá rochtain ag an riarthóir ar an eagraÃocht.
+teams.members=Baill Foirne
+teams.update_settings=Nuashonrú Socruithe
+teams.delete_team=Scrios Foireann
+teams.add_team_member=Cuir Comhalta Foirne leis
+teams.invite_team_member=Tabhair cuireadh chuig %s
+teams.invite_team_member.list=Cuirà ar Feitheamh
+teams.delete_team_title=Scrios Foireann
+teams.delete_team_desc=Cúlghairtear rochtain stórais óna baill a scriosadh foirne. Lean ar aghaidh?
+teams.delete_team_success=Tá an fhoireann scriosta.
+teams.read_permission_desc=DeonaÃonn an fhoireann seo rochtain Léamh: is féidir le baill stórtha foirne a fheiceáil agus a chlónáil.
+teams.write_permission_desc=Tugann an fhoireann seo rochtain do ScrÃobh: is féidir le baill léamh ó stórtha foirne agus iad a bhrú chucu.
+teams.admin_permission_desc=Tugann an fhoireann seo rochtain do Riarachán: is féidir le baill léamh ó stórtha foirne, brú chucu agus cur leo.
+teams.create_repo_permission_desc=Ina theannta sin, tugann an fhoireann seo cead Cruthaigh Stóras: is féidir le baill stórtha nua a chruthú san eagraÃocht.
+teams.repositories=Stórais Foirne
+teams.remove_all_repos_title=Bain gach stórais foirne
+teams.remove_all_repos_desc=Bainfidh sé seo gach stórais ón bhfoireann.
+teams.add_all_repos_title=Cuir gach stórais leis
+teams.add_all_repos_desc=Cuirfidh sé seo stórais uile na heagraÃochta leis an bhfoireann.
+teams.add_nonexistent_repo=NÃl an stóras atá tú ag iarraidh a chur leis ann, cruthaigh é ar dtús.
+teams.add_duplicate_users=Is ball foirne é an úsáideoir cheana féin.
+teams.repos.none=Nà raibh rochtain ag an bhfoireann seo ar aon stóras.
+teams.members.none=NÃl aon bhaill ar an bhfoireann seo.
+teams.members.blocked_user=Nà féidir an t-úsáideoir a chur leis toisc go bhfuil an eagraÃocht bac air.
+teams.specific_repositories=Stórais Sonrach
+teams.specific_repositories_helper=Nà bheidh rochtain ag comhaltaà ach ar stórtha a cuireadh leis an bhfoireann go sainráite. Nà bhainfear na stórtha a cuireadh leis cheana le Gach stóras go huathoibrÃoch trà é seo a roghnú.
+teams.all_repositories=Gach stórais
+teams.all_repositories_helper=Tá rochtain ag an bhfoireann ar gach stórais. Má roghnaÃonn sé seo, cuirfear na stórais go léir atá ann cheana leis an bhfoireann.
+teams.all_repositories_read_permission_desc=Tugann an fhoireann seo rochtain do Léamh ar gach stórais: is féidir le baill amharc ar stórais agus iad a chlónáil.
+teams.all_repositories_write_permission_desc=Tugann an fhoireann seo rochtain do ScrÃobh ar gach stórais: is féidir le baill léamh ó stórais agus iad a bhrú chucu.
+teams.all_repositories_admin_permission_desc=Tugann an fhoireann seo rochtain Riarthóra ar gach stóras: is féidir le comhaltaà léamh, brú a dhéanamh agus comhoibritheoirà a chur le stórtha.
+teams.invite.title=Tugadh cuireadh duit dul isteach i bhfoireann %s san eagraÃocht %s.
+teams.invite.by=Ar cuireadh ó %s
+teams.invite.description=Cliceáil ar an gcnaipe thÃos le do thoil chun dul isteach san fhoireann.
+
+[admin]
+maintenance=Cothabháil
+dashboard=Deais
+self_check=Féin-sheiceáil
+identity_access=Féiniúlacht & Rochtain
+users=Cuntais Úsáideora
+organizations=EagraÃochtaÃ
+assets=Sócmhainnà Cód
+repositories=Stórais
+hooks=Crúcaà Gréasán
+integrations=Comhtháthaithe
+authentication=Foinsà FÃordheimhnithe
+emails=RÃomhphoist ÚsáideoirÃ
+config=CumraÃocht
+config_summary=Achoimre
+config_settings=Socruithe
+notices=Fógraà Córais
+monitor=Monatóireacht
+first_page=Ar dtús
+last_page=Deiridh
+total=Iomlán: %d
+settings=Socruithe Riaracháin
+
+dashboard.new_version_hint=Tá Gitea %s ar fáil anois, tá %s á rith agat. Seiceáil an blag le haghaidh tuilleadh sonraÃ.
+dashboard.statistic=Achoimre
+dashboard.maintenance_operations=OibrÃochtaà Cothabháil
+dashboard.system_status=Stádas an Chórais
+dashboard.operation_name=Ainm OibrÃochta
+dashboard.operation_switch=Athraigh
+dashboard.operation_run=Rith
+dashboard.clean_unbind_oauth=Glan naisc OAuth neamhcheangailte
+dashboard.clean_unbind_oauth_success=Scriosadh gach nasc OAuth neamhcheangailte.
+dashboard.task.started=Tasc Tosaigh: %[1]s
+dashboard.task.process=Tasc: %[1]s
+dashboard.task.cancelled=Tasc: %[1]s cealaithe: %[3]s
+dashboard.task.error=Earráid sa Tasc: %[1]s: %[3]s
+dashboard.task.finished=Tasc: Tá %[1]s tosaithe ag %[2]s crÃochnaithe
+dashboard.task.unknown=Tasc anaithnid: %[1]s
+dashboard.cron.started=Cron tosaithe: %[1]s
+dashboard.cron.process=Cron: %[1]s
+dashboard.cron.cancelled=Cron: %[1]s cealaithe: %[3]s
+dashboard.cron.error=Earráid i gCron: %s: %[3]s
+dashboard.cron.finished=Cron: %[1]s crÃochnaithe
+dashboard.delete_inactive_accounts=Scrios gach cuntas neamhghnÃomhach
+dashboard.delete_inactive_accounts.started=Tasc scriostha gach cuntas neamhghnÃomhachtaithe tosaithe.
+dashboard.delete_repo_archives=Scrios gach cartlann stórais (ZIP, TAR.GZ, srl.)
+dashboard.delete_repo_archives.started=Scrios gach tasc cartlann stórais a thosaigh.
+dashboard.delete_missing_repos=Scrios gach stóras atá in easnamh ar a gcuid comhad Git
+dashboard.delete_missing_repos.started=Scrios gach stóras atá in easnamh ar a dtasc comhaid Git a thosaigh.
+dashboard.delete_generated_repository_avatars=Scrios abhatáranna stórtha ginte
+dashboard.sync_repo_branches=Sync brainsà caillte ó shonraà git go bunachair sonraÃ
+dashboard.sync_repo_tags=Clibeanna sioncraigh ó shonraà git go bunachar sonraÃ
+dashboard.update_mirrors=Scátháin a nuashonrú
+dashboard.repo_health_check=Seiceáil sláinte gach stóras
+dashboard.check_repo_stats=Seiceáil gach staitisticà stórais
+dashboard.archive_cleanup=Scrios sean-chartlanna stórais
+dashboard.deleted_branches_cleanup=Brainsà scriosta a ghlanadh
+dashboard.update_migration_poster_id=Nuashonraigh ID póstaer imir
+dashboard.git_gc_repos=BailÃonn truflais gach stórais
+dashboard.resync_all_sshkeys=Nuashonraigh an comhad '.ssh/authorized_keys' le heochracha Gitea SSH.
+dashboard.resync_all_sshprincipals=Nuashonraigh an comhad '.ssh/authorized_principals' le prÃomhphrionsabail Gitea SSH.
+dashboard.resync_all_hooks=Athshioncrónaigh crúcaà réamhfhála, nuashonraithe agus iar-fhála na stórtha go léir.
+dashboard.reinit_missing_repos=Aththosaigh gach stórais Git atá in easnamh a bhfuil taifid ann dóibh
+dashboard.sync_external_users=Sioncrónaigh sonraà úsáideoirà seachtracha
+dashboard.cleanup_hook_task_table=Tábla hook_task glantacháin
+dashboard.cleanup_packages=Pacáistà glanta in éag
+dashboard.cleanup_actions=GnÃomhaÃochtaà glanta in éag acmhainnÃ
+dashboard.server_uptime=Aga fónaimh FreastalaÃ
+dashboard.current_goroutine=Goroutines Reatha
+dashboard.current_memory_usage=Úsáid Cuimhne Reatha
+dashboard.total_memory_allocated=Cuimhne Iomlán Leithdháilte
+dashboard.memory_obtained=Cuimhne Faighte
+dashboard.pointer_lookup_times=Amanna Cuardaigh Pointeora
+dashboard.memory_allocate_times=Leithdháiltà Cuimhne
+dashboard.memory_free_times=Saorálann Cuimhne
+dashboard.current_heap_usage=Úsáid Charn Reatha
+dashboard.heap_memory_obtained=Cuimhne Charn Faighte
+dashboard.heap_memory_idle=DÃomhaoin Cuimhne Carn
+dashboard.heap_memory_in_use=Cuimhne Carm In Úsáid
+dashboard.heap_memory_released=Cuimhne Carn Eisithe
+dashboard.heap_objects=Cuspóirà Carn
+dashboard.bootstrap_stack_usage=Úsáid Staca Bootstrap
+dashboard.stack_memory_obtained=Cuimhne Staca Faighte
+dashboard.mspan_structures_usage=Úsáid Struchtúir MSpan
+dashboard.mspan_structures_obtained=Struchtúir MSpan a Faightear
+dashboard.mcache_structures_usage=Úsáid Struchtúir MCache
+dashboard.mcache_structures_obtained=Struchtúir MCache a Faightear
+dashboard.profiling_bucket_hash_table_obtained=Tábla Hash Buicéad PróifÃlithe a Faightear
+dashboard.gc_metadata_obtained=Meiteashonraà GC faighte
+dashboard.other_system_allocation_obtained=Leithdháileadh Córais Eile a Fuarthas
+dashboard.next_gc_recycle=Athchúrsáil GC Eile
+dashboard.last_gc_time=Ó Am Deiridh GC
+dashboard.total_gc_time=Sos Iomlán GC
+dashboard.total_gc_pause=Sos Iomlán GC
+dashboard.last_gc_pause=Sos GC Deireanach
+dashboard.gc_times=Amanna GC
+dashboard.delete_old_actions=Scrios gach sean-ghnÃomhaÃocht ón mbunachar
+dashboard.delete_old_actions.started=Scrios na sean-ghnÃomhaÃocht go léir ón mbunachar sonraà tosaithe.
+dashboard.update_checker=Seiceoir nuashonraithe
+dashboard.delete_old_system_notices=Scrios gach seanfhógra córais ón mbunachar sonraÃ
+dashboard.gc_lfs=Bailigh truflais meta rudaà LFS
+dashboard.stop_zombie_tasks=Stad gnÃomhartha tascanna zombie
+dashboard.stop_endless_tasks=Stad gnÃomhartha tascanna gan deireadh
+dashboard.cancel_abandoned_jobs=Cealaigh gnÃomhartha poist tréigthe
+dashboard.start_schedule_tasks=Tosaigh tascanna sceideal gnÃom
+dashboard.sync_branch.started=Thosaigh Brainsà Sioncronú
+dashboard.sync_tag.started=Clibeanna Thosaigh Sioncronú
+dashboard.rebuild_issue_indexer=Atógáil innéacsóir eisiúna
+dashboard.sync_repo_licenses=Sioncronaigh ceadúnais repo
+
+users.user_manage_panel=BainistÃocht Cuntas Úsáideora
+users.new_account=Cruthaigh cuntas Úsáideora
+users.name=Ainm úsáideora
+users.full_name=Ainm Iomlán
+users.activated=GnÃomhachtaithe
+users.admin=Riarachán
+users.restricted=Srianta
+users.reserved=In áirithe
+users.bot=Bota
+users.remote=Iargúlta
+users.2fa=2FA
+users.repos=Stórais
+users.created=Cruthaithe
+users.last_login=SÃnigh Isteach Deiridh
+users.never_login=Ná SÃnigh Isteach riamh
+users.send_register_notify=Seol Fógra um Chlárú Úsáideora
+users.new_success=Tá an cuntas úsáideora "%s" cruthaithe.
+users.edit=Eagar
+users.auth_source=Foinse FÃordheimhnithe
+users.local=Ãitiúil
+users.auth_login_name=Ainm SÃniú Isteach FÃordheimhnithe
+users.password_helper=Fág an pasfhocal folamh chun é a choinneáil gan athrú.
+users.update_profile_success=NuashonraÃodh an cuntas úsáideora.
+users.edit_account=Cuir Cuntas Úsáideora in Eagar
+users.max_repo_creation=Uasmhéid Stóras
+users.max_repo_creation_desc=(Cuir isteach -1 chun an teorainn réamhshocraithe domhanda a úsáid.)
+users.is_activated=GnÃomhachtaÃtear Cuntas Úsáideora
+users.prohibit_login=DÃchumasaigh SÃniú Isteach
+users.is_admin=Is Riarthóir
+users.is_restricted=Is Srianta
+users.allow_git_hook=Féadfaidh Git Hooks a Chruthú
+users.allow_git_hook_tooltip=Déantar Git Hooks a fhorghnÃomhú mar úsáideoir OS a ritheann Gitea agus beidh an leibhéal céanna rochtana óstaigh aige. Mar thoradh air sin, is féidir le húsáideoirà a bhfuil an phribhléid speisialta Git Hook seo acu rochtain a fháil ar gach stór Gitea agus iad a mhodhnú chomh maith leis an mbunachar sonraà a úsáideann Gitea. Dá bharr sin tá siad in ann pribhléidà riarthóra Gitea a fháil freisin.
+users.allow_import_local=Is féidir Stórais Ãitiúla a Allmhairiú
+users.allow_create_organization=Is féidir EagraÃochtaà a Chruthú
+users.update_profile=Nuashonraigh Cuntas Úsáideora
+users.delete_account=Scrios Cuntas Úsáide
+users.cannot_delete_self=Nà féidir leat tú féin a scriosadh
+users.still_own_repo=Tá stórais amháin nó nÃos mó fós ag an úsáideoir seo. Scrios nó aistrigh na stórais seo ar dtús.
+users.still_has_org=Is ball d'eagraÃocht é an t-úsáideoir seo. Bain an t-úsáideoir ó aon eagraÃochtaà ar dtús.
+users.purge=Úsáideoir a Ghlanadh
+users.purge_help=Scrios go héigeantach úsáideoir agus aon stórais, eagraÃochtaà agus pacáistà atá faoi úinéireacht an úsáideora. Scriosfar gach trácht freisin.
+users.still_own_packages=Tá pacáiste amháin nó nÃos mó fós ag an úsáideoir seo, scrios na pacáistà seo ar dtús.
+users.deletion_success=Scriosadh an cuntas úsáideora.
+users.reset_2fa=Athshocraigh 2FA
+users.list_status_filter.menu_text=Scagaire
+users.list_status_filter.reset=Athshocraigh
+users.list_status_filter.is_active=GnÃomhach
+users.list_status_filter.not_active=NeamhghnÃomhach
+users.list_status_filter.is_admin=Riarachán
+users.list_status_filter.not_admin=Nà Riarachán
+users.list_status_filter.is_restricted=Srianta
+users.list_status_filter.not_restricted=Gan Srian
+users.list_status_filter.is_prohibit_login=Cosc ar Logáil Isteach
+users.list_status_filter.not_prohibit_login=Ceadaigh Logáil isteach
+users.list_status_filter.is_2fa_enabled=2FA Cumasaithe
+users.list_status_filter.not_2fa_enabled=2FA faoi mhÃchumas
+users.details=Sonraà Úsáideora
+
+emails.email_manage_panel=BainistÃocht RÃomhphost Úsáideoir
+emails.primary=Bunscoile
+emails.activated=GnÃomhachtaithe
+emails.filter_sort.email=RÃomhphost
+emails.filter_sort.email_reverse=RÃomhphost (droim ar ais)
+emails.filter_sort.name=Ainm Úsáideora
+emails.filter_sort.name_reverse=Ainm Úsáideora (droim ar ais)
+emails.updated=NuashonraÃodh an rÃomhphost
+emails.not_updated=Theip ar an seoladh rÃomhphoist iarrtha a nuashonrú: %v
+emails.duplicate_active=Tá an seoladh rÃomhphoist seo gnÃomhach cheana féin d'úsáideoir difriúil.
+emails.change_email_header=Nuashonraigh AirÃonna RÃomhphoist
+emails.change_email_text=An bhfuil tú cinnte gur mhaith leat an seoladh rÃomhphoist seo a nuashonrú?
+emails.delete=Scrios RÃomhphost
+emails.delete_desc=An bhfuil tú cinnte gur mhaith leat an seoladh rÃomhphoist seo a scriosadh?
+emails.deletion_success=Tá an seoladh rÃomhphoist scriosta.
+emails.delete_primary_email_error=Nà féidir leat an rÃomhphost prÃomhúil a scriosadh.
+
+orgs.org_manage_panel=BainistÃocht EagraÃochta
+orgs.name=Ainm
+orgs.teams=Foirne
+orgs.members=ComhaltaÃ
+orgs.new_orga=EagraÃocht Nua
+
+repos.repo_manage_panel=BainistÃocht Stórais
+repos.unadopted=Stórais Neamhghlactha
+repos.unadopted.no_more=NÃor aimsÃodh nÃos mó stórais neamhghlactha
+repos.owner=Úinéir
+repos.name=Ainm
+repos.private=PrÃobháideach
+repos.issues=Saincheisteanna
+repos.size=Méid
+repos.lfs_size=Méid LFS
+
+packages.package_manage_panel=BainistÃocht Pacáiste
+packages.total_size=Méid Iomlán: %s
+packages.unreferenced_size=Méid gan tagairt: %s
+packages.cleanup=Glan suas sonraà in éag
+packages.cleanup.success=Glanadh suas sonraà in éag go rathúil
+packages.owner=Úinéir
+packages.creator=Cruthaitheoir
+packages.name=Ainm
+packages.version=Leagan
+packages.type=Cineál
+packages.repository=Stóráil
+packages.size=Méid
+packages.published=Foilsithe
+
+defaulthooks=Réamhshocraithe Crúcaà Gréasán
+defaulthooks.desc=Déanann Crúcaà Gréasán iarratais HTTP POST go huathoibrÃoch chuig freastalaà nuair a chuireann imeachtaà áirithe Gitea tús. Is mainneachtainà iad na cuacha gréasáin a shainÃtear anseo agus déanfar iad a chóipeáil isteach i ngach stórais nua. Léigh tuilleadh sa treoir chúca Crúcaà Gréasán.
+defaulthooks.add_webhook=Cuir Crúca Gréasán Réamhshocraithe leis
+defaulthooks.update_webhook=Nuashonraigh Réamhshocrú Crúca Gréasán
+
+systemhooks=Córas Crúcaà Gréasán
+systemhooks.desc=Déanann Crúcaà Gréasán iarratais HTTP POST go huathoibrÃoch chuig freastalaà nuair a chuireann imeachtaà áirithe Gitea tús. GnÃomhóidh na Crúcaà Gréasán atá sainithe anseo ar gach stóras ar an gcóras, mar sin déan machnamh ar aon impleachtaà feidhmÃochta a d’fhéadfadh a bheith aige seo. Léigh tuilleadh sa treoir chúca gréasáin.
+systemhooks.add_webhook=Cuir Crúca Gréasán Córas leis
+systemhooks.update_webhook=Nuashonraigh Córas Crúca Gréasán
+
+auths.auth_manage_panel=Bainistiú Foinse FÃordheimhnithe
+auths.new=Cuir Foinse FÃordheimhni
+auths.name=Ainm
+auths.type=Cineál
+auths.enabled=Cumasaithe
+auths.syncenabled=Cumasaigh Sioncrónú Úsáideora
+auths.updated=Nuashonraithe
+auths.auth_type=Cineál FÃordheimhnithe
+auths.auth_name=Ainm FÃordheimhnithe
+auths.security_protocol=Prótacal Slándála
+auths.domain=Fearann
+auths.host=Óstach
+auths.port=Calafort
+auths.bind_dn=Ceangail DN
+auths.bind_password=Ceangail Pasfhocal
+auths.user_base=Bonn Cuardaigh Úsáideora
+auths.user_dn=Úsáideoir DN
+auths.attribute_username=Tréith Ainm Úsáideora
+auths.attribute_username_placeholder=Fág folamh chun an t-ainm úsáideora a iontráiltear i Gitea a úsáid.
+auths.attribute_name=Tréith Céad Ainm
+auths.attribute_surname=Tréith Sloinne
+auths.attribute_mail=Tréith rÃomhphoist
+auths.attribute_ssh_public_key=Tréith Eochair SSH PhoiblÃ
+auths.attribute_avatar=Tréith Avatar
+auths.attributes_in_bind=Faigh tréithe i gComhthéacs Bind DN
+auths.allow_deactivate_all=Lig do thoradh cuardaigh folamh gach úsáideoir a dhÃghnÃomhachtú
+auths.use_paged_search=Úsáid Cuardach Leathanaigh
+auths.search_page_size=Méid an Leathanaigh
+auths.filter=Scagaire Úsáideora
+auths.admin_filter=Scagaire Riaracháin
+auths.restricted_filter=Scagaire Srianta
+auths.restricted_filter_helper=Fág folamh chun aon úsáideoirà a shocrú mar theoranta. Úsáid réiltÃn ('*') chun gach úsáideoir nach meaitseálann Scagaire Riaracháin a shocrú mar theoranta.
+auths.verify_group_membership=FÃoraigh ballraÃocht ghrúpa i LDAP (fág an scagaire folamh le scipeáil)
+auths.group_search_base=Bonn Cuardaigh Grúpa DN
+auths.group_attribute_list_users=Tréith Grúpa ina bhfuil Liosta ÚsáideoirÃ
+auths.user_attribute_in_group=Tréith Úsáideora atá Liostaithe i nGrúpa
+auths.map_group_to_team=Léarscáil grúpaà LDAP chuig foirne na hEagraÃochta (fág an réimse folamh le scipeáil)
+auths.map_group_to_team_removal=Bain úsáideoirà ó fhoirne sioncronaithe mura mbaineann an t-úsáideoir leis an ngrúpa comhfhreagrach LDAP
+auths.enable_ldap_groups=Cumasaigh grúpaà LDAP
+auths.ms_ad_sa=MS AD Tréithe Cuardaigh
+auths.smtp_auth=Cineál FÃordheimhnithe SMTP
+auths.smtphost=Óstach SMTP
+auths.smtpport=SMTP Calafort
+auths.allowed_domains=Fearainn Ceadaithe
+auths.allowed_domains_helper=Fág folamh chun gach fearann a cheadú. Déan ilfhearann a scaradh le camóg (',').
+auths.skip_tls_verify=Scipeáil FÃorú TLS
+auths.force_smtps=Fórsa SMTPS
+auths.force_smtps_helper=Úsáidtear SMTPS i gcónaà ar chalafort 465. Socraigh é seo chun SMTPS a chur i bhfeidhm ar chalafoirt eile. (Seachas sin úsáidfear STARTTLS ar chalafoirt eile má thacaÃonn an t-óstach leis.)
+auths.helo_hostname=Ainm Óstach HELO
+auths.helo_hostname_helper=Ainm óstach a sheoltar le HELO. Fág bán chun an t-ainm óstach reatha a sheoladh.
+auths.disable_helo=DÃchumasaigh HELO
+auths.pam_service_name=Ainm SeirbhÃse PAM
+auths.pam_email_domain=Fearann RÃomhphoist PAM (roghnach)
+auths.oauth2_provider=Soláthraà OAuth2
+auths.oauth2_icon_url=URL deilbhÃn
+auths.oauth2_clientID=Aitheantas Cliant (Eochair)
+auths.oauth2_clientSecret=Rúnda Cliant
+auths.openIdConnectAutoDiscoveryURL=URL Fionnachtana UathoibrÃoch OpenID Connect
+auths.oauth2_use_custom_url=Úsáid URLanna Saincheaptha in ionad URLanna Réamhshocraithe
+auths.oauth2_tokenURL=URL Comhartha
+auths.oauth2_authURL=Údaraigh URL
+auths.oauth2_profileURL=URL PróifÃl
+auths.oauth2_emailURL=URL rÃomhphoist
+auths.skip_local_two_fa=Scipeáil 2FA áitiúil
+auths.skip_local_two_fa_helper=CiallaÃonn fágáil gan socrú go mbeidh ar úsáideoirà áitiúla a bhfuil tacar 2FA acu 2FA a rith fós chun logáil isteach
+auths.oauth2_tenant=Tionónta
+auths.oauth2_scopes=Scóipeanna Breise
+auths.oauth2_required_claim_name=Ainm Éilimh Riachtanach
+auths.oauth2_required_claim_name_helper=Socraigh an t-ainm seo chun logáil isteach ón bhfoinse seo a shrianadh d'úsáideoirà a bhfuil éileamh acu leis an ainm seo
+auths.oauth2_required_claim_value=Luach Éilimh Riachtanach
+auths.oauth2_required_claim_value_helper=Socraigh an luach seo chun logáil isteach ón bhfoinse seo a shrianadh chuig úsáideoirà a bhfuil éileamh acu leis an ainm agus an luach seo
+auths.oauth2_group_claim_name=Ainm éileamh ag soláthar ainmneacha grúpa don fhoinse seo (Roghnach)
+auths.oauth2_admin_group=Luach Éilimh Grúpa d'úsáideoirà riarthóra. (Roghnach - teastaÃonn ainm éilimh thuas)
+auths.oauth2_restricted_group=Luach Éilimh Grúpa d'úsáideoirà srianta. (Roghnach - teastaÃonn ainm éilimh thuas)
+auths.oauth2_map_group_to_team=Map mhaÃgh grúpaà chuig foirne EagraÃochta. (Roghnach - éilÃonn ainm an éilimh thuas)
+auths.oauth2_map_group_to_team_removal=Bain úsáideoirà ó fhoirne sioncronaithe mura mbaineann an t-úsáideoir leis an ngrúpa comhfhreagrach.
+auths.enable_auto_register=Cumasaigh Clárú Auto
+auths.sspi_auto_create_users=Cruthaigh úsáideoirà go huathoibrÃoch
+auths.sspi_auto_create_users_helper=Lig do mhodh auth SSPI cuntais nua a chruthú go huathoibrÃoch d'úsáideoirà a logálann isteach den chéad uair
+auths.sspi_auto_activate_users=GnÃomhachtaigh úsáideoirà go huathoibrÃoch
+auths.sspi_auto_activate_users_helper=Lig modh auth SSPI úsáideoirà nua a ghnÃomhachtú go huathoibrÃoch
+auths.sspi_strip_domain_names=Bain ainmneacha fearann ó ainm úsáideora
+auths.sspi_strip_domain_names_helper=Má dhéantar iad a sheiceáil, bainfear ainmneacha fearainn ó ainmneacha logála isteach (m.sh. Beidh “DOMAIN\ user†agus "user@example.org" araon nà bheidh ach “úsáideoirâ€).
+auths.sspi_separator_replacement=Deighilteoir le húsáid in ionad\,/agus @
+auths.sspi_separator_replacement_helper=An carachtar a úsáidfear chun na deighilteoirà a chur in ionad na n-ainmneacha logála sÃos-leibhéil (m.sh. an \ i "DOMAIN\úsáideoir") agus ainmneacha prÃomhoidà úsáideora (m.sh. an @ in "user@example.org").
+auths.sspi_default_language=Teanga úsáideora réamhshocraithe
+auths.sspi_default_language_helper=Teanga réamhshocraithe d'úsáideoirà cruthaithe go huathoibrÃoch ag modh auth SSPI. Fág folamh más fearr leat teanga a bhrath go huathoibrÃoch.
+auths.tips=Leideanna
+auths.tips.oauth2.general=OAuth2 FÃordheimhniú
+auths.tips.oauth2.general.tip=Agus fÃordheimhniú OAuth2 nua á chlárú agat, ba chóir go mbeadh an URL glaonna ais/atreoraithe:
+auths.tip.oauth2_provider=Soláthraà OAuth2
+auths.tip.bitbucket=Cláraigh tomhaltóir OAuth nua ar %s agus cuir an cead 'Cuntas' - 'Léigh' leis
+auths.tip.nextcloud=`Cláraigh tomhaltóir OAuth nua ar do chás ag baint úsáide as an roghchlár seo a leanas "Socruithe -> Slándáil -> cliant OAuth 2.0"`
+auths.tip.dropbox=Cruthaigh feidhmchlár nua ag %s
+auths.tip.facebook=Cláraigh feidhmchlár nua ag %s agus cuir an táirge "Facebook Login" leis
+auths.tip.github=Cláraigh feidhmchlár OAuth nua ar %s
+auths.tip.gitlab_new=Cláraigh feidhmchlár nua ar %s
+auths.tip.google_plus=Faigh dintiúir chliaint OAuth2 ó chonsól API Google ag %s
+auths.tip.openid_connect=Úsáid URL Fionnachtana OpenID Connect "https://{server}/.well-known/openid-configuration" chun na crÃochphointà a shonrú
+auths.tip.twitter=Téigh go %s, cruthaigh feidhmchlár agus cinntigh go bhfuil an rogha "Ceadaigh úsáid a bhaint as an bhfeidhmchlár seo chun logáil isteach le Twitter" cumasaithe
+auths.tip.discord=Cláraigh feidhmchlár nua ar %s
+auths.tip.gitea=Cláraigh feidhmchlár OAuth2 nua. Tá treoir le fáil ag %s
+auths.tip.yandex=`Cruthaigh feidhmchlár nua ag %s. Roghnaigh na ceadanna seo a leanas ón rannán "Yandex.Passport API": "Rochtain ar sheoladh rÃomhphoist", "Rochtain ar avatar úsáideora" agus "Rochtain ar ainm úsáideora, céad ainm agus sloinne, inscne"`
+auths.tip.mastodon=Ionchur URL sampla saincheaptha don shampla mastodon is mian leat a fhÃordheimhniú leis (nó bain úsáid as an gceann réamhshocraithe)
+auths.edit=Cuir Foinse FÃordheimhnithe in Eagar
+auths.activated=Tá an Foinse FÃordheimhnithe seo gnÃomhachtaithe
+auths.new_success=Tá an fÃordheimhniú "%s" curtha leis.
+auths.update_success=NuashonraÃodh an fhoinse fÃordheimhnithe.
+auths.update=Nuashonraigh Foinse FÃordheimhnithe
+auths.delete=Scrios Foinse FÃordheimhnithe
+auths.delete_auth_title=Scrios Foinse FÃordheimhnithe
+auths.delete_auth_desc=Má scriosann tú foinse fÃordheimhnithe cuirtear cosc ​​ar úsáideoirà à a úsáid chun sÃniú isteach. Lean ort?
+auths.still_in_used=Tá an fhoinse fÃordheimhnithe fós in úsáid. Tiontaigh nó scrios aon úsáideoir a úsáideann an fhoinse fÃordheimhnithe seo ar dtús.
+auths.deletion_success=Tá an fhoinse fÃordheimhnithe scriosta.
+auths.login_source_exist=Tá an fhoinse fÃordheimhnithe "%s" ann cheana.
+auths.login_source_of_type_exist=Tá foinse fÃordheimhnithe den chineál seo ann cheana féin.
+auths.unable_to_initialize_openid=Nà féidir Soláthraà Ceangail OpenID a thionscnamh: %s
+auths.invalid_openIdConnectAutoDiscoveryURL=URL Neamhbhailà Fionnachtana UathoibrÃoch (nà mór gur URL bailà é seo ag tosú le http:// nó https://)
+
+config.server_config=CumraÃocht FreastalaÃ
+config.app_name=Teideal an Láithreáin
+config.app_ver=Leagan Gitea
+config.app_url=URL Bonn Gitea
+config.custom_conf=Cosán Comhad CumraÃochta
+config.custom_file_root_path=Cosán Fréamh Comhad Saincheaptha
+config.domain=Fearann ​​FreastalaÃ
+config.offline_mode=Mód Ãitiúil
+config.disable_router_log=DÃchumasaigh Loga an Ródaire
+config.run_user=Rith Mar Ainm úsáideora
+config.run_mode=Mód Rith
+config.git_version=Leagan Git
+config.app_data_path=Cosán Sonraà Aip
+config.repo_root_path=Cosán Fréimhe Stórála
+config.lfs_root_path=Cosán Fréamh LFS
+config.log_file_root_path=Cosán Logála
+config.script_type=Cineál Script
+config.reverse_auth_user=Úsáideoir FÃordheimhnithe Droim ar Ais
+
+config.ssh_config=CumraÃocht SSH
+config.ssh_enabled=Cumasaithe
+config.ssh_start_builtin_server=Úsáid Freastalaà Ionsuite
+config.ssh_domain=Fearainn Freastalaà SSH
+config.ssh_port=Calafort
+config.ssh_listen_port=Éist Calafort
+config.ssh_root_path=Cosán Fréimhe
+config.ssh_key_test_path=Cosán Tástáil Eochair
+config.ssh_keygen_path=Keygen ('ssh-keygen') Cosán
+config.ssh_minimum_key_size_check=Seiceáil Ãosta Méid Eochair
+config.ssh_minimum_key_sizes=Méideanna Ãosta Eochrach
+
+config.lfs_config=CumraÃocht LFS
+config.lfs_enabled=Cumasaithe
+config.lfs_content_path=Cosán Ãbhar LFS
+config.lfs_http_auth_expiry=Éag Auth LFS HTTP
+
+config.db_config=CumraÃocht Bunachar SonraÃ
+config.db_type=Cineál
+config.db_host=Óstach
+config.db_name=Ainm
+config.db_user=Ainm úsáideora
+config.db_schema=Scéim
+config.db_ssl_mode=SSL
+config.db_path=Cosán
+
+config.service_config=CumraÃocht SeirbhÃse
+config.register_email_confirm=Deimhniú RÃomhphost a éileamh chun Clárú
+config.disable_register=DÃchumasaigh Féin-Chlárú
+config.allow_only_internal_registration=Ceadaigh Clárú Amháin Trà Gitea féin
+config.allow_only_external_registration=Ceadaigh Clárú Trà SheirbhÃsà Seachtracha amháin
+config.enable_openid_signup=Cumasaigh Féinchlárú OpenID
+config.enable_openid_signin=Cumasaigh SÃniú isteach OpenID
+config.show_registration_button=Taispeáin Cnaipe Cláraithe
+config.require_sign_in_view=TeastaÃonn SÃnigh isteach chun Leathanaigh Amharc
+config.mail_notify=Cumasaigh Fógraà RÃomhphoist
+config.enable_captcha=Cumasaigh CAPTCHA
+config.active_code_lives=Saol GnÃomhach ag an gCód
+config.reset_password_code_lives=Am Éaga Chóid Aisghabhála Cuntais
+config.default_keep_email_private=Folaigh Seoltaà RÃomhphoist de réir Réamhshocrú
+config.default_allow_create_organization=Ceadaigh Cruthú EagraÃochtaà de réir Réamhshocrú
+config.enable_timetracking=Cumasaigh Rianú Ama
+config.default_enable_timetracking=Cumasaigh Rianú Ama de réir Réamhshocrú
+config.default_allow_only_contributors_to_track_time=Lig do Rannpháirtithe Amháin Rianú Am
+config.no_reply_address=Fearann RÃomhphoist Folaithe
+config.default_visibility_organization=Infheictheacht réamhshocraithe d'EagraÃochtaà nua
+config.default_enable_dependencies=Cumasaigh Spleáchais Eisithe de réir Réamhshocrú
+
+config.webhook_config=CumraÃocht Crúca Gréasán
+config.queue_length=Fad scuaine
+config.deliver_timeout=Teorainn Ama Seachadta
+config.skip_tls_verify=Scipeáil FÃorú TLS
+
+config.mailer_config=CumraÃocht Seoltóra
+config.mailer_enabled=Cumasaithe
+config.mailer_enable_helo=Cumasaigh HELO
+config.mailer_name=Ainm
+config.mailer_protocol=Prótacal
+config.mailer_smtp_addr=Seoladh SMTP
+config.mailer_smtp_port=Calafort SMTP
+config.mailer_user=Úsáideoir
+config.mailer_use_sendmail=Úsáid Sendmail
+config.mailer_sendmail_path=Cosán Sendmail
+config.mailer_sendmail_args=Argóintà Breise chuig Sendmail
+config.mailer_sendmail_timeout=Teorainn Ama Sendmail
+config.mailer_use_dummy=Caochadán
+config.test_email_placeholder=RÃomhphost (m.sh. test@example.com)
+config.send_test_mail=Seol RÃomhphost Tástála
+config.send_test_mail_submit=Seol
+config.test_mail_failed=Theip ar rÃomhphost tástála a sheoladh chuig "%s": %v
+config.test_mail_sent=Tá rÃomhphost tástála seolta chuig "%s".
+
+config.oauth_config=CumraÃocht OAuth
+config.oauth_enabled=Cumasaithe
+
+config.cache_config=CumraÃocht taisce
+config.cache_adapter=Cuibheoir taisce
+config.cache_interval=Eatramh Taisce
+config.cache_conn=Ceangal Taisce
+config.cache_item_ttl=MÃr Taisce TTL
+config.cache_test=Taisce Tástáil
+config.cache_test_failed=Theip ar an taisce a thaiscéaladh: %v.
+config.cache_test_slow=D'éirigh leis an tástáil taisce, ach tá an freagra mall: %s.
+config.cache_test_succeeded=D'éirigh leis an tástáil taisce, fuair sé freagra i %s.
+
+config.session_config=CumraÃocht Seisiúin
+config.session_provider=Soláthraà Seisiúin
+config.provider_config=CumraÃocht SoláthraÃ
+config.cookie_name=Ainm Fianán
+config.gc_interval_time=Am Eatramh GC
+config.session_life_time=Am Saoil na Seisiúin
+config.https_only=HTTPS Amháin
+config.cookie_life_time=Am Saoil Fianán
+
+config.picture_config=CumraÃocht Pictiúr agus Avatar
+config.picture_service=SeirbhÃs Pictiúr
+config.disable_gravatar=DÃchumasaigh Gravatar
+config.enable_federated_avatar=Cumasaigh Avatars Cónaidhme
+config.open_with_editor_app_help=Na heagarthóirà "Oscailte le" don roghchlár Clón. Má fhágtar folamh é, úsáidfear an réamhshocrú. Leathnaigh chun an réamhshocrú a fheiceáil.
+
+config.git_config=CumraÃocht Git
+config.git_disable_diff_highlight=DÃchumasaigh Aibhsiú Comhréire Diff
+config.git_max_diff_lines=Max Diff Lines (do chomhad amháin)
+config.git_max_diff_line_characters=Carachtair Max Diff (le haghaidh lÃne amháin)
+config.git_max_diff_files=Comhaid Max Diff (le taispeáint)
+config.git_gc_args=Argóintà GC
+config.git_migrate_timeout=Teorainn Ama Imirce
+config.git_mirror_timeout=Teorainn Ama Nuashonraithe Scátháin
+config.git_clone_timeout=Teorainn Ama OibrÃochta Clón
+config.git_pull_timeout=Tarraing Am OibrÃochta
+config.git_gc_timeout=Teorainn Ama Oibriúcháin GC
+
+config.log_config=CumraÃocht Logáil
+config.logger_name_fmt=LogálaÃ: %s
+config.disabled_logger=DÃchumasaithe
+config.access_log_mode=Mód Logáil Rochtana
+config.access_log_template=Teimpléad Logáil Rochtana
+config.xorm_log_sql=Logáil SQL
+
+config.set_setting_failed=Theip ar shocrú %s a shocrú
+
+monitor.stats=StaitisticÃ
+
+monitor.cron=Tascanna Cron
+monitor.name=Ainm
+monitor.schedule=Sceideal
+monitor.next=An chéad uair eile
+monitor.previous=Am Roimhe Seo
+monitor.execute_times=ForghnÃomhaÃochtaÃ
+monitor.process=Próisis reatha
+monitor.stacktrace=Rian cruachta
+monitor.processes_count=Próisis %d
+monitor.download_diagnosis_report=Ãoslódáil tuairisc diagnóis
+monitor.desc=Cur sÃos
+monitor.start=Am Tosaigh
+monitor.execute_time=Am ForghnÃomhaithe
+monitor.last_execution_result=Toradh
+monitor.process.cancel=Cealaigh próiseas
+monitor.process.cancel_desc=Má chuirtear próiseas ar ceal d'fhéadfadh go gcaillfà sonraÃ
+monitor.process.cancel_notices=Cealaigh: %s?
+monitor.process.children=LeanaÃ
+
+monitor.queues=Scuaineanna
+monitor.queue=Scuaine: %s
+monitor.queue.name=Ainm
+monitor.queue.type=Cineál
+monitor.queue.exemplar=Cineál Eiseamláire
+monitor.queue.numberworkers=LÃon na nOibrithe
+monitor.queue.activeworkers=Oibrithe GnÃomhacha
+monitor.queue.maxnumberworkers=LÃon Uasta na nOibrithe
+monitor.queue.numberinqueue=Uimhir i scuaine
+monitor.queue.review_add=Athbhreithniú / Cuir Oibrithe leis
+monitor.queue.settings.title=Socruithe Linn
+monitor.queue.settings.desc=Fásann linnte go dinimiciúil mar fhreagra ar a gcuid scuaine oibrithe a bhlocáil.
+monitor.queue.settings.maxnumberworkers=UaslÃon na n-oibrithe
+monitor.queue.settings.maxnumberworkers.placeholder=Faoi láthair %[1]d
+monitor.queue.settings.maxnumberworkers.error=Caithfidh uaslÃon na n-oibrithe a bheith ina uimhir
+monitor.queue.settings.submit=Nuashonrú Socruithe
+monitor.queue.settings.changed=Socruithe Nuashonraithe
+monitor.queue.settings.remove_all_items=Bain gach
+monitor.queue.settings.remove_all_items_done=Baineadh na mÃreanna go léir sa scuaine.
+
+notices.system_notice_list=Fógraà Córais
+notices.view_detail_header=Féach ar Sonraà Fógra
+notices.operations=OibrÃochtaÃ
+notices.select_all=Roghnaigh Gach
+notices.deselect_all=DÃroghnaigh Gach
+notices.inverse_selection=Roghnú Inbhéartha
+notices.delete_selected=Scrios Roghnaithe
+notices.delete_all=Scrios Gach Fógra
+notices.type=Cineál
+notices.type_1=Stóras
+notices.type_2=Tasc
+notices.desc=Cur sÃos
+notices.op=OibrÃocht.
+notices.delete_success=Scriosadh na fógraà córais.
+
+
+[action]
+
+[tool]
+now=anois
+future=todhchaÃ
+1s=1 soicind
+1m=1 nóiméad
+1h=1 uair an chloig
+1d=1 lá
+1w=1 seachtain
+1mon=1 mhÃ
+1y=1 bhliain
+seconds=%d soicind
+minutes=%d nóiméad
+
+[dropzone]
+
+[notification]
+notifications=FógraÃ
+unread=Gan léamh
+read=Léigh
+subscriptions=SÃntiúis
+watching=Ag féachaint
+no_subscriptions=Gan sÃntiúis
+
+[gpg]
+
+[units]
+unit=Aonad
+
+[packages]
+title=PacáistÃ
+filter.type=Cineál
+filter.type.all=Gach
+filter.container.tagged=Clibeáilte
+filter.container.untagged=Gan chlib
+details=SonraÃ
+details.author=Údar
+dependency.version=Leagan
+alpine.repository.branches=BrainsÃ
+alpine.repository.repositories=Stórais
+conan.details.repository=Stóras
+container.details.type=Cineál Ãomhá
+container.details.platform=Ardán
+container.multi_arch=Córas Oibriúcháin / Ailtireacht
+container.labels=Lipéid
+container.labels.key=Eochair
+container.labels.value=Luach
+debian.repository=Eolas Stóras
+debian.repository.components=Comhpháirteanna
+debian.repository.architectures=AiltireachtaÃ
+npm.details.tag=Clib
+owner.settings.cleanuprules.enabled=Cumasaithe
+
+[secrets]
+
+[actions]
+
+
+
+runners.name=Ainm
+runners.owner_type=Cineál
+runners.description=Cur sÃos
+runners.labels=Lipéid
+runners.task_list.run=Rith
+runners.task_list.repository=Stóras
+runners.task_list.commit=Tiomantas
+runners.status.active=GnÃomhach
+runners.version=Leagan
+runners.reset_registration_token=Athshocraigh comhartha clár
+runners.reset_registration_token_success=D'éirigh le hathshocrú comhartha clárúcháin an dara háit
+
+runs.all_workflows=Gach Sreafaà Oibre
+runs.commit=Tiomantas
+runs.scheduled=Sceidealaithe
+runs.pushed_by=bhrú ag
+runs.invalid_workflow_helper=Tá comhad cumraÃochta sreabhadh oibre nebhailÃ. Seiceáil do chomhad cumraithe le do thoil: %s
+
+
+
+
+[projects]
+type-3.display_name=Tionscadal Eagrúcháin
+
+[git.filemode]
+changed_filemode=%[1]s → %[2]s
+; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
+directory=Eolaire
+normal_file=Comhad gnáth
+executable_file=Comhad infheidhmithe
+symbolic_link=Nasc siombalach
+submodule=Fo-mhodúl
+
diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini
index 7d9dfd46d269d..69f0e6eab77ba 100644
--- a/options/locale/locale_hu-HU.ini
+++ b/options/locale/locale_hu-HU.ini
@@ -397,7 +397,6 @@ account_link=Kapcsolt fiókok
organization=Szervezetek
public_profile=Nyilvános profil
-password_username_disabled=A nem helyi felhasználóknak nem engedélyezett, hogy megváltoztassák a felhasználói nevüket. Kérjük lépjen kapcsolatba a helyi rendszergazdájával további információkért.
full_name=Teljes név
website=Webhely
location=Hely
@@ -901,13 +900,13 @@ issues.dependency.add_error_dep_issue_not_exist=Függő hibajegy nem létezik.
issues.dependency.add_error_dep_not_exist=A függőség nem létezik.
issues.dependency.add_error_dep_exists=A függőség már létezik.
issues.dependency.add_error_dep_not_same_repo=Mindkét hibajegynek ugyanabban a tárolóban kell lennie.
-issues.review.comment=Értékelve: %s
issues.review.reject=%s változtatások kérése
issues.review.pending=Függőben
issues.review.review=Értékelés
issues.review.reviewers=Véleményezők
issues.review.show_outdated=Elavultak mutatása
issues.review.hide_outdated=Elavultak elrejtése
+issues.review.commented=Hozzászólás
issues.assignee.error=Nem minden megbÃzott lett hozzáadva egy nem várt hiba miatt.
@@ -1141,7 +1140,7 @@ release.download_count=Letöltések: %s
branch.delete_head=Törlés
branch.delete_html=Ãg törlése
-branch.create_branch=Ãg %s létrehozása
+branch.create_branch=Ãg %s létrehozása
branch.deleted_by=Törölve %s által
@@ -1389,12 +1388,6 @@ auths.enable_auto_register=Automatikus regisztráció engedélyezése
auths.tips=Tippek
auths.tips.oauth2.general=OAuth2 hitelesÃtés
auths.tip.oauth2_provider=OAuth2 szolgáltató
-auths.tip.dropbox=Vegyen fel új alkalmazást itt: https://www.dropbox.com/developers/apps
-auths.tip.facebook=Vegyen fel új alkalmazást itt: https://developers.facebook.com/apps majd adja hozzá a "Facebook Login"-t
-auths.tip.github=Vegyen fel új OAuth alkalmazást itt: https://github.com/settings/applications/new
-auths.tip.google_plus=Szerezzen OAuth2 kliens hitelesÃtési adatokat a Google API konzolban (https://console.developers.google.com/)
-auths.tip.twitter=Menyjen ide: https://dev.twitter.com/apps, hozzon létre egy alkalmazást és győződjön meg róla, hogy az “Allow this application to be used to Sign in with Twitter†opció be van kapcsolva
-auths.tip.discord=Vegyen fel új alkalmazást itt: https://discordapp.com/developers/applications/me
auths.edit=HitelesÃtési forrás szerkesztése
auths.activated=A hitelesÃtési forrás aktiválva lett
auths.update_success=A hitelesÃtési forrás frissÃtve lett.
diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini
index 2bb6d25d43897..d1b4166e16286 100644
--- a/options/locale/locale_id-ID.ini
+++ b/options/locale/locale_id-ID.ini
@@ -103,11 +103,9 @@ filter.private=Pribadi
app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan
install=Mudah dipasang
platform=Lintas platform
-platform_desc=Gitea bisa digunakan di mana Go bisa dijalankan: Windows, macOS, Linux, ARM, dll. Silahkan pilih yang Anda suka!
lightweight=Ringan
lightweight_desc=Gitea hanya membutuhkan persyaratan minimal dan bisa berjalan pada Raspberry Pi yang murah. Bisa menghemat listrik!
license=Sumber Terbuka
-license_desc=Go get (Dapatkan kode sumber dari) code.gitea.io/gitea! Mari bergabung dengan berkontribusi untuk membuat proyek ini lebih baik. Jangan malu untuk menjadi kontributor!
[install]
title=Konfigurasi Awal
@@ -319,7 +317,6 @@ account_link=Akun Tertaut
organization=Organisasi
public_profile=Profil Publik
-password_username_disabled=Pengguna non-lokal tidak diizinkan untuk mengubah nama pengguna mereka. Silakan hubungi administrator sistem anda untuk lebih lanjut.
full_name=Nama Lengkap
website=Situs Web
location=Lokasi
@@ -923,7 +920,7 @@ release.downloads=Unduhan
branch.delete_head=Hapus
branch.delete_html=Hapus cabang
-branch.create_branch=Membuat cabang %s
+branch.create_branch=Membuat cabang %s
branch.deleted_by=Dihapus oleh %s
@@ -1098,9 +1095,6 @@ auths.enable_auto_register=Mengaktifkan pendaftaran otomatis
auths.tips=Cara
auths.tips.oauth2.general=Otentikasi OAuth2
auths.tip.oauth2_provider=Penyediaan OAuth2
-auths.tip.dropbox=Membuat aplikasi baru di https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Daftarkan sebuah aplikasi baru di https://developers.facebook.com/apps dan tambakan produk "Facebook Masuk"`
-auths.tip.github=Mendaftar aplikasi OAuth baru di https://github.com/settings/applications/new
auths.delete=Menghapus Otentikasi Sumber
auths.delete_auth_title=Menghapus Otentikasi Sumber
diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini
index 69a0cb40d2e54..0bd4ba68946dd 100644
--- a/options/locale/locale_is-IS.ini
+++ b/options/locale/locale_is-IS.ini
@@ -129,8 +129,6 @@ filter.public=Opinbert
[error]
occurred=Villa kom upp
-missing_csrf=Slæm beiðni: enginn CSRF lykill
-invalid_csrf=Slæm beiðni: ógildur CSRF lykill
not_found=Markmiðið fannst ekki.
network_error=Netkerfisvilla
@@ -138,11 +136,9 @@ network_error=Netkerfisvilla
app_desc=Þrautalaus og sjálfhýst Git þjónusta
install=Einföld uppsetning
platform=Fjölvettvangur
-platform_desc=Gitea virkar hvar sem að Go gerir: Linux, macOS, Windows, ARM o. s. frv. Veldu það sem þú vilt!
lightweight=Létt
lightweight_desc=Gitea hefur lágar lágmarkskröfur og getur keyrt á ódýrum Raspberry Pi. Sparaðu orku!
license=Frjáls Hugbúnaður
-license_desc=Sæktu code.gitea.io/gitea! Gakktu til liðs með þvà að taka þátt til þess að gera þetta verkefni jafnvel betra! Vertu ekki feimin(n) við að verða þátttakandi!
[install]
install=Uppsetning
@@ -432,7 +428,6 @@ account_link=Tengdir Reikningar
organization=Stofnanir
public_profile=Opinber NotandasÃða
-password_username_disabled=Notendum utan staðarins er ekki heimilt að breyta notendanafni sÃnu. Vinsamlegast hafðu samband við sÃðustjórann þinn til að fá frekari upplýsingar.
full_name=Fullt Nafn
website=VefsÃða
location=Staðsetning
@@ -852,13 +847,13 @@ issues.dependency.remove_header=Fjarlægja Kröfu
issues.dependency.add_error_dep_not_exist=Krafa er ekki til.
issues.dependency.add_error_dep_exists=Krafa er nú þegar til.
issues.review.approve=samþykkti þessar breytingar %s
-issues.review.comment=fór yfir %s
issues.review.dismissed_label=Hunsað
issues.review.left_comment=gerði ummæli
issues.review.pending=à bið
issues.review.outdated=Úrelt
issues.review.show_outdated=Sýna úrelt
issues.review.hide_outdated=Fela úreld
+issues.review.commented=Senda Ummæli
issues.reference_issue.body=Meginmál
issues.content_history.deleted=eytt
issues.content_history.edited=breytt
@@ -1211,8 +1206,6 @@ auths.smtpport=SMTP Gátt
auths.oauth2_icon_url=Táknmyndarvefslóð
auths.oauth2_profileURL=NotandasÃðuslóð
auths.tips=Ãbendingar
-auths.tip.dropbox=Búðu til nýtt forrit á https://www.dropbox.com/developers/apps
-auths.tip.yandex=`Búðu til nýja umsókn á https://oauth.yandex.com/client/new. Veldu eftirfarandi heimildir úr „Yandex.Passport API“ kaflanum: "Aðgangur að netfangi", "Aðgangur að notandamynd" og "Aðgangur að notendanafni, fornafni og eftirnafni, kyni"`
config.app_name=Heiti Vefsvæðis
config.app_ver=Útgáfu Gitea
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index 45998bb8056b3..d82215622fdbc 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -135,8 +135,6 @@ filter.private=Privati
[error]
occurred=Si è verificato un errore
-missing_csrf=Richiesta errata: nessun token CSRF presente
-invalid_csrf=Richiesta errata: token CSRF non valido
not_found=Il bersaglio non è stato trovato.
network_error=Errore di rete
@@ -144,11 +142,9 @@ network_error=Errore di rete
app_desc=Un servizio auto-ospitato per Git pronto all'uso
install=Facile da installare
platform=Multipiattaforma
-platform_desc=Gitea funziona ovunque Go possa essere compilato: Windows, macOS, Linux, ARM, etc. Scegli ciò che ami!
lightweight=Leggero
lightweight_desc=Gitea ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
license=Open Source
-license_desc=Ottieni code.gitea.io/gitea! Partecipa per contribuire a rendere questo progetto ancora migliore. Non aver paura di diventare un collaboratore!
[install]
install=Installazione
@@ -516,13 +512,10 @@ applications=Applicazioni
orgs=Gestisci le organizzazioni
repos=Repository
delete=Elimina account
-twofa=Verifica in due passaggi
account_link=Account collegati
organization=Organizzazioni
-webauthn=Chiavi Di Sicurezza
public_profile=Profilo pubblico
-password_username_disabled=Gli utenti non locali non hanno il permesso di cambiare il proprio nome utente. per maggiori dettagli si prega di contattare l'amministratore del sito.
full_name=Nome Completo
website=Sito web
location=Posizione
@@ -709,24 +702,19 @@ revoke_key=Revoca
revoke_oauth2_grant=Revoca accesso
revoke_oauth2_grant_description=Revocando l'accesso a questa applicazione di terze parti impedirá l'accesso ai tuoi dati. Sei sicuro?
-twofa_desc=L'autenticazione a due fattori migliora la sicurezza del tuo account.
twofa_is_enrolled=La verifica in due passaggi è attualmente abilitata sul tuo account.
twofa_not_enrolled=La verifica in due passaggi al momento non è abilitata sul tuo account.
twofa_disable=Disattiva la verifica in due passaggi
-twofa_scratch_token_regenerate=Rigenera il token di sicurezza
twofa_enroll=Iscriviti alla verifica in due passaggi
twofa_disable_note=Se necessario, è possibile disattivare la verifica in due passaggi.
twofa_disable_desc=Disattivare la verifica in due passaggi renderà il tuo account meno sicuro. Continuare?
-regenerate_scratch_token_desc=Se hai smarrito il tuo token di sicurezza o lo hai già utilizzato per effettuare il login è possibile resettarlo qui.
twofa_disabled=L'autenticazione a due fattori è stata disattivata.
scan_this_image=Scannerizza questa immagine con l'applicazione di autenticazione:
or_enter_secret=O immettere il segreto: %s
then_enter_passcode=E immetti il codice di accesso indicato nell'applicazione:
passcode_invalid=Il codice di accesso non è corretto. Riprova.
-twofa_enrolled=Il tuo account è stato registrato alla verifica in due passaggi. Conserva il token di sicurezza (%s) in un luogo sicuro in quanto viene visualizzato sono una volta!
twofa_failed_get_secret=Impossibile ottenere il segreto.
-webauthn_desc=Le chiavi di sicurezza sono dispositivi hardware contenenti chiavi crittografiche. Possono essere utilizzate per l'autenticazione a due fattori. Le chiavi di sicurezza devono supportare lo standard WebAuthenticator di WebAuthn.
webauthn_register_key=Aggiungi Chiave Di Sicurezza
webauthn_nickname=Soprannome
webauthn_delete_key=Rimuovi Chiave Di Sicurezza
@@ -843,9 +831,7 @@ blame_prior=Visualizza la colpa prima di questa modifica
transfer.accept=Accetta trasferimento
-transfer.accept_desc=`Trasferisci a "%s"`
transfer.reject=Rifiuta trasferimento
-transfer.reject_desc=`Annulla il trasferimento a "%s"`
desc.private=Privato
desc.public=Pubblico
@@ -963,7 +949,6 @@ release=Rilascio
releases=Rilasci
tag=Etichetta
released_this=ha rilasciato questo
-file.title=%s a %s
file_raw=Originale
file_history=Cronologia
file_view_source=Visualizza sorgente
@@ -973,7 +958,6 @@ file_permalink=Permalink
file_too_large=Il file è troppo grande per essere visualizzato.
invisible_runes_line=`Questa riga ha caratteri unicode invisibili`
ambiguous_runes_line=`Questa riga ha caratteri unicode ambigui`
-ambiguous_character=`%[1]c [U+%04[1]X] è confondibile con %[2]c [U+%04[2]X]`
escape_control_characters=Fuga
unescape_control_characters=Unescape
@@ -1344,7 +1328,6 @@ issues.dependency.add_error_dep_not_same_repo=Entrambi i problemi devono essere
issues.review.self.approval=Non puoi approvare la tua pull request.
issues.review.self.rejection=Non puoi richiedere modifiche sulla tua pull request.
issues.review.approve=hanno approvato queste modifiche %s
-issues.review.comment=revisionato %s
issues.review.dismissed=recensione %s di %s respinta
issues.review.dismissed_label=Respinta
issues.review.left_comment=lascia un commento
@@ -1365,6 +1348,7 @@ issues.review.hide_resolved=Nascondi risolte
issues.review.resolve_conversation=Risolvi la conversazione
issues.review.un_resolve_conversation=Segnala la conversazione come non risolta
issues.review.resolved_by=ha contrassegnato questa conversazione come risolta
+issues.review.commented=Commentare
issues.assignee.error=Non tutte le assegnazioni sono state aggiunte a causa di un errore imprevisto.
issues.reference_issue.body=Corpo
issues.content_history.deleted=eliminato
@@ -1456,9 +1440,7 @@ pulls.rebase_conflict_summary=Messaggio d'Errore
pulls.unrelated_histories=Unione fallita: gli Head del ramo da unire e la base non condividono una storia cronologica in comune. Suggerimento: prova una strategia diversa
pulls.merge_out_of_date=Unione fallita: Durante la generazione del merge, la base è stata aggiornata. Suggerimento: Riprova.
pulls.head_out_of_date=Unione non riuscita: durante la generazione della fusione, la testa è stata aggiornata. Suggerimento: Riprova.
-pulls.push_rejected=Unisci non riuscito: il push è stato rifiutato. Rivedi gli Hooks Git per questo repository.
pulls.push_rejected_summary=Messaggio Di Rifiuto Completo
-pulls.push_rejected_no_message=Unione non riuscita: il push è stato rifiutato ma non c'è stato un messaggio remoto.*
, gli eventi per tutti i rami sono segnalati. Vedi la documentazione github.com/gobwas/glob per la sintassi. Esempi: master
, {master,release*}
.
settings.active=Attivo
settings.active_helper=Le informazioni sugli eventi innescati saranno inviate a questo URL del webhook.
settings.add_hook_success=Il webhook è stato aggiunto.
@@ -1871,8 +1850,6 @@ settings.branches=Branches
settings.protected_branch=Protezione branch
settings.protected_branch_can_push=Consentire push?
settings.protected_branch_can_push_yes=Puoi pushare
-settings.protected_branch_can_push_no=Non puoi pushare
-settings.branch_protection=Protezione branch per il branch '%s'
settings.protect_this_branch=Attiva protezione branch
settings.protect_this_branch_desc=Impedisce l'eliminazione e limita il merge di Git effettuando il push e l'unione verso questo ramo.
settings.protect_disable_push=Disabilita push
@@ -1880,17 +1857,14 @@ settings.protect_disable_push_desc=Nessun push sarà consentito in questo ramo.
settings.protect_enable_push=Abilita push
settings.protect_enable_push_desc=Chiunque con accesso in scrittura sarà autorizzato a pushare su questo ramo (ma non forzare il push).
settings.protect_check_status_contexts=Abilita Controllo Stato
-settings.protect_check_status_contexts_desc=Richiedi il superamento di controlli di stato prima dell'unione di due rami. Scegliere quali controlli di stato devono passare prima che i rami possano essere uniti in un ramo che corrisponde a questa regola. Se abilitato, i commit devono prima essere inviati a un altro ramo, quindi uniti o pushati direttamente a un ramo che corrisponde a questa regola dopo aver superato i controlli di stato. Se non viene selezionato alcuna regola, l'ultimo commit avrá successo indipendentemente dal contesto.
settings.protect_check_status_contexts_list=Controlli di stato trovati nell'ultima settimana per questo repository
settings.protect_required_approvals=Approvazioni richieste:
-settings.protect_required_approvals_desc=Permetti solo di unire la richiesta pull con abbastanza recensioni positive.
settings.dismiss_stale_approvals=Ignora impostazione vecchie
settings.dismiss_stale_approvals_desc=Quando i nuovi commit che cambiano il contenuto della pull request vengono pushati nel branch, le vecchie approvazioni verranno eliminate.
settings.require_signed_commits=Richiede commit firmati
settings.require_signed_commits_desc=Rifiuta i push a questo ramo se non sono firmati o verificabili.
settings.add_protected_branch=Attiva protezione
settings.delete_protected_branch=Disattiva protezione
-settings.protected_branch_deletion=Disattiva protezione branch
settings.protected_branch_deletion_desc=Disattivare la protezione branch permette agli utenti con permesso di scrittura di pushare sul branch. Continuare?
settings.block_rejected_reviews=Blocca il merge di revisioni rifiutate
settings.block_rejected_reviews_desc=Il merge non sarà possibile quando sono richiesti cambiamenti da revisori, anche se ci sono sufficienti approvazioni.
@@ -1899,7 +1873,6 @@ settings.block_on_official_review_requests_desc=Il merge non sarà possibile qua
settings.block_outdated_branch=Blocca il merge se la pull request è obsoleta
settings.block_outdated_branch_desc=Il merging non sarà possibile quando il ramo testa è dietro il ramo base.
settings.default_branch_desc=Seleziona un branch del repository predefinito per le pull request ed i commit di codice:
-settings.default_merge_style_desc=Modalità di merge predefinita per le richieste di pull:
settings.choose_branch=Scegli un branch…
settings.no_protected_branch=Non ci sono branch protetti.
settings.edit_protected_branch=Modifica
@@ -2054,7 +2027,7 @@ release.add_tag=Crea Solo Branch
branch.name=Nome branch
branch.delete_head=Elimina
branch.delete_html=Elimina branch
-branch.create_branch=Crea branch %s
+branch.create_branch=Crea branch %s
branch.deleted_by=Eliminato da %s
branch.included_desc=Questo ramo fa parte del ramo predefinito
branch.included=Incluso
@@ -2065,14 +2038,13 @@ branch.create_branch_operation=Crea ramo
branch.new_branch=Crea nuovo ramo
branch.renamed=Il ramo %s è stato rinominato in %s.
-tag.create_tag=Crea branch %s
+tag.create_tag=Crea branch %s
tag.create_tag_operation=Crea etichetta
tag.confirm_create_tag=Crea etichetta
topic.manage_topics=Gestisci argomenti
topic.done=Fatto
-topic.count_prompt=Non puoi selezionare più di 25 argomenti
find_file.go_to_file=Vai al file
find_file.no_matching=Nessun file corrispondente trovato
@@ -2155,7 +2127,6 @@ teams.leave.detail=Lasciare %s?
teams.can_create_org_repo=Crea repository
teams.can_create_org_repo_helper=I membri possono creare nuovi repository nell'organizzazione. Il creatore otterrà l'accesso di amministratore alla nuova repository.
teams.none_access=Nessun Accesso
-teams.none_access_helper=I membri non possono visualizzare o fare altre azioni su questa unità .
teams.general_access=Accesso Generale
teams.general_access_helper=I permessi dei membri saranno decisi dalla seguente tabella dei permessi.
teams.read_access=Lettura
@@ -2467,13 +2438,6 @@ auths.tips=Consigli
auths.tips.oauth2.general=Autenticazione OAuth2
auths.tip.oauth2_provider=OAuth2 Provider
auths.tip.nextcloud=`Registra un nuovo OAuth sulla tua istanza utilizzando il seguente menu "Impostazioni -> Sicurezza -> OAuth 2.0 client"`
-auths.tip.dropbox=Crea una nuova applicazione su https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Registra una nuova applicazione su https://developers.facebook.com/apps e aggiungi il prodotto "Facebook Login"`
-auths.tip.github=Registra una nuova applicazione OAuth su https://github.com/settings/applications/new
-auths.tip.google_plus=Ottieni le credenziali del client OAuth2 dalla console API di Google su https://console.developers.google.com/
-auths.tip.twitter=Vai su https://dev.twitter.com/apps, crea una applicazione e assicurati che l'opzione "Allow this application to be used to Sign In with Twitter" sia abilitata
-auths.tip.discord=Registra una nuova applicazione su https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Crea una nuova applicazione su https://oauth.yandex.com/client/new. Seleziona i seguenti permessi da "Yandex. assport API": "Access to email address", "Access to user avatar" e "Access to username, name and surname, gender"`
auths.tip.mastodon=Inserisci un URL di istanza personalizzato per l'istanza mastodon con cui vuoi autenticarti (o usa quella predefinita)
auths.edit=Modifica fonte di autenticazione
auths.activated=Questa fonte di autenticazione è attiva
@@ -2622,14 +2586,11 @@ monitor.next=La Prossima Volta
monitor.previous=La Scorsa Volta
monitor.execute_times=Esecuzioni
monitor.process=Processi in Esecuzione
-monitor.stacktrace=Stacktraces
monitor.desc=Descrizione
monitor.start=Orario Avvio
monitor.execute_time=Tempo di Esecuzione
monitor.last_execution_result=Risultato
monitor.process.cancel=Annulla processo
-monitor.process.cancel_desc=L'annullamento di un processo potrebbe causare la perdita di dati
-monitor.process.cancel_notices=Annulla: %s?
monitor.process.children=Figli
monitor.queues=Code
@@ -2714,7 +2675,6 @@ raw_minutes=minuti
[dropzone]
default_message=Trascina i file o clicca qui per caricare.
-invalid_input_type=Non è possibile caricare file di questo tipo.
file_too_big=La dimensione del file ({{filesize}} MB) supera la dimensione massima ({{maxFilesize}} MB).
remove_file=Rimuovi file
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index e7166e04dc9df..973c1b3761c35 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -159,6 +159,7 @@ filter.public=公開
filter.private=プライベート
no_results_found=見ã¤ã‹ã‚Šã¾ã›ã‚“。
+internal_error_skipped=内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸãŒã‚¹ã‚ップã•ã‚Œã¾ã—ãŸ: %s
[search]
search=検索…
@@ -177,6 +178,8 @@ code_search_by_git_grep=ç¾åœ¨ã®ã‚³ãƒ¼ãƒ‰æ¤œç´¢ã¯ "git grep" ã«ã‚ˆã£ã¦è¡Œ
package_kind=パッケージを検索...
project_kind=プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’検索...
branch_kind=ブランãƒã‚’検索...
+tag_kind=タグを検索...
+tag_tooltip=一致ã™ã‚‹ã‚¿ã‚°ã‚’検索ã—ã¾ã™ã€‚ä»»æ„ã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã«ä¸€è‡´ã•ã›ã‚‹ã«ã¯ '%' を使用ã—ã¦ãã ã•ã„。
commit_kind=コミットを検索...
runner_kind=ランナーを検索...
no_results=一致ã™ã‚‹çµæžœãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ
@@ -218,22 +221,20 @@ string.desc=Z - A
[error]
occurred=エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ
-report_message=Gitea ã®ãƒã‚°ãŒç–‘ã‚ã‚Œã‚‹å ´åˆã¯ã€GitHubã§Issueを検索ã—ã¦ã€è¦‹ã¤ã‹ã‚‰ãªã‘ã‚Œã°æ–°ã—ã„Issueを作æˆã—ã¦ãã ã•ã„。
-missing_csrf=ä¸æ£ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆ: CSRFトークンãŒã‚ã‚Šã¾ã›ã‚“
-invalid_csrf=ä¸æ£ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆ: CSRFトークンãŒç„¡åŠ¹ã§ã™
+report_message=Gitea ã®ãƒã‚°ãŒç–‘ã‚ã‚Œã‚‹å ´åˆã¯ã€GitHubã§Issueを検索ã—ã¦ã€è¦‹ã¤ã‹ã‚‰ãªã‘ã‚Œã°æ–°ã—ã„Issueを作æˆã—ã¦ãã ã•ã„。
not_found=ターゲットãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
network_error=ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼
[startpage]
app_desc=自分ã§ç«‹ã¦ã‚‹ã€è¶…ç°¡å˜ Git サービス
install=ç°¡å˜ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
-install_desc=シンプルã«ã€ãƒ—ラットフォームã«å¿œã˜ã¦ãƒã‚¤ãƒŠãƒªã‚’実行ã—ãŸã‚Šã€Dockerã§å‹•ã‹ã—ãŸã‚Šã€ãƒ‘ッケージを使ã†ã ã‘。
+install_desc=シンプルã«ã€ãƒ—ラットフォームã«å¿œã˜ã¦ãƒã‚¤ãƒŠãƒªã‚’実行ã—ãŸã‚Šã€Dockerã§å‹•ã‹ã—ãŸã‚Šã€ãƒ‘ッケージを使ã†ã ã‘。
platform=クãƒã‚¹ãƒ—ラットフォーãƒ
-platform_desc=Giteaã¯GoãŒã‚³ãƒ³ãƒ‘イルå¯èƒ½ãªã‚らゆる環境ã§å‹•ãã¾ã™: Windowsã€macOSã€Linuxã€ARMãªã©ã€‚ ã‚ãªãŸã®å¥½ããªã‚‚ã®ã‚’é¸ã‚“ã§ãã ã•ã„!
+platform_desc=Giteaã¯GoãŒã‚³ãƒ³ãƒ‘イルå¯èƒ½ãªã‚らゆる環境ã§å‹•ãã¾ã™: Windowsã€macOSã€Linuxã€ARMãªã©ã€‚ ã‚ãªãŸã®å¥½ããªã‚‚ã®ã‚’é¸ã‚“ã§ãã ã•ã„!
lightweight=軽é‡
lightweight_desc=Gitea ã®æœ€å°å‹•ä½œè¦ä»¶ã¯å°ã•ã„ãŸã‚ã€å®‰ä¾¡ãª Raspberry Pi ã§ã‚‚å‹•ãã¾ã™ã€‚エãƒãƒ«ã‚®ãƒ¼ã‚’節約ã—ã¾ã—ょã†!
license=オープンソース
-license_desc=Go get code.gitea.io/gitea! ã“ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’ã•ã‚‰ã«å‘上ã•ã›ã‚‹ãŸã‚ã€ãœã²è²¢çŒ®ã—ã¦å‚åŠ ã—ã¦ãã ã•ã„。 貢献者ã«ãªã‚‹ã“ã¨ã‚’æ¥ãšã‹ã—ãŒã‚‰ãªã„ã§!
+license_desc=Go get %[2]s! ã“ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’ã•ã‚‰ã«å‘上ã•ã›ã‚‹ãŸã‚ã€ãœã²è²¢çŒ®ã—ã¦å‚åŠ ã—ã¦ãã ã•ã„。 貢献者ã«ãªã‚‹ã“ã¨ã‚’æ¥ãšã‹ã—ãŒã‚‰ãªã„ã§!
[install]
install=インストール
@@ -456,7 +457,7 @@ authorize_title=`"%s"ã«ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯
authorization_failed=èªå¯å¤±æ•—
authorization_failed_desc=無効ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’検出ã—ãŸãŸã‚èªå¯ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ èªå¯ã—よã†ã¨ã—ãŸã‚¢ãƒ—リã®é–‹ç™ºè€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。
sspi_auth_failed=SSPIèªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸ
-password_pwned=ã‚ãªãŸãŒé¸æŠžã—ãŸãƒ‘スワードã¯ã€éŽåŽ»ã®æƒ…å ±æ¼æ´©äº‹ä»¶ã§æµå‡ºã—ãŸç›—ã¾ã‚ŒãŸãƒ‘スワードã®ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ 別ã®ãƒ‘スワードã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 ã¾ãŸä»–ã®ç™»éŒ²ã§ã‚‚ã“ã®ãƒ‘スワードã‹ã‚‰ã®å¤‰æ›´ã‚’検討ã—ã¦ãã ã•ã„。
+password_pwned=ã‚ãªãŸãŒé¸æŠžã—ãŸãƒ‘スワードã¯ã€éŽåŽ»ã®æƒ…å ±æ¼æ´©äº‹ä»¶ã§æµå‡ºã—ãŸç›—ã¾ã‚ŒãŸãƒ‘スワードã®ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ 別ã®ãƒ‘スワードã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 ã¾ãŸä»–ã®ç™»éŒ²ã§ã‚‚ã“ã®ãƒ‘スワードã‹ã‚‰ã®å¤‰æ›´ã‚’検討ã—ã¦ãã ã•ã„。
password_pwned_err=HaveIBeenPwnedã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’完了ã§ãã¾ã›ã‚“ã§ã—ãŸ
last_admin=最後ã®ç®¡ç†è€…ã¯å‰Šé™¤ã§ãã¾ã›ã‚“。少ãªãã¨ã‚‚一人ã®ç®¡ç†è€…ãŒå¿…è¦ã§ã™ã€‚
signin_passkey=パスã‚ーã§ã‚µã‚¤ãƒ³ã‚¤ãƒ³
@@ -628,6 +629,7 @@ org_still_own_repo=組織ã¯ã¾ã 1ã¤ä»¥ä¸Šã®ãƒªãƒã‚¸ãƒˆãƒªã‚’所有ã—ã¦ã„
org_still_own_packages=組織ã¯ã¾ã 1ã¤ä»¥ä¸Šã®ãƒ‘ッケージを所有ã—ã¦ã„ã¾ã™ã€‚ å…ˆã«ãれらを削除ã—ã¦ãã ã•ã„。
target_branch_not_exist=ターゲットã®ãƒ–ランãƒãŒå˜åœ¨ã—ã¦ã„ã¾ã›ã‚“。
+target_ref_not_exist=ターゲット㮠ref ãŒå˜åœ¨ã—ã¾ã›ã‚“ %s
admin_cannot_delete_self=ã‚ãªãŸãŒç®¡ç†è€…ã§ã‚ã‚‹å ´åˆã€è‡ªåˆ†è‡ªèº«ã‚’削除ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。最åˆã«ç®¡ç†è€…権é™ã‚’削除ã—ã¦ãã ã•ã„。
@@ -703,7 +705,6 @@ public_profile=公開プãƒãƒ•ã‚£ãƒ¼ãƒ«
biography_placeholder=自己紹介ã—ã¦ãã ã•ã„ï¼(Markdownを使ã†ã“ã¨ãŒã§ãã¾ã™)
location_placeholder=ãŠãŠã‚ˆãã®å ´æ‰€ã‚’ä»–ã®äººã¨å…±æœ‰
profile_desc=ã‚ãªãŸã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ãŒä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã©ã®ã‚ˆã†ã«è¡¨ç¤ºã•ã‚Œã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚ã‚ãªãŸã®ãƒ—ライマリメールアドレスã¯ã€é€šçŸ¥ã€ãƒ‘スワードã®å›žå¾©ã€Webベースã®Gitæ“作ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚
-password_username_disabled=éžãƒãƒ¼ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯å¤‰æ›´ã§ãã¾ã›ã‚“。詳細ã¯ã‚µã‚¤ãƒˆç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。
full_name=フルãƒãƒ¼ãƒ
website=Webサイト
location=å ´æ‰€
@@ -953,7 +954,7 @@ passcode_invalid=パスコードãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚ å†åº¦ãŠè©¦ã—ã
twofa_enrolled=ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ£å¸¸ã«ç™»éŒ²ã•ã‚Œã¾ã—ãŸã€‚ 一回é™ã‚Šã®ãƒªã‚«ãƒãƒªã‚ー (%s) ã¯å®‰å…¨ãªå ´æ‰€ã«ä¿å˜ã—ã¦ãã ã•ã„。 ã“ã‚Œã¯äºŒåº¦ã¨è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。
twofa_failed_get_secret=シークレットãŒå–å¾—ã§ãã¾ã›ã‚“。
-webauthn_desc=ã‚»ã‚ュリティã‚ーã¯æš—å·åŒ–ã‚ーを内蔵ã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ ・ デãƒã‚¤ã‚¹ã§ã™ã€‚ 2è¦ç´ èªè¨¼ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ã‚»ã‚ュリティã‚ーã¯WebAuthn Authenticatorè¦æ ¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+webauthn_desc=ã‚»ã‚ュリティã‚ーã¯æš—å·åŒ–ã‚ーを内蔵ã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ ・ デãƒã‚¤ã‚¹ã§ã™ã€‚ 2è¦ç´ èªè¨¼ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ã‚»ã‚ュリティã‚ーã¯WebAuthn Authenticatorè¦æ ¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
webauthn_register_key=ã‚»ã‚ュリティã‚ーを追åŠ
webauthn_nickname=ニックãƒãƒ¼ãƒ
webauthn_delete_key=ã‚»ã‚ュリティã‚ーã®ç™»éŒ²è§£é™¤
@@ -975,7 +976,7 @@ orgs_none=ã‚ãªãŸã¯ã©ã®çµ„ç¹”ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。
repos_none=ã‚ãªãŸã¯ãƒªãƒã‚¸ãƒˆãƒªã‚’所有ã—ã¦ã„ã¾ã›ã‚“。
delete_account=アカウントを削除
-delete_prompt=ã“ã®æ“作ã«ã‚ˆã‚Šã€ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ’ä¹…çš„ã«æŠ¹æ¶ˆã•ã‚Œã¾ã™ã€‚ å–り消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。
+delete_prompt=ã“ã®æ“作ã«ã‚ˆã‚Šã€ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ’ä¹…çš„ã«æŠ¹æ¶ˆã•ã‚Œã¾ã™ã€‚ å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。
delete_with_all_comments=ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ä½œæˆã‹ã‚‰ã¾ã %s 経éŽã—ã¦ã„ã¾ã›ã‚“。 幽霊コメント回é¿ã®ãŸã‚ã€ã‚¤ã‚·ãƒ¥ãƒ¼ã‚„PRã®ã™ã¹ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ä¸€ç·’ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚
confirm_delete_account=削除ã®ç¶šè¡Œ
delete_account_title=ユーザーアカウントã®å‰Šé™¤
@@ -1038,6 +1039,7 @@ issue_labels_helper=イシューã®ãƒ©ãƒ™ãƒ«ã‚»ãƒƒãƒˆã‚’é¸æŠž
license=ライセンス
license_helper=ライセンス ファイルをé¸æŠžã—ã¦ãã ã•ã„。
license_helper_desc=ライセンスã«ã‚ˆã‚Šã€ä»–人ãŒã‚ãªãŸã®ã‚³ãƒ¼ãƒ‰ã«å¯¾ã—ã¦ä½•ãŒã§ãã¦ä½•ãŒã§ããªã„ã®ã‹ã‚’è¦å®šã—ã¾ã™ã€‚ ã©ã‚ŒãŒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã«ãµã•ã‚ã—ã„ã‹è¿·ã£ã¦ã„ã¾ã™ã‹ï¼Ÿ ライセンスé¸æŠžã‚µã‚¤ãƒˆ も確èªã—ã¦ã¿ã¦ãã ã•ã„。
+multiple_licenses=複数ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹
object_format=オブジェクトã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ
object_format_helper=リãƒã‚¸ãƒˆãƒªã®ã‚ªãƒ–ジェクトフォーマット。後ã§å¤‰æ›´ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。SHA1 ã¯æœ€ã‚‚互æ›æ€§ãŒã‚ã‚Šã¾ã™ã€‚
readme=README
@@ -1175,6 +1177,11 @@ migrate.gogs.description=notabug.org ã‚„ãã®ä»–ã® Gogs インスタンスã‹
migrate.onedev.description=code.onedev.io ã‚„ãã®ä»–ã® OneDev インスタンスã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
migrate.codebase.description=codebasehq.com ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
migrate.gitbucket.description=GitBucket インスタンスã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
+migrate.codecommit.description=AWS CodeCommitã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
+migrate.codecommit.aws_access_key_id=AWS アクセスã‚ー ID
+migrate.codecommit.aws_secret_access_key=AWSシークレットアクセスã‚ー
+migrate.codecommit.https_git_credentials_username=HTTPS Git èªè¨¼æƒ…å ± ユーザーå
+migrate.codecommit.https_git_credentials_password=HTTPS Git èªè¨¼æƒ…å ± パスワード
migrate.migrating_git=Gitデータ移行ä¸
migrate.migrating_topics=トピック移行ä¸
migrate.migrating_milestones=マイルストーン移行ä¸
@@ -1749,6 +1756,12 @@ issues.review.hide_resolved=解決済ã¿ã‚’éš ã™
issues.review.resolve_conversation=解決済ã¿ã«ã™ã‚‹
issues.review.un_resolve_conversation=未解決ã«ã™ã‚‹
issues.review.resolved_by=ãŒã“ã®ä¼šè©±ã‚’解決済ã¿ã«ã—ã¾ã—ãŸ
+issues.review.commented=コメント
+issues.review.official=承èªæ¸ˆã¿
+issues.review.requested=レビュー待ã¡
+issues.review.rejected=変更è¦è«‹æ¸ˆã¿
+issues.review.stale=承èªå¾Œã«æ›´æ–°ã•ã‚Œã¾ã—ãŸ
+issues.review.unofficial=カウントã•ã‚Œãªã„承èª
issues.assignee.error=予期ã—ãªã„エラーã«ã‚ˆã‚Šã€ä¸€éƒ¨ã®æ‹…å½“è€…ã‚’è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
issues.reference_issue.body=内容
issues.content_history.deleted=削除ã—ã¾ã—ãŸ
@@ -1822,7 +1835,8 @@ pulls.is_empty=ã“ã®ãƒ–ランãƒã®å¤‰æ›´ã¯æ—¢ã«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ–ランãƒ
pulls.required_status_check_failed=ã„ãã¤ã‹ã®å¿…è¦ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãŒæˆåŠŸã—ã¦ã„ã¾ã›ã‚“。
pulls.required_status_check_missing=å¿…è¦ãªãƒã‚§ãƒƒã‚¯ãŒã„ãã¤ã‹æŠœã‘ã¦ã„ã¾ã™ã€‚
pulls.required_status_check_administrator=管ç†è€…ã§ã‚ã‚‹ãŸã‚ã€ã“ã®ãƒ—ルリクエストをマージã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚
-pulls.blocked_by_approvals=ã“ã®ãƒ—ルリクエストã¯ã¾ã 承èªæ•°ãŒè¶³ã‚Šã¾ã›ã‚“。 %[1]d/%[2]dã®æ‰¿èªã‚’å¾—ã¦ã„ã¾ã™ã€‚
+pulls.blocked_by_approvals=ã“ã®ãƒ—ルリクエストã¯ã¾ã å¿…è¦ãªæ‰¿èªæ•°ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 å…¬å¼ã®æ‰¿èªã‚’ %[1]d / %[2]d å¾—ã¦ã„ã¾ã™ã€‚
+pulls.blocked_by_approvals_whitelisted=ã“ã®ãƒ—ルリクエストã¯ã¾ã å¿…è¦ãªæ‰¿èªæ•°ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 許å¯ãƒªã‚¹ãƒˆã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¾ãŸã¯ãƒãƒ¼ãƒ ã‹ã‚‰ã®æ‰¿èªã‚’ %[1]d / %[2]d å¾—ã¦ã„ã¾ã™ã€‚
pulls.blocked_by_rejection=ã“ã®ãƒ—ルリクエストã¯å…¬å¼ãƒ¬ãƒ“ューアã«ã‚ˆã‚Šå¤‰æ›´è¦è«‹ã•ã‚Œã¦ã„ã¾ã™ã€‚
pulls.blocked_by_official_review_requests=ã“ã®ãƒ—ルリクエストã«ã¯å…¬å¼ãƒ¬ãƒ“ューä¾é ¼ãŒã‚ã‚Šã¾ã™ã€‚
pulls.blocked_by_outdated_branch=ã“ã®ãƒ—ルリクエストã¯é…ã‚Œã®ãŸã‚ブãƒãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
@@ -1864,9 +1878,9 @@ pulls.unrelated_histories=マージ失敗: マージHEADã¨ãƒ™ãƒ¼ã‚¹ã«ã¯å…±é€š
pulls.merge_out_of_date=マージ失敗: マージã®ç”Ÿæˆä¸ã«ãƒ™ãƒ¼ã‚¹ãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚ ヒント: ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„
pulls.head_out_of_date=マージ失敗: マージã®ç”Ÿæˆä¸ã« head ãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚ ヒント: ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„
pulls.has_merged=失敗: プルリクエストã¯ãƒžãƒ¼ã‚¸ã•ã‚Œã¦ã„ã¾ã—ãŸã€‚å†åº¦ãƒžãƒ¼ã‚¸ã—ãŸã‚Šã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ–ランãƒã‚’変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-pulls.push_rejected=マージ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚ ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã®Gitフックを見直ã—ã¦ãã ã•ã„。
+pulls.push_rejected=プッシュ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚ ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã®Gitフックを見直ã—ã¦ãã ã•ã„。
pulls.push_rejected_summary=æ‹’å¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å…¨ä½“:
-pulls.push_rejected_no_message=マージ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã€ãƒªãƒ¢ãƒ¼ãƒˆã‹ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。*
ã®ã¨ãã¯ã€ã™ã¹ã¦ã®ãƒ–ランãƒã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã—ã¾ã™ã€‚ 文法ã«ã¤ã„ã¦ã¯ github.com/gobwas/glob ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: master
〠{master,release*}
+settings.branch_filter_desc=プッシュã€ãƒ–ランãƒä½œæˆã€ãƒ–ランãƒå‰Šé™¤ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã™ã‚‹ãƒ–ランãƒã‚’ã€globパターンã§æŒ‡å®šã™ã‚‹ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã§ã™ã€‚ 空ã‹*
ã®ã¨ãã¯ã€ã™ã¹ã¦ã®ãƒ–ランãƒã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã—ã¾ã™ã€‚ 文法ã«ã¤ã„ã¦ã¯ %[2]s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: master
〠{master,release*}
settings.authorization_header=Authorizationヘッダー
settings.authorization_header_desc=入力ã—ãŸå ´åˆã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«Authorizationヘッダーã¨ã—ã¦ä»˜åŠ ã—ã¾ã™ã€‚ 例: %s
settings.active=有効
@@ -2409,7 +2425,7 @@ settings.protect_status_check_matched=マッãƒ
settings.protect_invalid_status_check_pattern=`ä¸æ£ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãƒ‘ターン: "%s"`
settings.protect_no_valid_status_check_patterns=有効ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãƒ‘ターンãŒã‚ã‚Šã¾ã›ã‚“。
settings.protect_required_approvals=å¿…è¦ãªæ‰¿èªæ•°:
-settings.protect_required_approvals_desc=肯定的ãªãƒ¬ãƒ“ューã®æ•°ã‚’満ãŸã—ãŸãƒ—ルリクエストã—ã‹ãƒžãƒ¼ã‚¸ã§ããªã„よã†ã«ã—ã¾ã™ã€‚
+settings.protect_required_approvals_desc=å¿…è¦ãªæ‰¿èªæ•°ã‚’満ãŸã—ãŸãƒ—ルリクエストã—ã‹ãƒžãƒ¼ã‚¸ã§ããªã„よã†ã«ã—ã¾ã™ã€‚ å¿…è¦ã¨ãªã‚‹æ‰¿èªã¨ã¯ã€è¨±å¯ãƒªã‚¹ãƒˆã«ã‚るユーザーやãƒãƒ¼ãƒ ã€ã‚‚ã—ãã¯æ›¸ãè¾¼ã¿æ¨©é™ã‚’æŒã¤èª°ã‹ã‹ã‚‰ã®ã‚‚ã®ã§ã™ã€‚
settings.protect_approvals_whitelist_enabled=許å¯ãƒªã‚¹ãƒˆã«ç™»éŒ²ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚„ãƒãƒ¼ãƒ ã«æ‰¿èªã‚’制é™
settings.protect_approvals_whitelist_enabled_desc=許å¯ãƒªã‚¹ãƒˆã«ç™»éŒ²ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã¾ãŸã¯ãƒãƒ¼ãƒ ã«ã‚ˆã‚‹ãƒ¬ãƒ“ューã®ã¿ã‚’ã€å¿…è¦ãªæ‰¿èªæ•°ã«ã‚«ã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚ 承èªã®è¨±å¯ãƒªã‚¹ãƒˆãŒç„¡ã„å ´åˆã¯ã€æ›¸ãè¾¼ã¿æ¨©é™ã‚’æŒã¤äººã«ã‚ˆã‚‹ãƒ¬ãƒ“ューを必è¦ãªæ‰¿èªæ•°ã«ã‚«ã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚
settings.protect_approvals_whitelist_users=許å¯ãƒªã‚¹ãƒˆã«å«ã‚るレビューア:
@@ -2421,12 +2437,12 @@ settings.ignore_stale_approvals_desc=å¤ã„コミットã«å¯¾ã—ã¦è¡Œã‚ã‚ŒãŸ
settings.require_signed_commits=コミット署åå¿…é ˆ
settings.require_signed_commits_desc=ç½²åã•ã‚Œã¦ã„ãªã„å ´åˆã€ã¾ãŸã¯ç½²åãŒæ¤œè¨¼ã§ããªã‹ã£ãŸå ´åˆã¯ã€ã“ã®ãƒ–ランãƒã¸ã®ãƒ—ッシュを拒å¦ã—ã¾ã™ã€‚
settings.protect_branch_name_pattern=ä¿è·ãƒ–ランãƒåã®ãƒ‘ターン
-settings.protect_branch_name_pattern_desc=ä¿è·ãƒ–ランãƒåã®ãƒ‘ターン。書ãæ–¹ã«ã¤ã„ã¦ã¯ ドã‚ュメント ã‚’å‚ç…§ã—ã¦ãã ã•ã„。例: main, release/**
+settings.protect_branch_name_pattern_desc=ä¿è·ãƒ–ランãƒåã®ãƒ‘ターン。書ãæ–¹ã«ã¤ã„ã¦ã¯ ドã‚ュメント ã‚’å‚ç…§ã—ã¦ãã ã•ã„。例: main, release/**
settings.protect_patterns=パターン
settings.protect_protected_file_patterns=ä¿è·ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ‘ターン (セミコãƒãƒ³';'ã§åŒºåˆ‡ã‚‹):
-settings.protect_protected_file_patterns_desc=ä¿è·ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã“ã®ãƒ–ランãƒã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ãƒ»ç·¨é›†ãƒ»å‰Šé™¤ã™ã‚‹æ¨©é™ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ã‚ã£ã¦ã‚‚ã€ç›´æŽ¥å¤‰æ›´ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ github.com/gobwas/glob ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
+settings.protect_protected_file_patterns_desc=ä¿è·ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã“ã®ãƒ–ランãƒã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ãƒ»ç·¨é›†ãƒ»å‰Šé™¤ã™ã‚‹æ¨©é™ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ã‚ã£ã¦ã‚‚ã€ç›´æŽ¥å¤‰æ›´ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ %[2]s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
settings.protect_unprotected_file_patterns=ä¿è·ã—ãªã„ファイルã®ãƒ‘ターン (セミコãƒãƒ³';'ã§åŒºåˆ‡ã‚‹):
-settings.protect_unprotected_file_patterns_desc=ä¿è·ã—ãªã„ファイルã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ›¸ãè¾¼ã¿æ¨©é™ãŒã‚ã‚Œã°ãƒ—ッシュ制é™ã‚’ãƒã‚¤ãƒ‘スã—ã¦ç›´æŽ¥å¤‰æ›´ã§ãã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ github.com/gobwas/glob ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
+settings.protect_unprotected_file_patterns_desc=ä¿è·ã—ãªã„ファイルã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ›¸ãè¾¼ã¿æ¨©é™ãŒã‚ã‚Œã°ãƒ—ッシュ制é™ã‚’ãƒã‚¤ãƒ‘スã—ã¦ç›´æŽ¥å¤‰æ›´ã§ãã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ %[2]s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
settings.add_protected_branch=ä¿è·ã‚’有効ã«ã™ã‚‹
settings.delete_protected_branch=ä¿è·ã‚’無効ã«ã™ã‚‹
settings.update_protect_branch_success=ルール "%s" ã«å¯¾ã™ã‚‹ãƒ–ランãƒä¿è·ã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚
@@ -2458,7 +2474,7 @@ settings.tags.protection.allowed.teams=許å¯ã™ã‚‹ãƒãƒ¼ãƒ
settings.tags.protection.allowed.noone=ãªã—
settings.tags.protection.create=ã‚¿ã‚°ã‚’ä¿è·
settings.tags.protection.none=ã‚¿ã‚°ã¯ä¿è·ã•ã‚Œã¦ã„ã¾ã›ã‚“。
-settings.tags.protection.pattern.description=ã²ã¨ã¤ã®ã‚¿ã‚°åã‹ã€è¤‡æ•°ã®ã‚¿ã‚°ã«ãƒžãƒƒãƒã™ã‚‹globパターンã¾ãŸã¯æ£è¦è¡¨ç¾ã‚’使用ã§ãã¾ã™ã€‚ 詳ã—ãã¯ã‚¿ã‚°ã®ä¿è·ã‚¬ã‚¤ãƒ‰ ã‚’ã”覧ãã ã•ã„。
+settings.tags.protection.pattern.description=ã²ã¨ã¤ã®ã‚¿ã‚°åã‹ã€è¤‡æ•°ã®ã‚¿ã‚°ã«ãƒžãƒƒãƒã™ã‚‹globパターンã¾ãŸã¯æ£è¦è¡¨ç¾ã‚’使用ã§ãã¾ã™ã€‚ 詳ã—ãã¯ã‚¿ã‚°ã®ä¿è·ã‚¬ã‚¤ãƒ‰ ã‚’ã”覧ãã ã•ã„。
settings.bot_token=Botトークン
settings.chat_id=ãƒãƒ£ãƒƒãƒˆID
settings.thread_id=スレッドID
@@ -2638,7 +2654,7 @@ branch.delete_desc=ブランãƒã®å‰Šé™¤ã¯æ’ä¹…çš„ã§ã™ã€‚ 実際ã«å‰Šé™¤ã•
branch.deletion_success=ブランム"%s" を削除ã—ã¾ã—ãŸã€‚
branch.deletion_failed=ブランム"%s" ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚
branch.delete_branch_has_new_commits=マージ後ã«æ–°ã—ã„コミットãŒè¿½åŠ ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ãƒ–ランム"%s" を削除ã§ãã¾ã›ã‚“。
-branch.create_branch=ブランム%s を作æˆ
+branch.create_branch=ブランム%s を作æˆ
branch.create_from=`"%s" ã‹ã‚‰`
branch.create_success=ブランム"%s" を作æˆã—ã¾ã—ãŸã€‚
branch.branch_already_exists=ブランム"%s" ã¯ã€ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã«æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚
@@ -2664,7 +2680,7 @@ branch.new_branch=æ–°ã—ã„ブランãƒã®ä½œæˆ
branch.new_branch_from=`"%s" ã‹ã‚‰æ–°ã—ã„ブランãƒã‚’作æˆ`
branch.renamed=ブランム%s 㯠%s ã«ãƒªãƒãƒ¼ãƒ ã•ã‚Œã¾ã—ãŸã€‚
-tag.create_tag=ã‚¿ã‚° %s を作æˆ
+tag.create_tag=ã‚¿ã‚° %s を作æˆ
tag.create_tag_operation=ã‚¿ã‚°ã®ä½œæˆ
tag.confirm_create_tag=タグを作æˆ
tag.create_tag_from=`"%s" ã‹ã‚‰æ–°ã—ã„タグを作æˆ`
@@ -2742,7 +2758,7 @@ settings.change_orgname_redirect_prompt=å¤ã„åå‰ã¯ã€å†ä½¿ç”¨ã•ã‚Œã¦ã„
settings.update_avatar_success=組織ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚
settings.delete=組織を削除
settings.delete_account=ã“ã®çµ„織を削除
-settings.delete_prompt=組織ã¯æ’ä¹…çš„ã«å‰Šé™¤ã•ã‚Œã€å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 続行ã—ã¾ã™ã‹ï¼Ÿ
+settings.delete_prompt=組織ã¯æ’ä¹…çš„ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ï¼
settings.confirm_delete_account=削除を確èª
settings.delete_org_title=組織ã®å‰Šé™¤
settings.delete_org_desc=組織をæ’ä¹…çš„ã«å‰Šé™¤ã—ã¾ã™ã€‚ 続行ã—ã¾ã™ã‹ï¼Ÿ
@@ -2771,7 +2787,7 @@ teams.leave.detail=%s ã‹ã‚‰è„±é€€ã—ã¾ã™ã‹ï¼Ÿ
teams.can_create_org_repo=リãƒã‚¸ãƒˆãƒªã‚’作æˆ
teams.can_create_org_repo_helper=メンãƒãƒ¼ã¯çµ„ç¹”ã®ãƒªãƒã‚¸ãƒˆãƒªã‚’æ–°ãŸã«ä½œæˆã§ãã¾ã™ã€‚作æˆè€…ã«ã¯æ–°ã—ã„リãƒã‚¸ãƒˆãƒªã®ç®¡ç†è€…権é™ãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã€‚
teams.none_access=アクセスãªã—
-teams.none_access_helper=メンãƒã¯ã€ã“ã®ãƒ¦ãƒ‹ãƒƒãƒˆã§è¡¨ç¤ºã‚„ä»–ã®æ“作を行ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。
+teams.none_access_helper=メンãƒãƒ¼ã¯ã€ã“ã®ãƒ¦ãƒ‹ãƒƒãƒˆã‚’表示ã—ãŸã‚Šä»–ã®æ“作を行ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 公開リãƒã‚¸ãƒˆãƒªã«ã¯é©ç”¨ã•ã‚Œã¾ã›ã‚“。
teams.general_access=一般的ãªã‚¢ã‚¯ã‚»ã‚¹
teams.general_access_helper=メンãƒãƒ¼ã®æ¨©é™ã¯ä¸‹è¨˜ã®æ¨©é™ãƒ†ãƒ¼ãƒ–ルã§æ±ºå®šã•ã‚Œã¾ã™ã€‚
teams.read_access=èªã¿å–ã‚Š
@@ -2840,7 +2856,7 @@ last_page=最後
total=åˆè¨ˆ: %d
settings=管ç†è¨å®š
-dashboard.new_version_hint=Gitea %s ãŒå…¥æ‰‹å¯èƒ½ã«ãªã‚Šã¾ã—ãŸã€‚ ç¾åœ¨å®Ÿè¡Œã—ã¦ã„ã‚‹ã®ã¯ %s ã§ã™ã€‚ 詳細㯠ブãƒã‚° を確èªã—ã¦ãã ã•ã„。
+dashboard.new_version_hint=Gitea %s ãŒå…¥æ‰‹å¯èƒ½ã«ãªã‚Šã¾ã—ãŸã€‚ ç¾åœ¨å®Ÿè¡Œã—ã¦ã„ã‚‹ã®ã¯ %s ã§ã™ã€‚ 詳細㯠ブãƒã‚° を確èªã—ã¦ãã ã•ã„。
dashboard.statistic=サマリー
dashboard.maintenance_operations=メンテナンスæ“作
dashboard.system_status=システム状æ³
@@ -2925,6 +2941,7 @@ dashboard.start_schedule_tasks=Actionsスケジュールタスクを開始
dashboard.sync_branch.started=ブランãƒã®åŒæœŸã‚’開始ã—ã¾ã—ãŸ
dashboard.sync_tag.started=ã‚¿ã‚°ã®åŒæœŸã‚’開始ã—ã¾ã—ãŸ
dashboard.rebuild_issue_indexer=イシューインデクサーã®å†æ§‹ç¯‰
+dashboard.sync_repo_licenses=リãƒã‚¸ãƒˆãƒªãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã®åŒæœŸ
users.user_manage_panel=ユーザーアカウント管ç†
users.new_account=ユーザーアカウントを作æˆ
@@ -3032,12 +3049,12 @@ packages.size=サイズ
packages.published=é…布
defaulthooks=デフォルトWebhook
-defaulthooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¨ãªã‚Šã€å…¨ã¦ã®æ–°è¦ãƒªãƒã‚¸ãƒˆãƒªã«ã‚³ãƒ”ーã•ã‚Œã¾ã™ã€‚ 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
+defaulthooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¨ãªã‚Šã€å…¨ã¦ã®æ–°è¦ãƒªãƒã‚¸ãƒˆãƒªã«ã‚³ãƒ”ーã•ã‚Œã¾ã™ã€‚ 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
defaulthooks.add_webhook=デフォルトWebhookã®è¿½åŠ
defaulthooks.update_webhook=デフォルトWebhookã®æ›´æ–°
systemhooks=システムWebhook
-systemhooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ã€ã‚·ã‚¹ãƒ†ãƒ 内ã®ã™ã¹ã¦ã®ãƒªãƒã‚¸ãƒˆãƒªã§å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚ ãã®ãŸã‚ã€ãƒ‘フォーマンスã«åŠã¼ã™å½±éŸ¿ã‚’考慮ã—ãŸã†ãˆã§è¨å®šã—ã¦ãã ã•ã„。 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
+systemhooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ã€ã‚·ã‚¹ãƒ†ãƒ 内ã®ã™ã¹ã¦ã®ãƒªãƒã‚¸ãƒˆãƒªã§å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚ ãã®ãŸã‚ã€ãƒ‘フォーマンスã«åŠã¼ã™å½±éŸ¿ã‚’考慮ã—ãŸã†ãˆã§è¨å®šã—ã¦ãã ã•ã„。 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
systemhooks.add_webhook=システムWebhookを追åŠ
systemhooks.update_webhook=システムWebhookを更新
@@ -3132,18 +3149,18 @@ auths.tips=ヒント
auths.tips.oauth2.general=OAuth2èªè¨¼
auths.tips.oauth2.general.tip=æ–°ã—ã„OAuth2èªè¨¼ã‚’登録ã™ã‚‹ã¨ãã¯ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯/リダイレクトURLã¯ä»¥ä¸‹ã«ãªã‚Šã¾ã™:
auths.tip.oauth2_provider=OAuth2プãƒãƒã‚¤ãƒ€ãƒ¼
-auths.tip.bitbucket=æ–°ã—ã„OAuthコンシューマーを https://bitbucket.org/account/user/{ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å}/oauth-consumers/new ã‹ã‚‰ç™»éŒ²ã—ã€"アカウント" ã« "èªã¿å–ã‚Š" 権é™ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
+auths.tip.bitbucket=æ–°ã—ã„OAuthコンシューマーを %s ã‹ã‚‰ç™»éŒ²ã—ã€"アカウント" ã« "èªã¿å–ã‚Š" 権é™ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
auths.tip.nextcloud=æ–°ã—ã„OAuthコンシューマーをã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ "Settings -> Security -> OAuth 2.0 client" ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.dropbox=æ–°ã—ã„アプリケーションを https://www.dropbox.com/developers/apps ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.facebook=æ–°ã—ã„アプリケーションを https://developers.facebook.com/apps ã§ç™»éŒ²ã—ã€"Facebook Login"ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
-auths.tip.github=æ–°ã—ã„OAuthアプリケーションを https://github.com/settings/applications/new ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.gitlab_new=æ–°ã—ã„アプリケーションを https://gitlab.com/-/profile/applications ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.google_plus=OAuth2ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆè³‡æ ¼æƒ…å ±ã‚’ã€Google APIコンソール https://console.developers.google.com/ ã‹ã‚‰å–å¾—ã—ã¦ãã ã•ã„。
+auths.tip.dropbox=æ–°ã—ã„アプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.facebook=æ–°ã—ã„アプリケーションを %s ã§ç™»éŒ²ã—ã€"Facebook Login"ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
+auths.tip.github=æ–°ã—ã„OAuthアプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.gitlab_new=æ–°ã—ã„アプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.google_plus=OAuth2ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆè³‡æ ¼æƒ…å ±ã‚’ã€Google APIコンソール %s ã‹ã‚‰å–å¾—ã—ã¦ãã ã•ã„。
auths.tip.openid_connect=OpenID Connect Discoveryã®URL "https://{server}/.well-known/openid-configuration" をエンドãƒã‚¤ãƒ³ãƒˆã¨ã—ã¦æŒ‡å®šã—ã¦ãã ã•ã„
-auths.tip.twitter=https://dev.twitter.com/apps ã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã‚¢ãƒ—リケーションを作æˆã—ã€â€œAllow this application to be used to Sign in with Twitterâ€ã‚ªãƒ—ションを有効ã«ã—ã¦ãã ã•ã„。
-auths.tip.discord=æ–°ã—ã„アプリケーションを https://discordapp.com/developers/applications/me ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.gitea=æ–°ã—ã„OAuthアプリケーションを登録ã—ã¦ãã ã•ã„。 利用ガイド㯠https://docs.gitea.com/development/oauth2-provider ã«ã‚ã‚Šã¾ã™
-auths.tip.yandex=`https://oauth.yandex.com/client/new ã§æ–°ã—ã„アプリケーションを作æˆã—ã¦ãã ã•ã„。 "Yandex.Passport API" セクションã§æ¬¡ã®é …目を許å¯ã—ã¾ã™: "Access to email address"ã€"Access to user avatar"ã€"Access to username, first name and surname, gender"`
+auths.tip.twitter=%s ã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã‚¢ãƒ—リケーションを作æˆã—ã€â€œAllow this application to be used to Sign in with Twitterâ€ã‚ªãƒ—ションを有効ã«ã—ã¦ãã ã•ã„。
+auths.tip.discord=æ–°ã—ã„アプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.gitea=æ–°ã—ã„OAuthアプリケーションを登録ã—ã¦ãã ã•ã„。 利用ガイド㯠%s ã«ã‚ã‚Šã¾ã™
+auths.tip.yandex=`%s ã§æ–°ã—ã„アプリケーションを作æˆã—ã¦ãã ã•ã„。 "Yandex.Passport API" セクションã§æ¬¡ã®é …目を許å¯ã—ã¾ã™: "Access to email address"ã€"Access to user avatar"ã€"Access to username, first name and surname, gender"`
auths.tip.mastodon=èªè¨¼ã—ãŸã„Mastodonインスタンスã®ã‚«ã‚¹ã‚¿ãƒ URLを入力ã—ã¦ãã ã•ã„ (入力ã—ãªã„å ´åˆã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®URLを使用ã—ã¾ã™)
auths.edit=èªè¨¼ã‚½ãƒ¼ã‚¹ã®ç·¨é›†
auths.activated=èªè¨¼ã‚½ãƒ¼ã‚¹ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ãƒˆæ¸ˆã¿
@@ -3699,6 +3716,11 @@ workflow.disable_success=ワークフãƒãƒ¼ '%s' ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚
workflow.enable=ワークフãƒãƒ¼ã‚’有効ã«ã™ã‚‹
workflow.enable_success=ワークフãƒãƒ¼ '%s' ãŒæœ‰åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚
workflow.disabled=ワークフãƒãƒ¼ã¯ç„¡åŠ¹ã§ã™ã€‚
+workflow.run=ワークフãƒãƒ¼ã‚’実行
+workflow.not_found=ワークフãƒãƒ¼ '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
+workflow.run_success=ワークフãƒãƒ¼ '%s' ã¯æ£å¸¸ã«å®Ÿè¡Œã•ã‚Œã¾ã—ãŸã€‚
+workflow.from_ref=使用ã™ã‚‹ãƒ¯ãƒ¼ã‚¯ãƒ•ãƒãƒ¼ã®å–å¾—å…ƒ
+workflow.has_workflow_dispatch=ã“ã®ãƒ¯ãƒ¼ã‚¯ãƒ•ãƒãƒ¼ã«ã¯ workflow_dispatch イベントトリガーãŒã‚ã‚Šã¾ã™ã€‚
need_approval_desc=フォークプルリクエストã®ãƒ¯ãƒ¼ã‚¯ãƒ•ãƒãƒ¼ã‚’実行ã™ã‚‹ã«ã¯æ‰¿èªãŒå¿…è¦ã§ã™ã€‚
diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini
index 16f4bd310efaf..91c5b24ab560f 100644
--- a/options/locale/locale_ko-KR.ini
+++ b/options/locale/locale_ko-KR.ini
@@ -371,12 +371,10 @@ applications=어플리케ì´ì…˜
orgs=ì¡°ì§ ê´€ë¦¬
repos=ì €ìž¥ì†Œ
delete=ê³„ì • ì‚ì œ
-twofa=2단계 ì¸ì¦
account_link=ì—°ê²°ëœ ê³„ì •
organization=ì¡°ì§
public_profile=공개 프로필
-password_username_disabled=로컬 사용ìžê°€ ì•„ë‹Œ 경우 ì‚¬ìš©ìž ì´ë¦„ ë³€ê²½ì„ í• ìˆ˜ 없습니다. ìžì„¸í•œ ë‚´ìš©ì€ ê´€ë¦¬ìžì—게 문ì˜í•´ì£¼ì„¸ìš”.
full_name=성명
website=웹 사ì´íŠ¸
location=위치
@@ -494,15 +492,12 @@ oauth2_application_edit=ìˆ˜ì •í•˜ê¸°
revoke_key=취소
revoke_oauth2_grant=ì ‘ê·¼ 권한 ì œê±°
-twofa_desc=2단계 ì¸ì¦ì€ ê³„ì •ì˜ ë³´ì•ˆì„ í–¥ìƒì‹œí‚µë‹ˆë‹¤.
twofa_is_enrolled=ê·€í•˜ì˜ ê³„ì •ì€ í˜„ìž¬ 2단계 ì¸ì¦ì— 등ë¡ë˜ì–´ 있습니다.
twofa_not_enrolled=ê·€í•˜ì˜ ê³„ì •ì€ í˜„ìž¬ 2단계 ì¸ì¦ì— 등ë¡ë˜ì–´ 있지 않습니다.
twofa_disable=2단계 ì¸ì¦ í•´ì œ
-twofa_scratch_token_regenerate=스í¬ëž˜ì¹˜ í† í° ìž¬ìƒì„±
twofa_enroll=2단계 ì¸ì¦ì— 등ë¡í•˜ê¸°
twofa_disable_note=필요한 경우 2단계 ì¸ì¦ì„ í•´ì œí• ìˆ˜ 있습니다.
twofa_disable_desc=2단계 ì¸ì¦ì„ í•´ì œí•˜ë©´ ê·€í•˜ì˜ ê³„ì •ì´ ë³´ì•ˆì— ì·¨ì•½í•´ì§ˆ 것 입니다. 계ì†í•˜ì‹œê² 습니까?
-regenerate_scratch_token_desc=스í¬ëž˜ì¹˜ í† í°ì„ 분실 했거나 ì´ë¯¸ 로그ì¸ì— 사용ë˜ì—ˆë‹¤ë©´ 여기ì—ì„œ ìž¬ì„¤ì • í• ìˆ˜ 있습니다.
twofa_disabled=2단계 ì¸ì¦ì´ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
scan_this_image=ì´ ì´ë¯¸ì§€ë¥¼ ë‹¹ì‹ ì˜ ì¸ì¦ ì• í”Œë¦¬ì¼€ì´ì…˜ì—ì„œ 스캔하세요:
or_enter_secret=ë˜ëŠ” ì´ ë¹„ë°€í‚¤ë¥¼ ìž…ë ¥í•˜ì„¸ìš”: %s
@@ -822,12 +817,12 @@ issues.dependency.add_error_dep_not_same_repo=ë‘ ì´ìŠˆëŠ” ê°™ì€ ë ˆí¬ì§€í†
issues.review.self.approval=ìžì‹ ì˜ í’€ 리퀘스트를 승ì¸í• 수 없습니다.
issues.review.self.rejection=ìžì‹ ì˜ í’€ ë¦¬í€˜ìŠ¤íŠ¸ì— ëŒ€í•œ ë³€ê²½ì„ ìš”ì²í• 수 없습니다.
issues.review.approve="ì´ ë³€ê²½ì‚¬í•ì„ 승ì¸í•˜ì˜€ìŠµë‹ˆë‹¤. %s"
-issues.review.comment=ê²€í† ë¨ %s
issues.review.pending=보류
issues.review.review=ê²€í†
issues.review.reviewers=리뷰어
issues.review.show_outdated=ì˜¤ëž˜ëœ ë‚´ì— ë³´ê¸°
issues.review.hide_outdated=ì˜¤ëž˜ëœ ë‚´ì— ìˆ¨ê¸°ê¸°
+issues.review.commented=댓글
pulls.new=새 풀 리퀘스트
@@ -862,7 +857,6 @@ milestones.closed=닫힘 %s
milestones.no_due_date=기한 ì—†ìŒ
milestones.open=열기
milestones.close=닫기
-milestones.completeness=%d%% 완료ë¨
milestones.create=마ì¼ìŠ¤í†¤ ìƒì„±
milestones.title=타ì´í‹€
milestones.desc=설명
@@ -1067,19 +1061,12 @@ settings.key_been_used=ë™ì¼í•œ ë‚´ìš©ì˜ ë°°í¬í‚¤ë¥¼ ì´ë¯¸ 사용중입니
settings.key_name_used=ê°™ì€ ì´ë¦„ì˜ ë°°í¬í‚¤ê°€ ì´ë¯¸ 있습니다.
settings.deploy_key_deletion=ë°°í¬í‚¤ ì‚ì œ
settings.deploy_key_deletion_success=ë°°í¬í‚¤ê°€ ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤.
-settings.branches=브랜치
-settings.protected_branch=브랜치 보호
settings.protected_branch_can_push=푸시를 í—ˆìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
settings.protected_branch_can_push_yes=í‘¸ì‹œí• ìˆ˜ 있습니다.
-settings.protected_branch_can_push_no=í‘¸ì‹œí• ìˆ˜ 없습니다.
-settings.branch_protection='%s' 브랜치 보호
settings.protect_this_branch=브랜치 보호 활성화
settings.protect_disable_push=푸시 ë„기
settings.protect_enable_push=푸시 켜기
settings.protect_required_approvals=필요한 승ì¸:
-settings.add_protected_branch=보호 활성화
-settings.delete_protected_branch=보호 비활성화
-settings.protected_branch_deletion=브랜치 보호 비활성화
settings.choose_branch=브랜치 ì„ íƒ...
settings.no_protected_branch=ë³´í˜¸ëœ ë¸Œëžœì¹˜ê°€ 없습니다.
settings.edit_protected_branch=편집
@@ -1135,14 +1122,13 @@ release.downloads=다운로드
branch.name=브랜치명
branch.delete_head=ì‚ì œ
branch.delete_html=브랜치 ì‚ì œ
-branch.create_branch=%s 브랜치 ìƒì„±
+branch.create_branch=%s 브랜치 ìƒì„±
branch.deleted_by=%s ì— ì˜í•´ ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤.
topic.manage_topics=í† í”½ 관리
topic.done=완료
-topic.count_prompt=25ê°œ ì´ìƒì˜ í† í”½ì„ ì„ íƒí•˜ì‹¤ 수 없습니다.
@@ -1534,7 +1520,6 @@ raw_seconds=ì´ˆ
raw_minutes=분
[dropzone]
-invalid_input_type=ì´ í˜•ì‹ì˜ 파ì¼ì„ ì—…ë¡œë“œí• ìˆ˜ 없습니다.
file_too_big=íŒŒì¼ í¬ê¸°({{filesize}} MB) ê°€ 최대 í¬ê¸°({{maxFilesize}} MB) 를 초과합니다.
remove_file=íŒŒì¼ ì œê±°
@@ -1560,7 +1545,6 @@ error.unit_not_allowed=ì´ ì €ìž¥ì†Œ ì„¹ì…˜ì— ì ‘ê·¼í• ìˆ˜ 없습니다.
[packages]
filter.type=ìœ í˜•
-alpine.repository.branches=브랜치
alpine.repository.repositories=ì €ìž¥ì†Œ
conan.details.repository=ì €ìž¥ì†Œ
owner.settings.cleanuprules.enabled=활성화ë¨
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index 035b0008e387b..ee6f3911b0d95 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -25,6 +25,7 @@ enable_javascript=Šai tīmekļvietnei ir nepieciešams JavaScript.
toc=Satura rÄdÄ«tÄjs
licenses=Licences
return_to_gitea=Atgriezties Gitea
+more_items=VairÄk vienumu
username=LietotÄjvÄrds
email=E-pasta adrese
@@ -92,6 +93,7 @@ remove_all=Noņemt visus
remove_label_str=`Noņemt ierakstu "%s"`
edit=Labot
view=Skatīt
+test=PÄrbaudÄ«t
enabled=Iespējots
disabled=Atspējots
@@ -113,6 +115,7 @@ loading=Notiek ielÄde…
error=Kļūda
error404=Lapa, ko tiek mÄ“Ä£inÄts atvÄ“rt, vai nu nepastÄv vai arÄ« nav tiesÄ«bu to aplÅ«kot.
go_back=Atgriezties
+invalid_data=Nederīgi dati: %v
never=Nekad
unknown=NezinÄms
@@ -184,22 +187,16 @@ string.desc=Z - A
[error]
occurred=Radusies kļūda
-report_message=Ja ir pÄrliecÄ«ba, ka Å¡Ä« ir Gitea nepilnÄ«ba, lÅ«gums pÄrbaudÄ«t GitHub, vai tÄ jau nav zinÄma, vai izveidot jaunu pieteikumu, ja nepiecieÅ¡ams.
-missing_csrf=Kļūdains pieprasījums: netika iesūtīta drošības pilnvara
-invalid_csrf=Kļūdains pieprasījums: iesūtīta kļūdaina drošības pilnvara
not_found=Pieprasītie dati netika atrasti.
network_error=Tīkla kļūda
[startpage]
app_desc=Viegli uzstÄdÄms Git serviss
install=VienkÄrÅ¡i instalÄ“jams
-install_desc=VienkÄrÅ¡i jÄpalaiž izpildÄmais fails vajadzÄ«gajai platformai, jÄizmanto Docker, vai jÄiegÅ«st pakotne.
platform=Pieejama dažÄdÄm platformÄm
-platform_desc=Gitea iespÄ“jams uzstÄdÄ«t jebkur, kam Go var nokompilÄ“t: Windows, macOS, Linux, ARM utt. IzvÄ“lies to, kas tev patÄ«k!
lightweight=Viegla
lightweight_desc=Gitea ir miminÄlas prasÄ«bas un to var darbinÄt uz nedÄrga Raspberry Pi datora. Ietaupi savai ierÄ«cei resursus!
license=AtvÄ“rtÄ pirmkoda
-license_desc=IegÅ«sti code.gitea.io/gitea! Pievienojies un palÄ«dzi uzlabot, lai padarÄ«tu Å¡o projektu vÄ“l labÄku! NekautrÄ“jies un lÄ«dzdarbojies!
[install]
install=InstalÄcija
@@ -413,7 +410,6 @@ authorize_title=Autorizēt "%s" piekļuvi jūsu kontam?
authorization_failed=AutorizÄcija neizdevÄs
authorization_failed_desc=AutentifikÄcija neizdevÄs, jo tika veikts kļūdains pieprasÄ«jums. Sazinieties ar lietojumprogrammas, ar kuru mÄ“Ä£inÄjÄt autentificÄ“ties, uzturÄ“tÄju.
sspi_auth_failed=SSPI autentifikÄcija neizdevÄs
-password_pwned=IzvÄ“lÄ“tÄ parole ir nozagto paroļu sarakstÄ, kas iepriekÅ¡ ir atklÄts publiskÄs datu noplÅ«dÄ“s. LÅ«gums mÄ“Ä£inÄt vÄ“lreiz ar citu paroli un apsvÄ“rt to nomainÄ«t arÄ« citur.
password_pwned_err=NeizdevÄs pabeigt pieprasÄ«jumu uz HaveIBeenPwned
[mail]
@@ -619,17 +615,14 @@ applications=Lietotnes
orgs=PÄrvaldÄ«t organizÄcijas
repos=Repozitoriji
delete=Dzēst kontu
-twofa=Divfaktoru autentifikÄcija
account_link=Saistītie konti
organization=OrganizÄcijas
uid=UID
-webauthn=Drošības atslēgas
public_profile=Publiskais profils
biography_placeholder=PastÄsti mums mazliet par sevi! (Var izmantot Markdown)
location_placeholder=KopÄ«got savu aptuveno atraÅ¡anÄs vietu ar citiem
profile_desc=NorÄdÄ«t, kÄ profils tiek attÄ“lots citiem lietotÄjiem. PrimÄrÄ e-pasta adrese tiks izmantota paziņojumiem, paroles atjaunoÅ¡anai un Git tÄ«mekļa darbÄ«bÄm.
-password_username_disabled=Ne-lokÄliem lietotÄjiem nav atļauts mainÄ«t savu lietotÄja vÄrdu. Sazinieties ar sistÄ“mas administratoru, lai uzzinÄtu sÄ«kÄk.
full_name=Pilns vÄrds
website=MÄjas lapa
location=AtraÅ¡anÄs vieta
@@ -856,12 +849,10 @@ revoke_oauth2_grant=Atsaukt piekļuvi
revoke_oauth2_grant_description=Atsaucot piekļuvi Å¡ai treÅ¡as puses lietotnei tiks liegta piekļuve JÅ«su datiem. Vai turpinÄt?
revoke_oauth2_grant_success=Piekļuve veiksmīgi atsaukta.
-twofa_desc=Divfaktoru autentifikÄcija uzlabo konta droÅ¡Ä«bu.
twofa_recovery_tip=Ja ierīce tiek pazaudēta, iespējams izmantot vienreiz izmantojamo atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
twofa_is_enrolled=Kontam ir ieslÄ“gta divfaktoru autentifikÄcija.
twofa_not_enrolled=Kontam Å¡obrÄ«d nav ieslÄ“gta divfaktoru autentifikÄcija.
twofa_disable=AtslÄ“gt divfaktoru autentifikÄciju
-twofa_scratch_token_regenerate=Ģenerēt jaunu vienreizējo kodu
twofa_scratch_token_regenerated=VienreizÄ“jÄ pilnvara tagad ir %s. TÄ ir jÄglabÄ droÅ¡Ä vietÄ, tÄ vairs nekad netiks rÄdÄ«ta.
twofa_enroll=IeslÄ“gt divfaktoru autentifikÄciju
twofa_disable_note=NepiecieÅ¡amÄ«bas gadÄ«jumÄ divfaktoru autentifikÄciju ir iespÄ“jams atslÄ“gt.
@@ -872,10 +863,8 @@ scan_this_image=NoskenÄ“jiet Å¡o attÄ“lu ar autentifikÄcijas lietojumprogrammu:
or_enter_secret=Vai ievadiet šo noslēpumu: %s
then_enter_passcode=Ievadiet piekļuves kodu no lietojumprogrammas:
passcode_invalid=NederÄ«gs piekļuves kods. MÄ“Ä£iniet ievadÄ«t atkÄrtoti.
-twofa_enrolled=Kontam tika ieslÄ“gta divfaktoru autentifikÄcija. SaglabÄjiet vienreizÄ“jo kodu (%s) droÅ¡Ä vietÄ, jo to vairÄk nebÅ«s iespÄ“jams aplÅ«kot!
twofa_failed_get_secret=NeizdevÄs ielÄdÄ“t noslÄ“pumu.
-webauthn_desc=DroÅ¡Ä«bas atslÄ“gas ir fiziskas ierÄ«ces, kas satur kriptogrÄfiskas atslÄ“gas. TÄs var tikt izmantotas divu faktoru autentifikÄcijai. DroÅ¡Ä«bas atslÄ“gÄm ir jÄatbalsta WebAuthn autentifikÄcijas standarts.
webauthn_register_key=Pievienot drošības atslēgu
webauthn_nickname=SegvÄrds
webauthn_delete_key=Noņemt drošības atslēgu
@@ -1014,9 +1003,7 @@ tree_path_not_found_branch=AtzarÄ %[2]s nepastÄv ceļš %[1]s
tree_path_not_found_tag=TagÄ %[2]s nepastÄv ceļš %[1]s
transfer.accept=ApstiprinÄt Ä«paÅ¡nieka maiņu
-transfer.accept_desc=`Mainīt īpašnieku uz "%s"`
transfer.reject=Noraidīt īpašnieka maiņu
-transfer.reject_desc=`Atcelt īpašnieka maiņu uz "%s"`
transfer.no_permission_to_accept=Nav atļaujas pieņemt Å¡o pÄrsÅ«tÄ«Å¡anu.
transfer.no_permission_to_reject=Nav atļaujas noraidÄ«t Å¡o pÄrsÅ«tÄ«Å¡anu.
@@ -1150,7 +1137,6 @@ releases=Laidieni
tag=Tags
released_this=izveidoja Å¡o laidienu
tagged_this=izveidoja tagu revīzijai
-file.title=%s atzarÄ %s
file_raw=NeapstrÄdÄts
file_history=VÄ“sture
file_view_source=Skatīt avotu
@@ -1164,7 +1150,6 @@ ambiguous_runes_header=`Šis fails satur neviennozīmīgus unikoda simbolus`
ambiguous_runes_description=`Å is fails satur unikoda simbolus, kas var tikt sajauktas ar citÄm rakstzÄ«mÄ“m. Ja Å¡Ä·iet, ka tas ir ar nolÅ«ku, Å¡o brÄ«dinÄjumu var droÅ¡i neņemt vÄ“rÄ. JÄizmanto atsoļa taustiņš (Esc), lai atklÄtu tÄs.`
invisible_runes_line=`Šī līnija satur neredzamus unikoda simbolus`
ambiguous_runes_line=`Šī līnija satur neviennozīmīgus unikoda simbolus`
-ambiguous_character=`%[1]c [U+%04[1]X] var tikt sajaukts ar %[2]c [U+%04[2]X]`
escape_control_characters=Kodēt
unescape_control_characters=Atkodēt
@@ -1621,7 +1606,6 @@ issues.dependency.add_error_dep_not_same_repo=AbÄm problÄ“mÄm ir jÄbÅ«t no vi
issues.review.self.approval=Nevar apstiprinÄt savu izmaiņu pieprasÄ«jumi.
issues.review.self.rejection=Nevar pieprasīt izmaiņas savam izmaiņu pieprasījumam.
issues.review.approve=apstiprinÄja izmaiņas %s
-issues.review.comment=recenzēja %s
issues.review.dismissed=atmeta %s recenziju %s
issues.review.dismissed_label=Atmesta
issues.review.left_comment=atstÄja komentÄru
@@ -1646,6 +1630,7 @@ issues.review.hide_resolved=PaslÄ“pt atrisinÄto
issues.review.resolve_conversation=AtrisinÄt sarunu
issues.review.un_resolve_conversation=Atcelt sarunas atrisinÄjumu
issues.review.resolved_by=atzÄ«mÄ“ja sarunu kÄ atrisinÄtu
+issues.review.commented=Komentēt
issues.assignee.error=Ne visi atbildÄ«gie tika pievienoti, jo radÄs neparedzÄ“ta kļūda.
issues.reference_issue.body=Saturs
issues.content_history.deleted=dzēsts
@@ -1715,7 +1700,6 @@ pulls.is_empty=Mērķa atzars jau satur šī atzara izmaiņas. Šī revīzija b
pulls.required_status_check_failed=Dažas no pÄrbaudÄ“m nebija veiksmÄ«gas.
pulls.required_status_check_missing=TrÅ«kst dažu obligÄto pÄrbaužu.
pulls.required_status_check_administrator=KÄ administrators JÅ«s varat sapludinÄt Å¡o izmaiņu pieprasÄ«jumu.
-pulls.blocked_by_approvals=Å im izmaiņu pieprasÄ«jumam vÄ“l nav pietiekami daudz apstiprinÄjumu. NodroÅ¡inÄti %d no %d apstiprinÄjumiem.
pulls.blocked_by_rejection=Å im izmaiņu pieprasÄ«jumam oficiÄlais recenzents ir pieprasÄ«jis labojumus.
pulls.blocked_by_official_review_requests=Å im izmaiņu pieprasÄ«jumam ir oficiÄli recenzijas pieprasÄ«jumi.
pulls.blocked_by_outdated_branch=Šis izmaiņu pieprasījums ir bloķēts, jo tas ir novecojis.
@@ -1756,9 +1740,7 @@ pulls.unrelated_histories=SapludinÄÅ¡ana neizdevÄs: mÄ“rÄ·a un bÄzes atzariem
pulls.merge_out_of_date=SapludinÄÅ¡ana neizdevÄs: sapludinÄÅ¡anas laikÄ, bÄzes atzarÄ tika iesÅ«tÄ«tas izmaiņas. Ieteikums: mÄ“Ä£iniet atkÄrtoti.
pulls.head_out_of_date=SapludinÄÅ¡ana neizdevÄs: sapludinÄÅ¡anas laikÄ, bÄzes atzarÄ tika iesÅ«tÄ«tas izmaiņas. Ieteikums: mÄ“Ä£iniet atkÄrtoti.
pulls.has_merged=NeizdevÄs: izmaiņu pieprasÄ«jums jau ir sapludinÄts, nevar to darÄ«t atkÄrtoti vai mainÄ«t mÄ“rÄ·a atzaru.
-pulls.push_rejected=SapludinÄÅ¡ana neizdevÄs: iesÅ«tÄ«Å¡ana tika noraidÄ«ta. PÄrbaudiet git ÄÄ·us Å¡im repozitorijam.
pulls.push_rejected_summary=Pilns noraidīšanas ziņojums
-pulls.push_rejected_no_message=SapludinÄÅ¡ana neizdevÄs: Izmaiņu iesÅ«tÄ«Å¡ana tika noraidÄ«ta, bet serveris neatgrieza paziņojumu.*
, tiks nosÅ«tÄ«ti notikumi no visiem zariem. Skatieties github.com/gobwas/glob pieraksta dokumentÄciju. PiemÄ“rs: master
, {master,release*}
.
settings.authorization_header=AutorizÄcijas galvene
settings.authorization_header_desc=Tiks iekļauta kÄ autorizÄcijas galvenei pieprasÄ«jumiem, ja ir norÄdÄ«ta. PiemÄ“ram: %s.
settings.active=Aktīvs
@@ -2239,14 +2218,8 @@ settings.add_key_success=Izvietošanas atslēga "%s" tika pievienota.
settings.deploy_key_deletion=Noņemt izvietošanas atslēgu
settings.deploy_key_deletion_desc=Noņemot izvietoÅ¡anas atslÄ“gu, tai tiks liegta piekļuve Å¡im repozitorija. Vai turpinÄt?
settings.deploy_key_deletion_success=Izvietošanas atslēga tika noņemta.
-settings.branches=Atzari
-settings.protected_branch=Atzaru aizsargÄÅ¡ana
settings.protected_branch.save_rule=SaglabÄt noteikumu
settings.protected_branch.delete_rule=Dzēst noteikumu
-settings.protected_branch_can_push=Atļaut izmaiņu nosūtīšanu?
-settings.protected_branch_can_push_yes=Jūs varat nosūtīt izmaiņas
-settings.protected_branch_can_push_no=Jūs nevarat nosūtīt izmaiņas
-settings.branch_protection=Atzara aizsardzība atzaram '%s'
settings.protect_this_branch=Iespējot atzara aizsardzību
settings.protect_this_branch_desc=Neļauj atzara dzÄ“Å¡anu, kÄ arÄ« ierobežo izmaiņu iesÅ«tÄ«Å¡anu un sapludinÄÅ¡anu Å¡ajÄ atzarÄ.
settings.protect_disable_push=Neļaut iesūtīt izmaiņas
@@ -2258,30 +2231,22 @@ settings.protect_enable_merge_desc=Ikviens ar rakstÄ«Å¡anas tiesÄ«bÄm varÄ“st s
settings.protect_check_status_contexts=IespÄ“jot statusu pÄrbaudi
settings.protect_status_check_patterns=Statusa pÄrbaudes Å¡abloni:
settings.protect_status_check_patterns_desc=NorÄdiet Å¡ablonus, kurÄm statusa pÄrbaudÄ“m ir jÄatbilst pirms atzaru iespÄ“jams sapludinÄt Å¡ajÄ atzarÄ, kas atbilst Å¡im nosacÄ«jumam. Katru Å¡ablonu norÄdÄ«t savÄ rindÄ, tie nevar bÅ«t tukÅ¡i.
-settings.protect_check_status_contexts_desc=NepiecieÅ¡amas veiksmÄ«gas statusa pÄrbaudes pirms sapludinÄÅ¡anas. IzvÄ“lieties, kurÄm statusa pÄrbaudÄ“m ir jÄizpildÄs pirms ir iespejams tÄs sapludinÄt. Ja iespÄ“jots, tad revÄ«zijas sÄkotnÄ“ji jÄnosÅ«ta uz atseviÅ¡Ä·u atzaru, pÄ“c kÄ var tikt saplusinÄtas vai tieÅ¡i nosÅ«tÄ«tas uz atzariem, kas atbildst veiksmÄ«gÄm norÄdÄ«tajÄm stautsa pÄrbaudÄ“m. Ja konteksts nav norÄdÄ«ts, pÄ“dÄ“jai revÄ«zijai ir jÄbÅ«t veiksmÄ«ga neatkarÄ«gi no konteksta.
settings.protect_check_status_contexts_list=Statusu pÄrbaudes, kas Å¡im repozitorijam bijuÅ¡as pÄ“dÄ“jÄs nedēļas laikÄ
settings.protect_status_check_matched=Atbilst
settings.protect_invalid_status_check_pattern=Kļūdains statusa pÄrbaudes Å¡ablons: "%s".
settings.protect_no_valid_status_check_patterns=Nav korekta statusa pÄrbaudes Å¡ablona.
settings.protect_required_approvals=VajadzÄ«gi apstiprinÄjumi:
-settings.protect_required_approvals_desc=Atļaut sapludinÄt izmaiņu pieprasÄ«jumu tikai ar pietiekamu skaitu pozitÄ«vu recenziju.
settings.dismiss_stale_approvals=PieprasÄ«t apstiprinÄjumus jaunÄkajÄm izmaiņÄm
settings.dismiss_stale_approvals_desc=Kad tiek iesÅ«tÄ«tas jaunas revÄ«zijas, kas izmaina izmaiņu pieprasÄ«juma saturu, iepriekÅ¡Ä“jie apstiprinÄjumi tiks atzÄ«mÄ“ti kÄ novecojuÅ¡i un bÅ«s nepiecieÅ¡ams apstiprinÄt tos atkÄroti.
settings.require_signed_commits=Pieprasīt parakstītas revīzijas
settings.require_signed_commits_desc=NoraidÄ«t iesÅ«tÄ«tÄs izmaiņas Å¡im atzaram, ja tÄs nav parakstÄ«tas vai nav iespÄ“jams pÄrbaudÄ«t.
settings.protect_branch_name_pattern=AizsargÄtÄ zara Å¡ablons
-settings.protect_branch_name_pattern_desc=AizsargÄto atzaru nosaukumu Å¡abloni. Å ablonu pierakstu skatÄ«t dokumentÄcijÄ. PiemÄ“ri: main, release/**
settings.protect_patterns=Å abloni
settings.protect_protected_file_patterns=AizsargÄto failu Å¡ablons (vairÄkus var norÄdÄ«t atdalot ar semikolu ';'):
-settings.protect_protected_file_patterns_desc=AizsargÄtie faili, ko nevar mainÄ«t, pat ja lietotÄjam ir tiesÄ«bas veidot jaunus, labot vai dzÄ“st failus Å¡ajÄ atzarÄ. VairÄkus Å¡ablons ir iespÄ“jams norÄdÄ«t atdalot tos ar semikolu (';'). SÄ«kÄka informÄcija par Å¡abloniem pieejama github.com/gobwas/glob dokumentÄcijÄ. PiemÄ“ram, .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=NeaizsargÄto failu Å¡ablons (vairÄkus var norÄdÄ«t atdalot ar semikolu ';'):
-settings.protect_unprotected_file_patterns_desc=NeaizsargÄtie faili, ko iespÄ“jams mainÄ«t apejot iesÅ«tÄ«Å¡anas ierobežojumus, ja lietotÄjam ir tiesÄ«bas iesÅ«tÄ«t izmaiņas Å¡ajÄ atzarÄ. VairÄkus Å¡ablons ir iespÄ“jams norÄdÄ«t atdalot tos ar semikolu (';'). SÄ«kÄka informÄcija par Å¡abloniem pieejama github.com/gobwas/glob dokumentÄcijÄ. PiemÄ“ram, .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=IespÄ“jot aizsargÄÅ¡anu
-settings.delete_protected_branch=AtspÄ“jot aizsargÄÅ¡anu
settings.update_protect_branch_success=Atzara aizsardzÄ«bas nosacÄ«jums "%s" tika saglabÄta.
settings.remove_protected_branch_success=Atzara aizsardzības nosacījums "%s" tika noņemts.
settings.remove_protected_branch_failed=NeizdevÄs izdzÄ“st atzara aizsardzÄ«bas nosacÄ«jumu "%s".
-settings.protected_branch_deletion=Atspējot atzara aizsardzību
settings.protected_branch_deletion_desc=AtspÄ“jojot atzara aizsardzÄ«bu, ļaus lietotÄjiem ar rakstÄ«Å¡anas tiesÄ«bÄm nosÅ«tÄ«t izmaiņas uz atzaru. Vai turpinÄt?
settings.block_rejected_reviews=Neļaut sapludinÄt izmaiņu pieprasÄ«jumus, kam ir pieprasÄ«tas izmaiņas
settings.block_rejected_reviews_desc=SapludinÄÅ¡ana nebÅ«s iespÄ“jama, kad ir pieprasÄ«tas izmaiņas, pat ja ir nepiecieÅ¡amais apstiprinÄjumu skaits.
@@ -2291,7 +2256,6 @@ settings.block_outdated_branch=BloÄ·Ä“t sapludinÄÅ¡anau, ja izmaiņu pieprasÄ«j
settings.block_outdated_branch_desc=SapludinÄÅ¡ana nebÅ«s pieejama, ja atzars bÅ«s atpalicis no bÄzes atzara.
settings.default_branch_desc=NorÄdiet noklusÄ“to repozitorija atzaru izmaiņu pieprasÄ«jumiem un koda revÄ«zijÄm:
settings.merge_style_desc=SapludinÄÅ¡anas veidi
-settings.default_merge_style_desc=NoklusÄ“tais sapludinÄÅ¡anas veids izmaiņu pieprasÄ«jumiem:
settings.choose_branch=Izvēlieties atzaru…
settings.no_protected_branch=Nav neviena aizsargÄtÄ atzara.
settings.edit_protected_branch=Labot
@@ -2307,7 +2271,6 @@ settings.tags.protection.allowed.teams=Atļauts komandÄm
settings.tags.protection.allowed.noone=Nevienam
settings.tags.protection.create=AizsargÄt tagus
settings.tags.protection.none=Nav uzstÄdÄ«ta tagu aizsargÄÅ¡ana.
-settings.tags.protection.pattern.description=Var izmantot vienkÄrÅ¡u nosaukumu vai glob Å¡ablonu, vai regulÄro izteiksmi, lai atbilstu vairÄkiem tagiem. VairÄk ir lasÄms aizsargÄto tagu Å¡ablonu dokumentÄcijÄ.
settings.bot_token=Bota pilnvara
settings.chat_id=Tērzēšanas ID
settings.thread_id=Pavediena ID
@@ -2474,7 +2437,7 @@ branch.delete_desc=Atzara dzēšana ir neatgriezeniska. Kaut arī izdzēstais za
branch.deletion_success=Atzars "%s" tika izdzēsts.
branch.deletion_failed=NeizdevÄs izdzÄ“st atzaru "%s".
branch.delete_branch_has_new_commits=Atzars "%s" nevar tik dzÄ“sts, jo pÄ“c sapludinÄÅ¡anas, tam ir pievienotas jaunas revÄ«zijas.
-branch.create_branch=Izveidot atzaru %s
+branch.create_branch=Izveidot atzaru %s
branch.create_from=`no "%s"`
branch.create_success=Tika izveidots atzars "%s".
branch.branch_already_exists=Atzars "%s" Å¡ajÄ repozitorijÄ jau eksistÄ“.
@@ -2500,7 +2463,7 @@ branch.new_branch=Izveidot jaunu atzaru
branch.new_branch_from=`Izveidot jaunu atzaru no "%s"`
branch.renamed=Atzars %s tika pÄrsaukts par %s.
-tag.create_tag=Izveidot tagu %s
+tag.create_tag=Izveidot tagu %s
tag.create_tag_operation=Izveidot tagu
tag.confirm_create_tag=Izveidot tagu
tag.create_tag_from=`Izveidot tagu no "%s"`
@@ -2509,7 +2472,6 @@ tag.create_success=Tags "%s" tika izveidots.
topic.manage_topics=PÄrvaldÄ«t tÄ“mas
topic.done=Gatavs
-topic.count_prompt=Nevar pievienot vairÄk kÄ 25 tÄ“mas
topic.format_prompt=TÄ“mai jÄsÄkas ar burtu vai ciparu, tÄ var saturÄ“t domu zÄ«mes ('-') un punktus ('.') un var bÅ«t lÄ«dz 35 rakstzÄ«mÄ“m gara. Burtiem jÄbÅ«t mazajiem.
find_file.go_to_file=Iet uz failu
@@ -2578,7 +2540,6 @@ settings.delete_prompt=Å Ä« darbÄ«ba pilnÄ«bÄ dzÄ“sÄ«s Å¡o organizÄciju, kÄ a
settings.confirm_delete_account=ApstiprinÄt dzÄ“Å¡anu
settings.delete_org_title=DzÄ“st organizÄciju
settings.delete_org_desc=OrganizÄcija tiks dzÄ“sta neatgriezeniski. Vai turpinÄt?
-settings.hooks_desc=Pievienot tÄ«mekļa ÄÄ·us, kas nostrÄdÄs visiem repozitorijiem Å¡ajÄ organizÄcijÄ.
settings.labels_desc=Pievienojiet iezÄ«mes, kas var tikt izmantotas visos Å¡Ä«s organizÄcijas repozitorijos.
@@ -2603,7 +2564,6 @@ teams.leave.detail=Pamest organizÄciju %s?
teams.can_create_org_repo=Veidot jaunus repozitorijus
teams.can_create_org_repo_helper=Komandas biedri varÄ“s veidot jaunus repozitorijus Å¡ajÄ organizÄcijÄ. IzveidotÄjam tiks pieÅ¡Ä·irtas administratora tiesÄ«bas uz jauno repozitoriju.
teams.none_access=Nav piekļuves
-teams.none_access_helper=Komandai nebūs tiesību skatīties vai veikt citas darbības ar šo vienumu.
teams.general_access=VispÄrÄ“ja piekļuve
teams.general_access_helper=Komandas tiesÄ«bas tiks noteiktas pÄ“c tabulas zemÄk.
teams.read_access=SkatÄ«Å¡anÄs
@@ -2670,7 +2630,6 @@ last_page=PÄ“dÄ“jÄ
total=KopÄ: %d
settings=Administratora iestatījumi
-dashboard.new_version_hint=Ir pieejama Gitea versija %s, paÅ¡reizÄ“jÄ versija %s. Papildus informÄcija par jauno versiju ir pieejama mÄjas lapÄ.
dashboard.statistic=Kopsavilkums
dashboard.system_status=Sistēmas statuss
dashboard.operation_name=Darbības nosaukums
@@ -2848,12 +2807,10 @@ packages.size=Izmērs
packages.published=Publicēts
defaulthooks=NoklusÄ“tie tÄ«mekļa ÄÄ·i
-defaulthooks.desc=TÄ«mekļa ÄÄ·i automÄtiski nosÅ«ta HTTP POST pieprasÄ«jumus serverim, kad iestÄjas noteikti Gitea notikumi. Å eit pievienotie tÄ«mekļa ÄÄ·i ir noklusÄ“juma, un tie tiks pievienoti visiem jaunajiem repozitorijiem. VairÄk ir lasÄms tÄ«mekļa ÄÄ·u dokumentÄcijÄ.
defaulthooks.add_webhook=Pievienot noklusÄ“to tÄ«mekļa ÄÄ·i
defaulthooks.update_webhook=MainÄ«t noklusÄ“to tÄ«mekļa ÄÄ·i
systemhooks=SistÄ“mas tÄ«mekļa ÄÄ·i
-systemhooks.desc=TÄ«mekļa ÄÄ·i automÄtiski nosÅ«ta HTTP POST pieprasÄ«jumus serverim, kad iestÄjas noteikti Gitea notikumi. Å eit pievienotie tÄ«mekļa ÄÄ·i tiks izsaukti visiem sistÄ“mas repozitorijiem, tÄdēļ lÅ«gums apsvÄ“rt to iespÄ“jamo ietekmi uz veiktspÄ“ju. VairÄk ir lasÄms tÄ«mekļa ÄÄ·u dokumentÄcijÄ.
systemhooks.add_webhook=Pievienot sistÄ“mas tÄ«mekļa ÄÄ·i
systemhooks.update_webhook=MainÄ«t sistÄ“mas tÄ«mekļa ÄÄ·i
@@ -2949,14 +2906,6 @@ auths.tips.oauth2.general=OAuth2 autentifikÄcija
auths.tips.oauth2.general.tip=Kad tiek reÄ£istrÄ“ta jauna OAuth2 autentifikÄcija, atzvanÄ«Å¡anas/pÄrvirzÄ«Å¡anas URL vajadzÄ“tu bÅ«t:
auths.tip.oauth2_provider=OAuth2 pakalpojuma sniedzējs
auths.tip.nextcloud=`ReÄ£istrÄ“jiet jaunu OAuth klientu jÅ«su instances sadÄÄ¼Ä "Settings -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=Izveidojiet jaunu aplikÄciju adresÄ“ https://www.dropbox.com/developers/apps
-auths.tip.facebook=`ReÄ£istrÄ“jiet jaunu aplikÄciju adresÄ“ https://developers.facebook.com/apps un pievienojiet produktu "Facebook Login"`
-auths.tip.github=ReÄ£istrÄ“jiet jaunu aplikÄciju adresÄ“ https://github.com/settings/applications/new
-auths.tip.google_plus=Iegūstiet OAuth2 klienta pilnvaru no Google API konsoles adresē https://console.developers.google.com/
-auths.tip.twitter=Dodieties uz adresi https://dev.twitter.com/apps, izveidojiet lietotni un pÄrliecinieties, ka ir atzÄ«mÄ“ts “Allow this application to be used to Sign in with Twitterâ€
-auths.tip.discord=ReÄ£istrÄ“jiet jaunu aplikÄciju adresÄ“ https://discordapp.com/developers/applications/me
-auths.tip.gitea=Pievienot jaunu OAuth2 lietojumprogrammu. DokumentÄcija ir pieejama https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Izveidojiet jaunu lietotni adresÄ“ https://oauth.yandex.com/client/new. IzvÄ“lieties sekojoÅ¡as tiesÄ«bas "Yandex.Passport API" sadaļÄ: "Access to email address", "Access to user avatar" un "Access to username, first name and surname, gender"`
auths.tip.mastodon=NorÄdiet pielÄgotu mastodon instances URL, ar kuru vÄ“laties autorizÄ“ties (vai izmantojiet noklusÄ“to)
auths.edit=Labot autentifikÄcijas avotu
auths.activated=AutentifikÄcijas avots ir atkivizÄ“ts
@@ -3117,7 +3066,6 @@ monitor.next=NÄkoÅ¡Äs izpildes laiks
monitor.previous=PÄ“dÄ“jÄs izpildes laiks
monitor.execute_times=Izpildes
monitor.process=Darbojošies procesi
-monitor.stacktrace=Steka izsekojamība
monitor.processes_count=%d procesi
monitor.download_diagnosis_report=LejupielÄdÄ“t diagnostikas atskaiti
monitor.desc=Apraksts
@@ -3125,8 +3073,6 @@ monitor.start=SÄkuma laiks
monitor.execute_time=Izpildes laiks
monitor.last_execution_result=RezultÄts
monitor.process.cancel=Atcelt procesu
-monitor.process.cancel_desc=Procesa atcelšana var radīt datu zaudējumus
-monitor.process.cancel_notices=Atcelt: %s?
monitor.process.children=Apakšprocesi
monitor.queues=Rindas
@@ -3220,7 +3166,6 @@ raw_minutes=minūtes
[dropzone]
default_message=Ievelciet failus vai nospiediet Å¡eit, lai augÅ¡upielÄdÄ“tu.
-invalid_input_type=Å Ädus failus nav iespÄ“jams augÅ¡upielÄdÄ“t.
file_too_big=Faila izmÄ“rs ({{filesize}} MB) pÄrsniedz maksimÄli atļauto izmÄ“ru ({{maxFilesize}} MB).
remove_file=Noņemt failu
@@ -3289,7 +3234,6 @@ alpine.registry.key=LejupielÄdÄ“jiet reÄ£istra publisko RSA atslÄ“gu direktorij
alpine.registry.info=IzvÄ“lieties $branch un $repository no saraksta zemÄk.
alpine.install=Lai uzstÄdÄ«tu pakotni, ir jÄizpilda Å¡Ä« komanda:
alpine.repository=Repozitorija informÄcija
-alpine.repository.branches=Atzari
alpine.repository.repositories=Repozitoriji
alpine.repository.architectures=Arhitektūras
cargo.registry=UzstÄdiet Å¡o reÄ£istru Cargo konfigurÄcijas failÄ, piemÄ“ram, ~/.cargo/config.toml
:
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index 6acb3140181a3..1540cf095b07c 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -134,8 +134,6 @@ filter.private=Prive
[error]
occurred=Er is een fout opgetreden
-missing_csrf=Foutief verzoek: geen CSRF-token aanwezig
-invalid_csrf=Verkeerd verzoek: ongeldig CSRF-token
not_found=Het doel kon niet worden gevonden.
network_error=Netwerk fout
@@ -143,11 +141,9 @@ network_error=Netwerk fout
app_desc=Een eenvoudige, self-hosted Git service
install=Makkelijk te installeren
platform=Cross-platform
-platform_desc=Gitea werkt op alles waar Go op kan compileren: Windows, macOS, Linux, ARM, etc. Kies het platform dat bij je past!
lightweight=Lichtgewicht
lightweight_desc=Gitea heeft hele lage systeemeisen, je kunt Gitea al draaien op een goedkope Raspberry Pi.
license=Open Source
-license_desc=Alles staat op code.gitea.io/gitea! Help ons door mee te bouwen aan Gitea, samen maken we dit project nog beter. Aarzel dus niet om een bijdrage te leveren!
[install]
install=Installatie
@@ -515,13 +511,10 @@ applications=Applicaties
orgs=Beheer organisaties
repos=Repositories
delete=Verwijder account
-twofa=Twee factor authenticatie
account_link=Gekoppelde Accounts
organization=Organisaties
-webauthn=Beveiligingssleutels
public_profile=Openbaar profiel
-password_username_disabled=Niet-lokale gebruikers kunnen hun gebruikersnaam niet veranderen. Neem contact op met de sitebeheerder voor meer details.
full_name=Volledige naam
website=Website
location=Locatie
@@ -707,24 +700,19 @@ revoke_key=Intrekken
revoke_oauth2_grant=Toegang intrekken
revoke_oauth2_grant_description=Het intrekken van toegang voor deze derde partij applicatie zal deze applicatie geen toegang tot uw gegevens geven. Weet u het zeker?
-twofa_desc=Tweefactorauthenticatie verbetert de beveiliging van je account.
twofa_is_enrolled=Je account is momenteel ingeschreven voor two-factor authenticatie.
twofa_not_enrolled=Je account is momenteel niet ingeschreven voor two-factor authenticatie.
twofa_disable=Schakel tweetrapsauthenticatie uit
-twofa_scratch_token_regenerate=Genereer een nieuwe herstelcode
twofa_enroll=Two-factor authenticatie inschakelen
twofa_disable_note=Je kan tweefactorauthenticatie indien nodig uitschakelen.
twofa_disable_desc=Het uitschakelen van tweefactorauthenticatie maakt je account minder veilig. Doorgaan?
-regenerate_scratch_token_desc=Als je je herstelcode bent verloren, of als je deze al hebt gebruikt om in te loggen, kun je deze hier opnieuw instellen.
twofa_disabled=Two-factor authenticatie is uitgeschakeld.
scan_this_image=Scan deze afbeelding met je authenticatie applicatie:
or_enter_secret=Of voer deze geheime code in: %s
then_enter_passcode=En vul de toegangscode, die in de applicatie weergegeven wordt, in:
passcode_invalid=De code is niet correct. Probeer het nogmaals.
-twofa_enrolled=Tweefactorsauthenticatie is geactiveerd voor dit account. Bewaar je token (%s) op een veilige plek, omdat hij maar één keer wordt weergegeven!
twofa_failed_get_secret=Kon geheim niet ophalen.
-webauthn_desc=Beveiligingssleutels zijn hardware apparaten die cryptografische sleutels bevatten. Ze kunnen worden gebruikt voor tweestapsverificatie. Beveiligingssleutels moeten de WebAuthn Authenticator standaard ondersteunen.
webauthn_register_key=Voeg beveiligingssleutel toe
webauthn_nickname=Bijnaam
webauthn_delete_key=Verwijder beveiligingssleutel
@@ -841,9 +829,7 @@ blame_prior=Bekijk de schuld voorafgaand aan deze verandering
transfer.accept=Accepteer overdracht
-transfer.accept_desc=`Overmaken naar "%s"`
transfer.reject=Overdracht afwijzen
-transfer.reject_desc=`Annuleer overdracht naar "%s"`
desc.private=Privé
desc.public=Openbaar
@@ -961,7 +947,6 @@ release=Release
releases=Publicaties
tag=Label
released_this=heeft dit gepubliceerd
-file.title=%s op %s
file_raw=Ruw
file_history=Geschiedenis
file_view_source=Bron weergeven
@@ -971,7 +956,6 @@ file_permalink=Permalink
file_too_large=Dit bestand is te groot om te tonen.
invisible_runes_line=`Deze lijn heeft onzichtbare unicode karakters`
ambiguous_runes_line=`Deze lijn heeft dubbelzinnige unicode karakters`
-ambiguous_character=`%[1]c [U+%04[1]X] is verwarrend met %[2]c [U+%04[2]X]`
escape_control_characters=Escape
unescape_control_characters=Onescape
@@ -1341,7 +1325,6 @@ issues.dependency.add_error_dep_not_same_repo=Beide kwesties moeten in dezelfde
issues.review.self.approval=Je kan je eigen pull-aanvraag niet goedkeuren.
issues.review.self.rejection=Je kan geen wijzigingen aanvragen op je eigen pull-aanvraag.
issues.review.approve=heeft deze veranderingen %s goedgekeurd
-issues.review.comment=beoordeeld %s
issues.review.dismissed=%s's beoordeling afgewezen %s
issues.review.dismissed_label=Afgewezen
issues.review.left_comment=heeft een reactie achtergelaten
@@ -1362,6 +1345,7 @@ issues.review.hide_resolved=Verbergen afgehandeld
issues.review.resolve_conversation=Gesprek oplossen
issues.review.un_resolve_conversation=Gesprek niet oplossen
issues.review.resolved_by=markeerde dit gesprek als opgelost
+issues.review.commented=Opmerking
issues.assignee.error=Niet alle aangewezen personen zijn toegevoegd vanwege een onverwachte fout.
issues.reference_issue.body=Inhoud
issues.content_history.deleted=verwijderd
@@ -1453,9 +1437,7 @@ pulls.rebase_conflict_summary=Foutmelding
pulls.unrelated_histories=Samenvoegen mislukt: de HEAD en base delen geen gemeenschappelijke geschiedenis. Tip: Probeer een andere strategie
pulls.merge_out_of_date=Samenvoegen mislukt: Tijdens het samenvoegen is de basis bijgewerkt. Tip: Probeer het opnieuw.
pulls.head_out_of_date=Samenvoegen mislukt: tijdens het genereren van de samenvoeging is de kop bijgewerkt. Tip: Probeer het opnieuw.
-pulls.push_rejected=Samenvoegen mislukt: De push is geweigerd. Controleer de Git Hooks voor deze repository.
pulls.push_rejected_summary=Volledig afwijzingsbericht
-pulls.push_rejected_no_message=Samenvoegen mislukt: De push is afgewezen, maar er was geen extern bericht.*
, eventos para todos os branches serão relatados. Veja github.com/gobwas/glob documentação da sintaxe. Exemplos: master
, {master,release*}
.
settings.authorization_header=Header de Autorização
settings.authorization_header_desc=Será incluÃdo como header de autorização para solicitações quando estiver presente. Exemplos: %s.
settings.active=Ativo
@@ -2215,14 +2190,8 @@ settings.key_name_used=Uma chave de deploy já existe com esse mesmo nome.
settings.deploy_key_deletion=Remover chave de deploy
settings.deploy_key_deletion_desc=A exclusão de uma chave de deploy irá revogar o seu acesso a este repositório. Continuar?
settings.deploy_key_deletion_success=A chave de deploy foi removida.
-settings.branches=Branches
-settings.protected_branch=Proteção de Branch
settings.protected_branch.save_rule=Salvar Regra
settings.protected_branch.delete_rule=Excluir Regra
-settings.protected_branch_can_push=Permitir push?
-settings.protected_branch_can_push_yes=Você pode fazer push
-settings.protected_branch_can_push_no=Você não pode fazer push
-settings.branch_protection=Proteção de Branch para '%s'
settings.protect_this_branch=Habilitar Proteção de Branch
settings.protect_this_branch_desc=Previne a exclusão e restringe o merge e push para o branch.
settings.protect_disable_push=Desabilitar push
@@ -2231,10 +2200,8 @@ settings.protect_enable_push=Habilitar push
settings.protect_enable_push_desc=Qualquer pessoa com acesso de escrita terá permissão para realizar push neste branch (mas não forçar o push).
settings.protect_enable_merge=Permitir merge
settings.protect_check_status_contexts=Habilitar verificação de status
-settings.protect_check_status_contexts_desc=Exigir que as verificações de status passem antes de fazer merge. Escolha quais verificações de status devem passar antes que os branches possam ter o merge aplicado em um branch que corresponda a esta regra. Quando habilitado, os commits devem primeiro ser enviados para outro branch, então faça merge ou push diretamente para um branch que corresponde a esta regra após a verificação de status ter passado. Se nenhum contexto for selecionado, o último commit deve ser bem sucedido, independentemente do contexto.
settings.protect_check_status_contexts_list=Verificações de status encontradas na última semana para este repositório
settings.protect_required_approvals=Aprovações necessárias:
-settings.protect_required_approvals_desc=Permite apenas realizar merge do pull request com avaliações positivas suficientes.
settings.dismiss_stale_approvals=Descartar aprovações obsoletas
settings.dismiss_stale_approvals_desc=Quando novos commits que mudam o conteúdo do pull request são enviados para o branch, as antigas aprovações serão descartadas.
settings.require_signed_commits=Exibir commits assinados
@@ -2242,15 +2209,10 @@ settings.require_signed_commits_desc=Rejeitar pushes para este branch se não es
settings.protect_branch_name_pattern=Padrão de Nome de Branch Protegida
settings.protect_patterns=Padrões
settings.protect_protected_file_patterns=Padrões de arquivos protegidos (separados usando ponto e vÃrgula ';'):
-settings.protect_protected_file_patterns_desc=Arquivos protegidos não podem ser alterados diretamente, mesmo que o usuário tenha direitos para adicionar, editar ou excluir arquivos neste branch. Vários padrões podem ser separados usando ponto e vÃrgula (';'). Consulte a documentação github.com/gobwas/glob para a sintaxe padrão. Exemplos: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Padrões de arquivos desprotegidos (separados usando ponto e vÃrgula ';'):
-settings.protect_unprotected_file_patterns_desc=Arquivos não protegidos que podem ser alterados diretamente se o usuário tiver acesso de gravação, ignorando as restrições de push. Vários padrões podem ser separados usando ponto e vÃrgula (\;'). Veja github.com/gobwas/glob documentação para sintaxe de padrões. Exemplos: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Habilitar proteção
-settings.delete_protected_branch=Desabilitar proteção
settings.update_protect_branch_success=Proteção do branch "%s" foi atualizada.
settings.remove_protected_branch_success=Proteção do branch "%s" foi desabilitada.
settings.remove_protected_branch_failed=Removendo regra de proteção de branch "%s" falhou.
-settings.protected_branch_deletion=Desabilitar proteção de branch
settings.protected_branch_deletion_desc=Desabilitar a proteção de branch permite que os usuários com permissão de escrita realizem push. Continuar?
settings.block_rejected_reviews=Bloquear merge em revisões rejeitadas
settings.block_rejected_reviews_desc=O merge não será possÃvel quando são solicitadas alterações pelos revisores oficiais, mesmo que haja aprovação suficiente.
@@ -2260,7 +2222,6 @@ settings.block_outdated_branch=Bloquear o merge se o pull request estiver desatu
settings.block_outdated_branch_desc=O merge não será possÃvel quando o branch de topo estiver atrás do branch base.
settings.default_branch_desc=Selecione um branch padrão para pull requests e commits de código:
settings.merge_style_desc=Estilos de Merge
-settings.default_merge_style_desc=Estilo de merge padrão para pull requests:
settings.choose_branch=Escolha um branch...
settings.no_protected_branch=Não há branches protegidos.
settings.edit_protected_branch=Editar
@@ -2436,7 +2397,7 @@ branch.delete_html=Excluir Branch
branch.deletion_success=Branch "%s" excluÃdo.
branch.deletion_failed=Falha ao excluir o branch "%s".
branch.delete_branch_has_new_commits=O branch "%s" não pode ser excluÃdo porque novos commits foram feitos após o merge.
-branch.create_branch=Criar branch %s
+branch.create_branch=Criar branch %s
branch.create_from=`a partir de "%s"`
branch.create_success=Branch "%s" criado.
branch.branch_already_exists=Branch "%s" já existe neste repositório.
@@ -2460,7 +2421,7 @@ branch.new_branch=Criar novo branch
branch.new_branch_from=`Criar novo branch a partir de "%s"`
branch.renamed=Branch %s foi renomeado para %s.
-tag.create_tag=Criar tag %s
+tag.create_tag=Criar tag %s
tag.create_tag_operation=Criar tag
tag.confirm_create_tag=Criar tag
tag.create_tag_from=`Criar nova tag a partir de "%s"`
@@ -2469,7 +2430,6 @@ tag.create_success=Tag "%s" criada.
topic.manage_topics=Gerenciar Tópicos
topic.done=Feito
-topic.count_prompt=Você não pode selecionar mais de 25 tópicos
find_file.go_to_file=Ir para arquivo
find_file.no_matching=Nenhum arquivo correspondente encontrado
@@ -2559,7 +2519,6 @@ teams.leave.detail=Sair de %s?
teams.can_create_org_repo=Criar repositórios
teams.can_create_org_repo_helper=Membros podem criar novos repositórios na organização. O criador terá acesso administrativo ao novo repositório.
teams.none_access=Sem Acesso
-teams.none_access_helper=Os membros não podem ver ou fazer qualquer outra ação nesta unidade.
teams.general_access=Acesso Geral
teams.general_access_helper=As permissões dos membros serão decididas pela tabela de permissões abaixo.
teams.read_access=Leitura
@@ -2624,7 +2583,6 @@ last_page=Última
total=Total: %d
settings=Configurações de Administrador
-dashboard.new_version_hint=Uma nova versão está disponÃvel: %s. Versão atual: %s. Visite o blog para mais informações.
dashboard.statistic=Resumo
dashboard.system_status=Status do sistema
dashboard.operation_name=Nome da operação
@@ -2892,13 +2850,6 @@ auths.tips.oauth2.general=Autenticação OAuth2
auths.tips.oauth2.general.tip=Ao registrar uma nova autenticação OAuth2, o URL de retorno de chamada/redirecionamento deve ser:
auths.tip.oauth2_provider=Provedor OAuth2
auths.tip.nextcloud=`Registre um novo consumidor OAuth em sua instância usando o seguinte menu "Configurações -> Segurança -> Cliente OAuth 2.0"`
-auths.tip.dropbox=Criar um novo aplicativo em https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Cadastrar um novo aplicativo em https://developers.facebook.com/apps e adicionar o produto "Facebook Login"`
-auths.tip.github=Cadastrar um novo aplicativo de OAuth na https://github.com/settings/applications/new
-auths.tip.google_plus=Obter credenciais de cliente OAuth2 do console de API do Google em https://console.developers.google.com/
-auths.tip.twitter=Vá em https://dev.twitter.com/apps, crie um aplicativo e certifique-se de que está habilitada a opção “Allow this application to be used to Sign in with Twitter“
-auths.tip.discord=Cadastrar um novo aplicativo em https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Crie um novo aplicativo em https://oauth.yandex.com/client/new. Selecione as seguintes permissões da seção "Yandex.Passport API": "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"`
auths.tip.mastodon=Insira a URL da instância personalizada do mastodon que você deseja usar para autenticar (ou use o padrão)
auths.edit=Editar fonte de autenticação
auths.activated=Esta fonte de autenticação está ativada
@@ -2979,7 +2930,6 @@ config.default_enable_timetracking=Habilitar o Cronômetro por Padrão
config.default_allow_only_contributors_to_track_time=Permitir que apenas os colaboradores acompanhem o contador de tempo
config.no_reply_address=Ocultar domÃnio de e-mail
config.default_visibility_organization=Visibilidade padrão para novas organizações
-config.default_enable_dependencies=Habilitar dependências de issue por padrão
config.webhook_config=Configuração de Hook da Web
config.queue_length=Tamanho da fila
@@ -3058,7 +3008,6 @@ monitor.next=Próxima vez
monitor.previous=Vez anterior
monitor.execute_times=Execuções
monitor.process=Processos em execução
-monitor.stacktrace=Stacktraces
monitor.processes_count=%d processos
monitor.download_diagnosis_report=Baixar relatório de diagnóstico
monitor.desc=Descrição
@@ -3066,8 +3015,6 @@ monitor.start=Hora de inÃcio
monitor.execute_time=Tempo de execução
monitor.last_execution_result=Resultado
monitor.process.cancel=Cancelar processo
-monitor.process.cancel_desc=Cancelar um processo pode causar perda de dados
-monitor.process.cancel_notices=Cancelar: %s?
monitor.process.children=Descendentes
monitor.queues=Filas
@@ -3157,7 +3104,6 @@ raw_minutes=minutos
[dropzone]
default_message=Arraste e solte arquivos aqui, ou clique para selecioná-los.
-invalid_input_type=Você não pode enviar arquivos deste tipo.
file_too_big=Tamanho de arquivo ({{filesize}} MB) excede o máximo de ({{maxFilesize}} MB).
remove_file=Remover arquivo
@@ -3225,7 +3171,6 @@ alpine.registry.key=Baixe a chave RSA pública do registro para a pasta /e
alpine.registry.info=Escolha o $branch e $repository da lista abaixo.
alpine.install=Para instalar o pacote, execute o seguinte comando:
alpine.repository=Informações do repositório
-alpine.repository.branches=Branches
alpine.repository.repositories=Repositórios
alpine.repository.architectures=Arquiteturas
cargo.registry=Configurar este registro no arquivo de configuração de Cargo (por exemplo ~/.cargo/config.toml
):
@@ -3301,7 +3246,6 @@ settings.link=Vincular este pacote a um repositório
settings.link.description=Se você vincular um pacote a um repositório, o pacote será listado na lista de pacotes do repositório.
settings.link.select=Selecionar Repositório
settings.link.button=Atualizar Link do Repositório
-settings.link.success=Link do repositório foi atualizado com sucesso.
settings.link.error=Falha ao atualizar o link do repositório.
settings.delete=Excluir o pacote
settings.delete.description=A exclusão de um pacote é permanente e não pode ser desfeita.
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 33b87267f90b6..41531f7b3de71 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -159,6 +159,7 @@ filter.public=Público
filter.private=Privado
no_results_found=Não foram encontrados quaisquer resultados.
+internal_error_skipped=Ocorreu um erro interno mas foi ignorado: %s
[search]
search=Pesquisar...
@@ -177,6 +178,8 @@ code_search_by_git_grep=Os resultados da pesquisa no código-fonte neste momento
package_kind=Pesquisar pacotes...
project_kind=Pesquisar planeamentos...
branch_kind=Pesquisar ramos...
+tag_kind=Pesquisar etiquetas...
+tag_tooltip=Pesquisar etiquetas correspondentes. Use '%' para corresponder a qualquer sequência de números.
commit_kind=Pesquisar cometimentos...
runner_kind=Pesquisar executores...
no_results=Não foram encontrados resultados correspondentes.
@@ -218,22 +221,20 @@ string.desc=Z - A
[error]
occurred=Ocorreu um erro
-report_message=Se acredita de que se trata de um erro do Gitea, procure, por favor, questões relacionadas no GitHub ou abra uma nova questão, se necessário.
-missing_csrf=Pedido inválido: não há código CSRF
-invalid_csrf=Pedido inválido: código CSRF inválido
+report_message=Se acredita tratar-se de um erro do Gitea, procure questões relacionadas no GitHub ou abra uma nova questão, se necessário.
not_found=Não foi possÃvel encontrar o destino.
network_error=Erro de rede
[startpage]
app_desc=Um serviço Git auto-hospedado e fácil de usar
install=Fácil de instalar
-install_desc=Corra, simplesmente, o ficheiro binário executável para a sua plataforma, despache-o com o Docker, ou obtenha-o sob a forma de pacote.
+install_desc=Corra, simplesmente, o ficheiro binário executável para a sua plataforma, despache-o com o Docker, ou obtenha-o sob a forma de pacote.
platform=Multiplataforma
-platform_desc=Gitea corre em qualquer plataforma onde possa compilar em linguagem Go: Windows, macOS, Linux, ARM, etc. Escolha a sua preferida!
+platform_desc=Gitea corre em qualquer plataforma onde possa compilar em linguagem Go: Windows, macOS, Linux, ARM, etc. Escolha a sua preferida!
lightweight=Leve
lightweight_desc=Gitea requer poucos recursos e pode correr num simples Raspberry Pi. Economize a energia da sua máquina!
license=Código aberto
-license_desc=Vá buscá-lo em code.gitea.io/gitea! Junte-se a nós dando a sua contribuição para tornar este programa ainda melhor. Não se acanhe e contribua!
+license_desc=Vá buscar %[2]s! Junte-se a nós dando a sua contribuição para tornar este programa ainda melhor. Não se acanhe e contribua!
[install]
install=Instalação
@@ -456,7 +457,7 @@ authorize_title=Autorizar o acesso de "%s" Ã sua conta?
authorization_failed=A autorização falhou
authorization_failed_desc=A autorização falhou porque encontrámos um pedido inválido. Entre em contacto com o responsável pela aplicação que tentou autorizar.
sspi_auth_failed=Falhou a autenticação SSPI
-password_pwned=A senha utilizada está numa lista de senhas roubadas anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sÃtios.
+password_pwned=A senha que escolheu está numa lista de senhas roubadas anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sÃtios.
password_pwned_err=Não foi possÃvel completar o pedido ao HaveIBeenPwned
last_admin=Não pode remover o último administrador. Tem que existir pelo menos um administrador.
signin_passkey=Iniciar sessão com uma passkey
@@ -579,6 +580,8 @@ lang_select_error=Escolha um idioma da lista.
username_been_taken=O nome de utilizador já foi tomado.
username_change_not_local_user=Utilizadores que não são locais não têm permissão para mudar o nome de utilizador.
+change_username_disabled=Alterar o nome de utilizador está desabilitado.
+change_full_name_disabled=Alterar o nome completo está desabilitado.
username_has_not_been_changed=O nome de utilizador não foi modificado
repo_name_been_taken=O nome do repositório já foi usado.
repository_force_private=Forçar Privado está habilitado: repositórios privados não podem ser tornados públicos.
@@ -694,17 +697,18 @@ applications=Aplicações
orgs=Gerir organizações
repos=Repositórios
delete=Eliminar a conta
-twofa=Autenticação em dois passos
+twofa=Autenticação em dois passos (TOTP)
account_link=Contas vinculadas
organization=Organizações
uid=UID
-webauthn=Chaves de segurança
+webauthn=Autenticação em dois passos (Chaves de Segurança)
public_profile=Perfil público
biography_placeholder=Conte-nos um pouco sobre si! (Pode usar Markdown)
location_placeholder=Partilhe a sua localização aproximada com outros
profile_desc=Controle como o seu perfil é apresentado aos outros utilizadores. O seu endereço de email principal será usado para notificações, recuperação de senha e operações Git baseadas na web.
-password_username_disabled=Utilizadores não-locais não podem mudar os seus nomes de utilizador. Entre em contacto com o administrador do sÃtio saber para mais detalhes.
+password_username_disabled=Não tem permissão para alterar os nomes de utilizador deles/delas. Entre em contacto com o administrador para saber mais detalhes.
+password_full_name_disabled=Não tem permissão para alterar o nome completo deles/delas. Entre em contacto com o administrador para saber mais detalhes.
full_name=Nome completo
website=SÃtio web
location=Localização
@@ -716,7 +720,7 @@ update_language_success=O idioma foi modificado.
update_profile_success=O seu perfil foi modificado.
change_username=O seu nome de utilizador foi modificado.
change_username_prompt=Note: Mudar o seu nome de utilizador também muda o URL da sua conta.
-change_username_redirect_prompt=O antigo nome de utilizador, enquanto não for reivindicado, irá reencaminhar para o novo.
+change_username_redirect_prompt=O antigo nome de utilizador, enquanto ninguém o reivindicar, irá reencaminhar para o novo.
continue=Continuar
cancel=Cancelar
language=Idioma
@@ -796,7 +800,7 @@ add_email_success=O novo endereço de email foi adicionado.
email_preference_set_success=As preferências relativas ao email foram definidas com sucesso.
add_openid_success=O novo endereço OpenID foi adicionado.
keep_email_private=Ocultar endereço de email
-keep_email_private_popup=Isto irá ocultar o seu endereço de email no seu perfil, assim como quando fizer um pedido de integração ou editar um ficheiro usando a interface web. Cometimentos enviados não serão modificados.
+keep_email_private_popup=Isto irá ocultar o seu endereço de email no seu perfil, assim como quando fizer um pedido de integração ou editar um ficheiro usando a interface web. Cometimentos enviados não serão modificados. Utilize %s nos cometimentos para os associar à sua conta.
openid_desc=O OpenID permite delegar a autenticação num fornecedor externo.
manage_ssh_keys=Gerir chaves SSH
@@ -926,7 +930,7 @@ oauth2_client_secret_hint=O segredo não voltará a ser mostrado depois de sair
oauth2_application_edit=Editar
oauth2_application_create_description=As aplicações OAuth2 dão à sua aplicação de terceiros acesso a contas de utilizador nesta instância.
oauth2_application_remove_description=A remoção de uma aplicação OAuth2 impedi-la-á de aceder a contas de utilizador autorizadas nesta instância. Quer continuar?
-oauth2_application_locked=O Gitea pré-regista algumas aplicações OAuth2 no arranque, se for habilitado na configuração. Para evitar comportamentos inesperados, estas não podem ser editadas nem removidas. Consulte a documentação sobre o OAuth2, para obter mais informações.
+oauth2_application_locked=O Gitea pré-regista algumas aplicações OAuth2 no arranque, se forem habilitadas na configuração. Para evitar comportamentos inesperados, estas não podem ser editadas nem removidas. Consulte a documentação sobre o OAuth2 para obter mais informações.
authorized_oauth2_applications=Aplicações OAuth2 autorizadas
authorized_oauth2_applications_description=Concedeu acesso à sua conta pessoal do Gitea a estas aplicações de terceiros. Por favor, revogue o acesso às aplicações que já não precisa.
@@ -935,13 +939,13 @@ revoke_oauth2_grant=Revogar acesso
revoke_oauth2_grant_description=Revogar o acesso desta aplicação de terceiros impedi-la-á de aceder aos seus dados. Tem a certeza?
revoke_oauth2_grant_success=Acesso revogado com sucesso.
-twofa_desc=Autenticação em dois passos melhora a segurança da sua conta.
+twofa_desc=Para proteger a sua conta contra o roubo de senhas, pode usar um telemóvel ou outro dispositivo para recerber um código de utilização única baseado no tempo ("TOTP").
twofa_recovery_tip=Se perder o seu dispositivo, poderá usar uma chave de recuperação de utilização única para voltar a ter acesso à sua conta.
twofa_is_enrolled=A autenticação em dois passos está neste momento habilitada na sua conta.
twofa_not_enrolled=A autenticação em dois passos não está neste momento habilitada na sua conta.
twofa_disable=Desabilitar autenticação em dois passos
-twofa_scratch_token_regenerate=Voltar a gerar o código de recuperação
-twofa_scratch_token_regenerated=O seu código de recuperação agora é %s. Guarde-o num lugar seguro, não será mostrado novamente.
+twofa_scratch_token_regenerate=Voltar a gerar o código de recuperação de utilização única
+twofa_scratch_token_regenerated=O seu código de recuperação de utilização única agora é %s. Guarde-o num lugar seguro, uma vez que nunca mais vai ser mostrado.
twofa_enroll=Habilitar autenticação em dois passos
twofa_disable_note=Pode desabilitar a autenticação em dois passos, se for necessário.
twofa_disable_desc=Desabilitar a autenticação em dois passos tornará a sua conta menos segura. Quer continuar?
@@ -951,10 +955,10 @@ scan_this_image=Digitalize esta imagem com a sua aplicação de autenticação:
or_enter_secret=Ou insira o segredo: %s
then_enter_passcode=E insira o código apresentado na aplicação:
passcode_invalid=O código está errado. Tente de novo.
-twofa_enrolled=A sua conta usa autenticação em dois passos. Guarde o seu código de recuperação (%s) num lugar seguro porque é mostrado somente uma vez!
+twofa_enrolled=A sua conta foi registada com sucesso. Guarde o seu código de recuperação de utilização única (%s) num lugar seguro, uma vez que não vai ser mostrado novamente.
twofa_failed_get_secret=Falhou a obtenção do segredo.
-webauthn_desc=Chaves de segurança são dispositivos de hardware contendo chaves criptográficas. Podem ser usadas para autenticação em dois passos. As chaves de segurança têm de suportar o standard Autenticador WebAuthn.
+webauthn_desc=Chaves de segurança são dispositivos de hardware contendo chaves criptográficas. Podem ser usadas para autenticação em dois passos. As chaves de segurança têm de suportar o standard Autenticador WebAuthn.
webauthn_register_key=Adicionar chave de segurança
webauthn_nickname=Apelido
webauthn_delete_key=Remover chave de segurança
@@ -1039,6 +1043,7 @@ issue_labels_helper=Escolha um conjunto de rótulos para as questões.
license=Licença
license_helper=Escolha um ficheiro de licença.
license_helper_desc=Uma licença rege o que os outros podem, ou não, fazer com o seu código fonte. Não tem a certeza sobre qual a mais indicada para o seu trabalho? Veja: Escolher uma licença.
+multiple_licenses=Múltiplas licenças
object_format=Formato dos elementos
object_format_helper=Formato dos elementos do repositório. Não poderá ser alterado mais tarde. SHA1 é o mais compatÃvel.
readme=README
@@ -1124,7 +1129,7 @@ template.one_item=Tem que escolher pelo menos um item do modelo
template.invalid=Tem que escolher um repositório modelo
archive.title=Este repositório está arquivado. Pode ver os seus ficheiros e cloná-lo, mas não pode fazer envios para o repositório nem lançar questões ou fazer pedidos de integração.
-archive.title_date=Este repositório foi arquivado em %s. Pode ver os ficheiros e cloná-lo, mas não pode fazer envios ou abrir questões/pedidos de integração.
+archive.title_date=Este repositório foi arquivado em %s. Pode ver os ficheiros e cloná-lo, mas não pode fazer envios ou abrir questões ou pedidos de integração.
archive.issue.nocomment=Este repositório está arquivado. Não pode comentar nas questões.
archive.pull.nocomment=Este repositório está arquivado. Não pode comentar nos pedidos de integração.
@@ -1176,6 +1181,11 @@ migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
migrate.codebase.description=Migrar dados de codebasehq.com.
migrate.gitbucket.description=Migrar dados de instâncias do GitBucket.
+migrate.codecommit.description=Migrar dados de AWS CodeCommit.
+migrate.codecommit.aws_access_key_id=ID da chave de acesso AWS
+migrate.codecommit.aws_secret_access_key=Chave de acesso secreto AWS
+migrate.codecommit.https_git_credentials_username=Nome de utilizador das credenciais Git para HTTPS
+migrate.codecommit.https_git_credentials_password=Senha das credenciais Git para HTTPS
migrate.migrating_git=Migrando dados Git
migrate.migrating_topics=Migrando tópicos
migrate.migrating_milestones=Migrando etapas
@@ -1274,7 +1284,6 @@ commit_graph.color=Colorido
commit.contained_in=Este cometimento está contido em:
commit.contained_in_default_branch=Este cometimento é parte do ramo principal
commit.load_referencing_branches_and_tags=Carregar ramos e etiquetas que referenciem este cometimento
-commit.load_tags_failed=O carregamento das etiquetas falhou por causa de um erro interno
blame=Responsabilidade
download_file=Descarregar ficheiro
normal_view=Vista normal
@@ -1414,7 +1423,7 @@ projects.column.new=Nova coluna
projects.column.set_default=Tornar predefinida
projects.column.set_default_desc=Definir esta coluna como a predefinida para questões e pedidos de integração não categorizados
projects.column.delete=Eliminar coluna
-projects.column.deletion_desc=Eliminar uma coluna de um planeamento faz com que todas as questões que nela constam sejam movidas para a coluna 'Sem categoria'. Continuar?
+projects.column.deletion_desc=Eliminar uma coluna de um planeamento faz com que todas as questões que nela constam sejam movidas para a coluna predefinida. Continuar?
projects.column.color=Colorido
projects.open=Abrir
projects.close=Fechar
@@ -1751,6 +1760,12 @@ issues.review.hide_resolved=Ocultar os concluÃdos
issues.review.resolve_conversation=Passar diálogo ao estado de resolvido
issues.review.un_resolve_conversation=Passar diálogo ao estado de não resolvido
issues.review.resolved_by=marcou este diálogo como estando concluÃdo
+issues.review.commented=Comentar
+issues.review.official=Aprovada
+issues.review.requested=Revisão pendente
+issues.review.rejected=Modificações solicitadas
+issues.review.stale=Modificada depois da aprovação
+issues.review.unofficial=Aprovação não oficial
issues.assignee.error=Nem todos os encarregados foram adicionados devido a um erro inesperado.
issues.reference_issue.body=Conteúdo
issues.content_history.deleted=eliminado
@@ -1824,7 +1839,8 @@ pulls.is_empty=As modificações feitas neste ramo já existem no ramo de destin
pulls.required_status_check_failed=Algumas das verificações obrigatórias não foram bem sucedidas.
pulls.required_status_check_missing=Estão faltando algumas verificações necessárias.
pulls.required_status_check_administrator=Uma vez que é administrador, ainda pode realizar a integração deste pedido.
-pulls.blocked_by_approvals=Este pedido de integração ainda não tem aprovações suficientes. Já foram concedidas %d de um total de %d aprovações.
+pulls.blocked_by_approvals=Este pedido de integração ainda não tem aprovações necessárias suficientes. Já foram concedidas %d de um total de %d aprovações oficiais.
+pulls.blocked_by_approvals_whitelisted=Este pedido de integração ainda não tem um número de aprovações suficiente. %d em %d aprovações atribuÃdas pelos utilizadores ou equipas da lista de permissões.
pulls.blocked_by_rejection=Este pedido de integração tem modificações solicitadas por um revisor oficial.
pulls.blocked_by_official_review_requests=Este pedido de integração tem pedidos de revisão oficiais.
pulls.blocked_by_outdated_branch=Este pedido de integração foi bloqueado por ser obsoleto.
@@ -1866,9 +1882,9 @@ pulls.unrelated_histories=A integração falhou: O topo da integração e a base
pulls.merge_out_of_date=Falhou a integração: Enquanto estava a gerar a integração, a base foi modificada. Dica: Tente de novo.
pulls.head_out_of_date=Falhou a integração: Enquanto estava a gerar a integração, o topo foi modificado. Dica: Tente de novo.
pulls.has_merged=Falhou: A integração constante do pedido foi executada, não pode integrar novamente nem modificar o ramo alvo.
-pulls.push_rejected=A integração falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório.
+pulls.push_rejected=O envio falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório.
pulls.push_rejected_summary=Mensagem completa de rejeição
-pulls.push_rejected_no_message=A integração falhou: O envio foi rejeitado mas não houve qualquer mensagem remota.
Reveja os Automatismos do Git para este repositório
+pulls.push_rejected_no_message=O envio falhou: O envio foi rejeitado mas não houve qualquer mensagem remota. Reveja os Automatismos do Git para este repositório
pulls.open_unmerged_pull_exists=`Não pode executar uma operação de reabertura porque há um pedido de integração pendente (#%d) com propriedades idênticas.`
pulls.status_checking=Algumas verificações estão pendentes
pulls.status_checks_success=Todas as verificações foram bem sucedidas
@@ -1914,6 +1930,7 @@ pulls.delete.text=Tem a certeza que quer eliminar este pedido de integração? I
pulls.recently_pushed_new_branches=Enviou para o ramo %[1]s %[2]s
pull.deleted_branch=(eliminado):%s
+pull.agit_documentation=Rever a documentação sobre o AGit
comments.edit.already_changed=Não foi possÃvel guardar as modificações do comentário. O conteúdo parece ter sido modificado por outro utilizador, entretanto. Refresque a página e tente editar de novo para evitar sobrepor as modificações dele.
@@ -1924,7 +1941,7 @@ milestones.no_due_date=Sem data de vencimento
milestones.open=Abrir
milestones.close=Fechar
milestones.new_subheader=As etapas podem ajudar organizar as questões e a acompanhar o seu progresso.
-milestones.completeness=%d%% concluÃdo
+milestones.completeness=%d%% concluÃdo
milestones.create=Criar etapa
milestones.title=TÃtulo
milestones.desc=Descrição
@@ -2147,7 +2164,7 @@ settings.pulls.default_delete_branch_after_merge=Eliminar, por norma, o ramo do
settings.pulls.default_allow_edits_from_maintainers=Permitir, por norma, que os responsáveis editem
settings.releases_desc=Habilitar lançamentos no repositório
settings.packages_desc=Habilitar o registo de pacotes do repositório
-settings.projects_desc=Habilitar planeamentos no repositório
+settings.projects_desc=Habilitar planeamentos
settings.projects_mode_desc=Modo de planeamentos (tipos de planeamentos a mostrar)
settings.projects_mode_repo=Apenas planeamentos de repositórios
settings.projects_mode_owner=Apenas planeamentos de utilizadores ou de organizações
@@ -2324,7 +2341,7 @@ settings.event_pull_request_merge=Integração constante no pedido
settings.event_package=Pacote
settings.event_package_desc=Pacote criado ou eliminado num repositório.
settings.branch_filter=Filtro de ramos
-settings.branch_filter_desc=Lista dos ramos a serem considerados nos eventos de envio e de criação e eliminação de ramos, especificada como um padrão glob. Se estiver em branco ou for *
, serão reportados eventos para todos os ramos. Veja a documentação github.com/gobwas/glob para ver os detalhes da sintaxe. Exemplos: trunk
, {trunk,release*}
.
+settings.branch_filter_desc=Lista dos ramos a serem considerados nos eventos de envio e de criação e eliminação de ramos, especificada como um padrão glob. Se estiver em branco ou for *
, serão reportados eventos para todos os ramos. Veja a documentação para ver os detalhes da sintaxe. Exemplos: main
, {main,release*}
.
settings.authorization_header=Cabeçalho de Autorização
settings.authorization_header_desc=Será incluÃdo como cabeçalho de autorização para pedidos, quando estiver presente. Exemplos: %s.
settings.active=Em funcionamento
@@ -2406,13 +2423,13 @@ settings.protect_merge_whitelist_teams=Equipas com permissão para executar inte
settings.protect_check_status_contexts=Habilitar verificação de estado
settings.protect_status_check_patterns=Padrões de verificação de estado:
settings.protect_status_check_patterns_desc=Insira padrões para especificar que verificações de estado têm de passar antes que os ramos possam ser integrados num ramo correspondente a esta regra. Cada linha especifÃca um padrão. Os padrões não podem estar em branco.
-settings.protect_check_status_contexts_desc=Exigir que as verificações de estado passem antes de ser aplicada a integração. Escolha quais as verificações de estado que têm de passar para que os ramos possam ser integrados num ramo que corresponda a esta regra. Quando habilitado, os cometimentos primeiro têm de ser enviados para outro ramo e depois integrados, ou então enviados imediatamente para um ramo que corresponda a esta regra, após terem passado as verificações de estado. Se não forem escolhidos quaisquer contextos, o último cometimento tem que ser bem sucedido, independentemente do contexto.
+settings.protect_check_status_contexts_desc=Exigir que as verificações de estado passem antes de ser aplicada a integração. Quando habilitado, os cometimentos primeiro têm de ser enviados para outro ramo, depois integrados ou enviados imediatamente para um ramo que corresponda a esta regra, após terem passado as verificações de estado. Se não houver correspondência com quaisquer contextos, o último cometimento tem que ser bem sucedido, independentemente do contexto.
settings.protect_check_status_contexts_list=Verificações de estado encontradas na última semana para este repositório
settings.protect_status_check_matched=Correspondido
settings.protect_invalid_status_check_pattern=Padrão de verificação de estado inválido: "%s".
settings.protect_no_valid_status_check_patterns=Não existem padrões de verificação de estado válidos.
settings.protect_required_approvals=Aprovações necessárias:
-settings.protect_required_approvals_desc=Permitir somente a integração constante de pedidos que tenham revisões positivas suficientes.
+settings.protect_required_approvals_desc=Permitir somente a integração constante de pedidos que tenham aprovações exigidas suficientes. Aprovações exigidas são as dos utilizadores ou das equipas ou de qualquer pessoa que esteja na lista de permissão com acesso de escrita.
settings.protect_approvals_whitelist_enabled=Restringir aprovações a utilizadores ou equipas da lista de permissão
settings.protect_approvals_whitelist_enabled_desc=Somente as revisões dos utilizadores ou equipas da lista de permissão irão contar para as aprovações necessárias. Se não houver uma lista de permissão de aprovações, revisões de qualquer pessoa com acesso de escrita contam para as aprovações necessárias.
settings.protect_approvals_whitelist_users=Revisores com permissão:
@@ -2424,18 +2441,18 @@ settings.ignore_stale_approvals_desc=Não contar as aprovações feitas em comet
settings.require_signed_commits=Exigir cometimentos assinados
settings.require_signed_commits_desc=Rejeitar envios para este ramo que não estejam assinados ou que não sejam validáveis.
settings.protect_branch_name_pattern=Padrão do nome do ramo protegido
-settings.protect_branch_name_pattern_desc=Padrões de nomes de ramos protegidos. Consulte a documentação para ver a sintaxe dos padrões. Exemplos: main, release/**
+settings.protect_branch_name_pattern_desc=Padrões de nomes de ramos protegidos. Consulte a documentação para ver a sintaxe dos padrões. Exemplos: main, release/**
settings.protect_patterns=Padrões
settings.protect_protected_file_patterns=Padrões de ficheiros protegidos (separados com ponto e vÃrgula ';'):
-settings.protect_protected_file_patterns_desc=Ficheiros protegidos não podem ser modificados imediatamente, mesmo que o utilizador tenha direitos para adicionar, editar ou eliminar ficheiros neste ramo. Múltiplos padrões podem ser separados com ponto e vÃrgula (';'). Veja a documentação em github.com/gobwas/glob para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
+settings.protect_protected_file_patterns_desc=Ficheiros protegidos não podem ser modificados imediatamente, mesmo que o utilizador tenha direitos para adicionar, editar ou eliminar ficheiros neste ramo. Múltiplos padrões podem ser separados com ponto e vÃrgula (';'). Veja a documentação %[2]s para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Padrões de ficheiros desprotegidos (separados com ponto e vÃrgula ';'):
-settings.protect_unprotected_file_patterns_desc=Ficheiros desprotegidos que podem ser modificados imediatamente se o utilizador tiver direitos de escrita, contornando a restrição no envio. Padrões múltiplos podem ser separados com ponto e vÃrgula (';'). Veja a documentação em github.com/gobwas/glob para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
+settings.protect_unprotected_file_patterns_desc=Ficheiros desprotegidos que podem ser modificados imediatamente se o utilizador tiver direitos de escrita, contornando a restrição no envio. Padrões múltiplos podem ser separados com ponto e vÃrgula (';'). Veja a documentação %[2]s para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=Habilitar salvaguarda
settings.delete_protected_branch=Desabilitar salvaguarda
settings.update_protect_branch_success=A salvaguarda do ramo "%s" foi modificada.
settings.remove_protected_branch_success=A salvaguarda do ramo "%s" foi removida.
settings.remove_protected_branch_failed=A remoção da regra "%s" de salvaguarda do ramo falhou.
-settings.protected_branch_deletion=Desabilitar salvaguarda do ramo
+settings.protected_branch_deletion=Eliminar salvaguarda do ramo
settings.protected_branch_deletion_desc=Desabilitar a salvaguarda do ramo irá permitir que os utilizadores que tenham permissão de escrita enviem para o ramo. Quer continuar?
settings.block_rejected_reviews=Bloquear a integração quando há revisões rejeitadas
settings.block_rejected_reviews_desc=A integração não será possÃvel quando as modificações forem pedidas pelos revisores oficiais, mesmo que haja aprovações suficientes.
@@ -2461,7 +2478,7 @@ settings.tags.protection.allowed.teams=Equipas com permissão
settings.tags.protection.allowed.noone=Ninguém
settings.tags.protection.create=Proteger etiqueta
settings.tags.protection.none=Não há etiquetas protegidas.
-settings.tags.protection.pattern.description=Pode usar um só nome ou um padrão glob ou uma expressão regular para corresponder a várias etiquetas. Para mais informações leia o guia das etiquetas protegidas.
+settings.tags.protection.pattern.description=Pode usar um só nome ou um padrão glob ou uma expressão regular para corresponder a várias etiquetas. Para mais informações leia o guia das etiquetas protegidas.
settings.bot_token=Código do bot
settings.chat_id=ID do diálogo
settings.thread_id=ID da discussão
@@ -2641,7 +2658,7 @@ branch.delete_desc=Eliminar um ramo é algo permanente. Embora o ramo eliminado
branch.deletion_success=O ramo "%s" foi eliminado.
branch.deletion_failed=Falhou a eliminação do ramo "%s".
branch.delete_branch_has_new_commits=O ramo "%s" não pode ser eliminado porque foram adicionados novos cometimentos após a integração.
-branch.create_branch=Criar ramo %s
+branch.create_branch=Criar ramo %s
branch.create_from=`a partir de "%s"`
branch.create_success=O ramo "%s" foi criado.
branch.branch_already_exists=O ramo "%s" já existe neste repositório.
@@ -2667,7 +2684,7 @@ branch.new_branch=Criar um novo ramo
branch.new_branch_from=`Criar um novo ramo a partir do ramo "%s"`
branch.renamed=O ramo %s foi renomeado para %s.
-tag.create_tag=Criar etiqueta %s
+tag.create_tag=Criar etiqueta %s
tag.create_tag_operation=Criar etiqueta
tag.confirm_create_tag=Criar etiqueta
tag.create_tag_from=`Criar uma etiqueta nova a partir do ramo "%s"`
@@ -2843,7 +2860,7 @@ last_page=Última
total=total: %d
settings=Configurações de administração
-dashboard.new_version_hint=O Gitea %s está disponÃvel, você está a correr a versão %s. Verifique o blog para mais detalhes.
+dashboard.new_version_hint=O Gitea %s está disponÃvel, você está a correr a versão %s. Verifique o blog para mais detalhes.
dashboard.statistic=Resumo
dashboard.maintenance_operations=Operações de manutenção
dashboard.system_status=Estado do sistema
@@ -2928,6 +2945,7 @@ dashboard.start_schedule_tasks=Iniciar tarefas de agendamento das operações
dashboard.sync_branch.started=Sincronização de ramos iniciada
dashboard.sync_tag.started=Sincronização de etiquetas iniciada
dashboard.rebuild_issue_indexer=Reconstruir indexador de questões
+dashboard.sync_repo_licenses=Sincronizar licenças do repositório
users.user_manage_panel=Gestão das contas de utilizadores
users.new_account=Criar conta de utilizador
@@ -3035,12 +3053,12 @@ packages.size=Tamanho
packages.published=Publicado
defaulthooks=Automatismos web predefinidos
-defaulthooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui são os predefinidos e serão copiados para todos os novos repositórios. Leia mais no guia de automatismos web.
+defaulthooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui são os predefinidos e serão copiados para todos os novos repositórios. Leia mais no guia de automatismos web.
defaulthooks.add_webhook=Adicionar automatismo web predefinido
defaulthooks.update_webhook=Modificar automatismo web predefinido
systemhooks=Automatismos web do sistema
-systemhooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui irão operar em todos os repositórios deste sistema, por isso tenha em consideração quaisquer implicações de desempenho que isso possa ter. Leia mais no guia de automatismos web.
+systemhooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui irão operar em todos os repositórios deste sistema, por isso tenha em consideração quaisquer implicações de desempenho que isso possa ter. Leia mais no guia de automatismos web.
systemhooks.add_webhook=Adicionar automatismo web do sistema
systemhooks.update_webhook=Modificar automatismo web do sistema
@@ -3135,18 +3153,18 @@ auths.tips=Dicas
auths.tips.oauth2.general=Autenticação OAuth2
auths.tips.oauth2.general.tip=Ao registar uma nova autenticação OAuth2, o URL da ligação de retorno ou do reencaminhamento deve ser:
auths.tip.oauth2_provider=Fornecedor OAuth2
-auths.tip.bitbucket=Registe um novo consumidor de OAuth em https://bitbucket.org/account/user/{your-username}/oauth-consumers/new e adicione a permissão 'Account' - 'Read'
+auths.tip.bitbucket=Registe um novo consumidor de OAuth em %s e adicione a permissão 'Account' - 'Read'
auths.tip.nextcloud=`Registe um novo consumidor OAuth na sua instância usando o seguinte menu "Configurações → Segurança → Cliente OAuth 2.0"`
-auths.tip.dropbox=Crie uma nova aplicação em https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Registe uma nova aplicação em https://developers.facebook.com/apps e adicione o produto "Facebook Login"`
-auths.tip.github=Registe uma nova aplicação OAuth em https://github.com/settings/applications/new
-auths.tip.gitlab_new=Registe uma nova aplicação em https://gitlab.com/-/profile/applications
-auths.tip.google_plus=Obtenha credenciais de cliente OAuth2 a partir da consola do Google API em https://console.developers.google.com/
+auths.tip.dropbox=Crie uma nova aplicação em %s
+auths.tip.facebook=`Registe uma nova aplicação em %s e adicione o produto "Facebook Login"`
+auths.tip.github=Registe uma nova aplicação OAuth em %s
+auths.tip.gitlab_new=Registe uma nova aplicação em %s
+auths.tip.google_plus=Obtenha credenciais de cliente OAuth2 a partir da consola do Google API em %s
auths.tip.openid_connect=Use o URL da descoberta de conexão OpenID "https://{server}/.well-known/openid-configuration" para especificar os extremos
-auths.tip.twitter=`Vá a https://dev.twitter.com/apps, crie uma aplicação e certifique-se de que está habilitada a opção "Allow this application to be used to Sign in with Twitter"`
-auths.tip.discord=Registe uma nova aplicação em https://discordapp.com/developers/applications/me
-auths.tip.gitea=Registe uma nova aplicação OAuth2. O guia pode ser encontrado em https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Crie uma nova aplicação em https://oauth.yandex.com/client/new. Escolha as seguintes permissões da secção "Yandex.Passport API": "Acesso ao endereço de email", "Acesso ao avatar do utilizador" e "Acesso ao nome de utilizador, nome e sobrenome, género"`
+auths.tip.twitter=`Vá a %s, crie uma aplicação e certifique-se de que está habilitada a opção "Allow this application to be used to Sign in with Twitter"`
+auths.tip.discord=Registe uma nova aplicação em %s
+auths.tip.gitea=Registe uma nova aplicação OAuth2. O guia pode ser encontrado em %s
+auths.tip.yandex=`Crie uma nova aplicação em %s. Escolha as seguintes permissões da secção "Yandex.Passport API": "Acesso ao endereço de email", "Acesso ao avatar do utilizador" e "Acesso ao nome de utilizador, nome e sobrenome, género"`
auths.tip.mastodon=Insira o URL de uma instância personalizada para a instância do mastodon com que se pretende autenticar (ou então use a predefinida)
auths.edit=Editar fonte de autenticação
auths.activated=Esta fonte de autenticação está em funcionamento
@@ -3571,7 +3589,7 @@ settings.link=Vincular este pacote a um repositório
settings.link.description=Se você vincular um pacote a um repositório, o pacote será listado na lista de pacotes do repositório.
settings.link.select=Escolha o repositório
settings.link.button=Modificar vÃnculo ao repositório
-settings.link.success=O vÃnculo ao repositório foi modificado com sucesso.
+settings.link.success=A ligação ao repositório foi modificada com sucesso.
settings.link.error=Falhou a modificação do vÃnculo ao repositório.
settings.delete=Eliminar pacote
settings.delete.description=Eliminar o pacote é permanente e não pode ser desfeito.
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 2776137426758..7fd73f9d830c0 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -182,22 +182,16 @@ string.desc=Я - Ð
[error]
occurred=Произошла ошибка
-report_message=ЕÑли вы Ñчитаете, что Ñто баг Gitea, пожалуйÑта, поищите задачу на GitHub или Ñоздайте новую при необходимоÑти.
-missing_csrf=Ðекорректный запроÑ: отÑутÑтвует токен CSRF
-invalid_csrf=Ðекорректный запроÑ: неверный токен CSRF
not_found=Цель не найдена.
network_error=Ошибка Ñети
[startpage]
app_desc=Удобный ÑÐµÑ€Ð²Ð¸Ñ ÑобÑтвенного хоÑтинга репозиториев Git
install=ПроÑтой в уÑтановке
-install_desc=ПроÑто запуÑтите иÑполнÑемый файл Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ платформы, разверните через Docker, или уÑтановите Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ менеджера пакетов.
platform=КроÑÑплатформенный
-platform_desc=Gitea работает на любой платформе, поддерживаемой Go: Windows, macOS, Linux, ARM и Ñ‚. д. Выбирайте, что вам больше нравитÑÑ!
lightweight=ЛегковеÑный
lightweight_desc=Gitea имеет низкие ÑиÑтемные Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ может работать на недорогом Raspberry Pi. Ðкономьте Ñнергию вашей машины!
license=Открытый иÑходный код
-license_desc=Ð’ÑÑ‘ Ñто на code.gitea.io/gitea! ПриÑоединÑйтеÑÑŒ к нам, вноÑÑ Ð²ÐºÐ»Ð°Ð´, чтобы Ñделать Ñтот проект ещё лучше. Ðе бойтеÑÑŒ помогать!
[install]
install=УÑтановка
@@ -411,7 +405,6 @@ authorize_title=Разрешить «%s» доÑтуп к вашей учётн
authorization_failed=Ошибка авторизации
authorization_failed_desc=Ошибка авторизации, обнаружен неверный запроÑ. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¾Ð¼ приложениÑ, которое вы пыталиÑÑŒ авторизовать.
sspi_auth_failed=ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ SSPI не удалаÑÑŒ
-password_pwned=Выбранный вами пароль находитÑÑ Ð² ÑпиÑке украденных паролей из ранее опубликованных утечек. Повторите попытку Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ паролем. Также рекомендуем Ñменить Ñтот пароль в других меÑтах.
password_pwned_err=Ðе удалоÑÑŒ завершить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ðº HaveIBeenPwned
[mail]
@@ -617,17 +610,14 @@ applications=ПриложениÑ
orgs=Управление организациÑми
repos=Репозитории
delete=Удалить аккаунт
-twofa=Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ
account_link=ПривÑзанные аккаунты
organization=Организации
uid=UID
-webauthn=Ключи безопаÑноÑти
public_profile=Открытый профиль
biography_placeholder=РаÑÑкажите немного о Ñебе! (Можно иÑпользовать Markdown)
location_placeholder=ПоделитеÑÑŒ Ñвоим приблизительным меÑтоположением Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸
profile_desc=Контролируйте, как ваш профиль будет отображатьÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ пользователÑм. Ваш оÑновной Ð°Ð´Ñ€ÐµÑ Ñлектронной почты будет иÑпользоватьÑÑ Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹, воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ веб-операций Git.
-password_username_disabled=Ðелокальным пользователÑм запрещено изменение их имени пользователÑ. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации обратитеÑÑŒ к админиÑтратору Ñайта.
full_name=Ð˜Ð¼Ñ Ð¸ фамилиÑ
website=Веб-Ñайт
location=МеÑтоположение
@@ -850,25 +840,20 @@ revoke_oauth2_grant=Отозвать доÑтуп
revoke_oauth2_grant_description=Отзыв доÑтупа у Ñтого Ñтороннего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ позволит ему получать доÑтуп к вашим данным. Ð’Ñ‹ уверены?
revoke_oauth2_grant_success=ДоÑтуп был уÑпешно отозван.
-twofa_desc=Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐ°ÐµÑ‚ уровень безопаÑноÑти вашей учётной запиÑи.
twofa_recovery_tip=Ð’ Ñлучае утраты уÑтройÑтва можно иÑпользовать одноразовый ключ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупа к учётной запиÑи.
twofa_is_enrolled=Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñпользует двухфакторную аутентификацию.
twofa_not_enrolled=Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ иÑпользует двухфакторную аутентификацию.
twofa_disable=Отключить двухфакторную аутентификацию
-twofa_scratch_token_regenerate=ПереÑоздать scratch-токен
twofa_enroll=Включить двухфакторную аутентификацию
twofa_disable_note=При необходимоÑти можно отключить двухфакторную аутентификацию.
twofa_disable_desc=Отключение двухфакторной аутентификации Ñделает ваш аккаунт менее безопаÑным. Продолжить?
-regenerate_scratch_token_desc=ЕÑли вы потерÑли Ñвой scratch-токен или уже иÑпользовали его Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°, вы можете ÑброÑить его здеÑÑŒ.
twofa_disabled=Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°.
scan_this_image=ОтÑканируйте Ñто изображение вашим приложением Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ð¹ аутентификации:
or_enter_secret=Или введите кодовое Ñлово: %s
then_enter_passcode=И введите пароль, показанный в приложении:
passcode_invalid=Ðеверный пароль. попробуйте Ñнова.
-twofa_enrolled=Ð”Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ аккаунта была включена Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ. Сохраните ваш scratch-токен (%s), он будет показан только один раз!
twofa_failed_get_secret=Ðе удалоÑÑŒ получить ключ.
-webauthn_desc=Ключи безопаÑноÑти - Ñто аппаратные уÑтройÑтва, Ñодержащие криптографичеÑкие ключи. Они могут иÑпользоватьÑÑ Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ð¹ аутентификации. Ключи безопаÑноÑти должны поддерживать Ñтандарт WebAuthn Authenticator.
webauthn_register_key=Добавить ключ безопаÑноÑти
webauthn_nickname=Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ
webauthn_delete_key=Удалить ключ безопаÑноÑти
@@ -998,9 +983,7 @@ tree_path_not_found_commit=Путь %[1]s не ÑущеÑтвует в комм
tree_path_not_found_branch=Путь %[1]s не ÑущеÑтвует в ветке %[2]s
transfer.accept=ПринÑÑ‚ÑŒ транÑфер
-transfer.accept_desc=ПеремеÑтить в «%s»
transfer.reject=ОтказатьÑÑ Ð¾Ñ‚ перемещениÑ
-transfer.reject_desc=Отменить перемещение в «%s»
desc.private=Приватный
desc.public=Публичный
@@ -1128,7 +1111,6 @@ releases=Релизы
tag=Тег
released_this=выпуÑтил(-а) Ñто
tagged_this=добавил(а) тег
-file.title=%s в %s
file_raw=ИÑходник
file_history=ИÑториÑ
file_view_source=ПроÑмотреть иÑходный код
@@ -1140,7 +1122,6 @@ invisible_runes_header=`Ðтот файл Ñодержит невидимые Ñ
ambiguous_runes_header=`Ðтот файл Ñодержит неоднозначные Ñимволы Юникода`
invisible_runes_line=`Ð’ Ñтой Ñтроке еÑÑ‚ÑŒ невидимые Ñимволы Юникода`
ambiguous_runes_line=`Ð’ Ñтой Ñтроке еÑÑ‚ÑŒ неоднозначные Ñимволы Юникода`
-ambiguous_character=`%[1]c [U+%04[1]X] можно Ñпутать Ñ %[2]c [U+%04[2]X]`
escape_control_characters=Ðкранировать
unescape_control_characters=Убрать Ñкранирование
@@ -1594,7 +1575,6 @@ issues.dependency.add_error_dep_not_same_repo=Обе задачи должны
issues.review.self.approval=Ð’Ñ‹ не можете одобрить ÑобÑтвенный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние.
issues.review.self.rejection=Ðевозможно запрашивать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñвоего запроÑа на ÑлиÑние.
issues.review.approve=одобрил(а) Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s
-issues.review.comment=раÑÑмотрел(а) Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s
issues.review.dismissed=отклонен отзыв %s %s
issues.review.dismissed_label=Отклонено
issues.review.left_comment=оÑтавил комментарий
@@ -1618,6 +1598,7 @@ issues.review.hide_resolved=Скрыть разрешенные
issues.review.resolve_conversation=Покинуть диалог
issues.review.un_resolve_conversation=Ðезавершённый разговор
issues.review.resolved_by=пометить Ñтот разговор как разрешённый
+issues.review.commented=Комментировать
issues.assignee.error=Ðе вÑе Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ добавлены из-за непредвиденной ошибки.
issues.reference_issue.body=Тело
issues.content_history.deleted=удалено
@@ -1685,7 +1666,6 @@ pulls.is_empty=Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· Ñтой ветки уже еÑÑ‚ÑŒ в ц
pulls.required_status_check_failed=Ðекоторые необходимые проверки не были пройдены.
pulls.required_status_check_missing=ОтÑутÑтвуют некоторые обÑзательные проверки.
pulls.required_status_check_administrator=Как админиÑтратор, вы вÑе равно можете принÑÑ‚ÑŒ Ñтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние.
-pulls.blocked_by_approvals=Ðтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние пока не имеет доÑтаточного количеÑтва одобрений. Получено %d из %d одобрений.
pulls.blocked_by_rejection=Официальный рецензент запроÑил Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ðº Ñтому запроÑу на ÑлиÑние.
pulls.can_auto_merge_desc=Ðтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние может быть объединён автоматичеÑки.
pulls.cannot_auto_merge_desc=Ðтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние не может быть объединён автоматичеÑки.
@@ -1721,9 +1701,7 @@ pulls.rebase_conflict_summary=Сообщение об ошибке
pulls.unrelated_histories=СлиÑние не удалоÑÑŒ: У иÑточника и цели ÑлиÑÐ½Ð¸Ñ Ð½ÐµÑ‚ общей иÑтории. Совет: попробуйте другую Ñтратегию
pulls.merge_out_of_date=Ошибка ÑлиÑниÑ: при Ñоздании ÑлиÑÐ½Ð¸Ñ Ð±Ð°Ð·Ð° данных была обновлена. ПодÑказка: попробуйте ещё раз.
pulls.head_out_of_date=Ошибка ÑлиÑниÑ: во Ð²Ñ€ÐµÐ¼Ñ ÑлиÑÐ½Ð¸Ñ Ð³Ð¾Ð»Ð¾Ð²Ð½Ð¾Ð¹ коммит был обновлён. Попробуйте ещё раз.
-pulls.push_rejected=СлиÑние не удалоÑÑŒ: отправка была отклонена. Проверьте Git-хуки Ð´Ð»Ñ Ñтого репозиториÑ.
pulls.push_rejected_summary=ÐŸÐ¾Ð»Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° отклонениÑ
-pulls.push_rejected_no_message=СлиÑние не удалоÑÑŒ: отправка была отклонена, но Ñервер не указал причину.
Проверьте Git-хуки Ð´Ð»Ñ Ñтого репозиториÑ
pulls.open_unmerged_pull_exists=`Ð’Ñ‹ не можете Ñнова открыть, поÑкольку уже ÑущеÑтвует Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние (#%d) из того же Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ñ Ñ‚Ð¾Ð¹ же информацией о ÑлиÑнии и ожидающий ÑлиÑниÑ.`
pulls.status_checking=ВыполнÑÑŽÑ‚ÑÑ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ проверки
pulls.status_checks_success=Ð’Ñе проверки выполнены уÑпешно
@@ -1773,7 +1751,6 @@ milestones.update_ago=Обновлено %s
milestones.no_due_date=Срок не указан
milestones.open=Открыть
milestones.close=Закрыть
-milestones.completeness=%d%% выполнено
milestones.create=Создать Ñтап
milestones.title=Заголовок
milestones.desc=ОпиÑание
@@ -1980,7 +1957,6 @@ settings.pulls.default_delete_branch_after_merge=Удалить ветку за
settings.pulls.default_allow_edits_from_maintainers=По умолчанию разрешать редактирование Ñопровождающими
settings.releases_desc=Включить релизы
settings.packages_desc=Включить рееÑÑ‚Ñ€ пакетов
-settings.projects_desc=Включить проекты репозиториÑ
settings.projects_mode_all=Ð’Ñе проекты
settings.actions_desc=Включить дейÑÑ‚Ð²Ð¸Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ
settings.admin_settings=ÐаÑтройки админиÑтратора
@@ -2148,7 +2124,6 @@ settings.event_pull_request_merge=Удовлетворение запроÑов
settings.event_package=Пакеты
settings.event_package_desc=Пакет Ñоздан или удален в репозитории.
settings.branch_filter=Фильтр веток
-settings.branch_filter_desc=Белый ÑпиÑок ветвей Ð´Ð»Ñ Ñобытий Push, ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²ÐµÑ‚Ð²ÐµÐ¹ и ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÑ‚Ð²ÐµÐ¹, указанных в виде глоб-шаблона. ЕÑли пуÑтой или *
, то вÑе Ñобытий Ð´Ð»Ñ Ð²Ñех ветвей будут зарегиÑтрированы. Перейдите по ÑÑылке github.com/gobwas/glob на документацию по ÑинтакÑиÑу. Примеры: master
, {master,release*}
.
settings.authorization_header=Заголовок Authorization
settings.authorization_header_desc=Будет включён в качеÑтве заголовка авторизации Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов. Примеры: %s.
settings.active=Ðктивный
@@ -2193,14 +2168,11 @@ settings.add_key_success=Ключ Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Â«%s» добавл
settings.deploy_key_deletion=Удалить ключ развёртываниÑ
settings.deploy_key_deletion_desc=Удаление ключа Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñделает невозможным доÑтуп к репозиторию Ñ ÐµÐ³Ð¾ помощью. Ð’Ñ‹ уверены?
settings.deploy_key_deletion_success=Ключ Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½.
-settings.branches=Ветки
-settings.protected_branch=Защита веток
settings.protected_branch.save_rule=Сохранить правило
settings.protected_branch.delete_rule=Удалить правило
settings.protected_branch_can_push=Разрешить отправку?
settings.protected_branch_can_push_yes=Ð’Ñ‹ можете выполнÑÑ‚ÑŒ отправку
settings.protected_branch_can_push_no=Ð’Ñ‹ не можете выполнÑÑ‚ÑŒ отправку
-settings.branch_protection=Защита ветки %s
settings.protect_this_branch=Защитить Ñту ветку
settings.protect_this_branch_desc=Предотвращает удаление, ограничивает Push и ÑлиÑние Git в ветку.
settings.protect_disable_push=Отключить отправку
@@ -2212,30 +2184,22 @@ settings.protect_enable_merge_desc=Ð’Ñе, у кого еÑÑ‚ÑŒ доÑтуп н
settings.protect_check_status_contexts=Включить проверку ÑтатуÑа
settings.protect_status_check_patterns=Шаблоны проверки ÑоÑтоÑниÑ:
settings.protect_status_check_patterns_desc=Добавьте шаблоны, чтобы указать, какие проверки ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть пройдены, прежде чем ветви могут быть объединены в ветвь, ÑоответÑтвующую Ñтому правилу. Ð’ каждой Ñтроке указываетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½. Шаблоны не могут быть пуÑтыми.
-settings.protect_check_status_contexts_desc=ТребуетÑÑ Ð¿Ñ€Ð¾Ð¹Ñ‚Ð¸ проверку ÑоÑтоÑÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ ÑлиÑнием. Выберите, какие проверки ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть пройдены, прежде чем ветви можно будет объединить в ветвь, ÑоответÑтвующую Ñтому правилу. ЕÑли Ñтот параметр включен, коммиты Ñначала должны быть перемещены в другую ветвь, а затем объединены или перемещены непоÑредÑтвенно в ветвь, ÑоответÑтвующую Ñтому правилу, поÑле Ð¿Ñ€Ð¾Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ÑоÑтоÑниÑ. ЕÑли контекÑÑ‚Ñ‹ не выбраны, то поÑледнÑÑ Ñ„Ð¸ÐºÑÐ°Ñ†Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть уÑпешной незавиÑимо от контекÑта.
settings.protect_check_status_contexts_list=Проверки ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð° поÑледнюю неделю Ð´Ð»Ñ Ñтого репозиториÑ
settings.protect_status_check_matched=Совпало
settings.protect_invalid_status_check_pattern=Ðеверный шаблон проверки ÑоÑтоÑниÑ: «%s».
settings.protect_no_valid_status_check_patterns=Ðет допуÑтимых шаблонов проверки ÑоÑтоÑниÑ.
settings.protect_required_approvals=Ðеобходимые одобрениÑ:
-settings.protect_required_approvals_desc=Разрешить принÑтие запроÑа на ÑлиÑние только Ñ Ð´Ð¾Ñтаточным количеÑтвом положительных отзывов.
settings.dismiss_stale_approvals=Отклонить уÑтаревшие разрешениÑ
settings.dismiss_stale_approvals_desc=Когда новые коммиты, изменÑющие Ñодержимое запроÑа на ÑлиÑние, отправлÑÑŽÑ‚ÑÑ Ð² ветку, Ñтарые Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отклонены.
settings.require_signed_commits=Требовать подпиÑанные коммиты
settings.require_signed_commits_desc=Отклонить отправку изменений в Ñту ветку, еÑли они не подпиÑаны или не проверÑемы.
settings.protect_branch_name_pattern=Шаблон имени Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ñ… веток
-settings.protect_branch_name_pattern_desc=Шаблоны имён защищённых веток. О ÑинтакÑиÑе шаблонов читайте в документации. Примеры: main, release/**
settings.protect_patterns=Шаблоны
settings.protect_protected_file_patterns=Шаблоны защищённых файлов (разделённые точкой Ñ Ð·Ð°Ð¿Ñтой ';'):
-settings.protect_protected_file_patterns_desc=Защищенные файлы Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ напрÑмую, даже еÑли пользователь имеет право добавлÑÑ‚ÑŒ, редактировать или удалÑÑ‚ÑŒ файлы в Ñтой ветке. Можно указать неÑколько шаблонов, разделÑÑ Ð¸Ñ… точкой Ñ Ð·Ð°Ð¿Ñтой (';'). О ÑинтакÑиÑе шаблонов читайте в документации github.com/gobwas/glob. Примеры: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Шаблоны незащищённых файлов (разделённые точкой Ñ Ð·Ð°Ð¿Ñтой ';'):
-settings.protect_unprotected_file_patterns_desc=Ðезащищенные файлы, которые допуÑкаетÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ напрÑмую, еÑли пользователь имеет право на запиÑÑŒ, неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° ограничение отправки изменений. Можно указать неÑколько шаблонов, разделÑÑ Ð¸Ñ… точкой Ñ Ð·Ð°Ð¿Ñтой (';'). О ÑинтакÑиÑе шаблонов читайте в документации github.com/gobwas/glob. Примеры: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Включить защиту
-settings.delete_protected_branch=Отключить защиту
settings.update_protect_branch_success=Защита веток по правилу «%s» изменена.
settings.remove_protected_branch_success=Защита веток по правилу «%s» удалена.
settings.remove_protected_branch_failed=Ðе удалоÑÑŒ удалить правило защиты веток «%s».
-settings.protected_branch_deletion=Отключение защиты ветки
settings.protected_branch_deletion_desc=Любой пользователь Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñми на запиÑÑŒ Ñможет выполнÑÑ‚ÑŒ push в Ñту ветку. Ð’Ñ‹ уверены?
settings.block_rejected_reviews=Блокировка ÑлиÑÐ½Ð¸Ñ Ð¿Ð¾ отклоненным отзывам
settings.block_rejected_reviews_desc=СлиÑние будет невозможно, еÑли официальными рецензентами будут запрошены изменениÑ, даже еÑли имеетÑÑ Ð´Ð¾Ñтаточное количеÑтво одобрений.
@@ -2245,7 +2209,6 @@ settings.block_outdated_branch=Блокировать ÑлиÑние, еÑли
settings.block_outdated_branch_desc=СлиÑние будет невозможно, еÑли Ð³Ð¾Ð»Ð¾Ð²Ð½Ð°Ñ Ð²ÐµÑ‚Ð²ÑŒ находитÑÑ Ð¿Ð¾Ð·Ð°Ð´Ð¸ базовой ветви.
settings.default_branch_desc=Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ð²ÐµÑ‚ÐºÐ° ÑвлÑетÑÑ "базовой" Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ репозиториÑ, на которую по умолчанию направлены вÑе запроÑÑ‹ на ÑлиÑние и ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑвлÑетÑÑ Ð»Ð¸Ñ†Ð¾Ð¼ вашего репозиториÑ. Первое, что увидит поÑетитель — Ñто Ñодержимое главной ветки. Выберите её из уже ÑущеÑтвующих:
settings.merge_style_desc=Стили ÑлиÑниÑ
-settings.default_merge_style_desc=Стиль ÑлиÑÐ½Ð¸Ñ Ð¿Ð¾ умолчанию:
settings.choose_branch=Выберите ветку…
settings.no_protected_branch=Ðет защищённых веток.
settings.edit_protected_branch=Редактировать
@@ -2422,7 +2385,7 @@ branch.delete_desc=Удаление ветки необратимо. ÐеÑмо
branch.deletion_success=Ветка «%s» удалена.
branch.deletion_failed=Ðе удалоÑÑŒ удалить ветку «%s».
branch.delete_branch_has_new_commits=Ветку «%s» Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ, поÑкольку поÑле ÑлиÑÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ добавлены новые коммиты.
-branch.create_branch=Создать ветку %s
+branch.create_branch=Создать ветку %s
branch.create_from=от «%s»
branch.create_success=Ветка «%s» Ñоздана.
branch.branch_already_exists=Ветка «%s» уже ÑущеÑтвует в Ñтом репозитории.
@@ -2448,7 +2411,7 @@ branch.new_branch=Создать новую ветку
branch.new_branch_from=Создать новую ветку из «%s»
branch.renamed=Ветка %s была переименована в %s.
-tag.create_tag=Создать тег %s
+tag.create_tag=Создать тег %s
tag.create_tag_operation=Создать тег
tag.confirm_create_tag=Создать тег
tag.create_tag_from=Создать новый тег из «%s»
@@ -2610,7 +2573,6 @@ first_page=ПерваÑ
last_page=ПоÑледнÑÑ
total=Ð’Ñего: %d
-dashboard.new_version_hint=ДоÑтупна Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Gitea %s, вы иÑпользуете %s. Более подробную информацию читайте в блоге.
dashboard.statistic=СтатиÑтика
dashboard.system_status=СоÑтоÑние ÑиÑтемы
dashboard.operation_name=Ð˜Ð¼Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸
@@ -2882,13 +2844,6 @@ auths.tips=Советы
auths.tips.oauth2.general=ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ OAuth2
auths.tip.oauth2_provider=ПоÑтавщик OAuth2
auths.tip.nextcloud=`ЗарегиÑтрируйте нового Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ OAuth в вашем ÑкземплÑре, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼ÐµÐ½ÑŽ "Settings -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=Добавьте новое приложение на https://www.dropbox.com/developers/apps
-auths.tip.facebook=ЗарегиÑтрируйте новое приложение на https://developers.facebook.com/apps и добавьте модуль «Facebook Login»
-auths.tip.github=Добавьте OAuth приложение на https://github.com/settings/applications/new
-auths.tip.google_plus=Получите учётные данные клиента OAuth2 в конÑоли Google API на Ñтранице https://console.developers.google.com/
-auths.tip.twitter=Перейдите на https://dev.twitter.com/apps, Ñоздайте приложение и убедитеÑÑŒ, что включена Ð¾Ð¿Ñ†Ð¸Ñ Â«Ð Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ Ñто приложение Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Twitter»
-auths.tip.discord=Добавьте новое приложение на https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Создайте новое приложение по адреÑу https://oauth.yandex.com/client/new. Ð’ разделе "API ЯндекÑ.ПаÑпорта" выберите Ñледующие разрешениÑ: "ДоÑтуп к адреÑу Ñлектронной почты", "ДоÑтуп к аватару пользователÑ" и "ДоÑтуп к имени пользователÑ, фамилии и полу"`
auths.tip.mastodon=Введите пользовательÑкий URL ÑкземплÑра Ð´Ð»Ñ ÑкземплÑра mastodon, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ вы хотите аутентифицироватьÑÑ (или иÑпользовать его по умолчанию)
auths.edit=Обновить параметры аутентификации
auths.activated=ИÑточник аутентификации активирован
@@ -3049,7 +3004,6 @@ monitor.next=Следующий раз
monitor.previous=Предыдущий раз
monitor.execute_times=КоличеÑтво выполнений
monitor.process=Запущенные процеÑÑÑ‹
-monitor.stacktrace=ТраÑÑировки Ñтека
monitor.processes_count=%d процеÑÑов
monitor.download_diagnosis_report=Скачать диагноÑтичеÑкий отчёт
monitor.desc=ОпиÑание
@@ -3057,8 +3011,6 @@ monitor.start=Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°
monitor.execute_time=Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ
monitor.last_execution_result=Результат
monitor.process.cancel=Отменить процеÑÑ
-monitor.process.cancel_desc=Отмена процеÑÑа может привеÑти к потере данных
-monitor.process.cancel_notices=Отменить: %s?
monitor.process.children=Потомки
monitor.queues=Очереди
@@ -3150,8 +3102,6 @@ raw_minutes=минут
[dropzone]
default_message=Перетащите файл или кликните Ñюда Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.
-invalid_input_type=Ð’Ñ‹ не можете загружать файлы Ñтого типа.
-file_too_big=Размер файла ({{filesize}} МБ) больше чем макÑимальный размер ({{maxFilesize}} МБ).
remove_file=Удалить файл
[notification]
@@ -3219,7 +3169,6 @@ alpine.registry.key=Загрузите публичный ключ RSA рееÑ
alpine.registry.info=Выберите $branch и $repository из ÑпиÑка ниже.
alpine.install=Чтобы уÑтановить пакет, выполните Ñледующую команду:
alpine.repository=О репозитории
-alpine.repository.branches=Ветки
alpine.repository.repositories=Репозитории
alpine.repository.architectures=Ðрхитектуры
cargo.registry=ÐаÑтройте Ñтот рееÑÑ‚Ñ€ в файле конфигурации Cargo (например, ~/.cargo/config.toml
):
diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini
index a6e1ae20ccbfe..4d64c46e6ee27 100644
--- a/options/locale/locale_si-LK.ini
+++ b/options/locale/locale_si-LK.ini
@@ -118,13 +118,11 @@ filter.private=පෞද්ගලික
[filter]
[error]
-missing_csrf=නරක ඉල්ලීම: CSRF ටà·à¶šà¶±à·Š නොමà·à¶
[startpage]
app_desc=වේදනà·à¶šà·à¶»à·“, ස්වයං-à·ƒà¶à·Šà¶šà·à¶»à¶š Git සේවà·à·€à¶šà·Š
install=ස්ථà·à¶´à¶±à¶ºà¶§ පහසුය
platform=හරස් වේදිකà·à·€
-platform_desc=Gitea ඕනෑම à¶à·à¶±à¶š ධà·à·€à¶±à¶º Go සඳහ෠සම්පà·à¶¯à¶±à¶º කළ à·„à·à¶šà·’ය: වින්ඩà·à·ƒà·Š, මà·à¶šà·à·ƒà·Š, ලිනක්ස්, ARM, ආදිය ඔබ ආදරය කරන එකක් à¶à·à¶»à¶±à·Šà¶±!
lightweight=à·ƒà·à·„à·à¶½à·Šà¶½à·”
lightweight_desc=Gitea අඩු අවම අවà·à·Šà¶ºà¶à· ඇà¶à·’ අà¶à¶» මිල අඩු Raspberry Pi මචධà·à·€à¶±à¶º කළ à·„à·à¶šà·’ය. ඔබේ යන්à¶à·Šà¶» à·à¶šà·Šà¶à·’ය සුරකින්න!
license=විවෘචමූලà·à·à·Šâ€à¶»
@@ -478,12 +476,10 @@ applications=යෙදුම්
orgs=සංවිධà·à¶± කළමනà·à¶šà¶»à¶«à¶º
repos=කà·à·‚්ඨ
delete=ගිණුම මකන්න
-twofa=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º
account_link=සම්බන්ධිචගිණුම්
organization=සංවිධà·à¶±
public_profile=ප්â€à¶»à·ƒà·’ද්ධ පà·à¶à·’කඩ
-password_username_disabled=දේà·à·“ය නොවන පරිà·à·“ලකයින්ට ඔවුන්ගේ පරිà·à·“ලක නà·à¶¸à¶º වෙනස් කිරීමට අවසර නà·à¶. à·€à·à¶©à·’ විස්à¶à¶» සඳහ෠කරුණà·à¶šà¶» ඔබේ වෙබ් අඩවිය පරිපà·à¶½à¶š අමà¶à¶±à·Šà¶±.
full_name=සම්පූර්ණ නම
website=වියමන අඩවිය
location=ස්ථà·à¶±à¶º
@@ -649,21 +645,17 @@ revoke_key=අවලංගු
revoke_oauth2_grant=ප්රවේ෠අවලංගු
revoke_oauth2_grant_description=මෙම à¶à·™à·€à¶± පà·à¶»à·Šà·à·€à·“ය යෙදුම සඳහ෠ප්රවේà·à¶º අවලංගු කිරීමෙන් මෙම යෙදුම ඔබගේ දà¶à·Šà¶ වෙචප්රවේ෠වීම වළක්වනු ඇà¶. ඔබට විà·à·Šà·€à·à·ƒà¶¯?
-twofa_desc=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º ඔබගේ ගිණුමේ ආරක්ෂà·à·€ à·€à·à¶©à·’ කරයි.
twofa_is_enrolled=ඔබගේ ගිණුම දà·à¶±à¶§ à·ƒà·à¶°à¶š දෙකක à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º à¶à·”à·… ලියà·à¶´à¶¯à·’ංචි කර ඇà¶.
twofa_not_enrolled=ඔබගේ ගිණුම දà·à¶±à¶§ à·ƒà·à¶°à¶š දෙකක à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º à¶à·”à·… ලියà·à¶´à¶¯à·’ංචි වී නොමà·à¶.
twofa_disable=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රීය කරන්න
-twofa_scratch_token_regenerate=ළමය ටà·à¶šà¶±à¶º ප්රà¶à·’ජනනය
twofa_enroll=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶± බවට ඇà¶à·”ල්
twofa_disable_note=අවà·à·Šà¶º නම් ඔබට ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රිය කළ à·„à·à¶šà·’ය.
twofa_disable_desc=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රීය කිරීමෙන් ඔබගේ ගිණුම අඩු ආරක්ෂිචවනු ඇà¶. දිගටම?
-regenerate_scratch_token_desc=ඔබ ඔබේ සීරීම් ටà·à¶šà¶±à¶º අස්ථà·à¶±à¶œà¶ කර ඇà¶à·Šà¶±à¶¸à·Š හ෠දà·à¶±à¶§à¶¸à¶à·Š ලියà·à¶´à¶¯à·’ංචි වීමට එය භà·à·€à·’à¶à· කර ඇà¶à·Šà¶±à¶¸à·Š ඔබට එය මෙහි නà·à·€à¶ සකස් කළ à·„à·à¶šà·’ය.
twofa_disabled=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රීය කර ඇà¶.
scan_this_image=ඔබගේ à·ƒà¶à·Šà¶ºà·à¶´à¶± යෙදුම සමඟ මෙම රූපය පරිලà·à¶šà¶±à¶º කරන්න:
or_enter_secret=නà·à¶à·„à·œà¶à·Š රහස ඇà¶à·”ල් කරන්න: %s
then_enter_passcode=යෙදුමේ දà·à¶šà·Šà·€à·™à¶± මුරකේà¶à¶º ඇà¶à·”à·…à¶à·Š කරන්න:
passcode_invalid=මුරකේà¶à¶º à·€à·à¶»à¶¯à·’ය. නà·à·€à¶ උà¶à·Šà·ƒà·à·„ කරන්න.
-twofa_enrolled=ඔබගේ ගිණුම à·ƒà·à¶°à¶š දෙකක à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º බවට පà¶à·Š කර ඇà¶. එක් වරක් පමණක් පෙන්වන පරිදි ඔබේ සීරීම් ටà·à¶šà¶±à¶º (%s) ආරක්ෂිචස්ථà·à¶±à¶ºà¶š ගබඩ෠කරන්න!
twofa_failed_get_secret=රහස්ය වීමට අසමà¶à·Š විය.
@@ -773,7 +765,6 @@ blame_prior=මෙම වෙනසට පෙර දොස් බලන්න
transfer.accept=මà·à¶»à·” කිරීම පිළිගන්න
-transfer.accept_desc=`"%s" වෙචමà·à¶»à·” කරන්න`
desc.private=පෞද්ගලික
desc.public=ප්â€à¶»à·ƒà·’ද්ධ
@@ -871,7 +862,6 @@ release=නිකුà¶à·”à·€
releases=නිකුà¶à·”
tag=ටà·à¶œ
released_this=මෙය නිකුà¶à·Š කරන ලදි
-file.title=%s දී %s
file_raw=අමු
file_history=ඉà¶à·’à·„à·à·ƒà¶º
file_view_source=මූලà·à·à·Šâ€à¶»à¶º දකින්න
@@ -1208,7 +1198,6 @@ issues.dependency.add_error_dep_not_same_repo=මෙම ගà·à¶§à·…à·” දෙ
issues.review.self.approval=ඔබ ඔබේ ම අදින්න ඉල්ලීම අනුමචකළ නොහà·à¶š.
issues.review.self.rejection=ඔබ ඔබේ ම අදින්න ඉල්ලීම මචවෙනස්කම් ඉල්ල෠සිටිය නොහà·à¶š.
issues.review.approve=මෙම වෙනස්කම් අනුමච%s
-issues.review.comment=සමà·à¶½à·à¶ නය %s
issues.review.dismissed=%sà·„à·’ සමà·à¶½à·à¶ නය %sප්රà¶à·’ක්ෂේප කරන ලද
issues.review.dismissed_label=බà·à·„à·à¶»
issues.review.left_comment=අදහසක් à·„à·à¶»à¶œà·’යà·
@@ -1229,6 +1218,7 @@ issues.review.hide_resolved=විසඳ෠සඟවන්න
issues.review.resolve_conversation=සංවà·à¶¯à¶º විසඳන්න
issues.review.un_resolve_conversation=නොවිසඳිය à·„à·à¶šà·’ සංවà·à¶¯à¶º
issues.review.resolved_by=මෙම සංවà·à¶¯à¶º විසඳ෠ඇà¶à·’ පරිදි සලකුණු කර ඇà¶
+issues.review.commented=අදහස
issues.assignee.error=අනපේක්ෂිචදà·à·‚යක් à·„à·šà¶à·”වෙන් සියලුම ඇසිග්නස් එකà¶à·” නොකළේය.
issues.reference_issue.body=à·à¶»à·“රය
issues.content_history.deleted=මක෠දà·à¶¸à·–
@@ -1338,7 +1328,6 @@ milestones.closed=%s වස෠ඇà¶
milestones.no_due_date=නියමිචදිනයක් නà·à¶
milestones.open=විවෘà¶
milestones.close=වසන්න
-milestones.completeness=%d% සම්පූර්ණ කරන ලදි
milestones.create=සන්ධිස්ථà·à¶±à¶ºà¶šà·Š à·ƒà·à¶¯à¶±à·Šà¶±
milestones.title=සිරà·à·ƒà·’ය
milestones.desc=සවිස්à¶à¶»à¶º
@@ -1501,7 +1490,6 @@ settings.pulls_desc=ගබඩà·à·€à¶šà·Š අදින්න ඉල්ලීම
settings.pulls.ignore_whitespace=ගà·à¶§à·”ම් සඳහ෠වයිට්ස්පේස් නොසලක෠හරින්න
settings.pulls.enable_autodetect_manual_merge=ස්වයංක්රීය හඳුනà·à¶œà·à¶±à·“මේ අà¶à·Šà¶´à·œà¶ ඒකà·à¶¶à¶¯à·Šà¶° කිරීම සක්රීය කරන්න (සටහන: සමහර විà·à·šà·‚ අවස්ථ෠වලදී à·€à·à¶»à¶¯à·’ විනිà·à·Šà¶ යන් සිදුවිය à·„à·à¶š)
settings.pulls.default_delete_branch_after_merge=පෙරනිමියෙන් ඒකà·à¶¶à¶¯à·Šà¶° කිරීමෙන් පසු අදින්න ඉල්ලීම à·à·à¶›à·à·€ මකන්න
-settings.projects_desc=ගබඩà·à·€à¶± ව්යà·à¶´à·˜à¶à·’ සක්රීය කරන්න
settings.admin_settings=පරිපà·à¶½à¶š à·ƒà·à¶šà·ƒà·”ම්
settings.admin_enable_health_check=ගබඩà·à·€à¶šà·Š සෞඛ්ය චෙක්පà¶à·Š සක්රීය කරන්න (git fsck)
settings.admin_enable_close_issues_via_commit_in_any_branch=පෙරනිමි නොවන à·à·à¶›à·à·€à¶šà·’න් සිදු කරන ලද කà·à¶´à·€à·“මක් හරහ෠ගà·à¶§à·…ුවක් වසන්න
@@ -1647,7 +1635,6 @@ settings.event_pull_request_review_desc=අදින්න ඉල්ලීම
settings.event_pull_request_sync=සමමුහුර්චඉල්ලීම අදින්න
settings.event_pull_request_sync_desc=සමමුහුර්චඉල්ලීම අදින්න.
settings.branch_filter=à·à·à¶›à· පෙරහන
-settings.branch_filter_desc=ග්ලà·à¶¶à·Š රටà·à·€ ලෙස නිà·à·Šà¶ à·’à¶à·€ දක්ව෠ඇà¶à·’ à¶à¶½à·Šà¶½à·”à·€, à·à·à¶›à· නිර්මà·à¶«à¶º සහ à·à·à¶›à· මකà·à¶¯à·à¶¸à·“මේ සිදුවීම් සඳහ෠à·à·à¶›à· වයිට්ලිස්ට්. හිස් à·„à· *
නම්, සියලු à·à·à¶›à· සඳහ෠සිදුවීම් à·€à·à¶»à·Šà¶à· වේ. සින්ටà·à¶šà·Šà·ƒà·Š සඳහ෠github.com/gobwas/glob ලියකියවිලි බලන්න. උදà·à·„රණ: ස්වà·à¶¸à·’යà·
, {ස්වà·à¶¸à·’යà·, මුදà·à·„à·à¶»à·“ම*}
.
settings.active=ක්රියà·à¶šà·à¶»à·“
settings.active_helper=අවුලුවà·à¶½à·– සිදුවීම් පිළිබඳ à¶à·œà¶»à¶à·”රු මෙම වෙබ්කොක් URL වෙචයවනු ලà·à¶¶à·š.
settings.add_hook_success=මෙම වෙබ් කොක්කෙන් එකà¶à·” කර ඇà¶.
@@ -1676,8 +1663,6 @@ settings.branches=à·à·à¶›à·
settings.protected_branch=à·à·à¶›à· ආරක්ෂà·à·€
settings.protected_branch_can_push=à¶à¶½à·Šà¶½à·”à·€ ඉඩ?
settings.protected_branch_can_push_yes=ඔබට à¶à¶½à·Šà¶½à·” කළ à·„à·à¶šà·’ය
-settings.protected_branch_can_push_no=ඔබට à¶à¶½à·Šà¶½à·” කළ නොහà·à¶š
-settings.branch_protection=à·à·à¶›à·à·€ සඳහ෠à·à·à¶›à· ආරක්ෂà·à·€ -%s
settings.protect_this_branch=à·à·à¶›à· ආරක්ෂà·à·€ සක්රීය කරන්න
settings.protect_this_branch_desc=මකà·à¶¯à·à¶¸à·“ම à·€à·à·…à·à¶šà·Šà·€à·“ම සහ à·à·à¶›à· වෙචà¶à¶½à·Šà¶½à·” කිරීම සහ ඒකà·à¶¶à¶¯à·Šà¶° කිරීම සීම෠කරයි.
settings.protect_disable_push=à¶à¶½à·Šà¶½à·”à·€ අක්රීය
@@ -1685,17 +1670,14 @@ settings.protect_disable_push_desc=මෙම à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·”
settings.protect_enable_push=à¶à¶½à·Šà¶½à·”à·€ සක්රීය කරන්න
settings.protect_enable_push_desc=ලිවීමේ ප්රවේà·à¶º ඇà¶à·’ ඕනෑම කෙනෙකුට මෙම à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කිරීමට ඉඩ දෙනු ඇච(නමුà¶à·Š බල à¶à¶½à·Šà¶½à·”à·€ නොවේ).
settings.protect_check_status_contexts=à¶à¶à·Šà·€à¶º පරීක්â€à·‚à·à·€ සබල කරන්න
-settings.protect_check_status_contexts_desc=ඒකà·à¶¶à¶¯à·Šà¶° කිරීමට පෙර සම්මචකිරීම සඳහ෠à¶à¶à·Šà·€ චෙක්පà¶à·Š අවà·à·Šà¶º වේ. මෙම රීà¶à·’යට ගà·à¶½à¶´à·™à¶± à·à·à¶›à·à·€à¶šà¶§ à·à·à¶›à· ඒකà·à¶¶à¶¯à·Šà¶° කිරීමට පෙර කුමන à¶à¶à·Šà¶à·Šà·€ චෙක්පà¶à·Š සමà¶à·Š විය යුà¶à·”ද යන්න à¶à·à¶»à¶±à·Šà¶±. සක්රීය කරන විට, සංක්රමණ පළමුව වෙනà¶à·Š à·à·à¶›à·à·€à¶šà¶§ à¶à¶½à·Šà¶½à·” කළ යුà¶à·”ය, පසුව à¶à¶à·Šà·€ පරීක්ෂà·à·€à¶±à·Š සම්මචවූ පසු මෙම රීà¶à·’යට ගà·à¶½à¶´à·™à¶± à·à·à¶›à·à·€à¶šà¶§ කෙලින්ම à¶à¶½à·Šà¶½à·” කළ යුà¶à·”ය. සන්දර්භයන් à¶à·à¶»à· නොගන්නේ නම්, සන්දර්භය නොසලක෠අවසà·à¶± කà·à¶´ කිරීම à·ƒà·à¶»à·Šà¶®à¶š විය යුà¶à·”ය.
settings.protect_check_status_contexts_list=මෙම ගබඩà·à·€ සඳහ෠පසුගිය à·ƒà¶à·’යේ හමු වූ à¶à¶à·Šà·€ පරීක්ෂà·à·€à¶±à·Š
settings.protect_required_approvals=අවà·à·Šà¶º අනුමà·à¶à·’ය:
-settings.protect_required_approvals_desc=ප්රමà·à¶«à·€à¶à·Š ධනà·à¶à·Šà¶¸à¶š සමà·à¶½à·à¶ න සමඟ අදින්න ඉල්ලීම ඒකà·à¶¶à¶¯à·Šà¶° කිරීමට පමණක් ඉඩ දෙන්න.
settings.dismiss_stale_approvals=ස්ථà·à·€à¶» අනුමà·à¶à·’ය බà·à·„à·à¶»
settings.dismiss_stale_approvals_desc=අදින්න ඉල්ලීමෙහි අන්à¶à¶»à·Šà¶œà¶à¶º වෙනස් කරන නව විවරයන් à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කරන විට, පà·à¶»à¶«à·’ අනුමචකිරීම් නිෂ්ප්රභ෠කරනු ලà·à¶¶à·š.
settings.require_signed_commits=අà¶à·Šà·ƒà¶±à·Š කළ යුà¶à·”
settings.require_signed_commits_desc=අà¶à·Šà·ƒà¶±à·Š නොකළ à·„à· à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º කළ නොහà·à¶šà·’ නම් මෙම à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කිරීම ප්රà¶à·’ක්ෂේප කරන්න.
settings.add_protected_branch=ආරක්ෂà·à·€ සක්රීය කරන්න
settings.delete_protected_branch=ආරක්ෂà·à·€ අක්â€à¶»à·“ය කරන්න
-settings.protected_branch_deletion=à·à·à¶›à· ආරක්ෂණය අක්රීය කරන්න
settings.protected_branch_deletion_desc=à·à·à¶›à· ආරක්ෂà·à·€ අක්රිය කිරීමෙන් පරිà·à·“ලකයින්ට à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කිරීමට ලිඛිචඅවසරයක් ඇà¶. දිගටම?
settings.block_rejected_reviews=ප්රà¶à·’ක්ෂේප කරන ලද සමà·à¶½à·à¶ න මචඒකà·à¶¶à¶¯à·Šà¶° කිරීම
settings.block_rejected_reviews_desc=නිල විචà·à¶»à¶šà¶ºà·’න් විසින් වෙනස්කම් ඉල්ල෠සිටින විට, ප්රමà·à¶«à·€à¶à·Š අනුමà·à¶à·“න් à¶à·’බුණà¶à·Š ඒකà·à¶¶à¶¯à·Šà¶° කිරීම කළ නොහà·à¶šà·’ වනු ඇà¶.
@@ -1704,7 +1686,6 @@ settings.block_on_official_review_requests_desc=නිල සමà·à¶½à·à¶ න
settings.block_outdated_branch=අදින්න ඉල්ලීම යල් පà·à¶± ගිය නම් à·€à·à¶»à¶« ඒකà·à¶¶à¶¯à·Šà¶°
settings.block_outdated_branch_desc=ප්රධà·à¶± à·à·à¶›à·à·€ මූලික à·à·à¶›à·à·€ පිටුපස ඇà¶à·’ විට ඒකà·à¶¶à¶¯à·Šà¶° කිරීම කළ නොහà·à¶šà·’ වනු ඇà¶.
settings.default_branch_desc=අදින්න ඉල්ලීම් සහ කේචවිවරණය සඳහ෠පෙරනිමි ගබඩà·à·€à·š à·à·à¶›à·à·€à¶šà·Š à¶à·à¶»à¶±à·Šà¶±:
-settings.default_merge_style_desc=අදින්න ඉල්ලීම් සඳහ෠පෙරනිමි ඒකà·à¶¶à¶¯à·Šà¶° à·à·›à¶½à·’ය:
settings.choose_branch=à·à·à¶›à·à·€à¶šà·Š à¶à·à¶»à¶±à·Šà¶±â€¦
settings.no_protected_branch=ආරක්ෂිචà·à·à¶›à· නොමà·à¶.
settings.edit_protected_branch=සංස්කරණය
@@ -1854,7 +1835,7 @@ release.add_tag=ටà·à¶œ පමණක් à·ƒà·à¶¯à¶±à·Šà¶±
branch.name=à·à·à¶›à·à·€à·š නම
branch.delete_head=මකන්න
branch.delete_html=à·à·à¶›à·à·€ මකන්න
-branch.create_branch=%s à·à·à¶›à·à·€ à·ƒà·à¶¯à¶±à·Šà¶±
+branch.create_branch=%s à·à·à¶›à·à·€ à·ƒà·à¶¯à¶±à·Šà¶±
branch.deleted_by=%sවිසින් මක෠දමන ලදි
branch.included_desc=මෙම à·à·à¶›à·à·€ පෙරනිමි à·à·à¶›à·à·€à·š කොටසකි
branch.included=ඇà¶à·”à·…à¶à·Š
@@ -1865,12 +1846,11 @@ branch.create_branch_operation=à·à·à¶›à·à·€ à·ƒà·à¶¯à¶±à·Šà¶±
branch.new_branch=නව à·à·à¶›à·à·€à¶šà·Š à·ƒà·à¶¯à¶±à·Šà¶±
branch.renamed=à·à·à¶›à·à·€ %s %sලෙස නම් කරන ලදී.
-tag.create_tag=ටà·à¶œà¶º නිර්මà·à¶«à¶º %s
+tag.create_tag=ටà·à¶œà¶º නිර්මà·à¶«à¶º %s
topic.manage_topics=මà·à¶à·˜à¶šà· කළමනà·à¶šà¶»à¶«à¶º
topic.done=සිදු
-topic.count_prompt=ඔබට 25 මà·à¶à·˜à¶šà· වලට වඩ෠à¶à·à¶»à· ගචනොහà·à¶š
error.csv.too_large=එය ඉà¶à· විà·à·à¶½ නිස෠මෙම ගොනුව විදà·à·„ුම්කරණය කළ නොහà·à¶š.
@@ -2234,13 +2214,6 @@ auths.tips=ඉඟි
auths.tips.oauth2.general=OUTU2 à·ƒà¶à·Šà¶ºà·à¶´à¶±
auths.tip.oauth2_provider=OUTU2 à·ƒà·à¶´à¶ºà·”ම්කරු
auths.tip.nextcloud=පහචසඳහන් මෙනුව භà·à·€à·’à¶à· කරමින් ඔබගේ උදà·à·„රණයක් මචනව OAUTH පà·à¶»à·’භà·à¶œà·’කයෙකු ලියà·à¶´à¶¯à·’ංචි කරන්න “සà·à¶šà·ƒà·“ම් -> ආරක්ෂà·à·€ -> OAUTH 2.0 සේවà·à¶¯à·à¶ºà¶šà¶ºà·â€
-auths.tip.dropbox=https://www.dropbox.com/developers/apps à·„à·’ නව යෙදුමක් à·ƒà·à¶¯à¶±à·Šà¶±
-auths.tip.facebook=https://developers.facebook.com/apps à·„à·’ නව යෙදුමක් ලියà·à¶´à¶¯à·’ංචි කර නිෂ්පà·à¶¯à¶±à¶º එකà¶à·” කරන්න “ෆේස්බුක් ලොගින් වන්නâ€
-auths.tip.github=https://github.com/settings/applications/new à·„à·’ නව OAUTH අයදුම්පà¶à¶šà·Š ලියà·à¶´à¶¯à·’ංචි කරන්න
-auths.tip.google_plus=ගූගල් API කොන්සà·à¶½à¶º වෙà¶à·’න් OUT2 සේවà·à¶¯à·à¶ºà¶š අක්à¶à¶´à¶à·Šà¶» ලබ෠ගන්න https://console.developers.google.com/
-auths.tip.twitter=https://dev.twitter.com/apps වෙචයන්න, යෙදුමක් à·ƒà·à¶¯à¶±à·Šà¶± සහ “මෙම යෙදුම ට්විටර් සමඟ පුරනය වීමට භà·à·€à·’à¶à· කිරීමට ඉඩ දෙන්න†විකල්පය සක්රීය කර ඇà¶à·’ බවට සහà¶à·’ක වන්න
-auths.tip.discord=https://discordapp.com/developers/applications/me à·„à·’ නව අයදුම්පà¶à¶šà·Š ලියà·à¶´à¶¯à·’ංචි කරන්න
-auths.tip.yandex=https://oauth.yandex.com/client/new à·„à·’ නව යෙදුමක් à·ƒà·à¶¯à¶±à·Šà¶±. “Yandex.Passport API†කොටසේ පහචසඳහන් අවසරයන් à¶à·à¶»à¶±à·Šà¶±: “විද්යුà¶à·Š à¶à·à¶´à·à¶½à·Š ලිපිනය වෙචප්රවේà·à¶ºâ€, “පරිà·à·“ලක අවà¶à·à¶»à·Š වෙචප්රවේà·à¶ºâ€ සහ “පරිà·à·“ලක නà·à¶¸à¶º, මුල් නම සහ à·€à·à·ƒà¶œà¶¸, ස්à¶à·Šà¶»à·“ පුරුෂ භà·à·€à¶ºâ€
auths.tip.mastodon=ඔබට à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º කිරීමට අවà·à·Šà¶º mastodon උදà·à·„රණයක් සඳහ෠අභිරුචි උදà·à·„රණයක් URL එකක් ආදà·à¶± කරන්න (හ෠පෙරනිමි එකක් භà·à·€à·’à¶à· කරන්න)
auths.edit=à·ƒà¶à·Šà¶ºà·à¶´à¶± මූලà·à·à·Šà¶»à¶º සංස්කරණය කරන්න
auths.activated=මෙම à·ƒà¶à·Šà¶ºà·à¶´à¶± මූලà·à·à·Šà¶»à¶º සක්රිය කර ඇà¶
@@ -2387,8 +2360,6 @@ monitor.desc=සවිස්à¶à¶»à¶º
monitor.start=ආරම්භක වේලà·à·€
monitor.execute_time=ක්රියà·à¶à·Šà¶¸à¶š කිරීමේ වේලà·à·€
monitor.process.cancel=ක්රියà·à·€à¶½à·’ය අවලංගු කරන්න
-monitor.process.cancel_desc=ක්රියà·à·€à¶½à·’යක් අවලංගු කිරීම දà¶à·Šà¶ අහිමි වීමට à·„à·šà¶à·” විය à·„à·à¶š
-monitor.process.cancel_notices=%s: අවලංගු කරන්නද?
monitor.queues=පà·à¶½à·’ම්
monitor.queue=පà·à¶½à·’ම: %s
diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini
index 3b9c02c7c87e2..a964b526afa16 100644
--- a/options/locale/locale_sk-SK.ini
+++ b/options/locale/locale_sk-SK.ini
@@ -181,22 +181,16 @@ string.desc=Z - A
[error]
occurred=Vyskytla sa chyba
-report_message=Ak si myslÃte, že ide o chybu Gitea, vyhľadajte problémy na GitHub-e alebo v prÃpade potreby otvorte nový problém.
-missing_csrf=Nesprávna žiadosÅ¥: neprÃtomný CSFR token
-invalid_csrf=Nesprávna žiadosť: nesprávny CSFR token
not_found=Nebolo možné nájsť cieľ.
network_error=Chyba siete
[startpage]
app_desc=Jednoducho prÃstupný vlastný Git
install=Jednoduchá inštalácia
-install_desc=Jednoducho spustite binárku pre vaÅ¡u platformu, poÅ¡lite ju ako Docker, alebo ju zÃskajte ako balÃÄek.
platform=Multiplatformový
-platform_desc=Gitea bežà všade kde je možné preložiť Go: Windows, macOS, Linux, ARM, a podobne. Vyberte si!
lightweight=Ľahká
lightweight_desc=Gitea má minimálne požiadavky a môže bežať na Raspberry Pi. Šetrite energiou vášho stroja!
license=Otvorený zdrojový kód
-license_desc=ZÃskajte code.gitea.io/gitea! Pridajte sa k nám a prispejte, aby bol tento projekt eÅ¡te lepÅ¡Ã. Nehanbite sa byÅ¥ prispievateľom!
[install]
install=Inštalácia
@@ -585,13 +579,10 @@ applications=Aplikácie
orgs=Spravovať organizácie
repos=Repozitáre
delete=ZmazaÅ¥ úÄet
-twofa=Dvojfaktorové overenie
account_link=Prepojené úÄty
organization=Organizácie
-webauthn=BezpeÄnostné kľúÄe
public_profile=Verejný profil
-password_username_disabled=Externà použÃvatelia nemôžu meniÅ¥ svoje použÃvateľské meno. Kontaktujte, prosÃm, svojho administrátora kvôli detailom.
full_name=Celé meno
website=Webová stránka
location=Miesto
@@ -775,24 +766,19 @@ revoke_key=Odvolať
revoke_oauth2_grant=OdstrániÅ¥ prÃstup
revoke_oauth2_grant_description=ZruÅ¡enie prÃstupu tejto aplikáciu tretej strany zabráni tejto aplikácii v prÃstupe k vaÅ¡im údajom. Ste si istý?
-twofa_desc=Dvojstupňové overenie pridá ÄalÅ¡iu vrstvu bezpeÄnosti k vášmu úÄtu.
twofa_is_enrolled=Váš úÄet je momentálne použÃva dvojfaktorovú autentifikáciu.
twofa_not_enrolled=Váš úÄet momentálne nepoužÃva dvojfaktorovú autentifikáciu.
twofa_disable=Vypnúť dvojfaktorovú autentifikáciu
-twofa_scratch_token_regenerate=Obnoviť token
twofa_enroll=Povoliť dvojfaktorové overovanie
twofa_disable_note=V prÃpade potreby môžete zakázaÅ¥ dvojfaktorové overenie.
twofa_disable_desc=VypnutÃm dvojfaktorovej autentifikácie bude váš úÄet menej bezpeÄný. ÄŽalej?
-regenerate_scratch_token_desc=Ak ste svoj token nesprávne umiestnili alebo ste ho už použili na prihlásenie, môžete ho resetovať tu.
twofa_disabled=Dvojfaktorové overovanie bolo vypnuté.
scan_this_image=Naskenujte tento obrázok pomocou overovacej aplikácie:
or_enter_secret=Alebo zadajte tajný kód: %s
then_enter_passcode=A zadajte prÃstupový kód zobrazený v aplikácii:
passcode_invalid=PrÃstupový kód je nesprávny. Skúste to znova.
-twofa_enrolled=Váš úÄet bol zaregistrovaný do dvojfaktorovej autentifikácie. Uložte si token (%s) na bezpeÄnom mieste, pretože sa zobrazuje iba raz!
twofa_failed_get_secret=Nepodarilo sa zÃskaÅ¥ tajomstvo.
-webauthn_desc=BezpeÄnostné kľúÄe sú hardvérové ​​zariadenia obsahujúce kryptografické kľúÄe. Môžu byÅ¥ použité na dvojfaktorovú autentifikáciu. BezpeÄnostné kľúÄe musia podporovaÅ¥ Å¡tandard WebAuthn Authenticator.
webauthn_register_key=PridaÅ¥ bezpeÄnostný kľúÄ
webauthn_nickname=Prezývka
webauthn_delete_key=OdstrániÅ¥ bezpeÄnostný kľúÄ
@@ -894,9 +880,7 @@ delete_preexisting_success=Vymazané neprijaté súbory v %s
transfer.accept=Prijať prevod
-transfer.accept_desc=`Previesť do "%s"`
transfer.reject=Odmietnuť prevod
-transfer.reject_desc=`Zrušiť prevod do "%s"`
desc.private=Súkromný
desc.public=Verejný
@@ -1089,7 +1073,6 @@ issues.save=Uložiť
issues.cancel_tracking=Zahodiť
issues.add_time_cancel=Zrušiť
issues.dependency.cancel=Zrušiť
-issues.review.comment=revidoval %s
issues.review.dismissed=zamietol revÃziu od %s %s
issues.review.wait=bol požiadaný o revidovanie %s
issues.review.add_review_request=požiadal o revidovanie od %s %s
@@ -1200,7 +1183,6 @@ settings.delete_webhook=Odstrániť webhook
settings.slack_token=Token
settings.web_hook_name_gitea=Gitea
settings.packagist_api_token=API token
-settings.protect_required_approvals_desc=UmožniÅ¥ merge iba žiadostiam o natiahnutie s dostatoÄným poÄtom pozitÃvnych revÃziÃ.
settings.require_signed_commits=VyžadovaÅ¥ podpÃsané commity
settings.block_rejected_reviews=ZablokovaÅ¥ zlúÄenie pri zamietavých revÃziách
settings.block_rejected_reviews_desc=ZlúÄenie nebude možné v prÃpade že oficiálni revidenti požadujú zmeny, aj keÄ je k dispozÃcii dostatok schválenÃ.
diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini
index 11f5ed79fbf79..2993828c22fd2 100644
--- a/options/locale/locale_sv-SE.ini
+++ b/options/locale/locale_sv-SE.ini
@@ -113,11 +113,9 @@ filter.private=Privat
app_desc=En smidig, självhostad Git-tjänst
install=Lätt att installera
platform=Plattformsoberoende
-platform_desc=Gitea kan köra överallt där Go kan kompileras: Windows, macOS, Linux, ARM, etc. Välj den du gillar!
lightweight=Lättviktig
lightweight_desc=Gitea har låga minimum-krav och kan köras på en billig Rasperry Pi. Spara på din maskins kraft!
license=Öppen källkod
-license_desc=Hämta code.gitea.io/gitea! Gå med oss genom att bidra för att göra projektet ännu bättre. Var inte blyg för att bli en medarbetare!
[install]
install=Installation
@@ -416,12 +414,10 @@ applications=Applikationer
orgs=Hantera Organisationer
repos=Utvecklingskataloger
delete=Radera konto
-twofa=Tvåfaktorsautentisering
account_link=Länkade Konton
organization=Organisationer
public_profile=Offentlig profil
-password_username_disabled=Externa användare kan inte ändra sitt användarnamn. Kontakta din webbadministratör för mera information.
full_name=Fullständigt namn
website=Webbplats
location=Plats
@@ -560,21 +556,17 @@ revoke_key=Upphäv
revoke_oauth2_grant=Upphäv åtkomst
revoke_oauth2_grant_description=Återkallning av åtkomst för detta tredjepartsprogram kommer att hindra programmet från att komma åt dina data. Är du säker?
-twofa_desc=Tvåfaktorsautentisering förbättrar säkerheten på ditt konto.
twofa_is_enrolled=Ditt konto är för närvarande uppsäkrad med tvåfaktorsautentisering.
twofa_not_enrolled=Ditt konto är för närvarande inte uppsäkrad med tvåfaktorsautentisering.
twofa_disable=Inaktivera tvåfaktorsautentisering
-twofa_scratch_token_regenerate=Generera ny skrapkod
twofa_enroll=Aktivera tvåfaktorsautentisering
twofa_disable_note=Du kan inaktivera tvåfaktorsautentisering om det behövs.
twofa_disable_desc=Avaktivering av tvåfaktorsautentisering kommer göra ditt konto mindre säkert. Vill du fortsätta?
-regenerate_scratch_token_desc=Om du tappat bort din skrapkod, eller redan använt den för att logga in, så kan du återställa den här.
twofa_disabled=Tvåfaktorsautentisering har blivit avaktiverat.
scan_this_image=Skanna denna bild med ditt autentiseringsprogram:
or_enter_secret=Eller skriv in följande sträng: %s
then_enter_passcode=Och ange den lösenkod som visas i programmet:
passcode_invalid=Koden är ogiltig. Försök igen.
-twofa_enrolled=Tvåfaktorsautentisering har aktiverats för ditt konto. Förvara din skrapkod (%s) på en säker plats eftersom den bara visas en gång!
manage_account_links=Hantera Länkade Konton
@@ -1046,7 +1038,6 @@ issues.dependency.add_error_dep_not_same_repo=Båda ärendena måste vara i samm
issues.review.self.approval=Du kan inte godkänna din egen pull-begäran.
issues.review.self.rejection=Du kan inte begära ändringar för din egna pull-förfrågan.
issues.review.approve=godkände dessa ändringar %s
-issues.review.comment=granskad av %s
issues.review.left_comment=lämnade en kommentar
issues.review.content.empty=Du måste skriva en kommentar som anger de önskade ändringarna.
issues.review.reject=begärda ändringar %s
@@ -1063,6 +1054,7 @@ issues.review.show_resolved=Visa löst
issues.review.hide_resolved=Dölj löst
issues.review.resolve_conversation=Lös konversation
issues.review.resolved_by=markerade denna konversation som löst
+issues.review.commented=Kommentar
issues.assignee.error=Inte alla tilldelade har lagts till på grund av ett oväntat fel.
issues.content_history.options=Alternativ
@@ -1118,7 +1110,6 @@ milestones.closed=Stängt %s
milestones.no_due_date=Inget förfallodatum
milestones.open=Öppna
milestones.close=Stäng
-milestones.completeness=%d%% Slutförd
milestones.create=Skapa Milstolpe
milestones.title=Titel
milestones.desc=Beskrivning
@@ -1383,22 +1374,18 @@ settings.branches=Brancher
settings.protected_branch=Branchskydd
settings.protected_branch_can_push=Tillåt push?
settings.protected_branch_can_push_yes=Du kan pusha
-settings.protected_branch_can_push_no=Du kan inte pusha
-settings.branch_protection=Branchskydd för '%s'
settings.protect_this_branch=Aktivera branchskydd
settings.protect_disable_push=Inaktivera Push
settings.protect_disable_push_desc=Inga push-förfrågningar kommer att tillåtas till denna branch.
settings.protect_enable_push=Aktivera Push
settings.protect_enable_push_desc=Alla med skrivrättigheter kommer att kunna pusha till denna branch (men inte force-pusha).
settings.protect_check_status_contexts=Aktivera statuskontroller
-settings.protect_check_status_contexts_desc=Kräv godkända statuskontroller innan merge. Välj vilka statuskontroller som godkännas innan grenar kan slås samman till en gren som matchar denna regel. När aktiverad, måste committer först pushas till en annan gren, sedan mergas eller pushas direkt till en gren som matchar denna regel efter statuskontroll har har godkännts. Om inga context väljs måste den sista committen vara framgångsrik oavsett context.
settings.protect_check_status_contexts_list=Statuskontroller funna under senaste veckan för denna utvecklingskatalog
settings.protect_required_approvals=Godkännanden som krävs:
settings.require_signed_commits=Kräv signerade commits
settings.require_signed_commits_desc=Avvisa pushar till den här grenen om dom är osignerade eller inte verifierbara.
settings.add_protected_branch=Aktivera skydd
settings.delete_protected_branch=Inaktivera skydd
-settings.protected_branch_deletion=Inaktivera skydd för branch
settings.protected_branch_deletion_desc=Genom att inaktivera branchskyddet tillåts användare med skrivrättigheter att pusha till branchen. Vill du fortsätta?
settings.default_branch_desc=Välj en standard branch för Pull Requests och Code Commits:
settings.choose_branch=Välj en branch…
@@ -1501,14 +1488,13 @@ release.download_count=Nedladdningar: %s
branch.name=Branch namn
branch.delete_head=Radera
branch.delete_html=Radera branch
-branch.create_branch=Skapa branchen %s
+branch.create_branch=Skapa branchen %s
branch.deleted_by=Raderad av %s
topic.manage_topics=Hantera ämnen
topic.done=Klar
-topic.count_prompt=Du kan inte välja fler än 25 ämnen
@@ -1551,7 +1537,6 @@ settings.visibility.private=Privat (synlig endast för organisationens medlemmar
settings.visibility.private_shortname=Privat
settings.update_settings=Uppdatera inställningar
-settings.update_setting_success=Organisationsinställningarna har uppdaterats.
settings.update_avatar_success=Organisationens avatar har uppdateras.
settings.delete=Tag bort organisation
settings.delete_account=Tag bort denna organisation
@@ -1785,12 +1770,6 @@ auths.enable_auto_register=Aktivera Automatisk Registrering
auths.tips=Tips
auths.tips.oauth2.general=OAuth2 Autensiering
auths.tip.oauth2_provider=OAuth2 leverantör
-auths.tip.dropbox=Skapa en ny applikation på https://www.dropbox.com/developers/apps
-auths.tip.facebook=Registrera en ny appliaktion pÃ¥ https://developers.facebook.com/apps och lägg till produkten â€Facebook-inloggningâ€
-auths.tip.github=Registrera en ny OAuth applikation på https://github.com/settings/applications/new
-auths.tip.google_plus=Erhåll inloggningsuppgifter för OAuth2 från Google API-konsolen på https://console.developers.google.com/
-auths.tip.twitter=Gå till https://dev.twitter.com/app, skapa en applikation och försäkra att alternativet "Allow this application to be used to Sign in with Twitter" är aktiverat
-auths.tip.discord=Registrera en ny applikation på https://discordapp.com/developers/applications/me
auths.edit=Redigera autensieringskälla
auths.activated=Denna autentiseringskälla är aktiverad
auths.update_success=Autentiseringskällan har uppdaterats.
@@ -1978,7 +1957,6 @@ raw_minutes=minuter
[dropzone]
default_message=Släpp filer här eller klicka för att ladda upp.
-invalid_input_type=Du kan inte ladda upp filer av denna typen.
file_too_big=Filstorleken ({{filesize}} MB) överskrider maxstorleken ({{maxFilesize}} MB).
remove_file=Ta bort fil
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index 0d15ac7f4372c..3c719f84bafc8 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -218,22 +218,16 @@ string.desc=Z - A
[error]
occurred=Bir hata oluÅŸtu
-report_message=Bunun bir Gitea hatası olduğunu düşünüyorsanız, lütfen GitHub sayfasında sorunu arayın veya gerekiyorsa yeni bir sorun oluşturun.
-missing_csrf=Hatalı İstek: CSRF anahtarı yok
-invalid_csrf=Hatalı İstek: geçersiz CSRF erişim anahtarı
not_found=Hedef bulunamadı.
network_error=Ağ hatası
[startpage]
app_desc=Zahmetsiz, kendi sunucunuzda barındırabileceğiniz Git servisi
install=Kurulumu kolay
-install_desc=Platformunuz için ikili dosyayı çalıştırın, Docker ile yükleyin veya paket olarak edinin.
platform=Farklı platformlarda çalışablir
-platform_desc=Gitea Go ile derleme yapılabilecek her yerde çalışmaktadır: Windows, macOS, Linux, ARM, vb. Hangisini seviyorsanız onu seçin!
lightweight=Hafif
lightweight_desc=Gitea'nın minimal gereksinimleri çok düşüktür ve ucuz bir Raspberry Pi üzerinde çalışabilmektedir. Makine enerjinizden tasarruf edin!
license=Açık Kaynak
-license_desc=Gidin ve code.gitea.io/gitea'yı edinin! Bu projeyi daha da iyi yapmak için katkıda bulunarak bize katılın. Katkıda bulunmaktan çekinmeyin!
[install]
install=Kurulum
@@ -456,7 +450,6 @@ authorize_title=Hesabınıza erişmesi için "%s" yetkilendirilsin mi?
authorization_failed=Yetkilendirme başarısız oldu
authorization_failed_desc=Geçersiz bir istek tespit ettiğimiz için yetkilendirme başarısız oldu. Lütfen izin vermeye çalıştığınız uygulamanın sağlayıcısı ile iletişim kurun.
sspi_auth_failed=SSPI kimlik doğrulaması başarısız oldu
-password_pwned=Seçtiğiniz parola, daha önce herkese açık veri ihlallerinde açığa çıkan bir çalınan parola listesindedir. Lütfen farklı bir parola ile tekrar deneyin ve başka yerlerde de bu parolayı değiştirmeyi düşünün.
password_pwned_err=HaveIBeenPwned'e yapılan istek tamamlanamadı
last_admin=Son yöneticiyi silemezsiniz. En azından bir yönetici olmalıdır.
signin_passkey=Bir parola anahtarı ile oturum aç
@@ -693,17 +686,14 @@ applications=Uygulamalar
orgs=Organizasyonları Yönet
repos=Depolar
delete=Hesabı Sil
-twofa=İki Aşamalı Doğrulama
account_link=Bağlı Hesaplar
organization=Organizasyonlar
uid=UID
-webauthn=Güvenlik Anahtarları
public_profile=Herkese Açık Profil
biography_placeholder=Bize kendiniz hakkında birşeyler söyleyin! (Markdown kullanabilirsiniz)
location_placeholder=Yaklaşık konumunuzu başkalarıyla paylaşın
profile_desc=Profilinizin başkalarına nasıl gösterildiğini yönetin. Ana e-posta adresiniz bildirimler, parola kurtarma ve web tabanlı Git işlemleri için kullanılacaktır.
-password_username_disabled=Yerel olmayan kullanıcılara kullanıcı adlarını değiştirme izni verilmemiştir. Daha fazla bilgi edinmek için lütfen site yöneticisi ile iletişime geçiniz.
full_name=Ad Soyad
website=Web Sitesi
location=Konum
@@ -795,7 +785,6 @@ add_email_success=Yeni e-posta adresi eklendi.
email_preference_set_success=E-posta tercihi başarıyla ayarlandı.
add_openid_success=Yeni OpenID adresi eklendi.
keep_email_private=E-posta Adresini Gizle
-keep_email_private_popup=Bu, e-posta adresinizi profilde, değişiklik isteği yaptığınızda veya web arayüzünde dosya düzenlediğinizde gizleyecektir. İtilen işlemeler değişmeyecektir.
openid_desc=OpenID, kimlik doğrulama işlemini harici bir sağlayıcıya devretmenize olanak sağlar.
manage_ssh_keys=SSH Anahtarlarını Yönet
@@ -925,7 +914,6 @@ oauth2_client_secret_hint=Bu sayfadan ayrıldıktan veya yeniledikten sonra gizl
oauth2_application_edit=Düzenle
oauth2_application_create_description=OAuth2 uygulamaları, üçüncü taraf uygulamanıza bu durumda kullanıcı hesaplarına erişim sağlar.
oauth2_application_remove_description=Bir OAuth2 uygulamasının kaldırılması, bu sunucudaki yetkili kullanıcı hesaplarına erişmesini önler. Devam edilsin mi?
-oauth2_application_locked=Gitea kimi OAuth2 uygulamalarının başlangıçta ön kaydını, yapılandırmada etkinleştirilmişse yapabilir. Beklenmeyen davranışı önlemek için bunlar ne düzenlenmeli ne de kaldırılmalı. Daha fazla bilgi için OAuth2 belgesine bakın.
authorized_oauth2_applications=Yetkili OAuth2 Uygulamaları
authorized_oauth2_applications_description=Kişisel Gitea hesabınıza bu üçüncü parti uygulamalara erişim izni verdiniz. Lütfen artık ihtiyaç duyulmayan uygulamalara erişimi iptal edin.
@@ -934,26 +922,20 @@ revoke_oauth2_grant=EriÅŸimi Ä°ptal Et
revoke_oauth2_grant_description=Bu üçüncü taraf uygulamasına erişimin iptal edilmesi bu uygulamanın verilerinize erişmesini önleyecektir. Emin misiniz?
revoke_oauth2_grant_success=Erişim başarıyla kaldırıldı.
-twofa_desc=İki faktörlü kimlik doğrulama, hesabınızın güvenliğini artırır.
twofa_recovery_tip=Aygıtınızı kaybetmeniz durumunda, hesabınıza tekrar erişmek için tek kullanımlık kurtarma anahtarını kullanabileceksiniz.
twofa_is_enrolled=Hesabınız şu anda iki faktörlü kimlik doğrulaması içinde kaydedilmiş.
twofa_not_enrolled=Hesabınız şu anda iki faktörlü kimlik doğrulaması içinde kaydedilmemiş.
twofa_disable=İki Aşamalı Doğrulamayı Devre Dışı Bırak
-twofa_scratch_token_regenerate=Geçici Kodu Yeniden Üret
-twofa_scratch_token_regenerated=Geçici kodunuz şimdi %s. Güvenli bir yerde saklayın, tekrar gösterilmeyecektir.
twofa_enroll=İki Faktörlü Kimlik Doğrulamaya Kaydolun
twofa_disable_note=Gerekirse iki faktörlü kimlik doğrulamayı devre dışı bırakabilirsiniz.
twofa_disable_desc=İki faktörlü kimlik doğrulamayı devre dışı bırakmak hesabınızı daha az güvenli hale getirir. Devam edilsin mi?
-regenerate_scratch_token_desc=Geçici kodunuzu kaybettiyseniz veya oturum açmak için kullandıysanız, buradan sıfırlayabilirsiniz.
twofa_disabled=İki faktörlü kimlik doğrulama devre dışı bırakıldı.
scan_this_image=Kim doğrulama uygulamanızla bu görüntüyü tarayın:
or_enter_secret=Veya gizli ÅŸeyi girin: %s
then_enter_passcode=Ve uygulamada gösterilen şifreyi girin:
passcode_invalid=Şifre geçersiz. Tekrar deneyin.
-twofa_enrolled=Hesabınız iki faktörlü kimlik doğrulamasına kaydedildi. Kazıma belirtecini (%s) yalnızca bir kez gösterdiği gibi güvenli bir yerde saklayın!
twofa_failed_get_secret=Gizlilik elde edilemedi.
-webauthn_desc=Güvenlik anahtarları, şifreleme anahtarlarını içeren donanım aygıtlarıdır. İki aşamalı kimlik doğrulama için kullanılabilirler. Güvenlik anahtarları WebAuthn Authenticator standardını desteklemelidir.
webauthn_register_key=Güvenlik Anahtarı Ekle
webauthn_nickname=Takma Ad
webauthn_delete_key=Güvenlik Anahtarını Kaldır
@@ -1098,9 +1080,7 @@ tree_path_not_found_branch=%[1] yolu, %[2]s dalında mevcut değil
tree_path_not_found_tag=%[1] yolu, %[2]s etiketinde mevcut deÄŸil
transfer.accept=Aktarımı Kabul Et
-transfer.accept_desc=`"%s" tarafına aktar`
transfer.reject=Aktarımı Reddet
-transfer.reject_desc=`"%s" tarafına aktarımı iptal et`
transfer.no_permission_to_accept=Bu aktarımı kabul etme izniniz yok.
transfer.no_permission_to_reject=Bu aktarımı reddetme izniniz yok.
@@ -1235,7 +1215,6 @@ releases=Sürüm
tag=Etiket
released_this=bu sürümü yayınladı
tagged_this=ÅŸunu etiketledi
-file.title=%s dalındaki/etiketindeki %s
file_raw=Ham
file_history=Geçmiş
file_view_source=Kaynağı Görüntüle
@@ -1252,7 +1231,6 @@ ambiguous_runes_header=`Bu dosya muğlak Evrensel Kodlu karakter içeriyor`
ambiguous_runes_description=`Bu dosya, başka karakterlerle karıştırılabilecek evrensel kodlu karakter içeriyor. Eğer bunu kasıtlı olarak yaptıysanız bu uyarıyı yok sayabilirsiniz. Gizli karakterleri göstermek için Kaçış Karakterli düğmesine tıklayın.`
invisible_runes_line=`Bu satırda görünmez evrensel kodlu karakter var`
ambiguous_runes_line=`Bu satırda muğlak evrensel kodlu karakter var`
-ambiguous_character=`%[1]c [U+%04[1]X], %[2]c [U+%04[2]X] ile karıştırılabilir`
escape_control_characters=Kaçış Karakterli
unescape_control_characters=Kaçış Karaktersiz
@@ -1723,7 +1701,6 @@ issues.dependency.add_error_dep_not_same_repo=Her iki konu da aynı depoda olmal
issues.review.self.approval=Kendi değişiklik isteğinizi onaylayamazsınız.
issues.review.self.rejection=Kendi deÄŸiÅŸiklik isteÄŸinizde deÄŸiÅŸiklik isteyemezsiniz.
issues.review.approve=%s bu değişiklikleri onayladı
-issues.review.comment=%s incelendi
issues.review.dismissed=%s incelemesini %s reddetti
issues.review.dismissed_label=Reddedildi
issues.review.left_comment=bir yorum yaptı
@@ -1748,6 +1725,7 @@ issues.review.hide_resolved=Çözülenleri gizle
issues.review.resolve_conversation=Konuşmayı çöz
issues.review.un_resolve_conversation=Konuşmayı çözme
issues.review.resolved_by=bu konuşmayı çözümlenmiş olarak işaretledi
+issues.review.commented=Yorum Yap
issues.assignee.error=Beklenmeyen bir hata nedeniyle tüm atananlar eklenmedi.
issues.reference_issue.body=Gövde
issues.content_history.deleted=silindi
@@ -1821,7 +1799,6 @@ pulls.is_empty=Bu daldaki deÄŸiÅŸiklikler zaten hedef dalda mevcut. Bu boÅŸ bir
pulls.required_status_check_failed=Bazı gerekli denetimler başarılı olmadı.
pulls.required_status_check_missing=Gerekli bazı kontroller eksik.
pulls.required_status_check_administrator=Yönetici olarak, bu değişiklik isteğini yine de birleştirebilirsiniz.
-pulls.blocked_by_approvals=Bu değişiklik isteğinin henüz yeterli onayı yok. %d onay var, %d onay gerekiyor.
pulls.blocked_by_rejection=Bu değişiklik isteğinde resmi bir gözden geçiren tarafından istenen değişiklikler var.
pulls.blocked_by_official_review_requests=Bu deÄŸiÅŸiklik isteÄŸinde resmi inceleme istekleri var.
pulls.blocked_by_outdated_branch=Bu değişiklik isteği eskidiği için engellendi.
@@ -1863,9 +1840,7 @@ pulls.unrelated_histories=Birleştirme Başarısız: Birleştirme başlığı ve
pulls.merge_out_of_date=Birleştirme Başarısız: Birleştirme oluşturulurken, taban güncellendi. İpucu: Tekrar deneyin.
pulls.head_out_of_date=Birleştirme Başarısız: Birleştirme oluşturulurken, ana güncellendi. İpucu: Tekrar deneyin.
pulls.has_merged=Başarısız: Değişiklik isteği birleştirildi, yeniden birleştiremez veya hedef dalı değiştiremezsiniz.
-pulls.push_rejected=Birleştirme Başarısız Oldu: Gönderme reddedildi. Bu depo için Git İstemcilerini inceleyin.
pulls.push_rejected_summary=Tam Red Mesajı
-pulls.push_rejected_no_message=Birleştirme başarısız oldu: Gönderme reddedildi, ancak uzak bir mesaj yoktu.
Bu depo için Git İstemcilerini inceleyin
pulls.open_unmerged_pull_exists=`Aynı özelliklere sahip bekleyen bir değişiklik isteği (#%d) olduğundan yeniden açma işlemini gerçekleştiremezsiniz.`
pulls.status_checking=Bazı denetlemeler beklemede
pulls.status_checks_success=Tüm denetlemeler başarılı oldu
@@ -1920,7 +1895,6 @@ milestones.no_due_date=BitiÅŸ tarihi yok
milestones.open=Aç
milestones.close=Kapat
milestones.new_subheader=Kilometre taşları konuları yönetmenize ve gelişmelerini takip etmenize yardımcı olur.
-milestones.completeness=%d%% Tamamlandı
milestones.create=Kilometre Taşı Oluştur
milestones.title=Başlık
milestones.desc=Açıklama
@@ -2143,7 +2117,6 @@ settings.pulls.default_delete_branch_after_merge=Varsayılan olarak birleştirme
settings.pulls.default_allow_edits_from_maintainers=Bakımcıların düzenlemelerine izin ver
settings.releases_desc=Depo Sürümlerini Etkinleştir
settings.packages_desc=Depo Paket Kütüğünü Etkinleştir
-settings.projects_desc=Depo Projelerini EtkinleÅŸtir
settings.projects_mode_desc=Proje Modu (ne tür projeler görüntülensin)
settings.projects_mode_repo=Sadece depo projeleri
settings.projects_mode_owner=Sadece kullanıcı veya organizasyon projeleri
@@ -2319,7 +2292,6 @@ settings.event_pull_request_merge=DeÄŸiÅŸiklik Ä°steÄŸi BirleÅŸtirme
settings.event_package=Paket
settings.event_package_desc=Bir depoda paket oluÅŸturuldu veya silindi.
settings.branch_filter=Dal filtresi
-settings.branch_filter_desc=Gönderme, dal oluşturma ve dal silme olayları için glob deseni olarak belirtilen dal beyaz listesi. Boşsa veya *
ise, tüm dallar için olaylar raporlanır. Sözdizimi için github.com/gobwas/glob belgelerine bakın. Örnekler: master
, {master,release*}
.
settings.authorization_header=Yetkilendirme Başlığı
settings.authorization_header_desc=Mevcutsa isteklere yetkilendirme başlığı olarak eklenecektir. Örnekler: %s.
settings.active=Etkin
@@ -2368,10 +2340,6 @@ settings.branches=Dallar
settings.protected_branch=Dal Koruması
settings.protected_branch.save_rule=Kuralı Kaydet
settings.protected_branch.delete_rule=Kural sil
-settings.protected_branch_can_push=Ä°tmeye izin verilsin mi?
-settings.protected_branch_can_push_yes=Ä°tebilirsiniz
-settings.protected_branch_can_push_no=Ä°temezsiniz
-settings.branch_protection=%s dalı için Dal Koruması
settings.protect_this_branch=Dal Korumayı Etkinleştir
settings.protect_this_branch_desc=Silmeyi önler ve dala Git gönderimini ve birleştirmesini kısıtlar.
settings.protect_disable_push=İtmeyi Devre Dışı Bırak
@@ -2401,13 +2369,11 @@ settings.protect_merge_whitelist_teams=Birleştirme için izin listesindeki tak
settings.protect_check_status_contexts=Durum Denetimini EtkinleÅŸtir
settings.protect_status_check_patterns=Durum denetleme desenleri:
settings.protect_status_check_patterns_desc=Bu kurala uyan dala diğer dallar birleştirilmeden önce başarılı olması gereken durum denetlemelerini belirten desenleri girin. Her bir satır bir desen tanımlıyor. Desenler boş olamaz.
-settings.protect_check_status_contexts_desc=Birleştirmeden önce durum denetimlerinin geçmesini zorunlu kılın. Dalların bu kurala uyan bir dalda birleştirilebilmesi için hangi durum denetimlerinin geçmesi gerektiğini seçin. Etkinleştirildiğinde, işlemeler önce başka bir dala gönderilmeli, ardından durum denetimleri geçtikten sonra bu kuralla eşleşen bir dala birleştirilmeli veya doğrudan gönderilmelidir. Hiçbir bağlam seçilmezse, bağlamdan bağımsız olarak son işleme başarılı olmalıdır.
settings.protect_check_status_contexts_list=Bu depo için geçen haftadaki durum denetimleri
settings.protect_status_check_matched=EÅŸleÅŸen
settings.protect_invalid_status_check_pattern=Hatalı durum denetleme deseni: "%s".
settings.protect_no_valid_status_check_patterns=Geçerli durum denetleme deseni yok.
settings.protect_required_approvals=Gerekli onaylar:
-settings.protect_required_approvals_desc=Değişiklik isteğini yalnızca yeterince olumlu yorumla birleştirmeye izin ver.
settings.protect_approvals_whitelist_enabled=Onayları izin listesine giren kullanıcılar veya takımlar için kısıtla
settings.protect_approvals_whitelist_enabled_desc=Yalnızca izin listesindeki kullanıcıların veya takımların gözden geçirmeleri gerekli onaylar için dikkate alınır. Onaylı izin listesi olmadan, yazma erişimi olan herkesin gözden geçirmeleri gerekli onaylar için dikkate alınır.
settings.protect_approvals_whitelist_users=İzin listesindeki gözden geçirenler:
@@ -2419,18 +2385,12 @@ settings.ignore_stale_approvals_desc=Daha eski iÅŸlemelere (eski incelemelere) y
settings.require_signed_commits=İmzalı İşleme Gerekli
settings.require_signed_commits_desc=Reddetme, onlar imzasızsa veya doğrulanamazsa bu dala gönderir.
settings.protect_branch_name_pattern=Korunmuş Dal Adı Deseni
-settings.protect_branch_name_pattern_desc=Korunmuş dal isim desenleri. Desen sözdizimi için belgelere bakabilirsiniz. Örnekler: main, release/**
settings.protect_patterns=Desenler
settings.protect_protected_file_patterns=Korumalı dosya kalıpları (noktalı virgülle ayrılmış ';'):
-settings.protect_protected_file_patterns_desc=Kullanıcının bu dalda dosya ekleme, düzenleme veya silme hakları olsa bile doğrudan değiştirilmesine izin verilmeyen korumalı dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen sözdizimi için github.com/gobwas/glob belgelerine bakın. Örnekler: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Korunmasız dosya desenleri (noktalı virgülle ayrılmış ';'):
-settings.protect_unprotected_file_patterns_desc=Kullanıcının yazma erişimi, itme kısıtlamasını atlama hakkı olduğunda doğrudan değiştirmesine izin verilen korunmasız dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen söz dizimi için github.com/gobwas/glob belgelerine bakın. Örnekler: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Korumayı etkinleştir
-settings.delete_protected_branch=Korumayı devre dışı bırak
settings.update_protect_branch_success=Dal koruma kuralı "%s" güncellendi.
settings.remove_protected_branch_success=Dal koruma kuralı "%s" kaldırıldı.
settings.remove_protected_branch_failed=Dal koruma kuralı "%s" kaldırılamadı.
-settings.protected_branch_deletion=Dal Korumasını Devre Dışı Bırak
settings.protected_branch_deletion_desc=Dal korumasını devre dışı bırakmak, kullanıcıların dalı itmek için yazma izni olmasını sağlar. Devam edilsin mi?
settings.block_rejected_reviews=Reddedilen incelemelerde birleÅŸtirmeyi engelle
settings.block_rejected_reviews_desc=Yeterli onay olsa bile resmi gözden geçirenler tarafından değişiklik istendiğinde birleşme mümkün olmayacaktır.
@@ -2440,7 +2400,6 @@ settings.block_outdated_branch=Değişiklik isteği güncel değilse birleştirm
settings.block_outdated_branch_desc=Baş dal taban dalın arkasındayken birleştirme mümkün olmayacaktır.
settings.default_branch_desc=Değişiklik istekleri ve kod işlemeleri için varsayılan bir depo dalı seçin:
settings.merge_style_desc=Biçimleri Birleştir
-settings.default_merge_style_desc=Değişiklik istekleri için varsayılan birleştirme tarzı:
settings.choose_branch=Bir dal seç…
settings.no_protected_branch=Korumalı dal yok.
settings.edit_protected_branch=Düzenle
@@ -2456,7 +2415,6 @@ settings.tags.protection.allowed.teams=İzin verilen takımlar
settings.tags.protection.allowed.noone=Hiç kimse
settings.tags.protection.create=Etiketi Koru
settings.tags.protection.none=Korumalı etiket yok.
-settings.tags.protection.pattern.description=Birden çok etiketi eşleştirmek için tek bir ad, glob deseni veya normal ifade kullanabilirsiniz. Daha fazlası için korumalı etiketler rehberini okuyun.
settings.bot_token=Bot Jetonu
settings.chat_id=Sohbet KimliÄŸi
settings.thread_id=İş Parçacığı ID
@@ -2624,7 +2582,7 @@ branch.delete_desc=Bir dalı silmek kalıcıdır. Her ne kadar silinen dal tamam
branch.deletion_success=`"%s" dalı silindi.`
branch.deletion_failed=`"%s" dalı silinemedi.`
branch.delete_branch_has_new_commits=`"%s" dalı silinemedi çünkü birleştirme sonrasında yeni işlemeler eklendi.`
-branch.create_branch=%s dalı oluştur
+branch.create_branch=%s dalı oluştur
branch.create_from=`"%s"den`
branch.create_success=`"%s" dalı oluşturuldu.`
branch.branch_already_exists=Bu depoda "%s" dalı zaten var.
@@ -2650,7 +2608,7 @@ branch.new_branch=Yeni dal oluÅŸtur
branch.new_branch_from=`"%s" dalından yeni dal oluştur`
branch.renamed=%s dalının adı %s olarak değiştirildi.
-tag.create_tag=%s etiketi oluÅŸtur
+tag.create_tag=%s etiketi oluÅŸtur
tag.create_tag_operation=Etiket oluÅŸtur
tag.confirm_create_tag=Etiket oluÅŸtur
tag.create_tag_from=`"%s" kullanarak yeni etiket oluÅŸtur`
@@ -2659,7 +2617,6 @@ tag.create_success=`"%s" etiketi oluÅŸturuldu.`
topic.manage_topics=Konuları Yönet
topic.done=Bitti
-topic.count_prompt=25'ten fazla konu seçemezsiniz
topic.format_prompt=Konular bir harf veya rakamla başlamalı, kısa çizgi ('-') ve nokta ('.') içerebilir ve en fazla 35 karakter uzunluğunda olabilir. Harfler küçük harf olmalıdır.
find_file.go_to_file=Dosyaya git
@@ -2757,7 +2714,6 @@ teams.leave.detail=%s bırakılsın mı?
teams.can_create_org_repo=Depoları oluştur
teams.can_create_org_repo_helper=Üyeler organizasyonda yeni depolar oluşturabilirler. Oluşturan yeni depoya yönetici erişimi sağlayacak.
teams.none_access=EriÅŸim Yok
-teams.none_access_helper=Üyeler bu birimi görüntüleyemez veya üzerinde başka bir işlem yapamaz.
teams.general_access=Genel EriÅŸim
teams.general_access_helper=Üyelerin izinleri aşağıdaki izin tablosuna göre kararlaştırılacaktır.
teams.read_access=Okuma
@@ -2826,7 +2782,6 @@ last_page=Son
total=Toplam: %d
settings=Yönetici Ayarları
-dashboard.new_version_hint=Gitea %s şimdi hazır, %s çalıştırıyorsunuz. Ayrıntılar için blog'a bakabilirsiniz.
dashboard.statistic=Özet
dashboard.maintenance_operations=Bakım İşlemleri
dashboard.system_status=Sistem Durumu
@@ -3018,12 +2973,10 @@ packages.size=Boyut
packages.published=Yayınlandı
defaulthooks=Varsayılan Web İstemcileri
-defaulthooks.desc=Web İstemcileri, belirli Gitea olayları tetiklendiğinde otomatik olarak HTTP POST isteklerini sunucuya yapar. Burada tanımlanan Web İstemcileri varsayılandır ve tüm yeni depolara kopyalanır. web istemcileri kılavuzunda daha fazla bilgi edinin.
defaulthooks.add_webhook=Varsayılan Web İstemcisi Ekle
defaulthooks.update_webhook=Varsayılan Web İstemcisini Güncelle
systemhooks=Sistem Web Ä°stemcileri
-systemhooks.desc=Belirli Gitea olayları tetiklendiğinde Web istemcileri otomatik olarak bir sunucuya HTTP POST istekleri yapar. Burada tanımlanan web istemcileri sistemdeki tüm depolar üzerinde çalışır, bu yüzden lütfen bunun olabilecek tüm performans sonuçlarını göz önünde bulundurun. web istemcileri kılavuzunda daha fazla bilgi edinin.
systemhooks.add_webhook=Sistem Web Ä°stemcisi Ekle
systemhooks.update_webhook=Sistem Web İstemcisi Güncelle
@@ -3118,18 +3071,8 @@ auths.tips=İpuçları
auths.tips.oauth2.general=OAuth2 Kimlik DoÄŸrulama
auths.tips.oauth2.general.tip=Yeni bir OAuth2 kimlik doğrulama kaydederken, geri çağırma/yönlendirme URL'si şu olmalıdır:
auths.tip.oauth2_provider=OAuth2 Sağlayıcısı
-auths.tip.bitbucket=https://bitbucket.org/account/user/{your-username}/oauth-consumers/new sayfasında yeni bir OAuth tüketicisi kaydedin ve 'Hesap' - 'Oku' iznini ekleyin
auths.tip.nextcloud=Aşağıdaki "Ayarlar -> Güvenlik -> OAuth 2.0 istemcisi" menüsünü kullanarak örneğinize yeni bir OAuth tüketicisi kaydedin
-auths.tip.dropbox=https://www.dropbox.com/developers/apps adresinde yeni bir uygulama oluÅŸtur
-auths.tip.facebook=https://developers.facebook.com/apps adresinde yeni bir uygulama kaydedin ve "Facebook Giriş" ürününü ekleyin
-auths.tip.github=https://github.com/settings/applications/new adresinde yeni bir OAuth uygulaması kaydedin
-auths.tip.gitlab_new=https://gitlab.com/-/profile/applications adresinde yeni bir uygulama kaydedin
-auths.tip.google_plus=OAuth2 istemci kimlik bilgilerini https://console.developers.google.com/ adresindeki Google API konsolundan edinin
auths.tip.openid_connect=Bitiş noktalarını belirlemek için OpenID Connect Discovery URL'sini (https://{server}/.well-known/openid-configuration) kullanın
-auths.tip.twitter=https://dev.twitter.com/apps adresine gidin, bir uygulama oluşturun ve “Bu uygulamanın Twitter ile oturum açmak için kullanılmasına izin ver†seçeneğinin etkin olduğundan emin olun
-auths.tip.discord=https://discordapp.com/developers/applications/me adresinde yeni bir uygulama kaydedin
-auths.tip.gitea=Yeni bir OAuth2 uygulaması kaydedin. Rehber https://docs.gitea.com/development/oauth2-provider adresinde bulunabilir
-auths.tip.yandex=`https://oauth.yandex.com/client/new adresinde yeni bir uygulama oluşturun. "Yandex.Passport API'sı" bölümünden aşağıdaki izinleri seçin: "E-posta adresine erişim", "Kullanıcı avatarına erişim" ve "Kullanıcı adına, ad ve soyadına, cinsiyete erişim"`
auths.tip.mastodon=Kimlik doğrulaması yapmak istediğiniz mastodon örneği için özel bir örnek URL girin (veya varsayılan olanı kullanın)
auths.edit=Kimlik Doğrulama Kaynağı Düzenle
auths.activated=Bu Kimlik Doğrulama Kaynağı Etkinleştirildi
@@ -3295,7 +3238,6 @@ monitor.next=Sonraki Zaman
monitor.previous=Önceki Zaman
monitor.execute_times=Çalıştırma
monitor.process=Çalışan Süreçler
-monitor.stacktrace=Yığın izleme
monitor.processes_count=%d Ä°ÅŸlem
monitor.download_diagnosis_report=Tanı raporunu indir
monitor.desc=Açıklama
@@ -3303,8 +3245,6 @@ monitor.start=Başlangıç Zamanı
monitor.execute_time=Çalıştırma Zamanı
monitor.last_execution_result=Sonuç
monitor.process.cancel=Ä°ÅŸlemi iptal et
-monitor.process.cancel_desc=Bir işlemi iptal etmek veri kaybına neden olabilir
-monitor.process.cancel_notices=Ä°ptal et: %s?
monitor.process.children=Çocuklar
monitor.queues=Kuyruklar
@@ -3406,7 +3346,6 @@ raw_minutes=dakikalar
[dropzone]
default_message=Dosyaları buraya bırakın veya yüklemek için tıklayın.
-invalid_input_type=Bu tür dosyaları yükleyemezsiniz.
file_too_big=Dosya boyutu ({{filesize}} MB) maksimum boyutu ({{maxFilesize}} MB) aşıyor.
remove_file=Dosya Kaldır
diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini
index cb3c140c5cfc2..d94d11207b489 100644
--- a/options/locale/locale_uk-UA.ini
+++ b/options/locale/locale_uk-UA.ini
@@ -120,18 +120,15 @@ filter.private=Приватний
[error]
occurred=СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°
-missing_csrf=Ðекоректний запит: токен CSRF не задано
network_error=Помилка мережі
[startpage]
app_desc=Зручний влаÑний ÑÐµÑ€Ð²Ñ–Ñ Ñ…Ð¾Ñтингу репозиторіїв Git
install=Легко вÑтановити
platform=ПлатформонезалежніÑÑ‚ÑŒ
-platform_desc=Gitea виконуєтьÑÑ Ð½Ð° платформі, Ð´Ð»Ñ Ñкої можливо Ñкомпілювати Go: Windows, macOS, Linux, ARM, та інших. Оберіть ту, Ñка вам до вподоби!
lightweight=ÐевибагливіÑÑ‚ÑŒ
lightweight_desc=Gitea має низькі вимоги до реÑурÑів та може працювати на недорогому Raspberry Pi. Збережіть Ñвою машину енергію!
license=Відкритий вихідний код
-license_desc=Відвідайте code.gitea.io/gitea! ПриєднайтеÑÑŒ до Ð½Ð°Ñ Ñ‚Ð° зробіть Ñвій внеÑок до проєкту, щоб зробити його ще краще. Ðе бійтеÑÑ Ð´Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ÑÑ!
[install]
install=Ð’ÑтановленнÑ
@@ -493,12 +490,10 @@ applications=Додатки
orgs=ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñми
repos=Репозиторії
delete=Видалити обліковий запиÑ
-twofa=Двофакторна авторизаціÑ
account_link=Прив'Ñзані облікові запиÑи
organization=Організації
public_profile=ЗагальнодоÑтупний профіль
-password_username_disabled=Ðелокальним кориÑтувачам заборонено змінювати ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача. Щоб отримати докладнішу інформацію, зв'ÑжітьÑÑ Ð· адмініÑтратором Ñайту.
full_name=Повне ім'Ñ
website=Веб-Ñайт
location=МіÑцезнаходженнÑ
@@ -669,21 +664,17 @@ revoke_key=Відкликати
revoke_oauth2_grant=СкаÑувати доÑтуп
revoke_oauth2_grant_description=СкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупу Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— програми третьої Ñторони не дозволить їй отримувати доÑтуп до ваших даних. Ви впевнені?
-twofa_desc=Двофакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÑƒÑ” безпеку вашого облікового запиÑу.
twofa_is_enrolled=Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° даний Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовує двофакторну автентифікацію.
twofa_not_enrolled=Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð½Ð°Ñ€Ð°Ð·Ñ– не викориÑтовує двофакторну автентифікаціїю.
twofa_disable=Вимкнути двофакторну автентифікацію
-twofa_scratch_token_regenerate=ПереÑтворити токен одноразового паролÑ
twofa_enroll=Увімкнути двофакторну автентифікацію
twofa_disable_note=При необхідноÑÑ‚Ñ– можна відключити двофакторну автентифікацію.
twofa_disable_desc=Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð´Ð²Ð¾Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ñ— автентифікації зробить ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð¼ÐµÐ½Ñˆ безпечним. Продовжити?
-regenerate_scratch_token_desc=Якщо ви втратили Ñвій токен одноразового Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð°Ð±Ð¾ вже викориÑтовували його Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ, ви можете Ñкинути його тут.
twofa_disabled=Двофакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð°.
scan_this_image=ПроÑкануйте це Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð°ÑˆÐ¸Ð¼ додатком Ð´Ð»Ñ Ð´Ð²ÑƒÑ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ñ— автентифікації:
or_enter_secret=Ðбо введіть Ñекрет: %s
then_enter_passcode=І введіть пароль, Ñкий відображаєтьÑÑ Ð² додатку:
passcode_invalid=Ðекоректний пароль. Спробуй ще раз.
-twofa_enrolled=Ð”Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ облікового запиÑу було включена двофакторна автентифікаціÑ. Зберігайте Ñвій scratch-токен (%s) у безпечному міÑці, оÑкільки він показуєтьÑÑ Ð»Ð¸ÑˆÐµ один раз!
twofa_failed_get_secret=Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñекрет.
@@ -793,9 +784,7 @@ blame_prior=ПереглÑнути анотацію, що передує цій
transfer.accept=Дозволити транÑфер
-transfer.accept_desc=`ПереміÑтити до "%s"`
transfer.reject=Відхилити транÑфер
-transfer.reject_desc=`СкаÑувати Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð¾ "%s"`
desc.private=Приватний
desc.public=Публічний
@@ -907,7 +896,6 @@ release=Реліз
releases=Релізи
tag=Тег
released_this=випущені релізи
-file.title=%s в %s
file_raw=Ðеформатований
file_history=ІÑторіÑ
file_view_source=ПереглÑнути вихідний код
@@ -1255,7 +1243,6 @@ issues.dependency.add_error_dep_not_same_repo=Обидві задачі пови
issues.review.self.approval=Ви не можете Ñхвалити влаÑний пулл-реквеÑÑ‚.
issues.review.self.rejection=Ви не можете надіÑлати запит на зміну на влаÑний пулл-реквеÑÑ‚.
issues.review.approve=зміни затверджено %s
-issues.review.comment=рецензовано %s
issues.review.dismissed=відхилено відгук %s %s
issues.review.dismissed_label=Відхилено
issues.review.left_comment=додав коментар
@@ -1276,6 +1263,7 @@ issues.review.hide_resolved=Приховати вирішене
issues.review.resolve_conversation=Завершити обговореннÑ
issues.review.un_resolve_conversation=Поновити обговореннÑ
issues.review.resolved_by=позначив Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ð¼
+issues.review.commented=Коментар
issues.assignee.error=Додано не вÑÑ–Ñ… виконавців через непередбачену помилку.
issues.reference_issue.body=Тіло
issues.content_history.deleted=видалено
@@ -1385,7 +1373,6 @@ milestones.closed=Закрито %s
milestones.no_due_date=Ðемає дати завершеннÑ
milestones.open=Відкрити
milestones.close=Закрити
-milestones.completeness=%d%% завершено
milestones.create=Створити етап
milestones.title=Заголовок
milestones.desc=ОпиÑ
@@ -1549,7 +1536,6 @@ settings.pulls_desc=Увімкнути запити на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð² реп
settings.pulls.ignore_whitespace=Ігнорувати пробіл у конфліктах
settings.pulls.enable_autodetect_manual_merge=Увімкнути Ð°Ð²Ñ‚Ð¾Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÑƒÑ‡Ð½Ð¾Ð³Ð¾ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ (Примітка: у деÑких оÑобливий випадках можуть виникнуть помилки)
settings.pulls.default_delete_branch_after_merge=ВидалÑти гілку запиту злиттÑ, коли його прийнÑто
-settings.projects_desc=Увімкнути проєкти у репозиторії
settings.admin_settings=ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора
settings.admin_enable_health_check=Включити перевірки працездатноÑÑ‚Ñ– репозиторію (git fsck)
settings.admin_enable_close_issues_via_commit_in_any_branch=Закрити задачу за допомогою коміта, зробленого не в головній гілці
@@ -1695,7 +1681,6 @@ settings.event_pull_request_review_desc=Коментар запиту до зл
settings.event_pull_request_sync=Запит на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ ÑинхронізуєтьÑÑ
settings.event_pull_request_sync_desc=Запит до Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ñинхронізовано.
settings.branch_filter=Фільтр гілок
-settings.branch_filter_desc=Білий ÑпиÑок повідомлень Ð´Ð»Ñ push, ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ñ–Ð»Ð¾Ðº та Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð³Ñ–Ð»Ð¾Ðº, визначаєтьÑÑ Ñк glob шаблон. Якщо він пуÑтий або міÑтить *
, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ñ–ÑÑ–Ñ… гілок ввімкнені. ДівітьÑÑ github.com/gobwas/glob документацію на ÑинтакÑиÑ. Ðаприклад: master
, {master,release*}
.
settings.active=Ðктивний
settings.active_helper=Інформацію про викликані події буде надіÑлано за цією веб-хук URL-адреÑою.
settings.add_hook_success=Веб-хук було додано.
@@ -1724,8 +1709,6 @@ settings.branches=Гілки
settings.protected_branch=ЗахиÑÑ‚ гілки
settings.protected_branch_can_push=Дозволити push?
settings.protected_branch_can_push_yes=Ви можете виконувати push
-settings.protected_branch_can_push_no=Ви не можете виконувати push
-settings.branch_protection=ЗахиÑÑ‚ гілки %s
settings.protect_this_branch=ЗахиÑтити цю гілку
settings.protect_this_branch_desc=Запобігає видаленню гілки та обмежує Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð² ній push та злиттÑ.
settings.protect_disable_push=Заборонити Push
@@ -1733,17 +1716,14 @@ settings.protect_disable_push_desc=Ð”Ð»Ñ Ñ†Ñ–Ñ”Ñ— гілки буде забо
settings.protect_enable_push=Дозволити Push
settings.protect_enable_push_desc=Будь-хто із правом запиÑу зможе виконувати push Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— гілки (за виключеннÑм force push).
settings.protect_check_status_contexts=Увімкнути перевірку Ñтану
-settings.protect_check_status_contexts_desc=Вимагати уÑпішного Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¾Ðº Ñтану перед злиттÑм. Оберіть перевірки Ñтану, Ñкі Ñлід провеÑти Ð´Ð»Ñ Ð³Ñ–Ð»Ð¾Ðº, перед Ñ—Ñ… об'єднаннÑм з гілкою, що відповідає цьому правилу. Коли цей пункт увімкнено, коміти Ñпершу надÑилаютьÑÑ Ð´Ð¾ іншої гілки, а потім зливаютьÑÑ Ð°Ð±Ð¾ надÑилаютьÑÑ Ð±ÐµÐ·Ð¿Ð¾Ñередньо до гілки, Ñка відповідає цьому правилу піÑÐ»Ñ ÑƒÑпішного Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¾Ðº Ñтану. Якщо не вибрано контекÑÑ‚, оÑтанній коміт має уÑпішно проходити перевірки, незалежно від контекÑту.
settings.protect_check_status_contexts_list=Перевірки ÑтатуÑу знайдено Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð°Ñ€Ñ–ÑŽ за минулий тиждень
settings.protect_required_approvals=Ðеобхідно ÑхваленнÑ:
-settings.protect_required_approvals_desc=Дозволити об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð»Ð¸ÑˆÐµ із доÑтатньою кількіÑÑ‚ÑŽ позитивних рецензій.
settings.dismiss_stale_approvals=Відхилити заÑтарілі погодженнÑ
settings.dismiss_stale_approvals_desc=Коли нові коміти що змінюють вміÑÑ‚ пулл-запиту відправлÑÑŽÑ‚ÑŒÑÑ Ð² гілку, Ñтарі Ð¿Ð¾Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ відхилені.
settings.require_signed_commits=Потрібно підпиÑані коміти
settings.require_signed_commits_desc=ВідхилÑти push до цієї гілки, Ñкщо вони не підпиÑані або Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ перевірити.
settings.add_protected_branch=Увімкнути захиÑÑ‚
settings.delete_protected_branch=Вимкнути захиÑÑ‚
-settings.protected_branch_deletion=Відключити захиÑÑ‚ гілки
settings.protected_branch_deletion_desc=Будь-Ñкий кориÑтувач з дозволами на Ð·Ð°Ð¿Ð¸Ñ Ð·Ð¼Ð¾Ð¶Ðµ виконувати push в цю гілку. Ви впевнені?
settings.block_rejected_reviews=Блокувати Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¸ відкидаючих рецензіÑÑ…
settings.block_rejected_reviews_desc=Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð±ÑƒÐ´Ðµ недоÑтупним, Ñкщо Ñ” запит змін від офіційних рецензентів, навіть за наÑвноÑÑ‚Ñ– доÑтатньої кількоÑÑ‚Ñ– Ñхвалень.
@@ -1752,7 +1732,6 @@ settings.block_on_official_review_requests_desc=ÐžÐ±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶
settings.block_outdated_branch=Блокувати злиттÑ, Ñкщо запит на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð·Ð°Ñтарів
settings.block_outdated_branch_desc=Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð±ÑƒÐ´Ðµ неможливим, коли головна гілка позаду оÑновної.
settings.default_branch_desc=Головна гілка Ñ” 'базовою' Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ репозиторіÑ, на Ñку за замовчуваннÑм ÑпрÑмовані вÑÑ– запити на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ñ– Ñка Ñ” обличчÑм вашого репозиторіÑ. Перше, що побачить відвідувач - це зміÑÑ‚ головної гілки. Виберіть Ñ—Ñ— з уже Ñ–Ñнуючих:
-settings.default_merge_style_desc=Стиль Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð·Ð° замовчуваннÑм:
settings.choose_branch=Оберіть гілку…
settings.no_protected_branch=Ðемає захищених гілок.
settings.edit_protected_branch=Редагувати
@@ -1904,7 +1883,7 @@ release.add_tag=Створити тільки мітку
branch.name=Ім'Ñ Ð³Ñ–Ð»ÐºÐ¸
branch.delete_head=Видалити
branch.delete_html=Видалити гілку
-branch.create_branch=Створити гілку %s
+branch.create_branch=Створити гілку %s
branch.deleted_by=Видалено %s
branch.included_desc=Ð¦Ñ Ð³Ñ–Ð»ÐºÐ° Ñ” чаÑтиною типової гілки
branch.included=Включено
@@ -1915,12 +1894,11 @@ branch.create_branch_operation=Створити гілку
branch.new_branch=Створити нову гілку
branch.renamed=Гілку %s перейменовано на %s.
-tag.create_tag=Створити тег %s
+tag.create_tag=Створити тег %s
topic.manage_topics=Керувати тематичними мітками
topic.done=Готово
-topic.count_prompt=Ви не можете вибрати більше 25 тем
error.csv.too_large=Ðе вдаєтьÑÑ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ‚Ð¸ цей файл, тому що він завеликий.
@@ -2284,13 +2262,6 @@ auths.tips=Поради
auths.tips.oauth2.general=OAuth2 автентифікаціÑ
auths.tip.oauth2_provider=ПоÑтачальник OAuth2
auths.tip.nextcloud=`ЗареєÑтруйте нового Ñпоживача OAuth у вашому екземплÑрі за допомогою наÑтупного меню "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ -> Безпека -> клієнт OAuth 2.0"`
-auths.tip.dropbox=Додайте новий додаток на https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Створіть новий додаток на https://developers.facebook.com/apps і додайте модуль "Facebook Login"`
-auths.tip.github=Додайте OAuth додаток на https://github.com/settings/applications/new
-auths.tip.google_plus=Отримайте облікові дані клієнта OAuth2 в конÑолі Google API на Ñторінці https://console.developers.google.com/
-auths.tip.twitter=Перейдіть на https://dev.twitter.com/apps, Ñтворіть програму Ñ– переконайтеÑÑ, що включена Ð¾Ð¿Ñ†Ñ–Ñ Â«Ð”Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ‚Ð¸ цю програму Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ в ÑиÑтему за допомогою Twitter»
-auths.tip.discord=ЗареєÑтруйте новий додаток на https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Створіть нову програму в https://oauth.yandex.com/client/new. Виберіть наÑтупні дозволи з "Yandex. assport API": "ДоÑтуп до адреÑи електронної пошти", "ДоÑтуп до аватара" Ñ– "ДоÑтуп до імені кориÑтувача, імені та прізвища, Ñтаті"`
auths.tip.mastodon=Введіть URL Ñпеціального екземплÑра Ð´Ð»Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñра mastodon, Ñкий ви хочете автентифікувати за допомогою (або викориÑтовувати за замовчуваннÑм)
auths.edit=Редагувати джерело автентифікації
auths.activated=Ð¦Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¾Ð²Ð°Ð½Ð°
@@ -2438,8 +2409,6 @@ monitor.desc=ОпиÑ
monitor.start=Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ
monitor.execute_time=Ð§Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ
monitor.process.cancel=Зупинити процеÑ
-monitor.process.cancel_desc=Зупинка процеÑу може призвеÑти до втрати даних
-monitor.process.cancel_notices=Зупинити: %s?
monitor.process.children=Дочірні процеÑи
monitor.queues=Черги
@@ -2524,7 +2493,6 @@ raw_minutes=хвилини
[dropzone]
default_message=ПеретÑгніть файли або натиÑніть тут, щоб завантажити.
-invalid_input_type=Ви не можете завантажувати файли цього типу.
file_too_big=Розмір файлу ({{filesize}} MB), що більше ніж макÑимальний розмір: ({{maxFilesize}} MB).
remove_file=Видалити файл
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 3a6dadf9f8630..3be7b044e9038 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -206,7 +206,7 @@ buttons.list.unordered.tooltip=æ·»åŠ å¾…åŠžæ¸…å•
buttons.list.ordered.tooltip=æ·»åŠ ç¼–å·åˆ—表
buttons.list.task.tooltip=æ·»åŠ ä»»åŠ¡åˆ—è¡¨
buttons.mention.tooltip=æåŠç”¨æˆ·æˆ–团队
-buttons.ref.tooltip=引用一个问题或拉å–请求
+buttons.ref.tooltip=引用一个问题或åˆå¹¶è¯·æ±‚
buttons.switch_to_legacy.tooltip=使用旧版编辑器
buttons.enable_monospace_font=å¯ç”¨ç‰å®½å—体
buttons.disable_monospace_font=ç¦ç”¨ç‰å®½å—体
@@ -217,22 +217,16 @@ string.desc=Z - A
[error]
occurred=å‘生了一个错误
-report_message=如果您确定这是一个 Gitea bug,请在 GitHub 上æœç´¢é—®é¢˜ï¼Œæˆ–在必è¦æ—¶åˆ›å»ºä¸€ä¸ªæ–°å·¥å•ã€‚
-missing_csrf=错误的请求:没有 CSRF 令牌
-invalid_csrf=é”™è¯¯çš„è¯·æ±‚ï¼šæ— æ•ˆçš„ CSRF 令牌
not_found=找ä¸åˆ°ç›®æ ‡ã€‚
network_error=网络错误
[startpage]
app_desc=一款æžæ˜“æ建的自助 Git æœåŠ¡
install=易安装
-install_desc=通过 二进制 æ¥è¿è¡Œï¼›æˆ–者通过 docker æ¥è¿è¡Œï¼›æˆ–者通过 安装包 æ¥è¿è¡Œ
platform=跨平å°
-platform_desc=任何 Go è¯è¨€ 支æŒçš„å¹³å°éƒ½å¯ä»¥è¿è¡Œ Gitea,包括 Windowsã€Macã€Linux ä»¥åŠ ARM。挑一个您喜欢的就行ï¼
lightweight=è½»é‡çº§
lightweight_desc=ä¸€ä¸ªå»‰ä»·çš„æ ‘èŽ“æ´¾çš„é…置足以满足 Gitea 的最低系统硬件è¦æ±‚。最大程度上节çœæ‚¨çš„æœåŠ¡å™¨èµ„æºï¼
license=å¼€æºåŒ–
-license_desc=所有的代ç 都开æºåœ¨ GitHub ä¸Šï¼Œèµ¶å¿«åŠ å…¥æˆ‘ä»¬æ¥å…±åŒå‘展这个伟大的项目ï¼è¿˜ç‰ä»€ä¹ˆï¼Ÿæˆä¸ºè´¡çŒ®è€…å§ï¼
[install]
install=安装页é¢
@@ -451,7 +445,6 @@ authorize_title=æŽˆæƒ %s 访问您的å¸æˆ·ï¼Ÿ
authorization_failed=授æƒå¤±è´¥
authorization_failed_desc=å› ä¸ºæ£€æµ‹åˆ°æ— æ•ˆè¯·æ±‚ï¼ŒæŽˆæƒå¤±è´¥ã€‚请å°è¯•è”系您授æƒåº”用的管ç†å‘˜ã€‚
sspi_auth_failed=SSPI 认è¯å¤±è´¥
-password_pwned=æ¤å¯†ç 出现在 被盗密ç 列表上并且曾ç»è¢«å…¬å¼€ã€‚ 请使用å¦ä¸€ä¸ªå¯†ç å†è¯•ä¸€æ¬¡ã€‚
password_pwned_err=æ— æ³•å®Œæˆå¯¹ HaveIBeenPwned 的请求
last_admin=您ä¸èƒ½åˆ 除最åŽä¸€ä¸ªç®¡ç†å‘˜ã€‚必须至少ä¿ç•™ä¸€ä¸ªç®¡ç†å‘˜ã€‚
@@ -685,17 +678,14 @@ applications=应用
orgs=管ç†ç»„织
repos=仓库列表
delete=åˆ é™¤å¸æˆ·
-twofa=两æ¥éªŒè¯
account_link=已绑定å¸æˆ·
organization=组织
uid=UID
-webauthn=安全密钥
public_profile=公开信æ¯
biography_placeholder=å‘Šè¯‰æˆ‘ä»¬ä¸€ç‚¹æ‚¨è‡ªå·±ï¼ (您å¯ä»¥ä½¿ç”¨Markdown)
location_placeholder=ä¸Žä»–äººåˆ†äº«ä½ çš„å¤§æ¦‚ä½ç½®
profile_desc=控制您的个人资料对其他用户的显示方å¼ã€‚您的主è¦ç”µå邮件地å€å°†ç”¨äºŽé€šçŸ¥ã€å¯†ç æ¢å¤å’ŒåŸºäºŽç½‘页界é¢çš„ Git æ“作
-password_username_disabled=ä¸å…许éžæœ¬åœ°ç”¨æˆ·æ›´æ”¹ä»–们的用户å。更多详情请è”系您的系统管ç†å‘˜ã€‚
full_name=自定义å称
website=个人网站
location=所在地区
@@ -787,7 +777,6 @@ add_email_success=新的电å邮件地å€å·²æ·»åŠ 。
email_preference_set_success=电å邮件首选项已æˆåŠŸè®¾ç½®ã€‚
add_openid_success=æ–°çš„ OpenID 地å€å·²æ·»åŠ 。
keep_email_private=éšè—电å邮件地å€
-keep_email_private_popup=这将会éšè—您的电å邮件地å€ï¼Œä¸ä»…在您的个人资料ä¸ï¼Œè¿˜åœ¨æ‚¨ä½¿ç”¨Webç•Œé¢åˆ›å»ºæ‹‰å–请求或编辑文件时。已推é€çš„æ交将ä¸ä¼šè¢«ä¿®æ”¹ã€‚
openid_desc=OpenID è®©ä½ å¯ä»¥å°†è®¤è¯è½¬å‘到外部æœåŠ¡ã€‚
manage_ssh_keys=ç®¡ç† SSH 密钥
@@ -916,7 +905,6 @@ oauth2_client_secret_hint=您离开或刷新æ¤é¡µé¢åŽå°†ä¸ä¼šå†æ˜¾ç¤ºæ¤å¯†
oauth2_application_edit=编辑
oauth2_application_create_description=OAuth2 应用å…许您的第三方应用程åºè®¿é—®æ¤å®žä¾‹çš„用户å¸æˆ·ã€‚
oauth2_application_remove_description=移除一个OAuth2应用将会阻æ¢å®ƒè®¿é—®æ¤å®žä¾‹ä¸Šçš„已授æƒç”¨æˆ·è´¦æˆ·ã€‚是å¦ç»§ç»ï¼Ÿ
-oauth2_application_locked=如果é…ç½®å¯ç”¨ï¼ŒGitea预注册一些OAuth2应用程åºã€‚ 为了防æ¢æ„外的行为, 这些应用既ä¸èƒ½ç¼–辑也ä¸èƒ½åˆ 除。请å‚阅OAuth2文档以获å–更多信æ¯ã€‚
authorized_oauth2_applications=已授æƒçš„ OAuth2 应用
authorized_oauth2_applications_description=您已授予这些第三方应用程åºè®¿é—®æ‚¨çš„个人 Gitea 账户的æƒé™ã€‚请撤销那些您ä¸å†éœ€è¦çš„应用程åºçš„访问æƒé™ã€‚
@@ -925,26 +913,20 @@ revoke_oauth2_grant=撤回æƒé™
revoke_oauth2_grant_description=确定撤销æ¤ä¸‰æ–¹åº”用程åºçš„授æƒï¼Œå¹¶é˜»æ¢æ¤åº”用程åºè®¿é—®æ‚¨çš„æ•°æ®ï¼Ÿ
revoke_oauth2_grant_success=æˆåŠŸæ’¤é”€äº†è®¿é—®æƒé™ã€‚
-twofa_desc=两æ¥éªŒè¯å¯ä»¥åŠ å¼ºä½ çš„è´¦å·å®‰å…¨æ€§ã€‚
twofa_recovery_tip=如果您丢失了您的设备,您将能够使用一次性æ¢å¤å¯†é’¥æ¥é‡æ–°èŽ·å¾—对您账户的访问。
twofa_is_enrolled=ä½ çš„è´¦å·å·²å¯ç”¨äº†ä¸¤æ¥éªŒè¯ã€‚
twofa_not_enrolled=ä½ çš„è´¦å·æœªå¼€å¯ä¸¤æ¥éªŒè¯ã€‚
twofa_disable=ç¦ç”¨ä¸¤æ¥è®¤è¯
-twofa_scratch_token_regenerate=é‡æ–°ç”Ÿæˆåˆå§‹ä»¤ç‰Œ
-twofa_scratch_token_regenerated=您的临时令牌现在是 %s。将其å˜æ”¾åœ¨å®‰å…¨çš„地方,它将ä¸ä¼šå†æ¬¡æ˜¾ç¤ºã€‚
twofa_enroll=å¯ç”¨ä¸¤æ¥éªŒè¯
twofa_disable_note=如果需è¦, å¯ä»¥ç¦ç”¨åŒå› ç´ èº«ä»½éªŒè¯ã€‚
twofa_disable_desc=关掉两æ¥éªŒè¯ä¼šä½¿å¾—您的账å·ä¸å®‰å…¨ï¼Œç»§ç»æ‰§è¡Œï¼Ÿ
-regenerate_scratch_token_desc=如果您丢失了您的验è¯å£ä»¤æˆ–å·²ç»ä½¿ç”¨å®ƒç™»å½•, 您å¯ä»¥åœ¨è¿™é‡Œé‡ç½®å®ƒã€‚
twofa_disabled=两æ¥éªŒè¯å·²è¢«ç¦ç”¨ã€‚
scan_this_image=使用您的授æƒåº”用扫æè¿™å¼ å›¾ç‰‡ï¼š
or_enter_secret=或者输入密钥:%s
then_enter_passcode=并输入应用程åºä¸æ˜¾ç¤ºçš„密ç :
passcode_invalid=密ç ä¸æ£ç¡®ã€‚å†è¯•ä¸€æ¬¡ã€‚
-twofa_enrolled=ä½ çš„è´¦å·å·²ç»å¯ç”¨äº†ä¸¤æ¥éªŒè¯ã€‚请ä¿å˜åˆå§‹ä»¤ç‰Œï¼ˆ%s)到一个安全的地方,æ¤ä»¤ç‰Œä»…当å‰æ˜¾ç¤ºä¸€æ¬¡ã€‚
twofa_failed_get_secret=èŽ·å– secret 失败。
-webauthn_desc=安全密钥是包å«åŠ 密密钥的硬件设备。它们å¯ä»¥ç”¨äºŽåŒå› ç´ èº«ä»½éªŒè¯ã€‚å®‰å…¨å¯†é’¥å¿…é¡»æ”¯æŒ WebAuthn 身份验è¯å™¨ æ ‡å‡†ã€‚
webauthn_register_key=æ·»åŠ å®‰å…¨å¯†é’¥
webauthn_nickname=昵称
webauthn_delete_key=移除安全密钥
@@ -1089,9 +1071,7 @@ tree_path_not_found_branch=路径 %[1]s ä¸å˜åœ¨äºŽåˆ†æ”¯ %[2]s ä¸ã€‚
tree_path_not_found_tag=路径 %[1]s ä¸å˜åœ¨äºŽæ ‡ç¾ %[2]s ä¸
transfer.accept=接å—转移
-transfer.accept_desc=`转移到 "%s"`
transfer.reject=æ‹’ç»è½¬ç§»
-transfer.reject_desc=`å–消转移到 "%s"`
transfer.no_permission_to_accept=您没有æƒé™æŽ¥å—æ¤è½¬è®©ã€‚
transfer.no_permission_to_reject=您没有æƒé™æ‹’ç»æ¤è½¬è®©ã€‚
@@ -1226,7 +1206,6 @@ releases=版本å‘布
tag=Gitæ ‡ç¾
released_this=å‘布
tagged_this=å·²æ ‡è®°
-file.title=%s ä½äºŽ %s
file_raw=原始文件
file_history=文件历å²
file_view_source=æºç 模å¼
@@ -1242,7 +1221,6 @@ ambiguous_runes_header=`æ¤æ–‡ä»¶å«æœ‰æ¨¡æ£±ä¸¤å¯çš„ Unicode å—符`
ambiguous_runes_description=`æ¤æ–‡ä»¶å«æœ‰å¯èƒ½ä¼šä¸Žå…¶ä»–å—符混淆的 Unicode å—符。 如果您是想特æ„è¿™æ ·çš„ï¼Œå¯ä»¥å®‰å…¨åœ°å¿½ç•¥è¯¥è¦å‘Šã€‚ 使用 Escape 按钮显示他们。`
invisible_runes_line=`æ¤è¡Œå«æœ‰ä¸å¯è§çš„ unicode å—符`
ambiguous_runes_line=`æ¤è¡Œæœ‰æ¨¡æ£±ä¸¤å¯çš„ unicode å—符`
-ambiguous_character=`%[1]c [U+%04[1]X] 容易和 %[2]c [U+%04[2]X] 混淆`
escape_control_characters=Escape
unescape_control_characters=Unescape
@@ -1711,7 +1689,6 @@ issues.dependency.add_error_dep_not_same_repo=这两个工å•å¿…须在åŒä¸€ä»“
issues.review.self.approval=您ä¸èƒ½æ‰¹å‡†æ‚¨è‡ªå·±çš„åˆå¹¶è¯·æ±‚。
issues.review.self.rejection=您ä¸èƒ½è¯·æ±‚对您自己的åˆå¹¶è¯·æ±‚进行更改。
issues.review.approve=于 %s 批准æ¤åˆå¹¶è¯·æ±‚
-issues.review.comment=评审于 %s
issues.review.dismissed=于 %[2]s å–消了 %[1]s 的评审
issues.review.dismissed_label=å·²å–消
issues.review.left_comment=留下了一æ¡è¯„论
@@ -1736,6 +1713,7 @@ issues.review.hide_resolved=éšè—已解决的
issues.review.resolve_conversation=已解决问题
issues.review.un_resolve_conversation=未解决问题
issues.review.resolved_by=æ ‡è®°é—®é¢˜ä¸ºå·²è§£å†³
+issues.review.commented=评论
issues.assignee.error=å› ä¸ºæœªçŸ¥åŽŸå› ï¼Œå¹¶éžæ‰€æœ‰çš„指派都æˆåŠŸã€‚
issues.reference_issue.body=内容
issues.content_history.deleted=åˆ é™¤äºŽ
@@ -1752,8 +1730,9 @@ compare.compare_head=比较
pulls.desc=å¯ç”¨åˆå¹¶è¯·æ±‚和代ç 评审。
pulls.new=创建åˆå¹¶è¯·æ±‚
pulls.new.blocked_user=æ— æ³•åˆ›å»ºåˆå¹¶è¯·æ±‚ï¼Œå› ä¸ºæ‚¨å·²è¢«ä»“åº“æ‰€æœ‰è€…å±è”½ã€‚
+pulls.new.must_collaborator=您必须是仓库的å作者æ‰èƒ½åˆ›å»ºåˆå¹¶è¯·æ±‚。
pulls.edit.already_changed=æ— æ³•ä¿å˜å¯¹åˆå¹¶è¯·æ±‚的更改。其内容似乎已被其他用户更改。 请刷新页é¢å¹¶é‡æ–°ç¼–辑以é¿å…覆盖他们的更改
-pulls.view=查看拉å–请求
+pulls.view=查看åˆå¹¶è¯·æ±‚
pulls.compare_changes=创建åˆå¹¶è¯·æ±‚
pulls.allow_edits_from_maintainers=å…许维护者编辑
pulls.allow_edits_from_maintainers_desc=对基础分支有写入æƒé™çš„用户也å¯ä»¥æŽ¨é€åˆ°æ¤åˆ†æ”¯
@@ -1809,6 +1788,7 @@ pulls.required_status_check_failed=一些必è¦çš„检查没有æˆåŠŸ
pulls.required_status_check_missing=缺少一些必è¦çš„检查。
pulls.required_status_check_administrator=作为管ç†å‘˜ï¼Œæ‚¨ä»å¯åˆå¹¶æ¤åˆå¹¶è¯·æ±‚
pulls.blocked_by_approvals=æ¤åˆå¹¶è¯·æ±‚还没有足够的批准。已获批准数 %d 个,需获批准数 %d 个。
+pulls.blocked_by_approvals_whitelisted=æ¤åˆå¹¶è¯·æ±‚还没有足够的批准。%[2]d ä¸çš„ %[1]d 个已由å…许åå•ä¸çš„用户或团队批准。
pulls.blocked_by_rejection=æ¤åˆå¹¶è¯·æ±‚æœ‰å®˜æ–¹å®¡æ ¸å‘˜è¯·æ±‚çš„æ›´æ”¹ã€‚
pulls.blocked_by_official_review_requests=æ¤åˆå¹¶è¯·æ±‚需è¦å®˜æ–¹è¯„审。
pulls.blocked_by_outdated_branch=æ¤åˆå¹¶è¯·æ±‚å› è¿‡æœŸè€Œè¢«é˜»æ¢ã€‚
@@ -1830,8 +1810,8 @@ pulls.wrong_commit_id=æ交 id å¿…é¡»åœ¨ç›®æ ‡åˆ†æ”¯ 上
pulls.no_merge_desc=由于未å¯ç”¨åˆå¹¶é€‰é¡¹ï¼Œæ¤åˆå¹¶è¯·æ±‚æ— æ³•è¢«åˆå¹¶ã€‚
pulls.no_merge_helper=在仓库设置ä¸å¯ç”¨åˆå¹¶é€‰é¡¹æˆ–者手工åˆå¹¶è¯·æ±‚。
pulls.no_merge_wip=这个åˆå¹¶è¯·æ±‚æ— æ³•åˆå¹¶ï¼Œå› ä¸ºè¢«æ ‡è®°ä¸ºå°šæœªå®Œæˆçš„工作。
-pulls.no_merge_not_ready=æ¤æ‹‰å–请求尚未准备好åˆå¹¶ï¼Œè¯·æ£€æŸ¥å®¡æ ¸çŠ¶æ€å’ŒçŠ¶æ€æ£€æŸ¥ã€‚
-pulls.no_merge_access=æ‚¨æ— æƒåˆå¹¶æ¤æ‹‰å–请求。
+pulls.no_merge_not_ready=æ¤åˆå¹¶è¯·æ±‚尚未准备好åˆå¹¶ï¼Œè¯·æ£€æŸ¥å®¡æ ¸çŠ¶æ€å’ŒçŠ¶æ€æ£€æŸ¥ã€‚
+pulls.no_merge_access=æ‚¨æ— æƒåˆå¹¶æ¤åˆå¹¶è¯·æ±‚。
pulls.merge_pull_request=创建åˆå¹¶æ交
pulls.rebase_merge_pull_request=å˜åŸºåŽå¿«è¿›
pulls.rebase_merge_commit_pull_request=å˜åŸºåŽåˆ›å»ºåˆå¹¶æ交
@@ -1850,9 +1830,7 @@ pulls.unrelated_histories=åˆå¹¶å¤±è´¥ï¼šä¸¤ä¸ªåˆ†æ”¯æ²¡æœ‰å…±åŒåŽ†å²ã€‚æ示
pulls.merge_out_of_date=åˆå¹¶å¤±è´¥ï¼šåœ¨ç”Ÿæˆåˆå¹¶æ—¶ï¼Œä¸»åˆ†æ”¯å·²æ›´æ–°ã€‚æ示:å†è¯•ä¸€æ¬¡ã€‚
pulls.head_out_of_date=åˆå¹¶å¤±è´¥ï¼šåœ¨ç”Ÿæˆåˆå¹¶æ—¶ï¼Œhead 已更新。æ示:å†è¯•ä¸€æ¬¡ã€‚
pulls.has_merged=失败:åˆå¹¶è¯·æ±‚å·²ç»è¢«åˆå¹¶ï¼Œæ‚¨ä¸èƒ½å†æ¬¡åˆå¹¶æˆ–æ›´æ”¹ç›®æ ‡åˆ†æ”¯ã€‚
-pulls.push_rejected=åˆå¹¶å¤±è´¥ï¼šæŽ¨é€è¢«æ‹’ç»ã€‚审查æ¤ä»“库的 Git é’©å。
pulls.push_rejected_summary=详细拒ç»ä¿¡æ¯
-pulls.push_rejected_no_message=åˆå¹¶å¤±è´¥ï¼šæ¤æŽ¨é€è¢«æ‹’ç»ä½†æœªæ供其他信æ¯ã€‚
请检查æ¤ä»“库的 Git Hook。
pulls.open_unmerged_pull_exists=`您ä¸èƒ½æ‰§è¡Œé‡æ–°æ‰“å¼€æ“作, å› ä¸ºå·²ç»å˜åœ¨ç›¸åŒçš„åˆå¹¶è¯·æ±‚ (#%d)。`
pulls.status_checking=一些检测ä»åœ¨ç‰å¾…è¿è¡Œ
pulls.status_checks_success=所有检测å‡æˆåŠŸ
@@ -1876,6 +1854,7 @@ pulls.cmd_instruction_checkout_title=检出
pulls.cmd_instruction_checkout_desc=ä»Žä½ çš„ä»“åº“ä¸æ£€å‡ºä¸€ä¸ªæ–°çš„分支并测试å˜æ›´ã€‚
pulls.cmd_instruction_merge_title=åˆå¹¶
pulls.cmd_instruction_merge_desc=åˆå¹¶å˜æ›´å¹¶æ›´æ–°åˆ° Gitea 上
+pulls.cmd_instruction_merge_warning=è¦å‘Šï¼šæ¤æ“作ä¸èƒ½åˆå¹¶è¯¥åˆå¹¶è¯·æ±‚ï¼Œå› ä¸ºâ€œè‡ªåŠ¨æ£€æµ‹æ‰‹åŠ¨åˆå¹¶â€æœªå¯ç”¨
pulls.clear_merge_message=清除åˆå¹¶ä¿¡æ¯
pulls.clear_merge_message_hint=清除åˆå¹¶æ¶ˆæ¯åªä¼šåˆ 除æ交消æ¯å†…容,并ä¿ç•™ç”Ÿæˆçš„ git é™„åŠ å†…å®¹ï¼Œå¦‚â€œCo-Authored-By …â€ã€‚
@@ -1888,11 +1867,11 @@ pulls.auto_merge_cancel_schedule=å–消自动åˆå¹¶
pulls.auto_merge_not_scheduled=æ¤åˆå¹¶è¯·æ±‚没有计划自动åˆå¹¶ã€‚
pulls.auto_merge_canceled_schedule=æ¤åˆå¹¶è¯·æ±‚的自动åˆå¹¶å·²å–消。
-pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置æ¤æ‹‰å–请求在所有检查æˆåŠŸåŽè‡ªåŠ¨åˆå¹¶`
+pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置æ¤åˆå¹¶è¯·æ±‚在所有检查æˆåŠŸåŽè‡ªåŠ¨åˆå¹¶`
pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s å–消了自动åˆå¹¶è®¾ç½® `
-pulls.delete.title=åˆ é™¤æ¤æ‹‰å–请求?
-pulls.delete.text=ä½ çœŸçš„è¦åˆ 除这个拉å–请求å—? (è¿™å°†æ°¸ä¹…åˆ é™¤æ‰€æœ‰å†…å®¹ã€‚å¦‚æžœä½ æ‰“ç®—å°†å†…å®¹å˜æ¡£ï¼Œè¯·è€ƒè™‘å…³é—它)
+pulls.delete.title=åˆ é™¤æ¤åˆå¹¶è¯·æ±‚?
+pulls.delete.text=ä½ çœŸçš„è¦åˆ 除这个åˆå¹¶è¯·æ±‚å—? (è¿™å°†æ°¸ä¹…åˆ é™¤æ‰€æœ‰å†…å®¹ã€‚å¦‚æžœä½ æ‰“ç®—å°†å†…å®¹å˜æ¡£ï¼Œè¯·è€ƒè™‘å…³é—它)
pulls.recently_pushed_new_branches=您已ç»äºŽ%[2]s推é€äº†åˆ†æ”¯ %[1]s
@@ -1907,7 +1886,6 @@ milestones.no_due_date=æš‚æ— æˆªæ¢æ—¥æœŸ
milestones.open=å¼€å¯ä¸
milestones.close=å…³é—
milestones.new_subheader=里程碑å¯ä»¥å¸®åŠ©æ‚¨ç»„织工å•å¹¶è·Ÿè¸ªå…¶è¿›åº¦ã€‚
-milestones.completeness=%d%% 完æˆ
milestones.create=创建里程碑
milestones.title=æ ‡é¢˜
milestones.desc=æè¿°
@@ -1978,7 +1956,6 @@ wiki.original_git_entry_tooltip=查看原始的 Git 文件而ä¸æ˜¯ä½¿ç”¨å‹å¥½
activity=动æ€
activity.navbar.pulse=活动
activity.navbar.code_frequency=代ç 频率
-activity.navbar.contributors=贡献者
activity.navbar.recent_commits=最近的æ交
activity.period.filter_label=周期:
activity.period.daily=1 天
@@ -2125,12 +2102,11 @@ settings.allow_only_contributors_to_track_time=ä»…å…许æˆå‘˜è·Ÿè¸ªæ—¶é—´
settings.pulls_desc=å¯ç”¨åˆå¹¶è¯·æ±‚
settings.pulls.ignore_whitespace=忽略空白冲çª
settings.pulls.enable_autodetect_manual_merge=å¯ç”¨è‡ªåŠ¨æ£€æµ‹æ‰‹åŠ¨åˆå¹¶ (注æ„:在æŸäº›ç‰¹æ®Šæƒ…况下å¯èƒ½å‘生错误判æ–)
-settings.pulls.allow_rebase_update=å…许通过å˜åŸºæ›´æ–°æ‹‰å–请求分支
+settings.pulls.allow_rebase_update=å…许通过å˜åŸºæ›´æ–°åˆå¹¶è¯·æ±‚分支
settings.pulls.default_delete_branch_after_merge=默认åˆå¹¶åŽåˆ 除åˆå¹¶è¯·æ±‚分支
settings.pulls.default_allow_edits_from_maintainers=默认开å¯å…许维护者编辑
settings.releases_desc=å¯ç”¨å‘布
settings.packages_desc=å¯ç”¨ä»“库软件包注册ä¸å¿ƒ
-settings.projects_desc=å¯ç”¨ä»“库项目
settings.projects_mode_desc=é¡¹ç›®æ¨¡å¼ (è¦æ˜¾ç¤ºçš„项目类型)
settings.projects_mode_repo=仅仓库项目
settings.projects_mode_owner=ä»…é™ç”¨æˆ·æˆ–组织项目
@@ -2305,7 +2281,6 @@ settings.event_pull_request_merge=åˆå¹¶è¯·æ±‚åˆå¹¶
settings.event_package=软件包
settings.event_package_desc=软件包已在仓库ä¸è¢«åˆ›å»ºæˆ–åˆ é™¤ã€‚
settings.branch_filter=分支过滤
-settings.branch_filter_desc=推é€ã€åˆ›å»ºï¼Œåˆ 除分支事件的分支白åå•ï¼Œä½¿ç”¨ glob 模å¼åŒ¹é…指定。若为空或 *
,则将报告所有分支的事件。è¯æ³•æ–‡æ¡£è§ github.com/gobwas/glob。示例:master
,{master,release*}
。
settings.authorization_header=授æƒæ ‡å¤´
settings.authorization_header_desc=当å˜åœ¨æ—¶å°†è¢«ä½œä¸ºæŽˆæƒæ ‡å¤´åŒ…å«åœ¨å†…。例如: %s。
settings.active=激活
@@ -2351,13 +2326,9 @@ settings.deploy_key_deletion=åˆ é™¤éƒ¨ç½²å¯†é’¥
settings.deploy_key_deletion_desc=åˆ é™¤éƒ¨ç½²å¯†é’¥å°†å–消æ¤å¯†é’¥å¯¹æ¤ä»“库的访问æƒé™ã€‚继ç»ï¼Ÿ
settings.deploy_key_deletion_success=éƒ¨ç½²å¯†é’¥å·²åˆ é™¤ã€‚
settings.branches=分支
-settings.protected_branch=分支ä¿æŠ¤
settings.protected_branch.save_rule=ä¿å˜è§„则
settings.protected_branch.delete_rule=åˆ é™¤è§„åˆ™
-settings.protected_branch_can_push=å…许推å—?
settings.protected_branch_can_push_yes=ä½ å¯ä»¥æŽ¨
-settings.protected_branch_can_push_no=ä½ ä¸èƒ½æŽ¨
-settings.branch_protection=分支 '%s' 的分支ä¿æŠ¤
settings.protect_this_branch=å¯ç”¨åˆ†æ”¯ä¿æŠ¤
settings.protect_this_branch_desc=阻æ¢åˆ 除并é™åˆ¶Git推é€å’Œåˆå¹¶åˆ°åˆ†æ”¯ã€‚
settings.protect_disable_push=ç¦ç”¨æŽ¨é€
@@ -2369,13 +2340,11 @@ settings.protect_enable_merge_desc=任何具有写入æƒé™çš„人都å¯ä»¥å°†åˆ
settings.protect_check_status_contexts=å¯ç”¨çŠ¶æ€æ£€æŸ¥
settings.protect_status_check_patterns=状æ€æ£€æŸ¥æ¨¡å¼ï¼š
settings.protect_status_check_patterns_desc=输入模å¼ï¼ŒæŒ‡å®šå“ªäº›çŠ¶æ€æ£€æŸ¥å¿…须通过,æ‰èƒ½å°†åˆ†æ”¯åˆå¹¶åˆ°ç¬¦åˆæ¤è§„则的分支ä¸åŽ»ã€‚æ¯ä¸€è¡ŒæŒ‡å®šä¸€ä¸ªæ¨¡å¼ï¼Œæ¨¡å¼ä¸èƒ½ä¸ºç©ºã€‚
-settings.protect_check_status_contexts_desc=è¦æ±‚状æ€æ£€æŸ¥é€šè¿‡æ‰èƒ½åˆå¹¶ï¼Œé€‰æ‹©å¿…须先通过哪些状æ€æ£€æŸ¥æ‰èƒ½åˆå¹¶ã€‚如果å¯ç”¨ï¼ŒæŽ¨é€çš„åˆå¹¶è¯·æ±‚必须先通过状æ€æ£€æŸ¥æ‰èƒ½å¤Ÿåˆå¹¶åˆ°å¯¹åº”的分支。如果没有选择具体的状æ€æ£€æŸ¥ä¸Šä¸‹æ–‡ï¼Œåˆ™æ‰€æœ‰çš„状æ€æ£€æŸ¥éƒ½é€šè¿‡æ‰èƒ½åˆå¹¶ã€‚
settings.protect_check_status_contexts_list=æ¤ä»“库上周进行过的状æ€æ£€æŸ¥
settings.protect_status_check_matched=匹é…
settings.protect_invalid_status_check_pattern=æ— æ•ˆçš„çŠ¶æ€æ£€æŸ¥è§„则:“%sâ€ã€‚
settings.protect_no_valid_status_check_patterns=没有有效的状æ€æ£€æŸ¥è§„则。
settings.protect_required_approvals=所需的批准:
-settings.protect_required_approvals_desc=åªå…许åˆå¹¶æœ‰è¶³å¤Ÿå®¡æ ¸äººæ•°çš„拉å–请求。
settings.dismiss_stale_approvals=å–消过时的批准
settings.dismiss_stale_approvals_desc=当新的æ交更改åˆå¹¶è¯·æ±‚内容被推é€åˆ°åˆ†æ”¯æ—¶ï¼Œæ—§çš„批准将被撤销。
settings.ignore_stale_approvals=忽略过期批准
@@ -2383,28 +2352,21 @@ settings.ignore_stale_approvals_desc=对旧æäº¤ï¼ˆè¿‡æœŸå®¡æ ¸ï¼‰çš„æ‰¹å‡†å°†
settings.require_signed_commits=需è¦ç¾åæ交
settings.require_signed_commits_desc=æ‹’ç»æŽ¨é€æœªç¾åæˆ–æ— æ³•éªŒè¯çš„æ交到分支
settings.protect_branch_name_pattern=å—ä¿æŠ¤çš„分支å称模å¼
-settings.protect_branch_name_pattern_desc=分支ä¿æŠ¤çš„å称匹é…规则。è¯æ³•è¯·å‚阅 文档 。如:main, release/**
settings.protect_patterns=规则
settings.protect_protected_file_patterns=å—ä¿æŠ¤çš„文件模å¼(ä½¿ç”¨åˆ†å· ';' 分隔):
-settings.protect_protected_file_patterns_desc=å³ä½¿ç”¨æˆ·æœ‰æƒæ·»åŠ ã€ç¼–è¾‘æˆ–åˆ é™¤æ¤åˆ†æ”¯ä¸çš„文件,也ä¸å…许直接更改å—ä¿æŠ¤çš„文件。 å¯ä»¥ä½¿ç”¨åˆ†å· (';') 分隔多个模å¼ã€‚ è§github.com/gobwas/glob文档了解模å¼è¯æ³•ã€‚例如: .drone.yml
, /docs/**/*.txt
settings.protect_unprotected_file_patterns=ä¸å—ä¿æŠ¤çš„文件模å¼(ä½¿ç”¨åˆ†å· ';' 分隔):
-settings.protect_unprotected_file_patterns_desc=如果用户有写æƒé™ï¼Œåˆ™å…许直接更改的ä¸å—ä¿æŠ¤çš„文件,以绕过推é€é™åˆ¶ã€‚å¯ä»¥ä½¿ç”¨åˆ†å·åˆ†éš”å¤šä¸ªæ¨¡å¼ (';')。 è§ github.com/gobwas/glob 文档了解模å¼è¯æ³•ã€‚例如: .drone.yml
, /docs/**/*.txt
-settings.add_protected_branch=å¯ç”¨ä¿æŠ¤
-settings.delete_protected_branch=ç¦ç”¨ä¿æŠ¤
settings.update_protect_branch_success=分支ä¿æŠ¤è§„则 %s æ›´æ–°æˆåŠŸã€‚
settings.remove_protected_branch_success=移除分支ä¿æŠ¤è§„则"%s"æˆåŠŸã€‚
settings.remove_protected_branch_failed=移除分支ä¿æŠ¤è§„则"%s"失败。
-settings.protected_branch_deletion=ç¦ç”¨åˆ†æ”¯ä¿æŠ¤
settings.protected_branch_deletion_desc=ç¦ç”¨åˆ†æ”¯ä¿æŠ¤å…许具有写入æƒé™çš„用户推é€æ交到æ¤åˆ†æ”¯ã€‚继ç»ï¼Ÿ
settings.block_rejected_reviews=æ‹’ç»å®¡æ ¸é˜»æ¢äº†æ¤åˆå¹¶
settings.block_rejected_reviews_desc=如果官方审查人员è¦æ±‚作出改动,å³ä½¿æœ‰è¶³å¤Ÿçš„批准,åˆå¹¶ä¹Ÿä¸å…许。
settings.block_on_official_review_requests=æœ‰å®˜æ–¹å®¡æ ¸é˜»æ¢äº†ä»£ç åˆå¹¶
settings.block_on_official_review_requests_desc=处于评审状æ€æ—¶ï¼Œå³ä½¿æœ‰è¶³å¤Ÿçš„批准,也ä¸èƒ½åˆå¹¶ã€‚
-settings.block_outdated_branch=如果拉å–请求已ç»è¿‡æ—¶ï¼Œé˜»æ¢åˆå¹¶
+settings.block_outdated_branch=如果åˆå¹¶è¯·æ±‚å·²ç»è¿‡æ—¶ï¼Œé˜»æ¢åˆå¹¶
settings.block_outdated_branch_desc=当头部分支è½åŽåŸºç¡€åˆ†æ”¯æ—¶ï¼Œä¸èƒ½åˆå¹¶ã€‚
settings.default_branch_desc=请选择一个默认的分支用于åˆå¹¶è¯·æ±‚å’Œæ交:
settings.merge_style_desc=åˆå¹¶æ–¹å¼
-settings.default_merge_style_desc=åˆå¹¶è¯·æ±‚的默认åˆå¹¶æ ·å¼ï¼š
settings.choose_branch=选择一个分支...
settings.no_protected_branch=没有å—ä¿æŠ¤çš„分支
settings.edit_protected_branch=编辑
@@ -2420,7 +2382,6 @@ settings.tags.protection.allowed.teams=å…许的团队
settings.tags.protection.allowed.noone=æ—
settings.tags.protection.create=ä¿æŠ¤Gitæ ‡ç¾
settings.tags.protection.none=没有å—ä¿æŠ¤çš„Gitæ ‡ç¾
-settings.tags.protection.pattern.description=ä½ å¯ä»¥ä½¿ç”¨å•ä¸ªå称或 glob 模å¼åŒ¹é…或æ£åˆ™è¡¨è¾¾å¼æ¥åŒ¹é…å¤šä¸ªæ ‡ç¾ã€‚了解详情请访问 å—ä¿æŠ¤Gitæ ‡ç¾æŒ‡å—。
settings.bot_token=Bot 令牌
settings.chat_id=èŠå¤© ID
settings.thread_id=线程 ID
@@ -2588,7 +2549,7 @@ branch.delete_desc=åˆ é™¤åˆ†æ”¯æ˜¯æ°¸ä¹…çš„ã€‚è™½ç„¶å·²åˆ é™¤çš„åˆ†æ”¯åœ¨å®žé™…
branch.deletion_success=分支 %s å·²è¢«åˆ é™¤ã€‚
branch.deletion_failed=åˆ é™¤åˆ†æ”¯ %s 失败。
branch.delete_branch_has_new_commits=å› ä¸ºåˆå¹¶ä¹‹åŽæœ‰æ–°çš„æ交,分支 %s æ— æ³•è¢«åˆ é™¤ã€‚
-branch.create_branch=创建分支 %s
+branch.create_branch=创建分支 %s
branch.create_from=从 %s
branch.create_success=分支 '%s' 已创建。
branch.branch_already_exists=æ¤ä»“库已å˜åœ¨å为 %s 的分支。
@@ -2614,7 +2575,7 @@ branch.new_branch=创建新分支
branch.new_branch_from=基于"%s"创建新分支
branch.renamed=分支 %s 被é‡å‘½å为 %s。
-tag.create_tag=åˆ›å»ºæ ‡ç¾ %s
+tag.create_tag=åˆ›å»ºæ ‡ç¾ %s
tag.create_tag_operation=åˆ›å»ºæ ‡ç¾
tag.confirm_create_tag=åˆ›å»ºæ ‡ç¾
tag.create_tag_from=基于"%s"åˆ›å»ºæ–°æ ‡ç¾
@@ -2623,7 +2584,6 @@ tag.create_success=æ ‡ç¾"%s"å·²å˜åœ¨
topic.manage_topics=管ç†ä¸»é¢˜
topic.done=ä¿å˜
-topic.count_prompt=您最多选择25个主题
topic.format_prompt=主题必须以å—æ¯æˆ–æ•°å—开头,å¯ä»¥åŒ…å«è¿žå—符 ('-') å’Œå¥ç‚¹ ('.'),长度ä¸å¾—超过35个å—符。å—符必须为å°å†™ã€‚
find_file.go_to_file=转到文件
@@ -2696,7 +2656,6 @@ settings.delete_prompt=åˆ é™¤æ“作会永久清除该组织的信æ¯ï¼Œå¹¶ä¸” 所有仓库。
settings.labels_desc=æ·»åŠ èƒ½å¤Ÿè¢«è¯¥ç»„ç»‡ä¸‹çš„ 所有仓库 çš„å·¥å•ä½¿ç”¨çš„æ ‡ç¾ã€‚
@@ -2721,7 +2680,6 @@ teams.leave.detail=离开 %s?
teams.can_create_org_repo=创建仓库
teams.can_create_org_repo_helper=æˆå‘˜å¯ä»¥åœ¨ç»„织ä¸åˆ›å»ºä»“库。创建者将自动获得创建的仓库的管ç†å‘˜æƒé™ã€‚
teams.none_access=æ— è®¿é—®æƒé™
-teams.none_access_helper=æˆå‘˜æ— 法查看æ¤å•å…ƒæˆ–对其执行任何其他æ“作。
teams.general_access=常规访问
teams.general_access_helper=æˆå‘˜æƒé™å°†ç”±ä»¥ä¸‹æƒé™è¡¨å†³å®šã€‚
teams.read_access=å¯è¯»
@@ -2790,7 +2748,6 @@ last_page=末页
total=总计:%d
settings=管ç†è®¾ç½®
-dashboard.new_version_hint=Gitea %s 现已å¯ç”¨ï¼Œæ‚¨æ£åœ¨è¿è¡Œ %s。查看 åšå®¢ 了解详情。
dashboard.statistic=摘è¦
dashboard.maintenance_operations=è¿ç»´
dashboard.system_status=系统状æ€
@@ -2971,12 +2928,10 @@ packages.size=大å°
packages.published=å·²å‘布
defaulthooks=默认Webé’©å
-defaulthooks.desc=当æŸäº› Gitea 事件触å‘时,Web é’©å自动å‘æœåŠ¡å™¨å‘出 HTTP POST 请求。这里定义的 Web é’©å是默认é…置,将被å¤åˆ¶åˆ°æ‰€æœ‰æ–°çš„仓库ä¸ã€‚详情请访问 Web é’©å指å—。
defaulthooks.add_webhook=æ·»åŠ é»˜è®¤Web é’©å
defaulthooks.update_webhook=更新默认 Web 钩å
systemhooks=系统 Web é’©å
-systemhooks.desc=当æŸäº› Gitea 事件触å‘时,Web é’©å自动å‘æœåŠ¡å™¨å‘出HTTP POST请求。这里定义的 Web é’©å将作用于系统上的所有仓库,所以请考虑这å¯èƒ½å¸¦æ¥çš„任何性能影å“。了解详情请访问 Web é’©å指å—。
systemhooks.add_webhook=æ·»åŠ ç³»ç»Ÿ Web é’©å
systemhooks.update_webhook=更新系统 Web é’©å
@@ -3071,18 +3026,8 @@ auths.tips=帮助æ示
auths.tips.oauth2.general=OAuth2 认è¯
auths.tips.oauth2.general.tip=当注册新的 OAuth2 身份验è¯æ—¶ï¼Œå›žè°ƒ/é‡å®šå‘ URL 应该是:
auths.tip.oauth2_provider=OAuth2 æ供程åº
-auths.tip.bitbucket=在 https://bitbucket.org/account/user/{your username}/oauth-consumers/new 注册新的 OAuth 使用者åŒæ—¶æ·»åŠ æƒé™â€œè´¦å·â€-“读å–â€
auths.tip.nextcloud=使用下é¢çš„èœå•â€œè®¾ç½®ï¼ˆSettings) -> 安全(Security) -> OAuth 2.0 clientâ€åœ¨æ‚¨çš„实例上注册一个新的 OAuth 客户端。
-auths.tip.dropbox=在 https://www.dropbox.com/developers/apps 上创建一个新的应用程åº
-auths.tip.facebook=`在 https://developers.facebook.com/apps æ³¨å†Œä¸€ä¸ªæ–°çš„åº”ç”¨ï¼Œå¹¶æ·»åŠ äº§å“"Facebook 登录"`
-auths.tip.github=在 https://github.com/settings/applications/new 注册一个 OAuth 应用程åº
-auths.tip.gitlab_new=在 https://gitlab.com/-/profile/applications 注册一个新的应用
-auths.tip.google_plus=ä»Žè°·æŒ API æŽ§åˆ¶å° (https://console.developers.google.com/) 获得 OAuth2 客户端å‡æ®
auths.tip.openid_connect=使用 OpenID 连接å‘现 URL ({server}/.well-known/openid-configuration) æ¥æŒ‡å®šç»ˆç‚¹
-auths.tip.twitter=访问 https://dev.twitter.com/apps,创建应用并确ä¿å¯ç”¨äº†"å…许æ¤åº”用程åºç”¨äºŽç™»å½• Twitter"的选项。
-auths.tip.discord=在 https://discordapp.com/developers/applications/me 上注册新应用程åº
-auths.tip.gitea=注册一个新的 OAuth2 应用程åºã€‚å¯ä»¥è®¿é—® https://docs.gitea.com/development/oauth2-provider 查看帮助
-auths.tip.yandex=在 https://oauth.yandex.com/client/new 上创建一个新的应用程åºã€‚在“ Yandex.Passport APIâ€è¿™éƒ¨åˆ†ä¸é€‰æ‹©ä»¥ä¸‹æƒé™ï¼šâ€œè®¿é—®ç”µå邮件地å€ï¼ˆAccess to email address)â€ï¼Œâ€œè®¿é—®ç”¨æˆ·å¤´åƒï¼ˆAccess to user avatar)â€å’Œâ€œè®¿é—®ç”¨æˆ·å,åå—和姓æ°ï¼Œæ€§åˆ«ï¼ˆAccess to username, first name and surname, genderAccess to username, first name and surname, gender)â€
auths.tip.mastodon=输入您想è¦è®¤è¯çš„ mastodon 实例的自定义 URL (或使用默认值)
auths.edit=修改认è¯æº
auths.activated=该认è¯æºå·²ç»å¯ç”¨
@@ -3244,7 +3189,6 @@ monitor.next=下次执行时间
monitor.previous=上次执行时间
monitor.execute_times=执行次数
monitor.process=è¿è¡Œä¸è¿›ç¨‹
-monitor.stacktrace=è°ƒç”¨æ ˆè¸ªè¿¹
monitor.processes_count=%d 个进程
monitor.download_diagnosis_report=下载诊æ–报告
monitor.desc=进程æè¿°
@@ -3252,8 +3196,6 @@ monitor.start=开始时间
monitor.execute_time=执行时长
monitor.last_execution_result=结果
monitor.process.cancel=ä¸æ¢è¿›ç¨‹
-monitor.process.cancel_desc=ä¸æ¢ä¸€ä¸ªè¿›ç¨‹å¯èƒ½å¯¼è‡´æ•°æ®ä¸¢å¤±
-monitor.process.cancel_notices=ä¸æ¢ï¼š%s ?
monitor.process.children=å进程
monitor.queues=队列
@@ -3355,8 +3297,6 @@ raw_minutes=分钟
[dropzone]
default_message=拖动文件或者点击æ¤å¤„ä¸Šä¼ ã€‚
-invalid_input_type=您ä¸èƒ½ä¸Šä¼ 该类型的文件
-file_too_big=文件体积({{filesize}} MB)超过了最大å…许体积({{maxFilesize}} MB)
remove_file=移除文件
[notification]
@@ -3503,7 +3443,6 @@ settings.link=å°†æ¤è½¯ä»¶åŒ…链接到仓库
settings.link.description=如果您将一个软件包与一个代ç 库链接起æ¥ï¼Œè½¯ä»¶åŒ…将显示在代ç 库的软件包列表ä¸ã€‚
settings.link.select=选择仓库
settings.link.button=更新仓库链接
-settings.link.success=仓库链接已æˆåŠŸæ›´æ–°ã€‚
settings.link.error=更新仓库链接失败。
settings.delete=åˆ é™¤è½¯ä»¶åŒ…
settings.delete.description=åˆ é™¤è½¯ä»¶åŒ…æ˜¯æ°¸ä¹…æ€§çš„ï¼Œæ— æ³•æ’¤æ¶ˆã€‚
diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini
index 64a012e3078c0..509be1527031d 100644
--- a/options/locale/locale_zh-HK.ini
+++ b/options/locale/locale_zh-HK.ini
@@ -217,7 +217,6 @@ social=社交帳號ç¶å®š
orgs=管ç†çµ„ç¹”
repos=儲å˜åº«ç®¡ç†
delete=刪除帳戶
-twofa=å…©æ¥é©Ÿé©—è‰
organization=組織管ç†
public_profile=公開訊æ¯
@@ -600,13 +599,6 @@ settings.deploy_keys=管ç†éƒ¨ç½²é‡‘é‘°
settings.add_deploy_key=新增部署金鑰
settings.title=標題
settings.deploy_key_content=金鑰文本
-settings.branches=分支列表
-settings.protected_branch=分支ä¿è·
-settings.protected_branch_can_push=å…許推é€ï¼Ÿ
-settings.protected_branch_can_push_yes=ä½ å¯ä»¥æŽ¨é€
-settings.protected_branch_can_push_no=ä½ ä¸èƒ½æŽ¨é€
-settings.add_protected_branch=啟用ä¿è·
-settings.delete_protected_branch=åœç”¨ä¿è·
settings.edit_protected_branch=編輯
diff.browse_source=ç€è¦½ä»£ç¢¼
@@ -805,9 +797,6 @@ auths.enable_auto_register=å…許授權用戶自動註冊
auths.tips=幫助æ示
auths.tips.oauth2.general=OAuth2 èªè‰
auths.tip.oauth2_provider=OAuth2 æ供者
-auths.tip.dropbox=建立新 App 在 https://www.dropbox.com/developers/apps
-auths.tip.facebook=`在 https://developers.facebook.com/apps è¨»å†Šä¸€å€‹æ–°çš„æ‡‰ç”¨ï¼Œä¸¦ä¸”æ–°å¢žä¸€å€‹ç”¢å“ "Facebook Login"`
-auths.tip.github=在 https://github.com/settings/applications/new 註冊一個新的 OAuth 應用程å¼
auths.delete=刪除èªè‰ä¾†æº
auths.delete_auth_title=刪除èªè‰ä¾†æº
@@ -966,7 +955,6 @@ error.not_signed_commit=未簽åçš„æ交
[packages]
filter.type=èªè‰é¡žåž‹
-alpine.repository.branches=分支列表
alpine.repository.repositories=儲å˜åº«ç®¡ç†
conan.details.repository=儲å˜åº«
owner.settings.cleanuprules.enabled=已啟用
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index a2e0d9298ba95..d755f64dcd5fd 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -167,8 +167,6 @@ string.desc=Z - A
[error]
occurred=發生錯誤
-missing_csrf=錯誤的請求:未æä¾› CSRF token
-invalid_csrf=錯誤的請求:無效的 CSRF token
not_found=找ä¸åˆ°ç›®æ¨™ã€‚
network_error=網路錯誤
@@ -176,11 +174,9 @@ network_error=網路錯誤
app_desc=一套極易架è¨çš„ Git æœå‹™
install=安è£å®¹æ˜“
platform=跨平å°
-platform_desc=Gitea å¯ä»¥åœ¨æ‰€æœ‰èƒ½ç·¨è¯ Go 語言的平å°ä¸ŠåŸ·è¡Œ: Windows, macOS, Linux, ARM ç‰ç‰ã€‚挑一個您喜æ¡çš„å§ï¼
lightweight=輕é‡ç´š
lightweight_desc=一片便宜的 Raspberry Pi å°±å¯ä»¥æ»¿è¶³ Gitea 的最低需求。節çœæ‚¨çš„機器資æºï¼
license=開放原始碼
-license_desc=å–å¾— code.gitea.io/gitea ï¼æˆç‚ºä¸€åè²¢ç»è€…和我們一起讓 Gitea æ›´å¥½ï¼Œå¿«é»žåŠ å…¥æˆ‘å€‘å§ï¼
[install]
install=安è£é é¢
@@ -583,13 +579,10 @@ applications=應用程å¼
orgs=管ç†çµ„ç¹”
repos=儲å˜åº«
delete=刪除帳戶
-twofa=å…©æ¥é©Ÿé©—è‰
account_link=已連çµå¸³è™Ÿ
organization=組織
-webauthn=安全金鑰
public_profile=公開的個人資料
-password_username_disabled=éžæœ¬åœ°ä½¿ç”¨è€…ä¸å…許更改他們的帳號。詳細資訊請è¯çµ¡æ‚¨çš„系統管ç†å“¡ã€‚
full_name=å…¨å
website=個人網站
location=所在地å€
@@ -784,24 +777,19 @@ revoke_key=撤銷
revoke_oauth2_grant=撤銷å˜å–權
revoke_oauth2_grant_description=撤銷æ¤ç¬¬ä¸‰æ–¹æ‡‰ç”¨ç¨‹å¼çš„å˜å–權,æ¤æ‡‰ç”¨ç¨‹å¼å°±ç„¡æ³•å†å˜å–您的資料?您確定嗎?
-twofa_desc=å…©æ¥é©Ÿé©—è‰å¯ä»¥å¢žå¼·æ‚¨çš„帳戶安全性。
twofa_is_enrolled=您的帳戶已經啟用兩æ¥é©Ÿé©—è‰ã€‚
twofa_not_enrolled=您的帳戶目å‰å°šæœªå•Ÿç”¨å…©æ¥é©Ÿé©—è‰ã€‚
twofa_disable=åœç”¨å…©æ¥é©Ÿé©—è‰
-twofa_scratch_token_regenerate=é‡æ–°ç”¢ç”Ÿå‚™ç”¨é©—è‰ç¢¼
twofa_enroll=啟用兩æ¥é©Ÿé©—è‰
twofa_disable_note=如有需è¦ï¼Œæ‚¨å¯ä»¥åœç”¨å…©æ¥é©Ÿé©—è‰ã€‚
twofa_disable_desc=關閉兩æ¥é©Ÿé©—è‰æœƒä½¿æ‚¨çš„帳戶安全性é™ä½Žï¼Œæ˜¯å¦ç¹¼çºŒï¼Ÿ
-regenerate_scratch_token_desc=如果您éºå¤±äº†å‚™ç”¨é©—è‰ç¢¼æˆ–已經使用它登入,您å¯ä»¥åœ¨æ¤é‡æ–°è¨å®šã€‚
twofa_disabled=å…©æ¥é©Ÿé©—è‰å·²ç¶“被關閉。
scan_this_image=使用您的授權應用程å¼ä¾†æŽƒçž„圖片:
or_enter_secret=或者輸入密碼: %s
then_enter_passcode=然後輸入應用程å¼ä¸é¡¯ç¤ºçš„é©—è‰ç¢¼ï¼š
passcode_invalid=無效的驗è‰ç¢¼ï¼Œè«‹é‡è©¦ã€‚
-twofa_enrolled=您的帳戶已經啟用了兩æ¥é©Ÿé©—è‰ã€‚請將備用驗è‰ç¢¼ (%s) ä¿å˜åˆ°å®‰å…¨çš„地方,它åªæœƒé¡¯ç¤ºé€™éº¼ä¸€æ¬¡ï¼
twofa_failed_get_secret=å–得密鑰 (Secret) 失敗。
-webauthn_desc=安全金鑰是包å«åŠ 密密鑰的硬體è¨å‚™ï¼Œå®ƒå€‘å¯ä»¥ç”¨æ–¼å…©æ¥é©Ÿé©—è‰ã€‚å®‰å…¨é‡‘é‘°å¿…é ˆæ”¯æ´ WebAuthn Authenticator 標準。
webauthn_register_key=新增安全金鑰
webauthn_nickname=暱稱
webauthn_delete_key=移除安全金鑰
@@ -920,9 +908,7 @@ author_search_tooltip=最多顯示 30 ä½ä½¿ç”¨è€…
transfer.accept=åŒæ„轉移
-transfer.accept_desc=轉移到「%sã€
transfer.reject=拒絕轉移
-transfer.reject_desc=å–消轉移到「%sã€
desc.private=ç§æœ‰
desc.public=公開
@@ -1046,7 +1032,6 @@ releases=版本發布
tag=標籤
released_this=發布了æ¤ç‰ˆæœ¬
tagged_this=標記了æ¤æ¨™ç±¤
-file.title=%s æ–¼ %s
file_raw=原始文件
file_history=æ·å²è¨˜éŒ„
file_view_source=檢視原始碼
@@ -1056,7 +1041,6 @@ file_permalink=永久連çµ
file_too_large=檔案太大,無法顯示。
invisible_runes_line=`這一行有看ä¸è¦‹çš„ Unicode å—å…ƒ`
ambiguous_runes_line=`這一行有易混淆的 Unicode å—å…ƒ`
-ambiguous_character=`%[1]c [U+%04[1]X] 容易與 %[2]c [U+%04[2]X] 混淆`
escape_control_characters=Escape
unescape_control_characters=Unescape
@@ -1480,7 +1464,6 @@ issues.dependency.add_error_dep_not_same_repo=這兩個å•é¡Œå¿…é ˆåœ¨åŒä¸€å€‹
issues.review.self.approval=您ä¸èƒ½æ ¸å¯è‡ªå·±çš„åˆä½µè«‹æ±‚。
issues.review.self.rejection=您ä¸èƒ½å°è‡ªå·±çš„åˆä½µè«‹æ±‚æ出請求變更。
issues.review.approve=æ ¸å¯äº†é€™äº›è®Šæ›´ %s
-issues.review.comment=å·²å¯©æ ¸ %s
issues.review.dismissed=å–消 %s çš„å¯©æ ¸ %s
issues.review.dismissed_label=å·²å–消
issues.review.left_comment=留下了回應
@@ -1501,6 +1484,7 @@ issues.review.hide_resolved=éš±è—已解決
issues.review.resolve_conversation=解決å°è©±
issues.review.un_resolve_conversation=å–消解決å°è©±
issues.review.resolved_by=標記了æ¤å°è©±ç‚ºå·²è§£æ±º
+issues.review.commented=留言
issues.assignee.error=å› ç‚ºæœªé 期的錯誤,未能æˆåŠŸåŠ å…¥æ‰€æœ‰è² è²¬äººã€‚
issues.reference_issue.body=內容
issues.content_history.deleted=刪除
@@ -1594,9 +1578,7 @@ pulls.rebase_conflict_summary=錯誤訊æ¯
pulls.unrelated_histories=åˆä½µå¤±æ•—:è¦åˆä½µçš„ HEAD 和基底分支沒有共åŒçš„æ·å²ã€‚ æ示:請嘗試ä¸åŒçš„ç–ç•¥
pulls.merge_out_of_date=åˆä½µå¤±æ•—:產生åˆä½µæ™‚,基底已被更新。æ示:å†è©¦ä¸€æ¬¡ã€‚
pulls.head_out_of_date=åˆä½µå¤±æ•—:產生åˆä½µæ™‚,head 已被更新。æ示:å†è©¦ä¸€æ¬¡ã€‚
-pulls.push_rejected=åˆä½µå¤±æ•—:æ¤æŽ¨é€è¢«æ‹’絕。請檢查æ¤å„²å˜åº«çš„ Git Hook。
pulls.push_rejected_summary=完整的拒絕訊æ¯
-pulls.push_rejected_no_message=åˆä½µå¤±æ•—:æ¤æŽ¨é€è¢«æ‹’絕但未æ供其他資訊。
請檢查æ¤å„²å˜åº«çš„ Git Hook。
pulls.open_unmerged_pull_exists=`您ä¸èƒ½é‡æ–°é–‹æ”¾ï¼Œå› 為目å‰æœ‰ç›¸åŒçš„åˆä½µè«‹æ±‚ (#%d) æ£åœ¨é€²è¡Œä¸ã€‚`
pulls.status_checking=還在進行一些檢查
pulls.status_checks_success=已通éŽæ‰€æœ‰æª¢æŸ¥
@@ -1640,7 +1622,6 @@ milestones.update_ago=已更新 %s
milestones.no_due_date=暫無截æ¢æ—¥æœŸ
milestones.open=é–‹å•Ÿ
milestones.close=關閉
-milestones.completeness=%d%% 完æˆ
milestones.create=建立里程碑
milestones.title=標題
milestones.desc=æè¿°
@@ -1819,7 +1800,6 @@ settings.pulls.default_delete_branch_after_merge=é è¨åœ¨åˆä½µå¾Œåˆªé™¤åˆä½µ
settings.pulls.default_allow_edits_from_maintainers=é è¨å…許ç¶è·è€…進行編輯
settings.releases_desc=啟用儲å˜åº«ç‰ˆæœ¬ç™¼ä½ˆ
settings.packages_desc=啟用儲å˜åº«å¥—件註冊ä¸å¿ƒ
-settings.projects_desc=啟用儲å˜åº«å°ˆæ¡ˆ
settings.projects_mode_all=所有專案
settings.actions_desc=啟用儲å˜åº« Actions
settings.admin_settings=管ç†å“¡è¨å®š
@@ -1981,7 +1961,6 @@ settings.event_pull_request_sync_desc=åˆä½µè«‹æ±‚åŒæ¥ã€‚
settings.event_package=套件
settings.event_package_desc=套件已在儲å˜åº«ä¸å»ºç«‹æˆ–刪除。
settings.branch_filter=分支篩é¸
-settings.branch_filter_desc=推é€ã€å»ºç«‹åˆ†æ”¯ã€åˆªé™¤åˆ†æ”¯äº‹ä»¶çš„白å單,請使用 glob 比å°æ¨¡å¼ã€‚如果留白或輸入*
ï¼Œæ‰€æœ‰åˆ†æ”¯çš„äº‹ä»¶éƒ½æœƒè¢«å›žå ±ã€‚èªžæ³•åƒè¦‹ github.com/gobwas/glob。範例:master
, {master,release*}
。
settings.authorization_header=Authorization 標é
settings.authorization_header_desc=å˜åœ¨æ™‚將將包å«æ¤ Authorization 標é 在請求ä¸ã€‚例: %s。
settings.active=啟用
@@ -2027,13 +2006,8 @@ settings.deploy_key_deletion=刪除部署金鑰
settings.deploy_key_deletion_desc=移除部署金鑰將拒絕它å˜å–æ¤å„²å˜åº«ã€‚是å¦ç¹¼çºŒï¼Ÿ
settings.deploy_key_deletion_success=部署金鑰已移除。
settings.branches=分支
-settings.protected_branch=分支ä¿è·
settings.protected_branch.save_rule=儲å˜è¦å‰‡
settings.protected_branch.delete_rule=刪除è¦å‰‡
-settings.protected_branch_can_push=å…許推é€ï¼Ÿ
-settings.protected_branch_can_push_yes=ä½ å¯ä»¥æŽ¨é€
-settings.protected_branch_can_push_no=ä½ ä¸èƒ½æŽ¨é€
-settings.branch_protection=%s 的分支ä¿è·
settings.protect_this_branch=啟用分支ä¿è·
settings.protect_this_branch_desc=防æ¢åˆªé™¤åˆ†æ”¯ï¼Œä¸¦é™åˆ¶ Git 推é€èˆ‡åˆä½µåˆ°åˆ†æ”¯ã€‚
settings.protect_disable_push=åœç”¨æŽ¨é€
@@ -2043,22 +2017,15 @@ settings.protect_enable_push_desc=任何æ“有寫入權é™çš„使用者將å¯æŽ¨
settings.protect_enable_merge=啟用åˆä½µ
settings.protect_enable_merge_desc=任何有寫入權é™çš„人都å¯å°‡åˆä½µè«‹æ±‚åˆä½µåˆ°æ¤åˆ†æ”¯
settings.protect_check_status_contexts=啟用狀態檢查
-settings.protect_check_status_contexts_desc=åˆä½µå‰å¿…é ˆå…ˆé€šéŽç‹€æ…‹æª¢æŸ¥ã€‚é¸æ“‡åˆä½µå‰å¿…é ˆé€šéŽçš„æª¢æŸ¥ã€‚å•Ÿç”¨æ™‚ï¼Œå¿…é ˆå…ˆå°‡æ交推é€åˆ°å¦ä¸€å€‹åˆ†æ”¯ï¼Œé€šéŽç‹€æ…‹æª¢æŸ¥å¾Œå†åˆä½µæˆ–直接推é€åˆ°ç¬¦åˆè¦å‰‡çš„分支。如果未é¸æ“‡ä»»ä½•é …目,最一個æ交必將æˆåŠŸé€šéŽç‹€æ…‹æª¢æŸ¥ã€‚
settings.protect_check_status_contexts_list=æ¤å„²å˜åº«ä¸€é€±å…§æ›¾é€²è¡ŒéŽç‹€æ…‹æª¢æŸ¥
settings.protect_required_approvals=需è¦çš„æ ¸å¯æ•¸é‡ï¼š
-settings.protect_required_approvals_desc=åªæœ‰åœ¨ç²å¾—è¶³å¤ æ•¸é‡çš„æ ¸å¯å¾Œæ‰èƒ½é€²è¡Œåˆä½µã€‚
settings.dismiss_stale_approvals=æ¨æ£„éŽæ™‚çš„æ ¸å¯
settings.dismiss_stale_approvals_desc=當新的æ交有修改到åˆä½µè«‹æ±‚的內容,並被推é€åˆ°æ¤åˆ†æ”¯æ™‚,將æ¨æ£„èˆŠçš„æ ¸å¯ã€‚
settings.require_signed_commits=僅接å—經簽署的æ交
settings.require_signed_commits_desc=拒絕未經簽署或未經驗è‰çš„æ交推é€åˆ°æ¤åˆ†æ”¯ã€‚
settings.protect_branch_name_pattern=å—ä¿è·çš„分支å稱模å¼
settings.protect_protected_file_patterns=å—ä¿è·çš„æª”æ¡ˆæ¨¡å¼ (以分號å€éš”「;ã€):
-settings.protect_protected_file_patterns_desc=å³ä¾¿ä½¿ç”¨è€…有權é™æ–°å¢žã€ä¿®æ”¹ã€åˆªé™¤æ¤åˆ†æ”¯çš„檔案,ä»ä¸å…許直接修改å—ä¿è·çš„檔案。å¯ä»¥ç”¨åŠå½¢åˆ†è™Ÿã€Œ;ã€åˆ†éš”多個模å¼ã€‚è«‹æ–¼ github.com/gobwas/glob 文件查看模å¼æ ¼å¼ã€‚範例: .drone.yml
, /docs/**/*.txt
。
settings.protect_unprotected_file_patterns=未å—ä¿è·çš„æª”æ¡ˆæ¨¡å¼ (以分號å€éš”「;ã€):
-settings.protect_unprotected_file_patterns_desc=當使用者有寫入權é™æ™‚,å¯ç¹žéŽæŽ¨é€é™åˆ¶ï¼Œç›´æŽ¥ä¿®æ”¹æœªå—ä¿è·çš„檔案。å¯ä»¥ç”¨åŠå½¢åˆ†è™Ÿã€Œ;ã€åˆ†éš”多個模å¼ã€‚è«‹æ–¼ github.com/gobwas/glob 文件查看模å¼æ ¼å¼ã€‚範例: .drone.yml
, /docs/**/*.txt
。
-settings.add_protected_branch=啟用ä¿è·
-settings.delete_protected_branch=åœç”¨ä¿è·
-settings.protected_branch_deletion=åœç”¨åˆ†æ”¯ä¿è·
settings.protected_branch_deletion_desc=åœç”¨åˆ†æ”¯ä¿è·å°‡å…許有寫入權é™çš„使用者推é€è‡³è©²åˆ†æ”¯ï¼Œæ˜¯å¦ç¹¼çºŒï¼Ÿ
settings.block_rejected_reviews=æœ‰é€€å›žçš„å¯©æ ¸æ™‚é˜»æ“‹åˆä½µ
settings.block_rejected_reviews_desc=å¦‚æžœå®˜æ–¹å¯©æ ¸äººå“¡æ出變更請求,å³ä½¿æœ‰è¶³å¤ çš„æ ¸å¯ä¹Ÿä¸å…許進行åˆä½µã€‚
@@ -2238,7 +2205,7 @@ branch.delete_html=刪除分支
branch.deletion_success=已刪除分支「%sã€ã€‚
branch.deletion_failed=刪除分支「%sã€å¤±æ•—。
branch.delete_branch_has_new_commits=å› ç‚ºåˆä½µå¾Œå·²åŠ 入了新的æ交,「%sã€åˆ†æ”¯ç„¡æ³•è¢«åˆªé™¤ã€‚
-branch.create_branch=建立分支 %s
+branch.create_branch=建立分支 %s
branch.create_from=從「%sã€
branch.create_success=已建立分支「%sã€ã€‚
branch.branch_already_exists=æ¤å„²å˜åº«å·²æœ‰å為「%sã€çš„分支。
@@ -2260,7 +2227,7 @@ branch.new_branch=建立新分支
branch.new_branch_from=從「%sã€å»ºç«‹æ–°åˆ†æ”¯
branch.renamed=分支 %s 被é‡æ–°å‘½å為 %s。
-tag.create_tag=建立標籤 %s
+tag.create_tag=建立標籤 %s
tag.create_tag_operation=建立標籤
tag.confirm_create_tag=建立標籤
tag.create_tag_from=從「%sã€å»ºç«‹æ–°æ¨™ç±¤
@@ -2269,7 +2236,6 @@ tag.create_success=已建立標籤「%sã€ã€‚
topic.manage_topics=管ç†ä¸»é¡Œ
topic.done=完æˆ
-topic.count_prompt=您最多能é¸æ“‡ 25 個主題
find_file.go_to_file=移至檔案
find_file.no_matching=找ä¸åˆ°ç¬¦åˆçš„檔案
@@ -2416,7 +2382,6 @@ first_page=首é
last_page=末é
total=總計:%d
-dashboard.new_version_hint=ç¾å·²æŽ¨å‡º Gitea %s,您æ£åœ¨åŸ·è¡Œ %s。詳情請åƒé–±éƒ¨è½æ ¼çš„說明。
dashboard.statistic=摘è¦
dashboard.system_status=系統狀態
dashboard.operation_name=作æ¥å稱
@@ -2679,13 +2644,6 @@ auths.tips=幫助æ示
auths.tips.oauth2.general=OAuth2 èªè‰
auths.tip.oauth2_provider=OAuth2 æ供者
auths.tip.nextcloud=在您的執行個體ä¸ï¼Œæ–¼é¸å–®ã€Œè¨å®š -> 安全性 -> OAuth 2.0 客戶端ã€è¨»å†Šæ–°çš„ OAuth 客戶端
-auths.tip.dropbox=建立新的 App。網å€ï¼šhttps://www.dropbox.com/developers/apps
-auths.tip.facebook=註冊新的應用程å¼ä¸¦æ–°å¢žç”¢å“「Facebook 登入ã€ã€‚網å€ï¼šhttps://developers.facebook.com/apps
-auths.tip.github=註冊新的 OAuth 應用程å¼ã€‚網å€ï¼šhttps://github.com/settings/applications/new
-auths.tip.google_plus=從 Google API 控制å°å–å¾— OAuth2 用戶端憑è‰ã€‚網å€ï¼šhttps://console.developers.google.com/
-auths.tip.twitter=建立應用程å¼ä¸¦ç¢ºä¿æœ‰å•Ÿç”¨ã€ŒAllow this application to be used to Sign in with Twitterã€ã€‚網å€ï¼šhttps://dev.twitter.com/apps
-auths.tip.discord=註冊新的應用程å¼ã€‚網å€ï¼šhttps://discordapp.com/developers/applications/me
-auths.tip.yandex=建立新的應用程å¼ï¼Œå¾žã€ŒYandex.Passport APIã€å€å¡Šé¸æ“‡ã€ŒAccess to email addressã€ã€ã€ŒAccess to user avatarã€å’Œã€ŒAccess to username, first name and surname, genderã€ã€‚網å€ï¼šhttps://oauth.yandex.com/client/new
auths.tip.mastodon=輸入您欲èªè‰çš„ Mastodon åŸ·è¡Œå€‹é«”çš„è‡ªè¨‚ç¶²å€ (或使用é è¨å€¼)
auths.edit=修改èªè‰ä¾†æº
auths.activated=該èªè‰ä¾†æºå·²å•Ÿç”¨
@@ -2841,14 +2799,11 @@ monitor.next=下次執行時間
monitor.previous=上次執行時間
monitor.execute_times=執行次數
monitor.process=執行ä¸çš„處ç†ç¨‹åº
-monitor.stacktrace=å †ç–Šè¿½è¹¤
monitor.desc=æè¿°
monitor.start=開始時間
monitor.execute_time=已執行時間
monitor.last_execution_result=çµæžœ
monitor.process.cancel=çµæŸè™•ç†ç¨‹åº
-monitor.process.cancel_desc=çµæŸè™•ç†ç¨‹åºå¯èƒ½é€ æˆè³‡æ–™éºå¤±
-monitor.process.cancel_notices=çµæŸ: %s?
monitor.process.children=å程åº
monitor.queues=佇列
@@ -2936,7 +2891,6 @@ raw_minutes=分é˜
[dropzone]
default_message=拖放檔案或是點擊æ¤è™•ä¸Šå‚³ã€‚
-invalid_input_type=您無法上傳æ¤é¡žåž‹çš„檔案
file_too_big=檔案大å°({{filesize}} MB) 超éŽäº†æœ€å¤§å…許大å°({{maxFilesize}} MB)
remove_file=移除文件
diff --git a/package-lock.json b/package-lock.json
index d469cc924c7e0..ca001b293930c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,34 +18,34 @@
"add-asset-webpack-plugin": "3.0.0",
"ansi_up": "6.0.2",
"asciinema-player": "3.8.0",
- "chart.js": "4.4.3",
+ "chart.js": "4.4.4",
"chartjs-adapter-dayjs-4": "1.0.4",
"chartjs-plugin-zoom": "2.0.1",
"clippie": "4.1.3",
"css-loader": "7.1.2",
- "dayjs": "1.11.12",
+ "dayjs": "1.11.13",
"dropzone": "6.0.0-beta.2",
"easymde": "2.18.0",
"esbuild-loader": "4.2.2",
"escape-goat": "4.0.0",
"fast-glob": "3.3.2",
- "htmx.org": "2.0.2",
+ "htmx.org": "2.0.3",
"idiomorph": "0.3.0",
"jquery": "3.7.1",
"katex": "0.16.11",
"license-checker-webpack-plugin": "0.2.1",
"mermaid": "11.0.2",
- "mini-css-extract-plugin": "2.9.0",
+ "mini-css-extract-plugin": "2.9.1",
"minimatch": "10.0.1",
- "monaco-editor": "0.50.0",
+ "monaco-editor": "0.51.0",
"monaco-editor-webpack-plugin": "7.1.0",
"pdfobject": "2.3.0",
- "postcss": "8.4.40",
+ "postcss": "8.4.41",
"postcss-loader": "8.1.1",
- "postcss-nesting": "12.1.5",
+ "postcss-nesting": "13.0.0",
"sortablejs": "1.15.2",
"swagger-ui-dist": "5.17.14",
- "tailwindcss": "3.4.7",
+ "tailwindcss": "3.4.10",
"temporal-polyfill": "0.2.5",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
@@ -55,20 +55,20 @@
"typescript": "5.5.4",
"uint8-to-base64": "0.2.0",
"vanilla-colorful": "0.7.2",
- "vue": "3.4.35",
+ "vue": "3.4.38",
"vue-bar-graph": "2.1.0",
"vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
- "webpack": "5.93.0",
+ "webpack": "5.94.0",
"webpack-cli": "5.1.4",
"wrap-ansi": "9.0.0"
},
"devDependencies": {
- "@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
- "@playwright/test": "1.45.3",
+ "@eslint-community/eslint-plugin-eslint-comments": "4.4.0",
+ "@playwright/test": "1.46.1",
"@stoplight/spectral-cli": "6.11.1",
- "@stylistic/eslint-plugin-js": "2.6.1",
- "@stylistic/stylelint-plugin": "3.0.0",
+ "@stylistic/eslint-plugin-js": "2.6.5",
+ "@stylistic/stylelint-plugin": "3.0.1",
"@types/dropzone": "5.7.8",
"@types/jquery": "3.5.30",
"@types/katex": "0.16.7",
@@ -79,11 +79,11 @@
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/toastify-js": "1.12.3",
- "@typescript-eslint/eslint-plugin": "8.0.0",
- "@typescript-eslint/parser": "8.0.0",
+ "@typescript-eslint/eslint-plugin": "8.3.0",
+ "@typescript-eslint/parser": "8.3.0",
"@vitejs/plugin-vue": "5.1.2",
"eslint": "8.57.0",
- "eslint-import-resolver-typescript": "3.6.1",
+ "eslint-import-resolver-typescript": "3.6.3",
"eslint-plugin-array-func": "4.0.0",
"eslint-plugin-deprecation": "3.0.0",
"eslint-plugin-github": "5.0.1",
@@ -92,14 +92,14 @@
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-playwright": "1.6.2",
"eslint-plugin-regexp": "2.6.0",
- "eslint-plugin-sonarjs": "1.0.4",
+ "eslint-plugin-sonarjs": "2.0.1",
"eslint-plugin-unicorn": "55.0.0",
"eslint-plugin-vitest": "0.4.1",
"eslint-plugin-vitest-globals": "1.5.0",
"eslint-plugin-vue": "9.27.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
- "eslint-plugin-wc": "2.1.0",
- "happy-dom": "14.12.3",
+ "eslint-plugin-wc": "2.1.1",
+ "happy-dom": "15.3.1",
"markdownlint-cli": "0.41.0",
"nolyfill": "1.0.39",
"postcss-html": "1.7.0",
@@ -108,8 +108,8 @@
"stylelint-declaration-strict-value": "1.10.6",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.3.2",
- "type-fest": "4.23.0",
- "updates": "16.3.7",
+ "type-fest": "4.26.0",
+ "updates": "16.4.0",
"vite-string-plugin": "1.3.4",
"vitest": "2.0.5"
},
@@ -166,6 +166,377 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/compat-data": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
+ "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz",
+ "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.1",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.24.1",
+ "@babel/parser": "^7.24.1",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.1",
+ "@babel/types": "^7.24.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/eslint-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz",
+ "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
+ "eslint-visitor-keys": "^2.1.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.11.0",
+ "eslint": "^7.5.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.25.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz",
+ "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.4",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
+ "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
+ "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
+ "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.2",
+ "@babel/helper-validator-option": "^7.24.8",
+ "browserslist": "^4.23.1",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
+ "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/traverse": "^7.25.4",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
+ "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
+ "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.8",
+ "@babel/types": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
+ "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
+ "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
+ "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
+ "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-wrap-function": "^7.25.0",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
+ "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
+ "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-string-parser": {
"version": "7.24.8",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
@@ -184,6 +555,45 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
+ "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
+ "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
+ "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/highlight": {
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
@@ -258,12 +668,6 @@
"node": ">=4"
}
},
- "node_modules/@babel/highlight/node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
"node_modules/@babel/highlight/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -277,12 +681,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
- "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz",
+ "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.25.2"
+ "@babel/types": "^7.25.4"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -291,1707 +695,3261 @@
"node": ">=6.0.0"
}
},
- "node_modules/@babel/runtime": {
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
- "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
+ "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "regenerator-runtime": "^0.14.0"
+ "@babel/helper-plugin-utils": "^7.24.8"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/types": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
- "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
+ "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
}
},
- "node_modules/@braintree/sanitize-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz",
- "integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==",
- "license": "MIT"
- },
- "node_modules/@chevrotain/cst-dts-gen": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz",
- "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@chevrotain/gast": "11.0.3",
- "@chevrotain/types": "11.0.3",
- "lodash-es": "4.17.21"
- }
- },
- "node_modules/@chevrotain/gast": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz",
- "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==",
- "license": "Apache-2.0",
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
+ "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@chevrotain/types": "11.0.3",
- "lodash-es": "4.17.21"
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@chevrotain/regexp-to-ast": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz",
- "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==",
- "license": "Apache-2.0"
- },
- "node_modules/@chevrotain/types": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz",
- "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==",
- "license": "Apache-2.0"
- },
- "node_modules/@chevrotain/utils": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz",
- "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==",
- "license": "Apache-2.0"
- },
- "node_modules/@citation-js/core": {
- "version": "0.7.14",
- "resolved": "https://registry.npmjs.org/@citation-js/core/-/core-0.7.14.tgz",
- "integrity": "sha512-dgeGqYDSQmn2MtnWZkwPGpJQPh43yr1lAAr9jl1NJ9pIY1RXUQxtlAUZVur0V9PHdbfQC+kkvB1KC3VpgVV3MA==",
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz",
+ "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "@citation-js/name": "^0.4.2",
- "fetch-ponyfill": "^7.1.0",
- "sync-fetch": "^0.4.1"
+ "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-decorators": "^7.24.1"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/date": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@citation-js/date/-/date-0.5.1.tgz",
- "integrity": "sha512-1iDKAZ4ie48PVhovsOXQ+C6o55dWJloXqtznnnKy6CltJBQLIuLLuUqa8zlIvma0ZigjVjgDUhnVaNU1MErtZw==",
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">=10.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/name": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@citation-js/name/-/name-0.4.2.tgz",
- "integrity": "sha512-brSPsjs2fOVzSnARLKu0qncn6suWjHVQtrqSUrnqyaRH95r/Ad4wPF5EsoWr+Dx8HzkCGb/ogmoAzfCsqlTwTQ==",
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
"license": "MIT",
- "engines": {
- "node": ">=6"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-bibtex": {
- "version": "0.7.14",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-bibtex/-/plugin-bibtex-0.7.14.tgz",
- "integrity": "sha512-xHOHqhF6dthLRv46N9U+mQgYLiiWQHLvQWK9+mcBKz+/3NWge62Xb1oBouNWwLEPd5FV/8gp9fp7SOp93T0dUg==",
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "@citation-js/name": "^0.4.2",
- "moo": "^0.5.1"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"peerDependencies": {
- "@citation-js/core": "^0.7.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-cff": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-cff/-/plugin-cff-0.6.1.tgz",
- "integrity": "sha512-tLjTgsfzNOdQWGn5mNc2NAaydHnlRucSERoyAXLN7u0BQBfp7j5zwdxCmxcQD/N7hH3fpDKMG+qDzbqpJuKyNA==",
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "@citation-js/plugin-yaml": "^0.6.1"
+ "@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-csl": {
- "version": "0.7.14",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-csl/-/plugin-csl-0.7.14.tgz",
- "integrity": "sha512-7AKB8lMz1IqdtoE33NnWIpteLYMuSl3xqT+Cax7sQKwAIJEoq2HBmb43Ja8xQQ36nREAupQJv1V6XksIAmYnCg==",
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz",
+ "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "citeproc": "^2.4.6"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "@citation-js/core": "^0.7.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-github": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-github/-/plugin-github-0.6.1.tgz",
- "integrity": "sha512-1ZeSgQ5AoYsa8n2acVooUeRk76oA8rLszYNBjzj5z6MPa11BZlQJ9O+Gy4tHjlImvsENLbLPx5f8/V1VHXaCfQ==",
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "@citation-js/name": "^0.4.2"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
- "engines": {
- "node": ">=14.0.0"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-npm": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-npm/-/plugin-npm-0.6.1.tgz",
- "integrity": "sha512-rojJA+l/p2KBpDoY+8n0YfNyQO1Aw03fQR5BN+gXD1LNAP1V+8wqvdPsaHnzPsrhrd4ZXDR7ch/Nk0yynPkJ3Q==",
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "@citation-js/name": "^0.4.2"
+ "@babel/helper-plugin-utils": "^7.8.3"
},
- "engines": {
- "node": ">=14.0.0"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-software-formats": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-software-formats/-/plugin-software-formats-0.6.1.tgz",
- "integrity": "sha512-BDF9rqi56K0hoTgYTVANCFVRSbWKC9V06Uap7oa8SjqCTgnHJAy8t/F3NxsyYPPG+zmRsLW9VNbcIsJOl0eu/w==",
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz",
+ "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/plugin-cff": "^0.6.1",
- "@citation-js/plugin-github": "^0.6.1",
- "@citation-js/plugin-npm": "^0.6.1",
- "@citation-js/plugin-yaml": "^0.6.1",
- "@citation-js/plugin-zenodo": "^0.6.1"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-yaml": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-yaml/-/plugin-yaml-0.6.1.tgz",
- "integrity": "sha512-XEVVks1cJTqRbjy+nmthfw/puR6NwRB3fyJWi1tX13UYXlkhP/h45nsv4zjgLLGekdcMHQvhad9MAYunOftGKA==",
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
+ "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "js-yaml": "^4.0.0"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@citation-js/plugin-zenodo": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@citation-js/plugin-zenodo/-/plugin-zenodo-0.6.1.tgz",
- "integrity": "sha512-bUybENHoZqJ6gheUqgkumjI+mu+fA2bg6VoniDmZTb7Qng9iEpi+IWEAR26/vBE0gK0EWrJjczyDW3HCwrhvVw==",
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
+ "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@citation-js/date": "^0.5.0",
- "@citation-js/name": "^0.4.2"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/css-parser-algorithms": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
- "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
"license": "MIT",
- "engines": {
- "node": "^14 || ^16 || >=18"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^2.4.1"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/css-tokenizer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
- "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
"license": "MIT",
- "engines": {
- "node": "^14 || ^16 || >=18"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/media-query-list-parser": {
- "version": "2.1.13",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
- "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
+ "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^2.7.1",
- "@csstools/css-tokenizer": "^2.4.1"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/selector-resolve-nested": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz",
- "integrity": "sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "engines": {
- "node": "^14 || ^16 || >=18"
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
- "postcss-selector-parser": "^6.0.13"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/selector-specificity": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
- "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "engines": {
- "node": "^14 || ^16 || >=18"
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
- "postcss-selector-parser": "^6.0.13"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@discoveryjs/json-ext": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
"license": "MIT",
- "engines": {
- "node": ">=10.0.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@dual-bundle/import-meta-resolve": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
- "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==",
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
"license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
+ "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
+ "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-remap-async-to-generator": "^7.25.0",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/traverse": "^7.25.4"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
+ "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-remap-async-to-generator": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
+ "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
+ "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
+ "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.4",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
+ "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
}
},
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
+ "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/traverse": "^7.25.4",
+ "globals": "^11.1.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
+ "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">=12"
+ "node": ">=4"
}
},
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
+ "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/template": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
+ "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
+ "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
+ "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
+ "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
+ "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
+ "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz",
+ "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-flow": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
+ "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint-community/eslint-plugin-eslint-comments": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.3.0.tgz",
- "integrity": "sha512-6e93KtgsndNkvwCCa07LOQJSwzzLLxwrFll3+huyFoiiQXWG0KBcmo0Q1bVgYQQDLfWOOZl2VPBsXqZL6vHIBQ==",
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
+ "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "escape-string-regexp": "^4.0.0",
- "ignore": "^5.2.4"
+ "@babel/helper-compilation-targets": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
+ "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
+ "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
- "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
+ "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
+ "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
+ "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
+ "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
+ "@babel/helper-module-transforms": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-simple-access": "^7.24.7"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
+ "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "@babel/helper-module-transforms": "^7.25.0",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
+ "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": "*"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
+ "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@github/browserslist-config": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz",
- "integrity": "sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==",
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
+ "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/@github/combobox-nav": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@github/combobox-nav/-/combobox-nav-2.3.1.tgz",
- "integrity": "sha512-gwxPzLw8XKecy1nP63i9lOBritS3bWmxl02UX6G0TwMQZbMem1BCS1tEZgYd3mkrkiDrUMWaX+DbFCuDFo3K+A==",
- "license": "MIT"
- },
- "node_modules/@github/markdown-toolbar-element": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@github/markdown-toolbar-element/-/markdown-toolbar-element-2.2.3.tgz",
- "integrity": "sha512-AlquKGee+IWiAMYVB0xyHFZRMnu4n3X4HTvJHu79GiVJ1ojTukCWyxMlF5NMsecoLcBKsuBhx3QPv2vkE/zQ0A==",
- "license": "MIT"
- },
- "node_modules/@github/relative-time-element": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-4.4.3.tgz",
- "integrity": "sha512-EVKokqx9/DdUAZ2l9WVyY51EtRCO2gQWWMvsRIn7r4glJ91q9CXcnILVHZVCpfD52ucXUhUvtYsAjNJ4qP4uIg=="
- },
- "node_modules/@github/text-expander-element": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/@github/text-expander-element/-/text-expander-element-2.7.1.tgz",
- "integrity": "sha512-CWxfYxJRkeWVCUhJveproLs6pHsPrWtK8TsjL8ByYVcSCs8CJmNzF8b7ZawrUgfai0F2jb4aIdw2FoBTykj9XA==",
"license": "MIT",
"dependencies": {
- "@github/combobox-nav": "^2.0.2",
- "dom-input-range": "^1.1.6"
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "deprecated": "Use @eslint/config-array instead",
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
+ "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
+ "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
+ "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.24.7"
},
"engines": {
- "node": "*"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
+ "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.24.7"
+ },
"engines": {
- "node": ">=12.22"
+ "node": ">=6.9.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
+ "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
"dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
},
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
+ "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
+ "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@isaacs/cliui/node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
+ "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
+ "@babel/helper-create-class-features-plugin": "^7.25.4",
+ "@babel/helper-plugin-utils": "^7.24.8"
},
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
+ "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "ansi-regex": "^6.0.1"
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
+ "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz",
+ "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz",
+ "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/types": "^7.25.2"
+ },
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz",
+ "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.24.7"
+ },
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz",
+ "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
+ "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jsep-plugin/regex": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.3.tgz",
- "integrity": "sha512-XfZgry4DwEZvSFtS/6Y+R48D7qJYJK6R9/yJFyUFHCIUMEEHuJ4X95TDgJp5QkmzfLYvapMPzskV5HpIDrREug==",
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
+ "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">= 10.16.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "jsep": "^0.4.0||^1.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jsep-plugin/ternary": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.3.tgz",
- "integrity": "sha512-qtLGzCNzPVJ3kdH6/zoLWDPjauHIKiLSBAR71Wa0+PWvGA8wODUQvRgxtpUA5YqAYL3CQ8S4qXhd/9WuWTZirg==",
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
+ "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">= 10.16.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "jsep": "^0.4.0||^1.0.0"
- }
- },
- "node_modules/@kurkle/color": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
- "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
- "license": "MIT"
- },
- "node_modules/@mcaptcha/core-glue": {
- "version": "0.1.0-alpha-5",
- "resolved": "https://registry.npmjs.org/@mcaptcha/core-glue/-/core-glue-0.1.0-alpha-5.tgz",
- "integrity": "sha512-16qWm5O5X0Y9LXULULaAks8Vf9FNlUUBcR5KDt49aWhFhG5++JzxNmCwQM9EJSHNU7y0U+FdyAWcGmjfKlkRLA==",
- "funding": [
- {
- "type": "individual",
- "url": "http://mcaptcha.org/donate"
- },
- {
- "type": "liberapay",
- "url": "https://liberapay.com/mcaptcha"
- },
- {
- "type": "individual",
- "url": "http://batsense.net/donate"
- },
- {
- "type": "liberapay",
- "url": "https://liberapay.com/realaravinth"
- }
- ],
- "license": "(MIT OR Apache-2.0)"
- },
- "node_modules/@mcaptcha/vanilla-glue": {
- "version": "0.1.0-alpha-3",
- "resolved": "https://registry.npmjs.org/@mcaptcha/vanilla-glue/-/vanilla-glue-0.1.0-alpha-3.tgz",
- "integrity": "sha512-GT6TJBgmViGXcXiT5VOr+h/6iOnThSlZuCoOWncubyTZU9R3cgU5vWPkF7G6Ob6ee2CBe3yqBxxk24CFVGTVXw==",
- "funding": [
- {
- "type": "individual",
- "url": "http://mcaptcha.org/donate"
- },
- {
- "type": "liberapay",
- "url": "https://liberapay.com/mcaptcha"
- },
- {
- "type": "individual",
- "url": "http://batsense.net/donate"
- },
- {
- "type": "liberapay",
- "url": "https://liberapay.com/realaravinth"
- }
- ],
- "license": "(MIT OR Apache-2.0)",
- "dependencies": {
- "@mcaptcha/core-glue": "^0.1.0-alpha-5"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@mermaid-js/parser": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.2.0.tgz",
- "integrity": "sha512-33dyFdhwsX9n4+E8SRj1ulxwAgwCj9RyCMtoqXD5cDfS9F6y9xmvmjFjHoPaViH4H7I7BXD8yP/XEWig5XrHSQ==",
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
+ "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "langium": "3.0.0"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
+ "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">= 8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
+ "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">= 8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
+ "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
+ "@babel/helper-plugin-utils": "^7.24.8"
},
"engines": {
- "node": ">= 8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nolyfill/shared": {
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.28.tgz",
- "integrity": "sha512-UJTshFMDgugBcYXGLopbL1enYpGREOEfjUMQKLPLeJqWfbfElGtYbGbUcucCENa7cicGo3M5u/DnPiZe/PYQyw==",
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
+ "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"license": "MIT",
- "optional": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": ">=14"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@pkgr/core": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
- "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
+ "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
"engines": {
- "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://opencollective.com/unts"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@playwright/test": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.3.tgz",
- "integrity": "sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==",
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
+ "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "playwright": "1.45.3"
- },
- "bin": {
- "playwright": "cli.js"
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
- "node": ">=18"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
+ "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
+ "dev": true,
"license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz",
+ "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.24.1",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.24.1",
+ "@babel/plugin-syntax-import-attributes": "^7.24.1",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.24.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.24.3",
+ "@babel/plugin-transform-async-to-generator": "^7.24.1",
+ "@babel/plugin-transform-block-scoped-functions": "^7.24.1",
+ "@babel/plugin-transform-block-scoping": "^7.24.1",
+ "@babel/plugin-transform-class-properties": "^7.24.1",
+ "@babel/plugin-transform-class-static-block": "^7.24.1",
+ "@babel/plugin-transform-classes": "^7.24.1",
+ "@babel/plugin-transform-computed-properties": "^7.24.1",
+ "@babel/plugin-transform-destructuring": "^7.24.1",
+ "@babel/plugin-transform-dotall-regex": "^7.24.1",
+ "@babel/plugin-transform-duplicate-keys": "^7.24.1",
+ "@babel/plugin-transform-dynamic-import": "^7.24.1",
+ "@babel/plugin-transform-exponentiation-operator": "^7.24.1",
+ "@babel/plugin-transform-export-namespace-from": "^7.24.1",
+ "@babel/plugin-transform-for-of": "^7.24.1",
+ "@babel/plugin-transform-function-name": "^7.24.1",
+ "@babel/plugin-transform-json-strings": "^7.24.1",
+ "@babel/plugin-transform-literals": "^7.24.1",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.1",
+ "@babel/plugin-transform-member-expression-literals": "^7.24.1",
+ "@babel/plugin-transform-modules-amd": "^7.24.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.1",
+ "@babel/plugin-transform-modules-systemjs": "^7.24.1",
+ "@babel/plugin-transform-modules-umd": "^7.24.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.24.1",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
+ "@babel/plugin-transform-numeric-separator": "^7.24.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.1",
+ "@babel/plugin-transform-object-super": "^7.24.1",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.1",
+ "@babel/plugin-transform-optional-chaining": "^7.24.1",
+ "@babel/plugin-transform-parameters": "^7.24.1",
+ "@babel/plugin-transform-private-methods": "^7.24.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.1",
+ "@babel/plugin-transform-property-literals": "^7.24.1",
+ "@babel/plugin-transform-regenerator": "^7.24.1",
+ "@babel/plugin-transform-reserved-words": "^7.24.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.1",
+ "@babel/plugin-transform-spread": "^7.24.1",
+ "@babel/plugin-transform-sticky-regex": "^7.24.1",
+ "@babel/plugin-transform-template-literals": "^7.24.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.1",
+ "@babel/plugin-transform-unicode-escapes": "^7.24.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.24.1",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.4",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@primer/octicons": {
- "version": "19.11.0",
- "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-19.11.0.tgz",
- "integrity": "sha512-dJfi3I7zF4JyqHyHpxaUliUa//w4AmTYAo0i5KgKbz92ZQ0IizRU1rlW+eVdYk5nitAebpUX7gnKceZBDGW3XQ==",
- "license": "MIT",
- "dependencies": {
- "object-assign": "^4.1.1"
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "node_modules/@rollup/plugin-commonjs": {
- "version": "22.0.2",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz",
- "integrity": "sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==",
+ "node_modules/@babel/preset-flow": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz",
+ "integrity": "sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-transform-flow-strip-types": "^7.24.1"
},
"engines": {
- "node": ">= 12.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "rollup": "^2.68.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz",
+ "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-transform-react-display-name": "^7.24.1",
+ "@babel/plugin-transform-react-jsx": "^7.23.4",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.24.1"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
"dev": true,
"license": "MIT"
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.2.tgz",
- "integrity": "sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
+ "node_modules/@babel/runtime": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz",
+ "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==",
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.2.tgz",
- "integrity": "sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/template": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+ "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz",
- "integrity": "sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@babel/traverse": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz",
+ "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.4",
+ "@babel/parser": "^7.25.4",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.4",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.2.tgz",
- "integrity": "sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.2.tgz",
- "integrity": "sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
+ "node_modules/@babel/types": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz",
+ "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.2.tgz",
- "integrity": "sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "node_modules/@braintree/sanitize-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz",
+ "integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==",
+ "license": "MIT"
},
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.2.tgz",
- "integrity": "sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "node_modules/@chevrotain/cst-dts-gen": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz",
+ "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/gast": "11.0.3",
+ "@chevrotain/types": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.2.tgz",
- "integrity": "sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "node_modules/@chevrotain/gast": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz",
+ "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/types": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
},
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.2.tgz",
- "integrity": "sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "node_modules/@chevrotain/regexp-to-ast": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz",
+ "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==",
+ "license": "Apache-2.0"
},
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.2.tgz",
- "integrity": "sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "node_modules/@chevrotain/types": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz",
+ "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==",
+ "license": "Apache-2.0"
},
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.2.tgz",
- "integrity": "sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "node_modules/@chevrotain/utils": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz",
+ "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==",
+ "license": "Apache-2.0"
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.2.tgz",
- "integrity": "sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
+ "node_modules/@citation-js/core": {
+ "version": "0.7.14",
+ "resolved": "https://registry.npmjs.org/@citation-js/core/-/core-0.7.14.tgz",
+ "integrity": "sha512-dgeGqYDSQmn2MtnWZkwPGpJQPh43yr1lAAr9jl1NJ9pIY1RXUQxtlAUZVur0V9PHdbfQC+kkvB1KC3VpgVV3MA==",
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "dependencies": {
+ "@citation-js/date": "^0.5.0",
+ "@citation-js/name": "^0.4.2",
+ "fetch-ponyfill": "^7.1.0",
+ "sync-fetch": "^0.4.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.2.tgz",
- "integrity": "sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
+ "node_modules/@citation-js/date": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/date/-/date-0.5.1.tgz",
+ "integrity": "sha512-1iDKAZ4ie48PVhovsOXQ+C6o55dWJloXqtznnnKy6CltJBQLIuLLuUqa8zlIvma0ZigjVjgDUhnVaNU1MErtZw==",
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": ">=10.0.0"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.2.tgz",
- "integrity": "sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
+ "node_modules/@citation-js/name": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@citation-js/name/-/name-0.4.2.tgz",
+ "integrity": "sha512-brSPsjs2fOVzSnARLKu0qncn6suWjHVQtrqSUrnqyaRH95r/Ad4wPF5EsoWr+Dx8HzkCGb/ogmoAzfCsqlTwTQ==",
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "engines": {
+ "node": ">=6"
+ }
},
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.2.tgz",
- "integrity": "sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
+ "node_modules/@citation-js/plugin-bibtex": {
+ "version": "0.7.14",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-bibtex/-/plugin-bibtex-0.7.14.tgz",
+ "integrity": "sha512-xHOHqhF6dthLRv46N9U+mQgYLiiWQHLvQWK9+mcBKz+/3NWge62Xb1oBouNWwLEPd5FV/8gp9fp7SOp93T0dUg==",
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "dependencies": {
+ "@citation-js/date": "^0.5.0",
+ "@citation-js/name": "^0.4.2",
+ "moo": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@citation-js/core": "^0.7.0"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.2.tgz",
- "integrity": "sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
+ "node_modules/@citation-js/plugin-cff": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-cff/-/plugin-cff-0.6.1.tgz",
+ "integrity": "sha512-tLjTgsfzNOdQWGn5mNc2NAaydHnlRucSERoyAXLN7u0BQBfp7j5zwdxCmxcQD/N7hH3fpDKMG+qDzbqpJuKyNA==",
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "dependencies": {
+ "@citation-js/date": "^0.5.0",
+ "@citation-js/plugin-yaml": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "node_modules/@silverwind/vue3-calendar-heatmap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@silverwind/vue3-calendar-heatmap/-/vue3-calendar-heatmap-2.0.6.tgz",
- "integrity": "sha512-efX+nf2GR7EfA7iNgZDeM9Jue5ksglSXvN0C/ja0M1bTmkCpAxKlGJ3vki7wfTPQgX1O0nCfAM62IKqUUEM0cQ==",
+ "node_modules/@citation-js/plugin-csl": {
+ "version": "0.7.14",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-csl/-/plugin-csl-0.7.14.tgz",
+ "integrity": "sha512-7AKB8lMz1IqdtoE33NnWIpteLYMuSl3xqT+Cax7sQKwAIJEoq2HBmb43Ja8xQQ36nREAupQJv1V6XksIAmYnCg==",
"license": "MIT",
+ "dependencies": {
+ "@citation-js/date": "^0.5.0",
+ "citeproc": "^2.4.6"
+ },
"engines": {
- "node": ">=16"
+ "node": ">=16.0.0"
},
"peerDependencies": {
- "tippy.js": "^6.3.7",
- "vue": "^3.2.29"
+ "@citation-js/core": "^0.7.0"
}
},
- "node_modules/@stoplight/better-ajv-errors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz",
- "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@citation-js/plugin-github": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-github/-/plugin-github-0.6.1.tgz",
+ "integrity": "sha512-1ZeSgQ5AoYsa8n2acVooUeRk76oA8rLszYNBjzj5z6MPa11BZlQJ9O+Gy4tHjlImvsENLbLPx5f8/V1VHXaCfQ==",
+ "license": "MIT",
"dependencies": {
- "jsonpointer": "^5.0.0",
- "leven": "^3.1.0"
+ "@citation-js/date": "^0.5.0",
+ "@citation-js/name": "^0.4.2"
},
"engines": {
- "node": "^12.20 || >= 14.13"
- },
- "peerDependencies": {
- "ajv": ">=8"
+ "node": ">=14.0.0"
}
},
- "node_modules/@stoplight/json": {
- "version": "3.21.6",
- "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.6.tgz",
- "integrity": "sha512-KGisXfNigoYdWIj1jA4p3IAAIW5YFpU9BdoECdjyDLBbhWGGHzs77e0STSCBmXQ/K3ApxfED2R7mQ79ymjzlvQ==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@citation-js/plugin-npm": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-npm/-/plugin-npm-0.6.1.tgz",
+ "integrity": "sha512-rojJA+l/p2KBpDoY+8n0YfNyQO1Aw03fQR5BN+gXD1LNAP1V+8wqvdPsaHnzPsrhrd4ZXDR7ch/Nk0yynPkJ3Q==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/ordered-object-literal": "^1.0.3",
- "@stoplight/path": "^1.3.2",
- "@stoplight/types": "^13.6.0",
- "jsonc-parser": "~2.2.1",
- "lodash": "^4.17.21",
- "safe-stable-stringify": "^1.1"
+ "@citation-js/date": "^0.5.0",
+ "@citation-js/name": "^0.4.2"
},
"engines": {
- "node": ">=8.3.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@stoplight/json-ref-readers": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz",
- "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@citation-js/plugin-software-formats": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-software-formats/-/plugin-software-formats-0.6.1.tgz",
+ "integrity": "sha512-BDF9rqi56K0hoTgYTVANCFVRSbWKC9V06Uap7oa8SjqCTgnHJAy8t/F3NxsyYPPG+zmRsLW9VNbcIsJOl0eu/w==",
+ "license": "MIT",
"dependencies": {
- "node-fetch": "^2.6.0",
- "tslib": "^1.14.1"
+ "@citation-js/plugin-cff": "^0.6.1",
+ "@citation-js/plugin-github": "^0.6.1",
+ "@citation-js/plugin-npm": "^0.6.1",
+ "@citation-js/plugin-yaml": "^0.6.1",
+ "@citation-js/plugin-zenodo": "^0.6.1"
},
"engines": {
- "node": ">=8.3.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@stoplight/json-ref-readers/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true,
- "license": "0BSD"
+ "node_modules/@citation-js/plugin-yaml": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-yaml/-/plugin-yaml-0.6.1.tgz",
+ "integrity": "sha512-XEVVks1cJTqRbjy+nmthfw/puR6NwRB3fyJWi1tX13UYXlkhP/h45nsv4zjgLLGekdcMHQvhad9MAYunOftGKA==",
+ "license": "MIT",
+ "dependencies": {
+ "js-yaml": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "node_modules/@stoplight/json-ref-resolver": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz",
- "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@citation-js/plugin-zenodo": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@citation-js/plugin-zenodo/-/plugin-zenodo-0.6.1.tgz",
+ "integrity": "sha512-bUybENHoZqJ6gheUqgkumjI+mu+fA2bg6VoniDmZTb7Qng9iEpi+IWEAR26/vBE0gK0EWrJjczyDW3HCwrhvVw==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/json": "^3.21.0",
- "@stoplight/path": "^1.3.2",
- "@stoplight/types": "^12.3.0 || ^13.0.0",
- "@types/urijs": "^1.19.19",
- "dependency-graph": "~0.11.0",
- "fast-memoize": "^2.5.2",
- "immer": "^9.0.6",
- "lodash": "^4.17.21",
- "tslib": "^2.6.0",
- "urijs": "^1.19.11"
+ "@citation-js/date": "^0.5.0",
+ "@citation-js/name": "^0.4.2"
},
"engines": {
- "node": ">=8.3.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@stoplight/ordered-object-literal": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz",
- "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==",
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz",
+ "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==",
"dev": true,
- "license": "Apache-2.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.1"
}
},
- "node_modules/@stoplight/path": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz",
- "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==",
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz",
+ "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==",
"dev": true,
- "license": "Apache-2.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz",
+ "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.1",
+ "@csstools/css-tokenizer": "^3.0.1"
+ }
+ },
+ "node_modules/@csstools/selector-resolve-nested": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-2.0.0.tgz",
+ "integrity": "sha512-oklSrRvOxNeeOW1yARd4WNCs/D09cQjunGZUgSq6vM8GpzFswN+8rBZyJA29YFZhOTQ6GFzxgLDNtVbt9wPZMA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.1.0"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz",
+ "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.1.0"
+ }
+ },
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@dual-bundle/import-meta-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+ "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-plugin-eslint-comments": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.4.0.tgz",
+ "integrity": "sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0",
+ "ignore": "^5.2.4"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.11.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
+ "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@github/browserslist-config": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz",
+ "integrity": "sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@github/combobox-nav": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@github/combobox-nav/-/combobox-nav-2.3.1.tgz",
+ "integrity": "sha512-gwxPzLw8XKecy1nP63i9lOBritS3bWmxl02UX6G0TwMQZbMem1BCS1tEZgYd3mkrkiDrUMWaX+DbFCuDFo3K+A==",
+ "license": "MIT"
+ },
+ "node_modules/@github/markdown-toolbar-element": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@github/markdown-toolbar-element/-/markdown-toolbar-element-2.2.3.tgz",
+ "integrity": "sha512-AlquKGee+IWiAMYVB0xyHFZRMnu4n3X4HTvJHu79GiVJ1ojTukCWyxMlF5NMsecoLcBKsuBhx3QPv2vkE/zQ0A==",
+ "license": "MIT"
+ },
+ "node_modules/@github/relative-time-element": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-4.4.3.tgz",
+ "integrity": "sha512-EVKokqx9/DdUAZ2l9WVyY51EtRCO2gQWWMvsRIn7r4glJ91q9CXcnILVHZVCpfD52ucXUhUvtYsAjNJ4qP4uIg==",
+ "license": "MIT"
+ },
+ "node_modules/@github/text-expander-element": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@github/text-expander-element/-/text-expander-element-2.7.1.tgz",
+ "integrity": "sha512-CWxfYxJRkeWVCUhJveproLs6pHsPrWtK8TsjL8ByYVcSCs8CJmNzF8b7ZawrUgfai0F2jb4aIdw2FoBTykj9XA==",
+ "license": "MIT",
+ "dependencies": {
+ "@github/combobox-nav": "^2.0.2",
+ "dom-input-range": "^1.1.6"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@jsep-plugin/regex": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.3.tgz",
+ "integrity": "sha512-XfZgry4DwEZvSFtS/6Y+R48D7qJYJK6R9/yJFyUFHCIUMEEHuJ4X95TDgJp5QkmzfLYvapMPzskV5HpIDrREug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.16.0"
+ },
+ "peerDependencies": {
+ "jsep": "^0.4.0||^1.0.0"
+ }
+ },
+ "node_modules/@jsep-plugin/ternary": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.3.tgz",
+ "integrity": "sha512-qtLGzCNzPVJ3kdH6/zoLWDPjauHIKiLSBAR71Wa0+PWvGA8wODUQvRgxtpUA5YqAYL3CQ8S4qXhd/9WuWTZirg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.16.0"
+ },
+ "peerDependencies": {
+ "jsep": "^0.4.0||^1.0.0"
+ }
+ },
+ "node_modules/@kurkle/color": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
+ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
+ "license": "MIT"
+ },
+ "node_modules/@mcaptcha/core-glue": {
+ "version": "0.1.0-alpha-5",
+ "resolved": "https://registry.npmjs.org/@mcaptcha/core-glue/-/core-glue-0.1.0-alpha-5.tgz",
+ "integrity": "sha512-16qWm5O5X0Y9LXULULaAks8Vf9FNlUUBcR5KDt49aWhFhG5++JzxNmCwQM9EJSHNU7y0U+FdyAWcGmjfKlkRLA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "http://mcaptcha.org/donate"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/mcaptcha"
+ },
+ {
+ "type": "individual",
+ "url": "http://batsense.net/donate"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/realaravinth"
+ }
+ ],
+ "license": "(MIT OR Apache-2.0)"
+ },
+ "node_modules/@mcaptcha/vanilla-glue": {
+ "version": "0.1.0-alpha-3",
+ "resolved": "https://registry.npmjs.org/@mcaptcha/vanilla-glue/-/vanilla-glue-0.1.0-alpha-3.tgz",
+ "integrity": "sha512-GT6TJBgmViGXcXiT5VOr+h/6iOnThSlZuCoOWncubyTZU9R3cgU5vWPkF7G6Ob6ee2CBe3yqBxxk24CFVGTVXw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "http://mcaptcha.org/donate"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/mcaptcha"
+ },
+ {
+ "type": "individual",
+ "url": "http://batsense.net/donate"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/realaravinth"
+ }
+ ],
+ "license": "(MIT OR Apache-2.0)",
+ "dependencies": {
+ "@mcaptcha/core-glue": "^0.1.0-alpha-5"
+ }
+ },
+ "node_modules/@mermaid-js/parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.2.0.tgz",
+ "integrity": "sha512-33dyFdhwsX9n4+E8SRj1ulxwAgwCj9RyCMtoqXD5cDfS9F6y9xmvmjFjHoPaViH4H7I7BXD8yP/XEWig5XrHSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "langium": "3.0.0"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+ "version": "5.1.1-v1",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
+ "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-scope": "5.1.1"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nolyfill/is-core-module": {
+ "version": "1.0.39",
+ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
+ "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/@nolyfill/shared": {
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.28.tgz",
+ "integrity": "sha512-UJTshFMDgugBcYXGLopbL1enYpGREOEfjUMQKLPLeJqWfbfElGtYbGbUcucCENa7cicGo3M5u/DnPiZe/PYQyw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@pkgr/core": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
+ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@playwright/test": {
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.46.1.tgz",
+ "integrity": "sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright": "1.46.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@primer/octicons": {
+ "version": "19.11.0",
+ "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-19.11.0.tgz",
+ "integrity": "sha512-dJfi3I7zF4JyqHyHpxaUliUa//w4AmTYAo0i5KgKbz92ZQ0IizRU1rlW+eVdYk5nitAebpUX7gnKceZBDGW3XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4.1.1"
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs": {
+ "version": "22.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz",
+ "integrity": "sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.1",
+ "glob": "^7.1.6",
+ "is-reference": "^1.2.1",
+ "magic-string": "^0.25.7",
+ "resolve": "^1.17.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.68.0"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz",
+ "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz",
+ "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz",
+ "integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz",
+ "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz",
+ "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz",
+ "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz",
+ "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz",
+ "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz",
+ "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz",
+ "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz",
+ "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz",
+ "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz",
+ "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz",
+ "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz",
+ "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz",
+ "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@silverwind/vue3-calendar-heatmap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@silverwind/vue3-calendar-heatmap/-/vue3-calendar-heatmap-2.0.6.tgz",
+ "integrity": "sha512-efX+nf2GR7EfA7iNgZDeM9Jue5ksglSXvN0C/ja0M1bTmkCpAxKlGJ3vki7wfTPQgX1O0nCfAM62IKqUUEM0cQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "tippy.js": "^6.3.7",
+ "vue": "^3.2.29"
+ }
+ },
+ "node_modules/@stoplight/better-ajv-errors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz",
+ "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jsonpointer": "^5.0.0",
+ "leven": "^3.1.0"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ },
+ "peerDependencies": {
+ "ajv": ">=8"
+ }
+ },
+ "node_modules/@stoplight/json": {
+ "version": "3.21.6",
+ "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.6.tgz",
+ "integrity": "sha512-KGisXfNigoYdWIj1jA4p3IAAIW5YFpU9BdoECdjyDLBbhWGGHzs77e0STSCBmXQ/K3ApxfED2R7mQ79ymjzlvQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/ordered-object-literal": "^1.0.3",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^13.6.0",
+ "jsonc-parser": "~2.2.1",
+ "lodash": "^4.17.21",
+ "safe-stable-stringify": "^1.1"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-readers": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz",
+ "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "node-fetch": "^2.6.0",
+ "tslib": "^1.14.1"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-readers/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/@stoplight/json-ref-resolver": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz",
+ "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json": "^3.21.0",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^12.3.0 || ^13.0.0",
+ "@types/urijs": "^1.19.19",
+ "dependency-graph": "~0.11.0",
+ "fast-memoize": "^2.5.2",
+ "immer": "^9.0.6",
+ "lodash": "^4.17.21",
+ "tslib": "^2.6.0",
+ "urijs": "^1.19.11"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/ordered-object-literal": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz",
+ "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stoplight/path": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz",
+ "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/@stoplight/spectral-cli": {
@@ -1999,3699 +3957,4922 @@
"resolved": "https://registry.npmjs.org/@stoplight/spectral-cli/-/spectral-cli-6.11.1.tgz",
"integrity": "sha512-1zqsQ0TOuVSnxxZ9mHBfC0IygV6ex7nAY6Mp59mLmw5fW103U9yPVK5ZcX9ZngCmr3PdteAnMDUIIaoDGso6nA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json": "~3.21.0",
+ "@stoplight/path": "1.3.2",
+ "@stoplight/spectral-core": "^1.18.3",
+ "@stoplight/spectral-formatters": "^1.3.0",
+ "@stoplight/spectral-parsers": "^1.0.3",
+ "@stoplight/spectral-ref-resolver": "^1.0.4",
+ "@stoplight/spectral-ruleset-bundler": "^1.5.2",
+ "@stoplight/spectral-ruleset-migrator": "^1.9.5",
+ "@stoplight/spectral-rulesets": ">=1",
+ "@stoplight/spectral-runtime": "^1.1.2",
+ "@stoplight/types": "^13.6.0",
+ "chalk": "4.1.2",
+ "fast-glob": "~3.2.12",
+ "hpagent": "~1.2.0",
+ "lodash": "~4.17.21",
+ "pony-cause": "^1.0.0",
+ "stacktracey": "^2.1.7",
+ "tslib": "^2.3.0",
+ "yargs": "~17.7.2"
+ },
+ "bin": {
+ "spectral": "dist/index.js"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-cli/node_modules/fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/@stoplight/spectral-cli/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@stoplight/spectral-core": {
+ "version": "1.18.3",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.18.3.tgz",
+ "integrity": "sha512-YY8x7X2SWJIhGTLPol+eFiQpWPz0D0mJdkK2i4A0QJG68KkNhypP6+JBC7/Kz3XWjqr0L/RqAd+N5cQLPOKZGQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/better-ajv-errors": "1.0.3",
+ "@stoplight/json": "~3.21.0",
+ "@stoplight/path": "1.3.2",
+ "@stoplight/spectral-parsers": "^1.0.0",
+ "@stoplight/spectral-ref-resolver": "^1.0.0",
+ "@stoplight/spectral-runtime": "^1.0.0",
+ "@stoplight/types": "~13.6.0",
+ "@types/es-aggregate-error": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "ajv": "^8.6.0",
+ "ajv-errors": "~3.0.0",
+ "ajv-formats": "~2.1.0",
+ "es-aggregate-error": "^1.0.7",
+ "jsonpath-plus": "7.1.0",
+ "lodash": "~4.17.21",
+ "lodash.topath": "^4.5.2",
+ "minimatch": "3.1.2",
+ "nimma": "0.2.2",
+ "pony-cause": "^1.0.0",
+ "simple-eval": "1.0.0",
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-core/node_modules/@stoplight/types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz",
+ "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-core/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@stoplight/spectral-core/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@stoplight/spectral-formats": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz",
+ "integrity": "sha512-X27qhUfNluiduH0u/QwJqhOd8Wk5YKdxVmKM03Aijlx0AH1H5mYt3l9r7t2L4iyJrsBaFPnMGt7UYJDGxszbNA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json": "^3.17.0",
+ "@stoplight/spectral-core": "^1.8.0",
+ "@types/json-schema": "^7.0.7",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-formatters": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-formatters/-/spectral-formatters-1.3.0.tgz",
+ "integrity": "sha512-ryuMwlzbPUuyn7ybSEbFYsljYmvTaTyD51wyCQs4ROzgfm3Yo5QDD0IsiJUzUpKK/Ml61ZX8ebgiPiRFEJtBpg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/spectral-core": "^1.15.1",
+ "@stoplight/spectral-runtime": "^1.1.0",
+ "@stoplight/types": "^13.15.0",
+ "chalk": "4.1.2",
+ "cliui": "7.0.4",
+ "lodash": "^4.17.21",
+ "node-sarif-builder": "^2.0.3",
+ "strip-ansi": "6.0",
+ "text-table": "^0.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-functions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.8.0.tgz",
+ "integrity": "sha512-ZrAkYA/ZGbuQ6EyG1gisF4yQ5nWP/+glcqVoGmS6kH6ekaynz2Yp6FL0oIamWj3rWedFUN7ppwTRUdo+9f/uCw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/better-ajv-errors": "1.0.3",
+ "@stoplight/json": "^3.17.1",
+ "@stoplight/spectral-core": "^1.7.0",
+ "@stoplight/spectral-formats": "^1.0.0",
+ "@stoplight/spectral-runtime": "^1.1.0",
+ "ajv": "^8.6.3",
+ "ajv-draft-04": "~1.0.0",
+ "ajv-errors": "~3.0.0",
+ "ajv-formats": "~2.1.0",
+ "lodash": "~4.17.21",
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-parsers": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.4.tgz",
+ "integrity": "sha512-nCTVvtX6q71M8o5Uvv9kxU31Gk1TRmgD6/k8HBhdCmKG6FWcwgjiZouA/R3xHLn/VwTI/9k8SdG5Mkdy0RBqbQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json": "~3.21.0",
+ "@stoplight/types": "^14.1.1",
+ "@stoplight/yaml": "~4.3.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-parsers/node_modules/@stoplight/types": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
+ "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-ref-resolver": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.4.tgz",
+ "integrity": "sha512-5baQIYL0NJTSVy8v6RxOR4U51xOUYM8wJri1YvlAT6bPN8m0EIxMwfVYi0xUZEMVeHcWx869nIkoqyWmOutF2A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json-ref-readers": "1.2.2",
+ "@stoplight/json-ref-resolver": "~3.1.6",
+ "@stoplight/spectral-runtime": "^1.1.2",
+ "dependency-graph": "0.11.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-ruleset-bundler": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-bundler/-/spectral-ruleset-bundler-1.5.2.tgz",
+ "integrity": "sha512-4QUVUFAU+S7IQ9XeCu+0TQMYxKFpKnkOAfa9unRQ1iPL2cviaipEN6witpbAptdHJD3UUjx4OnwlX8WwmXSq9w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@rollup/plugin-commonjs": "~22.0.2",
+ "@stoplight/path": "1.3.2",
+ "@stoplight/spectral-core": ">=1",
+ "@stoplight/spectral-formats": ">=1",
+ "@stoplight/spectral-functions": ">=1",
+ "@stoplight/spectral-parsers": ">=1",
+ "@stoplight/spectral-ref-resolver": ">=1",
+ "@stoplight/spectral-ruleset-migrator": "^1.7.4",
+ "@stoplight/spectral-rulesets": ">=1",
+ "@stoplight/spectral-runtime": "^1.1.0",
+ "@stoplight/types": "^13.6.0",
+ "@types/node": "*",
+ "pony-cause": "1.1.1",
+ "rollup": "~2.79.0",
+ "tslib": "^2.3.1",
+ "validate-npm-package-name": "3.0.0"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-ruleset-migrator": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.9.5.tgz",
+ "integrity": "sha512-76n/HETr3UinVl/xLNldrH9p0JNoD8Gz4K75J6E4OHp4xD0P+BA2e8+W30HjIvqm1LJdLU2BNma0ioy+q3B9RA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json": "~3.21.0",
+ "@stoplight/ordered-object-literal": "~1.0.4",
+ "@stoplight/path": "1.3.2",
+ "@stoplight/spectral-functions": "^1.0.0",
+ "@stoplight/spectral-runtime": "^1.1.0",
+ "@stoplight/types": "^13.6.0",
+ "@stoplight/yaml": "~4.2.3",
+ "@types/node": "*",
+ "ajv": "^8.6.0",
+ "ast-types": "0.14.2",
+ "astring": "^1.7.5",
+ "reserved": "0.1.2",
+ "tslib": "^2.3.1",
+ "validate-npm-package-name": "3.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-ruleset-migrator/node_modules/@stoplight/yaml": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.2.3.tgz",
+ "integrity": "sha512-Mx01wjRAR9C7yLMUyYFTfbUf5DimEpHMkRDQ1PKLe9dfNILbgdxyrncsOXM3vCpsQ1Hfj4bPiGl+u4u6e9Akqw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/ordered-object-literal": "^1.0.1",
+ "@stoplight/types": "^13.0.0",
+ "@stoplight/yaml-ast-parser": "0.0.48",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.8"
+ }
+ },
+ "node_modules/@stoplight/spectral-ruleset-migrator/node_modules/@stoplight/yaml-ast-parser": {
+ "version": "0.0.48",
+ "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz",
+ "integrity": "sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/@stoplight/spectral-rulesets": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.19.1.tgz",
+ "integrity": "sha512-rfGK87Y1JJCEeLC8MVdLkjUkRH+Y6VnSF388D+UWihfU9xuq2eNB9phWpTFkG+AG4HLRyGx963BmO6PyM9dBag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@asyncapi/specs": "^4.1.0",
+ "@stoplight/better-ajv-errors": "1.0.3",
+ "@stoplight/json": "^3.17.0",
+ "@stoplight/spectral-core": "^1.8.1",
+ "@stoplight/spectral-formats": "^1.5.0",
+ "@stoplight/spectral-functions": "^1.5.1",
+ "@stoplight/spectral-runtime": "^1.1.1",
+ "@stoplight/types": "^13.6.0",
+ "@types/json-schema": "^7.0.7",
+ "ajv": "^8.12.0",
+ "ajv-formats": "~2.1.0",
+ "json-schema-traverse": "^1.0.0",
+ "leven": "3.1.0",
+ "lodash": "~4.17.21",
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-runtime": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.2.tgz",
+ "integrity": "sha512-fr5zRceXI+hrl82yAVoME+4GvJie8v3wmOe9tU+ZLRRNonizthy8qDi0Z/z4olE+vGreSDcuDOZ7JjRxFW5kTw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/json": "^3.17.0",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^12.3.0",
+ "abort-controller": "^3.0.0",
+ "lodash": "^4.17.21",
+ "node-fetch": "^2.6.7",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-runtime/node_modules/@stoplight/types": {
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-12.5.0.tgz",
+ "integrity": "sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stoplight/types": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
+ "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/yaml": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz",
+ "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@stoplight/ordered-object-literal": "^1.0.5",
+ "@stoplight/types": "^14.1.1",
+ "@stoplight/yaml-ast-parser": "0.0.50",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.8"
+ }
+ },
+ "node_modules/@stoplight/yaml-ast-parser": {
+ "version": "0.0.50",
+ "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz",
+ "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/@stoplight/yaml/node_modules/@stoplight/types": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
+ "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin-js": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.5.tgz",
+ "integrity": "sha512-RSXHczNa9RO5aLKUB+3P3iLOtM52rfIt11zxnmp5qdXUs2ve7rPAWVoom9krdzYNSARnNpeKH5c5uQ3VuHoEaA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/eslint": "^9.6.0",
+ "acorn": "^8.12.1",
+ "eslint-visitor-keys": "^4.0.0",
+ "espree": "^10.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.40.0"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.0.1.tgz",
+ "integrity": "sha512-j3mH8HSw2Rob/KJFWZ627w3CQ8gQqVHtzCdPeEffUg5vOgpz4rgrR+Xw2kU0OQCDcdW8Y1nKfdXKKjM5Rn8X0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.0",
+ "@csstools/css-tokenizer": "^3.0.0",
+ "@csstools/media-query-list-parser": "^3.0.0",
+ "is-plain-object": "^5.0.0",
+ "postcss-selector-parser": "^6.1.2",
+ "postcss-value-parser": "^4.2.0",
+ "style-search": "^0.1.0",
+ "stylelint": "^16.8.2"
+ },
+ "engines": {
+ "node": "^18.12 || >=20.9"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.8.0"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/file-entry-cache": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
+ "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/flat-cache": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz",
+ "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.3.1",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/postcss-safe-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz",
+ "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/stylelint": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz",
+ "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.1",
+ "@csstools/css-tokenizer": "^3.0.1",
+ "@csstools/media-query-list-parser": "^3.0.1",
+ "@csstools/selector-specificity": "^4.0.0",
+ "@dual-bundle/import-meta-resolve": "^4.1.0",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.2.2",
+ "css-tree": "^2.3.1",
+ "debug": "^4.3.6",
+ "fast-glob": "^3.3.2",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^9.0.0",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.3.1",
+ "ignore": "^5.3.2",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.34.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^13.2.0",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.0.1",
+ "postcss": "^8.4.41",
+ "postcss-resolve-nested-selector": "^0.1.6",
+ "postcss-safe-parser": "^7.0.0",
+ "postcss-selector-parser": "^6.1.2",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^7.1.0",
+ "supports-hyperlinks": "^3.1.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.8.2",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.2.14.tgz",
+ "integrity": "sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==",
+ "license": "MIT"
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/codemirror": {
+ "version": "5.60.15",
+ "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz",
+ "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/tern": "*"
+ }
+ },
+ "node_modules/@types/dropzone": {
+ "version": "5.7.8",
+ "resolved": "https://registry.npmjs.org/@types/dropzone/-/dropzone-5.7.8.tgz",
+ "integrity": "sha512-+L0/KRMuB8cIiCe5AfF448nGMpY+gHiSakqsqT3plEIfgqSV+gcVs1AkngM9zZG8hi6lgMxy4iYEuGXXmqjYvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/jquery": "*"
+ }
+ },
+ "node_modules/@types/es-aggregate-error": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz",
+ "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
+ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/jquery": {
+ "version": "3.5.30",
+ "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz",
+ "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/sizzle": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/katex": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
+ "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/license-checker-webpack-plugin": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@types/license-checker-webpack-plugin/-/license-checker-webpack-plugin-0.2.4.tgz",
+ "integrity": "sha512-QTWqHJ5T9lgm3vPwWSZnBwAB+15zl4QBfGoNDcjnthHQEP8VTV87fYfp1HVeCtrDip73xWMtasQeA4QHQ0nFLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/webpack": "^4"
+ }
+ },
+ "node_modules/@types/marked": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz",
+ "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "22.5.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz",
+ "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/pdfobject": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@types/pdfobject/-/pdfobject-2.2.5.tgz",
+ "integrity": "sha512-7gD5tqc/RUDq0PyoLemL0vEHxBYi+zY0WVaFAx/Y0jBsXFgot1vB9No1GhDZGwRGJMCIZbgAb74QG9MTyTNU/g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/sarif": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz",
+ "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/sizzle": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
+ "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/sortablejs": {
+ "version": "1.15.8",
+ "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+ "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/source-list-map": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz",
+ "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/swagger-ui-dist": {
+ "version": "3.30.5",
+ "resolved": "https://registry.npmjs.org/@types/swagger-ui-dist/-/swagger-ui-dist-3.30.5.tgz",
+ "integrity": "sha512-SrXhD9L8qeIxJzN+o1kmf3wXeVf/+Km3jIdRM1+Yq3I5b/dlF5TcGr5WCVM7I/cBYpgf43/gCPIucQ13AhICiw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tapable": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz",
+ "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tern": {
+ "version": "0.23.9",
+ "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz",
+ "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/throttle-debounce": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
+ "integrity": "sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tinycolor2": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz",
+ "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/toastify-js": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/@types/toastify-js/-/toastify-js-1.12.3.tgz",
+ "integrity": "sha512-9RjLlbAHMSaae/KZNHGv19VG4gcLIm3YjvacCXBtfMfYn26h76YP5oxXI8k26q4iKXCB9LNfv18lsoS0JnFPTg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/uglify-js": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz",
+ "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@stoplight/json": "~3.21.0",
- "@stoplight/path": "1.3.2",
- "@stoplight/spectral-core": "^1.18.3",
- "@stoplight/spectral-formatters": "^1.3.0",
- "@stoplight/spectral-parsers": "^1.0.3",
- "@stoplight/spectral-ref-resolver": "^1.0.4",
- "@stoplight/spectral-ruleset-bundler": "^1.5.2",
- "@stoplight/spectral-ruleset-migrator": "^1.9.5",
- "@stoplight/spectral-rulesets": ">=1",
- "@stoplight/spectral-runtime": "^1.1.2",
- "@stoplight/types": "^13.6.0",
- "chalk": "4.1.2",
- "fast-glob": "~3.2.12",
- "hpagent": "~1.2.0",
- "lodash": "~4.17.21",
- "pony-cause": "^1.0.0",
- "stacktracey": "^2.1.7",
- "tslib": "^2.3.0",
- "yargs": "~17.7.2"
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@types/urijs": {
+ "version": "1.19.25",
+ "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.25.tgz",
+ "integrity": "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/webpack": {
+ "version": "4.41.39",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.39.tgz",
+ "integrity": "sha512-otxUJvoi6FbBq/64gGH34eblpKLgdi+gf08GaAh8Bx6So0ZZic028Ev/SUxD22gbthMKCkeeiXEat1kHLDJfYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/@types/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.7.3"
+ }
+ },
+ "node_modules/@types/webpack-sources/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz",
+ "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.3.0",
+ "@typescript-eslint/type-utils": "8.3.0",
+ "@typescript-eslint/utils": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
},
- "bin": {
- "spectral": "dist/index.js"
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz",
+ "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.3.0",
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/typescript-estree": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": "^12.20 || >= 14.13"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/spectral-cli/node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz",
+ "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0"
},
"engines": {
- "node": ">=8.6.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@stoplight/spectral-cli/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz",
+ "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.3.0",
+ "@typescript-eslint/utils": "8.3.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz",
+ "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz",
+ "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
"dependencies": {
- "is-glob": "^4.0.1"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">= 6"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@stoplight/spectral-core": {
- "version": "1.18.3",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.18.3.tgz",
- "integrity": "sha512-YY8x7X2SWJIhGTLPol+eFiQpWPz0D0mJdkK2i4A0QJG68KkNhypP6+JBC7/Kz3XWjqr0L/RqAd+N5cQLPOKZGQ==",
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz",
+ "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@stoplight/better-ajv-errors": "1.0.3",
- "@stoplight/json": "~3.21.0",
- "@stoplight/path": "1.3.2",
- "@stoplight/spectral-parsers": "^1.0.0",
- "@stoplight/spectral-ref-resolver": "^1.0.0",
- "@stoplight/spectral-runtime": "^1.0.0",
- "@stoplight/types": "~13.6.0",
- "@types/es-aggregate-error": "^1.0.2",
- "@types/json-schema": "^7.0.11",
- "ajv": "^8.6.0",
- "ajv-errors": "~3.0.0",
- "ajv-formats": "~2.1.0",
- "es-aggregate-error": "^1.0.7",
- "jsonpath-plus": "7.1.0",
- "lodash": "~4.17.21",
- "lodash.topath": "^4.5.2",
- "minimatch": "3.1.2",
- "nimma": "0.2.2",
- "pony-cause": "^1.0.0",
- "simple-eval": "1.0.0",
- "tslib": "^2.3.0"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.3.0",
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/typescript-estree": "8.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
- "engines": {
- "node": "^12.20 || >= 14.13"
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
}
},
- "node_modules/@stoplight/spectral-core/node_modules/@stoplight/types": {
- "version": "13.6.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz",
- "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==",
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz",
+ "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "@typescript-eslint/types": "8.3.0",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": "^12.20 || >=14.13"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@stoplight/spectral-core/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz",
+ "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0",
+ "vue": "^3.2.25"
}
},
- "node_modules/@stoplight/spectral-core/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/@vitest/expect": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
+ "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@vitest/spy": "2.0.5",
+ "@vitest/utils": "2.0.5",
+ "chai": "^5.1.1",
+ "tinyrainbow": "^1.2.0"
},
- "engines": {
- "node": "*"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@stoplight/spectral-formats": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz",
- "integrity": "sha512-X27qhUfNluiduH0u/QwJqhOd8Wk5YKdxVmKM03Aijlx0AH1H5mYt3l9r7t2L4iyJrsBaFPnMGt7UYJDGxszbNA==",
+ "node_modules/@vitest/pretty-format": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
+ "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@stoplight/json": "^3.17.0",
- "@stoplight/spectral-core": "^1.8.0",
- "@types/json-schema": "^7.0.7",
- "tslib": "^2.3.1"
+ "tinyrainbow": "^1.2.0"
},
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@stoplight/spectral-formatters": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-formatters/-/spectral-formatters-1.3.0.tgz",
- "integrity": "sha512-ryuMwlzbPUuyn7ybSEbFYsljYmvTaTyD51wyCQs4ROzgfm3Yo5QDD0IsiJUzUpKK/Ml61ZX8ebgiPiRFEJtBpg==",
+ "node_modules/@vitest/runner": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz",
+ "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@stoplight/path": "^1.3.2",
- "@stoplight/spectral-core": "^1.15.1",
- "@stoplight/spectral-runtime": "^1.1.0",
- "@stoplight/types": "^13.15.0",
- "chalk": "4.1.2",
- "cliui": "7.0.4",
- "lodash": "^4.17.21",
- "node-sarif-builder": "^2.0.3",
- "strip-ansi": "6.0",
- "text-table": "^0.2.0",
- "tslib": "^2.5.0"
+ "@vitest/utils": "2.0.5",
+ "pathe": "^1.1.2"
},
- "engines": {
- "node": "^12.20 || >=14.13"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@stoplight/spectral-functions": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.8.0.tgz",
- "integrity": "sha512-ZrAkYA/ZGbuQ6EyG1gisF4yQ5nWP/+glcqVoGmS6kH6ekaynz2Yp6FL0oIamWj3rWedFUN7ppwTRUdo+9f/uCw==",
+ "node_modules/@vitest/snapshot": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz",
+ "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@stoplight/better-ajv-errors": "1.0.3",
- "@stoplight/json": "^3.17.1",
- "@stoplight/spectral-core": "^1.7.0",
- "@stoplight/spectral-formats": "^1.0.0",
- "@stoplight/spectral-runtime": "^1.1.0",
- "ajv": "^8.6.3",
- "ajv-draft-04": "~1.0.0",
- "ajv-errors": "~3.0.0",
- "ajv-formats": "~2.1.0",
- "lodash": "~4.17.21",
- "tslib": "^2.3.0"
+ "@vitest/pretty-format": "2.0.5",
+ "magic-string": "^0.30.10",
+ "pathe": "^1.1.2"
},
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@stoplight/spectral-parsers": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.4.tgz",
- "integrity": "sha512-nCTVvtX6q71M8o5Uvv9kxU31Gk1TRmgD6/k8HBhdCmKG6FWcwgjiZouA/R3xHLn/VwTI/9k8SdG5Mkdy0RBqbQ==",
+ "node_modules/@vitest/snapshot/node_modules/magic-string": {
+ "version": "0.30.11",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
+ "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@stoplight/json": "~3.21.0",
- "@stoplight/types": "^14.1.1",
- "@stoplight/yaml": "~4.3.0",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": "^12.20 || >=14.13"
+ "@jridgewell/sourcemap-codec": "^1.5.0"
}
},
- "node_modules/@stoplight/spectral-parsers/node_modules/@stoplight/types": {
- "version": "14.1.1",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
- "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
+ "node_modules/@vitest/spy": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
+ "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "tinyspy": "^3.0.0"
},
- "engines": {
- "node": "^12.20 || >=14.13"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@stoplight/spectral-ref-resolver": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.4.tgz",
- "integrity": "sha512-5baQIYL0NJTSVy8v6RxOR4U51xOUYM8wJri1YvlAT6bPN8m0EIxMwfVYi0xUZEMVeHcWx869nIkoqyWmOutF2A==",
+ "node_modules/@vitest/utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
+ "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@stoplight/json-ref-readers": "1.2.2",
- "@stoplight/json-ref-resolver": "~3.1.6",
- "@stoplight/spectral-runtime": "^1.1.2",
- "dependency-graph": "0.11.0",
- "tslib": "^2.3.1"
+ "@vitest/pretty-format": "2.0.5",
+ "estree-walker": "^3.0.3",
+ "loupe": "^3.1.1",
+ "tinyrainbow": "^1.2.0"
},
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@stoplight/spectral-ruleset-bundler": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-bundler/-/spectral-ruleset-bundler-1.5.2.tgz",
- "integrity": "sha512-4QUVUFAU+S7IQ9XeCu+0TQMYxKFpKnkOAfa9unRQ1iPL2cviaipEN6witpbAptdHJD3UUjx4OnwlX8WwmXSq9w==",
+ "node_modules/@vitest/utils/node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT"
+ },
+ "node_modules/@vitest/utils/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@rollup/plugin-commonjs": "~22.0.2",
- "@stoplight/path": "1.3.2",
- "@stoplight/spectral-core": ">=1",
- "@stoplight/spectral-formats": ">=1",
- "@stoplight/spectral-functions": ">=1",
- "@stoplight/spectral-parsers": ">=1",
- "@stoplight/spectral-ref-resolver": ">=1",
- "@stoplight/spectral-ruleset-migrator": "^1.7.4",
- "@stoplight/spectral-rulesets": ">=1",
- "@stoplight/spectral-runtime": "^1.1.0",
- "@stoplight/types": "^13.6.0",
- "@types/node": "*",
- "pony-cause": "1.1.1",
- "rollup": "~2.79.0",
- "tslib": "^2.3.1",
- "validate-npm-package-name": "3.0.0"
- },
- "engines": {
- "node": "^12.20 || >= 14.13"
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
+ "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.24.7",
+ "@vue/shared": "3.4.38",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
}
},
- "node_modules/@stoplight/spectral-ruleset-migrator": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.9.5.tgz",
- "integrity": "sha512-76n/HETr3UinVl/xLNldrH9p0JNoD8Gz4K75J6E4OHp4xD0P+BA2e8+W30HjIvqm1LJdLU2BNma0ioy+q3B9RA==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
+ "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/json": "~3.21.0",
- "@stoplight/ordered-object-literal": "~1.0.4",
- "@stoplight/path": "1.3.2",
- "@stoplight/spectral-functions": "^1.0.0",
- "@stoplight/spectral-runtime": "^1.1.0",
- "@stoplight/types": "^13.6.0",
- "@stoplight/yaml": "~4.2.3",
- "@types/node": "*",
- "ajv": "^8.6.0",
- "ast-types": "0.14.2",
- "astring": "^1.7.5",
- "reserved": "0.1.2",
- "tslib": "^2.3.1",
- "validate-npm-package-name": "3.0.0"
- },
- "engines": {
- "node": ">=12"
+ "@vue/compiler-core": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
- "node_modules/@stoplight/spectral-ruleset-migrator/node_modules/@stoplight/yaml": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.2.3.tgz",
- "integrity": "sha512-Mx01wjRAR9C7yLMUyYFTfbUf5DimEpHMkRDQ1PKLe9dfNILbgdxyrncsOXM3vCpsQ1Hfj4bPiGl+u4u6e9Akqw==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
+ "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/ordered-object-literal": "^1.0.1",
- "@stoplight/types": "^13.0.0",
- "@stoplight/yaml-ast-parser": "0.0.48",
- "tslib": "^2.2.0"
- },
- "engines": {
- "node": ">=10.8"
+ "@babel/parser": "^7.24.7",
+ "@vue/compiler-core": "3.4.38",
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.40",
+ "source-map-js": "^1.2.0"
}
},
- "node_modules/@stoplight/spectral-ruleset-migrator/node_modules/@stoplight/yaml-ast-parser": {
- "version": "0.0.48",
- "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz",
- "integrity": "sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg==",
- "dev": true,
- "license": "Apache-2.0"
+ "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+ "version": "0.30.11",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
+ "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
},
- "node_modules/@stoplight/spectral-rulesets": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.19.1.tgz",
- "integrity": "sha512-rfGK87Y1JJCEeLC8MVdLkjUkRH+Y6VnSF388D+UWihfU9xuq2eNB9phWpTFkG+AG4HLRyGx963BmO6PyM9dBag==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
+ "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
+ "license": "MIT",
"dependencies": {
- "@asyncapi/specs": "^4.1.0",
- "@stoplight/better-ajv-errors": "1.0.3",
- "@stoplight/json": "^3.17.0",
- "@stoplight/spectral-core": "^1.8.1",
- "@stoplight/spectral-formats": "^1.5.0",
- "@stoplight/spectral-functions": "^1.5.1",
- "@stoplight/spectral-runtime": "^1.1.1",
- "@stoplight/types": "^13.6.0",
- "@types/json-schema": "^7.0.7",
- "ajv": "^8.12.0",
- "ajv-formats": "~2.1.0",
- "json-schema-traverse": "^1.0.0",
- "leven": "3.1.0",
- "lodash": "~4.17.21",
- "tslib": "^2.3.0"
- },
- "engines": {
- "node": ">=12"
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
- "node_modules/@stoplight/spectral-runtime": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.2.tgz",
- "integrity": "sha512-fr5zRceXI+hrl82yAVoME+4GvJie8v3wmOe9tU+ZLRRNonizthy8qDi0Z/z4olE+vGreSDcuDOZ7JjRxFW5kTw==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz",
+ "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/json": "^3.17.0",
- "@stoplight/path": "^1.3.2",
- "@stoplight/types": "^12.3.0",
- "abort-controller": "^3.0.0",
- "lodash": "^4.17.21",
- "node-fetch": "^2.6.7",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": ">=12"
+ "@vue/shared": "3.4.38"
}
},
- "node_modules/@stoplight/spectral-runtime/node_modules/@stoplight/types": {
- "version": "12.5.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-12.5.0.tgz",
- "integrity": "sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz",
+ "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": ">=8"
+ "@vue/reactivity": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
- "node_modules/@stoplight/types": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
- "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz",
+ "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": "^12.20 || >=14.13"
+ "@vue/reactivity": "3.4.38",
+ "@vue/runtime-core": "3.4.38",
+ "@vue/shared": "3.4.38",
+ "csstype": "^3.1.3"
}
},
- "node_modules/@stoplight/yaml": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz",
- "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@vue/server-renderer": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz",
+ "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/ordered-object-literal": "^1.0.5",
- "@stoplight/types": "^14.1.1",
- "@stoplight/yaml-ast-parser": "0.0.50",
- "tslib": "^2.2.0"
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38"
},
- "engines": {
- "node": ">=10.8"
+ "peerDependencies": {
+ "vue": "3.4.38"
}
},
- "node_modules/@stoplight/yaml-ast-parser": {
- "version": "0.0.50",
- "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz",
- "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==",
- "dev": true,
- "license": "Apache-2.0"
+ "node_modules/@vue/shared": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz",
+ "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==",
+ "license": "MIT"
},
- "node_modules/@stoplight/yaml/node_modules/@stoplight/types": {
- "version": "14.1.1",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
- "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": "^12.20 || >=14.13"
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
}
},
- "node_modules/@stylistic/eslint-plugin-js": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.1.tgz",
- "integrity": "sha512-iLOiVzcvqzDGD9U0EuVOX680v+XOPiPAjkxWj+Q6iV2GLOM5NB27tKVOpJY7AzBhidwpRbaLTgg3T4UzYx09jw==",
- "dev": true,
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
"license": "MIT",
"dependencies": {
- "@types/eslint": "^9.6.0",
- "acorn": "^8.12.1",
- "eslint-visitor-keys": "^4.0.0",
- "espree": "^10.1.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
}
},
- "node_modules/@stylistic/stylelint-plugin": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.0.0.tgz",
- "integrity": "sha512-GymY+9CSqkPaZ1A3m3w/tvCdpP3qQcaL1FSaoVv9aKL3Tn6GVJWHc2VWVkbNEsYr4QImHjWnlmVZROwgUEjMmQ==",
- "dev": true,
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
"license": "MIT",
"dependencies": {
- "@csstools/css-parser-algorithms": "^2.7.1",
- "@csstools/css-tokenizer": "^2.4.1",
- "@csstools/media-query-list-parser": "^2.1.13",
- "is-plain-object": "^5.0.0",
- "postcss-selector-parser": "^6.1.1",
- "postcss-value-parser": "^4.2.0",
- "style-search": "^0.1.0",
- "stylelint": "^16.8.0"
- },
- "engines": {
- "node": "^18.12 || >=20.9"
- },
- "peerDependencies": {
- "stylelint": "^16.8.0"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "license": "MIT",
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
}
},
- "node_modules/@swc/helpers": {
- "version": "0.2.14",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.2.14.tgz",
- "integrity": "sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==",
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
"license": "MIT"
},
- "node_modules/@trysound/sax": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@types/codemirror": {
- "version": "5.60.15",
- "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz",
- "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==",
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
"license": "MIT",
"dependencies": {
- "@types/tern": "*"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
}
},
- "node_modules/@types/dropzone": {
- "version": "5.7.8",
- "resolved": "https://registry.npmjs.org/@types/dropzone/-/dropzone-5.7.8.tgz",
- "integrity": "sha512-+L0/KRMuB8cIiCe5AfF448nGMpY+gHiSakqsqT3plEIfgqSV+gcVs1AkngM9zZG8hi6lgMxy4iYEuGXXmqjYvg==",
- "dev": true,
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
"license": "MIT",
"dependencies": {
- "@types/jquery": "*"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
}
},
- "node_modules/@types/es-aggregate-error": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz",
- "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==",
- "dev": true,
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
"license": "MIT",
"dependencies": {
- "@types/node": "*"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
}
},
- "node_modules/@types/eslint": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz",
- "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==",
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
"license": "MIT",
"dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
"license": "MIT",
"dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
+ "@webassemblyjs/ast": "1.12.1",
+ "@xtuc/long": "4.2.2"
}
},
- "node_modules/@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
- "license": "MIT"
+ "node_modules/@webpack-cli/configtest": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
+ "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ }
},
- "node_modules/@types/jquery": {
- "version": "3.5.30",
- "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz",
- "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==",
- "dev": true,
+ "node_modules/@webpack-cli/info": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
+ "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
"license": "MIT",
- "dependencies": {
- "@types/sizzle": "*"
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
}
},
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "license": "MIT"
+ "node_modules/@webpack-cli/serve": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
+ "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
},
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true,
- "license": "MIT"
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "license": "BSD-3-Clause"
},
- "node_modules/@types/katex": {
- "version": "0.16.7",
- "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
- "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
- "dev": true,
- "license": "MIT"
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "license": "Apache-2.0"
},
- "node_modules/@types/license-checker-webpack-plugin": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@types/license-checker-webpack-plugin/-/license-checker-webpack-plugin-0.2.4.tgz",
- "integrity": "sha512-QTWqHJ5T9lgm3vPwWSZnBwAB+15zl4QBfGoNDcjnthHQEP8VTV87fYfp1HVeCtrDip73xWMtasQeA4QHQ0nFLw==",
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/webpack": "^4"
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
}
},
- "node_modules/@types/marked": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz",
- "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==",
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz",
- "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==",
+ "node_modules/acorn": {
+ "version": "8.12.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
"license": "MIT",
- "dependencies": {
- "undici-types": "~6.13.0"
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/pdfobject": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/@types/pdfobject/-/pdfobject-2.2.5.tgz",
- "integrity": "sha512-7gD5tqc/RUDq0PyoLemL0vEHxBYi+zY0WVaFAx/Y0jBsXFgot1vB9No1GhDZGwRGJMCIZbgAb74QG9MTyTNU/g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/sarif": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz",
- "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/sizzle": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
- "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/sortablejs": {
- "version": "1.15.8",
- "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz",
- "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/source-list-map": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz",
- "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/swagger-ui-dist": {
- "version": "3.30.5",
- "resolved": "https://registry.npmjs.org/@types/swagger-ui-dist/-/swagger-ui-dist-3.30.5.tgz",
- "integrity": "sha512-SrXhD9L8qeIxJzN+o1kmf3wXeVf/+Km3jIdRM1+Yq3I5b/dlF5TcGr5WCVM7I/cBYpgf43/gCPIucQ13AhICiw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/tapable": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz",
- "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/tern": {
- "version": "0.23.9",
- "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz",
- "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==",
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
"license": "MIT",
- "dependencies": {
- "@types/estree": "*"
+ "peerDependencies": {
+ "acorn": "^8"
}
},
- "node_modules/@types/throttle-debounce": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
- "integrity": "sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/tinycolor2": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz",
- "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
},
- "node_modules/@types/toastify-js": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/@types/toastify-js/-/toastify-js-1.12.3.tgz",
- "integrity": "sha512-9RjLlbAHMSaae/KZNHGv19VG4gcLIm3YjvacCXBtfMfYn26h76YP5oxXI8k26q4iKXCB9LNfv18lsoS0JnFPTg==",
- "dev": true,
- "license": "MIT"
+ "node_modules/add-asset-webpack-plugin": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/add-asset-webpack-plugin/-/add-asset-webpack-plugin-3.0.0.tgz",
+ "integrity": "sha512-mg6nL4E+dNZPQfTc/A4xcOYsIxCN7Cuy9OScZsjI9qOYPiJeFZfsYcdoYlqcNNQEC4w8yNwArhD1Gm+G1iWrNg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ },
+ "peerDependencies": {
+ "webpack": ">=5"
+ }
},
- "node_modules/@types/uglify-js": {
- "version": "3.17.5",
- "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz",
- "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==",
- "dev": true,
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"license": "MIT",
"dependencies": {
- "source-map": "^0.6.1"
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/@types/urijs": {
- "version": "1.19.25",
- "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.25.tgz",
- "integrity": "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==",
+ "node_modules/ajv-draft-04": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
+ "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^8.5.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
},
- "node_modules/@types/webpack": {
- "version": "4.41.38",
- "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.38.tgz",
- "integrity": "sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==",
+ "node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
"dev": true,
"license": "MIT",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "license": "MIT",
"dependencies": {
- "@types/node": "*",
- "@types/tapable": "^1",
- "@types/uglify-js": "*",
- "@types/webpack-sources": "*",
- "anymatch": "^3.0.0",
- "source-map": "^0.6.0"
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
}
},
- "node_modules/@types/webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==",
- "dev": true,
+ "node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"license": "MIT",
"dependencies": {
- "@types/node": "*",
- "@types/source-list-map": "*",
- "source-map": "^0.7.3"
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
}
},
- "node_modules/@types/webpack-sources/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true,
- "license": "BSD-3-Clause",
+ "node_modules/ansi_up": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-6.0.2.tgz",
+ "integrity": "sha512-3G3vKvl1ilEp7J1u6BmULpMA0xVoW/f4Ekqhl8RTrJrhEBkonKn5k3bUc5Xt+qDayA6iDX0jyUh3AbZjB/l0tw==",
+ "license": "MIT",
"engines": {
- "node": ">= 8"
+ "node": "*"
}
},
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz",
- "integrity": "sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==",
- "dev": true,
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.0.0",
- "@typescript-eslint/type-utils": "8.0.0",
- "@typescript-eslint/utils": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.3.1",
- "natural-compare": "^1.4.0",
- "ts-api-utils": "^1.3.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "node": ">=8"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
- "eslint": "^8.57.0 || ^9.0.0"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0.tgz",
- "integrity": "sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==",
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "Apache-2.0",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.0.0",
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/typescript-estree": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0",
- "debug": "^4.3.4"
- },
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
+ "license": "MIT",
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-includes": {
+ "name": "@nolyfill/array-includes",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array-includes/-/array-includes-1.0.28.tgz",
+ "integrity": "sha512-3LFZArKSQTQu//UvQXb4lBHWvhxmiZ5h2v50WIXfWb5UPNgeLpeGP8WgsfTePCpZgNlxt5JVFDdv5zLRa7cQXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz",
- "integrity": "sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==",
+ "node_modules/array.prototype.findlast": {
+ "name": "@nolyfill/array.prototype.findlast",
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.findlast/-/array.prototype.findlast-1.0.24.tgz",
+ "integrity": "sha512-yFCyZLs0iNNubzYnBINcOCJAiGtusxiR2F1DnwkOB1HQbWXl/zltkDIWIXO3cJxhQdngDlmM4ysTfyAfoB297g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0"
+ "@nolyfill/shared": "1.0.24"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": ">=12.4.0"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz",
- "integrity": "sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==",
+ "node_modules/array.prototype.findlast/node_modules/@nolyfill/shared": {
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.24.tgz",
+ "integrity": "sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "name": "@nolyfill/array.prototype.findlastindex",
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.findlastindex/-/array.prototype.findlastindex-1.0.24.tgz",
+ "integrity": "sha512-UhPUzrObJnaFB94ywGz818q9KLbgffieqKfkG/5kL9j7VS+ikC4gG2jo8/i4zqgvJT3ppHb9buEQ3RRg7fZg8Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.0.0",
- "@typescript-eslint/utils": "8.0.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^1.3.0"
+ "@nolyfill/shared": "1.0.24"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "node": ">=12.4.0"
}
},
- "node_modules/@typescript-eslint/types": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0.tgz",
- "integrity": "sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==",
+ "node_modules/array.prototype.findlastindex/node_modules/@nolyfill/shared": {
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.24.tgz",
+ "integrity": "sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
+ "license": "MIT"
},
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz",
- "integrity": "sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==",
+ "node_modules/array.prototype.flat": {
+ "name": "@nolyfill/array.prototype.flat",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.flat/-/array.prototype.flat-1.0.28.tgz",
+ "integrity": "sha512-bvBWaZDCWV7+jD70tJCy3Olp03Qx9svHN2KmC2j0CYvqfYRet5+iOb09nzb6QULqGrj7O8DQJ03ZQk6gih9J3g==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
- "ts-api-utils": "^1.3.0"
+ "@nolyfill/shared": "1.0.28"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "node": ">=12.4.0"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "node_modules/array.prototype.flatmap": {
+ "name": "@nolyfill/array.prototype.flatmap",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.flatmap/-/array.prototype.flatmap-1.0.28.tgz",
+ "integrity": "sha512-Ui/aMijqnYISchzIG0MbRiRh2DKWORJW2s//nw6rJ5jFp6x+nmFCQ5U2be3+id36VsmTxXiv+qLAHxdfXz8g8g==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@nolyfill/shared": "1.0.28"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=12.4.0"
}
},
- "node_modules/@typescript-eslint/utils": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0.tgz",
- "integrity": "sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==",
+ "node_modules/array.prototype.tosorted": {
+ "name": "@nolyfill/array.prototype.tosorted",
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.tosorted/-/array.prototype.tosorted-1.0.24.tgz",
+ "integrity": "sha512-lVo8TVDqaslOaOvEH7iL7glu/WdlX7ZrB+7FZY4BL25hg8TLHvg3e9pxafCp8vAQ96IOL+tdgBdfeoC7qLeQYg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.0.0",
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/typescript-estree": "8.0.0"
+ "@nolyfill/shared": "1.0.24"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0"
+ "node": ">=12.4.0"
}
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz",
- "integrity": "sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==",
+ "node_modules/array.prototype.tosorted/node_modules/@nolyfill/shared": {
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.24.tgz",
+ "integrity": "sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/as-table": {
+ "version": "1.0.55",
+ "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
+ "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.0.0",
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "printable-characters": "^1.0.42"
}
},
- "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
+ "node_modules/asciinema-player": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/asciinema-player/-/asciinema-player-3.8.0.tgz",
+ "integrity": "sha512-yFoAcjFK9WJ0D+aagkT0YXOWRbyXoOe/TQHq07oQP6prItXQkWn46fdvUb6zqJu2AywmY8VjBEwZ6ciL8IbezQ==",
"license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "solid-js": "^1.3.0"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@vitejs/plugin-vue": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz",
- "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==",
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "peerDependencies": {
- "vite": "^5.0.0",
- "vue": "^3.2.25"
+ "node": ">=12"
}
},
- "node_modules/@vitest/expect": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
- "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
+ "node_modules/ast-types": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
+ "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "2.0.5",
- "@vitest/utils": "2.0.5",
- "chai": "^5.1.1",
- "tinyrainbow": "^1.2.0"
+ "tslib": "^2.0.1"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@vitest/pretty-format": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
- "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "tinyrainbow": "^1.2.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@vitest/runner": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz",
- "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==",
+ "node_modules/astring": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
+ "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@vitest/utils": "2.0.5",
- "pathe": "^1.1.2"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "bin": {
+ "astring": "bin/astring"
}
},
- "node_modules/@vitest/snapshot": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz",
- "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==",
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/pretty-format": "2.0.5",
- "magic-string": "^0.30.10",
- "pathe": "^1.1.2"
+ "license": "(MIT OR Apache-2.0)",
+ "bin": {
+ "atob": "bin/atob.js"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">= 4.5.0"
}
},
- "node_modules/@vitest/snapshot/node_modules/magic-string": {
- "version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+ "node_modules/axe-core": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz",
+ "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@vitest/spy": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
- "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
+ "node_modules/axobject-query": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz",
+ "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"dependencies": {
- "tinyspy": "^3.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "deep-equal": "^2.0.5"
}
},
- "node_modules/@vitest/utils": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
- "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.0.5",
- "estree-walker": "^3.0.3",
- "loupe": "^3.1.1",
- "tinyrainbow": "^1.2.0"
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@vitest/utils/node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "license": "MIT"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
},
- "node_modules/@vitest/utils/node_modules/estree-walker": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/estree": "^1.0.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@vue/compiler-core": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.35.tgz",
- "integrity": "sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==",
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.24.7",
- "@vue/shared": "3.4.35",
- "entities": "^4.5.0",
- "estree-walker": "^2.0.2",
- "source-map-js": "^1.2.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@vue/compiler-dom": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.35.tgz",
- "integrity": "sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==",
- "license": "MIT",
- "dependencies": {
- "@vue/compiler-core": "3.4.35",
- "@vue/shared": "3.4.35"
- }
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
},
- "node_modules/@vue/compiler-sfc": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.35.tgz",
- "integrity": "sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==",
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.24.7",
- "@vue/compiler-core": "3.4.35",
- "@vue/compiler-dom": "3.4.35",
- "@vue/compiler-ssr": "3.4.35",
- "@vue/shared": "3.4.35",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.30.10",
- "postcss": "^8.4.40",
- "source-map-js": "^1.2.0"
- }
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
- "version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/@vue/compiler-ssr": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.35.tgz",
- "integrity": "sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==",
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"license": "MIT",
- "dependencies": {
- "@vue/compiler-dom": "3.4.35",
- "@vue/shared": "3.4.35"
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@vue/reactivity": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.35.tgz",
- "integrity": "sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw==",
- "license": "MIT",
- "dependencies": {
- "@vue/shared": "3.4.35"
- }
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
},
- "node_modules/@vue/runtime-core": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.35.tgz",
- "integrity": "sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA==",
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.4.35",
- "@vue/shared": "3.4.35"
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/@vue/runtime-dom": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.35.tgz",
- "integrity": "sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw==",
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.4.35",
- "@vue/runtime-core": "3.4.35",
- "@vue/shared": "3.4.35",
- "csstype": "^3.1.3"
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@vue/server-renderer": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.35.tgz",
- "integrity": "sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw==",
+ "node_modules/browserslist": {
+ "version": "4.23.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
+ "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@vue/compiler-ssr": "3.4.35",
- "@vue/shared": "3.4.35"
+ "caniuse-lite": "^1.0.30001646",
+ "electron-to-chromium": "^1.5.4",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
},
- "peerDependencies": {
- "vue": "3.4.35"
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/@vue/shared": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.35.tgz",
- "integrity": "sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==",
- "license": "MIT"
- },
- "node_modules/@webassemblyjs/ast": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
- "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
}
},
- "node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
- "license": "MIT"
- },
- "node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
- "license": "MIT"
- },
- "node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
- "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"license": "MIT"
},
- "node_modules/@webassemblyjs/helper-numbers": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "node_modules/builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@xtuc/long": "4.2.2"
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
- "license": "MIT"
- },
- "node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
- "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
- "license": "MIT",
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.12.1"
- }
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/@webassemblyjs/ieee754": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "@xtuc/ieee754": "^1.2.0"
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/@webassemblyjs/leb128": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@xtuc/long": "4.2.2"
+ "node_modules/cac": {
+ "version": "6.7.14",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
+ "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@webassemblyjs/utf8": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
- "license": "MIT"
- },
- "node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
- "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"license": "MIT",
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.12.1",
- "@webassemblyjs/wasm-gen": "1.12.1",
- "@webassemblyjs/wasm-opt": "1.12.1",
- "@webassemblyjs/wasm-parser": "1.12.1",
- "@webassemblyjs/wast-printer": "1.12.1"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
- "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
"license": "MIT",
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
- "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001653",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz",
+ "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chai": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
+ "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/wasm-gen": "1.12.1",
- "@webassemblyjs/wasm-parser": "1.12.1"
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.1.1",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
- "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@webassemblyjs/wast-printer": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
- "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+ "node_modules/chart.js": {
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz",
+ "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==",
"license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@xtuc/long": "4.2.2"
+ "@kurkle/color": "^0.3.0"
+ },
+ "engines": {
+ "pnpm": ">=8"
}
},
- "node_modules/@webpack-cli/configtest": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
- "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "node_modules/chartjs-adapter-dayjs-4": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz",
+ "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==",
"license": "MIT",
"engines": {
- "node": ">=14.15.0"
+ "node": ">=10"
},
"peerDependencies": {
- "webpack": "5.x.x",
- "webpack-cli": "5.x.x"
+ "chart.js": ">=4.0.1",
+ "dayjs": "^1.9.7"
}
},
- "node_modules/@webpack-cli/info": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
- "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
+ "node_modules/chartjs-plugin-zoom": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.0.1.tgz",
+ "integrity": "sha512-ogOmLu6e+Q7E1XWOCOz9YwybMslz9qNfGV2a+qjfmqJYpsw5ZMoRHZBUyW+NGhkpQ5PwwPA/+rikHpBZb7PZuA==",
"license": "MIT",
- "engines": {
- "node": ">=14.15.0"
+ "dependencies": {
+ "hammerjs": "^2.0.8"
},
"peerDependencies": {
- "webpack": "5.x.x",
- "webpack-cli": "5.x.x"
+ "chart.js": ">=3.2.0"
}
},
- "node_modules/@webpack-cli/serve": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
- "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "node_modules/check-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+ "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">=14.15.0"
- },
- "peerDependencies": {
- "webpack": "5.x.x",
- "webpack-cli": "5.x.x"
- },
- "peerDependenciesMeta": {
- "webpack-dev-server": {
- "optional": true
- }
+ "node": ">= 16"
}
},
- "node_modules/@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "license": "Apache-2.0"
+ "node_modules/chevrotain": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz",
+ "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/cst-dts-gen": "11.0.3",
+ "@chevrotain/gast": "11.0.3",
+ "@chevrotain/regexp-to-ast": "11.0.3",
+ "@chevrotain/types": "11.0.3",
+ "@chevrotain/utils": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
},
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
- "dev": true,
+ "node_modules/chevrotain-allstar": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz",
+ "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
"license": "MIT",
"dependencies": {
- "event-target-shim": "^5.0.0"
+ "lodash-es": "^4.17.21"
},
- "engines": {
- "node": ">=6.5"
+ "peerDependencies": {
+ "chevrotain": "^11.0.0"
}
},
- "node_modules/acorn": {
- "version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 6"
}
},
- "node_modules/acorn-import-attributes": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"license": "MIT",
- "peerDependencies": {
- "acorn": "^8"
+ "engines": {
+ "node": ">=6.0"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "node_modules/ci-info": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz",
+ "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==",
"dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/add-asset-webpack-plugin": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/add-asset-webpack-plugin/-/add-asset-webpack-plugin-3.0.0.tgz",
- "integrity": "sha512-mg6nL4E+dNZPQfTc/A4xcOYsIxCN7Cuy9OScZsjI9qOYPiJeFZfsYcdoYlqcNNQEC4w8yNwArhD1Gm+G1iWrNg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
"license": "MIT",
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- },
- "peerDependencies": {
- "webpack": ">=5"
+ "node": ">=8"
}
},
- "node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
+ "node_modules/citeproc": {
+ "version": "2.4.63",
+ "resolved": "https://registry.npmjs.org/citeproc/-/citeproc-2.4.63.tgz",
+ "integrity": "sha512-68F95Bp4UbgZU/DBUGQn0qV3HDZLCdI9+Bb2ByrTaNJDL5VEm9LqaiNaxljsvoaExSLEXe1/r6n2Z06SCzW3/Q==",
+ "license": "CPAL-1.0 OR AGPL-1.0"
},
- "node_modules/ajv-draft-04": {
+ "node_modules/clean-regexp": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
- "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
+ "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
+ "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==",
"dev": true,
"license": "MIT",
- "peerDependencies": {
- "ajv": "^8.5.0"
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
},
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/ajv-errors": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
- "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "node_modules/clean-regexp/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"license": "MIT",
- "peerDependencies": {
- "ajv": "^8.0.1"
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
- "license": "MIT",
+ "node_modules/clippie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/clippie/-/clippie-4.1.3.tgz",
+ "integrity": "sha512-15WNUw0UGN8odzmCuuv3zIbYbjTg7AWJrjL4gXoa0o9fg1lZ+m8Vb6iZhWA1B8oKWpZRgOt6Qz3N/S1+BA4N1Q==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
}
},
- "node_modules/ajv-keywords": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.3"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
- "peerDependencies": {
- "ajv": "^8.8.2"
- }
- },
- "node_modules/ansi_up": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-6.0.2.tgz",
- "integrity": "sha512-3G3vKvl1ilEp7J1u6BmULpMA0xVoW/f4Ekqhl8RTrJrhEBkonKn5k3bUc5Xt+qDayA6iDX0jyUh3AbZjB/l0tw==",
- "license": "MIT",
"engines": {
- "node": "*"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"license": "MIT",
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/clone-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
+ "isobject": "^3.0.1"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">=0.10.0"
}
},
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "node_modules/codemirror": {
+ "version": "5.65.17",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
+ "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==",
"license": "MIT"
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "license": "ISC",
+ "node_modules/codemirror-spell-checker": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz",
+ "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==",
+ "license": "MIT",
"dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "typo-js": "*"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 8"
+ "node": ">=7.0.0"
}
},
- "node_modules/arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "license": "Python-2.0"
- },
- "node_modules/aria-query": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
"dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "dequal": "^2.0.3"
- }
+ "license": "MIT"
},
- "node_modules/array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
"license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 12"
}
},
- "node_modules/array-includes": {
- "name": "@nolyfill/array-includes",
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/@nolyfill/array-includes/-/array-includes-1.0.28.tgz",
- "integrity": "sha512-3LFZArKSQTQu//UvQXb4lBHWvhxmiZ5h2v50WIXfWb5UPNgeLpeGP8WgsfTePCpZgNlxt5JVFDdv5zLRa7cQXw==",
+ "node_modules/comment-parser": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
+ "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@nolyfill/shared": "1.0.28"
- },
"engines": {
- "node": ">=12.4.0"
+ "node": ">= 12.0.0"
}
},
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/array.prototype.findlastindex": {
- "name": "@nolyfill/array.prototype.findlastindex",
- "version": "1.0.24",
- "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.findlastindex/-/array.prototype.findlastindex-1.0.24.tgz",
- "integrity": "sha512-UhPUzrObJnaFB94ywGz818q9KLbgffieqKfkG/5kL9j7VS+ikC4gG2jo8/i4zqgvJT3ppHb9buEQ3RRg7fZg8Q==",
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
+ "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@nolyfill/shared": "1.0.24"
+ "browserslist": "^4.23.3"
},
- "engines": {
- "node": ">=12.4.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
}
},
- "node_modules/array.prototype.findlastindex/node_modules/@nolyfill/shared": {
- "version": "1.0.24",
- "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.24.tgz",
- "integrity": "sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==",
- "dev": true,
- "license": "MIT"
+ "node_modules/cose-base": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
+ "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "license": "MIT",
+ "dependencies": {
+ "layout-base": "^1.0.0"
+ }
},
- "node_modules/array.prototype.flat": {
- "name": "@nolyfill/array.prototype.flat",
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.flat/-/array.prototype.flat-1.0.28.tgz",
- "integrity": "sha512-bvBWaZDCWV7+jD70tJCy3Olp03Qx9svHN2KmC2j0CYvqfYRet5+iOb09nzb6QULqGrj7O8DQJ03ZQk6gih9J3g==",
- "dev": true,
+ "node_modules/cosmiconfig": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
"license": "MIT",
"dependencies": {
- "@nolyfill/shared": "1.0.28"
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
},
"engines": {
- "node": ">=12.4.0"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/array.prototype.flatmap": {
- "name": "@nolyfill/array.prototype.flatmap",
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.flatmap/-/array.prototype.flatmap-1.0.28.tgz",
- "integrity": "sha512-Ui/aMijqnYISchzIG0MbRiRh2DKWORJW2s//nw6rJ5jFp6x+nmFCQ5U2be3+id36VsmTxXiv+qLAHxdfXz8g8g==",
- "dev": true,
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"license": "MIT",
"dependencies": {
- "@nolyfill/shared": "1.0.28"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
},
"engines": {
- "node": ">=12.4.0"
+ "node": ">= 8"
}
},
- "node_modules/as-table": {
- "version": "1.0.55",
- "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
- "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
+ "node_modules/css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "printable-characters": "^1.0.42"
- }
- },
- "node_modules/asciinema-player": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/asciinema-player/-/asciinema-player-3.8.0.tgz",
- "integrity": "sha512-yFoAcjFK9WJ0D+aagkT0YXOWRbyXoOe/TQHq07oQP6prItXQkWn46fdvUb6zqJu2AywmY8VjBEwZ6ciL8IbezQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@babel/runtime": "^7.21.0",
- "solid-js": "^1.3.0"
+ "inherits": "^2.0.4",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.6.0"
}
},
- "node_modules/assertion-error": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
- "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "node_modules/css-functions-list": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz",
+ "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=12 || >=16"
}
},
- "node_modules/ast-types": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
- "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
- "dev": true,
+ "node_modules/css-loader": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz",
+ "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
"license": "MIT",
"dependencies": {
- "tslib": "^2.0.1"
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.33",
+ "postcss-modules-extract-imports": "^3.1.0",
+ "postcss-modules-local-by-default": "^4.0.5",
+ "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.5.4"
},
"engines": {
- "node": ">=4"
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.27.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
}
},
- "node_modules/ast-types-flow": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
- "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
"dev": true,
- "license": "MIT"
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
},
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
"engines": {
- "node": ">=8"
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
- "node_modules/astring": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
- "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
"dev": true,
- "license": "MIT",
- "bin": {
- "astring": "bin/astring"
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "license": "(MIT OR Apache-2.0)",
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
"bin": {
- "atob": "bin/atob.js"
+ "cssesc": "bin/cssesc"
},
"engines": {
- "node": ">= 4.5.0"
+ "node": ">=4"
}
},
- "node_modules/axe-core": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz",
- "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==",
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
"dev": true,
- "license": "MPL-2.0",
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
"engines": {
- "node": ">=4"
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
}
},
- "node_modules/axobject-query": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz",
- "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==",
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "deep-equal": "^2.0.5"
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
}
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "license": "MIT"
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "dev": true,
+ "license": "CC0-1.0"
},
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
- "node_modules/big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "node_modules/cytoscape": {
+ "version": "3.30.2",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz",
+ "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==",
"license": "MIT",
"engines": {
- "node": "*"
+ "node": ">=0.10"
}
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "node_modules/cytoscape-cose-bilkent": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
+ "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
"license": "MIT",
- "engines": {
- "node": ">=8"
+ "dependencies": {
+ "cose-base": "^1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
}
},
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "license": "MIT",
+ "node_modules/d3": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
+ "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
+ "license": "ISC",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "license": "MIT",
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "license": "ISC",
"dependencies": {
- "fill-range": "^7.1.1"
+ "internmap": "1 - 2"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "license": "ISC",
"dependencies": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
- "node-releases": "^2.0.18",
- "update-browserslist-db": "^1.1.0"
- },
- "bin": {
- "browserslist": "cli.js"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
},
"engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ "node": ">=12"
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "license": "ISC",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "d3-path": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "license": "MIT"
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "^3.2.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "license": "ISC",
+ "dependencies": {
+ "delaunator": "5"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/builtins": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
- "dev": true,
- "license": "MIT"
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "license": "MIT",
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "license": "ISC",
+ "dependencies": {
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/camelcase-css": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
- "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "node_modules/d3-dsv/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"license": "MIT",
"engines": {
- "node": ">= 6"
+ "node": ">= 10"
}
},
- "node_modules/caniuse-lite": {
- "version": "1.0.30001646",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz",
- "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/chai": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
- "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "license": "ISC",
"dependencies": {
- "assertion-error": "^2.0.1",
- "check-error": "^2.1.1",
- "deep-eql": "^5.0.1",
- "loupe": "^3.1.0",
- "pathval": "^2.0.0"
+ "d3-dsv": "1 - 3"
},
"engines": {
"node": ">=12"
}
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "license": "MIT",
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "license": "ISC",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=12"
}
},
- "node_modules/chart.js": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz",
- "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
- "license": "MIT",
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-geo": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
+ "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
+ "license": "ISC",
"dependencies": {
- "@kurkle/color": "^0.3.0"
+ "d3-array": "2.5.0 - 3"
},
"engines": {
- "pnpm": ">=8"
+ "node": ">=12"
}
},
- "node_modules/chartjs-adapter-dayjs-4": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz",
- "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==",
- "license": "MIT",
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+ "license": "ISC",
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "chart.js": ">=4.0.1",
- "dayjs": "^1.9.7"
+ "node": ">=12"
}
},
- "node_modules/chartjs-plugin-zoom": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.0.1.tgz",
- "integrity": "sha512-ogOmLu6e+Q7E1XWOCOz9YwybMslz9qNfGV2a+qjfmqJYpsw5ZMoRHZBUyW+NGhkpQ5PwwPA/+rikHpBZb7PZuA==",
- "license": "MIT",
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "license": "ISC",
"dependencies": {
- "hammerjs": "^2.0.8"
+ "d3-color": "1 - 3"
},
- "peerDependencies": {
- "chart.js": ">=3.2.0"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/check-error": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
- "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "license": "ISC",
"engines": {
- "node": ">= 16"
+ "node": ">=12"
}
},
- "node_modules/chevrotain": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz",
- "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==",
- "license": "Apache-2.0",
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-sankey": {
+ "version": "0.12.3",
+ "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
+ "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "@chevrotain/cst-dts-gen": "11.0.3",
- "@chevrotain/gast": "11.0.3",
- "@chevrotain/regexp-to-ast": "11.0.3",
- "@chevrotain/types": "11.0.3",
- "@chevrotain/utils": "11.0.3",
- "lodash-es": "4.17.21"
+ "d3-array": "1 - 2",
+ "d3-shape": "^1.2.0"
}
},
- "node_modules/chevrotain-allstar": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz",
- "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
- "license": "MIT",
+ "node_modules/d3-sankey/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "lodash-es": "^4.17.21"
- },
- "peerDependencies": {
- "chevrotain": "^11.0.0"
+ "internmap": "^1.0.0"
}
},
- "node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "license": "MIT",
+ "node_modules/d3-sankey/node_modules/d3-path": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/d3-sankey/node_modules/d3-shape": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
+ "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
+ "d3-path": "1"
}
},
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/d3-sankey/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==",
+ "license": "ISC"
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
"license": "ISC",
"dependencies": {
- "is-glob": "^4.0.1"
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
},
"engines": {
- "node": ">= 6"
+ "node": ">=12"
}
},
- "node_modules/chrome-trace-event": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
- "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
- "license": "MIT",
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
+ "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
"engines": {
- "node": ">=6.0"
+ "node": ">=12"
}
},
- "node_modules/ci-info": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz",
- "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "license": "ISC",
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/citeproc": {
- "version": "2.4.63",
- "resolved": "https://registry.npmjs.org/citeproc/-/citeproc-2.4.63.tgz",
- "integrity": "sha512-68F95Bp4UbgZU/DBUGQn0qV3HDZLCdI9+Bb2ByrTaNJDL5VEm9LqaiNaxljsvoaExSLEXe1/r6n2Z06SCzW3/Q==",
- "license": "CPAL-1.0 OR AGPL-1.0"
- },
- "node_modules/clean-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
- "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "license": "ISC",
"dependencies": {
- "escape-string-regexp": "^1.0.5"
+ "d3-path": "^3.1.0"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/clean-regexp/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
+ "node": ">=12"
}
},
- "node_modules/clippie": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/clippie/-/clippie-4.1.3.tgz",
- "integrity": "sha512-15WNUw0UGN8odzmCuuv3zIbYbjTg7AWJrjL4gXoa0o9fg1lZ+m8Vb6iZhWA1B8oKWpZRgOt6Qz3N/S1+BA4N1Q==",
- "license": "BSD-2-Clause"
- },
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
"license": "ISC",
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "d3-array": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "license": "ISC",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "d3-time": "1 - 3"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=12"
}
},
- "node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "license": "MIT",
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "license": "ISC",
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/clone-deep/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "license": "MIT",
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "license": "ISC",
"dependencies": {
- "isobject": "^3.0.1"
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
}
},
- "node_modules/codemirror": {
- "version": "5.65.17",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
- "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==",
- "license": "MIT"
- },
- "node_modules/codemirror-spell-checker": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz",
- "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==",
- "license": "MIT",
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "license": "ISC",
"dependencies": {
- "typo-js": "*"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/dagre-d3-es": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz",
+ "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==",
"license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
+ "d3": "^7.8.2",
+ "lodash-es": "^4.17.21"
}
},
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "license": "MIT"
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true,
+ "license": "BSD-2-Clause"
},
- "node_modules/colord": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
- "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "node_modules/data-uri-to-buffer": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz",
+ "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==",
"dev": true,
"license": "MIT"
},
- "node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "node_modules/dayjs": {
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
- "node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "node_modules/debug": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
"engines": {
- "node": ">= 12"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/comment-parser": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
- "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">= 12.0.0"
+ "node": ">=0.10"
}
},
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "node_modules/deep-eql": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
},
- "node_modules/core-js-compat": {
- "version": "3.37.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz",
- "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
+ "node_modules/deep-equal": {
+ "name": "@nolyfill/deep-equal",
+ "version": "1.0.29",
+ "resolved": "https://registry.npmjs.org/@nolyfill/deep-equal/-/deep-equal-1.0.29.tgz",
+ "integrity": "sha512-EtrJBbOXHhVz8Y1gMYolKgPqh2u96UPqkZMHR0lcjn3y4TC4R7GuN3E4kEhDIpyK3q1+y7HHPHHkt5fGvW1crQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "browserslist": "^4.23.0"
+ "dequal": "2.0.3"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
+ "engines": {
+ "node": ">=12.4.0"
}
},
- "node_modules/cose-base": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
- "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "layout-base": "^1.0.0"
+ "engines": {
+ "node": ">=4.0.0"
}
},
- "node_modules/cosmiconfig": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
- "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
- "license": "MIT",
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/delaunator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
+ "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+ "license": "ISC",
"dependencies": {
- "env-paths": "^2.2.1",
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "robust-predicates": "^3.0.2"
}
},
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "node_modules/dependency-graph": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
"engines": {
- "node": ">= 8"
+ "node": ">= 0.6.0"
}
},
- "node_modules/css": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
- "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "inherits": "^2.0.4",
- "source-map": "^0.6.1",
- "source-map-resolve": "^0.6.0"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/css-functions-list": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz",
- "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==",
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
"engines": {
- "node": ">=12 || >=16"
+ "node": ">=8"
}
},
- "node_modules/css-loader": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz",
- "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
- "license": "MIT",
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "icss-utils": "^5.1.0",
- "postcss": "^8.4.33",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
- "postcss-modules-values": "^4.0.0",
- "postcss-value-parser": "^4.2.0",
- "semver": "^7.5.4"
+ "esutils": "^2.0.2"
},
"engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x",
- "webpack": "^5.27.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
+ "node": ">=6.0.0"
}
},
- "node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "node_modules/dom-input-range": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-1.1.6.tgz",
+ "integrity": "sha512-4o/SkTpscD0n81BeErrrtmE58lG8vTks++92vk//ld0NmkQTb4AVJ2rexh2yor6rtBf5IMte26u+fF3EgCppPQ==",
+ "license": "MIT",
+ "workspaces": [
+ "demos"
+ ]
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
+ "entities": "^4.2.0"
},
"funding": {
- "url": "https://github.com/sponsors/fb55"
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
"dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
+ "domelementtype": "^2.3.0"
},
"engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
- "node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "node_modules/dompurify": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
+ "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==",
+ "license": "(MPL-2.0 OR Apache-2.0)"
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
"dev": true,
"license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
},
"funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
+ "url": "https://github.com/fb55/domutils?sponsor=1"
}
},
- "node_modules/csso": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
- "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
- "dev": true,
+ "node_modules/dropzone": {
+ "version": "6.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-6.0.0-beta.2.tgz",
+ "integrity": "sha512-k44yLuFFhRk53M8zP71FaaNzJYIzr99SKmpbO/oZKNslDjNXQsBTdfLs+iONd0U0L94zzlFzRnFdqbLcs7h9fQ==",
"license": "MIT",
"dependencies": {
- "css-tree": "~2.2.0"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
+ "@swc/helpers": "^0.2.13",
+ "just-extend": "^5.0.0"
}
},
- "node_modules/csso/node_modules/css-tree": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
- "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
- "dev": true,
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/easymde": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz",
+ "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==",
"license": "MIT",
"dependencies": {
- "mdn-data": "2.0.28",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
+ "@types/codemirror": "^5.60.4",
+ "@types/marked": "^4.0.7",
+ "codemirror": "^5.63.1",
+ "codemirror-spell-checker": "1.1.2",
+ "marked": "^4.1.0"
}
},
- "node_modules/csso/node_modules/mdn-data": {
- "version": "2.0.28",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
- "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
- "dev": true,
- "license": "CC0-1.0"
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.13",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
+ "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
+ "license": "ISC"
},
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"license": "MIT"
},
- "node_modules/cytoscape": {
- "version": "3.30.1",
- "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.1.tgz",
- "integrity": "sha512-TRJc3HbBPkHd50u9YfJh2FxD1lDLZ+JXnJoyBn5LkncoeuT7fapO/Hq/Ed8TdFclaKshzInge2i30bg7VKeoPQ==",
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"license": "MIT",
"engines": {
- "node": ">=0.10"
+ "node": ">= 4"
}
},
- "node_modules/cytoscape-cose-bilkent": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
- "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"license": "MIT",
"dependencies": {
- "cose-base": "^1.0.0"
- },
- "peerDependencies": {
- "cytoscape": "^3.2.0"
- }
- },
- "node_modules/d3": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
- "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
- "license": "ISC",
- "dependencies": {
- "d3-array": "3",
- "d3-axis": "3",
- "d3-brush": "3",
- "d3-chord": "3",
- "d3-color": "3",
- "d3-contour": "4",
- "d3-delaunay": "6",
- "d3-dispatch": "3",
- "d3-drag": "3",
- "d3-dsv": "3",
- "d3-ease": "3",
- "d3-fetch": "3",
- "d3-force": "3",
- "d3-format": "3",
- "d3-geo": "3",
- "d3-hierarchy": "3",
- "d3-interpolate": "3",
- "d3-path": "3",
- "d3-polygon": "3",
- "d3-quadtree": "3",
- "d3-random": "3",
- "d3-scale": "4",
- "d3-scale-chromatic": "3",
- "d3-selection": "3",
- "d3-shape": "3",
- "d3-time": "3",
- "d3-time-format": "4",
- "d3-timer": "3",
- "d3-transition": "3",
- "d3-zoom": "3"
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=10.13.0"
}
},
- "node_modules/d3-array": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
- "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
- "license": "ISC",
- "dependencies": {
- "internmap": "1 - 2"
- },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=12"
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/d3-axis": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
- "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
- "license": "ISC",
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=6"
}
},
- "node_modules/d3-brush": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
- "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "3",
- "d3-transition": "3"
+ "node_modules/envinfo": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
+ "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
+ "license": "MIT",
+ "bin": {
+ "envinfo": "dist/cli.js"
},
"engines": {
- "node": ">=12"
+ "node": ">=4"
}
},
- "node_modules/d3-chord": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
- "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
- "license": "ISC",
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "license": "MIT",
"dependencies": {
- "d3-path": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "is-arrayish": "^0.2.1"
}
},
- "node_modules/d3-contour": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
- "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
- "license": "ISC",
+ "node_modules/es-aggregate-error": {
+ "name": "@nolyfill/es-aggregate-error",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/es-aggregate-error/-/es-aggregate-error-1.0.28.tgz",
+ "integrity": "sha512-rznCu74ormHtT2JkCgARsrWRAMDhkvS3PM+vz1BXKY0IsrXfwtxM0PlxfDexvCQ1tf/kq69Dfp2No5hJ1WAJVQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-array": "^3.2.0"
+ "@nolyfill/shared": "1.0.28"
},
"engines": {
- "node": ">=12"
+ "node": ">=12.4.0"
}
},
- "node_modules/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
- "license": "ISC",
+ "node_modules/es-iterator-helpers": {
+ "name": "@nolyfill/es-iterator-helpers",
+ "version": "1.0.21",
+ "resolved": "https://registry.npmjs.org/@nolyfill/es-iterator-helpers/-/es-iterator-helpers-1.0.21.tgz",
+ "integrity": "sha512-i326KeE0nhW4STobcUhkxpXzZUddedCmfh7b/IyXR9kW0CFHiNNT80C3JSEy33mUlhZtk/ezX47nymcFxyBigg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "delaunator": "5"
+ "@nolyfill/shared": "1.0.21"
},
"engines": {
- "node": ">=12"
+ "node": ">=12.4.0"
}
},
- "node_modules/d3-dispatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
- "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
+ "node_modules/es-iterator-helpers/node_modules/@nolyfill/shared": {
+ "version": "1.0.21",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.21.tgz",
+ "integrity": "sha512-qDc/NoaFU23E0hhiDPeUrvWzTXIPE+RbvRQtRWSeHHNmCIgYI9HS1jKzNYNJxv4jvZ/1VmM3L6rNVxbj+LBMNA==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/d3-drag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
- "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-selection": "3"
+ "node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
"node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
}
},
- "node_modules/d3-dsv": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
- "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
- "license": "ISC",
+ "node_modules/esbuild-loader": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.2.2.tgz",
+ "integrity": "sha512-Mdq/A1L8p37hkibp8jGFwuQTDSWhDmlueAefsrCPRwNWThEOlQmIglV7Gd6GE2mO5bt7ksfxKOMwkuY7jjVTXg==",
+ "license": "MIT",
"dependencies": {
- "commander": "7",
- "iconv-lite": "0.6",
- "rw": "1"
+ "esbuild": "^0.21.0",
+ "get-tsconfig": "^4.7.0",
+ "loader-utils": "^2.0.4",
+ "webpack-sources": "^1.4.3"
},
- "bin": {
- "csv2json": "bin/dsv2json.js",
- "csv2tsv": "bin/dsv2dsv.js",
- "dsv2dsv": "bin/dsv2dsv.js",
- "dsv2json": "bin/dsv2json.js",
- "json2csv": "bin/json2dsv.js",
- "json2dsv": "bin/json2dsv.js",
- "json2tsv": "bin/json2dsv.js",
- "tsv2csv": "bin/dsv2dsv.js",
- "tsv2json": "bin/dsv2json.js"
+ "funding": {
+ "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1"
},
- "engines": {
- "node": ">=12"
+ "peerDependencies": {
+ "webpack": "^4.40.0 || ^5.0.0"
}
},
- "node_modules/d3-dsv/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"license": "MIT",
"engines": {
- "node": ">= 10"
- }
- },
- "node_modules/d3-ease": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
- "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=12"
+ "node": ">=6"
}
},
- "node_modules/d3-fetch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
- "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
- "license": "ISC",
- "dependencies": {
- "d3-dsv": "1 - 3"
- },
+ "node_modules/escape-goat": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
+ "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
- }
- },
- "node_modules/d3-force": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
- "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-quadtree": "1 - 3",
- "d3-timer": "1 - 3"
},
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/d3-format": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
- "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
- "license": "ISC",
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/d3-geo": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
- "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
- "license": "ISC",
+ "node_modules/eslint": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-array": "2.5.0 - 3"
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
},
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-hierarchy": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
- "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
- "license": "ISC",
+ "node_modules/eslint-compat-utils": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz",
+ "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-color": "1 - 3"
+ "semver": "^7.5.4"
},
"engines": {
"node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
}
},
- "node_modules/d3-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
- "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "node_modules/eslint-config-prettier": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+ "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
}
},
- "node_modules/d3-polygon": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
- "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
}
},
- "node_modules/d3-quadtree": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
- "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
}
},
- "node_modules/d3-random": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
- "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz",
+ "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==",
+ "dev": true,
"license": "ISC",
+ "dependencies": {
+ "@nolyfill/is-core-module": "1.0.39",
+ "debug": "^4.3.5",
+ "enhanced-resolve": "^5.15.0",
+ "eslint-module-utils": "^2.8.1",
+ "fast-glob": "^3.3.2",
+ "get-tsconfig": "^4.7.5",
+ "is-bun-module": "^1.0.2",
+ "is-glob": "^4.0.3"
+ },
"engines": {
- "node": ">=12"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*",
+ "eslint-plugin-import-x": "*"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-import": {
+ "optional": true
+ },
+ "eslint-plugin-import-x": {
+ "optional": true
+ }
}
},
- "node_modules/d3-sankey": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
- "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
- "license": "BSD-3-Clause",
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz",
+ "integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-array": "1 - 2",
- "d3-shape": "^1.2.0"
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/d3-sankey/node_modules/d3-array": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
- "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
- "license": "BSD-3-Clause",
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "internmap": "^1.0.0"
+ "ms": "^2.1.1"
}
},
- "node_modules/d3-sankey/node_modules/d3-path": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
- "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/d3-sankey/node_modules/d3-shape": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
- "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "d3-path": "1"
+ "node_modules/eslint-plugin-array-func": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-array-func/-/eslint-plugin-array-func-4.0.0.tgz",
+ "integrity": "sha512-p3NY2idNIvgmQLF2/62ZskYt8gOuUgQ51smRc3Lh7FtSozpNc2sg+lniz9VaCagLZHEZTl8qGJKqE7xy8O/D/g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.40.0"
}
},
- "node_modules/d3-sankey/node_modules/internmap": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
- "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==",
- "license": "ISC"
- },
- "node_modules/d3-scale": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
- "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
- "license": "ISC",
+ "node_modules/eslint-plugin-deprecation": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-3.0.0.tgz",
+ "integrity": "sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==",
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
"dependencies": {
- "d3-array": "2.10.0 - 3",
- "d3-format": "1 - 3",
- "d3-interpolate": "1.2.0 - 3",
- "d3-time": "2.1.1 - 3",
- "d3-time-format": "2 - 4"
+ "@typescript-eslint/utils": "^7.0.0",
+ "ts-api-utils": "^1.3.0",
+ "tslib": "^2.3.1"
},
- "engines": {
- "node": ">=12"
+ "peerDependencies": {
+ "eslint": "^8.0.0",
+ "typescript": "^4.2.4 || ^5.0.0"
}
},
- "node_modules/d3-scale-chromatic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
- "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
- "license": "ISC",
+ "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-color": "1 - 3",
- "d3-interpolate": "1 - 3"
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0"
},
"engines": {
- "node": ">=12"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/d3-selection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
- "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
- "license": "ISC",
+ "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/types": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
+ "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/d3-shape": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
- "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
- "license": "ISC",
+ "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
+ "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "d3-path": "^3.1.0"
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": ">=12"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/d3-time": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
- "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
- "license": "ISC",
+ "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/utils": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
+ "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-array": "2 - 3"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
- "engines": {
- "node": ">=12"
+ "peerDependencies": {
+ "eslint": "^8.56.0"
}
},
- "node_modules/d3-time-format": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
- "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
- "license": "ISC",
+ "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "d3-time": "1 - 3"
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-timer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
- "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/d3-transition": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
- "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
- "license": "ISC",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-dispatch": "1 - 3",
- "d3-ease": "1 - 3",
- "d3-interpolate": "1 - 3",
- "d3-timer": "1 - 3"
- },
+ "node_modules/eslint-plugin-deprecation/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "peerDependencies": {
- "d3-selection": "2 - 3"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/d3-zoom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
- "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "node_modules/eslint-plugin-deprecation/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
"license": "ISC",
"dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "2 - 3",
- "d3-transition": "2 - 3"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/dagre-d3-es": {
- "version": "7.0.10",
- "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz",
- "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==",
+ "node_modules/eslint-plugin-escompat": {
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.1.tgz",
+ "integrity": "sha512-j/H70uveM+G9M0onQJOYM+h5trTjQfmBnhGzxAxwGrqARfgXwkfjs+SkvJ1j/a4ofyCIYpBQsGg7q+TowwPNmA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "d3": "^7.8.2",
- "lodash-es": "^4.17.21"
+ "browserslist": "^4.23.1"
+ },
+ "peerDependencies": {
+ "eslint": ">=5.14.1"
}
},
- "node_modules/damerau-levenshtein": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
- "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/data-uri-to-buffer": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz",
- "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/dayjs": {
- "version": "1.11.12",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz",
- "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==",
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
- "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "node_modules/eslint-plugin-eslint-comments": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz",
+ "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "escape-string-regexp": "^1.0.5",
+ "ignore": "^5.0.5"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=6.5.0"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=4.19.1"
}
},
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=0.10"
+ "node": ">=0.8.0"
}
},
- "node_modules/deep-eql": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
- "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
+ "node_modules/eslint-plugin-filenames": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz",
+ "integrity": "sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=6"
+ "dependencies": {
+ "lodash.camelcase": "4.3.0",
+ "lodash.kebabcase": "4.1.1",
+ "lodash.snakecase": "4.1.1",
+ "lodash.upperfirst": "4.3.1"
+ },
+ "peerDependencies": {
+ "eslint": "*"
}
},
- "node_modules/deep-equal": {
- "name": "@nolyfill/deep-equal",
- "version": "1.0.29",
- "resolved": "https://registry.npmjs.org/@nolyfill/deep-equal/-/deep-equal-1.0.29.tgz",
- "integrity": "sha512-EtrJBbOXHhVz8Y1gMYolKgPqh2u96UPqkZMHR0lcjn3y4TC4R7GuN3E4kEhDIpyK3q1+y7HHPHHkt5fGvW1crQ==",
+ "node_modules/eslint-plugin-github": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-5.0.1.tgz",
+ "integrity": "sha512-qbXG3wL5Uh2JB92EKeX2hPtO9c/t75qVxQjVLYuTFfhHifLZzv9CBvLCvoaBhLrAC/xTMVht7DK/NofYK8X4Dg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "dequal": "2.0.3"
+ "@github/browserslist-config": "^1.0.0",
+ "@typescript-eslint/eslint-plugin": "^7.0.1",
+ "@typescript-eslint/parser": "^7.0.1",
+ "aria-query": "^5.3.0",
+ "eslint-config-prettier": ">=8.0.0",
+ "eslint-plugin-escompat": "^3.3.3",
+ "eslint-plugin-eslint-comments": "^3.2.0",
+ "eslint-plugin-filenames": "^1.3.2",
+ "eslint-plugin-i18n-text": "^1.0.1",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-no-only-tests": "^3.0.0",
+ "eslint-plugin-prettier": "^5.0.0",
+ "eslint-rule-documentation": ">=1.0.0",
+ "jsx-ast-utils": "^3.3.2",
+ "prettier": "^3.0.0",
+ "svg-element-attributes": "^1.3.1"
},
- "engines": {
- "node": ">=12.4.0"
+ "bin": {
+ "eslint-ignore-errors": "bin/eslint-ignore-errors.js"
+ },
+ "peerDependencies": {
+ "eslint": "^8.0.1"
}
},
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
+ "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/type-utils": "7.18.0",
+ "@typescript-eslint/utils": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
"engines": {
- "node": ">=4.0.0"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^7.0.0",
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/parser": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
+ "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/delaunator": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
- "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
- "license": "ISC",
+ "license": "BSD-2-Clause",
"dependencies": {
- "robust-predicates": "^3.0.2"
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/dependency-graph": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
- "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0"
+ },
"engines": {
- "node": ">= 0.6.0"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/type-utils": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
+ "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "7.18.0",
+ "@typescript-eslint/utils": "7.18.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
"engines": {
- "node": ">=6"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/didyoumean": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
- "license": "Apache-2.0"
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/types": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
+ "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/dlv": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
- "license": "MIT"
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
+ "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "BSD-2-Clause",
"dependencies": {
- "esutils": "^2.0.2"
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/dom-input-range": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-1.1.6.tgz",
- "integrity": "sha512-4o/SkTpscD0n81BeErrrtmE58lG8vTks++92vk//ld0NmkQTb4AVJ2rexh2yor6rtBf5IMte26u+fF3EgCppPQ==",
- "license": "MIT",
- "workspaces": [
- "demos"
- ]
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/utils": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
+ "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
}
},
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "domelementtype": "^2.3.0"
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": ">= 4"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/dompurify": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
- "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==",
- "license": "(MPL-2.0 OR Apache-2.0)"
- },
- "node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "node_modules/eslint-plugin-github/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dropzone": {
- "version": "6.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-6.0.0-beta.2.tgz",
- "integrity": "sha512-k44yLuFFhRk53M8zP71FaaNzJYIzr99SKmpbO/oZKNslDjNXQsBTdfLs+iONd0U0L94zzlFzRnFdqbLcs7h9fQ==",
- "license": "MIT",
- "dependencies": {
- "@swc/helpers": "^0.2.13",
- "just-extend": "^5.0.0"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "license": "MIT"
- },
- "node_modules/easymde": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz",
- "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==",
- "license": "MIT",
+ "node_modules/eslint-plugin-github/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "@types/codemirror": "^5.60.4",
- "@types/marked": "^4.0.7",
- "codemirror": "^5.63.1",
- "codemirror-spell-checker": "1.1.2",
- "marked": "^4.1.0"
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/electron-to-chromium": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz",
- "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==",
- "license": "ISC"
- },
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "license": "MIT"
- },
- "node_modules/emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "node_modules/eslint-plugin-i": {
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.29.1.tgz",
+ "integrity": "sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "doctrine": "^3.0.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "get-tsconfig": "^4.7.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "semver": "^7.5.4"
+ },
"engines": {
- "node": ">= 4"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ },
+ "peerDependencies": {
+ "eslint": "^7.2.0 || ^8"
}
},
- "node_modules/enhanced-resolve": {
- "version": "5.17.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
- "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "node_modules/eslint-plugin-i/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
+ "node_modules/eslint-plugin-i/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
},
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "node_modules/eslint-plugin-i18n-text": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz",
+ "integrity": "sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==",
+ "dev": true,
"license": "MIT",
- "engines": {
- "node": ">=6"
+ "peerDependencies": {
+ "eslint": ">=5.0.0"
}
},
- "node_modules/envinfo": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
- "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
+ "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+ "dev": true,
"license": "MIT",
- "bin": {
- "envinfo": "dist/cli.js"
+ "dependencies": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.15.0"
},
"engines": {
"node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "is-arrayish": "^0.2.1"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/es-aggregate-error": {
- "name": "@nolyfill/es-aggregate-error",
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/@nolyfill/es-aggregate-error/-/es-aggregate-error-1.0.28.tgz",
- "integrity": "sha512-rznCu74ormHtT2JkCgARsrWRAMDhkvS3PM+vz1BXKY0IsrXfwtxM0PlxfDexvCQ1tf/kq69Dfp2No5hJ1WAJVQ==",
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@nolyfill/shared": "1.0.28"
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
},
"engines": {
- "node": ">=12.4.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/es-iterator-helpers": {
- "name": "@nolyfill/es-iterator-helpers",
- "version": "1.0.21",
- "resolved": "https://registry.npmjs.org/@nolyfill/es-iterator-helpers/-/es-iterator-helpers-1.0.21.tgz",
- "integrity": "sha512-i326KeE0nhW4STobcUhkxpXzZUddedCmfh7b/IyXR9kW0CFHiNNT80C3JSEy33mUlhZtk/ezX47nymcFxyBigg==",
+ "node_modules/eslint-plugin-import/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@nolyfill/shared": "1.0.21"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=12.4.0"
+ "node": "*"
}
},
- "node_modules/es-iterator-helpers/node_modules/@nolyfill/shared": {
- "version": "1.0.21",
- "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.21.tgz",
- "integrity": "sha512-qDc/NoaFU23E0hhiDPeUrvWzTXIPE+RbvRQtRWSeHHNmCIgYI9HS1jKzNYNJxv4jvZ/1VmM3L6rNVxbj+LBMNA==",
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/es-module-lexer": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
- "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
- "license": "MIT"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
},
- "node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "hasInstallScript": true,
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz",
+ "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==",
+ "dev": true,
"license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
+ "dependencies": {
+ "aria-query": "~5.1.3",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.9.1",
+ "axobject-query": "~3.1.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.19",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.includes": "^2.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=4.0"
},
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
- "node_modules/esbuild-loader": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.2.2.tgz",
- "integrity": "sha512-Mdq/A1L8p37hkibp8jGFwuQTDSWhDmlueAefsrCPRwNWThEOlQmIglV7Gd6GE2mO5bt7ksfxKOMwkuY7jjVTXg==",
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "deep-equal": "^2.0.5"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "esbuild": "^0.21.0",
- "get-tsconfig": "^4.7.0",
- "loader-utils": "^2.0.4",
- "webpack-sources": "^1.4.3"
- },
- "funding": {
- "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
},
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-no-jquery": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.0.2.tgz",
+ "integrity": "sha512-n/+6p6PFhWDNPVLJj1463hw4OTIRBbROGcbhmtOHTgw7yihSKzkwZiQ00EJTneyeR3jRiw5lpWSMCCBhtb8t2g==",
+ "dev": true,
+ "license": "MIT",
"peerDependencies": {
- "webpack": "^4.40.0 || ^5.0.0"
+ "eslint": ">=8.0.0"
}
},
- "node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "node_modules/eslint-plugin-no-only-tests": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz",
+ "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=5.0.0"
}
},
- "node_modules/escape-goat": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
- "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "node_modules/eslint-plugin-no-use-extend-native": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz",
+ "integrity": "sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==",
+ "dev": true,
"license": "MIT",
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "is-get-set-prop": "^1.0.0",
+ "is-js-type": "^2.0.0",
+ "is-obj-prop": "^1.0.0",
+ "is-proto-prop": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "node_modules/eslint-plugin-playwright": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-1.6.2.tgz",
+ "integrity": "sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==",
"dev": true,
"license": "MIT",
+ "workspaces": [
+ "examples"
+ ],
+ "dependencies": {
+ "globals": "^13.23.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=16.6.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "eslint": ">=8.40.0",
+ "eslint-plugin-jest": ">=25"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-jest": {
+ "optional": true
+ }
}
},
- "node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
+ "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.0",
- "@humanwhocodes/config-array": "^0.11.14",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.9.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.18.0 || >=16.0.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": "*",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-compat-utils": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz",
- "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==",
+ "node_modules/eslint-plugin-react": {
+ "version": "7.35.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz",
+ "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "semver": "^7.5.4"
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.19",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.values": "^1.2.0",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=4"
},
"peerDependencies": {
- "eslint": ">=6.0.0"
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
- "node_modules/eslint-config-prettier": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
- "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
"dev": true,
"license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
+ "engines": {
+ "node": ">=10"
},
"peerDependencies": {
- "eslint": ">=7.0.0"
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
- "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.13.0",
- "resolve": "^1.22.4"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"dependencies": {
- "ms": "^2.1.1"
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/eslint-import-resolver-typescript": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
- "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
+ "node_modules/eslint-plugin-react/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
"dependencies": {
- "debug": "^4.3.4",
- "enhanced-resolve": "^5.12.0",
- "eslint-module-utils": "^2.7.4",
- "fast-glob": "^3.3.1",
- "get-tsconfig": "^4.5.0",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
},
- "funding": {
- "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ "bin": {
+ "resolve": "bin/resolve"
},
- "peerDependencies": {
- "eslint": "*",
- "eslint-plugin-import": "*"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-module-utils": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
- "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-regexp": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.6.0.tgz",
+ "integrity": "sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "debug": "^3.2.7"
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.9.1",
+ "comment-parser": "^1.4.0",
+ "jsdoc-type-pratt-parser": "^4.0.0",
+ "refa": "^0.12.1",
+ "regexp-ast-analysis": "^0.7.1",
+ "scslre": "^0.3.0"
},
"engines": {
- "node": ">=4"
+ "node": "^18 || >=20"
},
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "peerDependencies": {
+ "eslint": ">=8.44.0"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-2.0.1.tgz",
+ "integrity": "sha512-hkiM2yJakXsEzdBhCzCvjd0DfdVL7w1JFSFYp08KEzlwu7SZtP5QKbDU7Hf8VI3Jkve3/py/yUGuT46+juSk6Q==",
"dev": true,
- "license": "MIT",
+ "license": "LGPL-3.0-only",
"dependencies": {
- "ms": "^2.1.1"
+ "@babel/core": "7.24.3",
+ "@babel/eslint-parser": "7.24.1",
+ "@babel/plugin-proposal-decorators": "7.24.1",
+ "@babel/preset-env": "7.24.3",
+ "@babel/preset-flow": "7.24.1",
+ "@babel/preset-react": "7.24.1",
+ "@eslint-community/regexpp": "4.10.0",
+ "@types/eslint": "8.56.10",
+ "@typescript-eslint/eslint-plugin": "7.16.1",
+ "@typescript-eslint/utils": "^7.16.1",
+ "builtin-modules": "3.3.0",
+ "bytes": "3.1.2",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-jsx-a11y": "^6.8.0",
+ "eslint-plugin-react": "^7.35.0",
+ "eslint-plugin-react-hooks": "4.6.0",
+ "eslint-scope": "8.0.1",
+ "functional-red-black-tree": "1.0.1",
+ "jsx-ast-utils": "^3.3.5",
+ "minimatch": "^9.0.3",
+ "scslre": "0.3.0",
+ "semver": "7.6.0",
+ "typescript": "5.4.3",
+ "vue-eslint-parser": "9.4.3"
+ },
+ "peerDependencies": {
+ "eslint": "^8.0.0 || ^9.0.0"
}
},
- "node_modules/eslint-plugin-array-func": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-array-func/-/eslint-plugin-array-func-4.0.0.tgz",
- "integrity": "sha512-p3NY2idNIvgmQLF2/62ZskYt8gOuUgQ51smRc3Lh7FtSozpNc2sg+lniz9VaCagLZHEZTl8qGJKqE7xy8O/D/g==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/eslint-plugin-deprecation": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-3.0.0.tgz",
- "integrity": "sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@types/eslint": {
+ "version": "8.56.10",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
+ "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
"dev": true,
- "license": "LGPL-3.0-or-later",
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/utils": "^7.0.0",
- "ts-api-utils": "^1.3.0",
- "tslib": "^2.3.1"
- },
- "peerDependencies": {
- "eslint": "^8.0.0",
- "typescript": "^4.2.4 || ^5.0.0"
+ "@types/estree": "*",
+ "@types/json-schema": "*"
}
},
- "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/scope-manager": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
- "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz",
+ "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/visitor-keys": "7.18.0"
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/type-utils": "7.16.1",
+ "@typescript-eslint/utils": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -5699,12 +8880,21 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^7.0.0",
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/types": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
- "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5715,15 +8905,15 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
- "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz",
+ "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/visitor-keys": "7.18.0",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -5744,17 +8934,17 @@
}
}
},
- "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/utils": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
- "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz",
+ "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "7.18.0",
- "@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/typescript-estree": "7.18.0"
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/typescript-estree": "7.16.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -5767,15 +8957,19 @@
"eslint": "^8.56.0"
}
},
- "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/visitor-keys": {
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/parser": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
- "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
+ "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
"dev": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
+ "@typescript-eslint/scope-manager": "7.18.0",
"@typescript-eslint/types": "7.18.0",
- "eslint-visitor-keys": "^3.4.3"
+ "@typescript-eslint/typescript-estree": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "debug": "^4.3.4"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -5783,144 +8977,26 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/eslint-plugin-deprecation/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-plugin-deprecation/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/eslint-plugin-escompat": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.0.tgz",
- "integrity": "sha512-kSTb1wxBRW4aL43Yu23Ula5lSFd9KVVwxyZ4zkG2feBFoj/o4mmgqkN12DXYv3VclZ559ePpBG6b9UjAeYeUyA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.23.1"
- },
- "peerDependencies": {
- "eslint": ">=5.14.1"
- }
- },
- "node_modules/eslint-plugin-eslint-comments": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz",
- "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^1.0.5",
- "ignore": "^5.0.5"
- },
- "engines": {
- "node": ">=6.5.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/eslint-plugin-filenames": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz",
- "integrity": "sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash.camelcase": "4.3.0",
- "lodash.kebabcase": "4.1.1",
- "lodash.snakecase": "4.1.1",
- "lodash.upperfirst": "4.3.1"
},
"peerDependencies": {
- "eslint": "*"
- }
- },
- "node_modules/eslint-plugin-github": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-5.0.1.tgz",
- "integrity": "sha512-qbXG3wL5Uh2JB92EKeX2hPtO9c/t75qVxQjVLYuTFfhHifLZzv9CBvLCvoaBhLrAC/xTMVht7DK/NofYK8X4Dg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@github/browserslist-config": "^1.0.0",
- "@typescript-eslint/eslint-plugin": "^7.0.1",
- "@typescript-eslint/parser": "^7.0.1",
- "aria-query": "^5.3.0",
- "eslint-config-prettier": ">=8.0.0",
- "eslint-plugin-escompat": "^3.3.3",
- "eslint-plugin-eslint-comments": "^3.2.0",
- "eslint-plugin-filenames": "^1.3.2",
- "eslint-plugin-i18n-text": "^1.0.1",
- "eslint-plugin-import": "^2.25.2",
- "eslint-plugin-jsx-a11y": "^6.7.1",
- "eslint-plugin-no-only-tests": "^3.0.0",
- "eslint-plugin-prettier": "^5.0.0",
- "eslint-rule-documentation": ">=1.0.0",
- "jsx-ast-utils": "^3.3.2",
- "prettier": "^3.0.0",
- "svg-element-attributes": "^1.3.1"
- },
- "bin": {
- "eslint-ignore-errors": "bin/eslint-ignore-errors.js"
+ "eslint": "^8.56.0"
},
- "peerDependencies": {
- "eslint": "^8.0.1"
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/eslint-plugin": {
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
- "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
- "@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "7.18.0",
- "@typescript-eslint/type-utils": "7.18.0",
- "@typescript-eslint/utils": "7.18.0",
- "@typescript-eslint/visitor-keys": "7.18.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.3.1",
- "natural-compare": "^1.4.0",
- "ts-api-utils": "^1.3.0"
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -5928,29 +9004,18 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^7.0.0",
- "eslint": "^8.56.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/parser": {
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
- "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "7.18.0",
"@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/typescript-estree": "7.18.0",
- "@typescript-eslint/visitor-keys": "7.18.0",
- "debug": "^4.3.4"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -5958,25 +9023,17 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.56.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/scope-manager": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
- "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz",
+ "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/visitor-keys": "7.18.0"
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -5986,15 +9043,29 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/type-utils": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
- "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz",
+ "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "7.18.0",
- "@typescript-eslint/utils": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.16.1",
+ "@typescript-eslint/utils": "7.16.1",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@@ -6014,10 +9085,10 @@
}
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/types": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
- "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6028,15 +9099,15 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
- "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz",
+ "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/visitor-keys": "7.18.0",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -6057,17 +9128,17 @@
}
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/utils": {
- "version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
- "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz",
+ "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "7.18.0",
- "@typescript-eslint/types": "7.18.0",
- "@typescript-eslint/typescript-estree": "7.18.0"
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/typescript-estree": "7.16.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -6080,16 +9151,12 @@
"eslint": "^8.56.0"
}
},
- "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/visitor-keys": {
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/types": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
- "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
+ "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "7.18.0",
- "eslint-visitor-keys": "^3.4.3"
- },
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
@@ -6098,376 +9165,240 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-github/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-plugin-github/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/eslint-plugin-i": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.29.1.tgz",
- "integrity": "sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
+ "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
"dev": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
"dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
"debug": "^4.3.4",
- "doctrine": "^3.0.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "get-tsconfig": "^4.7.2",
+ "globby": "^11.1.0",
"is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "semver": "^7.5.4"
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": ">=12"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
- "url": "https://opencollective.com/unts"
- },
- "peerDependencies": {
- "eslint": "^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-i/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/eslint-plugin-i/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/eslint-plugin-i18n-text": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz",
- "integrity": "sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "eslint": ">=5.0.0"
- }
- },
- "node_modules/eslint-plugin-import": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
- "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlastindex": "^1.2.3",
- "array.prototype.flat": "^1.3.2",
- "array.prototype.flatmap": "^1.3.2",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "hasown": "^2.0.0",
- "is-core-module": "^2.13.1",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.7",
- "object.groupby": "^1.0.1",
- "object.values": "^1.1.7",
- "semver": "^6.3.1",
- "tsconfig-paths": "^3.15.0"
- },
- "engines": {
- "node": ">=4"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
+ "node": "^18.18.0 || >=20.0.0"
},
- "engines": {
- "node": "*"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-plugin-jsx-a11y": {
- "version": "6.9.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz",
- "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "aria-query": "~5.1.3",
- "array-includes": "^3.1.8",
- "array.prototype.flatmap": "^1.3.2",
- "ast-types-flow": "^0.0.8",
- "axe-core": "^4.9.1",
- "axobject-query": "~3.1.1",
- "damerau-levenshtein": "^1.0.8",
- "emoji-regex": "^9.2.2",
- "es-iterator-helpers": "^1.0.19",
- "hasown": "^2.0.2",
- "jsx-ast-utils": "^3.3.5",
- "language-tags": "^1.0.9",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.8",
- "safe-regex-test": "^1.0.3",
- "string.prototype.includes": "^2.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/utils": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
+ "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.18.0"
},
"engines": {
- "node": ">=4.0"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "eslint": "^8.56.0"
}
},
- "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
- "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "deep-equal": "^2.0.5"
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz",
+ "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@typescript-eslint/types": "7.16.1",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": "*"
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-no-jquery": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.0.2.tgz",
- "integrity": "sha512-n/+6p6PFhWDNPVLJj1463hw4OTIRBbROGcbhmtOHTgw7yihSKzkwZiQ00EJTneyeR3jRiw5lpWSMCCBhtb8t2g==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
"dev": true,
"license": "MIT",
- "peerDependencies": {
- "eslint": ">=8.0.0"
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/eslint-plugin-no-only-tests": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz",
- "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/eslint-scope": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz",
+ "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==",
"dev": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
"engines": {
- "node": ">=5.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-plugin-no-use-extend-native": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz",
- "integrity": "sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "is-get-set-prop": "^1.0.0",
- "is-js-type": "^2.0.0",
- "is-obj-prop": "^1.0.0",
- "is-proto-prop": "^2.0.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=6.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-plugin-playwright": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-1.6.2.tgz",
- "integrity": "sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
- "license": "MIT",
- "workspaces": [
- "examples"
- ],
+ "license": "ISC",
"dependencies": {
- "globals": "^13.23.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=16.6.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0",
- "eslint-plugin-jest": ">=25"
- },
- "peerDependenciesMeta": {
- "eslint-plugin-jest": {
- "optional": true
- }
+ "node": ">=10"
}
},
- "node_modules/eslint-plugin-prettier": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
- "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "prettier-linter-helpers": "^1.0.0",
- "synckit": "^0.9.1"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://opencollective.com/eslint-plugin-prettier"
- },
- "peerDependencies": {
- "@types/eslint": ">=8.0.0",
- "eslint": ">=8.0.0",
- "eslint-config-prettier": "*",
- "prettier": ">=3.0.0"
- },
- "peerDependenciesMeta": {
- "@types/eslint": {
- "optional": true
- },
- "eslint-config-prettier": {
- "optional": true
- }
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/eslint-plugin-regexp": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.6.0.tgz",
- "integrity": "sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.9.1",
- "comment-parser": "^1.4.0",
- "jsdoc-type-pratt-parser": "^4.0.0",
- "refa": "^0.12.1",
- "regexp-ast-analysis": "^0.7.1",
- "scslre": "^0.3.0"
+ "lru-cache": "^6.0.0"
},
- "engines": {
- "node": "^18 || >=20"
+ "bin": {
+ "semver": "bin/semver.js"
},
- "peerDependencies": {
- "eslint": ">=8.44.0"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/eslint-plugin-sonarjs": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-1.0.4.tgz",
- "integrity": "sha512-jF0eGCUsq/HzMub4ExAyD8x1oEgjOyB9XVytYGyWgSFvdiJQJp6IuP7RmtauCf06o6N/kZErh+zW4b10y1WZ+Q==",
+ "node_modules/eslint-plugin-sonarjs/node_modules/typescript": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
+ "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
"dev": true,
- "license": "LGPL-3.0-only",
- "engines": {
- "node": ">=16"
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
},
- "peerDependencies": {
- "eslint": "^8.0.0 || ^9.0.0"
+ "engines": {
+ "node": ">=14.17"
}
},
+ "node_modules/eslint-plugin-sonarjs/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/eslint-plugin-unicorn": {
"version": "55.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-55.0.0.tgz",
@@ -6515,6 +9446,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/eslint-plugin-unicorn/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/eslint-plugin-vitest": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.4.1.tgz",
@@ -6729,9 +9673,9 @@
}
},
"node_modules/eslint-plugin-wc": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.1.0.tgz",
- "integrity": "sha512-s/BGOtmpgQ2yifR6EC1OM9t0DwYLgg4ZAL07Kw4eXvBb5TYaPafI+65tswvnZvhH8FqcjERLbBZPPvYsvinkfg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.1.1.tgz",
+ "integrity": "sha512-GfJo05ZgWfwAFbW6Gkf+9CMOIU6fmbd3b4nm+PKESHgUdUTmi7vawlELCrzOhdiQjXUPZxDfFIVxYt9D/v/GdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7160,9 +10104,9 @@
"license": "ISC"
},
"node_modules/foreground-child": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
- "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
"license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.0",
@@ -7210,6 +10154,23 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -7496,9 +10457,9 @@
}
},
"node_modules/happy-dom": {
- "version": "14.12.3",
- "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-14.12.3.tgz",
- "integrity": "sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==",
+ "version": "15.3.1",
+ "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-15.3.1.tgz",
+ "integrity": "sha512-3nwi8abkBUHzdq/6UhseErN6b6J1obWZFl5XKKMUEp+OL4Vq7AIiLSVDmXQp83qykJHjhdrBxsae3CTA5nB36A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7507,7 +10468,7 @@
"whatwg-mimetype": "^3.0.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/has-flag": {
@@ -7587,9 +10548,9 @@
}
},
"node_modules/htmx.org": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-2.0.2.tgz",
- "integrity": "sha512-eUPIpQaWKKstX393XNCRCMJTrqPzikh36Y9RceqsUZLTtlFjFaVDgwZLUsrFk8J2uzZxkkfiy0TE359j2eN6hA=="
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-2.0.3.tgz",
+ "integrity": "sha512-AeoJUAjkCVVajbfKX+3sVQBTCt8Ct4lif1T+z/tptTXo8+8yyq3QIMQQe/IT+R8ssfrO1I0DeX4CAronzCL6oA=="
},
"node_modules/human-signals": {
"version": "5.0.0",
@@ -7652,9 +10613,9 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7806,6 +10767,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-bun-module": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz",
+ "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.6.3"
+ }
+ },
"node_modules/is-core-module": {
"name": "@nolyfill/is-core-module",
"version": "1.0.39",
@@ -8040,10 +11011,9 @@
"license": "MIT"
},
"node_modules/js-tokens": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
- "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
- "dev": true,
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
"node_modules/js-types": {
@@ -8069,9 +11039,9 @@
}
},
"node_modules/jsdoc-type-pratt-parser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
- "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz",
+ "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8089,16 +11059,16 @@
}
},
"node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=6"
+ "node": ">=4"
}
},
"node_modules/json-buffer": {
@@ -8469,6 +11439,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lodash.kebabcase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@@ -8537,6 +11514,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
"node_modules/loupe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
@@ -8558,10 +11548,14 @@
}
},
"node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "license": "ISC"
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
},
"node_modules/magic-string": {
"version": "0.25.9",
@@ -8804,9 +11798,9 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
- "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
@@ -8861,9 +11855,9 @@
}
},
"node_modules/mini-css-extract-plugin": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz",
- "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==",
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz",
+ "integrity": "sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==",
"license": "MIT",
"dependencies": {
"schema-utils": "^4.0.0",
@@ -8915,9 +11909,9 @@
}
},
"node_modules/monaco-editor": {
- "version": "0.50.0",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.50.0.tgz",
- "integrity": "sha512-8CclLCmrRRh+sul7C08BmPBP3P8wVWfBHomsTcndxg5NRCEPfu/mc2AGU8k37ajjDVXcXFc12ORAMUkmk+lkFA==",
+ "version": "0.51.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.51.0.tgz",
+ "integrity": "sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==",
"license": "MIT"
},
"node_modules/monaco-editor-webpack-plugin": {
@@ -9188,6 +12182,20 @@
"node": ">=12.4.0"
}
},
+ "node_modules/object.entries": {
+ "name": "@nolyfill/object.entries",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/object.entries/-/object.entries-1.0.28.tgz",
+ "integrity": "sha512-2t4PayP6Sx7Z20HJjcf8XhhPBO8/H31bwMdP0yEdDcxSXeEhl90Ibb9E3XKzSlcsGf43nXyfabHNrnfvdWE4Ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
"node_modules/object.fromentries": {
"name": "@nolyfill/object.fromentries",
"version": "1.0.28",
@@ -9412,6 +12420,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -9546,13 +12560,13 @@
}
},
"node_modules/playwright": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.3.tgz",
- "integrity": "sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz",
+ "integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.45.3"
+ "playwright-core": "1.46.1"
},
"bin": {
"playwright": "cli.js"
@@ -9565,9 +12579,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.3.tgz",
- "integrity": "sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz",
+ "integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -9614,9 +12628,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.40",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz",
- "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==",
+ "version": "8.4.41",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
+ "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
"funding": [
{
"type": "opencollective",
@@ -9657,6 +12671,13 @@
"node": "^12 || >=14"
}
},
+ "node_modules/postcss-html/node_modules/js-tokens": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
+ "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/postcss-import": {
"version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
@@ -9856,9 +12877,9 @@
}
},
"node_modules/postcss-nesting": {
- "version": "12.1.5",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.5.tgz",
- "integrity": "sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.0.tgz",
+ "integrity": "sha512-TCGQOizyqvEkdeTPM+t6NYwJ3EJszYE/8t8ILxw/YoeUvz2rz7aM8XTAmBWh9/DJjfaaabL88fWrsVHSPF2zgA==",
"funding": [
{
"type": "github",
@@ -9871,21 +12892,21 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/selector-resolve-nested": "^1.1.0",
- "@csstools/selector-specificity": "^3.1.1",
+ "@csstools/selector-resolve-nested": "^2.0.0",
+ "@csstools/selector-specificity": "^4.0.0",
"postcss-selector-parser": "^6.1.0"
},
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz",
- "integrity": "sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==",
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
+ "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
"dev": true,
"license": "MIT"
},
@@ -9934,9 +12955,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz",
- "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -10018,6 +13039,18 @@
"dev": true,
"license": "Unlicense"
},
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
"node_modules/proto-props": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz",
@@ -10076,6 +13109,13 @@
"safe-buffer": "^5.1.0"
}
},
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -10232,12 +13272,42 @@
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"license": "MIT"
},
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
"node_modules/regexp-ast-analysis": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz",
@@ -10262,6 +13332,46 @@
"regexp-tree": "bin/regexp-tree"
}
},
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regexpu-core/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/regexpu-core/node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
"node_modules/regjsparser": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
@@ -10705,9 +13815,9 @@
}
},
"node_modules/solid-js": {
- "version": "1.8.19",
- "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.19.tgz",
- "integrity": "sha512-h8z/TvTQYsf894LM9Iau/ZW2iAKrCzAWDwjPhMcXnonmW1OIIihc28wp82b1wwei1p81fH5+gnfNOe8RzLbDRQ==",
+ "version": "1.8.22",
+ "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.22.tgz",
+ "integrity": "sha512-VBzN5j+9Y4rqIKEnK301aBk+S7fvFSTs9ljg+YEdFxjNjH0hkjXPiQRcws9tE5fUzMznSS6KToL5hwMfHDgpLA==",
"license": "MIT",
"dependencies": {
"csstype": "^3.1.0",
@@ -10823,9 +13933,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.18",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
- "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
"license": "CC0-1.0"
},
"node_modules/spdx-ranges": {
@@ -10925,6 +14035,34 @@
"node": ">=12.4.0"
}
},
+ "node_modules/string.prototype.matchall": {
+ "name": "@nolyfill/string.prototype.matchall",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/string.prototype.matchall/-/string.prototype.matchall-1.0.28.tgz",
+ "integrity": "sha512-k74WKi7WmtRV847QWlY1ndg6XU1loeAyO9+NVoXrd7RL5lEjBtovp4CPZkifipBMBrZrZu2WwrQqkGrvLNZYpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "name": "@nolyfill/string.prototype.repeat",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/string.prototype.repeat/-/string.prototype.repeat-1.0.28.tgz",
+ "integrity": "sha512-8ww39xe0r4qki8HwAaXTRamO0KpkHHyYoG+PCOFGaBZ8rrlAKcGQcJhu5aB2axauggqsnUfU25j5snEC0aJvYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -11113,6 +14251,96 @@
"stylelint": ">=16"
}
},
+ "node_modules/stylelint/node_modules/@csstools/css-parser-algorithms": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
+ "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^2.4.1"
+ }
+ },
+ "node_modules/stylelint/node_modules/@csstools/css-tokenizer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
+ "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ }
+ },
+ "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": {
+ "version": "2.1.13",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
+ "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^2.7.1",
+ "@csstools/css-tokenizer": "^2.4.1"
+ }
+ },
+ "node_modules/stylelint/node_modules/@csstools/selector-specificity": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
+ "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.0.13"
+ }
+ },
"node_modules/stylelint/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -11134,9 +14362,9 @@
"license": "MIT"
},
"node_modules/stylelint/node_modules/file-entry-cache": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
- "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
+ "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11214,9 +14442,9 @@
}
},
"node_modules/stylis": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
- "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
+ "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==",
"license": "MIT"
},
"node_modules/stylus": {
@@ -11335,9 +14563,9 @@
}
},
"node_modules/supports-hyperlinks": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
- "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
+ "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11346,6 +14574,9 @@
},
"engines": {
"node": ">=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/supports-preserve-symlinks-flag": {
@@ -11467,9 +14698,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz",
- "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
+ "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
"license": "MIT",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -11528,9 +14759,9 @@
"license": "ISC"
},
"node_modules/terser": {
- "version": "5.31.3",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz",
- "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==",
+ "version": "5.31.6",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
+ "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -11685,9 +14916,9 @@
"license": "MIT"
},
"node_modules/tinypool": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz",
- "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz",
+ "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11817,9 +15048,9 @@
}
},
"node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
"dev": true,
"license": "0BSD"
},
@@ -11837,9 +15068,9 @@
}
},
"node_modules/type-fest": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.23.0.tgz",
- "integrity": "sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==",
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz",
+ "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -11882,11 +15113,55 @@
"license": "ISC"
},
"node_modules/undici-types": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
- "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==",
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"license": "MIT"
},
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -11928,9 +15203,9 @@
}
},
"node_modules/updates": {
- "version": "16.3.7",
- "resolved": "https://registry.npmjs.org/updates/-/updates-16.3.7.tgz",
- "integrity": "sha512-TTehJxoTMb/tdFDctvroLhFTA/r93Ow1OC87GAPtQ5NGp4/YwYsPqivnQqkBAe1nV3UMJWBoKUMZZKC4yoTrsw==",
+ "version": "16.4.0",
+ "resolved": "https://registry.npmjs.org/updates/-/updates-16.4.0.tgz",
+ "integrity": "sha512-HtkG1MgXbQ5gpqu5eX4qVOwclMHbygiTYjSkFMVDEXuwb5clwkDh75xRb11PzRX9ozVOfcVUHl7lpBNDPquXrw==",
"dev": true,
"license": "BSD-2-Clause",
"bin": {
@@ -12013,15 +15288,15 @@
"license": "MIT"
},
"node_modules/vite": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz",
- "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==",
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz",
+ "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.21.3",
- "postcss": "^8.4.39",
- "rollup": "^4.13.0"
+ "postcss": "^8.4.41",
+ "rollup": "^4.20.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -12040,6 +15315,7 @@
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
+ "sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
@@ -12057,6 +15333,9 @@
"sass": {
"optional": true
},
+ "sass-embedded": {
+ "optional": true
+ },
"stylus": {
"optional": true
},
@@ -12121,9 +15400,9 @@
}
},
"node_modules/vite/node_modules/rollup": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.2.tgz",
- "integrity": "sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz",
+ "integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12137,22 +15416,22 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.19.2",
- "@rollup/rollup-android-arm64": "4.19.2",
- "@rollup/rollup-darwin-arm64": "4.19.2",
- "@rollup/rollup-darwin-x64": "4.19.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.19.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.19.2",
- "@rollup/rollup-linux-arm64-gnu": "4.19.2",
- "@rollup/rollup-linux-arm64-musl": "4.19.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.19.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.19.2",
- "@rollup/rollup-linux-s390x-gnu": "4.19.2",
- "@rollup/rollup-linux-x64-gnu": "4.19.2",
- "@rollup/rollup-linux-x64-musl": "4.19.2",
- "@rollup/rollup-win32-arm64-msvc": "4.19.2",
- "@rollup/rollup-win32-ia32-msvc": "4.19.2",
- "@rollup/rollup-win32-x64-msvc": "4.19.2",
+ "@rollup/rollup-android-arm-eabi": "4.21.1",
+ "@rollup/rollup-android-arm64": "4.21.1",
+ "@rollup/rollup-darwin-arm64": "4.21.1",
+ "@rollup/rollup-darwin-x64": "4.21.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.21.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.21.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.21.1",
+ "@rollup/rollup-linux-arm64-musl": "4.21.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.21.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.21.1",
+ "@rollup/rollup-linux-x64-gnu": "4.21.1",
+ "@rollup/rollup-linux-x64-musl": "4.21.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.21.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.21.1",
+ "@rollup/rollup-win32-x64-msvc": "4.21.1",
"fsevents": "~2.3.2"
}
},
@@ -12281,16 +15560,16 @@
"license": "MIT"
},
"node_modules/vue": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.35.tgz",
- "integrity": "sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz",
+ "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.4.35",
- "@vue/compiler-sfc": "3.4.35",
- "@vue/runtime-dom": "3.4.35",
- "@vue/server-renderer": "3.4.35",
- "@vue/shared": "3.4.35"
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-sfc": "3.4.38",
+ "@vue/runtime-dom": "3.4.38",
+ "@vue/server-renderer": "3.4.38",
+ "@vue/shared": "3.4.38"
},
"peerDependencies": {
"typescript": "*"
@@ -12399,9 +15678,9 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
- "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
"license": "MIT",
"dependencies": {
"glob-to-regexp": "^0.4.1",
@@ -12422,12 +15701,11 @@
}
},
"node_modules/webpack": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
- "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"license": "MIT",
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
@@ -12436,7 +15714,7 @@
"acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
@@ -12766,9 +16044,9 @@
}
},
"node_modules/wrap-ansi/node_modules/emoji-regex": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
- "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
"license": "MIT"
},
"node_modules/wrap-ansi/node_modules/string-width": {
@@ -12843,6 +16121,13 @@
"node": ">=10"
}
},
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/yaml": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
diff --git a/package.json b/package.json
index 9d3556475eecc..015dfc67a6897 100644
--- a/package.json
+++ b/package.json
@@ -17,34 +17,34 @@
"add-asset-webpack-plugin": "3.0.0",
"ansi_up": "6.0.2",
"asciinema-player": "3.8.0",
- "chart.js": "4.4.3",
+ "chart.js": "4.4.4",
"chartjs-adapter-dayjs-4": "1.0.4",
"chartjs-plugin-zoom": "2.0.1",
"clippie": "4.1.3",
"css-loader": "7.1.2",
- "dayjs": "1.11.12",
+ "dayjs": "1.11.13",
"dropzone": "6.0.0-beta.2",
"easymde": "2.18.0",
"esbuild-loader": "4.2.2",
"escape-goat": "4.0.0",
"fast-glob": "3.3.2",
- "htmx.org": "2.0.2",
+ "htmx.org": "2.0.3",
"idiomorph": "0.3.0",
"jquery": "3.7.1",
"katex": "0.16.11",
"license-checker-webpack-plugin": "0.2.1",
"mermaid": "11.0.2",
- "mini-css-extract-plugin": "2.9.0",
+ "mini-css-extract-plugin": "2.9.1",
"minimatch": "10.0.1",
- "monaco-editor": "0.50.0",
+ "monaco-editor": "0.51.0",
"monaco-editor-webpack-plugin": "7.1.0",
"pdfobject": "2.3.0",
- "postcss": "8.4.40",
+ "postcss": "8.4.41",
"postcss-loader": "8.1.1",
- "postcss-nesting": "12.1.5",
+ "postcss-nesting": "13.0.0",
"sortablejs": "1.15.2",
"swagger-ui-dist": "5.17.14",
- "tailwindcss": "3.4.7",
+ "tailwindcss": "3.4.10",
"temporal-polyfill": "0.2.5",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
@@ -54,20 +54,20 @@
"typescript": "5.5.4",
"uint8-to-base64": "0.2.0",
"vanilla-colorful": "0.7.2",
- "vue": "3.4.35",
+ "vue": "3.4.38",
"vue-bar-graph": "2.1.0",
"vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
- "webpack": "5.93.0",
+ "webpack": "5.94.0",
"webpack-cli": "5.1.4",
"wrap-ansi": "9.0.0"
},
"devDependencies": {
- "@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
- "@playwright/test": "1.45.3",
+ "@eslint-community/eslint-plugin-eslint-comments": "4.4.0",
+ "@playwright/test": "1.46.1",
"@stoplight/spectral-cli": "6.11.1",
- "@stylistic/eslint-plugin-js": "2.6.1",
- "@stylistic/stylelint-plugin": "3.0.0",
+ "@stylistic/eslint-plugin-js": "2.6.5",
+ "@stylistic/stylelint-plugin": "3.0.1",
"@types/dropzone": "5.7.8",
"@types/jquery": "3.5.30",
"@types/katex": "0.16.7",
@@ -78,11 +78,11 @@
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/toastify-js": "1.12.3",
- "@typescript-eslint/eslint-plugin": "8.0.0",
- "@typescript-eslint/parser": "8.0.0",
+ "@typescript-eslint/eslint-plugin": "8.3.0",
+ "@typescript-eslint/parser": "8.3.0",
"@vitejs/plugin-vue": "5.1.2",
"eslint": "8.57.0",
- "eslint-import-resolver-typescript": "3.6.1",
+ "eslint-import-resolver-typescript": "3.6.3",
"eslint-plugin-array-func": "4.0.0",
"eslint-plugin-deprecation": "3.0.0",
"eslint-plugin-github": "5.0.1",
@@ -91,14 +91,14 @@
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-playwright": "1.6.2",
"eslint-plugin-regexp": "2.6.0",
- "eslint-plugin-sonarjs": "1.0.4",
+ "eslint-plugin-sonarjs": "2.0.1",
"eslint-plugin-unicorn": "55.0.0",
"eslint-plugin-vitest": "0.4.1",
"eslint-plugin-vitest-globals": "1.5.0",
"eslint-plugin-vue": "9.27.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
- "eslint-plugin-wc": "2.1.0",
- "happy-dom": "14.12.3",
+ "eslint-plugin-wc": "2.1.1",
+ "happy-dom": "15.3.1",
"markdownlint-cli": "0.41.0",
"nolyfill": "1.0.39",
"postcss-html": "1.7.0",
@@ -107,8 +107,8 @@
"stylelint-declaration-strict-value": "1.10.6",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.3.2",
- "type-fest": "4.23.0",
- "updates": "16.3.7",
+ "type-fest": "4.26.0",
+ "updates": "16.4.0",
"vite-string-plugin": "1.3.4",
"vitest": "2.0.5"
},
@@ -131,6 +131,10 @@
"object.values": "npm:@nolyfill/object.values@^1",
"safe-regex-test": "npm:@nolyfill/safe-regex-test@^1",
"string.prototype.includes": "npm:@nolyfill/string.prototype.includes@^1",
- "is-core-module": "npm:@nolyfill/is-core-module@^1"
+ "is-core-module": "npm:@nolyfill/is-core-module@^1",
+ "array.prototype.findlast": "npm:@nolyfill/array.prototype.findlast@^1",
+ "array.prototype.tosorted": "npm:@nolyfill/array.prototype.tosorted@^1",
+ "string.prototype.matchall": "npm:@nolyfill/string.prototype.matchall@^1",
+ "string.prototype.repeat": "npm:@nolyfill/string.prototype.repeat@^1"
}
}
diff --git a/poetry.lock b/poetry.lock
index 74536495d2751..48ac8d22de783 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -42,13 +42,13 @@ six = ">=1.13.0"
[[package]]
name = "djlint"
-version = "1.34.1"
+version = "1.34.2"
description = "HTML Template Linter and Formatter"
optional = false
-python-versions = ">=3.8.0,<4.0.0"
+python-versions = "<4.0.0,>=3.8.0"
files = [
- {file = "djlint-1.34.1-py3-none-any.whl", hash = "sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8"},
- {file = "djlint-1.34.1.tar.gz", hash = "sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346"},
+ {file = "djlint-1.34.2-py3-none-any.whl", hash = "sha256:4825389e395eb77371857c77f547fa5ebd1a644b1bc4fe9fed19d49a2786b9e5"},
+ {file = "djlint-1.34.2.tar.gz", hash = "sha256:db9b2e59203a452b83532499bc243c749279090b905cc1f657973f78e7a31ddd"},
]
[package.dependencies]
@@ -357,4 +357,4 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"]
[metadata]
lock-version = "2.0"
python-versions = "^3.10"
-content-hash = "cd2ff218e9f27a464dfbc8ec2387824a90f4360e04c3f2e58cc375796b7df33a"
+content-hash = "af89bce0c442463621b6e536f9b94c31e188e1662c2caa84372c0858a2ee7d5c"
diff --git a/public/assets/img/svg/gitea-codecommit.svg b/public/assets/img/svg/gitea-codecommit.svg
new file mode 100644
index 0000000000000..b44847d9e136c
--- /dev/null
+++ b/public/assets/img/svg/gitea-codecommit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 0724a8e24aca0..ff2c233cfb447 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,7 +5,7 @@ package-mode = false
python = "^3.10"
[tool.poetry.group.dev.dependencies]
-djlint = "1.34.1"
+djlint = "1.34.2"
yamllint = "1.35.1"
[tool.djlint]
diff --git a/routers/api/actions/artifacts_chunks.go b/routers/api/actions/artifacts_chunks.go
index 3d1a3891d9e2f..cf48da12aa850 100644
--- a/routers/api/actions/artifacts_chunks.go
+++ b/routers/api/actions/artifacts_chunks.go
@@ -123,6 +123,54 @@ func listChunksByRunID(st storage.ObjectStorage, runID int64) (map[int64][]*chun
return chunksMap, nil
}
+func listChunksByRunIDV4(st storage.ObjectStorage, runID, artifactID int64, blist *BlockList) ([]*chunkFileItem, error) {
+ storageDir := fmt.Sprintf("tmpv4%d", runID)
+ var chunks []*chunkFileItem
+ chunkMap := map[string]*chunkFileItem{}
+ dummy := &chunkFileItem{}
+ for _, name := range blist.Latest {
+ chunkMap[name] = dummy
+ }
+ if err := st.IterateObjects(storageDir, func(fpath string, obj storage.Object) error {
+ baseName := filepath.Base(fpath)
+ if !strings.HasPrefix(baseName, "block-") {
+ return nil
+ }
+ // when read chunks from storage, it only contains storage dir and basename,
+ // no matter the subdirectory setting in storage config
+ item := chunkFileItem{Path: storageDir + "/" + baseName, ArtifactID: artifactID}
+ var size int64
+ var b64chunkName string
+ if _, err := fmt.Sscanf(baseName, "block-%d-%d-%s", &item.RunID, &size, &b64chunkName); err != nil {
+ return fmt.Errorf("parse content range error: %v", err)
+ }
+ rchunkName, err := base64.URLEncoding.DecodeString(b64chunkName)
+ if err != nil {
+ return fmt.Errorf("failed to parse chunkName: %v", err)
+ }
+ chunkName := string(rchunkName)
+ item.End = item.Start + size - 1
+ if _, ok := chunkMap[chunkName]; ok {
+ chunkMap[chunkName] = &item
+ }
+ return nil
+ }); err != nil {
+ return nil, err
+ }
+ for i, name := range blist.Latest {
+ chunk, ok := chunkMap[name]
+ if !ok || chunk.Path == "" {
+ return nil, fmt.Errorf("missing Chunk (%d/%d): %s", i, len(blist.Latest), name)
+ }
+ chunks = append(chunks, chunk)
+ if i > 0 {
+ chunk.Start = chunkMap[blist.Latest[i-1]].End + 1
+ chunk.End += chunk.Start
+ }
+ }
+ return chunks, nil
+}
+
func mergeChunksForRun(ctx *ArtifactContext, st storage.ObjectStorage, runID int64, artifactName string) error {
// read all db artifacts by name
artifacts, err := db.Find[actions.ActionArtifact](ctx, actions.FindArtifactsOptions{
@@ -230,7 +278,7 @@ func mergeChunksForArtifact(ctx *ArtifactContext, chunks []*chunkFileItem, st st
rawChecksum := hash.Sum(nil)
actualChecksum := hex.EncodeToString(rawChecksum)
if !strings.HasSuffix(checksum, actualChecksum) {
- return fmt.Errorf("update artifact error checksum is invalid")
+ return fmt.Errorf("update artifact error checksum is invalid %v vs %v", checksum, actualChecksum)
}
}
diff --git a/routers/api/actions/artifactsv4.go b/routers/api/actions/artifactsv4.go
index e78ed7a0c2573..9e463cceebc19 100644
--- a/routers/api/actions/artifactsv4.go
+++ b/routers/api/actions/artifactsv4.go
@@ -24,8 +24,15 @@ package actions
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=block
// 1.3. Continue Upload Zip Content to Blobstorage (unauthenticated request), repeat until everything is uploaded
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=appendBlock
-// 1.4. Unknown xml payload to Blobstorage (unauthenticated request), ignored for now
+// 1.4. BlockList xml payload to Blobstorage (unauthenticated request)
+// Files of about 800MB are parallel in parallel and / or out of order, this file is needed to enshure the correct order
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=blockList
+// Request
+//
+//
+// blockId1
+// blockId2
+//
// 1.5. FinalizeArtifact
// Post: /twirp/github.actions.results.api.v1.ArtifactService/FinalizeArtifact
// Request
@@ -82,6 +89,7 @@ import (
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
+ "encoding/xml"
"fmt"
"io"
"net/http"
@@ -152,31 +160,34 @@ func ArtifactsV4Routes(prefix string) *web.Router {
return m
}
-func (r artifactV4Routes) buildSignature(endp, expires, artifactName string, taskID int64) []byte {
+func (r artifactV4Routes) buildSignature(endp, expires, artifactName string, taskID, artifactID int64) []byte {
mac := hmac.New(sha256.New, setting.GetGeneralTokenSigningSecret())
mac.Write([]byte(endp))
mac.Write([]byte(expires))
mac.Write([]byte(artifactName))
mac.Write([]byte(fmt.Sprint(taskID)))
+ mac.Write([]byte(fmt.Sprint(artifactID)))
return mac.Sum(nil)
}
-func (r artifactV4Routes) buildArtifactURL(ctx *ArtifactContext, endp, artifactName string, taskID int64) string {
+func (r artifactV4Routes) buildArtifactURL(ctx *ArtifactContext, endp, artifactName string, taskID, artifactID int64) string {
expires := time.Now().Add(60 * time.Minute).Format("2006-01-02 15:04:05.999999999 -0700 MST")
uploadURL := strings.TrimSuffix(httplib.GuessCurrentAppURL(ctx), "/") + strings.TrimSuffix(r.prefix, "/") +
- "/" + endp + "?sig=" + base64.URLEncoding.EncodeToString(r.buildSignature(endp, expires, artifactName, taskID)) + "&expires=" + url.QueryEscape(expires) + "&artifactName=" + url.QueryEscape(artifactName) + "&taskID=" + fmt.Sprint(taskID)
+ "/" + endp + "?sig=" + base64.URLEncoding.EncodeToString(r.buildSignature(endp, expires, artifactName, taskID, artifactID)) + "&expires=" + url.QueryEscape(expires) + "&artifactName=" + url.QueryEscape(artifactName) + "&taskID=" + fmt.Sprint(taskID) + "&artifactID=" + fmt.Sprint(artifactID)
return uploadURL
}
func (r artifactV4Routes) verifySignature(ctx *ArtifactContext, endp string) (*actions.ActionTask, string, bool) {
rawTaskID := ctx.Req.URL.Query().Get("taskID")
+ rawArtifactID := ctx.Req.URL.Query().Get("artifactID")
sig := ctx.Req.URL.Query().Get("sig")
expires := ctx.Req.URL.Query().Get("expires")
artifactName := ctx.Req.URL.Query().Get("artifactName")
dsig, _ := base64.URLEncoding.DecodeString(sig)
taskID, _ := strconv.ParseInt(rawTaskID, 10, 64)
+ artifactID, _ := strconv.ParseInt(rawArtifactID, 10, 64)
- expecedsig := r.buildSignature(endp, expires, artifactName, taskID)
+ expecedsig := r.buildSignature(endp, expires, artifactName, taskID, artifactID)
if !hmac.Equal(dsig, expecedsig) {
log.Error("Error unauthorized")
ctx.Error(http.StatusUnauthorized, "Error unauthorized")
@@ -271,6 +282,8 @@ func (r *artifactV4Routes) createArtifact(ctx *ArtifactContext) {
return
}
artifact.ContentEncoding = ArtifactV4ContentEncoding
+ artifact.FileSize = 0
+ artifact.FileCompressedSize = 0
if err := actions.UpdateArtifactByID(ctx, artifact.ID, artifact); err != nil {
log.Error("Error UpdateArtifactByID: %v", err)
ctx.Error(http.StatusInternalServerError, "Error UpdateArtifactByID")
@@ -279,7 +292,7 @@ func (r *artifactV4Routes) createArtifact(ctx *ArtifactContext) {
respData := CreateArtifactResponse{
Ok: true,
- SignedUploadUrl: r.buildArtifactURL(ctx, "UploadArtifact", artifactName, ctx.ActionTask.ID),
+ SignedUploadUrl: r.buildArtifactURL(ctx, "UploadArtifact", artifactName, ctx.ActionTask.ID, artifact.ID),
}
r.sendProtbufBody(ctx, &respData)
}
@@ -293,38 +306,77 @@ func (r *artifactV4Routes) uploadArtifact(ctx *ArtifactContext) {
comp := ctx.Req.URL.Query().Get("comp")
switch comp {
case "block", "appendBlock":
- // get artifact by name
- artifact, err := r.getArtifactByName(ctx, task.Job.RunID, artifactName)
- if err != nil {
- log.Error("Error artifact not found: %v", err)
- ctx.Error(http.StatusNotFound, "Error artifact not found")
- return
+ blockid := ctx.Req.URL.Query().Get("blockid")
+ if blockid == "" {
+ // get artifact by name
+ artifact, err := r.getArtifactByName(ctx, task.Job.RunID, artifactName)
+ if err != nil {
+ log.Error("Error artifact not found: %v", err)
+ ctx.Error(http.StatusNotFound, "Error artifact not found")
+ return
+ }
+
+ _, err = appendUploadChunk(r.fs, ctx, artifact, artifact.FileSize, ctx.Req.ContentLength, artifact.RunID)
+ if err != nil {
+ log.Error("Error runner api getting task: task is not running")
+ ctx.Error(http.StatusInternalServerError, "Error runner api getting task: task is not running")
+ return
+ }
+ artifact.FileCompressedSize += ctx.Req.ContentLength
+ artifact.FileSize += ctx.Req.ContentLength
+ if err := actions.UpdateArtifactByID(ctx, artifact.ID, artifact); err != nil {
+ log.Error("Error UpdateArtifactByID: %v", err)
+ ctx.Error(http.StatusInternalServerError, "Error UpdateArtifactByID")
+ return
+ }
+ } else {
+ _, err := r.fs.Save(fmt.Sprintf("tmpv4%d/block-%d-%d-%s", task.Job.RunID, task.Job.RunID, ctx.Req.ContentLength, base64.URLEncoding.EncodeToString([]byte(blockid))), ctx.Req.Body, -1)
+ if err != nil {
+ log.Error("Error runner api getting task: task is not running")
+ ctx.Error(http.StatusInternalServerError, "Error runner api getting task: task is not running")
+ return
+ }
}
-
- if comp == "block" {
- artifact.FileSize = 0
- artifact.FileCompressedSize = 0
- }
-
- _, err = appendUploadChunk(r.fs, ctx, artifact, artifact.FileSize, ctx.Req.ContentLength, artifact.RunID)
+ ctx.JSON(http.StatusCreated, "appended")
+ case "blocklist":
+ rawArtifactID := ctx.Req.URL.Query().Get("artifactID")
+ artifactID, _ := strconv.ParseInt(rawArtifactID, 10, 64)
+ _, err := r.fs.Save(fmt.Sprintf("tmpv4%d/%d-%d-blocklist", task.Job.RunID, task.Job.RunID, artifactID), ctx.Req.Body, -1)
if err != nil {
log.Error("Error runner api getting task: task is not running")
ctx.Error(http.StatusInternalServerError, "Error runner api getting task: task is not running")
return
}
- artifact.FileCompressedSize += ctx.Req.ContentLength
- artifact.FileSize += ctx.Req.ContentLength
- if err := actions.UpdateArtifactByID(ctx, artifact.ID, artifact); err != nil {
- log.Error("Error UpdateArtifactByID: %v", err)
- ctx.Error(http.StatusInternalServerError, "Error UpdateArtifactByID")
- return
- }
- ctx.JSON(http.StatusCreated, "appended")
- case "blocklist":
ctx.JSON(http.StatusCreated, "created")
}
}
+type BlockList struct {
+ Latest []string `xml:"Latest"`
+}
+
+type Latest struct {
+ Value string `xml:",chardata"`
+}
+
+func (r *artifactV4Routes) readBlockList(runID, artifactID int64) (*BlockList, error) {
+ blockListName := fmt.Sprintf("tmpv4%d/%d-%d-blocklist", runID, runID, artifactID)
+ s, err := r.fs.Open(blockListName)
+ if err != nil {
+ return nil, err
+ }
+
+ xdec := xml.NewDecoder(s)
+ blockList := &BlockList{}
+ err = xdec.Decode(blockList)
+
+ delerr := r.fs.Delete(blockListName)
+ if delerr != nil {
+ log.Warn("Failed to delete blockList %s: %v", blockListName, delerr)
+ }
+ return blockList, err
+}
+
func (r *artifactV4Routes) finalizeArtifact(ctx *ArtifactContext) {
var req FinalizeArtifactRequest
@@ -343,18 +395,34 @@ func (r *artifactV4Routes) finalizeArtifact(ctx *ArtifactContext) {
ctx.Error(http.StatusNotFound, "Error artifact not found")
return
}
- chunkMap, err := listChunksByRunID(r.fs, runID)
+
+ var chunks []*chunkFileItem
+ blockList, err := r.readBlockList(runID, artifact.ID)
if err != nil {
- log.Error("Error merge chunks: %v", err)
- ctx.Error(http.StatusInternalServerError, "Error merge chunks")
- return
- }
- chunks, ok := chunkMap[artifact.ID]
- if !ok {
- log.Error("Error merge chunks")
- ctx.Error(http.StatusInternalServerError, "Error merge chunks")
- return
+ log.Warn("Failed to read BlockList, fallback to old behavior: %v", err)
+ chunkMap, err := listChunksByRunID(r.fs, runID)
+ if err != nil {
+ log.Error("Error merge chunks: %v", err)
+ ctx.Error(http.StatusInternalServerError, "Error merge chunks")
+ return
+ }
+ chunks, ok = chunkMap[artifact.ID]
+ if !ok {
+ log.Error("Error merge chunks")
+ ctx.Error(http.StatusInternalServerError, "Error merge chunks")
+ return
+ }
+ } else {
+ chunks, err = listChunksByRunIDV4(r.fs, runID, artifact.ID, blockList)
+ if err != nil {
+ log.Error("Error merge chunks: %v", err)
+ ctx.Error(http.StatusInternalServerError, "Error merge chunks")
+ return
+ }
+ artifact.FileSize = chunks[len(chunks)-1].End + 1
+ artifact.FileCompressedSize = chunks[len(chunks)-1].End + 1
}
+
checksum := ""
if req.Hash != nil {
checksum = req.Hash.Value
@@ -455,7 +523,7 @@ func (r *artifactV4Routes) getSignedArtifactURL(ctx *ArtifactContext) {
}
}
if respData.SignedUrl == "" {
- respData.SignedUrl = r.buildArtifactURL(ctx, "DownloadArtifact", artifactName, ctx.ActionTask.ID)
+ respData.SignedUrl = r.buildArtifactURL(ctx, "DownloadArtifact", artifactName, ctx.ActionTask.ID, artifact.ID)
}
r.sendProtbufBody(ctx, &respData)
}
diff --git a/routers/api/packages/api.go b/routers/api/packages/api.go
index 0f42e8f59ebb7..d17e4875b13a7 100644
--- a/routers/api/packages/api.go
+++ b/routers/api/packages/api.go
@@ -63,6 +63,20 @@ func reqPackageAccess(accessMode perm.AccessMode) func(ctx *context.Context) {
ctx.Error(http.StatusUnauthorized, "reqPackageAccess", "user should have specific permission or be a site admin")
return
}
+
+ // check if scope only applies to public resources
+ publicOnly, err := scope.PublicOnly()
+ if err != nil {
+ ctx.Error(http.StatusForbidden, "tokenRequiresScope", "parsing public resource scope failed: "+err.Error())
+ return
+ }
+
+ if publicOnly {
+ if ctx.Package != nil && ctx.Package.Owner.Visibility.IsPrivate() {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public packages")
+ return
+ }
+ }
}
}
diff --git a/routers/api/packages/conan/auth.go b/routers/api/packages/conan/auth.go
index 521fa12372c3d..9c03d01391fc2 100644
--- a/routers/api/packages/conan/auth.go
+++ b/routers/api/packages/conan/auth.go
@@ -22,21 +22,25 @@ func (a *Auth) Name() string {
// Verify extracts the user from the Bearer token
func (a *Auth) Verify(req *http.Request, w http.ResponseWriter, store auth.DataStore, sess auth.SessionStore) (*user_model.User, error) {
- uid, err := packages.ParseAuthorizationToken(req)
+ packageMeta, err := packages.ParseAuthorizationRequest(req)
if err != nil {
log.Trace("ParseAuthorizationToken: %v", err)
return nil, err
}
- if uid == 0 {
+ if packageMeta == nil || packageMeta.UserID == 0 {
return nil, nil
}
- u, err := user_model.GetUserByID(req.Context(), uid)
+ u, err := user_model.GetUserByID(req.Context(), packageMeta.UserID)
if err != nil {
log.Error("GetUserByID: %v", err)
return nil, err
}
+ if packageMeta.Scope != "" {
+ store.GetData()["IsApiToken"] = true
+ store.GetData()["ApiTokenScope"] = packageMeta.Scope
+ }
return u, nil
}
diff --git a/routers/api/packages/conan/conan.go b/routers/api/packages/conan/conan.go
index 7afca2fab18a5..4a9f0a3ffc7b0 100644
--- a/routers/api/packages/conan/conan.go
+++ b/routers/api/packages/conan/conan.go
@@ -11,6 +11,7 @@ import (
"strings"
"time"
+ auth_model "code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db"
packages_model "code.gitea.io/gitea/models/packages"
conan_model "code.gitea.io/gitea/models/packages/conan"
@@ -21,6 +22,7 @@ import (
conan_module "code.gitea.io/gitea/modules/packages/conan"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers/api/packages/helper"
+ auth_service "code.gitea.io/gitea/services/auth"
"code.gitea.io/gitea/services/context"
notify_service "code.gitea.io/gitea/services/notify"
packages_service "code.gitea.io/gitea/services/packages"
@@ -117,7 +119,20 @@ func Authenticate(ctx *context.Context) {
return
}
- token, err := packages_service.CreateAuthorizationToken(ctx.Doer)
+ packageScope := auth_service.GetAccessScope(ctx.Data)
+ if has, err := packageScope.HasAnyScope(
+ auth_model.AccessTokenScopeReadPackage,
+ auth_model.AccessTokenScopeWritePackage,
+ auth_model.AccessTokenScopeAll,
+ ); !has {
+ if err != nil {
+ log.Error("Error checking access scope: %v", err)
+ }
+ apiError(ctx, http.StatusForbidden, nil)
+ return
+ }
+
+ token, err := packages_service.CreateAuthorizationToken(ctx.Doer, packageScope)
if err != nil {
apiError(ctx, http.StatusInternalServerError, err)
return
@@ -130,9 +145,23 @@ func Authenticate(ctx *context.Context) {
func CheckCredentials(ctx *context.Context) {
if ctx.Doer == nil {
ctx.Status(http.StatusUnauthorized)
- } else {
- ctx.Status(http.StatusOK)
+ return
}
+
+ packageScope := auth_service.GetAccessScope(ctx.Data)
+ if has, err := packageScope.HasAnyScope(
+ auth_model.AccessTokenScopeReadPackage,
+ auth_model.AccessTokenScopeWritePackage,
+ auth_model.AccessTokenScopeAll,
+ ); !has {
+ if err != nil {
+ log.Error("Error checking access scope: %v", err)
+ }
+ ctx.Status(http.StatusForbidden)
+ return
+ }
+
+ ctx.Status(http.StatusOK)
}
// RecipeSnapshot displays the recipe files with their md5 hash
diff --git a/routers/api/packages/container/auth.go b/routers/api/packages/container/auth.go
index 1c7afa95ff9f0..1d8ae6af7d7a9 100644
--- a/routers/api/packages/container/auth.go
+++ b/routers/api/packages/container/auth.go
@@ -23,21 +23,26 @@ func (a *Auth) Name() string {
// Verify extracts the user from the Bearer token
// If it's an anonymous session a ghost user is returned
func (a *Auth) Verify(req *http.Request, w http.ResponseWriter, store auth.DataStore, sess auth.SessionStore) (*user_model.User, error) {
- uid, err := packages.ParseAuthorizationToken(req)
+ packageMeta, err := packages.ParseAuthorizationRequest(req)
if err != nil {
log.Trace("ParseAuthorizationToken: %v", err)
return nil, err
}
- if uid == 0 {
+ if packageMeta == nil || packageMeta.UserID == 0 {
return nil, nil
}
- u, err := user_model.GetPossibleUserByID(req.Context(), uid)
+ u, err := user_model.GetPossibleUserByID(req.Context(), packageMeta.UserID)
if err != nil {
log.Error("GetPossibleUserByID: %v", err)
return nil, err
}
+ if packageMeta.Scope != "" {
+ store.GetData()["IsApiToken"] = true
+ store.GetData()["ApiTokenScope"] = packageMeta.Scope
+ }
+
return u, nil
}
diff --git a/routers/api/packages/container/container.go b/routers/api/packages/container/container.go
index 74a3295f09b3a..d495d199d9d66 100644
--- a/routers/api/packages/container/container.go
+++ b/routers/api/packages/container/container.go
@@ -14,6 +14,7 @@ import (
"strconv"
"strings"
+ auth_model "code.gitea.io/gitea/models/auth"
packages_model "code.gitea.io/gitea/models/packages"
container_model "code.gitea.io/gitea/models/packages/container"
user_model "code.gitea.io/gitea/models/user"
@@ -25,6 +26,7 @@ import (
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/routers/api/packages/helper"
+ auth_service "code.gitea.io/gitea/services/auth"
"code.gitea.io/gitea/services/context"
packages_service "code.gitea.io/gitea/services/packages"
container_service "code.gitea.io/gitea/services/packages/container"
@@ -148,6 +150,7 @@ func DetermineSupport(ctx *context.Context) {
// If the current user is anonymous, the ghost user is used unless RequireSignInView is enabled.
func Authenticate(ctx *context.Context) {
u := ctx.Doer
+ packageScope := auth_service.GetAccessScope(ctx.Data)
if u == nil {
if setting.Service.RequireSignInView {
apiUnauthorizedError(ctx)
@@ -155,9 +158,21 @@ func Authenticate(ctx *context.Context) {
}
u = user_model.NewGhostUser()
+ } else {
+ if has, err := packageScope.HasAnyScope(
+ auth_model.AccessTokenScopeReadPackage,
+ auth_model.AccessTokenScopeWritePackage,
+ auth_model.AccessTokenScopeAll,
+ ); !has {
+ if err != nil {
+ log.Error("Error checking access scope: %v", err)
+ }
+ apiUnauthorizedError(ctx)
+ return
+ }
}
- token, err := packages_service.CreateAuthorizationToken(u)
+ token, err := packages_service.CreateAuthorizationToken(u, packageScope)
if err != nil {
apiError(ctx, http.StatusInternalServerError, err)
return
diff --git a/routers/api/packages/maven/maven.go b/routers/api/packages/maven/maven.go
index 1486e83c57db5..343705990a071 100644
--- a/routers/api/packages/maven/maven.go
+++ b/routers/api/packages/maven/maven.go
@@ -20,6 +20,7 @@ import (
"strings"
packages_model "code.gitea.io/gitea/models/packages"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log"
packages_module "code.gitea.io/gitea/modules/packages"
@@ -114,7 +115,9 @@ func serveMavenMetadata(ctx *context.Context, params parameters) {
xmlMetadataWithHeader := append([]byte(xml.Header), xmlMetadata...)
latest := pds[len(pds)-1]
- ctx.Resp.Header().Set("Last-Modified", latest.Version.CreatedUnix.Format(http.TimeFormat))
+ // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
+ lastModifed := latest.Version.CreatedUnix.AsTime().UTC().Format(http.TimeFormat)
+ ctx.Resp.Header().Set("Last-Modified", lastModifed)
ext := strings.ToLower(filepath.Ext(params.Filename))
if isChecksumExtension(ext) {
@@ -223,6 +226,10 @@ func servePackageFile(ctx *context.Context, params parameters, serveContent bool
helper.ServePackageFile(ctx, s, u, pf, opts)
}
+func mavenPkgNameKey(packageName string) string {
+ return "pkg_maven_" + packageName
+}
+
// UploadPackageFile adds a file to the package. If the package does not exist, it gets created.
func UploadPackageFile(ctx *context.Context) {
params, err := extractPathParameters(ctx)
@@ -241,6 +248,14 @@ func UploadPackageFile(ctx *context.Context) {
packageName := params.GroupID + "-" + params.ArtifactID
+ // for the same package, only one upload at a time
+ releaser, err := globallock.Lock(ctx, mavenPkgNameKey(packageName))
+ if err != nil {
+ apiError(ctx, http.StatusInternalServerError, err)
+ return
+ }
+ defer releaser()
+
buf, err := packages_module.CreateHashedBufferFromReader(ctx.Req.Body)
if err != nil {
apiError(ctx, http.StatusInternalServerError, err)
diff --git a/routers/api/packages/nuget/auth.go b/routers/api/packages/nuget/auth.go
index 1bb68d059b2a5..e81ad01b2b39d 100644
--- a/routers/api/packages/nuget/auth.go
+++ b/routers/api/packages/nuget/auth.go
@@ -43,5 +43,8 @@ func (a *Auth) Verify(req *http.Request, w http.ResponseWriter, store auth.DataS
log.Error("UpdateAccessToken: %v", err)
}
+ store.GetData()["IsApiToken"] = true
+ store.GetData()["ApiToken"] = token
+
return u, nil
}
diff --git a/routers/api/v1/activitypub/reqsignature.go b/routers/api/v1/activitypub/reqsignature.go
index 59ebc74b89ef7..853c3c0b590c1 100644
--- a/routers/api/v1/activitypub/reqsignature.go
+++ b/routers/api/v1/activitypub/reqsignature.go
@@ -17,8 +17,8 @@ import (
"code.gitea.io/gitea/modules/setting"
gitea_context "code.gitea.io/gitea/services/context"
+ "github.com/42wim/httpsig"
ap "github.com/go-ap/activitypub"
- "github.com/go-fed/httpsig"
)
func getPublicKeyFromResponse(b []byte, keyID *url.URL) (p crypto.PublicKey, err error) {
diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go
index 3e2fefc6da234..b0f40084da38b 100644
--- a/routers/api/v1/admin/user.go
+++ b/routers/api/v1/admin/user.go
@@ -133,7 +133,7 @@ func CreateUser(ctx *context.APIContext) {
u.UpdatedUnix = u.CreatedUnix
}
- if err := user_model.AdminCreateUser(ctx, u, overwriteDefault); err != nil {
+ if err := user_model.AdminCreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil {
if user_model.IsErrUserAlreadyExist(err) ||
user_model.IsErrEmailAlreadyUsed(err) ||
db.IsErrNameReserved(err) ||
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index be67ec1695b3b..883e694e44b75 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -235,6 +235,62 @@ func reqPackageAccess(accessMode perm.AccessMode) func(ctx *context.APIContext)
}
}
+func checkTokenPublicOnly() func(ctx *context.APIContext) {
+ return func(ctx *context.APIContext) {
+ if !ctx.PublicOnly {
+ return
+ }
+
+ requiredScopeCategories, ok := ctx.Data["requiredScopeCategories"].([]auth_model.AccessTokenScopeCategory)
+ if !ok || len(requiredScopeCategories) == 0 {
+ return
+ }
+
+ // public Only permission check
+ switch {
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryRepository):
+ if ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public repos")
+ return
+ }
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryIssue):
+ if ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public issues")
+ return
+ }
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryOrganization):
+ if ctx.Org.Organization != nil && ctx.Org.Organization.Visibility != api.VisibleTypePublic {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public orgs")
+ return
+ }
+ if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() && ctx.ContextUser.Visibility != api.VisibleTypePublic {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public orgs")
+ return
+ }
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryUser):
+ if ctx.ContextUser != nil && ctx.ContextUser.IsUser() && ctx.ContextUser.Visibility != api.VisibleTypePublic {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public users")
+ return
+ }
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryActivityPub):
+ if ctx.ContextUser != nil && ctx.ContextUser.IsUser() && ctx.ContextUser.Visibility != api.VisibleTypePublic {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public activitypub")
+ return
+ }
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryNotification):
+ if ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public notifications")
+ return
+ }
+ case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryPackage):
+ if ctx.Package != nil && ctx.Package.Owner.Visibility.IsPrivate() {
+ ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public packages")
+ return
+ }
+ }
+ }
+}
+
// if a token is being used for auth, we check that it contains the required scope
// if a token is not being used, reqToken will enforce other sign in methods
func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeCategory) func(ctx *context.APIContext) {
@@ -250,9 +306,6 @@ func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeC
return
}
- ctx.Data["ApiTokenScopePublicRepoOnly"] = false
- ctx.Data["ApiTokenScopePublicOrgOnly"] = false
-
// use the http method to determine the access level
requiredScopeLevel := auth_model.Read
if ctx.Req.Method == "POST" || ctx.Req.Method == "PUT" || ctx.Req.Method == "PATCH" || ctx.Req.Method == "DELETE" {
@@ -261,29 +314,28 @@ func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeC
// get the required scope for the given access level and category
requiredScopes := auth_model.GetRequiredScopes(requiredScopeLevel, requiredScopeCategories...)
-
- // check if scope only applies to public resources
- publicOnly, err := scope.PublicOnly()
+ allow, err := scope.HasScope(requiredScopes...)
if err != nil {
- ctx.Error(http.StatusForbidden, "tokenRequiresScope", "parsing public resource scope failed: "+err.Error())
+ ctx.Error(http.StatusForbidden, "tokenRequiresScope", "checking scope failed: "+err.Error())
return
}
- // this context is used by the middleware in the specific route
- ctx.Data["ApiTokenScopePublicRepoOnly"] = publicOnly && auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryRepository)
- ctx.Data["ApiTokenScopePublicOrgOnly"] = publicOnly && auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryOrganization)
-
- allow, err := scope.HasScope(requiredScopes...)
- if err != nil {
- ctx.Error(http.StatusForbidden, "tokenRequiresScope", "checking scope failed: "+err.Error())
+ if !allow {
+ ctx.Error(http.StatusForbidden, "tokenRequiresScope", fmt.Sprintf("token does not have at least one of required scope(s): %v", requiredScopes))
return
}
- if allow {
+ ctx.Data["requiredScopeCategories"] = requiredScopeCategories
+
+ // check if scope only applies to public resources
+ publicOnly, err := scope.PublicOnly()
+ if err != nil {
+ ctx.Error(http.StatusForbidden, "tokenRequiresScope", "parsing public resource scope failed: "+err.Error())
return
}
- ctx.Error(http.StatusForbidden, "tokenRequiresScope", fmt.Sprintf("token does not have at least one of required scope(s): %v", requiredScopes))
+ // assign to true so that those searching should only filter public repositories/users/organizations
+ ctx.PublicOnly = publicOnly
}
}
@@ -295,25 +347,6 @@ func reqToken() func(ctx *context.APIContext) {
return
}
- if true == ctx.Data["IsApiToken"] {
- publicRepo, pubRepoExists := ctx.Data["ApiTokenScopePublicRepoOnly"]
- publicOrg, pubOrgExists := ctx.Data["ApiTokenScopePublicOrgOnly"]
-
- if pubRepoExists && publicRepo.(bool) &&
- ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
- ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public repos")
- return
- }
-
- if pubOrgExists && publicOrg.(bool) &&
- ctx.Org.Organization != nil && ctx.Org.Organization.Visibility != api.VisibleTypePublic {
- ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public orgs")
- return
- }
-
- return
- }
-
if ctx.IsSigned {
return
}
@@ -879,11 +912,11 @@ func Routes() *web.Router {
m.Group("/user/{username}", func() {
m.Get("", activitypub.Person)
m.Post("/inbox", activitypub.ReqHTTPSignature(), activitypub.PersonInbox)
- }, context.UserAssignmentAPI())
+ }, context.UserAssignmentAPI(), checkTokenPublicOnly())
m.Group("/user-id/{user-id}", func() {
m.Get("", activitypub.Person)
m.Post("/inbox", activitypub.ReqHTTPSignature(), activitypub.PersonInbox)
- }, context.UserIDAssignmentAPI())
+ }, context.UserIDAssignmentAPI(), checkTokenPublicOnly())
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryActivityPub))
}
@@ -939,7 +972,7 @@ func Routes() *web.Router {
}, reqSelfOrAdmin(), reqBasicOrRevProxyAuth())
m.Get("/activities/feeds", user.ListUserActivityFeeds)
- }, context.UserAssignmentAPI(), individualPermsChecker)
+ }, context.UserAssignmentAPI(), checkTokenPublicOnly(), individualPermsChecker)
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser))
// Users (requires user scope)
@@ -957,7 +990,7 @@ func Routes() *web.Router {
m.Get("/starred", user.GetStarredRepos)
m.Get("/subscriptions", user.GetWatchedRepos)
- }, context.UserAssignmentAPI())
+ }, context.UserAssignmentAPI(), checkTokenPublicOnly())
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser), reqToken())
// Users (requires user scope)
@@ -1044,7 +1077,7 @@ func Routes() *web.Router {
m.Get("", user.IsStarring)
m.Put("", user.Star)
m.Delete("", user.Unstar)
- }, repoAssignment())
+ }, repoAssignment(), checkTokenPublicOnly())
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository))
m.Get("/times", repo.ListMyTrackedTimes)
m.Get("/stopwatches", repo.GetStopwatches)
@@ -1069,18 +1102,20 @@ func Routes() *web.Router {
m.Get("", user.CheckUserBlock)
m.Put("", user.BlockUser)
m.Delete("", user.UnblockUser)
- }, context.UserAssignmentAPI())
+ }, context.UserAssignmentAPI(), checkTokenPublicOnly())
})
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser), reqToken())
// Repositories (requires repo scope, org scope)
m.Post("/org/{org}/repos",
+ // FIXME: we need org in context
tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization, auth_model.AccessTokenScopeCategoryRepository),
reqToken(),
bind(api.CreateRepoOption{}),
repo.CreateOrgRepoDeprecated)
// requires repo scope
+ // FIXME: Don't expose repository id outside of the system
m.Combo("/repositories/{id}", reqToken(), tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository)).Get(repo.GetByID)
// Repos (requires repo scope)
@@ -1286,6 +1321,8 @@ func Routes() *web.Router {
m.Group("/{ref}", func() {
m.Get("/status", repo.GetCombinedCommitStatusByRef)
m.Get("/statuses", repo.GetCommitStatusesByRef)
+ }, context.ReferencesGitRepo())
+ m.Group("/{sha}", func() {
m.Get("/pull", repo.GetCommitPullRequest)
}, context.ReferencesGitRepo())
}, reqRepoReader(unit.TypeCode))
@@ -1325,13 +1362,14 @@ func Routes() *web.Router {
m.Get("/issue_config", context.ReferencesGitRepo(), repo.GetIssueConfig)
m.Get("/issue_config/validate", context.ReferencesGitRepo(), repo.ValidateIssueConfig)
m.Get("/languages", reqRepoReader(unit.TypeCode), repo.GetLanguages)
+ m.Get("/licenses", reqRepoReader(unit.TypeCode), repo.GetLicenses)
m.Get("/activities/feeds", repo.ListRepoActivityFeeds)
m.Get("/new_pin_allowed", repo.AreNewIssuePinsAllowed)
m.Group("/avatar", func() {
m.Post("", bind(api.UpdateRepoAvatarOption{}), repo.UpdateAvatar)
m.Delete("", repo.DeleteAvatar)
}, reqAdmin(), reqToken())
- }, repoAssignment())
+ }, repoAssignment(), checkTokenPublicOnly())
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository))
// Notifications (requires notifications scope)
@@ -1340,7 +1378,7 @@ func Routes() *web.Router {
m.Combo("/notifications", reqToken()).
Get(notify.ListRepoNotifications).
Put(notify.ReadRepoNotifications)
- }, repoAssignment())
+ }, repoAssignment(), checkTokenPublicOnly())
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryNotification))
// Issue (requires issue scope)
@@ -1454,7 +1492,7 @@ func Routes() *web.Router {
Patch(reqToken(), reqRepoWriter(unit.TypeIssues, unit.TypePullRequests), bind(api.EditMilestoneOption{}), repo.EditMilestone).
Delete(reqToken(), reqRepoWriter(unit.TypeIssues, unit.TypePullRequests), repo.DeleteMilestone)
})
- }, repoAssignment())
+ }, repoAssignment(), checkTokenPublicOnly())
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryIssue))
// NOTE: these are Gitea package management API - see packages.CommonRoutes and packages.DockerContainerRoutes for endpoints that implement package manager APIs
@@ -1465,14 +1503,14 @@ func Routes() *web.Router {
m.Get("/files", reqToken(), packages.ListPackageFiles)
})
m.Get("/", reqToken(), packages.ListPackages)
- }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryPackage), context.UserAssignmentAPI(), context.PackageAssignmentAPI(), reqPackageAccess(perm.AccessModeRead))
+ }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryPackage), context.UserAssignmentAPI(), context.PackageAssignmentAPI(), reqPackageAccess(perm.AccessModeRead), checkTokenPublicOnly())
// Organizations
m.Get("/user/orgs", reqToken(), tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser, auth_model.AccessTokenScopeCategoryOrganization), org.ListMyOrgs)
m.Group("/users/{username}/orgs", func() {
m.Get("", reqToken(), org.ListUserOrgs)
m.Get("/{org}/permissions", reqToken(), org.GetUserOrgsPermissions)
- }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser, auth_model.AccessTokenScopeCategoryOrganization), context.UserAssignmentAPI())
+ }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser, auth_model.AccessTokenScopeCategoryOrganization), context.UserAssignmentAPI(), checkTokenPublicOnly())
m.Post("/orgs", tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), reqToken(), bind(api.CreateOrgOption{}), org.Create)
m.Get("/orgs", org.GetAll, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization))
m.Group("/orgs/{org}", func() {
@@ -1530,7 +1568,7 @@ func Routes() *web.Router {
m.Delete("", org.UnblockUser)
})
}, reqToken(), reqOrgOwnership())
- }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(true))
+ }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(true), checkTokenPublicOnly())
m.Group("/teams/{teamid}", func() {
m.Combo("").Get(reqToken(), org.GetTeam).
Patch(reqToken(), reqOrgOwnership(), bind(api.EditTeamOption{}), org.EditTeam).
@@ -1550,7 +1588,7 @@ func Routes() *web.Router {
Get(reqToken(), org.GetTeamRepo)
})
m.Get("/activities/feeds", org.ListTeamActivityFeeds)
- }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(false, true), reqToken(), reqTeamMembership())
+ }, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(false, true), reqToken(), reqTeamMembership(), checkTokenPublicOnly())
m.Group("/admin", func() {
m.Group("/cron", func() {
diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go
index e848d95181094..9e5874627298d 100644
--- a/routers/api/v1/org/org.go
+++ b/routers/api/v1/org/org.go
@@ -191,7 +191,7 @@ func GetAll(ctx *context.APIContext) {
// "$ref": "#/responses/OrganizationList"
vMode := []api.VisibleType{api.VisibleTypePublic}
- if ctx.IsSigned {
+ if ctx.IsSigned && !ctx.PublicOnly {
vMode = append(vMode, api.VisibleTypeLimited)
if ctx.Doer.IsAdmin {
vMode = append(vMode, api.VisibleTypePrivate)
diff --git a/routers/api/v1/repo/commits.go b/routers/api/v1/repo/commits.go
index d33be9d80a807..788c75fab2ffe 100644
--- a/routers/api/v1/repo/commits.go
+++ b/routers/api/v1/repo/commits.go
@@ -195,7 +195,7 @@ func GetAllCommits(ctx *context.APIContext) {
// get commit specified by sha
baseCommit, err = ctx.Repo.GitRepo.GetCommit(sha)
if err != nil {
- ctx.Error(http.StatusInternalServerError, "GetCommit", err)
+ ctx.NotFoundOrServerError("GetCommit", git.IsErrNotExist, err)
return
}
}
@@ -325,11 +325,11 @@ func DownloadCommitDiffOrPatch(ctx *context.APIContext) {
}
}
-// GetCommitPullRequest returns the pull request of the commit
+// GetCommitPullRequest returns the merged pull request of the commit
func GetCommitPullRequest(ctx *context.APIContext) {
// swagger:operation GET /repos/{owner}/{repo}/commits/{sha}/pull repository repoGetCommitPullRequest
// ---
- // summary: Get the pull request of the commit
+ // summary: Get the merged pull request of the commit
// produces:
// - application/json
// parameters:
@@ -354,7 +354,7 @@ func GetCommitPullRequest(ctx *context.APIContext) {
// "404":
// "$ref": "#/responses/notFound"
- pr, err := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, ctx.PathParam(":sha"))
+ pr, err := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, ctx.PathParam("sha"))
if err != nil {
if issues_model.IsErrPullRequestNotExist(err) {
ctx.Error(http.StatusNotFound, "GetPullRequestByMergedCommit", err)
diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go
index 108504ebb4021..d8c39b0f69bfa 100644
--- a/routers/api/v1/repo/issue.go
+++ b/routers/api/v1/repo/issue.go
@@ -149,7 +149,7 @@ func SearchIssues(ctx *context.APIContext) {
Actor: ctx.Doer,
}
if ctx.IsSigned {
- opts.Private = true
+ opts.Private = !ctx.PublicOnly
opts.AllLimited = true
}
if ctx.FormString("owner") != "" {
@@ -833,10 +833,16 @@ func EditIssue(ctx *context.APIContext) {
if (form.Deadline != nil || form.RemoveDeadline != nil) && canWrite {
var deadlineUnix timeutil.TimeStamp
- if (form.RemoveDeadline == nil || !*form.RemoveDeadline) && !form.Deadline.IsZero() {
- deadline := time.Date(form.Deadline.Year(), form.Deadline.Month(), form.Deadline.Day(),
- 23, 59, 59, 0, form.Deadline.Location())
- deadlineUnix = timeutil.TimeStamp(deadline.Unix())
+ if form.RemoveDeadline == nil || !*form.RemoveDeadline {
+ if form.Deadline == nil {
+ ctx.Error(http.StatusBadRequest, "", "The due_date cannot be empty")
+ return
+ }
+ if !form.Deadline.IsZero() {
+ deadline := time.Date(form.Deadline.Year(), form.Deadline.Month(), form.Deadline.Day(),
+ 23, 59, 59, 0, form.Deadline.Location())
+ deadlineUnix = timeutil.TimeStamp(deadline.Unix())
+ }
}
if err := issues_model.UpdateIssueDeadline(ctx, issue, deadlineUnix, ctx.Doer); err != nil {
@@ -891,13 +897,27 @@ func EditIssue(ctx *context.APIContext) {
return
}
}
- if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", api.StateClosed == api.StateType(*form.State)); err != nil {
- if issues_model.IsErrDependenciesLeft(err) {
- ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this issue because it still has open dependencies")
+
+ var isClosed bool
+ switch state := api.StateType(*form.State); state {
+ case api.StateOpen:
+ isClosed = false
+ case api.StateClosed:
+ isClosed = true
+ default:
+ ctx.Error(http.StatusPreconditionFailed, "UnknownIssueStateError", fmt.Sprintf("unknown state: %s", state))
+ return
+ }
+
+ if issue.IsClosed != isClosed {
+ if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", isClosed); err != nil {
+ if issues_model.IsErrDependenciesLeft(err) {
+ ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this issue because it still has open dependencies")
+ return
+ }
+ ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
return
}
- ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
- return
}
}
diff --git a/routers/api/v1/repo/license.go b/routers/api/v1/repo/license.go
new file mode 100644
index 0000000000000..8a6bdfd42fa69
--- /dev/null
+++ b/routers/api/v1/repo/license.go
@@ -0,0 +1,51 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repo
+
+import (
+ "net/http"
+
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/services/context"
+)
+
+// GetLicenses returns licenses
+func GetLicenses(ctx *context.APIContext) {
+ // swagger:operation GET /repos/{owner}/{repo}/licenses repository repoGetLicenses
+ // ---
+ // summary: Get repo licenses
+ // produces:
+ // - application/json
+ // parameters:
+ // - name: owner
+ // in: path
+ // description: owner of the repo
+ // type: string
+ // required: true
+ // - name: repo
+ // in: path
+ // description: name of the repo
+ // type: string
+ // required: true
+ // responses:
+ // "404":
+ // "$ref": "#/responses/notFound"
+ // "200":
+ // "$ref": "#/responses/LicensesList"
+
+ licenses, err := repo_model.GetRepoLicenses(ctx, ctx.Repo.Repository)
+ if err != nil {
+ log.Error("GetRepoLicenses failed: %v", err)
+ ctx.InternalServerError(err)
+ return
+ }
+
+ resp := make([]string, len(licenses))
+ for i := range licenses {
+ resp[i] = licenses[i].License
+ }
+
+ ctx.JSON(http.StatusOK, resp)
+}
diff --git a/routers/api/v1/repo/migrate.go b/routers/api/v1/repo/migrate.go
index 14c8c01f4e8d4..dcbd8f3dd50aa 100644
--- a/routers/api/v1/repo/migrate.go
+++ b/routers/api/v1/repo/migrate.go
@@ -169,6 +169,10 @@ func Migrate(ctx *context.APIContext) {
opts.PullRequests = false
opts.Releases = false
}
+ if gitServiceType == api.CodeCommitService {
+ opts.AWSAccessKeyID = form.AWSAccessKeyID
+ opts.AWSSecretAccessKey = form.AWSSecretAccessKey
+ }
repo, err := repo_service.CreateRepositoryDirectly(ctx, ctx.Doer, repoOwner, repo_service.CreateRepoOptions{
Name: opts.RepoName,
diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go
index 148b6ed637f07..34ebcb42d5aef 100644
--- a/routers/api/v1/repo/pull.go
+++ b/routers/api/v1/repo/pull.go
@@ -52,56 +52,79 @@ func ListPullRequests(ctx *context.APIContext) {
// parameters:
// - name: owner
// in: path
- // description: owner of the repo
+ // description: Owner of the repo
// type: string
// required: true
// - name: repo
// in: path
- // description: name of the repo
+ // description: Name of the repo
// type: string
// required: true
// - name: state
// in: query
- // description: "State of pull request: open or closed (optional)"
+ // description: State of pull request
// type: string
- // enum: [closed, open, all]
+ // enum: [open, closed, all]
+ // default: open
// - name: sort
// in: query
- // description: "Type of sort"
+ // description: Type of sort
// type: string
// enum: [oldest, recentupdate, leastupdate, mostcomment, leastcomment, priority]
// - name: milestone
// in: query
- // description: "ID of the milestone"
+ // description: ID of the milestone
// type: integer
// format: int64
// - name: labels
// in: query
- // description: "Label IDs"
+ // description: Label IDs
// type: array
// collectionFormat: multi
// items:
// type: integer
// format: int64
+ // - name: poster
+ // in: query
+ // description: Filter by pull request author
+ // type: string
// - name: page
// in: query
- // description: page number of results to return (1-based)
+ // description: Page number of results to return (1-based)
// type: integer
+ // minimum: 1
+ // default: 1
// - name: limit
// in: query
- // description: page size of results
+ // description: Page size of results
// type: integer
+ // minimum: 0
// responses:
// "200":
// "$ref": "#/responses/PullRequestList"
// "404":
// "$ref": "#/responses/notFound"
+ // "500":
+ // "$ref": "#/responses/error"
labelIDs, err := base.StringsToInt64s(ctx.FormStrings("labels"))
if err != nil {
ctx.Error(http.StatusInternalServerError, "PullRequests", err)
return
}
+ var posterID int64
+ if posterStr := ctx.FormString("poster"); posterStr != "" {
+ poster, err := user_model.GetUserByName(ctx, posterStr)
+ if err != nil {
+ if user_model.IsErrUserNotExist(err) {
+ ctx.Error(http.StatusBadRequest, "Poster not found", err)
+ } else {
+ ctx.Error(http.StatusInternalServerError, "GetUserByName", err)
+ }
+ return
+ }
+ posterID = poster.ID
+ }
listOptions := utils.GetListOptions(ctx)
prs, maxResults, err := issues_model.PullRequests(ctx, ctx.Repo.Repository.ID, &issues_model.PullRequestsOptions{
ListOptions: listOptions,
@@ -109,6 +132,7 @@ func ListPullRequests(ctx *context.APIContext) {
SortType: ctx.FormTrim("sort"),
Labels: labelIDs,
MilestoneID: ctx.FormInt64("milestone"),
+ PosterID: posterID,
})
if err != nil {
ctx.Error(http.StatusInternalServerError, "PullRequests", err)
@@ -716,13 +740,27 @@ func EditPullRequest(ctx *context.APIContext) {
ctx.Error(http.StatusPreconditionFailed, "MergedPRState", "cannot change state of this pull request, it was already merged")
return
}
- if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", api.StateClosed == api.StateType(*form.State)); err != nil {
- if issues_model.IsErrDependenciesLeft(err) {
- ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this pull request because it still has open dependencies")
+
+ var isClosed bool
+ switch state := api.StateType(*form.State); state {
+ case api.StateOpen:
+ isClosed = false
+ case api.StateClosed:
+ isClosed = true
+ default:
+ ctx.Error(http.StatusPreconditionFailed, "UnknownPRStateError", fmt.Sprintf("unknown state: %s", state))
+ return
+ }
+
+ if issue.IsClosed != isClosed {
+ if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", isClosed); err != nil {
+ if issues_model.IsErrDependenciesLeft(err) {
+ ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this pull request because it still has open dependencies")
+ return
+ }
+ ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
return
}
- ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
- return
}
}
@@ -752,7 +790,7 @@ func EditPullRequest(ctx *context.APIContext) {
// update allow edits
if form.AllowMaintainerEdit != nil {
if err := pull_service.SetAllowEdits(ctx, ctx.Doer, pr, *form.AllowMaintainerEdit); err != nil {
- if errors.Is(pull_service.ErrUserHasNoPermissionForAction, err) {
+ if errors.Is(err, pull_service.ErrUserHasNoPermissionForAction) {
ctx.Error(http.StatusForbidden, "SetAllowEdits", fmt.Sprintf("SetAllowEdits: %s", err))
return
}
@@ -1110,9 +1148,20 @@ func parseCompareInfo(ctx *context.APIContext, form api.CreatePullRequestOption)
// Check if current user has fork of repository or in the same repository.
headRepo := repo_model.GetForkedRepo(ctx, headUser.ID, baseRepo.ID)
if headRepo == nil && !isSameRepo {
- log.Trace("parseCompareInfo[%d]: does not have fork or in same repository", baseRepo.ID)
- ctx.NotFound("GetForkedRepo")
- return nil, nil, nil, "", ""
+ err := baseRepo.GetBaseRepo(ctx)
+ if err != nil {
+ ctx.Error(http.StatusInternalServerError, "GetBaseRepo", err)
+ return nil, nil, nil, "", ""
+ }
+
+ // Check if baseRepo's base repository is the same as headUser's repository.
+ if baseRepo.BaseRepo == nil || baseRepo.BaseRepo.OwnerID != headUser.ID {
+ log.Trace("parseCompareInfo[%d]: does not have fork or in same repository", baseRepo.ID)
+ ctx.NotFound("GetBaseRepo")
+ return nil, nil, nil, "", ""
+ }
+ // Assign headRepo so it can be used below.
+ headRepo = baseRepo.BaseRepo
}
var headGitRepo *git.Repository
diff --git a/routers/api/v1/repo/pull_review.go b/routers/api/v1/repo/pull_review.go
index c2e4966498315..34bbaf560008f 100644
--- a/routers/api/v1/repo/pull_review.go
+++ b/routers/api/v1/repo/pull_review.go
@@ -83,7 +83,6 @@ func ListPullReviews(ctx *context.APIContext) {
opts := issues_model.FindReviewOptions{
ListOptions: utils.GetListOptions(ctx),
- Type: issues_model.ReviewTypeUnknown,
IssueID: pr.IssueID,
}
diff --git a/routers/api/v1/repo/release.go b/routers/api/v1/repo/release.go
index ef587f6274b91..478bdbd797a8e 100644
--- a/routers/api/v1/repo/release.go
+++ b/routers/api/v1/repo/release.go
@@ -12,6 +12,7 @@ import (
"code.gitea.io/gitea/models/perm"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
+ "code.gitea.io/gitea/modules/git"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/api/v1/utils"
@@ -251,6 +252,8 @@ func CreateRelease(ctx *context.APIContext) {
ctx.Error(http.StatusConflict, "ReleaseAlreadyExist", err)
} else if models.IsErrProtectedTagName(err) {
ctx.Error(http.StatusUnprocessableEntity, "ProtectedTagName", err)
+ } else if git.IsErrNotExist(err) {
+ ctx.Error(http.StatusNotFound, "ErrNotExist", fmt.Errorf("target \"%v\" not found: %w", rel.Target, err))
} else {
ctx.Error(http.StatusInternalServerError, "CreateRelease", err)
}
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 1bcec8fcf7e72..4638e2ba5c3a7 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -129,6 +129,11 @@ func Search(ctx *context.APIContext) {
// "422":
// "$ref": "#/responses/validationError"
+ private := ctx.IsSigned && (ctx.FormString("private") == "" || ctx.FormBool("private"))
+ if ctx.PublicOnly {
+ private = false
+ }
+
opts := &repo_model.SearchRepoOptions{
ListOptions: utils.GetListOptions(ctx),
Actor: ctx.Doer,
@@ -138,7 +143,7 @@ func Search(ctx *context.APIContext) {
TeamID: ctx.FormInt64("team_id"),
TopicOnly: ctx.FormBool("topic"),
Collaborate: optional.None[bool](),
- Private: ctx.IsSigned && (ctx.FormString("private") == "" || ctx.FormBool("private")),
+ Private: private,
Template: optional.None[bool](),
StarredByID: ctx.FormInt64("starredBy"),
IncludeDescription: ctx.FormBool("includeDesc"),
@@ -731,6 +736,7 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err
}
// Default branch only updated if changed and exist or the repository is empty
+ updateRepoLicense := false
if opts.DefaultBranch != nil && repo.DefaultBranch != *opts.DefaultBranch && (repo.IsEmpty || ctx.Repo.GitRepo.IsBranchExist(*opts.DefaultBranch)) {
if !repo.IsEmpty {
if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, *opts.DefaultBranch); err != nil {
@@ -739,6 +745,7 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err
return err
}
}
+ updateRepoLicense = true
}
repo.DefaultBranch = *opts.DefaultBranch
}
@@ -748,6 +755,15 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err
return err
}
+ if updateRepoLicense {
+ if err := repo_service.AddRepoToLicenseUpdaterQueue(&repo_service.LicenseUpdaterOptions{
+ RepoID: ctx.Repo.Repository.ID,
+ }); err != nil {
+ ctx.Error(http.StatusInternalServerError, "AddRepoToLicenseUpdaterQueue", err)
+ return err
+ }
+ }
+
log.Trace("Repository basic settings updated: %s/%s", owner.Name, repo.Name)
return nil
}
diff --git a/routers/api/v1/swagger/repo.go b/routers/api/v1/swagger/repo.go
index 345835f9a58cd..b9d2a0217cd4f 100644
--- a/routers/api/v1/swagger/repo.go
+++ b/routers/api/v1/swagger/repo.go
@@ -359,6 +359,13 @@ type swaggerLanguageStatistics struct {
Body map[string]int64 `json:"body"`
}
+// LicensesList
+// swagger:response LicensesList
+type swaggerLicensesList struct {
+ // in: body
+ Body []string `json:"body"`
+}
+
// CombinedStatus
// swagger:response CombinedStatus
type swaggerCombinedStatus struct {
diff --git a/routers/api/v1/user/app.go b/routers/api/v1/user/app.go
index 5c28dd878d2aa..9583bb548c7c5 100644
--- a/routers/api/v1/user/app.go
+++ b/routers/api/v1/user/app.go
@@ -118,6 +118,10 @@ func CreateAccessToken(ctx *context.APIContext) {
ctx.Error(http.StatusBadRequest, "AccessTokenScope.Normalize", fmt.Errorf("invalid access token scope provided: %w", err))
return
}
+ if scope == "" {
+ ctx.Error(http.StatusBadRequest, "AccessTokenScope", "access token must have a scope")
+ return
+ }
t.Scope = scope
if err := auth_model.NewAccessToken(ctx, t); err != nil {
@@ -129,6 +133,7 @@ func CreateAccessToken(ctx *context.APIContext) {
Token: t.Token,
ID: t.ID,
TokenLastEight: t.TokenLastEight,
+ Scopes: t.Scope.StringSlice(),
})
}
diff --git a/routers/api/v1/user/user.go b/routers/api/v1/user/user.go
index fedad87fc4fa5..a9011427fb577 100644
--- a/routers/api/v1/user/user.go
+++ b/routers/api/v1/user/user.go
@@ -9,6 +9,7 @@ import (
activities_model "code.gitea.io/gitea/models/activities"
user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/routers/api/v1/utils"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/convert"
@@ -67,12 +68,18 @@ func Search(ctx *context.APIContext) {
maxResults = 1
users = []*user_model.User{user_model.NewActionsUser()}
default:
+ var visible []structs.VisibleType
+ if ctx.PublicOnly {
+ visible = []structs.VisibleType{structs.VisibleTypePublic}
+ }
users, maxResults, err = user_model.SearchUsers(ctx, &user_model.SearchUserOptions{
- Actor: ctx.Doer,
- Keyword: ctx.FormTrim("q"),
- UID: uid,
- Type: user_model.UserTypeIndividual,
- ListOptions: listOptions,
+ Actor: ctx.Doer,
+ Keyword: ctx.FormTrim("q"),
+ UID: uid,
+ Type: user_model.UserTypeIndividual,
+ SearchByEmail: true,
+ Visible: visible,
+ ListOptions: listOptions,
})
if err != nil {
ctx.JSON(http.StatusInternalServerError, map[string]any{
diff --git a/routers/init.go b/routers/init.go
index e21f763c1e527..2091f5967acac 100644
--- a/routers/init.go
+++ b/routers/init.go
@@ -47,6 +47,7 @@ import (
markup_service "code.gitea.io/gitea/services/markup"
repo_migrations "code.gitea.io/gitea/services/migrations"
mirror_service "code.gitea.io/gitea/services/mirror"
+ "code.gitea.io/gitea/services/oauth2_provider"
pull_service "code.gitea.io/gitea/services/pull"
release_service "code.gitea.io/gitea/services/release"
repo_service "code.gitea.io/gitea/services/repository"
@@ -144,7 +145,7 @@ func InitWebInstalled(ctx context.Context) {
log.Info("ORM engine initialization successful!")
mustInit(system.Init)
mustInitCtx(ctx, oauth2.Init)
-
+ mustInitCtx(ctx, oauth2_provider.Init)
mustInit(release_service.Init)
mustInitCtx(ctx, models.Init)
@@ -172,6 +173,8 @@ func InitWebInstalled(ctx context.Context) {
actions_service.Init()
+ mustInit(repo_service.InitLicenseClassifier)
+
// Finally start up the cron
cron.NewContext(ctx)
}
diff --git a/routers/install/install.go b/routers/install/install.go
index fde8b37ed5942..e420d36da5a1b 100644
--- a/routers/install/install.go
+++ b/routers/install/install.go
@@ -554,7 +554,7 @@ func SubmitInstall(ctx *context.Context) {
IsActive: optional.Some(true),
}
- if err = user_model.CreateUser(ctx, u, overwriteDefault); err != nil {
+ if err = user_model.CreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil {
if !user_model.IsErrUserAlreadyExist(err) {
setting.InstallLock = false
ctx.Data["Err_AdminName"] = true
diff --git a/routers/private/default_branch.go b/routers/private/default_branch.go
index 7be909f955d17..03c19c8ff4020 100644
--- a/routers/private/default_branch.go
+++ b/routers/private/default_branch.go
@@ -12,6 +12,7 @@ import (
"code.gitea.io/gitea/modules/gitrepo"
"code.gitea.io/gitea/modules/private"
gitea_context "code.gitea.io/gitea/services/context"
+ repo_service "code.gitea.io/gitea/services/repository"
)
// SetDefaultBranch updates the default branch
@@ -36,5 +37,15 @@ func SetDefaultBranch(ctx *gitea_context.PrivateContext) {
})
return
}
+
+ if err := repo_service.AddRepoToLicenseUpdaterQueue(&repo_service.LicenseUpdaterOptions{
+ RepoID: ctx.Repo.Repository.ID,
+ }); err != nil {
+ ctx.JSON(http.StatusInternalServerError, private.Response{
+ Err: fmt.Sprintf("Unable to set default branch on repository: %s/%s Error: %v", ownerName, repoName, err),
+ })
+ return
+ }
+
ctx.PlainText(http.StatusOK, "success")
}
diff --git a/routers/private/hook_post_receive.go b/routers/private/hook_post_receive.go
index 2d1688523c488..5c01216356dba 100644
--- a/routers/private/hook_post_receive.go
+++ b/routers/private/hook_post_receive.go
@@ -278,10 +278,19 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
branch := refFullName.BranchName()
- // If our branch is the default branch of an unforked repo - there's no PR to create or refer to
- if !repo.IsFork && branch == baseRepo.DefaultBranch {
- results = append(results, private.HookPostReceiveBranchResult{})
- continue
+ if branch == baseRepo.DefaultBranch {
+ if err := repo_service.AddRepoToLicenseUpdaterQueue(&repo_service.LicenseUpdaterOptions{
+ RepoID: repo.ID,
+ }); err != nil {
+ ctx.JSON(http.StatusInternalServerError, private.Response{Err: err.Error()})
+ return
+ }
+
+ // If our branch is the default branch of an unforked repo - there's no PR to create or refer to
+ if !repo.IsFork {
+ results = append(results, private.HookPostReceiveBranchResult{})
+ continue
+ }
}
pr, err := issues_model.GetUnmergedPullRequest(ctx, repo.ID, baseRepo.ID, branch, baseRepo.DefaultBranch, issues_model.PullRequestFlowGithub)
diff --git a/routers/private/internal.go b/routers/private/internal.go
index 61e604b7a932e..f9adff388cfd0 100644
--- a/routers/private/internal.go
+++ b/routers/private/internal.go
@@ -12,7 +12,9 @@ import (
"code.gitea.io/gitea/modules/private"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web"
+ "code.gitea.io/gitea/routers/common"
"code.gitea.io/gitea/services/context"
+ "code.gitea.io/gitea/services/lfs"
"gitea.com/go-chi/binding"
chi_middleware "github.com/go-chi/chi/v5/middleware"
@@ -46,6 +48,14 @@ func bind[T any](_ T) any {
}
}
+// SwapAuthToken swaps Authorization header with X-Auth header
+func swapAuthToken(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
+ req.Header.Set("Authorization", req.Header.Get("X-Auth"))
+ next.ServeHTTP(w, req)
+ })
+}
+
// Routes registers all internal APIs routes to web application.
// These APIs will be invoked by internal commands for example `gitea serv` and etc.
func Routes() *web.Router {
@@ -80,5 +90,25 @@ func Routes() *web.Router {
r.Post("/restore_repo", RestoreRepo)
r.Post("/actions/generate_actions_runner_token", GenerateActionsRunnerToken)
+ r.Group("/repo/{username}/{reponame}", func() {
+ r.Group("/info/lfs", func() {
+ r.Post("/objects/batch", lfs.CheckAcceptMediaType, lfs.BatchHandler)
+ r.Put("/objects/{oid}/{size}", lfs.UploadHandler)
+ r.Get("/objects/{oid}/{filename}", lfs.DownloadHandler)
+ r.Get("/objects/{oid}", lfs.DownloadHandler)
+ r.Post("/verify", lfs.CheckAcceptMediaType, lfs.VerifyHandler)
+ r.Group("/locks", func() {
+ r.Get("/", lfs.GetListLockHandler)
+ r.Post("/", lfs.PostLockHandler)
+ r.Post("/verify", lfs.VerifyLockHandler)
+ r.Post("/{lid}/unlock", lfs.UnLockHandler)
+ }, lfs.CheckAcceptMediaType)
+ r.Any("/*", func(ctx *context.Context) {
+ ctx.NotFound("", nil)
+ })
+ }, swapAuthToken)
+ }, common.Sessioner(), context.Contexter())
+ // end "/repo/{username}/{reponame}": git (LFS) API mirror
+
return r
}
diff --git a/routers/private/serv.go b/routers/private/serv.go
index dbb28cc2bb072..4dd7d06fb36e2 100644
--- a/routers/private/serv.go
+++ b/routers/private/serv.go
@@ -136,16 +136,15 @@ func ServCommand(ctx *context.PrivateContext) {
if err != nil {
if repo_model.IsErrRepoNotExist(err) {
repoExist = false
- for _, verb := range ctx.FormStrings("verb") {
- if verb == "git-upload-pack" {
- // User is fetching/cloning a non-existent repository
- log.Warn("Failed authentication attempt (cannot find repository: %s/%s) from %s", results.OwnerName, results.RepoName, ctx.RemoteAddr())
- ctx.JSON(http.StatusNotFound, private.Response{
- UserMsg: fmt.Sprintf("Cannot find repository: %s/%s", results.OwnerName, results.RepoName),
- })
- return
- }
+ if mode == perm.AccessModeRead {
+ // User is fetching/cloning a non-existent repository
+ log.Warn("Failed authentication attempt (cannot find repository: %s/%s) from %s", results.OwnerName, results.RepoName, ctx.RemoteAddr())
+ ctx.JSON(http.StatusNotFound, private.Response{
+ UserMsg: fmt.Sprintf("Cannot find repository: %s/%s", results.OwnerName, results.RepoName),
+ })
+ return
}
+ // else fallthrough (push-to-create may kick in below)
} else {
log.Error("Unable to get repository: %s/%s Error: %v", results.OwnerName, results.RepoName, err)
ctx.JSON(http.StatusInternalServerError, private.Response{
diff --git a/routers/web/admin/hooks.go b/routers/web/admin/hooks.go
index 8d59fbb858e96..e40580b6e7762 100644
--- a/routers/web/admin/hooks.go
+++ b/routers/web/admin/hooks.go
@@ -34,7 +34,7 @@ func DefaultOrSystemWebhooks(ctx *context.Context) {
}
sys["Title"] = ctx.Tr("admin.systemhooks")
- sys["Description"] = ctx.Tr("admin.systemhooks.desc")
+ sys["Description"] = ctx.Tr("admin.systemhooks.desc", "https://docs.gitea.com/usage/webhooks")
sys["Webhooks"], err = webhook.GetSystemWebhooks(ctx, optional.None[bool]())
sys["BaseLink"] = setting.AppSubURL + "/admin/hooks"
sys["BaseLinkNew"] = setting.AppSubURL + "/admin/system-hooks"
@@ -44,7 +44,7 @@ func DefaultOrSystemWebhooks(ctx *context.Context) {
}
def["Title"] = ctx.Tr("admin.defaulthooks")
- def["Description"] = ctx.Tr("admin.defaulthooks.desc")
+ def["Description"] = ctx.Tr("admin.defaulthooks.desc", "https://docs.gitea.com/usage/webhooks")
def["Webhooks"], err = webhook.GetDefaultWebhooks(ctx)
def["BaseLink"] = setting.AppSubURL + "/admin/hooks"
def["BaseLinkNew"] = setting.AppSubURL + "/admin/default-hooks"
diff --git a/routers/web/admin/users.go b/routers/web/admin/users.go
index 623b39b4efcfa..48ff8ea04b01f 100644
--- a/routers/web/admin/users.go
+++ b/routers/web/admin/users.go
@@ -166,7 +166,7 @@ func NewUserPost(ctx *context.Context) {
}
if err := password.IsPwned(ctx, form.Password); err != nil {
ctx.Data["Err_Password"] = true
- errMsg := ctx.Tr("auth.password_pwned")
+ errMsg := ctx.Tr("auth.password_pwned", "https://haveibeenpwned.com/Passwords")
if password.IsErrIsPwnedRequest(err) {
log.Error(err.Error())
errMsg = ctx.Tr("auth.password_pwned_err")
@@ -177,7 +177,7 @@ func NewUserPost(ctx *context.Context) {
u.MustChangePassword = form.MustChangePassword
}
- if err := user_model.AdminCreateUser(ctx, u, overwriteDefault); err != nil {
+ if err := user_model.AdminCreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil {
switch {
case user_model.IsErrUserAlreadyExist(err):
ctx.Data["Err_UserName"] = true
@@ -401,7 +401,7 @@ func EditUserPost(ctx *context.Context) {
ctx.RenderWithErr(password.BuildComplexityError(ctx.Locale), tplUserEdit, &form)
case errors.Is(err, password.ErrIsPwned):
ctx.Data["Err_Password"] = true
- ctx.RenderWithErr(ctx.Tr("auth.password_pwned"), tplUserEdit, &form)
+ ctx.RenderWithErr(ctx.Tr("auth.password_pwned", "https://haveibeenpwned.com/Passwords"), tplUserEdit, &form)
case password.IsErrIsPwnedRequest(err):
ctx.Data["Err_Password"] = true
ctx.RenderWithErr(ctx.Tr("auth.password_pwned_err"), tplUserEdit, &form)
diff --git a/routers/web/auth/auth.go b/routers/web/auth/auth.go
index 15a80bc104659..5cbe2f5388cab 100644
--- a/routers/web/auth/auth.go
+++ b/routers/web/auth/auth.go
@@ -228,12 +228,12 @@ func SignInPost(ctx *context.Context) {
if err != nil {
if errors.Is(err, util.ErrNotExist) || errors.Is(err, util.ErrInvalidArgument) {
ctx.RenderWithErr(ctx.Tr("form.username_password_incorrect"), tplSignIn, &form)
- log.Info("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
+ log.Warn("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
} else if user_model.IsErrEmailAlreadyUsed(err) {
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), tplSignIn, &form)
- log.Info("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
+ log.Warn("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
} else if user_model.IsErrUserProhibitLogin(err) {
- log.Info("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
+ log.Warn("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
ctx.Data["Title"] = ctx.Tr("auth.prohibit_login")
ctx.HTML(http.StatusOK, "user/auth/prohibit_login")
} else if user_model.IsErrUserInactive(err) {
@@ -241,7 +241,7 @@ func SignInPost(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("auth.active_your_account")
ctx.HTML(http.StatusOK, TplActivate)
} else {
- log.Info("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
+ log.Warn("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
ctx.Data["Title"] = ctx.Tr("auth.prohibit_login")
ctx.HTML(http.StatusOK, "user/auth/prohibit_login")
}
@@ -504,7 +504,7 @@ func SignUpPost(ctx *context.Context) {
return
}
if err := password.IsPwned(ctx, form.Password); err != nil {
- errMsg := ctx.Tr("auth.password_pwned")
+ errMsg := ctx.Tr("auth.password_pwned", "https://haveibeenpwned.com/Passwords")
if password.IsErrIsPwnedRequest(err) {
log.Error(err.Error())
errMsg = ctx.Tr("auth.password_pwned_err")
@@ -541,7 +541,11 @@ func createAndHandleCreatedUser(ctx *context.Context, tpl base.TplName, form any
// createUserInContext creates a user and handles errors within a given context.
// Optionally a template can be specified.
func createUserInContext(ctx *context.Context, tpl base.TplName, form any, u *user_model.User, overwrites *user_model.CreateUserOverwriteOptions, gothUser *goth.User, allowLink bool) (ok bool) {
- if err := user_model.CreateUser(ctx, u, overwrites); err != nil {
+ meta := &user_model.Meta{
+ InitialIP: ctx.RemoteAddr(),
+ InitialUserAgent: ctx.Req.UserAgent(),
+ }
+ if err := user_model.CreateUser(ctx, u, meta, overwrites); err != nil {
if allowLink && (user_model.IsErrUserAlreadyExist(err) || user_model.IsErrEmailAlreadyUsed(err)) {
if setting.OAuth2Client.AccountLinking == setting.OAuth2AccountLinkingAuto {
var user *user_model.User
diff --git a/routers/web/auth/oauth.go b/routers/web/auth/oauth.go
index c61a0a6240432..ccbb3bebf1f5c 100644
--- a/routers/web/auth/oauth.go
+++ b/routers/web/auth/oauth.go
@@ -4,878 +4,34 @@
package auth
import (
- go_context "context"
"errors"
"fmt"
"html"
- "html/template"
"io"
"net/http"
- "net/url"
"sort"
"strings"
"code.gitea.io/gitea/models/auth"
- org_model "code.gitea.io/gitea/models/organization"
user_model "code.gitea.io/gitea/models/user"
auth_module "code.gitea.io/gitea/modules/auth"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/container"
- "code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/timeutil"
- "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/modules/web/middleware"
- auth_service "code.gitea.io/gitea/services/auth"
source_service "code.gitea.io/gitea/services/auth/source"
"code.gitea.io/gitea/services/auth/source/oauth2"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/externalaccount"
- "code.gitea.io/gitea/services/forms"
user_service "code.gitea.io/gitea/services/user"
- "gitea.com/go-chi/binding"
- "github.com/golang-jwt/jwt/v5"
"github.com/markbates/goth"
"github.com/markbates/goth/gothic"
go_oauth2 "golang.org/x/oauth2"
)
-const (
- tplGrantAccess base.TplName = "user/auth/grant"
- tplGrantError base.TplName = "user/auth/grant_error"
-)
-
-// TODO move error and responses to SDK or models
-
-// AuthorizeErrorCode represents an error code specified in RFC 6749
-// https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1
-type AuthorizeErrorCode string
-
-const (
- // ErrorCodeInvalidRequest represents the according error in RFC 6749
- ErrorCodeInvalidRequest AuthorizeErrorCode = "invalid_request"
- // ErrorCodeUnauthorizedClient represents the according error in RFC 6749
- ErrorCodeUnauthorizedClient AuthorizeErrorCode = "unauthorized_client"
- // ErrorCodeAccessDenied represents the according error in RFC 6749
- ErrorCodeAccessDenied AuthorizeErrorCode = "access_denied"
- // ErrorCodeUnsupportedResponseType represents the according error in RFC 6749
- ErrorCodeUnsupportedResponseType AuthorizeErrorCode = "unsupported_response_type"
- // ErrorCodeInvalidScope represents the according error in RFC 6749
- ErrorCodeInvalidScope AuthorizeErrorCode = "invalid_scope"
- // ErrorCodeServerError represents the according error in RFC 6749
- ErrorCodeServerError AuthorizeErrorCode = "server_error"
- // ErrorCodeTemporaryUnavailable represents the according error in RFC 6749
- ErrorCodeTemporaryUnavailable AuthorizeErrorCode = "temporarily_unavailable"
-)
-
-// AuthorizeError represents an error type specified in RFC 6749
-// https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1
-type AuthorizeError struct {
- ErrorCode AuthorizeErrorCode `json:"error" form:"error"`
- ErrorDescription string
- State string
-}
-
-// Error returns the error message
-func (err AuthorizeError) Error() string {
- return fmt.Sprintf("%s: %s", err.ErrorCode, err.ErrorDescription)
-}
-
-// AccessTokenErrorCode represents an error code specified in RFC 6749
-// https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
-type AccessTokenErrorCode string
-
-const (
- // AccessTokenErrorCodeInvalidRequest represents an error code specified in RFC 6749
- AccessTokenErrorCodeInvalidRequest AccessTokenErrorCode = "invalid_request"
- // AccessTokenErrorCodeInvalidClient represents an error code specified in RFC 6749
- AccessTokenErrorCodeInvalidClient = "invalid_client"
- // AccessTokenErrorCodeInvalidGrant represents an error code specified in RFC 6749
- AccessTokenErrorCodeInvalidGrant = "invalid_grant"
- // AccessTokenErrorCodeUnauthorizedClient represents an error code specified in RFC 6749
- AccessTokenErrorCodeUnauthorizedClient = "unauthorized_client"
- // AccessTokenErrorCodeUnsupportedGrantType represents an error code specified in RFC 6749
- AccessTokenErrorCodeUnsupportedGrantType = "unsupported_grant_type"
- // AccessTokenErrorCodeInvalidScope represents an error code specified in RFC 6749
- AccessTokenErrorCodeInvalidScope = "invalid_scope"
-)
-
-// AccessTokenError represents an error response specified in RFC 6749
-// https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
-type AccessTokenError struct {
- ErrorCode AccessTokenErrorCode `json:"error" form:"error"`
- ErrorDescription string `json:"error_description"`
-}
-
-// Error returns the error message
-func (err AccessTokenError) Error() string {
- return fmt.Sprintf("%s: %s", err.ErrorCode, err.ErrorDescription)
-}
-
-// errCallback represents a oauth2 callback error
-type errCallback struct {
- Code string
- Description string
-}
-
-func (err errCallback) Error() string {
- return err.Description
-}
-
-// TokenType specifies the kind of token
-type TokenType string
-
-const (
- // TokenTypeBearer represents a token type specified in RFC 6749
- TokenTypeBearer TokenType = "bearer"
- // TokenTypeMAC represents a token type specified in RFC 6749
- TokenTypeMAC = "mac"
-)
-
-// AccessTokenResponse represents a successful access token response
-// https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2
-type AccessTokenResponse struct {
- AccessToken string `json:"access_token"`
- TokenType TokenType `json:"token_type"`
- ExpiresIn int64 `json:"expires_in"`
- RefreshToken string `json:"refresh_token"`
- IDToken string `json:"id_token,omitempty"`
-}
-
-func newAccessTokenResponse(ctx go_context.Context, grant *auth.OAuth2Grant, serverKey, clientKey oauth2.JWTSigningKey) (*AccessTokenResponse, *AccessTokenError) {
- if setting.OAuth2.InvalidateRefreshTokens {
- if err := grant.IncreaseCounter(ctx); err != nil {
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidGrant,
- ErrorDescription: "cannot increase the grant counter",
- }
- }
- }
- // generate access token to access the API
- expirationDate := timeutil.TimeStampNow().Add(setting.OAuth2.AccessTokenExpirationTime)
- accessToken := &oauth2.Token{
- GrantID: grant.ID,
- Type: oauth2.TypeAccessToken,
- RegisteredClaims: jwt.RegisteredClaims{
- ExpiresAt: jwt.NewNumericDate(expirationDate.AsTime()),
- },
- }
- signedAccessToken, err := accessToken.SignToken(serverKey)
- if err != nil {
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot sign token",
- }
- }
-
- // generate refresh token to request an access token after it expired later
- refreshExpirationDate := timeutil.TimeStampNow().Add(setting.OAuth2.RefreshTokenExpirationTime * 60 * 60).AsTime()
- refreshToken := &oauth2.Token{
- GrantID: grant.ID,
- Counter: grant.Counter,
- Type: oauth2.TypeRefreshToken,
- RegisteredClaims: jwt.RegisteredClaims{
- ExpiresAt: jwt.NewNumericDate(refreshExpirationDate),
- },
- }
- signedRefreshToken, err := refreshToken.SignToken(serverKey)
- if err != nil {
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot sign token",
- }
- }
-
- // generate OpenID Connect id_token
- signedIDToken := ""
- if grant.ScopeContains("openid") {
- app, err := auth.GetOAuth2ApplicationByID(ctx, grant.ApplicationID)
- if err != nil {
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot find application",
- }
- }
- user, err := user_model.GetUserByID(ctx, grant.UserID)
- if err != nil {
- if user_model.IsErrUserNotExist(err) {
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot find user",
- }
- }
- log.Error("Error loading user: %v", err)
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "server error",
- }
- }
-
- idToken := &oauth2.OIDCToken{
- RegisteredClaims: jwt.RegisteredClaims{
- ExpiresAt: jwt.NewNumericDate(expirationDate.AsTime()),
- Issuer: setting.AppURL,
- Audience: []string{app.ClientID},
- Subject: fmt.Sprint(grant.UserID),
- },
- Nonce: grant.Nonce,
- }
- if grant.ScopeContains("profile") {
- idToken.Name = user.GetDisplayName()
- idToken.PreferredUsername = user.Name
- idToken.Profile = user.HTMLURL()
- idToken.Picture = user.AvatarLink(ctx)
- idToken.Website = user.Website
- idToken.Locale = user.Language
- idToken.UpdatedAt = user.UpdatedUnix
- }
- if grant.ScopeContains("email") {
- idToken.Email = user.Email
- idToken.EmailVerified = user.IsActive
- }
- if grant.ScopeContains("groups") {
- groups, err := getOAuthGroupsForUser(ctx, user)
- if err != nil {
- log.Error("Error getting groups: %v", err)
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "server error",
- }
- }
- idToken.Groups = groups
- }
-
- signedIDToken, err = idToken.SignToken(clientKey)
- if err != nil {
- return nil, &AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot sign token",
- }
- }
- }
-
- return &AccessTokenResponse{
- AccessToken: signedAccessToken,
- TokenType: TokenTypeBearer,
- ExpiresIn: setting.OAuth2.AccessTokenExpirationTime,
- RefreshToken: signedRefreshToken,
- IDToken: signedIDToken,
- }, nil
-}
-
-type userInfoResponse struct {
- Sub string `json:"sub"`
- Name string `json:"name"`
- Username string `json:"preferred_username"`
- Email string `json:"email"`
- Picture string `json:"picture"`
- Groups []string `json:"groups"`
-}
-
-// InfoOAuth manages request for userinfo endpoint
-func InfoOAuth(ctx *context.Context) {
- if ctx.Doer == nil || ctx.Data["AuthedMethod"] != (&auth_service.OAuth2{}).Name() {
- ctx.Resp.Header().Set("WWW-Authenticate", `Bearer realm=""`)
- ctx.PlainText(http.StatusUnauthorized, "no valid authorization")
- return
- }
-
- response := &userInfoResponse{
- Sub: fmt.Sprint(ctx.Doer.ID),
- Name: ctx.Doer.FullName,
- Username: ctx.Doer.Name,
- Email: ctx.Doer.Email,
- Picture: ctx.Doer.AvatarLink(ctx),
- }
-
- groups, err := getOAuthGroupsForUser(ctx, ctx.Doer)
- if err != nil {
- ctx.ServerError("Oauth groups for user", err)
- return
- }
- response.Groups = groups
-
- ctx.JSON(http.StatusOK, response)
-}
-
-// returns a list of "org" and "org:team" strings,
-// that the given user is a part of.
-func getOAuthGroupsForUser(ctx go_context.Context, user *user_model.User) ([]string, error) {
- orgs, err := org_model.GetUserOrgsList(ctx, user)
- if err != nil {
- return nil, fmt.Errorf("GetUserOrgList: %w", err)
- }
-
- var groups []string
- for _, org := range orgs {
- groups = append(groups, org.Name)
- teams, err := org.LoadTeams(ctx)
- if err != nil {
- return nil, fmt.Errorf("LoadTeams: %w", err)
- }
- for _, team := range teams {
- if team.IsMember(ctx, user.ID) {
- groups = append(groups, org.Name+":"+team.LowerName)
- }
- }
- }
- return groups, nil
-}
-
-func parseBasicAuth(ctx *context.Context) (username, password string, err error) {
- authHeader := ctx.Req.Header.Get("Authorization")
- if authType, authData, ok := strings.Cut(authHeader, " "); ok && strings.EqualFold(authType, "Basic") {
- return base.BasicAuthDecode(authData)
- }
- return "", "", errors.New("invalid basic authentication")
-}
-
-// IntrospectOAuth introspects an oauth token
-func IntrospectOAuth(ctx *context.Context) {
- clientIDValid := false
- if clientID, clientSecret, err := parseBasicAuth(ctx); err == nil {
- app, err := auth.GetOAuth2ApplicationByClientID(ctx, clientID)
- if err != nil && !auth.IsErrOauthClientIDInvalid(err) {
- // this is likely a database error; log it and respond without details
- log.Error("Error retrieving client_id: %v", err)
- ctx.Error(http.StatusInternalServerError)
- return
- }
- clientIDValid = err == nil && app.ValidateClientSecret([]byte(clientSecret))
- }
- if !clientIDValid {
- ctx.Resp.Header().Set("WWW-Authenticate", `Basic realm=""`)
- ctx.PlainText(http.StatusUnauthorized, "no valid authorization")
- return
- }
-
- var response struct {
- Active bool `json:"active"`
- Scope string `json:"scope,omitempty"`
- Username string `json:"username,omitempty"`
- jwt.RegisteredClaims
- }
-
- form := web.GetForm(ctx).(*forms.IntrospectTokenForm)
- token, err := oauth2.ParseToken(form.Token, oauth2.DefaultSigningKey)
- if err == nil {
- grant, err := auth.GetOAuth2GrantByID(ctx, token.GrantID)
- if err == nil && grant != nil {
- app, err := auth.GetOAuth2ApplicationByID(ctx, grant.ApplicationID)
- if err == nil && app != nil {
- response.Active = true
- response.Scope = grant.Scope
- response.Issuer = setting.AppURL
- response.Audience = []string{app.ClientID}
- response.Subject = fmt.Sprint(grant.UserID)
- }
- if user, err := user_model.GetUserByID(ctx, grant.UserID); err == nil {
- response.Username = user.Name
- }
- }
- }
-
- ctx.JSON(http.StatusOK, response)
-}
-
-// AuthorizeOAuth manages authorize requests
-func AuthorizeOAuth(ctx *context.Context) {
- form := web.GetForm(ctx).(*forms.AuthorizationForm)
- errs := binding.Errors{}
- errs = form.Validate(ctx.Req, errs)
- if len(errs) > 0 {
- errstring := ""
- for _, e := range errs {
- errstring += e.Error() + "\n"
- }
- ctx.ServerError("AuthorizeOAuth: Validate: ", fmt.Errorf("errors occurred during validation: %s", errstring))
- return
- }
-
- app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
- if err != nil {
- if auth.IsErrOauthClientIDInvalid(err) {
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeUnauthorizedClient,
- ErrorDescription: "Client ID not registered",
- State: form.State,
- }, "")
- return
- }
- ctx.ServerError("GetOAuth2ApplicationByClientID", err)
- return
- }
-
- var user *user_model.User
- if app.UID != 0 {
- user, err = user_model.GetUserByID(ctx, app.UID)
- if err != nil {
- ctx.ServerError("GetUserByID", err)
- return
- }
- }
-
- if !app.ContainsRedirectURI(form.RedirectURI) {
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeInvalidRequest,
- ErrorDescription: "Unregistered Redirect URI",
- State: form.State,
- }, "")
- return
- }
-
- if form.ResponseType != "code" {
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeUnsupportedResponseType,
- ErrorDescription: "Only code response type is supported.",
- State: form.State,
- }, form.RedirectURI)
- return
- }
-
- // pkce support
- switch form.CodeChallengeMethod {
- case "S256":
- case "plain":
- if err := ctx.Session.Set("CodeChallengeMethod", form.CodeChallengeMethod); err != nil {
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeServerError,
- ErrorDescription: "cannot set code challenge method",
- State: form.State,
- }, form.RedirectURI)
- return
- }
- if err := ctx.Session.Set("CodeChallengeMethod", form.CodeChallenge); err != nil {
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeServerError,
- ErrorDescription: "cannot set code challenge",
- State: form.State,
- }, form.RedirectURI)
- return
- }
- // Here we're just going to try to release the session early
- if err := ctx.Session.Release(); err != nil {
- // we'll tolerate errors here as they *should* get saved elsewhere
- log.Error("Unable to save changes to the session: %v", err)
- }
- case "":
- // "Authorization servers SHOULD reject authorization requests from native apps that don't use PKCE by returning an error message"
- // https://datatracker.ietf.org/doc/html/rfc8252#section-8.1
- if !app.ConfidentialClient {
- // "the authorization endpoint MUST return the authorization error response with the "error" value set to "invalid_request""
- // https://datatracker.ietf.org/doc/html/rfc7636#section-4.4.1
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeInvalidRequest,
- ErrorDescription: "PKCE is required for public clients",
- State: form.State,
- }, form.RedirectURI)
- return
- }
- default:
- // "If the server supporting PKCE does not support the requested transformation, the authorization endpoint MUST return the authorization error response with "error" value set to "invalid_request"."
- // https://www.rfc-editor.org/rfc/rfc7636#section-4.4.1
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeInvalidRequest,
- ErrorDescription: "unsupported code challenge method",
- State: form.State,
- }, form.RedirectURI)
- return
- }
-
- grant, err := app.GetGrantByUserID(ctx, ctx.Doer.ID)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- return
- }
-
- // Redirect if user already granted access and the application is confidential or trusted otherwise
- // I.e. always require authorization for untrusted public clients as recommended by RFC 6749 Section 10.2
- if (app.ConfidentialClient || app.SkipSecondaryAuthorization) && grant != nil {
- code, err := grant.GenerateNewAuthorizationCode(ctx, form.RedirectURI, form.CodeChallenge, form.CodeChallengeMethod)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- return
- }
- redirect, err := code.GenerateRedirectURI(form.State)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- return
- }
- // Update nonce to reflect the new session
- if len(form.Nonce) > 0 {
- err := grant.SetNonce(ctx, form.Nonce)
- if err != nil {
- log.Error("Unable to update nonce: %v", err)
- }
- }
- ctx.Redirect(redirect.String())
- return
- }
-
- // show authorize page to grant access
- ctx.Data["Application"] = app
- ctx.Data["RedirectURI"] = form.RedirectURI
- ctx.Data["State"] = form.State
- ctx.Data["Scope"] = form.Scope
- ctx.Data["Nonce"] = form.Nonce
- if user != nil {
- ctx.Data["ApplicationCreatorLinkHTML"] = template.HTML(fmt.Sprintf(`@%s`, html.EscapeString(user.HomeLink()), html.EscapeString(user.Name)))
- } else {
- ctx.Data["ApplicationCreatorLinkHTML"] = template.HTML(fmt.Sprintf(`%s`, html.EscapeString(setting.AppSubURL+"/"), html.EscapeString(setting.AppName)))
- }
- ctx.Data["ApplicationRedirectDomainHTML"] = template.HTML("" + html.EscapeString(form.RedirectURI) + "")
- // TODO document SESSION <=> FORM
- err = ctx.Session.Set("client_id", app.ClientID)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- log.Error(err.Error())
- return
- }
- err = ctx.Session.Set("redirect_uri", form.RedirectURI)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- log.Error(err.Error())
- return
- }
- err = ctx.Session.Set("state", form.State)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- log.Error(err.Error())
- return
- }
- // Here we're just going to try to release the session early
- if err := ctx.Session.Release(); err != nil {
- // we'll tolerate errors here as they *should* get saved elsewhere
- log.Error("Unable to save changes to the session: %v", err)
- }
- ctx.HTML(http.StatusOK, tplGrantAccess)
-}
-
-// GrantApplicationOAuth manages the post request submitted when a user grants access to an application
-func GrantApplicationOAuth(ctx *context.Context) {
- form := web.GetForm(ctx).(*forms.GrantApplicationForm)
- if ctx.Session.Get("client_id") != form.ClientID || ctx.Session.Get("state") != form.State ||
- ctx.Session.Get("redirect_uri") != form.RedirectURI {
- ctx.Error(http.StatusBadRequest)
- return
- }
-
- if !form.Granted {
- handleAuthorizeError(ctx, AuthorizeError{
- State: form.State,
- ErrorDescription: "the request is denied",
- ErrorCode: ErrorCodeAccessDenied,
- }, form.RedirectURI)
- return
- }
-
- app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
- if err != nil {
- ctx.ServerError("GetOAuth2ApplicationByClientID", err)
- return
- }
- grant, err := app.GetGrantByUserID(ctx, ctx.Doer.ID)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- return
- }
- if grant == nil {
- grant, err = app.CreateGrant(ctx, ctx.Doer.ID, form.Scope)
- if err != nil {
- handleAuthorizeError(ctx, AuthorizeError{
- State: form.State,
- ErrorDescription: "cannot create grant for user",
- ErrorCode: ErrorCodeServerError,
- }, form.RedirectURI)
- return
- }
- } else if grant.Scope != form.Scope {
- handleAuthorizeError(ctx, AuthorizeError{
- State: form.State,
- ErrorDescription: "a grant exists with different scope",
- ErrorCode: ErrorCodeServerError,
- }, form.RedirectURI)
- return
- }
-
- if len(form.Nonce) > 0 {
- err := grant.SetNonce(ctx, form.Nonce)
- if err != nil {
- log.Error("Unable to update nonce: %v", err)
- }
- }
-
- var codeChallenge, codeChallengeMethod string
- codeChallenge, _ = ctx.Session.Get("CodeChallenge").(string)
- codeChallengeMethod, _ = ctx.Session.Get("CodeChallengeMethod").(string)
-
- code, err := grant.GenerateNewAuthorizationCode(ctx, form.RedirectURI, codeChallenge, codeChallengeMethod)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- return
- }
- redirect, err := code.GenerateRedirectURI(form.State)
- if err != nil {
- handleServerError(ctx, form.State, form.RedirectURI)
- return
- }
- ctx.Redirect(redirect.String(), http.StatusSeeOther)
-}
-
-// OIDCWellKnown generates JSON so OIDC clients know Gitea's capabilities
-func OIDCWellKnown(ctx *context.Context) {
- ctx.Data["SigningKey"] = oauth2.DefaultSigningKey
- ctx.JSONTemplate("user/auth/oidc_wellknown")
-}
-
-// OIDCKeys generates the JSON Web Key Set
-func OIDCKeys(ctx *context.Context) {
- jwk, err := oauth2.DefaultSigningKey.ToJWK()
- if err != nil {
- log.Error("Error converting signing key to JWK: %v", err)
- ctx.Error(http.StatusInternalServerError)
- return
- }
-
- jwk["use"] = "sig"
-
- jwks := map[string][]map[string]string{
- "keys": {
- jwk,
- },
- }
-
- ctx.Resp.Header().Set("Content-Type", "application/json")
- enc := json.NewEncoder(ctx.Resp)
- if err := enc.Encode(jwks); err != nil {
- log.Error("Failed to encode representation as json. Error: %v", err)
- }
-}
-
-// AccessTokenOAuth manages all access token requests by the client
-func AccessTokenOAuth(ctx *context.Context) {
- form := *web.GetForm(ctx).(*forms.AccessTokenForm)
- // if there is no ClientID or ClientSecret in the request body, fill these fields by the Authorization header and ensure the provided field matches the Authorization header
- if form.ClientID == "" || form.ClientSecret == "" {
- authHeader := ctx.Req.Header.Get("Authorization")
- if authType, authData, ok := strings.Cut(authHeader, " "); ok && strings.EqualFold(authType, "Basic") {
- clientID, clientSecret, err := base.BasicAuthDecode(authData)
- if err != nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot parse basic auth header",
- })
- return
- }
- // validate that any fields present in the form match the Basic auth header
- if form.ClientID != "" && form.ClientID != clientID {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "client_id in request body inconsistent with Authorization header",
- })
- return
- }
- form.ClientID = clientID
- if form.ClientSecret != "" && form.ClientSecret != clientSecret {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "client_secret in request body inconsistent with Authorization header",
- })
- return
- }
- form.ClientSecret = clientSecret
- }
- }
-
- serverKey := oauth2.DefaultSigningKey
- clientKey := serverKey
- if serverKey.IsSymmetric() {
- var err error
- clientKey, err = oauth2.CreateJWTSigningKey(serverKey.SigningMethod().Alg(), []byte(form.ClientSecret))
- if err != nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "Error creating signing key",
- })
- return
- }
- }
-
- switch form.GrantType {
- case "refresh_token":
- handleRefreshToken(ctx, form, serverKey, clientKey)
- case "authorization_code":
- handleAuthorizationCode(ctx, form, serverKey, clientKey)
- default:
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnsupportedGrantType,
- ErrorDescription: "Only refresh_token or authorization_code grant type is supported",
- })
- }
-}
-
-func handleRefreshToken(ctx *context.Context, form forms.AccessTokenForm, serverKey, clientKey oauth2.JWTSigningKey) {
- app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
- if err != nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidClient,
- ErrorDescription: fmt.Sprintf("cannot load client with client id: %q", form.ClientID),
- })
- return
- }
- // "The authorization server MUST ... require client authentication for confidential clients"
- // https://datatracker.ietf.org/doc/html/rfc6749#section-6
- if app.ConfidentialClient && !app.ValidateClientSecret([]byte(form.ClientSecret)) {
- errorDescription := "invalid client secret"
- if form.ClientSecret == "" {
- errorDescription = "invalid empty client secret"
- }
- // "invalid_client ... Client authentication failed"
- // https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidClient,
- ErrorDescription: errorDescription,
- })
- return
- }
-
- token, err := oauth2.ParseToken(form.RefreshToken, serverKey)
- if err != nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnauthorizedClient,
- ErrorDescription: "unable to parse refresh token",
- })
- return
- }
- // get grant before increasing counter
- grant, err := auth.GetOAuth2GrantByID(ctx, token.GrantID)
- if err != nil || grant == nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidGrant,
- ErrorDescription: "grant does not exist",
- })
- return
- }
-
- // check if token got already used
- if setting.OAuth2.InvalidateRefreshTokens && (grant.Counter != token.Counter || token.Counter == 0) {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnauthorizedClient,
- ErrorDescription: "token was already used",
- })
- log.Warn("A client tried to use a refresh token for grant_id = %d was used twice!", grant.ID)
- return
- }
- accessToken, tokenErr := newAccessTokenResponse(ctx, grant, serverKey, clientKey)
- if tokenErr != nil {
- handleAccessTokenError(ctx, *tokenErr)
- return
- }
- ctx.JSON(http.StatusOK, accessToken)
-}
-
-func handleAuthorizationCode(ctx *context.Context, form forms.AccessTokenForm, serverKey, clientKey oauth2.JWTSigningKey) {
- app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
- if err != nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidClient,
- ErrorDescription: fmt.Sprintf("cannot load client with client id: '%s'", form.ClientID),
- })
- return
- }
- if app.ConfidentialClient && !app.ValidateClientSecret([]byte(form.ClientSecret)) {
- errorDescription := "invalid client secret"
- if form.ClientSecret == "" {
- errorDescription = "invalid empty client secret"
- }
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnauthorizedClient,
- ErrorDescription: errorDescription,
- })
- return
- }
- if form.RedirectURI != "" && !app.ContainsRedirectURI(form.RedirectURI) {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnauthorizedClient,
- ErrorDescription: "unexpected redirect URI",
- })
- return
- }
- authorizationCode, err := auth.GetOAuth2AuthorizationByCode(ctx, form.Code)
- if err != nil || authorizationCode == nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnauthorizedClient,
- ErrorDescription: "client is not authorized",
- })
- return
- }
- // check if code verifier authorizes the client, PKCE support
- if !authorizationCode.ValidateCodeChallenge(form.CodeVerifier) {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeUnauthorizedClient,
- ErrorDescription: "failed PKCE code challenge",
- })
- return
- }
- // check if granted for this application
- if authorizationCode.Grant.ApplicationID != app.ID {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidGrant,
- ErrorDescription: "invalid grant",
- })
- return
- }
- // remove token from database to deny duplicate usage
- if err := authorizationCode.Invalidate(ctx); err != nil {
- handleAccessTokenError(ctx, AccessTokenError{
- ErrorCode: AccessTokenErrorCodeInvalidRequest,
- ErrorDescription: "cannot proceed your request",
- })
- }
- resp, tokenErr := newAccessTokenResponse(ctx, authorizationCode.Grant, serverKey, clientKey)
- if tokenErr != nil {
- handleAccessTokenError(ctx, *tokenErr)
- return
- }
- // send successful response
- ctx.JSON(http.StatusOK, resp)
-}
-
-func handleAccessTokenError(ctx *context.Context, acErr AccessTokenError) {
- ctx.JSON(http.StatusBadRequest, acErr)
-}
-
-func handleServerError(ctx *context.Context, state, redirectURI string) {
- handleAuthorizeError(ctx, AuthorizeError{
- ErrorCode: ErrorCodeServerError,
- ErrorDescription: "A server error occurred",
- State: state,
- }, redirectURI)
-}
-
-func handleAuthorizeError(ctx *context.Context, authErr AuthorizeError, redirectURI string) {
- if redirectURI == "" {
- log.Warn("Authorization failed: %v", authErr.ErrorDescription)
- ctx.Data["Error"] = authErr
- ctx.HTML(http.StatusBadRequest, tplGrantError)
- return
- }
- redirect, err := url.Parse(redirectURI)
- if err != nil {
- ctx.ServerError("url.Parse", err)
- return
- }
- q := redirect.Query()
- q.Set("error", string(authErr.ErrorCode))
- q.Set("error_description", authErr.ErrorDescription)
- q.Set("state", authErr.State)
- redirect.RawQuery = q.Encode()
- ctx.Redirect(redirect.String(), http.StatusSeeOther)
-}
-
// SignInOAuth handles the OAuth2 login buttons
func SignInOAuth(ctx *context.Context) {
provider := ctx.PathParam(":provider")
diff --git a/routers/web/auth/oauth2_provider.go b/routers/web/auth/oauth2_provider.go
new file mode 100644
index 0000000000000..29827b062de84
--- /dev/null
+++ b/routers/web/auth/oauth2_provider.go
@@ -0,0 +1,666 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package auth
+
+import (
+ "errors"
+ "fmt"
+ "html"
+ "html/template"
+ "net/http"
+ "net/url"
+ "strings"
+
+ "code.gitea.io/gitea/models/auth"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/base"
+ "code.gitea.io/gitea/modules/json"
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/web"
+ auth_service "code.gitea.io/gitea/services/auth"
+ "code.gitea.io/gitea/services/context"
+ "code.gitea.io/gitea/services/forms"
+ "code.gitea.io/gitea/services/oauth2_provider"
+
+ "gitea.com/go-chi/binding"
+ jwt "github.com/golang-jwt/jwt/v5"
+)
+
+const (
+ tplGrantAccess base.TplName = "user/auth/grant"
+ tplGrantError base.TplName = "user/auth/grant_error"
+)
+
+// TODO move error and responses to SDK or models
+
+// AuthorizeErrorCode represents an error code specified in RFC 6749
+// https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1
+type AuthorizeErrorCode string
+
+const (
+ // ErrorCodeInvalidRequest represents the according error in RFC 6749
+ ErrorCodeInvalidRequest AuthorizeErrorCode = "invalid_request"
+ // ErrorCodeUnauthorizedClient represents the according error in RFC 6749
+ ErrorCodeUnauthorizedClient AuthorizeErrorCode = "unauthorized_client"
+ // ErrorCodeAccessDenied represents the according error in RFC 6749
+ ErrorCodeAccessDenied AuthorizeErrorCode = "access_denied"
+ // ErrorCodeUnsupportedResponseType represents the according error in RFC 6749
+ ErrorCodeUnsupportedResponseType AuthorizeErrorCode = "unsupported_response_type"
+ // ErrorCodeInvalidScope represents the according error in RFC 6749
+ ErrorCodeInvalidScope AuthorizeErrorCode = "invalid_scope"
+ // ErrorCodeServerError represents the according error in RFC 6749
+ ErrorCodeServerError AuthorizeErrorCode = "server_error"
+ // ErrorCodeTemporaryUnavailable represents the according error in RFC 6749
+ ErrorCodeTemporaryUnavailable AuthorizeErrorCode = "temporarily_unavailable"
+)
+
+// AuthorizeError represents an error type specified in RFC 6749
+// https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1
+type AuthorizeError struct {
+ ErrorCode AuthorizeErrorCode `json:"error" form:"error"`
+ ErrorDescription string
+ State string
+}
+
+// Error returns the error message
+func (err AuthorizeError) Error() string {
+ return fmt.Sprintf("%s: %s", err.ErrorCode, err.ErrorDescription)
+}
+
+// errCallback represents a oauth2 callback error
+type errCallback struct {
+ Code string
+ Description string
+}
+
+func (err errCallback) Error() string {
+ return err.Description
+}
+
+type userInfoResponse struct {
+ Sub string `json:"sub"`
+ Name string `json:"name"`
+ Username string `json:"preferred_username"`
+ Email string `json:"email"`
+ Picture string `json:"picture"`
+ Groups []string `json:"groups"`
+}
+
+// InfoOAuth manages request for userinfo endpoint
+func InfoOAuth(ctx *context.Context) {
+ if ctx.Doer == nil || ctx.Data["AuthedMethod"] != (&auth_service.OAuth2{}).Name() {
+ ctx.Resp.Header().Set("WWW-Authenticate", `Bearer realm=""`)
+ ctx.PlainText(http.StatusUnauthorized, "no valid authorization")
+ return
+ }
+
+ response := &userInfoResponse{
+ Sub: fmt.Sprint(ctx.Doer.ID),
+ Name: ctx.Doer.FullName,
+ Username: ctx.Doer.Name,
+ Email: ctx.Doer.Email,
+ Picture: ctx.Doer.AvatarLink(ctx),
+ }
+
+ groups, err := oauth2_provider.GetOAuthGroupsForUser(ctx, ctx.Doer)
+ if err != nil {
+ ctx.ServerError("Oauth groups for user", err)
+ return
+ }
+ response.Groups = groups
+
+ ctx.JSON(http.StatusOK, response)
+}
+
+func parseBasicAuth(ctx *context.Context) (username, password string, err error) {
+ authHeader := ctx.Req.Header.Get("Authorization")
+ if authType, authData, ok := strings.Cut(authHeader, " "); ok && strings.EqualFold(authType, "Basic") {
+ return base.BasicAuthDecode(authData)
+ }
+ return "", "", errors.New("invalid basic authentication")
+}
+
+// IntrospectOAuth introspects an oauth token
+func IntrospectOAuth(ctx *context.Context) {
+ clientIDValid := false
+ if clientID, clientSecret, err := parseBasicAuth(ctx); err == nil {
+ app, err := auth.GetOAuth2ApplicationByClientID(ctx, clientID)
+ if err != nil && !auth.IsErrOauthClientIDInvalid(err) {
+ // this is likely a database error; log it and respond without details
+ log.Error("Error retrieving client_id: %v", err)
+ ctx.Error(http.StatusInternalServerError)
+ return
+ }
+ clientIDValid = err == nil && app.ValidateClientSecret([]byte(clientSecret))
+ }
+ if !clientIDValid {
+ ctx.Resp.Header().Set("WWW-Authenticate", `Basic realm=""`)
+ ctx.PlainText(http.StatusUnauthorized, "no valid authorization")
+ return
+ }
+
+ var response struct {
+ Active bool `json:"active"`
+ Scope string `json:"scope,omitempty"`
+ Username string `json:"username,omitempty"`
+ jwt.RegisteredClaims
+ }
+
+ form := web.GetForm(ctx).(*forms.IntrospectTokenForm)
+ token, err := oauth2_provider.ParseToken(form.Token, oauth2_provider.DefaultSigningKey)
+ if err == nil {
+ grant, err := auth.GetOAuth2GrantByID(ctx, token.GrantID)
+ if err == nil && grant != nil {
+ app, err := auth.GetOAuth2ApplicationByID(ctx, grant.ApplicationID)
+ if err == nil && app != nil {
+ response.Active = true
+ response.Scope = grant.Scope
+ response.Issuer = setting.AppURL
+ response.Audience = []string{app.ClientID}
+ response.Subject = fmt.Sprint(grant.UserID)
+ }
+ if user, err := user_model.GetUserByID(ctx, grant.UserID); err == nil {
+ response.Username = user.Name
+ }
+ }
+ }
+
+ ctx.JSON(http.StatusOK, response)
+}
+
+// AuthorizeOAuth manages authorize requests
+func AuthorizeOAuth(ctx *context.Context) {
+ form := web.GetForm(ctx).(*forms.AuthorizationForm)
+ errs := binding.Errors{}
+ errs = form.Validate(ctx.Req, errs)
+ if len(errs) > 0 {
+ errstring := ""
+ for _, e := range errs {
+ errstring += e.Error() + "\n"
+ }
+ ctx.ServerError("AuthorizeOAuth: Validate: ", fmt.Errorf("errors occurred during validation: %s", errstring))
+ return
+ }
+
+ app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
+ if err != nil {
+ if auth.IsErrOauthClientIDInvalid(err) {
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeUnauthorizedClient,
+ ErrorDescription: "Client ID not registered",
+ State: form.State,
+ }, "")
+ return
+ }
+ ctx.ServerError("GetOAuth2ApplicationByClientID", err)
+ return
+ }
+
+ var user *user_model.User
+ if app.UID != 0 {
+ user, err = user_model.GetUserByID(ctx, app.UID)
+ if err != nil {
+ ctx.ServerError("GetUserByID", err)
+ return
+ }
+ }
+
+ if !app.ContainsRedirectURI(form.RedirectURI) {
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeInvalidRequest,
+ ErrorDescription: "Unregistered Redirect URI",
+ State: form.State,
+ }, "")
+ return
+ }
+
+ if form.ResponseType != "code" {
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeUnsupportedResponseType,
+ ErrorDescription: "Only code response type is supported.",
+ State: form.State,
+ }, form.RedirectURI)
+ return
+ }
+
+ // pkce support
+ switch form.CodeChallengeMethod {
+ case "S256":
+ case "plain":
+ if err := ctx.Session.Set("CodeChallengeMethod", form.CodeChallengeMethod); err != nil {
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeServerError,
+ ErrorDescription: "cannot set code challenge method",
+ State: form.State,
+ }, form.RedirectURI)
+ return
+ }
+ if err := ctx.Session.Set("CodeChallengeMethod", form.CodeChallenge); err != nil {
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeServerError,
+ ErrorDescription: "cannot set code challenge",
+ State: form.State,
+ }, form.RedirectURI)
+ return
+ }
+ // Here we're just going to try to release the session early
+ if err := ctx.Session.Release(); err != nil {
+ // we'll tolerate errors here as they *should* get saved elsewhere
+ log.Error("Unable to save changes to the session: %v", err)
+ }
+ case "":
+ // "Authorization servers SHOULD reject authorization requests from native apps that don't use PKCE by returning an error message"
+ // https://datatracker.ietf.org/doc/html/rfc8252#section-8.1
+ if !app.ConfidentialClient {
+ // "the authorization endpoint MUST return the authorization error response with the "error" value set to "invalid_request""
+ // https://datatracker.ietf.org/doc/html/rfc7636#section-4.4.1
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeInvalidRequest,
+ ErrorDescription: "PKCE is required for public clients",
+ State: form.State,
+ }, form.RedirectURI)
+ return
+ }
+ default:
+ // "If the server supporting PKCE does not support the requested transformation, the authorization endpoint MUST return the authorization error response with "error" value set to "invalid_request"."
+ // https://www.rfc-editor.org/rfc/rfc7636#section-4.4.1
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeInvalidRequest,
+ ErrorDescription: "unsupported code challenge method",
+ State: form.State,
+ }, form.RedirectURI)
+ return
+ }
+
+ grant, err := app.GetGrantByUserID(ctx, ctx.Doer.ID)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+
+ // Redirect if user already granted access and the application is confidential or trusted otherwise
+ // I.e. always require authorization for untrusted public clients as recommended by RFC 6749 Section 10.2
+ if (app.ConfidentialClient || app.SkipSecondaryAuthorization) && grant != nil {
+ code, err := grant.GenerateNewAuthorizationCode(ctx, form.RedirectURI, form.CodeChallenge, form.CodeChallengeMethod)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+ redirect, err := code.GenerateRedirectURI(form.State)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+ // Update nonce to reflect the new session
+ if len(form.Nonce) > 0 {
+ err := grant.SetNonce(ctx, form.Nonce)
+ if err != nil {
+ log.Error("Unable to update nonce: %v", err)
+ }
+ }
+ ctx.Redirect(redirect.String())
+ return
+ }
+
+ // show authorize page to grant access
+ ctx.Data["Application"] = app
+ ctx.Data["RedirectURI"] = form.RedirectURI
+ ctx.Data["State"] = form.State
+ ctx.Data["Scope"] = form.Scope
+ ctx.Data["Nonce"] = form.Nonce
+ if user != nil {
+ ctx.Data["ApplicationCreatorLinkHTML"] = template.HTML(fmt.Sprintf(`@%s`, html.EscapeString(user.HomeLink()), html.EscapeString(user.Name)))
+ } else {
+ ctx.Data["ApplicationCreatorLinkHTML"] = template.HTML(fmt.Sprintf(`%s`, html.EscapeString(setting.AppSubURL+"/"), html.EscapeString(setting.AppName)))
+ }
+ ctx.Data["ApplicationRedirectDomainHTML"] = template.HTML("" + html.EscapeString(form.RedirectURI) + "")
+ // TODO document SESSION <=> FORM
+ err = ctx.Session.Set("client_id", app.ClientID)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ log.Error(err.Error())
+ return
+ }
+ err = ctx.Session.Set("redirect_uri", form.RedirectURI)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ log.Error(err.Error())
+ return
+ }
+ err = ctx.Session.Set("state", form.State)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ log.Error(err.Error())
+ return
+ }
+ // Here we're just going to try to release the session early
+ if err := ctx.Session.Release(); err != nil {
+ // we'll tolerate errors here as they *should* get saved elsewhere
+ log.Error("Unable to save changes to the session: %v", err)
+ }
+ ctx.HTML(http.StatusOK, tplGrantAccess)
+}
+
+// GrantApplicationOAuth manages the post request submitted when a user grants access to an application
+func GrantApplicationOAuth(ctx *context.Context) {
+ form := web.GetForm(ctx).(*forms.GrantApplicationForm)
+ if ctx.Session.Get("client_id") != form.ClientID || ctx.Session.Get("state") != form.State ||
+ ctx.Session.Get("redirect_uri") != form.RedirectURI {
+ ctx.Error(http.StatusBadRequest)
+ return
+ }
+
+ if !form.Granted {
+ handleAuthorizeError(ctx, AuthorizeError{
+ State: form.State,
+ ErrorDescription: "the request is denied",
+ ErrorCode: ErrorCodeAccessDenied,
+ }, form.RedirectURI)
+ return
+ }
+
+ app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
+ if err != nil {
+ ctx.ServerError("GetOAuth2ApplicationByClientID", err)
+ return
+ }
+ grant, err := app.GetGrantByUserID(ctx, ctx.Doer.ID)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+ if grant == nil {
+ grant, err = app.CreateGrant(ctx, ctx.Doer.ID, form.Scope)
+ if err != nil {
+ handleAuthorizeError(ctx, AuthorizeError{
+ State: form.State,
+ ErrorDescription: "cannot create grant for user",
+ ErrorCode: ErrorCodeServerError,
+ }, form.RedirectURI)
+ return
+ }
+ } else if grant.Scope != form.Scope {
+ handleAuthorizeError(ctx, AuthorizeError{
+ State: form.State,
+ ErrorDescription: "a grant exists with different scope",
+ ErrorCode: ErrorCodeServerError,
+ }, form.RedirectURI)
+ return
+ }
+
+ if len(form.Nonce) > 0 {
+ err := grant.SetNonce(ctx, form.Nonce)
+ if err != nil {
+ log.Error("Unable to update nonce: %v", err)
+ }
+ }
+
+ var codeChallenge, codeChallengeMethod string
+ codeChallenge, _ = ctx.Session.Get("CodeChallenge").(string)
+ codeChallengeMethod, _ = ctx.Session.Get("CodeChallengeMethod").(string)
+
+ code, err := grant.GenerateNewAuthorizationCode(ctx, form.RedirectURI, codeChallenge, codeChallengeMethod)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+ redirect, err := code.GenerateRedirectURI(form.State)
+ if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+ ctx.Redirect(redirect.String(), http.StatusSeeOther)
+}
+
+// OIDCWellKnown generates JSON so OIDC clients know Gitea's capabilities
+func OIDCWellKnown(ctx *context.Context) {
+ ctx.Data["SigningKey"] = oauth2_provider.DefaultSigningKey
+ ctx.JSONTemplate("user/auth/oidc_wellknown")
+}
+
+// OIDCKeys generates the JSON Web Key Set
+func OIDCKeys(ctx *context.Context) {
+ jwk, err := oauth2_provider.DefaultSigningKey.ToJWK()
+ if err != nil {
+ log.Error("Error converting signing key to JWK: %v", err)
+ ctx.Error(http.StatusInternalServerError)
+ return
+ }
+
+ jwk["use"] = "sig"
+
+ jwks := map[string][]map[string]string{
+ "keys": {
+ jwk,
+ },
+ }
+
+ ctx.Resp.Header().Set("Content-Type", "application/json")
+ enc := json.NewEncoder(ctx.Resp)
+ if err := enc.Encode(jwks); err != nil {
+ log.Error("Failed to encode representation as json. Error: %v", err)
+ }
+}
+
+// AccessTokenOAuth manages all access token requests by the client
+func AccessTokenOAuth(ctx *context.Context) {
+ form := *web.GetForm(ctx).(*forms.AccessTokenForm)
+ // if there is no ClientID or ClientSecret in the request body, fill these fields by the Authorization header and ensure the provided field matches the Authorization header
+ if form.ClientID == "" || form.ClientSecret == "" {
+ authHeader := ctx.Req.Header.Get("Authorization")
+ if authType, authData, ok := strings.Cut(authHeader, " "); ok && strings.EqualFold(authType, "Basic") {
+ clientID, clientSecret, err := base.BasicAuthDecode(authData)
+ if err != nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot parse basic auth header",
+ })
+ return
+ }
+ // validate that any fields present in the form match the Basic auth header
+ if form.ClientID != "" && form.ClientID != clientID {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "client_id in request body inconsistent with Authorization header",
+ })
+ return
+ }
+ form.ClientID = clientID
+ if form.ClientSecret != "" && form.ClientSecret != clientSecret {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "client_secret in request body inconsistent with Authorization header",
+ })
+ return
+ }
+ form.ClientSecret = clientSecret
+ }
+ }
+
+ serverKey := oauth2_provider.DefaultSigningKey
+ clientKey := serverKey
+ if serverKey.IsSymmetric() {
+ var err error
+ clientKey, err = oauth2_provider.CreateJWTSigningKey(serverKey.SigningMethod().Alg(), []byte(form.ClientSecret))
+ if err != nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "Error creating signing key",
+ })
+ return
+ }
+ }
+
+ switch form.GrantType {
+ case "refresh_token":
+ handleRefreshToken(ctx, form, serverKey, clientKey)
+ case "authorization_code":
+ handleAuthorizationCode(ctx, form, serverKey, clientKey)
+ default:
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnsupportedGrantType,
+ ErrorDescription: "Only refresh_token or authorization_code grant type is supported",
+ })
+ }
+}
+
+func handleRefreshToken(ctx *context.Context, form forms.AccessTokenForm, serverKey, clientKey oauth2_provider.JWTSigningKey) {
+ app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
+ if err != nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidClient,
+ ErrorDescription: fmt.Sprintf("cannot load client with client id: %q", form.ClientID),
+ })
+ return
+ }
+ // "The authorization server MUST ... require client authentication for confidential clients"
+ // https://datatracker.ietf.org/doc/html/rfc6749#section-6
+ if app.ConfidentialClient && !app.ValidateClientSecret([]byte(form.ClientSecret)) {
+ errorDescription := "invalid client secret"
+ if form.ClientSecret == "" {
+ errorDescription = "invalid empty client secret"
+ }
+ // "invalid_client ... Client authentication failed"
+ // https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidClient,
+ ErrorDescription: errorDescription,
+ })
+ return
+ }
+
+ token, err := oauth2_provider.ParseToken(form.RefreshToken, serverKey)
+ if err != nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnauthorizedClient,
+ ErrorDescription: "unable to parse refresh token",
+ })
+ return
+ }
+ // get grant before increasing counter
+ grant, err := auth.GetOAuth2GrantByID(ctx, token.GrantID)
+ if err != nil || grant == nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidGrant,
+ ErrorDescription: "grant does not exist",
+ })
+ return
+ }
+
+ // check if token got already used
+ if setting.OAuth2.InvalidateRefreshTokens && (grant.Counter != token.Counter || token.Counter == 0) {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnauthorizedClient,
+ ErrorDescription: "token was already used",
+ })
+ log.Warn("A client tried to use a refresh token for grant_id = %d was used twice!", grant.ID)
+ return
+ }
+ accessToken, tokenErr := oauth2_provider.NewAccessTokenResponse(ctx, grant, serverKey, clientKey)
+ if tokenErr != nil {
+ handleAccessTokenError(ctx, *tokenErr)
+ return
+ }
+ ctx.JSON(http.StatusOK, accessToken)
+}
+
+func handleAuthorizationCode(ctx *context.Context, form forms.AccessTokenForm, serverKey, clientKey oauth2_provider.JWTSigningKey) {
+ app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
+ if err != nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidClient,
+ ErrorDescription: fmt.Sprintf("cannot load client with client id: '%s'", form.ClientID),
+ })
+ return
+ }
+ if app.ConfidentialClient && !app.ValidateClientSecret([]byte(form.ClientSecret)) {
+ errorDescription := "invalid client secret"
+ if form.ClientSecret == "" {
+ errorDescription = "invalid empty client secret"
+ }
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnauthorizedClient,
+ ErrorDescription: errorDescription,
+ })
+ return
+ }
+ if form.RedirectURI != "" && !app.ContainsRedirectURI(form.RedirectURI) {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnauthorizedClient,
+ ErrorDescription: "unexpected redirect URI",
+ })
+ return
+ }
+ authorizationCode, err := auth.GetOAuth2AuthorizationByCode(ctx, form.Code)
+ if err != nil || authorizationCode == nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnauthorizedClient,
+ ErrorDescription: "client is not authorized",
+ })
+ return
+ }
+ // check if code verifier authorizes the client, PKCE support
+ if !authorizationCode.ValidateCodeChallenge(form.CodeVerifier) {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeUnauthorizedClient,
+ ErrorDescription: "failed PKCE code challenge",
+ })
+ return
+ }
+ // check if granted for this application
+ if authorizationCode.Grant.ApplicationID != app.ID {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidGrant,
+ ErrorDescription: "invalid grant",
+ })
+ return
+ }
+ // remove token from database to deny duplicate usage
+ if err := authorizationCode.Invalidate(ctx); err != nil {
+ handleAccessTokenError(ctx, oauth2_provider.AccessTokenError{
+ ErrorCode: oauth2_provider.AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot proceed your request",
+ })
+ }
+ resp, tokenErr := oauth2_provider.NewAccessTokenResponse(ctx, authorizationCode.Grant, serverKey, clientKey)
+ if tokenErr != nil {
+ handleAccessTokenError(ctx, *tokenErr)
+ return
+ }
+ // send successful response
+ ctx.JSON(http.StatusOK, resp)
+}
+
+func handleAccessTokenError(ctx *context.Context, acErr oauth2_provider.AccessTokenError) {
+ ctx.JSON(http.StatusBadRequest, acErr)
+}
+
+func handleServerError(ctx *context.Context, state, redirectURI string) {
+ handleAuthorizeError(ctx, AuthorizeError{
+ ErrorCode: ErrorCodeServerError,
+ ErrorDescription: "A server error occurred",
+ State: state,
+ }, redirectURI)
+}
+
+func handleAuthorizeError(ctx *context.Context, authErr AuthorizeError, redirectURI string) {
+ if redirectURI == "" {
+ log.Warn("Authorization failed: %v", authErr.ErrorDescription)
+ ctx.Data["Error"] = authErr
+ ctx.HTML(http.StatusBadRequest, tplGrantError)
+ return
+ }
+ redirect, err := url.Parse(redirectURI)
+ if err != nil {
+ ctx.ServerError("url.Parse", err)
+ return
+ }
+ q := redirect.Query()
+ q.Set("error", string(authErr.ErrorCode))
+ q.Set("error_description", authErr.ErrorDescription)
+ q.Set("state", authErr.State)
+ redirect.RawQuery = q.Encode()
+ ctx.Redirect(redirect.String(), http.StatusSeeOther)
+}
diff --git a/routers/web/auth/oauth_test.go b/routers/web/auth/oauth_test.go
index 4339d9d1ebae8..78af97fa9c669 100644
--- a/routers/web/auth/oauth_test.go
+++ b/routers/web/auth/oauth_test.go
@@ -11,22 +11,22 @@ import (
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/services/auth/source/oauth2"
+ "code.gitea.io/gitea/services/oauth2_provider"
"github.com/golang-jwt/jwt/v5"
"github.com/stretchr/testify/assert"
)
-func createAndParseToken(t *testing.T, grant *auth.OAuth2Grant) *oauth2.OIDCToken {
- signingKey, err := oauth2.CreateJWTSigningKey("HS256", make([]byte, 32))
+func createAndParseToken(t *testing.T, grant *auth.OAuth2Grant) *oauth2_provider.OIDCToken {
+ signingKey, err := oauth2_provider.CreateJWTSigningKey("HS256", make([]byte, 32))
assert.NoError(t, err)
assert.NotNil(t, signingKey)
- response, terr := newAccessTokenResponse(db.DefaultContext, grant, signingKey, signingKey)
+ response, terr := oauth2_provider.NewAccessTokenResponse(db.DefaultContext, grant, signingKey, signingKey)
assert.Nil(t, terr)
assert.NotNil(t, response)
- parsedToken, err := jwt.ParseWithClaims(response.IDToken, &oauth2.OIDCToken{}, func(token *jwt.Token) (any, error) {
+ parsedToken, err := jwt.ParseWithClaims(response.IDToken, &oauth2_provider.OIDCToken{}, func(token *jwt.Token) (any, error) {
assert.NotNil(t, token.Method)
assert.Equal(t, signingKey.SigningMethod().Alg(), token.Method.Alg())
return signingKey.VerifyKey(), nil
@@ -34,7 +34,7 @@ func createAndParseToken(t *testing.T, grant *auth.OAuth2Grant) *oauth2.OIDCToke
assert.NoError(t, err)
assert.True(t, parsedToken.Valid)
- oidcToken, ok := parsedToken.Claims.(*oauth2.OIDCToken)
+ oidcToken, ok := parsedToken.Claims.(*oauth2_provider.OIDCToken)
assert.True(t, ok)
assert.NotNil(t, oidcToken)
diff --git a/routers/web/auth/password.go b/routers/web/auth/password.go
index 0e88fe68f927a..334d864c6a7ff 100644
--- a/routers/web/auth/password.go
+++ b/routers/web/auth/password.go
@@ -212,7 +212,7 @@ func ResetPasswdPost(ctx *context.Context) {
case errors.Is(err, password.ErrComplexity):
ctx.RenderWithErr(password.BuildComplexityError(ctx.Locale), tplResetPassword, nil)
case errors.Is(err, password.ErrIsPwned):
- ctx.RenderWithErr(ctx.Tr("auth.password_pwned"), tplResetPassword, nil)
+ ctx.RenderWithErr(ctx.Tr("auth.password_pwned", "https://haveibeenpwned.com/Passwords"), tplResetPassword, nil)
case password.IsErrIsPwnedRequest(err):
ctx.RenderWithErr(ctx.Tr("auth.password_pwned_err"), tplResetPassword, nil)
default:
@@ -295,7 +295,7 @@ func MustChangePasswordPost(ctx *context.Context) {
ctx.RenderWithErr(password.BuildComplexityError(ctx.Locale), tplMustChangePassword, &form)
case errors.Is(err, password.ErrIsPwned):
ctx.Data["Err_Password"] = true
- ctx.RenderWithErr(ctx.Tr("auth.password_pwned"), tplMustChangePassword, &form)
+ ctx.RenderWithErr(ctx.Tr("auth.password_pwned", "https://haveibeenpwned.com/Passwords"), tplMustChangePassword, &form)
case password.IsErrIsPwnedRequest(err):
ctx.Data["Err_Password"] = true
ctx.RenderWithErr(ctx.Tr("auth.password_pwned_err"), tplMustChangePassword, &form)
diff --git a/routers/web/explore/repo.go b/routers/web/explore/repo.go
index ab487dff5fcbc..62090e5bf4dba 100644
--- a/routers/web/explore/repo.go
+++ b/routers/web/explore/repo.go
@@ -6,7 +6,6 @@ package explore
import (
"fmt"
"net/http"
- "strings"
"code.gitea.io/gitea/models/db"
repo_model "code.gitea.io/gitea/models/repo"
@@ -58,7 +57,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
orderBy db.SearchOrderBy
)
- sortOrder := strings.ToLower(ctx.FormString("sort"))
+ sortOrder := ctx.FormString("sort")
if sortOrder == "" {
sortOrder = setting.UI.ExploreDefaultSort
}
diff --git a/routers/web/org/home.go b/routers/web/org/home.go
index 77d49f5b78fd0..069bd549c1a2f 100644
--- a/routers/web/org/home.go
+++ b/routers/web/org/home.go
@@ -13,7 +13,6 @@ import (
"code.gitea.io/gitea/models/organization"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/modules/base"
- "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown"
@@ -42,38 +41,26 @@ func Home(ctx *context.Context) {
return
}
+ home(ctx, false)
+}
+
+func Repositories(ctx *context.Context) {
+ home(ctx, true)
+}
+
+func home(ctx *context.Context, viewRepositories bool) {
org := ctx.Org.Organization
ctx.Data["PageIsUserProfile"] = true
ctx.Data["Title"] = org.DisplayName()
var orderBy db.SearchOrderBy
- ctx.Data["SortType"] = ctx.FormString("sort")
- switch ctx.FormString("sort") {
- case "newest":
- orderBy = db.SearchOrderByNewest
- case "oldest":
- orderBy = db.SearchOrderByOldest
- case "recentupdate":
- orderBy = db.SearchOrderByRecentUpdated
- case "leastupdate":
- orderBy = db.SearchOrderByLeastUpdated
- case "reversealphabetically":
- orderBy = db.SearchOrderByAlphabeticallyReverse
- case "alphabetically":
- orderBy = db.SearchOrderByAlphabetically
- case "moststars":
- orderBy = db.SearchOrderByStarsReverse
- case "feweststars":
- orderBy = db.SearchOrderByStars
- case "mostforks":
- orderBy = db.SearchOrderByForksReverse
- case "fewestforks":
- orderBy = db.SearchOrderByForks
- default:
- ctx.Data["SortType"] = "recentupdate"
- orderBy = db.SearchOrderByRecentUpdated
+ sortOrder := ctx.FormString("sort")
+ if _, ok := repo_model.OrderByFlatMap[sortOrder]; !ok {
+ sortOrder = setting.UI.ExploreDefaultSort // TODO: add new default sort order for org home?
}
+ ctx.Data["SortType"] = sortOrder
+ orderBy = repo_model.OrderByFlatMap[sortOrder]
keyword := ctx.FormTrim("q")
ctx.Data["Keyword"] = keyword
@@ -101,10 +88,34 @@ func Home(ctx *context.Context) {
private := ctx.FormOptionalBool("private")
ctx.Data["IsPrivate"] = private
+ err := shared_user.LoadHeaderCount(ctx)
+ if err != nil {
+ ctx.ServerError("LoadHeaderCount", err)
+ return
+ }
+
+ opts := &organization.FindOrgMembersOpts{
+ OrgID: org.ID,
+ PublicOnly: ctx.Org.PublicMemberOnly,
+ ListOptions: db.ListOptions{Page: 1, PageSize: 25},
+ }
+ members, _, err := organization.FindOrgMembers(ctx, opts)
+ if err != nil {
+ ctx.ServerError("FindOrgMembers", err)
+ return
+ }
+ ctx.Data["Members"] = members
+ ctx.Data["Teams"] = ctx.Org.Teams
+ ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
+ ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
+
+ if !prepareOrgProfileReadme(ctx, viewRepositories) {
+ ctx.Data["PageIsViewRepositories"] = true
+ }
+
var (
repos []*repo_model.Repository
count int64
- err error
)
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
ListOptions: db.ListOptions{
@@ -129,29 +140,8 @@ func Home(ctx *context.Context) {
return
}
- opts := &organization.FindOrgMembersOpts{
- OrgID: org.ID,
- PublicOnly: ctx.Org.PublicMemberOnly,
- ListOptions: db.ListOptions{Page: 1, PageSize: 25},
- }
- members, _, err := organization.FindOrgMembers(ctx, opts)
- if err != nil {
- ctx.ServerError("FindOrgMembers", err)
- return
- }
-
ctx.Data["Repos"] = repos
ctx.Data["Total"] = count
- ctx.Data["Members"] = members
- ctx.Data["Teams"] = ctx.Org.Teams
- ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
- ctx.Data["PageIsViewRepositories"] = true
-
- err = shared_user.LoadHeaderCount(ctx)
- if err != nil {
- ctx.ServerError("LoadHeaderCount", err)
- return
- }
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
pager.SetDefaultParams(ctx)
@@ -173,18 +163,16 @@ func Home(ctx *context.Context) {
}
ctx.Data["Page"] = pager
- ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
-
- profileDbRepo, profileGitRepo, profileReadmeBlob, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
- defer profileClose()
- prepareOrgProfileReadme(ctx, profileGitRepo, profileDbRepo, profileReadmeBlob)
-
ctx.HTML(http.StatusOK, tplOrgHome)
}
-func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repository, profileDbRepo *repo_model.Repository, profileReadme *git.Blob) {
- if profileGitRepo == nil || profileReadme == nil {
- return
+func prepareOrgProfileReadme(ctx *context.Context, viewRepositories bool) bool {
+ profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
+ defer profileClose()
+ ctx.Data["HasProfileReadme"] = profileReadme != nil
+
+ if profileGitRepo == nil || profileReadme == nil || viewRepositories {
+ return false
}
if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil {
@@ -206,4 +194,7 @@ func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repositor
ctx.Data["ProfileReadme"] = profileContent
}
}
+
+ ctx.Data["PageIsViewOverview"] = true
+ return true
}
diff --git a/routers/web/org/members.go b/routers/web/org/members.go
index 58d0b9b8c4048..8ff75b0651112 100644
--- a/routers/web/org/members.go
+++ b/routers/web/org/members.go
@@ -54,9 +54,9 @@ func Members(ctx *context.Context) {
return
}
- err = shared_user.LoadHeaderCount(ctx)
+ err = shared_user.RenderOrgHeader(ctx)
if err != nil {
- ctx.ServerError("LoadHeaderCount", err)
+ ctx.ServerError("RenderOrgHeader", err)
return
}
diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go
index 66760d31db713..2a5434b4147f6 100644
--- a/routers/web/org/projects.go
+++ b/routers/web/org/projects.go
@@ -11,6 +11,7 @@ import (
"code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues"
+ org_model "code.gitea.io/gitea/models/organization"
project_model "code.gitea.io/gitea/models/project"
attachment_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
@@ -333,7 +334,29 @@ func ViewProject(ctx *context.Context) {
return
}
- issuesMap, err := issues_model.LoadIssuesFromColumnList(ctx, columns)
+ var labelIDs []int64
+ // 1,-2 means including label 1 and excluding label 2
+ // 0 means issues with no label
+ // blank means labels will not be filtered for issues
+ selectLabels := ctx.FormString("labels")
+ if selectLabels == "" {
+ ctx.Data["AllLabels"] = true
+ } else if selectLabels == "0" {
+ ctx.Data["NoLabel"] = true
+ }
+ if len(selectLabels) > 0 {
+ labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
+ if err != nil {
+ ctx.Flash.Error(ctx.Tr("invalid_data", selectLabels), true)
+ }
+ }
+
+ assigneeID := ctx.FormInt64("assignee")
+
+ issuesMap, err := issues_model.LoadIssuesFromColumnList(ctx, columns, &issues_model.IssuesOptions{
+ LabelIDs: labelIDs,
+ AssigneeID: assigneeID,
+ })
if err != nil {
ctx.ServerError("LoadIssuesOfColumns", err)
return
@@ -372,6 +395,46 @@ func ViewProject(ctx *context.Context) {
}
}
+ // TODO: Add option to filter also by repository specific labels
+ labels, err := issues_model.GetLabelsByOrgID(ctx, project.OwnerID, "", db.ListOptions{})
+ if err != nil {
+ ctx.ServerError("GetLabelsByOrgID", err)
+ return
+ }
+
+ // Get the exclusive scope for every label ID
+ labelExclusiveScopes := make([]string, 0, len(labelIDs))
+ for _, labelID := range labelIDs {
+ foundExclusiveScope := false
+ for _, label := range labels {
+ if label.ID == labelID || label.ID == -labelID {
+ labelExclusiveScopes = append(labelExclusiveScopes, label.ExclusiveScope())
+ foundExclusiveScope = true
+ break
+ }
+ }
+ if !foundExclusiveScope {
+ labelExclusiveScopes = append(labelExclusiveScopes, "")
+ }
+ }
+
+ for _, l := range labels {
+ l.LoadSelectedLabelsAfterClick(labelIDs, labelExclusiveScopes)
+ }
+ ctx.Data["Labels"] = labels
+ ctx.Data["NumLabels"] = len(labels)
+
+ // Get assignees.
+ assigneeUsers, err := org_model.GetOrgAssignees(ctx, project.OwnerID)
+ if err != nil {
+ ctx.ServerError("GetRepoAssignees", err)
+ return
+ }
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
+
+ ctx.Data["SelectLabels"] = selectLabels
+ ctx.Data["AssigneeID"] = assigneeID
+
project.RenderedContent = templates.RenderMarkdownToHtml(ctx, project.Description)
ctx.Data["LinkedPRs"] = linkedPrsMap
ctx.Data["PageIsViewProjects"] = true
diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go
index aaac1177ae1f1..31b9601ce79d7 100644
--- a/routers/web/org/teams.go
+++ b/routers/web/org/teams.go
@@ -59,9 +59,9 @@ func Teams(ctx *context.Context) {
}
ctx.Data["Teams"] = ctx.Org.Teams
- err := shared_user.LoadHeaderCount(ctx)
+ err := shared_user.RenderOrgHeader(ctx)
if err != nil {
- ctx.ServerError("LoadHeaderCount", err)
+ ctx.ServerError("RenderOrgHeader", err)
return
}
diff --git a/routers/web/repo/actions/actions.go b/routers/web/repo/actions/actions.go
index 63cf3e948a888..f5fb056494d7f 100644
--- a/routers/web/repo/actions/actions.go
+++ b/routers/web/repo/actions/actions.go
@@ -23,7 +23,7 @@ import (
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
- "code.gitea.io/gitea/routers/web/repo"
+ shared_user "code.gitea.io/gitea/routers/web/shared/user"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/convert"
@@ -252,7 +252,7 @@ func List(ctx *context.Context) {
ctx.ServerError("GetActors", err)
return
}
- ctx.Data["Actors"] = repo.MakeSelfOnTop(ctx.Doer, actors)
+ ctx.Data["Actors"] = shared_user.MakeSelfOnTop(ctx.Doer, actors)
ctx.Data["StatusInfoList"] = actions_model.GetStatusInfoList(ctx)
diff --git a/routers/web/repo/branch.go b/routers/web/repo/branch.go
index 4897a5f4fcdf6..4a62237838a4a 100644
--- a/routers/web/repo/branch.go
+++ b/routers/web/repo/branch.go
@@ -89,7 +89,7 @@ func Branches(ctx *context.Context) {
pager := context.NewPagination(int(branchesCount), pageSize, page, 5)
pager.SetDefaultParams(ctx)
ctx.Data["Page"] = pager
-
+ ctx.Data["LicenseFileName"] = repo_service.LicenseFileName
ctx.HTML(http.StatusOK, tplBranch)
}
diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go
index c91d5fad0565e..0e4e10bf50944 100644
--- a/routers/web/repo/commit.go
+++ b/routers/web/repo/commit.go
@@ -29,7 +29,7 @@ import (
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/gitdiff"
- git_service "code.gitea.io/gitea/services/repository"
+ repo_service "code.gitea.io/gitea/services/repository"
)
const (
@@ -90,7 +90,7 @@ func Commits(ctx *context.Context) {
commitsTagsMap, err := repo_model.FindTagsByCommitIDs(ctx, ctx.Repo.Repository.ID, commitIDs...)
if err != nil {
log.Error("FindTagsByCommitIDs: %v", err)
- ctx.Flash.Error(ctx.Tr("repo.commit.load_tags_failed"))
+ ctx.Flash.Error(ctx.Tr("internal_error_skipped", "FindTagsByCommitIDs"))
} else {
ctx.Data["CommitsTagsMap"] = commitsTagsMap
}
@@ -101,7 +101,7 @@ func Commits(ctx *context.Context) {
pager := context.NewPagination(int(commitsCount), pageSize, page, 5)
pager.SetDefaultParams(ctx)
ctx.Data["Page"] = pager
-
+ ctx.Data["LicenseFileName"] = repo_service.LicenseFileName
ctx.HTML(http.StatusOK, tplCommits)
}
@@ -218,6 +218,8 @@ func SearchCommits(ctx *context.Context) {
}
ctx.Data["Username"] = ctx.Repo.Owner.Name
ctx.Data["Reponame"] = ctx.Repo.Repository.Name
+ ctx.Data["RefName"] = ctx.Repo.RefName
+ ctx.Data["LicenseFileName"] = repo_service.LicenseFileName
ctx.HTML(http.StatusOK, tplCommits)
}
@@ -263,12 +265,12 @@ func FileHistory(ctx *context.Context) {
pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5)
pager.SetDefaultParams(ctx)
ctx.Data["Page"] = pager
-
+ ctx.Data["LicenseFileName"] = repo_service.LicenseFileName
ctx.HTML(http.StatusOK, tplCommits)
}
func LoadBranchesAndTags(ctx *context.Context) {
- response, err := git_service.LoadBranchesAndTags(ctx, ctx.Repo, ctx.PathParam("sha"))
+ response, err := repo_service.LoadBranchesAndTags(ctx, ctx.Repo, ctx.PathParam("sha"))
if err == nil {
ctx.JSON(http.StatusOK, response)
return
diff --git a/routers/web/repo/editor.go b/routers/web/repo/editor.go
index 4ff86b5a6647b..9396115b0d249 100644
--- a/routers/web/repo/editor.go
+++ b/routers/web/repo/editor.go
@@ -317,7 +317,7 @@ func editFilePost(ctx *context.Context, form forms.EditRepoFileForm, isNewFile b
case git.EntryModeBlob:
ctx.RenderWithErr(ctx.Tr("repo.editor.directory_is_a_file", fileErr.Path), tplEditFile, &form)
default:
- ctx.Error(http.StatusInternalServerError, err.Error())
+ ctx.RenderWithErr(ctx.Tr("repo.editor.filename_is_invalid", fileErr.Path), tplEditFile, &form)
}
} else {
ctx.Error(http.StatusInternalServerError, err.Error())
diff --git a/routers/web/repo/githttp.go b/routers/web/repo/githttp.go
index bb85df1a868b8..ee1ec1fd0c763 100644
--- a/routers/web/repo/githttp.go
+++ b/routers/web/repo/githttp.go
@@ -395,7 +395,8 @@ func (h *serviceHandler) sendFile(ctx *context.Context, contentType, file string
ctx.Resp.Header().Set("Content-Type", contentType)
ctx.Resp.Header().Set("Content-Length", fmt.Sprintf("%d", fi.Size()))
- ctx.Resp.Header().Set("Last-Modified", fi.ModTime().Format(http.TimeFormat))
+ // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
+ ctx.Resp.Header().Set("Last-Modified", fi.ModTime().UTC().Format(http.TimeFormat))
http.ServeFile(ctx.Resp, ctx.Req, reqFile)
}
diff --git a/routers/web/repo/helper.go b/routers/web/repo/helper.go
index 5e1e116018eb5..ed6216fa5ce2a 100644
--- a/routers/web/repo/helper.go
+++ b/routers/web/repo/helper.go
@@ -5,25 +5,11 @@ package repo
import (
"net/url"
- "sort"
- "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/services/context"
)
-func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
- if doer != nil {
- sort.Slice(users, func(i, j int) bool {
- if users[i].ID == users[j].ID {
- return false
- }
- return users[i].ID == doer.ID // if users[i] is self, put it before others, so less=true
- })
- }
- return users
-}
-
func HandleGitError(ctx *context.Context, msg string, err error) {
if git.IsErrNotExist(err) {
refType := ""
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index e4315a145ff29..79d0d39b8cee7 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -50,6 +50,7 @@ import (
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/utils"
+ shared_user "code.gitea.io/gitea/routers/web/shared/user"
asymkey_service "code.gitea.io/gitea/services/asymkey"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/context/upload"
@@ -361,7 +362,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
ctx.ServerError("GetRepoAssignees", err)
return
}
- ctx.Data["Assignees"] = MakeSelfOnTop(ctx.Doer, assigneeUsers)
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
handleTeamMentions(ctx)
if ctx.Written() {
@@ -467,6 +468,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
ctx.Data["AssigneeID"] = assigneeID
ctx.Data["PosterID"] = posterID
ctx.Data["Keyword"] = keyword
+ ctx.Data["IsShowClosed"] = isShowClosed
switch {
case isShowClosed.Value():
ctx.Data["State"] = "closed"
@@ -581,7 +583,7 @@ func RetrieveRepoMilestonesAndAssignees(ctx *context.Context, repo *repo_model.R
ctx.ServerError("GetRepoAssignees", err)
return
}
- ctx.Data["Assignees"] = MakeSelfOnTop(ctx.Doer, assigneeUsers)
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
handleTeamMentions(ctx)
}
@@ -1946,6 +1948,7 @@ func ViewIssue(ctx *context.Context) {
ctx.Data["ChangedProtectedFiles"] = pull.ChangedProtectedFiles
ctx.Data["IsBlockedByChangedProtectedFiles"] = len(pull.ChangedProtectedFiles) != 0
ctx.Data["ChangedProtectedFilesNum"] = len(pull.ChangedProtectedFiles)
+ ctx.Data["RequireApprovalsWhitelist"] = pb.EnableApprovalsWhitelist
}
ctx.Data["WillSign"] = false
if ctx.Doer != nil {
@@ -3827,7 +3830,7 @@ func issuePosters(ctx *context.Context, isPullList bool) {
}
}
- posters = MakeSelfOnTop(ctx.Doer, posters)
+ posters = shared_user.MakeSelfOnTop(ctx.Doer, posters)
resp := &userSearchResponse{}
resp.Results = make([]*userSearchInfo, len(posters))
diff --git a/routers/web/repo/migrate.go b/routers/web/repo/migrate.go
index 97b0c425ea3be..3eaf05f38335c 100644
--- a/routers/web/repo/migrate.go
+++ b/routers/web/repo/migrate.go
@@ -15,6 +15,7 @@ import (
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/base"
+ "code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/lfs"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
@@ -231,6 +232,10 @@ func MigratePost(ctx *context.Context) {
opts.PullRequests = false
opts.Releases = false
}
+ if form.Service == structs.CodeCommitService {
+ opts.AWSAccessKeyID = form.AWSAccessKeyID
+ opts.AWSSecretAccessKey = form.AWSSecretAccessKey
+ }
err = repo_model.CheckCreateRepository(ctx, ctx.Doer, ctxUser, opts.RepoName, false)
if err != nil {
@@ -284,3 +289,40 @@ func MigrateCancelPost(ctx *context.Context) {
}
ctx.Redirect(ctx.Repo.Repository.Link())
}
+
+// MigrateStatus returns migrate task's status
+func MigrateStatus(ctx *context.Context) {
+ task, err := admin_model.GetMigratingTask(ctx, ctx.Repo.Repository.ID)
+ if err != nil {
+ if admin_model.IsErrTaskDoesNotExist(err) {
+ ctx.JSON(http.StatusNotFound, map[string]any{
+ "err": "task does not exist or you do not have access to this task",
+ })
+ return
+ }
+ log.Error("GetMigratingTask: %v", err)
+ ctx.JSON(http.StatusInternalServerError, map[string]any{
+ "err": http.StatusText(http.StatusInternalServerError),
+ })
+ return
+ }
+
+ message := task.Message
+
+ if task.Message != "" && task.Message[0] == '{' {
+ // assume message is actually a translatable string
+ var translatableMessage admin_model.TranslatableMessage
+ if err := json.Unmarshal([]byte(message), &translatableMessage); err != nil {
+ translatableMessage = admin_model.TranslatableMessage{
+ Format: "migrate.migrating_failed.error",
+ Args: []any{task.Message},
+ }
+ }
+ message = ctx.Locale.TrString(translatableMessage.Format, translatableMessage.Args...)
+ }
+
+ ctx.JSON(http.StatusOK, map[string]any{
+ "status": task.Status,
+ "message": message,
+ })
+}
diff --git a/routers/web/repo/projects.go b/routers/web/repo/projects.go
index aac8997d6278a..664ea7eb76d79 100644
--- a/routers/web/repo/projects.go
+++ b/routers/web/repo/projects.go
@@ -23,6 +23,7 @@ import (
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
+ shared_user "code.gitea.io/gitea/routers/web/shared/user"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/forms"
project_service "code.gitea.io/gitea/services/projects"
@@ -313,7 +314,29 @@ func ViewProject(ctx *context.Context) {
return
}
- issuesMap, err := issues_model.LoadIssuesFromColumnList(ctx, columns)
+ var labelIDs []int64
+ // 1,-2 means including label 1 and excluding label 2
+ // 0 means issues with no label
+ // blank means labels will not be filtered for issues
+ selectLabels := ctx.FormString("labels")
+ if selectLabels == "" {
+ ctx.Data["AllLabels"] = true
+ } else if selectLabels == "0" {
+ ctx.Data["NoLabel"] = true
+ }
+ if len(selectLabels) > 0 {
+ labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
+ if err != nil {
+ ctx.Flash.Error(ctx.Tr("invalid_data", selectLabels), true)
+ }
+ }
+
+ assigneeID := ctx.FormInt64("assignee")
+
+ issuesMap, err := issues_model.LoadIssuesFromColumnList(ctx, columns, &issues_model.IssuesOptions{
+ LabelIDs: labelIDs,
+ AssigneeID: assigneeID,
+ })
if err != nil {
ctx.ServerError("LoadIssuesOfColumns", err)
return
@@ -353,6 +376,55 @@ func ViewProject(ctx *context.Context) {
}
ctx.Data["LinkedPRs"] = linkedPrsMap
+ labels, err := issues_model.GetLabelsByRepoID(ctx, project.RepoID, "", db.ListOptions{})
+ if err != nil {
+ ctx.ServerError("GetLabelsByRepoID", err)
+ return
+ }
+
+ if ctx.Repo.Owner.IsOrganization() {
+ orgLabels, err := issues_model.GetLabelsByOrgID(ctx, ctx.Repo.Owner.ID, "", db.ListOptions{})
+ if err != nil {
+ ctx.ServerError("GetLabelsByOrgID", err)
+ return
+ }
+
+ labels = append(labels, orgLabels...)
+ }
+
+ // Get the exclusive scope for every label ID
+ labelExclusiveScopes := make([]string, 0, len(labelIDs))
+ for _, labelID := range labelIDs {
+ foundExclusiveScope := false
+ for _, label := range labels {
+ if label.ID == labelID || label.ID == -labelID {
+ labelExclusiveScopes = append(labelExclusiveScopes, label.ExclusiveScope())
+ foundExclusiveScope = true
+ break
+ }
+ }
+ if !foundExclusiveScope {
+ labelExclusiveScopes = append(labelExclusiveScopes, "")
+ }
+ }
+
+ for _, l := range labels {
+ l.LoadSelectedLabelsAfterClick(labelIDs, labelExclusiveScopes)
+ }
+ ctx.Data["Labels"] = labels
+ ctx.Data["NumLabels"] = len(labels)
+
+ // Get assignees.
+ assigneeUsers, err := repo_model.GetRepoAssignees(ctx, ctx.Repo.Repository)
+ if err != nil {
+ ctx.ServerError("GetRepoAssignees", err)
+ return
+ }
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
+
+ ctx.Data["SelectLabels"] = selectLabels
+ ctx.Data["AssigneeID"] = assigneeID
+
project.RenderedContent, err = markdown.RenderString(&markup.RenderContext{
Links: markup.Links{
Base: ctx.Repo.RepoLink,
diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go
index e001e872aa8af..ced0bbc15a00e 100644
--- a/routers/web/repo/pull.go
+++ b/routers/web/repo/pull.go
@@ -34,6 +34,7 @@ import (
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/utils"
+ shared_user "code.gitea.io/gitea/routers/web/shared/user"
asymkey_service "code.gitea.io/gitea/services/asymkey"
"code.gitea.io/gitea/services/automerge"
"code.gitea.io/gitea/services/context"
@@ -163,7 +164,19 @@ func setMergeTarget(ctx *context.Context, pull *issues_model.PullRequest) {
ctx.Data["HeadTarget"] = pull.MustHeadUserName(ctx) + "/" + pull.HeadRepo.Name + ":" + pull.HeadBranch
}
ctx.Data["BaseTarget"] = pull.BaseBranch
- ctx.Data["HeadBranchLink"] = pull.GetHeadBranchLink(ctx)
+ headBranchLink := ""
+ if pull.Flow == issues_model.PullRequestFlowGithub {
+ b, err := git_model.GetBranch(ctx, ctx.Repo.Repository.ID, pull.HeadBranch)
+ switch {
+ case err == nil:
+ if !b.IsDeleted {
+ headBranchLink = pull.GetHeadBranchLink(ctx)
+ }
+ case !git_model.IsErrBranchNotExist(err):
+ log.Error("GetBranch: %v", err)
+ }
+ }
+ ctx.Data["HeadBranchLink"] = headBranchLink
ctx.Data["BaseBranchLink"] = pull.GetBaseBranchLink(ctx)
}
@@ -825,7 +838,7 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
ctx.ServerError("GetRepoAssignees", err)
return
}
- ctx.Data["Assignees"] = MakeSelfOnTop(ctx.Doer, assigneeUsers)
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
handleTeamMentions(ctx)
if ctx.Written() {
@@ -1625,7 +1638,7 @@ func SetAllowEdits(ctx *context.Context) {
}
if err := pull_service.SetAllowEdits(ctx, ctx.Doer, pr, form.AllowMaintainerEdit); err != nil {
- if errors.Is(pull_service.ErrUserHasNoPermissionForAction, err) {
+ if errors.Is(err, pull_service.ErrUserHasNoPermissionForAction) {
ctx.Error(http.StatusForbidden)
return
}
diff --git a/routers/web/repo/release.go b/routers/web/repo/release.go
index 85c7828f2e404..566a82316f8e0 100644
--- a/routers/web/repo/release.go
+++ b/routers/web/repo/release.go
@@ -26,6 +26,7 @@ import (
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/web/feed"
+ shared_user "code.gitea.io/gitea/routers/web/shared/user"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/context/upload"
"code.gitea.io/gitea/services/forms"
@@ -213,6 +214,8 @@ func TagsList(ctx *context.Context) {
ctx.Data["HideBranchesInDropdown"] = true
ctx.Data["CanCreateRelease"] = ctx.Repo.CanWrite(unit.TypeReleases) && !ctx.Repo.Repository.IsArchived
+ namePattern := ctx.FormTrim("q")
+
listOptions := db.ListOptions{
Page: ctx.FormInt("page"),
PageSize: ctx.FormInt("limit"),
@@ -232,6 +235,7 @@ func TagsList(ctx *context.Context) {
IncludeTags: true,
HasSha1: optional.Some(true),
RepoID: ctx.Repo.Repository.ID,
+ NamePattern: optional.Some(namePattern),
}
releases, err := db.Find[repo_model.Release](ctx, opts)
@@ -240,14 +244,21 @@ func TagsList(ctx *context.Context) {
return
}
+ count, err := db.Count[repo_model.Release](ctx, opts)
+ if err != nil {
+ ctx.ServerError("GetReleasesByRepoID", err)
+ return
+ }
+
+ ctx.Data["Keyword"] = namePattern
ctx.Data["Releases"] = releases
+ ctx.Data["TagCount"] = count
- numTags := ctx.Data["NumTags"].(int64)
- pager := context.NewPagination(int(numTags), opts.PageSize, opts.Page, 5)
+ pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
pager.SetDefaultParams(ctx)
ctx.Data["Page"] = pager
-
ctx.Data["PageIsViewCode"] = !ctx.Repo.Repository.UnitEnabled(ctx, unit.TypeReleases)
+
ctx.HTML(http.StatusOK, tplTagsList)
}
@@ -278,7 +289,6 @@ func releasesOrTagsFeed(ctx *context.Context, isReleasesOnly bool, formatType st
// SingleRelease renders a single release's page
func SingleRelease(ctx *context.Context) {
ctx.Data["PageIsReleaseList"] = true
- ctx.Data["DefaultBranch"] = ctx.Repo.Repository.DefaultBranch
writeAccess := ctx.Repo.CanWrite(unit.TypeReleases)
ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived
@@ -370,7 +380,7 @@ func NewRelease(ctx *context.Context) {
ctx.ServerError("GetRepoAssignees", err)
return
}
- ctx.Data["Assignees"] = MakeSelfOnTop(ctx.Doer, assigneeUsers)
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
upload.AddUploadContext(ctx, "release")
@@ -559,7 +569,7 @@ func EditRelease(ctx *context.Context) {
ctx.ServerError("GetRepoAssignees", err)
return
}
- ctx.Data["Assignees"] = MakeSelfOnTop(ctx.Doer, assigneeUsers)
+ ctx.Data["Assignees"] = shared_user.MakeSelfOnTop(ctx.Doer, assigneeUsers)
ctx.HTML(http.StatusOK, tplReleaseNew)
}
diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go
index 5e673864578ce..9769117609485 100644
--- a/routers/web/repo/view.go
+++ b/routers/web/repo/view.go
@@ -8,6 +8,7 @@ import (
"bytes"
gocontext "context"
"encoding/base64"
+ "errors"
"fmt"
"html/template"
"image"
@@ -50,6 +51,7 @@ import (
"code.gitea.io/gitea/routers/web/feed"
"code.gitea.io/gitea/services/context"
issue_service "code.gitea.io/gitea/services/issue"
+ repo_service "code.gitea.io/gitea/services/repository"
files_service "code.gitea.io/gitea/services/repository/files"
"github.com/nektos/act/pkg/model"
@@ -739,7 +741,7 @@ func checkHomeCodeViewable(ctx *context.Context) {
}
}
- ctx.NotFound("Home", fmt.Errorf(ctx.Locale.TrString("units.error.no_unit_allowed_repo")))
+ ctx.NotFound("Home", errors.New(ctx.Locale.TrString("units.error.no_unit_allowed_repo")))
}
func checkCitationFile(ctx *context.Context, entry *git.TreeEntry) {
@@ -1076,6 +1078,7 @@ func renderHomeCode(ctx *context.Context) {
ctx.Data["TreeLink"] = treeLink
ctx.Data["TreeNames"] = treeNames
ctx.Data["BranchLink"] = branchLink
+ ctx.Data["LicenseFileName"] = repo_service.LicenseFileName
ctx.HTML(http.StatusOK, tplRepoHome)
}
diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go
index 7531e1ba26824..ef111cff806fc 100644
--- a/routers/web/shared/user/header.go
+++ b/routers/web/shared/user/header.go
@@ -162,3 +162,15 @@ func LoadHeaderCount(ctx *context.Context) error {
return nil
}
+
+func RenderOrgHeader(ctx *context.Context) error {
+ if err := LoadHeaderCount(ctx); err != nil {
+ return err
+ }
+
+ _, _, profileReadmeBlob, profileClose := FindUserProfileReadme(ctx, ctx.Doer)
+ defer profileClose()
+ ctx.Data["HasProfileReadme"] = profileReadmeBlob != nil
+
+ return nil
+}
diff --git a/routers/web/shared/user/helper.go b/routers/web/shared/user/helper.go
new file mode 100644
index 0000000000000..6186b9b9ffba6
--- /dev/null
+++ b/routers/web/shared/user/helper.go
@@ -0,0 +1,22 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package user
+
+import (
+ "sort"
+
+ "code.gitea.io/gitea/models/user"
+)
+
+func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
+ if doer != nil {
+ sort.Slice(users, func(i, j int) bool {
+ if users[i].ID == users[j].ID {
+ return false
+ }
+ return users[i].ID == doer.ID // if users[i] is self, put it before others, so less=true
+ })
+ }
+ return users
+}
diff --git a/routers/web/repo/helper_test.go b/routers/web/shared/user/helper_test.go
similarity index 97%
rename from routers/web/repo/helper_test.go
rename to routers/web/shared/user/helper_test.go
index 978758e77fd78..ccdf536c13704 100644
--- a/routers/web/repo/helper_test.go
+++ b/routers/web/shared/user/helper_test.go
@@ -1,7 +1,7 @@
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
-package repo
+package user
import (
"testing"
diff --git a/routers/web/user/home.go b/routers/web/user/home.go
index 2ecc2cc8d13d5..2b16142f6d591 100644
--- a/routers/web/user/home.go
+++ b/routers/web/user/home.go
@@ -730,7 +730,7 @@ func UsernameSubRoute(ctx *context.Context) {
// check view permissions
if !user_model.IsUserVisibleToViewer(ctx, ctx.ContextUser, ctx.Doer) {
- ctx.NotFound("user", fmt.Errorf(ctx.ContextUser.Name))
+ ctx.NotFound("user", fmt.Errorf("%s", ctx.ContextUser.Name))
return false
}
return true
diff --git a/routers/web/user/profile.go b/routers/web/user/profile.go
index 3f91233ee6ee6..d0abf603c31ba 100644
--- a/routers/web/user/profile.go
+++ b/routers/web/user/profile.go
@@ -54,7 +54,7 @@ func OwnerProfile(ctx *context.Context) {
func userProfile(ctx *context.Context) {
// check view permissions
if !user_model.IsUserVisibleToViewer(ctx, ctx.ContextUser, ctx.Doer) {
- ctx.NotFound("user", fmt.Errorf(ctx.ContextUser.Name))
+ ctx.NotFound("user", fmt.Errorf("%s", ctx.ContextUser.Name))
return
}
@@ -110,32 +110,12 @@ func prepareUserProfileTabData(ctx *context.Context, showPrivate bool, profileDb
orderBy db.SearchOrderBy
)
- ctx.Data["SortType"] = ctx.FormString("sort")
- switch ctx.FormString("sort") {
- case "newest":
- orderBy = db.SearchOrderByNewest
- case "oldest":
- orderBy = db.SearchOrderByOldest
- case "recentupdate":
- orderBy = db.SearchOrderByRecentUpdated
- case "leastupdate":
- orderBy = db.SearchOrderByLeastUpdated
- case "reversealphabetically":
- orderBy = db.SearchOrderByAlphabeticallyReverse
- case "alphabetically":
- orderBy = db.SearchOrderByAlphabetically
- case "moststars":
- orderBy = db.SearchOrderByStarsReverse
- case "feweststars":
- orderBy = db.SearchOrderByStars
- case "mostforks":
- orderBy = db.SearchOrderByForksReverse
- case "fewestforks":
- orderBy = db.SearchOrderByForks
- default:
- ctx.Data["SortType"] = "recentupdate"
- orderBy = db.SearchOrderByRecentUpdated
+ sortOrder := ctx.FormString("sort")
+ if _, ok := repo_model.OrderByFlatMap[sortOrder]; !ok {
+ sortOrder = setting.UI.ExploreDefaultSort // TODO: add new default sort order for user home?
}
+ ctx.Data["SortType"] = sortOrder
+ orderBy = repo_model.OrderByFlatMap[sortOrder]
keyword := ctx.FormTrim("q")
ctx.Data["Keyword"] = keyword
diff --git a/routers/web/user/setting/account.go b/routers/web/user/setting/account.go
index 563f39f0c8ac9..7f2dece416971 100644
--- a/routers/web/user/setting/account.go
+++ b/routers/web/user/setting/account.go
@@ -85,7 +85,7 @@ func AccountPost(ctx *context.Context) {
case errors.Is(err, password.ErrComplexity):
ctx.Flash.Error(password.BuildComplexityError(ctx.Locale))
case errors.Is(err, password.ErrIsPwned):
- ctx.Flash.Error(ctx.Tr("auth.password_pwned"))
+ ctx.Flash.Error(ctx.Tr("auth.password_pwned", "https://haveibeenpwned.com/Passwords"))
case password.IsErrIsPwnedRequest(err):
ctx.Flash.Error(ctx.Tr("auth.password_pwned_err"))
default:
diff --git a/routers/web/user/setting/profile.go b/routers/web/user/setting/profile.go
index 554f6cd6ce3f9..3b051c9b5f4b7 100644
--- a/routers/web/user/setting/profile.go
+++ b/routers/web/user/setting/profile.go
@@ -69,6 +69,11 @@ func ProfilePost(ctx *context.Context) {
form := web.GetForm(ctx).(*forms.UpdateProfileForm)
if form.Name != "" {
+ if user_model.IsFeatureDisabledWithLoginType(ctx.Doer, setting.UserFeatureChangeUsername) {
+ ctx.Flash.Error(ctx.Tr("user.form.change_username_disabled"))
+ ctx.Redirect(setting.AppSubURL + "/user/settings")
+ return
+ }
if err := user_service.RenameUser(ctx, ctx.Doer, form.Name); err != nil {
switch {
case user_model.IsErrUserIsNotLocal(err):
@@ -91,7 +96,6 @@ func ProfilePost(ctx *context.Context) {
}
opts := &user_service.UpdateOptions{
- FullName: optional.Some(form.FullName),
KeepEmailPrivate: optional.Some(form.KeepEmailPrivate),
Description: optional.Some(form.Description),
Website: optional.Some(form.Website),
@@ -99,6 +103,16 @@ func ProfilePost(ctx *context.Context) {
Visibility: optional.Some(form.Visibility),
KeepActivityPrivate: optional.Some(form.KeepActivityPrivate),
}
+
+ if form.FullName != "" {
+ if user_model.IsFeatureDisabledWithLoginType(ctx.Doer, setting.UserFeatureChangeFullName) {
+ ctx.Flash.Error(ctx.Tr("user.form.change_full_name_disabled"))
+ ctx.Redirect(setting.AppSubURL + "/user/settings")
+ return
+ }
+ opts.FullName = optional.Some(form.FullName)
+ }
+
if err := user_service.UpdateUser(ctx, ctx.Doer, opts); err != nil {
ctx.ServerError("UpdateUser", err)
return
diff --git a/routers/web/user/task.go b/routers/web/user/task.go
deleted file mode 100644
index 475ef16212f0b..0000000000000
--- a/routers/web/user/task.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2020 The Gitea Authors. All rights reserved.
-// SPDX-License-Identifier: MIT
-
-package user
-
-import (
- "net/http"
- "strconv"
-
- admin_model "code.gitea.io/gitea/models/admin"
- "code.gitea.io/gitea/modules/json"
- "code.gitea.io/gitea/services/context"
-)
-
-// TaskStatus returns task's status
-func TaskStatus(ctx *context.Context) {
- task, opts, err := admin_model.GetMigratingTaskByID(ctx, ctx.PathParamInt64("task"), ctx.Doer.ID)
- if err != nil {
- if admin_model.IsErrTaskDoesNotExist(err) {
- ctx.JSON(http.StatusNotFound, map[string]any{
- "error": "task `" + strconv.FormatInt(ctx.PathParamInt64("task"), 10) + "` does not exist",
- })
- return
- }
- ctx.JSON(http.StatusInternalServerError, map[string]any{
- "err": err,
- })
- return
- }
-
- message := task.Message
-
- if task.Message != "" && task.Message[0] == '{' {
- // assume message is actually a translatable string
- var translatableMessage admin_model.TranslatableMessage
- if err := json.Unmarshal([]byte(message), &translatableMessage); err != nil {
- translatableMessage = admin_model.TranslatableMessage{
- Format: "migrate.migrating_failed.error",
- Args: []any{task.Message},
- }
- }
- message = ctx.Locale.TrString(translatableMessage.Format, translatableMessage.Args...)
- }
-
- ctx.JSON(http.StatusOK, map[string]any{
- "status": task.Status,
- "message": message,
- "repo-id": task.RepoID,
- "repo-name": opts.RepoName,
- "start": task.StartTime,
- "end": task.EndTime,
- })
-}
diff --git a/routers/web/web.go b/routers/web/web.go
index 4f30e065fb727..c8228e89296dd 100644
--- a/routers/web/web.go
+++ b/routers/web/web.go
@@ -129,6 +129,8 @@ func webAuth(authMethod auth_service.Method) func(*context.Context) {
// ensure the session uid is deleted
_ = ctx.Session.Delete("uid")
}
+
+ ctx.Csrf.PrepareForSessionUser(ctx)
}
}
@@ -667,7 +669,6 @@ func registerRoutes(m *web.Router) {
m.Get("/forgot_password", auth.ForgotPasswd)
m.Post("/forgot_password", auth.ForgotPasswdPost)
m.Post("/logout", auth.SignOut)
- m.Get("/task/{task}", reqSignIn, user.TaskStatus)
m.Get("/stopwatches", reqSignIn, user.GetStopwatches)
m.Get("/search", ignExploreSignIn, user.Search)
m.Group("/oauth2", func() {
@@ -883,10 +884,15 @@ func registerRoutes(m *web.Router) {
m.Post("/teams/{team}/action/repo/{action}", org.TeamsRepoAction)
}, context.OrgAssignment(true, false, true))
+ // require admin permission
+ m.Group("/{org}", func() {
+ m.Get("/teams/-/search", org.SearchTeam)
+ }, context.OrgAssignment(true, false, false, true))
+
+ // require owner permission
m.Group("/{org}", func() {
m.Get("/teams/new", org.NewTeam)
m.Post("/teams/new", web.Bind(forms.CreateTeamForm{}), org.NewTeamPost)
- m.Get("/teams/-/search", org.SearchTeam)
m.Get("/teams/{team}/edit", org.EditTeam)
m.Post("/teams/{team}/edit", web.Bind(forms.CreateTeamForm{}), org.EditTeamPost)
m.Post("/teams/{team}/delete", org.DeleteTeam)
@@ -995,6 +1001,8 @@ func registerRoutes(m *web.Router) {
}, context.PackageAssignment(), reqPackageAccess(perm.AccessModeRead))
}
+ m.Get("/repositories", org.Repositories)
+
m.Group("/projects", func() {
m.Group("", func() {
m.Get("", org.Projects)
@@ -1033,6 +1041,13 @@ func registerRoutes(m *web.Router) {
}, ignSignIn, context.UserAssignmentWeb(), context.OrgAssignment())
// end "/{username}/-": packages, projects, code
+ m.Group("/{username}/{reponame}/-", func() {
+ m.Group("/migrate", func() {
+ m.Get("/status", repo.MigrateStatus)
+ })
+ }, ignSignIn, context.RepoAssignment, reqRepoCodeReader)
+ // end "/{username}/{reponame}/-": migrate
+
m.Group("/{username}/{reponame}/settings", func() {
m.Group("", func() {
m.Combo("").Get(repo_setting.Settings).
@@ -1060,9 +1075,7 @@ func registerRoutes(m *web.Router) {
m.Combo("/edit").Get(repo_setting.SettingsProtectedBranch).
Post(web.Bind(forms.ProtectBranchForm{}), context.RepoMustNotBeArchived(), repo_setting.SettingsProtectedBranchPost)
m.Post("/{id}/delete", repo_setting.DeleteProtectedBranchRulePost)
- }, repo.MustBeNotEmpty)
-
- m.Post("/rename_branch", web.Bind(forms.RenameBranchForm{}), context.RepoMustNotBeArchived(), repo_setting.RenameBranchPost)
+ })
m.Group("/tags", func() {
m.Get("", repo_setting.ProtectedTags)
@@ -1296,6 +1309,7 @@ func registerRoutes(m *web.Router) {
}, web.Bind(forms.NewBranchForm{}))
m.Post("/delete", repo.DeleteBranchPost)
m.Post("/restore", repo.RestoreBranchPost)
+ m.Post("/rename", web.Bind(forms.RenameBranchForm{}), repo_setting.RenameBranchPost)
}, context.RepoMustNotBeArchived(), reqRepoCodeWriter, repo.MustBeNotEmpty)
m.Combo("/fork").Get(repo.Fork).Post(web.Bind(forms.CreateRepoForm{}), repo.ForkPost)
diff --git a/services/actions/notifier_helper.go b/services/actions/notifier_helper.go
index 0030ef9a9161d..b21d889d0369e 100644
--- a/services/actions/notifier_helper.go
+++ b/services/actions/notifier_helper.go
@@ -43,7 +43,8 @@ func withMethod(ctx context.Context, method string) context.Context {
return ctx
}
}
- return context.WithValue(ctx, methodCtxKey, method)
+ // FIXME: review the use of this nolint directive
+ return context.WithValue(ctx, methodCtxKey, method) //nolint:staticcheck
}
// getMethod gets the notification method that this context currently executes.
diff --git a/services/auth/basic.go b/services/auth/basic.go
index 1184d12d1c4b4..90bd64237091d 100644
--- a/services/auth/basic.go
+++ b/services/auth/basic.go
@@ -25,7 +25,12 @@ var (
)
// BasicMethodName is the constant name of the basic authentication method
-const BasicMethodName = "basic"
+const (
+ BasicMethodName = "basic"
+ AccessTokenMethodName = "access_token"
+ OAuth2TokenMethodName = "oauth2_token"
+ ActionTokenMethodName = "action_token"
+)
// Basic implements the Auth interface and authenticates requests (API requests
// only) by looking for Basic authentication data or "x-oauth-basic" token in the "Authorization"
@@ -82,6 +87,7 @@ func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore
return nil, err
}
+ store.GetData()["LoginMethod"] = OAuth2TokenMethodName
store.GetData()["IsApiToken"] = true
return u, nil
}
@@ -101,6 +107,7 @@ func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore
log.Error("UpdateAccessToken: %v", err)
}
+ store.GetData()["LoginMethod"] = AccessTokenMethodName
store.GetData()["IsApiToken"] = true
store.GetData()["ApiTokenScope"] = token.Scope
return u, nil
@@ -113,6 +120,7 @@ func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore
if err == nil && task != nil {
log.Trace("Basic Authorization: Valid AccessToken for task[%d]", task.ID)
+ store.GetData()["LoginMethod"] = ActionTokenMethodName
store.GetData()["IsActionsToken"] = true
store.GetData()["ActionsTaskID"] = task.ID
@@ -138,6 +146,7 @@ func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore
}
}
+ store.GetData()["LoginMethod"] = BasicMethodName
log.Trace("Basic Authorization: Logged in user %-v", u)
return u, nil
@@ -159,3 +168,19 @@ func validateTOTP(req *http.Request, u *user_model.User) error {
}
return nil
}
+
+func GetAccessScope(store DataStore) auth_model.AccessTokenScope {
+ if v, ok := store.GetData()["ApiTokenScope"]; ok {
+ return v.(auth_model.AccessTokenScope)
+ }
+ switch store.GetData()["LoginMethod"] {
+ case OAuth2TokenMethodName:
+ fallthrough
+ case BasicMethodName, AccessTokenMethodName:
+ return auth_model.AccessTokenScopeAll
+ case ActionTokenMethodName:
+ fallthrough
+ default:
+ return ""
+ }
+}
diff --git a/services/auth/httpsign.go b/services/auth/httpsign.go
index b604349f80d60..83a36bef238c4 100644
--- a/services/auth/httpsign.go
+++ b/services/auth/httpsign.go
@@ -17,7 +17,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
- "github.com/go-fed/httpsig"
+ "github.com/42wim/httpsig"
"golang.org/x/crypto/ssh"
)
@@ -205,7 +205,7 @@ func doVerify(verifier httpsig.Verifier, sshPublicKeys []ssh.PublicKey) error {
case strings.HasPrefix(publicKey.Type(), "ssh-ed25519"):
algos = []httpsig.Algorithm{httpsig.ED25519}
case strings.HasPrefix(publicKey.Type(), "ssh-rsa"):
- algos = []httpsig.Algorithm{httpsig.RSA_SHA1, httpsig.RSA_SHA256, httpsig.RSA_SHA512}
+ algos = []httpsig.Algorithm{httpsig.RSA_SHA256, httpsig.RSA_SHA512}
}
for _, algo := range algos {
if err := verifier.Verify(cryptoPubkey, algo); err == nil {
diff --git a/services/auth/oauth2.go b/services/auth/oauth2.go
index 46d8510143675..523998a634522 100644
--- a/services/auth/oauth2.go
+++ b/services/auth/oauth2.go
@@ -17,7 +17,7 @@ import (
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/web/middleware"
- "code.gitea.io/gitea/services/auth/source/oauth2"
+ "code.gitea.io/gitea/services/oauth2_provider"
)
// Ensure the struct implements the interface.
@@ -31,7 +31,7 @@ func CheckOAuthAccessToken(ctx context.Context, accessToken string) int64 {
if !strings.Contains(accessToken, ".") {
return 0
}
- token, err := oauth2.ParseToken(accessToken, oauth2.DefaultSigningKey)
+ token, err := oauth2_provider.ParseToken(accessToken, oauth2_provider.DefaultSigningKey)
if err != nil {
log.Trace("oauth2.ParseToken: %v", err)
return 0
@@ -40,7 +40,7 @@ func CheckOAuthAccessToken(ctx context.Context, accessToken string) int64 {
if grant, err = auth_model.GetOAuth2GrantByID(ctx, token.GrantID); err != nil || grant == nil {
return 0
}
- if token.Type != oauth2.TypeAccessToken {
+ if token.Kind != oauth2_provider.KindAccessToken {
return 0
}
if token.ExpiresAt.Before(time.Now()) || token.IssuedAt.After(time.Now()) {
diff --git a/services/auth/reverseproxy.go b/services/auth/reverseproxy.go
index b6aeb0aed2cab..36b4ef68f42f4 100644
--- a/services/auth/reverseproxy.go
+++ b/services/auth/reverseproxy.go
@@ -164,7 +164,7 @@ func (r *ReverseProxy) newUser(req *http.Request) *user_model.User {
IsActive: optional.Some(true),
}
- if err := user_model.CreateUser(req.Context(), user, &overwriteDefault); err != nil {
+ if err := user_model.CreateUser(req.Context(), user, &user_model.Meta{}, &overwriteDefault); err != nil {
// FIXME: should I create a system notice?
log.Error("CreateUser: %v", err)
return nil
diff --git a/services/auth/source/ldap/source_authenticate.go b/services/auth/source/ldap/source_authenticate.go
index 6ebd3ea50ac8c..01cb743720599 100644
--- a/services/auth/source/ldap/source_authenticate.go
+++ b/services/auth/source/ldap/source_authenticate.go
@@ -89,7 +89,7 @@ func (source *Source) Authenticate(ctx context.Context, user *user_model.User, u
IsActive: optional.Some(true),
}
- err := user_model.CreateUser(ctx, user, overwriteDefault)
+ err := user_model.CreateUser(ctx, user, &user_model.Meta{}, overwriteDefault)
if err != nil {
return user, err
}
diff --git a/services/auth/source/ldap/source_sync.go b/services/auth/source/ldap/source_sync.go
index 2a95326b9e8d7..a6d6d2a0f2fc3 100644
--- a/services/auth/source/ldap/source_sync.go
+++ b/services/auth/source/ldap/source_sync.go
@@ -129,7 +129,7 @@ func (source *Source) Sync(ctx context.Context, updateExisting bool) error {
IsActive: optional.Some(true),
}
- err = user_model.CreateUser(ctx, usr, overwriteDefault)
+ err = user_model.CreateUser(ctx, usr, &user_model.Meta{}, overwriteDefault)
if err != nil {
log.Error("SyncExternalUsers[%s]: Error creating user %s: %v", source.authSource.Name, su.Username, err)
}
diff --git a/services/auth/source/oauth2/init.go b/services/auth/source/oauth2/init.go
index 5c2568154863c..313f375281b2c 100644
--- a/services/auth/source/oauth2/init.go
+++ b/services/auth/source/oauth2/init.go
@@ -30,10 +30,6 @@ const ProviderHeaderKey = "gitea-oauth2-provider"
// Init initializes the oauth source
func Init(ctx context.Context) error {
- if err := InitSigningKey(); err != nil {
- return err
- }
-
// Lock our mutex
gothRWMutex.Lock()
diff --git a/services/auth/source/oauth2/source_sync_test.go b/services/auth/source/oauth2/source_sync_test.go
index e2f04bcb2561d..25408e8727e1f 100644
--- a/services/auth/source/oauth2/source_sync_test.go
+++ b/services/auth/source/oauth2/source_sync_test.go
@@ -36,7 +36,7 @@ func TestSource(t *testing.T) {
Email: "external@example.com",
}
- err := user_model.CreateUser(context.Background(), user, &user_model.CreateUserOverwriteOptions{})
+ err := user_model.CreateUser(context.Background(), user, &user_model.Meta{}, &user_model.CreateUserOverwriteOptions{})
assert.NoError(t, err)
e := &user_model.ExternalLoginUser{
diff --git a/services/auth/source/pam/source_authenticate.go b/services/auth/source/pam/source_authenticate.go
index addd1bd2c958e..6fd02dc29f87c 100644
--- a/services/auth/source/pam/source_authenticate.go
+++ b/services/auth/source/pam/source_authenticate.go
@@ -63,7 +63,7 @@ func (source *Source) Authenticate(ctx context.Context, user *user_model.User, u
IsActive: optional.Some(true),
}
- if err := user_model.CreateUser(ctx, user, overwriteDefault); err != nil {
+ if err := user_model.CreateUser(ctx, user, &user_model.Meta{}, overwriteDefault); err != nil {
return user, err
}
diff --git a/services/auth/source/smtp/source_authenticate.go b/services/auth/source/smtp/source_authenticate.go
index 1f0a61c789171..b2e94933a6d2e 100644
--- a/services/auth/source/smtp/source_authenticate.go
+++ b/services/auth/source/smtp/source_authenticate.go
@@ -79,7 +79,7 @@ func (source *Source) Authenticate(ctx context.Context, user *user_model.User, u
IsActive: optional.Some(true),
}
- if err := user_model.CreateUser(ctx, user, overwriteDefault); err != nil {
+ if err := user_model.CreateUser(ctx, user, &user_model.Meta{}, overwriteDefault); err != nil {
return user, err
}
diff --git a/services/auth/sspi.go b/services/auth/sspi.go
index 64a127e97a6c3..7f8a03a4c67da 100644
--- a/services/auth/sspi.go
+++ b/services/auth/sspi.go
@@ -176,7 +176,7 @@ func (s *SSPI) newUser(ctx context.Context, username string, cfg *sspi.Source) (
KeepEmailPrivate: optional.Some(true),
EmailNotificationsPreference: &emailNotificationPreference,
}
- if err := user_model.CreateUser(ctx, user, overwriteDefault); err != nil {
+ if err := user_model.CreateUser(ctx, user, &user_model.Meta{}, overwriteDefault); err != nil {
return nil, err
}
diff --git a/services/automerge/automerge.go b/services/automerge/automerge.go
index ed7a0141b9f3d..a1ee204882f51 100644
--- a/services/automerge/automerge.go
+++ b/services/automerge/automerge.go
@@ -288,7 +288,7 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
}
if err := pull_service.CheckPullMergeable(ctx, doer, &perm, pr, pull_service.MergeCheckTypeGeneral, false); err != nil {
- if errors.Is(pull_service.ErrUserNotAllowedToMerge, err) {
+ if errors.Is(err, pull_service.ErrUserNotAllowedToMerge) {
log.Info("%-v was scheduled to automerge by an unauthorized user", pr)
return
}
diff --git a/services/context/api.go b/services/context/api.go
index 84da526e748f8..00cfd6afd92dd 100644
--- a/services/context/api.go
+++ b/services/context/api.go
@@ -35,9 +35,10 @@ type APIContext struct {
ContextUser *user_model.User // the user which is being visited, in most cases it differs from Doer
- Repo *Repository
- Org *APIOrganization
- Package *Package
+ Repo *Repository
+ Org *APIOrganization
+ Package *Package
+ PublicOnly bool // Whether the request is for a public endpoint
}
func init() {
diff --git a/services/context/context.go b/services/context/context.go
index 69b65cbddbc92..42f7c3d9d1d8a 100644
--- a/services/context/context.go
+++ b/services/context/context.go
@@ -138,10 +138,8 @@ func Contexter() func(next http.Handler) http.Handler {
csrfOpts := CsrfOptions{
Secret: hex.EncodeToString(setting.GetGeneralTokenSigningSecret()),
Cookie: setting.CSRFCookieName,
- SetCookie: true,
Secure: setting.SessionConfig.Secure,
CookieHTTPOnly: setting.CSRFCookieHTTPOnly,
- Header: "X-Csrf-Token",
CookieDomain: setting.SessionConfig.Domain,
CookiePath: setting.SessionConfig.CookiePath,
SameSite: setting.SessionConfig.SameSite,
@@ -167,7 +165,7 @@ func Contexter() func(next http.Handler) http.Handler {
ctx.Base.AppendContextValue(WebContextKey, ctx)
ctx.Base.AppendContextValueFunc(gitrepo.RepositoryContextKey, func() any { return ctx.Repo.GitRepo })
- ctx.Csrf = PrepareCSRFProtector(csrfOpts, ctx)
+ ctx.Csrf = NewCSRFProtector(csrfOpts)
// Get the last flash message from cookie
lastFlashCookie := middleware.GetSiteCookie(ctx.Req, CookieNameFlash)
@@ -204,8 +202,6 @@ func Contexter() func(next http.Handler) http.Handler {
ctx.Resp.Header().Set(`X-Frame-Options`, setting.CORSConfig.XFrameOptions)
ctx.Data["SystemConfig"] = setting.Config()
- ctx.Data["CsrfToken"] = ctx.Csrf.GetToken()
- ctx.Data["CsrfTokenHtml"] = template.HTML(``)
// FIXME: do we really always need these setting? There should be someway to have to avoid having to always set these
ctx.Data["DisableMigrations"] = setting.Repository.DisableMigrations
diff --git a/services/context/csrf.go b/services/context/csrf.go
index 9b0dc2923b532..9b66d613e3b44 100644
--- a/services/context/csrf.go
+++ b/services/context/csrf.go
@@ -20,64 +20,42 @@
package context
import (
- "encoding/base32"
- "fmt"
+ "html/template"
"net/http"
"strconv"
"time"
"code.gitea.io/gitea/modules/log"
- "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
- "code.gitea.io/gitea/modules/web/middleware"
+)
+
+const (
+ CsrfHeaderName = "X-Csrf-Token"
+ CsrfFormName = "_csrf"
)
// CSRFProtector represents a CSRF protector and is used to get the current token and validate the token.
type CSRFProtector interface {
- // GetHeaderName returns HTTP header to search for token.
- GetHeaderName() string
- // GetFormName returns form value to search for token.
- GetFormName() string
- // GetToken returns the token.
- GetToken() string
- // Validate validates the token in http context.
+ // PrepareForSessionUser prepares the csrf protector for the current session user.
+ PrepareForSessionUser(ctx *Context)
+ // Validate validates the csrf token in http context.
Validate(ctx *Context)
- // DeleteCookie deletes the cookie
+ // DeleteCookie deletes the csrf cookie
DeleteCookie(ctx *Context)
}
type csrfProtector struct {
opt CsrfOptions
- // Token generated to pass via header, cookie, or hidden form value.
- Token string
- // This value must be unique per user.
- ID string
-}
-
-// GetHeaderName returns the name of the HTTP header for csrf token.
-func (c *csrfProtector) GetHeaderName() string {
- return c.opt.Header
-}
-
-// GetFormName returns the name of the form value for csrf token.
-func (c *csrfProtector) GetFormName() string {
- return c.opt.Form
-}
-
-// GetToken returns the current token. This is typically used
-// to populate a hidden form in an HTML template.
-func (c *csrfProtector) GetToken() string {
- return c.Token
+ // id must be unique per user.
+ id string
+ // token is the valid one which wil be used by end user and passed via header, cookie, or hidden form value.
+ token string
}
// CsrfOptions maintains options to manage behavior of Generate.
type CsrfOptions struct {
// The global secret value used to generate Tokens.
Secret string
- // HTTP header used to set and get token.
- Header string
- // Form value used to set and get token.
- Form string
// Cookie value used to set and get token.
Cookie string
// Cookie domain.
@@ -87,103 +65,64 @@ type CsrfOptions struct {
CookieHTTPOnly bool
// SameSite set the cookie SameSite type
SameSite http.SameSite
- // Key used for getting the unique ID per user.
- SessionKey string
- // oldSessionKey saves old value corresponding to SessionKey.
- oldSessionKey string
- // If true, send token via X-Csrf-Token header.
- SetHeader bool
- // If true, send token via _csrf cookie.
- SetCookie bool
// Set the Secure flag to true on the cookie.
Secure bool
- // Disallow Origin appear in request header.
- Origin bool
- // Cookie lifetime. Default is 0
- CookieLifeTime int
-}
-
-func prepareDefaultCsrfOptions(opt CsrfOptions) CsrfOptions {
- if opt.Secret == "" {
- randBytes, err := util.CryptoRandomBytes(8)
- if err != nil {
- // this panic can be handled by the recover() in http handlers
- panic(fmt.Errorf("failed to generate random bytes: %w", err))
- }
- opt.Secret = base32.StdEncoding.EncodeToString(randBytes)
- }
- if opt.Header == "" {
- opt.Header = "X-Csrf-Token"
- }
- if opt.Form == "" {
- opt.Form = "_csrf"
- }
- if opt.Cookie == "" {
- opt.Cookie = "_csrf"
- }
- if opt.CookiePath == "" {
- opt.CookiePath = "/"
- }
- if opt.SessionKey == "" {
- opt.SessionKey = "uid"
- }
- if opt.CookieLifeTime == 0 {
- opt.CookieLifeTime = int(CsrfTokenTimeout.Seconds())
- }
-
- opt.oldSessionKey = "_old_" + opt.SessionKey
- return opt
+ // sessionKey is the key used for getting the unique ID per user.
+ sessionKey string
+ // oldSessionKey saves old value corresponding to sessionKey.
+ oldSessionKey string
}
-func newCsrfCookie(c *csrfProtector, value string) *http.Cookie {
+func newCsrfCookie(opt *CsrfOptions, value string) *http.Cookie {
return &http.Cookie{
- Name: c.opt.Cookie,
+ Name: opt.Cookie,
Value: value,
- Path: c.opt.CookiePath,
- Domain: c.opt.CookieDomain,
- MaxAge: c.opt.CookieLifeTime,
- Secure: c.opt.Secure,
- HttpOnly: c.opt.CookieHTTPOnly,
- SameSite: c.opt.SameSite,
+ Path: opt.CookiePath,
+ Domain: opt.CookieDomain,
+ MaxAge: int(CsrfTokenTimeout.Seconds()),
+ Secure: opt.Secure,
+ HttpOnly: opt.CookieHTTPOnly,
+ SameSite: opt.SameSite,
}
}
-// PrepareCSRFProtector returns a CSRFProtector to be used for every request.
-// Additionally, depending on options set, generated tokens will be sent via Header and/or Cookie.
-func PrepareCSRFProtector(opt CsrfOptions, ctx *Context) CSRFProtector {
- opt = prepareDefaultCsrfOptions(opt)
- x := &csrfProtector{opt: opt}
-
- if opt.Origin && len(ctx.Req.Header.Get("Origin")) > 0 {
- return x
+func NewCSRFProtector(opt CsrfOptions) CSRFProtector {
+ if opt.Secret == "" {
+ panic("CSRF secret is empty but it must be set") // it shouldn't happen because it is always set in code
}
+ opt.Cookie = util.IfZero(opt.Cookie, "_csrf")
+ opt.CookiePath = util.IfZero(opt.CookiePath, "/")
+ opt.sessionKey = "uid"
+ opt.oldSessionKey = "_old_" + opt.sessionKey
+ return &csrfProtector{opt: opt}
+}
- x.ID = "0"
- uidAny := ctx.Session.Get(opt.SessionKey)
- if uidAny != nil {
+func (c *csrfProtector) PrepareForSessionUser(ctx *Context) {
+ c.id = "0"
+ if uidAny := ctx.Session.Get(c.opt.sessionKey); uidAny != nil {
switch uidVal := uidAny.(type) {
case string:
- x.ID = uidVal
+ c.id = uidVal
case int64:
- x.ID = strconv.FormatInt(uidVal, 10)
+ c.id = strconv.FormatInt(uidVal, 10)
default:
log.Error("invalid uid type in session: %T", uidAny)
}
}
- oldUID := ctx.Session.Get(opt.oldSessionKey)
- uidChanged := oldUID == nil || oldUID.(string) != x.ID
- cookieToken := ctx.GetSiteCookie(opt.Cookie)
+ oldUID := ctx.Session.Get(c.opt.oldSessionKey)
+ uidChanged := oldUID == nil || oldUID.(string) != c.id
+ cookieToken := ctx.GetSiteCookie(c.opt.Cookie)
needsNew := true
if uidChanged {
- _ = ctx.Session.Set(opt.oldSessionKey, x.ID)
+ _ = ctx.Session.Set(c.opt.oldSessionKey, c.id)
} else if cookieToken != "" {
// If cookie token presents, re-use existing unexpired token, else generate a new one.
if issueTime, ok := ParseCsrfToken(cookieToken); ok {
dur := time.Since(issueTime) // issueTime is not a monotonic-clock, the server time may change a lot to an early time.
if dur >= -CsrfTokenRegenerationInterval && dur <= CsrfTokenRegenerationInterval {
- x.Token = cookieToken
+ c.token = cookieToken
needsNew = false
}
}
@@ -191,42 +130,33 @@ func PrepareCSRFProtector(opt CsrfOptions, ctx *Context) CSRFProtector {
if needsNew {
// FIXME: actionId.
- x.Token = GenerateCsrfToken(x.opt.Secret, x.ID, "POST", time.Now())
- if opt.SetCookie {
- cookie := newCsrfCookie(x, x.Token)
- ctx.Resp.Header().Add("Set-Cookie", cookie.String())
- }
+ c.token = GenerateCsrfToken(c.opt.Secret, c.id, "POST", time.Now())
+ cookie := newCsrfCookie(&c.opt, c.token)
+ ctx.Resp.Header().Add("Set-Cookie", cookie.String())
}
- if opt.SetHeader {
- ctx.Resp.Header().Add(opt.Header, x.Token)
- }
- return x
+ ctx.Data["CsrfToken"] = c.token
+ ctx.Data["CsrfTokenHtml"] = template.HTML(``)
}
func (c *csrfProtector) validateToken(ctx *Context, token string) {
- if !ValidCsrfToken(token, c.opt.Secret, c.ID, "POST", time.Now()) {
+ if !ValidCsrfToken(token, c.opt.Secret, c.id, "POST", time.Now()) {
c.DeleteCookie(ctx)
- if middleware.IsAPIPath(ctx.Req) {
- // currently, there should be no access to the APIPath with CSRF token. because templates shouldn't use the `/api/` endpoints.
- http.Error(ctx.Resp, "Invalid CSRF token.", http.StatusBadRequest)
- } else {
- ctx.Flash.Error(ctx.Tr("error.invalid_csrf"))
- ctx.Redirect(setting.AppSubURL + "/")
- }
+ // currently, there should be no access to the APIPath with CSRF token. because templates shouldn't use the `/api/` endpoints.
+ // FIXME: distinguish what the response is for: HTML (web page) or JSON (fetch)
+ http.Error(ctx.Resp, "Invalid CSRF token.", http.StatusBadRequest)
}
}
// Validate should be used as a per route middleware. It attempts to get a token from an "X-Csrf-Token"
// HTTP header and then a "_csrf" form value. If one of these is found, the token will be validated.
-// If this validation fails, custom Error is sent in the reply.
-// If neither a header nor form value is found, http.StatusBadRequest is sent.
+// If this validation fails, http.StatusBadRequest is sent.
func (c *csrfProtector) Validate(ctx *Context) {
- if token := ctx.Req.Header.Get(c.GetHeaderName()); token != "" {
+ if token := ctx.Req.Header.Get(CsrfHeaderName); token != "" {
c.validateToken(ctx, token)
return
}
- if token := ctx.Req.FormValue(c.GetFormName()); token != "" {
+ if token := ctx.Req.FormValue(CsrfFormName); token != "" {
c.validateToken(ctx, token)
return
}
@@ -234,9 +164,7 @@ func (c *csrfProtector) Validate(ctx *Context) {
}
func (c *csrfProtector) DeleteCookie(ctx *Context) {
- if c.opt.SetCookie {
- cookie := newCsrfCookie(c, "")
- cookie.MaxAge = -1
- ctx.Resp.Header().Add("Set-Cookie", cookie.String())
- }
+ cookie := newCsrfCookie(&c.opt, "")
+ cookie.MaxAge = -1
+ ctx.Resp.Header().Add("Set-Cookie", cookie.String())
}
diff --git a/services/context/repo.go b/services/context/repo.go
index e0d3a0bfd3e43..0072b63b7c992 100644
--- a/services/context/repo.go
+++ b/services/context/repo.go
@@ -404,6 +404,13 @@ func repoAssignment(ctx *Context, repo *repo_model.Repository) {
ctx.Data["PushMirrors"] = pushMirrors
ctx.Data["RepoName"] = ctx.Repo.Repository.Name
ctx.Data["IsEmptyRepo"] = ctx.Repo.Repository.IsEmpty
+
+ repoLicenses, err := repo_model.GetRepoLicenses(ctx, ctx.Repo.Repository)
+ if err != nil {
+ ctx.ServerError("GetRepoLicenses", err)
+ return
+ }
+ ctx.Data["DetectedRepoLicenses"] = repoLicenses.StringList()
}
// RepoAssignment returns a middleware to handle repository assignment
@@ -607,7 +614,10 @@ func RepoAssignment(ctx *Context) context.CancelFunc {
}
}
- isHomeOrSettings := ctx.Link == ctx.Repo.RepoLink || ctx.Link == ctx.Repo.RepoLink+"/settings" || strings.HasPrefix(ctx.Link, ctx.Repo.RepoLink+"/settings/")
+ isHomeOrSettings := ctx.Link == ctx.Repo.RepoLink ||
+ ctx.Link == ctx.Repo.RepoLink+"/settings" ||
+ strings.HasPrefix(ctx.Link, ctx.Repo.RepoLink+"/settings/") ||
+ ctx.Link == ctx.Repo.RepoLink+"/-/migrate/status"
// Disable everything when the repo is being created
if ctx.Repo.Repository.IsBeingCreated() || ctx.Repo.Repository.IsBroken() {
diff --git a/services/convert/convert.go b/services/convert/convert.go
index d70c1b940a53b..041d553e98cc5 100644
--- a/services/convert/convert.go
+++ b/services/convert/convert.go
@@ -485,6 +485,7 @@ func ToLFSLock(ctx context.Context, l *git_model.LFSLock) *api.LFSLock {
// ToChangedFile convert a gitdiff.DiffFile to api.ChangedFile
func ToChangedFile(f *gitdiff.DiffFile, repo *repo_model.Repository, commit string) *api.ChangedFile {
status := "changed"
+ previousFilename := ""
if f.IsDeleted {
status = "deleted"
} else if f.IsCreated {
@@ -493,23 +494,21 @@ func ToChangedFile(f *gitdiff.DiffFile, repo *repo_model.Repository, commit stri
status = "copied"
} else if f.IsRenamed && f.Type == gitdiff.DiffFileRename {
status = "renamed"
+ previousFilename = f.OldName
} else if f.Addition == 0 && f.Deletion == 0 {
status = "unchanged"
}
file := &api.ChangedFile{
- Filename: f.GetDiffFileName(),
- Status: status,
- Additions: f.Addition,
- Deletions: f.Deletion,
- Changes: f.Addition + f.Deletion,
- HTMLURL: fmt.Sprint(repo.HTMLURL(), "/src/commit/", commit, "/", util.PathEscapeSegments(f.GetDiffFileName())),
- ContentsURL: fmt.Sprint(repo.APIURL(), "/contents/", util.PathEscapeSegments(f.GetDiffFileName()), "?ref=", commit),
- RawURL: fmt.Sprint(repo.HTMLURL(), "/raw/commit/", commit, "/", util.PathEscapeSegments(f.GetDiffFileName())),
- }
-
- if status == "rename" {
- file.PreviousFilename = f.OldName
+ Filename: f.GetDiffFileName(),
+ Status: status,
+ Additions: f.Addition,
+ Deletions: f.Deletion,
+ Changes: f.Addition + f.Deletion,
+ PreviousFilename: previousFilename,
+ HTMLURL: fmt.Sprint(repo.HTMLURL(), "/src/commit/", commit, "/", util.PathEscapeSegments(f.GetDiffFileName())),
+ ContentsURL: fmt.Sprint(repo.APIURL(), "/contents/", util.PathEscapeSegments(f.GetDiffFileName()), "?ref=", commit),
+ RawURL: fmt.Sprint(repo.HTMLURL(), "/raw/commit/", commit, "/", util.PathEscapeSegments(f.GetDiffFileName())),
}
return file
diff --git a/services/convert/repository.go b/services/convert/repository.go
index 751260a45d3d9..e026d0f4405f4 100644
--- a/services/convert/repository.go
+++ b/services/convert/repository.go
@@ -175,6 +175,11 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, permissionInR
language = repo.PrimaryLanguage.Language
}
+ repoLicenses, err := repo_model.GetRepoLicenses(ctx, repo)
+ if err != nil {
+ return nil
+ }
+
repoAPIURL := repo.APIURL()
return &api.Repository{
@@ -238,6 +243,7 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, permissionInR
RepoTransfer: transfer,
Topics: repo.Topics,
ObjectFormatName: repo.ObjectFormatName,
+ Licenses: repoLicenses.StringList(),
}
}
diff --git a/services/convert/utils.go b/services/convert/utils.go
index cdce60831c9a9..5e9d32cc8edce 100644
--- a/services/convert/utils.go
+++ b/services/convert/utils.go
@@ -36,6 +36,8 @@ func ToGitServiceType(value string) structs.GitServiceType {
return structs.OneDevService
case "gitbucket":
return structs.GitBucketService
+ case "codecommit":
+ return structs.CodeCommitService
default:
return structs.PlainGitService
}
diff --git a/services/cron/tasks_basic.go b/services/cron/tasks_basic.go
index 2a213ae51524c..fb5938745e61c 100644
--- a/services/cron/tasks_basic.go
+++ b/services/cron/tasks_basic.go
@@ -156,6 +156,16 @@ func registerCleanupPackages() {
})
}
+func registerSyncRepoLicenses() {
+ RegisterTaskFatal("sync_repo_licenses", &BaseConfig{
+ Enabled: false,
+ RunAtStart: false,
+ Schedule: "@annually",
+ }, func(ctx context.Context, _ *user_model.User, config Config) error {
+ return repo_service.SyncRepoLicenses(ctx)
+ })
+}
+
func initBasicTasks() {
if setting.Mirror.Enabled {
registerUpdateMirrorTask()
@@ -172,4 +182,5 @@ func initBasicTasks() {
if setting.Packages.Enabled {
registerCleanupPackages()
}
+ registerSyncRepoLicenses()
}
diff --git a/services/forms/repo_form.go b/services/forms/repo_form.go
index 58919cb2923a6..fd80f9ffd79d1 100644
--- a/services/forms/repo_form.go
+++ b/services/forms/repo_form.go
@@ -79,6 +79,9 @@ type MigrateRepoForm struct {
PullRequests bool `json:"pull_requests"`
Releases bool `json:"releases"`
MirrorInterval string `json:"mirror_interval"`
+
+ AWSAccessKeyID string `json:"aws_access_key_id"`
+ AWSSecretAccessKey string `json:"aws_secret_access_key"`
}
// Validate validates the fields
diff --git a/services/issue/status.go b/services/issue/status.go
index 9b6c683f4f9cc..967c29bd22230 100644
--- a/services/issue/status.go
+++ b/services/issue/status.go
@@ -13,6 +13,9 @@ import (
)
// ChangeStatus changes issue status to open or closed.
+// closed means the target status
+// Fix me: you should check whether the current issue status is same to the target status before call this function
+// as in function changeIssueStatus we will return WasClosedError, even the issue status and target status are both open
func ChangeStatus(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string, closed bool) error {
comment, err := issues_model.ChangeIssueStatus(ctx, issue, doer, closed)
if err != nil {
diff --git a/services/mailer/incoming/incoming_handler.go b/services/mailer/incoming/incoming_handler.go
index dc0b53982216d..38a234eac1fd2 100644
--- a/services/mailer/incoming/incoming_handler.go
+++ b/services/mailer/incoming/incoming_handler.go
@@ -82,43 +82,40 @@ func (h *ReplyHandler) Handle(ctx context.Context, content *MailContent, doer *u
return nil
}
- switch r := ref.(type) {
- case *issues_model.Issue:
- attachmentIDs := make([]string, 0, len(content.Attachments))
- if setting.Attachment.Enabled {
- for _, attachment := range content.Attachments {
- a, err := attachment_service.UploadAttachment(ctx, bytes.NewReader(attachment.Content), setting.Attachment.AllowedTypes, int64(len(attachment.Content)), &repo_model.Attachment{
- Name: attachment.Name,
- UploaderID: doer.ID,
- RepoID: issue.Repo.ID,
- })
- if err != nil {
- if upload.IsErrFileTypeForbidden(err) {
- log.Info("Skipping disallowed attachment type: %s", attachment.Name)
- continue
- }
- return err
+ attachmentIDs := make([]string, 0, len(content.Attachments))
+ if setting.Attachment.Enabled {
+ for _, attachment := range content.Attachments {
+ a, err := attachment_service.UploadAttachment(ctx, bytes.NewReader(attachment.Content), setting.Attachment.AllowedTypes, int64(len(attachment.Content)), &repo_model.Attachment{
+ Name: attachment.Name,
+ UploaderID: doer.ID,
+ RepoID: issue.Repo.ID,
+ })
+ if err != nil {
+ if upload.IsErrFileTypeForbidden(err) {
+ log.Info("Skipping disallowed attachment type: %s", attachment.Name)
+ continue
}
- attachmentIDs = append(attachmentIDs, a.UUID)
+ return err
}
+ attachmentIDs = append(attachmentIDs, a.UUID)
}
+ }
- if content.Content == "" && len(attachmentIDs) == 0 {
- return nil
- }
+ if content.Content == "" && len(attachmentIDs) == 0 {
+ return nil
+ }
- _, err = issue_service.CreateIssueComment(ctx, doer, issue.Repo, issue, content.Content, attachmentIDs)
+ switch r := ref.(type) {
+ case *issues_model.Issue:
+ _, err := issue_service.CreateIssueComment(ctx, doer, issue.Repo, issue, content.Content, attachmentIDs)
if err != nil {
return fmt.Errorf("CreateIssueComment failed: %w", err)
}
case *issues_model.Comment:
comment := r
- if content.Content == "" {
- return nil
- }
-
- if comment.Type == issues_model.CommentTypeCode {
+ switch comment.Type {
+ case issues_model.CommentTypeCode:
_, err := pull_service.CreateCodeComment(
ctx,
doer,
@@ -130,11 +127,16 @@ func (h *ReplyHandler) Handle(ctx context.Context, content *MailContent, doer *u
false, // not pending review but a single review
comment.ReviewID,
"",
- nil,
+ attachmentIDs,
)
if err != nil {
return fmt.Errorf("CreateCodeComment failed: %w", err)
}
+ default:
+ _, err := issue_service.CreateIssueComment(ctx, doer, issue.Repo, issue, content.Content, attachmentIDs)
+ if err != nil {
+ return fmt.Errorf("CreateIssueComment failed: %w", err)
+ }
}
}
return nil
diff --git a/services/migrations/codecommit.go b/services/migrations/codecommit.go
new file mode 100644
index 0000000000000..ccda62fc3d9fc
--- /dev/null
+++ b/services/migrations/codecommit.go
@@ -0,0 +1,269 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package migrations
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "strconv"
+ "strings"
+
+ git_module "code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/log"
+ base "code.gitea.io/gitea/modules/migration"
+ "code.gitea.io/gitea/modules/structs"
+
+ "github.com/aws/aws-sdk-go-v2/credentials"
+ "github.com/aws/aws-sdk-go-v2/service/codecommit"
+ "github.com/aws/aws-sdk-go-v2/service/codecommit/types"
+ "github.com/aws/aws-sdk-go/aws"
+)
+
+var (
+ _ base.Downloader = &CodeCommitDownloader{}
+ _ base.DownloaderFactory = &CodeCommitDownloaderFactory{}
+)
+
+func init() {
+ RegisterDownloaderFactory(&CodeCommitDownloaderFactory{})
+}
+
+// CodeCommitDownloaderFactory defines a codecommit downloader factory
+type CodeCommitDownloaderFactory struct{}
+
+// New returns a Downloader related to this factory according MigrateOptions
+func (c *CodeCommitDownloaderFactory) New(ctx context.Context, opts base.MigrateOptions) (base.Downloader, error) {
+ u, err := url.Parse(opts.CloneAddr)
+ if err != nil {
+ return nil, err
+ }
+
+ hostElems := strings.Split(u.Host, ".")
+ if len(hostElems) != 4 {
+ return nil, fmt.Errorf("cannot get the region from clone URL")
+ }
+ region := hostElems[1]
+
+ pathElems := strings.Split(u.Path, "/")
+ if len(pathElems) == 0 {
+ return nil, fmt.Errorf("cannot get the repo name from clone URL")
+ }
+ repoName := pathElems[len(pathElems)-1]
+
+ baseURL := u.Scheme + "://" + u.Host
+
+ return NewCodeCommitDownloader(ctx, repoName, baseURL, opts.AWSAccessKeyID, opts.AWSSecretAccessKey, region), nil
+}
+
+// GitServiceType returns the type of git service
+func (c *CodeCommitDownloaderFactory) GitServiceType() structs.GitServiceType {
+ return structs.CodeCommitService
+}
+
+func NewCodeCommitDownloader(ctx context.Context, repoName, baseURL, accessKeyID, secretAccessKey, region string) *CodeCommitDownloader {
+ downloader := CodeCommitDownloader{
+ ctx: ctx,
+ repoName: repoName,
+ baseURL: baseURL,
+ codeCommitClient: codecommit.New(codecommit.Options{
+ Credentials: credentials.NewStaticCredentialsProvider(accessKeyID, secretAccessKey, ""),
+ Region: region,
+ }),
+ }
+
+ return &downloader
+}
+
+// CodeCommitDownloader implements a downloader for AWS CodeCommit
+type CodeCommitDownloader struct {
+ base.NullDownloader
+ ctx context.Context
+ codeCommitClient *codecommit.Client
+ repoName string
+ baseURL string
+ allPullRequestIDs []string
+}
+
+// SetContext set context
+func (c *CodeCommitDownloader) SetContext(ctx context.Context) {
+ c.ctx = ctx
+}
+
+// GetRepoInfo returns a repository information
+func (c *CodeCommitDownloader) GetRepoInfo() (*base.Repository, error) {
+ output, err := c.codeCommitClient.GetRepository(c.ctx, &codecommit.GetRepositoryInput{
+ RepositoryName: aws.String(c.repoName),
+ })
+ if err != nil {
+ return nil, err
+ }
+ repoMeta := output.RepositoryMetadata
+
+ repo := &base.Repository{
+ Name: *repoMeta.RepositoryName,
+ Owner: *repoMeta.AccountId,
+ IsPrivate: true, // CodeCommit repos are always private
+ CloneURL: *repoMeta.CloneUrlHttp,
+ }
+ if repoMeta.DefaultBranch != nil {
+ repo.DefaultBranch = *repoMeta.DefaultBranch
+ }
+ if repoMeta.RepositoryDescription != nil {
+ repo.DefaultBranch = *repoMeta.RepositoryDescription
+ }
+ return repo, nil
+}
+
+// GetComments returns comments of an issue or PR
+func (c *CodeCommitDownloader) GetComments(commentable base.Commentable) ([]*base.Comment, bool, error) {
+ var (
+ nextToken *string
+ comments []*base.Comment
+ )
+
+ for {
+ resp, err := c.codeCommitClient.GetCommentsForPullRequest(c.ctx, &codecommit.GetCommentsForPullRequestInput{
+ NextToken: nextToken,
+ PullRequestId: aws.String(strconv.FormatInt(commentable.GetForeignIndex(), 10)),
+ })
+ if err != nil {
+ return nil, false, err
+ }
+
+ for _, prComment := range resp.CommentsForPullRequestData {
+ for _, ccComment := range prComment.Comments {
+ comment := &base.Comment{
+ IssueIndex: commentable.GetForeignIndex(),
+ PosterName: c.getUsernameFromARN(*ccComment.AuthorArn),
+ Content: *ccComment.Content,
+ Created: *ccComment.CreationDate,
+ Updated: *ccComment.LastModifiedDate,
+ }
+ comments = append(comments, comment)
+ }
+ }
+
+ nextToken = resp.NextToken
+ if nextToken == nil {
+ break
+ }
+ }
+
+ return comments, true, nil
+}
+
+// GetPullRequests returns pull requests according page and perPage
+func (c *CodeCommitDownloader) GetPullRequests(page, perPage int) ([]*base.PullRequest, bool, error) {
+ allPullRequestIDs, err := c.getAllPullRequestIDs()
+ if err != nil {
+ return nil, false, err
+ }
+
+ startIndex := (page - 1) * perPage
+ endIndex := page * perPage
+ if endIndex > len(allPullRequestIDs) {
+ endIndex = len(allPullRequestIDs)
+ }
+ batch := allPullRequestIDs[startIndex:endIndex]
+
+ prs := make([]*base.PullRequest, 0, len(batch))
+ for _, id := range batch {
+ output, err := c.codeCommitClient.GetPullRequest(c.ctx, &codecommit.GetPullRequestInput{
+ PullRequestId: aws.String(id),
+ })
+ if err != nil {
+ return nil, false, err
+ }
+ orig := output.PullRequest
+ number, err := strconv.ParseInt(*orig.PullRequestId, 10, 64)
+ if err != nil {
+ log.Error("CodeCommit pull request id is not a number: %s", *orig.PullRequestId)
+ continue
+ }
+ if len(orig.PullRequestTargets) == 0 {
+ log.Error("CodeCommit pull request does not contain targets", *orig.PullRequestId)
+ continue
+ }
+ target := orig.PullRequestTargets[0]
+ pr := &base.PullRequest{
+ Number: number,
+ Title: *orig.Title,
+ PosterName: c.getUsernameFromARN(*orig.AuthorArn),
+ Content: *orig.Description,
+ State: "open",
+ Created: *orig.CreationDate,
+ Updated: *orig.LastActivityDate,
+ Merged: target.MergeMetadata.IsMerged,
+ Head: base.PullRequestBranch{
+ Ref: strings.TrimPrefix(*target.SourceReference, git_module.BranchPrefix),
+ SHA: *target.SourceCommit,
+ RepoName: c.repoName,
+ },
+ Base: base.PullRequestBranch{
+ Ref: strings.TrimPrefix(*target.DestinationReference, git_module.BranchPrefix),
+ SHA: *target.DestinationCommit,
+ RepoName: c.repoName,
+ },
+ ForeignIndex: number,
+ }
+
+ if orig.PullRequestStatus == types.PullRequestStatusEnumClosed {
+ pr.State = "closed"
+ pr.Closed = orig.LastActivityDate
+ }
+
+ _ = CheckAndEnsureSafePR(pr, c.baseURL, c)
+ prs = append(prs, pr)
+ }
+
+ return prs, len(prs) < perPage, nil
+}
+
+// FormatCloneURL add authentication into remote URLs
+func (c *CodeCommitDownloader) FormatCloneURL(opts MigrateOptions, remoteAddr string) (string, error) {
+ u, err := url.Parse(remoteAddr)
+ if err != nil {
+ return "", err
+ }
+ u.User = url.UserPassword(opts.AuthUsername, opts.AuthPassword)
+ return u.String(), nil
+}
+
+func (c *CodeCommitDownloader) getAllPullRequestIDs() ([]string, error) {
+ if len(c.allPullRequestIDs) > 0 {
+ return c.allPullRequestIDs, nil
+ }
+
+ var (
+ nextToken *string
+ prIDs []string
+ )
+
+ for {
+ output, err := c.codeCommitClient.ListPullRequests(c.ctx, &codecommit.ListPullRequestsInput{
+ RepositoryName: aws.String(c.repoName),
+ NextToken: nextToken,
+ })
+ if err != nil {
+ return nil, err
+ }
+ prIDs = append(prIDs, output.PullRequestIds...)
+ nextToken = output.NextToken
+ if nextToken == nil {
+ break
+ }
+ }
+
+ c.allPullRequestIDs = prIDs
+ return c.allPullRequestIDs, nil
+}
+
+func (c *CodeCommitDownloader) getUsernameFromARN(arn string) string {
+ parts := strings.Split(arn, "/")
+ if len(parts) > 0 {
+ return parts[len(parts)-1]
+ }
+ return ""
+}
diff --git a/services/migrations/gitea_uploader_test.go b/services/migrations/gitea_uploader_test.go
index c9b924809819b..f2379dadf8fae 100644
--- a/services/migrations/gitea_uploader_test.go
+++ b/services/migrations/gitea_uploader_test.go
@@ -26,6 +26,7 @@ import (
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/test"
+ repo_service "code.gitea.io/gitea/services/repository"
"github.com/stretchr/testify/assert"
)
@@ -302,6 +303,8 @@ func TestGiteaUploadUpdateGitForPullRequest(t *testing.T) {
toRepoName := "migrated"
uploader := NewGiteaLocalUploader(context.Background(), fromRepoOwner, fromRepoOwner.Name, toRepoName)
uploader.gitServiceType = structs.GiteaService
+
+ assert.NoError(t, repo_service.Init(context.Background()))
assert.NoError(t, uploader.CreateRepo(&base.Repository{
Description: "description",
OriginalURL: fromRepo.RepoPath(),
diff --git a/services/migrations/http_client.go b/services/migrations/http_client.go
index 9e3caec191f2d..0b997e08f4b4a 100644
--- a/services/migrations/http_client.go
+++ b/services/migrations/http_client.go
@@ -24,6 +24,6 @@ func NewMigrationHTTPTransport() *http.Transport {
return &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: setting.Migrations.SkipTLSVerify},
Proxy: proxy.Proxy(),
- DialContext: hostmatcher.NewDialContext("migration", allowList, blockList),
+ DialContext: hostmatcher.NewDialContext("migration", allowList, blockList, setting.Proxy.ProxyURLFixed),
}
}
diff --git a/services/migrations/migrate.go b/services/migrations/migrate.go
index 21bdc68e73208..d0ad6d0139a95 100644
--- a/services/migrations/migrate.go
+++ b/services/migrations/migrate.go
@@ -499,9 +499,5 @@ func Init() error {
// TODO: at the moment, if ALLOW_LOCALNETWORKS=false, ALLOWED_DOMAINS=domain.com, and domain.com has IP 127.0.0.1, then it's still allowed.
// if we want to block such case, the private&loopback should be added to the blockList when ALLOW_LOCALNETWORKS=false
- if setting.Proxy.Enabled && setting.Proxy.ProxyURLFixed != nil {
- allowList.AppendPattern(setting.Proxy.ProxyURLFixed.Host)
- }
-
return nil
}
diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go
index 9f7ffb29c9f36..654a50d11efa6 100644
--- a/services/mirror/mirror_pull.go
+++ b/services/mirror/mirror_pull.go
@@ -24,6 +24,7 @@ import (
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
notify_service "code.gitea.io/gitea/services/notify"
+ repo_service "code.gitea.io/gitea/services/repository"
)
// gitShortEmptySha Git short empty SHA
@@ -559,6 +560,14 @@ func SyncPullMirror(ctx context.Context, repoID int64) bool {
}
}
+ // Update License
+ if err = repo_service.AddRepoToLicenseUpdaterQueue(&repo_service.LicenseUpdaterOptions{
+ RepoID: m.Repo.ID,
+ }); err != nil {
+ log.Error("SyncMirrors [repo: %-v]: unable to add repo to license updater queue: %v", m.Repo, err)
+ return false
+ }
+
log.Trace("SyncMirrors [repo: %-v]: Successfully updated", m.Repo)
return true
diff --git a/services/oauth2_provider/access_token.go b/services/oauth2_provider/access_token.go
new file mode 100644
index 0000000000000..00c960caf2ee7
--- /dev/null
+++ b/services/oauth2_provider/access_token.go
@@ -0,0 +1,214 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package oauth2_provider //nolint
+
+import (
+ "context"
+ "fmt"
+
+ auth "code.gitea.io/gitea/models/auth"
+ org_model "code.gitea.io/gitea/models/organization"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/timeutil"
+
+ "github.com/golang-jwt/jwt/v5"
+)
+
+// AccessTokenErrorCode represents an error code specified in RFC 6749
+// https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
+type AccessTokenErrorCode string
+
+const (
+ // AccessTokenErrorCodeInvalidRequest represents an error code specified in RFC 6749
+ AccessTokenErrorCodeInvalidRequest AccessTokenErrorCode = "invalid_request"
+ // AccessTokenErrorCodeInvalidClient represents an error code specified in RFC 6749
+ AccessTokenErrorCodeInvalidClient = "invalid_client"
+ // AccessTokenErrorCodeInvalidGrant represents an error code specified in RFC 6749
+ AccessTokenErrorCodeInvalidGrant = "invalid_grant"
+ // AccessTokenErrorCodeUnauthorizedClient represents an error code specified in RFC 6749
+ AccessTokenErrorCodeUnauthorizedClient = "unauthorized_client"
+ // AccessTokenErrorCodeUnsupportedGrantType represents an error code specified in RFC 6749
+ AccessTokenErrorCodeUnsupportedGrantType = "unsupported_grant_type"
+ // AccessTokenErrorCodeInvalidScope represents an error code specified in RFC 6749
+ AccessTokenErrorCodeInvalidScope = "invalid_scope"
+)
+
+// AccessTokenError represents an error response specified in RFC 6749
+// https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
+type AccessTokenError struct {
+ ErrorCode AccessTokenErrorCode `json:"error" form:"error"`
+ ErrorDescription string `json:"error_description"`
+}
+
+// Error returns the error message
+func (err AccessTokenError) Error() string {
+ return fmt.Sprintf("%s: %s", err.ErrorCode, err.ErrorDescription)
+}
+
+// TokenType specifies the kind of token
+type TokenType string
+
+const (
+ // TokenTypeBearer represents a token type specified in RFC 6749
+ TokenTypeBearer TokenType = "bearer"
+ // TokenTypeMAC represents a token type specified in RFC 6749
+ TokenTypeMAC = "mac"
+)
+
+// AccessTokenResponse represents a successful access token response
+// https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2
+type AccessTokenResponse struct {
+ AccessToken string `json:"access_token"`
+ TokenType TokenType `json:"token_type"`
+ ExpiresIn int64 `json:"expires_in"`
+ RefreshToken string `json:"refresh_token"`
+ IDToken string `json:"id_token,omitempty"`
+}
+
+func NewAccessTokenResponse(ctx context.Context, grant *auth.OAuth2Grant, serverKey, clientKey JWTSigningKey) (*AccessTokenResponse, *AccessTokenError) {
+ if setting.OAuth2.InvalidateRefreshTokens {
+ if err := grant.IncreaseCounter(ctx); err != nil {
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidGrant,
+ ErrorDescription: "cannot increase the grant counter",
+ }
+ }
+ }
+ // generate access token to access the API
+ expirationDate := timeutil.TimeStampNow().Add(setting.OAuth2.AccessTokenExpirationTime)
+ accessToken := &Token{
+ GrantID: grant.ID,
+ Kind: KindAccessToken,
+ RegisteredClaims: jwt.RegisteredClaims{
+ ExpiresAt: jwt.NewNumericDate(expirationDate.AsTime()),
+ },
+ }
+ signedAccessToken, err := accessToken.SignToken(serverKey)
+ if err != nil {
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot sign token",
+ }
+ }
+
+ // generate refresh token to request an access token after it expired later
+ refreshExpirationDate := timeutil.TimeStampNow().Add(setting.OAuth2.RefreshTokenExpirationTime * 60 * 60).AsTime()
+ refreshToken := &Token{
+ GrantID: grant.ID,
+ Counter: grant.Counter,
+ Kind: KindRefreshToken,
+ RegisteredClaims: jwt.RegisteredClaims{
+ ExpiresAt: jwt.NewNumericDate(refreshExpirationDate),
+ },
+ }
+ signedRefreshToken, err := refreshToken.SignToken(serverKey)
+ if err != nil {
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot sign token",
+ }
+ }
+
+ // generate OpenID Connect id_token
+ signedIDToken := ""
+ if grant.ScopeContains("openid") {
+ app, err := auth.GetOAuth2ApplicationByID(ctx, grant.ApplicationID)
+ if err != nil {
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot find application",
+ }
+ }
+ user, err := user_model.GetUserByID(ctx, grant.UserID)
+ if err != nil {
+ if user_model.IsErrUserNotExist(err) {
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot find user",
+ }
+ }
+ log.Error("Error loading user: %v", err)
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "server error",
+ }
+ }
+
+ idToken := &OIDCToken{
+ RegisteredClaims: jwt.RegisteredClaims{
+ ExpiresAt: jwt.NewNumericDate(expirationDate.AsTime()),
+ Issuer: setting.AppURL,
+ Audience: []string{app.ClientID},
+ Subject: fmt.Sprint(grant.UserID),
+ },
+ Nonce: grant.Nonce,
+ }
+ if grant.ScopeContains("profile") {
+ idToken.Name = user.GetDisplayName()
+ idToken.PreferredUsername = user.Name
+ idToken.Profile = user.HTMLURL()
+ idToken.Picture = user.AvatarLink(ctx)
+ idToken.Website = user.Website
+ idToken.Locale = user.Language
+ idToken.UpdatedAt = user.UpdatedUnix
+ }
+ if grant.ScopeContains("email") {
+ idToken.Email = user.Email
+ idToken.EmailVerified = user.IsActive
+ }
+ if grant.ScopeContains("groups") {
+ groups, err := GetOAuthGroupsForUser(ctx, user)
+ if err != nil {
+ log.Error("Error getting groups: %v", err)
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "server error",
+ }
+ }
+ idToken.Groups = groups
+ }
+
+ signedIDToken, err = idToken.SignToken(clientKey)
+ if err != nil {
+ return nil, &AccessTokenError{
+ ErrorCode: AccessTokenErrorCodeInvalidRequest,
+ ErrorDescription: "cannot sign token",
+ }
+ }
+ }
+
+ return &AccessTokenResponse{
+ AccessToken: signedAccessToken,
+ TokenType: TokenTypeBearer,
+ ExpiresIn: setting.OAuth2.AccessTokenExpirationTime,
+ RefreshToken: signedRefreshToken,
+ IDToken: signedIDToken,
+ }, nil
+}
+
+// returns a list of "org" and "org:team" strings,
+// that the given user is a part of.
+func GetOAuthGroupsForUser(ctx context.Context, user *user_model.User) ([]string, error) {
+ orgs, err := org_model.GetUserOrgsList(ctx, user)
+ if err != nil {
+ return nil, fmt.Errorf("GetUserOrgList: %w", err)
+ }
+
+ var groups []string
+ for _, org := range orgs {
+ groups = append(groups, org.Name)
+ teams, err := org.LoadTeams(ctx)
+ if err != nil {
+ return nil, fmt.Errorf("LoadTeams: %w", err)
+ }
+ for _, team := range teams {
+ if team.IsMember(ctx, user.ID) {
+ groups = append(groups, org.Name+":"+team.LowerName)
+ }
+ }
+ }
+ return groups, nil
+}
diff --git a/services/oauth2_provider/init.go b/services/oauth2_provider/init.go
new file mode 100644
index 0000000000000..e5958099a6b3c
--- /dev/null
+++ b/services/oauth2_provider/init.go
@@ -0,0 +1,19 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package oauth2_provider //nolint
+
+import (
+ "context"
+
+ "code.gitea.io/gitea/modules/setting"
+)
+
+// Init initializes the oauth source
+func Init(ctx context.Context) error {
+ if !setting.OAuth2.Enabled {
+ return nil
+ }
+
+ return InitSigningKey()
+}
diff --git a/services/auth/source/oauth2/jwtsigningkey.go b/services/oauth2_provider/jwtsigningkey.go
similarity index 99%
rename from services/auth/source/oauth2/jwtsigningkey.go
rename to services/oauth2_provider/jwtsigningkey.go
index 070fffe60f7fb..6c668db463574 100644
--- a/services/auth/source/oauth2/jwtsigningkey.go
+++ b/services/oauth2_provider/jwtsigningkey.go
@@ -1,7 +1,7 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
-package oauth2
+package oauth2_provider //nolint
import (
"crypto/ecdsa"
diff --git a/services/auth/source/oauth2/token.go b/services/oauth2_provider/token.go
similarity index 83%
rename from services/auth/source/oauth2/token.go
rename to services/oauth2_provider/token.go
index 3405619d3fa59..b71b11906e5ed 100644
--- a/services/auth/source/oauth2/token.go
+++ b/services/oauth2_provider/token.go
@@ -1,7 +1,7 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
-package oauth2
+package oauth2_provider //nolint
import (
"fmt"
@@ -12,29 +12,22 @@ import (
"github.com/golang-jwt/jwt/v5"
)
-// ___________ __
-// \__ ___/___ | | __ ____ ____
-// | | / _ \| |/ // __ \ / \
-// | |( <_> ) <\ ___/| | \
-// |____| \____/|__|_ \\___ >___| /
-// \/ \/ \/
-
// Token represents an Oauth grant
-// TokenType represents the type of token for an oauth application
-type TokenType int
+// TokenKind represents the type of token for an oauth application
+type TokenKind int
const (
- // TypeAccessToken is a token with short lifetime to access the api
- TypeAccessToken TokenType = 0
- // TypeRefreshToken is token with long lifetime to refresh access tokens obtained by the client
- TypeRefreshToken = iota
+ // KindAccessToken is a token with short lifetime to access the api
+ KindAccessToken TokenKind = 0
+ // KindRefreshToken is token with long lifetime to refresh access tokens obtained by the client
+ KindRefreshToken = iota
)
// Token represents a JWT token used to authenticate a client
type Token struct {
GrantID int64 `json:"gnt"`
- Type TokenType `json:"tt"`
+ Kind TokenKind `json:"tt"`
Counter int64 `json:"cnt,omitempty"`
jwt.RegisteredClaims
}
diff --git a/services/packages/auth.go b/services/packages/auth.go
index 8263c28bed02b..4526a8e303aab 100644
--- a/services/packages/auth.go
+++ b/services/packages/auth.go
@@ -9,6 +9,7 @@ import (
"strings"
"time"
+ auth_model "code.gitea.io/gitea/models/auth"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
@@ -18,10 +19,14 @@ import (
type packageClaims struct {
jwt.RegisteredClaims
+ PackageMeta
+}
+type PackageMeta struct {
UserID int64
+ Scope auth_model.AccessTokenScope
}
-func CreateAuthorizationToken(u *user_model.User) (string, error) {
+func CreateAuthorizationToken(u *user_model.User, packageScope auth_model.AccessTokenScope) (string, error) {
now := time.Now()
claims := packageClaims{
@@ -29,7 +34,10 @@ func CreateAuthorizationToken(u *user_model.User) (string, error) {
ExpiresAt: jwt.NewNumericDate(now.Add(24 * time.Hour)),
NotBefore: jwt.NewNumericDate(now),
},
- UserID: u.ID,
+ PackageMeta: PackageMeta{
+ UserID: u.ID,
+ Scope: packageScope,
+ },
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
@@ -41,32 +49,36 @@ func CreateAuthorizationToken(u *user_model.User) (string, error) {
return tokenString, nil
}
-func ParseAuthorizationToken(req *http.Request) (int64, error) {
+func ParseAuthorizationRequest(req *http.Request) (*PackageMeta, error) {
h := req.Header.Get("Authorization")
if h == "" {
- return 0, nil
+ return nil, nil
}
parts := strings.SplitN(h, " ", 2)
if len(parts) != 2 {
log.Error("split token failed: %s", h)
- return 0, fmt.Errorf("split token failed")
+ return nil, fmt.Errorf("split token failed")
}
- token, err := jwt.ParseWithClaims(parts[1], &packageClaims{}, func(t *jwt.Token) (any, error) {
+ return ParseAuthorizationToken(parts[1])
+}
+
+func ParseAuthorizationToken(tokenStr string) (*PackageMeta, error) {
+ token, err := jwt.ParseWithClaims(tokenStr, &packageClaims{}, func(t *jwt.Token) (any, error) {
if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("unexpected signing method: %v", t.Header["alg"])
}
return setting.GetGeneralTokenSigningSecret(), nil
})
if err != nil {
- return 0, err
+ return nil, err
}
c, ok := token.Claims.(*packageClaims)
if !token.Valid || !ok {
- return 0, fmt.Errorf("invalid token claim")
+ return nil, fmt.Errorf("invalid token claim")
}
- return c.UserID, nil
+ return &c.PackageMeta, nil
}
diff --git a/services/packages/rpm/repository.go b/services/packages/rpm/repository.go
index bc342e53ab644..a7d196c15c5fa 100644
--- a/services/packages/rpm/repository.go
+++ b/services/packages/rpm/repository.go
@@ -13,7 +13,6 @@ import (
"errors"
"fmt"
"io"
- "net/url"
"strings"
"time"
@@ -438,7 +437,7 @@ func buildPrimary(ctx context.Context, pv *packages_model.PackageVersion, pfs []
Archive: pd.FileMetadata.ArchiveSize,
},
Location: Location{
- Href: fmt.Sprintf("package/%s/%s/%s/%s", url.PathEscape(pd.Package.Name), url.PathEscape(packageVersion), url.PathEscape(pd.FileMetadata.Architecture), url.PathEscape(fmt.Sprintf("%s-%s.%s.rpm", pd.Package.Name, packageVersion, pd.FileMetadata.Architecture))),
+ Href: fmt.Sprintf("package/%s/%s/%s/%s-%s.%s.rpm", pd.Package.Name, packageVersion, pd.FileMetadata.Architecture, pd.Package.Name, packageVersion, pd.FileMetadata.Architecture),
},
Format: Format{
License: pd.VersionMetadata.License,
diff --git a/services/pull/check.go b/services/pull/check.go
index 7d93ff7a8a4b2..ce212f7d83bed 100644
--- a/services/pull/check.go
+++ b/services/pull/check.go
@@ -21,6 +21,7 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/process"
@@ -334,9 +335,15 @@ func handler(items ...string) []string {
}
func testPR(id int64) {
- pullWorkingPool.CheckIn(fmt.Sprint(id))
- defer pullWorkingPool.CheckOut(fmt.Sprint(id))
- ctx, _, finished := process.GetManager().AddContext(graceful.GetManager().HammerContext(), fmt.Sprintf("Test PR[%d] from patch checking queue", id))
+ ctx := graceful.GetManager().HammerContext()
+ releaser, err := globallock.Lock(ctx, getPullWorkingLockKey(id))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return
+ }
+ defer releaser()
+
+ ctx, _, finished := process.GetManager().AddContext(ctx, fmt.Sprintf("Test PR[%d] from patch checking queue", id))
defer finished()
pr, err := issues_model.GetPullRequestByID(ctx, id)
diff --git a/services/pull/merge.go b/services/pull/merge.go
index eb67e0694615d..a3fbe4f627b00 100644
--- a/services/pull/merge.go
+++ b/services/pull/merge.go
@@ -23,6 +23,7 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/cache"
"code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/httplib"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/references"
@@ -169,9 +170,6 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
return fmt.Errorf("unable to load head repo: %w", err)
}
- pullWorkingPool.CheckIn(fmt.Sprint(pr.ID))
- defer pullWorkingPool.CheckOut(fmt.Sprint(pr.ID))
-
prUnit, err := pr.BaseRepo.GetUnit(ctx, unit.TypePullRequests)
if err != nil {
log.Error("pr.BaseRepo.GetUnit(unit.TypePullRequests): %v", err)
@@ -184,11 +182,18 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
return models.ErrInvalidMergeStyle{ID: pr.BaseRepo.ID, Style: mergeStyle}
}
+ releaser, err := globallock.Lock(ctx, getPullWorkingLockKey(pr.ID))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return fmt.Errorf("lock.Lock: %w", err)
+ }
+ defer releaser()
defer func() {
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "")
}()
_, err = doMergeAndPush(ctx, pr, doer, mergeStyle, expectedHeadCommitID, message, repo_module.PushTriggerPRMergeToBase)
+ releaser()
if err != nil {
return err
}
@@ -487,10 +492,14 @@ func CheckPullBranchProtections(ctx context.Context, pr *issues_model.PullReques
// MergedManually mark pr as merged manually
func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, commitID string) error {
- pullWorkingPool.CheckIn(fmt.Sprint(pr.ID))
- defer pullWorkingPool.CheckOut(fmt.Sprint(pr.ID))
+ releaser, err := globallock.Lock(ctx, getPullWorkingLockKey(pr.ID))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return fmt.Errorf("lock.Lock: %w", err)
+ }
+ defer releaser()
- if err := db.WithTx(ctx, func(ctx context.Context) error {
+ err = db.WithTx(ctx, func(ctx context.Context) error {
if err := pr.LoadBaseRepo(ctx); err != nil {
return err
}
@@ -540,7 +549,9 @@ func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *use
return fmt.Errorf("SetMerged failed")
}
return nil
- }); err != nil {
+ })
+ releaser()
+ if err != nil {
return err
}
diff --git a/services/pull/pull.go b/services/pull/pull.go
index e69c842a2d4b5..bab4e49998e15 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -25,20 +25,21 @@ import (
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/sync"
"code.gitea.io/gitea/modules/util"
gitea_context "code.gitea.io/gitea/services/context"
issue_service "code.gitea.io/gitea/services/issue"
notify_service "code.gitea.io/gitea/services/notify"
)
-// TODO: use clustered lock (unique queue? or *abuse* cache)
-var pullWorkingPool = sync.NewExclusivePool()
+func getPullWorkingLockKey(prID int64) string {
+ return fmt.Sprintf("pull_working_%d", prID)
+}
// NewPullRequest creates new pull request with labels for repository.
func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *issues_model.Issue, labelIDs []int64, uuids []string, pr *issues_model.PullRequest, assigneeIDs []int64) error {
@@ -202,8 +203,12 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss
// ChangeTargetBranch changes the target branch of this pull request, as the given user.
func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, targetBranch string) (err error) {
- pullWorkingPool.CheckIn(fmt.Sprint(pr.ID))
- defer pullWorkingPool.CheckOut(fmt.Sprint(pr.ID))
+ releaser, err := globallock.Lock(ctx, getPullWorkingLockKey(pr.ID))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return fmt.Errorf("lock.Lock: %w", err)
+ }
+ defer releaser()
// Current target branch is already the same
if pr.BaseBranch == targetBranch {
@@ -990,6 +995,8 @@ type CommitInfo struct {
}
// GetPullCommits returns all commits on given pull request and the last review commit sha
+// Attention: The last review commit sha must be from the latest review whose commit id is not empty.
+// So the type of the latest review cannot be "ReviewTypeRequest".
func GetPullCommits(ctx *gitea_context.Context, issue *issues_model.Issue) ([]CommitInfo, string, error) {
pull := issue.PullRequest
@@ -1035,7 +1042,11 @@ func GetPullCommits(ctx *gitea_context.Context, issue *issues_model.Issue) ([]Co
lastreview, err := issues_model.FindLatestReviews(ctx, issues_model.FindReviewOptions{
IssueID: issue.ID,
ReviewerID: ctx.Doer.ID,
- Type: issues_model.ReviewTypeUnknown,
+ Types: []issues_model.ReviewType{
+ issues_model.ReviewTypeApprove,
+ issues_model.ReviewTypeComment,
+ issues_model.ReviewTypeReject,
+ },
})
if err != nil && !issues_model.IsErrReviewNotExist(err) {
diff --git a/services/pull/review.go b/services/pull/review.go
index 3d5eca779f8e9..78723a58ae305 100644
--- a/services/pull/review.go
+++ b/services/pull/review.go
@@ -348,7 +348,7 @@ func DismissApprovalReviews(ctx context.Context, doer *user_model.User, pull *is
reviews, err := issues_model.FindReviews(ctx, issues_model.FindReviewOptions{
ListOptions: db.ListOptionsAll,
IssueID: pull.IssueID,
- Type: issues_model.ReviewTypeApprove,
+ Types: []issues_model.ReviewType{issues_model.ReviewTypeApprove},
Dismissed: optional.Some(false),
})
if err != nil {
diff --git a/services/pull/update.go b/services/pull/update.go
index a7fd81421e9b1..311ffc2442dc5 100644
--- a/services/pull/update.go
+++ b/services/pull/update.go
@@ -14,6 +14,7 @@ import (
"code.gitea.io/gitea/models/unit"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/repository"
)
@@ -25,8 +26,12 @@ func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.
return fmt.Errorf("update of agit flow pull request's head branch is unsupported")
}
- pullWorkingPool.CheckIn(fmt.Sprint(pr.ID))
- defer pullWorkingPool.CheckOut(fmt.Sprint(pr.ID))
+ releaser, err := globallock.Lock(ctx, getPullWorkingLockKey(pr.ID))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return fmt.Errorf("lock.Lock: %w", err)
+ }
+ defer releaser()
diffCount, err := GetDiverging(ctx, pr)
if err != nil {
diff --git a/services/release/release.go b/services/release/release.go
index 399fdc79c010d..5c021404b8fdc 100644
--- a/services/release/release.go
+++ b/services/release/release.go
@@ -65,7 +65,7 @@ func createTag(ctx context.Context, gitRepo *git.Repository, rel *repo_model.Rel
commit, err := gitRepo.GetCommit(rel.Target)
if err != nil {
- return false, fmt.Errorf("createTag::GetCommit[%v]: %w", rel.Target, err)
+ return false, err
}
if len(msg) > 0 {
diff --git a/services/repository/branch.go b/services/repository/branch.go
index 7fc99930776a1..67df4363e441a 100644
--- a/services/repository/branch.go
+++ b/services/repository/branch.go
@@ -483,13 +483,12 @@ func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.R
}
rawBranch, err := git_model.GetBranch(ctx, repo.ID, branchName)
- if err != nil {
+ if err != nil && !git_model.IsErrBranchNotExist(err) {
return fmt.Errorf("GetBranch: %vc", err)
}
- if rawBranch.IsDeleted {
- return nil
- }
+ // database branch record not exist or it's a deleted branch
+ notExist := git_model.IsErrBranchNotExist(err) || rawBranch.IsDeleted
commit, err := gitRepo.GetBranchCommit(branchName)
if err != nil {
@@ -497,8 +496,10 @@ func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.R
}
if err := db.WithTx(ctx, func(ctx context.Context) error {
- if err := git_model.AddDeletedBranch(ctx, repo.ID, branchName, doer.ID); err != nil {
- return err
+ if !notExist {
+ if err := git_model.AddDeletedBranch(ctx, repo.ID, branchName, doer.ID); err != nil {
+ return err
+ }
}
return gitRepo.DeleteBranch(branchName, git.DeleteBranchOptions{
@@ -611,6 +612,14 @@ func SetRepoDefaultBranch(ctx context.Context, repo *repo_model.Repository, gitR
return err
}
+ if !repo.IsEmpty {
+ if err := AddRepoToLicenseUpdaterQueue(&LicenseUpdaterOptions{
+ RepoID: repo.ID,
+ }); err != nil {
+ log.Error("AddRepoToLicenseUpdaterQueue: %v", err)
+ }
+ }
+
notify_service.ChangeDefaultBranch(ctx, repo)
return nil
diff --git a/services/repository/create.go b/services/repository/create.go
index 971793bcc6e35..282b2d3e58d46 100644
--- a/services/repository/create.go
+++ b/services/repository/create.go
@@ -303,6 +303,25 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
rollbackRepo.OwnerID = u.ID
return fmt.Errorf("CreateRepository(git update-server-info): %w", err)
}
+
+ // update licenses
+ var licenses []string
+ if len(opts.License) > 0 {
+ licenses = append(licenses, ConvertLicenseName(opts.License))
+
+ stdout, _, err := git.NewCommand(ctx, "rev-parse", "HEAD").
+ SetDescription(fmt.Sprintf("CreateRepository(git rev-parse HEAD): %s", repoPath)).
+ RunStdString(&git.RunOpts{Dir: repoPath})
+ if err != nil {
+ log.Error("CreateRepository(git rev-parse HEAD) in %v: Stdout: %s\nError: %v", repo, stdout, err)
+ rollbackRepo = repo
+ rollbackRepo.OwnerID = u.ID
+ return fmt.Errorf("CreateRepository(git rev-parse HEAD): %w", err)
+ }
+ if err := repo_model.UpdateRepoLicenses(ctx, repo, stdout, licenses); err != nil {
+ return err
+ }
+ }
return nil
}); err != nil {
if rollbackRepo != nil {
diff --git a/services/repository/delete.go b/services/repository/delete.go
index cd779b05c3501..e580833140891 100644
--- a/services/repository/delete.go
+++ b/services/repository/delete.go
@@ -140,6 +140,7 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID
&git_model.Branch{RepoID: repoID},
&git_model.LFSLock{RepoID: repoID},
&repo_model.LanguageStat{RepoID: repoID},
+ &repo_model.RepoLicense{RepoID: repoID},
&issues_model.Milestone{RepoID: repoID},
&repo_model.Mirror{RepoID: repoID},
&activities_model.Notification{RepoID: repoID},
diff --git a/services/repository/fork.go b/services/repository/fork.go
index f074fd1082118..e1145556791c5 100644
--- a/services/repository/fork.go
+++ b/services/repository/fork.go
@@ -198,6 +198,9 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
if err := repo_model.CopyLanguageStat(ctx, opts.BaseRepo, repo); err != nil {
log.Error("Copy language stat from oldRepo failed: %v", err)
}
+ if err := repo_model.CopyLicense(ctx, opts.BaseRepo, repo); err != nil {
+ return nil, err
+ }
gitRepo, err := gitrepo.OpenRepository(ctx, repo)
if err != nil {
diff --git a/services/repository/license.go b/services/repository/license.go
new file mode 100644
index 0000000000000..2453be3c871ad
--- /dev/null
+++ b/services/repository/license.go
@@ -0,0 +1,205 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repository
+
+import (
+ "context"
+ "fmt"
+ "io"
+
+ "code.gitea.io/gitea/models/db"
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/modules/container"
+ "code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/gitrepo"
+ "code.gitea.io/gitea/modules/graceful"
+ "code.gitea.io/gitea/modules/json"
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/options"
+ "code.gitea.io/gitea/modules/queue"
+
+ licenseclassifier "github.com/google/licenseclassifier/v2"
+)
+
+var (
+ classifier *licenseclassifier.Classifier
+ LicenseFileName = "LICENSE"
+ licenseAliases map[string]string
+
+ // licenseUpdaterQueue represents a queue to handle update repo licenses
+ licenseUpdaterQueue *queue.WorkerPoolQueue[*LicenseUpdaterOptions]
+)
+
+func AddRepoToLicenseUpdaterQueue(opts *LicenseUpdaterOptions) error {
+ if opts == nil {
+ return nil
+ }
+ return licenseUpdaterQueue.Push(opts)
+}
+
+func loadLicenseAliases() error {
+ if licenseAliases != nil {
+ return nil
+ }
+
+ data, err := options.AssetFS().ReadFile("license", "etc", "license-aliases.json")
+ if err != nil {
+ return err
+ }
+ err = json.Unmarshal(data, &licenseAliases)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func ConvertLicenseName(name string) string {
+ if err := loadLicenseAliases(); err != nil {
+ return name
+ }
+
+ v, ok := licenseAliases[name]
+ if ok {
+ return v
+ }
+ return name
+}
+
+func InitLicenseClassifier() error {
+ // threshold should be 0.84~0.86 or the test will be failed
+ classifier = licenseclassifier.NewClassifier(.85)
+ licenseFiles, err := options.AssetFS().ListFiles("license", true)
+ if err != nil {
+ return err
+ }
+
+ existLicense := make(container.Set[string])
+ if len(licenseFiles) > 0 {
+ for _, licenseFile := range licenseFiles {
+ licenseName := ConvertLicenseName(licenseFile)
+ if existLicense.Contains(licenseName) {
+ continue
+ }
+ existLicense.Add(licenseName)
+ data, err := options.License(licenseFile)
+ if err != nil {
+ return err
+ }
+ classifier.AddContent("License", licenseFile, licenseName, data)
+ }
+ }
+ return nil
+}
+
+type LicenseUpdaterOptions struct {
+ RepoID int64
+}
+
+func repoLicenseUpdater(items ...*LicenseUpdaterOptions) []*LicenseUpdaterOptions {
+ ctx := graceful.GetManager().ShutdownContext()
+
+ for _, opts := range items {
+ repo, err := repo_model.GetRepositoryByID(ctx, opts.RepoID)
+ if err != nil {
+ log.Error("repoLicenseUpdater [%d] failed: GetRepositoryByID: %v", opts.RepoID, err)
+ continue
+ }
+ if repo.IsEmpty {
+ continue
+ }
+
+ gitRepo, err := gitrepo.OpenRepository(ctx, repo)
+ if err != nil {
+ log.Error("repoLicenseUpdater [%d] failed: OpenRepository: %v", opts.RepoID, err)
+ continue
+ }
+ defer gitRepo.Close()
+
+ commit, err := gitRepo.GetBranchCommit(repo.DefaultBranch)
+ if err != nil {
+ log.Error("repoLicenseUpdater [%d] failed: GetBranchCommit: %v", opts.RepoID, err)
+ continue
+ }
+ if err = UpdateRepoLicenses(ctx, repo, commit); err != nil {
+ log.Error("repoLicenseUpdater [%d] failed: updateRepoLicenses: %v", opts.RepoID, err)
+ }
+ }
+ return nil
+}
+
+func SyncRepoLicenses(ctx context.Context) error {
+ log.Trace("Doing: SyncRepoLicenses")
+
+ if err := db.Iterate(
+ ctx,
+ nil,
+ func(ctx context.Context, repo *repo_model.Repository) error {
+ select {
+ case <-ctx.Done():
+ return db.ErrCancelledf("before sync repo licenses for %s", repo.FullName())
+ default:
+ }
+ return AddRepoToLicenseUpdaterQueue(&LicenseUpdaterOptions{RepoID: repo.ID})
+ },
+ ); err != nil {
+ log.Trace("Error: SyncRepoLicenses: %v", err)
+ return err
+ }
+
+ log.Trace("Finished: SyncReposLicenses")
+ return nil
+}
+
+// UpdateRepoLicenses will update repository licenses col if license file exists
+func UpdateRepoLicenses(ctx context.Context, repo *repo_model.Repository, commit *git.Commit) error {
+ if commit == nil {
+ return nil
+ }
+
+ b, err := commit.GetBlobByPath(LicenseFileName)
+ if err != nil && !git.IsErrNotExist(err) {
+ return fmt.Errorf("GetBlobByPath: %w", err)
+ }
+
+ if git.IsErrNotExist(err) {
+ return repo_model.CleanRepoLicenses(ctx, repo)
+ }
+
+ licenses := make([]string, 0)
+ if b != nil {
+ r, err := b.DataAsync()
+ if err != nil {
+ return err
+ }
+ defer r.Close()
+
+ licenses, err = detectLicense(r)
+ if err != nil {
+ return fmt.Errorf("detectLicense: %w", err)
+ }
+ }
+ return repo_model.UpdateRepoLicenses(ctx, repo, commit.ID.String(), licenses)
+}
+
+// detectLicense returns the licenses detected by the given content buff
+func detectLicense(r io.Reader) ([]string, error) {
+ if r == nil {
+ return nil, nil
+ }
+
+ matches, err := classifier.MatchFrom(r)
+ if err != nil {
+ return nil, err
+ }
+ if len(matches.Matches) > 0 {
+ results := make(container.Set[string], len(matches.Matches))
+ for _, r := range matches.Matches {
+ if r.MatchType == "License" && !results.Contains(r.Variant) {
+ results.Add(r.Variant)
+ }
+ }
+ return results.Values(), nil
+ }
+ return nil, nil
+}
diff --git a/services/repository/license_test.go b/services/repository/license_test.go
new file mode 100644
index 0000000000000..39e9738145c5d
--- /dev/null
+++ b/services/repository/license_test.go
@@ -0,0 +1,73 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repository
+
+import (
+ "fmt"
+ "strings"
+ "testing"
+
+ repo_module "code.gitea.io/gitea/modules/repository"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func Test_detectLicense(t *testing.T) {
+ type DetectLicenseTest struct {
+ name string
+ arg string
+ want []string
+ }
+
+ tests := []DetectLicenseTest{
+ {
+ name: "empty",
+ arg: "",
+ want: nil,
+ },
+ {
+ name: "no detected license",
+ arg: "Copyright (c) 2023 Gitea",
+ want: nil,
+ },
+ }
+
+ repo_module.LoadRepoConfig()
+ err := loadLicenseAliases()
+ assert.NoError(t, err)
+ for _, licenseName := range repo_module.Licenses {
+ license, err := repo_module.GetLicense(licenseName, &repo_module.LicenseValues{
+ Owner: "Gitea",
+ Email: "teabot@gitea.io",
+ Repo: "gitea",
+ Year: "2024",
+ })
+ assert.NoError(t, err)
+
+ tests = append(tests, DetectLicenseTest{
+ name: fmt.Sprintf("single license test: %s", licenseName),
+ arg: string(license),
+ want: []string{ConvertLicenseName(licenseName)},
+ })
+ }
+
+ err = InitLicenseClassifier()
+ assert.NoError(t, err)
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ license, err := detectLicense(strings.NewReader(tt.arg))
+ assert.NoError(t, err)
+ assert.Equal(t, tt.want, license)
+ })
+ }
+
+ result, err := detectLicense(strings.NewReader(tests[2].arg + tests[3].arg + tests[4].arg))
+ assert.NoError(t, err)
+ t.Run("multiple licenses test", func(t *testing.T) {
+ assert.Equal(t, 3, len(result))
+ assert.Contains(t, result, tests[2].want[0])
+ assert.Contains(t, result, tests[3].want[0])
+ assert.Contains(t, result, tests[4].want[0])
+ })
+}
diff --git a/services/repository/migrate.go b/services/repository/migrate.go
index 2e901791b4adf..c627b46fab56f 100644
--- a/services/repository/migrate.go
+++ b/services/repository/migrate.go
@@ -172,6 +172,11 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
return repo, fmt.Errorf("StoreMissingLfsObjectsInRepository: %w", err)
}
}
+
+ // Update repo license
+ if err := AddRepoToLicenseUpdaterQueue(&LicenseUpdaterOptions{RepoID: repo.ID}); err != nil {
+ log.Error("Failed to add repo to license updater queue: %v", err)
+ }
}
ctx, committer, err := db.TxContext(ctx)
diff --git a/services/repository/push.go b/services/repository/push.go
index f27e6a58dd6ce..8b81588c07285 100644
--- a/services/repository/push.go
+++ b/services/repository/push.go
@@ -320,8 +320,9 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
}
releases, err := db.Find[repo_model.Release](ctx, repo_model.FindReleasesOptions{
- RepoID: repo.ID,
- TagNames: tags,
+ RepoID: repo.ID,
+ TagNames: tags,
+ IncludeTags: true,
})
if err != nil {
return fmt.Errorf("db.Find[repo_model.Release]: %w", err)
@@ -382,12 +383,12 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
rel, has := relMap[lowerTag]
+ parts := strings.SplitN(tag.Message, "\n", 2)
+ note := ""
+ if len(parts) > 1 {
+ note = parts[1]
+ }
if !has {
- parts := strings.SplitN(tag.Message, "\n", 2)
- note := ""
- if len(parts) > 1 {
- note = parts[1]
- }
rel = &repo_model.Release{
RepoID: repo.ID,
Title: parts[0],
@@ -408,10 +409,11 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
newReleases = append(newReleases, rel)
} else {
+ rel.Title = parts[0]
+ rel.Note = note
rel.Sha1 = commit.ID.String()
rel.CreatedUnix = timeutil.TimeStamp(createdAt.Unix())
rel.NumCommits = commitsCount
- rel.IsDraft = false
if rel.IsTag && author != nil {
rel.PublisherID = author.ID
}
diff --git a/services/repository/repository.go b/services/repository/repository.go
index 5306e7d45cce6..59b4491132da9 100644
--- a/services/repository/repository.go
+++ b/services/repository/repository.go
@@ -18,6 +18,7 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/queue"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/structs"
@@ -96,6 +97,12 @@ func PushCreateRepo(ctx context.Context, authUser, owner *user_model.User, repoN
// Init start repository service
func Init(ctx context.Context) error {
+ licenseUpdaterQueue = queue.CreateUniqueQueue(graceful.GetManager().ShutdownContext(), "repo_license_updater", repoLicenseUpdater)
+ if licenseUpdaterQueue == nil {
+ return fmt.Errorf("unable to create repo_license_updater queue")
+ }
+ go graceful.GetManager().RunWithCancel(licenseUpdaterQueue)
+
if err := repo_module.LoadRepoConfig(); err != nil {
return err
}
diff --git a/services/repository/transfer.go b/services/repository/transfer.go
index f48653072a813..7ad6b46fa4ce8 100644
--- a/services/repository/transfer.go
+++ b/services/repository/transfer.go
@@ -18,16 +18,16 @@ import (
project_model "code.gitea.io/gitea/models/project"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/log"
repo_module "code.gitea.io/gitea/modules/repository"
- "code.gitea.io/gitea/modules/sync"
"code.gitea.io/gitea/modules/util"
notify_service "code.gitea.io/gitea/services/notify"
)
-// repoWorkingPool represents a working pool to order the parallel changes to the same repository
-// TODO: use clustered lock (unique queue? or *abuse* cache)
-var repoWorkingPool = sync.NewExclusivePool()
+func getRepoWorkingLockKey(repoID int64) string {
+ return fmt.Sprintf("repo_working_%d", repoID)
+}
// TransferOwnership transfers all corresponding setting from old user to new one.
func TransferOwnership(ctx context.Context, doer, newOwner *user_model.User, repo *repo_model.Repository, teams []*organization.Team) error {
@@ -42,12 +42,17 @@ func TransferOwnership(ctx context.Context, doer, newOwner *user_model.User, rep
oldOwner := repo.Owner
- repoWorkingPool.CheckIn(fmt.Sprint(repo.ID))
+ releaser, err := globallock.Lock(ctx, getRepoWorkingLockKey(repo.ID))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return fmt.Errorf("lock.Lock: %w", err)
+ }
+ defer releaser()
+
if err := transferOwnership(ctx, doer, newOwner.Name, repo); err != nil {
- repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
return err
}
- repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
+ releaser()
newRepo, err := repo_model.GetRepositoryByID(ctx, repo.ID)
if err != nil {
@@ -360,15 +365,20 @@ func ChangeRepositoryName(ctx context.Context, doer *user_model.User, repo *repo
oldRepoName := repo.Name
// Change repository directory name. We must lock the local copy of the
- // repo so that we can atomically rename the repo path and updates the
+ // repo so that we can automatically rename the repo path and updates the
// local copy's origin accordingly.
- repoWorkingPool.CheckIn(fmt.Sprint(repo.ID))
+ releaser, err := globallock.Lock(ctx, getRepoWorkingLockKey(repo.ID))
+ if err != nil {
+ log.Error("lock.Lock(): %v", err)
+ return fmt.Errorf("lock.Lock: %w", err)
+ }
+ defer releaser()
+
if err := changeRepositoryName(ctx, repo, newRepoName); err != nil {
- repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
return err
}
- repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
+ releaser()
repo.Name = newRepoName
notify_service.RenameRepository(ctx, doer, repo, oldRepoName)
diff --git a/services/user/user_test.go b/services/user/user_test.go
index bd6019a14fdcf..cd0f5975015d5 100644
--- a/services/user/user_test.go
+++ b/services/user/user_test.go
@@ -92,7 +92,7 @@ func TestCreateUser(t *testing.T) {
MustChangePassword: false,
}
- assert.NoError(t, user_model.CreateUser(db.DefaultContext, user))
+ assert.NoError(t, user_model.CreateUser(db.DefaultContext, user, &user_model.Meta{}))
assert.NoError(t, DeleteUser(db.DefaultContext, user, false))
}
@@ -177,7 +177,7 @@ func TestCreateUser_Issue5882(t *testing.T) {
for _, v := range tt {
setting.Admin.DisableRegularOrgCreation = v.disableOrgCreation
- assert.NoError(t, user_model.CreateUser(db.DefaultContext, v.user))
+ assert.NoError(t, user_model.CreateUser(db.DefaultContext, v.user, &user_model.Meta{}))
u, err := user_model.GetUserByEmail(db.DefaultContext, v.user.Email)
assert.NoError(t, err)
diff --git a/services/webhook/deliver.go b/services/webhook/deliver.go
index b2c0a73784d94..4707602cdf497 100644
--- a/services/webhook/deliver.go
+++ b/services/webhook/deliver.go
@@ -303,7 +303,7 @@ func Init() error {
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: setting.Webhook.SkipTLSVerify},
Proxy: webhookProxy(allowedHostMatcher),
- DialContext: hostmatcher.NewDialContextWithProxy("webhook", allowedHostMatcher, nil, setting.Webhook.ProxyURLFixed),
+ DialContext: hostmatcher.NewDialContext("webhook", allowedHostMatcher, nil, setting.Webhook.ProxyURLFixed),
},
}
diff --git a/services/webhook/discord.go b/services/webhook/discord.go
index f27b39dac3716..59e87a7e1fb67 100644
--- a/services/webhook/discord.go
+++ b/services/webhook/discord.go
@@ -11,6 +11,7 @@ import (
"net/url"
"strconv"
"strings"
+ "unicode/utf8"
webhook_model "code.gitea.io/gitea/models/webhook"
"code.gitea.io/gitea/modules/git"
@@ -154,8 +155,14 @@ func (d discordConvertor) Push(p *api.PushPayload) (DiscordPayload, error) {
var text string
// for each commit, generate attachment text
for i, commit := range p.Commits {
- text += fmt.Sprintf("[%s](%s) %s - %s", commit.ID[:7], commit.URL,
- strings.TrimRight(commit.Message, "\r\n"), commit.Author.Name)
+ // limit the commit message display to just the summary, otherwise it would be hard to read
+ message := strings.TrimRight(strings.SplitN(commit.Message, "\n", 1)[0], "\r")
+
+ // a limit of 50 is set because GitHub does the same
+ if utf8.RuneCountInString(message) > 50 {
+ message = fmt.Sprintf("%.47s...", message)
+ }
+ text += fmt.Sprintf("[%s](%s) %s - %s", commit.ID[:7], commit.URL, message, commit.Author.Name)
// add linebreak to each commit but the last
if i < len(p.Commits)-1 {
text += "\n"
diff --git a/services/webhook/discord_test.go b/services/webhook/discord_test.go
index c04b95383bf13..fbb4b24ef12dd 100644
--- a/services/webhook/discord_test.go
+++ b/services/webhook/discord_test.go
@@ -80,6 +80,20 @@ func TestDiscordPayload(t *testing.T) {
assert.Equal(t, p.Sender.AvatarURL, pl.Embeds[0].Author.IconURL)
})
+ t.Run("PushWithLongCommitMessage", func(t *testing.T) {
+ p := pushTestMultilineCommitMessagePayload()
+
+ pl, err := dc.Push(p)
+ require.NoError(t, err)
+
+ assert.Len(t, pl.Embeds, 1)
+ assert.Equal(t, "[test/repo:test] 2 new commits", pl.Embeds[0].Title)
+ assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) This is a commit summary âš ï¸âš ï¸âš ï¸âš ï¸ containing ä½ å¥½... - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) This is a commit summary âš ï¸âš ï¸âš ï¸âš ï¸ containing ä½ å¥½... - user1", pl.Embeds[0].Description)
+ assert.Equal(t, p.Sender.UserName, pl.Embeds[0].Author.Name)
+ assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.Embeds[0].Author.URL)
+ assert.Equal(t, p.Sender.AvatarURL, pl.Embeds[0].Author.IconURL)
+ })
+
t.Run("Issue", func(t *testing.T) {
p := issueTestPayload()
diff --git a/services/webhook/general_test.go b/services/webhook/general_test.go
index fc6e7140e7be0..d6a77c9442560 100644
--- a/services/webhook/general_test.go
+++ b/services/webhook/general_test.go
@@ -64,9 +64,17 @@ func forkTestPayload() *api.ForkPayload {
}
func pushTestPayload() *api.PushPayload {
+ return pushTestPayloadWithCommitMessage("commit message")
+}
+
+func pushTestMultilineCommitMessagePayload() *api.PushPayload {
+ return pushTestPayloadWithCommitMessage("This is a commit summary âš ï¸âš ï¸âš ï¸âš ï¸ containing ä½ å¥½ âš ï¸âš ï¸ï¸\n\nThis is the message body.")
+}
+
+func pushTestPayloadWithCommitMessage(message string) *api.PushPayload {
commit := &api.PayloadCommit{
ID: "2020558fe2e34debb818a514715839cabd25e778",
- Message: "commit message",
+ Message: message,
URL: "http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778",
Author: &api.PayloadUser{
Name: "user1",
diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go
index fdcc5feefa7ec..7a0419aea7c7e 100644
--- a/services/wiki/wiki.go
+++ b/services/wiki/wiki.go
@@ -18,19 +18,20 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
+ "code.gitea.io/gitea/modules/globallock"
"code.gitea.io/gitea/modules/log"
repo_module "code.gitea.io/gitea/modules/repository"
- "code.gitea.io/gitea/modules/sync"
"code.gitea.io/gitea/modules/util"
asymkey_service "code.gitea.io/gitea/services/asymkey"
repo_service "code.gitea.io/gitea/services/repository"
)
-// TODO: use clustered lock (unique queue? or *abuse* cache)
-var wikiWorkingPool = sync.NewExclusivePool()
-
const DefaultRemote = "origin"
+func getWikiWorkingLockKey(repoID int64) string {
+ return fmt.Sprintf("wiki_working_%d", repoID)
+}
+
// InitWiki initializes a wiki for repository,
// it does nothing when repository already has wiki.
func InitWiki(ctx context.Context, repo *repo_model.Repository) error {
@@ -89,8 +90,11 @@ func updateWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model
if err = validateWebPath(newWikiName); err != nil {
return err
}
- wikiWorkingPool.CheckIn(fmt.Sprint(repo.ID))
- defer wikiWorkingPool.CheckOut(fmt.Sprint(repo.ID))
+ releaser, err := globallock.Lock(ctx, getWikiWorkingLockKey(repo.ID))
+ if err != nil {
+ return err
+ }
+ defer releaser()
if err = InitWiki(ctx, repo); err != nil {
return fmt.Errorf("InitWiki: %w", err)
@@ -250,8 +254,11 @@ func DeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model
return err
}
- wikiWorkingPool.CheckIn(fmt.Sprint(repo.ID))
- defer wikiWorkingPool.CheckOut(fmt.Sprint(repo.ID))
+ releaser, err := globallock.Lock(ctx, getWikiWorkingLockKey(repo.ID))
+ if err != nil {
+ return err
+ }
+ defer releaser()
if err = InitWiki(ctx, repo); err != nil {
return fmt.Errorf("InitWiki: %w", err)
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 4c09a9d588d5c..a0a85d85af0c9 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -44,7 +44,7 @@ parts:
source: .
stage-packages: [ git, sqlite3, openssh-client ]
build-packages: [ git, libpam0g-dev, libsqlite3-dev, build-essential]
- build-snaps: [ go/1.22/stable, node/20/stable ]
+ build-snaps: [ go/1.23/stable, node/20/stable ]
build-environment:
- LDFLAGS: ""
override-pull: |
diff --git a/templates/admin/auth/new.tmpl b/templates/admin/auth/new.tmpl
index e3985cb227f9b..be4995c7846ce 100644
--- a/templates/admin/auth/new.tmpl
+++ b/templates/admin/auth/new.tmpl
@@ -91,29 +91,29 @@
{{ctx.Locale.Tr "admin.auths.tip.oauth2_provider"}}
Bitbucket
- {{ctx.Locale.Tr "admin.auths.tip.bitbucket"}}
+ {{ctx.Locale.Tr "admin.auths.tip.bitbucket" "https://bitbucket.org/account/user/{your-username}/oauth-consumers/new"}}
Dropbox
- {{ctx.Locale.Tr "admin.auths.tip.dropbox"}}
+ {{ctx.Locale.Tr "admin.auths.tip.dropbox" "https://www.dropbox.com/developers/apps"}}
Facebook
- {{ctx.Locale.Tr "admin.auths.tip.facebook"}}
+ {{ctx.Locale.Tr "admin.auths.tip.facebook" "https://developers.facebook.com/apps"}}
GitHub
- {{ctx.Locale.Tr "admin.auths.tip.github"}}
+ {{ctx.Locale.Tr "admin.auths.tip.github" "https://github.com/settings/applications/new"}}
GitLab
- {{ctx.Locale.Tr "admin.auths.tip.gitlab_new"}}
+ {{ctx.Locale.Tr "admin.auths.tip.gitlab_new" "https://gitlab.com/-/profile/applications"}}
Google
- {{ctx.Locale.Tr "admin.auths.tip.google_plus"}}
+ {{ctx.Locale.Tr "admin.auths.tip.google_plus" "https://console.developers.google.com/"}}
OpenID Connect
{{ctx.Locale.Tr "admin.auths.tip.openid_connect"}}
Twitter
- {{ctx.Locale.Tr "admin.auths.tip.twitter"}}
+ {{ctx.Locale.Tr "admin.auths.tip.twitter" "https://dev.twitter.com/apps"}}
Discord
- {{ctx.Locale.Tr "admin.auths.tip.discord"}}
+ {{ctx.Locale.Tr "admin.auths.tip.discord" "https://discordapp.com/developers/applications/me"}}
Gitea
- {{ctx.Locale.Tr "admin.auths.tip.gitea"}}
+ {{ctx.Locale.Tr "admin.auths.tip.gitea" "https://docs.gitea.com/development/oauth2-provider"}}
Nextcloud
{{ctx.Locale.Tr "admin.auths.tip.nextcloud"}}
Yandex
- {{ctx.Locale.Tr "admin.auths.tip.yandex"}}
+ {{ctx.Locale.Tr "admin.auths.tip.yandex" "https://oauth.yandex.com/client/new"}}
Mastodon
{{ctx.Locale.Tr "admin.auths.tip.mastodon"}}
diff --git a/templates/admin/dashboard.tmpl b/templates/admin/dashboard.tmpl
index 2f9875f0d9a1c..b82922df0c77e 100644
--- a/templates/admin/dashboard.tmpl
+++ b/templates/admin/dashboard.tmpl
@@ -2,7 +2,7 @@
{{if .NeedUpdate}}
diff --git a/templates/home.tmpl b/templates/home.tmpl
index e6fd4ef020d7c..116dc487dc377 100644
--- a/templates/home.tmpl
+++ b/templates/home.tmpl
@@ -17,7 +17,7 @@
{{svg "octicon-flame"}} {{ctx.Locale.Tr "startpage.install"}}
- {{ctx.Locale.Tr "startpage.install_desc"}}
+ {{ctx.Locale.Tr "startpage.install_desc" "https://docs.gitea.com/installation/install-from-binary" "https://github.com/go-gitea/gitea/tree/master/docker" "https://docs.gitea.com/installation/install-from-package"}}
{{end}}
@@ -25,7 +25,7 @@
{{svg "octicon-device-desktop"}} {{ctx.Locale.Tr "startpage.platform"}}
- {{ctx.Locale.Tr "startpage.platform_desc"}}
+ {{ctx.Locale.Tr "startpage.platform_desc" "https://go.dev/"}}
@@ -43,7 +43,7 @@
{{svg "octicon-code"}} {{ctx.Locale.Tr "startpage.license"}}
- {{ctx.Locale.Tr "startpage.license_desc"}}
+ {{ctx.Locale.Tr "startpage.license_desc" "https://code.gitea.io/gitea" "code.gitea.io/gitea" "https://github.com/go-gitea/gitea"}}
diff --git a/templates/install.tmpl b/templates/install.tmpl
index 965e57f21372f..5055031a9029c 100644
--- a/templates/install.tmpl
+++ b/templates/install.tmpl
@@ -124,7 +124,7 @@
-
+
{{ctx.Locale.Tr "install.domain_helper"}}
@@ -139,7 +139,7 @@
-
+
{{ctx.Locale.Tr "install.app_url_helper"}}
diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl
index 698a9559c5287..29238f8d6bb9a 100644
--- a/templates/org/menu.tmpl
+++ b/templates/org/menu.tmpl
@@ -1,7 +1,12 @@