feat: チャンネルミュートの実装 (#14105)

* add channel_muting table and entities

* add channel_muting services

* タイムライン取得処理への組み込み

* misskey-jsの型とインターフェース生成

* Channelスキーマにミュート情報を追加

* フロントエンドの実装

* 条件が逆だったのを修正

* 期限切れミュートを掃除する機能を実装

* TLの抽出条件調節

* 名前の変更と変更不要の差分をロールバック

* 修正漏れ

* isChannelRelatedの条件に誤りがあった

* [wip] テスト追加

* テストの追加と検出した不備の修正

* fix test

* fix CHANGELOG.md

* 通常はFTTにしておく

* 実装忘れ対応

* fix merge

* fix merge

* add channel tl test

* fix CHANGELOG.md

* remove unused import

* fix lint

* fix test

* fix favorite -> favorited

* exclude -> include

* fix CHANGELOG.md

* fix CHANGELOG.md

* maintenance

* fix CHANGELOG.md

* fix

* fix ci

* regenerate

* fix

* Revert "fix"

This reverts commit 699d50c6ec798777d8e9667cb5d45a26b06bfc93.

* fixed

---------

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
This commit is contained in:
おさむのひと
2025-11-07 08:39:21 +09:00
committed by GitHub
parent e74ab35de3
commit 729abbef62
53 changed files with 3564 additions and 151 deletions

163
pnpm-lock.yaml generated
View File

@@ -1478,10 +1478,13 @@ importers:
version: 24.9.1
'@typescript-eslint/eslint-plugin':
specifier: 8.46.1
version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)
version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.27.0)(typescript@5.9.3))(eslint@9.27.0)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: 8.46.1
version: 8.46.1(eslint@9.37.0)(typescript@5.9.3)
version: 8.46.1(eslint@9.27.0)(typescript@5.9.3)
eslint:
specifier: 9.27.0
version: 9.27.0
openapi-types:
specifier: 12.1.3
version: 12.1.3
@@ -2274,14 +2277,30 @@ packages:
resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/config-array@0.20.1':
resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/config-array@0.21.0':
resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/config-helpers@0.2.3':
resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/config-helpers@0.4.0':
resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@0.14.0':
resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@0.15.2':
resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@0.16.0':
resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2290,6 +2309,10 @@ packages:
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.27.0':
resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.37.0':
resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2298,6 +2321,10 @@ packages:
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/plugin-kit@0.3.5':
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/plugin-kit@0.4.0':
resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -6420,6 +6447,16 @@ packages:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@9.27.0:
resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
jiti: '*'
peerDependenciesMeta:
jiti:
optional: true
eslint@9.37.0:
resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -12394,6 +12431,11 @@ snapshots:
'@esbuild/win32-x64@0.25.10':
optional: true
'@eslint-community/eslint-utils@4.9.0(eslint@9.27.0)':
dependencies:
eslint: 9.27.0
eslint-visitor-keys: 3.4.3
'@eslint-community/eslint-utils@4.9.0(eslint@9.37.0)':
dependencies:
eslint: 9.37.0
@@ -12403,6 +12445,14 @@ snapshots:
'@eslint/compat@1.1.1': {}
'@eslint/config-array@0.20.1':
dependencies:
'@eslint/object-schema': 2.1.6
debug: 4.4.3(supports-color@10.2.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
'@eslint/config-array@0.21.0':
dependencies:
'@eslint/object-schema': 2.1.6
@@ -12411,10 +12461,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@eslint/config-helpers@0.2.3': {}
'@eslint/config-helpers@0.4.0':
dependencies:
'@eslint/core': 0.16.0
'@eslint/core@0.14.0':
dependencies:
'@types/json-schema': 7.0.15
'@eslint/core@0.15.2':
dependencies:
'@types/json-schema': 7.0.15
'@eslint/core@0.16.0':
dependencies:
'@types/json-schema': 7.0.15
@@ -12433,10 +12493,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@eslint/js@9.27.0': {}
'@eslint/js@9.37.0': {}
'@eslint/object-schema@2.1.6': {}
'@eslint/plugin-kit@0.3.5':
dependencies:
'@eslint/core': 0.15.2
levn: 0.4.1
'@eslint/plugin-kit@0.4.0':
dependencies:
'@eslint/core': 0.16.0
@@ -15251,6 +15318,23 @@ snapshots:
'@types/node': 24.9.1
optional: true
'@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.27.0)(typescript@5.9.3))(eslint@9.27.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 8.46.1(eslint@9.27.0)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.46.1
'@typescript-eslint/type-utils': 8.46.1(eslint@9.27.0)(typescript@5.9.3)
'@typescript-eslint/utils': 8.46.1(eslint@9.27.0)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.46.1
eslint: 9.27.0
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
@@ -15268,6 +15352,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.46.1(eslint@9.27.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.46.1
'@typescript-eslint/types': 8.46.1
'@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.46.1
debug: 4.4.3(supports-color@10.2.0)
eslint: 9.27.0
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.46.1
@@ -15298,6 +15394,18 @@ snapshots:
dependencies:
typescript: 5.9.3
'@typescript-eslint/type-utils@8.46.1(eslint@9.27.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.46.1
'@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
'@typescript-eslint/utils': 8.46.1(eslint@9.27.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@10.2.0)
eslint: 9.27.0
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/type-utils@8.46.1(eslint@9.37.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.46.1
@@ -15328,6 +15436,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.46.1(eslint@9.27.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.27.0)
'@typescript-eslint/scope-manager': 8.46.1
'@typescript-eslint/types': 8.46.1
'@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
eslint: 9.27.0
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0)
@@ -17322,6 +17441,46 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
eslint@9.27.0:
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.27.0)
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.20.1
'@eslint/config-helpers': 0.2.3
'@eslint/core': 0.14.0
'@eslint/eslintrc': 3.3.1
'@eslint/js': 9.27.0
'@eslint/plugin-kit': 0.3.5
'@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8
'@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.3(supports-color@10.2.0)
escape-string-regexp: 4.0.0
eslint-scope: 8.4.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
transitivePeerDependencies:
- supports-color
eslint@9.37.0:
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0)