diff options
Diffstat (limited to 'packages/frontend-shared/js/const.ts')
| -rw-r--r-- | packages/frontend-shared/js/const.ts | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/packages/frontend-shared/js/const.ts b/packages/frontend-shared/js/const.ts new file mode 100644 index 0000000000..e5a2eca3b3 --- /dev/null +++ b/packages/frontend-shared/js/const.ts @@ -0,0 +1,201 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +// ブラウザで直接表示することを許可するファイルの種類のリスト +// ここに含まれないものは application/octet-stream としてレスポンスされる +// SVGはXSSを生むので許可しない +export const FILE_TYPE_BROWSERSAFE = [ + // Images + 'image/png', + 'image/gif', + 'image/jpeg', + 'image/webp', + 'image/avif', + 'image/apng', + 'image/bmp', + 'image/tiff', + 'image/x-icon', + 'image/jxl', + + // OggS + 'audio/opus', + 'video/ogg', + 'audio/ogg', + 'application/ogg', + + // ISO/IEC base media file format + 'video/quicktime', + 'video/mp4', + 'audio/mp4', + 'video/x-m4v', + 'audio/x-m4a', + 'video/3gpp', + 'video/3gpp2', + + 'video/mpeg', + 'audio/mpeg', + + 'video/webm', + 'audio/webm', + + 'audio/aac', + + // see https://github.com/misskey-dev/misskey/pull/10686 + 'audio/flac', + 'audio/wav', + // backward compatibility + 'audio/x-flac', + 'audio/vnd.wave', +]; + +export const FILE_TYPE_TRACKER_MODULES = [ + 'audio/mod', + 'audio/x-mod', + 'audio/s3m', + 'audio/x-s3m', + 'audio/xm', + 'audio/x-xm', + 'audio/it', + 'audio/x-it', +]; + +export const FILE_EXT_TRACKER_MODULES = [ + 'mod', + 's3m', + 'xm', + 'it', + 'mptm', + 'stm', + 'nst', + 'm15', + 'stk', + 'wow', + 'ult', + '669', + 'mtm', + 'med', + 'far', + 'mdl', + 'ams', + 'dsm', + 'amf', + 'okt', + 'dmf', + 'ptm', + 'psm', + 'mt2', + 'dbm', + 'digi', + 'imf', + 'j2b', + 'gdm', + 'umx', + 'plm', + 'mo3', + 'xpk', + 'ppm', + 'mmcmp', +]; + +/* +https://github.com/sindresorhus/file-type/blob/main/supported.js +https://github.com/sindresorhus/file-type/blob/main/core.js +https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Containers +*/ + +export const notificationTypes = [ + 'note', + 'follow', + 'mention', + 'reply', + 'renote', + 'quote', + 'reaction', + 'pollEnded', + 'receiveFollowRequest', + 'followRequestAccepted', + 'roleAssigned', + 'achievementEarned', + 'exportCompleted', + 'test', + 'app', + 'edited' +] as const; +export const obsoleteNotificationTypes = ['pollVote', 'groupInvited'] as const; + +export const ROLE_POLICIES = [ + 'gtlAvailable', + 'ltlAvailable', + 'btlAvailable', + 'canPublicNote', + 'canImportNotes', + 'mentionLimit', + 'canInvite', + 'inviteLimit', + 'inviteLimitCycle', + 'inviteExpirationTime', + 'canManageCustomEmojis', + 'canManageAvatarDecorations', + 'canSearchNotes', + 'canUseTranslator', + 'canHideAds', + 'driveCapacityMb', + 'alwaysMarkNsfw', + 'canUpdateBioMedia', + 'pinLimit', + 'antennaLimit', + 'wordMuteLimit', + 'webhookLimit', + 'clipLimit', + 'noteEachClipsLimit', + 'userListLimit', + 'userEachUserListsLimit', + 'rateLimitFactor', + 'avatarDecorationLimit', + 'canImportAntennas', + 'canImportBlocking', + 'canImportFollowing', + 'canImportMuting', + 'canImportUserLists', +] as const; + +// なんか動かない +//export const CURRENT_STICKY_TOP = Symbol('CURRENT_STICKY_TOP'); +//export const CURRENT_STICKY_BOTTOM = Symbol('CURRENT_STICKY_BOTTOM'); +export const CURRENT_STICKY_TOP = 'CURRENT_STICKY_TOP'; +export const CURRENT_STICKY_BOTTOM = 'CURRENT_STICKY_BOTTOM'; + +export const DEFAULT_SERVER_ERROR_IMAGE_URL = '/status/error.png'; +export const DEFAULT_NOT_FOUND_IMAGE_URL = '/status/missingpage.webp'; +export const DEFAULT_INFO_IMAGE_URL = '/status/nothinghere.png'; + +export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'border', 'font', 'blur', 'rainbow', 'sparkle', 'rotate', 'ruby', 'unixtime', 'crop', 'fade', 'followmouse']; +export const MFM_PARAMS: Record<typeof MFM_TAGS[number], string[]> = { + tada: ['speed=', 'delay='], + jelly: ['speed=', 'delay='], + twitch: ['speed=', 'delay='], + shake: ['speed=', 'delay='], + spin: ['speed=', 'delay=', 'left', 'alternate', 'x', 'y'], + jump: ['speed=', 'delay='], + bounce: ['speed=', 'delay='], + flip: ['h', 'v'], + x2: [], + x3: [], + x4: [], + scale: ['x=', 'y='], + position: ['x=', 'y='], + fg: ['color='], + bg: ['color='], + border: ['width=', 'style=', 'color=', 'radius=', 'noclip'], + font: ['serif', 'monospace', 'cursive', 'fantasy', 'emoji', 'math'], + blur: [], + rainbow: ['speed=', 'delay='], + rotate: ['deg='], + ruby: [], + unixtime: [], + fade: ['speed=', 'delay=', 'loop=', 'out'], + crop: ['top=', 'bottom=', 'left=', 'right='], + followmouse: ['x', 'y', 'rotateByVelocity', 'speed='], +}; |