diff --git a/.devcontainer/compose.yml b/.devcontainer/compose.yml index f1c0a57a4f2..731b4a90052 100644 --- a/.devcontainer/compose.yml +++ b/.devcontainer/compose.yml @@ -7,6 +7,7 @@ services: - node_modules:/workspace/growi/node_modules - buildcache_app:/workspace/growi/apps/app/.next - ../../growi-docker-compose:/workspace/growi-docker-compose:delegated + - ../../share:/workspace/share:delegated tty: true mongo: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a850b159620..d18743e06ab 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -47,7 +47,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -58,7 +58,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -72,4 +72,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/release-rc-scheduled.yml b/.github/workflows/release-rc-scheduled.yml index 9e72917a03c..a4f9d3a09f1 100644 --- a/.github/workflows/release-rc-scheduled.yml +++ b/.github/workflows/release-rc-scheduled.yml @@ -27,7 +27,7 @@ jobs: id: package-json - name: Docker meta for docker.io - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 id: meta with: images: docker.io/weseek/growi @@ -36,7 +36,7 @@ jobs: type=raw,value=${{ steps.package-json.outputs.packageVersion }}.{{sha}} - name: Docker meta for ghcr.io - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 id: meta-ghcr with: images: ghcr.io/weseek/growi diff --git a/.github/workflows/release-rc.yml b/.github/workflows/release-rc.yml index a6ce536002a..082f7835be6 100644 --- a/.github/workflows/release-rc.yml +++ b/.github/workflows/release-rc.yml @@ -27,7 +27,7 @@ jobs: id: package-json - name: Docker meta for docker.io - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 id: meta with: images: docker.io/weseek/growi diff --git a/.github/workflows/release-slackbot-proxy.yml b/.github/workflows/release-slackbot-proxy.yml index ad7a2d33cd4..45360526ad6 100644 --- a/.github/workflows/release-slackbot-proxy.yml +++ b/.github/workflows/release-slackbot-proxy.yml @@ -24,7 +24,7 @@ jobs: - name: Docker meta id: meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: weseek/growi-slackbot-proxy,asia.gcr.io/${{ secrets.GCP_PRJ_ID_SLACKBOT_PROXY }}/growi-slackbot-proxy tags: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d252bd8aa2..a61d1db31e5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -90,7 +90,7 @@ jobs: id: package-json - name: Docker meta for docker.io - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 id: meta with: images: docker.io/weseek/growi diff --git a/.github/workflows/reusable-app-create-manifests.yml b/.github/workflows/reusable-app-create-manifests.yml index 2e42515d137..96b2f9a0383 100644 --- a/.github/workflows/reusable-app-create-manifests.yml +++ b/.github/workflows/reusable-app-create-manifests.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Docker meta for extra-images id: meta-extra-images - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: ${{ inputs.registry }}/${{ inputs.image-name }} sep-tags: ',' diff --git a/apps/app/bin/swagger-jsdoc/definition-apiv3.js b/apps/app/bin/swagger-jsdoc/definition-apiv3.js index 097d706d94c..ce5dcc054b8 100644 --- a/apps/app/bin/swagger-jsdoc/definition-apiv3.js +++ b/apps/app/bin/swagger-jsdoc/definition-apiv3.js @@ -81,6 +81,7 @@ module.exports = { 'UserGroups', 'Users Management', 'FullTextSearch Management', + 'Install', ], }, { diff --git a/apps/app/package.json b/apps/app/package.json index b63d11c9168..90fa602ebc5 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -1,6 +1,6 @@ { "name": "@growi/app", - "version": "7.1.6", + "version": "7.1.7-RC.0", "license": "MIT", "private": "true", "scripts": { @@ -157,7 +157,7 @@ "multer": "~1.4.0", "multer-autoreap": "^1.0.3", "mustache": "^4.2.0", - "next": "^14.2.15", + "next": "^14.2.21", "next-dynamic-loading-props": "^0.1.1", "next-i18next": "^15.3.1", "next-superjson": "^0.0.4", diff --git a/apps/app/public/static/locales/en_US/admin.json b/apps/app/public/static/locales/en_US/admin.json index 95c61eac8f2..067f26d72d3 100644 --- a/apps/app/public/static/locales/en_US/admin.json +++ b/apps/app/public/static/locales/en_US/admin.json @@ -200,9 +200,9 @@ "id_detail": "Specification of the name of attribute which can identify the user in OIDC claims", "username_detail": "Specification of mappings for username when creating new users", "name_detail": "Specification of mappings for name when creating new users", - "mapping_detail": "Specification of mappings for %s when creating new users", + "mapping_detail": "Specification of mappings for {{target}} when creating new users", "register_1": "Contact to OIDC IdP Administrator", - "register_2": "Register your OIDC App with \"Authorization callback URL\" as %s", + "register_2": "Register your OIDC App with \"Authorization callback URL\" as {{url}}", "register_3": "Copy and paste your ClientID and Client Secret above", "updated_oidc": "Succeeded to update OpenID Connect", "Use discovered URL if empty": "Use discovered URL from \"Issuer Host\" if empty" diff --git a/apps/app/public/static/locales/fr_FR/admin.json b/apps/app/public/static/locales/fr_FR/admin.json index 946e4649d5b..b0212672c77 100644 --- a/apps/app/public/static/locales/fr_FR/admin.json +++ b/apps/app/public/static/locales/fr_FR/admin.json @@ -3,7 +3,7 @@ "display_name": "Français" }, "last_login": "Dernière connexion", - "wiki_management_homepage": "Gestion du wiki", + "wiki_management_homepage": "Système", "public": "Public", "anyone_with_the_link": "Tous les utilisateurs disposant du lien", "specified_users": "Utilisateurs spécifiés", @@ -11,7 +11,7 @@ "only_inside_the_group": "Utilisateurs du groupe", "optional": "Optionnel", "security_settings": { - "security_settings": "Paramètres de sécurité", + "security_settings": "Sécurité", "scope_of_page_disclosure": "Confidentialité de la page", "set_point": "Valeur", "Guest Users Access": "Accès invité", @@ -29,13 +29,13 @@ "for_example": " Par exemple, pour restreindre l'inscription aux utilisateurs dans le domaine growi.org, ajouter ", "in_this_case": "; dans ce cas particulier, seul les utilisateurs du domaine growi.org peuvent s'inscrire.", "insert_single": "Insérer une adresse courriel par ligne", - "page_list_and_search_results": "Liste et recherche de pages", + "page_list_and_search_results": "Affichage des pages", "page_listing_1": "Liste et recherche de pages
restreint à 'Seulement moi'", "page_listing_1_desc": "Voir les pages restreintes à 'Seulement moi' lors de la recherche", "page_listing_2": "Liste et recherche de pages
restreint au groupe utilisateur", "page_listing_2_desc": "Voir les pages restreintes au groupe utilisateur lors de la recherche", - "page_access_rights": "Droits de lecture", - "page_delete_rights": "Droits de suppression", + "page_access_rights": "Lecture", + "page_delete_rights": "Suppression", "page_delete": "Suppression de page", "page_delete_completely": "Suppression complète de page", "comment_manage_rights": "Droits de gestion des commentaires", @@ -52,8 +52,8 @@ "anyone": "Tout le monde", "user_homepage_deletion": { "user_homepage_deletion": "Suppression de page d'accueil utilisateur", - "enable_user_homepage_deletion": "Activer la suppression de page d'accueil utilisateur", - "enable_force_delete_user_homepage_on_user_deletion": "Lorsqu'un utilisateur est supprimé, sa page d'accueil et ses sous-pages sont supprimées.", + "enable_user_homepage_deletion": "Suppression de page d'accueil utilisateur", + "enable_force_delete_user_homepage_on_user_deletion": "Supprimer la page d'accueil et ses pages enfants", "desc": "Les pages d'accueil utilisateurs pourront être supprimées." }, "session": "Session", @@ -88,8 +88,8 @@ "readonly": "Autoriser (Lecture seule)" }, "read_only_users_comment": { - "deny": "Refuser (Interdire la gestion des commentaires aux utilisateurs lecture seule)", - "accept": "Autoriser (Les utilisateurs lecture seule peuvent gérer les commentaires)" + "deny": "Ne peut pas commenter", + "accept": "Peut commenter" }, "registration_mode": { "open": "Ouvert (Tout le monde peut s'inscrire)", @@ -97,9 +97,9 @@ "closed": "Fermé (Invitation seulement)" }, "share_link_management": "Gestion des liens de partage", - "No_share_links":"Aucun liens de partage", - "share_link_notice":"Retirer les liens de partage", - "delete_all_share_links":"Supprimer tout les liens de partage", + "No_share_links": "Aucun liens de partage", + "share_link_notice": "Retirer les liens de partage", + "delete_all_share_links": "Supprimer tout les liens de partage", "share_link_rights": "Permissions de liens de partage", "enable_link_sharing": "Activer les liens de partage", "all_share_links": "Liens de partage", @@ -200,9 +200,9 @@ "id_detail": "Specification of the name of attribute which can identify the user in OIDC claims", "username_detail": "Spécifications des liaisons username lors de la création de nouveaux utilisateurs", "name_detail": "Spécifications des liaisons name lors de la création de nouveaux utilisateurs", - "mapping_detail": "Spécifications des liaisons pour %s lors de la création de nouveaux utilisateurs", + "mapping_detail": "Spécifications des liaisons pour {{target}} lors de la création de nouveaux utilisateurs", "register_1": "Contacter votre administrateur OIDC", - "register_2": "Configurer l'application OAuth avec l'un des URL de redirection autorisés avec %s", + "register_2": "Configurer l'application OAuth avec l'un des URL de redirection autorisés avec {{url}}", "register_3": "Copier l'ID client et Secret client ci-dessus", "updated_oidc": "Paramètres mis à jour", "Use discovered URL if empty": "Use discovered URL from \"Issuer Host\" if empty" @@ -232,7 +232,7 @@ "prioritize_webhook_desc": "Activer cette option utilisera les webhook entrants plutôt que Slack.", "slack_app_configuration": "Configuration de l'application Slack", "slack_app_configuration_desc": "Cette méthode n'est pas recommandée, car trop complexe.", - "use_instead":"Utiliser plutôt les webhook entrants Slack", + "use_instead": "Utiliser plutôt les webhook entrants Slack", "how_to": { "header": "Comment configurer un webhook entrant?", "workspace": "(Dans le Workspace) Ajouter un webhook", @@ -277,7 +277,7 @@ "not_found_global_notification_triggerid": "ID global de notification introuvable" }, "full_text_search_management": { - "full_text_search_management": "Configuration de la recherche", + "full_text_search_management": "Moteur de recherche", "elasticsearch_management": "Configuration Elasticsearch", "connection_status": "Statut", "connection_status_label_unconfigured": "UNCONFIGURED", @@ -299,23 +299,23 @@ "rebuild_description_1": "Reconstruire l'index est les données de pages", "rebuild_description_2": "Cela peut prendre un certain temps." }, - "mailer_setup_required":"Configuration Email sont requis pour envoyer.", + "mailer_setup_required": "La configuration du SMTP est requise.", "admin_top": { "management_wiki": "Configuration du wiki", "system_information": "Information système", - "wiki_administrator": "Seuls les administrateurs peuvent accéder à cette page", + "wiki_administrator": "Seuls les administrateurs peuvent accéder à cette page.", "assign_administrator": "Il est possible d'assigner l'accès administrateur en utilisant le bouton 'Ajouter accès administrateur'", "package_name": "Nom du paquet", "specified_version": "Version spécifiée", "installed_version": "Version installée", - "list_of_env_vars":"Variables d'environnement", - "env_var_priority": "Les valeurs de la base de données sont priorisées.", - "about_security": "Voir les paramètres de sécurité pour les variables d'environnement de sécurité.", + "list_of_env_vars": "Variables d'environnement", + "env_var_priority": "Les valeurs enregistrées dans la base de données sont priorisées.", + "about_security": "Pour les variables des paramètres de sécurité, consulter les paramètres de sécurité.", "copy_prefilled_host_information": { "default": "Copier les informations", "done": "Copié dans le presse-papier!" }, - "bug_report": "Soumettre un rapport de bogue", + "bug_report": "Informations de diagnostic", "submit_bug_report": "soummettre ensuite sur GitHub." }, "v5_page_migration": { @@ -345,31 +345,31 @@ "description": "Le mode maintenance restreint l'utilisation de GROWI. Toujours démarrer le mode maintenance avant l'\"import de données\" et la \"conversion vers la V5\"." }, "app_setting": { - "site_name": "Nom du site", + "site_name": "Nom", "sitename_change": "Le nom du site utilisé dans l'en-tête et le titre HTML.", "header_content": "Le contenu entré ici sera affiché dans l'en-tête, etc. ", "site_url": { - "title": "Configuration de l'URL du site", - "desc": "Configuration de l'URL du site", - "warn": "Certaines fonctionnalitées peuvent ne pas fonctionner tant que l'URL du site n'est pas définie.", - "help": "URL complet du site démarrant par http:// ou https://.", + "title": "Adresse publique", + "desc": "Adresse URL publique de l'application.", + "warn": "Certaines fonctionnalitées sont restreintes tant que l'URL du site n'est pas définie.", + "help": "URL complète démarrant par http:// ou https://.", "note_for_the_only_env_option": "Les paramètres sont définis par des variables d'environnement.
Pour modifier ce paramètre, supprimer la variable d'environnement {{env}} ." }, - "confidential_name": "Nom confidentiel", + "confidential_name": "Nom interne", "confidential_example": "ex): usage interne seulement", "default_language": "Langue par défaut", - "default_mail_visibility": "Afficher l'adresse courriel pour les nouveaux utilisateurs", + "default_mail_visibility": "Mode d'affichage de l'adresse courriel", "file_uploading": "Téléversement de fichiers", - "enable_files_except_image": "Autorise le téléversement de fichiers de n'importe quel type. Lorsque désactivé, seul les fichiers de type image sont autorisés.", - "attach_enable": "Autorise le téléversement de fichiers de n'importe quel type", + "enable_files_except_image": "Autoriser tout les types de fichiers", + "attach_enable": "Autorise le téléversement de tout les types de fichiers.", "update": "Sauvegarder", - "mail_settings": "Configuration e-mail", - "mailer_is_not_set_up": "Paramètres e-mail non configurés.", + "mail_settings": "SMTP", + "mailer_is_not_set_up": "Paramètres d'envoi de courriels non configurés.", "from_e-mail_address": "Adresse courriel from", - "transmission_method":"Méthode de transmission", - "smtp_label":"SMTP", - "ses_label":"SES(AWS)", - "send_test_email": "Envoi d'un courriel d'essai", + "transmission_method": "Mode", + "smtp_label": "SMTP", + "ses_label": "SES(AWS)", + "send_test_email": "Courriel d'essai", "success_to_send_test_email": "Courriel d'essai envoyé", "smtp_settings": "Configuration SMTP", "host": "Hôte", @@ -378,13 +378,13 @@ "initialize_mail_settings": "réinitialiser les paramètres e-mail", "initialize_mail_modal_header": "Réinitialiser les paramètres e-mail", "confirm_to_initialize_mail_settings": "Les valeurs existantes seront écrasées. Réinitialiser les paramètres e-mail?", - "file_upload_settings":"Configuration du téléversement", - "file_upload_method":"Méthode de téléversement", - "file_delivery_method":"Méthode de récupération", - "file_delivery_method_redirect":"Rediriger", - "file_delivery_method_relay":"Relai interne du système", - "file_delivery_method_redirect_info":"Rediriger: Redirige vers une URL signé, performance excellente.", - "file_delivery_method_relay_info":"Relai interne du système: Le serveur GROWI sert les fichiers directement au client, sécurité complète.", + "file_upload_settings": "Téléversement de fichiers", + "file_upload_method": "Mode", + "file_delivery_method": "Méthode de récupération", + "file_delivery_method_redirect": "Rediriger", + "file_delivery_method_relay": "Relai interne du système", + "file_delivery_method_redirect_info": "Rediriger: Redirige vers une URL signé, performance excellente.", + "file_delivery_method_relay_info": "Relai interne du système: Le serveur GROWI sert les fichiers directement au client, sécurité complète.", "fixed_by_env_var": "Défini par une variable d'environnement FILE_UPLOAD={{fileUploadType}}.", "gcs_label": "GCP(GCS)", "aws_label": "AWS(S3)", @@ -410,7 +410,7 @@ "disable": "Désactiver", "use_env_var_if_empty": "Si la valeur dans la base de données est vide, la valeur de variable d'environnement {{variable}} est utilisé.", "note_for_the_only_env_option": "Les paramètres sont définis par des variables d'environnement.
Pour modifier ce paramètre, supprimer la variable d'environnement {{env}} .", - "questionnaire_settings": "Données analytiques", + "questionnaire_settings": "Sondages anonymes", "questionnaire_settings_explanation": "Paramètres d'activation des données analytiques. L'utilisateur peut choisir ce paramètre individuellement dans \"Autres paramètres\".", "about_data_sent": "À propos", "docs_link": "https://docs.growi.org/en/admin-guide/management-cookbook/app-settings.html#questionnaire-settings", @@ -422,46 +422,46 @@ "enable_questionnaire": "Activer les données analytiques" }, "markdown_settings": { - "markdown_settings": "Configuration Markdown", - "lineBreak_header": "Configuration du saut de ligne", - "lineBreak_desc": "Configuration du saut de ligne.", + "markdown_settings": "Markdown", + "lineBreak_header": "Saut de ligne", + "lineBreak_desc": "Conversion du saut de ligne automatique.", "lineBreak_options": { - "enable_lineBreak": "Activer le saut de ligne", + "enable_lineBreak": "Saut de ligne", "enable_lineBreak_desc": "Convertir le saut de ligne<br>en HTML", - "enable_lineBreak_for_comment": "Activer le saut de ligne dans les commentaires", + "enable_lineBreak_for_comment": "Saut de ligne dans les commentaires", "enable_lineBreak_for_comment_desc": "Convertir le saut de ligne dans les commentaires<br>en HTML" }, - "indent_header": "Configuration de l'indentation", - "indent_desc": "Configuration de l'indentation", + "indent_header": "Indentation", + "indent_desc": "Taille d'indentation dans une page.", "indent_options": { - "indentSize": "Taille par défaut", + "indentSize": "Valeur par défaut", "indentSize_desc": "Taille par défaut de l'indentation dans l'éditeur Markdown", - "disallow_indent_change": "Empêcher le changement de taille d'indentation", - "disallow_indent_change_desc": "Forcer l'usage de la taille par défaut" + "disallow_indent_change": "Empêcher la modification", + "disallow_indent_change_desc": "Impose l'usage de la valeur par défaut définie dans les paramètres" }, - "xss_header": "Configuration prévention XSS", + "xss_header": "Prévention des attaques XSS", "xss_desc": "Configuration de la prévention des attaques XSS (cross-site scripting).", "xss_options": { - "enable_xss_prevention": "Activer prévention XSS", + "enable_xss_prevention": "Prévention XSS", "remove_all_tags": "Retirer tout les tags", "remove_all_tags_desc": "Retire tout les tags HTML et CSS", "recommended_setting": "Paramètres recommandés", "custom_whitelist": "Liste autorisée", "tag_names": "Nom de tags", "tag_attributes": "Attributs de tags", - "import_recommended": "Importer les recommendations {{target}}" + "import_recommended": "Importer {{target}}" } }, "customize_settings": { - "customize_settings": "Personnalisation", + "customize_settings": "Interface", "default_sidebar_mode": { - "title": "Mode par défaut de la barre latérale", - "desc": "Le mode d'affichage par défaut de la barre latérale pour les utilisateurs.", + "title": "Barre latérale", + "desc": "Mode d'affichage et comportement par défaut de la barre latérale.", "dock_mode_default_desc": "État initial de la barre latérale lorsque le mode Dock est sélectionné.", "dock_mode_default_open": "Afficher la page comme si elle était ouverte", "dock_mode_default_close": "Afficher la page comme si elle était fermée" }, - "layout": "Agencement", + "layout": "Largeur du contenu", "layout_options": { "default": "Largeur par défaut", "expanded": "100%" @@ -481,8 +481,8 @@ "tab_switch": "Sauvegarder le changement d'onglets", "tab_switch_desc1": "Sauvegarde l'état de navigation dans le navigateur de l'utilisateur.", "tab_switch_desc2": "Lorsque désactivé, la navigation est forcé par l'interface.", - "attach_title_header": "Ajouter automatiquement une section h1", - "attach_title_header_desc": "Ajoute le chemin de la page en tant que h1 lors de création d'une page.", + "attach_title_header": "Ajout automatique de titre", + "attach_title_header_desc": "Ajoute le chemin de la page en tant que titre de niveau 1 lors de création d'une page.", "list_num_s": "Nombre de pages modales", "list_num_desc_s": "Nombre de pages affichées sur les modales", "list_num_m": "Nombre de pages articles", @@ -491,20 +491,20 @@ "list_num_desc_l": "Nombre de pages affichées lors de la recherche", "list_num_xl": "Nombre de pages articles", "list_num_desc_xl": "Nombre de pages affichées dans la 'corbeille' ou '404'.", - "stale_notification": "Afficher les anciennes notifications", + "stale_notification": "Anciennes notifications", "stale_notification_desc": "Affiche les notifications sur les pages mises à jour il y a plus d'un an", "show_all_reply_comments": "Afficher tout les commentaires", "show_all_reply_comments_desc": "Lorsque désactivé, seul les deux commentaires les plus récents sont affichés", "select_search_scope_children_as_default": "'Seulement enfant de ce chemin' lors de la recherche", "select_search_scope_children_as_default_desc": "Lorsque désactivé, utilise 'Toutes les pages' en portée de recherche." }, - "presentation": "Présentation", + "presentation": "Présentation", "presentation_options": { - "enable_marp": "Activer Marp", - "enable_marp_desc": "Marp est utilisable dans la visualisation de présentation. Potentiellement vulnérable aux attaques XSS.", + "enable_marp": "Marp", + "enable_marp_desc": "Marp est un syntaxe utilisable dans la visualisation de présentation. Potentiellement vulnérable aux attaques XSS.", "marp_official_site": "Site officiel Marp", "marp_official_site_link": "https://marp.app", - "marp_in_growi" : "GROWI Docs - Créer des présentations avec Marp", + "marp_in_growi": "GROWI Docs - Créer des présentations avec Marp", "marp_in_growi_link": "https://docs.growi.org/en/guide/features/marp.html" }, "custom_title": "Titre personnalisé", @@ -518,10 +518,10 @@ "write_css": "CSS personnalisé.", "ctrl_space": "Ctrl+Space pour l'autocomplétion", "custom_script": "Script personnalisé", - "custom_presentation": "Presentation personnalisé", + "custom_presentation": "Mode présentation", "write_java": "Code javascript qui sera appliqué au système entier.", "reflect_change": "Un rechargement de la page est nécessaire pour afficher les changements.", - "custom_logo" : "Logo personnalisé", + "custom_logo": "Logo personnalisé", "default_logo": "Logo par défaut", "upload_logo": "Téléverser un logo", "current_logo": "Logo actuel", @@ -595,9 +595,9 @@ }, "import": "Importer", "skip_username_and_email_when_overlapped": "Passe le nom et adresse courriel exactes dans le nouvel environnement", - "prepare_new_account_for_migration":"Préparer le compte pour la migration", - "archive_data_import_detail":"En savoir plus", - "admin_archive_data_import_guide_url":"https://docs.growi.org/en/admin-guide/management-cookbook/import.html", + "prepare_new_account_for_migration": "Préparer le compte pour la migration", + "archive_data_import_detail": "En savoir plus", + "admin_archive_data_import_guide_url": "https://docs.growi.org/en/admin-guide/management-cookbook/import.html", "page_skip": "Les pages ayant le nom d'une page déjà existante ne seront pas importées.", "Directory_hierarchy_tag": "Tag de hiérarchie" }, @@ -667,7 +667,7 @@ "delete": "Supprimer", "integration_procedure": "Procédure d'intégration", "custom_bot_without_proxy_settings": "Bot Personnalisé sans proxy", - "integration_failed":"Échec de l'intégration", + "integration_failed": "Échec de l'intégration", "reset": "Réinitialiser", "reset_all_settings": "Réinitialiser tout les paramètres", "delete_slackbot_settings": "Supprimer les paramètres du bot Slack", @@ -714,7 +714,7 @@ "allow_specified_long": "Autoriser sélectionnés (Depuis les canaux sélectionnés)", "test_connection": "Tester la connexion", "test_connection_by_pressing_button": "Cliquer sur le bouton pour tester la connexion", - "test_connection_only_public_channel":"Testez la connexion dans un canal publique.", + "test_connection_only_public_channel": "Testez la connexion dans un canal publique.", "error_check_logs_below": "Une erreur est survenue.", "send_message_to_slack_work_space": "Envoyer un message vers l'espace de travail Slack.", "add_slack_workspace": "Ajouter un espace de travail Slack" @@ -743,16 +743,16 @@ "alert_deplicated": "'Ancienne intégration Slack' sera discontinué dans le futur. Utiliser plutôt les nouveaux paramètres " }, "user_management": { - "user_management": "Configuration des utilisateurs", - "invite_users": "Créer un nouvel utilisateur temporaire", + "user_management": "Utilisateurs", + "invite_users": "Nouvel utilisateur temporaire", "click_twice_same_checkbox": "Il est nécessaire de sélectionner une option.", "status": "Statut", "invite_modal": { - "emails": "Adresse Courriel (Supporte l'usage de plusieurs lignes)", - "description1":"Créer des utilisateurs temporaires avec une adresse courriel.", - "description2":"Un mot de passe temporaire sera généré..", - "invite_thru_email": "Envoyer courriel d'invitation", - "mail_setting_link":"settingsParamètres courriel", + "emails": "Adresse(s) courriel(s) (Supporte l'usage de plusieurs lignes)", + "description1": "Créer des utilisateurs temporaires avec une adresse courriel.", + "description2": "Un mot de passe temporaire est généré automatiquement.", + "invite_thru_email": "Courriel d'invitation", + "mail_setting_link": "settingsParamètres courriel", "valid_email": "Adresse courriel valide requise", "temporary_password": "Cette utilisateur a un mot de passe temporaire", "send_new_password": "Envoyez le nouveau mot de passe à l'utilisateur.", @@ -774,7 +774,7 @@ "cannot_revoke": "Vous ne pouvez pas révoquer votre propre permission d'administration", "grant_admin_access": "Ajouter permission administrateur", "revoke_read_only_access": "Révoquer permission de lecture", - "grant_read_only_access": "Ajouter permission de lecture", + "grant_read_only_access": "Permission de lecture-seule", "send_invitation_email": "Envoyer courriel d'invitation", "resend_invitation_email": "Renvoyer courriel d'invitation" }, @@ -787,10 +787,10 @@ "new_password": "Nouveau mot de passe" }, "external_account": "Configuration des comptes externes", - "external_accounts":"Comptes externes", - "create_external_account":"Créer compte externe", + "external_accounts": "Comptes externes", + "create_external_account": "Créer compte externe", "external_account_list": "Liste des comptes externes", - "external_account_none":"Pas de compte externe", + "external_account_none": "Pas de compte externe", "invite": "Inviter", "invited": "Utilisateur invité", "back_to_user_management": "Gestion des utilisateurs", @@ -805,17 +805,17 @@ "current_users": "Utilisateurs:" }, "user_group_management": { - "user_group_management": "Configuration des groupes", - "create_group": "Créer nouveau groupe", + "user_group_management": "Gestion des groupes", + "create_group": "Nouveau groupe", "add_child_group": "Ajouter groupe enfant", "remove_child_group": "Retirer", "deny_create_group": "Les paramètres actuels ne permettent pas la création du groupe", - "group_name": "Nom du groupe", + "group_name": "Nom", "group_example": "e.g. : Group1", "child_user_group": "Groupe utilisateur enfant", - "parent_group": "Groupe parent", + "parent_group": "Parent", "select_parent_group": "Sélectionner groupe parent", - "release_parent_group": "Libérer groupe parent", + "release_parent_group": "Retirer groupe parent", "add_modal": { "description": "L'utilisateur sera ajouté au groupe parent.", "add_user": "Ajouter utilisateur au groupe", @@ -825,14 +825,14 @@ "partial_match": "Correspondance partielle", "backward_match": "Correspondance inversée" }, - "group_list": "Liste des groupes", - "child_group_list": "Liste des groupes enfants", + "group_list": "Groupes", + "child_group_list": "Groupes enfants", "back_to_list": "Retour à la liste", - "basic_info": "Information de base", - "user_list": "Liste des utilisateurs", + "basic_info": "Création du groupe", + "user_list": "Utilisateurs assignés", "created_group": "Groupe crée", "is_loading_data": "Chargement...", - "no_pages": "Le groupe n'a pas la permission de voir la page.", + "no_pages": "Le groupe n'a pas de pages assignées.", "remove_from_group": "Retirer l'utilisateur", "delete_modal": { "header": "Supprimer groupe", @@ -853,7 +853,7 @@ } }, "audit_log_management": { - "audit_log": "Journal d'audit", + "audit_log": "Audit", "audit_log_settings": "Configuration des journaux d'audit", "user": "Utilisateur", "username": "Nom d'utilisateur", @@ -883,12 +883,12 @@ }, "plugins": { "plugins": "Plugins", - "plugin_installer": "Configuration de plugins", + "plugin_installer": "Installer un plugin", "form": { "label_url": "URL du plugin", - "desc_url": "Les plugins sont installables par URL", + "desc_url": "URL vers le code source du plugin. L'URL doit être accessible publiquement.", "label_branch": "Branche", - "desc_branch": "Spécification du nom de la branche. Par défaut: `main`" + "desc_branch": "Nom de la branche du dépôt" }, "plugin_card": "Plugins", "plugin_is_not_installed": "Aucun plugins installés", @@ -974,7 +974,7 @@ "ADMIN_SITE_URL_UPDATE": "Modifier les paramètres d'URL", "ADMIN_MAIL_SMTP_UPDATE": "Modifier les paramètres d'e-mail", "ADMIN_MAIL_SES_UPDATE": "Modifier les paramètres d'e-mail (SES)", - "ADMIN_MAIL_TEST_SUBMIT" : "Envoyer courriel de test", + "ADMIN_MAIL_TEST_SUBMIT": "Envoyer courriel de test", "ADMIN_FILE_UPLOAD_CONFIG_UPDATE": "Modifier paramètres de téléversemetnt de fichiers", "ADMIN_PLUGIN_UPDATE": "Mettre à jour les paramètres de plugins", "ADMIN_MAINTENANCEMODE_ENABLED": "Activer mode maintenance", diff --git a/apps/app/public/static/locales/fr_FR/commons.json b/apps/app/public/static/locales/fr_FR/commons.json index 5adcd94a0a8..a6f0b3ef790 100644 --- a/apps/app/public/static/locales/fr_FR/commons.json +++ b/apps/app/public/static/locales/fr_FR/commons.json @@ -7,7 +7,6 @@ "Sign out": "Se déconnecter", "New": "Nouveau", "Delete": "Supprimer", - "meta": { "display_name": "Français" }, @@ -28,9 +27,8 @@ "email_is_already_in_use": "La configuration SMTP est déjà faite." }, "headers": { - "app_settings": "Paramètres de l'application" + "app_settings": "Application" }, - "header_search_box": { "label": { "All pages": "Toutes les pages", @@ -41,30 +39,26 @@ "This tree": "Enfants de cette arbre" } }, - "search_method_menu_item": { "search_in_all": "Rechercher dans tout", "only_children_of_this_tree": "Enfants de cet arbre", "exact_mutch": "Correspondance exacte" }, - "share_links": { "Share Link": "Liens de partage", "Page Path": "Chemin de la page", "expire": "Expiration", "description": "Description" }, - "in_app_notification": { "notification_list": "Notifications d'application", "see_all": "Voir tout", - "no_notification": "Vous n'avez pas de notifications.", + "no_notification": "Aucune notification.", "all": "Toutes", "unopend": "Non-lues", "mark_all_as_read": "Tout marquer comme lu", "no_unread_messages": "aucun message non lu" }, - "personal_dropdown": { "home": "Accueil", "settings": "Paramètres", @@ -72,24 +66,21 @@ "sidebar_mode": "Navigation latérale", "sidebar_mode_editor": "Navigation latérale dans l'éditeur", "use_os_settings": "Utiliser les paramètres système", - "feedback": "Avis" + "feedback": "Sondage" }, - - "create_page_dropdown": { - "new_page": "Créer nouvelle page", - "open_page_create_modal": "Ouvrir une nouvelle page créer une fenêtre modale", + "new_page": "Nouvelle page", + "open_page_create_modal": "Modale de création de page", "todays": { - "desc": "Créer le mémo du jour", + "desc": "Mémo du jour", "memo": "mémo" }, "template": { - "desc": "Créer/modifier page modèle", - "children": "Modèle page enfant", - "descendants": "Modèle pour descendants" + "desc": "Modèles", + "children": "Modèle pour page enfant", + "descendants": "Modèle pour page adjacentes" } }, - "copy_to_clipboard": { "Copy to clipboard": "Copier dans le presse-papier", "Page path": "Chemin de la page", @@ -99,30 +90,27 @@ "Markdown link": "Lien Markdown", "Append params": "Affixer les paramètres" }, - "crop_image_modal": { "image_crop": "Recadrage d'image", "crop": "Recadrer", "save": "Sauvegarder", "cancel": "Annuler" }, - "handsontable_modal": { - "title": "Modifier table", - "data_import": "Import de données", + "title": "Tableau", + "data_import": "Importer des données", "save": "Sauvegarder", "cancel": "Annuler", - "done": "Terminer", + "done": "Mettre à jour", "data_import_form": { - "select_data_format": "Sélectionner format de données", - "import_data": "Importer données", - "paste_table_data": "Coller les données de la table", - "parse_error": "Erreur d'analyse", + "select_data_format": "Format", + "import_data": "Données du fichier", + "paste_table_data": "Coller les données de la fichier", + "parse_error": "Erreur lors de l'importation des données", "cancel": "Annuler", "import": "Importer" } }, - "questionnaire_modal": { "required": "Requis", "submit": "Soumettre", @@ -146,11 +134,9 @@ "successfully_submitted": "Questionnaire soumis.", "thanks_for_answering": "Merci pour votre avis." }, - "not_found_page": { "page_not_exist": "Cette page est introuvable." }, - "g2g_data_transfer": { "tab": "Transfert de données", "data_transfer": "Transfert de données", diff --git a/apps/app/public/static/locales/fr_FR/translation.json b/apps/app/public/static/locales/fr_FR/translation.json index 1265ea61c1a..0ad09a745a5 100644 --- a/apps/app/public/static/locales/fr_FR/translation.json +++ b/apps/app/public/static/locales/fr_FR/translation.json @@ -3,7 +3,7 @@ "display_name": "Français" }, "Help": "Aide", - "view": "Voir", + "View": "Voir", "Edit": "Modifier", "Delete": "Supprimer", "delete_all": "Tout supprimer", @@ -60,7 +60,7 @@ "Timeline View": "Chronologie", "History": "Historique", "attachment_data": "Pièces jointes", - "No_attachments_yet": "Aucunes pièces jointes.", + "No_attachments_yet": "Aucune pièce jointe.", "Presentation Mode": "Mode présentation", "Not available for guest": "Indisponible pour les invités", "Not available in this version": "Indisponible dans cette version", @@ -90,24 +90,25 @@ "No diff": "Aucune différences", "Latest": "Dernière version", "User ID": "Identifiant utilisateur", - "User Information": "Informations utilisateur", + "User Settings": "Paramètres utilisateur", + "User Information": "Mon compte", "User Activation": "Activation utilisateur", - "Basic Info": "Informations de base", + "Basic Info": "Informations du compte", "Name": "Nom", "Email": "Adresse courriel", "Language": "Langue", "English": "Anglais", "Japanese": "Japonais", - "Set Profile Image": "Sélectionner image de profil", - "Upload Image": "Téléverser image", - "Current Image": "Image actuelle", - "Delete Image": "Supprimer image", - "Delete this image?": "Supprimer cette image?", + "Set Profile Image": "Photo de profil", + "Upload Image": "Photo personalisée", + "Current Image": "Photo actuelle", + "Delete Image": "Supprimer photo", + "Delete this image?": "Supprimer cette photo?", "Updated": "Modifié", - "Upload new image": "Téléverser nouvelle image", + "Upload new image": "Téléverser une photo", "Connected": "Connecté", "Loading": "Chargement...", - "Disclose E-mail": "Afficher adresse courriel", + "Disclose E-mail": "Divulguer adresse courriel", "page exists": "cette page est déjà existante", "Error occurred": "Une erreur est survenue", "Input page name": "Nom de la page", @@ -122,21 +123,21 @@ "UserGroup": "Groupe utilisateur", "Basic Settings": "Paramètres de base", "The contents entered here will be shown in the header etc": "Le contenu entré ici sera visible dans l'en-tête", - "Public": "Public", + "Public": "Tout le monde", "Anyone with the link": "Tous les utilisateurs disposant du lien", "Specified users only": "Utilisateurs spécifiés", "Only me": "Seulement moi", "Only inside the group": "Utilisateurs du groupe", - "page_list": "Liste de pages", + "page_list": "Pages enfants", "comments": "Commentaires", "Reselect the group": "Resélectionner ce groupe", "Shareable link": "Lien partageable", "The whitelist of registration permission E-mail address": "Les adresses courriel permises lors de l'inscription", "Add tags for this page": "Ajouter des étiquettes", "tag_list": "Étiquettes", - "popular_tags": "Étiquettes populaires", - "Check All tags": "voir toutes les étiquettes", - "You have no tag, You can set tags on pages": "Vous n'avez aucunes étiquettes, vous pouvez assigner des étiquettes aux pages", + "popular_tags": "Étiquettes fréquentes", + "Check All tags": "Toutes les étiquettes", + "You have no tag, You can set tags on pages": "Aucune étiquette existante.", "Show latest": "Voir le plus récent", "Load latest": "Charger le plus récent", "edited this page": "à modifié cette page.", @@ -147,9 +148,9 @@ "No bookmarks yet": "Aucuns favoris", "add_bookmark": "Ajouter aux favoris", "remove_bookmark": "Retirer des favoris", - "wide_view": "Vue élargie", + "wide_view": "Affichage large", "Recent Changes": "Modifications récentes", - "Page Tree": "Arbre", + "Page Tree": "Arborescence", "Bookmarks": "Favoris", "In-App Notification": "Notifications", "original_path": "Chemin originel", @@ -227,7 +228,7 @@ "form_help": {} }, "Password": "Mot de passe", - "Password Settings": "Paramètres de mot passe", + "Password Settings": "Sécurité", "personal_settings": { "disassociate_external_account": "Dissocier compte externe", "disassociate_external_account_desc": "Dissocier le compte externe {{providerType}} {{accountId}}?", @@ -241,7 +242,7 @@ "share_links": { "Shere this page link to public": "Partager cette page publiquement", "share_link_list": "Liens de partage", - "share_link_management": "Gestion des liens de partage", + "share_link_management": "Liens de partage", "delete_all_share_links": "Supprimer tout les liens de partage", "expire": "Expiration", "Days": "Jour", @@ -254,23 +255,23 @@ "Invalid_Number_of_Date": "Valeurs invalides", "link_sharing_is_disabled": "Le partage est désactivé" }, - "API Settings": "Configuration API", + "API Settings": "API GROWI", "Other Settings": "Autres paramètres", - "API Token Settings": "Paramètres de jetons", - "Current API Token": "Jeton d'API actuel", - "Update API Token": "Modifier jeton", + "API Token Settings": "Jetons d'API", + "Current API Token": "Mon jeton d'API", + "Update API Token": "Regénérer", "in_app_notification_settings": { - "in_app_notification_settings": "Paramètres de notifications", + "in_app_notification_settings": "Notifications", "subscribe_settings": "Paramètres d'abonnement automatique aux notifications de pages", "default_subscribe_rules": { - "page_create": "S'abonner à la page lors de sa création." + "page_create": "S'abonner aux modifications d'une page lors de sa création." } }, "ui_settings": { - "ui_settings": "Paramètres UI", + "ui_settings": "Interface", "side_bar_mode": { "settings": "Paramètres navigation latérale", - "side_bar_mode_setting": "Activer la navigation latérale", + "side_bar_mode_setting": "Épingler la navigation latérale", "description": "Activer pour toujours afficher la barre de navigation latérale lorsque l'écran est large. Si la largeur d'écran est faible, le cas inverse est applicable." } }, @@ -278,7 +279,7 @@ "light": "Clair", "dark": "Sombre", "system": "Système", - "settings": "Paramètres de thème", + "settings": "Thème", "description": "Affichage en mode clair, sombre ou selon les paramètres système.
Seuls les thèmes supportés seront modifiés." }, "editor_settings": { @@ -331,17 +332,17 @@ "page_edit": { "input_channels": "Canal Slack...", "theme": "Thème", - "keymap": "Touches", + "keymap": "Raccourcis", "indent": "Indentation", "paste": { "title": "Comportement du collage", - "both": "Les deux", + "both": "Texte et fichier", "text": "Texte seulement", "file": "Fichier seulement" }, - "editor_config": "Configuration de l'éditeur", - "Show active line": "Montrer la ligne active", - "auto_format_table": "Formattage les tables", + "editor_config": "Préférences de l'éditeur", + "Show active line": "Surligner la ligne active", + "auto_format_table": "Formatter les tableaux", "overwrite_scopes": "{{operation}} et écraser les scopes des pages enfants", "notice": { "conflict": "Sauvegarde impossible, la page est en cours de modification par un autre utilisateur. Recharger la page." @@ -370,28 +371,28 @@ }, "page_history": { "revision_list": "Historique des modifications", - "revision": "version", + "revision": "Révision", "comparing_source": "Source", - "comparing_target": "Destination", + "comparing_target": "Cible", "comparing_revisions": "Comparer les modifications", "compare_latest": "Comparer avec la version la plus récente", - "compare_previous": "Compare avec une version précédente" + "compare_previous": "Comparer avec la version précédente" }, "modal_rename": { "label": { "Move/Rename page": "Déplacer/renommer page", - "New page name": "Nom de la page", + "New page name": "Nouveau chemin", "Failed to get subordinated pages": "échec de récupération des pages subordinnées", "Failed to get exist path": "échec de la récupération du chemin", - "Current page name": "Nom de la page courante", + "Current page name": "Chemin actuel", "Rename this page only": "Renommer cette page", "Force rename all child pages": "Forcer le renommage des pages", "Other options": "Autres options", "Do not update metadata": "Ne pas modifier les métadonnées", - "Redirect": "Rediriger" + "Redirect": "Redirection automatique" }, "help": { - "redirect": "Rediriger vers la nouvelle page", + "redirect": "Redirige automatiquement vers le nouveau chemin de la page.", "metadata": "Conserve les métadonnées d'édition de la page", "recursive": "Déplacer/renommer les pages enfants récursivement" } @@ -515,7 +516,7 @@ "initialize_successed": "Initialisation de {{target}} réussie", "remove_share_link_success": "Suppression de {{shareLinkId}} réussie", "issue_share_link": "Lien de partage ajouté", - "remove_share_link": "{{count}} liens de partage supprimés", + "remove_share_link": "{{count}} liens supprimés", "switch_disable_link_sharing_success": "Paramètres des liens de partage modifiés", "failed_to_reset_password": "Échec de la réinitialisation du mot de passe", "save_succeeded": "Sauvegarde réussie" @@ -744,9 +745,9 @@ "select_page_to_see": "Sélectionner une page" }, "user_group": { - "select_group": "Sélectionner groupe", - "belonging_to_no_group": "Appartenance au groupe introuvable.", - "manage_user_groups": "Gestion des groupes utilisateurs" + "select_group": "Groupes autorisés", + "belonging_to_no_group": "Vous n'appartenez à aucun groupe.", + "manage_user_groups": "Gestion des groupes" }, "fix_page_grant": { "modal": { @@ -777,11 +778,11 @@ "tooltip": { "like": "Like!", "cancel_like": "Annuler", - "bookmark": "Favori", - "cancel_bookmark": "Annuler favori", - "receive_notifications": "Recevoir les notifications", - "stop_notification": "Stopper les notifications", - "footprints": "Visiteurs", + "bookmark": "Ajouter aux favoris", + "cancel_bookmark": "Retirer des favoris", + "receive_notifications": "S'abonner", + "stop_notification": "Se désabonner", + "footprints": "Lecteurs", "login_required": "Connexion requise", "operation": { "attention": { @@ -795,7 +796,7 @@ }, "user_home_page": { "bookmarks": "Favoris", - "recently_created": "Crée récemment" + "recently_created": "Page récentes" }, "bookmark_folder": { "bookmark_folder": "dossier de favoris", @@ -828,18 +829,18 @@ "disagree": "En désaccord", "answer": "Répondre", "no_answer": "Aucune réponse", - "settings": "Configuration du questionnaire", - "failed_to_send": "Échec de l'envoi du questionnaire", - "denied": "Le questionnaire ne sera plus montré", - "personal_settings_explanation": "Les questionnaires de satisfaction seront actifs.", - "enable_questionnaire": "Activer questionnaire", - "disabled_by_admin": "Questionnaire désactivé par l'administrateur" + "settings": "Sondages anonymes", + "failed_to_send": "Échec de l'envoi du sondage", + "denied": "Les sondages ne seront plus affichés.", + "personal_settings_explanation": "Sondages de satisfaction anonymes.", + "enable_questionnaire": "Sondages anonymes", + "disabled_by_admin": "Sondages anonymes désactivés par l'administrateur" }, "tag_edit_modal": { - "edit_tags": "Modifier étiquettes", - "done": "Terminer", + "edit_tags": "Étiquettes", + "done": "Mettre à jour", "tags_input": { - "tag_name": "nom de l'étiquette" + "tag_name": "Choisir ou créer une étiquette" } }, "delete_attachment_modal": { @@ -866,11 +867,11 @@ "size_l": "Taille: G" }, "sync-latest-revision-body": { - "menuitem": "Synchroniser le texte de l'éditeur avec le corps de la dernière révision", - "confirm": "Delete the draft data being entered into the editor and synchronize the latest text. Are you sure you want to run it?", + "menuitem": "Synchroniser avec la dernière révision", + "confirm": "Supprime les données en brouillon et synchronise avec la dernière révision. Synchroniser?", "alert": "Il se peut que le texte le plus récent n'ait pas été synchronisé. Veuillez recharger et vérifier à nouveau.", "success-toaster": "Dernier texte synchronisé", - "skipped-toaster": "Synchronisation ignorée car l'éditeur n'est pas activé. Ouvrir l'éditeur et réessayer.", - "error-toaster": "La synchronisation du dernier texte a échoué" + "skipped-toaster": "L'éditeur n'est pas actif. Synchronisation annulée.", + "error-toaster": "Synchronisation échouée" } } diff --git a/apps/app/public/static/locales/ja_JP/admin.json b/apps/app/public/static/locales/ja_JP/admin.json index 7cb1b518461..ffb0a9599ce 100644 --- a/apps/app/public/static/locales/ja_JP/admin.json +++ b/apps/app/public/static/locales/ja_JP/admin.json @@ -211,7 +211,7 @@ "name_detail": "新規ユーザー名(name)に関連付ける属性", "mapping_detail": "新規ユーザーの{{target}}に関連付ける属性", "register_1": "OIDC IdP Administrator へ接続します。", - "register_2": "OIDCアプリの認証コールバックURLを%sとして登録します。", + "register_2": "OIDCアプリの認証コールバックURLを{{url}}として登録します。", "register_3": "上記のClientIDとClient Secretをコピー&ペーストしてください。", "updated_oidc": "OpenID Connect を更新しました", "Use discovered URL if empty": "データベース側の値が空の場合、\"Issuer Host\"から検出した値を利用します。" diff --git a/apps/app/public/static/locales/zh_CN/admin.json b/apps/app/public/static/locales/zh_CN/admin.json index 9eff7d1f1e7..f83a7030048 100644 --- a/apps/app/public/static/locales/zh_CN/admin.json +++ b/apps/app/public/static/locales/zh_CN/admin.json @@ -209,9 +209,9 @@ "id_detail": "Specification of the name of attribute which can identify the user in OIDC claims", "username_detail": "Specification of mappings for username when creating new users", "name_detail": "Specification of mappings for name when creating new users", - "mapping_detail": "Specification of mappings for %s when creating new users", + "mapping_detail": "Specification of mappings for {{target}} when creating new users", "register_1": "Contact to OIDC IdP Administrator", - "register_2": "Register your OIDC App with \"Authorization callback URL\" as %s", + "register_2": "Register your OIDC App with \"Authorization callback URL\" as {{url}}", "register_3": "Copy and paste your ClientID and Client Secret above", "updated_oidc": "Succeeded to update OpenID Connect", "Use discovered URL if empty": "Use discovered URL from \"Issuer Host\" if empty" diff --git a/apps/app/src/client/components/Admin/Security/OidcSecuritySettingContents.jsx b/apps/app/src/client/components/Admin/Security/OidcSecuritySettingContents.jsx index d1b041abc1c..18dfe343012 100644 --- a/apps/app/src/client/components/Admin/Security/OidcSecuritySettingContents.jsx +++ b/apps/app/src/client/components/Admin/Security/OidcSecuritySettingContents.jsx @@ -455,7 +455,7 @@ class OidcSecurityManagementContents extends React.Component {
  1. {t('security_settings.OAuth.OIDC.register_1')}
  2. -
  3. {t('security_settings.OAuth.OIDC.register_2')}
  4. +
  5. {t('security_settings.OAuth.OIDC.register_3')}
diff --git a/apps/app/src/server/routes/apiv3/installer.ts b/apps/app/src/server/routes/apiv3/installer.ts index b2a3d64eb81..5a64278652a 100644 --- a/apps/app/src/server/routes/apiv3/installer.ts +++ b/apps/app/src/server/routes/apiv3/installer.ts @@ -29,6 +29,48 @@ module.exports = (crowi: Crowi): Router => { const minPasswordLength = configManager.getConfig('crowi', 'app:minPasswordLength'); + /** + * @swagger + * + * /installer: + * post: + * tags: [Install] + * security: [] + * operationId: Install + * summary: /installer + * description: Install GROWI + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * registerForm: + * type: object + * properties: + * name: + * type: string + * username: + * type: string + * email: + * type: string + * password: + * type: string + * app:globalLang: + * type: string + * default: en_US + * responses: + * 200: + * description: import settings params + * content: + * application/json: + * schema: + * properties: + * message: + * type: string + * example: Installation completed (Logged in as an admin user) + */ // eslint-disable-next-line max-len router.post('/', registerRules(minPasswordLength), registerValidation, addActivity, async(req: FormRequest, res: ApiV3Response) => { const appService = crowi.appService; diff --git a/apps/app/src/server/routes/apiv3/invited.ts b/apps/app/src/server/routes/apiv3/invited.ts index 4766f58d927..4a3f185d190 100644 --- a/apps/app/src/server/routes/apiv3/invited.ts +++ b/apps/app/src/server/routes/apiv3/invited.ts @@ -18,6 +18,48 @@ module.exports = (crowi: Crowi): Router => { const applicationInstalled = require('../../middlewares/application-installed')(crowi); const router = express.Router(); + /** + * @swagger + * + * /invited: + * post: + * tags: [Users] + * security: + * - cookieAuth: [] + * operationId: activateInvitedUser + * summary: /invited + * description: Activate invited user + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * invitedForm: + * type: object + * properties: + * username: + * type: string + * description: The username of the invited user. + * name: + * type: string + * description: The name of the invited user. + * password: + * type: string + * description: The password for the invited user. + * responses: + * 200: + * description: User activated successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * redirectTo: + * type: string + * description: URL to redirect after successful activation. + */ router.post('/', applicationInstalled, invitedRules(), invitedValidation, async(req: InvitedFormRequest, res: ApiV3Response) => { if (!req.user) { return res.apiv3({ redirectTo: '/login' }); diff --git a/apps/app/src/server/routes/apiv3/page/index.ts b/apps/app/src/server/routes/apiv3/page/index.ts index 22f32c2236d..3105a8b9a37 100644 --- a/apps/app/src/server/routes/apiv3/page/index.ts +++ b/apps/app/src/server/routes/apiv3/page/index.ts @@ -341,14 +341,14 @@ module.exports = (crowi) => { * $ref: '#/components/schemas/Revision/properties/body' * page_id: * $ref: '#/components/schemas/Page/properties/_id' - * revision_id: + * revisionId: * $ref: '#/components/schemas/Revision/properties/_id' * grant: * $ref: '#/components/schemas/Page/properties/grant' * required: * - body * - page_id - * - revision_id + * - revisionId * responses: * 200: * description: Succeeded to update page. diff --git a/apps/app/src/server/service/normalize-data/convert-null-to-empty-granted-arrays.ts b/apps/app/src/server/service/normalize-data/convert-null-to-empty-granted-arrays.ts new file mode 100644 index 00000000000..bcd6255b353 --- /dev/null +++ b/apps/app/src/server/service/normalize-data/convert-null-to-empty-granted-arrays.ts @@ -0,0 +1,31 @@ +import type { IPageHasId } from '@growi/core'; +import mongoose from 'mongoose'; + +import { type PageModel } from '~/server/models/page'; + +export const convertNullToEmptyGrantedArrays = async(): Promise => { + const Page = mongoose.model('Page'); + + const requests = [ + { + updateMany: { + // Matches documents where field is null or nonexistent + // https://www.mongodb.com/docs/manual/tutorial/query-for-null-fields/#equality-filter + filter: { grantedUsers: null }, + update: { + $set: { grantedUsers: [] }, + }, + }, + }, + { + updateMany: { + filter: { grantedGroups: null }, + update: { + $set: { grantedGroups: [] }, + }, + }, + }, + ]; + + await Page.bulkWrite(requests); +}; diff --git a/apps/app/src/server/service/normalize-data/index.ts b/apps/app/src/server/service/normalize-data/index.ts index f4647773625..b7901e77356 100644 --- a/apps/app/src/server/service/normalize-data/index.ts +++ b/apps/app/src/server/service/normalize-data/index.ts @@ -1,6 +1,7 @@ import { normalizeExpiredAtForThreadRelations } from '~/features/openai/server/services/normalize-data'; import loggerFactory from '~/utils/logger'; +import { convertNullToEmptyGrantedArrays } from './convert-null-to-empty-granted-arrays'; import { convertRevisionPageIdToObjectId } from './convert-revision-page-id-to-objectid'; import { renameDuplicateRootPages } from './rename-duplicate-root-pages'; @@ -10,6 +11,7 @@ export const normalizeData = async(): Promise => { await renameDuplicateRootPages(); await convertRevisionPageIdToObjectId(); await normalizeExpiredAtForThreadRelations(); + await convertNullToEmptyGrantedArrays(); logger.info('normalizeData has been executed'); return; diff --git a/apps/slackbot-proxy/package.json b/apps/slackbot-proxy/package.json index 8d2c43b29d4..17d274d7a3d 100644 --- a/apps/slackbot-proxy/package.json +++ b/apps/slackbot-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@growi/slackbot-proxy", - "version": "7.1.6-slackbot-proxy.0", + "version": "7.1.7-slackbot-proxy.0", "license": "MIT", "private": "true", "scripts": { diff --git a/package.json b/package.json index f1e5d17314f..4827275b3e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "growi", - "version": "7.1.6", + "version": "7.1.7-RC.0", "description": "Team collaboration software using markdown", "license": "MIT", "private": "true", diff --git a/packages/presentation/package.json b/packages/presentation/package.json index 11b743236b1..631e14a31f6 100644 --- a/packages/presentation/package.json +++ b/packages/presentation/package.json @@ -42,7 +42,7 @@ "@growi/core": "workspace:^" }, "devDependencies": { - "@marp-team/marp-core": "^3.9.0", + "@marp-team/marp-core": "^3.9.1", "@marp-team/marpit": "^2.6.1", "@types/mdast": "^4.0.4", "@types/reveal.js": "^4.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f509599ab5..ec474d2602f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,7 +74,7 @@ importers: version: 8.41.0 eslint-config-next: specifier: ^12.1.6 - version: 12.1.6(eslint@8.41.0)(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(typescript@5.0.4) + version: 12.1.6(eslint@8.41.0)(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(typescript@5.0.4) eslint-config-weseek: specifier: ^2.1.1 version: 2.1.1(@babel/core@7.24.6)(@babel/eslint-parser@7.24.7(@babel/core@7.24.6)(eslint@8.41.0))(@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@5.0.4))(eslint@8.41.0)(typescript@5.0.4))(@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@5.0.4))(eslint-import-resolver-typescript@3.2.5(eslint-plugin-import@2.26.0)(eslint@8.41.0))(eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@5.0.4))(eslint-import-resolver-typescript@3.2.5)(eslint@8.41.0))(eslint-plugin-jsx-a11y@6.5.1(eslint@8.41.0))(eslint-plugin-react-hooks@4.6.0(eslint@8.41.0))(eslint-plugin-react@7.30.1(eslint@8.41.0))(eslint-plugin-vue@7.20.0(eslint@8.41.0))(eslint@8.41.0) @@ -478,20 +478,20 @@ importers: specifier: ^4.2.0 version: 4.2.0 next: - specifier: ^14.2.15 - version: 14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) + specifier: ^14.2.21 + version: 14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) next-dynamic-loading-props: specifier: ^0.1.1 version: 0.1.1(react@18.2.0) next-i18next: specifier: ^15.3.1 - version: 15.3.1(i18next@23.16.5)(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-i18next@15.1.1(i18next@23.16.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + version: 15.3.1(i18next@23.16.5)(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-i18next@15.1.1(i18next@23.16.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) next-superjson: specifier: ^0.0.4 - version: 0.0.4(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3)(webpack@5.92.1(@swc/core@1.5.25(@swc/helpers@0.5.11))) + version: 0.0.4(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3)(webpack@5.92.1(@swc/core@1.5.25(@swc/helpers@0.5.11))) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.2.1(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) nocache: specifier: ^4.0.0 version: 4.0.0 @@ -1258,8 +1258,8 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@marp-team/marp-core': - specifier: ^3.9.0 - version: 3.9.0 + specifier: ^3.9.1 + version: 3.9.1 '@marp-team/marpit': specifier: ^2.6.1 version: 2.6.1 @@ -2980,8 +2980,8 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@marp-team/marp-core@3.9.0': - resolution: {integrity: sha512-gi6nq0rsB1oMA8ReppW4XxmS4fisQiAsD0ZoUgLeG4h6SWatveCAA7fZyxnXfwA2UC8pNb7ktPqYdRsxvuwntA==} + '@marp-team/marp-core@3.9.1': + resolution: {integrity: sha512-/GOecdgt0HmvFnC/C2flxPfUVgLMNE8lP8UAvjlFfWyeB9hyNBP5k1N2Wnx0mXPU8UHpDzYdySDxIR+ki2p8Fw==} engines: {node: ^12.20 || ^14.13.1 || >=16} '@marp-team/marpit-svg-polyfill@2.1.0': @@ -3025,8 +3025,8 @@ packages: '@next/env@14.2.13': resolution: {integrity: sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==} - '@next/env@14.2.15': - resolution: {integrity: sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==} + '@next/env@14.2.21': + resolution: {integrity: sha512-lXcwcJd5oR01tggjWJ6SrNNYFGuOOMB9c251wUNkjCpkoXOPkDeF/15c3mnVlBqrW4JJXb2kVxDFhC4GduJt2A==} '@next/eslint-plugin-next@12.1.6': resolution: {integrity: sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==} @@ -3037,8 +3037,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@14.2.15': - resolution: {integrity: sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==} + '@next/swc-darwin-arm64@14.2.21': + resolution: {integrity: sha512-HwEjcKsXtvszXz5q5Z7wCtrHeTTDSTgAbocz45PHMUjU3fBYInfvhR+ZhavDRUYLonm53aHZbB09QtJVJj8T7g==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3049,8 +3049,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@14.2.15': - resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==} + '@next/swc-darwin-x64@14.2.21': + resolution: {integrity: sha512-TSAA2ROgNzm4FhKbTbyJOBrsREOMVdDIltZ6aZiKvCi/v0UwFmwigBGeqXDA97TFMpR3LNNpw52CbVelkoQBxA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3061,8 +3061,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@14.2.15': - resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==} + '@next/swc-linux-arm64-gnu@14.2.21': + resolution: {integrity: sha512-0Dqjn0pEUz3JG+AImpnMMW/m8hRtl1GQCNbO66V1yp6RswSTiKmnHf3pTX6xMdJYSemf3O4Q9ykiL0jymu0TuA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3073,8 +3073,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.15': - resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==} + '@next/swc-linux-arm64-musl@14.2.21': + resolution: {integrity: sha512-Ggfw5qnMXldscVntwnjfaQs5GbBbjioV4B4loP+bjqNEb42fzZlAaK+ldL0jm2CTJga9LynBMhekNfV8W4+HBw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3085,8 +3085,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.15': - resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==} + '@next/swc-linux-x64-gnu@14.2.21': + resolution: {integrity: sha512-uokj0lubN1WoSa5KKdThVPRffGyiWlm/vCc/cMkWOQHw69Qt0X1o3b2PyLLx8ANqlefILZh1EdfLRz9gVpG6tg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3097,8 +3097,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.15': - resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==} + '@next/swc-linux-x64-musl@14.2.21': + resolution: {integrity: sha512-iAEBPzWNbciah4+0yI4s7Pce6BIoxTQ0AGCkxn/UBuzJFkYyJt71MadYQkjPqCQCJAFQ26sYh7MOKdU+VQFgPg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3109,8 +3109,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@14.2.15': - resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==} + '@next/swc-win32-arm64-msvc@14.2.21': + resolution: {integrity: sha512-plykgB3vL2hB4Z32W3ktsfqyuyGAPxqwiyrAi2Mr8LlEUhNn9VgkiAl5hODSBpzIfWweX3er1f5uNpGDygfQVQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3121,8 +3121,8 @@ packages: cpu: [ia32] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.15': - resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==} + '@next/swc-win32-ia32-msvc@14.2.21': + resolution: {integrity: sha512-w5bacz4Vxqrh06BjWgua3Yf7EMDb8iMcVhNrNx8KnJXt8t+Uu0Zg4JHLDL/T7DkTCEEfKXO/Er1fcfWxn2xfPA==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -3133,8 +3133,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@14.2.15': - resolution: {integrity: sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==} + '@next/swc-win32-x64-msvc@14.2.21': + resolution: {integrity: sha512-sT6+llIkzpsexGYZq8cjjthRyRGe5cJVhqh12FmlbxHqna6zsDDK8UNaV7g41T6atFHCJUPeLb3uyAwrBwy0NA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -6397,6 +6397,7 @@ packages: encoding-down@6.3.0: resolution: {integrity: sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==} engines: {node: '>=6'} + deprecated: Superseded by abstract-level (https://github.com/Level/community#faq) encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} @@ -8266,14 +8267,17 @@ packages: level-codec@9.0.2: resolution: {integrity: sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==} engines: {node: '>=6'} + deprecated: Superseded by level-transcoder (https://github.com/Level/community#faq) level-concat-iterator@2.0.1: resolution: {integrity: sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==} engines: {node: '>=6'} + deprecated: Superseded by abstract-level (https://github.com/Level/community#faq) level-errors@2.0.1: resolution: {integrity: sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==} engines: {node: '>=6'} + deprecated: Superseded by abstract-level (https://github.com/Level/community#faq) level-iterator-stream@4.0.2: resolution: {integrity: sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==} @@ -8286,6 +8290,7 @@ packages: level-packager@5.1.1: resolution: {integrity: sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==} engines: {node: '>=6'} + deprecated: Superseded by abstract-level (https://github.com/Level/community#faq) level-supports@1.0.1: resolution: {integrity: sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==} @@ -9182,8 +9187,8 @@ packages: sass: optional: true - next@14.2.15: - resolution: {integrity: sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==} + next@14.2.21: + resolution: {integrity: sha512-rZmLwucLHr3/zfDMYbJXbw0ZeoBpirxkXuvsJbk7UPorvPYZhP7vq7aHbKnU7dQNCYIimRrbB2pp3xmf+wsYUg==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -14830,7 +14835,7 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@marp-team/marp-core@3.9.0': + '@marp-team/marp-core@3.9.1': dependencies: '@marp-team/marpit': 2.6.1 '@marp-team/marpit-svg-polyfill': 2.1.0(@marp-team/marpit@2.6.1) @@ -14914,7 +14919,7 @@ snapshots: '@next/env@14.2.13': {} - '@next/env@14.2.15': {} + '@next/env@14.2.21': {} '@next/eslint-plugin-next@12.1.6': dependencies: @@ -14923,55 +14928,55 @@ snapshots: '@next/swc-darwin-arm64@14.2.13': optional: true - '@next/swc-darwin-arm64@14.2.15': + '@next/swc-darwin-arm64@14.2.21': optional: true '@next/swc-darwin-x64@14.2.13': optional: true - '@next/swc-darwin-x64@14.2.15': + '@next/swc-darwin-x64@14.2.21': optional: true '@next/swc-linux-arm64-gnu@14.2.13': optional: true - '@next/swc-linux-arm64-gnu@14.2.15': + '@next/swc-linux-arm64-gnu@14.2.21': optional: true '@next/swc-linux-arm64-musl@14.2.13': optional: true - '@next/swc-linux-arm64-musl@14.2.15': + '@next/swc-linux-arm64-musl@14.2.21': optional: true '@next/swc-linux-x64-gnu@14.2.13': optional: true - '@next/swc-linux-x64-gnu@14.2.15': + '@next/swc-linux-x64-gnu@14.2.21': optional: true '@next/swc-linux-x64-musl@14.2.13': optional: true - '@next/swc-linux-x64-musl@14.2.15': + '@next/swc-linux-x64-musl@14.2.21': optional: true '@next/swc-win32-arm64-msvc@14.2.13': optional: true - '@next/swc-win32-arm64-msvc@14.2.15': + '@next/swc-win32-arm64-msvc@14.2.21': optional: true '@next/swc-win32-ia32-msvc@14.2.13': optional: true - '@next/swc-win32-ia32-msvc@14.2.15': + '@next/swc-win32-ia32-msvc@14.2.21': optional: true '@next/swc-win32-x64-msvc@14.2.13': optional: true - '@next/swc-win32-x64-msvc@14.2.15': + '@next/swc-win32-x64-msvc@14.2.21': optional: true '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': @@ -17309,12 +17314,12 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.0.7 - babel-plugin-superjson-next@0.4.5(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3): + babel-plugin-superjson-next@0.4.5(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3): dependencies: '@babel/helper-module-imports': 7.24.6 '@babel/types': 7.25.6 hoist-non-react-statics: 3.3.2 - next: 14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) + next: 14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) superjson: 1.13.3 babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.6): @@ -19011,7 +19016,7 @@ snapshots: object.assign: 4.1.5 object.entries: 1.1.5 - eslint-config-next@12.1.6(eslint@8.41.0)(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(typescript@5.0.4): + eslint-config-next@12.1.6(eslint@8.41.0)(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(typescript@5.0.4): dependencies: '@next/eslint-plugin-next': 12.1.6 '@rushstack/eslint-patch': 1.1.3 @@ -19023,7 +19028,7 @@ snapshots: eslint-plugin-jsx-a11y: 6.5.1(eslint@8.41.0) eslint-plugin-react: 7.30.1(eslint@8.41.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.41.0) - next: 14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) + next: 14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) optionalDependencies: typescript: 5.0.4 transitivePeerDependencies: @@ -22457,7 +22462,7 @@ snapshots: dependencies: react: 18.2.0 - next-i18next@15.3.1(i18next@23.16.5)(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-i18next@15.1.1(i18next@23.16.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + next-i18next@15.3.1(i18next@23.16.5)(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-i18next@15.1.1(i18next@23.16.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.25.4 '@types/hoist-non-react-statics': 3.3.5 @@ -22465,26 +22470,26 @@ snapshots: hoist-non-react-statics: 3.3.2 i18next: 23.16.5 i18next-fs-backend: 2.3.2 - next: 14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) + next: 14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) react: 18.2.0 react-i18next: 15.1.1(i18next@23.16.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-superjson@0.0.4(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3)(webpack@5.92.1(@swc/core@1.5.25(@swc/helpers@0.5.11))): + next-superjson@0.0.4(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3)(webpack@5.92.1(@swc/core@1.5.25(@swc/helpers@0.5.11))): dependencies: '@babel/core': 7.24.6 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.6) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.6) babel-loader: 8.3.0(@babel/core@7.24.6)(webpack@5.92.1(@swc/core@1.5.25(@swc/helpers@0.5.11))) - babel-plugin-superjson-next: 0.4.5(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3) - next: 14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) + babel-plugin-superjson-next: 0.4.5(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(superjson@1.13.3) + next: 14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) transitivePeerDependencies: - superjson - supports-color - webpack - next-themes@0.2.1(next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-themes@0.2.1(next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - next: 14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) + next: 14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -22515,9 +22520,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.15(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6): + next@14.2.21(@babel/core@7.24.6)(@playwright/test@1.46.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.6): dependencies: - '@next/env': 14.2.15 + '@next/env': 14.2.21 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001680 @@ -22527,15 +22532,15 @@ snapshots: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.24.6)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.15 - '@next/swc-darwin-x64': 14.2.15 - '@next/swc-linux-arm64-gnu': 14.2.15 - '@next/swc-linux-arm64-musl': 14.2.15 - '@next/swc-linux-x64-gnu': 14.2.15 - '@next/swc-linux-x64-musl': 14.2.15 - '@next/swc-win32-arm64-msvc': 14.2.15 - '@next/swc-win32-ia32-msvc': 14.2.15 - '@next/swc-win32-x64-msvc': 14.2.15 + '@next/swc-darwin-arm64': 14.2.21 + '@next/swc-darwin-x64': 14.2.21 + '@next/swc-linux-arm64-gnu': 14.2.21 + '@next/swc-linux-arm64-musl': 14.2.21 + '@next/swc-linux-x64-gnu': 14.2.21 + '@next/swc-linux-x64-musl': 14.2.21 + '@next/swc-win32-arm64-msvc': 14.2.21 + '@next/swc-win32-ia32-msvc': 14.2.21 + '@next/swc-win32-x64-msvc': 14.2.21 '@playwright/test': 1.46.0 sass: 1.77.6 transitivePeerDependencies: