From 25a60969fb73a7899993c2edea78e02cfa56154e Mon Sep 17 00:00:00 2001 From: Christian Meis Date: Thu, 7 Sep 2023 12:20:49 +0000 Subject: [PATCH 01/57] Translated using Weblate (German) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/de/ --- web/public/static/langs/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/public/static/langs/de.json b/web/public/static/langs/de.json index d29760f1..4af63501 100644 --- a/web/public/static/langs/de.json +++ b/web/public/static/langs/de.json @@ -25,7 +25,7 @@ "notifications_click_copy_url_title": "Link-URL in Zwischenablage kopieren", "publish_dialog_priority_low": "Niedrige Priorität", "publish_dialog_message_label": "Nachricht", - "action_bar_unsubscribe": "Von Thema abmelden", + "action_bar_unsubscribe": "Abmelden", "notifications_copied_to_clipboard": "In Zwischenablage kopiert", "notifications_loading": "Benachrichtigungen werden geladen …", "notifications_attachment_open_title": "Gehe zu {{url}}", @@ -154,7 +154,7 @@ "notifications_actions_not_supported": "Diese Aktion wird in der Web-App nicht unterstützt", "notifications_actions_http_request_title": "Sende HTTP {{method}} an {{url}}", "action_bar_show_menu": "Menü anzeigen", - "action_bar_toggle_mute": "Stummschaltung der Benachrichtigungen an/aus", + "action_bar_toggle_mute": "Stummschaltung an/aus", "message_bar_show_dialog": "Dialog zur Veröffentlichung anzeigen", "message_bar_publish": "Benachrichtigung veröffentlichen", "nav_button_connecting": "verbinde", From bae30d79c9609bc3eace0199b9a8c0a270405f7b Mon Sep 17 00:00:00 2001 From: SinecKers Date: Wed, 6 Sep 2023 22:00:45 +0000 Subject: [PATCH 02/57] Translated using Weblate (Turkish) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/tr/ --- web/public/static/langs/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/public/static/langs/tr.json b/web/public/static/langs/tr.json index 07fba528..4e73cfb7 100644 --- a/web/public/static/langs/tr.json +++ b/web/public/static/langs/tr.json @@ -77,7 +77,7 @@ "notifications_example": "Örnek", "notifications_more_details": "Daha fazla bilgi için web sitesine veya belgelendirmeye bakın.", "publish_dialog_chip_attach_url_label": "URL ile dosya ekle", - "prefs_notifications_min_priority_default_and_higher": "Öntanımlı öncelik ve üstü", + "prefs_notifications_min_priority_default_and_higher": "Varsayılan öncelik ve üstü", "prefs_notifications_delete_after_three_hours": "Üç saat sonra", "notifications_none_for_any_description": "Bir konuya bildirim göndermek için konu URL'sine PUT veya POST göndermeniz yeterlidir. İşte konularınızdan birini kullanan bir örnek.", "notifications_no_subscriptions_title": "Henüz aboneliğiniz yok gibi görünüyor.", From 044f4182d028f79777762374ccc9bedef45bd913 Mon Sep 17 00:00:00 2001 From: Jag_k Date: Thu, 7 Sep 2023 00:17:25 +0000 Subject: [PATCH 03/57] Translated using Weblate (Russian) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/ru/ --- web/public/static/langs/ru.json | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/web/public/static/langs/ru.json b/web/public/static/langs/ru.json index d2c8d7fc..16ddfe74 100644 --- a/web/public/static/langs/ru.json +++ b/web/public/static/langs/ru.json @@ -354,7 +354,7 @@ "account_upgrade_dialog_billing_contact_email": "По вопросам оплаты, пожалуйста свяжитесь с нами.", "account_upgrade_dialog_billing_contact_website": "По вопросам оплаты, пожалуйста обратитесь к нашему сайту.", "publish_dialog_call_reset": "Удалить вызов", - "account_basics_phone_numbers_dialog_description": "Для использования уведомлений необходимо добавить и подтвердить хотя бы один номер телефона. Проверить можно используя SMS или звонок.", + "account_basics_phone_numbers_dialog_description": "Для того что бы использовать возможность уведомлений о вызовах, нужно добавить и проверить хотя бы один номер телефона. Проверить можно используя SMS или звонок.", "account_basics_phone_numbers_dialog_title": "Добавить номер телефона", "account_basics_phone_numbers_dialog_number_placeholder": "например +1222333444", "account_basics_phone_numbers_dialog_code_placeholder": "например 123456", @@ -363,5 +363,22 @@ "account_usage_calls_none": "Невозможно совершать вызовы с этим аккаунтом", "publish_dialog_chip_call_no_verified_numbers_tooltip": "Нет проверенных номеров", "account_basics_phone_numbers_copied_to_clipboard": "Номер телефона скопирован в буфер обмена", - "account_upgrade_dialog_tier_features_no_calls": "Нет вызовов" + "account_upgrade_dialog_tier_features_no_calls": "Нет вызовов", + "account_upgrade_dialog_tier_features_calls_one": "{{calls}} ежедневный звонок", + "account_basics_phone_numbers_dialog_number_label": "Номер телефона", + "account_basics_phone_numbers_dialog_check_verification_button": "Подтвердить код", + "account_upgrade_dialog_tier_features_calls_other": "{{calls}} ежедневных звонков", + "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} зарезервированная тема", + "account_basics_phone_numbers_no_phone_numbers_yet": "Телефонных номеров пока нет", + "publish_dialog_chip_call_label": "Звонок", + "account_upgrade_dialog_tier_features_emails_one": "{{emails}} ежедневное письмо", + "account_upgrade_dialog_tier_features_messages_one": "{{messages}} ежедневное сообщения", + "account_basics_phone_numbers_description": "Для уведомлений о телефонных звонках", + "publish_dialog_call_label": "Звонок", + "account_basics_phone_numbers_dialog_channel_call": "Позвонить", + "account_basics_phone_numbers_title": "Номера телефонов", + "account_basics_phone_numbers_dialog_code_label": "Проверочный код", + "account_basics_phone_numbers_dialog_verify_button_call": "Позвонить мне", + "publish_dialog_call_item": "Вызов телефонного номера {{number}}", + "account_basics_phone_numbers_dialog_channel_sms": "SMS" } From 6ec1ccf7a3d9052cb3d9e67c1ac86cd7c97149b4 Mon Sep 17 00:00:00 2001 From: jonnysemon Date: Tue, 5 Sep 2023 18:08:50 +0000 Subject: [PATCH 04/57] Translated using Weblate (Arabic) Currently translated at 85.8% (328 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/ar/ --- web/public/static/langs/ar.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/ar.json b/web/public/static/langs/ar.json index 301ae5eb..d9d44a98 100644 --- a/web/public/static/langs/ar.json +++ b/web/public/static/langs/ar.json @@ -329,5 +329,6 @@ "publish_dialog_attachment_limits_quota_reached": "يتجاوز الحصة، {{remainingBytes}} متبقية", "account_basics_tier_paid_until": "تم دفع مبلغ الاشتراك إلى غاية {{date}}، وسيتم تجديده تِلْقائيًا", "account_basics_tier_canceled_subscription": "تم إلغاء اشتراكك وسيتم إعادته إلى مستوى حساب مجاني بداية مِن {{date}}.", - "account_delete_dialog_billing_warning": "إلغاء حسابك أيضاً يلغي اشتراكك في الفوترة فوراً ولن تتمكن من الوصول إلى لوح الفوترة بعد الآن." + "account_delete_dialog_billing_warning": "إلغاء حسابك أيضاً يلغي اشتراكك في الفوترة فوراً ولن تتمكن من الوصول إلى لوح الفوترة بعد الآن.", + "nav_upgrade_banner_description": "حجز المواضيع والمزيد من الرسائل ورسائل البريد الإلكتروني والمرفقات الأكبر حجمًا" } From a407a2e0f8fc5655a42005f1bf41c0640d69ebd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Fri, 8 Sep 2023 04:01:07 +0000 Subject: [PATCH 05/57] Translated using Weblate (Galician) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/gl/ --- web/public/static/langs/gl.json | 151 +++++++++++++++++++++++++++++++- 1 file changed, 150 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/gl.json b/web/public/static/langs/gl.json index efc418ff..1f816cf4 100644 --- a/web/public/static/langs/gl.json +++ b/web/public/static/langs/gl.json @@ -160,5 +160,154 @@ "publish_dialog_checkbox_publish_another": "Publicar outra", "emoji_picker_search_clear": "Limpar busca", "publish_dialog_chip_call_no_verified_numbers_tooltip": "Números de teléfono non verificados", - "publish_dialog_attached_file_remove": "Retirar ficheiro anexo" + "publish_dialog_attached_file_remove": "Retirar ficheiro anexo", + "account_upgrade_dialog_tier_features_no_calls": "Sen chamadas", + "account_upgrade_dialog_billing_contact_email": "Para preguntas sobre pagamentos, contacta con nós directamente.", + "account_tokens_dialog_title_create": "Crear token de acceso", + "prefs_reservations_dialog_title_edit": "Editar tema reservado", + "priority_default": "por defecto", + "prefs_notifications_min_priority_title": "Prioridade mínima", + "account_upgrade_dialog_tier_features_calls_one": "{{calls}} chamadas de teléfono diarias", + "account_upgrade_dialog_tier_current_label": "Actual", + "account_tokens_table_token_header": "Token", + "prefs_notifications_delete_after_never": "Nunca", + "prefs_users_description": "Engadir/eliminar usuarias dos temas protexidos. Ten en conta que as credenciais gárdanse na almacenaxe local do navegador.", + "subscribe_dialog_subscribe_description": "Os temas poderían non estar proxetidos con contrasinal, así que elixe un nome complicado de adiviñar. Unha vez subscrita, podes PUT/POST notificacións.", + "account_upgrade_dialog_interval_yearly_discount_save_up_to": "aforro ata un {{discount}}%", + "account_tokens_dialog_label": "Etiqueta, ex. notificación de Radarr", + "account_tokens_table_expires_header": "Caducidade", + "account_upgrade_dialog_proration_info": "Axuste: ao mellorar a un plan de pagamento superior, a diferencia vaise cobrar inmediatamente. Se degradas a conta a un plan inferior a diferencia usarase para pagar futuros períodos de pagamento.", + "prefs_reservations_dialog_access_label": "Acceso", + "account_usage_attachment_storage_title": "Almacenaxe dos anexos", + "prefs_users_dialog_username_label": "Identificador, ex. xoana", + "prefs_reservations_table_not_subscribed": "Non subscrita", + "account_upgrade_dialog_tier_features_emails_other": "{{emails}} correos diarios", + "prefs_notifications_min_priority_max_only": "Só prioridade máxima", + "account_upgrade_dialog_tier_features_calls_other": "{{calls}} chamadas de teléfono diarias", + "prefs_notifications_sound_description_some": "As notificacións sonan co ton {{sound}} ao chegar", + "prefs_reservations_edit_button": "Editar acceso ao tema", + "account_tokens_dialog_expires_never": "O token non caduca", + "subscribe_dialog_login_title": "Require inciar sesión", + "account_tokens_dialog_expires_x_days": "O token caduca en {{days}} días", + "prefs_reservations_table_everyone_read_only": "Podo publicar e subscribirme, calquera pode subscribirse", + "prefs_reservations_table_everyone_deny_all": "Só eu podo publicar e subscribirme", + "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} tema reservado", + "subscribe_dialog_login_button_login": "Acceder", + "account_upgrade_dialog_tier_features_no_reservations": "Sen temas reservados", + "prefs_users_table_cannot_delete_or_edit": "Non se pode eliminar ou editar unha usuaria coa sesión iniciada", + "prefs_notifications_delete_after_three_hours_description": "As notificacións autoelimínanse após tres horas", + "prefs_notifications_delete_after_three_hours": "Após tres horas", + "prefs_notifications_min_priority_description_x_or_higher": "Mostrar as notificacións se a prioridade é {{number}} {{name}} ou superior", + "reservation_delete_dialog_description": "Ao eliminar a reserva cedes a propiedade do tema, e permites que outras persoas poidan reservalo. Podes manter ou eliminar as mensaxes e anexos existentes.", + "prefs_reservations_table_everyone_read_write": "Calquera pode publicar e subscribirse", + "prefs_reservations_dialog_title_delete": "Eliminar a reserva do tema", + "prefs_users_table": "Táboa de usuarias", + "prefs_reservations_table_topic_header": "Tema", + "reservation_delete_dialog_submit_button": "Eliminar a reserva", + "prefs_reservations_limit_reached": "Acadaches o límite de temas que podes reservar.", + "account_upgrade_dialog_interval_monthly": "Mensual", + "prefs_users_add_button": "Engadir usuaria", + "account_upgrade_dialog_tier_features_messages_other": "{{messages}} mensaxes diarias", + "prefs_appearance_language_title": "Idioma", + "prefs_notifications_delete_after_one_day_description": "As notificacións autoelimínanse após un día", + "account_tokens_table_never_expires": "Non caduca", + "account_tokens_delete_dialog_title": "Desbotar token de acceso", + "prefs_notifications_delete_after_one_month": "Após un mes", + "account_tokens_delete_dialog_description": "Antes de borrar o token de acceso mira que ningunha aplicación ou programa o está usando. Esta acción non pode desfacerse.", + "account_upgrade_dialog_button_cancel": "Cancelar", + "account_tokens_table_label_header": "Etiqueta", + "account_upgrade_dialog_billing_contact_website": "Para preguntas sobre pagamentos, vai ao noso sitiio web.", + "prefs_notifications_delete_after_never_description": "As notificacións non se eliminarán nunca automáticamente", + "account_upgrade_dialog_tier_features_reservations_other": "{{reservations}} temas reservados", + "prefs_notifications_sound_description_none": "As notificacións non reproducen un ton ao chegar", + "account_tokens_description": "Usar tokens de acceso ao publicar e subscribirte a través da API de ntfy, así non tes que enviar as credenciais. Le a documentación para saber máis.", + "prefs_reservations_table": "Táboa cos temas reservados", + "account_upgrade_dialog_button_cancel_subscription": "Cancelar subscrición", + "account_upgrade_dialog_tier_features_emails_one": "{{emails}} correo diario", + "account_upgrade_dialog_tier_features_attachment_file_size": "{{filesize}} por ficheiro", + "prefs_reservations_description": "Podes reservar nomes de temas para uso personal. Ao reservar un tema tes a propiedade sobre del, e permíteche definir os permisos de acceso para outras usuarias sobre o tema.", + "prefs_users_description_no_sync": "Usuarias e contrasinais non están sincronizados coa túa conta.", + "account_tokens_dialog_title_edit": "Editar token de acceso", + "prefs_users_table_base_url_header": "URL do servizo", + "account_upgrade_dialog_tier_features_messages_one": "{{mensaxes}} mensaxe diaria", + "account_upgrade_dialog_reservations_warning_one": "O nivel seleccionado permite reservar menos temas que o nivel actual. Antes de cambiar de nivel, elimina unha reserva polo menos. Podes eliminar as reservas nos Axustes.", + "prefs_users_table_user_header": "Usuaria", + "error_boundary_stack_trace": "Trazas do problema", + "prefs_users_dialog_password_label": "Contrasinal", + "prefs_notifications_delete_after_one_week": "Após unha semana", + "prefs_reservations_delete_button": "Restablecer acceso ao tema", + "prefs_notifications_delete_after_one_week_description": "As notificacións autoelimínanse após unha semana", + "error_boundary_unsupported_indexeddb_description": "A app ntfy web precisa a función IndexedDB, e o teu navegador non ten soporte para IndexedDB no modo privado.

