437 lines
9.3 KiB
TypeScript
437 lines
9.3 KiB
TypeScript
import type { operations } from './autogen/types.js';
|
|
import type {
|
|
AbuseReportNotificationRecipient,
|
|
Ad,
|
|
Announcement,
|
|
EmojiDetailed,
|
|
Flash,
|
|
GalleryPost,
|
|
InviteCode,
|
|
MetaDetailed,
|
|
Note,
|
|
Page,
|
|
Role,
|
|
ReversiGameDetailed,
|
|
SystemWebhook,
|
|
UserLite,
|
|
} from './autogen/models.js';
|
|
|
|
export const notificationTypes = ['note', 'follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'pollEnded', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app', 'roleAssigned', 'achievementEarned', 'edited'] as const;
|
|
|
|
export const noteVisibilities = ['public', 'home', 'followers', 'specified'] as const;
|
|
|
|
export const mutedNoteReasons = ['word', 'manual', 'spam', 'other'] as const;
|
|
|
|
export const followingVisibilities = ['public', 'followers', 'private'] as const;
|
|
|
|
export const followersVisibilities = ['public', 'followers', 'private'] as const;
|
|
|
|
export const permissions = [
|
|
'read:account',
|
|
'write:account',
|
|
'read:blocks',
|
|
'write:blocks',
|
|
'read:drive',
|
|
'write:drive',
|
|
'read:favorites',
|
|
'write:favorites',
|
|
'read:following',
|
|
'write:following',
|
|
'read:messaging',
|
|
'write:messaging',
|
|
'read:mutes',
|
|
'write:mutes',
|
|
'write:notes',
|
|
'read:notifications',
|
|
'write:notifications',
|
|
'read:reactions',
|
|
'write:reactions',
|
|
'write:votes',
|
|
'read:pages',
|
|
'write:pages',
|
|
'write:page-likes',
|
|
'read:page-likes',
|
|
'read:user-groups',
|
|
'write:user-groups',
|
|
'read:channels',
|
|
'write:channels',
|
|
'read:gallery',
|
|
'write:gallery',
|
|
'read:gallery-likes',
|
|
'write:gallery-likes',
|
|
'read:flash',
|
|
'write:flash',
|
|
'read:flash-likes',
|
|
'write:flash-likes',
|
|
'read:admin:abuse-user-reports',
|
|
'write:admin:delete-account',
|
|
'write:admin:delete-all-files-of-a-user',
|
|
'read:admin:index-stats',
|
|
'read:admin:table-stats',
|
|
'read:admin:user-ips',
|
|
'read:admin:meta',
|
|
'write:admin:reset-password',
|
|
'write:admin:resolve-abuse-user-report',
|
|
'write:admin:send-email',
|
|
'read:admin:server-info',
|
|
'read:admin:show-moderation-log',
|
|
'read:admin:show-user',
|
|
'write:admin:suspend-user',
|
|
'write:admin:approve-user',
|
|
'write:admin:nsfw-user',
|
|
'write:admin:unnsfw-user',
|
|
'write:admin:silence-user',
|
|
'write:admin:unsilence-user',
|
|
'write:admin:unset-user-avatar',
|
|
'write:admin:unset-user-banner',
|
|
'write:admin:unsuspend-user',
|
|
'write:admin:meta',
|
|
'write:admin:user-note',
|
|
'write:admin:roles',
|
|
'read:admin:roles',
|
|
'write:admin:relays',
|
|
'read:admin:relays',
|
|
'write:admin:invite-codes',
|
|
'read:admin:invite-codes',
|
|
'write:admin:announcements',
|
|
'read:admin:announcements',
|
|
'write:admin:avatar-decorations',
|
|
'read:admin:avatar-decorations',
|
|
'write:admin:federation',
|
|
'write:admin:account',
|
|
'read:admin:account',
|
|
'write:admin:emoji',
|
|
'read:admin:emoji',
|
|
'write:admin:queue',
|
|
'read:admin:queue',
|
|
'write:admin:promo',
|
|
'write:admin:drive',
|
|
'read:admin:drive',
|
|
'write:admin:ad',
|
|
'read:admin:ad',
|
|
'write:invite-codes',
|
|
'read:invite-codes',
|
|
'write:clip-favorite',
|
|
'read:clip-favorite',
|
|
'read:federation',
|
|
'write:report-abuse',
|
|
] as const;
|
|
|
|
export const moderationLogTypes = [
|
|
'updateServerSettings',
|
|
'suspend',
|
|
'approve',
|
|
'unsuspend',
|
|
'updateUserNote',
|
|
'addCustomEmoji',
|
|
'updateCustomEmoji',
|
|
'deleteCustomEmoji',
|
|
'assignRole',
|
|
'unassignRole',
|
|
'createRole',
|
|
'updateRole',
|
|
'deleteRole',
|
|
'clearQueue',
|
|
'promoteQueue',
|
|
'deleteDriveFile',
|
|
'deleteNote',
|
|
'createGlobalAnnouncement',
|
|
'createUserAnnouncement',
|
|
'updateGlobalAnnouncement',
|
|
'updateUserAnnouncement',
|
|
'deleteGlobalAnnouncement',
|
|
'deleteUserAnnouncement',
|
|
'resetPassword',
|
|
'suspendRemoteInstance',
|
|
'unsuspendRemoteInstance',
|
|
'updateRemoteInstanceNote',
|
|
'markSensitiveDriveFile',
|
|
'unmarkSensitiveDriveFile',
|
|
'resolveAbuseReport',
|
|
'createInvitation',
|
|
'createAd',
|
|
'updateAd',
|
|
'deleteAd',
|
|
'createAvatarDecoration',
|
|
'updateAvatarDecoration',
|
|
'deleteAvatarDecoration',
|
|
'unsetUserAvatar',
|
|
'unsetUserBanner',
|
|
'createSystemWebhook',
|
|
'updateSystemWebhook',
|
|
'deleteSystemWebhook',
|
|
'createAbuseReportNotificationRecipient',
|
|
'updateAbuseReportNotificationRecipient',
|
|
'deleteAbuseReportNotificationRecipient',
|
|
'deleteAccount',
|
|
'deletePage',
|
|
'deleteFlash',
|
|
'deleteGalleryPost',
|
|
] as const;
|
|
|
|
// See: packages/backend/src/core/ReversiService.ts@L410
|
|
export const reversiUpdateKeys = [
|
|
'map',
|
|
'bw',
|
|
'isLlotheo',
|
|
'canPutEverywhere',
|
|
'loopedBoard',
|
|
'timeLimitForEachTurn',
|
|
] as const satisfies (keyof ReversiGameDetailed)[];
|
|
|
|
export type ReversiUpdateKey = typeof reversiUpdateKeys[number];
|
|
|
|
type AvatarDecoration = UserLite['avatarDecorations'][number];
|
|
|
|
type ReceivedAbuseReport = {
|
|
reportId: AbuseReportNotificationRecipient['id'];
|
|
report: operations['admin___abuse-user-reports']['responses'][200]['content']['application/json'];
|
|
forwarded: boolean;
|
|
};
|
|
|
|
export type ModerationLogPayloads = {
|
|
updateServerSettings: {
|
|
before: MetaDetailed | null;
|
|
after: MetaDetailed | null;
|
|
};
|
|
suspend: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
approve: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
unsuspend: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
updateUserNote: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
before: string | null;
|
|
after: string | null;
|
|
};
|
|
addCustomEmoji: {
|
|
emojiId: string;
|
|
emoji: EmojiDetailed;
|
|
};
|
|
updateCustomEmoji: {
|
|
emojiId: string;
|
|
before: EmojiDetailed;
|
|
after: EmojiDetailed;
|
|
};
|
|
deleteCustomEmoji: {
|
|
emojiId: string;
|
|
emoji: EmojiDetailed;
|
|
};
|
|
assignRole: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
roleId: string;
|
|
roleName: string;
|
|
expiresAt: string | null;
|
|
};
|
|
unassignRole: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
roleId: string;
|
|
roleName: string;
|
|
};
|
|
createRole: {
|
|
roleId: string;
|
|
role: Role;
|
|
};
|
|
updateRole: {
|
|
roleId: string;
|
|
before: Role;
|
|
after: Role;
|
|
};
|
|
deleteRole: {
|
|
roleId: string;
|
|
role: Role;
|
|
};
|
|
clearQueue: Record<string, never>;
|
|
promoteQueue: Record<string, never>;
|
|
deleteDriveFile: {
|
|
fileId: string;
|
|
fileUserId: string | null;
|
|
fileUserUsername: string | null;
|
|
fileUserHost: string | null;
|
|
};
|
|
deleteNote: {
|
|
noteId: string;
|
|
noteUserId: string;
|
|
noteUserUsername: string;
|
|
noteUserHost: string | null;
|
|
note: Note;
|
|
};
|
|
createGlobalAnnouncement: {
|
|
announcementId: string;
|
|
announcement: Announcement;
|
|
};
|
|
createUserAnnouncement: {
|
|
announcementId: string;
|
|
announcement: Announcement;
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
updateGlobalAnnouncement: {
|
|
announcementId: string;
|
|
before: Announcement;
|
|
after: Announcement;
|
|
};
|
|
updateUserAnnouncement: {
|
|
announcementId: string;
|
|
before: Announcement;
|
|
after: Announcement;
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
deleteGlobalAnnouncement: {
|
|
announcementId: string;
|
|
announcement: Announcement;
|
|
};
|
|
deleteUserAnnouncement: {
|
|
announcementId: string;
|
|
announcement: Announcement;
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
resetPassword: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
suspendRemoteInstance: {
|
|
id: string;
|
|
host: string;
|
|
};
|
|
unsuspendRemoteInstance: {
|
|
id: string;
|
|
host: string;
|
|
};
|
|
updateRemoteInstanceNote: {
|
|
id: string;
|
|
host: string;
|
|
before: string | null;
|
|
after: string | null;
|
|
};
|
|
markSensitiveDriveFile: {
|
|
fileId: string;
|
|
fileUserId: string | null;
|
|
fileUserUsername: string | null;
|
|
fileUserHost: string | null;
|
|
};
|
|
unmarkSensitiveDriveFile: {
|
|
fileId: string;
|
|
fileUserId: string | null;
|
|
fileUserUsername: string | null;
|
|
fileUserHost: string | null;
|
|
};
|
|
resolveAbuseReport: {
|
|
reportId: string;
|
|
report: ReceivedAbuseReport;
|
|
forwarded: boolean;
|
|
};
|
|
createInvitation: {
|
|
invitations: InviteCode[];
|
|
};
|
|
createAd: {
|
|
adId: string;
|
|
ad: Ad;
|
|
};
|
|
updateAd: {
|
|
adId: string;
|
|
before: Ad;
|
|
after: Ad;
|
|
};
|
|
deleteAd: {
|
|
adId: string;
|
|
ad: Ad;
|
|
};
|
|
createAvatarDecoration: {
|
|
avatarDecorationId: string;
|
|
avatarDecoration: AvatarDecoration;
|
|
};
|
|
updateAvatarDecoration: {
|
|
avatarDecorationId: string;
|
|
before: AvatarDecoration;
|
|
after: AvatarDecoration;
|
|
};
|
|
deleteAvatarDecoration: {
|
|
avatarDecorationId: string;
|
|
avatarDecoration: AvatarDecoration;
|
|
};
|
|
unsetUserAvatar: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
fileId: string;
|
|
};
|
|
unsetUserBanner: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
fileId: string;
|
|
};
|
|
createSystemWebhook: {
|
|
systemWebhookId: string;
|
|
webhook: SystemWebhook;
|
|
};
|
|
updateSystemWebhook: {
|
|
systemWebhookId: string;
|
|
before: SystemWebhook;
|
|
after: SystemWebhook;
|
|
};
|
|
deleteSystemWebhook: {
|
|
systemWebhookId: string;
|
|
webhook: SystemWebhook;
|
|
};
|
|
createAbuseReportNotificationRecipient: {
|
|
recipientId: string;
|
|
recipient: AbuseReportNotificationRecipient;
|
|
};
|
|
updateAbuseReportNotificationRecipient: {
|
|
recipientId: string;
|
|
before: AbuseReportNotificationRecipient;
|
|
after: AbuseReportNotificationRecipient;
|
|
};
|
|
deleteAbuseReportNotificationRecipient: {
|
|
recipientId: string;
|
|
recipient: AbuseReportNotificationRecipient;
|
|
};
|
|
deleteAccount: {
|
|
userId: string;
|
|
userUsername: string;
|
|
userHost: string | null;
|
|
};
|
|
deletePage: {
|
|
pageId: string;
|
|
pageUserId: string;
|
|
pageUserUsername: string;
|
|
page: Page;
|
|
};
|
|
deleteFlash: {
|
|
flashId: string;
|
|
flashUserId: string;
|
|
flashUserUsername: string;
|
|
flash: Flash;
|
|
};
|
|
deleteGalleryPost: {
|
|
postId: string;
|
|
postUserId: string;
|
|
postUserUsername: string;
|
|
post: GalleryPost;
|
|
};
|
|
};
|