summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/lint.yml2
-rw-r--r--.github/workflows/test-federation.yml16
-rw-r--r--CHANGELOG.md22
-rw-r--r--cypress/e2e/basic.cy.ts2
-rw-r--r--locales/ca-ES.yml7
-rw-r--r--locales/cs-CZ.yml4
-rw-r--r--locales/index.d.ts12
-rw-r--r--locales/it-IT.yml47
-rw-r--r--locales/ja-JP.yml3
-rw-r--r--locales/zh-CN.yml9
-rw-r--r--locales/zh-TW.yml7
-rw-r--r--package.json6
-rw-r--r--packages/backend/migration/1740121393164-system-accounts.js37
-rw-r--r--packages/backend/migration/1740129169650-system-accounts-2.js22
-rw-r--r--packages/backend/migration/1740133121105-system-accounts-3.js23
-rw-r--r--packages/backend/migration/1740993126937-system-accounts-4.js17
-rw-r--r--packages/backend/src/GlobalModule.ts2
-rw-r--r--packages/backend/src/core/AbuseReportService.ts6
-rw-r--r--packages/backend/src/core/AccountMoveService.ts14
-rw-r--r--packages/backend/src/core/CoreModule.ts24
-rw-r--r--packages/backend/src/core/CreateSystemUserService.ts86
-rw-r--r--packages/backend/src/core/DeleteAccountService.ts14
-rw-r--r--packages/backend/src/core/InstanceActorService.ts57
-rw-r--r--packages/backend/src/core/MetaService.ts23
-rw-r--r--packages/backend/src/core/ProxyAccountService.ts28
-rw-r--r--packages/backend/src/core/RelayService.ts33
-rw-r--r--packages/backend/src/core/RoleService.ts22
-rw-r--r--packages/backend/src/core/S3Service.ts2
-rw-r--r--packages/backend/src/core/SignupService.ts19
-rw-r--r--packages/backend/src/core/SystemAccountService.ts172
-rw-r--r--packages/backend/src/core/UserListService.ts10
-rw-r--r--packages/backend/src/core/WebhookTestService.ts1
-rw-r--r--packages/backend/src/core/activitypub/ApInboxService.ts11
-rw-r--r--packages/backend/src/core/activitypub/ApRendererService.ts43
-rw-r--r--packages/backend/src/core/activitypub/ApResolverService.ts16
-rw-r--r--packages/backend/src/core/activitypub/models/ApPersonService.ts6
-rw-r--r--packages/backend/src/core/entities/MetaEntityService.ts12
-rw-r--r--packages/backend/src/core/entities/UserEntityService.ts10
-rw-r--r--packages/backend/src/di-symbols.ts1
-rw-r--r--packages/backend/src/misc/is-native-token.ts7
-rw-r--r--packages/backend/src/misc/token.ts (renamed from packages/backend/src/misc/generate-native-user-token.ts)5
-rw-r--r--packages/backend/src/models/Meta.ts26
-rw-r--r--packages/backend/src/models/RepositoryModule.ts13
-rw-r--r--packages/backend/src/models/SystemAccount.ts31
-rw-r--r--packages/backend/src/models/User.ts6
-rw-r--r--packages/backend/src/models/_.ts3
-rw-r--r--packages/backend/src/postgres.ts2
-rw-r--r--packages/backend/src/server/NodeinfoServerService.ts8
-rw-r--r--packages/backend/src/server/api/ApiCallService.ts4
-rw-r--r--packages/backend/src/server/api/AuthenticateService.ts4
-rw-r--r--packages/backend/src/server/api/endpoint-list.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/create.ts13
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/delete.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/meta.ts8
-rw-r--r--packages/backend/src/server/api/endpoints/admin/reset-password.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-meta.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-proxy-account.ts62
-rw-r--r--packages/backend/src/server/api/endpoints/i/move.ts9
-rw-r--r--packages/backend/src/server/api/endpoints/i/regenerate-token.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/reset-db.ts19
-rw-r--r--packages/backend/src/server/oauth/OAuth2ProviderService.ts17
-rw-r--r--packages/backend/src/server/web/views/oauth.pug2
-rw-r--r--packages/backend/src/types.ts29
-rw-r--r--packages/backend/test-federation/compose.yml4
-rw-r--r--packages/backend/test-federation/test/abuse-report.test.ts2
-rw-r--r--packages/backend/test-federation/test/user.test.ts7
-rw-r--r--packages/backend/test-federation/test/utils.ts2
-rw-r--r--packages/backend/test/e2e/oauth.ts56
-rw-r--r--packages/backend/test/misc/mock-resolver.ts9
-rw-r--r--packages/backend/test/unit/AbuseReportNotificationService.ts6
-rw-r--r--packages/backend/test/unit/FlashService.ts6
-rw-r--r--packages/backend/test/unit/RelayService.ts25
-rw-r--r--packages/backend/test/unit/RoleService.ts22
-rw-r--r--packages/backend/test/unit/SystemWebhookService.ts2
-rw-r--r--packages/backend/test/unit/UserSearchService.ts2
-rw-r--r--packages/backend/test/unit/UserWebhookService.ts2
-rw-r--r--packages/backend/test/unit/WebhookTestService.ts4
-rw-r--r--packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts4
-rw-r--r--packages/frontend-embed/package.json36
-rw-r--r--packages/frontend-shared/package.json10
-rw-r--r--packages/frontend/.storybook/preview-head.html2
-rw-r--r--packages/frontend/package.json86
-rw-r--r--packages/frontend/src/components/MkEmojiPicker.vue2
-rw-r--r--packages/frontend/src/components/MkMediaAudio.vue9
-rw-r--r--packages/frontend/src/components/MkMediaImage.vue16
-rw-r--r--packages/frontend/src/components/MkMediaVideo.vue9
-rw-r--r--packages/frontend/src/components/MkMention.vue4
-rw-r--r--packages/frontend/src/components/MkNote.vue2
-rw-r--r--packages/frontend/src/components/MkNoteDetailed.vue2
-rw-r--r--packages/frontend/src/components/MkPostForm.vue4
-rw-r--r--packages/frontend/src/components/MkPostFormAttaches.vue2
-rw-r--r--packages/frontend/src/components/MkPostFormDialog.vue19
-rw-r--r--packages/frontend/src/components/global/MkAcct.vue3
-rw-r--r--packages/frontend/src/directives/ripple.ts2
-rw-r--r--packages/frontend/src/pages/admin-file.vue21
-rw-r--r--packages/frontend/src/pages/admin-user.vue44
-rw-r--r--packages/frontend/src/pages/admin/modlog.ModLog.vue5
-rw-r--r--packages/frontend/src/pages/admin/settings.vue32
-rw-r--r--packages/frontend/src/pages/oauth.vue2
-rw-r--r--packages/frontend/src/pages/search.note.vue9
-rw-r--r--packages/frontend/src/pages/user/home.vue5
-rw-r--r--packages/frontend/src/scripts/get-note-menu.ts6
-rw-r--r--packages/frontend/src/scripts/lookup.ts82
-rw-r--r--packages/frontend/src/store.ts6
-rw-r--r--packages/frontend/test/home.test.ts2
-rw-r--r--packages/misskey-bubble-game/package.json8
-rw-r--r--packages/misskey-js/etc/misskey-js.api.md8
-rw-r--r--packages/misskey-js/generator/package.json8
-rw-r--r--packages/misskey-js/package.json12
-rw-r--r--packages/misskey-js/src/autogen/apiClientJSDoc.ts11
-rw-r--r--packages/misskey-js/src/autogen/endpoint.ts3
-rw-r--r--packages/misskey-js/src/autogen/entities.ts2
-rw-r--r--packages/misskey-js/src/autogen/types.ts66
-rw-r--r--packages/misskey-reversi/package.json8
-rw-r--r--packages/sw/package.json4
-rw-r--r--pnpm-lock.yaml2183
-rw-r--r--renovate.json53
-rw-r--r--scripts/changelog-checker/package-lock.json342
-rw-r--r--scripts/changelog-checker/package.json12
119 files changed, 2379 insertions, 2003 deletions
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index a34ac38d74..b1d52e8b3b 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -79,7 +79,7 @@ jobs:
- run: corepack enable
- run: pnpm i --frozen-lockfile
- name: Restore eslint cache
- uses: actions/cache@v4.2.1
+ uses: actions/cache@v4.2.2
with:
path: ${{ env.eslint-cache-path }}
key: eslint-${{ env.eslint-cache-version }}-${{ matrix.workspace }}-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ github.ref_name }}-${{ github.sha }}
diff --git a/.github/workflows/test-federation.yml b/.github/workflows/test-federation.yml
index e7b5d7b098..0b71325de3 100644
--- a/.github/workflows/test-federation.yml
+++ b/.github/workflows/test-federation.yml
@@ -62,14 +62,30 @@ jobs:
bash ./setup.sh
sudo chmod 644 ./certificates/*.test.key
- name: Start servers
+ id: start_servers
+ continue-on-error: true
# https://github.com/docker/compose/issues/1294#issuecomment-374847206
run: |
cd packages/backend/test-federation
docker compose up -d --scale tester=0
+ - name: Print start_servers error
+ if: ${{ steps.start_servers.outcome == 'failure' }}
+ run: |
+ cd packages/backend/test-federation
+ docker compose logs | tail -n 300
+ exit 1
- name: Test
+ id: test
+ continue-on-error: true
run: |
cd packages/backend/test-federation
docker compose run --no-deps tester
+ - name: Log
+ if: ${{ steps.test.outcome == 'failure' }}
+ run: |
+ cd packages/backend/test-federation
+ docker compose logs
+ exit 1
- name: Stop servers
run: |
cd packages/backend/test-federation
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 53cf1b0cca..197de5aec7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,25 @@
+## 2025.3.0
+
+### General
+- Enhance: プロキシアカウントをシステムアカウントとして作成するように
+- Enhance: OAuthで外部アプリからロゴが提供されている場合、それを表示できるように
+ 書式は https://indieauth.spec.indieweb.org/20220212/#example-2 に準じます。
+- Fix: システムアカウントが削除できる問題を修正
+
+### Client
+- Enhance: モデレーターがセンシティブ設定を変更する際に確認ダイアログを出すように
+- Enhance: 「UIのアニメーションを減らす」で画面上のエフェクトも減らせるように
+- Enhance: 投稿フォームにおける、メディアの添付可能個数のカウントを反転しました
+ - これまでの表示は`添付可能残り個数/上限数`でしたが、`添付個数/上限数`としました
+- Fix: フォローされたときのメッセージがちらつくことがある問題を修正
+- Fix: 投稿ダイアログがサイズ限界を超えた際にスクロールできない問題を修正
+
+### Server
+- Fix: 特定のケースでActivityPubの処理がデッドロックになることがあるのを修正
+- Fix: S3互換オブジェクトストレージでファイルのアップロードに失敗することがある問題を修正
+ (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/895)
+
+
## 2025.2.1
### General
diff --git a/cypress/e2e/basic.cy.ts b/cypress/e2e/basic.cy.ts
index d2efbf709c..6471f96504 100644
--- a/cypress/e2e/basic.cy.ts
+++ b/cypress/e2e/basic.cy.ts
@@ -233,7 +233,7 @@ describe('After user setup', () => {
cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
cy.get('[data-cy-open-post-form-submit]').click();
- cy.contains('Hello, Misskey!');
+ cy.contains('Hello, Misskey!', { timeout: 15000 });
});
it('open note form with hotkey', () => {
diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml
index a42ebb0a5a..8b52450e95 100644
--- a/locales/ca-ES.yml
+++ b/locales/ca-ES.yml
@@ -260,7 +260,7 @@ noCustomEmojis: "No hi ha emojis personalitzats"
noJobs: "No hi ha feines"
federating: "Federant"
blocked: "Bloquejat"
-suspended: "Suspés"
+suspended: "Anul·lar subscripció "
all: "tot"
subscribing: "Subscrit a"
publishing: "S'està publicant"
@@ -1311,6 +1311,8 @@ federationSpecified: "Aquest servidor treballa amb una federació de llistes bla
federationDisabled: "La unió es troba deshabilitada en aquest servidor. No es pot interactuar amb usuaris d'altres servidors."
confirmOnReact: "Confirmar en reaccionar"
reactAreYouSure: "Vols reaccionar amb \"{emoji}\"?"
+markAsSensitiveConfirm: "Vols marcar aquest contingut com a sensible?"
+unmarkAsSensitiveConfirm: "Vols deixar de marcar com a sensible aquest contingut?"
_accountSettings:
requireSigninToViewContents: "És obligatori l'inici de sessió per poder veure el contingut"
requireSigninToViewContentsDescription1: "Es requereix l'inici de sessió per poder veure totes les notes i el contingut que has creat. Amb això esperem evitar que els rastrejadors recopilin informació."
@@ -1332,7 +1334,7 @@ _abuseUserReport:
resolveTutorial: "Si l'informe és legítim selecciona \"Acceptar\" per resoldre'l positivament. Però si l'informe no és legítim selecciona \"Rebutjar\" per resoldre'l negativament."
_delivery:
status: "Estat d'entrega "
- stop: "Suspés"
+ stop: "Anul·lar subscripció "
resume: "Torna a enviar"
_type:
none: "S'està publicant"
@@ -2594,6 +2596,7 @@ _moderationLogTypes:
deletePage: "Esborrar la pàgina"
deleteFlash: "Esborrar el guió"
deleteGalleryPost: "Esborrar la publicació de la galeria"
+ updateProxyAccountDescription: "Actualitzar descripció del compte proxy"
_fileViewer:
title: "Detall del fitxer"
type: "Tipus de fitxer"
diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml
index fea8902ab8..c0f6922297 100644
--- a/locales/cs-CZ.yml
+++ b/locales/cs-CZ.yml
@@ -5,6 +5,7 @@ introMisskey: "Vítejte! Misskey je otevřený a decentralizovaný microblogový
poweredByMisskeyDescription: "{name} je jeden ze serverů využívající open source platformu <b>Misskey<b> (nazývaná \"Misskey instance\")."
monthAndDay: "{day}. {month}."
search: "Vyhledávání"
+reset: "Obnovit"
notifications: "Oznámení"
username: "Uživatelské jméno"
password: "Heslo"
@@ -365,8 +366,11 @@ hcaptcha: "hCaptcha"
enableHcaptcha: "Aktivovat hCaptchu"
hcaptchaSiteKey: "Klíč stránky"
hcaptchaSecretKey: "Tajný Klíč (Secret Key)"
+mcaptcha: "mCaptcha"
+enableMcaptcha: "Aktivovat mCaptchu"
mcaptchaSiteKey: "Klíč stránky"
mcaptchaSecretKey: "Tajný Klíč (Secret Key)"
+mcaptchaInstanceUrl: "URL mCaptcha serveru"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Zapnout ReCAPTCHu"
recaptchaSiteKey: "Klíč stránky"
diff --git a/locales/index.d.ts b/locales/index.d.ts
index 74e3cdeceb..947b577792 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -5262,6 +5262,14 @@ export interface Locale extends ILocale {
* " {emoji} " をリアクションしますか?
*/
"reactAreYouSure": ParameterizedString<"emoji">;
+ /**
+ * このメディアをセンシティブとして設定しますか?
+ */
+ "markAsSensitiveConfirm": string;
+ /**
+ * このメディアのセンシティブ指定を解除しますか?
+ */
+ "unmarkAsSensitiveConfirm": string;
"_accountSettings": {
/**
* コンテンツの表示にログインを必須にする
@@ -10058,6 +10066,10 @@ export interface Locale extends ILocale {
* ギャラリーの投稿を削除
*/
"deleteGalleryPost": string;
+ /**
+ * プロキシアカウントの説明を更新
+ */
+ "updateProxyAccountDescription": string;
};
"_fileViewer": {
/**
diff --git a/locales/it-IT.yml b/locales/it-IT.yml
index eaf9e81b0e..c3a33139be 100644
--- a/locales/it-IT.yml
+++ b/locales/it-IT.yml
@@ -126,7 +126,7 @@ pinnedNote: "Nota in primo piano"
pinned: "Fissa sul profilo"
you: "Tu"
clickToShow: "Contenuto occultato, cliccare solo se si intende vedere"
-sensitive: "Allegato esplicito"
+sensitive: "Esplicito"
add: "Aggiungi"
reaction: "Reazioni"
reactions: "Reazioni"
@@ -228,7 +228,7 @@ jobQueue: "Coda di lavoro"
cpuAndMemory: "CPU e Memoria"
network: "Rete"
disk: "Disco"
-instanceInfo: "Informazioni sull'istanza"
+instanceInfo: "Informazioni sul server"
statistics: "Statistiche"
clearQueue: "Svuota coda"
clearQueueConfirmTitle: "Vuoi davvero svuotare la coda?"
@@ -445,7 +445,7 @@ exploreFediverse: "Esplora il Fediverso"
popularTags: "Hashtag popolari"
userList: "Liste"
about: "Informazioni"
-aboutMisskey: "Informazioni di Misskey"
+aboutMisskey: "A proposito di Misskey"
administrator: "Amministratore"
token: "Token"
2fa: "Autenticazione a due fattori"
@@ -893,7 +893,7 @@ searchResult: "Risultati della Ricerca"
hashtags: "Hashtag"
troubleshooting: "Risoluzione problemi"
useBlurEffect: "Utilizza effetto sfocatura"
-learnMore: "Più dettagli"
+learnMore: "Per saperne di più"
misskeyUpdated: "Misskey è stato aggiornato!"
whatIsNew: "Informazioni sull'aggiornamento"
translate: "Traduci"
@@ -901,7 +901,7 @@ translatedFrom: "Traduzione da {x}"
accountDeletionInProgress: "È in corso l'eliminazione del profilo"
usernameInfo: "Un nome per identificare univocamente il tuo profilo sull'istanza. Puoi utilizzare caratteri alfanumerici maiuscoli, minuscoli e il trattino basso (_). Non potrai cambiare nome utente in seguito."
aiChanMode: "Modalità Ai"
-devMode: "Modalità sviluppatori"
+devMode: "Modalità sviluppo"
keepCw: "Mostra i contenuti espliciti"
pubSub: "Publish/Subscribe del profilo"
lastCommunication: "La comunicazione più recente"
@@ -1049,7 +1049,7 @@ permissionDeniedError: "Errore, attività non autorizzata"
permissionDeniedErrorDescription: "Non si dispone dell'autorizzazione per eseguire questa operazione."
preset: "Preimpostato"
selectFromPresets: "Seleziona preimpostato"
-achievements: "Obiettivi raggiunti"
+achievements: "Conquiste"
gotInvalidResponseError: "Risposta del server non valida"
gotInvalidResponseErrorDescription: "Il server potrebbe essere irraggiungibile o in manutenzione. Riprova più tardi."
thisPostMayBeAnnoying: "Questa nota potrebbe essere offensiva"
@@ -1311,6 +1311,8 @@ federationSpecified: "Questo server è federato solo con istanze specifiche del
federationDisabled: "Questo server ha la federazione disabilitata. Non puoi interagire con profili provenienti da altri server."
confirmOnReact: "Confermare le reazioni"
reactAreYouSure: "Vuoi davvero reagire con {emoji} ?"
+markAsSensitiveConfirm: "Vuoi davvero indicare questo contenuto multimediale come esplicito?"
+unmarkAsSensitiveConfirm: "Vuoi davvero indicare come non esplicito il contenuto multimediale?"
_accountSettings:
requireSigninToViewContents: "Per vedere il contenuto, è necessaria l'iscrizione"
requireSigninToViewContentsDescription1: "Richiedere l'iscrizione per visualizzare tutte le Note e gli altri contenuti che hai creato. Probabilmente l'effetto è impedire la raccolta di informazioni da parte dei bot crawler."
@@ -1447,9 +1449,9 @@ _initialTutorial:
description: "Queste sono solamente alcune delle funzionalità principali di Misskey. Per ulteriori informazioni, {link}."
_timelineDescription:
home: "Nella Timeline Home, la tua cronologia principale, puoi vedere le Note provenienti dai profili che segui (Following)."
- local: "La Timeline Locale, è una cronologia di Note pubblicate da tutti i profili iscritti su questo server."
- social: "La Timeline Sociale, unisce in ordine cronologico l'elenco di Note presenti nella Timeline Home e quella Locale."
- global: "La Timeline Federata ti consente di vedere le Note pubblicate dai profili di tutti gli altri server federati a questo."
+ local: "La Timeline Locale è un flusso di Note pubblicate dai profili iscritti a questo server."
+ social: "La Timeline Sociale elenca, in ordine cronologico, il flusso di Note nella Timeline Home e Locale."
+ global: "Nella Timeline Federata trovi il flusso di Note provenienti da profili iscritti ad altri server, federati a questo."
_serverRules:
description: "In Europa è necessario mostrare l'informativa sul trattamento dei dati personali, prima della registrazione al servizio."
_serverSettings:
@@ -1474,7 +1476,7 @@ _accountMigration:
moveFrom: "Migra un altro profilo dentro a questo"
moveFromSub: "Crea un alias verso un altro profilo remoto"
moveFromLabel: "Profilo da cui migrare #{n}"
- moveFromDescription: "Se desideri spostare i Follower da un altro profilo a questo, devi prima creare un alias qui. Assicurati averlo creato PRIMA di eseguire l'attività! Inserisci l'indirizzo del profilo mittente in questo modo: @persona@istanza.it"
+ moveFromDescription: "Se desideri spostare i Follower da un altro profilo a questo, devi prima creare un alias qui. Assicurati averlo creato PRIMA di eseguire l'attività! Inserisci l'indirizzo del profilo mittente in questo modo: @persona@vecchia.istanza.it"
moveTo: "Migrare questo profilo verso un un altro"
moveToLabel: "Profilo verso cui migrare"
moveCannotBeUndone: "La migrazione è irreversibile, non può essere interrotta o annullata."
@@ -1550,13 +1552,13 @@ _achievements:
title: "Principiante III"
description: "Hai totalizzato 15 accessi!"
_login30:
- title: "Misskist I"
+ title: "Missalcolista I"
description: "Hai totalizzato 30 accessi!"
_login60:
- title: "Misskeist II"
+ title: "Missalcolista II"
description: "Hai totalizzato 60 accessi!"
_login100:
- title: "Misskeist III"
+ title: "Missalcolista III"
description: "Hai totalizzato 100 accessi!"
flavor: "Violent Misskeist"
_login200:
@@ -1642,10 +1644,10 @@ _achievements:
description: "Hai superato i 1.000 profili Follower"
_collectAchievements30:
title: "Collezionista di successi"
- description: "Hai raggiunto 30 obiettivi"
+ description: "Hai raggiunto 30 conquiste"
_viewAchievements3min:
title: "Mi piacciono i risultati"
- description: "Guarda la tua collezione di obiettivi per almeno 3 minuti"
+ description: "Ammira la tua collezione di conquiste per almeno 3 minuti"
_iLoveMisskey:
title: "I LOVE Misskey"
description: "Pubblica «I ♥ #Misskey»"
@@ -1910,7 +1912,7 @@ _registry:
domain: "Dominio"
createKey: "Crea chiave"
_aboutMisskey:
- about: "Misskey è un software libero e open source, sviluppato da syuilo dal 2014."
+ about: "Misskey è software libero, open source, sviluppato da Syuilo fin dal lontano 2014."
contributors: "Principali sostenitori"
allContributors: "Tutti i sostenitori"
source: "Codice sorgente"
@@ -2237,7 +2239,7 @@ _widgets:
userList: "Elenco utenti"
_userList:
chooseList: "Seleziona una lista"
- clicker: "Cliccaggio"
+ clicker: "Cliccheria"
birthdayFollowings: "Compleanni del giorno"
_cw:
hide: "Nascondere"
@@ -2300,7 +2302,7 @@ _profile:
metadataContent: "Contenuto"
changeAvatar: "Modifica immagine profilo"
changeBanner: "Cambia intestazione"
- verifiedLinkDescription: "Puoi verificare il tuo profilo mostrando una icona. Devi inserire la URL alla pagina che contiene un link al tuo profilo."
+ verifiedLinkDescription: "Puoi verificare il tuo profilo mostrando una icona. Devi inserire la URL alla pagina che contiene un link al tuo profilo.\nPer verificare il profilo tramite la spunta di conferma, devi inserire la url alla pagina che contiene un link al tuo profilo Misskey. Deve avere attributo rel='me'."
avatarDecorationMax: "Puoi aggiungere fino a {max} decorazioni."
followedMessage: "Messaggio, quando qualcuno ti segue"
followedMessageDescription: "Puoi impostare un breve messaggio da mostrare agli altri profili quando ti seguono."
@@ -2594,6 +2596,7 @@ _moderationLogTypes:
deletePage: "Pagina eliminata"
deleteFlash: "Play eliminato"
deleteGalleryPost: "Eliminazione pubblicazione nella Galleria"
+ updateProxyAccountDescription: "Aggiornata la descrizione del profilo proxy"
_fileViewer:
title: "Dettagli del file"
type: "Tipo di file"
@@ -2811,8 +2814,8 @@ _selfXssPrevention:
description2: "Se non sai esattamente cosa stai facendo, %c smetti subito e chiudi questa finestra."
description3: "Per favore, controlla questo collegamento per avere maggiori dettagli. {link}"
_followRequest:
- recieved: "Ricezione richiesta di Follow"
- sent: "Richiesta di Follow, inviata"
+ recieved: "Richieste in ingresso"
+ sent: "Richieste in uscita"
_remoteLookupErrors:
_federationNotAllowed:
title: "Server irraggiungibile"
@@ -2857,4 +2860,8 @@ _bootErrors:
_search:
searchScopeAll: "Tutte"
searchScopeLocal: "Locale"
+ searchScopeServer: "Specifiche del server"
searchScopeUser: "Profilo specifico"
+ pleaseEnterServerHost: "Inserire il nome host"
+ pleaseSelectUser: "Per favore, seleziona un profilo"
+ serverHostPlaceholder: "Es: misskey.example.com"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 270b5fc265..fbe4d98896 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1311,6 +1311,8 @@ federationSpecified: "このサーバーはホワイトリスト連合で運用
federationDisabled: "このサーバーは連合が無効化されています。他のサーバーのユーザーとやり取りすることはできません。"
confirmOnReact: "リアクションする際に確認する"
reactAreYouSure: "\" {emoji} \" をリアクションしますか?"
+markAsSensitiveConfirm: "このメディアをセンシティブとして設定しますか?"
+unmarkAsSensitiveConfirm: "このメディアのセンシティブ指定を解除しますか?"
_accountSettings:
requireSigninToViewContents: "コンテンツの表示にログインを必須にする"
@@ -2664,6 +2666,7 @@ _moderationLogTypes:
deletePage: "ページを削除"
deleteFlash: "Playを削除"
deleteGalleryPost: "ギャラリーの投稿を削除"
+ updateProxyAccountDescription: "プロキシアカウントの説明を更新"
_fileViewer:
title: "ファイルの詳細"
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 1599db5854..f0df9deee0 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -1311,6 +1311,8 @@ federationSpecified: "此服务器已开启联合白名单。只能与管理员
federationDisabled: "此服务器已禁用联合。无法与其它服务器上的用户通信。"
confirmOnReact: "发送回应前需要确认"
reactAreYouSure: "要用「{emoji}」进行回应吗?"
+markAsSensitiveConfirm: "要将此媒体标记为敏感吗?"
+unmarkAsSensitiveConfirm: "要将此媒体解除敏感标记吗?"
_accountSettings:
requireSigninToViewContents: "需要登录才能显示内容"
requireSigninToViewContentsDescription1: "您发布的所有帖子将变成需要登入后才会显示。有望防止爬虫收集各种信息。"
@@ -2594,6 +2596,7 @@ _moderationLogTypes:
deletePage: "删除了页面"
deleteFlash: "删除了 Play"
deleteGalleryPost: "删除了图库稿件"
+ updateProxyAccountDescription: "更新代理账户的说明"
_fileViewer:
title: "文件信息"
type: "文件类型"
@@ -2857,4 +2860,8 @@ _bootErrors:
_search:
searchScopeAll: "全部"
searchScopeLocal: "本地"
- searchScopeUser: "用户指定"
+ searchScopeServer: "指定服务器"
+ searchScopeUser: "指定用户"
+ pleaseEnterServerHost: "请填写服务器主机名"
+ pleaseSelectUser: "请选择用户"
+ serverHostPlaceholder: "如:misskey.example.com"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index 10079f2bee..7c7e290545 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -1311,6 +1311,8 @@ federationSpecified: "此伺服器以白名單聯邦的方式運作。除了管
federationDisabled: "此伺服器未開啟站台聯邦。無法與其他伺服器上的使用者互動。"
confirmOnReact: "反應時確認"
reactAreYouSure: "用「 {emoji} 」反應嗎?"
+markAsSensitiveConfirm: "要將這個媒體設定為敏感嗎?"
+unmarkAsSensitiveConfirm: "要解除這個媒體的敏感設定嗎?"
_accountSettings:
requireSigninToViewContents: "須登入以顯示內容"
requireSigninToViewContentsDescription1: "必須登入才會顯示您建立的貼文等內容。可望有效防止資訊被爬蟲蒐集。"
@@ -2594,6 +2596,7 @@ _moderationLogTypes:
deletePage: "刪除頁面"
deleteFlash: "刪除 Play"
deleteGalleryPost: "刪除相簿的貼文"
+ updateProxyAccountDescription: "更新代理帳戶的說明"
_fileViewer:
title: "檔案詳細資訊"
type: "檔案類型 "
@@ -2857,4 +2860,8 @@ _bootErrors:
_search:
searchScopeAll: "全部"
searchScopeLocal: "本地"
+ searchScopeServer: "指定伺服器"
searchScopeUser: "指定使用者"
+ pleaseEnterServerHost: "請輸入伺服器的主機名稱"
+ pleaseSelectUser: "請選擇使用者"
+ serverHostPlaceholder: "例:misskey.example.com"
diff --git a/package.json b/package.json
index 201b30ec36..a3a5924aff 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "misskey",
- "version": "2025.2.1",
+ "version": "2025.3.0",
"codename": "nasubi",
"repository": {
"type": "git",
@@ -25,7 +25,7 @@
"build-storybook": "pnpm --filter frontend build-storybook",
"build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api",
"start": "pnpm check:connect && cd packages/backend && node ./built/boot/entry.js",
- "start:test": "cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js",
+ "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js",
"init": "pnpm migrate",
"migrate": "cd packages/backend && pnpm migrate",
"revert": "cd packages/backend && pnpm revert",
@@ -37,7 +37,7 @@
"cy:open": "pnpm cypress open --browser --e2e --config-file=cypress.config.ts",
"cy:run": "pnpm cypress run",
"e2e": "pnpm start-server-and-test start:test http://localhost:61812 cy:run",
- "e2e-dev-container": "cp ./.config/cypress-devcontainer.yml ./.config/test.yml && pnpm start-server-and-test start:test http://localhost:61812 cy:run",
+ "e2e-dev-container": "ncp ./.config/cypress-devcontainer.yml ./.config/test.yml && pnpm start-server-and-test start:test http://localhost:61812 cy:run",
"jest": "cd packages/backend && pnpm jest",
"jest-and-coverage": "cd packages/backend && pnpm jest-and-coverage",
"test": "pnpm -r test",
diff --git a/packages/backend/migration/1740121393164-system-accounts.js b/packages/backend/migration/1740121393164-system-accounts.js
new file mode 100644
index 0000000000..9490cb2b64
--- /dev/null
+++ b/packages/backend/migration/1740121393164-system-accounts.js
@@ -0,0 +1,37 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class SystemAccounts1740121393164 {
+ name = 'SystemAccounts1740121393164'
+
+ async up(queryRunner) {
+ await queryRunner.query(`CREATE TABLE "system_account" ("id" character varying(32) NOT NULL, "userId" character varying(32) NOT NULL, "type" character varying(256) NOT NULL, CONSTRAINT "PK_edb56f4aaf9ddd50ee556da97ba" PRIMARY KEY ("id"))`);
+ await queryRunner.query(`CREATE INDEX "IDX_41a3c87a37aea616ee459369e1" ON "system_account" ("userId") `);
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_c362033aee0ea51011386a5a7e" ON "system_account" ("type") `);
+ await queryRunner.query(`ALTER TABLE "system_account" ADD CONSTRAINT "FK_41a3c87a37aea616ee459369e12" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
+
+ const instanceActor = await queryRunner.query(`SELECT "id" FROM "user" WHERE "username" = 'instance.actor'`);
+ if (instanceActor.length > 0) {
+ await queryRunner.query(`INSERT INTO "system_account" ("id", "userId", "type") VALUES ('${instanceActor[0].id}', '${instanceActor[0].id}', 'actor')`);
+ }
+
+ const relayActor = await queryRunner.query(`SELECT "id" FROM "user" WHERE "username" = 'relay.actor'`);
+ if (relayActor.length > 0) {
+ await queryRunner.query(`INSERT INTO "system_account" ("id", "userId", "type") VALUES ('${relayActor[0].id}', '${relayActor[0].id}', 'relay')`);
+ }
+
+ const meta = await queryRunner.query(`SELECT "proxyAccountId" FROM "meta" ORDER BY "id" DESC LIMIT 1`);
+ if (!meta && meta.length >= 1 && meta[0].proxyAccountId) {
+ await queryRunner.query(`INSERT INTO "system_account" ("id", "userId", "type") VALUES ('${meta[0].proxyAccountId}', '${meta[0].proxyAccountId}', 'proxy')`);
+ }
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "system_account" DROP CONSTRAINT "FK_41a3c87a37aea616ee459369e12"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_c362033aee0ea51011386a5a7e"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_41a3c87a37aea616ee459369e1"`);
+ await queryRunner.query(`DROP TABLE "system_account"`);
+ }
+}
diff --git a/packages/backend/migration/1740129169650-system-accounts-2.js b/packages/backend/migration/1740129169650-system-accounts-2.js
new file mode 100644
index 0000000000..c03f0337ab
--- /dev/null
+++ b/packages/backend/migration/1740129169650-system-accounts-2.js
@@ -0,0 +1,22 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class SystemAccounts21740129169650 {
+ name = 'SystemAccounts21740129169650'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" DROP CONSTRAINT "FK_ab1bc0c1e209daa77b8e8d212ad"`);
+ await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "proxyAccountId"`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" ADD "proxyAccountId" character varying(32)`);
+ const proxyAccountId = await queryRunner.query(`SELECT "userId" FROM "system_account" WHERE "type" = 'proxy' ORDER BY "id" DESC LIMIT 1`);
+ if (proxyAccountId && proxyAccountId.length >= 1) {
+ await queryRunner.query(`UPDATE "meta" SET "proxyAccountId" = '${proxyAccountId[0].userId}'`);
+ }
+ await queryRunner.query(`ALTER TABLE "meta" ADD CONSTRAINT "FK_ab1bc0c1e209daa77b8e8d212ad" FOREIGN KEY ("proxyAccountId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
+ }
+}
diff --git a/packages/backend/migration/1740133121105-system-accounts-3.js b/packages/backend/migration/1740133121105-system-accounts-3.js
new file mode 100644
index 0000000000..a1f8c996f5
--- /dev/null
+++ b/packages/backend/migration/1740133121105-system-accounts-3.js
@@ -0,0 +1,23 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class SystemAccounts31740133121105 {
+ name = 'SystemAccounts31740133121105'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" ADD "rootUserId" character varying(32)`);
+ await queryRunner.query(`ALTER TABLE "meta" ADD CONSTRAINT "FK_c80e4079d632f95eac06a9d28cc" FOREIGN KEY ("rootUserId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
+
+ const users = await queryRunner.query(`SELECT "id" FROM "user" WHERE "isRoot" = true LIMIT 1`);
+ if (users.length > 0) {
+ await queryRunner.query(`UPDATE "meta" SET "rootUserId" = $1`, [users[0].id]);
+ }
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" DROP CONSTRAINT "FK_c80e4079d632f95eac06a9d28cc"`);
+ await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "rootUserId"`);
+ }
+}
diff --git a/packages/backend/migration/1740993126937-system-accounts-4.js b/packages/backend/migration/1740993126937-system-accounts-4.js
new file mode 100644
index 0000000000..83654aca80
--- /dev/null
+++ b/packages/backend/migration/1740993126937-system-accounts-4.js
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class SystemAccounts41740993126937 {
+ name = 'SystemAccounts41740993126937'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "isRoot"`);
+ }
+
+ async down(queryRunner) {
+ // down 実行時は isRoot = true のユーザーが存在しなくなるため手動で対応する必要あり
+ await queryRunner.query(`ALTER TABLE "user" ADD "isRoot" boolean NOT NULL DEFAULT false`);
+ }
+}
diff --git a/packages/backend/src/GlobalModule.ts b/packages/backend/src/GlobalModule.ts
index ace7f7841c..5544eeeddd 100644
--- a/packages/backend/src/GlobalModule.ts
+++ b/packages/backend/src/GlobalModule.ts
@@ -133,7 +133,7 @@ const $meta: Provider = {
for (const key in body.after) {
(meta as any)[key] = (body.after as any)[key];
}
- meta.proxyAccount = null; // joinなカラムは通常取ってこないので
+ meta.rootUser = null; // joinなカラムは通常取ってこないので
break;
}
default:
diff --git a/packages/backend/src/core/AbuseReportService.ts b/packages/backend/src/core/AbuseReportService.ts
index 0b022d3b08..846d2c8ebd 100644
--- a/packages/backend/src/core/AbuseReportService.ts
+++ b/packages/backend/src/core/AbuseReportService.ts
@@ -10,9 +10,9 @@ import { bindThis } from '@/decorators.js';
import type { AbuseUserReportsRepository, MiAbuseUserReport, MiUser, UsersRepository } from '@/models/_.js';
import { AbuseReportNotificationService } from '@/core/AbuseReportNotificationService.js';
import { QueueService } from '@/core/QueueService.js';
-import { InstanceActorService } from '@/core/InstanceActorService.js';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
import { IdService } from './IdService.js';
@Injectable()
@@ -27,7 +27,7 @@ export class AbuseReportService {
private idService: IdService,
private abuseReportNotificationService: AbuseReportNotificationService,
private queueService: QueueService,
- private instanceActorService: InstanceActorService,
+ private systemAccountService: SystemAccountService,
private apRendererService: ApRendererService,
private moderationLogService: ModerationLogService,
) {
@@ -136,7 +136,7 @@ export class AbuseReportService {
forwarded: true,
});
- const actor = await this.instanceActorService.getInstanceActor();
+ const actor = await this.systemAccountService.fetch('actor');
const targetUser = await this.usersRepository.findOneByOrFail({ id: report.targetUserId });
const flag = this.apRendererService.renderFlag(actor, targetUser.uri!, report.comment);
diff --git a/packages/backend/src/core/AccountMoveService.ts b/packages/backend/src/core/AccountMoveService.ts
index 24d11f29ff..0fbb9bcd80 100644
--- a/packages/backend/src/core/AccountMoveService.ts
+++ b/packages/backend/src/core/AccountMoveService.ts
@@ -20,10 +20,10 @@ import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
import { ApDeliverManagerService } from '@/core/activitypub/ApDeliverManagerService.js';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
-import { ProxyAccountService } from '@/core/ProxyAccountService.js';
import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
import InstanceChart from '@/core/chart/charts/instance.js';
import PerUserFollowingChart from '@/core/chart/charts/per-user-following.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
@Injectable()
export class AccountMoveService {
@@ -55,12 +55,12 @@ export class AccountMoveService {
private apRendererService: ApRendererService,
private apDeliverManagerService: ApDeliverManagerService,
private globalEventService: GlobalEventService,
- private proxyAccountService: ProxyAccountService,
private perUserFollowingChart: PerUserFollowingChart,
private federatedInstanceService: FederatedInstanceService,
private instanceChart: InstanceChart,
private relayService: RelayService,
private queueService: QueueService,
+ private systemAccountService: SystemAccountService,
) {
}
@@ -126,11 +126,11 @@ export class AccountMoveService {
}
// follow the new account
- const proxy = await this.proxyAccountService.fetch();
+ const proxy = await this.systemAccountService.fetch('proxy');
const followings = await this.followingsRepository.findBy({
followeeId: src.id,
followerHost: IsNull(), // follower is local
- followerId: proxy ? Not(proxy.id) : undefined,
+ followerId: Not(proxy.id),
});
const followJobs = followings.map(following => ({
from: { id: following.followerId },
@@ -250,10 +250,8 @@ export class AccountMoveService {
// Have the proxy account follow the new account in the same way as UserListService.push
if (this.userEntityService.isRemoteUser(dst)) {
- const proxy = await this.proxyAccountService.fetch();
- if (proxy) {
- this.queueService.createFollowJob([{ from: { id: proxy.id }, to: { id: dst.id } }]);
- }
+ const proxy = await this.systemAccountService.fetch('proxy');
+ this.queueService.createFollowJob([{ from: { id: proxy.id }, to: { id: dst.id } }]);
}
}
diff --git a/packages/backend/src/core/CoreModule.ts b/packages/backend/src/core/CoreModule.ts
index 734d135648..dc85a23e5b 100644
--- a/packages/backend/src/core/CoreModule.ts
+++ b/packages/backend/src/core/CoreModule.ts
@@ -24,7 +24,6 @@ import { AppLockService } from './AppLockService.js';
import { AchievementService } from './AchievementService.js';
import { AvatarDecorationService } from './AvatarDecorationService.js';
import { CaptchaService } from './CaptchaService.js';
-import { CreateSystemUserService } from './CreateSystemUserService.js';
import { CustomEmojiService } from './CustomEmojiService.js';
import { DeleteAccountService } from './DeleteAccountService.js';
import { DownloadService } from './DownloadService.js';
@@ -37,7 +36,7 @@ import { HashtagService } from './HashtagService.js';
import { HttpRequestService } from './HttpRequestService.js';
import { IdService } from './IdService.js';
import { ImageProcessingService } from './ImageProcessingService.js';
-import { InstanceActorService } from './InstanceActorService.js';
+import { SystemAccountService } from './SystemAccountService.js';
import { InternalStorageService } from './InternalStorageService.js';
import { MetaService } from './MetaService.js';
import { MfmService } from './MfmService.js';
@@ -69,7 +68,6 @@ import { UserSuspendService } from './UserSuspendService.js';
import { UserAuthService } from './UserAuthService.js';
import { VideoProcessingService } from './VideoProcessingService.js';
import { UserWebhookService } from './UserWebhookService.js';
-import { ProxyAccountService } from './ProxyAccountService.js';
import { UtilityService } from './UtilityService.js';
import { FileInfoService } from './FileInfoService.js';
import { SearchService } from './SearchService.js';
@@ -167,7 +165,6 @@ const $AppLockService: Provider = { provide: 'AppLockService', useExisting: AppL
const $AchievementService: Provider = { provide: 'AchievementService', useExisting: AchievementService };
const $AvatarDecorationService: Provider = { provide: 'AvatarDecorationService', useExisting: AvatarDecorationService };
const $CaptchaService: Provider = { provide: 'CaptchaService', useExisting: CaptchaService };
-const $CreateSystemUserService: Provider = { provide: 'CreateSystemUserService', useExisting: CreateSystemUserService };
const $CustomEmojiService: Provider = { provide: 'CustomEmojiService', useExisting: CustomEmojiService };
const $DeleteAccountService: Provider = { provide: 'DeleteAccountService', useExisting: DeleteAccountService };
const $DownloadService: Provider = { provide: 'DownloadService', useExisting: DownloadService };
@@ -180,7 +177,6 @@ const $HashtagService: Provider = { provide: 'HashtagService', useExisting: Hash
const $HttpRequestService: Provider = { provide: 'HttpRequestService', useExisting: HttpRequestService };
const $IdService: Provider = { provide: 'IdService', useExisting: IdService };
const $ImageProcessingService: Provider = { provide: 'ImageProcessingService', useExisting: ImageProcessingService };
-const $InstanceActorService: Provider = { provide: 'InstanceActorService', useExisting: InstanceActorService };
const $InternalStorageService: Provider = { provide: 'InternalStorageService', useExisting: InternalStorageService };
const $MetaService: Provider = { provide: 'MetaService', useExisting: MetaService };
const $MfmService: Provider = { provide: 'MfmService', useExisting: MfmService };
@@ -191,7 +187,7 @@ const $NotePiningService: Provider = { provide: 'NotePiningService', useExisting
const $NoteReadService: Provider = { provide: 'NoteReadService', useExisting: NoteReadService };
const $NotificationService: Provider = { provide: 'NotificationService', useExisting: NotificationService };
const $PollService: Provider = { provide: 'PollService', useExisting: PollService };
-const $ProxyAccountService: Provider = { provide: 'ProxyAccountService', useExisting: ProxyAccountService };
+const $SystemAccountService: Provider = { provide: 'SystemAccountService', useExisting: SystemAccountService };
const $PushNotificationService: Provider = { provide: 'PushNotificationService', useExisting: PushNotificationService };
const $QueryService: Provider = { provide: 'QueryService', useExisting: QueryService };
const $ReactionService: Provider = { provide: 'ReactionService', useExisting: ReactionService };
@@ -318,7 +314,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
AchievementService,
AvatarDecorationService,
CaptchaService,
- CreateSystemUserService,
CustomEmojiService,
DeleteAccountService,
DownloadService,
@@ -331,7 +326,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
HttpRequestService,
IdService,
ImageProcessingService,
- InstanceActorService,
InternalStorageService,
MetaService,
MfmService,
@@ -342,7 +336,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
NoteReadService,
NotificationService,
PollService,
- ProxyAccountService,
+ SystemAccountService,
PushNotificationService,
QueryService,
ReactionService,
@@ -465,7 +459,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$AchievementService,
$AvatarDecorationService,
$CaptchaService,
- $CreateSystemUserService,
$CustomEmojiService,
$DeleteAccountService,
$DownloadService,
@@ -478,7 +471,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$HttpRequestService,
$IdService,
$ImageProcessingService,
- $InstanceActorService,
$InternalStorageService,
$MetaService,
$MfmService,
@@ -489,7 +481,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$NoteReadService,
$NotificationService,
$PollService,
- $ProxyAccountService,
+ $SystemAccountService,
$PushNotificationService,
$QueryService,
$ReactionService,
@@ -613,7 +605,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
AchievementService,
AvatarDecorationService,
CaptchaService,
- CreateSystemUserService,
CustomEmojiService,
DeleteAccountService,
DownloadService,
@@ -626,7 +617,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
HttpRequestService,
IdService,
ImageProcessingService,
- InstanceActorService,
InternalStorageService,
MetaService,
MfmService,
@@ -637,7 +627,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
NoteReadService,
NotificationService,
PollService,
- ProxyAccountService,
+ SystemAccountService,
PushNotificationService,
QueryService,
ReactionService,
@@ -759,7 +749,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$AchievementService,
$AvatarDecorationService,
$CaptchaService,
- $CreateSystemUserService,
$CustomEmojiService,
$DeleteAccountService,
$DownloadService,
@@ -772,7 +761,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$HttpRequestService,
$IdService,
$ImageProcessingService,
- $InstanceActorService,
$InternalStorageService,
$MetaService,
$MfmService,
@@ -783,7 +771,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$NoteReadService,
$NotificationService,
$PollService,
- $ProxyAccountService,
+ $SystemAccountService,
$PushNotificationService,
$QueryService,
$ReactionService,
diff --git a/packages/backend/src/core/CreateSystemUserService.ts b/packages/backend/src/core/CreateSystemUserService.ts
deleted file mode 100644
index 6c5b0f6a36..0000000000
--- a/packages/backend/src/core/CreateSystemUserService.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * SPDX-FileCopyrightText: syuilo and misskey-project
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { randomUUID } from 'node:crypto';
-import { Inject, Injectable } from '@nestjs/common';
-import bcrypt from 'bcryptjs';
-import { IsNull, DataSource } from 'typeorm';
-import { genRsaKeyPair } from '@/misc/gen-key-pair.js';
-import { MiUser } from '@/models/User.js';
-import { MiUserProfile } from '@/models/UserProfile.js';
-import { IdService } from '@/core/IdService.js';
-import { MiUserKeypair } from '@/models/UserKeypair.js';
-import { MiUsedUsername } from '@/models/UsedUsername.js';
-import { DI } from '@/di-symbols.js';
-import generateNativeUserToken from '@/misc/generate-native-user-token.js';
-import { bindThis } from '@/decorators.js';
-
-@Injectable()
-export class CreateSystemUserService {
- constructor(
- @Inject(DI.db)
- private db: DataSource,
-
- private idService: IdService,
- ) {
- }
-
- @bindThis
- public async createSystemUser(username: string): Promise<MiUser> {
- const password = randomUUID();
-
- // Generate hash of password
- const salt = await bcrypt.genSalt(8);
- const hash = await bcrypt.hash(password, salt);
-
- // Generate secret
- const secret = generateNativeUserToken();
-
- const keyPair = await genRsaKeyPair();
-
- let account!: MiUser;
-
- // Start transaction
- await this.db.transaction(async transactionalEntityManager => {
- const exist = await transactionalEntityManager.findOneBy(MiUser, {
- usernameLower: username.toLowerCase(),
- host: IsNull(),
- });
-
- if (exist) throw new Error('the user is already exists');
-
- account = await transactionalEntityManager.insert(MiUser, {
- id: this.idService.gen(),
- username: username,
- usernameLower: username.toLowerCase(),
- host: null,
- token: secret,
- isRoot: false,
- isLocked: true,
- isExplorable: false,
- isBot: true,
- }).then(x => transactionalEntityManager.findOneByOrFail(MiUser, x.identifiers[0]));
-
- await transactionalEntityManager.insert(MiUserKeypair, {
- publicKey: keyPair.publicKey,
- privateKey: keyPair.privateKey,
- userId: account.id,
- });
-
- await transactionalEntityManager.insert(MiUserProfile, {
- userId: account.id,
- autoAcceptFollowed: false,
- password: hash,
- });
-
- await transactionalEntityManager.insert(MiUsedUsername, {
- createdAt: new Date(),
- username: username.toLowerCase(),
- });
- });
-
- return account;
- }
-}
diff --git a/packages/backend/src/core/DeleteAccountService.ts b/packages/backend/src/core/DeleteAccountService.ts
index 7f1b8f3efb..483f14ce7f 100644
--- a/packages/backend/src/core/DeleteAccountService.ts
+++ b/packages/backend/src/core/DeleteAccountService.ts
@@ -5,7 +5,7 @@
import { Inject, Injectable } from '@nestjs/common';
import { Not, IsNull } from 'typeorm';
-import type { FollowingsRepository, MiUser, UsersRepository } from '@/models/_.js';
+import type { FollowingsRepository, MiMeta, MiUser, UsersRepository } from '@/models/_.js';
import { QueueService } from '@/core/QueueService.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
@@ -13,10 +13,14 @@ import { GlobalEventService } from '@/core/GlobalEventService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
@Injectable()
export class DeleteAccountService {
constructor(
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -28,6 +32,7 @@ export class DeleteAccountService {
private queueService: QueueService,
private globalEventService: GlobalEventService,
private moderationLogService: ModerationLogService,
+ private systemAccountService: SystemAccountService,
) {
}
@@ -36,8 +41,13 @@ export class DeleteAccountService {
id: string;
host: string | null;
}, moderator?: MiUser): Promise<void> {
+ if (this.meta.rootUserId === user.id) throw new Error('cannot delete a root account');
+
const _user = await this.usersRepository.findOneByOrFail({ id: user.id });
- if (_user.isRoot) throw new Error('cannot delete a root account');
+
+ if (user.host === null && _user.username.includes('.')) {
+ throw new Error('cannot delete a system account');
+ }
if (moderator != null) {
this.moderationLogService.log(moderator, 'deleteAccount', {
diff --git a/packages/backend/src/core/InstanceActorService.ts b/packages/backend/src/core/InstanceActorService.ts
deleted file mode 100644
index 22c47297a3..0000000000
--- a/packages/backend/src/core/InstanceActorService.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * SPDX-FileCopyrightText: syuilo and misskey-project
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { Inject, Injectable } from '@nestjs/common';
-import { IsNull, Not } from 'typeorm';
-import type { MiLocalUser } from '@/models/User.js';
-import type { UsersRepository } from '@/models/_.js';
-import { MemorySingleCache } from '@/misc/cache.js';
-import { DI } from '@/di-symbols.js';
-import { CreateSystemUserService } from '@/core/CreateSystemUserService.js';
-import { bindThis } from '@/decorators.js';
-
-const ACTOR_USERNAME = 'instance.actor' as const;
-
-@Injectable()
-export class InstanceActorService {
- private cache: MemorySingleCache<MiLocalUser>;
-
- constructor(
- @Inject(DI.usersRepository)
- private usersRepository: UsersRepository,
-
- private createSystemUserService: CreateSystemUserService,
- ) {
- this.cache = new MemorySingleCache<MiLocalUser>(Infinity);
- }
-
- @bindThis
- public async realLocalUsersPresent(): Promise<boolean> {
- return await this.usersRepository.existsBy({
- host: IsNull(),
- username: Not(ACTOR_USERNAME),
- });
- }
-
- @bindThis
- public async getInstanceActor(): Promise<MiLocalUser> {
- const cached = this.cache.get();
- if (cached) return cached;
-
- const user = await this.usersRepository.findOneBy({
- host: IsNull(),
- username: ACTOR_USERNAME,
- }) as MiLocalUser | undefined;
-
- if (user) {
- this.cache.set(user);
- return user;
- } else {
- const created = await this.createSystemUserService.createSystemUser(ACTOR_USERNAME) as MiLocalUser;
- this.cache.set(created);
- return created;
- }
- }
-}
diff --git a/packages/backend/src/core/MetaService.ts b/packages/backend/src/core/MetaService.ts
index 3d88d0aefe..40e7439f5f 100644
--- a/packages/backend/src/core/MetaService.ts
+++ b/packages/backend/src/core/MetaService.ts
@@ -53,7 +53,7 @@ export class MetaService implements OnApplicationShutdown {
case 'metaUpdated': {
this.cache = { // TODO: このあたりのデシリアライズ処理は各modelファイル内に関数としてexportしたい
...(body.after),
- proxyAccount: null, // joinなカラムは通常取ってこないので
+ rootUser: null, // joinなカラムは通常取ってこないので
};
break;
}
@@ -113,17 +113,20 @@ export class MetaService implements OnApplicationShutdown {
if (before) {
await transactionalEntityManager.update(MiMeta, before.id, data);
-
- const metas = await transactionalEntityManager.find(MiMeta, {
- order: {
- id: 'DESC',
- },
- });
-
- return metas[0];
} else {
- return await transactionalEntityManager.save(MiMeta, data);
+ await transactionalEntityManager.save(MiMeta, {
+ ...data,
+ id: 'x',
+ });
}
+
+ const afters = await transactionalEntityManager.find(MiMeta, {
+ order: {
+ id: 'DESC',
+ },
+ });
+
+ return afters[0];
});
if (data.hiddenTags) {
diff --git a/packages/backend/src/core/ProxyAccountService.ts b/packages/backend/src/core/ProxyAccountService.ts
deleted file mode 100644
index c3ff2a68d3..0000000000
--- a/packages/backend/src/core/ProxyAccountService.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * SPDX-FileCopyrightText: syuilo and misskey-project
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { Inject, Injectable } from '@nestjs/common';
-import type { MiMeta, UsersRepository } from '@/models/_.js';
-import type { MiLocalUser } from '@/models/User.js';
-import { DI } from '@/di-symbols.js';
-import { bindThis } from '@/decorators.js';
-
-@Injectable()
-export class ProxyAccountService {
- constructor(
- @Inject(DI.meta)
- private meta: MiMeta,
-
- @Inject(DI.usersRepository)
- private usersRepository: UsersRepository,
- ) {
- }
-
- @bindThis
- public async fetch(): Promise<MiLocalUser | null> {
- if (this.meta.proxyAccountId == null) return null;
- return await this.usersRepository.findOneByOrFail({ id: this.meta.proxyAccountId }) as MiLocalUser;
- }
-}
diff --git a/packages/backend/src/core/RelayService.ts b/packages/backend/src/core/RelayService.ts
index db32114346..9120de1f9f 100644
--- a/packages/backend/src/core/RelayService.ts
+++ b/packages/backend/src/core/RelayService.ts
@@ -4,54 +4,35 @@
*/
import { Inject, Injectable } from '@nestjs/common';
-import { IsNull } from 'typeorm';
-import type { MiLocalUser, MiUser } from '@/models/User.js';
-import type { RelaysRepository, UsersRepository } from '@/models/_.js';
+import type { MiUser } from '@/models/User.js';
+import type { RelaysRepository } from '@/models/_.js';
import { IdService } from '@/core/IdService.js';
import { MemorySingleCache } from '@/misc/cache.js';
import type { MiRelay } from '@/models/Relay.js';
import { QueueService } from '@/core/QueueService.js';
-import { CreateSystemUserService } from '@/core/CreateSystemUserService.js';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { DI } from '@/di-symbols.js';
import { deepClone } from '@/misc/clone.js';
import { bindThis } from '@/decorators.js';
-
-const ACTOR_USERNAME = 'relay.actor' as const;
+import { SystemAccountService } from '@/core/SystemAccountService.js';
@Injectable()
export class RelayService {
private relaysCache: MemorySingleCache<MiRelay[]>;
constructor(
- @Inject(DI.usersRepository)
- private usersRepository: UsersRepository,
-
@Inject(DI.relaysRepository)
private relaysRepository: RelaysRepository,
private idService: IdService,
private queueService: QueueService,
- private createSystemUserService: CreateSystemUserService,
+ private systemAccountService: SystemAccountService,
private apRendererService: ApRendererService,
) {
this.relaysCache = new MemorySingleCache<MiRelay[]>(1000 * 60 * 10); // 10m
}
@bindThis
- private async getRelayActor(): Promise<MiLocalUser> {
- const user = await this.usersRepository.findOneBy({
- host: IsNull(),
- username: ACTOR_USERNAME,
- });
-
- if (user) return user as MiLocalUser;
-
- const created = await this.createSystemUserService.createSystemUser(ACTOR_USERNAME);
- return created as MiLocalUser;
- }
-
- @bindThis
public async addRelay(inbox: string): Promise<MiRelay> {
const relay = await this.relaysRepository.insertOne({
id: this.idService.gen(),
@@ -59,8 +40,8 @@ export class RelayService {
status: 'requesting',
});
- const relayActor = await this.getRelayActor();
- const follow = await this.apRendererService.renderFollowRelay(relay, relayActor);
+ const relayActor = await this.systemAccountService.fetch('relay');
+ const follow = this.apRendererService.renderFollowRelay(relay, relayActor);
const activity = this.apRendererService.addContext(follow);
this.queueService.deliver(relayActor, activity, relay.inbox, false);
@@ -77,7 +58,7 @@ export class RelayService {
throw new Error('relay not found');
}
- const relayActor = await this.getRelayActor();
+ const relayActor = await this.systemAccountService.fetch('relay');
const follow = this.apRendererService.renderFollowRelay(relay, relayActor);
const undo = this.apRendererService.renderUndo(follow, relayActor);
const activity = this.apRendererService.addContext(undo);
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index 5af6b05942..01f3e0c116 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -101,7 +101,6 @@ export const DEFAULT_POLICIES: RolePolicies = {
@Injectable()
export class RoleService implements OnApplicationShutdown, OnModuleInit {
- private rootUserIdCache: MemorySingleCache<MiUser['id']>;
private rolesCache: MemorySingleCache<MiRole[]>;
private roleAssignmentByUserIdCache: MemoryKVCache<MiRoleAssignment[]>;
private notificationService: NotificationService;
@@ -137,7 +136,6 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
private moderationLogService: ModerationLogService,
private fanoutTimelineService: FanoutTimelineService,
) {
- this.rootUserIdCache = new MemorySingleCache<MiUser['id']>(1000 * 60 * 60 * 24 * 7); // 1week. rootユーザのIDは不変なので長めに
this.rolesCache = new MemorySingleCache<MiRole[]>(1000 * 60 * 60); // 1h
this.roleAssignmentByUserIdCache = new MemoryKVCache<MiRoleAssignment[]>(1000 * 60 * 5); // 5m
@@ -406,15 +404,15 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
}
@bindThis
- public async isModerator(user: { id: MiUser['id']; isRoot: MiUser['isRoot'] } | null): Promise<boolean> {
+ public async isModerator(user: { id: MiUser['id'] } | null): Promise<boolean> {
if (user == null) return false;
- return user.isRoot || (await this.getUserRoles(user.id)).some(r => r.isModerator || r.isAdministrator);
+ return (this.meta.rootUserId === user.id) || (await this.getUserRoles(user.id)).some(r => r.isModerator || r.isAdministrator);
}
@bindThis
- public async isAdministrator(user: { id: MiUser['id']; isRoot: MiUser['isRoot'] } | null): Promise<boolean> {
+ public async isAdministrator(user: { id: MiUser['id'] } | null): Promise<boolean> {
if (user == null) return false;
- return user.isRoot || (await this.getUserRoles(user.id)).some(r => r.isAdministrator);
+ return (this.meta.rootUserId === user.id) || (await this.getUserRoles(user.id)).some(r => r.isAdministrator);
}
@bindThis
@@ -463,16 +461,8 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
.map(a => a.userId),
);
- if (includeRoot) {
- const rootUserId = await this.rootUserIdCache.fetch(async () => {
- const it = await this.usersRepository.createQueryBuilder('users')
- .select('id')
- .where({ isRoot: true })
- .getRawOne<{ id: string }>();
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- return it!.id;
- });
- resultSet.add(rootUserId);
+ if (includeRoot && this.meta.rootUserId) {
+ resultSet.add(this.meta.rootUserId);
}
return [...resultSet].sort((x, y) => x.localeCompare(y));
diff --git a/packages/backend/src/core/S3Service.ts b/packages/backend/src/core/S3Service.ts
index 37721d2bf1..968a5dcc0b 100644
--- a/packages/backend/src/core/S3Service.ts
+++ b/packages/backend/src/core/S3Service.ts
@@ -46,6 +46,8 @@ export class S3Service {
tls: meta.objectStorageUseSSL,
forcePathStyle: meta.objectStorageEndpoint ? meta.objectStorageS3ForcePathStyle : false, // AWS with endPoint omitted
requestHandler: new NodeHttpHandler(handlerOption),
+ requestChecksumCalculation: 'WHEN_REQUIRED',
+ responseChecksumValidation: 'WHEN_REQUIRED',
});
}
diff --git a/packages/backend/src/core/SignupService.ts b/packages/backend/src/core/SignupService.ts
index 3865392b7f..5462cb0b13 100644
--- a/packages/backend/src/core/SignupService.ts
+++ b/packages/backend/src/core/SignupService.ts
@@ -14,13 +14,14 @@ import { MiUserProfile } from '@/models/UserProfile.js';
import { IdService } from '@/core/IdService.js';
import { MiUserKeypair } from '@/models/UserKeypair.js';
import { MiUsedUsername } from '@/models/UsedUsername.js';
-import generateUserToken from '@/misc/generate-native-user-token.js';
+import { generateNativeUserToken } from '@/misc/token.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
-import { InstanceActorService } from '@/core/InstanceActorService.js';
import { bindThis } from '@/decorators.js';
import UsersChart from '@/core/chart/charts/users.js';
import { UtilityService } from '@/core/UtilityService.js';
import { UserService } from '@/core/UserService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
+import { MetaService } from '@/core/MetaService.js';
@Injectable()
export class SignupService {
@@ -41,7 +42,8 @@ export class SignupService {
private userService: UserService,
private userEntityService: UserEntityService,
private idService: IdService,
- private instanceActorService: InstanceActorService,
+ private systemAccountService: SystemAccountService,
+ private metaService: MetaService,
private usersChart: UsersChart,
) {
}
@@ -74,7 +76,7 @@ export class SignupService {
}
// Generate secret
- const secret = generateUserToken();
+ const secret = generateNativeUserToken();
// Check username duplication
if (await this.usersRepository.exists({ where: { usernameLower: username.toLowerCase(), host: IsNull() } })) {
@@ -86,9 +88,7 @@ export class SignupService {
throw new Error('USED_USERNAME');
}
- const isTheFirstUser = !await this.instanceActorService.realLocalUsersPresent();
-
- if (!opts.ignorePreservedUsernames && !isTheFirstUser) {
+ if (!opts.ignorePreservedUsernames && this.meta.rootUserId != null) {
const isPreserved = this.meta.preservedUsernames.map(x => x.toLowerCase()).includes(username.toLowerCase());
if (isPreserved) {
throw new Error('USED_USERNAME');
@@ -129,7 +129,6 @@ export class SignupService {
usernameLower: username.toLowerCase(),
host: this.utilityService.toPunyNullable(host),
token: secret,
- isRoot: isTheFirstUser,
}));
await transactionalEntityManager.save(new MiUserKeypair({
@@ -153,6 +152,10 @@ export class SignupService {
this.usersChart.update(account, true);
this.userService.notifySystemWebhook(account, 'userCreated');
+ if (this.meta.rootUserId == null) {
+ await this.metaService.update({ rootUserId: account.id });
+ }
+
return { account, secret };
}
}
diff --git a/packages/backend/src/core/SystemAccountService.ts b/packages/backend/src/core/SystemAccountService.ts
new file mode 100644
index 0000000000..1e050c3054
--- /dev/null
+++ b/packages/backend/src/core/SystemAccountService.ts
@@ -0,0 +1,172 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { randomUUID } from 'node:crypto';
+import { Inject, Injectable } from '@nestjs/common';
+import { DataSource, IsNull } from 'typeorm';
+import bcrypt from 'bcryptjs';
+import { MiLocalUser, MiUser } from '@/models/User.js';
+import { MiSystemAccount, MiUsedUsername, MiUserKeypair, MiUserProfile, type UsersRepository, type SystemAccountsRepository } from '@/models/_.js';
+import type { MiMeta, UserProfilesRepository } from '@/models/_.js';
+import { MemoryKVCache } from '@/misc/cache.js';
+import { DI } from '@/di-symbols.js';
+import { bindThis } from '@/decorators.js';
+import { generateNativeUserToken } from '@/misc/token.js';
+import { IdService } from '@/core/IdService.js';
+import { genRsaKeyPair } from '@/misc/gen-key-pair.js';
+
+export const SYSTEM_ACCOUNT_TYPES = ['actor', 'relay', 'proxy'] as const;
+
+@Injectable()
+export class SystemAccountService {
+ private cache: MemoryKVCache<MiLocalUser>;
+
+ constructor(
+ @Inject(DI.db)
+ private db: DataSource,
+
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
+ @Inject(DI.systemAccountsRepository)
+ private systemAccountsRepository: SystemAccountsRepository,
+
+ @Inject(DI.usersRepository)
+ private usersRepository: UsersRepository,
+
+ @Inject(DI.userProfilesRepository)
+ private userProfilesRepository: UserProfilesRepository,
+
+ private idService: IdService,
+ ) {
+ this.cache = new MemoryKVCache<MiLocalUser>(1000 * 60 * 10); // 10m
+ }
+
+ @bindThis
+ public async list(): Promise<MiSystemAccount[]> {
+ const accounts = await this.systemAccountsRepository.findBy({});
+
+ return accounts;
+ }
+
+ @bindThis
+ public async fetch(type: typeof SYSTEM_ACCOUNT_TYPES[number]): Promise<MiLocalUser> {
+ const cached = this.cache.get(type);
+ if (cached) return cached;
+
+ const systemAccount = await this.systemAccountsRepository.findOne({
+ where: { type: type },
+ relations: ['user'],
+ });
+
+ if (systemAccount) {
+ this.cache.set(type, systemAccount.user as MiLocalUser);
+ return systemAccount.user as MiLocalUser;
+ } else {
+ const created = await this.createCorrespondingUser(type, {
+ username: `system.${type}`, // NOTE: (できれば避けたいが) . が含まれるかどうかでシステムアカウントかどうかを判定している処理もあるので変えないように
+ name: this.meta.name,
+ });
+ this.cache.set(type, created);
+ return created;
+ }
+ }
+
+ @bindThis
+ private async createCorrespondingUser(type: typeof SYSTEM_ACCOUNT_TYPES[number], extra: {
+ username: MiUser['username'];
+ name?: MiUser['name'];
+ }): Promise<MiLocalUser> {
+ const password = randomUUID();
+
+ // Generate hash of password
+ const salt = await bcrypt.genSalt(8);
+ const hash = await bcrypt.hash(password, salt);
+
+ // Generate secret
+ const secret = generateNativeUserToken();
+
+ const keyPair = await genRsaKeyPair();
+
+ let account!: MiUser;
+
+ // Start transaction
+ await this.db.transaction(async transactionalEntityManager => {
+ const exist = await transactionalEntityManager.findOneBy(MiUser, {
+ usernameLower: extra.username.toLowerCase(),
+ host: IsNull(),
+ });
+
+ if (exist) {
+ account = exist;
+ return;
+ }
+
+ account = await transactionalEntityManager.insert(MiUser, {
+ id: this.idService.gen(),
+ username: extra.username,
+ usernameLower: extra.username.toLowerCase(),
+ host: null,
+ token: secret,
+ isLocked: true,
+ isExplorable: false,
+ isBot: true,
+ name: extra.name,
+ }).then(x => transactionalEntityManager.findOneByOrFail(MiUser, x.identifiers[0]));
+
+ await transactionalEntityManager.insert(MiUserKeypair, {
+ publicKey: keyPair.publicKey,
+ privateKey: keyPair.privateKey,
+ userId: account.id,
+ });
+
+ await transactionalEntityManager.insert(MiUserProfile, {
+ userId: account.id,
+ autoAcceptFollowed: false,
+ password: hash,
+ });
+
+ await transactionalEntityManager.insert(MiUsedUsername, {
+ createdAt: new Date(),
+ username: extra.username.toLowerCase(),
+ });
+
+ await transactionalEntityManager.insert(MiSystemAccount, {
+ id: this.idService.gen(),
+ userId: account.id,
+ type: type,
+ });
+ });
+
+ return account as MiLocalUser;
+ }
+
+ @bindThis
+ public async updateCorrespondingUserProfile(type: typeof SYSTEM_ACCOUNT_TYPES[number], extra: {
+ name?: string;
+ description?: MiUserProfile['description'];
+ }): Promise<MiLocalUser> {
+ const user = await this.fetch(type);
+
+ const updates = {} as Partial<MiUser>;
+ if (extra.name !== undefined) updates.name = extra.name;
+
+ if (Object.keys(updates).length > 0) {
+ await this.usersRepository.update(user.id, updates);
+ }
+
+ const profileUpdates = {} as Partial<MiUserProfile>;
+ if (extra.description !== undefined) profileUpdates.description = extra.description;
+
+ if (Object.keys(profileUpdates).length > 0) {
+ await this.userProfilesRepository.update(user.id, profileUpdates);
+ }
+
+ const updated = await this.usersRepository.findOneByOrFail({ id: user.id }) as MiLocalUser;
+ this.cache.set(type, updated);
+
+ return updated;
+ }
+}
diff --git a/packages/backend/src/core/UserListService.ts b/packages/backend/src/core/UserListService.ts
index 6333356fe9..f0a8768c8f 100644
--- a/packages/backend/src/core/UserListService.ts
+++ b/packages/backend/src/core/UserListService.ts
@@ -15,11 +15,11 @@ import type { GlobalEvents } from '@/core/GlobalEventService.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
-import { ProxyAccountService } from '@/core/ProxyAccountService.js';
import { bindThis } from '@/decorators.js';
import { QueueService } from '@/core/QueueService.js';
import { RedisKVCache } from '@/misc/cache.js';
import { RoleService } from '@/core/RoleService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
@Injectable()
export class UserListService implements OnApplicationShutdown, OnModuleInit {
@@ -43,8 +43,8 @@ export class UserListService implements OnApplicationShutdown, OnModuleInit {
private userEntityService: UserEntityService,
private idService: IdService,
private globalEventService: GlobalEventService,
- private proxyAccountService: ProxyAccountService,
private queueService: QueueService,
+ private systemAccountService: SystemAccountService,
) {
this.membersCache = new RedisKVCache<Set<string>>(this.redisClient, 'userListMembers', {
lifetime: 1000 * 60 * 30, // 30m
@@ -111,10 +111,8 @@ export class UserListService implements OnApplicationShutdown, OnModuleInit {
// このインスタンス内にこのリモートユーザーをフォローしているユーザーがいなくても投稿を受け取るためにダミーのユーザーがフォローしたということにする
if (this.userEntityService.isRemoteUser(target)) {
- const proxy = await this.proxyAccountService.fetch();
- if (proxy) {
- this.queueService.createFollowJob([{ from: { id: proxy.id }, to: { id: target.id } }]);
- }
+ const proxy = await this.systemAccountService.fetch('proxy');
+ this.queueService.createFollowJob([{ from: { id: proxy.id }, to: { id: target.id } }]);
}
}
diff --git a/packages/backend/src/core/WebhookTestService.ts b/packages/backend/src/core/WebhookTestService.ts
index 555a39f71c..f83dec67bf 100644
--- a/packages/backend/src/core/WebhookTestService.ts
+++ b/packages/backend/src/core/WebhookTestService.ts
@@ -73,7 +73,6 @@ function generateDummyUser(override?: Partial<MiUser>): MiUser {
isLocked: false,
isBot: false,
isCat: true,
- isRoot: false,
isExplorable: true,
isHibernated: false,
isDeleted: false,
diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts
index 21c7adf7b2..e88f60b806 100644
--- a/packages/backend/src/core/activitypub/ApInboxService.ts
+++ b/packages/backend/src/core/activitypub/ApInboxService.ts
@@ -507,19 +507,12 @@ export class ApInboxService {
return `skip: delete actor ${actor.uri} !== ${uri}`;
}
- const user = await this.usersRepository.findOneBy({ id: actor.id });
- if (user == null) {
- return 'skip: actor not found';
- } else if (user.isDeleted) {
- return 'skip: already deleted';
+ if (!(await this.usersRepository.update({ id: actor.id, isDeleted: false }, { isDeleted: true })).affected) {
+ return 'skip: already deleted or actor not found';
}
const job = await this.queueService.createDeleteAccountJob(actor);
- await this.usersRepository.update(actor.id, {
- isDeleted: true,
- });
-
this.globalEventService.publishInternalEvent('remoteUserUpdated', { id: actor.id });
return `ok: queued ${job.name} ${job.id}`;
diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts
index 8688015aff..83a095cdea 100644
--- a/packages/backend/src/core/activitypub/ApRendererService.ts
+++ b/packages/backend/src/core/activitypub/ApRendererService.ts
@@ -23,7 +23,7 @@ import { MfmService } from '@/core/MfmService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import type { MiUserKeypair } from '@/models/UserKeypair.js';
-import type { UsersRepository, UserProfilesRepository, NotesRepository, DriveFilesRepository, PollsRepository } from '@/models/_.js';
+import type { UsersRepository, UserProfilesRepository, NotesRepository, DriveFilesRepository, PollsRepository, MiMeta } from '@/models/_.js';
import { bindThis } from '@/decorators.js';
import { CustomEmojiService } from '@/core/CustomEmojiService.js';
import { IdService } from '@/core/IdService.js';
@@ -39,6 +39,9 @@ export class ApRendererService {
@Inject(DI.config)
private config: Config,
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -186,7 +189,7 @@ export class ApRendererService {
url: emoji.publicUrl || emoji.originalUrl,
},
_misskey_license: {
- freeText: emoji.license
+ freeText: emoji.license,
},
};
}
@@ -256,6 +259,38 @@ export class ApRendererService {
}
@bindThis
+ public renderIdenticon(user: MiLocalUser): IApImage {
+ return {
+ type: 'Image',
+ url: this.userEntityService.getIdenticonUrl(user),
+ sensitive: false,
+ name: null,
+ };
+ }
+
+ @bindThis
+ public renderSystemAvatar(user: MiLocalUser): IApImage {
+ if (this.meta.iconUrl == null) return this.renderIdenticon(user);
+ return {
+ type: 'Image',
+ url: this.meta.iconUrl,
+ sensitive: false,
+ name: null,
+ };
+ }
+
+ @bindThis
+ public renderSystemBanner(): IApImage | null {
+ if (this.meta.bannerUrl == null) return null;
+ return {
+ type: 'Image',
+ url: this.meta.bannerUrl,
+ sensitive: false,
+ name: null,
+ };
+ }
+
+ @bindThis
public renderKey(user: MiLocalUser, key: MiUserKeypair, postfix?: string): IKey {
return {
id: `${this.config.url}/users/${user.id}${postfix ?? '/publickey'}`,
@@ -503,8 +538,8 @@ export class ApRendererService {
_misskey_requireSigninToViewContents: user.requireSigninToViewContents,
_misskey_makeNotesFollowersOnlyBefore: user.makeNotesFollowersOnlyBefore,
_misskey_makeNotesHiddenBefore: user.makeNotesHiddenBefore,
- icon: avatar ? this.renderImage(avatar) : null,
- image: banner ? this.renderImage(banner) : null,
+ icon: avatar ? this.renderImage(avatar) : isSystem ? this.renderSystemAvatar(user) : this.renderIdenticon(user),
+ image: banner ? this.renderImage(banner) : isSystem ? this.renderSystemBanner() : null,
tag,
manuallyApprovesFollowers: user.isLocked,
discoverable: user.isExplorable,
diff --git a/packages/backend/src/core/activitypub/ApResolverService.ts b/packages/backend/src/core/activitypub/ApResolverService.ts
index fb963294cb..2534899ad1 100644
--- a/packages/backend/src/core/activitypub/ApResolverService.ts
+++ b/packages/backend/src/core/activitypub/ApResolverService.ts
@@ -6,7 +6,6 @@
import { Inject, Injectable } from '@nestjs/common';
import { IsNull, Not } from 'typeorm';
import type { MiLocalUser, MiRemoteUser } from '@/models/User.js';
-import { InstanceActorService } from '@/core/InstanceActorService.js';
import type { NotesRepository, PollsRepository, NoteReactionsRepository, UsersRepository, FollowRequestsRepository, MiMeta } from '@/models/_.js';
import type { Config } from '@/config.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
@@ -15,13 +14,14 @@ import { UtilityService } from '@/core/UtilityService.js';
import { bindThis } from '@/decorators.js';
import { LoggerService } from '@/core/LoggerService.js';
import type Logger from '@/logger.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
+import { IdentifiableError } from '@/misc/identifiable-error.js';
import { isCollectionOrOrderedCollection } from './type.js';
import { ApDbResolverService } from './ApDbResolverService.js';
import { ApRendererService } from './ApRendererService.js';
import { ApRequestService } from './ApRequestService.js';
-import type { IObject, ICollection, IOrderedCollection } from './type.js';
-import { IdentifiableError } from '@/misc/identifiable-error.js';
import { FetchAllowSoftFailMask } from './misc/check-against-url.js';
+import type { IObject, ICollection, IOrderedCollection } from './type.js';
export class Resolver {
private history: Set<string>;
@@ -37,7 +37,7 @@ export class Resolver {
private noteReactionsRepository: NoteReactionsRepository,
private followRequestsRepository: FollowRequestsRepository,
private utilityService: UtilityService,
- private instanceActorService: InstanceActorService,
+ private systemAccountService: SystemAccountService,
private apRequestService: ApRequestService,
private httpRequestService: HttpRequestService,
private apRendererService: ApRendererService,
@@ -105,7 +105,7 @@ export class Resolver {
}
if (this.config.signToActivityPubGet && !this.user) {
- this.user = await this.instanceActorService.getInstanceActor();
+ this.user = await this.systemAccountService.fetch('actor');
}
const object = (this.user
@@ -119,7 +119,7 @@ export class Resolver {
) {
throw new IdentifiableError('72180409-793c-4973-868e-5a118eb5519b', 'invalid response');
}
-
+
return object;
}
@@ -202,7 +202,7 @@ export class ApResolverService {
private followRequestsRepository: FollowRequestsRepository,
private utilityService: UtilityService,
- private instanceActorService: InstanceActorService,
+ private systemAccountService: SystemAccountService,
private apRequestService: ApRequestService,
private httpRequestService: HttpRequestService,
private apRendererService: ApRendererService,
@@ -222,7 +222,7 @@ export class ApResolverService {
this.noteReactionsRepository,
this.followRequestsRepository,
this.utilityService,
- this.instanceActorService,
+ this.systemAccountService,
this.apRequestService,
this.httpRequestService,
this.apRendererService,
diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts
index 6019906add..879f1922ca 100644
--- a/packages/backend/src/core/activitypub/models/ApPersonService.ts
+++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts
@@ -594,7 +594,9 @@ export class ApPersonService implements OnModuleInit {
if (moving) updates.movedAt = new Date();
// Update user
- await this.usersRepository.update(exist.id, updates);
+ if (!(await this.usersRepository.update({ id: exist.id, isDeleted: false }, updates)).affected) {
+ return 'skip';
+ }
if (person.publicKey) {
await this.userPublickeysRepository.update({ userId: exist.id }, {
@@ -699,7 +701,7 @@ export class ApPersonService implements OnModuleInit {
@bindThis
public async updateFeatured(userId: MiUser['id'], resolver?: Resolver): Promise<void> {
- const user = await this.usersRepository.findOneByOrFail({ id: userId });
+ const user = await this.usersRepository.findOneByOrFail({ id: userId, isDeleted: false });
if (!this.userEntityService.isRemoteUser(user)) return;
if (!user.featured) return;
diff --git a/packages/backend/src/core/entities/MetaEntityService.ts b/packages/backend/src/core/entities/MetaEntityService.ts
index 7ad6071ceb..08717bd066 100644
--- a/packages/backend/src/core/entities/MetaEntityService.ts
+++ b/packages/backend/src/core/entities/MetaEntityService.ts
@@ -11,8 +11,7 @@ import type { MiMeta } from '@/models/Meta.js';
import type { AdsRepository } from '@/models/_.js';
import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
import { bindThis } from '@/decorators.js';
-import { UserEntityService } from '@/core/entities/UserEntityService.js';
-import { InstanceActorService } from '@/core/InstanceActorService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
import type { Config } from '@/config.js';
import { DI } from '@/di-symbols.js';
import { DEFAULT_POLICIES } from '@/core/RoleService.js';
@@ -29,8 +28,7 @@ export class MetaEntityService {
@Inject(DI.adsRepository)
private adsRepository: AdsRepository,
- private userEntityService: UserEntityService,
- private instanceActorService: InstanceActorService,
+ private systemAccountService: SystemAccountService,
) { }
@bindThis
@@ -149,14 +147,14 @@ export class MetaEntityService {
const packed = await this.pack(instance);
- const proxyAccount = instance.proxyAccountId ? await this.userEntityService.pack(instance.proxyAccountId).catch(() => null) : null;
+ const proxyAccount = await this.systemAccountService.fetch('proxy');
const packDetailed: Packed<'MetaDetailed'> = {
...packed,
cacheRemoteFiles: instance.cacheRemoteFiles,
cacheRemoteSensitiveFiles: instance.cacheRemoteSensitiveFiles,
- requireSetup: !await this.instanceActorService.realLocalUsersPresent(),
- proxyAccountName: proxyAccount ? proxyAccount.username : null,
+ requireSetup: this.meta.rootUserId == null,
+ proxyAccountName: proxyAccount.username,
features: {
localTimeline: instance.policies.ltlAvailable,
globalTimeline: instance.policies.gtlAvailable,
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts
index fbd3892dd4..69f698d9cb 100644
--- a/packages/backend/src/core/entities/UserEntityService.ts
+++ b/packages/backend/src/core/entities/UserEntityService.ts
@@ -28,6 +28,7 @@ import type {
FollowingsRepository,
FollowRequestsRepository,
MiFollowing,
+ MiMeta,
MiUserNotePining,
MiUserProfile,
MutingsRepository,
@@ -100,6 +101,9 @@ export class UserEntityService implements OnModuleInit {
@Inject(DI.config)
private config: Config,
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
@Inject(DI.redis)
private redisClient: Redis.Redis,
@@ -381,7 +385,11 @@ export class UserEntityService implements OnModuleInit {
@bindThis
public getIdenticonUrl(user: MiUser): string {
- return `${this.config.url}/identicon/${user.username.toLowerCase()}@${user.host ?? this.config.host}`;
+ if ((user.host == null || user.host === this.config.host) && user.username.includes('.') && this.meta.iconUrl) { // ローカルのシステムアカウントの場合
+ return this.meta.iconUrl;
+ } else {
+ return `${this.config.url}/identicon/${user.username.toLowerCase()}@${user.host ?? this.config.host}`;
+ }
}
@bindThis
diff --git a/packages/backend/src/di-symbols.ts b/packages/backend/src/di-symbols.ts
index e599fc7b37..a306aac1a1 100644
--- a/packages/backend/src/di-symbols.ts
+++ b/packages/backend/src/di-symbols.ts
@@ -74,6 +74,7 @@ export const DI = {
registryItemsRepository: Symbol('registryItemsRepository'),
webhooksRepository: Symbol('webhooksRepository'),
systemWebhooksRepository: Symbol('systemWebhooksRepository'),
+ systemAccountsRepository: Symbol('systemAccountsRepository'),
adsRepository: Symbol('adsRepository'),
passwordResetRequestsRepository: Symbol('passwordResetRequestsRepository'),
retentionAggregationsRepository: Symbol('retentionAggregationsRepository'),
diff --git a/packages/backend/src/misc/is-native-token.ts b/packages/backend/src/misc/is-native-token.ts
deleted file mode 100644
index 300c4c05b3..0000000000
--- a/packages/backend/src/misc/is-native-token.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * SPDX-FileCopyrightText: syuilo and misskey-project
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-// eslint-disable-next-line import/no-default-export
-export default (token: string) => token.length === 16;
diff --git a/packages/backend/src/misc/generate-native-user-token.ts b/packages/backend/src/misc/token.ts
index 85fb383ba2..5d37cba26d 100644
--- a/packages/backend/src/misc/generate-native-user-token.ts
+++ b/packages/backend/src/misc/token.ts
@@ -5,5 +5,6 @@
import { secureRndstr } from '@/misc/secure-rndstr.js';
-// eslint-disable-next-line import/no-default-export
-export default () => secureRndstr(16);
+export const generateNativeUserToken = () => secureRndstr(16);
+
+export const isNativeUserToken = (token: string) => token.length === 16;
diff --git a/packages/backend/src/models/Meta.ts b/packages/backend/src/models/Meta.ts
index 9df2f74984..1fbf5371bc 100644
--- a/packages/backend/src/models/Meta.ts
+++ b/packages/backend/src/models/Meta.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { Entity, Column, PrimaryColumn, ManyToOne, JoinColumn } from 'typeorm';
+import { Entity, Column, PrimaryColumn, ManyToOne } from 'typeorm';
import { id } from './util/id.js';
import { MiUser } from './User.js';
@@ -15,6 +15,18 @@ export class MiMeta {
})
public id: string;
+ @Column({
+ ...id(),
+ nullable: true,
+ })
+ public rootUserId: MiUser['id'] | null;
+
+ @ManyToOne(type => MiUser, {
+ onDelete: 'SET NULL',
+ nullable: true,
+ })
+ public rootUser: MiUser | null;
+
@Column('varchar', {
length: 1024, nullable: true,
})
@@ -172,18 +184,6 @@ export class MiMeta {
})
public cacheRemoteSensitiveFiles: boolean;
- @Column({
- ...id(),
- nullable: true,
- })
- public proxyAccountId: MiUser['id'] | null;
-
- @ManyToOne(type => MiUser, {
- onDelete: 'SET NULL',
- })
- @JoinColumn()
- public proxyAccount: MiUser | null;
-
@Column('boolean', {
default: false,
})
diff --git a/packages/backend/src/models/RepositoryModule.ts b/packages/backend/src/models/RepositoryModule.ts
index ea0f88baba..04a9df6cfb 100644
--- a/packages/backend/src/models/RepositoryModule.ts
+++ b/packages/backend/src/models/RepositoryModule.ts
@@ -3,7 +3,6 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import type { Provider } from '@nestjs/common';
import { Module } from '@nestjs/common';
import { DI } from '@/di-symbols.js';
import {
@@ -63,6 +62,7 @@ import {
MiRoleAssignment,
MiSignin,
MiSwSubscription,
+ MiSystemAccount,
MiSystemWebhook,
MiUsedUsername,
MiUser,
@@ -77,8 +77,9 @@ import {
MiUserProfile,
MiUserPublickey,
MiUserSecurityKey,
- MiWebhook
+ MiWebhook,
} from './_.js';
+import type { Provider } from '@nestjs/common';
import type { DataSource } from 'typeorm';
const $usersRepository: Provider = {
@@ -285,6 +286,12 @@ const $swSubscriptionsRepository: Provider = {
inject: [DI.db],
};
+const $systemAccountsRepository: Provider = {
+ provide: DI.systemAccountsRepository,
+ useFactory: (db: DataSource) => db.getRepository(MiSystemAccount),
+ inject: [DI.db],
+};
+
const $hashtagsRepository: Provider = {
provide: DI.hashtagsRepository,
useFactory: (db: DataSource) => db.getRepository(MiHashtag).extend(miRepository as MiRepository<MiHashtag>),
@@ -532,6 +539,7 @@ const $reversiGamesRepository: Provider = {
$renoteMutingsRepository,
$blockingsRepository,
$swSubscriptionsRepository,
+ $systemAccountsRepository,
$hashtagsRepository,
$abuseUserReportsRepository,
$abuseReportNotificationRecipientRepository,
@@ -603,6 +611,7 @@ const $reversiGamesRepository: Provider = {
$renoteMutingsRepository,
$blockingsRepository,
$swSubscriptionsRepository,
+ $systemAccountsRepository,
$hashtagsRepository,
$abuseUserReportsRepository,
$abuseReportNotificationRecipientRepository,
diff --git a/packages/backend/src/models/SystemAccount.ts b/packages/backend/src/models/SystemAccount.ts
new file mode 100644
index 0000000000..f32880b81d
--- /dev/null
+++ b/packages/backend/src/models/SystemAccount.ts
@@ -0,0 +1,31 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryColumn } from 'typeorm';
+import { Serialized } from '@/types.js';
+import { id } from './util/id.js';
+import { MiUser } from './User.js';
+
+@Entity('system_account')
+@Index(['type'], { unique: true })
+export class MiSystemAccount {
+ @PrimaryColumn(id())
+ public id: string;
+
+ @Index()
+ @Column(id())
+ public userId: MiUser['id'];
+
+ @ManyToOne(type => MiUser, {
+ onDelete: 'CASCADE',
+ })
+ @JoinColumn()
+ public user: MiUser | null;
+
+ @Column('varchar', {
+ length: 256,
+ })
+ public type: string;
+}
diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts
index 549d78a22c..630240efde 100644
--- a/packages/backend/src/models/User.ts
+++ b/packages/backend/src/models/User.ts
@@ -184,12 +184,6 @@ export class MiUser {
})
public isCat: boolean;
- @Column('boolean', {
- default: false,
- comment: 'Whether the User is the root.',
- })
- public isRoot: boolean;
-
@Index()
@Column('boolean', {
default: true,
diff --git a/packages/backend/src/models/_.ts b/packages/backend/src/models/_.ts
index c72bdaa727..fa15760c00 100644
--- a/packages/backend/src/models/_.ts
+++ b/packages/backend/src/models/_.ts
@@ -56,6 +56,7 @@ import { MiRegistryItem } from '@/models/RegistryItem.js';
import { MiRelay } from '@/models/Relay.js';
import { MiSignin } from '@/models/Signin.js';
import { MiSwSubscription } from '@/models/SwSubscription.js';
+import { MiSystemAccount } from '@/models/SystemAccount.js';
import { MiUsedUsername } from '@/models/UsedUsername.js';
import { MiUser } from '@/models/User.js';
import { MiUserIp } from '@/models/UserIp.js';
@@ -171,6 +172,7 @@ export {
MiRelay,
MiSignin,
MiSwSubscription,
+ MiSystemAccount,
MiUsedUsername,
MiUser,
MiUserIp,
@@ -242,6 +244,7 @@ export type RegistryItemsRepository = Repository<MiRegistryItem> & MiRepository<
export type RelaysRepository = Repository<MiRelay> & MiRepository<MiRelay>;
export type SigninsRepository = Repository<MiSignin> & MiRepository<MiSignin>;
export type SwSubscriptionsRepository = Repository<MiSwSubscription> & MiRepository<MiSwSubscription>;
+export type SystemAccountsRepository = Repository<MiSystemAccount> & MiRepository<MiSystemAccount>;
export type UsedUsernamesRepository = Repository<MiUsedUsername> & MiRepository<MiUsedUsername>;
export type UsersRepository = Repository<MiUser> & MiRepository<MiUser>;
export type UserIpsRepository = Repository<MiUserIp> & MiRepository<MiUserIp>;
diff --git a/packages/backend/src/postgres.ts b/packages/backend/src/postgres.ts
index 8a0b7d97d7..043332d4b5 100644
--- a/packages/backend/src/postgres.ts
+++ b/packages/backend/src/postgres.ts
@@ -82,6 +82,7 @@ import { MiReversiGame } from '@/models/ReversiGame.js';
import { Config } from '@/config.js';
import MisskeyLogger from '@/logger.js';
import { bindThis } from '@/decorators.js';
+import { MiSystemAccount } from './models/SystemAccount.js';
pg.types.setTypeParser(20, Number);
@@ -206,6 +207,7 @@ export const entities = [
MiEmoji,
MiHashtag,
MiSwSubscription,
+ MiSystemAccount,
MiAbuseUserReport,
MiAbuseReportNotificationRecipient,
MiRegistrationTicket,
diff --git a/packages/backend/src/server/NodeinfoServerService.ts b/packages/backend/src/server/NodeinfoServerService.ts
index 9a641007ee..239ef82dec 100644
--- a/packages/backend/src/server/NodeinfoServerService.ts
+++ b/packages/backend/src/server/NodeinfoServerService.ts
@@ -9,11 +9,11 @@ import type { Config } from '@/config.js';
import { MetaService } from '@/core/MetaService.js';
import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
import { MemorySingleCache } from '@/misc/cache.js';
-import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { bindThis } from '@/decorators.js';
import NotesChart from '@/core/chart/charts/notes.js';
import UsersChart from '@/core/chart/charts/users.js';
import { DEFAULT_POLICIES } from '@/core/RoleService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
import type { FastifyInstance, FastifyPluginOptions } from 'fastify';
const nodeinfo2_1path = '/nodeinfo/2.1';
@@ -26,7 +26,7 @@ export class NodeinfoServerService {
@Inject(DI.config)
private config: Config,
- private userEntityService: UserEntityService,
+ private systemAccountService: SystemAccountService,
private metaService: MetaService,
private notesChart: NotesChart,
private usersChart: UsersChart,
@@ -70,7 +70,7 @@ export class NodeinfoServerService {
const activeHalfyear = null;
const activeMonth = null;
- const proxyAccount = meta.proxyAccountId ? await this.userEntityService.pack(meta.proxyAccountId).catch(() => null) : null;
+ const proxyAccount = await this.systemAccountService.fetch('proxy');
const basePolicies = { ...DEFAULT_POLICIES, ...meta.policies };
@@ -123,7 +123,7 @@ export class NodeinfoServerService {
maxNoteTextLength: MAX_NOTE_TEXT_LENGTH,
enableEmail: meta.enableEmail,
enableServiceWorker: meta.enableServiceWorker,
- proxyAccountName: proxyAccount ? proxyAccount.username : null,
+ proxyAccountName: proxyAccount.username,
themeColor: meta.themeColor ?? '#86b300',
},
};
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts
index aad833f126..9399aa61b0 100644
--- a/packages/backend/src/server/api/ApiCallService.ts
+++ b/packages/backend/src/server/api/ApiCallService.ts
@@ -371,7 +371,7 @@ export class ApiCallService implements OnApplicationShutdown {
}
}
- if ((ep.meta.requireModerator || ep.meta.requireAdmin) && !user!.isRoot) {
+ if ((ep.meta.requireModerator || ep.meta.requireAdmin) && (this.meta.rootUserId !== user!.id)) {
const myRoles = await this.roleService.getUserRoles(user!.id);
if (ep.meta.requireModerator && !myRoles.some(r => r.isModerator || r.isAdministrator)) {
throw new ApiError({
@@ -391,7 +391,7 @@ export class ApiCallService implements OnApplicationShutdown {
}
}
- if (ep.meta.requireRolePolicy != null && !user!.isRoot) {
+ if (ep.meta.requireRolePolicy != null && (this.meta.rootUserId !== user!.id)) {
const myRoles = await this.roleService.getUserRoles(user!.id);
const policies = await this.roleService.getUserPolicies(user!.id);
if (!policies[ep.meta.requireRolePolicy] && !myRoles.some(r => r.isAdministrator)) {
diff --git a/packages/backend/src/server/api/AuthenticateService.ts b/packages/backend/src/server/api/AuthenticateService.ts
index 690ff2e022..601618553e 100644
--- a/packages/backend/src/server/api/AuthenticateService.ts
+++ b/packages/backend/src/server/api/AuthenticateService.ts
@@ -11,7 +11,7 @@ import type { MiAccessToken } from '@/models/AccessToken.js';
import { MemoryKVCache } from '@/misc/cache.js';
import type { MiApp } from '@/models/App.js';
import { CacheService } from '@/core/CacheService.js';
-import isNativeToken from '@/misc/is-native-token.js';
+import { isNativeUserToken } from '@/misc/token.js';
import { bindThis } from '@/decorators.js';
export class AuthenticationError extends Error {
@@ -46,7 +46,7 @@ export class AuthenticateService implements OnApplicationShutdown {
return [null, null];
}
- if (isNativeToken(token)) {
+ if (isNativeUserToken(token)) {
const user = await this.cacheService.localUserByNativeTokenCache.fetch(token,
() => this.usersRepository.findOneBy({ token }) as Promise<MiLocalUser | null>);
diff --git a/packages/backend/src/server/api/endpoint-list.ts b/packages/backend/src/server/api/endpoint-list.ts
index 28f7cfea04..560d3f6587 100644
--- a/packages/backend/src/server/api/endpoint-list.ts
+++ b/packages/backend/src/server/api/endpoint-list.ts
@@ -100,6 +100,7 @@ export * as 'admin/unset-user-banner' from './endpoints/admin/unset-user-banner.
export * as 'admin/unsuspend-user' from './endpoints/admin/unsuspend-user.js';
export * as 'admin/update-abuse-user-report' from './endpoints/admin/update-abuse-user-report.js';
export * as 'admin/update-meta' from './endpoints/admin/update-meta.js';
+export * as 'admin/update-proxy-account' from './endpoints/admin/update-proxy-account.js';
export * as 'admin/update-user-note' from './endpoints/admin/update-user-note.js';
export * as 'announcements' from './endpoints/announcements.js';
export * as 'announcements/show' from './endpoints/announcements/show.js';
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
index d30131a62f..06047b58a6 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
@@ -4,12 +4,10 @@
*/
import { Inject, Injectable } from '@nestjs/common';
-import { IsNull } from 'typeorm';
import { Endpoint } from '@/server/api/endpoint-base.js';
-import type { UsersRepository } from '@/models/_.js';
+import type { MiMeta, UsersRepository } from '@/models/_.js';
import { SignupService } from '@/core/SignupService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
-import { InstanceActorService } from '@/core/InstanceActorService.js';
import { localUsernameSchema, passwordSchema } from '@/models/User.js';
import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
@@ -62,18 +60,19 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
@Inject(DI.config)
private config: Config,
+ @Inject(DI.meta)
+ private serverSettings: MiMeta,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
private userEntityService: UserEntityService,
private signupService: SignupService,
- private instanceActorService: InstanceActorService,
) {
super(meta, paramDef, async (ps, _me, token) => {
const me = _me ? await this.usersRepository.findOneByOrFail({ id: _me.id }) : null;
- const realUsers = await this.instanceActorService.realLocalUsersPresent();
- if (!realUsers && me == null && token == null) {
+ if (this.serverSettings.rootUserId == null && me == null && token == null) {
// 初回セットアップの場合
if (this.config.setupPassword != null) {
// 初期パスワードが設定されている場合
@@ -85,7 +84,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// 初期パスワードが設定されていないのに初期パスワードが入力された場合
throw new ApiError(meta.errors.wrongInitialPassword);
}
- } else if ((realUsers && !me?.isRoot) || token !== null) {
+ } else if ((this.serverSettings.rootUserId != null && (this.serverSettings.rootUserId !== me?.id)) || token !== null) {
// 初回セットアップではなく、管理者でない場合 or 外部トークンを使用している場合
throw new ApiError(meta.errors.accessDenied);
}
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
index ece1984cff..d04f52dd64 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
@@ -42,10 +42,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new Error('user not found');
}
- if (user.isRoot) {
- throw new Error('cannot delete a root account');
- }
-
await this.deleteAccoountService.deleteAccount(user, me);
});
}
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
index 9d5691a427..53e2b2b237 100644
--- a/packages/backend/src/server/api/endpoints/admin/meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -9,6 +9,7 @@ import { MetaService } from '@/core/MetaService.js';
import type { Config } from '@/config.js';
import { DI } from '@/di-symbols.js';
import { DEFAULT_POLICIES } from '@/core/RoleService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
export const meta = {
tags: ['meta'],
@@ -237,7 +238,7 @@ export const meta = {
},
proxyAccountId: {
type: 'string',
- optional: false, nullable: true,
+ optional: false, nullable: false,
format: 'id',
},
email: {
@@ -545,10 +546,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private config: Config,
private metaService: MetaService,
+ private systemAccountService: SystemAccountService,
) {
super(meta, paramDef, async () => {
const instance = await this.metaService.fetch(true);
+ const proxy = await this.systemAccountService.fetch('proxy');
+
return {
maintainerName: instance.maintainerName,
maintainerEmail: instance.maintainerEmail,
@@ -613,7 +617,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
sensitiveMediaDetectionSensitivity: instance.sensitiveMediaDetectionSensitivity,
setSensitiveFlagAutomatically: instance.setSensitiveFlagAutomatically,
enableSensitiveMediaDetectionForVideos: instance.enableSensitiveMediaDetectionForVideos,
- proxyAccountId: instance.proxyAccountId,
+ proxyAccountId: proxy.id,
email: instance.email,
smtpSecure: instance.smtpSecure,
smtpHost: instance.smtpHost,
diff --git a/packages/backend/src/server/api/endpoints/admin/reset-password.ts b/packages/backend/src/server/api/endpoints/admin/reset-password.ts
index 53db096c1d..fc246631c2 100644
--- a/packages/backend/src/server/api/endpoints/admin/reset-password.ts
+++ b/packages/backend/src/server/api/endpoints/admin/reset-password.ts
@@ -6,7 +6,7 @@
import { Inject, Injectable } from '@nestjs/common';
import bcrypt from 'bcryptjs';
import { Endpoint } from '@/server/api/endpoint-base.js';
-import type { UsersRepository, UserProfilesRepository } from '@/models/_.js';
+import type { UsersRepository, UserProfilesRepository, MiMeta } from '@/models/_.js';
import { DI } from '@/di-symbols.js';
import { secureRndstr } from '@/misc/secure-rndstr.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
@@ -43,6 +43,9 @@ export const paramDef = {
@Injectable()
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
+ @Inject(DI.meta)
+ private serverSettings: MiMeta,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -58,7 +61,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new Error('user not found');
}
- if (user.isRoot) {
+ if (this.serverSettings.rootUserId === user.id) {
throw new Error('cannot reset password of root');
}
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index 45c012cb0a..bc05587668 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -89,7 +89,6 @@ export const paramDef = {
sensitiveMediaDetectionSensitivity: { type: 'string', enum: ['medium', 'low', 'high', 'veryLow', 'veryHigh'] },
setSensitiveFlagAutomatically: { type: 'boolean' },
enableSensitiveMediaDetectionForVideos: { type: 'boolean' },
- proxyAccountId: { type: 'string', format: 'misskey:id', nullable: true },
maintainerName: { type: 'string', nullable: true },
maintainerEmail: { type: 'string', nullable: true },
langs: {
@@ -394,10 +393,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
set.enableSensitiveMediaDetectionForVideos = ps.enableSensitiveMediaDetectionForVideos;
}
- if (ps.proxyAccountId !== undefined) {
- set.proxyAccountId = ps.proxyAccountId;
- }
-
if (ps.maintainerName !== undefined) {
set.maintainerName = ps.maintainerName;
}
diff --git a/packages/backend/src/server/api/endpoints/admin/update-proxy-account.ts b/packages/backend/src/server/api/endpoints/admin/update-proxy-account.ts
new file mode 100644
index 0000000000..6c9612c71a
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/update-proxy-account.ts
@@ -0,0 +1,62 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import {
+ descriptionSchema,
+} from '@/models/User.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
+import { ModerationLogService } from '@/core/ModerationLogService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true,
+ requireModerator: true,
+ kind: 'write:admin:account',
+
+ res: {
+ type: 'object',
+ nullable: false, optional: false,
+ ref: 'UserDetailed',
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ description: { ...descriptionSchema, nullable: true },
+ },
+} as const;
+
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
+ constructor(
+ private userEntityService: UserEntityService,
+ private moderationLogService: ModerationLogService,
+ private systemAccountService: SystemAccountService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const proxy = await this.systemAccountService.updateCorrespondingUserProfile('proxy', {
+ description: ps.description,
+ });
+
+ const updated = await this.userEntityService.pack(proxy.id, proxy, {
+ schema: 'MeDetailed',
+ });
+
+ if (ps.description !== undefined) {
+ this.moderationLogService.log(me, 'updateProxyAccountDescription', {
+ before: null, //TODO
+ after: ps.description,
+ });
+ }
+
+ return updated;
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/i/move.ts b/packages/backend/src/server/api/endpoints/i/move.ts
index 1bd641232c..7852b5a2e1 100644
--- a/packages/backend/src/server/api/endpoints/i/move.ts
+++ b/packages/backend/src/server/api/endpoints/i/move.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { Injectable } from '@nestjs/common';
+import { Inject, Injectable } from '@nestjs/common';
import ms from 'ms';
import { Endpoint } from '@/server/api/endpoint-base.js';
@@ -19,6 +19,8 @@ import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import * as Acct from '@/misc/acct.js';
+import { DI } from '@/di-symbols.js';
+import { MiMeta } from '@/models/_.js';
export const meta = {
tags: ['users'],
@@ -81,6 +83,9 @@ export const paramDef = {
@Injectable()
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
+ @Inject(DI.meta)
+ private serverSettings: MiMeta,
+
private remoteUserResolveService: RemoteUserResolveService,
private apiLoggerService: ApiLoggerService,
private accountMoveService: AccountMoveService,
@@ -92,7 +97,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// check parameter
if (!ps.moveToAccount) throw new ApiError(meta.errors.noSuchUser);
// abort if user is the root
- if (me.isRoot) throw new ApiError(meta.errors.rootForbidden);
+ if (this.serverSettings.rootUserId === me.id) throw new ApiError(meta.errors.rootForbidden);
// abort if user has already moved
if (me.movedToUri) throw new ApiError(meta.errors.alreadyMoved);
diff --git a/packages/backend/src/server/api/endpoints/i/regenerate-token.ts b/packages/backend/src/server/api/endpoints/i/regenerate-token.ts
index 78f3cce9ad..d25d5d5e0e 100644
--- a/packages/backend/src/server/api/endpoints/i/regenerate-token.ts
+++ b/packages/backend/src/server/api/endpoints/i/regenerate-token.ts
@@ -7,7 +7,7 @@ import bcrypt from 'bcryptjs';
import { Inject, Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import type { UsersRepository, UserProfilesRepository } from '@/models/_.js';
-import generateUserToken from '@/misc/generate-native-user-token.js';
+import { generateNativeUserToken } from '@/misc/token.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
import { DI } from '@/di-symbols.js';
@@ -49,7 +49,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new Error('incorrect password');
}
- const newToken = generateUserToken();
+ const newToken = generateNativeUserToken();
await this.usersRepository.update(me.id, {
token: newToken,
diff --git a/packages/backend/src/server/api/endpoints/reset-db.ts b/packages/backend/src/server/api/endpoints/reset-db.ts
index 67d5fabd86..552362b64a 100644
--- a/packages/backend/src/server/api/endpoints/reset-db.ts
+++ b/packages/backend/src/server/api/endpoints/reset-db.ts
@@ -6,9 +6,12 @@
import { Inject, Injectable } from '@nestjs/common';
import { DataSource } from 'typeorm';
import * as Redis from 'ioredis';
+import { LoggerService } from '@/core/LoggerService.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
import { resetDb } from '@/misc/reset-db.js';
+import { MetaService } from '@/core/MetaService.js';
+import { GlobalEventService } from '@/core/GlobalEventService.js';
export const meta = {
tags: ['non-productive'],
@@ -36,13 +39,27 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
@Inject(DI.redis)
private redisClient: Redis.Redis,
+
+ private loggerService: LoggerService,
+ private metaService: MetaService,
+ private globalEventService: GlobalEventService,
) {
super(meta, paramDef, async (ps, me) => {
if (process.env.NODE_ENV !== 'test') throw new Error('NODE_ENV is not a test');
- await redisClient.flushdb();
+ const logger = this.loggerService.getLogger('reset-db');
+ logger.info('---- Resetting database...');
+
+ await this.redisClient.flushdb();
await resetDb(this.db);
+ // DIコンテナで管理しているmetaのインスタンスには上記のリセット処理が届かないため、
+ // 初期値を流して明示的にリフレッシュする
+ const meta = await this.metaService.fetch(true);
+ this.globalEventService.publishInternalEvent('metaUpdated', { after: meta });
+
+ logger.info('---- Database reset complete.');
+
await new Promise(resolve => setTimeout(resolve, 1000));
});
}
diff --git a/packages/backend/src/server/oauth/OAuth2ProviderService.ts b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
index e065c451f1..cdd7102666 100644
--- a/packages/backend/src/server/oauth/OAuth2ProviderService.ts
+++ b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
@@ -95,6 +95,7 @@ interface ClientInformation {
id: string;
redirectUris: string[];
name: string;
+ logo: string | null;
}
// https://indieauth.spec.indieweb.org/#client-information-discovery
@@ -124,11 +125,19 @@ async function discoverClientInformation(logger: Logger, httpRequestService: Htt
redirectUris.push(...[...fragment.querySelectorAll<HTMLLinkElement>('link[rel=redirect_uri][href]')].map(el => el.href));
let name = id;
+ let logo: string | null = null;
if (text) {
const microformats = mf2(text, { baseUrl: res.url });
- const nameProperty = microformats.items.find(item => item.type?.includes('h-app') && item.properties.url.includes(id))?.properties.name[0];
- if (typeof nameProperty === 'string') {
- name = nameProperty;
+ const correspondingProperties = microformats.items.find(item => item.type?.includes('h-app') && item.properties.url.includes(id));
+ if (correspondingProperties) {
+ const nameProperty = correspondingProperties.properties.name?.[0];
+ if (typeof nameProperty === 'string') {
+ name = nameProperty;
+ }
+ const logoProperty = correspondingProperties.properties.logo?.[0];
+ if (typeof logoProperty === 'string') {
+ logo = logoProperty;
+ }
}
}
@@ -136,6 +145,7 @@ async function discoverClientInformation(logger: Logger, httpRequestService: Htt
id,
redirectUris: redirectUris.map(uri => new URL(uri, res.url).toString()),
name: typeof name === 'string' ? name : id,
+ logo,
};
} catch (err) {
console.error(err);
@@ -379,6 +389,7 @@ export class OAuth2ProviderService {
return await reply.view('oauth', {
transactionId: oauth2.transactionID,
clientName: oauth2.client.name,
+ clientLogo: oauth2.client.logo,
scope: oauth2.req.scope.join(' '),
});
});
diff --git a/packages/backend/src/server/web/views/oauth.pug b/packages/backend/src/server/web/views/oauth.pug
index 1470dbfbdf..4195ccc3a3 100644
--- a/packages/backend/src/server/web/views/oauth.pug
+++ b/packages/backend/src/server/web/views/oauth.pug
@@ -6,4 +6,6 @@ block meta
//- XXX: Remove navigation bar in auth page?
meta(name='misskey:oauth:transaction-id' content=transactionId)
meta(name='misskey:oauth:client-name' content=clientName)
+ if clientLogo
+ meta(name='misskey:oauth:client-logo' content=clientLogo)
meta(name='misskey:oauth:scope' content=scope)
diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts
index bf409031c8..c6b1035554 100644
--- a/packages/backend/src/types.ts
+++ b/packages/backend/src/types.ts
@@ -122,6 +122,7 @@ export const moderationLogTypes = [
'deletePage',
'deleteFlash',
'deleteGalleryPost',
+ 'updateProxyAccountDescription',
] as const;
export type ModerationLogPayloads = {
@@ -374,25 +375,29 @@ export type ModerationLogPayloads = {
postUserUsername: string;
post: any;
};
+ updateProxyAccountDescription: {
+ before: string | null;
+ after: string | null;
+ };
};
export type Serialized<T> = {
[K in keyof T]:
- T[K] extends Date
- ? string
- : T[K] extends (Date | null)
- ? (string | null)
- : T[K] extends Record<string, any>
- ? Serialized<T[K]>
- : T[K] extends (Record<string, any> | null)
+ T[K] extends Date
+ ? string
+ : T[K] extends (Date | null)
+ ? (string | null)
+ : T[K] extends Record<string, any>
+ ? Serialized<T[K]>
+ : T[K] extends (Record<string, any> | null)
? (Serialized<T[K]> | null)
- : T[K] extends (Record<string, any> | undefined)
+ : T[K] extends (Record<string, any> | undefined)
? (Serialized<T[K]> | undefined)
- : T[K];
+ : T[K];
};
export type FilterUnionByProperty<
- Union,
- Property extends string | number | symbol,
- Condition
+ Union,
+ Property extends string | number | symbol,
+ Condition,
> = Union extends Record<Property, Condition> ? Union : never;
diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml
index a5a7223982..ed39109aab 100644
--- a/packages/backend/test-federation/compose.yml
+++ b/packages/backend/test-federation/compose.yml
@@ -20,8 +20,12 @@ services:
depends_on:
a.test:
condition: service_healthy
+ misskey.a.test:
+ condition: service_healthy
b.test:
condition: service_healthy
+ misskey.b.test:
+ condition: service_healthy
environment:
- NODE_ENV=development
- NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/rootCA.crt
diff --git a/packages/backend/test-federation/test/abuse-report.test.ts b/packages/backend/test-federation/test/abuse-report.test.ts
index b54d6222b4..ddc8e4f9d0 100644
--- a/packages/backend/test-federation/test/abuse-report.test.ts
+++ b/packages/backend/test-federation/test/abuse-report.test.ts
@@ -35,7 +35,7 @@ describe('Abuse report', () => {
const reportsInB = await bModerator.client.request('admin/abuse-user-reports', {});
const reportInB = reportsInB.filter(report => report.comment.includes(comment))[0];
// NOTE: reporter is not Alice, and is not moderator in A
- strictEqual(reportInB.reporter.url, 'https://a.test/@instance.actor');
+ strictEqual(reportInB.reporter.url, 'https://a.test/@system.actor');
strictEqual(reportInB.targetUserId, bob.id);
// NOTE: cannot forward multiple times
diff --git a/packages/backend/test-federation/test/user.test.ts b/packages/backend/test-federation/test/user.test.ts
index 76605e61d4..83dcb8df44 100644
--- a/packages/backend/test-federation/test/user.test.ts
+++ b/packages/backend/test-federation/test/user.test.ts
@@ -37,6 +37,7 @@ describe('User', () => {
'id',
'host',
'avatarUrl',
+ 'avatarBlurhash',
'instance',
'badgeRoles',
'url',
@@ -379,7 +380,8 @@ describe('User', () => {
strictEqual(followers.length, 1); // followed by Bob
await alice.client.request('i/delete-account', { password: alice.password });
- await sleep();
+ // NOTE: user deletion query is slow
+ await sleep(4000);
const following = await bob.client.request('users/following', { userId: bob.id });
strictEqual(following.length, 0); // no following relation
@@ -477,7 +479,8 @@ describe('User', () => {
strictEqual(followers.length, 1); // followed by Bob
await aAdmin.client.request('admin/suspend-user', { userId: alice.id });
- await sleep();
+ // NOTE: user deletion query is slow
+ await sleep(4000);
const following = await bob.client.request('users/following', { userId: bob.id });
strictEqual(following.length, 0); // no following relation
diff --git a/packages/backend/test-federation/test/utils.ts b/packages/backend/test-federation/test/utils.ts
index db8da5025a..2779eb7e81 100644
--- a/packages/backend/test-federation/test/utils.ts
+++ b/packages/backend/test-federation/test/utils.ts
@@ -36,7 +36,7 @@ export type Request = <
type Host = 'a.test' | 'b.test';
-export async function sleep(ms = 200): Promise<void> {
+export async function sleep(ms = 250): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms));
}
diff --git a/packages/backend/test/e2e/oauth.ts b/packages/backend/test/e2e/oauth.ts
index ef7a6a579d..f639f90ea6 100644
--- a/packages/backend/test/e2e/oauth.ts
+++ b/packages/backend/test/e2e/oauth.ts
@@ -72,11 +72,12 @@ const clientConfig: ModuleOptions<'client_id'> = {
},
};
-function getMeta(html: string): { transactionId: string | undefined, clientName: string | undefined } {
+function getMeta(html: string): { transactionId: string | undefined, clientName: string | undefined, clientLogo: string | undefined } {
const fragment = JSDOM.fragment(html);
return {
transactionId: fragment.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:transaction-id"]')?.content,
clientName: fragment.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:client-name"]')?.content,
+ clientLogo: fragment.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:client-logo"]')?.content,
};
}
@@ -915,6 +916,59 @@ describe('OAuth', () => {
assert.strictEqual(getMeta(await response.text()).clientName, `http://127.0.0.1:${clientPort}/`);
});
+ test('With Logo', async () => {
+ sender = (reply): void => {
+ reply.header('Link', '</redirect>; rel="redirect_uri"');
+ reply.send(`
+ <!DOCTYPE html>
+ <div class="h-app">
+ <a href="/" class="u-url p-name">Misklient</a>
+ <img src="/logo.png" class="u-logo" />
+ </div>
+ `);
+ reply.send();
+ };
+
+ const client = new AuthorizationCode(clientConfig);
+
+ const response = await fetch(client.authorizeURL({
+ redirect_uri,
+ scope: 'write:notes',
+ state: 'state',
+ code_challenge: 'code',
+ code_challenge_method: 'S256',
+ } as AuthorizationParamsExtended));
+ assert.strictEqual(response.status, 200);
+ const meta = getMeta(await response.text());
+ assert.strictEqual(meta.clientName, 'Misklient');
+ assert.strictEqual(meta.clientLogo, `http://127.0.0.1:${clientPort}/logo.png`);
+ });
+
+ test('Missing Logo', async () => {
+ sender = (reply): void => {
+ reply.header('Link', '</redirect>; rel="redirect_uri"');
+ reply.send(`
+ <!DOCTYPE html>
+ <div class="h-app"><a href="/" class="u-url p-name">Misklient
+ `);
+ reply.send();
+ };
+
+ const client = new AuthorizationCode(clientConfig);
+
+ const response = await fetch(client.authorizeURL({
+ redirect_uri,
+ scope: 'write:notes',
+ state: 'state',
+ code_challenge: 'code',
+ code_challenge_method: 'S256',
+ } as AuthorizationParamsExtended));
+ assert.strictEqual(response.status, 200);
+ const meta = getMeta(await response.text());
+ assert.strictEqual(meta.clientName, 'Misklient');
+ assert.strictEqual(meta.clientLogo, undefined);
+ });
+
test('Mismatching URL in h-app', async () => {
sender = (reply): void => {
reply.header('Link', '</redirect>; rel="redirect_uri"');
diff --git a/packages/backend/test/misc/mock-resolver.ts b/packages/backend/test/misc/mock-resolver.ts
index c8f3db8aac..53ff4feb7e 100644
--- a/packages/backend/test/misc/mock-resolver.ts
+++ b/packages/backend/test/misc/mock-resolver.ts
@@ -7,14 +7,10 @@ import type { Config } from '@/config.js';
import type { ApDbResolverService } from '@/core/activitypub/ApDbResolverService.js';
import type { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import type { ApRequestService } from '@/core/activitypub/ApRequestService.js';
-import { Resolver } from '@/core/activitypub/ApResolverService.js';
import type { IObject } from '@/core/activitypub/type.js';
import type { HttpRequestService } from '@/core/HttpRequestService.js';
-import type { InstanceActorService } from '@/core/InstanceActorService.js';
import type { LoggerService } from '@/core/LoggerService.js';
-import type { MetaService } from '@/core/MetaService.js';
import type { UtilityService } from '@/core/UtilityService.js';
-import { bindThis } from '@/decorators.js';
import type {
FollowRequestsRepository,
MiMeta,
@@ -23,6 +19,9 @@ import type {
PollsRepository,
UsersRepository,
} from '@/models/_.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
+import { bindThis } from '@/decorators.js';
+import { Resolver } from '@/core/activitypub/ApResolverService.js';
type MockResponse = {
type: string;
@@ -43,7 +42,7 @@ export class MockResolver extends Resolver {
{} as NoteReactionsRepository,
{} as FollowRequestsRepository,
{} as UtilityService,
- {} as InstanceActorService,
+ {} as SystemAccountService,
{} as ApRequestService,
{} as HttpRequestService,
{} as ApRendererService,
diff --git a/packages/backend/test/unit/AbuseReportNotificationService.ts b/packages/backend/test/unit/AbuseReportNotificationService.ts
index 1326003c5e..6d555326fb 100644
--- a/packages/backend/test/unit/AbuseReportNotificationService.ts
+++ b/packages/backend/test/unit/AbuseReportNotificationService.ts
@@ -149,9 +149,9 @@ describe('AbuseReportNotificationService', () => {
});
beforeEach(async () => {
- root = await createUser({ username: 'root', usernameLower: 'root', isRoot: true });
- alice = await createUser({ username: 'alice', usernameLower: 'alice', isRoot: false });
- bob = await createUser({ username: 'bob', usernameLower: 'bob', isRoot: false });
+ root = await createUser({ username: 'root', usernameLower: 'root' });
+ alice = await createUser({ username: 'alice', usernameLower: 'alice' });
+ bob = await createUser({ username: 'bob', usernameLower: 'bob' });
systemWebhook1 = await createWebhook();
systemWebhook2 = await createWebhook();
diff --git a/packages/backend/test/unit/FlashService.ts b/packages/backend/test/unit/FlashService.ts
index 12ffaf3421..f2d9832f50 100644
--- a/packages/backend/test/unit/FlashService.ts
+++ b/packages/backend/test/unit/FlashService.ts
@@ -79,9 +79,9 @@ describe('FlashService', () => {
userProfilesRepository = app.get(DI.userProfilesRepository);
idService = app.get(IdService);
- root = await createUser({ username: 'root', usernameLower: 'root', isRoot: true });
- alice = await createUser({ username: 'alice', usernameLower: 'alice', isRoot: false });
- bob = await createUser({ username: 'bob', usernameLower: 'bob', isRoot: false });
+ root = await createUser({ username: 'root', usernameLower: 'root' });
+ alice = await createUser({ username: 'alice', usernameLower: 'alice' });
+ bob = await createUser({ username: 'bob', usernameLower: 'bob' });
});
afterEach(async () => {
diff --git a/packages/backend/test/unit/RelayService.ts b/packages/backend/test/unit/RelayService.ts
index 3b3d212c30..074430dd31 100644
--- a/packages/backend/test/unit/RelayService.ts
+++ b/packages/backend/test/unit/RelayService.ts
@@ -3,24 +3,21 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { UtilityService } from '@/core/UtilityService.js';
-
process.env.NODE_ENV = 'test';
import { jest } from '@jest/globals';
-import { ModuleMocker } from 'jest-mock';
import { Test } from '@nestjs/testing';
-import { GlobalModule } from '@/GlobalModule.js';
-import { RelayService } from '@/core/RelayService.js';
+import { ModuleMocker } from 'jest-mock';
+import type { TestingModule } from '@nestjs/testing';
+import type { MockFunctionMetadata } from 'jest-mock';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
-import { CreateSystemUserService } from '@/core/CreateSystemUserService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
-import { QueueService } from '@/core/QueueService.js';
import { IdService } from '@/core/IdService.js';
-import type { RelaysRepository } from '@/models/_.js';
-import { DI } from '@/di-symbols.js';
-import type { TestingModule } from '@nestjs/testing';
-import type { MockFunctionMetadata } from 'jest-mock';
+import { QueueService } from '@/core/QueueService.js';
+import { RelayService } from '@/core/RelayService.js';
+import { SystemAccountService } from '@/core/SystemAccountService.js';
+import { GlobalModule } from '@/GlobalModule.js';
+import { UtilityService } from '@/core/UtilityService.js';
const moduleMocker = new ModuleMocker(global);
@@ -28,8 +25,6 @@ describe('RelayService', () => {
let app: TestingModule;
let relayService: RelayService;
let queueService: jest.Mocked<QueueService>;
- let relaysRepository: RelaysRepository;
- let userEntityService: UserEntityService;
beforeAll(async () => {
app = await Test.createTestingModule({
@@ -38,10 +33,10 @@ describe('RelayService', () => {
],
providers: [
IdService,
- CreateSystemUserService,
ApRendererService,
RelayService,
UserEntityService,
+ SystemAccountService,
UtilityService,
],
})
@@ -61,8 +56,6 @@ describe('RelayService', () => {
relayService = app.get<RelayService>(RelayService);
queueService = app.get<QueueService>(QueueService) as jest.Mocked<QueueService>;
- relaysRepository = app.get<RelaysRepository>(DI.relaysRepository);
- userEntityService = app.get<UserEntityService>(UserEntityService);
});
afterAll(async () => {
diff --git a/packages/backend/test/unit/RoleService.ts b/packages/backend/test/unit/RoleService.ts
index 9c1b1008d6..553ff0982a 100644
--- a/packages/backend/test/unit/RoleService.ts
+++ b/packages/backend/test/unit/RoleService.ts
@@ -57,6 +57,12 @@ describe('RoleService', () => {
return await usersRepository.findOneByOrFail(x.identifiers[0]);
}
+ async function createRoot(data: Partial<MiUser> = {}) {
+ const user = await createUser(data);
+ meta.rootUserId = user.id;
+ return user;
+ }
+
async function createRole(data: Partial<MiRole> = {}) {
const x = await rolesRepository.insert({
id: genAidx(Date.now()),
@@ -279,7 +285,7 @@ describe('RoleService', () => {
describe('getModeratorIds', () => {
test('includeAdmins = false, includeRoot = false, excludeExpire = false', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -305,7 +311,7 @@ describe('RoleService', () => {
test('includeAdmins = false, includeRoot = false, excludeExpire = true', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -331,7 +337,7 @@ describe('RoleService', () => {
test('includeAdmins = true, includeRoot = false, excludeExpire = false', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -357,7 +363,7 @@ describe('RoleService', () => {
test('includeAdmins = true, includeRoot = false, excludeExpire = true', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -383,7 +389,7 @@ describe('RoleService', () => {
test('includeAdmins = false, includeRoot = true, excludeExpire = false', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -409,7 +415,7 @@ describe('RoleService', () => {
test('root has moderator role', async () => {
const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -433,7 +439,7 @@ describe('RoleService', () => {
test('root has administrator role', async () => {
const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
@@ -457,7 +463,7 @@ describe('RoleService', () => {
test('root has moderator role(expire)', async () => {
const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([
- createUser(), createUser(), createUser(), createUser({ isRoot: true }),
+ createUser(), createUser(), createUser(), createRoot(),
]);
const role1 = await createRole({ name: 'admin', isAdministrator: true });
diff --git a/packages/backend/test/unit/SystemWebhookService.ts b/packages/backend/test/unit/SystemWebhookService.ts
index fee4acb305..61187e9f2a 100644
--- a/packages/backend/test/unit/SystemWebhookService.ts
+++ b/packages/backend/test/unit/SystemWebhookService.ts
@@ -97,7 +97,7 @@ describe('SystemWebhookService', () => {
}
async function beforeEachImpl() {
- root = await createUser({ isRoot: true, username: 'root', usernameLower: 'root' });
+ root = await createUser({ username: 'root', usernameLower: 'root' });
}
async function afterEachImpl() {
diff --git a/packages/backend/test/unit/UserSearchService.ts b/packages/backend/test/unit/UserSearchService.ts
index 7ea325d420..66a7f39ff1 100644
--- a/packages/backend/test/unit/UserSearchService.ts
+++ b/packages/backend/test/unit/UserSearchService.ts
@@ -113,7 +113,7 @@ describe('UserSearchService', () => {
});
beforeEach(async () => {
- root = await createUser({ username: 'root', usernameLower: 'root', isRoot: true });
+ root = await createUser({ username: 'root', usernameLower: 'root' });
alice = await createUser({ username: 'Alice', usernameLower: 'alice' });
alyce = await createUser({ username: 'Alyce', usernameLower: 'alyce' });
alycia = await createUser({ username: 'Alycia', usernameLower: 'alycia' });
diff --git a/packages/backend/test/unit/UserWebhookService.ts b/packages/backend/test/unit/UserWebhookService.ts
index db8f96df28..a2a85e9489 100644
--- a/packages/backend/test/unit/UserWebhookService.ts
+++ b/packages/backend/test/unit/UserWebhookService.ts
@@ -91,7 +91,7 @@ describe('UserWebhookService', () => {
}
async function beforeEachImpl() {
- root = await createUser({ isRoot: true, username: 'root', usernameLower: 'root' });
+ root = await createUser({ username: 'root', usernameLower: 'root' });
}
async function afterEachImpl() {
diff --git a/packages/backend/test/unit/WebhookTestService.ts b/packages/backend/test/unit/WebhookTestService.ts
index be84ae9b84..45bc932469 100644
--- a/packages/backend/test/unit/WebhookTestService.ts
+++ b/packages/backend/test/unit/WebhookTestService.ts
@@ -88,8 +88,8 @@ describe('WebhookTestService', () => {
});
beforeEach(async () => {
- root = await createUser({ username: 'root', usernameLower: 'root', isRoot: true });
- alice = await createUser({ username: 'alice', usernameLower: 'alice', isRoot: false });
+ root = await createUser({ username: 'root', usernameLower: 'root' });
+ alice = await createUser({ username: 'alice', usernameLower: 'alice' });
userWebhookService.fetchWebhooks.mockReturnValue(Promise.resolve([
{ id: 'dummy-webhook', active: true, userId: alice.id } as MiWebhook,
diff --git a/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts b/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts
index d96e6b916a..07618e7762 100644
--- a/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts
+++ b/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts
@@ -316,7 +316,7 @@ describe('CheckModeratorsActivityProcessorService', () => {
createUser({}, { email: 'user2@example.com', emailVerified: false }),
createUser({}, { email: null, emailVerified: false }),
createUser({}, { email: 'user4@example.com', emailVerified: true }),
- createUser({ isRoot: true }, { email: 'root@example.com', emailVerified: true }),
+ createUser({}, { email: 'root@example.com', emailVerified: true }),
]);
mockModeratorRole([user1, user2, user3, root]);
@@ -349,7 +349,7 @@ describe('CheckModeratorsActivityProcessorService', () => {
createUser({}, { email: 'user2@example.com', emailVerified: false }),
createUser({}, { email: null, emailVerified: false }),
createUser({}, { email: 'user4@example.com', emailVerified: true }),
- createUser({ isRoot: true }, { email: 'root@example.com', emailVerified: true }),
+ createUser({}, { email: 'root@example.com', emailVerified: true }),
]);
mockModeratorRole([user1, user2, user3, root]);
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index 4768356865..1ee4fc2c28 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -14,7 +14,7 @@
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "6.0.2",
"@rollup/pluginutils": "5.1.4",
- "@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz",
+ "@tabler/icons-webfont": "3.31.0",
"@twemoji/parser": "15.1.1",
"@vitejs/plugin-vue": "5.2.1",
"@vue/compiler-sfc": "3.5.13",
@@ -25,16 +25,16 @@
"misskey-js": "workspace:*",
"frontend-shared": "workspace:*",
"punycode.js": "2.3.1",
- "rollup": "4.34.8",
- "sass": "1.85.0",
- "shiki": "3.0.0",
+ "rollup": "4.34.9",
+ "sass": "1.85.1",
+ "shiki": "3.1.0",
"tinycolor2": "1.6.0",
- "tsc-alias": "1.8.10",
+ "tsc-alias": "1.8.11",
"tsconfig-paths": "4.2.0",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"uuid": "11.1.0",
"json5": "2.2.3",
- "vite": "6.1.1",
+ "vite": "6.2.0",
"vue": "3.5.13"
},
"devDependencies": {
@@ -42,29 +42,29 @@
"@testing-library/vue": "8.1.0",
"@types/estree": "1.0.6",
"@types/micromatch": "4.0.9",
- "@types/node": "22.13.5",
+ "@types/node": "22.13.9",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/tinycolor2": "1.4.6",
- "@types/ws": "8.5.14",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
- "@vitest/coverage-v8": "3.0.6",
+ "@types/ws": "8.18.0",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
+ "@vitest/coverage-v8": "3.0.7",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.0",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.31.0",
- "eslint-plugin-vue": "9.32.0",
+ "eslint-plugin-vue": "9.33.0",
"fast-glob": "3.3.3",
- "happy-dom": "17.1.4",
+ "happy-dom": "17.2.2",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.7.1",
+ "msw": "2.7.3",
"nodemon": "3.1.9",
- "prettier": "3.5.2",
+ "prettier": "3.5.3",
"start-server-and-test": "2.0.10",
"vite-plugin-turbosnap": "1.0.3",
- "vue-component-type-helpers": "2.2.4",
+ "vue-component-type-helpers": "2.2.8",
"vue-eslint-parser": "9.4.3",
- "vue-tsc": "2.2.4"
+ "vue-tsc": "2.2.8"
}
}
diff --git a/packages/frontend-shared/package.json b/packages/frontend-shared/package.json
index ca7bee467b..ad9a0bafb6 100644
--- a/packages/frontend-shared/package.json
+++ b/packages/frontend-shared/package.json
@@ -21,13 +21,13 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "22.13.5",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
+ "@types/node": "22.13.9",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
"esbuild": "0.25.0",
- "eslint-plugin-vue": "9.32.0",
+ "eslint-plugin-vue": "9.33.0",
"nodemon": "3.1.9",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"vue-eslint-parser": "9.4.3"
},
"files": [
diff --git a/packages/frontend/.storybook/preview-head.html b/packages/frontend/.storybook/preview-head.html
index ae42fd49bc..2431a71ddc 100644
--- a/packages/frontend/.storybook/preview-head.html
+++ b/packages/frontend/.storybook/preview-head.html
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<link rel="preload" href="https://github.com/misskey-dev/misskey/blob/master/packages/frontend/assets/about-icon.png?raw=true" as="image" type="image/png" crossorigin="anonymous">
<link rel="preload" href="https://github.com/misskey-dev/misskey/blob/master/packages/frontend/assets/fedi.jpg?raw=true" as="image" type="image/jpeg" crossorigin="anonymous">
-<link rel="stylesheet" href="https://unpkg.com/@tabler/icons-webfont@3.3.0/dist/tabler-icons.min.css">
+<link rel="stylesheet" href="https://unpkg.com/@tabler/icons-webfont@3.31.0/dist/tabler-icons.min.css">
<link rel="stylesheet" href="https://unpkg.com/@fontsource/m-plus-rounded-1c/index.css">
<style>
html {
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 10fbc58cf0..2bf7728d0a 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -25,7 +25,7 @@
"@rollup/plugin-replace": "6.0.2",
"@rollup/pluginutils": "5.1.4",
"@syuilo/aiscript": "0.19.0",
- "@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz",
+ "@tabler/icons-webfont": "3.31.0",
"@twemoji/parser": "15.1.1",
"@vitejs/plugin-vue": "5.2.1",
"@vue/compiler-sfc": "3.5.13",
@@ -40,9 +40,9 @@
"chartjs-chart-matrix": "2.0.1",
"chartjs-plugin-gradient": "0.6.1",
"chartjs-plugin-zoom": "2.2.0",
- "chromatic": "11.25.2",
+ "chromatic": "11.27.0",
"compare-versions": "6.1.1",
- "cropperjs": "2.0.0-rc.2",
+ "cropperjs": "2.0.0",
"date-fns": "4.1.0",
"estree-walker": "3.0.3",
"eventemitter3": "5.0.1",
@@ -58,84 +58,84 @@
"misskey-reversi": "workspace:*",
"photoswipe": "5.4.4",
"punycode.js": "2.3.1",
- "rollup": "4.34.8",
+ "rollup": "4.34.9",
"sanitize-html": "2.14.0",
- "sass": "1.85.0",
- "shiki": "3.0.0",
+ "sass": "1.85.1",
+ "shiki": "3.1.0",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
- "three": "0.173.0",
+ "three": "0.174.0",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
- "tsc-alias": "1.8.10",
+ "tsc-alias": "1.8.11",
"tsconfig-paths": "4.2.0",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"uuid": "11.1.0",
"v-code-diff": "1.13.1",
- "vite": "6.1.1",
+ "vite": "6.2.0",
"vue": "3.5.13",
"vuedraggable": "next"
},
"devDependencies": {
"@misskey-dev/summaly": "5.2.0",
- "@storybook/addon-actions": "8.5.8",
- "@storybook/addon-essentials": "8.5.8",
- "@storybook/addon-interactions": "8.5.8",
- "@storybook/addon-links": "8.5.8",
- "@storybook/addon-mdx-gfm": "8.5.8",
- "@storybook/addon-storysource": "8.5.8",
- "@storybook/blocks": "8.5.8",
- "@storybook/components": "8.5.8",
- "@storybook/core-events": "8.5.8",
- "@storybook/manager-api": "8.5.8",
- "@storybook/preview-api": "8.5.8",
- "@storybook/react": "8.5.8",
- "@storybook/react-vite": "8.5.8",
- "@storybook/test": "8.5.8",
- "@storybook/theming": "8.5.8",
- "@storybook/types": "8.5.8",
- "@storybook/vue3": "8.5.8",
- "@storybook/vue3-vite": "8.5.8",
+ "@storybook/addon-actions": "8.6.3",
+ "@storybook/addon-essentials": "8.6.3",
+ "@storybook/addon-interactions": "8.6.3",
+ "@storybook/addon-links": "8.6.3",
+ "@storybook/addon-mdx-gfm": "8.6.3",
+ "@storybook/addon-storysource": "8.6.3",
+ "@storybook/blocks": "8.6.3",
+ "@storybook/components": "8.6.3",
+ "@storybook/core-events": "8.6.3",
+ "@storybook/manager-api": "8.6.3",
+ "@storybook/preview-api": "8.6.3",
+ "@storybook/react": "8.6.3",
+ "@storybook/react-vite": "8.6.3",
+ "@storybook/test": "8.6.3",
+ "@storybook/theming": "8.6.3",
+ "@storybook/types": "8.6.3",
+ "@storybook/vue3": "8.6.3",
+ "@storybook/vue3-vite": "8.6.3",
"@testing-library/vue": "8.1.0",
"@types/canvas-confetti": "1.9.0",
"@types/estree": "1.0.6",
"@types/matter-js": "0.19.8",
"@types/micromatch": "4.0.9",
- "@types/node": "22.13.5",
+ "@types/node": "22.13.9",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/sanitize-html": "2.13.0",
"@types/seedrandom": "3.0.8",
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
- "@types/ws": "8.5.14",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
- "@vitest/coverage-v8": "3.0.6",
+ "@types/ws": "8.18.0",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
+ "@vitest/coverage-v8": "3.0.7",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.0",
"cross-env": "7.0.3",
- "cypress": "14.0.3",
+ "cypress": "14.1.0",
"eslint-plugin-import": "2.31.0",
- "eslint-plugin-vue": "9.32.0",
+ "eslint-plugin-vue": "9.33.0",
"fast-glob": "3.3.3",
- "happy-dom": "17.1.4",
+ "happy-dom": "17.2.2",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.7.1",
+ "msw": "2.7.3",
"msw-storybook-addon": "2.0.4",
"nodemon": "3.1.9",
- "prettier": "3.5.2",
+ "prettier": "3.5.3",
"react": "19.0.0",
"react-dom": "19.0.0",
"seedrandom": "3.0.5",
"start-server-and-test": "2.0.10",
- "storybook": "8.5.8",
+ "storybook": "8.6.3",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
- "vitest": "3.0.6",
- "vitest-fetch-mock": "0.4.3",
- "vue-component-type-helpers": "2.2.4",
+ "vitest": "3.0.7",
+ "vitest-fetch-mock": "0.4.5",
+ "vue-component-type-helpers": "2.2.8",
"vue-eslint-parser": "9.4.3",
- "vue-tsc": "2.2.4"
+ "vue-tsc": "2.2.8"
}
}
diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue
index 5da161dae8..62a1000674 100644
--- a/packages/frontend/src/components/MkEmojiPicker.vue
+++ b/packages/frontend/src/components/MkEmojiPicker.vue
@@ -413,7 +413,7 @@ function computeButtonTitle(ev: MouseEvent): void {
function chosen(emoji: string | Misskey.entities.EmojiSimple | UnicodeEmojiDef, ev?: MouseEvent) {
const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
diff --git a/packages/frontend/src/components/MkMediaAudio.vue b/packages/frontend/src/components/MkMediaAudio.vue
index 8cf88abaaf..3d2795b37a 100644
--- a/packages/frontend/src/components/MkMediaAudio.vue
+++ b/packages/frontend/src/components/MkMediaAudio.vue
@@ -259,7 +259,14 @@ function showMenu(ev: MouseEvent) {
});
}
-function toggleSensitive(file: Misskey.entities.DriveFile) {
+async function toggleSensitive(file: Misskey.entities.DriveFile) {
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: file.isSensitive ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm,
+ });
+
+ if (canceled) return;
+
os.apiWithDialog('drive/files/update', {
fileId: file.id,
isSensitive: !file.isSensitive,
diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue
index 3645a4a66e..8ab990b926 100644
--- a/packages/frontend/src/components/MkMediaImage.vue
+++ b/packages/frontend/src/components/MkMediaImage.vue
@@ -124,11 +124,21 @@ function showMenu(ev: MouseEvent) {
if (iAmModerator) {
menuItems.push({
- text: i18n.ts.markAsSensitive,
+ text: props.image.isSensitive ? i18n.ts.unmarkAsSensitive : i18n.ts.markAsSensitive,
icon: 'ti ti-eye-exclamation',
danger: true,
- action: () => {
- os.apiWithDialog('drive/files/update', { fileId: props.image.id, isSensitive: true });
+ action: async () => {
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: props.image.isSensitive ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm,
+ });
+
+ if (canceled) return;
+
+ os.apiWithDialog('drive/files/update', {
+ fileId: props.image.id,
+ isSensitive: !props.image.isSensitive,
+ });
},
});
}
diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue
index 26372e1a52..682da22711 100644
--- a/packages/frontend/src/components/MkMediaVideo.vue
+++ b/packages/frontend/src/components/MkMediaVideo.vue
@@ -284,7 +284,14 @@ function showMenu(ev: MouseEvent) {
});
}
-function toggleSensitive(file: Misskey.entities.DriveFile) {
+async function toggleSensitive(file: Misskey.entities.DriveFile) {
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: file.isSensitive ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm,
+ });
+
+ if (canceled) return;
+
os.apiWithDialog('drive/files/update', {
fileId: file.id,
isSensitive: !file.isSensitive,
diff --git a/packages/frontend/src/components/MkMention.vue b/packages/frontend/src/components/MkMention.vue
index 8616081423..87c82f0a89 100644
--- a/packages/frontend/src/components/MkMention.vue
+++ b/packages/frontend/src/components/MkMention.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<img :class="$style.icon" :src="avatarUrl" alt="">
<span>
<span>@{{ username }}</span>
- <span v-if="(host != localHost) || defaultStore.state.showFullAcct" :class="$style.host">@{{ toUnicode(host) }}</span>
+ <span v-if="(host != localHost)" :class="$style.host">@{{ toUnicode(host) }}</span>
</span>
</MkA>
</template>
@@ -17,10 +17,10 @@ SPDX-License-Identifier: AGPL-3.0-only
import { toUnicode } from 'punycode.js';
import { computed } from 'vue';
import { host as localHost } from '@@/js/config.js';
+import type { MkABehavior } from '@/components/global/MkA.vue';
import { $i } from '@/account.js';
import { defaultStore } from '@/store.js';
import { getStaticImageUrl } from '@/scripts/media-proxy.js';
-import type { MkABehavior } from '@/components/global/MkA.vue';
const props = defineProps<{
username: string;
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index 193dfe5b7e..8e1d854660 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -479,7 +479,7 @@ function react(): void {
reaction: '❤️',
});
const el = reactButton.value;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue
index d5bd4ad133..27d8a399cc 100644
--- a/packages/frontend/src/components/MkNoteDetailed.vue
+++ b/packages/frontend/src/components/MkNoteDetailed.vue
@@ -442,7 +442,7 @@ function react(): void {
reaction: '❤️',
});
const el = reactButton.value;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue
index ad0a332f99..b39a4ad708 100644
--- a/packages/frontend/src/components/MkPostForm.vue
+++ b/packages/frontend/src/components/MkPostForm.vue
@@ -751,7 +751,7 @@ async function post(ev?: MouseEvent) {
if (ev) {
const el = (ev.currentTarget ?? ev.target) as HTMLElement | null;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
@@ -1070,6 +1070,8 @@ defineExpose({
&.modal {
width: 100%;
max-width: 520px;
+ overflow-x: clip;
+ overflow-y: auto;
}
}
diff --git a/packages/frontend/src/components/MkPostFormAttaches.vue b/packages/frontend/src/components/MkPostFormAttaches.vue
index f2d6c7e2cd..c7774d50b2 100644
--- a/packages/frontend/src/components/MkPostFormAttaches.vue
+++ b/packages/frontend/src/components/MkPostFormAttaches.vue
@@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
[$style.exceeded]: props.modelValue.length > 16,
}]"
>
- {{ 16 - props.modelValue.length }}/16
+ {{ props.modelValue.length }}/16
</p>
</div>
</template>
diff --git a/packages/frontend/src/components/MkPostFormDialog.vue b/packages/frontend/src/components/MkPostFormDialog.vue
index 32d8df1504..4bef5824fe 100644
--- a/packages/frontend/src/components/MkPostFormDialog.vue
+++ b/packages/frontend/src/components/MkPostFormDialog.vue
@@ -4,8 +4,23 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkModal ref="modal" :preferType="'dialog'" @click="modal?.close()" @closed="onModalClosed()" @esc="modal?.close()">
- <MkPostForm ref="form" :class="$style.form" v-bind="props" autofocus freezeAfterPosted @posted="onPosted" @cancel="modal?.close()" @esc="modal?.close()"/>
+<MkModal
+ ref="modal"
+ :preferType="'dialog'"
+ @click="modal?.close()"
+ @closed="onModalClosed()"
+ @esc="modal?.close()"
+>
+ <MkPostForm
+ ref="form"
+ :class="$style.form"
+ v-bind="props"
+ autofocus
+ freezeAfterPosted
+ @posted="onPosted"
+ @cancel="modal?.close()"
+ @esc="modal?.close()"
+ />
</MkModal>
</template>
diff --git a/packages/frontend/src/components/global/MkAcct.vue b/packages/frontend/src/components/global/MkAcct.vue
index 2f4141b901..ff794d9b6e 100644
--- a/packages/frontend/src/components/global/MkAcct.vue
+++ b/packages/frontend/src/components/global/MkAcct.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<span>
<span>@{{ user.username }}</span>
- <span v-if="user.host || detail || defaultStore.state.showFullAcct" style="opacity: 0.5;">@{{ user.host || host }}</span>
+ <span v-if="user.host || detail" style="opacity: 0.5;">@{{ user.host || host }}</span>
</span>
</template>
@@ -14,7 +14,6 @@ SPDX-License-Identifier: AGPL-3.0-only
import * as Misskey from 'misskey-js';
import { toUnicode } from 'punycode.js';
import { host as hostRaw } from '@@/js/config.js';
-import { defaultStore } from '@/store.js';
defineProps<{
user: Misskey.entities.UserLite;
diff --git a/packages/frontend/src/directives/ripple.ts b/packages/frontend/src/directives/ripple.ts
index a043ff212d..99845c57c3 100644
--- a/packages/frontend/src/directives/ripple.ts
+++ b/packages/frontend/src/directives/ripple.ts
@@ -4,12 +4,14 @@
*/
import MkRippleEffect from '@/components/MkRippleEffect.vue';
+import { defaultStore } from '@/store.js';
import { popup } from '@/os.js';
export default {
mounted(el, binding, vn) {
// 明示的に false であればバインドしない
if (binding.value === false) return;
+ if (!defaultStore.state.animation) return;
el.addEventListener('click', () => {
const rect = el.getBoundingClientRect();
diff --git a/packages/frontend/src/pages/admin-file.vue b/packages/frontend/src/pages/admin-file.vue
index 60f6be51d4..7ccb996fff 100644
--- a/packages/frontend/src/pages/admin-file.vue
+++ b/packages/frontend/src/pages/admin-file.vue
@@ -36,8 +36,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkA v-if="file.user" class="user" :to="`/admin/user/${file.user.id}`">
<MkUserCardMini :user="file.user"/>
</MkA>
+
<div>
- <MkSwitch v-model="isSensitive" @update:modelValue="toggleIsSensitive">{{ i18n.ts.sensitive }}</MkSwitch>
+ <MkSwitch :modelValue="isSensitive" @update:modelValue="toggleSensitive">{{ i18n.ts.sensitive }}</MkSwitch>
</div>
<div>
@@ -117,9 +118,21 @@ async function del() {
});
}
-async function toggleIsSensitive(v) {
- await misskeyApi('drive/files/update', { fileId: props.fileId, isSensitive: v });
- isSensitive.value = v;
+async function toggleSensitive() {
+ if (!file.value) return;
+
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: isSensitive.value ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm,
+ });
+
+ if (canceled) return;
+ isSensitive.value = !isSensitive.value;
+
+ os.apiWithDialog('drive/files/update', {
+ fileId: file.value.id,
+ isSensitive: !file.value.isSensitive,
+ });
}
const headerActions = computed(() => [{
diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue
index fa08c213e2..578945bf07 100644
--- a/packages/frontend/src/pages/admin-user.vue
+++ b/packages/frontend/src/pages/admin-user.vue
@@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
- <MkInfo v-if="['instance.actor', 'relay.actor'].includes(user.username)">{{ i18n.ts.isSystemAccount }}</MkInfo>
+ <MkInfo v-if="isSystem">{{ i18n.ts.isSystemAccount }}</MkInfo>
<FormLink v-if="user.host" :to="`/instance-info/${user.host}`">{{ i18n.ts.instanceInfo }}</FormLink>
@@ -37,21 +37,23 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #value><span class="_monospace">{{ ips[0].ip }}</span></template>
</MkKeyValue>
-->
- <MkKeyValue oneline>
- <template #key>{{ i18n.ts.createdAt }}</template>
- <template #value><span class="_monospace"><MkTime :time="user.createdAt" :mode="'detail'"/></span></template>
- </MkKeyValue>
- <MkKeyValue v-if="info" oneline>
- <template #key>{{ i18n.ts.lastActiveDate }}</template>
- <template #value><span class="_monospace"><MkTime :time="info.lastActiveDate" :mode="'detail'"/></span></template>
- </MkKeyValue>
- <MkKeyValue v-if="info" oneline>
- <template #key>{{ i18n.ts.email }}</template>
- <template #value><span class="_monospace">{{ info.email }}</span></template>
- </MkKeyValue>
+ <template v-if="!isSystem">
+ <MkKeyValue oneline>
+ <template #key>{{ i18n.ts.createdAt }}</template>
+ <template #value><span class="_monospace"><MkTime :time="user.createdAt" :mode="'detail'"/></span></template>
+ </MkKeyValue>
+ <MkKeyValue v-if="info" oneline>
+ <template #key>{{ i18n.ts.lastActiveDate }}</template>
+ <template #value><span class="_monospace"><MkTime :time="info.lastActiveDate" :mode="'detail'"/></span></template>
+ </MkKeyValue>
+ <MkKeyValue v-if="info" oneline>
+ <template #key>{{ i18n.ts.email }}</template>
+ <template #value><span class="_monospace">{{ info.email }}</span></template>
+ </MkKeyValue>
+ </template>
</div>
- <MkTextarea v-model="moderationNote" manualSave>
+ <MkTextarea v-if="!isSystem" v-model="moderationNote" manualSave>
<template #label>{{ i18n.ts.moderationNote }}</template>
<template #caption>{{ i18n.ts.moderationNoteDescription }}</template>
</MkTextarea>
@@ -92,7 +94,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</FormSection>
-->
- <FormSection>
+ <FormSection v-if="!isSystem">
<div class="_gaps">
<MkSwitch v-model="suspended" @update:modelValue="toggleSuspend">{{ i18n.ts.suspend }}</MkSwitch>
@@ -252,6 +254,7 @@ const ap = ref<any>(null);
const moderator = ref(false);
const silenced = ref(false);
const suspended = ref(false);
+const isSystem = ref(false);
const moderationNote = ref('');
const filesPagination = {
endpoint: 'admin/drive/files' as const,
@@ -288,6 +291,7 @@ function createFetcher() {
silenced.value = info.value.isSilenced;
suspended.value = info.value.isSuspended;
moderationNote.value = info.value.moderationNote;
+ isSystem.value = user.value.host == null && user.value.username.includes('.');
watch(moderationNote, async () => {
await misskeyApi('admin/update-user-note', { userId: user.value.id, text: moderationNote.value });
@@ -507,7 +511,15 @@ watch(user, () => {
const headerActions = computed(() => []);
-const headerTabs = computed(() => [{
+const headerTabs = computed(() => isSystem.value ? [{
+ key: 'overview',
+ title: i18n.ts.overview,
+ icon: 'ti ti-info-circle',
+}, {
+ key: 'raw',
+ title: 'Raw',
+ icon: 'ti ti-code',
+}] : [{
key: 'overview',
title: i18n.ts.overview,
icon: 'ti ti-info-circle',
diff --git a/packages/frontend/src/pages/admin/modlog.ModLog.vue b/packages/frontend/src/pages/admin/modlog.ModLog.vue
index 1e144394fb..9bbe5f2e42 100644
--- a/packages/frontend/src/pages/admin/modlog.ModLog.vue
+++ b/packages/frontend/src/pages/admin/modlog.ModLog.vue
@@ -170,6 +170,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/>
</div>
</template>
+ <template v-else-if="log.type === 'updateProxyAccountDescription'">
+ <div :class="$style.diff">
+ <CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/>
+ </div>
+ </template>
<details>
<summary>raw</summary>
diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue
index ea7603a45a..aed593fc54 100644
--- a/packages/frontend/src/pages/admin/settings.vue
+++ b/packages/frontend/src/pages/admin/settings.vue
@@ -238,15 +238,17 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkFolder>
<template #icon><i class="ti ti-ghost"></i></template>
<template #label>{{ i18n.ts.proxyAccount }}</template>
+ <template v-if="proxyAccountForm.modified.value" #footer>
+ <MkFormFooter :form="proxyAccountForm"/>
+ </template>
<div class="_gaps">
<MkInfo>{{ i18n.ts.proxyAccountDescription }}</MkInfo>
- <MkKeyValue>
- <template #key>{{ i18n.ts.proxyAccount }}</template>
- <template #value>{{ proxyAccount ? `@${proxyAccount.username}` : i18n.ts.none }}</template>
- </MkKeyValue>
- <MkButton primary @click="chooseProxyAccount">{{ i18n.ts.selectAccount }}</MkButton>
+ <MkTextarea v-model="proxyAccountForm.state.description" :max="500" tall mfmAutocomplete :mfmPreview="true">
+ <template #label>{{ i18n.ts._profile.description }}</template>
+ <template #caption>{{ i18n.ts._profile.youCanIncludeHashtags }}</template>
+ </MkTextarea>
</div>
</MkFolder>
</div>
@@ -256,7 +258,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { ref, computed } from 'vue';
+import { ref, computed, reactive } from 'vue';
import XHeader from './_header_.vue';
import MkSwitch from '@/components/MkSwitch.vue';
import MkInput from '@/components/MkInput.vue';
@@ -277,7 +279,7 @@ import MkRadios from '@/components/MkRadios.vue';
const meta = await misskeyApi('admin/meta');
-const proxyAccount = ref(meta.proxyAccountId ? await misskeyApi('users/show', { userId: meta.proxyAccountId }) : null);
+const proxyAccount = await misskeyApi('users/show', { userId: meta.proxyAccountId });
const infoForm = useForm({
name: meta.name ?? '',
@@ -378,16 +380,14 @@ const federationForm = useForm({
fetchInstance(true);
});
-function chooseProxyAccount() {
- os.selectUser({ localOnly: true }).then(user => {
- proxyAccount.value = user;
- os.apiWithDialog('admin/update-meta', {
- proxyAccountId: user.id,
- }).then(() => {
- fetchInstance(true);
- });
+const proxyAccountForm = useForm({
+ description: proxyAccount.description,
+}, async (state) => {
+ await os.apiWithDialog('admin/update-proxy-account', {
+ description: state.description,
});
-}
+ fetchInstance(true);
+});
const headerTabs = computed(() => []);
diff --git a/packages/frontend/src/pages/oauth.vue b/packages/frontend/src/pages/oauth.vue
index 8719a769e5..860c884d13 100644
--- a/packages/frontend/src/pages/oauth.vue
+++ b/packages/frontend/src/pages/oauth.vue
@@ -11,6 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkAuthConfirm
ref="authRoot"
:name="name"
+ :icon="logo"
:permissions="permissions"
:waitOnDeny="true"
@accept="onAccept"
@@ -33,6 +34,7 @@ if (transactionIdMeta) {
}
const name = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:client-name"]')?.content;
+const logo = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:client-logo"]')?.content;
const permissions = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:scope"]')?.content.split(' ').filter((p): p is typeof Misskey.permissions[number] => (Misskey.permissions as readonly string[]).includes(p)) ?? [];
function doPost(token: string, decision: 'accept' | 'deny') {
diff --git a/packages/frontend/src/pages/search.note.vue b/packages/frontend/src/pages/search.note.vue
index a390e3fba1..32a35f8110 100644
--- a/packages/frontend/src/pages/search.note.vue
+++ b/packages/frontend/src/pages/search.note.vue
@@ -120,6 +120,7 @@ import { i18n } from '@/i18n.js';
import { instance } from '@/instance.js';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
+import { apLookup } from '@/scripts/lookup.js';
import { useRouter } from '@/router/supplier.js';
import MkButton from '@/components/MkButton.vue';
import MkFoldableSection from '@/components/MkFoldableSection.vue';
@@ -260,13 +261,7 @@ async function search() {
text: i18n.ts.lookupConfirm,
});
if (!confirm.canceled) {
- const promise = misskeyApi('ap/show', {
- uri: searchParams.value.query,
- });
-
- os.promiseDialog(promise, null, null, i18n.ts.fetchingAsApObject);
-
- const res = await promise;
+ const res = await apLookup(searchParams.value.query);
if (res.type === 'User') {
router.push(`/@${res.object.username}@${res.object.host}`);
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue
index a6a49f0ab9..8ebcf975b7 100644
--- a/packages/frontend/src/pages/user/home.vue
+++ b/packages/frontend/src/pages/user/home.vue
@@ -13,7 +13,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="profile _gaps">
<MkAccountMoved v-if="user.movedTo" :movedTo="user.movedTo"/>
- <MkRemoteCaution v-if="user.host != null" :href="user.url ?? user.uri!" class="warn"/>
+ <MkRemoteCaution v-if="user.host != null" :href="user.url ?? user.uri!"/>
+ <MkInfo v-if="user.host == null && user.username.includes('.')">{{ i18n.ts.isSystemAccount }}</MkInfo>
<div :key="user.id" class="main _panel">
<div class="banner-container" :style="style">
@@ -48,7 +49,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
<div v-if="user.followedMessage != null" class="followedMessage">
- <MkFukidashi class="fukidashi" :tail="narrow ? 'none' : 'left'" negativeMargin shadow>
+ <MkFukidashi class="fukidashi" :tail="narrow ? 'none' : 'left'" negativeMargin>
<div class="messageHeader">{{ i18n.ts.messageToFollower }}</div>
<div><MkSparkle><Mfm :plain="true" :text="user.followedMessage" :author="user"/></MkSparkle></div>
</MkFukidashi>
diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts
index 23fe811525..84122c0e60 100644
--- a/packages/frontend/src/scripts/get-note-menu.ts
+++ b/packages/frontend/src/scripts/get-note-menu.ts
@@ -558,7 +558,7 @@ export function getRenoteMenu(props: {
icon: 'ti ti-repeat',
action: () => {
const el = props.renoteButton.value;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
@@ -596,7 +596,7 @@ export function getRenoteMenu(props: {
icon: 'ti ti-repeat',
action: () => {
const el = props.renoteButton.value;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
@@ -647,7 +647,7 @@ export function getRenoteMenu(props: {
text: channel.name,
action: () => {
const el = props.renoteButton.value;
- if (el) {
+ if (el && defaultStore.state.animation) {
const rect = el.getBoundingClientRect();
const x = rect.left + (el.offsetWidth / 2);
const y = rect.top + (el.offsetHeight / 2);
diff --git a/packages/frontend/src/scripts/lookup.ts b/packages/frontend/src/scripts/lookup.ts
index 8ee2a4b99c..02f589c7ca 100644
--- a/packages/frontend/src/scripts/lookup.ts
+++ b/packages/frontend/src/scripts/lookup.ts
@@ -29,45 +29,7 @@ export async function lookup(router?: Router) {
}
if (query.startsWith('https://')) {
- const promise = misskeyApi('ap/show', {
- uri: query,
- });
-
- os.promiseDialog(promise, null, (err) => {
- let title = i18n.ts.somethingHappened;
- let text = err.message + '\n' + err.id;
-
- switch (err.id) {
- case '974b799e-1a29-4889-b706-18d4dd93e266':
- title = i18n.ts._remoteLookupErrors._federationNotAllowed.title;
- text = i18n.ts._remoteLookupErrors._federationNotAllowed.description;
- break;
- case '1a5eab56-e47b-48c2-8d5e-217b897d70db':
- title = i18n.ts._remoteLookupErrors._uriInvalid.title;
- text = i18n.ts._remoteLookupErrors._uriInvalid.description;
- break;
- case '81b539cf-4f57-4b29-bc98-032c33c0792e':
- title = i18n.ts._remoteLookupErrors._requestFailed.title;
- text = i18n.ts._remoteLookupErrors._requestFailed.description;
- break;
- case '70193c39-54f3-4813-82f0-70a680f7495b':
- title = i18n.ts._remoteLookupErrors._responseInvalid.title;
- text = i18n.ts._remoteLookupErrors._responseInvalid.description;
- break;
- case 'dc94d745-1262-4e63-a17d-fecaa57efc82':
- title = i18n.ts._remoteLookupErrors._noSuchObject.title;
- text = i18n.ts._remoteLookupErrors._noSuchObject.description;
- break;
- }
-
- os.alert({
- type: 'error',
- title,
- text,
- });
- }, i18n.ts.fetchingAsApObject);
-
- const res = await promise;
+ const res = await apLookup(query);
if (res.type === 'User') {
_router.push(`/@${res.object.username}@${res.object.host}`);
@@ -78,3 +40,45 @@ export async function lookup(router?: Router) {
return;
}
}
+
+export async function apLookup(query: string) {
+ const promise = misskeyApi('ap/show', {
+ uri: query,
+ });
+
+ os.promiseDialog(promise, null, (err) => {
+ let title = i18n.ts.somethingHappened;
+ let text = err.message + '\n' + err.id;
+
+ switch (err.id) {
+ case '974b799e-1a29-4889-b706-18d4dd93e266':
+ title = i18n.ts._remoteLookupErrors._federationNotAllowed.title;
+ text = i18n.ts._remoteLookupErrors._federationNotAllowed.description;
+ break;
+ case '1a5eab56-e47b-48c2-8d5e-217b897d70db':
+ title = i18n.ts._remoteLookupErrors._uriInvalid.title;
+ text = i18n.ts._remoteLookupErrors._uriInvalid.description;
+ break;
+ case '81b539cf-4f57-4b29-bc98-032c33c0792e':
+ title = i18n.ts._remoteLookupErrors._requestFailed.title;
+ text = i18n.ts._remoteLookupErrors._requestFailed.description;
+ break;
+ case '70193c39-54f3-4813-82f0-70a680f7495b':
+ title = i18n.ts._remoteLookupErrors._responseInvalid.title;
+ text = i18n.ts._remoteLookupErrors._responseInvalid.description;
+ break;
+ case 'dc94d745-1262-4e63-a17d-fecaa57efc82':
+ title = i18n.ts._remoteLookupErrors._noSuchObject.title;
+ text = i18n.ts._remoteLookupErrors._noSuchObject.description;
+ break;
+ }
+
+ os.alert({
+ type: 'error',
+ title,
+ text,
+ });
+ }, i18n.ts.fetchingAsApObject);
+
+ return await promise;
+}
diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts
index e2243e067a..128fce315f 100644
--- a/packages/frontend/src/store.ts
+++ b/packages/frontend/src/store.ts
@@ -10,8 +10,8 @@ import lightTheme from '@@/themes/l-light.json5';
import darkTheme from '@@/themes/d-green-lime.json5';
import type { SoundType } from '@/scripts/sound.js';
import type { Ast } from '@syuilo/aiscript';
-import { DEFAULT_DEVICE_KIND } from '@/scripts/device-kind.js';
import type { DeviceKind } from '@/scripts/device-kind.js';
+import { DEFAULT_DEVICE_KIND } from '@/scripts/device-kind.js';
import { miLocalStorage } from '@/local-storage.js';
import { Storage } from '@/pizzax.js';
@@ -89,10 +89,6 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'account',
default: true,
},
- showFullAcct: {
- where: 'account',
- default: false,
- },
collapseRenotes: {
where: 'account',
default: true,
diff --git a/packages/frontend/test/home.test.ts b/packages/frontend/test/home.test.ts
index b70edc6ac1..a67ea40176 100644
--- a/packages/frontend/test/home.test.ts
+++ b/packages/frontend/test/home.test.ts
@@ -42,8 +42,6 @@ describe('XHome', () => {
const anchor = home.container.querySelector<HTMLAnchorElement>('a[href^="https://example.com/"]');
assert.exists(anchor, 'anchor to the remote exists');
assert.strictEqual(anchor?.href, 'https://example.com/@user/profile');
-
- assert.ok(anchor?.parentElement?.classList.contains('warn'), 'the parent is a warning');
});
test('The remote caution should fall back to uri if url is null', async () => {
diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json
index 881d245613..5508b4fa6c 100644
--- a/packages/misskey-bubble-game/package.json
+++ b/packages/misskey-bubble-game/package.json
@@ -24,12 +24,12 @@
"devDependencies": {
"@types/matter-js": "0.19.8",
"@types/seedrandom": "3.0.8",
- "@types/node": "22.13.5",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
+ "@types/node": "22.13.9",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
"nodemon": "3.1.9",
"execa": "9.5.2",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"esbuild": "0.25.0",
"glob": "11.0.1"
},
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index 1b935364f1..6060812b53 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -399,6 +399,12 @@ type AdminUpdateAbuseUserReportRequest = operations['admin___update-abuse-user-r
type AdminUpdateMetaRequest = operations['admin___update-meta']['requestBody']['content']['application/json'];
// @public (undocumented)
+type AdminUpdateProxyAccountRequest = operations['admin___update-proxy-account']['requestBody']['content']['application/json'];
+
+// @public (undocumented)
+type AdminUpdateProxyAccountResponse = operations['admin___update-proxy-account']['responses']['200']['content']['application/json'];
+
+// @public (undocumented)
type AdminUpdateUserNoteRequest = operations['admin___update-user-note']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1357,6 +1363,8 @@ declare namespace entities {
AdminUnsuspendUserRequest,
AdminUpdateAbuseUserReportRequest,
AdminUpdateMetaRequest,
+ AdminUpdateProxyAccountRequest,
+ AdminUpdateProxyAccountResponse,
AdminUpdateUserNoteRequest,
AnnouncementsRequest,
AnnouncementsResponse,
diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json
index 135d8eafdc..f3c926bcdf 100644
--- a/packages/misskey-js/generator/package.json
+++ b/packages/misskey-js/generator/package.json
@@ -8,14 +8,14 @@
},
"devDependencies": {
"@readme/openapi-parser": "2.7.0",
- "@types/node": "22.13.5",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
+ "@types/node": "22.13.9",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
"openapi-types": "12.1.3",
"openapi-typescript": "6.7.6",
"ts-case-convert": "2.1.0",
"tsx": "4.19.3",
- "typescript": "5.7.3"
+ "typescript": "5.8.2"
},
"files": [
"built"
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index f9a61fd0b1..8a91f8ea38 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2025.2.1",
+ "version": "2025.3.0",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",
@@ -35,12 +35,12 @@
"directory": "packages/misskey-js"
},
"devDependencies": {
- "@microsoft/api-extractor": "7.50.1",
+ "@microsoft/api-extractor": "7.51.1",
"@swc/jest": "0.2.37",
"@types/jest": "29.5.14",
- "@types/node": "22.13.5",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
+ "@types/node": "22.13.9",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
"jest": "29.7.0",
"jest-fetch-mock": "3.0.3",
"jest-websocket-mock": "2.5.0",
@@ -49,7 +49,7 @@
"nodemon": "3.1.9",
"execa": "8.0.1",
"tsd": "0.31.2",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"esbuild": "0.25.0",
"glob": "11.0.1"
},
diff --git a/packages/misskey-js/src/autogen/apiClientJSDoc.ts b/packages/misskey-js/src/autogen/apiClientJSDoc.ts
index 6bace3924c..a1543952fc 100644
--- a/packages/misskey-js/src/autogen/apiClientJSDoc.ts
+++ b/packages/misskey-js/src/autogen/apiClientJSDoc.ts
@@ -1008,6 +1008,17 @@ declare module '../api.js' {
/**
* No description provided.
*
+ * **Credential required**: *Yes* / **Permission**: *write:admin:account*
+ */
+ request<E extends 'admin/update-proxy-account', P extends Endpoints[E]['req']>(
+ endpoint: E,
+ params: P,
+ credential?: string | null,
+ ): Promise<SwitchCaseResponseType<E, P>>;
+
+ /**
+ * No description provided.
+ *
* **Credential required**: *Yes* / **Permission**: *write:admin:user-note*
*/
request<E extends 'admin/update-user-note', P extends Endpoints[E]['req']>(
diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts
index 2de0bc9808..9bb8fb2225 100644
--- a/packages/misskey-js/src/autogen/endpoint.ts
+++ b/packages/misskey-js/src/autogen/endpoint.ts
@@ -122,6 +122,8 @@ import type {
AdminUnsuspendUserRequest,
AdminUpdateAbuseUserReportRequest,
AdminUpdateMetaRequest,
+ AdminUpdateProxyAccountRequest,
+ AdminUpdateProxyAccountResponse,
AdminUpdateUserNoteRequest,
AnnouncementsRequest,
AnnouncementsResponse,
@@ -676,6 +678,7 @@ export type Endpoints = {
'admin/unsuspend-user': { req: AdminUnsuspendUserRequest; res: EmptyResponse };
'admin/update-abuse-user-report': { req: AdminUpdateAbuseUserReportRequest; res: EmptyResponse };
'admin/update-meta': { req: AdminUpdateMetaRequest; res: EmptyResponse };
+ 'admin/update-proxy-account': { req: AdminUpdateProxyAccountRequest; res: AdminUpdateProxyAccountResponse };
'admin/update-user-note': { req: AdminUpdateUserNoteRequest; res: EmptyResponse };
'announcements': { req: AnnouncementsRequest; res: AnnouncementsResponse };
'announcements/show': { req: AnnouncementsShowRequest; res: AnnouncementsShowResponse };
diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts
index b7639abca8..f3d26efa69 100644
--- a/packages/misskey-js/src/autogen/entities.ts
+++ b/packages/misskey-js/src/autogen/entities.ts
@@ -125,6 +125,8 @@ export type AdminUnsetUserBannerRequest = operations['admin___unset-user-banner'
export type AdminUnsuspendUserRequest = operations['admin___unsuspend-user']['requestBody']['content']['application/json'];
export type AdminUpdateAbuseUserReportRequest = operations['admin___update-abuse-user-report']['requestBody']['content']['application/json'];
export type AdminUpdateMetaRequest = operations['admin___update-meta']['requestBody']['content']['application/json'];
+export type AdminUpdateProxyAccountRequest = operations['admin___update-proxy-account']['requestBody']['content']['application/json'];
+export type AdminUpdateProxyAccountResponse = operations['admin___update-proxy-account']['responses']['200']['content']['application/json'];
export type AdminUpdateUserNoteRequest = operations['admin___update-user-note']['requestBody']['content']['application/json'];
export type AnnouncementsRequest = operations['announcements']['requestBody']['content']['application/json'];
export type AnnouncementsResponse = operations['announcements']['responses']['200']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index ae7a8c7440..743aaf1608 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -834,6 +834,15 @@ export type paths = {
*/
post: operations['admin___update-meta'];
};
+ '/admin/update-proxy-account': {
+ /**
+ * admin/update-proxy-account
+ * @description No description provided.
+ *
+ * **Credential required**: *Yes* / **Permission**: *write:admin:account*
+ */
+ post: operations['admin___update-proxy-account'];
+ };
'/admin/update-user-note': {
/**
* admin/update-user-note
@@ -8285,7 +8294,7 @@ export type operations = {
setSensitiveFlagAutomatically: boolean;
enableSensitiveMediaDetectionForVideos: boolean;
/** Format: id */
- proxyAccountId: string | null;
+ proxyAccountId: string;
email: string | null;
smtpSecure: boolean;
smtpHost: string | null;
@@ -10626,8 +10635,6 @@ export type operations = {
sensitiveMediaDetectionSensitivity?: 'medium' | 'low' | 'high' | 'veryLow' | 'veryHigh';
setSensitiveFlagAutomatically?: boolean;
enableSensitiveMediaDetectionForVideos?: boolean;
- /** Format: misskey:id */
- proxyAccountId?: string | null;
maintainerName?: string | null;
maintainerEmail?: string | null;
langs?: string[];
@@ -10740,6 +10747,59 @@ export type operations = {
};
};
/**
+ * admin/update-proxy-account
+ * @description No description provided.
+ *
+ * **Credential required**: *Yes* / **Permission**: *write:admin:account*
+ */
+ 'admin___update-proxy-account': {
+ requestBody: {
+ content: {
+ 'application/json': {
+ description?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description OK (with results) */
+ 200: {
+ content: {
+ 'application/json': components['schemas']['UserDetailed'];
+ };
+ };
+ /** @description Client error */
+ 400: {
+ content: {
+ 'application/json': components['schemas']['Error'];
+ };
+ };
+ /** @description Authentication error */
+ 401: {
+ content: {
+ 'application/json': components['schemas']['Error'];
+ };
+ };
+ /** @description Forbidden error */
+ 403: {
+ content: {
+ 'application/json': components['schemas']['Error'];
+ };
+ };
+ /** @description I'm Ai */
+ 418: {
+ content: {
+ 'application/json': components['schemas']['Error'];
+ };
+ };
+ /** @description Internal server error */
+ 500: {
+ content: {
+ 'application/json': components['schemas']['Error'];
+ };
+ };
+ };
+ };
+ /**
* admin/update-user-note
* @description No description provided.
*
diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json
index a9837f8e0a..a8ef69c971 100644
--- a/packages/misskey-reversi/package.json
+++ b/packages/misskey-reversi/package.json
@@ -22,12 +22,12 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "22.13.5",
- "@typescript-eslint/eslint-plugin": "8.24.1",
- "@typescript-eslint/parser": "8.24.1",
+ "@types/node": "22.13.9",
+ "@typescript-eslint/eslint-plugin": "8.26.0",
+ "@typescript-eslint/parser": "8.26.0",
"execa": "9.5.2",
"nodemon": "3.1.9",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"esbuild": "0.25.0",
"glob": "11.0.1"
},
diff --git a/packages/sw/package.json b/packages/sw/package.json
index 7a72ff39fe..703bcd3fc7 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -14,11 +14,11 @@
"misskey-js": "workspace:*"
},
"devDependencies": {
- "@typescript-eslint/parser": "8.24.1",
+ "@typescript-eslint/parser": "8.26.0",
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.74",
"eslint-plugin-import": "2.31.0",
"nodemon": "3.1.9",
- "typescript": "5.7.3"
+ "typescript": "5.8.2"
},
"type": "module"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 45f28ac7bb..e5096d59e7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -702,25 +702,25 @@ importers:
version: 2024.1.0
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.34.8)
+ version: 6.1.0(rollup@4.34.9)
'@rollup/plugin-replace':
specifier: 6.0.2
- version: 6.0.2(rollup@4.34.8)
+ version: 6.0.2(rollup@4.34.9)
'@rollup/pluginutils':
specifier: 5.1.4
- version: 5.1.4(rollup@4.34.8)
+ version: 5.1.4(rollup@4.34.9)
'@syuilo/aiscript':
specifier: 0.19.0
version: 0.19.0
'@tabler/icons-webfont':
- specifier: https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz
- version: https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz
+ specifier: 3.31.0
+ version: 3.31.0
'@twemoji/parser':
specifier: 15.1.1
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.2.1
- version: 5.2.1(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.7.3))
+ version: 5.2.1(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))
'@vue/compiler-sfc':
specifier: 3.5.13
version: 3.5.13
@@ -758,14 +758,14 @@ importers:
specifier: 2.2.0
version: 2.2.0(chart.js@4.4.8)
chromatic:
- specifier: 11.25.2
- version: 11.25.2
+ specifier: 11.27.0
+ version: 11.27.0
compare-versions:
specifier: 6.1.1
version: 6.1.1
cropperjs:
- specifier: 2.0.0-rc.2
- version: 2.0.0-rc.2
+ specifier: 2.0.0
+ version: 2.0.0
date-fns:
specifier: 4.1.0
version: 4.1.0
@@ -812,17 +812,17 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.34.8
- version: 4.34.8
+ specifier: 4.34.9
+ version: 4.34.9
sanitize-html:
specifier: 2.14.0
version: 2.14.0
sass:
- specifier: 1.85.0
- version: 1.85.0
+ specifier: 1.85.1
+ version: 1.85.1
shiki:
- specifier: 3.0.0
- version: 3.0.0
+ specifier: 3.1.0
+ version: 3.1.0
strict-event-emitter-types:
specifier: 2.0.0
version: 2.0.0
@@ -830,8 +830,8 @@ importers:
specifier: 3.1.0
version: 3.1.0
three:
- specifier: 0.173.0
- version: 0.173.0
+ specifier: 0.174.0
+ version: 0.174.0
throttle-debounce:
specifier: 5.0.2
version: 5.0.2
@@ -839,90 +839,90 @@ importers:
specifier: 1.6.0
version: 1.6.0
tsc-alias:
- specifier: 1.8.10
- version: 1.8.10
+ specifier: 1.8.11
+ version: 1.8.11
tsconfig-paths:
specifier: 4.2.0
version: 4.2.0
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
uuid:
specifier: 11.1.0
version: 11.1.0
v-code-diff:
specifier: 1.13.1
- version: 1.13.1(vue@3.5.13(typescript@5.7.3))
+ version: 1.13.1(vue@3.5.13(typescript@5.8.2))
vite:
- specifier: 6.1.1
- version: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ specifier: 6.2.0
+ version: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
vue:
specifier: 3.5.13
- version: 3.5.13(typescript@5.7.3)
+ version: 3.5.13(typescript@5.8.2)
vuedraggable:
specifier: next
- version: 4.1.0(vue@3.5.13(typescript@5.7.3))
+ version: 4.1.0(vue@3.5.13(typescript@5.8.2))
devDependencies:
'@misskey-dev/summaly':
specifier: 5.2.0
version: 5.2.0
'@storybook/addon-actions':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/addon-essentials':
- specifier: 8.5.8
- version: 8.5.8(@types/react@18.0.28)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(@types/react@18.0.28)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/addon-interactions':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/addon-links':
- specifier: 8.5.8
- version: 8.5.8(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/addon-mdx-gfm':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/addon-storysource':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/blocks':
- specifier: 8.5.8
- version: 8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/components':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/core-events':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/manager-api':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/preview-api':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/react':
- specifier: 8.5.8
- version: 8.5.8(@storybook/test@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(typescript@5.7.3)
+ specifier: 8.6.3
+ version: 8.6.3(@storybook/test@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)
'@storybook/react-vite':
- specifier: 8.5.8
- version: 8.5.8(@storybook/test@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.34.8)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(typescript@5.7.3)(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
+ specifier: 8.6.3
+ version: 8.6.3(@storybook/test@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.34.9)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
'@storybook/test':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/theming':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/types':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/vue3':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.3))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.2))
'@storybook/vue3-vite':
- specifier: 8.5.8
- version: 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.7.3))
+ specifier: 8.6.3
+ version: 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
+ version: 8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
'@types/canvas-confetti':
specifier: 1.9.0
version: 1.9.0
@@ -936,8 +936,8 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@types/punycode.js':
specifier: npm:@types/punycode@2.1.4
version: '@types/punycode@2.1.4'
@@ -954,17 +954,17 @@ importers:
specifier: 1.4.6
version: 1.4.6
'@types/ws':
- specifier: 8.5.14
- version: 8.5.14
+ specifier: 8.18.0
+ version: 8.18.0
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
'@vitest/coverage-v8':
- specifier: 3.0.6
- version: 3.0.6(vitest@3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
+ specifier: 3.0.7
+ version: 3.0.7(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
'@vue/runtime-core':
specifier: 3.5.13
version: 3.5.13
@@ -975,20 +975,20 @@ importers:
specifier: 7.0.3
version: 7.0.3
cypress:
- specifier: 14.0.3
- version: 14.0.3
+ specifier: 14.1.0
+ version: 14.1.0
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)
+ version: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)
eslint-plugin-vue:
- specifier: 9.32.0
- version: 9.32.0(eslint@9.20.1)
+ specifier: 9.33.0
+ version: 9.33.0(eslint@9.20.1)
fast-glob:
specifier: 3.3.3
version: 3.3.3
happy-dom:
- specifier: 17.1.4
- version: 17.1.4
+ specifier: 17.2.2
+ version: 17.2.2
intersection-observer:
specifier: 0.12.2
version: 0.12.2
@@ -996,17 +996,17 @@ importers:
specifier: 4.0.8
version: 4.0.8
msw:
- specifier: 2.7.1
- version: 2.7.1(@types/node@22.13.5)(typescript@5.7.3)
+ specifier: 2.7.3
+ version: 2.7.3(@types/node@22.13.9)(typescript@5.8.2)
msw-storybook-addon:
specifier: 2.0.4
- version: 2.0.4(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))
+ version: 2.0.4(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))
nodemon:
specifier: 3.1.9
version: 3.1.9
prettier:
- specifier: 3.5.2
- version: 3.5.2
+ specifier: 3.5.3
+ version: 3.5.3
react:
specifier: 19.0.0
version: 19.0.0
@@ -1020,29 +1020,29 @@ importers:
specifier: 2.0.10
version: 2.0.10
storybook:
- specifier: 8.5.8
- version: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ specifier: 8.6.3
+ version: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
storybook-addon-misskey-theme:
specifier: github:misskey-dev/storybook-addon-misskey-theme
- version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/components@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/core-events@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/theming@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/types@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/components@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/core-events@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/theming@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/types@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
vitest:
- specifier: 3.0.6
- version: 3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ specifier: 3.0.7
+ version: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
vitest-fetch-mock:
- specifier: 0.4.3
- version: 0.4.3(vitest@3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
+ specifier: 0.4.5
+ version: 0.4.5(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
vue-component-type-helpers:
- specifier: 2.2.4
- version: 2.2.4
+ specifier: 2.2.8
+ version: 2.2.8
vue-eslint-parser:
specifier: 9.4.3
version: 9.4.3(eslint@9.20.1)
vue-tsc:
- specifier: 2.2.4
- version: 2.2.4(typescript@5.7.3)
+ specifier: 2.2.8
+ version: 2.2.8(typescript@5.8.2)
packages/frontend-embed:
dependencies:
@@ -1051,22 +1051,22 @@ importers:
version: 15.1.0
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.34.8)
+ version: 6.1.0(rollup@4.34.9)
'@rollup/plugin-replace':
specifier: 6.0.2
- version: 6.0.2(rollup@4.34.8)
+ version: 6.0.2(rollup@4.34.9)
'@rollup/pluginutils':
specifier: 5.1.4
- version: 5.1.4(rollup@4.34.8)
+ version: 5.1.4(rollup@4.34.9)
'@tabler/icons-webfont':
- specifier: https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz
- version: https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz
+ specifier: 3.31.0
+ version: 3.31.0
'@twemoji/parser':
specifier: 15.1.1
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.2.1
- version: 5.2.1(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.7.3))
+ version: 5.2.1(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))
'@vue/compiler-sfc':
specifier: 3.5.13
version: 3.5.13
@@ -1095,42 +1095,42 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.34.8
- version: 4.34.8
+ specifier: 4.34.9
+ version: 4.34.9
sass:
- specifier: 1.85.0
- version: 1.85.0
+ specifier: 1.85.1
+ version: 1.85.1
shiki:
- specifier: 3.0.0
- version: 3.0.0
+ specifier: 3.1.0
+ version: 3.1.0
tinycolor2:
specifier: 1.6.0
version: 1.6.0
tsc-alias:
- specifier: 1.8.10
- version: 1.8.10
+ specifier: 1.8.11
+ version: 1.8.11
tsconfig-paths:
specifier: 4.2.0
version: 4.2.0
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
uuid:
specifier: 11.1.0
version: 11.1.0
vite:
- specifier: 6.1.1
- version: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ specifier: 6.2.0
+ version: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
vue:
specifier: 3.5.13
- version: 3.5.13(typescript@5.7.3)
+ version: 3.5.13(typescript@5.8.2)
devDependencies:
'@misskey-dev/summaly':
specifier: 5.2.0
version: 5.2.0
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
+ version: 8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -1138,8 +1138,8 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@types/punycode.js':
specifier: npm:@types/punycode@2.1.4
version: '@types/punycode@2.1.4'
@@ -1147,17 +1147,17 @@ importers:
specifier: 1.4.6
version: 1.4.6
'@types/ws':
- specifier: 8.5.14
- version: 8.5.14
+ specifier: 8.18.0
+ version: 8.18.0
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
'@vitest/coverage-v8':
- specifier: 3.0.6
- version: 3.0.6(vitest@3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
+ specifier: 3.0.7
+ version: 3.0.7(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
'@vue/runtime-core':
specifier: 3.5.13
version: 3.5.13
@@ -1169,16 +1169,16 @@ importers:
version: 7.0.3
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)
+ version: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)
eslint-plugin-vue:
- specifier: 9.32.0
- version: 9.32.0(eslint@9.20.1)
+ specifier: 9.33.0
+ version: 9.33.0(eslint@9.20.1)
fast-glob:
specifier: 3.3.3
version: 3.3.3
happy-dom:
- specifier: 17.1.4
- version: 17.1.4
+ specifier: 17.2.2
+ version: 17.2.2
intersection-observer:
specifier: 0.12.2
version: 0.12.2
@@ -1186,14 +1186,14 @@ importers:
specifier: 4.0.8
version: 4.0.8
msw:
- specifier: 2.7.1
- version: 2.7.1(@types/node@22.13.5)(typescript@5.7.3)
+ specifier: 2.7.3
+ version: 2.7.3(@types/node@22.13.9)(typescript@5.8.2)
nodemon:
specifier: 3.1.9
version: 3.1.9
prettier:
- specifier: 3.5.2
- version: 3.5.2
+ specifier: 3.5.3
+ version: 3.5.3
start-server-and-test:
specifier: 2.0.10
version: 2.0.10
@@ -1201,14 +1201,14 @@ importers:
specifier: 1.0.3
version: 1.0.3
vue-component-type-helpers:
- specifier: 2.2.4
- version: 2.2.4
+ specifier: 2.2.8
+ version: 2.2.8
vue-eslint-parser:
specifier: 9.4.3
version: 9.4.3(eslint@9.20.1)
vue-tsc:
- specifier: 2.2.4
- version: 2.2.4(typescript@5.7.3)
+ specifier: 2.2.8
+ version: 2.2.8(typescript@5.8.2)
packages/frontend-shared:
dependencies:
@@ -1217,29 +1217,29 @@ importers:
version: link:../misskey-js
vue:
specifier: 3.5.13
- version: 3.5.13(typescript@5.7.3)
+ version: 3.5.13(typescript@5.8.2)
devDependencies:
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
esbuild:
specifier: 0.25.0
version: 0.25.0
eslint-plugin-vue:
- specifier: 9.32.0
- version: 9.32.0(eslint@9.20.1)
+ specifier: 9.33.0
+ version: 9.33.0(eslint@9.20.1)
nodemon:
specifier: 3.1.9
version: 3.1.9
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
vue-eslint-parser:
specifier: 9.4.3
version: 9.4.3(eslint@9.20.1)
@@ -1260,17 +1260,17 @@ importers:
specifier: 0.19.8
version: 0.19.8
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@types/seedrandom':
specifier: 3.0.8
version: 3.0.8
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
esbuild:
specifier: 0.25.0
version: 0.25.0
@@ -1284,8 +1284,8 @@ importers:
specifier: 3.1.9
version: 3.1.9
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
packages/misskey-js:
dependencies:
@@ -1300,8 +1300,8 @@ importers:
version: 4.4.0
devDependencies:
'@microsoft/api-extractor':
- specifier: 7.50.1
- version: 7.50.1(@types/node@22.13.5)
+ specifier: 7.51.1
+ version: 7.51.1(@types/node@22.13.9)
'@swc/jest':
specifier: 0.2.37
version: 0.2.37(@swc/core@1.10.16)
@@ -1309,14 +1309,14 @@ importers:
specifier: 29.5.14
version: 29.5.14
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
esbuild:
specifier: 0.25.0
version: 0.25.0
@@ -1328,7 +1328,7 @@ importers:
version: 11.0.1
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.13.5)
+ version: 29.7.0(@types/node@22.13.9)
jest-fetch-mock:
specifier: 3.0.3
version: 3.0.3(encoding@0.1.13)
@@ -1348,8 +1348,8 @@ importers:
specifier: 0.31.2
version: 0.31.2
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
packages/misskey-js/generator:
devDependencies:
@@ -1357,14 +1357,14 @@ importers:
specifier: 2.7.0
version: 2.7.0(openapi-types@12.1.3)
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
openapi-types:
specifier: 12.1.3
version: 12.1.3
@@ -1378,8 +1378,8 @@ importers:
specifier: 4.19.3
version: 4.19.3
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
packages/misskey-reversi:
dependencies:
@@ -1388,14 +1388,14 @@ importers:
version: 1.2.2
devDependencies:
'@types/node':
- specifier: 22.13.5
- version: 22.13.5
+ specifier: 22.13.9
+ version: 22.13.9
'@typescript-eslint/eslint-plugin':
- specifier: 8.24.1
- version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
esbuild:
specifier: 0.25.0
version: 0.25.0
@@ -1409,8 +1409,8 @@ importers:
specifier: 3.1.9
version: 3.1.9
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
packages/sw:
dependencies:
@@ -1425,20 +1425,20 @@ importers:
version: link:../misskey-js
devDependencies:
'@typescript-eslint/parser':
- specifier: 8.24.1
- version: 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ specifier: 8.26.0
+ version: 8.26.0(eslint@9.20.1)(typescript@5.8.2)
'@typescript/lib-webworker':
specifier: npm:@types/serviceworker@0.0.74
version: '@types/serviceworker@0.0.74'
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)
+ version: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)
nodemon:
specifier: 3.1.9
version: 3.1.9
typescript:
- specifier: 5.7.3
- version: 5.7.3
+ specifier: 5.8.2
+ version: 5.8.2
packages:
@@ -1901,38 +1901,38 @@ packages:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
- '@cropper/element-canvas@2.0.0-rc.2':
- resolution: {integrity: sha512-0aqbJ3ycQM6/yn4T03vw8K/OeTB8C6+Z/jimuavy4UM2CENH9ucSLM4hAG0yYCgghIyv9Zd0unaBmtgW+I5+SQ==}
+ '@cropper/element-canvas@2.0.0':
+ resolution: {integrity: sha512-GPtGJgSm92crJhhhwUsaMw3rz2KfJWWSz7kRAlufFEV/EHTP5+6r6/Z1BCGRna830i+Avqbm435XLOtA7PVJwA==}
- '@cropper/element-crosshair@2.0.0-rc.2':
- resolution: {integrity: sha512-yopINLvaZhL3E2GNienju1zeQ1Cifkn5f/0R7ZabXcAgUI0s2sLzNqL8+2XV2J3DzEzYEIYc+49KmMle04nVWQ==}
+ '@cropper/element-crosshair@2.0.0':
+ resolution: {integrity: sha512-KfPfyrdeFvUC31Ws7ATtcalWWSaMtrC6bMoCipZhqbUOE7wZoL4ecDSL6BUOZxPa74awZUqfzirCDjHvheBfyw==}
- '@cropper/element-grid@2.0.0-rc.2':
- resolution: {integrity: sha512-PzAfEya6CmIc/o/lcA/NZ1rohszz42wjq2z3E2zq2jMfNDxY/EIoFnGI6+hJrxCAaoKD8UlKOEHQdRQbtnjcMg==}
+ '@cropper/element-grid@2.0.0':
+ resolution: {integrity: sha512-i78SQ0IJTLFveKX6P7svkfMYVdgHrQ8ZmmEw8keFy9n1ZVbK+SK0UHK5FNMRNI/gtVhKJOGEnK/zeyjUdj4Iyw==}
- '@cropper/element-handle@2.0.0-rc.2':
- resolution: {integrity: sha512-wOWX4xpryxKcrhnJC2mHebqQQ622UN2oyQoDZcaMzvlwt7nnX3bInF+SFrIj9/aCxtCUYY0oD2gaJkfd6aNJ0g==}
+ '@cropper/element-handle@2.0.0':
+ resolution: {integrity: sha512-ZJvW+0MkK9E8xYymGdoruaQn2kwjSHFpNSWinjyq6csuVQiCPxlX5ovAEDldmZ9MWePPtWEi3vLKQOo2Yb0T8g==}
- '@cropper/element-image@2.0.0-rc.2':
- resolution: {integrity: sha512-RTKnuJrqn1K8FscS11auit2W57AG04mxRNOxBldYs3lKTkwZjzJdQFkZ/Nxu+cwVXT+c6IeEiayNKvu4B7CAQg==}
+ '@cropper/element-image@2.0.0':
+ resolution: {integrity: sha512-9BxiTS/aHRmrjopaFQb9mQQXmx4ruhYHGkDZMVz24AXpMFjUY6OpqrWse/WjzD9tfhMFvEdu17b3VAekcAgpeg==}
- '@cropper/element-selection@2.0.0-rc.2':
- resolution: {integrity: sha512-UIgIHKHz4qNKlm5YRnC/Pu9+VrInm5TSOzkmU8kPt2swUk0WHNRv3ZcOjCQZ2ccTQnAH3FVM3FYDZ8HjRwLcBg==}
+ '@cropper/element-selection@2.0.0':
+ resolution: {integrity: sha512-ensNnbIfJsJ8bhbJTH/RXtk2URFvTOO4TvfRk461n2FPEC588D7rwBmUJxQg74IiTi4y1JbCI+6j+4LyzYBLCQ==}
- '@cropper/element-shade@2.0.0-rc.2':
- resolution: {integrity: sha512-vHAGFxlqgflGZWkRYNWNHUY0zsV72YZGmCgtUu4sMrnWLZL/jMGhxmm8zZCe/aB94F829XcQ6uf3BoiApB+7Ng==}
+ '@cropper/element-shade@2.0.0':
+ resolution: {integrity: sha512-jv/2bbNZnhU4W+T4G0c8ADocLIZvQFTXgCf2RFDNhI5UVxurzWBnDdb8Mx8LnVplnkTqO+xUmHZYve0CwgWo+Q==}
- '@cropper/element-viewer@2.0.0-rc.2':
- resolution: {integrity: sha512-2z9mIA7ic3enNS4xvq9Gq6hnRZ1tPr0h+lCrOHP55NL4he63lE9oTVJfDx19rL95wUS4VxL2ANvr2BVLNiBM7A==}
+ '@cropper/element-viewer@2.0.0':
+ resolution: {integrity: sha512-zY+3VRN5TvpM8twlphYtXw0tzJL2VgzeK7ufhL1BixVqOdRxwP13TprYIhqwGt9EW/SyJZUiaIu396T89kRX8A==}
- '@cropper/element@2.0.0-rc.2':
- resolution: {integrity: sha512-4G6lTJblndwzpsb43YKeHiKcocOkDIWystGzbHNbqRysE0U0lYHuRyvV7FW6a9S63wtMFSYuwFxcdUdUcmkF8w==}
+ '@cropper/element@2.0.0':
+ resolution: {integrity: sha512-lsthn0nQq73GExUE7Mg/ss6Q3RXADGDv055hxoLFwvl/wGHgy6ZkYlfLZ/VmgBHC6jDK5IgPBFnqrPqlXWSGBA==}
- '@cropper/elements@2.0.0-rc.2':
- resolution: {integrity: sha512-NG5kdqpv7/tGvUfNjJiIHr2Ip431v5t/P5cIXTcYAgt8PRyFJmjx3fatC7NLnP/FUlv+bbzd8PMRI4LY4Gaw3Q==}
+ '@cropper/elements@2.0.0':
+ resolution: {integrity: sha512-PQkPo1nUjxLFUQuHYu+6atfHxpX9B41Xribao6wpvmvmNIFML6LQdNqqWYb6LyM7ujsu71CZdBiMT5oetjJVoQ==}
- '@cropper/utils@2.0.0-rc.2':
- resolution: {integrity: sha512-EEivNsyV6BtL496m4Q/IeAC6FGlyKjKIT1qMtwaxtkR+2ZlKnf9O7AdcGpClemIBA+TbwWAzp0UyIvYFtKUZ1Q==}
+ '@cropper/utils@2.0.0':
+ resolution: {integrity: sha512-cprLYr+7kK3faGgoOsTW9gIn5sefDr2KwOmgyjzIXk+8PLpW8FgFKEg5FoWfRD5zMAmkCBuX6rGKDK3VdUEGrg==}
'@csstools/color-helpers@5.0.1':
resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==}
@@ -1979,300 +1979,150 @@ packages:
'@emnapi/runtime@1.2.0':
resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==}
- '@esbuild/aix-ppc64@0.24.2':
- resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
'@esbuild/aix-ppc64@0.25.0':
resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.24.2':
- resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
'@esbuild/android-arm64@0.25.0':
resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.24.2':
- resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
'@esbuild/android-arm@0.25.0':
resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.24.2':
- resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
'@esbuild/android-x64@0.25.0':
resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.24.2':
- resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
'@esbuild/darwin-arm64@0.25.0':
resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.24.2':
- resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
'@esbuild/darwin-x64@0.25.0':
resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.24.2':
- resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
'@esbuild/freebsd-arm64@0.25.0':
resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.24.2':
- resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
'@esbuild/freebsd-x64@0.25.0':
resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.24.2':
- resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
'@esbuild/linux-arm64@0.25.0':
resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.24.2':
- resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
'@esbuild/linux-arm@0.25.0':
resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.24.2':
- resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
'@esbuild/linux-ia32@0.25.0':
resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.24.2':
- resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
'@esbuild/linux-loong64@0.25.0':
resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.24.2':
- resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
'@esbuild/linux-mips64el@0.25.0':
resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.24.2':
- resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
'@esbuild/linux-ppc64@0.25.0':
resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.24.2':
- resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
'@esbuild/linux-riscv64@0.25.0':
resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.24.2':
- resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
'@esbuild/linux-s390x@0.25.0':
resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.24.2':
- resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
'@esbuild/linux-x64@0.25.0':
resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.24.2':
- resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
'@esbuild/netbsd-arm64@0.25.0':
resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.24.2':
- resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
'@esbuild/netbsd-x64@0.25.0':
resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.24.2':
- resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
'@esbuild/openbsd-arm64@0.25.0':
resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.24.2':
- resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
'@esbuild/openbsd-x64@0.25.0':
resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/sunos-x64@0.24.2':
- resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
'@esbuild/sunos-x64@0.25.0':
resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.24.2':
- resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
'@esbuild/win32-arm64@0.25.0':
resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.24.2':
- resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
'@esbuild/win32-ia32@0.25.0':
resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.24.2':
- resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
'@esbuild/win32-x64@0.25.0':
resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
engines: {node: '>=18'}
@@ -2707,8 +2557,8 @@ packages:
'@microsoft/api-extractor-model@7.30.3':
resolution: {integrity: sha512-yEAvq0F78MmStXdqz9TTT4PZ05Xu5R8nqgwI5xmUmQjWBQ9E6R2n8HB/iZMRciG4rf9iwI2mtuQwIzDXBvHn1w==}
- '@microsoft/api-extractor@7.50.1':
- resolution: {integrity: sha512-L18vz0ARLNaBLKwWe0DdEf7eijDsb7ERZspgZK7PxclLoQrc+9hJZo8y4OVfCHxNVyxlwVywY2WdE/3pOFViLQ==}
+ '@microsoft/api-extractor@7.51.1':
+ resolution: {integrity: sha512-VoFvIeYXme8QctXDkixy1KIn750kZaFy2snAEOB3nhDFfbBcJNEcvBrpCIQIV09MqI4g9egKUkg+/12WMRC77w==}
hasBin: true
'@microsoft/tsdoc-config@0.17.1':
@@ -3301,98 +3151,98 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.34.8':
- resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==}
+ '@rollup/rollup-android-arm-eabi@4.34.9':
+ resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.34.8':
- resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==}
+ '@rollup/rollup-android-arm64@4.34.9':
+ resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.34.8':
- resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==}
+ '@rollup/rollup-darwin-arm64@4.34.9':
+ resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.34.8':
- resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==}
+ '@rollup/rollup-darwin-x64@4.34.9':
+ resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.34.8':
- resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==}
+ '@rollup/rollup-freebsd-arm64@4.34.9':
+ resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.34.8':
- resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==}
+ '@rollup/rollup-freebsd-x64@4.34.9':
+ resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.34.8':
- resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.34.9':
+ resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.34.8':
- resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==}
+ '@rollup/rollup-linux-arm-musleabihf@4.34.9':
+ resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.34.8':
- resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==}
+ '@rollup/rollup-linux-arm64-gnu@4.34.9':
+ resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.34.8':
- resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==}
+ '@rollup/rollup-linux-arm64-musl@4.34.9':
+ resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.34.8':
- resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==}
+ '@rollup/rollup-linux-loongarch64-gnu@4.34.9':
+ resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
- resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.34.9':
+ resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.34.8':
- resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==}
+ '@rollup/rollup-linux-riscv64-gnu@4.34.9':
+ resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.34.8':
- resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==}
+ '@rollup/rollup-linux-s390x-gnu@4.34.9':
+ resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.34.8':
- resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==}
+ '@rollup/rollup-linux-x64-gnu@4.34.9':
+ resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.34.8':
- resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==}
+ '@rollup/rollup-linux-x64-musl@4.34.9':
+ resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.34.8':
- resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==}
+ '@rollup/rollup-win32-arm64-msvc@4.34.9':
+ resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.34.8':
- resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==}
+ '@rollup/rollup-win32-ia32-msvc@4.34.9':
+ resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.34.8':
- resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==}
+ '@rollup/rollup-win32-x64-msvc@4.34.9':
+ resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==}
cpu: [x64]
os: [win32]
@@ -3448,23 +3298,23 @@ packages:
engines: {node: '>=14.18'}
hasBin: true
- '@shikijs/core@3.0.0':
- resolution: {integrity: sha512-gSm3JQf2J2psiUn5bWokmZwnu5N0jfBtRps4CQ1B+qrFvmZCRAkMVoaxgl9qZgAFK5KisLAS3//XaMFVytYHKw==}
+ '@shikijs/core@3.1.0':
+ resolution: {integrity: sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==}
- '@shikijs/engine-javascript@3.0.0':
- resolution: {integrity: sha512-zoB10hTfvk1iZk1ldt6VaF+0iucQL+4TtSvTdTu5MhOeLPLEf5nZ8Wz6uxlp99y627OLalYa2z4W0iTTwb6oyA==}
+ '@shikijs/engine-javascript@3.1.0':
+ resolution: {integrity: sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==}
- '@shikijs/engine-oniguruma@3.0.0':
- resolution: {integrity: sha512-uM9lqwMrlPHPVcdpAN/4pAzTJah1pY7mi9f1MxG887SDkjF/tdiQK+5200Y8N5Hg125sewdMQ1K2agoAo8hDiA==}
+ '@shikijs/engine-oniguruma@3.1.0':
+ resolution: {integrity: sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==}
- '@shikijs/langs@3.0.0':
- resolution: {integrity: sha512-HBsZAukiYz7k3hzttPWa0en3PABEwK3cpxcAcERRwvwuKc5pn0Y+yPxAIYZtN9cFdtNqrbFJNhfcEu/xbG1u/A==}
+ '@shikijs/langs@3.1.0':
+ resolution: {integrity: sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==}
- '@shikijs/themes@3.0.0':
- resolution: {integrity: sha512-mz63nyVB5nXWsv5H2hifDFIThZEJ/cJhMq1/+0JjMdOuuBq2H2D1Fn8UM5yzUtEvap/ipRltv381+hsHZFs4ug==}
+ '@shikijs/themes@3.1.0':
+ resolution: {integrity: sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==}
- '@shikijs/types@3.0.0':
- resolution: {integrity: sha512-kh/xgZHxI6m9trVvPw+C47jyVHx190r0F5gkF+VO5vYB54UtcoPJe66dzZmK7GbJbzmtGEGbOwct/jsoPjjUqg==}
+ '@shikijs/types@3.1.0':
+ resolution: {integrity: sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3769,123 +3619,120 @@ packages:
'@sqltools/formatter@1.2.5':
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
- '@storybook/addon-actions@8.5.8':
- resolution: {integrity: sha512-7J0NAz+WDw1NmvmKIh0Qr5cxgVRDPFC5fmngbDNxedk147TkwrgmqOypgEi/SAksHbTWxJclbimoqdcsNtWffA==}
+ '@storybook/addon-actions@8.6.3':
+ resolution: {integrity: sha512-0UrVqRoZFRFCqjtR8ODacpJNqi47qDUnsnB5F7e93U9ihSrH2edOBBX6frl11XKYA23rzq7jtnviFTVOpWpG7Q==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-backgrounds@8.5.8':
- resolution: {integrity: sha512-TsQFagQ95+d7H3/+qUZKI2B0SEK8iu6CV13cyry9Dm59nn2bBylFrwx4I3xDQUOWMiSF6QIRjCYzxKQ/jJ5OEg==}
+ '@storybook/addon-backgrounds@8.6.3':
+ resolution: {integrity: sha512-2mmMpMyUsS8rti2guMR4rk4h5YBLNHidxUqTm+U4nITZFfCXNP76To9hfTczpLTvUEpPxSbPG0sCIeHFaw4NRQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-controls@8.5.8':
- resolution: {integrity: sha512-3iifI8mBGPsiPmV9eAYk+tK9i+xuWhVsa+sXz01xTZ/0yoOREpp972hka86mtCqdDTOJIpzh1LmxvB218OssvQ==}
+ '@storybook/addon-controls@8.6.3':
+ resolution: {integrity: sha512-j4Oof3nwjyiO6oNP1bJ98Sz1iZlYhdcgHX284yd0wBO91Q5B2GoCeqyCE+yRCh752ZnnYG1gazJrHmiG6gKxVg==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-docs@8.5.8':
- resolution: {integrity: sha512-zKVUqE0UGiq1gZtY2TX57SYB4RIsdlbTDxKW2JZ9HhZGLvZ5Qb7AvdiKTZxfOepGhuw3UcNXH/zCFkFCTJifMw==}
+ '@storybook/addon-docs@8.6.3':
+ resolution: {integrity: sha512-FRABH+r2huMpAK8iUQiFlYZtYenbqtudX3fNKFK9b38eV1R14kWggVG02lsa6upXbzxWVbMLUdOqaZJHxNbO/A==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-essentials@8.5.8':
- resolution: {integrity: sha512-sCNvMZqL6dywnyHuZBrWl4f6QXsvpJHOioL3wJJKaaRMZmctbFmS0u6J8TQjmgZhQfyRzuJuhr1gJg9oeqp6AA==}
+ '@storybook/addon-essentials@8.6.3':
+ resolution: {integrity: sha512-tH+MwkZ6UwRWyhGdq8izVZAZHGWdeiBY1wpIwdceP1Rl2j9s11Gbddb/JlmiXrC+f/Oiylxghaf7EIksVVqLQQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-highlight@8.5.8':
- resolution: {integrity: sha512-kkldtFrY0oQJY/vfNLkV66hVgtp66OO8T68KoZFsmUz4a3iYgzDS8WF+Av2/9jthktFvMchjFr8NKOno9YBGIg==}
+ '@storybook/addon-highlight@8.6.3':
+ resolution: {integrity: sha512-LYZsgZt5q3EZBkZjUEELh/5+TDnUP0njuQ5g6skyKil6vj9+2RI4/Vjodp+ni5+xct5aDhXavRyUnPRfclX/Cg==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-interactions@8.5.8':
- resolution: {integrity: sha512-SDyIV3M+c41QemXgg1OchsFBO6YGZkZcmVeUF8C7aWm5SnzLh6B2OiggiKvRk0v3Eh3rDLXdkx3XdR2F/rG+0Q==}
+ '@storybook/addon-interactions@8.6.3':
+ resolution: {integrity: sha512-cDvxuMcjoQdtimNrT4BM9AK0qZJhA0Ep/CWPcVK1bAFzqlzBbe//UZa5It/AeC4EMYAr5rFY+LWEli3YPeOnjQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-links@8.5.8':
- resolution: {integrity: sha512-nLfcWhqDCTaEB/zPjzdN+FtsJ3WnvrRE7Uq+UZHF/HDqt7EXicUYCnbzHIF6ReyNBFklr48O/RhotDu9cyUDlw==}
+ '@storybook/addon-links@8.6.3':
+ resolution: {integrity: sha512-3wGiMZxWbgdjEgymUrCVG5PwU0vAYF9EiSHsGxiSxje69l08GLD6s7FTLx0HwvuyiNFcigLcuF45XZnB252RtA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.5.8
+ storybook: ^8.6.3
peerDependenciesMeta:
react:
optional: true
- '@storybook/addon-mdx-gfm@8.5.8':
- resolution: {integrity: sha512-jUq2CsZnSqIHpbMfsV4P+H+UTdvekYAb1paB5xRFEEj53WFKKAnc51VCY3yJ/Jwn/NuicDOXHM/GHLp/+1cr/w==}
+ '@storybook/addon-mdx-gfm@8.6.3':
+ resolution: {integrity: sha512-SNHrYeGLqV1Ym1tDWQpDYU83o0R/cDRsFT4O1kiHTkb/QFZ3XZw1oq2bn02Bvt3LZTJ8KYiT3Iqf1mYWjcDkMQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-measure@8.5.8':
- resolution: {integrity: sha512-xf84ByTRkFPoNSck6Z5OJ0kXTYAYgmg/0Ke0eCY/CNgwh7lfjYQBrcjuKiYZ6jyRUMLdysXzIfF9/2MeFqLfIg==}
+ '@storybook/addon-measure@8.6.3':
+ resolution: {integrity: sha512-FC/3pqM2adSnwyPOd9AxEoZD5XWCMKAk16urQFQ0M4+IzRUdf2OV8cc7aM/oZiBX36+q/UCcUWm2SbQ5nzNJpg==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-outline@8.5.8':
- resolution: {integrity: sha512-NAC9VWZFg2gwvduzJRVAtxPeQfJjB8xfDDgcGjgLOCSQkZDDOmGVdLXf78pykMQKyuu/0YZ989KufAac6kRG5g==}
+ '@storybook/addon-outline@8.6.3':
+ resolution: {integrity: sha512-YklKHRkoDLSWawIIBrEI69RAWEdvhkYCOv+fMLu9zBeVPnkwbtIjXN/I+UJwPCm6jlxeEwEUAvbPWZMMf+BkPQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-storysource@8.5.8':
- resolution: {integrity: sha512-AbtdMbZ/1hpemJZypRilhzifcEvs0xVhV21CgOmYXz87N1cRkJ/bb2t2aclgdPwfOUE/reQ6r2X7HGeOWcWM9w==}
+ '@storybook/addon-storysource@8.6.3':
+ resolution: {integrity: sha512-Pwp3Xy/HIMLhaK4Qf+ZgZSnMWvmpvn7bKbbCjuyMHmGFA81lT4NlF+HaBp2IRio85Nk9zOF2wduuH1xaoBuSfQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-toolbars@8.5.8':
- resolution: {integrity: sha512-AfGdMNBp+vOjyiFKlOyUFLIU0kN1QF4PhVBqd0vYkWAk2w9n6a/ZlG0TcJGe7K5+bcvmZDAerYMKbDMSeg9bAw==}
+ '@storybook/addon-toolbars@8.6.3':
+ resolution: {integrity: sha512-GTC1GPrFNfWvvBaQQnGuL7ZfGK5Q+3ZovwQA9tnPu7QZEwea/4CXvUyQh1u0NwqrFZkrabOad1XvYfpRuCPGSA==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/addon-viewport@8.5.8':
- resolution: {integrity: sha512-SdoRb4bH99Knj2R+rTcMQQxHrtcIO1GLzTFitAefxBE1OUkq8FNLHMHd0Ip/sCQGLW/5F03U70R2uh7SkhBBYA==}
+ '@storybook/addon-viewport@8.6.3':
+ resolution: {integrity: sha512-AixZKiQdBVs7ePj5iV0U1IY2jvH0G7wQJwBRTOq4qC1FKiOsZEYmrwc3wLUBUlVqyenXFKN+H40r4VhPzzSfLw==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/blocks@8.5.8':
- resolution: {integrity: sha512-O6tJDJM83fDm3ZP1+lTf24l7HOTzSRXkkMDD7zB/JHixzlj9p6wI4UQc2lplLadDCa5ya1IwyE7zUDN/0UfC5Q==}
+ '@storybook/blocks@8.6.3':
+ resolution: {integrity: sha512-Ieu6kwqdeAcrLzcX2QIqnCd0XWZi46i4eem8W54JRiOMQMYUpZ7onbciRAP58qxEWrZWqgxPS+tiCTaJe48VVQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- storybook: ^8.5.8
+ storybook: ^8.6.3
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
- '@storybook/builder-vite@8.5.8':
- resolution: {integrity: sha512-nm07wXP4MN7HlWqLRomSFHibwrwiY7V4kTohgsXSjTUod0J+xY+XvmkM4YRK2QYcUgVesG+Q2q3Q5NHof07sfg==}
+ '@storybook/builder-vite@8.6.3':
+ resolution: {integrity: sha512-v/nlBeT7Avn1ld2GHY5dtm1+TKREvtQ+DEcKK5iOWfv2259WqUp0dGnF4fbHcsNCtFurkA/P2uqJ9vc0xOIVUg==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
vite: ^4.0.0 || ^5.0.0 || ^6.0.0
- '@storybook/components@8.5.8':
- resolution: {integrity: sha512-PPEMqWPXn7rX+qISaOOv9CDSuuvG538f0+4M5Ppq2LwpjXecgOG5ktqJF0ZqxmTytT+RpEaJmgjGW0dMAKZswA==}
+ '@storybook/components@8.6.3':
+ resolution: {integrity: sha512-q5DQkV+E/j0KfF818RywgqEHjaZTg71q5YY4z0UO8CRSzDQ/VYF6L76oc69corbkJtYAk/GqaYJllzrWykS4sg==}
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/core-events@8.5.8':
- resolution: {integrity: sha512-yjzDgoErmzzkesA7goiAi4zi4dMSZAS9KVoRwjIyW/w/uzldLJmp+EIg7pHRtZPDsNYGwEiHfsHIz/hwYCgaHA==}
+ '@storybook/core-events@8.6.3':
+ resolution: {integrity: sha512-+UCkypJKcrITCuA84IITcn1RI1gxXGl72e0KszfFYgsSkJpDMvxSU2RwVqJSORBe5GU3XOIR3FaNngbkO3nXMg==}
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/core@8.5.8':
- resolution: {integrity: sha512-OT02DQhkGpBgn5P+nZOZmbzxqubC4liVqbhpjp/HOGi5cOA3+fCJzDJeSDTu+pPh7dZnopC4XnR+5dWjtOJHdA==}
+ '@storybook/core@8.6.3':
+ resolution: {integrity: sha512-0iMTfmo3UFCa1hFJLtThnRIppkIpGPyTL3MElhORP1t5l9lCUq5am0ymbi/TeCbsJPjE86FjeO0NinokL9iQiw==}
peerDependencies:
prettier: ^2 || ^3
peerDependenciesMeta:
prettier:
optional: true
- '@storybook/csf-plugin@8.5.8':
- resolution: {integrity: sha512-9p+TFutbvtPYEmg14UsvqBDWKP/p/+OkIdi+gkwCMw0yiJF/+7ErMHDB0vr5SpJpU7SFQmfpY2c/LaglEtaniw==}
+ '@storybook/csf-plugin@8.6.3':
+ resolution: {integrity: sha512-0QDLBcMOxSEt1yH28cvIsoiaIokIxDDShMnxVJHWk/7+KZ3xe4lZBfKCWZspZoJmrxgz10gLRifj1b3ysIFlyA==}
peerDependencies:
- storybook: ^8.5.8
-
- '@storybook/csf@0.1.12':
- resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==}
+ storybook: ^8.6.3
'@storybook/global@5.0.0':
resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==}
@@ -3897,49 +3744,49 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- '@storybook/instrumenter@8.5.8':
- resolution: {integrity: sha512-+d5bbnwqcSQlj0wkZo6/1b+8rge70EU2wTq14DO22/VSXa9nm3bwPJlEyqBT7laWmC4DJQWHVJwF/790KjT9yg==}
+ '@storybook/instrumenter@8.6.3':
+ resolution: {integrity: sha512-Y5n6JWCWdOqok08Hgklsc98TBoqROhAhBRSzNWuIaLsRhz8EziXQtuEkWqmVbyYOys25iTZiK3S8+QQkOzGrBw==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/manager-api@8.5.8':
- resolution: {integrity: sha512-ik3yikvYxAJMDFg0s3Pm7hZWucAlkFaaO7e2RlfOctaJFdaEi3evR4RS7GdmS38uKBEk31RC7x+nnIJkqEC59A==}
+ '@storybook/manager-api@8.6.3':
+ resolution: {integrity: sha512-7m9MQELc6XpuKIuliqMiQWzl8yVWpUDwTcpr+rTT7l3OfRzw7Y00UFct2tI03YG6EXsxsykw8EmueMQhe0lG5Q==}
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/preview-api@8.5.8':
- resolution: {integrity: sha512-HJoz2o28VVprnU5OG6JO6CHrD3ah6qVPWixbnmyUKd0hOYF5dayK5ptmeLyUpYX56Eb2KoYcuVaeQqAby4RkNw==}
+ '@storybook/preview-api@8.6.3':
+ resolution: {integrity: sha512-y2Ic6eHBQD/AwaCHctKOJ4tOM1r7/mPXfhGh0I+Qf8kZPlDTgQcJ6Z7/Ruma1L+ijXPBWouDaPw51gipcX+t9Q==}
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/react-dom-shim@8.5.8':
- resolution: {integrity: sha512-UT/kGJHPW+HLNCTmI1rV1to+dUZuXKUTaRv2wZ2BUq2/gjIuePyqQZYVQeb0LkZbuH2uviLrPfXpS5d3/RSUJw==}
+ '@storybook/react-dom-shim@8.6.3':
+ resolution: {integrity: sha512-vE3LA2TxbzDF1Fso2IgvUtoHc+8a6laKhuJdx8frP5A8M1KGOBfuEPFCCcE49Q90HUlDgwb/zQl1GNq/QjLgWQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/react-vite@8.5.8':
- resolution: {integrity: sha512-Fa3WjqMsY/52p8IHX52IofbvQpoh88cFA/SQ8Q6RUGCNvUVYG/l025pBYbm+PhAkKDQXTirRul9CwA66gGR9zA==}
+ '@storybook/react-vite@8.6.3':
+ resolution: {integrity: sha512-A/cA0wM/mMfFcJH7dxhWSbVg9aE2zZKNDioyEbiB042CgrLW3zQ6dvQvA5ohFhsPWZ6GVAyc+r3x0JE55aXxWQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@storybook/test': 8.5.8
+ '@storybook/test': 8.6.3
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.5.8
+ storybook: ^8.6.3
vite: ^4.0.0 || ^5.0.0 || ^6.0.0
peerDependenciesMeta:
'@storybook/test':
optional: true
- '@storybook/react@8.5.8':
- resolution: {integrity: sha512-QYgKpInR2FLiJHsRoGKCzNhKTRNjOssbLZVd3B0ZABUee+AjkwE0Pey7x2XaNAcp9PxSjQXEPGu+DlaP4BWw2Q==}
+ '@storybook/react@8.6.3':
+ resolution: {integrity: sha512-B4WYRWU2Y71UWl4CG3+mcB7duNln9finJyDB8Y1o2CYWUxgEo+3Bnp3k7NUr++tYVkZI1H+28UWeX0rpCkvReQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@storybook/test': 8.5.8
+ '@storybook/test': 8.6.3
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.5.8
+ storybook: ^8.6.3
typescript: '>= 4.2.x'
peerDependenciesMeta:
'@storybook/test':
@@ -3947,38 +3794,38 @@ packages:
typescript:
optional: true
- '@storybook/source-loader@8.5.8':
- resolution: {integrity: sha512-qbCGFoUrm15wF5+G1b5Rkrkt7ACN53MO05p3L8pUHT3WX1FQ7KEYmBPERRJB7oZ6wM0nnfkHDEQnovHSwu7RAQ==}
+ '@storybook/source-loader@8.6.3':
+ resolution: {integrity: sha512-I6vDK5mwLLHgBqh0OVn2zAZbZ8Xa3L/+w1tNN4v6HuAjW1DU6rdBtxvjTFjxTDqyvSptxL1AvVsFF62hN7GsuQ==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/test@8.5.8':
- resolution: {integrity: sha512-cpdl9Vk4msRnkINwwSNLklyWXOwAsLAA7JsHMICNPR2GFVc8T+TwZHATcRToCHXhFJTZBMMBYrnqCdD5C2Kr3g==}
+ '@storybook/test@8.6.3':
+ resolution: {integrity: sha512-UimvhV/PmYoXCwIbGpkyqQfMhjdH2GaHJbV6BWr7M7BHA3kUS6zYJAm2V2CC5SYcmyj7FejLB4tgL7FmLXB6hA==}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
- '@storybook/theming@8.5.8':
- resolution: {integrity: sha512-/Rm6BV778sCT+3Ok861VYmw9BlEV5zcCq2zg5TOVuk8HqZw7H7VHtubVsjukEuhveYCs+oF+i2tv/II6jh6jdg==}
+ '@storybook/theming@8.6.3':
+ resolution: {integrity: sha512-sDcWnnko73KOCIc9stQyec9KvTmGOuMswqeKtWh0ha/wsgYB6G2/2j1xOheFmWKPitOsbwgvqtjCP7bRE68uIA==}
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/types@8.5.8':
- resolution: {integrity: sha512-XAXi5w+mG8v8m8FFNPE0uDJb5ms39oU+HDOb6hYOYVOt4ezQkKI3g45T9qlqKfdR9rK22zB9JGUYpDir+O7zeA==}
+ '@storybook/types@8.6.3':
+ resolution: {integrity: sha512-lU2PO4SBhgtDru7TH/18jFNY7I5aFPdmd7BpZk1dkHuOgklOKUU2yC6VtRoRu8cJUmhzuUXET/K/FHOx95c4dw==}
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/vue3-vite@8.5.8':
- resolution: {integrity: sha512-bq7y5is0Yvr8GZEL3fiTDLfZ5PF+X9YUAGlkDxvxMywwvMJt1Rh6PQ9RKGFpK4c/iM7I6f/DxjmP8y/pIQIs5g==}
+ '@storybook/vue3-vite@8.6.3':
+ resolution: {integrity: sha512-7LVIDjujXsML5KqDrj03u96C78aYkk4zw+y/enYMZGtc0mZ0mJEYKEJy8GhraqZGEU21Ni+ckeCttgt31S0UPQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
vite: ^4.0.0 || ^5.0.0 || ^6.0.0
- '@storybook/vue3@8.5.8':
- resolution: {integrity: sha512-CI/WX6AcVJgG+q8kw4bEoa44FXEfunFkZIOaBUubckUi7hMFyleSFikAUWyGFv90bN2QXTCU72FnwclQEGX7NA==}
+ '@storybook/vue3@8.6.3':
+ resolution: {integrity: sha512-QMvAlX20+Yq37vkcR7VP21+f1yj+HoS5j6nvQZnfp36rs08KVnXBTF8KtnbjAqBA1KFdZgSXMtB4fWxvCHGLbA==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.5.8
+ storybook: ^8.6.3
vue: ^3.0.0
'@stylistic/eslint-plugin@2.13.0':
@@ -4101,12 +3948,11 @@ packages:
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
engines: {node: '>=14.16'}
- '@tabler/icons-webfont@https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz':
- resolution: {tarball: https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz}
- version: 3.30.0-mi.1932
+ '@tabler/icons-webfont@3.31.0':
+ resolution: {integrity: sha512-0a3Uhj9nKU5kYz6/MUIGuX7kRbbrnOvVL3LGnbIcW/fmEQMgVRN0lkXdeIVkIL6/JKDzI2zSm3X5I+hLIpzLog==}
- '@tabler/icons@3.30.0':
- resolution: {integrity: sha512-c8OKLM48l00u9TFbh2qhSODMONIzML8ajtCyq95rW8vzkWcBrKRPM61tdkThz2j4kd5u17srPGIjqdeRUZdfdw==}
+ '@tabler/icons@3.31.0':
+ resolution: {integrity: sha512-dblAdeKY3+GA1U+Q9eziZ0ooVlZMHsE8dqP0RkwvRtEsAULoKOYaCUOcJ4oW1DjWegdxk++UAt2SlQVnmeHv+g==}
'@tensorflow/tfjs-backend-cpu@4.22.0':
resolution: {integrity: sha512-1u0FmuLGuRAi8D2c3cocHTASGXOmHc/4OvoVDENJayjYkS119fcTcQf4iHrtLthWyDIPy3JiPhRrZQC9EwnhLw==}
@@ -4361,8 +4207,8 @@ packages:
'@types/node@22.13.4':
resolution: {integrity: sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==}
- '@types/node@22.13.5':
- resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==}
+ '@types/node@22.13.9':
+ resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==}
'@types/nodemailer@6.4.17':
resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==}
@@ -4505,6 +4351,9 @@ packages:
'@types/web-push@3.6.4':
resolution: {integrity: sha512-GnJmSr40H3RAnj0s34FNTcJi1hmWFV5KXugE0mYWnYhgTAHLJ/dJKAwDmvPJYMke0RplY2XE9LnM4hqSqKIjhQ==}
+ '@types/ws@8.18.0':
+ resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==}
+
'@types/ws@8.5.14':
resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==}
@@ -4525,13 +4374,13 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/eslint-plugin@8.24.1':
- resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==}
+ '@typescript-eslint/eslint-plugin@8.26.0':
+ resolution: {integrity: sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/parser@8.24.0':
resolution: {integrity: sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==}
@@ -4540,19 +4389,19 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/parser@8.24.1':
- resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==}
+ '@typescript-eslint/parser@8.26.0':
+ resolution: {integrity: sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/scope-manager@8.24.0':
resolution: {integrity: sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/scope-manager@8.24.1':
- resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==}
+ '@typescript-eslint/scope-manager@8.26.0':
+ resolution: {integrity: sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.24.0':
@@ -4562,19 +4411,19 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/type-utils@8.24.1':
- resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==}
+ '@typescript-eslint/type-utils@8.26.0':
+ resolution: {integrity: sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/types@8.24.0':
resolution: {integrity: sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/types@8.24.1':
- resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==}
+ '@typescript-eslint/types@8.26.0':
+ resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.24.0':
@@ -4583,11 +4432,11 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/typescript-estree@8.24.1':
- resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==}
+ '@typescript-eslint/typescript-estree@8.26.0':
+ resolution: {integrity: sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/utils@8.24.0':
resolution: {integrity: sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==}
@@ -4596,19 +4445,19 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/utils@8.24.1':
- resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==}
+ '@typescript-eslint/utils@8.26.0':
+ resolution: {integrity: sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/visitor-keys@8.24.0':
resolution: {integrity: sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/visitor-keys@8.24.1':
- resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==}
+ '@typescript-eslint/visitor-keys@8.26.0':
+ resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.2.0':
@@ -4621,11 +4470,11 @@ packages:
vite: ^5.0.0 || ^6.0.0
vue: ^3.2.25
- '@vitest/coverage-v8@3.0.6':
- resolution: {integrity: sha512-JRTlR8Bw+4BcmVTICa7tJsxqphAktakiLsAmibVLAWbu1lauFddY/tXeM6sAyl1cgkPuXtpnUgaCPhTdz1Qapg==}
+ '@vitest/coverage-v8@3.0.7':
+ resolution: {integrity: sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ==}
peerDependencies:
- '@vitest/browser': 3.0.6
- vitest: 3.0.6
+ '@vitest/browser': 3.0.7
+ vitest: 3.0.7
peerDependenciesMeta:
'@vitest/browser':
optional: true
@@ -4633,11 +4482,11 @@ packages:
'@vitest/expect@2.0.5':
resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==}
- '@vitest/expect@3.0.6':
- resolution: {integrity: sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==}
+ '@vitest/expect@3.0.7':
+ resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==}
- '@vitest/mocker@3.0.6':
- resolution: {integrity: sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==}
+ '@vitest/mocker@3.0.7':
+ resolution: {integrity: sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==}
peerDependencies:
msw: ^2.4.9
vite: ^5.0.0 || ^6.0.0
@@ -4653,20 +4502,20 @@ packages:
'@vitest/pretty-format@2.1.1':
resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==}
- '@vitest/pretty-format@3.0.6':
- resolution: {integrity: sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==}
+ '@vitest/pretty-format@3.0.7':
+ resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==}
- '@vitest/runner@3.0.6':
- resolution: {integrity: sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==}
+ '@vitest/runner@3.0.7':
+ resolution: {integrity: sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==}
- '@vitest/snapshot@3.0.6':
- resolution: {integrity: sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==}
+ '@vitest/snapshot@3.0.7':
+ resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==}
'@vitest/spy@2.0.5':
resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
- '@vitest/spy@3.0.6':
- resolution: {integrity: sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==}
+ '@vitest/spy@3.0.7':
+ resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==}
'@vitest/utils@2.0.5':
resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
@@ -4674,8 +4523,8 @@ packages:
'@vitest/utils@2.1.1':
resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==}
- '@vitest/utils@3.0.6':
- resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==}
+ '@vitest/utils@3.0.7':
+ resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==}
'@volar/language-core@2.2.0':
resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==}
@@ -4718,8 +4567,8 @@ packages:
typescript:
optional: true
- '@vue/language-core@2.2.4':
- resolution: {integrity: sha512-eGGdw7eWUwdIn9Fy/irJ7uavCGfgemuHQABgJ/hU1UgZFnbTg9VWeXvHQdhY+2SPQZWJqWXvRWIg67t4iWEa+Q==}
+ '@vue/language-core@2.2.8':
+ resolution: {integrity: sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -5443,8 +5292,8 @@ packages:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
- chromatic@11.25.2:
- resolution: {integrity: sha512-/9eQWn6BU1iFsop86t8Au21IksTRxwXAl7if8YHD05L2AbuMjClLWZo5cZojqrJHGKDhTqfrC2X2xE4uSm0iKw==}
+ chromatic@11.27.0:
+ resolution: {integrity: sha512-jQ2ufjS+ePpg+NtcPI9B2eOi+pAzlRd2nhd1LgNMsVCC9Bzf5t8mJtyd8v2AUuJS0LdX0QVBgkOnlNv9xviHzA==}
hasBin: true
peerDependencies:
'@chromatic-com/cypress': ^0.*.* || ^1.0.0
@@ -5675,8 +5524,8 @@ packages:
resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
engines: {node: '>=12.0.0'}
- cropperjs@2.0.0-rc.2:
- resolution: {integrity: sha512-BTuz+UeZphGOEnBCuQiNT4rk1uFfKJaKmTgoH9XU7Q8IMkLdodW7YPWINmXJXwWMt1nXiKze5qKADVbz9xtVFg==}
+ cropperjs@2.0.0:
+ resolution: {integrity: sha512-TO2j0Qre01kPHbow4FuTrbdEB4jTmGRySxW49jyEIqlJZuEBfrvCTT0vC3eRB2WBXudDfKi1Onako6DKWKxeAQ==}
cross-env@7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
@@ -5760,6 +5609,11 @@ packages:
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
+ cypress@14.1.0:
+ resolution: {integrity: sha512-pPPj8Uu9NwjaaiXAEcjYZZmgsq6v9Zs1Nw6a+zRF+ANgYSNhH4S32SjFRsvMcuOHR/8dp4GBJhBPqIPSs+TxaA==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+
dashdash@1.14.1:
resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
engines: {node: '>=0.10'}
@@ -6190,11 +6044,6 @@ packages:
peerDependencies:
esbuild: '>=0.12 <1'
- esbuild@0.24.2:
- resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==}
- engines: {node: '>=18'}
- hasBin: true
-
esbuild@0.25.0:
resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
engines: {node: '>=18'}
@@ -6272,8 +6121,8 @@ packages:
'@typescript-eslint/parser':
optional: true
- eslint-plugin-vue@9.32.0:
- resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==}
+ eslint-plugin-vue@9.33.0:
+ resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -6848,8 +6697,8 @@ packages:
resolution: {integrity: sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw==}
engines: {node: '>=18.0.0'}
- happy-dom@17.1.4:
- resolution: {integrity: sha512-cMxE0HP45kLIgWdI0PFfnitNb95Cv8kG8moqI7CK6kcEcfV7xoYVVvSmJ7EuGfDatSKWtjhG/czVooqEV0L4rA==}
+ happy-dom@17.2.2:
+ resolution: {integrity: sha512-3I1/CrNi780sdOhuhUnFtgTWhloSc3quSZwsylI41jycx8o97M6Y4aQAu0phSexGusT7+59BxATh4L4xiY0HcA==}
engines: {node: '>=18.0.0'}
hard-rejection@2.1.0:
@@ -6915,8 +6764,8 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- hast-util-to-html@9.0.4:
- resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==}
+ hast-util-to-html@9.0.5:
+ resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
@@ -8223,8 +8072,8 @@ packages:
peerDependencies:
msw: ^2.0.0
- msw@2.7.1:
- resolution: {integrity: sha512-TVT65uoWt9LE4lMTLBdClHBQVwvZv5ofac1YyE119nCrNyXf4ktdeVnWH9Fyt94Ifmiedhw6Npp4DSuVRSuRpw==}
+ msw@2.7.3:
+ resolution: {integrity: sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
@@ -8507,8 +8356,8 @@ packages:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
- oniguruma-to-es@3.1.0:
- resolution: {integrity: sha512-BJ3Jy22YlgejHSO7Fvmz1kKazlaPmRSUH+4adTDUS/dKQ4wLxI+gALZ8updbaux7/m7fIlpgOZ5fp/Inq5jUAw==}
+ oniguruma-to-es@3.1.1:
+ resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==}
open@8.4.2:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
@@ -8954,10 +8803,6 @@ packages:
peerDependencies:
postcss: ^8.4.31
- postcss-selector-parser@6.0.16:
- resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==}
- engines: {node: '>=4'}
-
postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
@@ -8985,6 +8830,10 @@ packages:
resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.3:
+ resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ engines: {node: ^10 || ^12 || >=14}
+
postgres-array@2.0.0:
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
engines: {node: '>=4'}
@@ -9029,8 +8878,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier@3.5.2:
- resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==}
+ prettier@3.5.3:
+ resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
engines: {node: '>=14'}
hasBin: true
@@ -9099,8 +8948,8 @@ packages:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
- property-information@6.5.0:
- resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
+ property-information@7.0.0:
+ resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
@@ -9454,8 +9303,8 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
- rollup@4.34.8:
- resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==}
+ rollup@4.34.9:
+ resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -9505,8 +9354,8 @@ packages:
sanitize-html@2.14.0:
resolution: {integrity: sha512-CafX+IUPxZshXqqRaG9ZClSlfPVjSxI0td7n07hk8QO2oO+9JDnlcL8iM8TWeOXOIBFgIOx6zioTzM53AOMn3g==}
- sass@1.85.0:
- resolution: {integrity: sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==}
+ sass@1.85.1:
+ resolution: {integrity: sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -9608,8 +9457,8 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- shiki@3.0.0:
- resolution: {integrity: sha512-x6MMdYN9auPGx7kMFtyKbaj65eCdetfrfkvQZwqisZLnGMnAZsZxOpcWD0ElvLPFWHOSMukVyN9Opm7TxQjnZA==}
+ shiki@3.1.0:
+ resolution: {integrity: sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==}
shimmer@1.2.1:
resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
@@ -9877,8 +9726,8 @@ packages:
react-dom:
optional: true
- storybook@8.5.8:
- resolution: {integrity: sha512-k3QDa7z4a656oO3Mx929KNm+xIdEI2nIDCKatVl1mA6vt+ge+uwoiG+ro182J9LOEppR5XXD2mQQi4u1xNsy6A==}
+ storybook@8.6.3:
+ resolution: {integrity: sha512-Vbmd8/FXp6X0AOMak6arcg3WdkHj+2AYJTNHbCPVHsCEbnREyRZIG+Eq5/Ffmy6byiz+4OAX5HwsHGSMR6Xmow==}
hasBin: true
peerDependencies:
prettier: ^2 || ^3
@@ -10102,8 +9951,8 @@ packages:
thread-stream@3.1.0:
resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
- three@0.173.0:
- resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ three@0.174.0:
+ resolution: {integrity: sha512-p+WG3W6Ov74alh3geCMkGK9NWuT62ee21cV3jEnun201zodVF4tCE5aZa2U122/mkLRmhJJUQmLLW1BH00uQJQ==}
throttle-debounce@5.0.2:
resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==}
@@ -10236,6 +10085,10 @@ packages:
resolution: {integrity: sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==}
hasBin: true
+ tsc-alias@1.8.11:
+ resolution: {integrity: sha512-2DuEQ58A9Rj2NE2c1+/qaGKlshni9MCK95MJzRGhQG0CYLw0bE/ACgbhhTSf/p1svLelwqafOd8stQate2bYbg==}
+ hasBin: true
+
tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
@@ -10402,6 +10255,11 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ typescript@5.8.2:
+ resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
uid2@0.0.4:
resolution: {integrity: sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==}
@@ -10571,16 +10429,16 @@ packages:
vfile@6.0.1:
resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
- vite-node@3.0.6:
- resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==}
+ vite-node@3.0.7:
+ resolution: {integrity: sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
vite-plugin-turbosnap@1.0.3:
resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==}
- vite@6.1.1:
- resolution: {integrity: sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==}
+ vite@6.2.0:
+ resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@@ -10619,22 +10477,22 @@ packages:
yaml:
optional: true
- vitest-fetch-mock@0.4.3:
- resolution: {integrity: sha512-PhuEh+9HCsXFMRPUJilDL7yVDFufoxqk7ze+CNks64UGlfFXaJTn1bLABiNlEc0u25RERXQGj0Tm+M9i6UY9HQ==}
+ vitest-fetch-mock@0.4.5:
+ resolution: {integrity: sha512-nhWdCQIGtaSEUVl96pMm0WggyDGPDv5FUy/Q9Hx3cs2RGmh3Q/uRsLClGbdG3kXBkJ3br5yTUjB2MeW25TwdOA==}
engines: {node: '>=18.0.0'}
peerDependencies:
vitest: '>=2.0.0'
- vitest@3.0.6:
- resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==}
+ vitest@3.0.7:
+ resolution: {integrity: sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/debug': ^4.1.12
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
- '@vitest/browser': 3.0.6
- '@vitest/ui': 3.0.6
+ '@vitest/browser': 3.0.7
+ '@vitest/ui': 3.0.7
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@@ -10695,8 +10553,8 @@ packages:
vue-component-type-helpers@2.0.16:
resolution: {integrity: sha512-qisL/iAfdO++7w+SsfYQJVPj6QKvxp4i1MMxvsNO41z/8zu3KuAw9LkhKUfP/kcOWGDxESp+pQObWppXusejCA==}
- vue-component-type-helpers@2.2.4:
- resolution: {integrity: sha512-F66p0XLbAu92BRz6kakHyAcaUSF7HWpWX/THCqL0TxySSj7z/nok5UUMohfNkkCm1pZtawsdzoJ4p1cjNqCx0Q==}
+ vue-component-type-helpers@2.2.8:
+ resolution: {integrity: sha512-4bjIsC284coDO9om4HPA62M7wfsTvcmZyzdfR0aUlFXqq4tXxM1APyXpNVxPC8QazKw9OhmZNHBVDA6ODaZsrA==}
vue-demi@0.14.7:
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
@@ -10728,8 +10586,8 @@ packages:
vue-template-compiler@2.7.14:
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
- vue-tsc@2.2.4:
- resolution: {integrity: sha512-3EVHlxtpMXcb5bCaK7QDFTbEkMusDfVk0HVRrkv5hEb+Clpu9a96lKUXJAeD/akRlkoA4H8MCHgBDN19S6FnzA==}
+ vue-tsc@2.2.8:
+ resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
@@ -11844,71 +11702,71 @@ snapshots:
'@colors/colors@1.5.0':
optional: true
- '@cropper/element-canvas@2.0.0-rc.2':
+ '@cropper/element-canvas@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-crosshair@2.0.0-rc.2':
+ '@cropper/element-crosshair@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-grid@2.0.0-rc.2':
+ '@cropper/element-grid@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-handle@2.0.0-rc.2':
+ '@cropper/element-handle@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-image@2.0.0-rc.2':
+ '@cropper/element-image@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/element-canvas': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/element-canvas': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-selection@2.0.0-rc.2':
+ '@cropper/element-selection@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/element-canvas': 2.0.0-rc.2
- '@cropper/element-image': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/element-canvas': 2.0.0
+ '@cropper/element-image': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-shade@2.0.0-rc.2':
+ '@cropper/element-shade@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/element-canvas': 2.0.0-rc.2
- '@cropper/element-selection': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/element-canvas': 2.0.0
+ '@cropper/element-selection': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element-viewer@2.0.0-rc.2':
+ '@cropper/element-viewer@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/element-canvas': 2.0.0-rc.2
- '@cropper/element-image': 2.0.0-rc.2
- '@cropper/element-selection': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/element-canvas': 2.0.0
+ '@cropper/element-image': 2.0.0
+ '@cropper/element-selection': 2.0.0
+ '@cropper/utils': 2.0.0
- '@cropper/element@2.0.0-rc.2':
+ '@cropper/element@2.0.0':
dependencies:
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/utils': 2.0.0
- '@cropper/elements@2.0.0-rc.2':
+ '@cropper/elements@2.0.0':
dependencies:
- '@cropper/element': 2.0.0-rc.2
- '@cropper/element-canvas': 2.0.0-rc.2
- '@cropper/element-crosshair': 2.0.0-rc.2
- '@cropper/element-grid': 2.0.0-rc.2
- '@cropper/element-handle': 2.0.0-rc.2
- '@cropper/element-image': 2.0.0-rc.2
- '@cropper/element-selection': 2.0.0-rc.2
- '@cropper/element-shade': 2.0.0-rc.2
- '@cropper/element-viewer': 2.0.0-rc.2
+ '@cropper/element': 2.0.0
+ '@cropper/element-canvas': 2.0.0
+ '@cropper/element-crosshair': 2.0.0
+ '@cropper/element-grid': 2.0.0
+ '@cropper/element-handle': 2.0.0
+ '@cropper/element-image': 2.0.0
+ '@cropper/element-selection': 2.0.0
+ '@cropper/element-shade': 2.0.0
+ '@cropper/element-viewer': 2.0.0
- '@cropper/utils@2.0.0-rc.2': {}
+ '@cropper/utils@2.0.0': {}
'@csstools/color-helpers@5.0.1': {}
@@ -11978,153 +11836,78 @@ snapshots:
tslib: 2.8.1
optional: true
- '@esbuild/aix-ppc64@0.24.2':
- optional: true
-
'@esbuild/aix-ppc64@0.25.0':
optional: true
- '@esbuild/android-arm64@0.24.2':
- optional: true
-
'@esbuild/android-arm64@0.25.0':
optional: true
- '@esbuild/android-arm@0.24.2':
- optional: true
-
'@esbuild/android-arm@0.25.0':
optional: true
- '@esbuild/android-x64@0.24.2':
- optional: true
-
'@esbuild/android-x64@0.25.0':
optional: true
- '@esbuild/darwin-arm64@0.24.2':
- optional: true
-
'@esbuild/darwin-arm64@0.25.0':
optional: true
- '@esbuild/darwin-x64@0.24.2':
- optional: true
-
'@esbuild/darwin-x64@0.25.0':
optional: true
- '@esbuild/freebsd-arm64@0.24.2':
- optional: true
-
'@esbuild/freebsd-arm64@0.25.0':
optional: true
- '@esbuild/freebsd-x64@0.24.2':
- optional: true
-
'@esbuild/freebsd-x64@0.25.0':
optional: true
- '@esbuild/linux-arm64@0.24.2':
- optional: true
-
'@esbuild/linux-arm64@0.25.0':
optional: true
- '@esbuild/linux-arm@0.24.2':
- optional: true
-
'@esbuild/linux-arm@0.25.0':
optional: true
- '@esbuild/linux-ia32@0.24.2':
- optional: true
-
'@esbuild/linux-ia32@0.25.0':
optional: true
- '@esbuild/linux-loong64@0.24.2':
- optional: true
-
'@esbuild/linux-loong64@0.25.0':
optional: true
- '@esbuild/linux-mips64el@0.24.2':
- optional: true
-
'@esbuild/linux-mips64el@0.25.0':
optional: true
- '@esbuild/linux-ppc64@0.24.2':
- optional: true
-
'@esbuild/linux-ppc64@0.25.0':
optional: true
- '@esbuild/linux-riscv64@0.24.2':
- optional: true
-
'@esbuild/linux-riscv64@0.25.0':
optional: true
- '@esbuild/linux-s390x@0.24.2':
- optional: true
-
'@esbuild/linux-s390x@0.25.0':
optional: true
- '@esbuild/linux-x64@0.24.2':
- optional: true
-
'@esbuild/linux-x64@0.25.0':
optional: true
- '@esbuild/netbsd-arm64@0.24.2':
- optional: true
-
'@esbuild/netbsd-arm64@0.25.0':
optional: true
- '@esbuild/netbsd-x64@0.24.2':
- optional: true
-
'@esbuild/netbsd-x64@0.25.0':
optional: true
- '@esbuild/openbsd-arm64@0.24.2':
- optional: true
-
'@esbuild/openbsd-arm64@0.25.0':
optional: true
- '@esbuild/openbsd-x64@0.24.2':
- optional: true
-
'@esbuild/openbsd-x64@0.25.0':
optional: true
- '@esbuild/sunos-x64@0.24.2':
- optional: true
-
'@esbuild/sunos-x64@0.25.0':
optional: true
- '@esbuild/win32-arm64@0.24.2':
- optional: true
-
'@esbuild/win32-arm64@0.25.0':
optional: true
- '@esbuild/win32-ia32@0.24.2':
- optional: true
-
'@esbuild/win32-ia32@0.25.0':
optional: true
- '@esbuild/win32-x64@0.24.2':
- optional: true
-
'@esbuild/win32-x64@0.25.0':
optional: true
@@ -12393,16 +12176,16 @@ snapshots:
'@img/sharp-win32-x64@0.33.5':
optional: true
- '@inquirer/confirm@5.0.2(@types/node@22.13.5)':
+ '@inquirer/confirm@5.0.2(@types/node@22.13.9)':
dependencies:
- '@inquirer/core': 10.1.0(@types/node@22.13.5)
- '@inquirer/type': 3.0.1(@types/node@22.13.5)
- '@types/node': 22.13.5
+ '@inquirer/core': 10.1.0(@types/node@22.13.9)
+ '@inquirer/type': 3.0.1(@types/node@22.13.9)
+ '@types/node': 22.13.9
- '@inquirer/core@10.1.0(@types/node@22.13.5)':
+ '@inquirer/core@10.1.0(@types/node@22.13.9)':
dependencies:
'@inquirer/figures': 1.0.8
- '@inquirer/type': 3.0.1(@types/node@22.13.5)
+ '@inquirer/type': 3.0.1(@types/node@22.13.9)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -12415,9 +12198,9 @@ snapshots:
'@inquirer/figures@1.0.8': {}
- '@inquirer/type@3.0.1(@types/node@22.13.5)':
+ '@inquirer/type@3.0.1(@types/node@22.13.9)':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@ioredis/commands@1.2.0': {}
@@ -12443,7 +12226,7 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -12456,14 +12239,14 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.7.1
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@22.13.5)
+ jest-config: 29.7.0(@types/node@22.13.9)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -12492,7 +12275,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -12510,7 +12293,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -12532,7 +12315,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
chalk: 4.1.2
collect-v8-coverage: 1.0.1
exit: 0.1.2
@@ -12602,18 +12385,18 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/yargs': 17.0.19
chalk: 4.1.2
- '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.7.3)(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
glob: 10.4.5
magic-string: 0.27.0
- react-docgen-typescript: 2.2.2(typescript@5.7.3)
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ react-docgen-typescript: 2.2.2(typescript@5.8.2)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
'@jridgewell/gen-mapping@0.3.5':
dependencies:
@@ -12675,23 +12458,23 @@ snapshots:
'@types/react': 18.0.28
react: 19.0.0
- '@microsoft/api-extractor-model@7.30.3(@types/node@22.13.5)':
+ '@microsoft/api-extractor-model@7.30.3(@types/node@22.13.9)':
dependencies:
'@microsoft/tsdoc': 0.15.1
'@microsoft/tsdoc-config': 0.17.1
- '@rushstack/node-core-library': 5.11.0(@types/node@22.13.5)
+ '@rushstack/node-core-library': 5.11.0(@types/node@22.13.9)
transitivePeerDependencies:
- '@types/node'
- '@microsoft/api-extractor@7.50.1(@types/node@22.13.5)':
+ '@microsoft/api-extractor@7.51.1(@types/node@22.13.9)':
dependencies:
- '@microsoft/api-extractor-model': 7.30.3(@types/node@22.13.5)
+ '@microsoft/api-extractor-model': 7.30.3(@types/node@22.13.9)
'@microsoft/tsdoc': 0.15.1
'@microsoft/tsdoc-config': 0.17.1
- '@rushstack/node-core-library': 5.11.0(@types/node@22.13.5)
+ '@rushstack/node-core-library': 5.11.0(@types/node@22.13.9)
'@rushstack/rig-package': 0.5.3
- '@rushstack/terminal': 0.15.0(@types/node@22.13.5)
- '@rushstack/ts-command-line': 4.23.5(@types/node@22.13.5)
+ '@rushstack/terminal': 0.15.0(@types/node@22.13.9)
+ '@rushstack/ts-command-line': 4.23.5(@types/node@22.13.9)
lodash: 4.17.21
minimatch: 3.0.8
resolve: 1.22.8
@@ -13327,87 +13110,87 @@ snapshots:
'@readme/openapi-schemas@3.1.0': {}
- '@rollup/plugin-json@6.1.0(rollup@4.34.8)':
+ '@rollup/plugin-json@6.1.0(rollup@4.34.9)':
dependencies:
- '@rollup/pluginutils': 5.1.4(rollup@4.34.8)
+ '@rollup/pluginutils': 5.1.4(rollup@4.34.9)
optionalDependencies:
- rollup: 4.34.8
+ rollup: 4.34.9
- '@rollup/plugin-replace@6.0.2(rollup@4.34.8)':
+ '@rollup/plugin-replace@6.0.2(rollup@4.34.9)':
dependencies:
- '@rollup/pluginutils': 5.1.4(rollup@4.34.8)
+ '@rollup/pluginutils': 5.1.4(rollup@4.34.9)
magic-string: 0.30.11
optionalDependencies:
- rollup: 4.34.8
+ rollup: 4.34.9
- '@rollup/pluginutils@5.1.4(rollup@4.34.8)':
+ '@rollup/pluginutils@5.1.4(rollup@4.34.9)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
picomatch: 4.0.2
optionalDependencies:
- rollup: 4.34.8
+ rollup: 4.34.9
- '@rollup/rollup-android-arm-eabi@4.34.8':
+ '@rollup/rollup-android-arm-eabi@4.34.9':
optional: true
- '@rollup/rollup-android-arm64@4.34.8':
+ '@rollup/rollup-android-arm64@4.34.9':
optional: true
- '@rollup/rollup-darwin-arm64@4.34.8':
+ '@rollup/rollup-darwin-arm64@4.34.9':
optional: true
- '@rollup/rollup-darwin-x64@4.34.8':
+ '@rollup/rollup-darwin-x64@4.34.9':
optional: true
- '@rollup/rollup-freebsd-arm64@4.34.8':
+ '@rollup/rollup-freebsd-arm64@4.34.9':
optional: true
- '@rollup/rollup-freebsd-x64@4.34.8':
+ '@rollup/rollup-freebsd-x64@4.34.9':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.34.8':
+ '@rollup/rollup-linux-arm-gnueabihf@4.34.9':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.34.8':
+ '@rollup/rollup-linux-arm-musleabihf@4.34.9':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.34.8':
+ '@rollup/rollup-linux-arm64-gnu@4.34.9':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.34.8':
+ '@rollup/rollup-linux-arm64-musl@4.34.9':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.34.8':
+ '@rollup/rollup-linux-loongarch64-gnu@4.34.9':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.34.9':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.34.8':
+ '@rollup/rollup-linux-riscv64-gnu@4.34.9':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.34.8':
+ '@rollup/rollup-linux-s390x-gnu@4.34.9':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.34.8':
+ '@rollup/rollup-linux-x64-gnu@4.34.9':
optional: true
- '@rollup/rollup-linux-x64-musl@4.34.8':
+ '@rollup/rollup-linux-x64-musl@4.34.9':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.34.8':
+ '@rollup/rollup-win32-arm64-msvc@4.34.9':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.34.8':
+ '@rollup/rollup-win32-ia32-msvc@4.34.9':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.34.8':
+ '@rollup/rollup-win32-x64-msvc@4.34.9':
optional: true
'@rtsao/scc@1.1.0': {}
- '@rushstack/node-core-library@5.11.0(@types/node@22.13.5)':
+ '@rushstack/node-core-library@5.11.0(@types/node@22.13.9)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@@ -13418,23 +13201,23 @@ snapshots:
resolve: 1.22.8
semver: 7.5.4
optionalDependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@rushstack/rig-package@0.5.3':
dependencies:
resolve: 1.22.8
strip-json-comments: 3.1.1
- '@rushstack/terminal@0.15.0(@types/node@22.13.5)':
+ '@rushstack/terminal@0.15.0(@types/node@22.13.9)':
dependencies:
- '@rushstack/node-core-library': 5.11.0(@types/node@22.13.5)
+ '@rushstack/node-core-library': 5.11.0(@types/node@22.13.9)
supports-color: 8.1.1
optionalDependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
- '@rushstack/ts-command-line@4.23.5(@types/node@22.13.5)':
+ '@rushstack/ts-command-line@4.23.5(@types/node@22.13.9)':
dependencies:
- '@rushstack/terminal': 0.15.0(@types/node@22.13.5)
+ '@rushstack/terminal': 0.15.0(@types/node@22.13.9)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.1
@@ -13504,33 +13287,33 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@shikijs/core@3.0.0':
+ '@shikijs/core@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
- hast-util-to-html: 9.0.4
+ hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.0.0':
+ '@shikijs/engine-javascript@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 3.1.0
+ oniguruma-to-es: 3.1.1
- '@shikijs/engine-oniguruma@3.0.0':
+ '@shikijs/engine-oniguruma@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.0.0':
+ '@shikijs/langs@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
- '@shikijs/themes@3.0.0':
+ '@shikijs/themes@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
- '@shikijs/types@3.0.0':
+ '@shikijs/types@3.1.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -13974,146 +13757,144 @@ snapshots:
'@sqltools/formatter@1.2.5': {}
- '@storybook/addon-actions@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-actions@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
'@types/uuid': 9.0.8
dequal: 2.0.3
polished: 4.2.2
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
uuid: 9.0.1
- '@storybook/addon-backgrounds@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-backgrounds@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
memoizerific: 1.11.3
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-controls@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-controls@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
dequal: 2.0.3
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-docs@8.5.8(@types/react@18.0.28)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-docs@8.6.3(@types/react@18.0.28)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@mdx-js/react': 3.0.1(@types/react@18.0.28)(react@19.0.0)
- '@storybook/blocks': 8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/csf-plugin': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/react-dom-shim': 8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/blocks': 8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/csf-plugin': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/react-dom-shim': 8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
transitivePeerDependencies:
- '@types/react'
- '@storybook/addon-essentials@8.5.8(@types/react@18.0.28)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-essentials@8.6.3(@types/react@18.0.28)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/addon-actions': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-backgrounds': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-controls': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-docs': 8.5.8(@types/react@18.0.28)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-highlight': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-measure': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-outline': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-toolbars': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/addon-viewport': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ '@storybook/addon-actions': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-backgrounds': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-controls': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-docs': 8.6.3(@types/react@18.0.28)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-highlight': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-measure': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-outline': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-toolbars': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/addon-viewport': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
transitivePeerDependencies:
- '@types/react'
- '@storybook/addon-highlight@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-highlight@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/addon-interactions@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-interactions@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/test': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/instrumenter': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/test': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
polished: 4.2.2
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-links@8.5.8(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-links@8.6.3(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/csf': 0.1.12
'@storybook/global': 5.0.0
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
optionalDependencies:
react: 19.0.0
- '@storybook/addon-mdx-gfm@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-mdx-gfm@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
remark-gfm: 4.0.0
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
- '@storybook/addon-measure@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-measure@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
tiny-invariant: 1.3.3
- '@storybook/addon-outline@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-outline@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-storysource@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-storysource@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/source-loader': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/source-loader': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
estraverse: 5.3.0
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
tiny-invariant: 1.3.3
- '@storybook/addon-toolbars@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-toolbars@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/addon-viewport@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/addon-viewport@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
memoizerific: 1.11.3
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/blocks@8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/blocks@8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/csf': 0.1.12
'@storybook/icons': 1.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
optionalDependencies:
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- '@storybook/builder-vite@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))':
+ '@storybook/builder-vite@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
- '@storybook/csf-plugin': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/csf-plugin': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
browser-assert: 1.2.1
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
- '@storybook/components@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/components@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/core-events@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/core-events@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/core@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)':
+ '@storybook/core@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5)':
dependencies:
- '@storybook/csf': 0.1.12
+ '@storybook/theming': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
better-opn: 3.0.2
browser-assert: 1.2.1
esbuild: 0.25.0
@@ -14125,21 +13906,18 @@ snapshots:
util: 0.12.5
ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
optionalDependencies:
- prettier: 3.5.2
+ prettier: 3.5.3
transitivePeerDependencies:
- bufferutil
+ - storybook
- supports-color
- utf-8-validate
- '@storybook/csf-plugin@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/csf-plugin@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
unplugin: 1.4.0
- '@storybook/csf@0.1.12':
- dependencies:
- type-fest: 2.19.0
-
'@storybook/global@5.0.0': {}
'@storybook/icons@1.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
@@ -14147,122 +13925,120 @@ snapshots:
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- '@storybook/instrumenter@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/instrumenter@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
'@vitest/utils': 2.1.1
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/manager-api@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/manager-api@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/preview-api@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/preview-api@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/react-dom-shim@8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/react-dom-shim@8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/react-vite@8.5.8(@storybook/test@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.34.8)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(typescript@5.7.3)(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))':
+ '@storybook/react-vite@8.6.3(@storybook/test@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.34.9)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.3)(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
- '@rollup/pluginutils': 5.1.4(rollup@4.34.8)
- '@storybook/builder-vite': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
- '@storybook/react': 8.5.8(@storybook/test@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(typescript@5.7.3)
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
+ '@rollup/pluginutils': 5.1.4(rollup@4.34.9)
+ '@storybook/builder-vite': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
+ '@storybook/react': 8.6.3(@storybook/test@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)
find-up: 5.0.0
magic-string: 0.30.17
react: 19.0.0
react-docgen: 7.0.1
react-dom: 19.0.0(react@19.0.0)
resolve: 1.22.8
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
tsconfig-paths: 4.2.0
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
optionalDependencies:
- '@storybook/test': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/test': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
transitivePeerDependencies:
- rollup
- supports-color
- typescript
- '@storybook/react@8.5.8(@storybook/test@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(typescript@5.7.3)':
+ '@storybook/react@8.6.3(@storybook/test@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)':
dependencies:
- '@storybook/components': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/components': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/preview-api': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/react-dom-shim': 8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/theming': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/manager-api': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/preview-api': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/react-dom-shim': 8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/theming': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
optionalDependencies:
- '@storybook/test': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- typescript: 5.7.3
+ '@storybook/test': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ typescript: 5.8.2
- '@storybook/source-loader@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/source-loader@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/csf': 0.1.12
es-toolkit: 1.27.0
estraverse: 5.3.0
- prettier: 3.5.2
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ prettier: 3.5.3
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/test@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/test@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/csf': 0.1.12
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/instrumenter': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@testing-library/dom': 10.4.0
'@testing-library/jest-dom': 6.5.0
'@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
'@vitest/expect': 2.0.5
'@vitest/spy': 2.0.5
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/theming@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/theming@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/types@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))':
+ '@storybook/types@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/vue3-vite@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.7.3))':
+ '@storybook/vue3-vite@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@storybook/builder-vite': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
- '@storybook/vue3': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.3))
+ '@storybook/builder-vite': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
+ '@storybook/vue3': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.2))
find-package-json: 1.2.0
magic-string: 0.30.17
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
- typescript: 5.7.3
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
- vue-component-meta: 2.0.16(typescript@5.7.3)
- vue-docgen-api: 4.75.1(vue@3.5.13(typescript@5.7.3))
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
+ typescript: 5.8.2
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
+ vue-component-meta: 2.0.16(typescript@5.8.2)
+ vue-docgen-api: 4.75.1(vue@3.5.13(typescript@5.8.2))
transitivePeerDependencies:
- vue
- '@storybook/vue3@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.3))':
+ '@storybook/vue3@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@storybook/components': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/components': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/preview-api': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/theming': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/manager-api': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/preview-api': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/theming': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@vue/compiler-core': 3.5.13
- storybook: 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ storybook: 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
type-fest: 2.19.0
- vue: 3.5.13(typescript@5.7.3)
- vue-component-type-helpers: 2.2.4
+ vue: 3.5.13(typescript@5.8.2)
+ vue-component-type-helpers: 2.2.8
'@stylistic/eslint-plugin@2.13.0(eslint@9.20.1)(typescript@5.7.3)':
dependencies:
- '@typescript-eslint/utils': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ '@typescript-eslint/utils': 8.26.0(eslint@9.20.1)(typescript@5.7.3)
eslint: 9.20.1
eslint-visitor-keys: 4.2.0
espree: 10.3.0
@@ -14369,11 +14145,11 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@tabler/icons-webfont@https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz':
+ '@tabler/icons-webfont@3.31.0':
dependencies:
- '@tabler/icons': 3.30.0
+ '@tabler/icons': 3.31.0
- '@tabler/icons@3.30.0': {}
+ '@tabler/icons@3.31.0': {}
'@tensorflow/tfjs-backend-cpu@4.22.0(@tensorflow/tfjs-core@4.22.0(encoding@0.1.13))':
dependencies:
@@ -14488,12 +14264,12 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.0
- '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))':
+ '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))':
dependencies:
'@babel/runtime': 7.23.4
'@testing-library/dom': 9.3.4
- '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
- vue: 3.5.13(typescript@5.7.3)
+ '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
+ vue: 3.5.13(typescript@5.8.2)
optionalDependencies:
'@vue/compiler-sfc': 3.5.13
transitivePeerDependencies:
@@ -14513,7 +14289,7 @@ snapshots:
'@types/accepts@1.3.7':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/archiver@6.0.3':
dependencies:
@@ -14549,7 +14325,7 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.35
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/braces@3.0.1': {}
@@ -14563,11 +14339,11 @@ snapshots:
'@types/connect@3.4.35':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/connect@3.4.36':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/content-disposition@0.5.8': {}
@@ -14592,7 +14368,7 @@ snapshots:
'@types/express-serve-static-core@4.17.33':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
@@ -14605,11 +14381,11 @@ snapshots:
'@types/fluent-ffmpeg@2.1.27':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/graceful-fs@4.1.6':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/hammerjs@2.0.46': {}
@@ -14623,7 +14399,7 @@ snapshots:
'@types/http-link-header@1.0.7':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/istanbul-lib-coverage@2.0.4': {}
@@ -14644,7 +14420,7 @@ snapshots:
'@types/jsdom@21.1.7':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/tough-cookie': 4.0.2
parse5: 7.2.1
@@ -14680,24 +14456,24 @@ snapshots:
'@types/mysql@2.15.26':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/node-fetch@2.6.11':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
form-data: 4.0.2
'@types/node@22.13.4':
dependencies:
undici-types: 6.20.0
- '@types/node@22.13.5':
+ '@types/node@22.13.9':
dependencies:
undici-types: 6.20.0
'@types/nodemailer@6.4.17':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/normalize-package-data@2.4.1': {}
@@ -14708,11 +14484,11 @@ snapshots:
'@types/oauth2orize@1.11.5':
dependencies:
'@types/express': 4.17.17
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/oauth@0.9.6':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/offscreencanvas@2019.3.0': {}
@@ -14724,13 +14500,13 @@ snapshots:
'@types/pg@8.11.11':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
pg-protocol: 1.7.0
pg-types: 4.0.1
'@types/pg@8.6.1':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
pg-protocol: 1.7.0
pg-types: 2.2.0
@@ -14742,7 +14518,7 @@ snapshots:
'@types/qrcode@1.5.5':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/qs@6.9.7': {}
@@ -14760,7 +14536,7 @@ snapshots:
'@types/readdir-glob@1.1.1':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/rename@1.0.7': {}
@@ -14781,7 +14557,7 @@ snapshots:
'@types/serve-static@1.15.1':
dependencies:
'@types/mime': 3.0.1
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/serviceworker@0.0.74': {}
@@ -14805,7 +14581,7 @@ snapshots:
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/throttle-debounce@5.0.2': {}
@@ -14823,15 +14599,19 @@ snapshots:
'@types/vary@1.1.3':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/web-push@3.6.4':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
+
+ '@types/ws@8.18.0':
+ dependencies:
+ '@types/node': 22.13.9
'@types/ws@8.5.14':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
'@types/yargs-parser@21.0.0': {}
@@ -14841,7 +14621,7 @@ snapshots:
'@types/yauzl@2.10.0':
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
optional: true
'@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)':
@@ -14861,20 +14641,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)':
+ '@typescript-eslint/eslint-plugin@8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1)(typescript@5.8.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
- '@typescript-eslint/scope-manager': 8.24.1
- '@typescript-eslint/type-utils': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
- '@typescript-eslint/utils': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
- '@typescript-eslint/visitor-keys': 8.24.1
+ '@typescript-eslint/parser': 8.26.0(eslint@9.20.1)(typescript@5.8.2)
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/type-utils': 8.26.0(eslint@9.20.1)(typescript@5.8.2)
+ '@typescript-eslint/utils': 8.26.0(eslint@9.20.1)(typescript@5.8.2)
+ '@typescript-eslint/visitor-keys': 8.26.0
eslint: 9.20.1
graphemer: 1.4.0
ignore: 5.3.1
natural-compare: 1.4.0
- ts-api-utils: 2.0.1(typescript@5.7.3)
- typescript: 5.7.3
+ ts-api-utils: 2.0.1(typescript@5.8.2)
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
@@ -14890,15 +14670,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3)':
+ '@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/scope-manager': 8.24.1
- '@typescript-eslint/types': 8.24.1
- '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3)
- '@typescript-eslint/visitor-keys': 8.24.1
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2)
+ '@typescript-eslint/visitor-keys': 8.26.0
debug: 4.4.0(supports-color@8.1.1)
eslint: 9.20.1
- typescript: 5.7.3
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
@@ -14907,10 +14687,10 @@ snapshots:
'@typescript-eslint/types': 8.24.0
'@typescript-eslint/visitor-keys': 8.24.0
- '@typescript-eslint/scope-manager@8.24.1':
+ '@typescript-eslint/scope-manager@8.26.0':
dependencies:
- '@typescript-eslint/types': 8.24.1
- '@typescript-eslint/visitor-keys': 8.24.1
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/visitor-keys': 8.26.0
'@typescript-eslint/type-utils@8.24.0(eslint@9.20.1)(typescript@5.7.3)':
dependencies:
@@ -14923,20 +14703,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.24.1(eslint@9.20.1)(typescript@5.7.3)':
+ '@typescript-eslint/type-utils@8.26.0(eslint@9.20.1)(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3)
- '@typescript-eslint/utils': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2)
+ '@typescript-eslint/utils': 8.26.0(eslint@9.20.1)(typescript@5.8.2)
debug: 4.4.0(supports-color@8.1.1)
eslint: 9.20.1
- ts-api-utils: 2.0.1(typescript@5.7.3)
- typescript: 5.7.3
+ ts-api-utils: 2.0.1(typescript@5.8.2)
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
'@typescript-eslint/types@8.24.0': {}
- '@typescript-eslint/types@8.24.1': {}
+ '@typescript-eslint/types@8.26.0': {}
'@typescript-eslint/typescript-estree@8.24.0(typescript@5.7.3)':
dependencies:
@@ -14952,10 +14732,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)':
+ '@typescript-eslint/typescript-estree@8.26.0(typescript@5.7.3)':
dependencies:
- '@typescript-eslint/types': 8.24.1
- '@typescript-eslint/visitor-keys': 8.24.1
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/visitor-keys': 8.26.0
debug: 4.4.0(supports-color@8.1.1)
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -14966,6 +14746,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/typescript-estree@8.26.0(typescript@5.8.2)':
+ dependencies:
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/visitor-keys': 8.26.0
+ debug: 4.4.0(supports-color@8.1.1)
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.4
+ semver: 7.6.3
+ ts-api-utils: 2.0.1(typescript@5.8.2)
+ typescript: 5.8.2
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/utils@8.24.0(eslint@9.20.1)(typescript@5.7.3)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.20.1)
@@ -14977,35 +14771,46 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.24.1(eslint@9.20.1)(typescript@5.7.3)':
+ '@typescript-eslint/utils@8.26.0(eslint@9.20.1)(typescript@5.7.3)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.20.1)
- '@typescript-eslint/scope-manager': 8.24.1
- '@typescript-eslint/types': 8.24.1
- '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3)
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.7.3)
eslint: 9.20.1
typescript: 5.7.3
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/utils@8.26.0(eslint@9.20.1)(typescript@5.8.2)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.20.1)
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2)
+ eslint: 9.20.1
+ typescript: 5.8.2
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/visitor-keys@8.24.0':
dependencies:
'@typescript-eslint/types': 8.24.0
eslint-visitor-keys: 4.2.0
- '@typescript-eslint/visitor-keys@8.24.1':
+ '@typescript-eslint/visitor-keys@8.26.0':
dependencies:
- '@typescript-eslint/types': 8.24.1
+ '@typescript-eslint/types': 8.26.0
eslint-visitor-keys: 4.2.0
'@ungap/structured-clone@1.2.0': {}
- '@vitejs/plugin-vue@5.2.1(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.7.3))':
+ '@vitejs/plugin-vue@5.2.1(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))':
dependencies:
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
- vue: 3.5.13(typescript@5.7.3)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
+ vue: 3.5.13(typescript@5.8.2)
- '@vitest/coverage-v8@3.0.6(vitest@3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))':
+ '@vitest/coverage-v8@3.0.7(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 1.0.2
@@ -15019,7 +14824,7 @@ snapshots:
std-env: 3.8.0
test-exclude: 7.0.1
tinyrainbow: 2.0.0
- vitest: 3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ vitest: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
transitivePeerDependencies:
- supports-color
@@ -15030,21 +14835,21 @@ snapshots:
chai: 5.2.0
tinyrainbow: 1.2.0
- '@vitest/expect@3.0.6':
+ '@vitest/expect@3.0.7':
dependencies:
- '@vitest/spy': 3.0.6
- '@vitest/utils': 3.0.6
+ '@vitest/spy': 3.0.7
+ '@vitest/utils': 3.0.7
chai: 5.2.0
tinyrainbow: 2.0.0
- '@vitest/mocker@3.0.6(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))':
+ '@vitest/mocker@3.0.7(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
- '@vitest/spy': 3.0.6
+ '@vitest/spy': 3.0.7
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- msw: 2.7.1(@types/node@22.13.5)(typescript@5.7.3)
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ msw: 2.7.3(@types/node@22.13.9)(typescript@5.8.2)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
'@vitest/pretty-format@2.0.5':
dependencies:
@@ -15054,18 +14859,18 @@ snapshots:
dependencies:
tinyrainbow: 1.2.0
- '@vitest/pretty-format@3.0.6':
+ '@vitest/pretty-format@3.0.7':
dependencies:
tinyrainbow: 2.0.0
- '@vitest/runner@3.0.6':
+ '@vitest/runner@3.0.7':
dependencies:
- '@vitest/utils': 3.0.6
+ '@vitest/utils': 3.0.7
pathe: 2.0.3
- '@vitest/snapshot@3.0.6':
+ '@vitest/snapshot@3.0.7':
dependencies:
- '@vitest/pretty-format': 3.0.6
+ '@vitest/pretty-format': 3.0.7
magic-string: 0.30.17
pathe: 2.0.3
@@ -15073,7 +14878,7 @@ snapshots:
dependencies:
tinyspy: 3.0.2
- '@vitest/spy@3.0.6':
+ '@vitest/spy@3.0.7':
dependencies:
tinyspy: 3.0.2
@@ -15090,9 +14895,9 @@ snapshots:
loupe: 3.1.3
tinyrainbow: 1.2.0
- '@vitest/utils@3.0.6':
+ '@vitest/utils@3.0.7':
dependencies:
- '@vitest/pretty-format': 3.0.6
+ '@vitest/pretty-format': 3.0.7
loupe: 3.1.3
tinyrainbow: 2.0.0
@@ -15156,7 +14961,7 @@ snapshots:
de-indent: 1.0.2
he: 1.2.0
- '@vue/language-core@2.0.16(typescript@5.7.3)':
+ '@vue/language-core@2.0.16(typescript@5.8.2)':
dependencies:
'@volar/language-core': 2.2.0
'@vue/compiler-dom': 3.5.13
@@ -15166,9 +14971,9 @@ snapshots:
path-browserify: 1.0.1
vue-template-compiler: 2.7.14
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
- '@vue/language-core@2.2.4(typescript@5.7.3)':
+ '@vue/language-core@2.2.8(typescript@5.8.2)':
dependencies:
'@volar/language-core': 2.4.11
'@vue/compiler-dom': 3.5.13
@@ -15179,7 +14984,7 @@ snapshots:
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
'@vue/reactivity@3.5.13':
dependencies:
@@ -15197,21 +15002,21 @@ snapshots:
'@vue/shared': 3.5.13
csstype: 3.1.3
- '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3))':
+ '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2))':
dependencies:
'@vue/compiler-ssr': 3.5.13
'@vue/shared': 3.5.13
- vue: 3.5.13(typescript@5.7.3)
+ vue: 3.5.13(typescript@5.8.2)
'@vue/shared@3.5.13': {}
- '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))':
+ '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))':
dependencies:
js-beautify: 1.14.9
- vue: 3.5.13(typescript@5.7.3)
+ vue: 3.5.13(typescript@5.8.2)
vue-component-type-helpers: 1.8.4
optionalDependencies:
- '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3))
+ '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.2))
'@webgpu/types@0.1.38': {}
@@ -16061,7 +15866,7 @@ snapshots:
chownr@2.0.0: {}
- chromatic@11.25.2: {}
+ chromatic@11.27.0: {}
ci-info@3.7.1: {}
@@ -16263,13 +16068,13 @@ snapshots:
- supports-color
- ts-node
- create-jest@29.7.0(@types/node@22.13.5):
+ create-jest@29.7.0(@types/node@22.13.9):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.13.5)
+ jest-config: 29.7.0(@types/node@22.13.9)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -16282,10 +16087,10 @@ snapshots:
dependencies:
luxon: 3.3.0
- cropperjs@2.0.0-rc.2:
+ cropperjs@2.0.0:
dependencies:
- '@cropper/elements': 2.0.0-rc.2
- '@cropper/utils': 2.0.0-rc.2
+ '@cropper/elements': 2.0.0
+ '@cropper/utils': 2.0.0
cross-env@7.0.3:
dependencies:
@@ -16444,6 +16249,52 @@ snapshots:
untildify: 4.0.0
yauzl: 2.10.0
+ cypress@14.1.0:
+ dependencies:
+ '@cypress/request': 3.0.7
+ '@cypress/xvfb': 1.2.4(supports-color@8.1.1)
+ '@types/sinonjs__fake-timers': 8.1.1
+ '@types/sizzle': 2.3.3
+ arch: 2.2.0
+ blob-util: 2.0.2
+ bluebird: 3.7.2
+ buffer: 5.7.1
+ cachedir: 2.3.0
+ chalk: 4.1.2
+ check-more-types: 2.24.0
+ ci-info: 4.1.0
+ cli-cursor: 3.1.0
+ cli-table3: 0.6.3
+ commander: 6.2.1
+ common-tags: 1.8.2
+ dayjs: 1.11.10
+ debug: 4.4.0(supports-color@8.1.1)
+ enquirer: 2.3.6
+ eventemitter2: 6.4.7
+ execa: 4.1.0
+ executable: 4.1.1
+ extract-zip: 2.0.1(supports-color@8.1.1)
+ figures: 3.2.0
+ fs-extra: 9.1.0
+ getos: 3.2.1
+ is-installed-globally: 0.4.0
+ lazy-ass: 1.6.0
+ listr2: 3.14.0(enquirer@2.3.6)
+ lodash: 4.17.21
+ log-symbols: 4.1.0
+ minimist: 1.2.8
+ ospath: 1.2.2
+ pretty-bytes: 5.6.0
+ process: 0.11.10
+ proxy-from-env: 1.0.0
+ request-progress: 3.0.0
+ semver: 7.6.3
+ supports-color: 8.1.1
+ tmp: 0.2.3
+ tree-kill: 1.2.2
+ untildify: 4.0.0
+ yauzl: 2.10.0
+
dashdash@1.14.1:
dependencies:
assert-plus: 1.0.0
@@ -16883,7 +16734,7 @@ snapshots:
es-get-iterator@1.1.3:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
get-intrinsic: 1.2.4
has-symbols: 1.0.3
is-arguments: 1.1.1
@@ -16943,34 +16794,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- esbuild@0.24.2:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.24.2
- '@esbuild/android-arm': 0.24.2
- '@esbuild/android-arm64': 0.24.2
- '@esbuild/android-x64': 0.24.2
- '@esbuild/darwin-arm64': 0.24.2
- '@esbuild/darwin-x64': 0.24.2
- '@esbuild/freebsd-arm64': 0.24.2
- '@esbuild/freebsd-x64': 0.24.2
- '@esbuild/linux-arm': 0.24.2
- '@esbuild/linux-arm64': 0.24.2
- '@esbuild/linux-ia32': 0.24.2
- '@esbuild/linux-loong64': 0.24.2
- '@esbuild/linux-mips64el': 0.24.2
- '@esbuild/linux-ppc64': 0.24.2
- '@esbuild/linux-riscv64': 0.24.2
- '@esbuild/linux-s390x': 0.24.2
- '@esbuild/linux-x64': 0.24.2
- '@esbuild/netbsd-arm64': 0.24.2
- '@esbuild/netbsd-x64': 0.24.2
- '@esbuild/openbsd-arm64': 0.24.2
- '@esbuild/openbsd-x64': 0.24.2
- '@esbuild/sunos-x64': 0.24.2
- '@esbuild/win32-arm64': 0.24.2
- '@esbuild/win32-ia32': 0.24.2
- '@esbuild/win32-x64': 0.24.2
-
esbuild@0.25.0:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.0
@@ -17046,11 +16869,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.20.1):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.20.1):
dependencies:
debug: 3.2.7(supports-color@8.1.1)
optionalDependencies:
- '@typescript-eslint/parser': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.26.0(eslint@9.20.1)(typescript@5.8.2)
eslint: 9.20.1
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
@@ -17085,7 +16908,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint@9.20.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -17096,7 +16919,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.20.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.20.1)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.0(eslint@9.20.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.20.1)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -17108,20 +16931,20 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.24.1(eslint@9.20.1)(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.26.0(eslint@9.20.1)(typescript@5.8.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-vue@9.32.0(eslint@9.20.1):
+ eslint-plugin-vue@9.33.0(eslint@9.20.1):
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.20.1)
eslint: 9.20.1
globals: 13.24.0
natural-compare: 1.4.0
nth-check: 2.1.1
- postcss-selector-parser: 6.0.16
+ postcss-selector-parser: 6.1.2
semver: 7.6.3
vue-eslint-parser: 9.4.3(eslint@9.20.1)
xml-name-validator: 4.0.0
@@ -17908,7 +17731,7 @@ snapshots:
webidl-conversions: 7.0.0
whatwg-mimetype: 3.0.0
- happy-dom@17.1.4:
+ happy-dom@17.2.2:
dependencies:
webidl-conversions: 7.0.0
whatwg-mimetype: 3.0.0
@@ -17962,7 +17785,7 @@ snapshots:
dependencies:
function-bind: 1.1.2
- hast-util-to-html@9.0.4:
+ hast-util-to-html@9.0.5:
dependencies:
'@types/hast': 3.0.4
'@types/unist': 3.0.2
@@ -17971,7 +17794,7 @@ snapshots:
hast-util-whitespace: 3.0.0
html-void-elements: 3.0.0
mdast-util-to-hast: 13.2.0
- property-information: 6.5.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
stringify-entities: 4.0.4
zwitch: 2.0.4
@@ -18481,7 +18304,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
chalk: 4.1.2
co: 4.6.0
dedent: 1.3.0
@@ -18520,16 +18343,16 @@ snapshots:
- supports-color
- ts-node
- jest-cli@29.7.0(@types/node@22.13.5):
+ jest-cli@29.7.0(@types/node@22.13.9):
dependencies:
'@jest/core': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.13.5)
+ create-jest: 29.7.0(@types/node@22.13.9)
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@22.13.5)
+ jest-config: 29.7.0(@types/node@22.13.9)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -18569,7 +18392,7 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-config@29.7.0(@types/node@22.13.5):
+ jest-config@29.7.0(@types/node@22.13.9):
dependencies:
'@babel/core': 7.23.5
'@jest/test-sequencer': 29.7.0
@@ -18594,7 +18417,7 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -18623,7 +18446,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -18640,7 +18463,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.6
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -18679,7 +18502,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -18714,7 +18537,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -18742,7 +18565,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
chalk: 4.1.2
cjs-module-lexer: 1.2.2
collect-v8-coverage: 1.0.1
@@ -18788,7 +18611,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
chalk: 4.1.2
ci-info: 3.7.1
graceful-fs: 4.2.11
@@ -18807,7 +18630,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -18821,7 +18644,7 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -18838,12 +18661,12 @@ snapshots:
- supports-color
- ts-node
- jest@29.7.0(@types/node@22.13.5):
+ jest@29.7.0(@types/node@22.13.9):
dependencies:
'@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@22.13.5)
+ jest-cli: 29.7.0(@types/node@22.13.9)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -19696,17 +19519,17 @@ snapshots:
optionalDependencies:
msgpackr-extract: 3.0.2
- msw-storybook-addon@2.0.4(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3)):
+ msw-storybook-addon@2.0.4(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2)):
dependencies:
is-node-process: 1.2.0
- msw: 2.7.1(@types/node@22.13.5)(typescript@5.7.3)
+ msw: 2.7.3(@types/node@22.13.9)(typescript@5.8.2)
- msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3):
+ msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 5.0.2(@types/node@22.13.5)
+ '@inquirer/confirm': 5.0.2(@types/node@22.13.9)
'@mswjs/interceptors': 0.37.5
'@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
@@ -19722,7 +19545,7 @@ snapshots:
type-fest: 4.26.1
yargs: 17.7.2
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
transitivePeerDependencies:
- '@types/node'
@@ -19950,7 +19773,7 @@ snapshots:
object-is@1.1.5:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.0
object-keys@1.1.1: {}
@@ -20012,7 +19835,7 @@ snapshots:
dependencies:
mimic-fn: 4.0.0
- oniguruma-to-es@3.1.0:
+ oniguruma-to-es@3.1.1:
dependencies:
emoji-regex-xs: 1.0.0
regex: 6.0.1
@@ -20432,11 +20255,6 @@ snapshots:
postcss: 8.5.2
postcss-value-parser: 4.2.0
- postcss-selector-parser@6.0.16:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
@@ -20466,6 +20284,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.3:
+ dependencies:
+ nanoid: 3.3.8
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postgres-array@2.0.0: {}
postgres-array@3.0.2: {}
@@ -20506,7 +20330,7 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier@3.5.2: {}
+ prettier@3.5.3: {}
pretty-bytes@5.6.0: {}
@@ -20576,7 +20400,7 @@ snapshots:
kleur: 3.0.3
sisteransi: 1.0.5
- property-information@6.5.0: {}
+ property-information@7.0.0: {}
proto-list@1.2.4: {}
@@ -20757,9 +20581,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- react-docgen-typescript@2.2.2(typescript@5.7.3):
+ react-docgen-typescript@2.2.2(typescript@5.8.2):
dependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
react-docgen@7.0.1:
dependencies:
@@ -20988,29 +20812,29 @@ snapshots:
glob: 7.2.3
optional: true
- rollup@4.34.8:
+ rollup@4.34.9:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.34.8
- '@rollup/rollup-android-arm64': 4.34.8
- '@rollup/rollup-darwin-arm64': 4.34.8
- '@rollup/rollup-darwin-x64': 4.34.8
- '@rollup/rollup-freebsd-arm64': 4.34.8
- '@rollup/rollup-freebsd-x64': 4.34.8
- '@rollup/rollup-linux-arm-gnueabihf': 4.34.8
- '@rollup/rollup-linux-arm-musleabihf': 4.34.8
- '@rollup/rollup-linux-arm64-gnu': 4.34.8
- '@rollup/rollup-linux-arm64-musl': 4.34.8
- '@rollup/rollup-linux-loongarch64-gnu': 4.34.8
- '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8
- '@rollup/rollup-linux-riscv64-gnu': 4.34.8
- '@rollup/rollup-linux-s390x-gnu': 4.34.8
- '@rollup/rollup-linux-x64-gnu': 4.34.8
- '@rollup/rollup-linux-x64-musl': 4.34.8
- '@rollup/rollup-win32-arm64-msvc': 4.34.8
- '@rollup/rollup-win32-ia32-msvc': 4.34.8
- '@rollup/rollup-win32-x64-msvc': 4.34.8
+ '@rollup/rollup-android-arm-eabi': 4.34.9
+ '@rollup/rollup-android-arm64': 4.34.9
+ '@rollup/rollup-darwin-arm64': 4.34.9
+ '@rollup/rollup-darwin-x64': 4.34.9
+ '@rollup/rollup-freebsd-arm64': 4.34.9
+ '@rollup/rollup-freebsd-x64': 4.34.9
+ '@rollup/rollup-linux-arm-gnueabihf': 4.34.9
+ '@rollup/rollup-linux-arm-musleabihf': 4.34.9
+ '@rollup/rollup-linux-arm64-gnu': 4.34.9
+ '@rollup/rollup-linux-arm64-musl': 4.34.9
+ '@rollup/rollup-linux-loongarch64-gnu': 4.34.9
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9
+ '@rollup/rollup-linux-riscv64-gnu': 4.34.9
+ '@rollup/rollup-linux-s390x-gnu': 4.34.9
+ '@rollup/rollup-linux-x64-gnu': 4.34.9
+ '@rollup/rollup-linux-x64-musl': 4.34.9
+ '@rollup/rollup-win32-arm64-msvc': 4.34.9
+ '@rollup/rollup-win32-ia32-msvc': 4.34.9
+ '@rollup/rollup-win32-x64-msvc': 4.34.9
fsevents: 2.3.3
rrweb-cssom@0.8.0: {}
@@ -21075,7 +20899,7 @@ snapshots:
parse-srcset: 1.0.2
postcss: 8.5.2
- sass@1.85.0:
+ sass@1.85.1:
dependencies:
chokidar: 3.6.0
immutable: 5.0.3
@@ -21209,14 +21033,14 @@ snapshots:
shebang-regex@3.0.0: {}
- shiki@3.0.0:
+ shiki@3.1.0:
dependencies:
- '@shikijs/core': 3.0.0
- '@shikijs/engine-javascript': 3.0.0
- '@shikijs/engine-oniguruma': 3.0.0
- '@shikijs/langs': 3.0.0
- '@shikijs/themes': 3.0.0
- '@shikijs/types': 3.0.0
+ '@shikijs/core': 3.1.0
+ '@shikijs/engine-javascript': 3.1.0
+ '@shikijs/engine-oniguruma': 3.1.0
+ '@shikijs/langs': 3.1.0
+ '@shikijs/themes': 3.1.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -21472,24 +21296,24 @@ snapshots:
dependencies:
internal-slot: 1.0.5
- storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/components@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/core-events@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/theming@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(@storybook/types@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/components@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/core-events@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/theming@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(@storybook/types@8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
- '@storybook/blocks': 8.5.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/components': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/core-events': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/manager-api': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/preview-api': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/theming': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
- '@storybook/types': 8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5))
+ '@storybook/blocks': 8.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/components': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/core-events': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/manager-api': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/preview-api': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/theming': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
+ '@storybook/types': 8.6.3(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
optionalDependencies:
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5):
+ storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5):
dependencies:
- '@storybook/core': 8.5.8(bufferutil@4.0.9)(prettier@3.5.2)(utf-8-validate@6.0.5)
+ '@storybook/core': 8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(storybook@8.6.3(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5)
optionalDependencies:
- prettier: 3.5.2
+ prettier: 3.5.3
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -21753,7 +21577,7 @@ snapshots:
dependencies:
real-require: 0.2.0
- three@0.173.0: {}
+ three@0.174.0: {}
throttle-debounce@5.0.2: {}
@@ -21839,6 +21663,10 @@ snapshots:
dependencies:
typescript: 5.7.3
+ ts-api-utils@2.0.1(typescript@5.8.2):
+ dependencies:
+ typescript: 5.8.2
+
ts-case-convert@2.1.0: {}
ts-dedent@2.2.0: {}
@@ -21854,6 +21682,15 @@ snapshots:
normalize-path: 3.0.0
plimit-lit: 1.5.0
+ tsc-alias@1.8.11:
+ dependencies:
+ chokidar: 3.6.0
+ commander: 9.5.0
+ globby: 11.1.0
+ mylas: 2.1.13
+ normalize-path: 3.0.0
+ plimit-lit: 1.5.0
+
tsconfig-paths@3.15.0:
dependencies:
'@types/json5': 0.0.29
@@ -22005,6 +21842,8 @@ snapshots:
typescript@5.7.3: {}
+ typescript@5.8.2: {}
+
uid2@0.0.4: {}
uid@2.0.2:
@@ -22143,13 +21982,13 @@ snapshots:
uuid@9.0.1: {}
- v-code-diff@1.13.1(vue@3.5.13(typescript@5.7.3)):
+ v-code-diff@1.13.1(vue@3.5.13(typescript@5.8.2)):
dependencies:
diff: 5.2.0
diff-match-patch: 1.0.5
highlight.js: 11.10.0
- vue: 3.5.13(typescript@5.7.3)
- vue-demi: 0.14.7(vue@3.5.13(typescript@5.7.3))
+ vue: 3.5.13(typescript@5.8.2)
+ vue-demi: 0.14.7(vue@3.5.13(typescript@5.8.2))
v8-to-istanbul@9.2.0:
dependencies:
@@ -22183,13 +22022,13 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
- vite-node@3.0.6(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3):
+ vite-node@3.0.7(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3):
dependencies:
cac: 6.7.14
debug: 4.4.0(supports-color@8.1.1)
es-module-lexer: 1.6.0
pathe: 2.0.3
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -22206,31 +22045,31 @@ snapshots:
vite-plugin-turbosnap@1.0.3: {}
- vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3):
+ vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3):
dependencies:
- esbuild: 0.24.2
- postcss: 8.5.2
- rollup: 4.34.8
+ esbuild: 0.25.0
+ postcss: 8.5.3
+ rollup: 4.34.9
optionalDependencies:
- '@types/node': 22.13.5
+ '@types/node': 22.13.9
fsevents: 2.3.3
- sass: 1.85.0
+ sass: 1.85.1
terser: 5.39.0
tsx: 4.19.3
- vitest-fetch-mock@0.4.3(vitest@3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)):
+ vitest-fetch-mock@0.4.5(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)):
dependencies:
- vitest: 3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ vitest: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
- vitest@3.0.6(@types/debug@4.1.12)(@types/node@22.13.5)(happy-dom@17.1.4)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3):
+ vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.9)(happy-dom@17.2.2)(jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3):
dependencies:
- '@vitest/expect': 3.0.6
- '@vitest/mocker': 3.0.6(msw@2.7.1(@types/node@22.13.5)(typescript@5.7.3))(vite@6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3))
- '@vitest/pretty-format': 3.0.6
- '@vitest/runner': 3.0.6
- '@vitest/snapshot': 3.0.6
- '@vitest/spy': 3.0.6
- '@vitest/utils': 3.0.6
+ '@vitest/expect': 3.0.7
+ '@vitest/mocker': 3.0.7(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(vite@6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3))
+ '@vitest/pretty-format': 3.0.7
+ '@vitest/runner': 3.0.7
+ '@vitest/snapshot': 3.0.7
+ '@vitest/spy': 3.0.7
+ '@vitest/utils': 3.0.7
chai: 5.2.0
debug: 4.4.0(supports-color@8.1.1)
expect-type: 1.1.0
@@ -22241,13 +22080,13 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.1.1(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
- vite-node: 3.0.6(@types/node@22.13.5)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.2.0(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
+ vite-node: 3.0.7(@types/node@22.13.9)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 22.13.5
- happy-dom: 17.1.4
+ '@types/node': 22.13.9
+ happy-dom: 17.2.2
jsdom: 26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- jiti
@@ -22288,26 +22127,26 @@ snapshots:
vscode-uri@3.0.8: {}
- vue-component-meta@2.0.16(typescript@5.7.3):
+ vue-component-meta@2.0.16(typescript@5.8.2):
dependencies:
'@volar/typescript': 2.2.0
- '@vue/language-core': 2.0.16(typescript@5.7.3)
+ '@vue/language-core': 2.0.16(typescript@5.8.2)
path-browserify: 1.0.1
vue-component-type-helpers: 2.0.16
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
vue-component-type-helpers@1.8.4: {}
vue-component-type-helpers@2.0.16: {}
- vue-component-type-helpers@2.2.4: {}
+ vue-component-type-helpers@2.2.8: {}
- vue-demi@0.14.7(vue@3.5.13(typescript@5.7.3)):
+ vue-demi@0.14.7(vue@3.5.13(typescript@5.8.2)):
dependencies:
- vue: 3.5.13(typescript@5.7.3)
+ vue: 3.5.13(typescript@5.8.2)
- vue-docgen-api@4.75.1(vue@3.5.13(typescript@5.7.3)):
+ vue-docgen-api@4.75.1(vue@3.5.13(typescript@5.8.2)):
dependencies:
'@babel/parser': 7.25.6
'@babel/types': 7.25.6
@@ -22319,8 +22158,8 @@ snapshots:
pug: 3.0.3
recast: 0.23.6
ts-map: 1.0.3
- vue: 3.5.13(typescript@5.7.3)
- vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.13(typescript@5.7.3))
+ vue: 3.5.13(typescript@5.8.2)
+ vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.13(typescript@5.8.2))
vue-eslint-parser@9.4.3(eslint@9.20.1):
dependencies:
@@ -22335,35 +22174,35 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.13(typescript@5.7.3)):
+ vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.13(typescript@5.8.2)):
dependencies:
- vue: 3.5.13(typescript@5.7.3)
+ vue: 3.5.13(typescript@5.8.2)
vue-template-compiler@2.7.14:
dependencies:
de-indent: 1.0.2
he: 1.2.0
- vue-tsc@2.2.4(typescript@5.7.3):
+ vue-tsc@2.2.8(typescript@5.8.2):
dependencies:
'@volar/typescript': 2.4.11
- '@vue/language-core': 2.2.4(typescript@5.7.3)
- typescript: 5.7.3
+ '@vue/language-core': 2.2.8(typescript@5.8.2)
+ typescript: 5.8.2
- vue@3.5.13(typescript@5.7.3):
+ vue@3.5.13(typescript@5.8.2):
dependencies:
'@vue/compiler-dom': 3.5.13
'@vue/compiler-sfc': 3.5.13
'@vue/runtime-dom': 3.5.13
- '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3))
+ '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.2))
'@vue/shared': 3.5.13
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
- vuedraggable@4.1.0(vue@3.5.13(typescript@5.7.3)):
+ vuedraggable@4.1.0(vue@3.5.13(typescript@5.8.2)):
dependencies:
sortablejs: 1.14.0
- vue: 3.5.13(typescript@5.7.3)
+ vue: 3.5.13(typescript@5.8.2)
w3c-xmlserializer@5.0.0:
dependencies:
diff --git a/renovate.json5 b/renovate.json5
index 6b869de887..395405972d 100644
--- a/renovate.json5
+++ b/renovate.json5
@@ -8,6 +8,9 @@
'* 0 * * *',
],
prHourlyLimit: 5,
+ labels: [
+ 'dependencies',
+ ],
dependencyDashboardApproval: true,
dependencyDashboardAutoclose: true,
osvVulnerabilityAlerts: true,
diff --git a/scripts/changelog-checker/package-lock.json b/scripts/changelog-checker/package-lock.json
index b7348a7fac..d017475fc8 100644
--- a/scripts/changelog-checker/package-lock.json
+++ b/scripts/changelog-checker/package-lock.json
@@ -9,16 +9,16 @@
"version": "1.0.0",
"devDependencies": {
"@types/mdast": "4.0.4",
- "@types/node": "22.13.5",
- "@vitest/coverage-v8": "3.0.6",
+ "@types/node": "22.13.7",
+ "@vitest/coverage-v8": "3.0.7",
"mdast-util-to-string": "4.0.0",
"remark": "15.0.1",
"remark-parse": "11.0.0",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"unified": "11.0.5",
- "vite": "6.1.1",
- "vite-node": "3.0.6",
- "vitest": "3.0.6"
+ "vite": "6.2.0",
+ "vite-node": "3.0.7",
+ "vitest": "3.0.7"
}
},
"node_modules/@ampproject/remapping": {
@@ -96,9 +96,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
- "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
+ "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
"cpu": [
"ppc64"
],
@@ -113,9 +113,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
- "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
+ "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
"cpu": [
"arm"
],
@@ -130,9 +130,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
- "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
+ "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
"cpu": [
"arm64"
],
@@ -147,9 +147,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
- "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
+ "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
"cpu": [
"x64"
],
@@ -164,9 +164,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
- "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
+ "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
"cpu": [
"arm64"
],
@@ -181,9 +181,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
- "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
+ "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
"cpu": [
"x64"
],
@@ -198,9 +198,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
- "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
+ "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
"cpu": [
"arm64"
],
@@ -215,9 +215,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
- "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
+ "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
"cpu": [
"x64"
],
@@ -232,9 +232,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
- "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
+ "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
"cpu": [
"arm"
],
@@ -249,9 +249,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
- "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
+ "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
"cpu": [
"arm64"
],
@@ -266,9 +266,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
- "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
+ "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
"cpu": [
"ia32"
],
@@ -283,9 +283,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
- "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
+ "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
"cpu": [
"loong64"
],
@@ -300,9 +300,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
- "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
+ "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
"cpu": [
"mips64el"
],
@@ -317,9 +317,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
- "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
+ "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
"cpu": [
"ppc64"
],
@@ -334,9 +334,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
- "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
+ "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
"cpu": [
"riscv64"
],
@@ -351,9 +351,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
- "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
+ "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
"cpu": [
"s390x"
],
@@ -368,9 +368,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
- "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
+ "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
"cpu": [
"x64"
],
@@ -385,9 +385,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
- "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
+ "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
"cpu": [
"arm64"
],
@@ -402,9 +402,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
- "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
+ "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
"cpu": [
"x64"
],
@@ -419,9 +419,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
- "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
+ "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
"cpu": [
"arm64"
],
@@ -436,9 +436,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
- "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
+ "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
"cpu": [
"x64"
],
@@ -453,9 +453,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
- "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
+ "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
"cpu": [
"x64"
],
@@ -470,9 +470,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
- "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
+ "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
"cpu": [
"arm64"
],
@@ -487,9 +487,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
- "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
+ "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
"cpu": [
"ia32"
],
@@ -504,9 +504,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
- "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
+ "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
"cpu": [
"x64"
],
@@ -909,9 +909,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "22.13.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz",
- "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==",
+ "version": "22.13.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.7.tgz",
+ "integrity": "sha512-oU2q+BsQldB9lYxHNp/5aZO+/Bs0Usa74Abo9mAKulz4ahQyXRHK6UVKYIN8KSC8HXwhWSi7b49JnX+txuac0w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -925,9 +925,9 @@
"dev": true
},
"node_modules/@vitest/coverage-v8": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.6.tgz",
- "integrity": "sha512-JRTlR8Bw+4BcmVTICa7tJsxqphAktakiLsAmibVLAWbu1lauFddY/tXeM6sAyl1cgkPuXtpnUgaCPhTdz1Qapg==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.7.tgz",
+ "integrity": "sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -948,8 +948,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "3.0.6",
- "vitest": "3.0.6"
+ "@vitest/browser": "3.0.7",
+ "vitest": "3.0.7"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -958,14 +958,14 @@
}
},
"node_modules/@vitest/expect": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.6.tgz",
- "integrity": "sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.7.tgz",
+ "integrity": "sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.0.6",
- "@vitest/utils": "3.0.6",
+ "@vitest/spy": "3.0.7",
+ "@vitest/utils": "3.0.7",
"chai": "^5.2.0",
"tinyrainbow": "^2.0.0"
},
@@ -974,13 +974,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.6.tgz",
- "integrity": "sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.7.tgz",
+ "integrity": "sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.0.6",
+ "@vitest/spy": "3.0.7",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.17"
},
@@ -1001,9 +1001,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz",
- "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.7.tgz",
+ "integrity": "sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1014,13 +1014,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.6.tgz",
- "integrity": "sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.7.tgz",
+ "integrity": "sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "3.0.6",
+ "@vitest/utils": "3.0.7",
"pathe": "^2.0.3"
},
"funding": {
@@ -1028,13 +1028,13 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.6.tgz",
- "integrity": "sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.7.tgz",
+ "integrity": "sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.6",
+ "@vitest/pretty-format": "3.0.7",
"magic-string": "^0.30.17",
"pathe": "^2.0.3"
},
@@ -1043,9 +1043,9 @@
}
},
"node_modules/@vitest/spy": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz",
- "integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.7.tgz",
+ "integrity": "sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1056,13 +1056,13 @@
}
},
"node_modules/@vitest/utils": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz",
- "integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.7.tgz",
+ "integrity": "sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.6",
+ "@vitest/pretty-format": "3.0.7",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
@@ -1298,9 +1298,9 @@
"license": "MIT"
},
"node_modules/esbuild": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
- "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
+ "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1311,31 +1311,31 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.24.2",
- "@esbuild/android-arm": "0.24.2",
- "@esbuild/android-arm64": "0.24.2",
- "@esbuild/android-x64": "0.24.2",
- "@esbuild/darwin-arm64": "0.24.2",
- "@esbuild/darwin-x64": "0.24.2",
- "@esbuild/freebsd-arm64": "0.24.2",
- "@esbuild/freebsd-x64": "0.24.2",
- "@esbuild/linux-arm": "0.24.2",
- "@esbuild/linux-arm64": "0.24.2",
- "@esbuild/linux-ia32": "0.24.2",
- "@esbuild/linux-loong64": "0.24.2",
- "@esbuild/linux-mips64el": "0.24.2",
- "@esbuild/linux-ppc64": "0.24.2",
- "@esbuild/linux-riscv64": "0.24.2",
- "@esbuild/linux-s390x": "0.24.2",
- "@esbuild/linux-x64": "0.24.2",
- "@esbuild/netbsd-arm64": "0.24.2",
- "@esbuild/netbsd-x64": "0.24.2",
- "@esbuild/openbsd-arm64": "0.24.2",
- "@esbuild/openbsd-x64": "0.24.2",
- "@esbuild/sunos-x64": "0.24.2",
- "@esbuild/win32-arm64": "0.24.2",
- "@esbuild/win32-ia32": "0.24.2",
- "@esbuild/win32-x64": "0.24.2"
+ "@esbuild/aix-ppc64": "0.25.0",
+ "@esbuild/android-arm": "0.25.0",
+ "@esbuild/android-arm64": "0.25.0",
+ "@esbuild/android-x64": "0.25.0",
+ "@esbuild/darwin-arm64": "0.25.0",
+ "@esbuild/darwin-x64": "0.25.0",
+ "@esbuild/freebsd-arm64": "0.25.0",
+ "@esbuild/freebsd-x64": "0.25.0",
+ "@esbuild/linux-arm": "0.25.0",
+ "@esbuild/linux-arm64": "0.25.0",
+ "@esbuild/linux-ia32": "0.25.0",
+ "@esbuild/linux-loong64": "0.25.0",
+ "@esbuild/linux-mips64el": "0.25.0",
+ "@esbuild/linux-ppc64": "0.25.0",
+ "@esbuild/linux-riscv64": "0.25.0",
+ "@esbuild/linux-s390x": "0.25.0",
+ "@esbuild/linux-x64": "0.25.0",
+ "@esbuild/netbsd-arm64": "0.25.0",
+ "@esbuild/netbsd-x64": "0.25.0",
+ "@esbuild/openbsd-arm64": "0.25.0",
+ "@esbuild/openbsd-x64": "0.25.0",
+ "@esbuild/sunos-x64": "0.25.0",
+ "@esbuild/win32-arm64": "0.25.0",
+ "@esbuild/win32-ia32": "0.25.0",
+ "@esbuild/win32-x64": "0.25.0"
}
},
"node_modules/estree-walker": {
@@ -2223,9 +2223,9 @@
"license": "ISC"
},
"node_modules/postcss": {
- "version": "8.5.2",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz",
- "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==",
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
"dev": true,
"funding": [
{
@@ -2599,9 +2599,9 @@
}
},
"node_modules/typescript": {
- "version": "5.7.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
- "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
+ "version": "5.8.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
+ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -2724,14 +2724,14 @@
}
},
"node_modules/vite": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz",
- "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz",
+ "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "esbuild": "^0.24.2",
- "postcss": "^8.5.2",
+ "esbuild": "^0.25.0",
+ "postcss": "^8.5.3",
"rollup": "^4.30.1"
},
"bin": {
@@ -2796,9 +2796,9 @@
}
},
"node_modules/vite-node": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.6.tgz",
- "integrity": "sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.7.tgz",
+ "integrity": "sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2819,19 +2819,19 @@
}
},
"node_modules/vitest": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.6.tgz",
- "integrity": "sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.7.tgz",
+ "integrity": "sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "3.0.6",
- "@vitest/mocker": "3.0.6",
- "@vitest/pretty-format": "^3.0.6",
- "@vitest/runner": "3.0.6",
- "@vitest/snapshot": "3.0.6",
- "@vitest/spy": "3.0.6",
- "@vitest/utils": "3.0.6",
+ "@vitest/expect": "3.0.7",
+ "@vitest/mocker": "3.0.7",
+ "@vitest/pretty-format": "^3.0.7",
+ "@vitest/runner": "3.0.7",
+ "@vitest/snapshot": "3.0.7",
+ "@vitest/spy": "3.0.7",
+ "@vitest/utils": "3.0.7",
"chai": "^5.2.0",
"debug": "^4.4.0",
"expect-type": "^1.1.0",
@@ -2843,7 +2843,7 @@
"tinypool": "^1.0.2",
"tinyrainbow": "^2.0.0",
"vite": "^5.0.0 || ^6.0.0",
- "vite-node": "3.0.6",
+ "vite-node": "3.0.7",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -2859,8 +2859,8 @@
"@edge-runtime/vm": "*",
"@types/debug": "^4.1.12",
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "@vitest/browser": "3.0.6",
- "@vitest/ui": "3.0.6",
+ "@vitest/browser": "3.0.7",
+ "@vitest/ui": "3.0.7",
"happy-dom": "*",
"jsdom": "*"
},
diff --git a/scripts/changelog-checker/package.json b/scripts/changelog-checker/package.json
index b5353e3d01..a98935ae69 100644
--- a/scripts/changelog-checker/package.json
+++ b/scripts/changelog-checker/package.json
@@ -10,15 +10,15 @@
},
"devDependencies": {
"@types/mdast": "4.0.4",
- "@types/node": "22.13.5",
- "@vitest/coverage-v8": "3.0.6",
+ "@types/node": "22.13.7",
+ "@vitest/coverage-v8": "3.0.7",
"mdast-util-to-string": "4.0.0",
"remark": "15.0.1",
"remark-parse": "11.0.0",
- "typescript": "5.7.3",
+ "typescript": "5.8.2",
"unified": "11.0.5",
- "vite": "6.1.1",
- "vite-node": "3.0.6",
- "vitest": "3.0.6"
+ "vite": "6.2.0",
+ "vite-node": "3.0.7",
+ "vitest": "3.0.7"
}
}