Aínda que é unha mágoa, tampouco ten moito senso usar a app ntfy web en modo privado, porque todo se garda na almacenaxe do navegador. Podes aprender máis sobre isto neste tema de GitHub, ou comentarnos o que che parece en Discord ou Matrix.", + "subscribe_dialog_subscribe_button_cancel": "Cancelar", + "account_basics_tier_description": "O nivel da túa conta", + "prefs_reservations_dialog_title_add": "Reservar tema", + "account_upgrade_dialog_cancel_warning": "Isto vai cancelar a túa subscrición, e degradar a túa conta o {{date}}. Nesa data, as reservas de temas así como as mensaxes na caché do servidor van ser eliminadas.", + "prefs_notifications_sound_title": "Ton da notificación", + "prefs_notifications_min_priority_default_and_higher": "Prioridade por defecto e superior", + "prefs_reservations_table_access_header": "Acceso", + "account_tokens_table_copied_to_clipboard": "Copiouse o token de acceso", + "account_tokens_dialog_expires_x_hours": "O token caduca en {{hours}} horas", + "prefs_users_edit_button": "Editar usuaria", + "account_upgrade_dialog_title": "Cambiar facturación da conta", + "priority_low": "baixa", + "prefs_reservations_table_click_to_subscribe": "Preme para subscribirte", + "error_boundary_description": "Isto non debería pasar. Lamentámolo.
Se tes un minuto, informa en GitHub, ou fáinolo saber en Discord ou Matrix.", + "priority_min": "min", + "prefs_notifications_min_priority_description_any": "Mostrar todas as notificacións, obviando a prioridade", + "error_boundary_gathering_info": "Obter máis info…", + "error_boundary_unsupported_indexeddb_title": "Non hai soporte para a navegación privada", + "prefs_notifications_delete_after_one_day": "Após un día", + "error_boundary_title": "vaite!, ntfy fallou", + "reservation_delete_dialog_action_keep_description": "As mensaxes e anexos que están no servidor serán visibles públicamente para quen saiba o nome do tema.", + "prefs_reservations_add_button": "Engadir tema reservado", + "prefs_reservations_title": "Temas reservados", + "prefs_reservations_dialog_description": "Ao reservar un tema tes a propiedade sobre el, e permíteche definir os permisos de acceso para outras usuarias.", + "account_tokens_delete_dialog_submit_button": "Eliminar definitivamente o token", + "prefs_notifications_title": "Notificacións", + "account_tokens_title": "Tokens de acceso", + "prefs_reservations_dialog_topic_label": "Tema", + "prefs_users_title": "Xestionar usuarias", + "account_upgrade_dialog_tier_price_billed_monthly": "{{price}} anual. Pagamento mensual.", + "account_tokens_dialog_expires_unchanged": "Deixar a data de caducidade sen cambiar", + "error_boundary_button_copy_stack_trace": "Copiar trazas do problema", + "account_tokens_dialog_title_delete": "Eliminar token de acceso", + "reservation_delete_dialog_action_keep_title": "Manter as mensaxes e anexos gardados", + "prefs_notifications_sound_no_sound": "Sen ton", + "account_upgrade_dialog_interval_yearly": "Anual", + "account_upgrade_dialog_button_redirect_signup": "Crea unha conta", + "account_tokens_dialog_button_cancel": "Cancelar", + "account_upgrade_dialog_tier_price_billed_yearly": "{{price}} cobrado anualmente. Aforro {{save}}.", + "prefs_notifications_min_priority_high_and_higher": "Prioridade alta e superior", + "priority_max": "máx", + "prefs_users_delete_button": "Eliminar usuaria", + "prefs_notifications_min_priority_any": "Calquera prioridade", + "account_tokens_dialog_expires_label": "O token caduca o", + "prefs_notifications_delete_after_title": "Desbotar notificacións", + "account_upgrade_dialog_interval_yearly_discount_save": "aforro {{discount}}%", + "prefs_users_dialog_title_edit": "Editar usuaria", + "prefs_notifications_min_priority_low_and_higher": "Prioridade baixa e superior", + "account_tokens_dialog_button_update": "Actualizar token", + "account_upgrade_dialog_tier_features_attachment_total_size": "{{totalsize}} almacenaxe total", + "prefs_reservations_table_everyone_write_only": "Podo publicar e subscribirme, calquera pode publicar", + "prefs_appearance_title": "Aparencia", + "account_tokens_table_cannot_delete_or_edit": "Non se pode editar ou desbotar o token da sesión actual", + "prefs_notifications_sound_play": "Reproducir ton seleccionado", + "account_tokens_table_last_access_header": "Último acceso", + "account_tokens_table_last_origin_tooltip": "Desde o enderezo IP {{ip}}, preme para detalles", + "account_upgrade_dialog_tier_price_per_month": "mes", + "account_tokens_table_current_session": "Sesión do navegador actual", + "account_upgrade_dialog_button_pay_now": "Paga e subscríbete", + "reservation_delete_dialog_action_delete_title": "Eliminar mensaxes e anexos gardados", + "reservation_delete_dialog_action_delete_description": "As mensaxes e anexos vanse borrar definitivamente. Esta acción non ten volta.", + "prefs_notifications_delete_after_one_month_description": "As notificacións autoelimínanse após un mes", + "prefs_users_dialog_base_url_label": "URL do servizo, ex. https://ntfy.sh", + "account_upgrade_dialog_tier_selected_label": "Seleccionado", + "account_upgrade_dialog_button_update_subscription": "Actualizar subscrición", + "priority_high": "alta", + "account_delete_dialog_billing_warning": "Ao eliminar a conta tamén cancelas o pagamento das subscricións. Non poderás volver acceder ao taboleiro de pagamentos.", + "prefs_notifications_min_priority_description_max": "Mostrar notificacións se a prioridade é 5 (máx)", + "account_upgrade_dialog_reservations_warning_other": "O nivel seleccionado permite reservar menos temas que o nivel actual. Antes de cambiar de nivel, elimina {{count}} reservas polo menos. Podes eliminar as reservas nos Axustes.", + "prefs_users_dialog_title_add": "Engadir usuaria", + "account_tokens_dialog_button_create": "Crear token", + "account_tokens_table_create_token_button": "Crear token de acceso" } From 42063cbd5c2f254e28270cfb2a609e092cc1eabd Mon Sep 17 00:00:00 2001 From: Jose Boullosa Date: Tue, 5 Sep 2023 23:54:30 +0000 Subject: [PATCH 06/57] Translated using Weblate (Galician) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/gl/ --- web/public/static/langs/gl.json | 77 +++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/web/public/static/langs/gl.json b/web/public/static/langs/gl.json index 1f816cf4..92d35610 100644 --- a/web/public/static/langs/gl.json +++ b/web/public/static/langs/gl.json @@ -114,7 +114,7 @@ "publish_dialog_title_topic": "Publicar en {{topic}}", "publish_dialog_title_no_topic": "Publicar notificación", "publish_dialog_progress_uploading": "Enviando…", - "publish_dialog_progress_uploading_detail": "Enviando {{loaded}}/{{total}} ({{percent}}%) …", + "publish_dialog_progress_uploading_detail": "Enviando {{loaded}}/{{total}} ({{percent}}%) …", "publish_dialog_message_published": "Notificación publicada", "publish_dialog_attachment_limits_file_and_quota_reached": "supera o límite de ficheiros e cota {{fileSizeLimit}}, quedan {{remainingBytes}}", "publish_dialog_attachment_limits_file_reached": "supera o límite para ficheiros {{fileSizeLimit}}", @@ -125,7 +125,7 @@ "publish_dialog_priority_default": "Prioridade por defecto", "publish_dialog_priority_high": "Prioridade alta", "publish_dialog_priority_max": "Prioridade Máxima", - "publish_dialog_base_url_label": "URL de servizo", + "publish_dialog_base_url_label": "URL do servizo", "notifications_more_details": "Para máis información, visita o sitio web ou le a documentación.", "publish_dialog_call_label": "Chamada de teléfono", "publish_dialog_call_reset": "Retirar chamada de teléfono", @@ -309,5 +309,76 @@ "account_upgrade_dialog_reservations_warning_other": "O nivel seleccionado permite reservar menos temas que o nivel actual. Antes de cambiar de nivel, elimina {{count}} reservas polo menos. Podes eliminar as reservas nos Axustes.", "prefs_users_dialog_title_add": "Engadir usuaria", "account_tokens_dialog_button_create": "Crear token", - "account_tokens_table_create_token_button": "Crear token de acceso" + "account_tokens_table_create_token_button": "Crear token de acceso", + "account_basics_tier_interval_monthly": "mensual", + "account_basics_tier_canceled_subscription": "A sua suscripción foi cancelada e vostede será degradado a unha conta gratuita o {{date}}.", + "account_basics_password_dialog_current_password_incorrect": "Contrasinal incorrecto", + "account_basics_phone_numbers_dialog_number_label": "Número de teléfono", + "account_basics_password_dialog_button_submit": "Modificar contrasinal", + "account_basics_username_title": "Usuario", + "account_basics_phone_numbers_dialog_check_verification_button": "Código de confirmación", + "account_usage_messages_title": "Mesaxes publicados", + "account_basics_phone_numbers_dialog_verify_button_sms": "Enviar SMS", + "account_basics_tier_change_button": "Cambiar", + "account_basics_phone_numbers_dialog_description": "Para usar a característica de chamadas de teléfono, vostede debe engadir e verificar ao menos un número de teléfono. A verificación pode ser realizada vía SMS ou a través de chamada.", + "account_delete_title": "Borrar conta", + "account_delete_dialog_label": "Contrasinal", + "account_basics_tier_admin_suffix_with_tier": "(con tier {{tier}})", + "subscribe_dialog_login_username_label": "Nome de usuario, ex. phil", + "subscribe_dialog_error_user_not_authorized": "Usuario {{username}} non autorizado", + "account_basics_title": "Conta", + "account_basics_phone_numbers_no_phone_numbers_yet": "Aínda non hay números de teléfono", + "subscribe_dialog_subscribe_button_generate_topic_name": "Xerar nome", + "subscribe_dialog_login_password_label": "Contrasinal", + "subscribe_dialog_subscribe_button_subscribe": "Subscribirse", + "account_basics_phone_numbers_dialog_title": "Engadir número de teléfono", + "account_basics_username_admin_tooltip": "É vostede Admin", + "account_delete_dialog_description": "Isto borrará permanentemente a túa conta, incluido todos os datos almacenados no servidor. Despois do borrado, o teu nome de usuario non estará dispoñible durante 7 días. Se realmente queres proceder, por favor confirme co seu contrasinal na caixa inferior.", + "account_usage_reservations_none": "Non hai temas reservados para esta conta", + "subscribe_dialog_subscribe_topic_placeholder": "Nome do tema, ex. phil_alertas", + "account_usage_title": "Uso", + "account_basics_tier_upgrade_button": "Mexorar a Pro", + "subscribe_dialog_error_topic_already_reserved": "Tema xa reservado", + "account_basics_tier_admin_suffix_no_tier": "(sen tier)", + "account_basics_tier_payment_overdue": "O pago está retrasado. Por favor, revise o seu método de pago o a súa conta será degradada pronto.", + "account_basics_phone_numbers_description": "Para notificacións telefónicas", + "account_basics_tier_free": "De balde", + "account_basics_tier_admin": "Admin", + "account_delete_dialog_button_cancel": "Cancelar", + "account_basics_password_description": "Modificar o contrasinal da conta", + "account_usage_calls_title": "Chamadas realizadas", + "account_basics_tier_basic": "Básico", + "account_basics_phone_numbers_copied_to_clipboard": "Número de teléfono copiado no portapapeis", + "account_basics_tier_title": "Tipo de conta", + "account_usage_cannot_create_portal_session": "Non foi posible abrir o portal de pagos", + "account_delete_description": "Borrar permanentemente a túa conta", + "account_basics_phone_numbers_dialog_number_placeholder": "ex. +1222333444", + "account_basics_phone_numbers_dialog_code_placeholder": "ex. 123456", + "account_basics_tier_manage_billing_button": "Xestionar pagos", + "account_basics_username_description": "Ei, ese eres ti ❤", + "account_basics_password_dialog_confirm_password_label": "Confirmar contrasinal", + "account_basics_tier_interval_yearly": "anual", + "account_delete_dialog_button_submit": "Borrar permanentemente a conta", + "account_basics_phone_numbers_dialog_channel_call": "Chamada", + "account_basics_password_title": "Contrasinal", + "account_basics_password_dialog_new_password_label": "Novo contrasinal", + "account_usage_of_limit": "de {{limit}}", + "subscribe_dialog_error_user_anonymous": "anónimo", + "account_usage_basis_ip_description": "Estadísticas de uso e límites para esta conta están basados na sua IP, polo que poden estar compartidos con outros usuarios. Os limites mostrados son aproximados, basados nos ratios de limite existentes.", + "account_basics_password_dialog_title": "Modificar contrasinal", + "account_usage_limits_reset_daily": "Límite de uso é reiniciado diariamente a medianoite (UTC(", + "account_usage_unlimited": "Sen límites", + "account_basics_phone_numbers_title": "Números de teléfono", + "account_basics_password_dialog_current_password_label": "Contrasinal actual", + "subscribe_dialog_subscribe_base_url_label": "URL do servizo", + "account_usage_reservations_title": "Temas reservados", + "account_usage_calls_none": "Non se poden realizar chamadas con esta conta", + "subscribe_dialog_subscribe_use_another_label": "Usar outro servidor", + "account_basics_phone_numbers_dialog_code_label": "Código de verificación", + "account_basics_tier_paid_until": "Suscripción pagada ata {{date}}, e vaise auto-renovar", + "account_usage_attachment_storage_description": "{{filesize}} por arquivo, borrado despois de {{expiry}}", + "account_basics_phone_numbers_dialog_verify_button_call": "Chámame", + "account_usage_emails_title": "Emails enviados", + "account_basics_phone_numbers_dialog_channel_sms": "SMS", + "subscribe_dialog_login_description": "Este tema está protexido por contrasinal. Por favor, introduza o usuario e contrasinal para subscribirse." } From 68a7756621946c366ebfb99c614f7255e0494183 Mon Sep 17 00:00:00 2001 From: Mazurky Date: Sat, 9 Sep 2023 15:29:57 +0000 Subject: [PATCH 07/57] Translated using Weblate (Slovak) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/sk/ --- web/public/static/langs/sk.json | 209 +++++++++++++++++++++++++++++++- 1 file changed, 208 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/sk.json b/web/public/static/langs/sk.json index e2a54dba..8ea1b45f 100644 --- a/web/public/static/langs/sk.json +++ b/web/public/static/langs/sk.json @@ -173,5 +173,212 @@ "publish_dialog_attach_placeholder": "Pripojiť súbor pomocou URL adresy, napr. https://f-droid.org/F-Droid.apk", "publish_dialog_chip_email_label": "Preposlanie na email", "publish_dialog_chip_attach_file_label": "Pripojiť miestny súbor", - "publish_dialog_details_examples_description": "Príklady a podrobný opis všetkých funkcií odosielania nájdete v dokumentácii." + "publish_dialog_details_examples_description": "Príklady a podrobný opis všetkých funkcií odosielania nájdete v dokumentácii.", + "account_upgrade_dialog_tier_features_no_calls": "Žiadne telefonáty", + "account_upgrade_dialog_billing_contact_email": "V prípade otázok týkajúcich sa fakturácie nás prosím kontaktujte tu.", + "account_tokens_dialog_title_create": "Vytvoriť prístupový token", + "prefs_reservations_dialog_title_edit": "Upraviť rezervovanú tému", + "account_basics_tier_interval_monthly": "mesačne", + "account_basics_tier_canceled_subscription": "Vaše predplatné bolo zrušené a bude preradené na bezplatné konto k dátumu {{date}}.", + "priority_default": "predvolená", + "prefs_notifications_min_priority_title": "Najnižšia priorita", + "account_upgrade_dialog_tier_features_calls_one": "{{calls}} denný telefonát", + "account_upgrade_dialog_tier_current_label": "Aktuálne", + "account_basics_password_dialog_current_password_incorrect": "Nesprávne heslo", + "account_tokens_table_token_header": "Token", + "prefs_notifications_delete_after_never": "Nikdy", + "prefs_users_description": "Tu môžete pridávať/odstraňovať používateľov pre svoje chránené témy. Upozorňujeme, že používateľské meno a heslo sú uložené v lokálnom úložisku prehliadača.", + "account_basics_phone_numbers_dialog_number_label": "Telefónne číslo", + "subscribe_dialog_subscribe_description": "Témy nemusia byť chránené heslom, preto vyberte názov, ktorý nie je ľahké uhádnuť. Po prihlásení sa na odber môžete PUT/POST oznámenia.", + "account_basics_password_dialog_button_submit": "Zmeniť heslo", + "account_basics_phone_numbers_dialog_check_verification_button": "Potvrdiť kód", + "account_upgrade_dialog_interval_yearly_discount_save_up_to": "ušetrite až {{discount}}%", + "account_tokens_dialog_label": "Označenie, napr. Radarr notifications", + "account_tokens_table_expires_header": "Vyprší", + "account_upgrade_dialog_proration_info": "Vyhlásenie: Pri prechode medzi platenými plánmi sa rozdiel v cene účtuje okamžite. Pri prechode na nižšiu úroveň sa zostatok použije na platbu za budúce fakturačné obdobia.", + "prefs_reservations_dialog_access_label": "Prístup", + "account_usage_attachment_storage_title": "Ukladanie príloh", + "prefs_users_dialog_username_label": "Používateľské meno, napr. phil", + "account_usage_messages_title": "Zverejnené správy", + "emoji_picker_search_clear": "Vymazať vyhľadávanie", + "prefs_reservations_table_not_subscribed": "Odber nie je prihlásený", + "account_upgrade_dialog_tier_features_emails_other": "{{emails}} denné emaily", + "prefs_notifications_min_priority_max_only": "Iba najvyššia priorita", + "account_upgrade_dialog_tier_features_calls_other": "{{calls}} denné telefonáty", + "prefs_notifications_sound_description_some": "Oznámenia pri príchode prehrávajú zvuk {{sound}}", + "prefs_reservations_edit_button": "Upraviť prístup k téme", + "account_basics_phone_numbers_dialog_verify_button_sms": "Poslať SMS", + "account_basics_tier_change_button": "Zmeniť", + "account_tokens_dialog_expires_never": "Platnosť tokenu nikdy nevyprší", + "subscribe_dialog_login_title": "Vyžaduje sa prihlásenie", + "account_tokens_dialog_expires_x_days": "Token vyprší za {{days}} dní", + "prefs_reservations_table_everyone_read_only": "Môžem publikovať a odoberať, každý môže odoberať", + "prefs_reservations_table_everyone_deny_all": "Iba ja môžem publikovať a odoberať", + "account_basics_phone_numbers_dialog_description": "Ak chcete používať funkciu oznamovanie hovorom, musíte pridať a overiť aspoň jedno telefónne číslo. Overenie je možné vykonať prostredníctvom SMS alebo telefonického hovoru.", + "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} rezervovaná téma", + "account_delete_title": "Odstrániť účet", + "subscribe_dialog_login_button_login": "Prihlásenie", + "account_upgrade_dialog_tier_features_no_reservations": "Žiadne rezervované témy", + "prefs_users_table_cannot_delete_or_edit": "Nie je možné odstrániť alebo upraviť prihláseného používateľa", + "account_basics_tier_admin_suffix_with_tier": "(s úrovňou {{tier}})", + "prefs_notifications_delete_after_three_hours_description": "Oznámenia sa automaticky odstránia po troch hodinách", + "prefs_notifications_delete_after_three_hours": "Po troch hodinách", + "prefs_notifications_min_priority_description_x_or_higher": "Zobraziť oznámenia, ak je priorita {{number}} ({{name}}) alebo vyššia", + "reservation_delete_dialog_description": "Odstránením rezervácie sa vzdáte vlastníctva témy a umožníte ostatným, aby si ju rezervovali. Existujúce správy a prílohy si môžete ponechať alebo odstrániť.", + "subscribe_dialog_login_username_label": "Používateľské meno, napr. phil", + "subscribe_dialog_error_user_not_authorized": "Používateľ {{username}} nie je autorizovaný", + "prefs_reservations_table_everyone_read_write": "Každý môže publikovať a odoberať", + "prefs_reservations_dialog_title_delete": "Odstrániť rezervovanú tému", + "prefs_users_table": "Tabuľka používateľov", + "prefs_reservations_table_topic_header": "Téma", + "reservation_delete_dialog_submit_button": "Odstrániť rezerváciu", + "prefs_reservations_limit_reached": "Dosiahli ste limit rezervovaných tém.", + "account_upgrade_dialog_interval_monthly": "Mesačne", + "prefs_users_add_button": "Pridať používateľa", + "account_upgrade_dialog_tier_features_messages_other": "{{messages}} denné správy", + "account_basics_phone_numbers_no_phone_numbers_yet": "Zatiaľ žiadne telefónne čísla", + "subscribe_dialog_subscribe_button_generate_topic_name": "Vygenerovať názov", + "prefs_appearance_language_title": "Jazyk", + "prefs_notifications_delete_after_one_day_description": "Oznámenia sa automaticky odstránia po jednom dni", + "subscribe_dialog_subscribe_button_subscribe": "Odoberať", + "account_tokens_table_never_expires": "Nikdy nevyprší", + "account_tokens_delete_dialog_title": "Odstrániť prístupový token", + "prefs_notifications_delete_after_one_month": "Po jednom mesiaci", + "account_basics_phone_numbers_dialog_title": "Pridať telefónne číslo", + "account_tokens_delete_dialog_description": "Pred odstránením prístupového tokenu sa uistite, že ho aktívne nepoužívajú žiadne aplikácie ani skripty. Túto akciu nie je možné vrátiť späť.", + "account_tokens_table_label_header": "Označenie", + "account_upgrade_dialog_billing_contact_website": "Otázky týkajúce sa fakturácie nájdete na našej webovej stránke.", + "account_basics_username_admin_tooltip": "Ste Admin", + "prefs_notifications_delete_after_never_description": "Oznámenia sa nikdy automaticky neodstránia", + "account_delete_dialog_description": "Tým sa vaše konto natrvalo odstráni vrátane všetkých údajov uložených na serveri. Po vymazaní bude vaše používateľské meno 7 dní nedostupné. Ak naozaj chcete pokračovať, potvrďte svoje heslo v poli nižšie.", + "account_upgrade_dialog_tier_features_reservations_other": "{{reservations}} rezervované témy", + "account_usage_reservations_none": "Žiadne rezervované témy pre toto konto", + "prefs_notifications_sound_description_none": "Pri príchode oznámení sa neprehráva žiadny zvuk", + "account_tokens_description": "Pri publikovaní a prihlasovaní prostredníctvom rozhrania ntfy API používajte prístupové tokeny, aby ste nemuseli posielať prihlasovacie údaje k účtu. Viacej informácií nájdete v dokumentácií.", + "prefs_reservations_table": "Tabuľka rezervovaných tém", + "emoji_picker_search_placeholder": "Vyhľadať emoji", + "account_upgrade_dialog_button_cancel_subscription": "Zrušiť predplatné", + "account_upgrade_dialog_tier_features_emails_one": "{{emails}} denný email", + "account_upgrade_dialog_tier_features_attachment_file_size": "{{filesize}} na jeden súbor", + "prefs_reservations_description": "Tu si môžete rezervovať názvy tém na osobné použitie. Rezervovaním témy získate vlastníctvo nad témou a môžete definovať prístupové práva pre ostatných používateľov k téme.", + "account_usage_title": "Používanie", + "account_basics_tier_upgrade_button": "Vylepšiť na PRO verziu", + "prefs_users_description_no_sync": "Používatelia a heslá nie sú synchronizované s vaším účtom.", + "account_tokens_dialog_title_edit": "Upraviť prístupový token", + "account_upgrade_dialog_tier_features_messages_one": "{{messages}} denná správa", + "account_upgrade_dialog_reservations_warning_one": "Vybraná úroveň umožňuje menej rezervovaných tém ako vaša aktuálna úroveň. Pred zmenou úrovne vymažte aspoň jednu rezerváciu. Rezervácie môžete odstrániť v Nastaveniach.", + "subscribe_dialog_error_topic_already_reserved": "Téma je už rezervovaná", + "prefs_users_table_user_header": "Používateľ", + "error_boundary_stack_trace": "Výpis zásobníka", + "prefs_notifications_delete_after_one_week": "Po jednom týždni", + "prefs_reservations_delete_button": "Resetovať prístup k téme", + "account_basics_tier_admin_suffix_no_tier": "(bez úrovne)", + "prefs_notifications_delete_after_one_week_description": "Oznámenia sa automaticky odstránia po jednom týždni", + "error_boundary_unsupported_indexeddb_description": "Webová aplikácia ntfy potrebuje na fungovanie IndexedDB a váš prehliadač nepodporuje IndexedDB v režime súkromného prehliadania.

