From ed53b5f9bc1612caa165f50db1058d002364dd0f Mon Sep 17 00:00:00 2001 From: taichan <40626578+taichanNE30@users.noreply.github.com> Date: Sun, 24 Sep 2023 07:54:58 +0900 Subject: [PATCH 01/10] =?UTF-8?q?fix:=20=E3=83=8E=E3=83=BC=E3=83=88?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E3=81=A7=E7=B5=B5=E6=96=87=E5=AD=97=E3=81=8C?= =?UTF-8?q?=E4=BD=BF=E3=82=8F=E3=82=8C=E3=81=A6=E3=81=84=E3=82=8B=E5=90=8D?= =?UTF-8?q?=E5=89=8D=E3=81=8C=E7=B5=B5=E6=96=87=E5=AD=97=E3=81=A7=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=20#11877=20(#1187?= =?UTF-8?q?8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/MkNotification.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue index 99443a6409..7ba102fd97 100644 --- a/packages/frontend/src/components/MkNotification.vue +++ b/packages/frontend/src/components/MkNotification.vue @@ -48,7 +48,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._notification.pollEnded }} - {{ i18n.ts._notification.newNote }}: {{ notification.note.user.name ?? notification.note.user.username }} + {{ i18n.ts._notification.newNote }}: {{ i18n.ts._notification.achievementEarned }} {{ i18n.ts._notification.testNotification }} From 2ad3b1fd74f20698be13a4beb5ee4b818ea0f090 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 10:33:30 +0900 Subject: [PATCH 02/10] improve moderation log --- locales/index.d.ts | 3 +++ packages/backend/src/core/RoleService.ts | 13 +++++++++++++ .../src/server/api/endpoints/admin/roles/delete.ts | 11 ++++------- packages/backend/src/types.ts | 2 +- packages/misskey-js/src/consts.ts | 2 +- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index fd99f10b69..1e5396ad63 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2262,6 +2262,9 @@ export interface Locale { "deleteNote": string; "createGlobalAnnouncement": string; "createUserAnnouncement": string; + "resetPassword": string; + "suspendRemoteInstance": string; + "unsuspendRemoteInstance": string; }; } declare const locales: { diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 39f21ecec4..dea6dc68cd 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -493,6 +493,19 @@ export class RoleService implements OnApplicationShutdown { } } + @bindThis + public async delete(role: MiRole, moderator?: MiUser): Promise { + await this.rolesRepository.delete({ id: role.id }); + this.globalEventService.publishInternalEvent('roleDeleted', role); + + if (moderator) { + this.moderationLogService.log(moderator, 'deleteRole', { + roleId: role.id, + role: role, + }); + } + } + @bindThis public dispose(): void { this.redisForSub.off('message', this.onMessage); diff --git a/packages/backend/src/server/api/endpoints/admin/roles/delete.ts b/packages/backend/src/server/api/endpoints/admin/roles/delete.ts index 6e012f6428..7b989050eb 100644 --- a/packages/backend/src/server/api/endpoints/admin/roles/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/roles/delete.ts @@ -6,9 +6,9 @@ import { Inject, Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; import type { RolesRepository } from '@/models/_.js'; -import { GlobalEventService } from '@/core/GlobalEventService.js'; import { DI } from '@/di-symbols.js'; import { ApiError } from '@/server/api/error.js'; +import { RoleService } from '@/core/RoleService.js'; export const meta = { tags: ['admin', 'role'], @@ -41,17 +41,14 @@ export default class extends Endpoint { // eslint- @Inject(DI.rolesRepository) private rolesRepository: RolesRepository, - private globalEventService: GlobalEventService, + private roleService: RoleService, ) { - super(meta, paramDef, async (ps) => { + super(meta, paramDef, async (ps, me) => { const role = await this.rolesRepository.findOneBy({ id: ps.roleId }); if (role == null) { throw new ApiError(meta.errors.noSuchRole); } - await this.rolesRepository.delete({ - id: ps.roleId, - }); - this.globalEventService.publishInternalEvent('roleDeleted', role); + await this.roleService.delete(role, me); }); } } diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index 0a53e77b79..a58bb9585a 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -85,7 +85,7 @@ export type ModerationLogPayloads = { }; deleteRole: { roleId: string; - roleName: string; + role: any; }; clearQueue: Record; promoteQueue: Record; diff --git a/packages/misskey-js/src/consts.ts b/packages/misskey-js/src/consts.ts index a8962ab3d3..a5c8c2ba00 100644 --- a/packages/misskey-js/src/consts.ts +++ b/packages/misskey-js/src/consts.ts @@ -103,7 +103,7 @@ export type ModerationLogPayloads = { }; deleteRole: { roleId: string; - roleName: string; + role: any; }; clearQueue: Record; promoteQueue: Record; From ed983a5baf581b28b063edfa25e0d80349e9318e Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 10:46:09 +0900 Subject: [PATCH 03/10] improve moderation log --- locales/index.d.ts | 4 + locales/ja-JP.yml | 4 + .../backend/src/core/AnnouncementService.ts | 77 ++++++++++++++++--- .../endpoints/admin/announcements/delete.ts | 5 +- .../endpoints/admin/announcements/update.ts | 7 +- packages/backend/src/types.ts | 22 ++++++ packages/misskey-js/etc/misskey-js.api.md | 26 ++++++- packages/misskey-js/src/consts.ts | 22 ++++++ packages/misskey-js/src/entities.ts | 24 ++++++ 9 files changed, 177 insertions(+), 14 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index 1e5396ad63..c2f50dd54a 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2262,6 +2262,10 @@ export interface Locale { "deleteNote": string; "createGlobalAnnouncement": string; "createUserAnnouncement": string; + "updateGlobalAnnouncement": string; + "updateUserAnnouncement": string; + "deleteGlobalAnnouncement": string; + "deleteUserAnnouncement": string; "resetPassword": string; "suspendRemoteInstance": string; "unsuspendRemoteInstance": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 47bbb0aa55..43a3394264 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -2175,6 +2175,10 @@ _moderationLogTypes: deleteNote: "ノートを削除" createGlobalAnnouncement: "全体のお知らせを作成" createUserAnnouncement: "ユーザーへお知らせを作成" + updateGlobalAnnouncement: "全体のお知らせを更新" + updateUserAnnouncement: "ユーザーのお知らせを更新" + deleteGlobalAnnouncement: "全体のお知らせを削除" + deleteUserAnnouncement: "ユーザーのお知らせを削除" resetPassword: "パスワードをリセット" suspendRemoteInstance: "リモートサーバーを停止" unsuspendRemoteInstance: "リモートサーバーを再開" diff --git a/packages/backend/src/core/AnnouncementService.ts b/packages/backend/src/core/AnnouncementService.ts index 31fcb139ea..2b4877788a 100644 --- a/packages/backend/src/core/AnnouncementService.ts +++ b/packages/backend/src/core/AnnouncementService.ts @@ -60,7 +60,7 @@ export class AnnouncementService { } @bindThis - public async create(values: Partial, moderator: MiUser): Promise<{ raw: MiAnnouncement; packed: Packed<'Announcement'> }> { + public async create(values: Partial, moderator?: MiUser): Promise<{ raw: MiAnnouncement; packed: Packed<'Announcement'> }> { const announcement = await this.announcementsRepository.insert({ id: this.idService.genId(), createdAt: new Date(), @@ -82,20 +82,24 @@ export class AnnouncementService { announcement: packed, }); - this.moderationLogService.log(moderator, 'createUserAnnouncement', { - announcementId: announcement.id, - announcement: announcement, - userId: values.userId, - }); + if (moderator) { + this.moderationLogService.log(moderator, 'createUserAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + userId: values.userId, + }); + } } else { this.globalEventService.publishBroadcastStream('announcementCreated', { announcement: packed, }); - this.moderationLogService.log(moderator, 'createGlobalAnnouncement', { - announcementId: announcement.id, - announcement: announcement, - }); + if (moderator) { + this.moderationLogService.log(moderator, 'createGlobalAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + }); + } } return { @@ -104,6 +108,59 @@ export class AnnouncementService { }; } + @bindThis + public async update(announcement: MiAnnouncement, values: Partial, moderator?: MiUser): Promise { + await this.announcementsRepository.update(announcement.id, { + updatedAt: new Date(), + title: values.title, + text: values.text, + /* eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- 空の文字列の場合、nullを渡すようにするため */ + imageUrl: values.imageUrl || null, + display: values.display, + icon: values.icon, + forExistingUsers: values.forExistingUsers, + needConfirmationToRead: values.needConfirmationToRead, + isActive: values.isActive, + }); + + const after = await this.announcementsRepository.findOneByOrFail({ id: announcement.id }); + + if (moderator) { + if (announcement.userId) { + this.moderationLogService.log(moderator, 'updateUserAnnouncement', { + announcementId: announcement.id, + before: announcement, + after: after, + }); + } else { + this.moderationLogService.log(moderator, 'updateGlobalAnnouncement', { + announcementId: announcement.id, + before: announcement, + after: after, + }); + } + } + } + + @bindThis + public async delete(announcement: MiAnnouncement, moderator?: MiUser): Promise { + await this.announcementsRepository.delete(announcement.id); + + if (moderator) { + if (announcement.userId) { + this.moderationLogService.log(moderator, 'deleteUserAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + }); + } else { + this.moderationLogService.log(moderator, 'deleteGlobalAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + }); + } + } + } + @bindThis public async read(user: MiUser, announcementId: MiAnnouncement['id']): Promise { try { diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts index 80eb6d7a80..80ec281253 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts @@ -7,6 +7,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; import type { AnnouncementsRepository } from '@/models/_.js'; import { DI } from '@/di-symbols.js'; +import { AnnouncementService } from '@/core/AnnouncementService.js'; import { ApiError } from '../../../error.js'; export const meta = { @@ -37,13 +38,15 @@ export default class extends Endpoint { // eslint- constructor( @Inject(DI.announcementsRepository) private announcementsRepository: AnnouncementsRepository, + + private announcementService: AnnouncementService, ) { super(meta, paramDef, async (ps, me) => { const announcement = await this.announcementsRepository.findOneBy({ id: ps.id }); if (announcement == null) throw new ApiError(meta.errors.noSuchAnnouncement); - await this.announcementsRepository.delete(announcement.id); + await this.announcementService.delete(announcement, me); }); } } diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts index 782928048b..d36590c264 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts @@ -7,6 +7,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; import type { AnnouncementsRepository } from '@/models/_.js'; import { DI } from '@/di-symbols.js'; +import { AnnouncementService } from '@/core/AnnouncementService.js'; import { ApiError } from '../../../error.js'; export const meta = { @@ -45,13 +46,15 @@ export default class extends Endpoint { // eslint- constructor( @Inject(DI.announcementsRepository) private announcementsRepository: AnnouncementsRepository, + + private announcementService: AnnouncementService, ) { super(meta, paramDef, async (ps, me) => { const announcement = await this.announcementsRepository.findOneBy({ id: ps.id }); if (announcement == null) throw new ApiError(meta.errors.noSuchAnnouncement); - await this.announcementsRepository.update(announcement.id, { + await this.announcementService.update(announcement, { updatedAt: new Date(), title: ps.title, text: ps.text, @@ -62,7 +65,7 @@ export default class extends Endpoint { // eslint- forExistingUsers: ps.forExistingUsers, needConfirmationToRead: ps.needConfirmationToRead, isActive: ps.isActive, - }); + }, me); }); } } diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index a58bb9585a..b85388d6e4 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -43,6 +43,10 @@ export const moderationLogTypes = [ 'deleteNote', 'createGlobalAnnouncement', 'createUserAnnouncement', + 'updateGlobalAnnouncement', + 'updateUserAnnouncement', + 'deleteGlobalAnnouncement', + 'deleteUserAnnouncement', 'resetPassword', 'suspendRemoteInstance', 'unsuspendRemoteInstance', @@ -107,6 +111,24 @@ export type ModerationLogPayloads = { announcement: any; userId: string; }; + updateGlobalAnnouncement: { + announcementId: string; + before: any; + after: any; + }; + updateUserAnnouncement: { + announcementId: string; + before: any; + after: any; + }; + deleteGlobalAnnouncement: { + announcementId: string; + announcement: any; + }; + deleteUserAnnouncement: { + announcementId: string; + announcement: any; + }; resetPassword: { targetId: string; }; diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index adedea8755..b5d07a394c 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -2556,6 +2556,30 @@ type ModerationLog = { } | { type: 'promoteQueue'; info: ModerationLogPayloads['promoteQueue']; +} | { + type: 'deleteDriveFile'; + info: ModerationLogPayloads['deleteDriveFile']; +} | { + type: 'deleteNote'; + info: ModerationLogPayloads['deleteNote']; +} | { + type: 'createGlobalAnnouncement'; + info: ModerationLogPayloads['createGlobalAnnouncement']; +} | { + type: 'createUserAnnouncement'; + info: ModerationLogPayloads['createUserAnnouncement']; +} | { + type: 'updateGlobalAnnouncement'; + info: ModerationLogPayloads['updateGlobalAnnouncement']; +} | { + type: 'updateUserAnnouncement'; + info: ModerationLogPayloads['updateUserAnnouncement']; +} | { + type: 'deleteGlobalAnnouncement'; + info: ModerationLogPayloads['deleteGlobalAnnouncement']; +} | { + type: 'deleteUserAnnouncement'; + info: ModerationLogPayloads['deleteUserAnnouncement']; } | { type: 'resetPassword'; info: ModerationLogPayloads['resetPassword']; @@ -2568,7 +2592,7 @@ type ModerationLog = { }); // @public (undocumented) -export const moderationLogTypes: readonly ["updateServerSettings", "suspend", "unsuspend", "updateUserNote", "addCustomEmoji", "assignRole", "unassignRole", "updateRole", "deleteRole", "clearQueue", "promoteQueue", "deleteDriveFile", "deleteNote", "createGlobalAnnouncement", "createUserAnnouncement", "resetPassword", "suspendRemoteInstance", "unsuspendRemoteInstance"]; +export const moderationLogTypes: readonly ["updateServerSettings", "suspend", "unsuspend", "updateUserNote", "addCustomEmoji", "assignRole", "unassignRole", "updateRole", "deleteRole", "clearQueue", "promoteQueue", "deleteDriveFile", "deleteNote", "createGlobalAnnouncement", "createUserAnnouncement", "updateGlobalAnnouncement", "updateUserAnnouncement", "deleteGlobalAnnouncement", "deleteUserAnnouncement", "resetPassword", "suspendRemoteInstance", "unsuspendRemoteInstance"]; // @public (undocumented) export const mutedNoteReasons: readonly ["word", "manual", "spam", "other"]; diff --git a/packages/misskey-js/src/consts.ts b/packages/misskey-js/src/consts.ts index a5c8c2ba00..dd4fd2609f 100644 --- a/packages/misskey-js/src/consts.ts +++ b/packages/misskey-js/src/consts.ts @@ -61,6 +61,10 @@ export const moderationLogTypes = [ 'deleteNote', 'createGlobalAnnouncement', 'createUserAnnouncement', + 'updateGlobalAnnouncement', + 'updateUserAnnouncement', + 'deleteGlobalAnnouncement', + 'deleteUserAnnouncement', 'resetPassword', 'suspendRemoteInstance', 'unsuspendRemoteInstance', @@ -125,6 +129,24 @@ export type ModerationLogPayloads = { announcement: any; userId: string; }; + updateGlobalAnnouncement: { + announcementId: string; + before: any; + after: any; + }; + updateUserAnnouncement: { + announcementId: string; + before: any; + after: any; + }; + deleteGlobalAnnouncement: { + announcementId: string; + announcement: any; + }; + deleteUserAnnouncement: { + announcementId: string; + announcement: any; + }; resetPassword: { targetId: string; }; diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index a1fc8befb4..b157eb59f6 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -607,6 +607,30 @@ export type ModerationLog = { } | { type: 'promoteQueue'; info: ModerationLogPayloads['promoteQueue']; +} | { + type: 'deleteDriveFile'; + info: ModerationLogPayloads['deleteDriveFile']; +} | { + type: 'deleteNote'; + info: ModerationLogPayloads['deleteNote']; +} | { + type: 'createGlobalAnnouncement'; + info: ModerationLogPayloads['createGlobalAnnouncement']; +} | { + type: 'createUserAnnouncement'; + info: ModerationLogPayloads['createUserAnnouncement']; +} | { + type: 'updateGlobalAnnouncement'; + info: ModerationLogPayloads['updateGlobalAnnouncement']; +} | { + type: 'updateUserAnnouncement'; + info: ModerationLogPayloads['updateUserAnnouncement']; +} | { + type: 'deleteGlobalAnnouncement'; + info: ModerationLogPayloads['deleteGlobalAnnouncement']; +} | { + type: 'deleteUserAnnouncement'; + info: ModerationLogPayloads['deleteUserAnnouncement']; } | { type: 'resetPassword'; info: ModerationLogPayloads['resetPassword']; From 8e5a90589d9203a9f5abb2c4d67151c126915b11 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 10:57:24 +0900 Subject: [PATCH 04/10] improve moderation log --- locales/index.d.ts | 2 + locales/ja-JP.yml | 2 + .../backend/src/core/CustomEmojiService.ts | 41 ++++++++++++++++--- .../server/api/endpoints/admin/emoji/add.ts | 8 +--- .../api/endpoints/admin/emoji/delete-bulk.ts | 2 +- .../api/endpoints/admin/emoji/delete.ts | 2 +- .../api/endpoints/admin/emoji/update.ts | 2 +- packages/backend/src/types.ts | 12 ++++++ packages/misskey-js/etc/misskey-js.api.md | 8 +++- packages/misskey-js/src/consts.ts | 12 ++++++ packages/misskey-js/src/entities.ts | 6 +++ 11 files changed, 81 insertions(+), 16 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index c2f50dd54a..0ca5919dd4 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2256,6 +2256,8 @@ export interface Locale { "suspend": string; "unsuspend": string; "addCustomEmoji": string; + "updateCustomEmoji": string; + "deleteCustomEmoji": string; "updateServerSettings": string; "updateUserNote": string; "deleteDriveFile": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 43a3394264..13ab6755e6 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -2169,6 +2169,8 @@ _moderationLogTypes: suspend: "凍結" unsuspend: "凍結解除" addCustomEmoji: "カスタム絵文字追加" + updateCustomEmoji: "カスタム絵文字更新" + deleteCustomEmoji: "カスタム絵文字削除" updateServerSettings: "サーバー設定更新" updateUserNote: "モデレーションノート更新" deleteDriveFile: "ファイルを削除" diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts index aa5490eba7..b14a8666e6 100644 --- a/packages/backend/src/core/CustomEmojiService.ts +++ b/packages/backend/src/core/CustomEmojiService.ts @@ -12,12 +12,13 @@ import { EmojiEntityService } from '@/core/entities/EmojiEntityService.js'; import { GlobalEventService } from '@/core/GlobalEventService.js'; import type { MiDriveFile } from '@/models/DriveFile.js'; import type { MiEmoji } from '@/models/Emoji.js'; -import type { EmojisRepository, MiRole } from '@/models/_.js'; +import type { EmojisRepository, MiRole, MiUser } from '@/models/_.js'; import { bindThis } from '@/decorators.js'; import { MemoryKVCache, RedisSingleCache } from '@/misc/cache.js'; import { UtilityService } from '@/core/UtilityService.js'; import { query } from '@/misc/prelude/url.js'; import type { Serialized } from '@/server/api/stream/types.js'; +import { ModerationLogService } from '@/core/ModerationLogService.js'; const parseEmojiStrRegexp = /^(\w+)(?:@([\w.-]+))?$/; @@ -36,6 +37,7 @@ export class CustomEmojiService implements OnApplicationShutdown { private utilityService: UtilityService, private idService: IdService, private emojiEntityService: EmojiEntityService, + private moderationLogService: ModerationLogService, private globalEventService: GlobalEventService, ) { this.cache = new MemoryKVCache(1000 * 60 * 60 * 12); @@ -66,7 +68,7 @@ export class CustomEmojiService implements OnApplicationShutdown { isSensitive: boolean; localOnly: boolean; roleIdsThatCanBeUsedThisEmojiAsReaction: MiRole['id'][]; - }): Promise { + }, moderator?: MiUser): Promise { const emoji = await this.emojisRepository.insert({ id: this.idService.genId(), updatedAt: new Date(), @@ -89,6 +91,13 @@ export class CustomEmojiService implements OnApplicationShutdown { this.globalEventService.publishBroadcastStream('emojiAdded', { emoji: await this.emojiEntityService.packDetailed(emoji.id), }); + + if (moderator) { + this.moderationLogService.log(moderator, 'addCustomEmoji', { + emojiId: emoji.id, + emoji: emoji, + }); + } } return emoji; @@ -104,7 +113,7 @@ export class CustomEmojiService implements OnApplicationShutdown { isSensitive?: boolean; localOnly?: boolean; roleIdsThatCanBeUsedThisEmojiAsReaction?: MiRole['id'][]; - }): Promise { + }, moderator?: MiUser): Promise { const emoji = await this.emojisRepository.findOneByOrFail({ id: id }); const sameNameEmoji = await this.emojisRepository.findOneBy({ name: data.name, host: IsNull() }); if (sameNameEmoji != null && sameNameEmoji.id !== id) throw new Error('name already exists'); @@ -140,6 +149,14 @@ export class CustomEmojiService implements OnApplicationShutdown { emoji: updated, }); } + + if (moderator) { + this.moderationLogService.log(moderator, 'updateCustomEmoji', { + emojiId: emoji.id, + before: emoji, + after: updated, + }); + } } @bindThis @@ -231,7 +248,7 @@ export class CustomEmojiService implements OnApplicationShutdown { } @bindThis - public async delete(id: MiEmoji['id']) { + public async delete(id: MiEmoji['id'], moderator?: MiUser) { const emoji = await this.emojisRepository.findOneByOrFail({ id: id }); await this.emojisRepository.delete(emoji.id); @@ -241,16 +258,30 @@ export class CustomEmojiService implements OnApplicationShutdown { this.globalEventService.publishBroadcastStream('emojiDeleted', { emojis: [await this.emojiEntityService.packDetailed(emoji)], }); + + if (moderator) { + this.moderationLogService.log(moderator, 'deleteCustomEmoji', { + emojiId: emoji.id, + emoji: emoji, + }); + } } @bindThis - public async deleteBulk(ids: MiEmoji['id'][]) { + public async deleteBulk(ids: MiEmoji['id'][], moderator?: MiUser) { const emojis = await this.emojisRepository.findBy({ id: In(ids), }); for (const emoji of emojis) { await this.emojisRepository.delete(emoji.id); + + if (moderator) { + this.moderationLogService.log(moderator, 'deleteCustomEmoji', { + emojiId: emoji.id, + emoji: emoji, + }); + } } this.localEmojisCache.refresh(); diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts index fc297c4702..24d3a8a943 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts @@ -8,7 +8,6 @@ import { Endpoint } from '@/server/api/endpoint-base.js'; import type { DriveFilesRepository } from '@/models/_.js'; import { DI } from '@/di-symbols.js'; import { CustomEmojiService } from '@/core/CustomEmojiService.js'; -import { ModerationLogService } from '@/core/ModerationLogService.js'; import { EmojiEntityService } from '@/core/entities/EmojiEntityService.js'; import { ApiError } from '../../../error.js'; @@ -61,7 +60,6 @@ export default class extends Endpoint { // eslint- private customEmojiService: CustomEmojiService, private emojiEntityService: EmojiEntityService, - private moderationLogService: ModerationLogService, ) { super(meta, paramDef, async (ps, me) => { const driveFile = await this.driveFilesRepository.findOneBy({ id: ps.fileId }); @@ -77,11 +75,7 @@ export default class extends Endpoint { // eslint- isSensitive: ps.isSensitive ?? false, localOnly: ps.localOnly ?? false, roleIdsThatCanBeUsedThisEmojiAsReaction: ps.roleIdsThatCanBeUsedThisEmojiAsReaction ?? [], - }); - - this.moderationLogService.log(me, 'addCustomEmoji', { - emojiId: emoji.id, - }); + }, me); return this.emojiEntityService.packDetailed(emoji); }); diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts index 4221913049..e6c1bf317f 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts @@ -30,7 +30,7 @@ export default class extends Endpoint { // eslint- private customEmojiService: CustomEmojiService, ) { super(meta, paramDef, async (ps, me) => { - await this.customEmojiService.deleteBulk(ps.ids); + await this.customEmojiService.deleteBulk(ps.ids, me); }); } } diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts index f020e22182..58aa0b9950 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts @@ -36,7 +36,7 @@ export default class extends Endpoint { // eslint- private customEmojiService: CustomEmojiService, ) { super(meta, paramDef, async (ps, me) => { - await this.customEmojiService.delete(ps.id); + await this.customEmojiService.delete(ps.id, me); }); } } diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts index f01be9e27a..2d69857408 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts @@ -84,7 +84,7 @@ export default class extends Endpoint { // eslint- isSensitive: ps.isSensitive, localOnly: ps.localOnly, roleIdsThatCanBeUsedThisEmojiAsReaction: ps.roleIdsThatCanBeUsedThisEmojiAsReaction, - }); + }, me); }); } } diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index b85388d6e4..ea78bb919a 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -33,6 +33,8 @@ export const moderationLogTypes = [ 'unsuspend', 'updateUserNote', 'addCustomEmoji', + 'updateCustomEmoji', + 'deleteCustomEmoji', 'assignRole', 'unassignRole', 'updateRole', @@ -70,6 +72,16 @@ export type ModerationLogPayloads = { }; addCustomEmoji: { emojiId: string; + emoji: any; + }; + updateCustomEmoji: { + emojiId: string; + before: any; + after: any; + }; + deleteCustomEmoji: { + emojiId: string; + emoji: any; }; assignRole: { userId: string; diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index b5d07a394c..d8b6aa44d8 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -2538,6 +2538,12 @@ type ModerationLog = { } | { type: 'addCustomEmoji'; info: ModerationLogPayloads['addCustomEmoji']; +} | { + type: 'updateCustomEmoji'; + info: ModerationLogPayloads['updateCustomEmoji']; +} | { + type: 'deleteCustomEmoji'; + info: ModerationLogPayloads['deleteCustomEmoji']; } | { type: 'assignRole'; info: ModerationLogPayloads['assignRole']; @@ -2592,7 +2598,7 @@ type ModerationLog = { }); // @public (undocumented) -export const moderationLogTypes: readonly ["updateServerSettings", "suspend", "unsuspend", "updateUserNote", "addCustomEmoji", "assignRole", "unassignRole", "updateRole", "deleteRole", "clearQueue", "promoteQueue", "deleteDriveFile", "deleteNote", "createGlobalAnnouncement", "createUserAnnouncement", "updateGlobalAnnouncement", "updateUserAnnouncement", "deleteGlobalAnnouncement", "deleteUserAnnouncement", "resetPassword", "suspendRemoteInstance", "unsuspendRemoteInstance"]; +export const moderationLogTypes: readonly ["updateServerSettings", "suspend", "unsuspend", "updateUserNote", "addCustomEmoji", "updateCustomEmoji", "deleteCustomEmoji", "assignRole", "unassignRole", "updateRole", "deleteRole", "clearQueue", "promoteQueue", "deleteDriveFile", "deleteNote", "createGlobalAnnouncement", "createUserAnnouncement", "updateGlobalAnnouncement", "updateUserAnnouncement", "deleteGlobalAnnouncement", "deleteUserAnnouncement", "resetPassword", "suspendRemoteInstance", "unsuspendRemoteInstance"]; // @public (undocumented) export const mutedNoteReasons: readonly ["word", "manual", "spam", "other"]; diff --git a/packages/misskey-js/src/consts.ts b/packages/misskey-js/src/consts.ts index dd4fd2609f..462ad16cc8 100644 --- a/packages/misskey-js/src/consts.ts +++ b/packages/misskey-js/src/consts.ts @@ -51,6 +51,8 @@ export const moderationLogTypes = [ 'unsuspend', 'updateUserNote', 'addCustomEmoji', + 'updateCustomEmoji', + 'deleteCustomEmoji', 'assignRole', 'unassignRole', 'updateRole', @@ -88,6 +90,16 @@ export type ModerationLogPayloads = { }; addCustomEmoji: { emojiId: string; + emoji: any; + }; + updateCustomEmoji: { + emojiId: string; + before: any; + after: any; + }; + deleteCustomEmoji: { + emojiId: string; + emoji: any; }; assignRole: { userId: string; diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index b157eb59f6..e6a97f0209 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -589,6 +589,12 @@ export type ModerationLog = { } | { type: 'addCustomEmoji'; info: ModerationLogPayloads['addCustomEmoji']; +} | { + type: 'updateCustomEmoji'; + info: ModerationLogPayloads['updateCustomEmoji']; +} | { + type: 'deleteCustomEmoji'; + info: ModerationLogPayloads['deleteCustomEmoji']; } | { type: 'assignRole'; info: ModerationLogPayloads['assignRole']; From eb7c65ccb39face9caebda816924de91d57cb50b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 11:04:08 +0900 Subject: [PATCH 05/10] =?UTF-8?q?fix(frontend):=20=E3=82=A2=E3=82=AF?= =?UTF-8?q?=E3=82=BB=E3=82=B9=E3=83=88=E3=83=BC=E3=82=AF=E3=83=B3=E7=99=BA?= =?UTF-8?q?=E8=A1=8C=E3=81=AE=E7=94=BB=E9=9D=A2=E3=81=AE=E6=A8=A9=E9=99=90?= =?UTF-8?q?=E3=81=8C=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #11880 --- packages/frontend/src/components/MkTokenGenerateWindow.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkTokenGenerateWindow.vue b/packages/frontend/src/components/MkTokenGenerateWindow.vue index 5f3c2f3a71..8958accc4a 100644 --- a/packages/frontend/src/components/MkTokenGenerateWindow.vue +++ b/packages/frontend/src/components/MkTokenGenerateWindow.vue @@ -32,7 +32,9 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts.disableAll }} {{ i18n.ts.enableAll }}
- {{ i18n.t(`_permissions.${kind}`) }} +
+ {{ i18n.t(`_permissions.${kind}`) }} +
From 7a3ddc869e3eaf560d4fff941e3568b5e702b0ba Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 11:07:46 +0900 Subject: [PATCH 06/10] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c85e850a9..46433bca35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ ## 2023.9.0 (unreleased) +### Note +- meilisearchを使用する場合、v1.2以上が必要です + ### General - Feat: OAuth 2.0のサポート - Feat: お知らせ機能の強化 From 72075314a8a1317b81d588da10b534cafaf1d650 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 11:08:51 +0900 Subject: [PATCH 07/10] :art: --- packages/frontend/src/components/MkNoteDetailed.vue | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index 2b61240b96..06663d0477 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -145,9 +145,11 @@ SPDX-License-Identifier: AGPL-3.0-only
From 509cea511c46e28ba82272d1dd8fe606f0c8fe7a Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 11:09:49 +0900 Subject: [PATCH 08/10] update deps --- packages/backend/package.json | 4 +- packages/frontend/package.json | 4 +- packages/misskey-js/package.json | 2 +- pnpm-lock.yaml | 269 ++++++++++++------------------- 4 files changed, 105 insertions(+), 174 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 97fbaab308..c26b1238db 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -189,9 +189,9 @@ "@types/jsrsasign": "10.5.9", "@types/mime-types": "2.1.1", "@types/ms": "0.7.31", - "@types/node": "20.6.3", + "@types/node": "20.6.4", "@types/node-fetch": "3.0.3", - "@types/nodemailer": "6.4.10", + "@types/nodemailer": "6.4.11", "@types/oauth": "0.9.2", "@types/oauth2orize": "1.11.1", "@types/oauth2orize-pkce": "0.1.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index bce300ff6e..2e27f9e99c 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -97,10 +97,10 @@ "@storybook/vue3-vite": "7.4.4", "@testing-library/vue": "7.0.0", "@types/escape-regexp": "0.0.1", - "@types/estree": "1.0.1", + "@types/estree": "1.0.2", "@types/matter-js": "0.19.0", "@types/micromatch": "4.0.2", - "@types/node": "20.6.3", + "@types/node": "20.6.4", "@types/punycode": "2.1.0", "@types/sanitize-html": "2.9.0", "@types/throttle-debounce": "5.0.0", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 140968f042..d70472b137 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -23,7 +23,7 @@ "@microsoft/api-extractor": "7.37.0", "@swc/jest": "0.2.29", "@types/jest": "29.5.5", - "@types/node": "20.6.3", + "@types/node": "20.6.4", "@typescript-eslint/eslint-plugin": "6.7.2", "@typescript-eslint/parser": "6.7.2", "eslint": "8.50.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40364d3605..0297fdab6d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -539,14 +539,14 @@ importers: specifier: 0.7.31 version: 0.7.31 '@types/node': - specifier: 20.6.3 - version: 20.6.3 + specifier: 20.6.4 + version: 20.6.4 '@types/node-fetch': specifier: 3.0.3 version: 3.0.3 '@types/nodemailer': - specifier: 6.4.10 - version: 6.4.10 + specifier: 6.4.11 + version: 6.4.11 '@types/oauth': specifier: 0.9.2 version: 0.9.2 @@ -630,7 +630,7 @@ importers: version: 8.0.1 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.6.3) + version: 29.7.0(@types/node@20.6.4) jest-mock: specifier: 29.7.0 version: 29.7.0 @@ -807,7 +807,7 @@ importers: version: 1.8.1 vite: specifier: 4.4.9 - version: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + version: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) vue: specifier: 3.3.4 version: 3.3.4 @@ -879,8 +879,8 @@ importers: specifier: 0.0.1 version: 0.0.1 '@types/estree': - specifier: 1.0.1 - version: 1.0.1 + specifier: 1.0.2 + version: 1.0.2 '@types/matter-js': specifier: 0.19.0 version: 0.19.0 @@ -888,8 +888,8 @@ importers: specifier: 4.0.2 version: 4.0.2 '@types/node': - specifier: 20.6.3 - version: 20.6.3 + specifier: 20.6.4 + version: 20.6.4 '@types/punycode': specifier: 2.1.0 version: 2.1.0 @@ -976,7 +976,7 @@ importers: version: 7.4.4 storybook-addon-misskey-theme: specifier: github:misskey-dev/storybook-addon-misskey-theme - version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.4)(@storybook/components@7.4.3)(@storybook/core-events@7.4.4)(@storybook/manager-api@7.4.4)(@storybook/preview-api@7.4.4)(@storybook/theming@7.4.4)(@storybook/types@7.4.4)(react-dom@18.2.0)(react@18.2.0) + version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.4)(@storybook/components@7.4.4)(@storybook/core-events@7.4.4)(@storybook/manager-api@7.4.4)(@storybook/preview-api@7.4.4)(@storybook/theming@7.4.4)(@storybook/types@7.4.4)(react-dom@18.2.0)(react@18.2.0) summaly: specifier: github:misskey-dev/summaly version: github.com/misskey-dev/summaly/d2d8db49943ccb201c1b1b283e9d0a630519fac7 @@ -1013,7 +1013,7 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 7.37.0 - version: 7.37.0(@types/node@20.6.3) + version: 7.37.0(@types/node@20.6.4) '@swc/jest': specifier: 0.2.29 version: 0.2.29(@swc/core@1.3.87) @@ -1021,8 +1021,8 @@ importers: specifier: 29.5.5 version: 29.5.5 '@types/node': - specifier: 20.6.3 - version: 20.6.3 + specifier: 20.6.4 + version: 20.6.4 '@typescript-eslint/eslint-plugin': specifier: 6.7.2 version: 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.50.0)(typescript@5.2.2) @@ -1034,7 +1034,7 @@ importers: version: 8.50.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.6.3) + version: 29.7.0(@types/node@20.6.4) jest-fetch-mock: specifier: 3.0.3 version: 3.0.3 @@ -4014,7 +4014,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -4035,14 +4035,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 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@20.6.3) + jest-config: 29.7.0(@types/node@20.6.4) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -4077,7 +4077,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 jest-mock: 29.7.0 dev: true @@ -4104,7 +4104,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.6.3 + '@types/node': 20.6.4 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -4137,7 +4137,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.6.3 + '@types/node': 20.6.4 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -4231,7 +4231,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.3 + '@types/node': 20.6.4 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -4243,7 +4243,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.3 + '@types/node': 20.6.4 '@types/yargs': 17.0.19 chalk: 4.1.2 dev: true @@ -4262,7 +4262,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.2.2) typescript: 5.2.2 - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) dev: true /@jridgewell/gen-mapping@0.3.2: @@ -4347,24 +4347,24 @@ packages: react: 18.2.0 dev: true - /@microsoft/api-extractor-model@7.28.0(@types/node@20.6.3): + /@microsoft/api-extractor-model@7.28.0(@types/node@20.6.4): resolution: {integrity: sha512-QIMtUVm1tqiKG+M6ciFgRShcDoovyltaeg+CbyOnyr7SMrp6gg0ojK5/nToMqR9kAvsTS4QVgW4Twl50EoAjcw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.60.0(@types/node@20.6.3) + '@rushstack/node-core-library': 3.60.0(@types/node@20.6.4) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.37.0(@types/node@20.6.3): + /@microsoft/api-extractor@7.37.0(@types/node@20.6.4): resolution: {integrity: sha512-df/wffWpDhYRw7kzdxeHGsCpim+dC8aFiZlsJb4uFvVPWhBZpDzOhQxSUTFx3Df1ORY+/JjuPR3fDE9Hq+PHzQ==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.0(@types/node@20.6.3) + '@microsoft/api-extractor-model': 7.28.0(@types/node@20.6.4) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.60.0(@types/node@20.6.3) + '@rushstack/node-core-library': 3.60.0(@types/node@20.6.4) '@rushstack/rig-package': 0.5.0 '@rushstack/ts-command-line': 4.16.0 colors: 1.2.5 @@ -5244,12 +5244,12 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 3.29.2 - /@rushstack/node-core-library@3.60.0(@types/node@20.6.3): + /@rushstack/node-core-library@3.60.0(@types/node@20.6.4): resolution: {integrity: sha512-PcyrqhILvzU+65wMFybQ2VeGNnU5JzhDq2OvUi3j6jPUxyllM7b2hrRUwCuVaYboewYzIbpzXFzgxe2K7ii1nw==} peerDependencies: '@types/node': '*' @@ -5257,7 +5257,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -6276,23 +6276,12 @@ packages: remark-slug: 6.1.0 rollup: 3.29.2 typescript: 5.2.2 - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/channels@7.4.3: - resolution: {integrity: sha512-lIoRX3EV0wKPX8ojIrJUtsOv4+Gv8r9pfJpam/NdyYd+rs0AjDK13ieINRfBMnJkfjsWa3vmZtGMBEVvDKwTMw==} - dependencies: - '@storybook/client-logger': 7.4.3 - '@storybook/core-events': 7.4.3 - '@storybook/global': 5.0.0 - qs: 6.11.1 - telejson: 7.2.0 - tiny-invariant: 1.3.1 - dev: true - /@storybook/channels@7.4.4: resolution: {integrity: sha512-YA2T3hClL95nFBBelm8wMOyWFDzfxKvyHAPQi+8YeYpZcPivwg/P9YnRhTTMbiZNkfoWKq4ZRuc79UP1iNLi3g==} dependencies: @@ -6356,12 +6345,6 @@ packages: - utf-8-validate dev: true - /@storybook/client-logger@7.4.3: - resolution: {integrity: sha512-Nhngo9X4HjN00aRhgIVGWbwkWPe0Fz8PySuxnd8nAxSsz7KpdLFyYo2TbZZ3TX51FG5Fxcb0G5OHuunItP7EWQ==} - dependencies: - '@storybook/global': 5.0.0 - dev: true - /@storybook/client-logger@7.4.4: resolution: {integrity: sha512-rC/GcCy3DLtTI+oOHLBc6rq/c3oGF/mvdeWrhMM+berQplHJrOCI2pcldjVw8Fc25gLPK0LUlaOp1dfgt2Ri3Q==} dependencies: @@ -6389,29 +6372,6 @@ packages: - supports-color dev: true - /@storybook/components@7.4.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qwRW8wGUuM+H6oKUXXoIDrZECXh/lzowrWXFAzZiocovYEhPtZfl/yvJLWHjOwtka3n7lA7J7EtcjWe8/tueJQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.4.3 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.3 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - /@storybook/components@7.4.4(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tFOSu3IoAab/0aY2TY66Go0Nba7AB/+ZB9GFet+dxWypIKGLcPjyX2POIumJU4swzK+4IA8GxgDQ2itS6EOISQ==} peerDependencies: @@ -6473,12 +6433,6 @@ packages: - supports-color dev: true - /@storybook/core-events@7.4.3: - resolution: {integrity: sha512-FRfipCijMnVbGxL1ZjOLM836lyd/TGQcUFeVjTQWW/+pIGHELqDHiYeq68hqoGTKl0G0np59CJPWYTUZA4Dl9Q==} - dependencies: - ts-dedent: 2.2.0 - dev: true - /@storybook/core-events@7.4.4: resolution: {integrity: sha512-kOf4I/a1XC9CaGFwJG5WR2KnkwrOkWX68TLh7OlelKxdl/WjxA4zfzaFPC/8zyCSLdGFLPKNqr1w+ezkb+9Irw==} dependencies: @@ -6711,7 +6665,7 @@ packages: react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -6813,20 +6767,6 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.4.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-u5wLwWmhGcTmkcs6f2wDGv+w8wzwbNJat0WaIIbwdJfX7arH6nO5HkBhNxvl6FUFxX0tovp/e9ULzxVPc356jw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) - '@storybook/client-logger': 7.4.3 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/theming@7.4.4(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ABIwLRUj2IZKMGxKq+fCCFcY7w52P1a+q8j7qrlELaTe4M74K6rwTgRF0/AFgWeiGRkNuA7z8DjQ73xQLoLqUg==} peerDependencies: @@ -6841,15 +6781,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/types@7.4.3: - resolution: {integrity: sha512-DrHC1hIiw9TqDILLokDnvbUPNxGz5iJaYFEv30uvYE0s9MvgEUPblCChEUjaHOps7zQTznMPf8ULfoXlgqxk2A==} - dependencies: - '@storybook/channels': 7.4.3 - '@types/babel__core': 7.20.0 - '@types/express': 4.17.17 - file-system-cache: 2.3.0 - dev: true - /@storybook/types@7.4.4: resolution: {integrity: sha512-B0VdgGb1XGEb9g3UuEd9xANCIhR3anvA3w0uYSG+7uMOflnEawwZksTSxvvoGM2hx9vC4pNT4Fci9sEC903UkA==} dependencies: @@ -6874,7 +6805,7 @@ packages: magic-string: 0.30.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) vue-docgen-api: 4.64.1(vue@3.3.4) transitivePeerDependencies: - '@preact/preset-vite' @@ -7406,7 +7337,7 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/archiver@5.3.3: @@ -7460,7 +7391,7 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/braces@3.0.1: @@ -7472,7 +7403,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.6.3 + '@types/node': 20.6.4 '@types/responselike': 1.0.0 dev: false @@ -7505,7 +7436,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/content-disposition@0.5.6: @@ -7519,7 +7450,7 @@ packages: /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/debug@4.1.7: @@ -7559,7 +7490,7 @@ packages: /@types/eslint@7.29.0: resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 '@types/json-schema': 7.0.12 dev: true @@ -7567,13 +7498,13 @@ packages: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + /@types/estree@1.0.2: + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -7594,20 +7525,20 @@ packages: /@types/fluent-ffmpeg@2.1.22: resolution: {integrity: sha512-ZZPDDrDOb2Ahp5fxZzuw64f0rCcviv+SDuCyJ1PIF/UFn9wNHtb/bY8Dj/2nrbQ7SNsGI7gaO2wJVkkU2HBcMg==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/hast@2.3.4: @@ -7622,7 +7553,7 @@ packages: /@types/http-link-header@1.0.3: resolution: {integrity: sha512-y8HkoD/vyid+5MrJ3aas0FvU3/BVBGcyG9kgxL0Zn4JwstA8CglFPnrR0RuzOjRCXwqzL5uxWC2IO7Ub0rMU2A==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -7666,7 +7597,7 @@ packages: /@types/jsdom@21.1.3: resolution: {integrity: sha512-1zzqSP+iHJYV4lB3lZhNBa012pubABkj9yG/GuXuf6LZH1cSPIJBqFDrm5JX65HHt6VOnNYdTui/0ySerRbMgA==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -7690,7 +7621,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: false /@types/lodash@4.14.191: @@ -7739,7 +7670,7 @@ packages: /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 form-data: 3.0.1 /@types/node-fetch@3.0.3: @@ -7756,13 +7687,13 @@ packages: resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} dev: true - /@types/node@20.6.3: - resolution: {integrity: sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==} + /@types/node@20.6.4: + resolution: {integrity: sha512-nU6d9MPY0NBUMiE/nXd2IIoC4OLvsLpwAjheoAeuzgvDZA1Cb10QYg+91AF6zQiKWRN5i1m07x6sMe0niBznoQ==} - /@types/nodemailer@6.4.10: - resolution: {integrity: sha512-oPW/IdhkU3FyZc1dzeqmS+MBjrjZNiiINnrEOrWALzccJlP5xTlbkNr2YnTnnyj9Eqm5ofjRoASEbrCYpA7BrA==} + /@types/nodemailer@6.4.11: + resolution: {integrity: sha512-Ld2c0frwpGT4VseuoeboCXQ7UJIkK3X7Lx/4YsZEiUHtHsthWAOCYtf6PAiLhMtfwV0cWJRabLBS3+LD8x6Nrw==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/normalize-package-data@2.4.1: @@ -7779,13 +7710,13 @@ packages: resolution: {integrity: sha512-U3L0c4eQA6lTSZRgW4LYfhKlR084Aw19akmYHrMdYzaqg9mQDfc2b/1iyqm9+1FJDEnVS5ONi5fxdDrB4/7CpQ==} dependencies: '@types/express': 4.17.17 - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/oauth@0.9.2: resolution: {integrity: sha512-Nu3/abQ6yR9VlsCdX3aiGsWFkj6OJvJqDvg/36t8Gwf2mFXdBZXPDN3K+2yfeA6Lo2m1Q12F8Qil9TZ48nWhOQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/offscreencanvas@2019.3.0: @@ -7801,7 +7732,7 @@ packages: /@types/pg@8.10.2: resolution: {integrity: sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 pg-protocol: 1.6.0 pg-types: 4.0.1 dev: true @@ -7825,7 +7756,7 @@ packages: /@types/qrcode@1.5.2: resolution: {integrity: sha512-W4KDz75m7rJjFbyCctzCtRzZUj+PrUHV+YjqDp50sSRezTbrtEAIq2iTzC6lISARl3qw+8IlcCyljdcVJE0Wug==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/qs@6.9.7: @@ -7855,7 +7786,7 @@ packages: /@types/readdir-glob@1.1.1: resolution: {integrity: sha512-ImM6TmoF8bgOwvehGviEj3tRdRBbQujr1N+0ypaln/GWjaerOB26jb93vsRHmdMtvVQZQebOlqt2HROark87mQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/rename@1.0.4: @@ -7865,7 +7796,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: false /@types/sanitize-html@2.9.0: @@ -7891,7 +7822,7 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/serviceworker@0.0.67: @@ -7901,7 +7832,7 @@ packages: /@types/set-cookie-parser@2.4.3: resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/sharp@0.32.0: @@ -7964,13 +7895,13 @@ packages: /@types/vary@1.1.0: resolution: {integrity: sha512-LQWqrIa0dvEOOH37lGksMEXbypRLUFqu6Gx0pmX7zIUisD2I/qaVgEX/vJ/PSVSW0Hk6yz1BNkFpqg6dZm3Wug==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/web-push@3.6.0: resolution: {integrity: sha512-Kk23yDmYheAcQ0ALS9YE7MY7lqwaIfVQ67zVEFeqbLw+/g8jlYTg9o/zYJOk5YhebWrq2Cr/Lbh4RoYfzrn0ww==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/webgl-ext@0.0.30: @@ -7981,13 +7912,13 @@ packages: /@types/websocket@1.0.6: resolution: {integrity: sha512-JXkliwz93B2cMWOI1ukElQBPN88vMg3CruvW4KVSKpflt3NyNCJImnhIuB/f97rG7kakqRJGFiwkA895Kn02Dg==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /@types/yargs-parser@21.0.0: @@ -8010,7 +7941,7 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true optional: true @@ -8156,7 +8087,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.22.11) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - supports-color dev: true @@ -8168,7 +8099,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) vue: 3.3.4 /@vitest/coverage-v8@0.34.5(vitest@0.34.5): @@ -10023,7 +9954,7 @@ packages: readable-stream: 3.6.0 dev: false - /create-jest@29.7.0(@types/node@20.6.3): + /create-jest@29.7.0(@types/node@20.6.4): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10032,7 +9963,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.6.3) + jest-config: 29.7.0(@types/node@20.6.4) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -11262,7 +11193,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: false /esutils@2.0.3: @@ -13244,7 +13175,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 chalk: 4.1.2 co: 4.6.0 dedent: 1.3.0 @@ -13265,7 +13196,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.6.3): + /jest-cli@29.7.0(@types/node@20.6.4): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13279,10 +13210,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.6.3) + create-jest: 29.7.0(@types/node@20.6.4) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.6.3) + jest-config: 29.7.0(@types/node@20.6.4) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.6.2 @@ -13293,7 +13224,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.6.3): + /jest-config@29.7.0(@types/node@20.6.4): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -13308,7 +13239,7 @@ packages: '@babel/core': 7.22.11 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 babel-jest: 29.7.0(@babel/core@7.22.11) chalk: 4.1.2 ci-info: 3.7.1 @@ -13388,7 +13319,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -13418,7 +13349,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 20.6.3 + '@types/node': 20.6.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -13479,7 +13410,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.6.3 + '@types/node': 20.6.4 dev: true /jest-mock@29.7.0: @@ -13487,7 +13418,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 jest-util: 29.7.0 dev: true @@ -13542,7 +13473,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -13573,7 +13504,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -13625,7 +13556,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 chalk: 4.1.2 ci-info: 3.7.1 graceful-fs: 4.2.11 @@ -13650,7 +13581,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -13669,13 +13600,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@20.6.3): + /jest@29.7.0(@types/node@20.6.4): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13688,7 +13619,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.6.3) + jest-cli: 29.7.0(@types/node@20.6.4) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -18997,7 +18928,7 @@ packages: core-util-is: 1.0.2 extsprintf: 1.3.0 - /vite-node@0.34.5(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0): + /vite-node@0.34.5(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0): resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -19007,7 +18938,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - '@types/node' - less @@ -19023,7 +18954,7 @@ packages: resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==} dev: true - /vite@4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0): + /vite@4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -19051,7 +18982,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.6.3 + '@types/node': 20.6.4 esbuild: 0.18.17 postcss: 8.4.30 rollup: 3.29.2 @@ -19105,7 +19036,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.6.3 + '@types/node': 20.6.4 '@vitest/expect': 0.34.5 '@vitest/runner': 0.34.5 '@vitest/snapshot': 0.34.5 @@ -19125,8 +19056,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) - vite-node: 0.34.5(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) + vite-node: 0.34.5(@types/node@20.6.4)(sass@1.68.0)(terser@5.20.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -19669,7 +19600,7 @@ packages: sharp: 0.31.3 dev: false - github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.4)(@storybook/components@7.4.3)(@storybook/core-events@7.4.4)(@storybook/manager-api@7.4.4)(@storybook/preview-api@7.4.4)(@storybook/theming@7.4.4)(@storybook/types@7.4.4)(react-dom@18.2.0)(react@18.2.0): + github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.4)(@storybook/components@7.4.4)(@storybook/core-events@7.4.4)(@storybook/manager-api@7.4.4)(@storybook/preview-api@7.4.4)(@storybook/theming@7.4.4)(@storybook/types@7.4.4)(react-dom@18.2.0)(react@18.2.0): resolution: {tarball: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640} id: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640 name: storybook-addon-misskey-theme @@ -19691,7 +19622,7 @@ packages: optional: true dependencies: '@storybook/blocks': 7.4.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.4(react-dom@18.2.0)(react@18.2.0) '@storybook/core-events': 7.4.4 '@storybook/manager-api': 7.4.4(react-dom@18.2.0)(react@18.2.0) '@storybook/preview-api': 7.4.4 From 2b561d2648b17c1d568b0fb07f31f1a2ac85776b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 11:10:05 +0900 Subject: [PATCH 09/10] New Crowdin updates (#11875) * New translations ja-jp.yml (French) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Arabic) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Czech) * New translations ja-jp.yml (German) * New translations ja-jp.yml (Greek) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Dutch) * New translations ja-jp.yml (Norwegian) * New translations ja-jp.yml (Polish) * New translations ja-jp.yml (Portuguese) * New translations ja-jp.yml (Russian) * New translations ja-jp.yml (Slovak) * New translations ja-jp.yml (Swedish) * New translations ja-jp.yml (Turkish) * New translations ja-jp.yml (Ukrainian) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Vietnamese) * New translations ja-jp.yml (Indonesian) * New translations ja-jp.yml (Bengali) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Uzbek) * New translations ja-jp.yml (Lao) * New translations ja-jp.yml (Japanese, Kansai) * New translations ja-jp.yml (French) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Arabic) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Czech) * New translations ja-jp.yml (German) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Dutch) * New translations ja-jp.yml (Polish) * New translations ja-jp.yml (Portuguese) * New translations ja-jp.yml (Russian) * New translations ja-jp.yml (Slovak) * New translations ja-jp.yml (Swedish) * New translations ja-jp.yml (Turkish) * New translations ja-jp.yml (Ukrainian) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Vietnamese) * New translations ja-jp.yml (Indonesian) * New translations ja-jp.yml (Bengali) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Uzbek) * New translations ja-jp.yml (Japanese, Kansai) * New translations ja-jp.yml (Romanian) * New translations ja-jp.yml (German) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (German) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Italian) --- locales/ar-SA.yml | 3 +++ locales/bn-BD.yml | 3 +++ locales/ca-ES.yml | 3 +++ locales/cs-CZ.yml | 3 +++ locales/de-DE.yml | 27 ++++++++++++++++++---- locales/el-GR.yml | 2 ++ locales/en-US.yml | 17 ++++++++++++++ locales/es-ES.yml | 3 +++ locales/fr-FR.yml | 3 +++ locales/id-ID.yml | 3 +++ locales/it-IT.yml | 58 +++++++++++++++++++++++++++++++++-------------- locales/ja-KS.yml | 3 +++ locales/ko-KR.yml | 3 +++ locales/lo-LA.yml | 2 ++ locales/nl-NL.yml | 3 +++ locales/no-NO.yml | 2 ++ locales/pl-PL.yml | 3 +++ locales/pt-PT.yml | 3 +++ locales/ro-RO.yml | 3 +++ locales/ru-RU.yml | 3 +++ locales/sk-SK.yml | 3 +++ locales/sv-SE.yml | 3 +++ locales/th-TH.yml | 3 +++ locales/tr-TR.yml | 3 +++ locales/uk-UA.yml | 3 +++ locales/uz-UZ.yml | 3 +++ locales/vi-VN.yml | 3 +++ locales/zh-CN.yml | 18 +++++++++++++++ locales/zh-TW.yml | 19 +++++++++++++++- 29 files changed, 185 insertions(+), 23 deletions(-) diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index f36641128c..55b7cbb88c 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -1556,3 +1556,6 @@ _webhookSettings: active: "مُفعّل" _events: reaction: "عند التفاعل" +_moderationLogTypes: + suspend: "علِق" + resetPassword: "أعد تعيين كلمتك السرية" diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index e0e1e29433..64b32d176b 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -1333,3 +1333,6 @@ _deck: _webhookSettings: name: "নাম" active: "চালু" +_moderationLogTypes: + suspend: "স্থগিত করা" + resetPassword: "পাসওয়ার্ড রিসেট করুন" diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index ec52c57610..d1fd73b666 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -479,3 +479,6 @@ _deck: list: "Llistes" mentions: "Mencions" direct: "Publicacions directes" +_moderationLogTypes: + suspend: "Suspèn" + resetPassword: "Restableix la contrasenya" diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index 36a104bdc3..751cc064ad 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -2036,3 +2036,6 @@ _webhookSettings: renote: "Při renotaci poznámky" reaction: "Při obdržení reakce" mention: "Při zmínce" +_moderationLogTypes: + suspend: "Zmrazit" + resetPassword: "Resetovat heslo" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index b11cb7e5b9..11237d2e69 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -2,7 +2,7 @@ _lang_: "Deutsch" headlineMisskey: "Ein durch Notizen verbundenes Netzwerk" introMisskey: "Willkommen! Misskey ist eine dezentralisierte Open-Source Microblogging-Platform.\nVerfasse „Notizen“ um mitzuteilen, was gerade passiert oder um Ereignisse mit anderen zu teilen. 📡\nMit „Reaktionen“ kannst du außerdem schnell deine Gefühle über Notizen anderer Benutzer zum Ausdruck bringen. 👍\nEine neue Welt wartet auf dich! 🚀" -poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform Misskey betriebenen Dienste (meist als \"Misskey-Instanz\" bezeichnet)." +poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform Misskey betriebenen Dienste." monthAndDay: "{day}.{month}." search: "Suchen" notifications: "Benachrichtigungen" @@ -75,7 +75,7 @@ import: "Import" export: "Export" files: "Dateien" download: "Herunterladen" -driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Sie wird in allen Inhalten, die sie verwenden, auch verschwinden." +driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Einige Inhalte, die diese Datei verwenden, werden auch verschwinden." unfollowConfirm: "Möchtest du {name} wirklich nicht mehr folgen?" exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt." importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch nehmen." @@ -418,6 +418,7 @@ moderator: "Moderator" moderation: "Moderation" moderationNote: "Moderationsnotiz" addModerationNote: "Moderationsnotiz hinzufügen" +moderationLogs: "Moderationsprotokolle" nUsersMentioned: "Von {n} Benutzern erwähnt" securityKeyAndPasskey: "Hardware-Sicherheitsschlüssel und Passkeys" securityKey: "Hardware-Sicherheitsschlüssel" @@ -639,7 +640,7 @@ display: "Anzeigeart" copy: "Kopieren" metrics: "Metriken" overview: "Übersicht" -logs: "Logs" +logs: "Protokolle" delayed: "Verzögert" database: "Datenbank" channel: "Kanäle" @@ -1049,7 +1050,7 @@ vertical: "Vertikal" horizontal: "Horizontal" position: "Position" serverRules: "Serverregeln" -pleaseConfirmBelowBeforeSignup: "Lies bitte Untenstehendes vor der Registration." +pleaseConfirmBelowBeforeSignup: "Lies bitte diese Informationen und stimme ihnen vor der Registration zu." pleaseAgreeAllToContinue: "Zum Fortfahren muss allen obigen Feldern zugestimmt werden." continue: "Fortfahren" preservedUsernames: "Reservierte Benutzernamen" @@ -1727,7 +1728,7 @@ _2fa: step2Click: "Durch Klicken dieses QR-Codes kannst du Verifikation mit deinem Security-Token oder einer App registrieren." step2Uri: "Nutzt du ein Desktopprogramm, gib folgende URI eingeben" step3Title: "Authentifizierungsscode eingeben" - step3: "Gib zum Abschluss den Token ein, der von deiner App angezeigt wird." + step3: "Gib zum Abschluss den Code (Token) ein, der von deiner App angezeigt wird." setupCompleted: "Einrichtung abgeschlossen" step4: "Alle folgenden Anmeldeversuche werden ab sofort die Eingabe eines solchen Tokens benötigen." securityKeyNotSupported: "Dein Browser unterstützt keine Hardware-Sicherheitsschlüssel." @@ -2099,3 +2100,19 @@ _webhookSettings: renote: "Wenn du ein Renote erhältst" reaction: "Wenn du eine Reaktion erhältst" mention: "Wenn du erwähnt wirst" +_moderationLogTypes: + assignRole: "Zu Rolle zugewiesen" + unassignRole: "Aus Rolle entfernt" + updateRole: "Rolle aktualisiert" + suspend: "Gesperrt" + unsuspend: "Entsperrt" + addCustomEmoji: "Benutzerdefiniertes Emoji hinzugefügt" + updateServerSettings: "Servereinstellungen aktualisiert" + updateUserNote: "Moderationsnotiz aktualisiert" + deleteDriveFile: "Datei gelöscht" + deleteNote: "Notiz gelöscht" + createGlobalAnnouncement: "Globale Ankündigung erstellt" + createUserAnnouncement: "Benutzerankündigung erstellt" + resetPassword: "Passwort zurückgesetzt" + suspendRemoteInstance: "Fremde Instanz gesperrt" + unsuspendRemoteInstance: "Fremde Instanz entsperrt" diff --git a/locales/el-GR.yml b/locales/el-GR.yml index e8ed6f118e..e46efcec1f 100644 --- a/locales/el-GR.yml +++ b/locales/el-GR.yml @@ -397,3 +397,5 @@ _deck: mentions: "Επισημάνσεις" _webhookSettings: name: "Όνομα" +_moderationLogTypes: + suspend: "Αποβολή" diff --git a/locales/en-US.yml b/locales/en-US.yml index 5d9ec0370e..4cda0ff8c2 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -418,6 +418,7 @@ moderator: "Moderator" moderation: "Moderation" moderationNote: "Moderation note" addModerationNote: "Add moderation note" +moderationLogs: "Moderation logs" nUsersMentioned: "Mentioned by {n} users" securityKeyAndPasskey: "Security- and passkeys" securityKey: "Security key" @@ -2099,3 +2100,19 @@ _webhookSettings: renote: "When renoted" reaction: "When receiving a reaction" mention: "When being mentioned" +_moderationLogTypes: + assignRole: "Assigned to role" + unassignRole: "Removed from role" + updateRole: "Role updated" + suspend: "Suspended" + unsuspend: "Unsuspended" + addCustomEmoji: "Custom emoji added" + updateServerSettings: "Server settings updated" + updateUserNote: "Moderation note updated" + deleteDriveFile: "File deleted" + deleteNote: "Note deleted" + createGlobalAnnouncement: "Global announcement created" + createUserAnnouncement: "User announcement created" + resetPassword: "Password reset" + suspendRemoteInstance: "Remote instance suspended" + unsuspendRemoteInstance: "Remote instance unsuspended" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index c6bb2c10de..1f84a0afb4 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -2079,3 +2079,6 @@ _webhookSettings: renote: "Cuando reciba un \"re-note\"" reaction: "Cuando se recibe una reacción" mention: "Cuando hay una mención" +_moderationLogTypes: + suspend: "Suspender" + resetPassword: "Resetear contraseña" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 71446667d6..db19b66880 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -1691,3 +1691,6 @@ _deck: _webhookSettings: name: "Nom" active: "Activé" +_moderationLogTypes: + suspend: "Suspendre" + resetPassword: "Réinitialiser le mot de passe" diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 75baebaae4..56e7f9e4db 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -2041,3 +2041,6 @@ _webhookSettings: renote: "Ketika direnote" reaction: "Ketika menerima reaksi" mention: "Ketika sedang disebut" +_moderationLogTypes: + suspend: "Tangguhkan" + resetPassword: "Atur ulang kata sandi" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index a69e75a374..b700fb8777 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -117,7 +117,7 @@ pinnedNote: "Nota fissata" pinned: "Fissa sul profilo" you: "Tu" clickToShow: "Clicca per visualizzare" -sensitive: "Contenuto sensibile" +sensitive: "Esplicito" add: "Aggiungi" reaction: "Reazioni" reactions: "Reazioni" @@ -125,8 +125,8 @@ reactionSetting: "Reazioni visualizzate sul pannello" reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa il pulsante \"+\" per aggiungere." rememberNoteVisibility: "Ricordare le impostazioni di visibilità delle note" attachCancel: "Rimuovi allegato" -markAsSensitive: "Segna come sensibile" -unmarkAsSensitive: "Segna come non sensibile" +markAsSensitive: "Segna come esplicito" +unmarkAsSensitive: "Non segnare come esplicito " enterFileName: "Nome del file" mute: "Silenzia" unmute: "Riattiva l'audio" @@ -148,7 +148,7 @@ editAntenna: "Modifica Antenna" selectWidget: "Seleziona il riquadro" editWidgets: "Modifica i riquadri" editWidgetsExit: "Conferma le modifiche" -customEmojis: "Emoji personalizzati" +customEmojis: "Emoji personalizzate" emoji: "Emoji" emojis: "Emoji" emojiName: "Nome dell'emoji" @@ -158,8 +158,8 @@ settingGuide: "Configurazione suggerita" cacheRemoteFiles: "Memorizza i file remoti nella cache" cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno linkati direttamente senza essere memorizzati nella cache. Sarà possibile risparmiare spazio di archiviazione sul server, ma il traffico aumenterà in quanto non verranno generate anteprime." youCanCleanRemoteFilesCache: "Puoi svuotare tutta la cache cliccando il bottone 🗑️ nella gestione file" -cacheRemoteSensitiveFiles: "Memorizza nella cache i file sensibili remoti" -cacheRemoteSensitiveFilesDescription: "Disattivando questa opzione, i file sensibili verranno caricati direttamente dall'istanza remota senza essere salvati dal server." +cacheRemoteSensitiveFiles: "Copia nella cache locale i file espliciti remoti" +cacheRemoteSensitiveFilesDescription: "Disattivando questa opzione, i file espliciti verranno richiesti direttamente all'istanza remota senza essere salvati nel server locale." flagAsBot: "Io sono un robot" flagAsBotDescription: "Attiva questo campo se il profilo esegue principalmente operazioni automatiche. L'attivazione segnala agli altri sviluppatori come comportarsi per evitare catene d’interazione infinite con altri bot. I sistemi interni di Misskey si adegueranno al fine di trattare questo profilo come bot." flagAsCat: "Sono un gatto" @@ -321,7 +321,7 @@ copyUrl: "Copia URL" rename: "Modifica nome" avatar: "Foto del profilo" banner: "Intestazione" -displayOfSensitiveMedia: "Visibilità dei media sensibili" +displayOfSensitiveMedia: "Visibilità dei media espliciti" whenServerDisconnected: "Quando la connessione col server è persa" disconnectedFromServer: "Il server si è disconnesso" reload: "Ricarica" @@ -418,6 +418,7 @@ moderator: "Moderatore" moderation: "moderazione" moderationNote: "Promemoria di moderazione" addModerationNote: "Aggiungi promemoria di moderazione" +moderationLogs: "Cronologia di moderazione" nUsersMentioned: "{n} profili menzionati" securityKeyAndPasskey: "Chiave di sicurezza e accesso" securityKey: "Chiave di sicurezza" @@ -707,9 +708,10 @@ driveUsage: "Utilizzazione del Drive" noCrawle: "Rifiuta l'indicizzazione dai robot." noCrawleDescription: "Richiedi che i motori di ricerca non indicizzino la tua pagina di profilo, le tue note, pagine, ecc." lockedAccountInfo: "A meno che non imposti la visibilità delle tue note su \"Solo ai follower\", le tue note sono visibili da tutti, anche se hai configurato l'account per confermare manualmente le richieste di follow." -alwaysMarkSensitive: "Segnare i media come sensibili per impostazione predefinita" +alwaysMarkSensitive: "Segnare gli allegati come espliciti come opzione predefinita" loadRawImages: "Visualizza le intere immagini allegate invece delle miniature." disableShowingAnimatedImages: "Disabilita le immagini animate" +highlightSensitiveMedia: "Evidenzia i media espliciti" verificationEmailSent: "Una mail di verifica è stata inviata. Si prega di accedere al collegamento per compiere la verifica." notSet: "Non impostato" emailVerified: "Il tuo indirizzo email è stato verificato" @@ -926,7 +928,7 @@ type: "Tipo" speed: "Velocità" slow: "Lento" fast: "Veloce" -sensitiveMediaDetection: "Rilevamento dei contenuti sensibili." +sensitiveMediaDetection: "Rilevamento dei contenuti espliciti" localOnly: "Soltanto locale" remoteOnly: "Solo remoto" failedToUpload: "errore di caricamento" @@ -1006,11 +1008,11 @@ cannotBeChangedLater: "Non sarà più modificabile" reactionAcceptance: "Reazioni consentite" likeOnly: "Solo i Like" likeOnlyForRemote: "Solo Like remoti" -nonSensitiveOnly: "Solamente non sensibili" -nonSensitiveOnlyForLocalLikeOnlyForRemote: "Solamente non sensibili (solo Mi piace remoti)" +nonSensitiveOnly: "Soltanto non espliciti" +nonSensitiveOnlyForLocalLikeOnlyForRemote: "Soltanto non espliciti (reazioni remote)" rolesAssignedToMe: "I miei ruoli" resetPasswordConfirm: "Vuoi davvero ripristinare la password?" -sensitiveWords: "Parole sensibili" +sensitiveWords: "Parole esplicite" sensitiveWordsDescription: "Imposta automaticamente \"Home\" alla visibilità delle Note che contengono una qualsiasi parola tra queste configurate. Puoi separarle per riga." sensitiveWordsDescription2: "Gli spazi creano la relazione \"E\" tra parole (questo E quello). Racchiudere una parola nelle slash \"/\" la trasforma in Espressione Regolare." notesSearchNotAvailable: "Non è possibile cercare tra le Note." @@ -1116,6 +1118,8 @@ keepScreenOn: "Mantieni lo schermo acceso" verifiedLink: "Abbiamo confermato la validità di questo collegamento" notifyNotes: "Notifica nuove Note" unnotifyNotes: "Interrompi le notifiche di nuove Note" +authentication: "Autenticazione" +authenticationRequiredToContinue: "Per procedere, è richiesta l'autenticazione" _announcement: forExistingUsers: "Solo ai profili attuali" forExistingUsersDescription: "L'annuncio sarà visibile solo ai profili esistenti in questo momento. Se disabilitato, sarà visibile anche ai profili che verranno creati dopo la pubblicazione di questo annuncio." @@ -1149,6 +1153,8 @@ _serverSettings: appIconStyleRecommendation: "Poiché l'icona potrebbe essere ritagliata in un quadrato o in un cerchio, si raccomanda che abbia un margine colorato." appIconResolutionMustBe: "La risoluzione minima è {resolution}" manifestJsonOverride: "Sostituire il file manifest.json" + shortName: "Abbreviazione" + shortNameDescription: "Un'abbreviazione o un nome comune che può essere visualizzato al posto del nome ufficiale lungo del server." _accountMigration: moveFrom: "Migra un altro profilo dentro a questo" moveFromSub: "Crea un alias verso un altro profilo remoto" @@ -1478,9 +1484,9 @@ _role: or: "O" not: "NON" _sensitiveMediaDetection: - description: "L'apprendimento automatico può essere utilizzato per individuare automaticamente i media sensibili da moderare. Il carico del server aumenta leggermente." - sensitivity: "Sensibilità di rilevamento" - sensitivityDescription: "Una minore sensibilità riduce i falsi positivi (false positività). Una maggiore sensibilità riduce le omissioni (falsi negativi)." + description: "Utilizzare l'apprendimento automatico (machine learning) per riconoscere media espliciti e sottoporli alla moderazione. Aumenterà lievemente il carico del server." + sensitivity: "Sensibilità del rilevamento" + sensitivityDescription: "Abbassando la sensibilità si riducono i falsi positivi (rilevazioni errate). Aumentando la sensibilità si riduce il numero di rilevazioni mancate. (rilevazioni ignorate)." setSensitiveFlagAutomatically: "Impostare il flag NSFW." setSensitiveFlagAutomaticallyDescription: "Anche se questa impostazione è disattivata, il risultato della decisione viene conservato internamente." analyzeVideos: "Abilitazione dell'analisi video." @@ -1564,8 +1570,8 @@ _aboutMisskey: morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie mille! 🥰" patrons: "Sostenitori" _displayOfSensitiveMedia: - respect: "Nascondere i media sensibili" - ignore: "Non nascondere i media sensibili" + respect: "Nascondere i media espliciti" + ignore: "Non nascondere i media espliciti" force: "Nascondi tutti i media" _instanceTicker: none: "Nascondi" @@ -1795,6 +1801,7 @@ _antennaSources: homeTimeline: "Note dagli utenti che segui" users: "Note dagli utenti selezionati" userList: "Note dagli utenti della lista selezionata" + userBlacklist: "Tutte le Note tranne quelle di uno o più profili specificati" _weekday: sunday: "Domenica" monday: "Lunedì" @@ -2023,6 +2030,7 @@ _notification: notificationWillBeDisplayedLikeThis: "La notifica apparirà così" _types: all: "Tutto" + note: "Nuove Note" follow: "Novità follower" mention: "Menzioni" reply: "Risposte" @@ -2092,3 +2100,19 @@ _webhookSettings: renote: "Quando la Nota è Rinotata" reaction: "Quando ricevo una reazione" mention: "Quando mi menzionano" +_moderationLogTypes: + assignRole: "Assegna un ruolo" + unassignRole: "Disassegna un ruolo" + updateRole: "Aggiorna un ruolo" + suspend: "Sospensione" + unsuspend: "Toglie la sospensione" + addCustomEmoji: "Aggiunge una emoji personalizzata" + updateServerSettings: "Aggiorna le impostazioni del server" + updateUserNote: "Aggiorna il promemoria di moderazione" + deleteDriveFile: "Elimina file da Drive" + deleteNote: "Elimina la Nota" + createGlobalAnnouncement: "Crea un annuncio globale" + createUserAnnouncement: "Crea un annuncio ai profili iscritti" + resetPassword: "Ripristina la password" + suspendRemoteInstance: "Sospendi istanza remota" + unsuspendRemoteInstance: "Riattiva istanza remota" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 2c1f718192..efbb0ff5f1 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -2058,3 +2058,6 @@ _webhookSettings: renote: "Renoteされるとき~!" reaction: "ツッコミがあるとき~!" mention: "メンションがあるとき~!" +_moderationLogTypes: + suspend: "凍結" + resetPassword: "パスワードをリセット" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 48aaa2016b..0fcb39ebc7 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -2073,3 +2073,6 @@ _webhookSettings: renote: "누군가 내 글을 Renote했을 때" reaction: "누군가 내 노트에 리액션했을 때" mention: "누군가 나를 멘션했을 때" +_moderationLogTypes: + suspend: "정지" + resetPassword: "비밀번호 재설정" diff --git a/locales/lo-LA.yml b/locales/lo-LA.yml index 37251a95c8..22cb5857f9 100644 --- a/locales/lo-LA.yml +++ b/locales/lo-LA.yml @@ -463,3 +463,5 @@ _deck: mentions: "ກ່າວເຖິງ" _webhookSettings: name: "ຊື່" +_moderationLogTypes: + suspend: "ລະງັບ" diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index d75f807316..fd9ffa33f2 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -494,3 +494,6 @@ _deck: mentions: "Vermeldingen" _webhookSettings: name: "Naam" +_moderationLogTypes: + suspend: "Opschorten" + resetPassword: "Wachtwoord terugzetten" diff --git a/locales/no-NO.yml b/locales/no-NO.yml index 35a3866b95..00f22c0c4f 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -725,3 +725,5 @@ _deck: direct: "Direkte" _webhookSettings: name: "Navn" +_moderationLogTypes: + suspend: "Suspender" diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 1e9d61706b..1c7ebe8108 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1402,3 +1402,6 @@ _webhookSettings: renote: "Po udostępnieniu wpisu" reaction: "Po otrzymaniu reakcji" mention: "Po zostaniu wspomnianym" +_moderationLogTypes: + suspend: "Zawieś" + resetPassword: "Zresetuj hasło" diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 737bab9adc..f9e777bc75 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1497,3 +1497,6 @@ _webhookSettings: follow: "Quando seguindo um usuário" followed: "Quando sendo seguido" renote: "Quando repostado" +_moderationLogTypes: + suspend: "Suspender" + resetPassword: "Redefinir senha" diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml index 605fcc82f7..51c33085af 100644 --- a/locales/ro-RO.yml +++ b/locales/ro-RO.yml @@ -704,3 +704,6 @@ _deck: mentions: "Mențiuni" _webhookSettings: name: "Nume" +_moderationLogTypes: + suspend: "Suspendă" + resetPassword: "Resetează parola" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 0bd5db9268..937158978d 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1951,3 +1951,6 @@ _webhookSettings: createWebhook: "Создать вебхук" name: "Название" active: "Вкл." +_moderationLogTypes: + suspend: "Заморозить" + resetPassword: "Сброс пароля:" diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml index 8d2af55db9..e44aaafc0a 100644 --- a/locales/sk-SK.yml +++ b/locales/sk-SK.yml @@ -1451,3 +1451,6 @@ _deck: _webhookSettings: name: "Názov" active: "Zapnuté" +_moderationLogTypes: + suspend: "Zmraziť" + resetPassword: "Resetovať heslo" diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml index 507492d52c..62e7d412ab 100644 --- a/locales/sv-SE.yml +++ b/locales/sv-SE.yml @@ -573,3 +573,6 @@ _deck: _webhookSettings: name: "Namn" active: "Aktiverad" +_moderationLogTypes: + suspend: "Suspendera" + resetPassword: "Återställ Lösenord" diff --git a/locales/th-TH.yml b/locales/th-TH.yml index cf2f3b9a23..c252ce93f8 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -2065,3 +2065,6 @@ _webhookSettings: renote: "รีโน้ตแล้วเมื่อ" reaction: "เมื่อได้รับรีแอคชั่น" mention: "เมื่อกำลังถูกกล่าวถึง" +_moderationLogTypes: + suspend: "ถูกระงับ" + resetPassword: "รีเซ็ตรหัสผ่าน" diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index f8fb275eb9..1111c23091 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -448,3 +448,6 @@ _deck: tl: "Zaman çizelgesi" list: "Listeler" mentions: "Bahsetmeler" +_moderationLogTypes: + suspend: "askıya al" + resetPassword: "Şifre sıfırlama" diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 1516272c60..09b3eba745 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -1620,3 +1620,6 @@ _deck: _webhookSettings: name: "Ім'я" active: "Увімкнено" +_moderationLogTypes: + suspend: "Призупинити" + resetPassword: "Скинути пароль" diff --git a/locales/uz-UZ.yml b/locales/uz-UZ.yml index 8dbcbd9d09..726333958b 100644 --- a/locales/uz-UZ.yml +++ b/locales/uz-UZ.yml @@ -1084,3 +1084,6 @@ _webhookSettings: _events: renote: "Qayta qayd qilinganda" mention: "Eslanganda" +_moderationLogTypes: + suspend: "To'xtatish" + resetPassword: "Parolni tiklash" diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index 40688e98f3..3b34e4711c 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -1860,3 +1860,6 @@ _webhookSettings: _events: reaction: "Khi nhận được sự kiện" mention: "Khi có người nhắc tới bạn" +_moderationLogTypes: + suspend: "Vô hiệu hóa" + resetPassword: "Đặt lại mật khẩu" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index f1512ac348..f9da50e68a 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -418,6 +418,7 @@ moderator: "监察员" moderation: "管理" moderationNote: "管理笔记" addModerationNote: "添加管理笔记" +moderationLogs: "管理日志" nUsersMentioned: "{n} 被提到" securityKeyAndPasskey: "安全密钥或 Passkey" securityKey: "安全密钥" @@ -1152,6 +1153,8 @@ _serverSettings: appIconStyleRecommendation: "因为有可能会被裁切为圆形或者圆角矩形,建议使用边缘带有留白背景的图标。" appIconResolutionMustBe: "分辨率必须为 {resolution}。" manifestJsonOverride: "覆盖 mainfest.json" + shortName: "简称" + shortNameDescription: "如果服务器的正式名称很长,可以用简称或者別名来替代。" _accountMigration: moveFrom: "从别的账号迁移到此账户" moveFromSub: "为另一个账户建立别名" @@ -2027,6 +2030,7 @@ _notification: notificationWillBeDisplayedLikeThis: "通知将会这样表示" _types: all: "全部" + note: "用户的新帖子" follow: "关注中" mention: "提及" reply: "回复" @@ -2096,3 +2100,17 @@ _webhookSettings: renote: "被转发时" reaction: "被回应时" mention: "被提及时" +_moderationLogTypes: + assignRole: "分配角色" + unassignRole: "取消分配角色" + updateRole: "更新角色" + suspend: "冻结" + unsuspend: "解除冻结" + addCustomEmoji: "添加自定义表情符号" + updateServerSettings: "更新服务器设置" + updateUserNote: "更新管理笔记" + deleteDriveFile: "删除文件" + deleteNote: "删除帖子" + createGlobalAnnouncement: "创建全体通知" + createUserAnnouncement: "创建用户通知" + resetPassword: "重置密码" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index a031730a37..9a7840b53c 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -418,7 +418,8 @@ moderator: "審查員" moderation: "審查" moderationNote: "管理筆記" addModerationNote: "新增管理筆記" -nUsersMentioned: "被提及到 {n} 次" +moderationLogs: "管理日誌" +nUsersMentioned: "被 {n} 個人提及" securityKeyAndPasskey: "安全金鑰、Passkey" securityKey: "安全金鑰" lastUsed: "上次使用" @@ -2099,3 +2100,19 @@ _webhookSettings: renote: "當被轉發時" reaction: "當獲得反應時" mention: "當被提到時" +_moderationLogTypes: + assignRole: "指派角色" + unassignRole: "撤銷角色" + updateRole: "更新角色設定" + suspend: "凍結" + unsuspend: "解除凍結" + addCustomEmoji: "新增自訂表情符號" + updateServerSettings: "更新伺服器設定" + updateUserNote: "更新管理筆記" + deleteDriveFile: "刪除檔案" + deleteNote: "刪除貼文" + createGlobalAnnouncement: "建立全網通知" + createUserAnnouncement: "建立使用者通知" + resetPassword: "重設密碼" + suspendRemoteInstance: "封鎖遠端伺服器" + unsuspendRemoteInstance: "解除封鎖遠端伺服器" From 8d2fb99662e227a3e6bd64b8adb5da4a146c0dce Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Sep 2023 11:10:27 +0900 Subject: [PATCH 10/10] 2023.9.0-rc.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8e5540f68d..4f42b5cec5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2023.9.0-rc.2", + "version": "2023.9.0-rc.3", "codename": "nasubi", "repository": { "type": "git",