Merge pull request #379 from plebbit/development

Development
This commit is contained in:
Tom (plebeius.eth)
2024-06-02 21:43:44 +02:00
committed by GitHub
61 changed files with 918 additions and 312 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
"dependencies": {
"@capacitor/app": "1.1.1",
"@floating-ui/react": "0.26.1",
"@plebbit/plebbit-react-hooks": "https://github.com/plebbit/plebbit-react-hooks.git#ebad94cad75020c6eef2516fffc87f5a7b7181ff",
"@plebbit/plebbit-react-hooks": "https://github.com/plebbit/plebbit-react-hooks.git#f0ae8cd285f282d82eafd290e3b73525faa8ec6b",
"@testing-library/jest-dom": "5.14.1",
"@testing-library/react": "13.0.0",
"@testing-library/user-event": "13.2.1",
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "البحث عن صورة على جوجل",
"search_image_on_yandex": "البحث عن صورة على Yandex",
"search_image_on_saucenao": "البحث عن صورة على SauceNAO",
"view_on_client": "عرض على {{client}}"
"view_on_client": "عرض على {{client}}",
"expand_all_settings": "توسيع جميع الإعدادات",
"collapse_all_settings": "طي جميع الإعدادات",
"refresh": "تحديث",
"no_board_selected": "لم يتم تحديد أية منتديات",
"none": "بلا",
"not_subscribed_to_any_board": "لم تشترك في أي منتديات بعد.",
"board_mods": "مشرفو المنتدى",
"this_post_was_removed": "تمت إزالة هذا المنشور",
"user_deleted_this_post": "حذف المستخدم هذا المنشور.",
"reason": "السبب"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "গুগলে চিত্র অনুসন্ধান করুন",
"search_image_on_yandex": "Yandexে চিত্র অনুসন্ধান করুন",
"search_image_on_saucenao": "SauceNAO এ চিত্র অনুসন্ধান করুন",
"view_on_client": "{{client}} উপর দেখুন"
"view_on_client": "{{client}} উপর দেখুন",
"expand_all_settings": "সমস্ত সেটিংস প্রসারিত করুন",
"collapse_all_settings": "সমস্ত সেটিংস সঙ্কুচিত করুন",
"refresh": "পুনরায় লোড করুন",
"no_board_selected": "কোনো ফোরাম নির্বাচিত হয়নি",
"none": "নাই",
"not_subscribed_to_any_board": "আপনি এখনো কোনো ফোরামে সদস্য হননি।",
"board_mods": "বোর্ড মডস",
"this_post_was_removed": "এই পোস্টটি সরানো হয়েছে",
"user_deleted_this_post": "ব্যবহারকারী এই পোস্টটি মুছে ফেলেছে।",
"reason": "কারণ"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "hledat obrázek na Googlu",
"search_image_on_yandex": "hledat obrázek na Yandexu",
"search_image_on_saucenao": "hledat obrázek na SauceNAO",
"view_on_client": "Zobrazit na {{client}}"
"view_on_client": "Zobrazit na {{client}}",
"expand_all_settings": "Rozbalit všechna nastavení",
"collapse_all_settings": "Sbalit všechna nastavení",
"refresh": "Obnovit",
"no_board_selected": "žádné nástěnky nevybrány",
"none": "žádný",
"not_subscribed_to_any_board": "Zatím jste se nepřihlásili k žádným nástěnkám.",
"board_mods": "Nástěnka Mods",
"this_post_was_removed": "tento příspěvek byl odstraněn",
"user_deleted_this_post": "Uživatel smazal tento příspěvek.",
"reason": "důvod"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "søg billede på Google",
"search_image_on_yandex": "søg billede på Yandex",
"search_image_on_saucenao": "søg billede på SauceNAO",
"view_on_client": "Se på {{client}}"
"view_on_client": "Se på {{client}}",
"expand_all_settings": "Udvid alle indstillinger",
"collapse_all_settings": "Sammenklap alle indstillinger",
"refresh": "Opdater",
"no_board_selected": "ingen opslagstavler valgt",
"none": "ingen",
"not_subscribed_to_any_board": "Du er endnu ikke tilmeldt nogen opslagstavler.",
"board_mods": "Board Mods",
"this_post_was_removed": "dette indlæg blev fjernet",
"user_deleted_this_post": "Brugeren slettede dette indlæg.",
"reason": "grund"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Bild auf Google suchen",
"search_image_on_yandex": "Bild auf Yandex suchen",
"search_image_on_saucenao": "Bild auf SauceNAO suchen",
"view_on_client": "Anzeigen auf {{client}}"
"view_on_client": "Anzeigen auf {{client}}",
"expand_all_settings": "Alle Einstellungen erweitern",
"collapse_all_settings": "Alle Einstellungen reduzieren",
"refresh": "Aktualisieren",
"no_board_selected": "keine Foren ausgewählt",
"none": "keiner",
"not_subscribed_to_any_board": "Du hast dich noch nicht für Foren angemeldet.",
"board_mods": "Board-Moderatoren",
"this_post_was_removed": "Dieser Beitrag wurde entfernt",
"user_deleted_this_post": "Benutzer hat diesen Beitrag gelöscht.",
"reason": "Grund"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "αναζήτηση εικόνας στο Google",
"search_image_on_yandex": "αναζήτηση εικόνας στο Yandex",
"search_image_on_saucenao": "αναζήτηση εικόνας στο SauceNAO",
"view_on_client": "Προβολή στο {{client}}"
"view_on_client": "Προβολή στο {{client}}",
"expand_all_settings": "Ανάπτυξη όλων των ρυθμίσεων",
"collapse_all_settings": "Σύμπτυξη όλων των ρυθμίσεων",
"refresh": "Ανανέωση",
"no_board_selected": "δεν έχουν επιλεγεί διαδικτυακές πινακίδες",
"none": "κανένας",
"not_subscribed_to_any_board": "Δεν έχετε εγγραφεί ακόμη σε καμία διαδικτυακή πινακίδα.",
"board_mods": "Mods του φόρουμ",
"this_post_was_removed": "αυτή η ανάρτηση αφαιρέθηκε",
"user_deleted_this_post": "Ο χρήστης διέγραψε αυτή την ανάρτηση.",
"reason": "λόγος"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Search image on Google",
"search_image_on_yandex": "Search image on Yandex",
"search_image_on_saucenao": "Search image on SauceNAO",
"view_on_client": "View on {{client}}"
"view_on_client": "View on {{client}}",
"expand_all_settings": "Expand All Settings",
"collapse_all_settings": "Collapse All Settings",
"refresh": "Refresh",
"no_board_selected": "no boards selected",
"none": "none",
"not_subscribed_to_any_board": "You have not subscribed to any boards yet.",
"board_mods": "Board Mods",
"this_post_was_removed": "this post was removed",
"user_deleted_this_post": "User deleted this post.",
"reason": "reason"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Buscar imagen en Google",
"search_image_on_yandex": "Buscar imagen en Yandex",
"search_image_on_saucenao": "Buscar imagen en SauceNAO",
"view_on_client": "Ver en {{client}}"
"view_on_client": "Ver en {{client}}",
"expand_all_settings": "Expandir todas las configuraciones",
"collapse_all_settings": "Contraer todas las configuraciones",
"refresh": "Actualizar",
"no_board_selected": "ningún foro seleccionado",
"none": "ninguno",
"not_subscribed_to_any_board": "Todavía no te has suscrito a ningún foro.",
"board_mods": "Mods del foro",
"this_post_was_removed": "este mensaje fue eliminado",
"user_deleted_this_post": "El usuario eliminó este mensaje.",
"reason": "razón"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "جستجوی تصویر در گوگل",
"search_image_on_yandex": "جستجوی تصویر در Yandex",
"search_image_on_saucenao": "جستجوی تصویر در SauceNAO",
"view_on_client": "مشاهده در {{client}}"
"view_on_client": "مشاهده در {{client}}",
"expand_all_settings": "گسترش همه تنظیمات",
"collapse_all_settings": "تايید همه تنظیمات",
"refresh": "تازه‌سازی",
"no_board_selected": "هیچ تالاری انتخاب نشده است",
"none": "هیچ‌کدام",
"not_subscribed_to_any_board": "هنوز به هیچ تالاری مشترک نشده‌اید.",
"board_mods": "مدیران تالار",
"this_post_was_removed": "این پست حذف شد",
"user_deleted_this_post": "کاربر این پست را حذف کرده است.",
"reason": "دلیل"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "etsi kuva Googlesta",
"search_image_on_yandex": "etsi kuva Yandexistä",
"search_image_on_saucenao": "etsi kuva SauceNAO: sta",
"view_on_client": "Näytä {{client}}: ssä"
"view_on_client": "Näytä {{client}}: ssä",
"expand_all_settings": "Laajenna kaikki asetukset",
"collapse_all_settings": "Sulje kaikki asetukset",
"refresh": "Päivitä",
"no_board_selected": "ei foorumeja valittu",
"none": "ei mikään",
"not_subscribed_to_any_board": "Et ole vielä tilannut mitään foorumeita.",
"board_mods": "Hallituksen Mods",
"this_post_was_removed": "tämä viesti on poistettu",
"user_deleted_this_post": "Käyttäjä poisti tämän viestin.",
"reason": "syy"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "maghanap ng larawan sa Google",
"search_image_on_yandex": "maghanap ng larawan sa Yandex",
"search_image_on_saucenao": "maghanap ng larawan sa SauceNAO",
"view_on_client": "Tingnan sa {{client}}"
"view_on_client": "Tingnan sa {{client}}",
"expand_all_settings": "I-expand ang lahat ng mga setting",
"collapse_all_settings": "I-collapse ang lahat ng mga setting",
"refresh": "I-refresh",
"no_board_selected": "walang mga board na napiling",
"none": "wala",
"not_subscribed_to_any_board": "Hindi ka pa naka-subscribe sa anumang mga board.",
"board_mods": "Board Mods",
"this_post_was_removed": "tinanggal ang post na ito",
"user_deleted_this_post": "Tinanggal ng gumagamit ang post na ito.",
"reason": "dahilan"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Rechercher une image sur Google",
"search_image_on_yandex": "Rechercher une image sur Yandex",
"search_image_on_saucenao": "Rechercher une image sur SauceNAO",
"view_on_client": "Voir sur {{client}}"
"view_on_client": "Voir sur {{client}}",
"expand_all_settings": "Développer toutes les configurations",
"collapse_all_settings": "Réduire toutes les configurations",
"refresh": "Actualiser",
"no_board_selected": "aucun forum sélectionné",
"none": "aucun",
"not_subscribed_to_any_board": "Vous n'avez encore souscrit à aucun forum.",
"board_mods": "Mods de la table",
"this_post_was_removed": "ce post a été supprimé",
"user_deleted_this_post": "L'utilisateur a supprimé ce post.",
"reason": "raison"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "חפש תמונה ב-Google",
"search_image_on_yandex": "חפש תמונה ב-Yandex",
"search_image_on_saucenao": "חפש תמונה ב- SauceNAO",
"view_on_client": "הצג ב {{client}}"
"view_on_client": "הצג ב {{client}}",
"expand_all_settings": "הרחב את כל ההגדרות",
"collapse_all_settings": "קפל את כל ההגדרות",
"refresh": "רענן",
"no_board_selected": "לא נבחרו שום פורומים",
"none": "אף אחד",
"not_subscribed_to_any_board": "עדיין לא הרשמת לאף פורום.",
"board_mods": "מנהלי הפורום",
"this_post_was_removed": "הודעה זו הוסרה",
"user_deleted_this_post": "המשתמש מחק את הפוסט הזה.",
"reason": "סיבה"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "गूगल पर छवि खोजें",
"search_image_on_yandex": "Yandex पर छवि खोजें",
"search_image_on_saucenao": "SauceNAO पर छवि खोजें",
"view_on_client": "{{client}} पर देखें"
"view_on_client": "{{client}} पर देखें",
"expand_all_settings": "सभी सेटिंग्स का विस्तार करें",
"collapse_all_settings": "सभी सेटिंग्स को संक्षेपित करें",
"refresh": "ताज़ा करें",
"no_board_selected": "कोई मंच चयनित नहीं हुआ",
"none": "कोई नहीं",
"not_subscribed_to_any_board": "आपने अभी तक किसी भी मंच में सदस्यता नहीं ली है।",
"board_mods": "बोर्ड मॉड्स",
"this_post_was_removed": "यह पोस्ट हटा दी गई है",
"user_deleted_this_post": "उपयोगकर्ता ने इस पोस्ट को हटा दिया।",
"reason": "कारण"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "keresés kép a Google-ben",
"search_image_on_yandex": "keresés kép a Yandex-ben",
"search_image_on_saucenao": "keresés kép a SauceNAO-n",
"view_on_client": "Megtekintés itt: {{client}}"
"view_on_client": "Megtekintés itt: {{client}}",
"expand_all_settings": "Az összes beállítás kibontása",
"collapse_all_settings": "Az összes beállítás összevonása",
"refresh": "Frissítés",
"no_board_selected": "nincsenek kiválasztva fórumok",
"none": "egyik sem",
"not_subscribed_to_any_board": "Még nem iratkoztál fel egyetlen fórumra sem.",
"board_mods": "Tábla Mods",
"this_post_was_removed": "ez a bejegyzés eltávolításra került",
"user_deleted_this_post": "A felhasználó törölte ezt a bejegyzést.",
"reason": "indok"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "cari gambar di Google",
"search_image_on_yandex": "cari gambar di Yandex",
"search_image_on_saucenao": "cari gambar di SauceNAO",
"view_on_client": "Lihat di {{client}}"
"view_on_client": "Lihat di {{client}}",
"expand_all_settings": "Perluas Semua Pengaturan",
"collapse_all_settings": "Ciutkan Semua Pengaturan",
"refresh": "Segarkan",
"no_board_selected": "tidak ada papan pesan yang dipilih",
"none": "tak ada",
"not_subscribed_to_any_board": "Anda belum berlangganan ke papan pesan mana pun.",
"board_mods": "Papan Pesan Mods",
"this_post_was_removed": "posting ini telah dihapus",
"user_deleted_this_post": "Pengguna menghapus posting ini.",
"reason": "alasan"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Cerca immagine su Google",
"search_image_on_yandex": "Cerca immagine su Yandex",
"search_image_on_saucenao": "Cerca immagine su SauceNAO",
"view_on_client": "Vedi su {{client}}"
"view_on_client": "Vedi su {{client}}",
"expand_all_settings": "Espandi tutte le impostazioni",
"collapse_all_settings": "Comprimi tutte le impostazioni",
"refresh": "Aggiorna",
"no_board_selected": "nessun forum selezionato",
"none": "nessuno",
"not_subscribed_to_any_board": "Non sei ancora iscritto a nessun forum.",
"board_mods": "Moderatori del Forum",
"this_post_was_removed": "questo post è stato rimosso",
"user_deleted_this_post": "L'utente ha eliminato questo post.",
"reason": "motivo"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Google で画像を検索",
"search_image_on_yandex": "Yandex で画像を検索",
"search_image_on_saucenao": "SauceNAO で画像を検索",
"view_on_client": "{{client}} で表示"
"view_on_client": "{{client}} で表示",
"expand_all_settings": "すべての設定を展開",
"collapse_all_settings": "すべての設定を折りたたむ",
"refresh": "更新",
"no_board_selected": "掲示板が選択されていません",
"none": "なし",
"not_subscribed_to_any_board": "まだどの掲示板にも購読していません。",
"board_mods": "ボードの管理者",
"this_post_was_removed": "この投稿は削除されました",
"user_deleted_this_post": "ユーザーがこの投稿を削除しました。",
"reason": "理由"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Google 이미지 검색",
"search_image_on_yandex": "Yandex 이미지 검색",
"search_image_on_saucenao": "SauceNAO 이미지 검색",
"view_on_client": "{{client}}에서 보기"
"view_on_client": "{{client}}에서 보기",
"expand_all_settings": "모든 설정 펼치기",
"collapse_all_settings": "모든 설정 축소",
"refresh": "새로 고침",
"no_board_selected": "선택된 게시판이 없습니다",
"none": "없음",
"not_subscribed_to_any_board": "아직 어떤 게시판에도 가입하지 않았습니다.",
"board_mods": "게시판 모드",
"this_post_was_removed": "이 게시물은 삭제되었습니다",
"user_deleted_this_post": "사용자가이 게시물을 삭제했습니다.",
"reason": "이유"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Google वर छायाचित्र शोधा",
"search_image_on_yandex": "Yandex वर छायाचित्र शोधा",
"search_image_on_saucenao": "SauceNAO वर छायाचित्र शोधा",
"view_on_client": "{{client}} वर पहा"
"view_on_client": "{{client}} वर पहा",
"expand_all_settings": "सर्व सेटिंग्ज विस्तार",
"collapse_all_settings": "सर्व सेटिंग्ज संक्षेपित",
"refresh": "ताजेतर करा",
"no_board_selected": "कोणतेही संदेश फलक निवडले नाहीत",
"none": "काहीही नाही",
"not_subscribed_to_any_board": "तुम्ही कोणत्याही संदेश फलकांवर अद्याप सदस्यता घेतली नाही.",
"board_mods": "बोर्ड मॉड्स",
"this_post_was_removed": "हा पोस्ट काढून टाकला गेला आहे",
"user_deleted_this_post": "वापरकर्ता हे पोस्ट हटवलं आहे.",
"reason": "कारण"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "zoek afbeelding op Google",
"search_image_on_yandex": "zoek afbeelding op Yandex",
"search_image_on_saucenao": "zoek afbeelding op SauceNAO",
"view_on_client": "Bekijk op {{client}}"
"view_on_client": "Bekijk op {{client}}",
"expand_all_settings": "Alle instellingen uitvouwen",
"collapse_all_settings": "Alle instellingen samenvouwen",
"refresh": "Vernieuwen",
"no_board_selected": "geen forums geselecteerd",
"none": "geen",
"not_subscribed_to_any_board": "Je hebt je nog niet geabonneerd op geen enkel forum.",
"board_mods": "Board Mods",
"this_post_was_removed": "deze post is verwijderd",
"user_deleted_this_post": "Gebruiker heeft deze post verwijderd.",
"reason": "reden"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "søk etter bilde på Google",
"search_image_on_yandex": "søk etter bilde på Yandex",
"search_image_on_saucenao": "søk etter bilde på SauceNAO",
"view_on_client": "Vis på {{client}}"
"view_on_client": "Vis på {{client}}",
"expand_all_settings": "Utvid alle innstillinger",
"collapse_all_settings": "Sammenlegge alle innstillinger",
"refresh": "Oppdater",
"no_board_selected": "ingen fora valgt",
"none": "ingen",
"not_subscribed_to_any_board": "Du har ikke abonnert på noen fora ennå.",
"board_mods": "Board Mods",
"this_post_was_removed": "dette innlegget ble fjernet",
"user_deleted_this_post": "Brukeren slettet dette innlegget.",
"reason": "grunn"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "szukaj obrazu w Google",
"search_image_on_yandex": "szukaj obrazu w Yandex",
"search_image_on_saucenao": "szukaj obrazu w SauceNAO",
"view_on_client": "Zobacz na {{client}}"
"view_on_client": "Zobacz na {{client}}",
"expand_all_settings": "Rozwiń wszystkie ustawienia",
"collapse_all_settings": "Zwiń wszystkie ustawienia",
"refresh": "Odśwież",
"no_board_selected": "nie wybrano żadnych forów",
"none": "żaden",
"not_subscribed_to_any_board": "Nie zapisałeś się jeszcze na żadne fora.",
"board_mods": "Tablica Mods",
"this_post_was_removed": "ten post został usunięty",
"user_deleted_this_post": "Użytkownik usunął ten post.",
"reason": "powód"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Pesquisar imagem no Google",
"search_image_on_yandex": "Pesquisar imagem no Yandex",
"search_image_on_saucenao": "Pesquisar imagem no SauceNAO",
"view_on_client": "Ver no {{client}}"
"view_on_client": "Ver no {{client}}",
"expand_all_settings": "Expandir todas as configurações",
"collapse_all_settings": "Recolher todas as configurações",
"refresh": "Atualizar",
"no_board_selected": "nenhum fórum selecionado",
"none": "nenhum",
"not_subscribed_to_any_board": "Você ainda não se inscreveu em nenhum fórum.",
"board_mods": "Mods do fórum",
"this_post_was_removed": "esta postagem foi removida",
"user_deleted_this_post": "O usuário excluiu esta postagem.",
"reason": "razão"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "căutați imaginea pe Google",
"search_image_on_yandex": "căutați imaginea pe Yandex",
"search_image_on_saucenao": "căutați imaginea pe SauceNAO",
"view_on_client": "Vezi pe {{client}}"
"view_on_client": "Vezi pe {{client}}",
"expand_all_settings": "Extindeți toate setările",
"collapse_all_settings": "Recoltați toate setările",
"refresh": "Reîmprospătați",
"no_board_selected": "nu s-au selectat niciun forum",
"none": "nici unul",
"not_subscribed_to_any_board": "Nu v-ați abonat încă la niciun forum.",
"board_mods": "Mods de la bord",
"this_post_was_removed": "acest mesaj a fost eliminat",
"user_deleted_this_post": "Utilizatorul a șters acest mesaj.",
"reason": "motiv"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "поиск изображения в Google",
"search_image_on_yandex": "поиск изображения в Yandex",
"search_image_on_saucenao": "поиск изображения на SauceNAO",
"view_on_client": "Посмотреть на {{client}}"
"view_on_client": "Посмотреть на {{client}}",
"expand_all_settings": "Развернуть все настройки",
"collapse_all_settings": "Свернуть все настройки",
"refresh": "Обновить",
"no_board_selected": "не выбрано ни одного форума",
"none": "нет",
"not_subscribed_to_any_board": "Вы еще не подписаны ни на один форум.",
"board_mods": "Модераторы форума",
"this_post_was_removed": "этот пост был удален",
"user_deleted_this_post": "Пользователь удалил этот пост.",
"reason": "причина"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "kërko imazhin në Google",
"search_image_on_yandex": "kërko imazhin në Yandex",
"search_image_on_saucenao": "kërko imazhin në SauceNAO",
"view_on_client": "Shiko në {{client}}"
"view_on_client": "Shiko në {{client}}",
"expand_all_settings": "Zgjeroni të gjitha cilësimet",
"collapse_all_settings": "Zvogëlo të gjitha cilësimet",
"refresh": "Rifresko",
"no_board_selected": "asnjë forume të zgjedhura",
"none": "asnjë",
"not_subscribed_to_any_board": "Nuk jeni ende i abonuar në asnjë forum.",
"board_mods": "Tabela Mods",
"this_post_was_removed": "kjo postim u hoq",
"user_deleted_this_post": "Përdoruesi fshiu këtë post.",
"reason": "arsye"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "sök bild på Google",
"search_image_on_yandex": "sök bild på Yandex",
"search_image_on_saucenao": "sök bild på SauceNAO",
"view_on_client": "Visa på {{client}}"
"view_on_client": "Visa på {{client}}",
"expand_all_settings": "Expandera alla inställningar",
"collapse_all_settings": "Kollapsa alla inställningar",
"refresh": "Uppdatera",
"no_board_selected": "inga forum valda",
"none": "ingen",
"not_subscribed_to_any_board": "Du har ännu inte prenumererat på några forum.",
"board_mods": "Styrelse Mods",
"this_post_was_removed": "detta inlägg togs bort",
"user_deleted_this_post": "Användaren tog bort detta inlägg.",
"reason": "anledning"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "గూగుల్‌లో చిత్రాన్ని వెతుకోండి",
"search_image_on_yandex": "యాండెక్స్‌లో చిత్రాన్ని వెతుకోండి",
"search_image_on_saucenao": "SauceNAOలో చిత్రాన్ని వెతుకోండి",
"view_on_client": "{{client}} లో చూడండి"
"view_on_client": "{{client}} లో చూడండి",
"expand_all_settings": "అన్ని సెట్టింగ్‌లను విస్తరించండి",
"collapse_all_settings": "అన్ని సెట్టింగ్‌లను సంక్షిప్తము చేయండి",
"refresh": "రీఫ్రెష్",
"no_board_selected": "ఏటీ ఎలాంటి సందేశ బోర్డులు ఎంచుకోలేదు",
"none": "ఏమీ లేదు",
"not_subscribed_to_any_board": "మీరు ఇంకా ఏకైక సందేశ బోర్డులకు చేరలేదు.",
"board_mods": "సందేశ బోర్డుల మాడ్స్",
"this_post_was_removed": "ఈ పోస్టు తొలగించబడింది",
"user_deleted_this_post": "వాడు ఈ పోస్టును తొలగించాడు.",
"reason": "కారణం"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "ค้นหารูปภาพใน Google",
"search_image_on_yandex": "ค้นหารูปภาพใน Yandex",
"search_image_on_saucenao": "ค้นหารูปภาพใน SauceNAO",
"view_on_client": "ดูบน {{client}}"
"view_on_client": "ดูบน {{client}}",
"expand_all_settings": "ขยายการตั้งค่าทั้งหมด",
"collapse_all_settings": "ยุบการตั้งค่าทั้งหมด",
"refresh": "รีเฟรช",
"no_board_selected": "ไม่มีกระดานข่าวที่เลือก",
"none": "ไม่มี",
"not_subscribed_to_any_board": "คุณยังไม่ได้สมัครสมาชิกในกระดานข่าวใดๆ ยัง",
"board_mods": "บอร์ด Mods",
"this_post_was_removed": "โพสต์นี้ถูกลบ",
"user_deleted_this_post": "ผู้ใช้ได้ลบโพสต์นี้",
"reason": "เหตุผล"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Google'da resim ara",
"search_image_on_yandex": "Yandex'da resim ara",
"search_image_on_saucenao": "SauceNAO'da resim ara",
"view_on_client": "{{client}}'de görüntüle"
"view_on_client": "{{client}}'de görüntüle",
"expand_all_settings": "Tüm Ayarları Genişlet",
"collapse_all_settings": "Tüm Ayarları Daralt",
"refresh": "Yenile",
"no_board_selected": "hiçbir forum seçilmedi",
"none": "hiçbiri",
"not_subscribed_to_any_board": "Henüz herhangi bir foruma abone olmadınız.",
"board_mods": "Forum Mods",
"this_post_was_removed": "bu mesaj kaldırıldı",
"user_deleted_this_post": "Kullanıcı bu mesajı sildi.",
"reason": "neden"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "пошук зображення в Google",
"search_image_on_yandex": "пошук зображення в Yandex",
"search_image_on_saucenao": "пошук зображення в SauceNAO",
"view_on_client": "Переглянути на {{client}}"
"view_on_client": "Переглянути на {{client}}",
"expand_all_settings": "Розгорнути всі налаштування",
"collapse_all_settings": "Згорнути всі налаштування",
"refresh": "Оновити",
"no_board_selected": "не обрано жодного форуму",
"none": "немає",
"not_subscribed_to_any_board": "Ви ще не підписалися на жоден форум.",
"board_mods": "Дошка Моди",
"this_post_was_removed": "цей пост було видалено",
"user_deleted_this_post": "Користувач видалив цей пост.",
"reason": "причина"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "گوگل پر تصویر کا مطالعہ کریں",
"search_image_on_yandex": "یانڈیکس پر تصویر کا مطالعہ کریں",
"search_image_on_saucenao": "SauceNAO پر تصویر کا مطالعہ کریں",
"view_on_client": "{{client}} پر دیکھیں"
"view_on_client": "{{client}} پر دیکھیں",
"expand_all_settings": "تمام ترتیبات کو بڑھائیں",
"collapse_all_settings": "تمام ترتیبات کو مختصر کریں",
"refresh": "تازہ کاری",
"no_board_selected": "کوئی پیغام بورڈز منتخب نہیں کیا گیا",
"none": "کوئی نہیں",
"not_subscribed_to_any_board": "آپ نے ابھی تک کسی بورڈز میں سبسکرائب نہیں کیا۔",
"board_mods": "بورڈ موڈس",
"this_post_was_removed": "یہ پوسٹ ہٹا دی گئی ہے",
"user_deleted_this_post": "صارف نے یہ پوسٹ حذف کردی.",
"reason": "وجہ"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "Tìm kiếm hình ảnh trên Google",
"search_image_on_yandex": "Tìm kiếm hình ảnh trên Yandex",
"search_image_on_saucenao": "Tìm kiếm hình ảnh trên SauceNAO",
"view_on_client": "Xem trên {{client}}"
"view_on_client": "Xem trên {{client}}",
"expand_all_settings": "Mở rộng tất cả các thiết lập",
"collapse_all_settings": "Thu gọn tất cả các thiết lập",
"refresh": "Làm mới",
"no_board_selected": "không có diễn đàn nào được chọn",
"none": "không ai",
"not_subscribed_to_any_board": "Bạn chưa đăng ký vào bất kỳ diễn đàn nào.",
"board_mods": "Bảng Mods",
"this_post_was_removed": "bài đăng này đã bị xóa",
"user_deleted_this_post": "Người dùng đã xóa bài đăng này.",
"reason": "lý do"
}
+11 -1
View File
@@ -131,5 +131,15 @@
"search_image_on_google": "在Google上搜索图像",
"search_image_on_yandex": "在Yandex上搜索图像",
"search_image_on_saucenao": "在SauceNAO上搜索图像",
"view_on_client": "在{{client}}上查看"
"view_on_client": "在{{client}}上查看",
"expand_all_settings": "展开所有设置",
"collapse_all_settings": "折叠所有设置",
"refresh": "刷新",
"no_board_selected": "没有选择任何论坛",
"none": "无",
"not_subscribed_to_any_board": "您尚未订阅任何论坛。",
"board_mods": "董事會版主",
"this_post_was_removed": "此帖已被删除",
"user_deleted_this_post": "用户删除了这个帖子。",
"reason": "原因"
}
@@ -21,6 +21,28 @@
cursor: pointer;
}
.mobileBoardButtons .options {
padding: 10px 0;
}
.desktopBoardButtons {
display: flex;
align-items: center;
justify-content: space-between; /* Ensure elements are spaced out properly */
}
.desktopBoardButtons::after {
content: "";
display: table;
clear: both;
}
.desktopBoardButtons .rightSideButtons {
margin-left: auto; /* Push the right-side buttons to the right */
display: flex;
align-items: center;
}
@media (max-width: 640px) {
.desktopBoardButtons {
display: none;
@@ -31,8 +53,4 @@
.mobileBoardButtons {
display: none;
}
.subscribeButton {
float: right;
}
}
}
+80 -46
View File
@@ -3,6 +3,7 @@ import { Link, useLocation, useParams } from 'react-router-dom';
import { useAccountComment, useSubscribe } from '@plebbit/plebbit-react-hooks';
import { isAllView, isCatalogView, isPendingPostView, isPostPageView, isSubscriptionsView } from '../../lib/utils/view-utils';
import useFeedResetStore from '../../stores/use-feed-reset-store';
import useSortingStore from '../../stores/use-sorting-store';
import styles from './board-buttons.module.css';
interface BoardButtonsProps {
@@ -19,9 +20,10 @@ const OptionsButton = () => {
const CatalogButton = ({ address, isInAllView, isInSubscriptionsView }: BoardButtonsProps) => {
const { t } = useTranslation();
const link = isInAllView ? `/p/all/catalog` : isInSubscriptionsView ? `/p/subscriptions/catalog` : `/p/${address}/catalog`;
return (
<button className='button'>
<Link to={isInAllView ? `/p/all/catalog` : isInSubscriptionsView ? `/p/subscriptions/catalog` : `/p/${address}/catalog`}>{t('catalog')}</Link>
<Link to={link}>{t('catalog')}</Link>
</button>
);
};
@@ -37,25 +39,45 @@ const SubscribeButton = ({ address }: BoardButtonsProps) => {
);
};
const ReturnButton = ({ address }: BoardButtonsProps) => {
const ReturnButton = ({ address, isInAllView, isInSubscriptionsView }: BoardButtonsProps) => {
const { t } = useTranslation();
const link = isInAllView ? `/p/all` : isInSubscriptionsView ? `/p/subscriptions` : `/p/${address}`;
return (
<button className='button'>
<Link to={`/p/${address}`}>{t('return')}</Link>
<Link to={link}>{t('return')}</Link>
</button>
);
};
const RefreshButton = () => {
const { t } = useTranslation();
const reset = useFeedResetStore((state) => state.reset);
return (
<button className='button' onClick={() => reset && reset()}>
Refresh
{t('refresh')}
</button>
);
};
const SortOptions = () => {
const { sortType, setSortType } = useSortingStore();
const handleSortChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
const type = event.target.value as 'active' | 'new';
setSortType(type);
};
return (
<>
Sort by:&nbsp;
<select value={sortType} onChange={handleSortChange}>
<option value='active'>Bump order</option>
<option value='new'>Creation date</option>
</select>
&nbsp;
</>
);
};
export const MobileBoardButtons = () => {
const params = useParams();
const location = useLocation();
@@ -87,6 +109,14 @@ export const MobileBoardButtons = () => {
<OptionsButton />
<SubscribeButton address={subplebbitAddress} />
<RefreshButton />
{isInCatalogView && (
<>
<hr />
<div className={styles.options}>
<SortOptions />
</div>
</>
)}
</>
)}
</div>
@@ -105,48 +135,52 @@ export const DesktopBoardButtons = () => {
const isInSubscriptionsView = isSubscriptionsView(location.pathname);
return (
<div className={styles.desktopBoardButtons}>
<>
<hr />
{isInPostView || isInPendingPostPage ? (
<>
[
<ReturnButton address={subplebbitAddress} />
] [
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} />
] [
<OptionsButton />]{' '}
<span className={styles.subscribeButton}>
[<SubscribeButton address={subplebbitAddress} />]
</span>
</>
) : isInCatalogView ? (
<>
[
<ReturnButton address={subplebbitAddress} />
] [
<OptionsButton />
] [
<RefreshButton />]{' '}
<span className={styles.subscribeButton}>
[<SubscribeButton address={subplebbitAddress} />]
</span>
</>
) : (
<>
[
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} />
] [
<OptionsButton />
] [
<RefreshButton />]{' '}
{!(isInAllView || isInSubscriptionsView) && (
<span className={styles.subscribeButton}>
[
<SubscribeButton address={subplebbitAddress} />]
<div className={styles.desktopBoardButtons}>
{isInPostView || isInPendingPostPage ? (
<>
[
<ReturnButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} />
] [
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} />
] [
<OptionsButton />]
{isInPostView && (
<span className={styles.rightSideButtons}>
[
<SubscribeButton address={subplebbitAddress} />]
</span>
)}
</>
) : (
<>
{isInCatalogView ? (
<>
[
<ReturnButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} />]{' '}
</>
) : (
<>
[
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} />]{' '}
</>
)}
[
<OptionsButton />] [
<RefreshButton />]
<span className={styles.rightSideButtons}>
{isInCatalogView && <SortOptions />}
{!(isInAllView || isInSubscriptionsView) && (
<>
[
<SubscribeButton address={subplebbitAddress} />]
</>
)}
</span>
)}
</>
)}
</div>
</>
)}
</div>
</>
);
};
+2 -2
View File
@@ -225,7 +225,7 @@ const PostFormTable = ({ closeForm }: { closeForm: () => void }) => {
[
<label>
<input type='checkbox' onChange={(e) => (isInPostView ? setContent.spoiler(e.target.checked) : setSubmitStore({ spoiler: e.target.checked }))} />
{t('spoiler')}?
{_.capitalize(t('spoiler'))}?
</label>
]
</td>
@@ -235,7 +235,7 @@ const PostFormTable = ({ closeForm }: { closeForm: () => void }) => {
<td>{t('board')}</td>
<td>
<select onChange={(e) => setSubmitStore({ subplebbitAddress: e.target.value })} value={subplebbitAddress}>
<option value=''>--no board selected--</option>
<option value=''>--{t('no_board_selected')}--</option>
{isInAllView &&
defaultSubplebbitAddresses.map((address: string) => (
<option key={address} value={address}>
@@ -170,7 +170,7 @@ const PostMedia = ({ post }: PostProps) => {
const PostMessage = ({ post }: PostProps) => {
const { cid, content, deleted, parentCid, postCid, reason, removed, state, subplebbitAddress } = post || {};
const { t } = useTranslation();
const params = useParams();
const location = useLocation();
const isInPostView = isPostPageView(location.pathname, params);
@@ -197,9 +197,9 @@ const PostMessage = ({ post }: PostProps) => {
</>
)}
{removed ? (
<span className={styles.removedContent}>(THIS POST WAS REMOVED)</span>
<span className={styles.removedContent}>({t('this_post_was_removed')})</span>
) : deleted ? (
<span className={styles.removedContent}>User deleted this post.</span>
<span className={styles.removedContent}>{t('user_deleted_this_post')}</span>
) : (
<Markdown content={displayContent} />
)}
@@ -207,7 +207,7 @@ const PostMessage = ({ post }: PostProps) => {
<span>
<br />
<br />
reason: {reason}
{t('reason')}: {reason}
</span>
)}
{!isReply && content.length > 1000 && !isInPostView && (
@@ -7,11 +7,14 @@ import { Comment, useBlock } from '@plebbit/plebbit-react-hooks';
import styles from './post-menu-desktop.module.css';
import { getCommentMediaInfo } from '../../../../lib/utils/media-utils';
import { copyShareLinkToClipboard, isValidURL } from '../../../../lib/utils/url-utils';
import { isCatalogView, isPostPageView } from '../../../../lib/utils/view-utils';
import { isAllView, isCatalogView, isPostPageView, isSubscriptionsView } from '../../../../lib/utils/view-utils';
import _ from 'lodash';
interface PostMenuDesktopProps {
cid: string;
isDescription?: boolean;
isInAllView?: boolean;
isInSubscriptionsView?: boolean;
isRules?: boolean;
subplebbitAddress: string;
onClose: () => void;
@@ -48,7 +51,7 @@ const ImageSearchButton = ({ url, onClose }: { url: string; onClose: () => void
ref={refs.setReference}
onClick={onClose}
>
{t('image_search')} »
{_.capitalize(t('image_search'))} »
{isImageSearchMenuOpen && (
<div ref={refs.setFloating} style={floatingStyles} className={styles.dropdownMenu}>
<a href={`https://lens.google.com/uploadbyurl?url=${url}`} target='_blank' rel='noreferrer'>
@@ -66,10 +69,10 @@ const ImageSearchButton = ({ url, onClose }: { url: string; onClose: () => void
);
};
const ViewOnButton = ({ cid, isDescription, isRules, subplebbitAddress, onClose }: PostMenuDesktopProps) => {
const ViewOnButton = ({ cid, isDescription, isInAllView, isInSubscriptionsView, isRules, subplebbitAddress, onClose }: PostMenuDesktopProps) => {
const { t } = useTranslation();
const [isClientRedirectMenuOpen, setIsClientRedirectMenuOpen] = useState(false);
const viewOnOtherClientLink = `p/${subplebbitAddress}${isDescription || isRules ? '' : `/c/${cid}`}`;
const viewOnOtherClientLink = `p/${isInAllView ? 'all' : isInSubscriptionsView ? 'subscriptions' : subplebbitAddress}${isDescription || isRules ? '' : `/c/${cid}`}`;
const { refs, floatingStyles } = useFloating({
placement: 'right-start',
@@ -84,13 +87,13 @@ const ViewOnButton = ({ cid, isDescription, isRules, subplebbitAddress, onClose
ref={refs.setReference}
onClick={onClose}
>
{t('view_on')} »
{_.capitalize(t('view_on'))} »
{isClientRedirectMenuOpen && (
<div ref={refs.setFloating} style={floatingStyles} className={styles.dropdownMenu}>
<a href={`https://seedit.app/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<a href={`https://seedit.eth.limo/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<div className={styles.postMenuItem}>Seedit</div>
</a>
<a href={`https://plebones.netlify.app/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<a href={`https://plebones.eth.limo/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<div className={styles.postMenuItem}>Plebones</div>
</a>
</div>
@@ -110,8 +113,10 @@ const PostMenuDesktop = ({ post }: { post: Comment }) => {
const location = useLocation();
const params = useParams();
const isInAllView = isAllView(location.pathname);
const isInCatalogView = isCatalogView(location.pathname);
const isInPostPageView = isPostPageView(location.pathname, params);
const isInSubscriptionsView = isSubscriptionsView(location.pathname);
const { refs, floatingStyles, context } = useFloating({
placement: 'bottom-start',
@@ -157,7 +162,15 @@ const PostMenuDesktop = ({ post }: { post: Comment }) => {
</div>
)}
{link && isValidURL(link) && (type === 'image' || type === 'gif' || thumbnail) && url && <ImageSearchButton url={url} onClose={handleClose} />}
<ViewOnButton cid={cid} isDescription={isDescription} isRules={isRules} subplebbitAddress={subplebbitAddress} onClose={handleClose} />
<ViewOnButton
cid={cid}
isDescription={isDescription}
isInAllView={isInAllView}
isInSubscriptionsView={isInSubscriptionsView}
isRules={isRules}
subplebbitAddress={subplebbitAddress}
onClose={handleClose}
/>
</div>
</FloatingFocusManager>,
document.body,
@@ -51,10 +51,10 @@ const ViewOnButtons = ({ cid, isDescription, isRules, subplebbitAddress, onClose
const viewOnOtherClientLink = `p/${subplebbitAddress}${isDescription || isRules ? '' : `/c/${cid}`}`;
return (
<div onClick={onClose}>
<a href={`https://seedit.app/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<a href={`https://seedit.eth.limo/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<div className={styles.postMenuItem}>{t('view_on_client', { client: 'Seedit' })}</div>
</a>
<a href={`https://plebones.netlify.app/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<a href={`https://plebones.eth.limo/#/${viewOnOtherClientLink}`} target='_blank' rel='noreferrer'>
<div className={styles.postMenuItem}>{t('view_on_client', { client: 'Plebones' })}</div>
</a>
</div>
+1 -1
View File
@@ -134,7 +134,7 @@ const ReplyModal = ({ closeModal, parentCid, scrollY }: ReplyModalProps) => {
[
<label>
<input type='checkbox' onChange={(e) => setContent.spoiler(e.target.checked)} />
{t('spoiler')}?
{_.capitalize(t('spoiler'))}?
</label>
]
</span>
@@ -75,6 +75,7 @@
.expandAllSettings {
text-align: center;
text-transform: capitalize;
}
.expandAllSettings span {
@@ -39,7 +39,7 @@ const SettingsModal = () => {
<span className={styles.closeButton} title='close' onClick={closeModal} />
</div>
<div className={styles.expandAllSettings}>
[<span onClick={handleExpandAll}>{expandAll ? 'Collapse All Settings' : 'Expand All Settings'}</span>]
[<span onClick={handleExpandAll}>{expandAll ? t('collapse_all_settings') : t('expand_all_settings')}</span>]
</div>
<div className={`${styles.setting} ${styles.category}`}>
<label onClick={() => setShowInterfaceSettings(!showInterfaceSettings)}>
@@ -23,7 +23,7 @@ const SubplebbitDescription = ({ avatarUrl, createdAt, description, shortAddress
isDescription: true,
subplebbitAddress,
timestamp: isInAllView ? multisubMetadata?.createdAt : createdAt,
author: { displayName: '## Board Mods' },
author: { displayName: `## ${t('board_mods')}` },
content: isInAllView ? multisubMetadata?.description : description,
link: avatarUrl,
title: t('welcome_to_board', {
@@ -15,7 +15,7 @@ const SubplebbitRules = ({ subplebbitAddress, createdAt, rules }: RulesPostProps
isRules: true,
subplebbitAddress,
timestamp: createdAt,
author: { displayName: '## Board Mods' },
author: { displayName: `## ${t('board_mods')}` },
content,
title: _.capitalize(t('rules')),
pinned: true,
+1 -4
View File
@@ -33,7 +33,7 @@
}
.boardNavMobile .pageJump a {
color: var(--button-text-color-mobile);
color: var(--topbar-mobile-button-color);
text-decoration: var(--button-text-decoration-mobile);
}
@@ -44,9 +44,6 @@
.boardNavMobile select {
font-size: var(--topbar-mobile-font-size);
border: var(--select-border, revert);
background-color: var(--select-background-color, revert);
color: var(--select-color, revert);
}
.boardSelect {
+2 -2
View File
@@ -56,8 +56,8 @@ const TopBarMobile = ({ subplebbitAddress }: { subplebbitAddress: string }) => {
const boardSelect = (
<select value={selectValue} onChange={(e) => navigate(`/p/${e.target.value}${isInCatalogView ? '/catalog' : ''}`)}>
{!currentSubplebbitIsInList && subplebbitAddress && <option value={subplebbitAddress}>{displaySubplebbitAddress}</option>}
<option value='all'>{t('all')}</option>
<option value='subscriptions'>{t('subscriptions')}</option>
<option value='all'>all</option>
<option value='subscriptions'>subscriptions</option>
{subplebbitAddresses.map((address: any, index: number) => {
const subplebbitAddress = address?.includes('.') ? address : address?.slice(0, 10).concat('...');
return (
+12 -8
View File
@@ -28,14 +28,18 @@ const useRepliesAndAccountReplies = (comment: Comment) => {
}, [flattenedReplies, accountComments]);
const repliesAndNotYetPublishedReplies = useMemo(() => {
const repliesSortedByVotes = [
// put the author's unpublished replies at the top, latest first (reverse)
...accountRepliesNotYetPublished.reverse(),
// put the published replies after,
...(flattenedReplies || []),
];
// sort by timestamp
return repliesSortedByVotes.sort((a: Comment, b: Comment) => a.timestamp - b.timestamp);
const repliesSortedByPinnedAndTimestamp = [...accountRepliesNotYetPublished.reverse(), ...(flattenedReplies || [])];
return repliesSortedByPinnedAndTimestamp.sort((a: Comment, b: Comment) => {
// Sort by pinned status first, with pinned comments at the top
if (a.pinned && !b.pinned) {
return -1;
} else if (!a.pinned && b.pinned) {
return 1;
}
// If both are pinned or both are not pinned, sort by timestamp
return a.timestamp - b.timestamp;
});
}, [flattenedReplies, accountRepliesNotYetPublished]);
return repliesAndNotYetPublishedReplies;
+1 -14
View File
@@ -1,17 +1,4 @@
import { create, StoreApi } from 'zustand';
interface ThemeState {
theme: string;
setTheme: (theme: string) => void;
}
const useThemeStore = create<ThemeState>((set: StoreApi<ThemeState>['setState']) => ({
theme: localStorage.getItem('theme') || 'yotsuba',
setTheme: (theme: string) => {
localStorage.setItem('theme', theme);
set({ theme });
},
}));
import useThemeStore from '../stores/use-theme-store';
const useTheme = (): [string, (theme: string) => void] => {
const { theme, setTheme } = useThemeStore();
+4
View File
@@ -42,6 +42,10 @@ hr {
user-select: none;
display: inline-block;
}
select {
filter: var(--filter80);
}
}
@media (min-width: 640px) {
+10
View File
@@ -44,6 +44,16 @@ export const isRulesView = (pathname: string, params: ParamsType): boolean => {
return params.subplebbitAddress ? decodedPathname.startsWith(`/p/${params.subplebbitAddress}/rules`) : false;
};
export const isSettingsView = (pathname: string, params: ParamsType): boolean => {
const { subplebbitAddress, commentCid } = params;
const decodedPathname = decodeURIComponent(pathname);
return (
decodedPathname === `/p/${subplebbitAddress}/c/${commentCid}/settings` ||
decodedPathname === `/p/${subplebbitAddress}/description/settings` ||
decodedPathname === `/p/${subplebbitAddress}/rules/settings`
);
};
export const isSubscriptionsView = (pathname: string): boolean => {
return pathname.startsWith('/p/subscriptions');
};
+13
View File
@@ -0,0 +1,13 @@
import { create } from 'zustand';
interface SortingStore {
sortType: 'active' | 'new';
setSortType: (type: 'active' | 'new') => void;
}
const useSortingStore = create<SortingStore>((set) => ({
sortType: 'active',
setSortType: (type) => set({ sortType: type }),
}));
export default useSortingStore;
+16
View File
@@ -0,0 +1,16 @@
import { create, StoreApi } from 'zustand';
interface ThemeState {
theme: string;
setTheme: (theme: string) => void;
}
const useThemeStore = create<ThemeState>((set: StoreApi<ThemeState>['setState']) => ({
theme: localStorage.getItem('theme') || 'yotsuba',
setTheme: (theme: string) => {
localStorage.setItem('theme', theme);
set({ theme });
},
}));
export default useThemeStore;
+74 -72
View File
@@ -4,18 +4,6 @@
--board-title-font-size: 28px;
--board-title-font-family: Tahoma, sans-serif;
--board-address-font-size: x-small;
/* board nav */
--topbar-font-size: 9pt;
--topbar-separator-color: #b86;
--topbar-desktop-link-text-color: #800;
--topbar-desktop-link-text-color-hover: #e00;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: underline;
--topbar-mobile-background-color: #f0e0d6;
--topbar-mobile-border-bottom: 2px solid #d9c5b7;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: navy;
/* body */
--body-background-base-color: #ffe;
@@ -180,6 +168,18 @@
/* stats */
--stats-font-size: 11px;
/* topbar */
--topbar-font-size: 9pt;
--topbar-separator-color: #b86;
--topbar-desktop-link-text-color: #800;
--topbar-desktop-link-text-color-hover: #e00;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: underline;
--topbar-mobile-background-color: #f0e0d6;
--topbar-mobile-border-bottom: 2px solid #d9c5b7;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: navy;
}
:root .yotsuba-b {
@@ -191,18 +191,6 @@
--board-title-text-color: #af0a0f;
--board-address-text-color: #af0a0f;
/* board nav */
--topbar-font-size: 9pt;
--topbar-separator-color: #89a;
--topbar-desktop-link-text-color: #34345c;
--topbar-desktop-link-text-color-hover: #d00;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: none;
--topbar-mobile-background-color: #d6daf0;
--topbar-mobile-border-bottom: 2px solid #b7c5d9;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: #34345c;
/* body */
--body-background-base-color: #eef2ff;
--body-background-pattern-image: url("/public/assets/background-fade-blue.png");
@@ -364,6 +352,18 @@
/* stats */
--stats-font-size: 11px;
/* topbar */
--topbar-font-size: 9pt;
--topbar-separator-color: #89a;
--topbar-desktop-link-text-color: #34345c;
--topbar-desktop-link-text-color-hover: #d00;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: none;
--topbar-mobile-background-color: #d6daf0;
--topbar-mobile-border-bottom: 2px solid #b7c5d9;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: #34345c;
}
:root .futaba {
@@ -374,18 +374,6 @@
--body-font-family: times new roman, serif;
--body-font-size: 16px;
/* board nav */
--topbar-font-size: 11pt;
--topbar-separator-color: none;
--topbar-desktop-link-text-color: #00e;
--topbar-desktop-link-text-color-hover: red;
--topbar-desktop-link-text-decoration: underline;
--topbar-desktop-link-text-decoration-hover: underline;
--topbar-mobile-background-color: #f0e0d6;
--topbar-mobile-border-bottom: 2px solid #d9c5b7;
--topbar-mobile-font-size: 9pt;
--topbar-mobile-button-text-color: #00f;
/* board title */
--board-title-font-size: 32px;
--board-address-font-size: 10pt;
@@ -514,6 +502,18 @@
/* stats */
--stats-font-size: 10pt;
/* topbar */
--topbar-font-size: 11pt;
--topbar-separator-color: none;
--topbar-desktop-link-text-color: #00e;
--topbar-desktop-link-text-color-hover: red;
--topbar-desktop-link-text-decoration: underline;
--topbar-desktop-link-text-decoration-hover: underline;
--topbar-mobile-background-color: #f0e0d6;
--topbar-mobile-border-bottom: 2px solid #d9c5b7;
--topbar-mobile-font-size: 9pt;
--topbar-mobile-button-text-color: #00f;
}
:root .burichan {
@@ -525,18 +525,6 @@
--board-address-font-size: 10pt;
--board-address-text-color: #af0a0f;
/* board nav */
--topbar-font-size: 11pt;
--topbar-separator-color: none;
--topbar-desktop-link-text-color: #34345c;
--topbar-desktop-link-text-color-hover: #d00;
--topbar-desktop-link-text-decoration: underline;
--topbar-desktop-link-text-decoration-hover: underline;
--topbar-mobile-background-color: #d6daf0;
--topbar-mobile-border-bottom: 2px solid #b7c5d9;
--topbar-mobile-font-size: 9pt;
--topbar-mobile-button-text-color: #34345c;
/* body */
--body-background-base-color: #eef2ff;
--body-background-pattern-image: none;
@@ -678,6 +666,18 @@
/* stats */
--stats-font-size: 10pt;
/* topbar */
--topbar-font-size: 11pt;
--topbar-separator-color: none;
--topbar-desktop-link-text-color: #34345c;
--topbar-desktop-link-text-color-hover: #d00;
--topbar-desktop-link-text-decoration: underline;
--topbar-desktop-link-text-decoration-hover: underline;
--topbar-mobile-background-color: #d6daf0;
--topbar-mobile-border-bottom: 2px solid #b7c5d9;
--topbar-mobile-font-size: 9pt;
--topbar-mobile-button-text-color: #34345c;
}
:root .tomorrow {
@@ -688,18 +688,6 @@
--body-font-family: arial, helvetica, sans-serif;
--body-font-size: 13px;
/* board nav */
--topbar-font-size: 9pt;
--topbar-separator-color: #c5c8c6;
--topbar-desktop-link-text-color: #81a2be;
--topbar-desktop-link-text-color-hover: #5f89ac;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: none;
--topbar-mobile-background-color: #1d1f21;
--topbar-mobile-border-bottom: 2px solid #282a2e;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: #81a2be;
/* board title */
--board-title-font-size: 28px;
--board-title-font-family: Tahoma, sans-serif;
@@ -864,6 +852,19 @@
/* stats */
--stats-font-size: 11px;
/* topbar */
--topbar-font-size: 9pt;
--topbar-separator-color: #c5c8c6;
--topbar-desktop-link-text-color: #81a2be;
--topbar-desktop-link-text-color-hover: #5f89ac;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: none;
--topbar-mobile-background-color: #1d1f21;
--topbar-mobile-border-bottom: 2px solid #282a2e;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: #81a2be;
--topbar-mobile-button-color: #81a2be;
}
:root .photon {
@@ -874,18 +875,6 @@
--body-font-family: arial, helvetica, sans-serif;
--body-font-size: 13px;
/* board nav */
--topbar-font-size: 9pt;
--topbar-separator-color: #333;
--topbar-desktop-link-text-color: #f60;
--topbar-desktop-link-text-color-hover: #f30;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: none;
--topbar-mobile-background-color: #ddd;
--topbar-mobile-border-bottom: 2px solid #ccc;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: #f60;
/* board title */
--board-title-font-size: 28px;
--board-title-font-family: Tahoma, sans-serif;
@@ -1030,4 +1019,17 @@
/* stats */
--stats-font-size: 11px;
/* topbar */
--topbar-font-size: 9pt;
--topbar-separator-color: #333;
--topbar-desktop-link-text-color: #f60;
--topbar-desktop-link-text-color-hover: #f30;
--topbar-desktop-link-text-decoration: none;
--topbar-desktop-link-text-decoration-hover: none;
--topbar-mobile-background-color: #ddd;
--topbar-mobile-border-bottom: 2px solid #ccc;
--topbar-mobile-font-size: 10px;
--topbar-mobile-button-text-color: #f60;
--topbar-mobile-button-color: #f60;
}
+3 -2
View File
@@ -9,6 +9,7 @@ import { useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbi
import useFeedStateString from '../../hooks/use-feed-state-string';
import useReplyModal from '../../hooks/use-reply-modal';
import useFeedResetStore from '../../stores/use-feed-reset-store';
import useSortingStore from '../../stores/use-sorting-store';
import LoadingEllipsis from '../../components/loading-ellipsis';
import Post from '../../components/post';
import ReplyModal from '../../components/reply-modal';
@@ -40,7 +41,7 @@ const Board = () => {
return [subplebbitAddress];
}, [isInAllView, isInSubscriptionsView, subplebbitAddress, defaultSubplebbitAddresses, subscriptions]);
const sortType = 'active';
const { sortType } = useSortingStore();
const { feed, hasMore, loadMore, reset } = useFeed({ subplebbitAddresses, sortType });
const setResetFunction = useFeedResetStore((state) => state.setResetFunction);
@@ -60,7 +61,7 @@ const Board = () => {
{state === 'failed' ? (
state
) : isInSubscriptionsView && subscriptions?.length === 0 ? (
`You have not subscribed to any board yet.`
t('not_subscribed_to_any_board')
) : (
<LoadingEllipsis string={loadingStateString} />
)}
+11 -7
View File
@@ -9,6 +9,7 @@ import useFeedStateString from '../../hooks/use-feed-state-string';
import { useMultisubMetadata } from '../../hooks/use-default-subplebbits';
import useWindowWidth from '../../hooks/use-window-width';
import useFeedResetStore from '../../stores/use-feed-reset-store';
import useSortingStore from '../../stores/use-sorting-store';
import CatalogRow from '../../components/catalog-row';
import LoadingEllipsis from '../../components/loading-ellipsis';
import SettingsModal from '../../components/settings-modal';
@@ -39,10 +40,10 @@ const useFeedRows = (columnCount: number, feed: any, isFeedLoaded: boolean, subp
isDescription: true,
subplebbitAddress: address,
timestamp: createdAt,
author: { displayName: '## Board Mods' },
author: { displayName: `## ${t('board_mods')}` },
content: isInAllView ? multisub?.description : description,
link: avatarUrl,
title: t('welcome_to_board', { board: isInAllView ? multisub?.title : title || `p/${shortAddress}` }),
title: t('welcome_to_board', { board: isInAllView ? multisub?.title : title || `p/${shortAddress}`, interpolation: { escapeValue: false } }),
pinned: true,
locked: true,
});
@@ -52,7 +53,7 @@ const useFeedRows = (columnCount: number, feed: any, isFeedLoaded: boolean, subp
isRules: true,
subplebbitAddress: address,
timestamp: createdAt,
author: { displayName: '## Board Mods' },
author: { displayName: `## ${t('board_mods')}` },
content: rules.map((rule: string, index: number) => `${index + 1}. ${rule}`).join('\n'),
title: _.capitalize(t('rules')),
pinned: true,
@@ -102,7 +103,8 @@ const Catalog = () => {
// eslint-disable-next-line
const postsPerPage = useMemo(() => (columnCount <= 2 ? 10 : columnCount === 3 ? 15 : columnCount === 4 ? 20 : 25), []);
const { feed, hasMore, loadMore, reset } = useFeed({ subplebbitAddresses, sortType: 'active', postsPerPage });
const { sortType } = useSortingStore();
const { feed, hasMore, loadMore, reset } = useFeed({ subplebbitAddresses, sortType, postsPerPage });
const setResetFunction = useFeedResetStore((state) => state.setResetFunction);
useEffect(() => {
@@ -117,7 +119,7 @@ const Catalog = () => {
{state === 'failed' ? (
state
) : isInSubscriptionsView && subscriptions?.length === 0 ? (
`You haven't subscribed to any board yet.`
t('not_subscribed_to_any_board')
) : (
<LoadingEllipsis string={loadingStateString} />
)}
@@ -156,8 +158,10 @@ const Catalog = () => {
useEffect(() => {
let documentTitle = title ? title : shortAddress;
document.title = documentTitle + ' - Catalog';
}, [title, shortAddress]);
if (isInAllView) documentTitle = t('all');
else if (isInSubscriptionsView) documentTitle = t('subscriptions');
document.title = documentTitle + ` - ${t('catalog')}`;
}, [title, shortAddress, isInAllView, isInSubscriptionsView, t]);
return (
<div className={styles.content}>
+5 -1
View File
@@ -1,4 +1,4 @@
import { useMemo, useRef } from 'react';
import { useEffect, useMemo, useRef } from 'react';
import styles from './home.module.css';
import { Link, useNavigate } from 'react-router-dom';
import { Trans, useTranslation } from 'react-i18next';
@@ -394,6 +394,10 @@ const Home = () => {
const subplebbitAddresses = useDefaultSubplebbitAddresses();
const { subplebbits } = useSubplebbits({ subplebbitAddresses });
useEffect(() => {
document.title = 'plebchan';
}, []);
return (
<div className={styles.content}>
<HomeLogo />
+3 -6
View File
@@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next';
import { useComment, useSubplebbit } from '@plebbit/plebbit-react-hooks';
import { useLocation, useParams } from 'react-router-dom';
import styles from './post-page.module.css';
import { isDescriptionView, isRulesView } from '../../lib/utils/view-utils';
import { isDescriptionView, isRulesView, isSettingsView } from '../../lib/utils/view-utils';
import useReplyModal from '../../hooks/use-reply-modal';
import Post from '../../components/post';
import ReplyModal from '../../components/reply-modal';
@@ -16,10 +16,7 @@ const PostPage = () => {
const params = useParams();
const location = useLocation();
const { commentCid, subplebbitAddress } = params;
const showSettings =
location.pathname === `/p/${subplebbitAddress}/c/${commentCid}/settings` ||
location.pathname === `/p/${subplebbitAddress}/description/settings` ||
location.pathname === `/p/${subplebbitAddress}/rules/settings`;
const isInSettigsView = isSettingsView(location.pathname, params);
const isInDescriptionView = isDescriptionView(location.pathname, params);
const isInRulesView = isRulesView(location.pathname, params);
@@ -38,7 +35,7 @@ const PostPage = () => {
return (
<div className={styles.content}>
{showSettings && <SettingsModal />}
{isInSettigsView && <SettingsModal />}
{showReplyModal && activeCid && <ReplyModal closeModal={closeModal} parentCid={activeCid} scrollY={scrollY} />}
{isInDescriptionView ? (
<SubplebbitDescription
+240 -89
View File
@@ -1199,22 +1199,6 @@
bs58 "5.0.0"
buffer "^6.0.3"
"@bonfida/spl-name-service@2.3.8":
version "2.3.8"
resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-2.3.8.tgz#be0f0806c9e504cb053e69faaa2f9972d6e445f0"
integrity sha512-X/rqQf7WWZrQlkFgfdRh02afv3vahbDjzRHj1wOrw2jaBXWCmCrLnmqKUhKeAv12IoZyPM+AIg8AXemXShX8Hg==
dependencies:
"@bonfida/sns-records" "0.0.1"
"@noble/curves" "^1.3.0"
"@scure/base" "^1.1.5"
"@solana/buffer-layout" "^4.0.1"
"@solana/spl-token" "0.3.9"
borsh "2.0.0"
buffer "^6.0.3"
graphemesplit "^2.4.4"
ipaddr.js "^2.1.0"
punycode "^2.3.1"
"@bonfida/spl-name-service@2.4.2":
version "2.4.2"
resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-2.4.2.tgz#a5802320781fa4c0a1be1b6d2f889746e53f7705"
@@ -2876,6 +2860,18 @@
progress-events "^1.0.0"
uint8arraylist "^2.4.8"
"@libp2p/interface@^1.2.0", "@libp2p/interface@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-1.4.0.tgz#19066f29c21e6ad0d7237997f13f785e3a4fd056"
integrity sha512-XkbZ0NfLVnxvWgo1nVyMwCUYDQbFYFvYPA6KUPLV7/XgcxBapVZT5sJ9hgQ4kTsqSBbjQl6YDXDxCclAPZDNTQ==
dependencies:
"@multiformats/multiaddr" "^12.2.3"
it-pushable "^3.2.3"
it-stream-types "^2.0.1"
multiformats "^13.1.0"
progress-events "^1.0.0"
uint8arraylist "^2.4.8"
"@libp2p/interfaces@^3.0.0", "@libp2p/interfaces@^3.2.0":
version "3.3.2"
resolved "https://registry.yarnpkg.com/@libp2p/interfaces/-/interfaces-3.3.2.tgz#5d8079be845b0960939b5b18880e785a4714465a"
@@ -2929,6 +2925,17 @@
interface-datastore "^8.2.0"
multiformats "^11.0.2"
"@libp2p/logger@^4.0.10":
version "4.0.13"
resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-4.0.13.tgz#9a32d933c79be8854726a1d3c69d95ed69e1f677"
integrity sha512-z1i4Ksdr4cl96Y+VwJdhdNUkwP7189oTn0AQrAQc9WnLKqRUGXWwDf2OgdpJbPU71KteZT3UXLRQGWzXKCt2Wg==
dependencies:
"@libp2p/interface" "^1.4.0"
"@multiformats/multiaddr" "^12.2.3"
debug "^4.3.4"
interface-datastore "^8.2.11"
multiformats "^13.1.0"
"@libp2p/logger@^4.0.5", "@libp2p/logger@^4.0.6", "@libp2p/logger@^4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-4.0.9.tgz#30905a37f02d52488d990d8c2318c9aa8e5ea733"
@@ -3020,6 +3027,15 @@
multiformats "^13.1.0"
uint8arrays "^5.0.3"
"@libp2p/peer-id@^4.0.10":
version "4.1.2"
resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-4.1.2.tgz#41f309087bf8a449f4ab7730f8bc21f7b5d4d461"
integrity sha512-kJmomQLUAbp6MazpAugjiOfEvzTG8aMfUoF4zmUU4b/8wA+fe8mpvPoPTvqgM13XuMB1QzG0SRF1ozQXoRxyWw==
dependencies:
"@libp2p/interface" "^1.4.0"
multiformats "^13.1.0"
uint8arrays "^5.1.0"
"@libp2p/peer-record@^7.0.12", "@libp2p/peer-record@^7.0.9":
version "7.0.12"
resolved "https://registry.yarnpkg.com/@libp2p/peer-record/-/peer-record-7.0.12.tgz#ecee0561428b2c9607e952c2543f5fa2a2440341"
@@ -3204,6 +3220,13 @@
"@multiformats/multiaddr" "^12.0.0"
multiformats "^13.0.0"
"@multiformats/multiaddr-to-uri@^10.0.1":
version "10.0.1"
resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.0.1.tgz#f26a480d35766e601cd02d48d148c7a4c6ff6e62"
integrity sha512-RtOBRJucMCzINPytvt1y7tJ2jr4aSKJmv3DF7/C515RJO9+nu9sZHdsk9vn251OtN8k21rAGlIHESt/BSJWAnQ==
dependencies:
"@multiformats/multiaddr" "^12.0.0"
"@multiformats/multiaddr-to-uri@^9.0.1":
version "9.0.8"
resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.8.tgz#c0b1491b26a4d52273ddc16024c59ba47ef8583f"
@@ -3236,6 +3259,19 @@
uint8-varint "^2.0.1"
uint8arrays "^5.0.0"
"@multiformats/multiaddr@^12.2.3":
version "12.2.3"
resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.2.3.tgz#b669bb39fa6999f9a35d03471c702630771a624e"
integrity sha512-qUP24ZgYXnyZs0lpYBvPg8Jyn3KFOJFH3a3tAcupulYIVQpR+3/fbaAZp4dYUJxBIDTOfEIpvPKm0DOFxbCDKw==
dependencies:
"@chainsafe/is-ip" "^2.0.1"
"@chainsafe/netmask" "^2.0.0"
"@libp2p/interface" "^1.0.0"
"@multiformats/dns" "^1.0.3"
multiformats "^13.0.0"
uint8-varint "^2.0.1"
uint8arrays "^5.0.0"
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
@@ -3341,68 +3377,6 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
"@plebbit/plebbit-js@https://github.com/plebbit/plebbit-js.git#347579798478c27eea4808b923ab6f21799fce89":
version "0.0.3"
resolved "https://github.com/plebbit/plebbit-js.git#347579798478c27eea4808b923ab6f21799fce89"
dependencies:
"@bonfida/spl-name-service" "2.3.8"
"@chainsafe/libp2p-gossipsub" "12.0.0"
"@chainsafe/libp2p-noise" "15.0.0"
"@chainsafe/libp2p-yamux" "6.0.2"
"@ensdomains/eth-ens-namehash" "2.0.15"
"@keyv/sqlite" "3.6.7"
"@libp2p/autonat" "1.0.12"
"@libp2p/bootstrap" "10.0.15"
"@libp2p/circuit-relay-v2" "^1.0.15"
"@libp2p/identify" "1.0.14"
"@libp2p/kad-dht" "12.0.7"
"@libp2p/mplex" "10.0.15"
"@libp2p/peer-id-factory" "4.0.6"
"@libp2p/webrtc" "4.0.19"
"@libp2p/webtransport" "4.0.19"
"@plebbit/plebbit-logger" "github:plebbit/plebbit-logger#355a96d7659ed820047980049dfa627d30d83a69"
"@plebbit/proper-lockfile" "github:plebbit/node-proper-lockfile#7fd6332117340c1d3d98dd0afee2d31cc06f72b8"
"@types/proper-lockfile" "4.1.2"
"@types/uuid" "8.3.4"
assert "2.1.0"
better-sqlite3 "9.3.0"
buffer "6.0.3"
captcha-canvas "3.2.1"
cbor "9.0.1"
debounce "1.2.1"
err-code "3.0.1"
ethers "6.10.0"
ext-name "5.0.0"
file-type "16.5.4"
hpagent "1.2.0"
ipfs-only-hash "4.0.0"
jose "4.11.0"
js-sha256 "0.9.0"
keyv "4.5.4"
knex "3.1.0"
kubo-rpc-client "3.0.3"
libp2p "1.2.1"
libp2p-crypto "0.21.2"
limiter-es6-compat "2.1.2"
localforage "1.10.0"
lodash-es "4.17.21"
lru-cache "10.1.0"
open-graph-scraper "6.3.3"
p-limit "4.0.0"
p-timeout "6.1.2"
peer-id "0.16.0"
probe-image-size "7.2.3"
retry "0.13.1"
rpc-websockets "7.9.0"
safe-stable-stringify "2.4.3"
sha1-uint8array "0.10.7"
skia-canvas "1.0.0"
tiny-typed-emitter "2.1.0"
tinycache "1.1.2"
ts-custom-error "3.3.1"
uuid "9.0.1"
viem "1.5.2"
"@plebbit/plebbit-js@https://github.com/plebbit/plebbit-js.git#3debda4034d18cf62ae46a4257a47284a8281e31":
version "0.0.3"
resolved "https://github.com/plebbit/plebbit-js.git#3debda4034d18cf62ae46a4257a47284a8281e31"
@@ -3466,6 +3440,68 @@
uuid "9.0.1"
viem "1.5.2"
"@plebbit/plebbit-js@https://github.com/plebbit/plebbit-js.git#b6f43c4b639b57622318c46a2e46792ae5fb01c3":
version "0.0.3"
resolved "https://github.com/plebbit/plebbit-js.git#b6f43c4b639b57622318c46a2e46792ae5fb01c3"
dependencies:
"@bonfida/spl-name-service" "2.4.2"
"@chainsafe/libp2p-gossipsub" "12.0.0"
"@chainsafe/libp2p-noise" "15.0.0"
"@chainsafe/libp2p-yamux" "6.0.2"
"@keyv/sqlite" "3.6.7"
"@libp2p/autonat" "1.0.12"
"@libp2p/bootstrap" "10.0.15"
"@libp2p/circuit-relay-v2" "^1.0.15"
"@libp2p/identify" "1.0.14"
"@libp2p/kad-dht" "12.0.7"
"@libp2p/mplex" "10.0.15"
"@libp2p/peer-id-factory" "4.0.6"
"@libp2p/webrtc" "4.0.19"
"@libp2p/webtransport" "4.0.19"
"@plebbit/plebbit-logger" "github:plebbit/plebbit-logger#355a96d7659ed820047980049dfa627d30d83a69"
"@plebbit/proper-lockfile" "github:plebbit/node-proper-lockfile#7fd6332117340c1d3d98dd0afee2d31cc06f72b8"
"@types/proper-lockfile" "4.1.2"
"@types/uuid" "8.3.4"
assert "2.1.0"
better-sqlite3 "9.3.0"
buffer "6.0.3"
captcha-canvas "3.2.1"
cbor "9.0.1"
debounce "1.2.1"
err-code "3.0.1"
ethers "6.10.0"
ext-name "5.0.0"
file-type "16.5.4"
hpagent "1.2.0"
jose "4.11.0"
js-sha256 "0.9.0"
js-sha512 "0.9.0"
keyv "4.5.4"
knex "3.1.0"
kubo-rpc-client "4.1.1"
libp2p "1.2.1"
libp2p-crypto "0.21.2"
limiter-es6-compat "2.1.2"
localforage "1.10.0"
lru-cache "10.1.0"
open-graph-scraper "6.3.3"
p-limit "4.0.0"
p-timeout "6.1.2"
peer-id "0.16.0"
probe-image-size "7.2.3"
remeda "1.57.0"
retry "0.13.1"
rpc-websockets "7.10.0"
safe-stable-stringify "2.4.3"
sha1-uint8array "0.10.7"
skia-canvas "1.0.0"
tiny-typed-emitter "2.1.0"
tinycache "1.1.2"
ts-custom-error "3.3.1"
typestub-ipfs-only-hash "4.0.0"
uuid "9.0.1"
viem "1.5.2"
"@plebbit/plebbit-logger@github:plebbit/plebbit-logger#355a96d7659ed820047980049dfa627d30d83a69":
version "0.0.1"
uid "355a96d7659ed820047980049dfa627d30d83a69"
@@ -3479,11 +3515,11 @@
dependencies:
debug "4.3.4"
"@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#6d0d38ad52ce77715cb05be6cec55d691f5f013d":
"@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#ebad94cad75020c6eef2516fffc87f5a7b7181ff":
version "0.0.1"
resolved "https://github.com/plebbit/plebbit-react-hooks.git#6d0d38ad52ce77715cb05be6cec55d691f5f013d"
resolved "https://github.com/plebbit/plebbit-react-hooks.git#ebad94cad75020c6eef2516fffc87f5a7b7181ff"
dependencies:
"@plebbit/plebbit-js" "https://github.com/plebbit/plebbit-js.git#347579798478c27eea4808b923ab6f21799fce89"
"@plebbit/plebbit-js" "https://github.com/plebbit/plebbit-js.git#3debda4034d18cf62ae46a4257a47284a8281e31"
"@plebbit/plebbit-logger" "https://github.com/plebbit/plebbit-logger.git"
assert "2.0.0"
ethers "5.6.9"
@@ -3495,11 +3531,11 @@
uuid "8.3.2"
zustand "4.0.0"
"@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#ebad94cad75020c6eef2516fffc87f5a7b7181ff":
"@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#f0ae8cd285f282d82eafd290e3b73525faa8ec6b":
version "0.0.1"
resolved "https://github.com/plebbit/plebbit-react-hooks.git#ebad94cad75020c6eef2516fffc87f5a7b7181ff"
resolved "https://github.com/plebbit/plebbit-react-hooks.git#f0ae8cd285f282d82eafd290e3b73525faa8ec6b"
dependencies:
"@plebbit/plebbit-js" "https://github.com/plebbit/plebbit-js.git#3debda4034d18cf62ae46a4257a47284a8281e31"
"@plebbit/plebbit-js" "https://github.com/plebbit/plebbit-js.git#b6f43c4b639b57622318c46a2e46792ae5fb01c3"
"@plebbit/plebbit-logger" "https://github.com/plebbit/plebbit-logger.git"
assert "2.0.0"
ethers "5.6.9"
@@ -5561,6 +5597,13 @@ blob-to-it@^2.0.0:
dependencies:
browser-readablestream-to-it "^2.0.0"
blob-to-it@^2.0.5:
version "2.0.7"
resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.7.tgz#637b8bb14963a7fce658ee758d9251dd1ee9fd3c"
integrity sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ==
dependencies:
browser-readablestream-to-it "^2.0.0"
bluebird-lst@^1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c"
@@ -5701,6 +5744,11 @@ browser-readablestream-to-it@^2.0.0:
resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.5.tgz#61539778c800930dfee1d4c361a060c99bbaa760"
integrity sha512-obLCT9jnxAeZlbaRWluUiZrcSJEoi2JkM0eoiJqlIP7MFwZwZjcB6giZvD343PXfr96ilD91M/wFqFvyAZq+Gg==
browser-readablestream-to-it@^2.0.5:
version "2.0.7"
resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.7.tgz#ddcc4b34a4b08ef415f89eb215297acea3e05fd0"
integrity sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==
browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0:
version "4.23.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
@@ -7005,6 +7053,14 @@ dag-jose@^4.0.0:
"@ipld/dag-cbor" "^9.0.0"
multiformats "^11.0.0"
dag-jose@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-5.1.0.tgz#1c87391b199444ce5fb78cb53e708b7d79e095d8"
integrity sha512-IwxGBJTNdYquQebgFZHC2AFLs9isDM5WNopw3fzZeGh4ZGuKN2oW6Xj9qtXD/RS35gaLaxUTFxz2GC0GedYRhA==
dependencies:
"@ipld/dag-cbor" "^9.0.0"
multiformats "^13.1.0"
damerau-levenshtein@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
@@ -7669,7 +7725,7 @@ electron-dl@^3.2.1:
pupa "^2.0.1"
unused-filename "^2.1.0"
electron-fetch@^1.7.2:
electron-fetch@^1.7.2, electron-fetch@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f"
integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==
@@ -9973,7 +10029,7 @@ ipfs-core-utils@^0.18.0:
timeout-abort-controller "^3.0.0"
uint8arrays "^4.0.2"
ipfs-only-hash@4.0.0:
ipfs-only-hash@4.0.0, ipfs-only-hash@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz#b3bd60a244d9eb7394961aa9d812a2e5ac7c04d6"
integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA==
@@ -10001,6 +10057,15 @@ ipfs-unixfs-importer@^7.0.1:
rabin-wasm "^0.1.4"
uint8arrays "^2.1.2"
ipfs-unixfs@^11.1.4:
version "11.1.4"
resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.1.4.tgz#392bfb819c1186cafff97794876bfdeb8c3a5bfe"
integrity sha512-RE4nyx5qgG2w7JOLj0Y0D7SfAR1ZkEdramNaBx0OSD4DlQ2Y2NORgc4FHfej3Pgy31v+QISDVP1pQJhdv3bUUg==
dependencies:
err-code "^3.0.1"
protons-runtime "^5.4.0"
uint8arraylist "^2.4.8"
ipfs-unixfs@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e"
@@ -10490,7 +10555,7 @@ iso-random-stream@^2.0.0:
events "^3.3.0"
readable-stream "^3.4.0"
iso-url@^1.1.5:
iso-url@^1.1.5, iso-url@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811"
integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==
@@ -10619,11 +10684,23 @@ it-glob@^1.0.1:
"@types/minimatch" "^3.0.4"
minimatch "^3.0.4"
it-glob@^2.0.6:
version "2.0.7"
resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-2.0.7.tgz#9c65a14dd89d3c19c0eaec50d382ee2b2396caba"
integrity sha512-FjL2rAsGu566sMVKexFG5ciDoKoi1lgwXlSE6DW0yVbGRyvrlzi0OQ3fbfrw89dpIAzJFHnLNQwZS4yRkt3d/Q==
dependencies:
minimatch "^9.0.4"
it-last@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/it-last/-/it-last-2.0.1.tgz#a6f3253459cb77e917aeada3b2c4ae9f3e66c64b"
integrity sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==
it-last@^3.0.4:
version "3.0.6"
resolved "https://registry.yarnpkg.com/it-last/-/it-last-3.0.6.tgz#53b1463e47fcaa950375968002598686101de6ab"
integrity sha512-M4/get95O85u2vWvWQinF8SJUc/RPC5bWTveBTYXvlP2q5TF9Y+QhT3nz+CRCyS2YEc66VJkyl/da6WrJ0wKhw==
it-length-prefixed-stream@^1.0.0, it-length-prefixed-stream@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.6.tgz#b757b96d352da6e97b66002dd2ead32893ba2337"
@@ -10702,6 +10779,11 @@ it-peekable@^3.0.0:
resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.3.tgz#5f5741f34f3acd5735804f40d198652c54a3d8c1"
integrity sha512-Wx21JX/rMzTEl9flx3DGHuPV1KQFGOl8uoKfQtmZHgPQtGb89eQ6RyVd82h3HuP9Ghpt0WgBDlmmdWeHXqyx7w==
it-peekable@^3.0.3:
version "3.0.5"
resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.5.tgz#63b0c750e27e2ba0c1db6d6a3496b7ef51a6547d"
integrity sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==
it-pipe@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-3.0.1.tgz#b25720df82f4c558a8532602b5fbc37bbe4e7ba5"
@@ -11657,6 +11739,44 @@ kubo-rpc-client@3.0.3:
stream-to-it "^0.2.4"
uint8arrays "^4.0.3"
kubo-rpc-client@4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-4.1.1.tgz#31ca09b24233948919be43bc3971708313c09bf1"
integrity sha512-vxIkTQLvDqd2DEcBfz7DWegAidYtopmWUR/UhWyuuss9+JNFzV5neBn8BKxSDHoLJPvkxJpqXDaJhsb7ZuPouQ==
dependencies:
"@ipld/dag-cbor" "^9.0.0"
"@ipld/dag-json" "^10.0.0"
"@ipld/dag-pb" "^4.0.0"
"@libp2p/interface" "^1.2.0"
"@libp2p/logger" "^4.0.10"
"@libp2p/peer-id" "^4.0.10"
"@multiformats/multiaddr" "^12.2.1"
"@multiformats/multiaddr-to-uri" "^10.0.1"
any-signal "^4.1.1"
blob-to-it "^2.0.5"
browser-readablestream-to-it "^2.0.5"
dag-jose "^5.0.0"
electron-fetch "^1.9.1"
err-code "^3.0.1"
ipfs-unixfs "^11.1.4"
iso-url "^1.2.1"
it-all "^3.0.4"
it-first "^3.0.4"
it-glob "^2.0.6"
it-last "^3.0.4"
it-map "^3.0.5"
it-peekable "^3.0.3"
it-to-stream "^1.0.0"
merge-options "^3.0.4"
multiformats "^13.1.0"
nanoid "^5.0.7"
native-fetch "^4.0.2"
parse-duration "^1.0.2"
react-native-fetch-api "^3.0.0"
stream-to-it "^1.0.1"
uint8arrays "^5.0.3"
wherearewe "^2.0.1"
language-subtag-registry@^0.3.20:
version "0.3.22"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d"
@@ -12700,7 +12820,7 @@ minimatch@^5.0.1:
dependencies:
brace-expansion "^2.0.1"
minimatch@^9.0.1:
minimatch@^9.0.1, minimatch@^9.0.4:
version "9.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
@@ -12934,6 +13054,11 @@ nanoid@^4.0.0:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e"
integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==
nanoid@^5.0.7:
version "5.0.7"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.7.tgz#6452e8c5a816861fd9d2b898399f7e5fd6944cc6"
integrity sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==
napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
@@ -15166,6 +15291,11 @@ remark-supersub@1.0.0:
dependencies:
unist-util-visit "^4.0.0"
remeda@1.57.0:
version "1.57.0"
resolved "https://registry.yarnpkg.com/remeda/-/remeda-1.57.0.tgz#cd404dde59a033c7da2a42ab7b6aa6b9352a21a1"
integrity sha512-guUqXntj7WtPuT1DLmfNCeyMZ2pE5m4ffJnWkOsbVQSvPsGIhNcKeFV94LTxqggOWwaIubUd4FZKTlGIOg2wDw==
renderkid@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a"
@@ -15340,7 +15470,7 @@ rpc-websockets@7.10.0:
bufferutil "^4.0.1"
utf-8-validate "^5.0.2"
rpc-websockets@7.9.0, rpc-websockets@^7.5.1:
rpc-websockets@^7.5.1:
version "7.9.0"
resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.9.0.tgz#a3938e16d6f134a3999fdfac422a503731bf8973"
integrity sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==
@@ -16065,6 +16195,13 @@ stream-to-it@^0.2.2, stream-to-it@^0.2.4:
dependencies:
get-iterator "^1.0.2"
stream-to-it@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-1.0.1.tgz#7d5e1b04bab70facd48273279bfa49f0d0165950"
integrity sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA==
dependencies:
it-stream-types "^2.0.1"
string-argv@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
@@ -16968,6 +17105,13 @@ typescript@5.2.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
typestub-ipfs-only-hash@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/typestub-ipfs-only-hash/-/typestub-ipfs-only-hash-4.0.0.tgz#12e7d0e13947884b5b7d8091b9a17073fdf71d2d"
integrity sha512-HKLePX0XiPiyqoueSfvCLL9SIzvKBXjASaRoR0yk/gUbbK7cqejU6/tjhihwmzBCvWbx5aMQ2LYsYIpMK7Ikpg==
dependencies:
ipfs-only-hash "^4.0.0"
uglify-js@^3.1.4:
version "3.17.4"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"
@@ -17016,6 +17160,13 @@ uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2, uint8arrays@^5.0.3:
dependencies:
multiformats "^13.0.0"
uint8arrays@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1"
integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==
dependencies:
multiformats "^13.0.0"
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"