Je to síce nešťastné, ale aj tak nemá veľký zmysel používať webovú aplikáciu ntfy v režime súkromného prehliadania, pretože všetko je uložené v úložisku prehliadača. Viac informácií si môžete prečítať v tomto probléme GitHubu alebo sa s nami porozprávať na Discord alebo Matrix.", + "account_basics_tier_payment_overdue": "Vaša platba je po termíne splatnosti. Aktualizujte prosím svoj spôsob platby, inak bude váš účet preradený do nižšej kategórie.", + "account_basics_tier_description": "Úroveň výkonu vášho účtu", + "account_basics_phone_numbers_description": "Pre oznamovanie hovorom", + "account_basics_tier_free": "Zadarmo", + "account_upgrade_dialog_cancel_warning": "Týmto zrušíte svoje predplatné a {{date}} prejdete na nižšiu úroveň svojho účtu. V tento deň budú odstránené rezervácie tém, ako aj správy uložené vo vyrovnávacej pamäti servera.", + "account_basics_tier_admin": "Admin", + "prefs_notifications_sound_title": "Zvuk oznámenia", + "prefs_notifications_min_priority_default_and_higher": "Predvolená priorita a vyššia", + "prefs_reservations_table_access_header": "Prístup", + "account_tokens_table_copied_to_clipboard": "Prístupový token skopírovaný", + "account_tokens_dialog_expires_x_hours": "Token vyprší za {{hours}} hodín", + "prefs_users_edit_button": "Upraviť používateľa", + "account_upgrade_dialog_title": "Zmeniť úroveň účtu", + "priority_low": "nízka", + "prefs_reservations_table_click_to_subscribe": "Kliknutím sa prihlásite na odber", + "account_basics_password_description": "Zmeniť heslo účtu", + "account_usage_calls_title": "Uskutočnené telefonické hovory", + "error_boundary_description": "Toto samozrejme nemalo nastať. Je mi to veľmi ľúto.
Ak máte chvíľu, nahláste to na GitHub alebo nám dajte vedieť cez Discord alebo Matrix.", + "priority_min": "najnižšia", + "account_basics_tier_basic": "Základný", + "prefs_notifications_min_priority_description_any": "Zobraziť všetky oznámenia bez ohľadu na prioritu", + "error_boundary_gathering_info": "Získajte viac informácií…", + "error_boundary_unsupported_indexeddb_title": "Súkromné prehliadanie nie je podporované", + "prefs_notifications_delete_after_one_day": "Po jednom dni", + "error_boundary_title": "Ale nie, ntfy prestalo fungovať", + "reservation_delete_dialog_action_keep_description": "Správy a prílohy, ktoré sú uložené v medzipamäti na serveri, budú verejne viditeľné pre ľudí, ktorí poznajú názov témy.", + "prefs_reservations_add_button": "Pridať rezervovanú tému", + "prefs_reservations_title": "Rezervované témy", + "account_basics_phone_numbers_copied_to_clipboard": "Telefónne číslo skopírované do schránky", + "prefs_reservations_dialog_description": "Rezervovaním témy získate vlastníctvo nad témou a môžete definovať prístupové práva pre ostatných používateľov k téme.", + "account_basics_tier_title": "Typ účtu", + "account_usage_cannot_create_portal_session": "Nemožnosť otvoriť fakturačný portál", + "account_tokens_delete_dialog_submit_button": "Trvalo odstrániť token", + "account_delete_description": "Natrvalo odstrániť vaše konto", + "account_basics_phone_numbers_dialog_number_placeholder": "napr. +1222333444", + "account_basics_phone_numbers_dialog_code_placeholder": "napr. 123456", + "prefs_notifications_title": "Oznámenia", + "account_basics_tier_manage_billing_button": "Spravovať fakturáciu", + "account_tokens_title": "Prístupové tokeny", + "account_basics_username_description": "Hej, to si ty ❤", + "prefs_reservations_dialog_topic_label": "Téma", + "prefs_users_title": "Správa používateľov", + "account_basics_tier_interval_yearly": "ročne", + "account_upgrade_dialog_tier_price_billed_monthly": "{{price}} za rok. Účtuje sa mesačne.", + "account_delete_dialog_button_submit": "Natrvalo odstrániť konto", + "account_basics_phone_numbers_dialog_channel_call": "Hovor", + "account_basics_password_dialog_new_password_label": "Nové heslo", + "account_tokens_dialog_expires_unchanged": "Ponechať dátum skončenia platnosti nezmenený", + "error_boundary_button_copy_stack_trace": "Kopírovať výpis zásobníka", + "account_tokens_dialog_title_delete": "Odstrániť prístupový token", + "account_usage_of_limit": "z {{limit}}", + "reservation_delete_dialog_action_keep_title": "Ponechať správy a prílohy uložené v medzipamäti", + "prefs_notifications_sound_no_sound": "Bez zvuku", + "account_upgrade_dialog_interval_yearly": "Ročne", + "account_upgrade_dialog_button_redirect_signup": "Zaregistrujte sa teraz", + "subscribe_dialog_error_user_anonymous": "anonymný", + "account_upgrade_dialog_tier_price_billed_yearly": "{{price}} účtovaná ročne. Uložiť {{save}}.", + "prefs_notifications_min_priority_high_and_higher": "Vysoká priorita a vyššia", + "account_usage_basis_ip_description": "Štatistiky a limity používania tohto účtu sú založené na vašej IP adrese, takže môžu byť zdieľané s ostatnými používateľmi. Vyššie uvedené limity sú približné hodnoty založené na existujúcich rýchlostných limitoch.", + "account_basics_password_dialog_title": "Zmeniť heslo", + "priority_max": "najvyššia", + "account_usage_limits_reset_daily": "Limity používania sa obnovujú denne o polnoci (UTC)", + "account_usage_unlimited": "Nekonečné", + "prefs_users_delete_button": "Odstrániť používateľa", + "prefs_notifications_min_priority_any": "Akákoľvek priorita", + "account_tokens_dialog_expires_label": "Platnosť prístupového tokenu vyprší za", + "account_basics_phone_numbers_title": "Telefónne čísla", + "prefs_notifications_delete_after_title": "Odstrániť oznámenia", + "account_upgrade_dialog_interval_yearly_discount_save": "ušetríte {{discount}}%", + "prefs_users_dialog_title_edit": "Upraviť používateľa", + "account_basics_password_dialog_current_password_label": "Aktuálne heslo", + "prefs_notifications_min_priority_low_and_higher": "Nízka priorita a vyššia", + "account_tokens_dialog_button_update": "Aktualizovať token", + "account_upgrade_dialog_tier_features_attachment_total_size": "{{totalsize}} celkový úložný priestor", + "prefs_reservations_table_everyone_write_only": "Môžem publikovať a odoberať, každý môže publikovať", + "prefs_appearance_title": "Vzhlad", + "account_tokens_table_cannot_delete_or_edit": "Nie je možné upraviť alebo odstrániť aktuálny token relácie", + "prefs_notifications_sound_play": "Prehrať vybraný zvuk", + "account_tokens_table_last_access_header": "Posledný prístup", + "account_tokens_table_last_origin_tooltip": "Z IP adresy {{ip}}, kliknite na vyhľadávanie", + "account_usage_reservations_title": "Rezervované témy", + "account_upgrade_dialog_tier_price_per_month": "mesiac", + "account_usage_calls_none": "S týmto účtom nie je možné uskutočňovať žiadne telefonické hovory", + "account_tokens_table_current_session": "Aktuálna relácia prehliadača", + "account_upgrade_dialog_button_pay_now": "Zaplatiť a predplatiť si", + "subscribe_dialog_subscribe_use_another_label": "Použiť iný server", + "reservation_delete_dialog_action_delete_title": "Odstrániť správy a prílohy uložené v medzipamäti", + "account_basics_phone_numbers_dialog_code_label": "Overovací kód", + "reservation_delete_dialog_action_delete_description": "Správy a prílohy uložené v medzipamäti sa natrvalo vymažú. Túto akciu nemožno vrátiť späť.", + "account_basics_tier_paid_until": "Predplatné zaplatené do {{date}} s automatickou obnovou", + "account_usage_attachment_storage_description": "{{filesize}} na súbor, vymazaný po {{expiry}}", + "prefs_notifications_delete_after_one_month_description": "Oznámenia sa automaticky odstránia po jednom mesiaci", + "account_basics_phone_numbers_dialog_verify_button_call": "Zavolajte mi", + "prefs_users_dialog_base_url_label": "URL adresa služby, napr. https://ntfy.sh", + "account_usage_emails_title": "Odoslané emaily", + "account_basics_phone_numbers_dialog_channel_sms": "SMS", + "account_upgrade_dialog_tier_selected_label": "Vybrané", + "account_upgrade_dialog_button_update_subscription": "Aktualizovať predplatné", + "priority_high": "vysoká", + "account_delete_dialog_billing_warning": "Odstránením konta sa okamžite zruší aj vaše fakturačné predplatné. Už nebudete mať prístup k fakturačnému panelu.", + "prefs_notifications_min_priority_description_max": "Zobraziť oznámenia, ak je priorita 5 (max)", + "subscribe_dialog_login_description": "Táto téma je chránená heslom. Ak sa chcete prihlásiť na odber témy, zadajte používateľské meno a heslo.", + "account_upgrade_dialog_reservations_warning_other": "Vybraná úroveň umožňuje menej rezervovaných tém ako vaša aktuálna úroveň. Pred zmenou úrovne vymažte aspoň {{count}} rezervácií. Rezervácie môžete odstrániť v Nastaveniach.", + "prefs_users_dialog_title_add": "Pridať používateľa", + "account_tokens_dialog_button_create": "Vytvoriť token", + "account_tokens_table_create_token_button": "Vytvoriť prístupový token" } From b05d27ce459dce8f30b8143187b661fd7dabd2c4 Mon Sep 17 00:00:00 2001 From: 109247019824 Date: Sun, 17 Sep 2023 19:03:10 +0000 Subject: [PATCH 08/57] Translated using Weblate (Bulgarian) Currently translated at 87.6% (335 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/bg/ --- web/public/static/langs/bg.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/bg.json b/web/public/static/langs/bg.json index 1d1066f6..d3b73449 100644 --- a/web/public/static/langs/bg.json +++ b/web/public/static/langs/bg.json @@ -318,5 +318,20 @@ "account_upgrade_dialog_tier_features_emails_one": "{{emails}} ел. писмо на ден", "account_upgrade_dialog_tier_features_emails_other": "{{emails}} ел. писма на ден", "account_upgrade_dialog_tier_features_calls_one": "{{calls}} телефонни обаждания на ден", - "account_usage_attachment_storage_description": "{{filesize}} на файл, изтриване след {{expiry}}" + "account_usage_attachment_storage_description": "{{filesize}} на файл, изтриване след {{expiry}}", + "account_upgrade_dialog_billing_contact_email": "За въпроси относно плащанията се свържете с нас.", + "account_upgrade_dialog_tier_current_label": "Текущо", + "account_upgrade_dialog_billing_contact_website": "За въпроси относно плащанията се обърнете към страницата.", + "account_upgrade_dialog_button_cancel_subscription": "Прекратяване на абонамент", + "account_upgrade_dialog_tier_features_attachment_file_size": "{{filesize}} на файл", + "account_upgrade_dialog_reservations_warning_one": "Избраното ниво разрешава по-малко резервирани теми, от колкото текущото. Преди промяна на нивото изтрийте най-малко една резервирана тема. Можете да премахвате теми в Настройки.", + "account_tokens_title": "Кодове за достъп", + "account_upgrade_dialog_tier_price_billed_monthly": "{{price}} на година. Плаща се всеки месец.", + "account_upgrade_dialog_tier_price_billed_yearly": "{{price}} плащане на година. Спестявате {{save}}.", + "account_upgrade_dialog_tier_features_attachment_total_size": "{{totalsize}} общ обем", + "account_upgrade_dialog_tier_price_per_month": "на месец", + "account_upgrade_dialog_button_pay_now": "Плащане и абониране", + "account_upgrade_dialog_tier_selected_label": "Избрано", + "account_upgrade_dialog_button_update_subscription": "Премяна на абонамент", + "account_upgrade_dialog_reservations_warning_other": "Избраното ниво разрешава по-малко резервирани теми, от колкото текущото. Преди промяна на нивото изтрийте най-малко {{count}} резервирани теми. Можете да премахвате теми в Настройки." } From d10a5df3dff623661a6f30a326fe42809d69f8d9 Mon Sep 17 00:00:00 2001 From: Federico Nellen Date: Mon, 18 Sep 2023 13:50:55 +0000 Subject: [PATCH 09/57] Translated using Weblate (Italian) Currently translated at 77.4% (296 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/it/ --- web/public/static/langs/it.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/it.json b/web/public/static/langs/it.json index 72cee7d6..9d030c14 100644 --- a/web/public/static/langs/it.json +++ b/web/public/static/langs/it.json @@ -268,5 +268,31 @@ "publish_dialog_chip_call_no_verified_numbers_tooltip": "Nessun numero verificato", "account_basics_phone_numbers_title": "Numeri di telefono", "account_basics_phone_numbers_dialog_description": "Per usare la funzionalità di notifica tramite chiamata telefonica, devi aggiungere e verificare almeno un numero di telefono. La verifica può essere fatta tramite SMS o chiamata telefonica.", - "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} topic riservato" + "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} topic riservato", + "account_upgrade_dialog_billing_contact_email": "Per domande di fatturazione, contattaci direttamente.", + "account_upgrade_dialog_tier_current_label": "Attuale", + "account_basics_phone_numbers_dialog_number_label": "Numero di telefono", + "account_basics_phone_numbers_dialog_check_verification_button": "Conferma codice", + "account_basics_phone_numbers_dialog_verify_button_sms": "Invia SMS", + "account_basics_phone_numbers_no_phone_numbers_yet": "Ancora nessun numero di telefono", + "account_basics_phone_numbers_dialog_title": "Aggiungi un numero di telefono", + "account_upgrade_dialog_button_cancel": "Cancella", + "account_upgrade_dialog_billing_contact_website": "Per domande di fatturazione, visita per favore in nostro sito.", + "account_upgrade_dialog_button_cancel_subscription": "Cancella iscrizione", + "account_basics_phone_numbers_description": "Per notifiche via chiamata", + "account_basics_phone_numbers_copied_to_clipboard": "Numero di telefono copiato negli appunti", + "account_basics_phone_numbers_dialog_number_placeholder": "p. e. +391234567890", + "account_basics_phone_numbers_dialog_code_placeholder": "p. e. 123456", + "account_tokens_title": "Token d'accesso", + "account_upgrade_dialog_tier_price_billed_monthly": "{{price}} all'anno. Addebitato annualmente.", + "account_basics_phone_numbers_dialog_channel_call": "Chiama", + "account_upgrade_dialog_button_redirect_signup": "Iscriviti ora", + "account_upgrade_dialog_tier_price_billed_yearly": "{{price}} addebitato annualmente. Risparmia {{save}}.", + "account_upgrade_dialog_tier_price_per_month": "mese", + "account_upgrade_dialog_button_pay_now": "Paga ora e isciviti", + "account_basics_phone_numbers_dialog_code_label": "Codice di verifica", + "account_basics_phone_numbers_dialog_verify_button_call": "Chiamami", + "account_basics_phone_numbers_dialog_channel_sms": "SMS", + "account_upgrade_dialog_tier_selected_label": "Selezionato", + "account_upgrade_dialog_button_update_subscription": "Aggiorna iscrizione" } From bc802bfc77bddd4c13bf3a191c90c2e70ff4f64f Mon Sep 17 00:00:00 2001 From: Andrea Guarnaccia Date: Wed, 20 Sep 2023 14:37:30 +0000 Subject: [PATCH 10/57] Translated using Weblate (Italian) Currently translated at 80.1% (306 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/it/ --- web/public/static/langs/it.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/it.json b/web/public/static/langs/it.json index 9d030c14..afca0797 100644 --- a/web/public/static/langs/it.json +++ b/web/public/static/langs/it.json @@ -294,5 +294,14 @@ "account_basics_phone_numbers_dialog_verify_button_call": "Chiamami", "account_basics_phone_numbers_dialog_channel_sms": "SMS", "account_upgrade_dialog_tier_selected_label": "Selezionato", - "account_upgrade_dialog_button_update_subscription": "Aggiorna iscrizione" + "account_upgrade_dialog_button_update_subscription": "Aggiorna iscrizione", + "account_usage_attachment_storage_title": "Archivio allegati", + "account_delete_dialog_description": "Il tuo account sarà permanentemente cancellato assieme a tutti i tuoi dati presenti sul server. Dopo la cancellazione, la tua username non sarà disponibile per 7 giorni. Se desideri davvero procedere, inserisci la tua password nella seguente casella.", + "account_delete_dialog_button_cancel": "Annulla", + "account_usage_calls_title": "Chiamate effettuate", + "account_delete_description": "Elimina permanentemente il tuo account", + "account_delete_dialog_button_submit": "Elimina il tuo account permanentemente", + "account_usage_basis_ip_description": "Le statistiche di utilizzo e i limiti per questo account sono basati sul tuo indirizzo IP, quindi potrebbero essere in condivisione con altri utenti. I limiti mostrati sopra sono approssimazioni basate sui limiti esistenti.", + "account_usage_calls_none": "Questo account non può effettuare chiamate", + "account_delete_dialog_billing_warning": "Eliminando il tuo account perderai immediatamente il tuo abbonamento. Non potrai più accedere alla dashboard di fatturazione." } From ef15b44a1bb66346b8522060e4309a8554a614dc Mon Sep 17 00:00:00 2001 From: Jakob Malchow Date: Wed, 20 Sep 2023 14:40:13 +0000 Subject: [PATCH 11/57] Translated using Weblate (Italian) Currently translated at 80.1% (306 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/it/ --- web/public/static/langs/it.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/it.json b/web/public/static/langs/it.json index afca0797..99d2cfff 100644 --- a/web/public/static/langs/it.json +++ b/web/public/static/langs/it.json @@ -303,5 +303,6 @@ "account_delete_dialog_button_submit": "Elimina il tuo account permanentemente", "account_usage_basis_ip_description": "Le statistiche di utilizzo e i limiti per questo account sono basati sul tuo indirizzo IP, quindi potrebbero essere in condivisione con altri utenti. I limiti mostrati sopra sono approssimazioni basate sui limiti esistenti.", "account_usage_calls_none": "Questo account non può effettuare chiamate", - "account_delete_dialog_billing_warning": "Eliminando il tuo account perderai immediatamente il tuo abbonamento. Non potrai più accedere alla dashboard di fatturazione." + "account_delete_dialog_billing_warning": "Eliminando il tuo account perderai immediatamente il tuo abbonamento. Non potrai più accedere alla dashboard di fatturazione.", + "account_delete_dialog_label": "Password" } From b5851dd6d44806690cb03a264fc7da1f15fd50a9 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 24 Sep 2023 18:32:03 -0400 Subject: [PATCH 12/57] Links and blog posts --- docs/integrations.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/integrations.md b/docs/integrations.md index e689427e..cf3d7880 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -133,6 +133,12 @@ I've added a ⭐ to projects or posts that have a significant following, or had ## Blog + forum posts +- [Why NTFY is the Ultimate Push Notification Tool for Your Needs](https://osintph.medium.com/why-ntfy-is-the-ultimate-push-notification-tool-for-your-needs-e767421c84c5) - osintph.medium.com - 9/2023 +- [Supercharge Your Alerts: Ntfy — The Ultimate Push Notification Solution](https://medium.com/spring-boot/supercharge-your-alerts-ntfy-the-ultimate-push-notification-solution-a3dda79651fe) - spring-boot.medium.com - 9/2023 +- [Deploy Ntfy using Docker](https://www.linkedin.com/pulse/deploy-ntfy-mohamed-sharfy/) - linkedin.com - 9/2023 +- [Send Notifications With Ntfy for New WordPress Posts](https://www.activepieces.com/blog/ntfy-notifications-for-wordpress-new-posts) - activepieces.com - 9/2023 +- [Get Ntfy Notifications About New Zendesk Ticket](https://www.activepieces.com/blog/ntfy-notifications-about-new-zendesk-tickets) - activepieces.com - 9/2023 +- [Podman Update Notifications via Ntfy](https://rair.dev/podman-upadte-notifications-ntfy/) - rair.dev - 9/2023 - [NetworkChunk - how did I NOT know about this?](https://www.youtube.com/watch?v=poDIT2ruQ9M) ⭐ - youtube.com - 8/2023 - [Open Source Push Notifications! Get notified of any event you can imagine. Triggers abound!](https://www.youtube.com/watch?v=WJgwWXt79pE) ⭐ - youtube.com - 8/2023 - [How to install and self host an Ntfy server on Linux](https://linuxconfig.org/how-to-install-and-self-host-an-ntfy-server-on-linux) - linuxconfig.org - 7/2023 From 50bed826d0e6cc4c3e1fec641f1f2303cf430547 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 24 Sep 2023 20:36:34 -0400 Subject: [PATCH 13/57] Links links links --- README.md | 5 ++++- docs/integrations.md | 12 ++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f94594be..670ffd7c 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,10 @@ as well as an [open source iOS app](https://github.com/binwiederhier/ntfy-ios) a

## [ntfy Pro](https://ntfy.sh/app) 💸 🎉 -I now offer paid plans for [ntfy.sh](https://ntfy.sh/) if you don't want to self-host, or you want to support the development of ntfy (→ [Purchase via web app](https://ntfy.sh/app)). You can **buy a plan for as low as $3.33/month** (if you use promo code `MYTOPIC`, limited time only). You can also donate via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), and [Liberapay](https://liberapay.com/ntfy). I would be very humbled by your sponsorship. ❤️ +I now offer paid plans for [ntfy.sh](https://ntfy.sh/) if you don't want to self-host, or you want to support the development of +ntfy (→ [Purchase via web app](https://ntfy.sh/app)). You can **buy a plan for as low as $5/month**. +You can also donate via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), and [Liberapay](https://liberapay.com/ntfy). +I would be very humbled by your sponsorship. ❤️ ## **[Documentation](https://ntfy.sh/docs/)** diff --git a/docs/integrations.md b/docs/integrations.md index cf3d7880..6da0f63f 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -129,17 +129,25 @@ I've added a ⭐ to projects or posts that have a significant following, or had - [vigilant](https://github.com/VerifiedJoseph/vigilant) - Monitor RSS/ATOM and JSON feeds, and send push notifications on new entries (PHP) - [ansible-role-ntfy-alertmanager](https://github.com/bleetube/ansible-role-ntfy-alertmanager) - Ansible role to install xenrox/ntfy-alertmanager - [NtfyMe-Blender](https://github.com/NotNanook/NtfyMe-Blender) - Blender addon to send notifications to NtfyMe (Python) -- [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that let's you share files from your share feed to a topic of your choice. - +- [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that lets you share files from your share feed to a topic of your choice. +- [systemd-ntfy](https://hackage.haskell.org/package/systemd-ntfy) - monitor a set of systemd services an send a notification to ntfy.sh whenever their status changes + ## Blog + forum posts +- [Installing Self Host NTFY On Linux Using Docker Container](https://www.pinoylinux.org/topicsplus/containers/installing-self-host-ntfy-on-linux-using-docker-container/) - pinoylinux.org - 9/2023 +- [Homelab Notifications with ntfy](https://blog.alexsguardian.net/posts/2023/09/12/selfhosting-ntfy/) ⭐ - alexsguardian.net - 9/2023 - [Why NTFY is the Ultimate Push Notification Tool for Your Needs](https://osintph.medium.com/why-ntfy-is-the-ultimate-push-notification-tool-for-your-needs-e767421c84c5) - osintph.medium.com - 9/2023 - [Supercharge Your Alerts: Ntfy — The Ultimate Push Notification Solution](https://medium.com/spring-boot/supercharge-your-alerts-ntfy-the-ultimate-push-notification-solution-a3dda79651fe) - spring-boot.medium.com - 9/2023 - [Deploy Ntfy using Docker](https://www.linkedin.com/pulse/deploy-ntfy-mohamed-sharfy/) - linkedin.com - 9/2023 - [Send Notifications With Ntfy for New WordPress Posts](https://www.activepieces.com/blog/ntfy-notifications-for-wordpress-new-posts) - activepieces.com - 9/2023 - [Get Ntfy Notifications About New Zendesk Ticket](https://www.activepieces.com/blog/ntfy-notifications-about-new-zendesk-tickets) - activepieces.com - 9/2023 +- [Set reminder for recurring events using ntfy & Cron](https://www.youtube.com/watch?v=J3O4aQ-EcYk) - youtube.com - 9/2023 +- [ntfy - Installation and full configuration setup](https://www.youtube.com/watch?v=QMy14rGmpFI) - youtube.com - 9/2023 +- [How to install Ntfy.sh on Portainer / Docker Compose](https://www.youtube.com/watch?v=utD9GNbAwyg) - youtube.com - 9/2023 +- [ntfy - Push-Benachrichtigungen // Push Notifications](https://www.youtube.com/watch?v=LE3vRPPqZOU) - youtube.com - 9/2023 - [Podman Update Notifications via Ntfy](https://rair.dev/podman-upadte-notifications-ntfy/) - rair.dev - 9/2023 - [NetworkChunk - how did I NOT know about this?](https://www.youtube.com/watch?v=poDIT2ruQ9M) ⭐ - youtube.com - 8/2023 +- [NTFY - Command-Line Notifications](https://academy.networkchuck.com/blog/ntfy/) - academy.networkchuck.com - 8/2023 - [Open Source Push Notifications! Get notified of any event you can imagine. Triggers abound!](https://www.youtube.com/watch?v=WJgwWXt79pE) ⭐ - youtube.com - 8/2023 - [How to install and self host an Ntfy server on Linux](https://linuxconfig.org/how-to-install-and-self-host-an-ntfy-server-on-linux) - linuxconfig.org - 7/2023 - [Basic website monitoring using cronjobs and ntfy.sh](https://burkhardt.dev/2023/website-monitoring-cron-ntfy/) - burkhardt.dev - 6/2023 From 19c30fc41157b6793e1199b5c97ff32962825f27 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 24 Sep 2023 20:44:57 -0400 Subject: [PATCH 14/57] Add Alex's post in the install guide --- docs/install.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/install.md b/docs/install.md index bc5b7a0d..ed101554 100644 --- a/docs/install.md +++ b/docs/install.md @@ -20,8 +20,9 @@ To run the ntfy server, then just run `ntfy serve` (or `systemctl start ntfy` wh To send messages, use `ntfy publish`. To subscribe to topics, use `ntfy subscribe` (see [subscribing via CLI](subscribe/cli.md) for details). -If you like video tutorials, check out :simple-youtube: [Kris Occhipinti's ntfy install guide](https://www.youtube.com/watch?v=bZzqrX05mNU). -It's short and to the point. _I am not affiliated with Kris, I just liked the video._ +If you like tutorials, check out :simple-youtube: [Kris Occhipinti's ntfy install guide](https://www.youtube.com/watch?v=bZzqrX05mNU) on YouTube, or +[Alex's Docker-based setup guide](https://blog.alexsguardian.net/posts/2023/09/12/selfhosting-ntfy/). Both are great +resources to get started. _I am not affiliated with Kris or Alex, I just liked their video/post._ ## Linux binaries Please check out the [releases page](https://github.com/binwiederhier/ntfy/releases) for binaries and From 66ef28c2e299b8736e2a749c512abdd2f9001be8 Mon Sep 17 00:00:00 2001 From: Nihal Gonsalves Date: Wed, 27 Sep 2023 23:16:05 +0200 Subject: [PATCH 15/57] fix(pwa): hide install prompt on macos 14 safari --- .../pwa-install-macos-safari-add-to-dock.png | Bin 0 -> 166445 bytes docs/subscribe/pwa.md | 7 +++++++ web/src/app/Notifier.js | 12 ++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 docs/static/img/pwa-install-macos-safari-add-to-dock.png diff --git a/docs/static/img/pwa-install-macos-safari-add-to-dock.png b/docs/static/img/pwa-install-macos-safari-add-to-dock.png new file mode 100644 index 0000000000000000000000000000000000000000..8a780605f1db305cd95418bf502a82aeb7f10def GIT binary patch literal 166445 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�gx;->+Ue?7lO5@aQi(Di&1x@`k_=tK{%!$^q@% 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

