mirror of
https://github.com/hotomoe/hotomoe
synced 2024-12-05 10:18:09 +09:00
Merge branch 'develop'
This commit is contained in:
commit
ae63a1f494
@ -9,7 +9,12 @@
|
||||
You should also include the user name that made the change.
|
||||
-->
|
||||
|
||||
## 13.2.0 (2021/01/23)
|
||||
## 13.2.1 (2023/01/24)
|
||||
### Improvements
|
||||
- デザインの調整
|
||||
- サーバーのパフォーマンスを改善
|
||||
|
||||
## 13.2.0 (2023/01/23)
|
||||
|
||||
### Improvements
|
||||
- onlyServer / onlyQueue オプションを復活
|
||||
|
@ -20,7 +20,7 @@ gulp.task('copy:frontend:fonts', () =>
|
||||
);
|
||||
|
||||
gulp.task('copy:frontend:tabler-icons', () =>
|
||||
gulp.src('./packages/frontend/node_modules/@tabler/icons/iconfont/**/*').pipe(gulp.dest('./built/_frontend_dist_/tabler-icons/'))
|
||||
gulp.src('./packages/frontend/node_modules/@tabler/icons-webfont/**/*').pipe(gulp.dest('./built/_frontend_dist_/tabler-icons/'))
|
||||
);
|
||||
|
||||
gulp.task('copy:frontend:locales', cb => {
|
||||
|
@ -1104,9 +1104,12 @@ _achievements:
|
||||
title: "I Love Misskey"
|
||||
description: "Sende \"I ❤ #Misskey\""
|
||||
flavor: "Danke, dass du Misskey verwendest! - vom Entwicklerteam"
|
||||
_foundTreasure:
|
||||
title: "Schatzsuche"
|
||||
description: "Du hast einen verborgenen Schatz gefunden"
|
||||
_client30min:
|
||||
title: "Kleine Pause"
|
||||
description: "Seit dem Öffnen deines Clients sind 30 Minuten vergangen"
|
||||
title: "Kurze Pause"
|
||||
description: "Habe Misskey für 30 Minuten geöffnet"
|
||||
_noteDeletedWithin1min:
|
||||
title: "Ups"
|
||||
description: "Lösche eine Notiz innerhalb von 1 Minute nachdem sie gesendet wurde"
|
||||
@ -1124,6 +1127,9 @@ _achievements:
|
||||
_htl20npm:
|
||||
title: "Fließende Chronik"
|
||||
description: "Deine Startseitenchronik erreicht eine Geschwindigkeit von 20 npm (Notizen pro Minute)"
|
||||
_viewInstanceChart:
|
||||
title: "Analyst"
|
||||
description: "Schau dir die Messwerte der Instanz an"
|
||||
_outputHelloWorldOnScratchpad:
|
||||
title: "Hallo Welt!"
|
||||
description: "Gib \"hello world\" in der Testumgebung aus"
|
||||
|
@ -945,7 +945,7 @@ _achievements:
|
||||
_notes1:
|
||||
title: "just setting up my msky"
|
||||
description: "Post your first note"
|
||||
flavor: "Have a good Misskey life!"
|
||||
flavor: "Have a good time with Misskey!"
|
||||
_notes10:
|
||||
title: "Some notes"
|
||||
description: "Post 10 notes"
|
||||
@ -1104,6 +1104,9 @@ _achievements:
|
||||
title: "I Love Misskey"
|
||||
description: "Post \"I ❤ #Misskey\""
|
||||
flavor: "Misskey's development team greatly appreciates your support!"
|
||||
_foundTreasure:
|
||||
title: "Treasure Hunt"
|
||||
description: "You've found the hidden treasure"
|
||||
_client30min:
|
||||
title: "Short break"
|
||||
description: "Spend 30 minutes on Misskey"
|
||||
@ -1124,6 +1127,9 @@ _achievements:
|
||||
_htl20npm:
|
||||
title: "Flowing Timeline"
|
||||
description: "Have the speed of your home timeline exceed 20 npm (notes per minute)"
|
||||
_viewInstanceChart:
|
||||
title: "Analyst"
|
||||
description: "View your instance's charts"
|
||||
_outputHelloWorldOnScratchpad:
|
||||
title: "Hello, world!"
|
||||
description: "Output \"hello world\" in the Scratchpad"
|
||||
|
@ -1059,8 +1059,8 @@ _achievements:
|
||||
description: "Aggiungi le orecchie da gatto al tuo profilo"
|
||||
flavor: "Ti chiamerò..."
|
||||
_following1:
|
||||
title: "Hai seguito il tuo primo profilo"
|
||||
description: "Il tuo primo profilo Follower"
|
||||
title: "Il mio primo Follow"
|
||||
description: "Hai seguito il tuo primo profilo"
|
||||
_following10:
|
||||
title: "Segui, segui!"
|
||||
description: "Hai seguito 10 profili"
|
||||
@ -1074,17 +1074,17 @@ _achievements:
|
||||
title: "Sovraccarico di amici"
|
||||
description: "Hai seguito 300 profili"
|
||||
_followers1:
|
||||
title: "Primo Follower"
|
||||
description: "Hai ottenuto un Follower"
|
||||
title: "Il primo profilo tuo Follower"
|
||||
description: "Hai ottenuto il tuo primo Follower"
|
||||
_followers10:
|
||||
title: "Follow me!"
|
||||
description: "Hai ottenuto 10 Follower"
|
||||
description: "Hai ottenuto 10 profili Follower"
|
||||
_followers50:
|
||||
title: "Follower a frotte"
|
||||
description: "Hai ottenuto 50 Follower"
|
||||
_followers100:
|
||||
title: "Popolare"
|
||||
description: "Hai ottenuto 100 Follower"
|
||||
description: "Hai ottenuto 100 profili Follower"
|
||||
_followers300:
|
||||
title: "Mettetevi in fila"
|
||||
description: "Hai ottenuto 300 Follower"
|
||||
@ -1093,7 +1093,7 @@ _achievements:
|
||||
description: "Hai ottenuto 500 Follower"
|
||||
_followers1000:
|
||||
title: "Influenzer"
|
||||
description: "Hai superato i 1.000 Follower"
|
||||
description: "Hai superato i 1.000 profili Follower"
|
||||
_collectAchievements30:
|
||||
title: "Collezionista di successi"
|
||||
description: "Hai raggiunto 30 obiettivi"
|
||||
@ -1104,9 +1104,12 @@ _achievements:
|
||||
title: "I LOVE Misskey"
|
||||
description: "Pubblica «I ♥ #Misskey»"
|
||||
flavor: "Grazie per aver utilizzato Misskey! Dal team di sviluppo"
|
||||
_foundTreasure:
|
||||
title: "Caccia al tesoro"
|
||||
description: "Hai trovato un tesoro nascosto"
|
||||
_client30min:
|
||||
title: "Piccola pausa"
|
||||
description: "Hai passato più di 30 minuti di fila su Misskey"
|
||||
description: "Hai passato più di 30 minuti su Misskey"
|
||||
_noteDeletedWithin1min:
|
||||
title: "Ooops!"
|
||||
description: "Hai eliminato una nota entro un minuto dalla sua pubblicazione"
|
||||
@ -1124,6 +1127,9 @@ _achievements:
|
||||
_htl20npm:
|
||||
title: "Timeline scorrevole"
|
||||
description: "La tua Timeline personale ha superato la velocità di 20 Note orarie (Note al minuto)"
|
||||
_viewInstanceChart:
|
||||
title: "Analista"
|
||||
description: "Visualizza i grafici dell'istanza"
|
||||
_outputHelloWorldOnScratchpad:
|
||||
title: "Hello, world!"
|
||||
description: "Hai scritto «Hello world» nel blocco appunti"
|
||||
@ -1501,8 +1507,8 @@ _sfx:
|
||||
channel: "Notifiche di canale"
|
||||
_ago:
|
||||
future: "Futuro"
|
||||
justNow: "Ora"
|
||||
secondsAgo: "{n}s fa"
|
||||
justNow: "Adesso"
|
||||
secondsAgo: "{n} sec fa"
|
||||
minutesAgo: "{n} min fa"
|
||||
hoursAgo: "{n} ore fa"
|
||||
daysAgo: "{n} gg fa"
|
||||
|
@ -938,13 +938,13 @@ cannotPerformTemporary: "일시적으로 사용할 수 없음"
|
||||
cannotPerformTemporaryDescription: "조작 횟수 제한을 초과하여 일시적으로 사용이 불가합니다. 잠시 후 다시 시도해 주세요."
|
||||
preset: "프리셋"
|
||||
selectFromPresets: "프리셋에서 선택"
|
||||
achievements: "도전과제"
|
||||
achievements: "도전 과제"
|
||||
_achievements:
|
||||
earnedAt: "달성 일시"
|
||||
_types:
|
||||
_notes1:
|
||||
title: "미스키 설정하고 있었는데요"
|
||||
description: "첫 노트를 포스트했습니다"
|
||||
title: "미스키 시작했는데요"
|
||||
description: "첫 노트를 작성했습니다"
|
||||
flavor: "Misskey에 오신 것을 환영합니다!"
|
||||
_notes10:
|
||||
title: "노트 조금"
|
||||
@ -962,7 +962,7 @@ _achievements:
|
||||
title: "노트가 어디서 솟아?"
|
||||
description: "5,000개의 노트를 작성했습니다"
|
||||
_notes10000:
|
||||
title: "슈퍼-노트"
|
||||
title: "슈퍼 노트"
|
||||
description: "10,000개의 노트를 작성했습니다"
|
||||
_notes20000:
|
||||
title: "노트 더 없어?"
|
||||
@ -989,7 +989,7 @@ _achievements:
|
||||
title: "노트 우주"
|
||||
description: "90,000개의 노트를 작성했습니다"
|
||||
_notes100000:
|
||||
title: "네 모든 노트는 내 거야"
|
||||
title: "ALL YOUR NOTE ARE BELONG TO US"
|
||||
description: "100,000개의 노트를 작성했습니다"
|
||||
flavor: "이만큼 쓸 일도 없겠지만... 다른 할 일이 있진 않으신가요?"
|
||||
_login3:
|
||||
@ -1012,7 +1012,7 @@ _achievements:
|
||||
_login100:
|
||||
title: "미스키스트 III"
|
||||
description: "총 100일간 로그인했습니다"
|
||||
flavor: "그 유저, 미스키스트를 위하여"
|
||||
flavor: "그 유저, 미스키스트이다"
|
||||
_login200:
|
||||
title: "단골 I"
|
||||
description: "총 200일간 로그인했습니다"
|
||||
@ -1025,7 +1025,7 @@ _achievements:
|
||||
_login500:
|
||||
title: "베테랑 I"
|
||||
description: "총 500일간 로그인했습니다"
|
||||
flavor: "여러분, 저 이 노트들 좋아해요"
|
||||
flavor: "제군, 나는 노트가 좋다"
|
||||
_login600:
|
||||
title: "베테랑 II"
|
||||
description: "총 600일간 로그인했습니다"
|
||||
@ -1041,7 +1041,7 @@ _achievements:
|
||||
_login1000:
|
||||
title: "노트 마스터 III"
|
||||
description: "총 1,000일간 로그인했습니다"
|
||||
flavor: "미스키를 사용해 주셔서 감사합니다!"
|
||||
flavor: "Misskey를 사용해 주셔서 감사합니다!"
|
||||
_noteClipped1:
|
||||
title: "클립할 수밖에 없었어"
|
||||
description: "처음으로 노트를 클립했습니다"
|
||||
@ -1049,7 +1049,7 @@ _achievements:
|
||||
title: "별을 바라보는 자"
|
||||
description: "처음으로 노트를 즐겨찾기했습니다"
|
||||
_myNoteFavorited1:
|
||||
title: "I wanna Star"
|
||||
title: "별을 원하는 자"
|
||||
description: "다른 사람이 당신의 노트를 즐겨찾기했습니다"
|
||||
_profileFilled:
|
||||
title: "준비 완료"
|
||||
@ -1077,7 +1077,7 @@ _achievements:
|
||||
title: "첫 팔로워"
|
||||
description: "사용자가 처음으로 팔로잉했습니다"
|
||||
_followers10:
|
||||
title: "날 따라와!"
|
||||
title: "팔로우 미!"
|
||||
description: "10명의 사용자가 팔로우했습니다"
|
||||
_followers50:
|
||||
title: "이곳저곳"
|
||||
@ -1095,15 +1095,18 @@ _achievements:
|
||||
title: "유명인사"
|
||||
description: "1,000명의 사용자가 팔로우했습니다"
|
||||
_collectAchievements30:
|
||||
title: "도전과제 콜렉터"
|
||||
title: "도전 과제 콜렉터"
|
||||
description: "30개의 도전과제를 획득했습니다"
|
||||
_viewAchievements3min:
|
||||
title: "저 도전과제 좋아해요"
|
||||
description: "도전과제 목록을 3분 이상 보세요"
|
||||
description: "도전 과제 목록을 3분 이상 쳐다봤습니다"
|
||||
_iLoveMisskey:
|
||||
title: "I Love Misskey"
|
||||
description: "\"I ❤ #Misskey\"를 포스트했습니다"
|
||||
flavor: "Misskey를 이용해주셔서 감사합니다! - 개발팀 일동"
|
||||
_foundTreasure:
|
||||
title: "보물찾기"
|
||||
description: "숨겨진 보물을 발견했습니다"
|
||||
_client30min:
|
||||
title: "잠깐 쉬어"
|
||||
description: "클라이언트를 시작하고 30분이 경과하였습니다"
|
||||
@ -1116,7 +1119,7 @@ _achievements:
|
||||
flavor: "잠 좀 자세요. 걱정돼요."
|
||||
_postedAt0min0sec:
|
||||
title: "정각"
|
||||
description: "1초도 어긋나지 않은 정각에 노트를 포스트했습니다"
|
||||
description: "0분 0초 정각에 노트를 작성했습니다"
|
||||
flavor: "째깍 째깍 째깍 땡!"
|
||||
_selfQuote:
|
||||
title: "혼잣말"
|
||||
@ -1124,21 +1127,24 @@ _achievements:
|
||||
_htl20npm:
|
||||
title: "타임라인 폭주 중"
|
||||
description: "1분 사이에 홈 타임라인에 노트가 20개 넘게 생성되었습니다"
|
||||
_viewInstanceChart:
|
||||
title: "애널리스트"
|
||||
description: "인스턴스의 차트를 열었습니다"
|
||||
_outputHelloWorldOnScratchpad:
|
||||
title: "Hello, world!"
|
||||
description: "스크래치패드에서 hello world를 출력하세요"
|
||||
description: "스크래치패드에서 hello world를 출력했습니다"
|
||||
_open3windows:
|
||||
title: "멀티 윈도우"
|
||||
description: "3개 이상의 창을 여세요"
|
||||
description: "3개 이상의 창을 열었습니다"
|
||||
_driveFolderCircularReference:
|
||||
title: "순환 참조"
|
||||
description: "드라이브 폴더를 자신을 가리키도록 만드려 시도했습니다"
|
||||
_reactWithoutRead:
|
||||
title: "읽고 답하긴 하시는 건가요?"
|
||||
description: "100자가 넘는 포스트에 3초 안에 포스트했습니다"
|
||||
description: "100자가 넘는 노트가 작성되고 3초 안에 반응했습니다"
|
||||
_clickedClickHere:
|
||||
title: "여길 눌러보세요"
|
||||
description: "이 곳을 눌러봤습니다"
|
||||
description: "여길을 눌러봤습니다"
|
||||
_justPlainLucky:
|
||||
title: "그냥 운이 좋았어"
|
||||
description: "매 10초마다 0.01%의 확률로 달성됩니다"
|
||||
@ -1146,25 +1152,25 @@ _achievements:
|
||||
title: "신 콤플렉스"
|
||||
description: "이름을 syuilo로 설정했습니다"
|
||||
_passedSinceAccountCreated1:
|
||||
title: "1년"
|
||||
title: "1주년"
|
||||
description: "계정을 생성하고 1년이 지났습니다"
|
||||
_passedSinceAccountCreated2:
|
||||
title: "2년"
|
||||
title: "2주년"
|
||||
description: "계정을 생성하고 2년이 지났습니다"
|
||||
_passedSinceAccountCreated3:
|
||||
title: "3년"
|
||||
title: "3주년"
|
||||
description: "계정을 생성하고 3년이 지났습니다"
|
||||
_loggedInOnBirthday:
|
||||
title: "생일 축하합니다!"
|
||||
description: "설정한 생일에 로그인했습니다"
|
||||
description: "생일에 로그인했습니다"
|
||||
_loggedInOnNewYearsDay:
|
||||
title: "새해 복 많이 받으세요"
|
||||
description: "새해 첫 날에 로그인했습니다"
|
||||
flavor: "올해에도 저희 인스턴스에 관심을 가져 주셔서 감사합니다"
|
||||
_cookieClicked:
|
||||
title: "쿠키 클리커 게임"
|
||||
title: "쿠키를 클릭하는 게임"
|
||||
description: "쿠키를 클릭했습니다"
|
||||
flavor: "뭔가 문제가 있나요?"
|
||||
flavor: "소프트웨어 착각하지 않으셨나요?"
|
||||
_brainDiver:
|
||||
title: "Brain Diver"
|
||||
description: "Brain Diver로의 링크를 첨부했습니다"
|
||||
|
@ -1004,7 +1004,7 @@ _achievements:
|
||||
_login100:
|
||||
title: "Мискиец Ⅲ"
|
||||
description: "100 дней на сайте"
|
||||
flavor: "Жестокий Misskist "
|
||||
flavor: "Жестокий мискиец"
|
||||
_login200:
|
||||
title: "Завсегдатай Ⅰ"
|
||||
description: "200 дней на сайте"
|
||||
|
@ -942,14 +942,51 @@ achievements: "ความสำเร็จ"
|
||||
_achievements:
|
||||
earnedAt: "ได้รับเมื่อ"
|
||||
_types:
|
||||
_notes1:
|
||||
title: "เพียงแค่ตั้งค่า msky ของฉัน"
|
||||
_followers100:
|
||||
title: "บุคคลที่เป็นที่นิยม"
|
||||
_followers500:
|
||||
title: "เสาสัญญาณ"
|
||||
_followers1000:
|
||||
title: "ผู้ทรงอิทธิพล"
|
||||
_iLoveMisskey:
|
||||
title: "ฉันรัก Misskey"
|
||||
description: "โพสต์ \"I ❤ #Misskey\""
|
||||
_foundTreasure:
|
||||
title: "ล่าสมบัติ"
|
||||
description: "คุณพบสมบัติที่ซ่อนอยู่"
|
||||
_client30min:
|
||||
title: "พักผ่อนสักหน่อย"
|
||||
_noteDeletedWithin1min:
|
||||
title: "ไม่เป็นไร"
|
||||
_postedAtLateNight:
|
||||
title: "กลางคืน"
|
||||
_viewInstanceChart:
|
||||
title: "วิเคราะห์"
|
||||
description: "ดูแผนภูมิอินสแตนซ์ของคุณ"
|
||||
_driveFolderCircularReference:
|
||||
title: "อ้างอิงวงจร"
|
||||
_clickedClickHere:
|
||||
title: "คลิ๊กที่นี่"
|
||||
description: "คุณได้คลิกที่นี่"
|
||||
_passedSinceAccountCreated1:
|
||||
title: "ครบรอบหนึ่งปี"
|
||||
_passedSinceAccountCreated2:
|
||||
title: "ครบรอบสองปี"
|
||||
_passedSinceAccountCreated3:
|
||||
title: "ครบรอบสามปี"
|
||||
_loggedInOnBirthday:
|
||||
title: "สุขสันต์วันเกิด"
|
||||
description: "เข้าสู่ระบบในวันเกิดของคุณ"
|
||||
_loggedInOnNewYearsDay:
|
||||
title: "สวัสดีปีใหม่!"
|
||||
description: "เข้าสู่ระบบในวันแรกของปี"
|
||||
_cookieClicked:
|
||||
description: "คลิกคุกกี้"
|
||||
_brainDiver:
|
||||
title: "Brain Diver"
|
||||
flavor: "Misskey-Misskey La-Tu-Ma"
|
||||
_role:
|
||||
new: "บทบาทใหม่"
|
||||
edit: "แก้ไขบทบาท"
|
||||
|
@ -910,34 +910,80 @@ _achievements:
|
||||
title: "Декілька нотаток"
|
||||
description: "10 нотаток відправлено"
|
||||
_notes100:
|
||||
title: "Купа нотаток"
|
||||
description: "100 нотаток відправлено"
|
||||
_notes500:
|
||||
title: "Все в нотатках"
|
||||
description: "500 нотаток відправлено"
|
||||
_notes1000:
|
||||
title: "Гора нотаток"
|
||||
description: "1 000 нотаток відправлено"
|
||||
_notes5000:
|
||||
title: "Переповнюючі нотатки"
|
||||
description: "5 000 нотаток відправлено"
|
||||
_notes10000:
|
||||
title: "Супернотатка"
|
||||
description: "10 000 нотаток відправлено"
|
||||
_notes20000:
|
||||
title: "Треба Більше Нотаток"
|
||||
description: "20 000 нотаток відправлено"
|
||||
_notes30000:
|
||||
title: "Нотатки нотатки нотатки"
|
||||
description: "30 000 нотаток відправлено"
|
||||
_notes40000:
|
||||
title: "Фабрика нотаток"
|
||||
description: "40 000 нотаток відправлено"
|
||||
_notes50000:
|
||||
title: "Планета нотаток"
|
||||
description: "50 000 нотаток відправлено"
|
||||
_notes60000:
|
||||
title: "Нотатковий квазар"
|
||||
description: "60 000 нотаток відправлено"
|
||||
_notes70000:
|
||||
title: "Чорна нотаткова діра"
|
||||
description: "70 000 нотаток відправлено"
|
||||
_notes80000:
|
||||
title: "Галактика нотаток"
|
||||
description: "80 000 нотаток відправлено"
|
||||
_notes90000:
|
||||
title: "Нотатковерс"
|
||||
description: "90 000 нотаток відправлено"
|
||||
_notes100000:
|
||||
title: "ALL YOUR NOTE ARE BELONG TO US"
|
||||
description: "100 000 нотаток відправлено"
|
||||
flavor: "Так багато потрібно сказати?"
|
||||
_login3:
|
||||
title: "Новачок I"
|
||||
_login7:
|
||||
title: "Новачок II"
|
||||
_login15:
|
||||
title: "Новачок III"
|
||||
_login30:
|
||||
title: "Міскієць I"
|
||||
_login60:
|
||||
title: "Міскієць II"
|
||||
_login100:
|
||||
title: "Міскієць III"
|
||||
_login200:
|
||||
title: "Завсідник I"
|
||||
_login300:
|
||||
title: "Завсідник II"
|
||||
_login400:
|
||||
title: "Завсідник III"
|
||||
_login500:
|
||||
title: "Ветеран I"
|
||||
_login600:
|
||||
title: "Ветеран II"
|
||||
_login700:
|
||||
title: "Ветеран III"
|
||||
_login1000:
|
||||
flavor: "Дякуємо, що користуєтеся Misskey!"
|
||||
_passedSinceAccountCreated3:
|
||||
description: "Минуло 3 роки з моменту створення акаунта"
|
||||
_loggedInOnBirthday:
|
||||
title: "З Днем народження!"
|
||||
_brainDiver:
|
||||
flavor: "Misskey-Misskey La-Tu-Ma"
|
||||
_role:
|
||||
priority: "Пріоритет"
|
||||
_priority:
|
||||
|
@ -1007,6 +1007,9 @@ _achievements:
|
||||
flavor: "感谢您使用Misskey!"
|
||||
_noteFavorited1:
|
||||
title: "观星者"
|
||||
_profileFilled:
|
||||
title: "整装待发"
|
||||
description: "设置了个人资料"
|
||||
_markedAsCat:
|
||||
title: "我是猫"
|
||||
description: "将账户设定为一只猫"
|
||||
|
@ -950,13 +950,13 @@ _achievements:
|
||||
title: "若干貼文"
|
||||
description: "發表了10則貼文"
|
||||
_notes100:
|
||||
title: "許多的貼文"
|
||||
title: "許多貼文"
|
||||
description: "發表了100則貼文"
|
||||
_notes500:
|
||||
title: "滿滿的貼文"
|
||||
description: "發表了500則貼文"
|
||||
_notes1000:
|
||||
title: "一堆貼文"
|
||||
title: "堆積如山的貼文"
|
||||
description: "發表了1000則貼文"
|
||||
_notes5000:
|
||||
title: "滔滔不絕的貼文"
|
||||
@ -1104,6 +1104,9 @@ _achievements:
|
||||
title: "I Love Misskey"
|
||||
description: "發布「I ❤ #Misskey」"
|
||||
flavor: "感謝您使用Misskey! by 開發團隊"
|
||||
_foundTreasure:
|
||||
title: "尋寶"
|
||||
description: "發現了隱藏的寶藏"
|
||||
_client30min:
|
||||
title: "休息一下"
|
||||
description: "用戶端啟動已超過30分鐘"
|
||||
@ -1124,6 +1127,9 @@ _achievements:
|
||||
_htl20npm:
|
||||
title: "流動的TL"
|
||||
description: "在首頁時間軸的流速超過20npm"
|
||||
_viewInstanceChart:
|
||||
title: "分析師"
|
||||
description: "顯示了實例的圖表"
|
||||
_outputHelloWorldOnScratchpad:
|
||||
title: "Hello world!"
|
||||
description: "在暫存記憶體輸出了 hello world"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"version": "13.2.0",
|
||||
"version": "13.2.1",
|
||||
"codename": "nasubi",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -54,12 +54,12 @@
|
||||
"devDependencies": {
|
||||
"@types/gulp": "4.0.10",
|
||||
"@types/gulp-rename": "2.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "5.48.2",
|
||||
"@typescript-eslint/parser": "5.48.2",
|
||||
"@typescript-eslint/eslint-plugin": "5.49.0",
|
||||
"@typescript-eslint/parser": "5.49.0",
|
||||
"cross-env": "7.0.3",
|
||||
"cypress": "12.3.0",
|
||||
"eslint": "^8.32.0",
|
||||
"start-server-and-test": "1.15.2"
|
||||
"start-server-and-test": "1.15.3"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@tensorflow/tfjs-core": "^4.2.0"
|
||||
|
@ -19,8 +19,8 @@
|
||||
"test-and-coverage": "pnpm jest-and-coverage"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@tensorflow/tfjs": "^4.1.0",
|
||||
"@tensorflow/tfjs-node": "4.1.0"
|
||||
"@tensorflow/tfjs": "^4.2.0",
|
||||
"@tensorflow/tfjs-node": "4.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bull-board/api": "^4.11.0",
|
||||
@ -69,9 +69,8 @@
|
||||
"ip-cidr": "3.0.11",
|
||||
"is-svg": "4.3.2",
|
||||
"js-yaml": "4.1.0",
|
||||
"jsdom": "21.0.0",
|
||||
"jsdom": "21.1.0",
|
||||
"json5": "2.2.3",
|
||||
"json5-loader": "4.0.1",
|
||||
"jsonld": "8.1.0",
|
||||
"jsrsasign": "10.6.1",
|
||||
"mfm-js": "0.23.3",
|
||||
@ -176,8 +175,8 @@
|
||||
"@types/web-push": "3.3.2",
|
||||
"@types/websocket": "1.0.5",
|
||||
"@types/ws": "8.5.4",
|
||||
"@typescript-eslint/eslint-plugin": "5.48.2",
|
||||
"@typescript-eslint/parser": "5.48.2",
|
||||
"@typescript-eslint/eslint-plugin": "5.49.0",
|
||||
"@typescript-eslint/parser": "5.49.0",
|
||||
"cross-env": "7.0.3",
|
||||
"eslint": "8.32.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
|
@ -4,8 +4,8 @@ import * as util from 'node:util';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import IPCIDR from 'ip-cidr';
|
||||
import PrivateIp from 'private-ip';
|
||||
import got, * as Got from 'got';
|
||||
import chalk from 'chalk';
|
||||
import { buildConnector } from 'undici';
|
||||
import { DI } from '@/di-symbols.js';
|
||||
import type { Config } from '@/config.js';
|
||||
import { HttpRequestService, UndiciFetcher } from '@/core/HttpRequestService.js';
|
||||
@ -13,7 +13,6 @@ import { createTemp } from '@/misc/create-temp.js';
|
||||
import { StatusError } from '@/misc/status-error.js';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import { buildConnector } from 'undici';
|
||||
|
||||
const pipeline = util.promisify(stream.pipeline);
|
||||
import { bindThis } from '@/decorators.js';
|
||||
@ -32,23 +31,20 @@ export class DownloadService {
|
||||
) {
|
||||
this.logger = this.loggerService.getLogger('download');
|
||||
|
||||
this.undiciFetcher = new UndiciFetcher(this.httpRequestService.getStandardUndiciFetcherOption(
|
||||
{
|
||||
connect: process.env.NODE_ENV === 'development' ?
|
||||
this.httpRequestService.clientDefaults.connect
|
||||
:
|
||||
this.httpRequestService.getConnectorWithIpCheck(
|
||||
buildConnector({
|
||||
...this.httpRequestService.clientDefaults.connect,
|
||||
}),
|
||||
(ip) => !this.isPrivateIp(ip)
|
||||
),
|
||||
bodyTimeout: 30 * 1000,
|
||||
},
|
||||
{
|
||||
connect: this.httpRequestService.clientDefaults.connect,
|
||||
}
|
||||
), this.logger);
|
||||
this.undiciFetcher = this.httpRequestService.createFetcher({
|
||||
connect: process.env.NODE_ENV === 'development' ?
|
||||
this.httpRequestService.clientDefaults.connect
|
||||
:
|
||||
this.httpRequestService.getConnectorWithIpCheck(
|
||||
buildConnector({
|
||||
...this.httpRequestService.clientDefaults.connect,
|
||||
}),
|
||||
(ip) => !this.isPrivateIp(ip),
|
||||
),
|
||||
bodyTimeout: 30 * 1000,
|
||||
}, {
|
||||
connect: this.httpRequestService.clientDefaults.connect,
|
||||
}, this.logger);
|
||||
}
|
||||
|
||||
@bindThis
|
||||
|
@ -1,14 +1,14 @@
|
||||
import * as http from 'node:http';
|
||||
import * as https from 'node:https';
|
||||
import { LookupFunction } from 'node:net';
|
||||
import CacheableLookup from 'cacheable-lookup';
|
||||
import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import * as undici from 'undici';
|
||||
import { DI } from '@/di-symbols.js';
|
||||
import type { Config } from '@/config.js';
|
||||
import { StatusError } from '@/misc/status-error.js';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
import * as undici from 'undici';
|
||||
import { LookupFunction } from 'node:net';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import type Logger from '@/logger.js';
|
||||
|
||||
@ -62,7 +62,7 @@ export class UndiciFetcher {
|
||||
undici.buildConnector(args.agentOptions.connect as undici.buildConnector.BuildOptions)(options, (err, socket) => {
|
||||
this.logger?.debug('Socket connector called', socket);
|
||||
if (err) {
|
||||
this.logger?.debug(`Socket error`, err);
|
||||
this.logger?.debug('Socket error', err);
|
||||
cb(new Error(`Error while socket connecting\n${err}`), null);
|
||||
return;
|
||||
}
|
||||
@ -79,20 +79,20 @@ export class UndiciFetcher {
|
||||
|
||||
uri: args.proxy.uri,
|
||||
|
||||
connect: (process.env.NODE_ENV !== 'production' && typeof (args.proxy?.options?.connect ?? args.agentOptions.connect) !== 'function')
|
||||
connect: (process.env.NODE_ENV !== 'production' && typeof (args.proxy.options?.connect ?? args.agentOptions.connect) !== 'function')
|
||||
? (options, cb) => {
|
||||
// Custom connector for debug
|
||||
undici.buildConnector((args.proxy?.options?.connect ?? args.agentOptions.connect) as undici.buildConnector.BuildOptions)(options, (err, socket) => {
|
||||
this.logger?.debug('Socket connector called (secure)', socket);
|
||||
if (err) {
|
||||
this.logger?.debug(`Socket error`, err);
|
||||
this.logger?.debug('Socket error', err);
|
||||
cb(new Error(`Error while socket connecting\n${err}`), null);
|
||||
return;
|
||||
}
|
||||
this.logger?.debug(`Socket connected (secure): port ${socket.localPort} => remote ${socket.remoteAddress}`);
|
||||
cb(null, socket);
|
||||
});
|
||||
} : (args.proxy?.options?.connect ?? args.agentOptions.connect),
|
||||
} : (args.proxy.options?.connect ?? args.agentOptions.connect),
|
||||
})
|
||||
: this.nonProxiedAgent;
|
||||
}
|
||||
@ -115,7 +115,7 @@ export class UndiciFetcher {
|
||||
public async fetch(
|
||||
url: string | URL,
|
||||
options: undici.RequestInit = {},
|
||||
privateOptions: { noOkError?: boolean; bypassProxy?: boolean; } = { noOkError: false, bypassProxy: false }
|
||||
privateOptions: { noOkError?: boolean; bypassProxy?: boolean; } = { noOkError: false, bypassProxy: false },
|
||||
): Promise<undici.Response> {
|
||||
const res = await undici.fetch(url, {
|
||||
dispatcher: this.getAgentByUrl(new URL(url), privateOptions.bypassProxy),
|
||||
@ -134,32 +134,57 @@ export class UndiciFetcher {
|
||||
return res;
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async request(
|
||||
url: string | URL,
|
||||
options: { dispatcher?: undici.Dispatcher } & Omit<undici.Dispatcher.RequestOptions, 'origin' | 'path' | 'method'> & Partial<Pick<undici.Dispatcher.RequestOptions, 'method'>> = {},
|
||||
privateOptions: { noOkError?: boolean; bypassProxy?: boolean; } = { noOkError: false, bypassProxy: false },
|
||||
): Promise<undici.Dispatcher.ResponseData> {
|
||||
const res = await undici.request(url, {
|
||||
dispatcher: this.getAgentByUrl(new URL(url), privateOptions.bypassProxy),
|
||||
...options,
|
||||
headers: {
|
||||
'user-agent': this.userAgent ?? '',
|
||||
...(options.headers ?? {}),
|
||||
},
|
||||
}).catch((err) => {
|
||||
this.logger?.error(`fetch error to ${typeof url === 'string' ? url : url.href}`, err);
|
||||
throw new StatusError('Resource Unreachable', 500, 'Resource Unreachable');
|
||||
});
|
||||
|
||||
if (res.statusCode >= 400) {
|
||||
throw new StatusError(`${res.statusCode}`, res.statusCode, '');
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async getJson<T extends unknown>(url: string, accept = 'application/json, */*', headers?: Record<string, string>): Promise<T> {
|
||||
const res = await this.fetch(
|
||||
const { body } = await this.request(
|
||||
url,
|
||||
{
|
||||
headers: Object.assign({
|
||||
Accept: accept,
|
||||
}, headers ?? {}),
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
return await res.json() as T;
|
||||
return await body.json() as T;
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async getHtml(url: string, accept = 'text/html, */*', headers?: Record<string, string>): Promise<string> {
|
||||
const res = await this.fetch(
|
||||
const { body } = await this.request(
|
||||
url,
|
||||
{
|
||||
headers: Object.assign({
|
||||
Accept: accept,
|
||||
}, headers ?? {}),
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
return await res.text();
|
||||
return await body.text();
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,6 +192,7 @@ export class UndiciFetcher {
|
||||
export class HttpRequestService {
|
||||
public defaultFetcher: UndiciFetcher;
|
||||
public fetch: UndiciFetcher['fetch'];
|
||||
public request: UndiciFetcher['request'];
|
||||
public getHtml: UndiciFetcher['getHtml'];
|
||||
public defaultJsonFetcher: UndiciFetcher;
|
||||
public getJson: UndiciFetcher['getJson'];
|
||||
@ -219,18 +245,19 @@ export class HttpRequestService {
|
||||
maxCachedSessions: 300, // TLSセッションのキャッシュ数 https://github.com/nodejs/undici/blob/v5.14.0/lib/core/connect.js#L80
|
||||
lookup: this.dnsCache.lookup as LookupFunction, // https://github.com/nodejs/undici/blob/v5.14.0/lib/core/connect.js#L98
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
this.maxSockets = Math.max(64, this.config.deliverJobConcurrency ?? 128);
|
||||
this.maxSockets = Math.max(64, ((this.config.deliverJobConcurrency ?? 128) / (this.config.clusterLimit ?? 1)));
|
||||
|
||||
this.defaultFetcher = new UndiciFetcher(this.getStandardUndiciFetcherOption(), this.logger);
|
||||
this.defaultFetcher = this.createFetcher({}, {}, this.logger);
|
||||
|
||||
this.fetch = this.defaultFetcher.fetch;
|
||||
this.request = this.defaultFetcher.request;
|
||||
this.getHtml = this.defaultFetcher.getHtml;
|
||||
|
||||
this.defaultJsonFetcher = new UndiciFetcher(this.getStandardUndiciFetcherOption({
|
||||
this.defaultJsonFetcher = this.createFetcher({
|
||||
maxResponseSize: 1024 * 256,
|
||||
}), this.logger);
|
||||
}, {}, this.logger);
|
||||
|
||||
this.getJson = this.defaultJsonFetcher.getJson;
|
||||
|
||||
@ -272,23 +299,28 @@ export class HttpRequestService {
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public getStandardUndiciFetcherOption(opts: undici.Agent.Options = {}, proxyOpts: undici.Agent.Options = {}) {
|
||||
private getStandardUndiciFetcherOption(opts: undici.Agent.Options = {}, proxyOpts: undici.Agent.Options = {}) {
|
||||
return {
|
||||
agentOptions: {
|
||||
...this.clientDefaults,
|
||||
...opts,
|
||||
},
|
||||
...(this.config.proxy ? {
|
||||
proxy: {
|
||||
uri: this.config.proxy,
|
||||
options: {
|
||||
connections: this.maxSockets,
|
||||
...proxyOpts,
|
||||
}
|
||||
}
|
||||
proxy: {
|
||||
uri: this.config.proxy,
|
||||
options: {
|
||||
connections: this.maxSockets,
|
||||
...proxyOpts,
|
||||
},
|
||||
},
|
||||
} : {}),
|
||||
userAgent: this.config.userAgent,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public createFetcher(opts: undici.Agent.Options = {}, proxyOpts: undici.Agent.Options = {}, logger: Logger) {
|
||||
return new UndiciFetcher(this.getStandardUndiciFetcherOption(opts, proxyOpts), logger);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -314,13 +346,13 @@ export class HttpRequestService {
|
||||
connector(options, (err, socket) => {
|
||||
this.logger.debug('Socket connector (with ip checker) called', socket);
|
||||
if (err) {
|
||||
this.logger.error(`Socket error`, err)
|
||||
this.logger.error('Socket error', err);
|
||||
cb(new Error(`Error while socket connecting\n${err}`), null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (socket.remoteAddress == undefined) {
|
||||
this.logger.error(`Socket error: remoteAddress is undefined`);
|
||||
this.logger.error('Socket error: remoteAddress is undefined');
|
||||
cb(new Error('remoteAddress is undefined (maybe socket destroyed)'), null);
|
||||
return;
|
||||
}
|
||||
|
@ -9,10 +9,12 @@ import { HttpRequestService, UndiciFetcher } from '@/core/HttpRequestService.js'
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import type { Dispatcher } from 'undici';
|
||||
import { DevNull } from '@/misc/dev-null.js';
|
||||
|
||||
type Request = {
|
||||
url: string;
|
||||
method: string;
|
||||
method: Dispatcher.HttpMethod;
|
||||
headers: Record<string, string>;
|
||||
};
|
||||
|
||||
@ -41,10 +43,10 @@ export class ApRequestService {
|
||||
private httpRequestService: HttpRequestService,
|
||||
private loggerService: LoggerService,
|
||||
) {
|
||||
this.logger = this.loggerService?.getLogger('ap-request'); // なぜか TypeError: Cannot read properties of undefined (reading 'getLogger') と言われる
|
||||
this.undiciFetcher = new UndiciFetcher(this.httpRequestService.getStandardUndiciFetcherOption({
|
||||
this.logger = this.loggerService.getLogger('ap-request'); // なぜか TypeError: Cannot read properties of undefined (reading 'getLogger') と言われる
|
||||
this.undiciFetcher = this.httpRequestService.createFetcher({
|
||||
maxRedirections: 0,
|
||||
}), this.logger );
|
||||
}, {}, this.logger);
|
||||
}
|
||||
|
||||
@bindThis
|
||||
@ -163,14 +165,15 @@ export class ApRequestService {
|
||||
},
|
||||
});
|
||||
|
||||
await this.undiciFetcher.fetch(
|
||||
const response = await this.undiciFetcher.request(
|
||||
url,
|
||||
{
|
||||
method: req.request.method,
|
||||
headers: req.request.headers,
|
||||
body,
|
||||
}
|
||||
},
|
||||
);
|
||||
response.body.pipe(new DevNull());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -197,7 +200,7 @@ export class ApRequestService {
|
||||
{
|
||||
method: req.request.method,
|
||||
headers: req.request.headers,
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
return await res.json();
|
||||
|
@ -8,13 +8,13 @@ import { HttpRequestService, UndiciFetcher } from '@/core/HttpRequestService.js'
|
||||
import { DI } from '@/di-symbols.js';
|
||||
import { UtilityService } from '@/core/UtilityService.js';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import { isCollectionOrOrderedCollection } from './type.js';
|
||||
import { ApDbResolverService } from './ApDbResolverService.js';
|
||||
import { ApRendererService } from './ApRendererService.js';
|
||||
import { ApRequestService } from './ApRequestService.js';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import type { IObject, ICollection, IOrderedCollection } from './type.js';
|
||||
import type Logger from '@/logger.js';
|
||||
|
||||
export class Resolver {
|
||||
private history: Set<string>;
|
||||
@ -39,10 +39,10 @@ export class Resolver {
|
||||
private recursionLimit = 100,
|
||||
) {
|
||||
this.history = new Set();
|
||||
this.logger = this.loggerService?.getLogger('ap-resolve'); // なぜか TypeError: Cannot read properties of undefined (reading 'getLogger') と言われる
|
||||
this.undiciFetcher = new UndiciFetcher(this.httpRequestService.getStandardUndiciFetcherOption({
|
||||
this.logger = this.loggerService?.getLogger('ap-resolve'); // なぜか TypeError: Cannot read properties of undefined (reading 'getLogger') と言われる
|
||||
this.undiciFetcher = this.httpRequestService.createFetcher({
|
||||
maxRedirections: 0,
|
||||
}), this.logger);
|
||||
}, {}, this.logger);
|
||||
}
|
||||
|
||||
@bindThis
|
||||
|
11
packages/backend/src/misc/dev-null.ts
Normal file
11
packages/backend/src/misc/dev-null.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { Writable, WritableOptions } from "node:stream";
|
||||
|
||||
export class DevNull extends Writable implements NodeJS.WritableStream {
|
||||
constructor(opts?: WritableOptions) {
|
||||
super(opts);
|
||||
}
|
||||
|
||||
_write (chunk: any, encoding: BufferEncoding, cb: (err?: Error | null) => void) {
|
||||
setImmediate(cb);
|
||||
}
|
||||
}
|
@ -35,7 +35,7 @@ html
|
||||
link(rel='prefetch' href='https://xn--931a.moe/assets/info.jpg')
|
||||
link(rel='prefetch' href='https://xn--931a.moe/assets/not-found.jpg')
|
||||
link(rel='prefetch' href='https://xn--931a.moe/assets/error.jpg')
|
||||
link(rel='stylesheet' href='/assets/tabler-icons/tabler-icons.css')
|
||||
link(rel='stylesheet' href='/assets/tabler-icons/tabler-icons.min.css')
|
||||
link(rel='modulepreload' href=`/vite/${clientEntry.file}`)
|
||||
|
||||
if !config.clientManifestExists
|
||||
|
@ -12,7 +12,7 @@
|
||||
"@rollup/plugin-json": "6.0.0",
|
||||
"@rollup/pluginutils": "5.0.2",
|
||||
"@syuilo/aiscript": "0.12.2",
|
||||
"@tabler/icons": "^1.118.0",
|
||||
"@tabler/icons-webfont": "^2.0.0",
|
||||
"@vitejs/plugin-vue": "4.0.0",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"autobind-decorator": "2.4.0",
|
||||
@ -82,15 +82,15 @@
|
||||
"@types/uuid": "9.0.0",
|
||||
"@types/websocket": "1.0.5",
|
||||
"@types/ws": "8.5.4",
|
||||
"@typescript-eslint/eslint-plugin": "5.48.2",
|
||||
"@typescript-eslint/parser": "5.48.2",
|
||||
"@typescript-eslint/eslint-plugin": "5.49.0",
|
||||
"@typescript-eslint/parser": "5.49.0",
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"cross-env": "7.0.3",
|
||||
"cypress": "12.3.0",
|
||||
"eslint": "8.32.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-vue": "9.9.0",
|
||||
"start-server-and-test": "1.15.2",
|
||||
"start-server-and-test": "1.15.3",
|
||||
"vue-eslint-parser": "^9.1.0",
|
||||
"vue-tsc": "^1.0.24"
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
<i v-else-if="notification.type === 'mention'" class="ti ti-at"></i>
|
||||
<i v-else-if="notification.type === 'quote'" class="ti ti-quote"></i>
|
||||
<i v-else-if="notification.type === 'pollEnded'" class="ti ti-chart-arrows"></i>
|
||||
<i v-else-if="notification.type === 'achievementEarned'" class="ti ti-military-award"></i>
|
||||
<i v-else-if="notification.type === 'achievementEarned'" class="ti ti-medal"></i>
|
||||
<!-- notification.reaction が null になることはまずないが、ここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
|
||||
<MkReactionIcon
|
||||
v-else-if="notification.type === 'reaction'"
|
||||
@ -249,7 +249,7 @@ useTooltip(reactionRef, (showing) => {
|
||||
|
||||
.t_achievementEarned {
|
||||
padding: 3px;
|
||||
background: #88a6b7;
|
||||
background: #cb9a11;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ export const navbarItemDef = reactive({
|
||||
},
|
||||
achievements: {
|
||||
title: i18n.ts.achievements,
|
||||
icon: 'ti ti-military-award',
|
||||
icon: 'ti ti-medal',
|
||||
show: computed(() => $i != null),
|
||||
to: '/my/achievements',
|
||||
},
|
||||
|
@ -45,7 +45,7 @@ onDeactivated(() => {
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.achievements,
|
||||
icon: 'ti ti-military-award',
|
||||
icon: 'ti ti-medal',
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -81,7 +81,7 @@ const headerTabs = $computed(() => user ? [{
|
||||
}, ...(user.host == null ? [{
|
||||
key: 'achievements',
|
||||
title: i18n.ts.achievements,
|
||||
icon: 'ti ti-military-award',
|
||||
icon: 'ti ti-medal',
|
||||
}] : []), ...($i && ($i.id === user.id)) || user.publicReactions ? [{
|
||||
key: 'reactions',
|
||||
title: i18n.ts.reaction,
|
||||
|
@ -127,11 +127,13 @@ hr {
|
||||
}
|
||||
|
||||
.ti {
|
||||
vertical-align: -10%;
|
||||
line-height: 0.9em;
|
||||
vertical-align: -40%;
|
||||
line-height: 1em;
|
||||
|
||||
&:before {
|
||||
font-size: 130%;
|
||||
display: inline-block;
|
||||
font-size: 165%;
|
||||
width: 0.74em;
|
||||
}
|
||||
}
|
||||
|
||||
|
315
pnpm-lock.yaml
315
pnpm-lock.yaml
@ -11,8 +11,8 @@ importers:
|
||||
'@tensorflow/tfjs-core': ^4.2.0
|
||||
'@types/gulp': 4.0.10
|
||||
'@types/gulp-rename': 2.0.1
|
||||
'@typescript-eslint/eslint-plugin': 5.48.2
|
||||
'@typescript-eslint/parser': 5.48.2
|
||||
'@typescript-eslint/eslint-plugin': 5.49.0
|
||||
'@typescript-eslint/parser': 5.49.0
|
||||
cross-env: 7.0.3
|
||||
cypress: 12.3.0
|
||||
eslint: ^8.32.0
|
||||
@ -23,7 +23,7 @@ importers:
|
||||
gulp-replace: 1.1.4
|
||||
gulp-terser: 2.1.0
|
||||
js-yaml: 4.1.0
|
||||
start-server-and-test: 1.15.2
|
||||
start-server-and-test: 1.15.3
|
||||
typescript: 4.9.4
|
||||
dependencies:
|
||||
execa: 5.1.1
|
||||
@ -39,12 +39,12 @@ importers:
|
||||
devDependencies:
|
||||
'@types/gulp': 4.0.10
|
||||
'@types/gulp-rename': 2.0.1
|
||||
'@typescript-eslint/eslint-plugin': 5.48.2_caon6io6stgpr7lz2rtbhekxqy
|
||||
'@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/eslint-plugin': 5.49.0_iu322prlnwsygkcra5kbpy22si
|
||||
'@typescript-eslint/parser': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
cross-env: 7.0.3
|
||||
cypress: 12.3.0
|
||||
eslint: 8.32.0
|
||||
start-server-and-test: 1.15.2
|
||||
start-server-and-test: 1.15.3
|
||||
|
||||
packages/backend:
|
||||
specifiers:
|
||||
@ -68,8 +68,8 @@ importers:
|
||||
'@swc/cli': ^0.1.59
|
||||
'@swc/core': 1.3.27
|
||||
'@swc/jest': 0.2.24
|
||||
'@tensorflow/tfjs': ^4.1.0
|
||||
'@tensorflow/tfjs-node': 4.1.0
|
||||
'@tensorflow/tfjs': ^4.2.0
|
||||
'@tensorflow/tfjs-node': 4.2.0
|
||||
'@types/accepts': 1.3.5
|
||||
'@types/archiver': 5.3.1
|
||||
'@types/bcryptjs': 2.4.2
|
||||
@ -112,8 +112,8 @@ importers:
|
||||
'@types/web-push': 3.3.2
|
||||
'@types/websocket': 1.0.5
|
||||
'@types/ws': 8.5.4
|
||||
'@typescript-eslint/eslint-plugin': 5.48.2
|
||||
'@typescript-eslint/parser': 5.48.2
|
||||
'@typescript-eslint/eslint-plugin': 5.49.0
|
||||
'@typescript-eslint/parser': 5.49.0
|
||||
accepts: ^1.3.8
|
||||
ajv: 8.12.0
|
||||
archiver: 5.3.1
|
||||
@ -150,9 +150,8 @@ importers:
|
||||
jest: 29.3.1
|
||||
jest-mock: ^29.3.1
|
||||
js-yaml: 4.1.0
|
||||
jsdom: 21.0.0
|
||||
jsdom: 21.1.0
|
||||
json5: 2.2.3
|
||||
json5-loader: 4.0.1
|
||||
jsonld: 8.1.0
|
||||
jsrsasign: 10.6.1
|
||||
mfm-js: 0.23.3
|
||||
@ -257,9 +256,8 @@ importers:
|
||||
ip-cidr: 3.0.11
|
||||
is-svg: 4.3.2
|
||||
js-yaml: 4.1.0
|
||||
jsdom: 21.0.0
|
||||
jsdom: 21.1.0
|
||||
json5: 2.2.3
|
||||
json5-loader: 4.0.1
|
||||
jsonld: 8.1.0
|
||||
jsrsasign: 10.6.1
|
||||
mfm-js: 0.23.3
|
||||
@ -268,7 +266,7 @@ importers:
|
||||
ms: 3.0.0-canary.1
|
||||
nested-property: 4.0.0
|
||||
nodemailer: 6.9.0
|
||||
nsfwjs: 2.4.2_@tensorflow+tfjs@4.1.0
|
||||
nsfwjs: 2.4.2_@tensorflow+tfjs@4.2.0
|
||||
oauth: 0.10.0
|
||||
os-utils: 0.0.14
|
||||
parse5: 7.1.2
|
||||
@ -317,8 +315,8 @@ importers:
|
||||
ws: 8.12.0
|
||||
xev: 3.0.2
|
||||
optionalDependencies:
|
||||
'@tensorflow/tfjs': 4.1.0_seedrandom@3.0.5
|
||||
'@tensorflow/tfjs-node': 4.1.0_seedrandom@3.0.5
|
||||
'@tensorflow/tfjs': 4.2.0_seedrandom@3.0.5
|
||||
'@tensorflow/tfjs-node': 4.2.0_seedrandom@3.0.5
|
||||
devDependencies:
|
||||
'@redocly/openapi-core': 1.0.0-beta.120
|
||||
'@swc/cli': 0.1.59_2w2rsb5d2wh3txrlxuiknf4vra
|
||||
@ -366,11 +364,11 @@ importers:
|
||||
'@types/web-push': 3.3.2
|
||||
'@types/websocket': 1.0.5
|
||||
'@types/ws': 8.5.4
|
||||
'@typescript-eslint/eslint-plugin': 5.48.2_caon6io6stgpr7lz2rtbhekxqy
|
||||
'@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/eslint-plugin': 5.49.0_iu322prlnwsygkcra5kbpy22si
|
||||
'@typescript-eslint/parser': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
cross-env: 7.0.3
|
||||
eslint: 8.32.0
|
||||
eslint-plugin-import: 2.27.5_2l6piu6guil2f63lj3qmhzbnn4
|
||||
eslint-plugin-import: 2.27.5_6savw6y3b7jng6f64kgkyoij64
|
||||
execa: 6.1.0
|
||||
jest: 29.3.1_@types+node@18.11.18
|
||||
jest-mock: 29.3.1
|
||||
@ -383,7 +381,7 @@ importers:
|
||||
'@rollup/plugin-json': 6.0.0
|
||||
'@rollup/pluginutils': 5.0.2
|
||||
'@syuilo/aiscript': 0.12.2
|
||||
'@tabler/icons': ^1.118.0
|
||||
'@tabler/icons-webfont': ^2.0.0
|
||||
'@types/escape-regexp': 0.0.1
|
||||
'@types/glob': 8.0.1
|
||||
'@types/gulp': 4.0.10
|
||||
@ -398,8 +396,8 @@ importers:
|
||||
'@types/uuid': 9.0.0
|
||||
'@types/websocket': 1.0.5
|
||||
'@types/ws': 8.5.4
|
||||
'@typescript-eslint/eslint-plugin': 5.48.2
|
||||
'@typescript-eslint/parser': 5.48.2
|
||||
'@typescript-eslint/eslint-plugin': 5.49.0
|
||||
'@typescript-eslint/parser': 5.49.0
|
||||
'@vitejs/plugin-vue': 4.0.0
|
||||
'@vue/compiler-sfc': 3.2.45
|
||||
'@vue/runtime-core': 3.2.45
|
||||
@ -442,7 +440,7 @@ importers:
|
||||
sanitize-html: ^2.8.1
|
||||
sass: 1.57.1
|
||||
seedrandom: 3.0.5
|
||||
start-server-and-test: 1.15.2
|
||||
start-server-and-test: 1.15.3
|
||||
strict-event-emitter-types: 2.0.0
|
||||
stringz: 2.1.0
|
||||
syuilo-password-strength: 0.0.1
|
||||
@ -468,7 +466,7 @@ importers:
|
||||
'@rollup/plugin-json': 6.0.0_rollup@3.10.1
|
||||
'@rollup/pluginutils': 5.0.2_rollup@3.10.1
|
||||
'@syuilo/aiscript': 0.12.2
|
||||
'@tabler/icons': 1.119.0
|
||||
'@tabler/icons-webfont': 2.0.0
|
||||
'@vitejs/plugin-vue': 4.0.0_vite@4.0.4+vue@3.2.45
|
||||
'@vue/compiler-sfc': 3.2.45
|
||||
autobind-decorator: 2.4.0
|
||||
@ -537,15 +535,15 @@ importers:
|
||||
'@types/uuid': 9.0.0
|
||||
'@types/websocket': 1.0.5
|
||||
'@types/ws': 8.5.4
|
||||
'@typescript-eslint/eslint-plugin': 5.48.2_caon6io6stgpr7lz2rtbhekxqy
|
||||
'@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/eslint-plugin': 5.49.0_iu322prlnwsygkcra5kbpy22si
|
||||
'@typescript-eslint/parser': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
'@vue/runtime-core': 3.2.45
|
||||
cross-env: 7.0.3
|
||||
cypress: 12.3.0
|
||||
eslint: 8.32.0
|
||||
eslint-plugin-import: 2.27.5_2l6piu6guil2f63lj3qmhzbnn4
|
||||
eslint-plugin-import: 2.27.5_6savw6y3b7jng6f64kgkyoij64
|
||||
eslint-plugin-vue: 9.9.0_eslint@8.32.0
|
||||
start-server-and-test: 1.15.2
|
||||
start-server-and-test: 1.15.3
|
||||
vue-eslint-parser: 9.1.0_eslint@8.32.0
|
||||
vue-tsc: 1.0.24_typescript@4.9.4
|
||||
|
||||
@ -2323,65 +2321,47 @@ packages:
|
||||
defer-to-connect: 2.0.1
|
||||
dev: false
|
||||
|
||||
/@tabler/icons/1.119.0:
|
||||
resolution: {integrity: sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g==}
|
||||
peerDependencies:
|
||||
react: ^16.x || 17.x || 18.x
|
||||
react-dom: ^16.x || 17.x || 18.x
|
||||
peerDependenciesMeta:
|
||||
react:
|
||||
optional: true
|
||||
react-dom:
|
||||
optional: true
|
||||
/@tabler/icons-webfont/2.0.0:
|
||||
resolution: {integrity: sha512-ApVVupe7WKZOJzK6T2iw15/k6VrTALsL5YzAmvgvcriuX8sRCKlcWaRljcf2sZMUrqyY+Yq6xiOpL2p2NHgQBQ==}
|
||||
dependencies:
|
||||
'@tabler/icons': 2.0.0
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-backend-cpu/4.1.0_npjwttp6o2hhjgfcmiedqvkgoa:
|
||||
resolution: {integrity: sha512-NqxrwpYa/hXGaBa1RzxfHsLAsaniIZryhF5CxQM9uSp1ny8wUJMH+Mda/Y8+llS3weHug8JDAbAW2cabn8l84A==}
|
||||
/@tabler/icons/2.0.0:
|
||||
resolution: {integrity: sha512-ye93cVD8baCwJJ7J3GKlUM3FN+qW6lsEz4uaH8bHCwC8un2R4p+ZzyRNc/ksqVgMQJ4PKQ8xbYpv4dnbbRffsA==}
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-backend-cpu/4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y:
|
||||
resolution: {integrity: sha512-8HWg9J69m0Ovc6w8TVhhixMOcwA3t/NPXLblOA/sgJ+/JD5gsbpLWJk4QISQyb1RnpSVzw6PX3BSMTJU7hWVOg==}
|
||||
engines: {yarn: '>= 1.3.2'}
|
||||
peerDependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
dependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
'@types/seedrandom': 2.4.30
|
||||
seedrandom: 3.0.5
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-backend-webgl/4.1.0_npjwttp6o2hhjgfcmiedqvkgoa:
|
||||
resolution: {integrity: sha512-RDjwbFCPESjh+QTrTvKC623MO58gIqxQvtX3DfJLhlsSbnsvIpA5s1CXNJYzNVmFDia35mPYKmQQWvEvhl9weA==}
|
||||
/@tensorflow/tfjs-backend-webgl/4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y:
|
||||
resolution: {integrity: sha512-Qvf+hD5pSh+xi48kChSGzcDKJemkc4EKfoVVjuxl4k25ZUPwuEd7zZUAtinkLu1dzgHNyvePZY8k+9rVm59HJA==}
|
||||
engines: {yarn: '>= 1.3.2'}
|
||||
peerDependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
dependencies:
|
||||
'@tensorflow/tfjs-backend-cpu': 4.1.0_npjwttp6o2hhjgfcmiedqvkgoa
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-backend-cpu': 4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
'@types/offscreencanvas': 2019.3.0
|
||||
'@types/seedrandom': 2.4.30
|
||||
'@types/webgl-ext': 0.0.30
|
||||
seedrandom: 3.0.5
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-converter/4.1.0_npjwttp6o2hhjgfcmiedqvkgoa:
|
||||
resolution: {integrity: sha512-pR4TSUI949a/5uUWjHga8xzxD7Y9AbobHJtCmg86Bldfl2GV8aibz87cNjpoO+iUhH8WZo1TOJy8GpM+MPT2DA==}
|
||||
/@tensorflow/tfjs-converter/4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y:
|
||||
resolution: {integrity: sha512-m+E2KJM6yGQdi8ElzWpChdD/JaqhWMCi9yK70v/ndkOaCL2q2UN48nYP2T5S15vkDvMIgzAQyZfh7hxQsMuvRQ==}
|
||||
peerDependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
dependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-core/4.1.0:
|
||||
resolution: {integrity: sha512-zERD4xtxNq3dV3+wPEMi2HWSV68FA8WucSAogzErp38/q98Byv9G1x8DhxQ+jowTcqN4srGWcBfK59jYwjlAvA==}
|
||||
engines: {yarn: '>= 1.3.2'}
|
||||
dependencies:
|
||||
'@types/long': 4.0.2
|
||||
'@types/offscreencanvas': 2019.7.0
|
||||
'@types/seedrandom': 2.4.30
|
||||
'@types/webgl-ext': 0.0.30
|
||||
'@webgpu/types': 0.1.21
|
||||
long: 4.0.0
|
||||
node-fetch: 2.6.7
|
||||
seedrandom: 3.0.5
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-core/4.2.0:
|
||||
@ -2400,15 +2380,14 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@tensorflow/tfjs-data/4.1.0_x6uqorr55fevqojbxncmwlp444:
|
||||
resolution: {integrity: sha512-H6ef6NXPwi2xKYB6tVNZi5RqniMFpfUSlxG3q0BNxnyuyeCUSjJvHJFpah9hT/ysYjVdwspzh/I6B67h+lBchg==}
|
||||
/@tensorflow/tfjs-data/4.2.0_qsavyspjcgrxymzlcpasp6rzxe:
|
||||
resolution: {integrity: sha512-11t7Q+ikseduJgkd9iSeRrtor1aA3o5PVCFhC5yYvR3JLO55ic1+4Ryo0EJfhRoismS6zBUJrpzX4K0zlLbIfw==}
|
||||
peerDependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
seedrandom: ^3.0.5
|
||||
dependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
'@types/node-fetch': 2.6.2
|
||||
node-fetch: 2.6.7
|
||||
seedrandom: 3.0.5
|
||||
@ -2417,21 +2396,21 @@ packages:
|
||||
- encoding
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-layers/4.1.0_npjwttp6o2hhjgfcmiedqvkgoa:
|
||||
resolution: {integrity: sha512-lzHNTZu1GwKl7hW5tt2COSpflE0m7xrsOf8AzRzpTDVJYYRx/x5ScMt/y//5jbRuaDOnb3EjT1FxWxwkD44/sg==}
|
||||
/@tensorflow/tfjs-layers/4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y:
|
||||
resolution: {integrity: sha512-SO0KTmCFOjrW+PlP9nKYXz07XGFq6uE7am9yH2bRaRPWpEeaKT/+k0C9vFMxI/GzRwY8AK4sLe4U+jE1mhYxGw==}
|
||||
peerDependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
dependencies:
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
dev: false
|
||||
|
||||
/@tensorflow/tfjs-node/4.1.0_seedrandom@3.0.5:
|
||||
resolution: {integrity: sha512-2H7UJqVafuM9fbsMdzUkcfWLpH/owgvVHWES+gQsiueIqyOjpq6ZGSQLDxyuKtHP2D/8/kWeVIbnzAjnIRniuA==}
|
||||
/@tensorflow/tfjs-node/4.2.0_seedrandom@3.0.5:
|
||||
resolution: {integrity: sha512-dkyExfqTjMVDpKLBzHH2b7JWzGK+QORtYswvoNHbeHwx7kvYYRAQeiHxp+xrgry6LdbWfZs88IWCwNGoOiZ21w==}
|
||||
engines: {node: '>=8.11.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@mapbox/node-pre-gyp': 1.0.9
|
||||
'@tensorflow/tfjs': 4.1.0_seedrandom@3.0.5
|
||||
'@tensorflow/tfjs': 4.2.0_seedrandom@3.0.5
|
||||
adm-zip: 0.5.10
|
||||
google-protobuf: 3.21.2
|
||||
https-proxy-agent: 2.2.4
|
||||
@ -2445,17 +2424,16 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@tensorflow/tfjs/4.1.0_seedrandom@3.0.5:
|
||||
resolution: {integrity: sha512-jlrJ6MIBos8NkmF+NHIWBnKVBGYJTG06QmW/A0vgyXwkp+3PgzX8TJ4MWIv/7oZr7g27zfY6dXA1OFzrrgvklA==}
|
||||
/@tensorflow/tfjs/4.2.0_seedrandom@3.0.5:
|
||||
resolution: {integrity: sha512-iZmtyGC9IJkx+TpFnkgDol8BHv2BU3zJ01HyNcuvnm1w1EqoNe+1n8bwvLzI/sxHMcHTqzuu7VugMaphryxE+A==}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@tensorflow/tfjs-backend-cpu': 4.1.0_npjwttp6o2hhjgfcmiedqvkgoa
|
||||
'@tensorflow/tfjs-backend-webgl': 4.1.0_npjwttp6o2hhjgfcmiedqvkgoa
|
||||
'@tensorflow/tfjs-converter': 4.1.0_npjwttp6o2hhjgfcmiedqvkgoa
|
||||
'@tensorflow/tfjs-core': 4.1.0
|
||||
'@tensorflow/tfjs-data': 4.1.0_x6uqorr55fevqojbxncmwlp444
|
||||
'@tensorflow/tfjs-layers': 4.1.0_npjwttp6o2hhjgfcmiedqvkgoa
|
||||
'@tensorflow/tfjs-backend-cpu': 4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y
|
||||
'@tensorflow/tfjs-backend-webgl': 4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y
|
||||
'@tensorflow/tfjs-converter': 4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y
|
||||
'@tensorflow/tfjs-core': 4.2.0
|
||||
'@tensorflow/tfjs-data': 4.2.0_qsavyspjcgrxymzlcpasp6rzxe
|
||||
'@tensorflow/tfjs-layers': 4.2.0_tkoh6rxfpzme3tc2ndqbqcrg7y
|
||||
argparse: 1.0.10
|
||||
chalk: 4.1.2
|
||||
core-js: 3.27.1
|
||||
@ -2669,6 +2647,7 @@ packages:
|
||||
|
||||
/@types/json-schema/7.0.11:
|
||||
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
|
||||
dev: true
|
||||
|
||||
/@types/json5/0.0.29:
|
||||
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
|
||||
@ -2956,8 +2935,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@typescript-eslint/eslint-plugin/5.48.2_caon6io6stgpr7lz2rtbhekxqy:
|
||||
resolution: {integrity: sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==}
|
||||
/@typescript-eslint/eslint-plugin/5.49.0_iu322prlnwsygkcra5kbpy22si:
|
||||
resolution: {integrity: sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': ^5.0.0
|
||||
@ -2967,10 +2946,10 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/scope-manager': 5.48.2
|
||||
'@typescript-eslint/type-utils': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/utils': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/parser': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/scope-manager': 5.49.0
|
||||
'@typescript-eslint/type-utils': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/utils': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
debug: 4.3.4
|
||||
eslint: 8.32.0
|
||||
ignore: 5.2.4
|
||||
@ -3003,8 +2982,8 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/parser/5.48.2_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==}
|
||||
/@typescript-eslint/parser/5.49.0_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
@ -3013,9 +2992,9 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 5.48.2
|
||||
'@typescript-eslint/types': 5.48.2
|
||||
'@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.4
|
||||
'@typescript-eslint/scope-manager': 5.49.0
|
||||
'@typescript-eslint/types': 5.49.0
|
||||
'@typescript-eslint/typescript-estree': 5.49.0_typescript@4.9.4
|
||||
debug: 4.3.4
|
||||
eslint: 8.32.0
|
||||
typescript: 4.9.4
|
||||
@ -3031,16 +3010,16 @@ packages:
|
||||
'@typescript-eslint/visitor-keys': 5.48.1
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/scope-manager/5.48.2:
|
||||
resolution: {integrity: sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==}
|
||||
/@typescript-eslint/scope-manager/5.49.0:
|
||||
resolution: {integrity: sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.48.2
|
||||
'@typescript-eslint/visitor-keys': 5.48.2
|
||||
'@typescript-eslint/types': 5.49.0
|
||||
'@typescript-eslint/visitor-keys': 5.49.0
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/type-utils/5.48.2_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==}
|
||||
/@typescript-eslint/type-utils/5.49.0_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: '*'
|
||||
@ -3049,8 +3028,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.4
|
||||
'@typescript-eslint/utils': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/typescript-estree': 5.49.0_typescript@4.9.4
|
||||
'@typescript-eslint/utils': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
debug: 4.3.4
|
||||
eslint: 8.32.0
|
||||
tsutils: 3.21.0_typescript@4.9.4
|
||||
@ -3064,8 +3043,8 @@ packages:
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/types/5.48.2:
|
||||
resolution: {integrity: sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==}
|
||||
/@typescript-eslint/types/5.49.0:
|
||||
resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
@ -3090,8 +3069,8 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/typescript-estree/5.48.2_typescript@4.9.4:
|
||||
resolution: {integrity: sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==}
|
||||
/@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4:
|
||||
resolution: {integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
@ -3099,8 +3078,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.48.2
|
||||
'@typescript-eslint/visitor-keys': 5.48.2
|
||||
'@typescript-eslint/types': 5.49.0
|
||||
'@typescript-eslint/visitor-keys': 5.49.0
|
||||
debug: 4.3.4
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
@ -3111,17 +3090,17 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/utils/5.48.2_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==}
|
||||
/@typescript-eslint/utils/5.49.0_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
'@types/json-schema': 7.0.11
|
||||
'@types/semver': 7.3.13
|
||||
'@typescript-eslint/scope-manager': 5.48.2
|
||||
'@typescript-eslint/types': 5.48.2
|
||||
'@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.4
|
||||
'@typescript-eslint/scope-manager': 5.49.0
|
||||
'@typescript-eslint/types': 5.49.0
|
||||
'@typescript-eslint/typescript-estree': 5.49.0_typescript@4.9.4
|
||||
eslint: 8.32.0
|
||||
eslint-scope: 5.1.1
|
||||
eslint-utils: 3.0.0_eslint@8.32.0
|
||||
@ -3139,11 +3118,11 @@ packages:
|
||||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/visitor-keys/5.48.2:
|
||||
resolution: {integrity: sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==}
|
||||
/@typescript-eslint/visitor-keys/5.49.0:
|
||||
resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.48.2
|
||||
'@typescript-eslint/types': 5.49.0
|
||||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
@ -3386,14 +3365,6 @@ packages:
|
||||
ajv: 8.12.0
|
||||
dev: false
|
||||
|
||||
/ajv-keywords/3.5.2_ajv@6.12.6:
|
||||
resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
|
||||
peerDependencies:
|
||||
ajv: ^6.9.1
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
dev: false
|
||||
|
||||
/ajv/6.12.6:
|
||||
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
||||
dependencies:
|
||||
@ -3830,15 +3801,16 @@ packages:
|
||||
/axios/0.24.0:
|
||||
resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==}
|
||||
dependencies:
|
||||
follow-redirects: 1.15.2
|
||||
follow-redirects: 1.15.2_debug@4.3.4
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: false
|
||||
|
||||
/axios/0.25.0_debug@4.3.4:
|
||||
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
|
||||
/axios/0.27.2_debug@4.3.4:
|
||||
resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
|
||||
dependencies:
|
||||
follow-redirects: 1.15.2
|
||||
follow-redirects: 1.15.2_debug@4.3.4
|
||||
form-data: 4.0.0
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: true
|
||||
@ -3978,10 +3950,6 @@ packages:
|
||||
engines: {node: '>=0.6'}
|
||||
dev: false
|
||||
|
||||
/big.js/5.2.2:
|
||||
resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
|
||||
dev: false
|
||||
|
||||
/bin-check/4.1.0:
|
||||
resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==}
|
||||
engines: {node: '>=4'}
|
||||
@ -5671,11 +5639,6 @@ packages:
|
||||
/emoji-regex/8.0.0:
|
||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||
|
||||
/emojis-list/3.0.0:
|
||||
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
|
||||
engines: {node: '>= 4'}
|
||||
dev: false
|
||||
|
||||
/encode-utf8/1.0.3:
|
||||
resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==}
|
||||
dev: false
|
||||
@ -6109,7 +6072,7 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-module-utils/2.7.4_kvyj4idustix6trhy5lyssy2sq:
|
||||
/eslint-module-utils/2.7.4_cnxxylyx37asr43xy64ejg3pwe:
|
||||
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@ -6130,7 +6093,7 @@ packages:
|
||||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/parser': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
debug: 3.2.7
|
||||
eslint: 8.32.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
@ -6200,7 +6163,7 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-import/2.27.5_2l6piu6guil2f63lj3qmhzbnn4:
|
||||
/eslint-plugin-import/2.27.5_6savw6y3b7jng6f64kgkyoij64:
|
||||
resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@ -6210,7 +6173,7 @@ packages:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/parser': 5.49.0_7uibuqfxkfaozanbtbziikiqje
|
||||
array-includes: 3.1.6
|
||||
array.prototype.flat: 1.3.1
|
||||
array.prototype.flatmap: 1.3.1
|
||||
@ -6218,7 +6181,7 @@ packages:
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.32.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-module-utils: 2.7.4_kvyj4idustix6trhy5lyssy2sq
|
||||
eslint-module-utils: 2.7.4_cnxxylyx37asr43xy64ejg3pwe
|
||||
has: 1.0.3
|
||||
is-core-module: 2.11.0
|
||||
is-glob: 4.0.3
|
||||
@ -7010,7 +6973,7 @@ packages:
|
||||
readable-stream: 2.3.7
|
||||
dev: false
|
||||
|
||||
/follow-redirects/1.15.2:
|
||||
/follow-redirects/1.15.2_debug@4.3.4:
|
||||
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
||||
engines: {node: '>=4.0'}
|
||||
peerDependencies:
|
||||
@ -7018,6 +6981,8 @@ packages:
|
||||
peerDependenciesMeta:
|
||||
debug:
|
||||
optional: true
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
|
||||
/for-each/0.3.3:
|
||||
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
||||
@ -7069,7 +7034,6 @@ packages:
|
||||
asynckit: 0.4.0
|
||||
combined-stream: 1.0.8
|
||||
mime-types: 2.1.35
|
||||
dev: false
|
||||
|
||||
/formdata-polyfill/4.0.10:
|
||||
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
|
||||
@ -9125,8 +9089,8 @@ packages:
|
||||
engines: {node: '>=0.1.90'}
|
||||
dev: false
|
||||
|
||||
/jsdom/21.0.0:
|
||||
resolution: {integrity: sha512-AIw+3ZakSUtDYvhwPwWHiZsUi3zHugpMEKlNPaurviseYoBqo0zBd3zqoUi3LPCNtPFlEP8FiW9MqCZdjb2IYA==}
|
||||
/jsdom/21.1.0:
|
||||
resolution: {integrity: sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
canvas: ^2.5.0
|
||||
@ -9199,17 +9163,6 @@ packages:
|
||||
/json-stringify-safe/5.0.1:
|
||||
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
|
||||
|
||||
/json5-loader/4.0.1:
|
||||
resolution: {integrity: sha512-c9viNZlZTz0MTIcf/4qvek5Dz1/PU3DNCB4PwUhlEZIV3qb1bSD6vQQymlV17/Wm6ncra1aCvmIPsuRj+KfEEg==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
peerDependencies:
|
||||
webpack: ^4.0.0 || ^5.0.0
|
||||
dependencies:
|
||||
json5: 2.2.3
|
||||
loader-utils: 2.0.4
|
||||
schema-utils: 3.1.1
|
||||
dev: false
|
||||
|
||||
/json5/1.0.1:
|
||||
resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
|
||||
hasBin: true
|
||||
@ -9539,15 +9492,6 @@ packages:
|
||||
strip-bom: 2.0.0
|
||||
dev: false
|
||||
|
||||
/loader-utils/2.0.4:
|
||||
resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
|
||||
engines: {node: '>=8.9.0'}
|
||||
dependencies:
|
||||
big.js: 5.2.2
|
||||
emojis-list: 3.0.0
|
||||
json5: 2.2.3
|
||||
dev: false
|
||||
|
||||
/locate-path/5.0.0:
|
||||
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
|
||||
engines: {node: '>=8'}
|
||||
@ -10403,13 +10347,13 @@ packages:
|
||||
set-blocking: 2.0.0
|
||||
dev: false
|
||||
|
||||
/nsfwjs/2.4.2_@tensorflow+tfjs@4.1.0:
|
||||
/nsfwjs/2.4.2_@tensorflow+tfjs@4.2.0:
|
||||
resolution: {integrity: sha512-i4Pp2yt59qPQgeZFyg3wXFBX52uSeu/hkDoqdZfe+sILRxNBUu0VDogj7Lmqak0GlrXviS/wLiVeIx40IDUu7A==}
|
||||
peerDependencies:
|
||||
'@tensorflow/tfjs': ^3.18.0
|
||||
dependencies:
|
||||
'@nsfw-filter/gif-frames': 1.0.2
|
||||
'@tensorflow/tfjs': 4.1.0_seedrandom@3.0.5
|
||||
'@tensorflow/tfjs': 4.2.0_seedrandom@3.0.5
|
||||
dev: false
|
||||
|
||||
/nth-check/1.0.2:
|
||||
@ -12262,15 +12206,6 @@ packages:
|
||||
xmlchars: 2.2.0
|
||||
dev: false
|
||||
|
||||
/schema-utils/3.1.1:
|
||||
resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
dependencies:
|
||||
'@types/json-schema': 7.0.11
|
||||
ajv: 6.12.6
|
||||
ajv-keywords: 3.5.2_ajv@6.12.6
|
||||
dev: false
|
||||
|
||||
/secure-json-parse/2.7.0:
|
||||
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
|
||||
dev: false
|
||||
@ -12688,8 +12623,8 @@ packages:
|
||||
/standard-as-callback/2.1.0:
|
||||
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
|
||||
|
||||
/start-server-and-test/1.15.2:
|
||||
resolution: {integrity: sha512-t5xJX04Hg7hqxiKHMJBz/n4zIMsE6G7hpAcerFAH+4Vh9le/LeyFcJERJM7WLiPygWF9TOg33oroJF1XOzJtYQ==}
|
||||
/start-server-and-test/1.15.3:
|
||||
resolution: {integrity: sha512-4GqkqghvUR9cJ8buvtgkyT0AHgVwCJ5EN8eDEhe9grTChGwWUxGm2nqfSeE9+0PZkLRdFqcwTwxVHe1y3ViutQ==}
|
||||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@ -12700,7 +12635,7 @@ packages:
|
||||
execa: 5.1.1
|
||||
lazy-ass: 1.6.0
|
||||
ps-tree: 1.2.0
|
||||
wait-on: 6.0.1_debug@4.3.4
|
||||
wait-on: 7.0.1_debug@4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@ -13945,12 +13880,12 @@ packages:
|
||||
xml-name-validator: 4.0.0
|
||||
dev: false
|
||||
|
||||
/wait-on/6.0.1_debug@4.3.4:
|
||||
resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
/wait-on/7.0.1_debug@4.3.4:
|
||||
resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
axios: 0.25.0_debug@4.3.4
|
||||
axios: 0.27.2_debug@4.3.4
|
||||
joi: 17.7.0
|
||||
lodash: 4.17.21
|
||||
minimist: 1.2.7
|
||||
|
Loading…
Reference in New Issue
Block a user