$qO^-DjP;UvCXC_Nb@@*l$(vWkJ}+vz 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�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 B3(Noj literal 0 HcmV?d00001 diff --git a/docs/subscribe/pwa.md b/docs/subscribe/pwa.md index 582cb5ae..5dcaa257 100644 --- a/docs/subscribe/pwa.md +++ b/docs/subscribe/pwa.md @@ -26,6 +26,13 @@ app drawer: +### Safari on macOS +To install and register the web app via Safari, click on the Share menu and click Add to Dock. You need to be on macOS Sonoma (14) or higher. + +

+ +
+ ### Chrome/Firefox on Android For Chrome on Android, either click the "Add to Home Screen" banner at the bottom of the screen, or select "Install app" in the menu, and then click "Install" in the popup menu. After installation, you can find the app in your app drawer, diff --git a/web/src/app/Notifier.js b/web/src/app/Notifier.js index 4089746a..77bbdb1e 100644 --- a/web/src/app/Notifier.js +++ b/web/src/app/Notifier.js @@ -124,9 +124,17 @@ class Notifier { return window.location.protocol === "https:" || window.location.hostname.match("^127.") || window.location.hostname === "localhost"; } + // no PushManager when not installed, but it _is_ supported. iosSupportedButInstallRequired() { - // no PushManager when not installed, but it _is_ supported. - return config.enable_web_push && "serviceWorker" in navigator && window.navigator.standalone === false; + return ( + config.enable_web_push && + // a service worker exists + "serviceWorker" in navigator && + // but the pushmanager API is missing, which implies we're on an iOS device without installing + !("PushManager" in window) && + // check that this is the case by checking for `standalone`, which only exists on Safari + window.navigator.standalone === false + ); } } From 5913142389d8b6718b8f4f12277afa36a18aa751 Mon Sep 17 00:00:00 2001 From: Nihal Gonsalves Date: Wed, 27 Sep 2023 23:29:39 +0200 Subject: [PATCH 16/57] fix: remove deprecated nodesource script --- Dockerfile-build | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Dockerfile-build b/Dockerfile-build index 62a60bd8..6e96c7d4 100644 --- a/Dockerfile-build +++ b/Dockerfile-build @@ -2,13 +2,17 @@ FROM golang:1.20-bullseye as builder ARG VERSION=dev ARG COMMIT=unknown +ARG NODE_MAJOR=18 -RUN apt-get update -RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash -RUN apt-get install -y \ - build-essential \ - nodejs \ - python3-pip +RUN apt-get update && apt-get install -y \ + build-essential ca-certificates curl gnupg \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" >> /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ + && apt-get install -y \ + python3-pip nodejs \ + && rm -rf /var/lib/apt/lists/* WORKDIR /app ADD Makefile . From d33eded060a55d0956fb043c78045da668d0fce9 Mon Sep 17 00:00:00 2001 From: Nihal Gonsalves Date: Wed, 27 Sep 2023 23:42:42 +0200 Subject: [PATCH 17/57] docs: remove Safari sound warning iOS 17 does indeed play sounds. --- docs/known-issues.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/known-issues.md b/docs/known-issues.md index 190e2bce..6b5567e6 100644 --- a/docs/known-issues.md +++ b/docs/known-issues.md @@ -40,10 +40,6 @@ Android has an [open bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1796434) This causes ntfy to not automatically subscribe to web push, and requires you to go to the ntfy Settings page to enable it manually. -## Safari does not play sounds for web push notifications -Safari does not support playing sounds for web push notifications, and treats them all as silent. This will be fixed with -iOS 17 / Safari 17, which will be released later in 2023. - ## PWA on iOS sometimes crashes with an IndexedDB error (see [#787](https://github.com/binwiederhier/ntfy/issues/787)) When resuming the installed PWA from the background, it sometimes crashes with an error from IndexedDB/Dexie, due to a [WebKit bug]( https://bugs.webkit.org/show_bug.cgi?id=197050). A reload will fix it until a permanent fix is found. From 4dc0183901e6a12350cb4a76956576f21ecc6039 Mon Sep 17 00:00:00 2001 From: Nihal Gonsalves Date: Wed, 27 Sep 2023 23:42:05 +0200 Subject: [PATCH 18/57] docs: remove firefox-android known issue Closes #789 Firefox released a bug fix with v116. --- docs/known-issues.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/known-issues.md b/docs/known-issues.md index 190e2bce..cdb95bb6 100644 --- a/docs/known-issues.md +++ b/docs/known-issues.md @@ -34,12 +34,6 @@ your iOS device and your ntfy server are either on the same network, or that you Turn on tracing/debugging on the server (via `log-level: trace` or `log-level: debug`, see [troubleshooting](troubleshooting.md)), and read docs on [iOS instant notifications](https://docs.ntfy.sh/config/#ios-instant-notifications). -## Firefox on Android not automatically subscribing to web push (see [#789](https://github.com/binwiederhier/ntfy/issues/789)) -ntfy defaults to web-push based subscriptions when installed as a [progressive web app](./subscribe/pwa.md). Firefox -Android has an [open bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1796434) where it reports the PWA mode incorrectly. -This causes ntfy to not automatically subscribe to web push, and requires you to go to the ntfy Settings page to enable -it manually. - ## Safari does not play sounds for web push notifications Safari does not support playing sounds for web push notifications, and treats them all as silent. This will be fixed with iOS 17 / Safari 17, which will be released later in 2023. From 66e96244ef2cf87051a56ba05a9f488cde4380e0 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Wed, 27 Sep 2023 23:16:24 -0400 Subject: [PATCH 19/57] Thank you @alexandzors for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 670ffd7c..220f82cb 100644 --- a/README.md +++ b/README.md @@ -153,6 +153,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 26b31acbaefe609c338f97048b3a9703ffeefff4 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Wed, 27 Sep 2023 23:19:31 -0400 Subject: [PATCH 20/57] Thank you @dkramer95 for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 220f82cb..0fae8469 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 2e58f0db1094a22990d95e3734b020485daf6103 Mon Sep 17 00:00:00 2001 From: James Fitzgerald Date: Thu, 28 Sep 2023 07:01:28 -0400 Subject: [PATCH 21/57] Fix typo "aliase" -> "alias" --- docs/publish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/publish.md b/docs/publish.md index c03cc4a4..6df859cf 100644 --- a/docs/publish.md +++ b/docs/publish.md @@ -2288,7 +2288,7 @@ You can define which URL to open when a notification is clicked. This may be use to a Zabbix alert or a transaction that you'd like to provide the deep-link for. Tapping the notification will open the web browser (or the app) and open the website. -To define a click action for the notification, pass a URL as the value of the `X-Click` header (or its aliase `Click`). +To define a click action for the notification, pass a URL as the value of the `X-Click` header (or its alias `Click`). If you pass a website URL (`http://` or `https://`) the web browser will open. If you pass another URI that can be handled by another app, the responsible app may open. From 5dafd7e4a7799dbb00925890c13f0965eff83a07 Mon Sep 17 00:00:00 2001 From: Mazurky Date: Thu, 28 Sep 2023 12:10:35 +0000 Subject: [PATCH 22/57] Translated using Weblate (Slovak) Currently translated at 100.0% (382 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/sk/ --- web/public/static/langs/sk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/public/static/langs/sk.json b/web/public/static/langs/sk.json index 8ea1b45f..0e3f57a7 100644 --- a/web/public/static/langs/sk.json +++ b/web/public/static/langs/sk.json @@ -231,7 +231,7 @@ "prefs_reservations_dialog_title_delete": "Odstrániť rezervovanú tému", "prefs_users_table": "Tabuľka používateľov", "prefs_reservations_table_topic_header": "Téma", - "reservation_delete_dialog_submit_button": "Odstrániť rezerváciu", + "reservation_delete_dialog_submit_button": "Vymazať rezerváciu", "prefs_reservations_limit_reached": "Dosiahli ste limit rezervovaných tém.", "account_upgrade_dialog_interval_monthly": "Mesačne", "prefs_users_add_button": "Pridať používateľa", From af037b9d7079f90c715ddd7afa6ac0ac607b4c1e Mon Sep 17 00:00:00 2001 From: Octelly Date: Fri, 29 Sep 2023 17:50:27 +0200 Subject: [PATCH 23/57] Update config.md Field is "healthy", not "health" --- docs/config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/config.md b/docs/config.md index 03a624e8..2662a537 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1180,10 +1180,10 @@ and [here](https://easyengine.io/tutorials/nginx/block-wp-login-php-bruteforce-a ## Health checks A preliminary health check API endpoint is exposed at `/v1/health`. The endpoint returns a `json` response in the format shown below. -If a non-200 HTTP status code is returned or if the returned `health` field is `false` the ntfy service should be considered as unhealthy. +If a non-200 HTTP status code is returned or if the returned `healthy` field is `false` the ntfy service should be considered as unhealthy. ```json -{"health":true} +{"healthy":true} ``` See [Installation for Docker](install.md#docker) for an example of how this could be used in a `docker-compose` environment. From aaf01b98d289e658b78d2bc2f48c54f05fc0fcb3 Mon Sep 17 00:00:00 2001 From: Jordan Munch O'Hare Date: Sat, 30 Sep 2023 16:10:01 +0000 Subject: [PATCH 24/57] docs: ios shortcut --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 6da0f63f..c5e1fad1 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -129,6 +129,7 @@ I've added a ⭐ to projects or posts that have a significant following, or had - [vigilant](https://github.com/VerifiedJoseph/vigilant) - Monitor RSS/ATOM and JSON feeds, and send push notifications on new entries (PHP) - [ansible-role-ntfy-alertmanager](https://github.com/bleetube/ansible-role-ntfy-alertmanager) - Ansible role to install xenrox/ntfy-alertmanager - [NtfyMe-Blender](https://github.com/NotNanook/NtfyMe-Blender) - Blender addon to send notifications to NtfyMe (Python) +- [ntfy-ios-url-share](https://www.icloud.com/shortcuts/be8a7f49530c45f79733cfe3e41887e6) - An iOS shortcut that lets you share URLs easily and quickly. - [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that lets you share files from your share feed to a topic of your choice. - [systemd-ntfy](https://hackage.haskell.org/package/systemd-ntfy) - monitor a set of systemd services an send a notification to ntfy.sh whenever their status changes From a3efbb3466ac78801e9fc029e4b7e62cb4d25344 Mon Sep 17 00:00:00 2001 From: Mahesh Babu <43287976+MaheshBabu11@users.noreply.github.com> Date: Mon, 2 Oct 2023 11:27:42 +0530 Subject: [PATCH 25/57] Adding ntfy-java package to libraries built around ntfy --- docs/integrations.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/integrations.md b/docs/integrations.md index 6da0f63f..f88de42e 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -57,7 +57,8 @@ I've added a ⭐ to projects or posts that have a significant following, or had - [ntfy](https://github.com/ffflorian/ntfy) - Send notifications over ntfy (JS) - [ntfy_dart](https://github.com/jr1221/ntfy_dart) - Dart wrapper around the ntfy API (Dart) - [gotfy](https://github.com/AnthonyHewins/gotfy) - A Go wrapper for the ntfy API (Go) -- [symfony/ntfy-notifier](https://symfony.com/components/NtfyNotifier) ⭐ - Symfony Notifier integration for ntfy (PHP) +- [symfony/ntfy-notifier](https://symfony.com/components/NtfyNotifier) ⭐ - Symfony Notifier integration for ntfy (PHP) +- [ntfy-java](https://github.com/MaheshBabu11/ntfy-java/) - A Java package to interact with a ntfy server (Java) ## CLIs + GUIs From b7f37138f863dc12aa7f928ddd6d7ed736383b1a Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Mon, 2 Oct 2023 11:49:27 -0400 Subject: [PATCH 26/57] Release notes --- docs/releases.md | 1 + go.mod | 8 +- go.sum | 8 + web/package-lock.json | 352 ++++++++++++++++++++++++------------------ 4 files changed, 213 insertions(+), 156 deletions(-) diff --git a/docs/releases.md b/docs/releases.md index 4d125a97..15fdd114 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1290,6 +1290,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Fix ACL issue with topic patterns containing underscores ([#840](https://github.com/binwiederhier/ntfy/issues/840), thanks to [@Joe-0237](https://github.com/Joe-0237) for reporting) * Re-add `tzdata` to Docker images for amd64 image ([#894](https://github.com/binwiederhier/ntfy/issues/894), [#307](https://github.com/binwiederhier/ntfy/pull/307)) * Add special logic to ignore `Priority` header if it resembled a RFC 9218 value ([#851](https://github.com/binwiederhier/ntfy/pull/851)/[#895](https://github.com/binwiederhier/ntfy/pull/895), thanks to [@gusdleon](https://github.com/gusdleon), see also [#351](https://github.com/binwiederhier/ntfy/issues/351), [#353](https://github.com/binwiederhier/ntfy/issues/353), [#461](https://github.com/binwiederhier/ntfy/issues/461)) +* PWA: hide install prompt on macOS 14 Safari ([#899](https://github.com/binwiederhier/ntfy/pull/899), thanks to [@nihalgonsalves](https://github.com/nihalgonsalves)) ### ntfy Android app v1.16.1 (UNRELEASED) diff --git a/go.mod b/go.mod index 05fb154b..6a2cffea 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( golang.org/x/sync v0.3.0 golang.org/x/term v0.12.0 golang.org/x/time v0.3.0 - google.golang.org/api v0.142.0 + google.golang.org/api v0.143.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -28,9 +28,9 @@ replace github.com/emersion/go-smtp => github.com/emersion/go-smtp v0.17.0 // Pi require github.com/pkg/errors v0.9.1 // indirect require ( - firebase.google.com/go/v4 v4.12.0 + firebase.google.com/go/v4 v4.12.1 github.com/SherClockHolmes/webpush-go v1.2.0 - github.com/prometheus/client_golang v1.16.0 + github.com/prometheus/client_golang v1.17.0 github.com/stripe/stripe-go/v74 v74.30.0 ) @@ -58,7 +58,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect diff --git a/go.sum b/go.sum index 97512a78..bf112048 100644 --- a/go.sum +++ b/go.sum @@ -15,6 +15,8 @@ cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= firebase.google.com/go/v4 v4.12.0 h1:I6dCkcWUMFNkFdWgzlf8SLWecQnKdFgJhMv5fT9l1qI= firebase.google.com/go/v4 v4.12.0/go.mod h1:60c36dWLK4+j05Vw5XMllek3b3PCynU3BfI46OSwsUE= +firebase.google.com/go/v4 v4.12.1 h1:tDNvobifGsx/1HSFLnM0fmNfx/CDZSgsTO2KhZtgpcs= +firebase.google.com/go/v4 v4.12.1/go.mod h1:60c36dWLK4+j05Vw5XMllek3b3PCynU3BfI46OSwsUE= github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w= github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tSNSBle0= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -107,9 +109,13 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= @@ -205,6 +211,8 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.142.0 h1:mf+7EJ94fi5ZcnpPy+m0Yv2dkz8bKm+UL0snTCuwXlY= google.golang.org/api v0.142.0/go.mod h1:zJAN5o6HRqR7O+9qJUFOWrZkYE66RH+efPBdTLA4xBA= +google.golang.org/api v0.143.0 h1:o8cekTkqhywkbZT6p1UHJPZ9+9uuCAJs/KYomxZB8fA= +google.golang.org/api v0.143.0/go.mod h1:FoX9DO9hT7DLNn97OuoZAGSDuNAXdJRuGK98rSUgurk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= diff --git a/web/package-lock.json b/web/package-lock.json index d4ba68bf..3ce24105 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -89,22 +89,22 @@ } }, "node_modules/@babel/core": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", - "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.20", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.20", - "@babel/types": "^7.22.19", - "convert-source-map": "^1.7.0", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -118,13 +118,19 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/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 + }, "node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -239,13 +245,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -264,12 +270,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", - "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -287,9 +293,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -436,14 +442,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -463,9 +469,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -819,9 +825,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", - "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -906,9 +912,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", - "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1094,12 +1100,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1110,12 +1116,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", - "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1127,15 +1133,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1275,9 +1281,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", - "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1670,9 +1676,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1695,19 +1701,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", - "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/generator": "^7.23.0", "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.16", - "@babel/types": "^7.22.19", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1716,12 +1722,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2239,9 +2245,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2336,9 +2342,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==" + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", @@ -2443,14 +2449,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.16", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.16.tgz", - "integrity": "sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==", + "version": "5.0.0-beta.17", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.17.tgz", + "integrity": "sha512-xNbk7iOXrglNdIxFBN0k3ySsPIFLWCnFxqsAYl7CIcDkD9low4kJ7IUuy6ctwx/HAy2fenrT3KXHr1sGjAMgpQ==", "dependencies": { "@babel/runtime": "^7.22.15", "@floating-ui/react-dom": "^2.0.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -2474,18 +2480,18 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.10.tgz", - "integrity": "sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.11.tgz", + "integrity": "sha512-uY8FLQURhXe3f3O4dS5OSGML9KDm9+IE226cBu78jarVIzdQGPlXwGIlSI9VJR8MvZDA6C0+6XfWDhWCHruC5Q==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" } }, "node_modules/@mui/icons-material": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", - "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.11.tgz", + "integrity": "sha512-aHReLasBuS/+hhPzbZCgZ0eTcZ2QRnoC2WNK7XvdAf3l+LjC1flzjh6GWw1tZJ5NHnZ+bivdwtLFQ8XTR96JkA==", "dependencies": { "@babel/runtime": "^7.22.15" }, @@ -2508,16 +2514,16 @@ } }, "node_modules/@mui/material": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.10.tgz", - "integrity": "sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.11.tgz", + "integrity": "sha512-DnSdJzcR7lwG12JA5L2t8JF+RDzMygu5rCNW+logWb/KW2/TRzwLyVWO+CorHTBjBRd38DBxnwOCDiYkDd+N3A==", "dependencies": { "@babel/runtime": "^7.22.15", - "@mui/base": "5.0.0-beta.16", - "@mui/core-downloads-tracker": "^5.14.10", - "@mui/system": "^5.14.10", + "@mui/base": "5.0.0-beta.17", + "@mui/core-downloads-tracker": "^5.14.11", + "@mui/system": "^5.14.11", "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "@types/react-transition-group": "^4.4.6", "clsx": "^2.0.0", "csstype": "^3.1.2", @@ -2552,12 +2558,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.10.tgz", - "integrity": "sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.11.tgz", + "integrity": "sha512-MSnNNzTu9pfKLCKs1ZAKwOTgE4bz+fQA0fNr8Jm7NDmuWmw0CaN9Vq2/MHsatE7+S0A25IAKby46Uv1u53rKVQ==", "dependencies": { "@babel/runtime": "^7.22.15", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "prop-types": "^15.8.1" }, "engines": { @@ -2578,9 +2584,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.10.tgz", - "integrity": "sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.11.tgz", + "integrity": "sha512-jdUlqRgTYQ8RMtPX4MbRZqar6W2OiIb6J5KEFbIu4FqvPrk44Each4ppg/LAqp1qNlBYq5i+7Q10MYLMpDxX9A==", "dependencies": { "@babel/runtime": "^7.22.15", "@emotion/cache": "^11.11.0", @@ -2609,15 +2615,15 @@ } }, "node_modules/@mui/system": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.10.tgz", - "integrity": "sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.11.tgz", + "integrity": "sha512-yl8xV+y0k7j6dzBsHabKwoShmjqLa8kTxrhUI3JpqLG358VRVMJRW/ES0HhvfcCi4IVXde+Tc2P3K1akGL8zoA==", "dependencies": { "@babel/runtime": "^7.22.15", - "@mui/private-theming": "^5.14.10", - "@mui/styled-engine": "^5.14.10", + "@mui/private-theming": "^5.14.11", + "@mui/styled-engine": "^5.14.11", "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -2661,9 +2667,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.10.tgz", - "integrity": "sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.11.tgz", + "integrity": "sha512-fmkIiCPKyDssYrJ5qk+dime1nlO3dmWfCtaPY/uVBqCRMBZ11JhddB9m8sjI2mgqQQwRJG5bq3biaosNdU/s4Q==", "dependencies": { "@babel/runtime": "^7.22.15", "@types/prop-types": "^15.7.5", @@ -2751,6 +2757,47 @@ "string.prototype.matchall": "^4.0.6" } }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -2764,17 +2811,17 @@ "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.13.tgz", + "integrity": "sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==", "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/node": { - "version": "20.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.4.tgz", - "integrity": "sha512-nU6d9MPY0NBUMiE/nXd2IIoC4OLvsLpwAjheoAeuzgvDZA1Cb10QYg+91AF6zQiKWRN5i1m07x6sMe0niBznoQ==", + "version": "20.8.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", + "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", "dev": true }, "node_modules/@types/parse-json": { @@ -2783,14 +2830,14 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/@types/prop-types": { - "version": "15.7.7", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.7.tgz", - "integrity": "sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==" + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" }, "node_modules/@types/react": { - "version": "18.2.22", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", - "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "version": "18.2.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz", + "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2798,9 +2845,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", - "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", + "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", "dependencies": { "@types/react": "*" } @@ -2815,9 +2862,9 @@ } }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" }, "node_modules/@types/trusted-types": { "version": "2.0.4", @@ -2831,14 +2878,15 @@ "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" }, "node_modules/@vitejs/plugin-react": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", - "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", + "@babel/core": "^7.22.20", "@babel/plugin-transform-react-jsx-self": "^7.22.5", "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", "react-refresh": "^0.14.0" }, "engines": { @@ -3192,9 +3240,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.11", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.11.tgz", - "integrity": "sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -3211,8 +3259,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001538", - "electron-to-chromium": "^1.4.526", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.13" }, @@ -3263,9 +3311,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001538", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz", - "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==", + "version": "1.0.30001542", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", + "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==", "dev": true, "funding": [ { @@ -3393,12 +3441,12 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/core-js-compat": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", - "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -3596,9 +3644,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.528", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz", - "integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA==", + "version": "1.4.537", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", + "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", "dev": true }, "node_modules/emoji-regex": { @@ -6198,9 +6246,9 @@ } }, "node_modules/postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -6664,9 +6712,9 @@ } }, "node_modules/rollup": { - "version": "3.29.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.3.tgz", - "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" From ba0cc7fbf97b6ee8a9b1d8d16ce79bf9f8c5b94e Mon Sep 17 00:00:00 2001 From: noman <27938023+noman-land@users.noreply.github.com> Date: Sun, 8 Oct 2023 15:58:29 -0400 Subject: [PATCH 27/57] fix: Remove errant word from Action buttons docs --- docs/publish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/publish.md b/docs/publish.md index 6df859cf..41370778 100644 --- a/docs/publish.md +++ b/docs/publish.md @@ -1131,7 +1131,7 @@ As of today, the following actions are supported: when the action button is tapped (only supported on Android) * [`http`](#send-http-request): Sends HTTP POST/GET/PUT request when the action button is tapped -Here's an example of what that a notification with actions can look like: +Here's an example of what a notification with actions can look like:
![notification with actions](static/img/android-screenshot-notification-actions.png){ width=500 } From 73d2b3363ba78e7598b9bdf96557919020bae449 Mon Sep 17 00:00:00 2001 From: "Carlos M. Silva" Date: Fri, 13 Oct 2023 20:57:06 +0000 Subject: [PATCH 28/57] Translated using Weblate (Portuguese (Brazil)) Currently translated at 57.5% (220 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/pt_BR/ --- web/public/static/langs/pt_BR.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/public/static/langs/pt_BR.json b/web/public/static/langs/pt_BR.json index 1bb0cd92..89a01d89 100644 --- a/web/public/static/langs/pt_BR.json +++ b/web/public/static/langs/pt_BR.json @@ -192,7 +192,7 @@ "action_bar_reservation_add": "Reserve topic", "action_bar_reservation_edit": "Change reservation", "signup_disabled": "Registrar está desativado", - "signup_error_username_taken": "Usuário {{username}} já existe", + "signup_error_username_taken": "Usuário {{username}} já existe", "signup_error_creation_limit_reached": "Limite de criação de contas atingido", "action_bar_reservation_delete": "Remover reserva", "action_bar_account": "Conta", From 2f2918bd3b9c6549a5274878791cc806831dd81c Mon Sep 17 00:00:00 2001 From: PW Date: Mon, 16 Oct 2023 02:51:18 +0000 Subject: [PATCH 29/57] Translated using Weblate (Chinese (Traditional)) Currently translated at 73.0% (279 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/zh_Hant/ --- web/public/static/langs/zh_Hant.json | 36 +++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/zh_Hant.json b/web/public/static/langs/zh_Hant.json index 0d7f3f48..6d351930 100644 --- a/web/public/static/langs/zh_Hant.json +++ b/web/public/static/langs/zh_Hant.json @@ -243,5 +243,39 @@ "account_basics_phone_numbers_copied_to_clipboard": "電話號碼已複製到剪貼簿", "account_basics_phone_numbers_dialog_number_label": "電話號碼", "account_basics_phone_numbers_dialog_channel_call": "通話", - "account_usage_calls_title": "已播出電話" + "account_usage_calls_title": "已播出電話", + "account_tokens_dialog_title_create": "建立存取權杖", + "account_upgrade_dialog_tier_current_label": "目前", + "account_tokens_table_token_header": "權杖", + "account_upgrade_dialog_interval_yearly_discount_save_up_to": "節省高達{{discount}}%", + "account_tokens_dialog_expires_never": "權杖永遠不會過期", + "account_delete_title": "刪除帳戶", + "account_delete_dialog_label": "密碼", + "account_upgrade_dialog_interval_monthly": "每月", + "account_tokens_table_never_expires": "永不過期", + "account_tokens_delete_dialog_title": "删除存取權杖", + "account_upgrade_dialog_button_cancel": "取消", + "account_tokens_table_label_header": "標籤", + "account_upgrade_dialog_button_cancel_subscription": "取消訂閱", + "account_tokens_dialog_title_edit": "編輯存取權杖", + "account_delete_dialog_button_cancel": "取消", + "account_tokens_table_copied_to_clipboard": "已複製存取權杖", + "account_upgrade_dialog_title": "更改帳戶方案", + "account_tokens_delete_dialog_submit_button": "永久删除權杖", + "account_delete_description": "永久刪除你的帳戶", + "account_tokens_title": "存取權杖", + "account_delete_dialog_button_submit": "永久刪除帳戶", + "account_tokens_dialog_title_delete": "删除存取權杖", + "account_upgrade_dialog_interval_yearly": "每年", + "account_upgrade_dialog_button_redirect_signup": "立即註冊", + "account_tokens_dialog_button_cancel": "取消", + "account_tokens_dialog_button_update": "更新權杖", + "account_upgrade_dialog_tier_features_attachment_total_size": "{{totalsize}} 總儲存空間", + "account_tokens_table_cannot_delete_or_edit": "無法編輯或刪除當前階段權杖", + "account_tokens_table_current_session": "目前瀏覽器階段", + "account_upgrade_dialog_button_pay_now": "立即付款及訂閱", + "account_upgrade_dialog_tier_selected_label": "已選擇", + "account_upgrade_dialog_button_update_subscription": "更改訂閱", + "account_tokens_dialog_button_create": "建立權杖", + "account_tokens_table_create_token_button": "建立存取權杖" } From 7516d25bc6fdc34179a5eb4fed189ae8da506c0e Mon Sep 17 00:00:00 2001 From: Rhodri Date: Sun, 15 Oct 2023 21:03:05 +0000 Subject: [PATCH 30/57] Translated using Weblate (Welsh) Currently translated at 12.0% (46 of 382 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/cy/ --- web/public/static/langs/cy.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/cy.json b/web/public/static/langs/cy.json index 68846b8f..da6c9b41 100644 --- a/web/public/static/langs/cy.json +++ b/web/public/static/langs/cy.json @@ -39,5 +39,10 @@ "publish_dialog_attach_placeholder": "Atodi ffeil drwy URL, e.e. https://f-droid.org/F-Droid.apk", "notifications_click_copy_url_button": "Copio linc", "notifications_actions_open_url_title": "Ewch i {{url}}", - "publish_dialog_email_label": "Ebost" + "publish_dialog_email_label": "Ebost", + "signup_form_confirm_password": "Cadarnhau cyfrinair", + "signup_form_button_submit": "Cofrestru", + "common_back": "Yn ôl", + "common_copy_to_clipboard": "Copio i'r clipfwrdd", + "signup_already_have_account": "Gyda chyfrif yn barod? Mewngofnodi!" } From 483edb70bfc6c0e6b06777258597d02078c06495 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 18 Oct 2023 09:52:18 +0200 Subject: [PATCH 31/57] doc/integrations: link RouterOS Scripts ... which has a module to send notifications to Ntfy. --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index fcc51248..5375314a 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -133,6 +133,7 @@ I've added a ⭐ to projects or posts that have a significant following, or had - [ntfy-ios-url-share](https://www.icloud.com/shortcuts/be8a7f49530c45f79733cfe3e41887e6) - An iOS shortcut that lets you share URLs easily and quickly. - [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that lets you share files from your share feed to a topic of your choice. - [systemd-ntfy](https://hackage.haskell.org/package/systemd-ntfy) - monitor a set of systemd services an send a notification to ntfy.sh whenever their status changes +- [RouterOS Scripts](https://git.eworm.de/cgit/routeros-scripts/about/) - a collection of scripts for MikroTik RouterOS ## Blog + forum posts From ef45ea5a50ffd010685e4dfb116f355783fc7daa Mon Sep 17 00:00:00 2001 From: imkero Date: Thu, 19 Oct 2023 07:48:06 +0000 Subject: [PATCH 32/57] fix(i18n): correct usage of language str having underline --- web/src/app/utils.js | 10 ++++++++-- web/src/components/App.jsx | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/web/src/app/utils.js b/web/src/app/utils.js index d0ae15ce..6b3849f5 100644 --- a/web/src/app/utils.js +++ b/web/src/app/utils.js @@ -130,14 +130,20 @@ export const hashCode = (s) => { return hash; }; +/** + * convert `i18n.language` style str (e.g.: `en_US`) to kebab-case (e.g.: `en-US`), + * which is expected by `` and `Intl.DateTimeFormat` + */ +export const getKebabCaseLangStr = (language) => language.replace(/_/g, '-'); + export const formatShortDateTime = (timestamp, language) => - new Intl.DateTimeFormat(language, { + new Intl.DateTimeFormat(getKebabCaseLangStr(language), { dateStyle: "short", timeStyle: "short", }).format(new Date(timestamp * 1000)); export const formatShortDate = (timestamp, language) => - new Intl.DateTimeFormat(language, { dateStyle: "short" }).format(new Date(timestamp * 1000)); + new Intl.DateTimeFormat(getKebabCaseLangStr(language), { dateStyle: "short" }).format(new Date(timestamp * 1000)); export const formatBytes = (bytes, decimals = 2) => { if (bytes === 0) return "0 bytes"; diff --git a/web/src/components/App.jsx b/web/src/components/App.jsx index d22ec66f..7f84b7de 100644 --- a/web/src/components/App.jsx +++ b/web/src/components/App.jsx @@ -11,7 +11,7 @@ import ActionBar from "./ActionBar"; import Preferences from "./Preferences"; import subscriptionManager from "../app/SubscriptionManager"; import userManager from "../app/UserManager"; -import { expandUrl } from "../app/utils"; +import { expandUrl, getKebabCaseLangStr } from "../app/utils"; import ErrorBoundary from "./ErrorBoundary"; import routes from "./routes"; import { useAccountListener, useBackgroundProcesses, useConnectionListeners, useWebPushTopics } from "./hooks"; @@ -56,7 +56,7 @@ const App = () => { ); useEffect(() => { - document.documentElement.setAttribute("lang", i18n.language); + document.documentElement.setAttribute("lang", getKebabCaseLangStr(i18n.language)); document.dir = languageDir; }, [i18n.language, languageDir]); From e7c03650798cc54f74797f7c357d2ecce24454b9 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 19 Oct 2023 07:15:42 -0400 Subject: [PATCH 33/57] Changelog --- docs/releases.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/releases.md b/docs/releases.md index 15fdd114..cac34a3c 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1291,6 +1291,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Re-add `tzdata` to Docker images for amd64 image ([#894](https://github.com/binwiederhier/ntfy/issues/894), [#307](https://github.com/binwiederhier/ntfy/pull/307)) * Add special logic to ignore `Priority` header if it resembled a RFC 9218 value ([#851](https://github.com/binwiederhier/ntfy/pull/851)/[#895](https://github.com/binwiederhier/ntfy/pull/895), thanks to [@gusdleon](https://github.com/gusdleon), see also [#351](https://github.com/binwiederhier/ntfy/issues/351), [#353](https://github.com/binwiederhier/ntfy/issues/353), [#461](https://github.com/binwiederhier/ntfy/issues/461)) * PWA: hide install prompt on macOS 14 Safari ([#899](https://github.com/binwiederhier/ntfy/pull/899), thanks to [@nihalgonsalves](https://github.com/nihalgonsalves)) +* Correct usage of language str having underline ([#922](https://github.com/binwiederhier/ntfy/pull/922), thanks to [@imkero](https://github.com/imkero)) ### ntfy Android app v1.16.1 (UNRELEASED) From 70b084457ae1ca7aff9aaeb82bdaef2aee4ff148 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 19 Oct 2023 07:18:03 -0400 Subject: [PATCH 34/57] Bump deps --- go.mod | 43 +++-- go.sum | 56 ++++++ web/package-lock.json | 432 +++++++++++++++++++++--------------------- 3 files changed, 299 insertions(+), 232 deletions(-) diff --git a/go.mod b/go.mod index 6a2cffea..27ee4332 100644 --- a/go.mod +++ b/go.mod @@ -6,20 +6,20 @@ require ( cloud.google.com/go/firestore v1.13.0 // indirect cloud.google.com/go/storage v1.33.0 // indirect github.com/BurntSushi/toml v1.3.2 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/emersion/go-smtp v0.18.0 - github.com/gabriel-vasile/mimetype v1.4.2 + github.com/gabriel-vasile/mimetype v1.4.3 github.com/gorilla/websocket v1.5.0 github.com/mattn/go-sqlite3 v1.14.17 github.com/olebedev/when v1.0.0 github.com/stretchr/testify v1.8.1 github.com/urfave/cli/v2 v2.25.7 - golang.org/x/crypto v0.13.0 - golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sync v0.3.0 - golang.org/x/term v0.12.0 + golang.org/x/crypto v0.14.0 + golang.org/x/oauth2 v0.13.0 // indirect + golang.org/x/sync v0.4.0 + golang.org/x/term v0.13.0 golang.org/x/time v0.3.0 - google.golang.org/api v0.143.0 + google.golang.org/api v0.147.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -29,17 +29,17 @@ require github.com/pkg/errors v0.9.1 // indirect require ( firebase.google.com/go/v4 v4.12.1 - github.com/SherClockHolmes/webpush-go v1.2.0 + github.com/SherClockHolmes/webpush-go v1.3.0 github.com/prometheus/client_golang v1.17.0 github.com/stripe/stripe-go/v74 v74.30.0 ) require ( cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/compute v1.23.0 // indirect + cloud.google.com/go/compute v1.23.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.2 // indirect - cloud.google.com/go/longrunning v0.5.1 // indirect + cloud.google.com/go/iam v1.1.3 // indirect + cloud.google.com/go/longrunning v0.5.2 // indirect github.com/AlekSi/pointer v1.2.0 // indirect github.com/MicahParks/keyfunc v1.9.0 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -50,31 +50,32 @@ require ( github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect - github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/stretchr/objx v0.5.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/net v0.15.0 // indirect - golang.org/x/sys v0.12.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/appengine/v2 v2.0.5 // indirect - google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect - google.golang.org/grpc v1.58.2 // indirect + google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index bf112048..083a5423 100644 --- a/go.sum +++ b/go.sum @@ -3,14 +3,20 @@ cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/firestore v1.13.0 h1:/3S4RssUV4GO/kvgJZB+tayjhOfyAHs+KcpJgRVu/Qk= cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= +cloud.google.com/go/longrunning v0.5.2 h1:u+oFqfEwwU7F9dIELigxbe0XVnBAo9wqMuQLA50CZ5k= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= firebase.google.com/go/v4 v4.12.0 h1:I6dCkcWUMFNkFdWgzlf8SLWecQnKdFgJhMv5fT9l1qI= @@ -26,6 +32,8 @@ github.com/MicahParks/keyfunc v1.9.0 h1:lhKd5xrFHLNOWrDc4Tyb/Q1AJ4LCzQ48GVJyVIID github.com/MicahParks/keyfunc v1.9.0/go.mod h1:IdnCilugA0O/99dW+/MkvlyrsX8+L8+x95xuVNtM5jw= github.com/SherClockHolmes/webpush-go v1.2.0 h1:sGv0/ZWCvb1HUH+izLqrb2i68HuqD/0Y+AmGQfyqKJA= github.com/SherClockHolmes/webpush-go v1.2.0/go.mod h1:w6X47YApe/B9wUz2Wh8xukxlyupaxSSEbu6yKJcHN2w= +github.com/SherClockHolmes/webpush-go v1.3.0 h1:CAu3FvEE9QS4drc3iKNgpBWFfGqNthKlZhp5QpYnu6k= +github.com/SherClockHolmes/webpush-go v1.3.0/go.mod h1:AxRHmJuYwKGG1PVgYzToik1lphQvDnqFYDqimHvwhIw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -35,6 +43,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -50,6 +60,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= @@ -82,6 +94,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -101,6 +115,8 @@ github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6 github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/olebedev/when v1.0.0 h1:T2DZCj8HxUhOVxcqaLOmzuTr+iZLtMHsZEim7mjIA2w= github.com/olebedev/when v1.0.0/go.mod h1:T0THb4kP9D3NNqlvCwIG4GyUioTAzEhB4RNVzig/43E= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -116,8 +132,12 @@ github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUo github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= @@ -145,13 +165,17 @@ golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -162,18 +186,27 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -183,17 +216,27 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= @@ -205,14 +248,19 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.142.0 h1:mf+7EJ94fi5ZcnpPy+m0Yv2dkz8bKm+UL0snTCuwXlY= google.golang.org/api v0.142.0/go.mod h1:zJAN5o6HRqR7O+9qJUFOWrZkYE66RH+efPBdTLA4xBA= google.golang.org/api v0.143.0 h1:o8cekTkqhywkbZT6p1UHJPZ9+9uuCAJs/KYomxZB8fA= google.golang.org/api v0.143.0/go.mod h1:FoX9DO9hT7DLNn97OuoZAGSDuNAXdJRuGK98rSUgurk= +google.golang.org/api v0.147.0 h1:Can3FaQo9LlVqxJCodNmeZW/ib3/qKAY3rFeXiHo5gc= +google.golang.org/api v0.147.0/go.mod h1:pQ/9j83DcmPd/5C9e2nFOdjjNkDZ1G+zkbK2uvdkJMs= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -224,10 +272,16 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0= google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 h1:U7+wNaVuSTaUqNvK2+osJ9ejEZxbjHHk8F2b6Hpx0AE= google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -235,6 +289,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/web/package-lock.json b/web/package-lock.json index 3ce24105..13d2357d 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -80,18 +80,18 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -99,10 +99,10 @@ "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", + "@babel/helpers": "^7.23.2", "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -220,9 +220,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -442,13 +442,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0" }, "engines": { @@ -775,14 +775,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1562,12 +1562,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", - "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.20", + "@babel/compat-data": "^7.23.2", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", @@ -1593,15 +1593,15 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-block-scoping": "^7.23.0", "@babel/plugin-transform-class-properties": "^7.22.5", "@babel/plugin-transform-class-static-block": "^7.22.11", "@babel/plugin-transform-classes": "^7.22.15", "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-destructuring": "^7.23.0", "@babel/plugin-transform-dotall-regex": "^7.22.5", "@babel/plugin-transform-duplicate-keys": "^7.22.5", "@babel/plugin-transform-dynamic-import": "^7.22.11", @@ -1613,9 +1613,9 @@ "@babel/plugin-transform-literals": "^7.22.5", "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", "@babel/plugin-transform-modules-umd": "^7.22.5", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.22.5", @@ -1624,7 +1624,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.22.15", "@babel/plugin-transform-object-super": "^7.22.5", "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-optional-chaining": "^7.23.0", "@babel/plugin-transform-parameters": "^7.22.15", "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.11", @@ -1641,10 +1641,10 @@ "@babel/plugin-transform-unicode-regex": "^7.22.5", "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.19", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", + "@babel/types": "^7.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1676,9 +1676,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1701,9 +1701,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", - "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", @@ -2277,9 +2277,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2304,9 +2304,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2428,9 +2428,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2449,14 +2449,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.17.tgz", - "integrity": "sha512-xNbk7iOXrglNdIxFBN0k3ySsPIFLWCnFxqsAYl7CIcDkD9low4kJ7IUuy6ctwx/HAy2fenrT3KXHr1sGjAMgpQ==", + "version": "5.0.0-beta.20", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.20.tgz", + "integrity": "sha512-CS2pUuqxST7ch9VNDCklRYDbJ3rru20Tx7na92QvVVKfu3RL4z/QLuVIc8jYGsdCnauMaeUSlFNLAJNb0yXe6w==", "dependencies": { - "@babel/runtime": "^7.22.15", + "@babel/runtime": "^7.23.1", "@floating-ui/react-dom": "^2.0.2", - "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.11", + "@mui/types": "^7.2.6", + "@mui/utils": "^5.14.13", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -2480,20 +2480,20 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.11.tgz", - "integrity": "sha512-uY8FLQURhXe3f3O4dS5OSGML9KDm9+IE226cBu78jarVIzdQGPlXwGIlSI9VJR8MvZDA6C0+6XfWDhWCHruC5Q==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.14.tgz", + "integrity": "sha512-Rw/xKiTOUgXD8hdKqj60aC6QcGprMipG7ne2giK6Mz7b4PlhL/xog9xLeclY3BxsRLkZQ05egFnIEY1CSibTbw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" } }, "node_modules/@mui/icons-material": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.11.tgz", - "integrity": "sha512-aHReLasBuS/+hhPzbZCgZ0eTcZ2QRnoC2WNK7XvdAf3l+LjC1flzjh6GWw1tZJ5NHnZ+bivdwtLFQ8XTR96JkA==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.14.tgz", + "integrity": "sha512-vwuaMsKvI7AWTeYqR8wYbpXijuU8PzMAJWRAq2DDIuOZPxjKyHlr8WQ25+azZYkIXtJ7AqnVb1ZmHdEyB4/kug==", "dependencies": { - "@babel/runtime": "^7.22.15" + "@babel/runtime": "^7.23.1" }, "engines": { "node": ">=12.0.0" @@ -2514,17 +2514,17 @@ } }, "node_modules/@mui/material": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.11.tgz", - "integrity": "sha512-DnSdJzcR7lwG12JA5L2t8JF+RDzMygu5rCNW+logWb/KW2/TRzwLyVWO+CorHTBjBRd38DBxnwOCDiYkDd+N3A==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.14.tgz", + "integrity": "sha512-cAmCwAHFQXxb44kWbVFkhKATN8tACgMsFwrXo8ro6WzYW73U/qsR5AcCiJIhCyYYg+gcftfkmNcpRaV3JjhHCg==", "dependencies": { - "@babel/runtime": "^7.22.15", - "@mui/base": "5.0.0-beta.17", - "@mui/core-downloads-tracker": "^5.14.11", - "@mui/system": "^5.14.11", - "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.11", - "@types/react-transition-group": "^4.4.6", + "@babel/runtime": "^7.23.1", + "@mui/base": "5.0.0-beta.20", + "@mui/core-downloads-tracker": "^5.14.14", + "@mui/system": "^5.14.14", + "@mui/types": "^7.2.6", + "@mui/utils": "^5.14.13", + "@types/react-transition-group": "^4.4.7", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1", @@ -2558,12 +2558,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.11.tgz", - "integrity": "sha512-MSnNNzTu9pfKLCKs1ZAKwOTgE4bz+fQA0fNr8Jm7NDmuWmw0CaN9Vq2/MHsatE7+S0A25IAKby46Uv1u53rKVQ==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.14.tgz", + "integrity": "sha512-n77au3CQj9uu16hak2Y+rvbGSBaJKxziG/gEbOLVGrAuqZ+ycVSkorCfN6Y/4XgYOpG/xvmuiY3JwhAEOzY3iA==", "dependencies": { - "@babel/runtime": "^7.22.15", - "@mui/utils": "^5.14.11", + "@babel/runtime": "^7.23.1", + "@mui/utils": "^5.14.13", "prop-types": "^15.8.1" }, "engines": { @@ -2584,11 +2584,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.11.tgz", - "integrity": "sha512-jdUlqRgTYQ8RMtPX4MbRZqar6W2OiIb6J5KEFbIu4FqvPrk44Each4ppg/LAqp1qNlBYq5i+7Q10MYLMpDxX9A==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.14.tgz", + "integrity": "sha512-sF3DS2PVG+cFWvkVHQQaGFpL1h6gSwOW3L91pdxPLQDHDZ5mZ/X0SlXU5XA+WjypoysG4urdAQC7CH/BRvUiqg==", "dependencies": { - "@babel/runtime": "^7.22.15", + "@babel/runtime": "^7.23.1", "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -2615,15 +2615,15 @@ } }, "node_modules/@mui/system": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.11.tgz", - "integrity": "sha512-yl8xV+y0k7j6dzBsHabKwoShmjqLa8kTxrhUI3JpqLG358VRVMJRW/ES0HhvfcCi4IVXde+Tc2P3K1akGL8zoA==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.14.tgz", + "integrity": "sha512-y4InFmCgGGWXnz+iK4jRTWVikY0HgYnABjz4wgiUgEa2W1H8M4ow+27BegExUWPkj4TWthQ2qG9FOGSMtI+PKA==", "dependencies": { - "@babel/runtime": "^7.22.15", - "@mui/private-theming": "^5.14.11", - "@mui/styled-engine": "^5.14.11", - "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.11", + "@babel/runtime": "^7.23.1", + "@mui/private-theming": "^5.14.14", + "@mui/styled-engine": "^5.14.13", + "@mui/types": "^7.2.6", + "@mui/utils": "^5.14.13", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -2654,11 +2654,11 @@ } }, "node_modules/@mui/types": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", - "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.6.tgz", + "integrity": "sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng==", "peerDependencies": { - "@types/react": "*" + "@types/react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -2667,12 +2667,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.11", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.11.tgz", - "integrity": "sha512-fmkIiCPKyDssYrJ5qk+dime1nlO3dmWfCtaPY/uVBqCRMBZ11JhddB9m8sjI2mgqQQwRJG5bq3biaosNdU/s4Q==", + "version": "5.14.14", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.14.tgz", + "integrity": "sha512-3AKp8uksje5sRfVrtgG9Q/2TBsHWVBUtA0NaXliZqGcXo8J+A+Agp0qUW2rJ+ivgPWTCCubz9FZVT2IQZ3bGsw==", "dependencies": { - "@babel/runtime": "^7.22.15", - "@types/prop-types": "^15.7.5", + "@babel/runtime": "^7.23.1", + "@types/prop-types": "^15.7.7", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -2738,9 +2738,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", - "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.10.0.tgz", + "integrity": "sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==", "engines": { "node": ">=14.0.0" } @@ -2758,9 +2758,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", + "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -2771,18 +2771,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "version": "7.6.6", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", + "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", + "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2790,9 +2790,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", + "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -2811,33 +2811,36 @@ "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.13.tgz", - "integrity": "sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==", + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.14.tgz", + "integrity": "sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw==", "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", - "dev": true + "version": "20.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", + "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", + "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==" }, "node_modules/@types/prop-types": { - "version": "15.7.8", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", - "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + "version": "15.7.9", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", + "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==" }, "node_modules/@types/react": { - "version": "18.2.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz", - "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==", + "version": "18.2.29", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.29.tgz", + "integrity": "sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2845,9 +2848,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", - "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.8.tgz", + "integrity": "sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg==", "dependencies": { "@types/react": "*" } @@ -2862,20 +2865,20 @@ } }, "node_modules/@types/scheduler": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", - "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", + "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==" }, "node_modules/@types/trusted-types": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", - "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.5.tgz", + "integrity": "sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==", "dev": true }, "node_modules/@types/unist": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", - "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==" }, "node_modules/@vitejs/plugin-react": { "version": "4.1.0", @@ -3164,13 +3167,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.4.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -3178,12 +3181,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", - "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.4.3", "core-js-compat": "^3.32.2" }, "peerDependencies": { @@ -3191,12 +3194,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.4.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -3311,9 +3314,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001542", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", - "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==", + "version": "1.0.30001551", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", + "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", "dev": true, "funding": [ { @@ -3550,9 +3553,9 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -3644,9 +3647,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.537", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", - "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", + "version": "1.4.559", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz", + "integrity": "sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug==", "dev": true }, "node_modules/emoji-regex": { @@ -3844,15 +3847,15 @@ } }, "node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", + "@eslint/js": "8.51.0", "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -4132,12 +4135,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "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, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4226,9 +4229,9 @@ "dev": true }, "node_modules/eslint/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4474,12 +4477,12 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, @@ -4538,9 +4541,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -4696,12 +4703,9 @@ "dev": true }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { "node": ">= 0.4.0" } @@ -5614,9 +5618,9 @@ } }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -5978,9 +5982,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6465,11 +6469,11 @@ } }, "node_modules/react-router": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", - "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.17.0.tgz", + "integrity": "sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==", "dependencies": { - "@remix-run/router": "1.9.0" + "@remix-run/router": "1.10.0" }, "engines": { "node": ">=14.0.0" @@ -6479,12 +6483,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", - "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.17.0.tgz", + "integrity": "sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==", "dependencies": { - "@remix-run/router": "1.9.0", - "react-router": "6.16.0" + "@remix-run/router": "1.10.0", + "react-router": "6.17.0" }, "engines": { "node": ">=14.0.0" @@ -6663,9 +6667,9 @@ } }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7164,9 +7168,9 @@ } }, "node_modules/terser": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", - "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", + "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -7357,6 +7361,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, "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", @@ -7582,9 +7592,9 @@ } }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, "dependencies": { "esbuild": "^0.18.10", From c6b8ea90b79841259b36e43670274612b85e813c Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 19 Oct 2023 07:32:39 -0400 Subject: [PATCH 35/57] Thank you @YezGotIt for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0fae8469..6e69d27d 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 7c3fd42a867d52a2d447144bfa9a2cbfb4022045 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 19 Oct 2023 07:33:40 -0400 Subject: [PATCH 36/57] Thank you @thomasskou for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6e69d27d..049b6910 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From ca6bc1dcb02602d4f1fb3609a528a794f5cedab9 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 19 Oct 2023 07:38:12 -0400 Subject: [PATCH 37/57] Thank you @surfernv for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 049b6910..c20c9971 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From b811da6b830efe52b5d83e8a6f37d0997f956aef Mon Sep 17 00:00:00 2001 From: FOSSMan <137928236+0xFOSSMan@users.noreply.github.com> Date: Fri, 20 Oct 2023 18:42:44 +0000 Subject: [PATCH 38/57] Added ntfy.fossman.de to docs/integrations.md/Alternative ntfy Servers --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 5375314a..2bd2344d 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -236,6 +236,7 @@ ntfy community. Thanks to everyone running a public server. **You guys rock!** | [ntfy.envs.net](https://ntfy.envs.net) | 🇩🇪 Germany | | [ntfy.mzte.de](https://ntfy.mzte.de/) | 🇩🇪 Germany | | [ntfy.hostux.net](https://ntfy.hostux.net/) | 🇫🇷 France | +| [ntfy.fossman.de](https://ntfy.fossman.de/) | 🇩🇪 Germany | Please be aware that **server operators can log your messages**. The project also cannot guarantee the reliability and uptime of third party servers, so use of each server is **at your own discretion**. From 554547b431f462ea0df72d79e3680c7570f65080 Mon Sep 17 00:00:00 2001 From: Dan Lousqui Date: Mon, 23 Oct 2023 21:22:21 +0200 Subject: [PATCH 39/57] doc/integrations: link to ntfy-android-builder --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 5375314a..48d33abe 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -72,6 +72,7 @@ I've added a ⭐ to projects or posts that have a significant following, or had ## Projects + scripts +- [ntfy-android-builder](https://github.com/TheBlusky/ntfy-android-builder) - Script for building ntfy-android with custom Firebase configuration (Docker/Shell) - [Grafana-to-ntfy](https://github.com/kittyandrew/grafana-to-ntfy) - Grafana-to-ntfy alerts channel (Rust) - [Grafana-ntfy-webhook-integration](https://github.com/academo/grafana-alerting-ntfy-webhook-integration) - Integrates Grafana alerts webhooks (Go) - [Grafana-to-ntfy](https://gitlab.com/Saibe1111/grafana-to-ntfy) - Grafana-to-ntfy alerts channel (Node Js) From 6dbdabf9fd325a1010e6144a60b9bf7bdc9dc673 Mon Sep 17 00:00:00 2001 From: Dan Lousqui Date: Mon, 23 Oct 2023 22:15:01 +0200 Subject: [PATCH 40/57] doc/integrations: link to ntfy-android-builder --- docs/integrations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations.md b/docs/integrations.md index 48d33abe..6a9766b9 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -72,7 +72,6 @@ I've added a ⭐ to projects or posts that have a significant following, or had ## Projects + scripts -- [ntfy-android-builder](https://github.com/TheBlusky/ntfy-android-builder) - Script for building ntfy-android with custom Firebase configuration (Docker/Shell) - [Grafana-to-ntfy](https://github.com/kittyandrew/grafana-to-ntfy) - Grafana-to-ntfy alerts channel (Rust) - [Grafana-ntfy-webhook-integration](https://github.com/academo/grafana-alerting-ntfy-webhook-integration) - Integrates Grafana alerts webhooks (Go) - [Grafana-to-ntfy](https://gitlab.com/Saibe1111/grafana-to-ntfy) - Grafana-to-ntfy alerts channel (Node Js) @@ -135,6 +134,7 @@ I've added a ⭐ to projects or posts that have a significant following, or had - [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that lets you share files from your share feed to a topic of your choice. - [systemd-ntfy](https://hackage.haskell.org/package/systemd-ntfy) - monitor a set of systemd services an send a notification to ntfy.sh whenever their status changes - [RouterOS Scripts](https://git.eworm.de/cgit/routeros-scripts/about/) - a collection of scripts for MikroTik RouterOS +- [ntfy-android-builder](https://github.com/TheBlusky/ntfy-android-builder) - Script for building ntfy-android with custom Firebase configuration (Docker/Shell) ## Blog + forum posts From 27f8cc0e5282c2861f0e2f48041becaa914ebd8d Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 28 Oct 2023 19:04:56 +0200 Subject: [PATCH 41/57] Adding changedetection.io integration guide --- docs/examples.md | 16 ++++++++++++++++ docs/integrations.md | 1 + docs/static/img/cdio-setup.jpg | Bin 0 -> 158553 bytes 3 files changed, 17 insertions(+) create mode 100644 docs/static/img/cdio-setup.jpg diff --git a/docs/examples.md b/docs/examples.md index 8164e2bf..a0e121fe 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -135,6 +135,22 @@ You can send a message during a workflow run with curl. Here is an example sendi ${{ secrets.NTFY_URL }} ``` +## Changedetection.io +NTFY is an excellent choice for getting notifications when a website has a change sent to your mobile (or desktop), +[changedetection.io](https://changedetection.io) or [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) +uses [apprise](https://github.com/caronc/apprise) library for notification integrations. + +To add any NTFY(s) notification to a website change simply add the [NTFY style URL](https://github.com/caronc/apprise/wiki/Notify_ntfy) +to the notification list. + +For example `ntfy://{topic}` or `ntfy://{user}:{password}@{host}:{port}/{topics}` + +In your changedetection.io installation, click `Edit` > `Notifications` on a single watch then add the special NTFY URL +to the Notification List. + +![ntfy alerts on website change](static/img/cdio-setup.jpg) + + ## Watchtower (shoutrrr) You can use [shoutrrr](https://containrrr.dev/shoutrrr/latest/services/ntfy/) to send [Watchtower](https://github.com/containrrr/watchtower/) notifications to your ntfy topic. diff --git a/docs/integrations.md b/docs/integrations.md index f5c5fe83..a8ffa6a9 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -24,6 +24,7 @@ I've added a ⭐ to projects or posts that have a significant following, or had - [diun](https://crazymax.dev/diun/) - Docker Image Update Notifier - [Cloudron](https://www.cloudron.io/store/sh.ntfy.cloudronapp.html) - Platform that makes it easy to manage web apps on your server - [Xitoring](https://xitoring.com/docs/notifications/notification-roles/ntfy/) - Server and Uptime monitoring +- [changedetection.io](https://changedetection.io) ⭐ - Website change detection and notification ## Integration via HTTP/SMTP/etc. diff --git a/docs/static/img/cdio-setup.jpg b/docs/static/img/cdio-setup.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f9e44cb2ff668da992555e9171229b7d8849836 GIT binary patch literal 158553 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%0DsB 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 I{k`&k0NcX>(f|Me literal 0 HcmV?d00001 From 03e7a3ea65030423df4f1a2b811c5ee92fb1544c Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 28 Oct 2023 19:08:14 +0200 Subject: [PATCH 42/57] lower case --- docs/examples.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/examples.md b/docs/examples.md index a0e121fe..9f951422 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -136,21 +136,20 @@ You can send a message during a workflow run with curl. Here is an example sendi ``` ## Changedetection.io -NTFY is an excellent choice for getting notifications when a website has a change sent to your mobile (or desktop), +ntfy is an excellent choice for getting notifications when a website has a change sent to your mobile (or desktop), [changedetection.io](https://changedetection.io) or [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) uses [apprise](https://github.com/caronc/apprise) library for notification integrations. -To add any NTFY(s) notification to a website change simply add the [NTFY style URL](https://github.com/caronc/apprise/wiki/Notify_ntfy) +To add any ntfy(s) notification to a website change simply add the [NTFY style URL](https://github.com/caronc/apprise/wiki/Notify_ntfy) to the notification list. For example `ntfy://{topic}` or `ntfy://{user}:{password}@{host}:{port}/{topics}` -In your changedetection.io installation, click `Edit` > `Notifications` on a single watch then add the special NTFY URL -to the Notification List. +In your changedetection.io installation, click `Edit` > `Notifications` on a single website watch (or group) then add +the special ntfy Apprise Notification URL to the Notification List. ![ntfy alerts on website change](static/img/cdio-setup.jpg) - ## Watchtower (shoutrrr) You can use [shoutrrr](https://containrrr.dev/shoutrrr/latest/services/ntfy/) to send [Watchtower](https://github.com/containrrr/watchtower/) notifications to your ntfy topic. From e2097e856ea7f523c6ac8320b4ec978a7469b750 Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Sat, 28 Oct 2023 13:33:39 -0400 Subject: [PATCH 43/57] Update install.md Add macOS client.yml location to the list of locations given --- docs/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index ed101554..c1a621d7 100644 --- a/docs/install.md +++ b/docs/install.md @@ -14,7 +14,7 @@ We support amd64, armv7 and arm64. 1. Install ntfy using one of the methods described below 2. Then (optionally) edit `/etc/ntfy/server.yml` for the server (Linux only, see [configuration](config.md) or [sample server.yml](https://github.com/binwiederhier/ntfy/blob/main/server/server.yml)) -3. Or (optionally) create/edit `~/.config/ntfy/client.yml` (for the non-root user) or `/etc/ntfy/client.yml` (for the root user), see [sample client.yml](https://github.com/binwiederhier/ntfy/blob/main/client/client.yml)) +3. Or (optionally) create/edit `~/.config/ntfy/client.yml` (for the non-root user), `~/Library/Application Support/ntfy/client.yml` (for the macOS non-root user), or `/etc/ntfy/client.yml` (for the root user), see [sample client.yml](https://github.com/binwiederhier/ntfy/blob/main/client/client.yml)) To run the ntfy server, then just run `ntfy serve` (or `systemctl start ntfy` when using the deb/rpm). To send messages, use `ntfy publish`. To subscribe to topics, use `ntfy subscribe` (see [subscribing via CLI](subscribe/cli.md) From 2afe1fbeedea74065f3ba1d1b8aa8679e76cc742 Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Sat, 28 Oct 2023 13:35:52 -0400 Subject: [PATCH 44/57] Update cli.md Add macOS client location to the options listed --- docs/subscribe/cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/subscribe/cli.md b/docs/subscribe/cli.md index 59cfc8e7..7f589d3c 100644 --- a/docs/subscribe/cli.md +++ b/docs/subscribe/cli.md @@ -10,7 +10,7 @@ to topics via the ntfy CLI. The CLI is included in the same `ntfy` binary that c ## Install + configure To install the ntfy CLI, simply **follow the steps outlined on the [install page](../install.md)**. The ntfy server and client are the same binary, so it's all very convenient. After installing, you can (optionally) configure the client -by creating `~/.config/ntfy/client.yml` (for the non-root user), or `/etc/ntfy/client.yml` (for the root user). You +by creating `~/.config/ntfy/client.yml` (for the non-root user), `~/Library/Application Support/ntfy/client.yml` (for the macOS non-root user), or `/etc/ntfy/client.yml` (for the root user). You can find a [skeleton config](https://github.com/binwiederhier/ntfy/blob/main/client/client.yml) on GitHub. If you just want to use [ntfy.sh](https://ntfy.sh), you don't have to change anything. If you **self-host your own server**, From 7791901b2d32fa5a167de13c5b69c04980d31b54 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 12:10:35 -0400 Subject: [PATCH 45/57] Thank you @bear for your sponsorship. Awesome user name too! --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c20c9971..8c633163 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 6d451785f08147b06b847887cb1306b82a1b2de6 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 12:13:26 -0400 Subject: [PATCH 46/57] Thank you @richardleach for your sponsorship --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8c633163..3b98ddf5 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), From a3663e43e4162e6aa3fc6f185fed48a5742a6555 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 12:14:07 -0400 Subject: [PATCH 47/57] Thank you for your donation @cminter --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3b98ddf5..1754ea5d 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From cad38573d76f8236c6eba53c1388135650564f26 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 12:15:20 -0400 Subject: [PATCH 48/57] Thank you for your donation @bahur142 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1754ea5d..bb8879af 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 8e0491220158aa86078f384391914f67894fa700 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 12:32:08 -0400 Subject: [PATCH 49/57] Fixing docs links --- docs/develop.md | 2 +- docs/emojis.md | 4 ++-- docs/examples.md | 4 ++-- docs/releases.md | 2 +- scripts/emoji-convert.sh | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/develop.md b/docs/develop.md index 05b55773..b090c8c5 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -429,7 +429,7 @@ steps: ### XCode setup -1. Follow step 4 of [https://firebase.google.com/docs/ios/setup](Add Firebase to your Apple project) to install the +1. Follow step 4 of [Add Firebase to your Apple project](https://firebase.google.com/docs/ios/setup) to install the `firebase-ios-sdk` in XCode, if it's not already present - you can select any packages in addition to Firebase Core / Firebase Messaging 1. Similarly, install the SQLite.swift package dependency in XCode 1. When running the debug build, ensure XCode is pointed to the connected iOS device - registering for push notifications does not work in the iOS simulators diff --git a/docs/emojis.md b/docs/emojis.md index fa01bb47..d801ae09 100644 --- a/docs/emojis.md +++ b/docs/emojis.md @@ -2,9 +2,9 @@ -You can [tag messages](../publish/#tags-emojis) with emojis 🥳 🎉 and other relevant strings. Matching tags are automatically +You can [tag messages](publish.md#tags-emojis) with emojis 🥳 🎉 and other relevant strings. Matching tags are automatically converted to emojis. This is a reference of all supported emojis. To learn more about the feature, please refer to the -[tagging and emojis page](../publish/#tags-emojis). +[tagging and emojis page](publish.md#tags-emojis). diff --git a/docs/examples.md b/docs/examples.md index 9f951422..4e936d91 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -137,10 +137,10 @@ You can send a message during a workflow run with curl. Here is an example sendi ## Changedetection.io ntfy is an excellent choice for getting notifications when a website has a change sent to your mobile (or desktop), -[changedetection.io](https://changedetection.io) or [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) +[changedetection.io](https://changedetection.io) or on GitHub ([dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)) uses [apprise](https://github.com/caronc/apprise) library for notification integrations. -To add any ntfy(s) notification to a website change simply add the [NTFY style URL](https://github.com/caronc/apprise/wiki/Notify_ntfy) +To add any ntfy(s) notification to a website change simply add the [ntfy style URL](https://github.com/caronc/apprise/wiki/Notify_ntfy) to the notification list. For example `ntfy://{topic}` or `ntfy://{user}:{password}@{host}:{port}/{topics}` diff --git a/docs/releases.md b/docs/releases.md index cac34a3c..0cac2dea 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1273,7 +1273,7 @@ Released Dec 28, 2021 **Features & bug fixes:** -* [Publish messages via e-mail](ntfy.sh/docs/publish/#e-mail-publishing) #66 +* [Publish messages via e-mail](publish.md#e-mail-publishing) #66 * Server-side work to support [unifiedpush.org](https://unifiedpush.org) #64 * Fixing the Santa bug #65 diff --git a/scripts/emoji-convert.sh b/scripts/emoji-convert.sh index 61ad5f79..8cbe397b 100755 --- a/scripts/emoji-convert.sh +++ b/scripts/emoji-convert.sh @@ -25,9 +25,9 @@ elif [[ "$1" == *.md ]]; then -You can [tag messages](../publish/#tags-emojis) with emojis 🥳 🎉 and other relevant strings. Matching tags are automatically +You can [tag messages](publish.md#tags-emojis) with emojis 🥳 🎉 and other relevant strings. Matching tags are automatically converted to emojis. This is a reference of all supported emojis. To learn more about the feature, please refer to the -[tagging and emojis page](../publish/#tags-emojis). +[tagging and emojis page](publish.md#tags-emojis).
" > "$1" From b3534aecda1a557ce4149dd958c615ae89de1aa2 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 19:57:06 -0400 Subject: [PATCH 50/57] Format fixes --- Makefile | 12 ++++++------ web/src/app/utils.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 8cb75238..10624ed5 100644 --- a/Makefile +++ b/Makefile @@ -39,8 +39,8 @@ help: @echo " make web-deps - Install web app dependencies (npm install the universe)" @echo " make web-build - Actually build the web app" @echo " make web-lint - Run eslint on the web app" - @echo " make web-format - Run prettier on the web app" - @echo " make web-format-check - Run prettier on the web app, but don't change anything" + @echo " make web-fmt - Run prettier on the web app" + @echo " make web-fmt-check - Run prettier on the web app, but don't change anything" @echo @echo "Build documentation:" @echo " make docs - Build the documentation" @@ -151,10 +151,10 @@ web-deps: web-deps-update: cd web && npm update -web-format: +web-fmt: cd web && npm run format -web-format-check: +web-fmt-check: cd web && npm run format:check web-lint: @@ -248,7 +248,7 @@ cli-build-results: # Test/check targets -check: test web-format-check fmt-check vet web-lint lint staticcheck +check: test web-fmt-check fmt-check vet web-lint lint staticcheck test: .PHONY go test $(shell go list ./... | grep -vE 'ntfy/(test|examples|tools)') @@ -275,7 +275,7 @@ coverage-upload: # Lint/formatting targets -fmt: +fmt: web-fmt gofmt -s -w . fmt-check: diff --git a/web/src/app/utils.js b/web/src/app/utils.js index 6b3849f5..08710c1f 100644 --- a/web/src/app/utils.js +++ b/web/src/app/utils.js @@ -134,7 +134,7 @@ export const hashCode = (s) => { * convert `i18n.language` style str (e.g.: `en_US`) to kebab-case (e.g.: `en-US`), * which is expected by `` and `Intl.DateTimeFormat` */ -export const getKebabCaseLangStr = (language) => language.replace(/_/g, '-'); +export const getKebabCaseLangStr = (language) => language.replace(/_/g, "-"); export const formatShortDateTime = (timestamp, language) => new Intl.DateTimeFormat(getKebabCaseLangStr(language), { From c332c132faf8c0ec2798ba89fdd8c17bca55fb7f Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 29 Oct 2023 20:04:37 -0400 Subject: [PATCH 51/57] Fix CI --- server/server_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/server_test.go b/server/server_test.go index d78533e9..d60c775a 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -512,6 +512,8 @@ func TestServer_PublishAtAndPrune(t *testing.T) { messages := toMessages(t, response.Body.String()) require.Equal(t, 1, len(messages)) // Not affected by pruning require.Equal(t, "a message", messages[0].Message) + + time.Sleep(time.Second) // FIXME CI failing not sure why } func TestServer_PublishAndMultiPoll(t *testing.T) { From d3565c9b87440931992874aebf55e7d8db9e96d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Seppo=20Lehtim=C3=A4ki?= Date: Sat, 4 Nov 2023 19:39:29 +0100 Subject: [PATCH 52/57] Added translation using Weblate (Finnish) --- web/public/static/langs/fi.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/static/langs/fi.json diff --git a/web/public/static/langs/fi.json b/web/public/static/langs/fi.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/web/public/static/langs/fi.json @@ -0,0 +1 @@ +{} From 8dd4c3e3c0fffb4516bb313a54a979ea0174c77d Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Mon, 6 Nov 2023 05:48:47 -0500 Subject: [PATCH 53/57] Bump deps --- docs/releases.md | 2 +- go.mod | 38 ++-- go.sum | 127 ++++------- web/package-lock.json | 490 ++++++++++++++++++++++-------------------- 4 files changed, 314 insertions(+), 343 deletions(-) diff --git a/docs/releases.md b/docs/releases.md index 0cac2dea..73e5eb20 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1291,7 +1291,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Re-add `tzdata` to Docker images for amd64 image ([#894](https://github.com/binwiederhier/ntfy/issues/894), [#307](https://github.com/binwiederhier/ntfy/pull/307)) * Add special logic to ignore `Priority` header if it resembled a RFC 9218 value ([#851](https://github.com/binwiederhier/ntfy/pull/851)/[#895](https://github.com/binwiederhier/ntfy/pull/895), thanks to [@gusdleon](https://github.com/gusdleon), see also [#351](https://github.com/binwiederhier/ntfy/issues/351), [#353](https://github.com/binwiederhier/ntfy/issues/353), [#461](https://github.com/binwiederhier/ntfy/issues/461)) * PWA: hide install prompt on macOS 14 Safari ([#899](https://github.com/binwiederhier/ntfy/pull/899), thanks to [@nihalgonsalves](https://github.com/nihalgonsalves)) -* Correct usage of language str having underline ([#922](https://github.com/binwiederhier/ntfy/pull/922), thanks to [@imkero](https://github.com/imkero)) +* Fix web app crash in Edge for languages with underline in locale ([#922](https://github.com/binwiederhier/ntfy/pull/922)/[#912](https://github.com/binwiederhier/ntfy/issues/912)/[#852](https://github.com/binwiederhier/ntfy/issues/852), thanks to [@imkero](https://github.com/imkero)) ### ntfy Android app v1.16.1 (UNRELEASED) diff --git a/go.mod b/go.mod index 27ee4332..95365372 100644 --- a/go.mod +++ b/go.mod @@ -3,23 +3,23 @@ module heckel.io/ntfy go 1.18 require ( - cloud.google.com/go/firestore v1.13.0 // indirect - cloud.google.com/go/storage v1.33.0 // indirect + cloud.google.com/go/firestore v1.14.0 // indirect + cloud.google.com/go/storage v1.34.1 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/emersion/go-smtp v0.18.0 github.com/gabriel-vasile/mimetype v1.4.3 - github.com/gorilla/websocket v1.5.0 - github.com/mattn/go-sqlite3 v1.14.17 + github.com/gorilla/websocket v1.5.1 + github.com/mattn/go-sqlite3 v1.14.18 github.com/olebedev/when v1.0.0 github.com/stretchr/testify v1.8.1 github.com/urfave/cli/v2 v2.25.7 golang.org/x/crypto v0.14.0 golang.org/x/oauth2 v0.13.0 // indirect - golang.org/x/sync v0.4.0 + golang.org/x/sync v0.5.0 golang.org/x/term v0.13.0 - golang.org/x/time v0.3.0 - google.golang.org/api v0.147.0 + golang.org/x/time v0.4.0 + google.golang.org/api v0.149.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -35,11 +35,11 @@ require ( ) require ( - cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/compute v1.23.1 // indirect + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.3 // indirect - cloud.google.com/go/longrunning v0.5.2 // indirect + cloud.google.com/go/iam v1.1.5 // indirect + cloud.google.com/go/longrunning v0.5.4 // indirect github.com/AlekSi/pointer v1.2.0 // indirect github.com/MicahParks/keyfunc v1.9.0 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -50,13 +50,11 @@ require ( github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/go-cmp v0.6.0 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.3.1 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/kr/text v0.2.0 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect @@ -67,14 +65,14 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/appengine/v2 v2.0.5 // indirect - google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 083a5423..d93f52d2 100644 --- a/go.sum +++ b/go.sum @@ -1,26 +1,18 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/firestore v1.13.0 h1:/3S4RssUV4GO/kvgJZB+tayjhOfyAHs+KcpJgRVu/Qk= -cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= -cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= -cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= -cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= -cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= -cloud.google.com/go/longrunning v0.5.2 h1:u+oFqfEwwU7F9dIELigxbe0XVnBAo9wqMuQLA50CZ5k= -cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= -cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= -cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= -firebase.google.com/go/v4 v4.12.0 h1:I6dCkcWUMFNkFdWgzlf8SLWecQnKdFgJhMv5fT9l1qI= -firebase.google.com/go/v4 v4.12.0/go.mod h1:60c36dWLK4+j05Vw5XMllek3b3PCynU3BfI46OSwsUE= +cloud.google.com/go/firestore v1.14.0 h1:8aLcKnMPoldYU3YHgu4t2exrKhLQkqaXAGqT0ljrFVw= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/storage v1.34.1 h1:H2Af2dU5J0PF7A5B+ECFIce+RqxVnrVilO+cu0TS3MI= +cloud.google.com/go/storage v1.34.1/go.mod h1:VN1ElqqvR9adg1k9xlkUJ55cMOP1/QjnNNuT5xQL6dY= firebase.google.com/go/v4 v4.12.1 h1:tDNvobifGsx/1HSFLnM0fmNfx/CDZSgsTO2KhZtgpcs= firebase.google.com/go/v4 v4.12.1/go.mod h1:60c36dWLK4+j05Vw5XMllek3b3PCynU3BfI46OSwsUE= github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w= @@ -30,8 +22,6 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8 github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/MicahParks/keyfunc v1.9.0 h1:lhKd5xrFHLNOWrDc4Tyb/Q1AJ4LCzQ48GVJyVIID3+o= github.com/MicahParks/keyfunc v1.9.0/go.mod h1:IdnCilugA0O/99dW+/MkvlyrsX8+L8+x95xuVNtM5jw= -github.com/SherClockHolmes/webpush-go v1.2.0 h1:sGv0/ZWCvb1HUH+izLqrb2i68HuqD/0Y+AmGQfyqKJA= -github.com/SherClockHolmes/webpush-go v1.2.0/go.mod h1:w6X47YApe/B9wUz2Wh8xukxlyupaxSSEbu6yKJcHN2w= github.com/SherClockHolmes/webpush-go v1.3.0 h1:CAu3FvEE9QS4drc3iKNgpBWFfGqNthKlZhp5QpYnu6k= github.com/SherClockHolmes/webpush-go v1.3.0/go.mod h1:AxRHmJuYwKGG1PVgYzToik1lphQvDnqFYDqimHvwhIw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -41,8 +31,6 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -58,8 +46,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= @@ -92,29 +78,24 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nwzf+AHBxnbFjViHQS4P0yVpmQ= -github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= -github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI= +github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/olebedev/when v1.0.0 h1:T2DZCj8HxUhOVxcqaLOmzuTr+iZLtMHsZEim7mjIA2w= @@ -123,19 +104,11 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= @@ -161,13 +134,10 @@ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsr github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -188,25 +158,18 @@ golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -218,16 +181,12 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -237,10 +196,10 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= +golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -251,16 +210,10 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/api v0.142.0 h1:mf+7EJ94fi5ZcnpPy+m0Yv2dkz8bKm+UL0snTCuwXlY= -google.golang.org/api v0.142.0/go.mod h1:zJAN5o6HRqR7O+9qJUFOWrZkYE66RH+efPBdTLA4xBA= -google.golang.org/api v0.143.0 h1:o8cekTkqhywkbZT6p1UHJPZ9+9uuCAJs/KYomxZB8fA= -google.golang.org/api v0.143.0/go.mod h1:FoX9DO9hT7DLNn97OuoZAGSDuNAXdJRuGK98rSUgurk= -google.golang.org/api v0.147.0 h1:Can3FaQo9LlVqxJCodNmeZW/ib3/qKAY3rFeXiHo5gc= -google.golang.org/api v0.147.0/go.mod h1:pQ/9j83DcmPd/5C9e2nFOdjjNkDZ1G+zkbK2uvdkJMs= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -270,25 +223,17 @@ google.golang.org/appengine/v2 v2.0.5/go.mod h1:WoEXGoXNfa0mLvaH5sV3ZSGXwVmy8yf7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0= -google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= -google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 h1:U7+wNaVuSTaUqNvK2+osJ9ejEZxbjHHk8F2b6Hpx0AE= -google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405 h1:HJMDndgxest5n2y77fnErkM62iUsptE/H8p0dC2Huo4= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= -google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/web/package-lock.json b/web/package-lock.json index 13d2357d..7e3fcfdb 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -2245,18 +2245,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "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, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2304,9 +2304,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2347,12 +2347,12 @@ "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -2374,9 +2374,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@jridgewell/gen-mapping": { @@ -2438,9 +2438,9 @@ } }, "node_modules/@mapbox/hast-util-table-cell-style": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.2.0.tgz", - "integrity": "sha512-gqaTIGC8My3LVSnU38IwjHVKJC94HSonjvFHDk8/aSrApL8v4uWgm8zJkK7MJIIbHuNOr/+Mv2KkQKcxs6LEZA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.2.1.tgz", + "integrity": "sha512-LyQz4XJIdCdY/+temIhD/Ed0x/p4GAOUycpFSEK2Ads1CPKZy6b7V/2ROEtQiLLQ8soIs0xe/QAoR6kwpyW/yw==", "dependencies": { "unist-util-visit": "^1.4.1" }, @@ -2449,14 +2449,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.20", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.20.tgz", - "integrity": "sha512-CS2pUuqxST7ch9VNDCklRYDbJ3rru20Tx7na92QvVVKfu3RL4z/QLuVIc8jYGsdCnauMaeUSlFNLAJNb0yXe6w==", + "version": "5.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.22.tgz", + "integrity": "sha512-l4asGID5tmyerx9emJfXOKLyXzaBtdXNIFE3M+IrSZaFtGFvaQKHhc3+nxxSxPf1+G44psjczM0ekRQCdXx9HA==", "dependencies": { - "@babel/runtime": "^7.23.1", + "@babel/runtime": "^7.23.2", "@floating-ui/react-dom": "^2.0.2", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", + "@mui/types": "^7.2.8", + "@mui/utils": "^5.14.16", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -2480,20 +2480,20 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.14.tgz", - "integrity": "sha512-Rw/xKiTOUgXD8hdKqj60aC6QcGprMipG7ne2giK6Mz7b4PlhL/xog9xLeclY3BxsRLkZQ05egFnIEY1CSibTbw==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.16.tgz", + "integrity": "sha512-97isBjzH2v1K7oB4UH2f4NOkBShOynY6dhnoR2XlUk/g6bb7ZBv2I3D1hvvqPtpEigKu93e7f/jAYr5d9LOc5w==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" } }, "node_modules/@mui/icons-material": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.14.tgz", - "integrity": "sha512-vwuaMsKvI7AWTeYqR8wYbpXijuU8PzMAJWRAq2DDIuOZPxjKyHlr8WQ25+azZYkIXtJ7AqnVb1ZmHdEyB4/kug==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.16.tgz", + "integrity": "sha512-wmOgslMEGvbHZjFLru8uH5E+pif/ciXAvKNw16q6joK6EWVWU5rDYWFknDaZhCvz8ZE/K8ZnJQ+lMG6GgHzXbg==", "dependencies": { - "@babel/runtime": "^7.23.1" + "@babel/runtime": "^7.23.2" }, "engines": { "node": ">=12.0.0" @@ -2514,17 +2514,17 @@ } }, "node_modules/@mui/material": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.14.tgz", - "integrity": "sha512-cAmCwAHFQXxb44kWbVFkhKATN8tACgMsFwrXo8ro6WzYW73U/qsR5AcCiJIhCyYYg+gcftfkmNcpRaV3JjhHCg==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.16.tgz", + "integrity": "sha512-W4zZ4vnxgGk6/HqBwgsDHKU7x2l2NhX+r8gAwfg58Rhu3ikfY7NkIS6y8Gl3NkATc4GG1FNaGjjpQKfJx3U6Jw==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/base": "5.0.0-beta.20", - "@mui/core-downloads-tracker": "^5.14.14", - "@mui/system": "^5.14.14", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", - "@types/react-transition-group": "^4.4.7", + "@babel/runtime": "^7.23.2", + "@mui/base": "5.0.0-beta.22", + "@mui/core-downloads-tracker": "^5.14.16", + "@mui/system": "^5.14.16", + "@mui/types": "^7.2.8", + "@mui/utils": "^5.14.16", + "@types/react-transition-group": "^4.4.8", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1", @@ -2558,12 +2558,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.14.tgz", - "integrity": "sha512-n77au3CQj9uu16hak2Y+rvbGSBaJKxziG/gEbOLVGrAuqZ+ycVSkorCfN6Y/4XgYOpG/xvmuiY3JwhAEOzY3iA==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.16.tgz", + "integrity": "sha512-FNlL0pTSEBh8nXsVWreCHDSHk+jG8cBx1sxRbT8JVtL+PYbYPi802zfV4B00Kkf0LNRVRvAVQwojMWSR/MYGng==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/utils": "^5.14.13", + "@babel/runtime": "^7.23.2", + "@mui/utils": "^5.14.16", "prop-types": "^15.8.1" }, "engines": { @@ -2584,11 +2584,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.14.tgz", - "integrity": "sha512-sF3DS2PVG+cFWvkVHQQaGFpL1h6gSwOW3L91pdxPLQDHDZ5mZ/X0SlXU5XA+WjypoysG4urdAQC7CH/BRvUiqg==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.16.tgz", + "integrity": "sha512-FfvYvTG/Zd+KXMMImbcMYEeQAbONGuX5Vx3gBmmtB6KyA7Mvm9Pma1ly3R0gc44yeoFd+2wBjn1feS8h42HW5w==", "dependencies": { - "@babel/runtime": "^7.23.1", + "@babel/runtime": "^7.23.2", "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -2615,15 +2615,15 @@ } }, "node_modules/@mui/system": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.14.tgz", - "integrity": "sha512-y4InFmCgGGWXnz+iK4jRTWVikY0HgYnABjz4wgiUgEa2W1H8M4ow+27BegExUWPkj4TWthQ2qG9FOGSMtI+PKA==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.16.tgz", + "integrity": "sha512-uKnPfsDqDs8bbN54TviAuoGWOmFiQLwNZ3Wvj+OBkJCzwA6QnLb/sSeCB7Pk3ilH4h4jQ0BHtbR+Xpjy9wlOuA==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/private-theming": "^5.14.14", - "@mui/styled-engine": "^5.14.13", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", + "@babel/runtime": "^7.23.2", + "@mui/private-theming": "^5.14.16", + "@mui/styled-engine": "^5.14.16", + "@mui/types": "^7.2.8", + "@mui/utils": "^5.14.16", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -2654,9 +2654,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.6.tgz", - "integrity": "sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng==", + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.8.tgz", + "integrity": "sha512-9u0ji+xspl96WPqvrYJF/iO+1tQ1L5GTaDOeG3vCR893yy7VcWwRNiVMmPdPNpMDqx0WV1wtEW9OMwK9acWJzQ==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -2667,12 +2667,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.14.tgz", - "integrity": "sha512-3AKp8uksje5sRfVrtgG9Q/2TBsHWVBUtA0NaXliZqGcXo8J+A+Agp0qUW2rJ+ivgPWTCCubz9FZVT2IQZ3bGsw==", + "version": "5.14.16", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.16.tgz", + "integrity": "sha512-3xV31GposHkwRbQzwJJuooWpK2ybWdEdeUPtRjv/6vjomyi97F3+68l+QVj9tPTvmfSbr2sx5c/NuvDulrdRmA==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@types/prop-types": "^15.7.7", + "@babel/runtime": "^7.23.2", + "@types/prop-types": "^15.7.9", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -2738,9 +2738,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.10.0.tgz", - "integrity": "sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.11.0.tgz", + "integrity": "sha512-BHdhcWgeiudl91HvVa2wxqZjSHbheSgIiDvxrF1VjFzBzpTtuDPkOdOi3Iqvc08kXtFkLjhbS+ML9aM8mJS+wQ==", "engines": { "node": ">=14.0.0" } @@ -2819,12 +2819,12 @@ } }, "node_modules/@types/node": { - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "version": "20.8.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", + "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", "dev": true, "dependencies": { - "undici-types": "~5.25.1" + "undici-types": "~5.26.4" } }, "node_modules/@types/parse-json": { @@ -2838,9 +2838,9 @@ "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==" }, "node_modules/@types/react": { - "version": "18.2.29", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.29.tgz", - "integrity": "sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==", + "version": "18.2.35", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.35.tgz", + "integrity": "sha512-LG3xpFZ++rTndV+/XFyX5vUP7NI9yxyk+MQvBDq+CVs8I9DLSc3Ymwb1Vmw5YDoeNeHN4PDZa3HylMKJYT9PNQ==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2880,16 +2880,22 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==" }, + "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 + }, "node_modules/@vitejs/plugin-react": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", - "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.1.tgz", + "integrity": "sha512-Jie2HERK+uh27e+ORXXwEP5h0Y2lS9T2PRGbfebiHGlwzDO0dEnd2aNtOR/qjBlPb1YgxwAONeblL1xqLikLag==", "dev": true, "dependencies": { - "@babel/core": "^7.22.20", + "@babel/core": "^7.23.2", "@babel/plugin-transform-react-jsx-self": "^7.22.5", "@babel/plugin-transform-react-jsx-source": "^7.22.5", - "@types/babel__core": "^7.20.2", + "@types/babel__core": "^7.20.3", "react-refresh": "^0.14.0" }, "engines": { @@ -2900,9 +2906,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3093,15 +3099,15 @@ } }, "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "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 }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynciterator.prototype": { @@ -3135,9 +3141,9 @@ } }, "node_modules/axe-core": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", - "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, "engines": { "node": ">=4" @@ -3181,13 +3187,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", - "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.32.2" + "core-js-compat": "^3.33.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -3293,13 +3299,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3314,9 +3321,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001551", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", - "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", + "version": "1.0.30001561", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", + "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", "dev": true, "funding": [ { @@ -3444,9 +3451,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/core-js-compat": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", - "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz", + "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==", "dev": true, "dependencies": { "browserslist": "^4.22.1" @@ -3601,9 +3608,9 @@ } }, "node_modules/dexie-react-hooks": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/dexie-react-hooks/-/dexie-react-hooks-1.1.6.tgz", - "integrity": "sha512-xSblWtmPwhafWNWMECsW7zMMmBu8goH3QqTxEfwBNoNG1mgsM0oFclippev7ss9HhKICqBwTjgqpscci5Ed4mA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/dexie-react-hooks/-/dexie-react-hooks-1.1.7.tgz", + "integrity": "sha512-Lwv5W0Hk+uOW3kGnsU9GZoR1er1B7WQ5DSdonoNG+focTNeJbHW6vi6nBoX534VKI3/uwHebYzSw1fwY6a7mTw==", "peerDependencies": { "@types/react": ">=16", "dexie": "^3.2 || ^4.0.1-alpha", @@ -3647,9 +3654,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.559", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz", - "integrity": "sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug==", + "version": "1.4.576", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.576.tgz", + "integrity": "sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA==", "dev": true }, "node_modules/emoji-regex": { @@ -3675,26 +3682,26 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -3704,7 +3711,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -3718,7 +3725,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -3750,26 +3757,26 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -3847,18 +3854,19 @@ } }, "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", "@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", @@ -3999,26 +4007,26 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "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.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -4051,27 +4059,27 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { "node": ">=4.0" @@ -4544,7 +4552,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4586,15 +4593,15 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4702,14 +4709,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -4728,12 +4727,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4778,6 +4777,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -4921,13 +4931,13 @@ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -5053,11 +5063,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5633,12 +5643,15 @@ "dev": true }, "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/leven": { @@ -5925,9 +5938,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -5982,9 +5995,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6341,9 +6354,9 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -6469,11 +6482,11 @@ } }, "node_modules/react-router": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.17.0.tgz", - "integrity": "sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.18.0.tgz", + "integrity": "sha512-vk2y7Dsy8wI02eRRaRmOs9g2o+aE72YCx5q9VasT1N9v+lrdB79tIqrjMfByHiY5+6aYkH2rUa5X839nwWGPDg==", "dependencies": { - "@remix-run/router": "1.10.0" + "@remix-run/router": "1.11.0" }, "engines": { "node": ">=14.0.0" @@ -6483,12 +6496,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.17.0.tgz", - "integrity": "sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.18.0.tgz", + "integrity": "sha512-Ubrue4+Ercc/BoDkFQfc6og5zRQ4A8YxSO3Knsne+eRbZ+IepAsK249XBH/XaFuOYOYr3L3r13CXTLvYt5JDjw==", "dependencies": { - "@remix-run/router": "1.10.0", - "react-router": "6.17.0" + "@remix-run/router": "1.11.0", + "react-router": "6.18.0" }, "engines": { "node": ">=14.0.0" @@ -6832,6 +6845,21 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -7168,9 +7196,9 @@ } }, "node_modules/terser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", - "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", + "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -7362,9 +7390,9 @@ } }, "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -7506,9 +7534,9 @@ "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -7771,13 +7799,13 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" From d4af2be7a00ea07260d8aaf51cfdc2a54f58ac51 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Mon, 6 Nov 2023 05:49:36 -0500 Subject: [PATCH 54/57] Thank you @pgwiebes for your sponsorship --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bb8879af..339506dd 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From abe7275f0cfceecb7e3027f02c47f3823291cd50 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Mon, 6 Nov 2023 05:55:04 -0500 Subject: [PATCH 55/57] Remove Python version check --- Makefile | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 10624ed5..88c22033 100644 --- a/Makefile +++ b/Makefile @@ -111,18 +111,7 @@ build-deps-ubuntu: docs: docs-deps docs-build docs-build: .PHONY - @if ! /bin/echo -e "import sys\nif sys.version_info < (3,8):\n exit(1)" | python3; then \ - if which python3.8; then \ - echo "python3.8 $(shell which mkdocs) build"; \ - python3.8 $(shell which mkdocs) build; \ - else \ - echo "ERROR: Python version too low. mkdocs-material needs >= 3.8"; \ - exit 1; \ - fi; \ - else \ - echo "mkdocs build"; \ - mkdocs build; \ - fi + mkdocs build docs-deps: .PHONY pip3 install -r requirements.txt From 668c472ee6310d635e3dc6f1c39d40325793d3fe Mon Sep 17 00:00:00 2001 From: astra Date: Sun, 12 Nov 2023 17:35:19 +0000 Subject: [PATCH 56/57] Append /v2 to module --- .goreleaser.yml | 2 +- README.md | 2 +- client/client.go | 4 ++-- client/client_test.go | 6 +++--- client/config_test.go | 2 +- client/options.go | 2 +- cmd/access.go | 4 ++-- cmd/access_test.go | 4 ++-- cmd/app.go | 2 +- cmd/app_test.go | 4 ++-- cmd/config_loader.go | 2 +- cmd/publish.go | 6 +++--- cmd/publish_test.go | 4 ++-- cmd/serve.go | 8 ++++---- cmd/serve_test.go | 6 +++--- cmd/subscribe.go | 6 +++--- cmd/tier.go | 4 ++-- cmd/tier_test.go | 4 ++-- cmd/token.go | 4 ++-- cmd/token_test.go | 4 ++-- cmd/user.go | 4 ++-- cmd/user_test.go | 6 +++--- cmd/webpush_test.go | 2 +- go.mod | 2 +- log/event.go | 2 +- main.go | 2 +- server/actions.go | 2 +- server/config.go | 2 +- server/config_test.go | 2 +- server/errors.go | 2 +- server/file_cache.go | 4 ++-- server/file_cache_test.go | 2 +- server/log.go | 4 ++-- server/message_cache.go | 4 ++-- server/server.go | 6 +++--- server/server_account.go | 6 +++--- server/server_account_test.go | 6 +++--- server/server_admin.go | 2 +- server/server_admin_test.go | 4 ++-- server/server_firebase.go | 4 ++-- server/server_firebase_test.go | 2 +- server/server_manager.go | 4 ++-- server/server_matrix.go | 2 +- server/server_middleware.go | 2 +- server/server_payments.go | 6 +++--- server/server_payments_test.go | 4 ++-- server/server_test.go | 6 +++--- server/server_twilio.go | 6 +++--- server/server_twilio_test.go | 4 ++-- server/server_webpush.go | 4 ++-- server/server_webpush_test.go | 4 ++-- server/smtp_sender.go | 4 ++-- server/topic.go | 4 ++-- server/types.go | 6 +++--- server/util.go | 2 +- server/visitor.go | 6 +++--- server/webpush_store.go | 2 +- test/server.go | 2 +- user/manager.go | 4 ++-- user/manager_test.go | 2 +- user/types.go | 2 +- util/batching_queue_test.go | 2 +- web/index.html | 4 ++-- 63 files changed, 116 insertions(+), 116 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 062cce1f..3c3aa490 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -71,7 +71,7 @@ builds: nfpms: - package_name: ntfy - homepage: https://heckel.io/ntfy + homepage: https://git.zio.sh/astra/ntfy/v2 maintainer: Philipp C. Heckel description: Simple pub-sub notification service license: Apache 2.0 diff --git a/README.md b/README.md index 339506dd..b9e0e51d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # ntfy.sh | Send push notifications to your phone or desktop via PUT/POST [![Release](https://img.shields.io/github/release/binwiederhier/ntfy.svg?color=success&style=flat-square)](https://github.com/binwiederhier/ntfy/releases/latest) -[![Go Reference](https://pkg.go.dev/badge/heckel.io/ntfy.svg)](https://pkg.go.dev/heckel.io/ntfy) +[![Go Reference](https://pkg.go.dev/badge/git.zio.sh/astra/ntfy/v2.svg)](https://pkg.go.dev/git.zio.sh/astra/ntfy/v2) [![Tests](https://github.com/binwiederhier/ntfy/workflows/test/badge.svg)](https://github.com/binwiederhier/ntfy/actions) [![Go Report Card](https://goreportcard.com/badge/github.com/binwiederhier/ntfy)](https://goreportcard.com/report/github.com/binwiederhier/ntfy) [![codecov](https://codecov.io/gh/binwiederhier/ntfy/branch/main/graph/badge.svg?token=A597KQ463G)](https://codecov.io/gh/binwiederhier/ntfy) diff --git a/client/client.go b/client/client.go index 93cf7da5..191df260 100644 --- a/client/client.go +++ b/client/client.go @@ -7,8 +7,8 @@ import ( "encoding/json" "errors" "fmt" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "io" "net/http" "regexp" diff --git a/client/client_test.go b/client/client_test.go index f0b15a3f..7ab39db6 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -2,10 +2,10 @@ package client_test import ( "fmt" + "git.zio.sh/astra/ntfy/v2/client" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/test" "github.com/stretchr/testify/require" - "heckel.io/ntfy/client" - "heckel.io/ntfy/log" - "heckel.io/ntfy/test" "os" "testing" "time" diff --git a/client/config_test.go b/client/config_test.go index c85d3d49..f4c86bfb 100644 --- a/client/config_test.go +++ b/client/config_test.go @@ -1,8 +1,8 @@ package client_test import ( + "git.zio.sh/astra/ntfy/v2/client" "github.com/stretchr/testify/require" - "heckel.io/ntfy/client" "os" "path/filepath" "testing" diff --git a/client/options.go b/client/options.go index 630f1554..1bf48faf 100644 --- a/client/options.go +++ b/client/options.go @@ -2,7 +2,7 @@ package client import ( "fmt" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" "net/http" "strings" "time" diff --git a/cmd/access.go b/cmd/access.go index 87f01d11..0dc4719e 100644 --- a/cmd/access.go +++ b/cmd/access.go @@ -5,9 +5,9 @@ package cmd import ( "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" ) func init() { diff --git a/cmd/access_test.go b/cmd/access_test.go index 359beb92..d872021a 100644 --- a/cmd/access_test.go +++ b/cmd/access_test.go @@ -2,10 +2,10 @@ package cmd import ( "fmt" + "git.zio.sh/astra/ntfy/v2/server" + "git.zio.sh/astra/ntfy/v2/test" "github.com/stretchr/testify/require" "github.com/urfave/cli/v2" - "heckel.io/ntfy/server" - "heckel.io/ntfy/test" "testing" ) diff --git a/cmd/app.go b/cmd/app.go index edef5b47..27e876b6 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -3,9 +3,9 @@ package cmd import ( "fmt" + "git.zio.sh/astra/ntfy/v2/log" "github.com/urfave/cli/v2" "github.com/urfave/cli/v2/altsrc" - "heckel.io/ntfy/log" "os" "regexp" ) diff --git a/cmd/app_test.go b/cmd/app_test.go index ec27a67d..c5232050 100644 --- a/cmd/app_test.go +++ b/cmd/app_test.go @@ -3,9 +3,9 @@ package cmd import ( "bytes" "encoding/json" + "git.zio.sh/astra/ntfy/v2/client" + "git.zio.sh/astra/ntfy/v2/log" "github.com/urfave/cli/v2" - "heckel.io/ntfy/client" - "heckel.io/ntfy/log" "os" "strings" "testing" diff --git a/cmd/config_loader.go b/cmd/config_loader.go index 9f0a5769..eab742e2 100644 --- a/cmd/config_loader.go +++ b/cmd/config_loader.go @@ -2,10 +2,10 @@ package cmd import ( "fmt" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" "github.com/urfave/cli/v2/altsrc" "gopkg.in/yaml.v2" - "heckel.io/ntfy/util" "os" ) diff --git a/cmd/publish.go b/cmd/publish.go index 5ffe3adf..050184ca 100644 --- a/cmd/publish.go +++ b/cmd/publish.go @@ -3,10 +3,10 @@ package cmd import ( "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/client" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" - "heckel.io/ntfy/client" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" "io" "os" "os/exec" diff --git a/cmd/publish_test.go b/cmd/publish_test.go index a254f47d..fb4bbc70 100644 --- a/cmd/publish_test.go +++ b/cmd/publish_test.go @@ -2,9 +2,9 @@ package cmd import ( "fmt" + "git.zio.sh/astra/ntfy/v2/test" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/test" - "heckel.io/ntfy/util" "net/http" "net/http/httptest" "os" diff --git a/cmd/serve.go b/cmd/serve.go index 87b83dda..1177af0c 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -5,8 +5,8 @@ package cmd import ( "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/user" "github.com/stripe/stripe-go/v74" - "heckel.io/ntfy/user" "io/fs" "math" "net" @@ -17,12 +17,12 @@ import ( "syscall" "time" - "heckel.io/ntfy/log" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/server" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" "github.com/urfave/cli/v2/altsrc" - "heckel.io/ntfy/server" - "heckel.io/ntfy/util" ) func init() { diff --git a/cmd/serve_test.go b/cmd/serve_test.go index 774166c3..2fef0643 100644 --- a/cmd/serve_test.go +++ b/cmd/serve_test.go @@ -9,12 +9,12 @@ import ( "testing" "time" + "git.zio.sh/astra/ntfy/v2/client" + "git.zio.sh/astra/ntfy/v2/test" + "git.zio.sh/astra/ntfy/v2/util" "github.com/gorilla/websocket" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "heckel.io/ntfy/client" - "heckel.io/ntfy/test" - "heckel.io/ntfy/util" ) func init() { diff --git a/cmd/subscribe.go b/cmd/subscribe.go index 77a1b5f1..c9ed75e9 100644 --- a/cmd/subscribe.go +++ b/cmd/subscribe.go @@ -3,10 +3,10 @@ package cmd import ( "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/client" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" - "heckel.io/ntfy/client" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" "os" "os/exec" "os/user" diff --git a/cmd/tier.go b/cmd/tier.go index f1c8ddcb..76e273a1 100644 --- a/cmd/tier.go +++ b/cmd/tier.go @@ -5,9 +5,9 @@ package cmd import ( "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" ) func init() { diff --git a/cmd/tier_test.go b/cmd/tier_test.go index 1774aa27..b896d15f 100644 --- a/cmd/tier_test.go +++ b/cmd/tier_test.go @@ -1,10 +1,10 @@ package cmd import ( + "git.zio.sh/astra/ntfy/v2/server" + "git.zio.sh/astra/ntfy/v2/test" "github.com/stretchr/testify/require" "github.com/urfave/cli/v2" - "heckel.io/ntfy/server" - "heckel.io/ntfy/test" "testing" ) diff --git a/cmd/token.go b/cmd/token.go index ab9f4447..4fe7e541 100644 --- a/cmd/token.go +++ b/cmd/token.go @@ -5,9 +5,9 @@ package cmd import ( "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "net/netip" "time" ) diff --git a/cmd/token_test.go b/cmd/token_test.go index 40d7be7b..b5f0c0b4 100644 --- a/cmd/token_test.go +++ b/cmd/token_test.go @@ -2,10 +2,10 @@ package cmd import ( "fmt" + "git.zio.sh/astra/ntfy/v2/server" + "git.zio.sh/astra/ntfy/v2/test" "github.com/stretchr/testify/require" "github.com/urfave/cli/v2" - "heckel.io/ntfy/server" - "heckel.io/ntfy/test" "regexp" "testing" ) diff --git a/cmd/user.go b/cmd/user.go index a96c7089..21fe21af 100644 --- a/cmd/user.go +++ b/cmd/user.go @@ -6,13 +6,13 @@ import ( "crypto/subtle" "errors" "fmt" - "heckel.io/ntfy/user" + "git.zio.sh/astra/ntfy/v2/user" "os" "strings" + "git.zio.sh/astra/ntfy/v2/util" "github.com/urfave/cli/v2" "github.com/urfave/cli/v2/altsrc" - "heckel.io/ntfy/util" ) const ( diff --git a/cmd/user_test.go b/cmd/user_test.go index 1149285f..361a4288 100644 --- a/cmd/user_test.go +++ b/cmd/user_test.go @@ -1,11 +1,11 @@ package cmd import ( + "git.zio.sh/astra/ntfy/v2/server" + "git.zio.sh/astra/ntfy/v2/test" + "git.zio.sh/astra/ntfy/v2/user" "github.com/stretchr/testify/require" "github.com/urfave/cli/v2" - "heckel.io/ntfy/server" - "heckel.io/ntfy/test" - "heckel.io/ntfy/user" "os" "path/filepath" "testing" diff --git a/cmd/webpush_test.go b/cmd/webpush_test.go index 1b364701..e2565214 100644 --- a/cmd/webpush_test.go +++ b/cmd/webpush_test.go @@ -3,9 +3,9 @@ package cmd import ( "testing" + "git.zio.sh/astra/ntfy/v2/server" "github.com/stretchr/testify/require" "github.com/urfave/cli/v2" - "heckel.io/ntfy/server" ) func TestCLI_WebPush_GenerateKeys(t *testing.T) { diff --git a/go.mod b/go.mod index 95365372..a7395d5b 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module heckel.io/ntfy +module git.zio.sh/astra/ntfy/v2 go 1.18 diff --git a/log/event.go b/log/event.go index b4b8f59f..c4521674 100644 --- a/log/event.go +++ b/log/event.go @@ -3,7 +3,7 @@ package log import ( "encoding/json" "fmt" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" "log" "os" "sort" diff --git a/main.go b/main.go index 5b1428d1..6aea6fa2 100644 --- a/main.go +++ b/main.go @@ -2,8 +2,8 @@ package main import ( "fmt" + "git.zio.sh/astra/ntfy/v2/cmd" "github.com/urfave/cli/v2" - "heckel.io/ntfy/cmd" "os" "runtime" ) diff --git a/server/actions.go b/server/actions.go index 80065873..ce61395c 100644 --- a/server/actions.go +++ b/server/actions.go @@ -4,7 +4,7 @@ import ( "encoding/json" "errors" "fmt" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" "regexp" "strings" "unicode/utf8" diff --git a/server/config.go b/server/config.go index 9815aa88..c7b09082 100644 --- a/server/config.go +++ b/server/config.go @@ -5,7 +5,7 @@ import ( "net/netip" "time" - "heckel.io/ntfy/user" + "git.zio.sh/astra/ntfy/v2/user" ) // Defines default config settings (excluding limits, see below) diff --git a/server/config_test.go b/server/config_test.go index 14f028f1..23fbadf1 100644 --- a/server/config_test.go +++ b/server/config_test.go @@ -1,8 +1,8 @@ package server_test import ( + "git.zio.sh/astra/ntfy/v2/server" "github.com/stretchr/testify/assert" - "heckel.io/ntfy/server" "testing" ) diff --git a/server/errors.go b/server/errors.go index 27ba3df0..f3d0d6b1 100644 --- a/server/errors.go +++ b/server/errors.go @@ -3,7 +3,7 @@ package server import ( "encoding/json" "fmt" - "heckel.io/ntfy/log" + "git.zio.sh/astra/ntfy/v2/log" "net/http" ) diff --git a/server/file_cache.go b/server/file_cache.go index c097aefb..499cca16 100644 --- a/server/file_cache.go +++ b/server/file_cache.go @@ -3,8 +3,8 @@ package server import ( "errors" "fmt" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "io" "os" "path/filepath" diff --git a/server/file_cache_test.go b/server/file_cache_test.go index 8f267a73..cdb534be 100644 --- a/server/file_cache_test.go +++ b/server/file_cache_test.go @@ -3,8 +3,8 @@ package server import ( "bytes" "fmt" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/util" "os" "strings" "testing" diff --git a/server/log.go b/server/log.go index 978d0593..23fdf5d5 100644 --- a/server/log.go +++ b/server/log.go @@ -2,10 +2,10 @@ package server import ( "fmt" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "github.com/emersion/go-smtp" "github.com/gorilla/websocket" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" "net/http" "strings" "unicode/utf8" diff --git a/server/message_cache.go b/server/message_cache.go index 8a613ff1..fafd6d9b 100644 --- a/server/message_cache.go +++ b/server/message_cache.go @@ -9,9 +9,9 @@ import ( "strings" "time" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" _ "github.com/mattn/go-sqlite3" // SQLite driver - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" ) var ( diff --git a/server/server.go b/server/server.go index 0ab36524..8610f443 100644 --- a/server/server.go +++ b/server/server.go @@ -26,13 +26,13 @@ import ( "time" "unicode/utf8" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/emersion/go-smtp" "github.com/gorilla/websocket" "github.com/prometheus/client_golang/prometheus/promhttp" "golang.org/x/sync/errgroup" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" ) // Server is the main server, providing the UI and API for ntfy diff --git a/server/server_account.go b/server/server_account.go index f26cc2ff..32b6153f 100644 --- a/server/server_account.go +++ b/server/server_account.go @@ -2,9 +2,9 @@ package server import ( "encoding/json" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "net/http" "net/netip" "strings" diff --git a/server/server_account_test.go b/server/server_account_test.go index 119efb16..fd51ac27 100644 --- a/server/server_account_test.go +++ b/server/server_account_test.go @@ -2,10 +2,10 @@ package server import ( "fmt" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "io" "net/netip" "path/filepath" diff --git a/server/server_admin.go b/server/server_admin.go index 9380a5ff..5bfd1547 100644 --- a/server/server_admin.go +++ b/server/server_admin.go @@ -1,7 +1,7 @@ package server import ( - "heckel.io/ntfy/user" + "git.zio.sh/astra/ntfy/v2/user" "net/http" ) diff --git a/server/server_admin_test.go b/server/server_admin_test.go index 1513ea40..a2a6f432 100644 --- a/server/server_admin_test.go +++ b/server/server_admin_test.go @@ -1,9 +1,9 @@ package server import ( + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "sync/atomic" "testing" "time" diff --git a/server/server_firebase.go b/server/server_firebase.go index b8158d2f..eb1db971 100644 --- a/server/server_firebase.go +++ b/server/server_firebase.go @@ -7,9 +7,9 @@ import ( firebase "firebase.google.com/go/v4" "firebase.google.com/go/v4/messaging" "fmt" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "google.golang.org/api/option" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "strings" ) diff --git a/server/server_firebase_test.go b/server/server_firebase_test.go index fb27ea05..ca1147e3 100644 --- a/server/server_firebase_test.go +++ b/server/server_firebase_test.go @@ -4,7 +4,7 @@ import ( "encoding/json" "errors" "fmt" - "heckel.io/ntfy/user" + "git.zio.sh/astra/ntfy/v2/user" "net/netip" "strings" "sync" diff --git a/server/server_manager.go b/server/server_manager.go index 66d449de..7a562a94 100644 --- a/server/server_manager.go +++ b/server/server_manager.go @@ -1,8 +1,8 @@ package server import ( - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "strings" ) diff --git a/server/server_matrix.go b/server/server_matrix.go index c25a1b59..bf43a13f 100644 --- a/server/server_matrix.go +++ b/server/server_matrix.go @@ -4,7 +4,7 @@ import ( "bytes" "encoding/json" "fmt" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" "io" "net/http" "strings" diff --git a/server/server_middleware.go b/server/server_middleware.go index b1428154..5d842b98 100644 --- a/server/server_middleware.go +++ b/server/server_middleware.go @@ -3,7 +3,7 @@ package server import ( "net/http" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" ) type contextKey int diff --git a/server/server_payments.go b/server/server_payments.go index 1e98d059..a4b51a11 100644 --- a/server/server_payments.go +++ b/server/server_payments.go @@ -4,6 +4,9 @@ import ( "bytes" "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stripe/stripe-go/v74" portalsession "github.com/stripe/stripe-go/v74/billingportal/session" "github.com/stripe/stripe-go/v74/checkout/session" @@ -11,9 +14,6 @@ import ( "github.com/stripe/stripe-go/v74/price" "github.com/stripe/stripe-go/v74/subscription" "github.com/stripe/stripe-go/v74/webhook" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "io" "net/http" "net/netip" diff --git a/server/server_payments_test.go b/server/server_payments_test.go index ebd559e7..29a1b13d 100644 --- a/server/server_payments_test.go +++ b/server/server_payments_test.go @@ -2,12 +2,12 @@ package server import ( "encoding/json" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "github.com/stripe/stripe-go/v74" "golang.org/x/time/rate" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "io" "net/netip" "path/filepath" diff --git a/server/server_test.go b/server/server_test.go index d60c775a..85fdc211 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -6,8 +6,8 @@ import ( "encoding/base64" "encoding/json" "fmt" + "git.zio.sh/astra/ntfy/v2/user" "golang.org/x/crypto/bcrypt" - "heckel.io/ntfy/user" "io" "math/rand" "net/http" @@ -22,10 +22,10 @@ import ( "testing" "time" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "github.com/SherClockHolmes/webpush-go" "github.com/stretchr/testify/require" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" ) func TestMain(m *testing.M) { diff --git a/server/server_twilio.go b/server/server_twilio.go index 093abe63..231436a3 100644 --- a/server/server_twilio.go +++ b/server/server_twilio.go @@ -4,9 +4,9 @@ import ( "bytes" "encoding/xml" "fmt" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "io" "net/http" "net/url" diff --git a/server/server_twilio_test.go b/server/server_twilio_test.go index af694a77..d6877527 100644 --- a/server/server_twilio_test.go +++ b/server/server_twilio_test.go @@ -1,9 +1,9 @@ package server import ( + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "io" "net/http" "net/http/httptest" diff --git a/server/server_webpush.go b/server/server_webpush.go index bb0f5408..a0e33af5 100644 --- a/server/server_webpush.go +++ b/server/server_webpush.go @@ -7,9 +7,9 @@ import ( "regexp" "strings" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" "github.com/SherClockHolmes/webpush-go" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" ) const ( diff --git a/server/server_webpush_test.go b/server/server_webpush_test.go index c0db79c6..16e02cc8 100644 --- a/server/server_webpush_test.go +++ b/server/server_webpush_test.go @@ -3,9 +3,9 @@ package server import ( "encoding/json" "fmt" + "git.zio.sh/astra/ntfy/v2/user" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/user" - "heckel.io/ntfy/util" "io" "net/http" "net/http/httptest" diff --git a/server/smtp_sender.go b/server/smtp_sender.go index 9093687e..4c0d263e 100644 --- a/server/smtp_sender.go +++ b/server/smtp_sender.go @@ -11,8 +11,8 @@ import ( "sync" "time" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" ) type mailer interface { diff --git a/server/topic.go b/server/topic.go index 5dfafbe3..3daac9a7 100644 --- a/server/topic.go +++ b/server/topic.go @@ -5,8 +5,8 @@ import ( "sync" "time" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" ) const ( diff --git a/server/types.go b/server/types.go index eeb566fc..5c423216 100644 --- a/server/types.go +++ b/server/types.go @@ -5,10 +5,10 @@ import ( "net/netip" "time" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" ) // List of possible events diff --git a/server/util.go b/server/util.go index 09536765..dea13ed5 100644 --- a/server/util.go +++ b/server/util.go @@ -3,7 +3,7 @@ package server import ( "context" "fmt" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" "io" "mime" "net/http" diff --git a/server/visitor.go b/server/visitor.go index e4c06f66..d1ec1226 100644 --- a/server/visitor.go +++ b/server/visitor.go @@ -2,14 +2,14 @@ package server import ( "fmt" - "heckel.io/ntfy/log" - "heckel.io/ntfy/user" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/user" "net/netip" "sync" "time" + "git.zio.sh/astra/ntfy/v2/util" "golang.org/x/time/rate" - "heckel.io/ntfy/util" ) const ( diff --git a/server/webpush_store.go b/server/webpush_store.go index b2ab0d11..3781f250 100644 --- a/server/webpush_store.go +++ b/server/webpush_store.go @@ -3,7 +3,7 @@ package server import ( "database/sql" "errors" - "heckel.io/ntfy/util" + "git.zio.sh/astra/ntfy/v2/util" "net/netip" "time" diff --git a/test/server.go b/test/server.go index 0b9200a6..cabff94f 100644 --- a/test/server.go +++ b/test/server.go @@ -2,7 +2,7 @@ package test import ( "fmt" - "heckel.io/ntfy/server" + "git.zio.sh/astra/ntfy/v2/server" "math/rand" "net/http" "path/filepath" diff --git a/user/manager.go b/user/manager.go index 324b7684..0ff211cf 100644 --- a/user/manager.go +++ b/user/manager.go @@ -6,11 +6,11 @@ import ( "encoding/json" "errors" "fmt" + "git.zio.sh/astra/ntfy/v2/log" + "git.zio.sh/astra/ntfy/v2/util" "github.com/mattn/go-sqlite3" "github.com/stripe/stripe-go/v74" "golang.org/x/crypto/bcrypt" - "heckel.io/ntfy/log" - "heckel.io/ntfy/util" "net/netip" "strings" "sync" diff --git a/user/manager_test.go b/user/manager_test.go index 468dc36a..bebb0a07 100644 --- a/user/manager_test.go +++ b/user/manager_test.go @@ -3,10 +3,10 @@ package user import ( "database/sql" "fmt" + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" "github.com/stripe/stripe-go/v74" "golang.org/x/crypto/bcrypt" - "heckel.io/ntfy/util" "net/netip" "path/filepath" "strings" diff --git a/user/types.go b/user/types.go index 11895785..140da216 100644 --- a/user/types.go +++ b/user/types.go @@ -2,8 +2,8 @@ package user import ( "errors" + "git.zio.sh/astra/ntfy/v2/log" "github.com/stripe/stripe-go/v74" - "heckel.io/ntfy/log" "net/netip" "regexp" "strings" diff --git a/util/batching_queue_test.go b/util/batching_queue_test.go index b3c41a4c..08d812ed 100644 --- a/util/batching_queue_test.go +++ b/util/batching_queue_test.go @@ -1,8 +1,8 @@ package util_test import ( + "git.zio.sh/astra/ntfy/v2/util" "github.com/stretchr/testify/require" - "heckel.io/ntfy/util" "math/rand" "sync" "testing" diff --git a/web/index.html b/web/index.html index 462bbc1f..191e8c40 100644 --- a/web/index.html +++ b/web/index.html @@ -22,7 +22,7 @@ @@ -30,7 +30,7 @@ From a06577faacb02ab23400179b247e5fd0132ea4cc Mon Sep 17 00:00:00 2001 From: Astra Date: Sun, 12 Nov 2023 18:40:10 +0100 Subject: [PATCH 57/57] Update README.md --- README.md | 196 +----------------------------------------------------- 1 file changed, 1 insertion(+), 195 deletions(-) diff --git a/README.md b/README.md index b9e0e51d..b3d0c55e 100644 --- a/README.md +++ b/README.md @@ -1,203 +1,9 @@ -![ntfy](web/public/static/images/ntfy.png) - # ntfy.sh | Send push notifications to your phone or desktop via PUT/POST -[![Release](https://img.shields.io/github/release/binwiederhier/ntfy.svg?color=success&style=flat-square)](https://github.com/binwiederhier/ntfy/releases/latest) -[![Go Reference](https://pkg.go.dev/badge/git.zio.sh/astra/ntfy/v2.svg)](https://pkg.go.dev/git.zio.sh/astra/ntfy/v2) -[![Tests](https://github.com/binwiederhier/ntfy/workflows/test/badge.svg)](https://github.com/binwiederhier/ntfy/actions) -[![Go Report Card](https://goreportcard.com/badge/github.com/binwiederhier/ntfy)](https://goreportcard.com/report/github.com/binwiederhier/ntfy) -[![codecov](https://codecov.io/gh/binwiederhier/ntfy/branch/main/graph/badge.svg?token=A597KQ463G)](https://codecov.io/gh/binwiederhier/ntfy) -[![Discord](https://img.shields.io/discord/874398661709295626?label=Discord)](https://discord.gg/cT7ECsZj9w) -[![Matrix](https://img.shields.io/matrix/ntfy:matrix.org?label=Matrix)](https://matrix.to/#/#ntfy:matrix.org) -[![Matrix space](https://img.shields.io/matrix/ntfy-space:matrix.org?label=Matrix+space)](https://matrix.to/#/#ntfy-space:matrix.org) -[![Lemmy](https://img.shields.io/badge/Lemmy-discuss-green)](https://discuss.ntfy.sh/c/ntfy) -[![Healthcheck](https://healthchecks.io/badge/68b65976-b3b0-4102-aec9-980921/kcoEgrLY.svg)](https://ntfy.statuspage.io/) -[![Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/binwiederhier/ntfy) **ntfy** (pronounced "*notify*") is a simple HTTP-based [pub-sub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) notification service. With ntfy, you can **send notifications to your phone or desktop via scripts** from any computer, **without having to sign up or pay any fees**. If you'd like to run your own instance of the service, you can easily do so since ntfy is open source. -You can access the free version of ntfy at **[ntfy.sh](https://ntfy.sh)**. There is also an [open-source Android app](https://github.com/binwiederhier/ntfy-android) -available on [Google Play](https://play.google.com/store/apps/details?id=io.heckel.ntfy) or [F-Droid](https://f-droid.org/en/packages/io.heckel.ntfy/), -as well as an [open source iOS app](https://github.com/binwiederhier/ntfy-ios) available on the [App Store](https://apps.apple.com/us/app/ntfy/id1625396347). -

- - - - - -

- -## [ntfy Pro](https://ntfy.sh/app) 💸 🎉 -I now offer paid plans for [ntfy.sh](https://ntfy.sh/) if you don't want to self-host, or you want to support the development of -ntfy (→ [Purchase via web app](https://ntfy.sh/app)). You can **buy a plan for as low as $5/month**. -You can also donate via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), and [Liberapay](https://liberapay.com/ntfy). -I would be very humbled by your sponsorship. ❤️ - -## **[Documentation](https://ntfy.sh/docs/)** - -[Getting started](https://ntfy.sh/docs/) | -[Android/iOS](https://ntfy.sh/docs/subscribe/phone/) | -[API](https://ntfy.sh/docs/publish/) | -[Install / Self-hosting](https://ntfy.sh/docs/install/) | -[Building](https://ntfy.sh/docs/develop/) - -## Chat/forum -There are a few ways to get in touch with me and/or the rest of the community. Feel free to use any of these methods. Whatever -works best for you: - -* [Discord server](https://discord.gg/cT7ECsZj9w) - direct chat with the community -* [Matrix room #ntfy](https://matrix.to/#/#ntfy:matrix.org) (+ [Matrix space](https://matrix.to/#/#ntfy-space:matrix.org)) - same chat, bridged from Discord -* [Lemmy discussion board](https://discuss.ntfy.sh/c/ntfy) - asynchronous forum (_new as of June 2023_) -* [GitHub issues](https://github.com/binwiederhier/ntfy/issues) - questions, features, bugs - -## Announcements/beta testers -For announcements of new releases and cutting-edge beta versions, please subscribe to the [ntfy.sh/announcements](https://ntfy.sh/announcements) -topic. If you'd like to test the iOS app, join [TestFlight](https://testflight.apple.com/join/P1fFnAm9). For Android betas, -join Discord/Matrix (I'll eventually make a testing channel in Google Play). - -## Contributing -I welcome any contributions. Just create a PR or an issue. For larger features/ideas, please reach out -on Discord/Matrix first to see if I'd accept them. To contribute code, check out the [build instructions](https://ntfy.sh/docs/develop/) -for the server and the Android app. Or, if you'd like to help translate 🇩🇪 🇺🇸 🇧🇬, you can start immediately in -[Hosted Weblate](https://hosted.weblate.org/projects/ntfy/). - - -Translation status - - -## Sponsors -I have just very recently started accepting donations via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), -and [Liberapay](https://liberapay.com/ntfy). I would be humbled if you helped me carry the server and developer -account costs. Even small donations are very much appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/), -and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: - - - -## Code of Conduct -We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. - -**We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.** - -_Please be sure to read the complete [Code of Conduct](CODE_OF_CONDUCT.md)._ - -## License -Made with ❤️ by [Philipp C. Heckel](https://heckel.io). -The project is dual licensed under the [Apache License 2.0](LICENSE) and the [GPLv2 License](LICENSE.GPLv2). - -Third-party libraries and resources: -* [github.com/urfave/cli](https://github.com/urfave/cli) (MIT) is used to drive the CLI -* [Mixkit sounds](https://mixkit.co/free-sound-effects/notification/) (Mixkit Free License) are used as notification sounds -* [Sounds from notificationsounds.com](https://notificationsounds.com) (Creative Commons Attribution) are used as notification sounds -* [Roboto Font](https://fonts.google.com/specimen/Roboto) (Apache 2.0) is used as a font in everything web -* [React](https://reactjs.org/) (MIT) is used for the web app -* [Material UI components](https://mui.com/) (MIT) are used in the web app -* [MUI dashboard template](https://github.com/mui/material-ui/tree/master/docs/data/material/getting-started/templates/dashboard) (MIT) was used as a basis for the web app -* [Dexie.js](https://github.com/dexie/Dexie.js) (Apache 2.0) is used for web app persistence in IndexedDB -* [GoReleaser](https://goreleaser.com/) (MIT) is used to create releases -* [go-smtp](https://github.com/emersion/go-smtp) (MIT) is used to receive e-mails -* [stretchr/testify](https://github.com/stretchr/testify) (MIT) is used for unit and integration tests -* [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) (MIT) is used to provide the persistent message cache -* [Firebase Admin SDK](https://github.com/firebase/firebase-admin-go) (Apache 2.0) is used to send FCM messages -* [github/gemoji](https://github.com/github/gemoji) (MIT) is used for emoji support (specifically the [emoji.json](https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json) file) -* [Lightbox with vanilla JS](https://yossiabramov.com/blog/vanilla-js-lightbox) as a lightbox on the landing page -* [HTTP middleware for gzip compression](https://gist.github.com/CJEnright/bc2d8b8dc0c1389a9feeddb110f822d7) (MIT) is used for serving static files -* [Regex for auto-linking](https://github.com/bryanwoods/autolink-js) (MIT) is used to highlight links (the library is not used) -* [Statically linking go-sqlite3](https://www.arp242.net/static-go.html) -* [Linked tabs in mkdocs](https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/#linked-tabs) -* [webpush-go](https://github.com/SherClockHolmes/webpush-go) (MIT) is used to send web push notifications +### This is a fork of [github.com/binwiederhier/ntfy](https://github.com/binwiederhier/ntfy) \ No newline at end of file