cda31d3dc7
This reverts commit 5382dc5da8
.
It turns out this sends an inccorect time info to the stream
since JavaScript's Date object doesn't have timezone info
I'll revisit this in the future
1307 lines
31 KiB
TypeScript
1307 lines
31 KiB
TypeScript
/* tslint:disable */
|
|
/* eslint-disable */
|
|
|
|
/* auto-generated by NAPI-RS */
|
|
|
|
export const SECOND: number
|
|
export const MINUTE: number
|
|
export const HOUR: number
|
|
export const DAY: number
|
|
export const USER_ONLINE_THRESHOLD: number
|
|
export const USER_ACTIVE_THRESHOLD: number
|
|
/**
|
|
* List of file types allowed to be viewed directly in the browser
|
|
* Anything not included here will be responded as application/octet-stream
|
|
* SVG is not allowed because it generates XSS <- we need to fix this and later allow it to be viewed directly
|
|
* 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 FILE_TYPE_BROWSERSAFE: string[]
|
|
export interface EnvConfig {
|
|
onlyQueue: boolean
|
|
onlyServer: boolean
|
|
noDaemons: boolean
|
|
disableClustering: boolean
|
|
verbose: boolean
|
|
withLogTime: boolean
|
|
slow: boolean
|
|
}
|
|
export function loadEnv(): EnvConfig
|
|
export interface ServerConfig {
|
|
url: string
|
|
port: number
|
|
/** host to listen on */
|
|
bind?: string
|
|
disableHsts?: boolean
|
|
db: DbConfig
|
|
redis: RedisConfig
|
|
cacheServer?: RedisConfig
|
|
proxy?: string
|
|
proxySmtp?: string
|
|
proxyBypassHosts?: Array<string>
|
|
allowedPrivateNetworks?: Array<string>
|
|
/** `NapiValue` is not implemented for `u64` */
|
|
maxFileSize?: number
|
|
accessLog?: string
|
|
clusterLimits?: WorkerConfigInternal
|
|
cuid?: IdConfig
|
|
outgoingAddress?: string
|
|
deliverJobConcurrency?: number
|
|
inboxJobConcurrency?: number
|
|
deliverJobPerSec?: number
|
|
inboxJobPerSec?: number
|
|
deliverJobMaxAttempts?: number
|
|
inboxJobMaxAttempts?: number
|
|
/** deprecated */
|
|
logLevel?: Array<string>
|
|
maxLogLevel?: string
|
|
syslog?: SysLogConfig
|
|
proxyRemoteFiles?: boolean
|
|
mediaProxy?: string
|
|
summalyProxyUrl?: string
|
|
reservedUsernames?: Array<string>
|
|
maxUserSignups?: number
|
|
isManagedHosting?: boolean
|
|
maxNoteLength?: number
|
|
maxCaptionLength?: number
|
|
deepl?: DeepLConfig
|
|
libreTranslate?: LibreTranslateConfig
|
|
email?: EmailConfig
|
|
objectStorage?: ObjectStorageConfig
|
|
}
|
|
export interface DbConfig {
|
|
host: string
|
|
port: number
|
|
db: string
|
|
user: string
|
|
pass: string
|
|
disableCache?: boolean
|
|
extra?: any
|
|
}
|
|
export interface RedisConfig {
|
|
host: string
|
|
port: number
|
|
family?: number
|
|
user?: string
|
|
pass?: string
|
|
tls?: TlsConfig
|
|
db: number
|
|
prefix?: string
|
|
}
|
|
export interface TlsConfig {
|
|
host: string
|
|
rejectUnauthorized: boolean
|
|
}
|
|
export interface WorkerConfig {
|
|
web: number
|
|
queue: number
|
|
}
|
|
export interface WorkerConfigInternal {
|
|
web?: number
|
|
queue?: number
|
|
}
|
|
export interface IdConfig {
|
|
length?: number
|
|
fingerprint?: string
|
|
}
|
|
export interface SysLogConfig {
|
|
host: string
|
|
port: number
|
|
}
|
|
export interface DeepLConfig {
|
|
managed?: boolean
|
|
authKey?: string
|
|
isPro?: boolean
|
|
}
|
|
export interface LibreTranslateConfig {
|
|
managed?: boolean
|
|
apiUrl?: string
|
|
apiKey?: string
|
|
}
|
|
export interface EmailConfig {
|
|
managed?: boolean
|
|
address?: string
|
|
host?: string
|
|
port?: number
|
|
user?: string
|
|
pass?: string
|
|
useImplicitSslTls?: boolean
|
|
}
|
|
export interface ObjectStorageConfig {
|
|
managed?: boolean
|
|
baseUrl?: string
|
|
bucket?: string
|
|
prefix?: string
|
|
endpoint?: string
|
|
region?: string
|
|
accessKey?: string
|
|
secretKey?: string
|
|
useSsl?: boolean
|
|
connnectOverProxy?: boolean
|
|
setPublicReadOnUpload?: boolean
|
|
s3ForcePathStyle?: boolean
|
|
}
|
|
export interface Config {
|
|
url: string
|
|
port: number
|
|
bind?: string
|
|
disableHsts?: boolean
|
|
db: DbConfig
|
|
redis: RedisConfig
|
|
cacheServer?: RedisConfig
|
|
proxy?: string
|
|
proxySmtp?: string
|
|
proxyBypassHosts?: Array<string>
|
|
allowedPrivateNetworks?: Array<string>
|
|
maxFileSize?: number
|
|
accessLog?: string
|
|
clusterLimits: WorkerConfig
|
|
cuid?: IdConfig
|
|
outgoingAddress?: string
|
|
deliverJobConcurrency?: number
|
|
inboxJobConcurrency?: number
|
|
deliverJobPerSec?: number
|
|
inboxJobPerSec?: number
|
|
deliverJobMaxAttempts?: number
|
|
inboxJobMaxAttempts?: number
|
|
/** deprecated */
|
|
logLevel?: Array<string>
|
|
maxLogLevel?: string
|
|
syslog?: SysLogConfig
|
|
proxyRemoteFiles?: boolean
|
|
mediaProxy?: string
|
|
summalyProxyUrl?: string
|
|
reservedUsernames?: Array<string>
|
|
maxUserSignups?: number
|
|
isManagedHosting?: boolean
|
|
maxNoteLength: number
|
|
maxCaptionLength: number
|
|
deepl?: DeepLConfig
|
|
libreTranslate?: LibreTranslateConfig
|
|
email?: EmailConfig
|
|
objectStorage?: ObjectStorageConfig
|
|
version: string
|
|
host: string
|
|
hostname: string
|
|
redisKeyPrefix: string
|
|
scheme: string
|
|
wsScheme: string
|
|
apiUrl: string
|
|
wsUrl: string
|
|
authUrl: string
|
|
driveUrl: string
|
|
userAgent: string
|
|
clientEntry: Manifest
|
|
}
|
|
export interface Manifest {
|
|
file: string
|
|
name: string
|
|
src: string
|
|
isEntry: boolean
|
|
isDynamicEntry: boolean
|
|
imports: Array<string>
|
|
dynamicImports: Array<string>
|
|
css: Array<string>
|
|
assets: Array<string>
|
|
}
|
|
export function loadConfig(): Config
|
|
export interface Acct {
|
|
username: string
|
|
host: string | null
|
|
}
|
|
export function stringToAcct(acct: string): Acct
|
|
export function acctToString(acct: Acct): string
|
|
export function addNoteToAntenna(antennaId: string, note: Note): void
|
|
/**
|
|
* Checks if a server is blocked.
|
|
*
|
|
* ## Argument
|
|
* `host` - punycoded instance host
|
|
*/
|
|
export function isBlockedServer(host: string): Promise<boolean>
|
|
/**
|
|
* Checks if a server is silenced.
|
|
*
|
|
* ## Argument
|
|
* `host` - punycoded instance host
|
|
*/
|
|
export function isSilencedServer(host: string): Promise<boolean>
|
|
/**
|
|
* Checks if a server is allowlisted.
|
|
* Returns `Ok(true)` if private mode is disabled.
|
|
*
|
|
* ## Argument
|
|
* `host` - punycoded instance host
|
|
*/
|
|
export function isAllowedServer(host: string): Promise<boolean>
|
|
/** TODO: handle name collisions better */
|
|
export interface NoteLikeForCheckWordMute {
|
|
fileIds: Array<string>
|
|
userId: string | null
|
|
text: string | null
|
|
cw: string | null
|
|
renoteId: string | null
|
|
replyId: string | null
|
|
}
|
|
export function checkWordMute(note: NoteLikeForCheckWordMute, mutedWordLists: Array<Array<string>>, mutedPatterns: Array<string>): Promise<boolean>
|
|
export function getFullApAccount(username: string, host?: string | undefined | null): string
|
|
export function isSelfHost(host?: string | undefined | null): boolean
|
|
export function isSameOrigin(uri: string): boolean
|
|
export function extractHost(uri: string): string
|
|
export function toPuny(host: string): string
|
|
export function isUnicodeEmoji(s: string): boolean
|
|
export function sqlLikeEscape(src: string): string
|
|
export function safeForSql(src: string): boolean
|
|
/** Convert milliseconds to a human readable string */
|
|
export function formatMilliseconds(milliseconds: number): string
|
|
export interface ImageSize {
|
|
width: number
|
|
height: number
|
|
}
|
|
export function getImageSizeFromUrl(url: string): Promise<ImageSize>
|
|
/** TODO: handle name collisions better */
|
|
export interface NoteLikeForGetNoteSummary {
|
|
fileIds: Array<string>
|
|
text: string | null
|
|
cw: string | null
|
|
hasPoll: boolean
|
|
}
|
|
export function getNoteSummary(note: NoteLikeForGetNoteSummary): string
|
|
export function isSafeUrl(url: string): boolean
|
|
export function latestVersion(): Promise<string>
|
|
export function toMastodonId(firefishId: string): string | null
|
|
export function fromMastodonId(mastodonId: string): string | null
|
|
export function fetchMeta(useCache: boolean): Promise<Meta>
|
|
export interface PugArgs {
|
|
img: string | null
|
|
title: string
|
|
instanceName: string
|
|
desc: string | null
|
|
icon: string | null
|
|
splashIcon: string | null
|
|
themeColor: string | null
|
|
randomMotd: string
|
|
privateMode: boolean | null
|
|
}
|
|
export function metaToPugArgs(meta: Meta): PugArgs
|
|
export function nyaify(text: string, lang?: string | undefined | null): string
|
|
export function hashPassword(password: string): string
|
|
export function verifyPassword(password: string, hash: string): boolean
|
|
export function isOldPasswordAlgorithm(hash: string): boolean
|
|
export interface DecodedReaction {
|
|
reaction: string
|
|
name: string | null
|
|
host: string | null
|
|
}
|
|
export function decodeReaction(reaction: string): DecodedReaction
|
|
export function countReactions(reactions: Record<string, number>): Record<string, number>
|
|
export function toDbReaction(reaction?: string | undefined | null, host?: string | undefined | null): Promise<string>
|
|
/** Delete all entries in the "attestation_challenge" table created at more than 5 minutes ago */
|
|
export function removeOldAttestationChallenges(): Promise<void>
|
|
export interface AbuseUserReport {
|
|
id: string
|
|
createdAt: Date
|
|
targetUserId: string
|
|
reporterId: string
|
|
assigneeId: string | null
|
|
resolved: boolean
|
|
comment: string
|
|
targetUserHost: string | null
|
|
reporterHost: string | null
|
|
forwarded: boolean
|
|
}
|
|
export interface AccessToken {
|
|
id: string
|
|
createdAt: Date
|
|
token: string
|
|
hash: string
|
|
userId: string
|
|
appId: string | null
|
|
lastUsedAt: Date | null
|
|
session: string | null
|
|
name: string | null
|
|
description: string | null
|
|
iconUrl: string | null
|
|
permission: Array<string>
|
|
fetched: boolean
|
|
}
|
|
export interface Ad {
|
|
id: string
|
|
createdAt: Date
|
|
expiresAt: Date
|
|
place: string
|
|
priority: string
|
|
url: string
|
|
imageUrl: string
|
|
memo: string
|
|
ratio: number
|
|
}
|
|
export interface Announcement {
|
|
id: string
|
|
createdAt: Date
|
|
text: string
|
|
title: string
|
|
imageUrl: string | null
|
|
updatedAt: Date | null
|
|
showPopup: boolean
|
|
isGoodNews: boolean
|
|
}
|
|
export interface AnnouncementRead {
|
|
id: string
|
|
userId: string
|
|
announcementId: string
|
|
createdAt: Date
|
|
}
|
|
export interface Antenna {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
name: string
|
|
src: AntennaSrcEnum
|
|
userListId: string | null
|
|
keywords: Json
|
|
withFile: boolean
|
|
expression: string | null
|
|
notify: boolean
|
|
caseSensitive: boolean
|
|
withReplies: boolean
|
|
userGroupJoiningId: string | null
|
|
users: Array<string>
|
|
excludeKeywords: Json
|
|
instances: Json
|
|
}
|
|
export interface App {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string | null
|
|
secret: string
|
|
name: string
|
|
description: string
|
|
permission: Array<string>
|
|
callbackUrl: string | null
|
|
}
|
|
export interface AttestationChallenge {
|
|
id: string
|
|
userId: string
|
|
challenge: string
|
|
createdAt: Date
|
|
registrationChallenge: boolean
|
|
}
|
|
export interface AuthSession {
|
|
id: string
|
|
createdAt: Date
|
|
token: string
|
|
userId: string | null
|
|
appId: string
|
|
}
|
|
export interface Blocking {
|
|
id: string
|
|
createdAt: Date
|
|
blockeeId: string
|
|
blockerId: string
|
|
}
|
|
export interface Channel {
|
|
id: string
|
|
createdAt: Date
|
|
lastNotedAt: Date | null
|
|
userId: string | null
|
|
name: string
|
|
description: string | null
|
|
bannerId: string | null
|
|
notesCount: number
|
|
usersCount: number
|
|
}
|
|
export interface ChannelFollowing {
|
|
id: string
|
|
createdAt: Date
|
|
followeeId: string
|
|
followerId: string
|
|
}
|
|
export interface ChannelNotePining {
|
|
id: string
|
|
createdAt: Date
|
|
channelId: string
|
|
noteId: string
|
|
}
|
|
export interface Clip {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
name: string
|
|
isPublic: boolean
|
|
description: string | null
|
|
}
|
|
export interface ClipNote {
|
|
id: string
|
|
noteId: string
|
|
clipId: string
|
|
}
|
|
export interface DriveFile {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string | null
|
|
userHost: string | null
|
|
md5: string
|
|
name: string
|
|
type: string
|
|
size: number
|
|
comment: string | null
|
|
properties: Json
|
|
storedInternal: boolean
|
|
url: string
|
|
thumbnailUrl: string | null
|
|
webpublicUrl: string | null
|
|
accessKey: string | null
|
|
thumbnailAccessKey: string | null
|
|
webpublicAccessKey: string | null
|
|
uri: string | null
|
|
src: string | null
|
|
folderId: string | null
|
|
isSensitive: boolean
|
|
isLink: boolean
|
|
blurhash: string | null
|
|
webpublicType: string | null
|
|
requestHeaders: Json | null
|
|
requestIp: string | null
|
|
usageHint: DriveFileUsageHintEnum | null
|
|
}
|
|
export interface DriveFolder {
|
|
id: string
|
|
createdAt: Date
|
|
name: string
|
|
userId: string | null
|
|
parentId: string | null
|
|
}
|
|
export interface Emoji {
|
|
id: string
|
|
updatedAt: Date | null
|
|
name: string
|
|
host: string | null
|
|
originalUrl: string
|
|
uri: string | null
|
|
type: string | null
|
|
aliases: Array<string>
|
|
category: string | null
|
|
publicUrl: string
|
|
license: string | null
|
|
width: number | null
|
|
height: number | null
|
|
}
|
|
export interface FollowRequest {
|
|
id: string
|
|
createdAt: Date
|
|
followeeId: string
|
|
followerId: string
|
|
requestId: string | null
|
|
followerHost: string | null
|
|
followerInbox: string | null
|
|
followerSharedInbox: string | null
|
|
followeeHost: string | null
|
|
followeeInbox: string | null
|
|
followeeSharedInbox: string | null
|
|
}
|
|
export interface Following {
|
|
id: string
|
|
createdAt: Date
|
|
followeeId: string
|
|
followerId: string
|
|
followerHost: string | null
|
|
followerInbox: string | null
|
|
followerSharedInbox: string | null
|
|
followeeHost: string | null
|
|
followeeInbox: string | null
|
|
followeeSharedInbox: string | null
|
|
}
|
|
export interface GalleryLike {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
postId: string
|
|
}
|
|
export interface GalleryPost {
|
|
id: string
|
|
createdAt: Date
|
|
updatedAt: Date
|
|
title: string
|
|
description: string | null
|
|
userId: string
|
|
fileIds: Array<string>
|
|
isSensitive: boolean
|
|
likedCount: number
|
|
tags: Array<string>
|
|
}
|
|
export interface Hashtag {
|
|
id: string
|
|
name: string
|
|
mentionedUserIds: Array<string>
|
|
mentionedUsersCount: number
|
|
mentionedLocalUserIds: Array<string>
|
|
mentionedLocalUsersCount: number
|
|
mentionedRemoteUserIds: Array<string>
|
|
mentionedRemoteUsersCount: number
|
|
attachedUserIds: Array<string>
|
|
attachedUsersCount: number
|
|
attachedLocalUserIds: Array<string>
|
|
attachedLocalUsersCount: number
|
|
attachedRemoteUserIds: Array<string>
|
|
attachedRemoteUsersCount: number
|
|
}
|
|
export interface Instance {
|
|
id: string
|
|
caughtAt: Date
|
|
host: string
|
|
usersCount: number
|
|
notesCount: number
|
|
followingCount: number
|
|
followersCount: number
|
|
latestRequestSentAt: Date | null
|
|
latestStatus: number | null
|
|
latestRequestReceivedAt: Date | null
|
|
lastCommunicatedAt: Date
|
|
isNotResponding: boolean
|
|
softwareName: string | null
|
|
softwareVersion: string | null
|
|
openRegistrations: boolean | null
|
|
name: string | null
|
|
description: string | null
|
|
maintainerName: string | null
|
|
maintainerEmail: string | null
|
|
infoUpdatedAt: Date | null
|
|
isSuspended: boolean
|
|
iconUrl: string | null
|
|
themeColor: string | null
|
|
faviconUrl: string | null
|
|
}
|
|
export interface MessagingMessage {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
recipientId: string | null
|
|
text: string | null
|
|
isRead: boolean
|
|
fileId: string | null
|
|
groupId: string | null
|
|
reads: Array<string>
|
|
uri: string | null
|
|
}
|
|
export interface Meta {
|
|
id: string
|
|
name: string | null
|
|
description: string | null
|
|
maintainerName: string | null
|
|
maintainerEmail: string | null
|
|
disableRegistration: boolean
|
|
disableLocalTimeline: boolean
|
|
disableGlobalTimeline: boolean
|
|
useStarForReactionFallback: boolean
|
|
langs: Array<string>
|
|
hiddenTags: Array<string>
|
|
blockedHosts: Array<string>
|
|
mascotImageUrl: string | null
|
|
bannerUrl: string | null
|
|
errorImageUrl: string | null
|
|
iconUrl: string | null
|
|
cacheRemoteFiles: boolean
|
|
enableRecaptcha: boolean
|
|
recaptchaSiteKey: string | null
|
|
recaptchaSecretKey: string | null
|
|
localDriveCapacityMb: number
|
|
remoteDriveCapacityMb: number
|
|
summalyProxy: string | null
|
|
enableEmail: boolean
|
|
email: string | null
|
|
smtpSecure: boolean
|
|
smtpHost: string | null
|
|
smtpPort: number | null
|
|
smtpUser: string | null
|
|
smtpPass: string | null
|
|
enableServiceWorker: boolean
|
|
swPublicKey: string | null
|
|
swPrivateKey: string | null
|
|
pinnedUsers: Array<string>
|
|
tosUrl: string | null
|
|
repositoryUrl: string
|
|
feedbackUrl: string | null
|
|
useObjectStorage: boolean
|
|
objectStorageBucket: string | null
|
|
objectStoragePrefix: string | null
|
|
objectStorageBaseUrl: string | null
|
|
objectStorageEndpoint: string | null
|
|
objectStorageRegion: string | null
|
|
objectStorageAccessKey: string | null
|
|
objectStorageSecretKey: string | null
|
|
objectStoragePort: number | null
|
|
objectStorageUseSsl: boolean
|
|
proxyAccountId: string | null
|
|
objectStorageUseProxy: boolean
|
|
enableHcaptcha: boolean
|
|
hcaptchaSiteKey: string | null
|
|
hcaptchaSecretKey: string | null
|
|
objectStorageSetPublicRead: boolean
|
|
pinnedPages: Array<string>
|
|
backgroundImageUrl: string | null
|
|
logoImageUrl: string | null
|
|
pinnedClipId: string | null
|
|
objectStorageS3ForcePathStyle: boolean
|
|
allowedHosts: Array<string> | null
|
|
secureMode: boolean | null
|
|
privateMode: boolean | null
|
|
deeplAuthKey: string | null
|
|
deeplIsPro: boolean
|
|
emailRequiredForSignup: boolean
|
|
themeColor: string | null
|
|
defaultLightTheme: string | null
|
|
defaultDarkTheme: string | null
|
|
enableIpLogging: boolean
|
|
enableActiveEmailValidation: boolean
|
|
customMotd: Array<string>
|
|
customSplashIcons: Array<string>
|
|
disableRecommendedTimeline: boolean
|
|
recommendedInstances: Array<string>
|
|
enableGuestTimeline: boolean
|
|
defaultReaction: string
|
|
libreTranslateApiUrl: string | null
|
|
libreTranslateApiKey: string | null
|
|
silencedHosts: Array<string>
|
|
experimentalFeatures: Json
|
|
enableServerMachineStats: boolean
|
|
enableIdenticonGeneration: boolean
|
|
donationLink: string | null
|
|
moreUrls: Json
|
|
markLocalFilesNsfwByDefault: boolean
|
|
antennaLimit: number
|
|
}
|
|
export interface Migrations {
|
|
id: number
|
|
timestamp: number
|
|
name: string
|
|
}
|
|
export interface ModerationLog {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
type: string
|
|
info: Json
|
|
}
|
|
export interface MutedNote {
|
|
id: string
|
|
noteId: string
|
|
userId: string
|
|
reason: MutedNoteReasonEnum
|
|
}
|
|
export interface Muting {
|
|
id: string
|
|
createdAt: Date
|
|
muteeId: string
|
|
muterId: string
|
|
expiresAt: Date | null
|
|
}
|
|
export interface Note {
|
|
id: string
|
|
createdAt: Date
|
|
replyId: string | null
|
|
renoteId: string | null
|
|
text: string | null
|
|
name: string | null
|
|
cw: string | null
|
|
userId: string
|
|
localOnly: boolean
|
|
renoteCount: number
|
|
repliesCount: number
|
|
reactions: Json
|
|
visibility: NoteVisibilityEnum
|
|
uri: string | null
|
|
score: number
|
|
fileIds: Array<string>
|
|
attachedFileTypes: Array<string>
|
|
visibleUserIds: Array<string>
|
|
mentions: Array<string>
|
|
mentionedRemoteUsers: string
|
|
emojis: Array<string>
|
|
tags: Array<string>
|
|
hasPoll: boolean
|
|
userHost: string | null
|
|
replyUserId: string | null
|
|
replyUserHost: string | null
|
|
renoteUserId: string | null
|
|
renoteUserHost: string | null
|
|
url: string | null
|
|
channelId: string | null
|
|
threadId: string | null
|
|
updatedAt: Date | null
|
|
lang: string | null
|
|
}
|
|
export interface NoteEdit {
|
|
id: string
|
|
noteId: string
|
|
text: string | null
|
|
cw: string | null
|
|
fileIds: Array<string>
|
|
updatedAt: Date
|
|
emojis: Array<string>
|
|
}
|
|
export interface NoteFavorite {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
noteId: string
|
|
}
|
|
export interface NoteFile {
|
|
serialNo: number
|
|
noteId: string
|
|
fileId: string
|
|
}
|
|
export interface NoteReaction {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
noteId: string
|
|
reaction: string
|
|
}
|
|
export interface NoteThreadMuting {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
threadId: string
|
|
}
|
|
export interface NoteUnread {
|
|
id: string
|
|
userId: string
|
|
noteId: string
|
|
noteUserId: string
|
|
isSpecified: boolean
|
|
isMentioned: boolean
|
|
noteChannelId: string | null
|
|
}
|
|
export interface NoteWatching {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
noteId: string
|
|
noteUserId: string
|
|
}
|
|
export interface Notification {
|
|
id: string
|
|
createdAt: Date
|
|
notifieeId: string
|
|
notifierId: string | null
|
|
isRead: boolean
|
|
noteId: string | null
|
|
reaction: string | null
|
|
choice: number | null
|
|
followRequestId: string | null
|
|
type: NotificationTypeEnum
|
|
userGroupInvitationId: string | null
|
|
customBody: string | null
|
|
customHeader: string | null
|
|
customIcon: string | null
|
|
appAccessTokenId: string | null
|
|
}
|
|
export interface Page {
|
|
id: string
|
|
createdAt: Date
|
|
updatedAt: Date
|
|
title: string
|
|
name: string
|
|
summary: string | null
|
|
alignCenter: boolean
|
|
font: string
|
|
userId: string
|
|
eyeCatchingImageId: string | null
|
|
content: Json
|
|
variables: Json
|
|
visibility: PageVisibilityEnum
|
|
visibleUserIds: Array<string>
|
|
likedCount: number
|
|
hideTitleWhenPinned: boolean
|
|
script: string
|
|
isPublic: boolean
|
|
}
|
|
export interface PageLike {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
pageId: string
|
|
}
|
|
export interface PasswordResetRequest {
|
|
id: string
|
|
createdAt: Date
|
|
token: string
|
|
userId: string
|
|
}
|
|
export interface Poll {
|
|
noteId: string
|
|
expiresAt: Date | null
|
|
multiple: boolean
|
|
choices: Array<string>
|
|
votes: Array<number>
|
|
noteVisibility: PollNotevisibilityEnum
|
|
userId: string
|
|
userHost: string | null
|
|
}
|
|
export interface PollVote {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
noteId: string
|
|
choice: number
|
|
}
|
|
export interface PromoNote {
|
|
noteId: string
|
|
expiresAt: Date
|
|
userId: string
|
|
}
|
|
export interface PromoRead {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
noteId: string
|
|
}
|
|
export interface RegistrationTicket {
|
|
id: string
|
|
createdAt: Date
|
|
code: string
|
|
}
|
|
export interface RegistryItem {
|
|
id: string
|
|
createdAt: Date
|
|
updatedAt: Date
|
|
userId: string
|
|
key: string
|
|
scope: Array<string>
|
|
domain: string | null
|
|
value: Json | null
|
|
}
|
|
export interface Relay {
|
|
id: string
|
|
inbox: string
|
|
status: RelayStatusEnum
|
|
}
|
|
export interface RenoteMuting {
|
|
id: string
|
|
createdAt: Date
|
|
muteeId: string
|
|
muterId: string
|
|
}
|
|
export interface ReplyMuting {
|
|
id: string
|
|
createdAt: Date
|
|
muteeId: string
|
|
muterId: string
|
|
}
|
|
export enum AntennaSrcEnum {
|
|
All = 'all',
|
|
Group = 'group',
|
|
Home = 'home',
|
|
Instances = 'instances',
|
|
List = 'list',
|
|
Users = 'users'
|
|
}
|
|
export enum DriveFileUsageHintEnum {
|
|
UserAvatar = 'userAvatar',
|
|
UserBanner = 'userBanner'
|
|
}
|
|
export enum MutedNoteReasonEnum {
|
|
Manual = 'manual',
|
|
Other = 'other',
|
|
Spam = 'spam',
|
|
Word = 'word'
|
|
}
|
|
export enum NoteVisibilityEnum {
|
|
Followers = 'followers',
|
|
Hidden = 'hidden',
|
|
Home = 'home',
|
|
Public = 'public',
|
|
Specified = 'specified'
|
|
}
|
|
export enum NotificationTypeEnum {
|
|
App = 'app',
|
|
Follow = 'follow',
|
|
FollowRequestAccepted = 'followRequestAccepted',
|
|
GroupInvited = 'groupInvited',
|
|
Mention = 'mention',
|
|
PollEnded = 'pollEnded',
|
|
PollVote = 'pollVote',
|
|
Quote = 'quote',
|
|
Reaction = 'reaction',
|
|
ReceiveFollowRequest = 'receiveFollowRequest',
|
|
Renote = 'renote',
|
|
Reply = 'reply'
|
|
}
|
|
export enum PageVisibilityEnum {
|
|
Followers = 'followers',
|
|
Public = 'public',
|
|
Specified = 'specified'
|
|
}
|
|
export enum PollNotevisibilityEnum {
|
|
Followers = 'followers',
|
|
Home = 'home',
|
|
Public = 'public',
|
|
Specified = 'specified'
|
|
}
|
|
export enum RelayStatusEnum {
|
|
Accepted = 'accepted',
|
|
Rejected = 'rejected',
|
|
Requesting = 'requesting'
|
|
}
|
|
export enum UserEmojimodpermEnum {
|
|
Add = 'add',
|
|
Full = 'full',
|
|
Mod = 'mod',
|
|
Unauthorized = 'unauthorized'
|
|
}
|
|
export enum UserProfileFfvisibilityEnum {
|
|
Followers = 'followers',
|
|
Private = 'private',
|
|
Public = 'public'
|
|
}
|
|
export enum UserProfileMutingnotificationtypesEnum {
|
|
App = 'app',
|
|
Follow = 'follow',
|
|
FollowRequestAccepted = 'followRequestAccepted',
|
|
GroupInvited = 'groupInvited',
|
|
Mention = 'mention',
|
|
PollEnded = 'pollEnded',
|
|
PollVote = 'pollVote',
|
|
Quote = 'quote',
|
|
Reaction = 'reaction',
|
|
ReceiveFollowRequest = 'receiveFollowRequest',
|
|
Renote = 'renote',
|
|
Reply = 'reply'
|
|
}
|
|
export interface Signin {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
ip: string
|
|
headers: Json
|
|
success: boolean
|
|
}
|
|
export interface SwSubscription {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
endpoint: string
|
|
auth: string
|
|
publickey: string
|
|
sendReadMessage: boolean
|
|
}
|
|
export interface UsedUsername {
|
|
username: string
|
|
createdAt: Date
|
|
}
|
|
export interface User {
|
|
id: string
|
|
createdAt: Date
|
|
updatedAt: Date | null
|
|
lastFetchedAt: Date | null
|
|
username: string
|
|
usernameLower: string
|
|
name: string | null
|
|
followersCount: number
|
|
followingCount: number
|
|
notesCount: number
|
|
avatarId: string | null
|
|
bannerId: string | null
|
|
tags: Array<string>
|
|
isSuspended: boolean
|
|
isSilenced: boolean
|
|
isLocked: boolean
|
|
isBot: boolean
|
|
isCat: boolean
|
|
isAdmin: boolean
|
|
isModerator: boolean
|
|
emojis: Array<string>
|
|
host: string | null
|
|
inbox: string | null
|
|
sharedInbox: string | null
|
|
featured: string | null
|
|
uri: string | null
|
|
token: string | null
|
|
isExplorable: boolean
|
|
followersUri: string | null
|
|
lastActiveDate: Date | null
|
|
hideOnlineStatus: boolean
|
|
isDeleted: boolean
|
|
driveCapacityOverrideMb: number | null
|
|
movedToUri: string | null
|
|
speakAsCat: boolean
|
|
emojiModPerm: UserEmojimodpermEnum
|
|
isIndexable: boolean
|
|
alsoKnownAs: Array<string> | null
|
|
}
|
|
export interface UserGroup {
|
|
id: string
|
|
createdAt: Date
|
|
name: string
|
|
userId: string
|
|
isPrivate: boolean
|
|
}
|
|
export interface UserGroupInvitation {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
userGroupId: string
|
|
}
|
|
export interface UserGroupInvite {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
userGroupId: string
|
|
}
|
|
export interface UserGroupJoining {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
userGroupId: string
|
|
}
|
|
export interface UserIp {
|
|
id: number
|
|
createdAt: Date
|
|
userId: string
|
|
ip: string
|
|
}
|
|
export interface UserKeypair {
|
|
userId: string
|
|
publicKey: string
|
|
privateKey: string
|
|
}
|
|
export interface UserList {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
name: string
|
|
}
|
|
export interface UserListJoining {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
userListId: string
|
|
}
|
|
export interface UserNotePining {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
noteId: string
|
|
}
|
|
export interface UserPending {
|
|
id: string
|
|
createdAt: Date
|
|
code: string
|
|
username: string
|
|
email: string
|
|
password: string
|
|
}
|
|
export interface UserProfile {
|
|
userId: string
|
|
location: string | null
|
|
birthday: string | null
|
|
description: string | null
|
|
fields: Json
|
|
url: string | null
|
|
email: string | null
|
|
emailVerifyCode: string | null
|
|
emailVerified: boolean
|
|
twoFactorTempSecret: string | null
|
|
twoFactorSecret: string | null
|
|
twoFactorEnabled: boolean
|
|
password: string | null
|
|
clientData: Json
|
|
autoAcceptFollowed: boolean
|
|
alwaysMarkNsfw: boolean
|
|
carefulBot: boolean
|
|
userHost: string | null
|
|
securityKeysAvailable: boolean
|
|
usePasswordLessLogin: boolean
|
|
pinnedPageId: string | null
|
|
room: Json
|
|
injectFeaturedNote: boolean
|
|
enableWordMute: boolean
|
|
mutedWords: Json
|
|
mutingNotificationTypes: Array<UserProfileMutingnotificationtypesEnum>
|
|
noCrawle: boolean
|
|
receiveAnnouncementEmail: boolean
|
|
emailNotificationTypes: Json
|
|
mutedInstances: Json
|
|
publicReactions: boolean
|
|
ffVisibility: UserProfileFfvisibilityEnum
|
|
moderationNote: string
|
|
preventAiLearning: boolean
|
|
isIndexable: boolean
|
|
mutedPatterns: Array<string>
|
|
lang: string | null
|
|
}
|
|
export interface UserPublickey {
|
|
userId: string
|
|
keyId: string
|
|
keyPem: string
|
|
}
|
|
export interface UserSecurityKey {
|
|
id: string
|
|
userId: string
|
|
publicKey: string
|
|
lastUsed: Date
|
|
name: string
|
|
}
|
|
export interface Webhook {
|
|
id: string
|
|
createdAt: Date
|
|
userId: string
|
|
name: string
|
|
on: Array<string>
|
|
url: string
|
|
secret: string
|
|
active: boolean
|
|
latestSentAt: Date | null
|
|
latestStatus: number | null
|
|
}
|
|
export function initializeRustLogger(): void
|
|
export function fetchNodeinfo(host: string): Promise<Nodeinfo>
|
|
export function nodeinfo_2_1(): Promise<any>
|
|
export function nodeinfo_2_0(): Promise<any>
|
|
/** NodeInfo schema version 2.0. https://nodeinfo.diaspora.software/docson/index.html#/ns/schema/2.0 */
|
|
export interface Nodeinfo {
|
|
/** The schema version, must be 2.0. */
|
|
version: string
|
|
/** Metadata about server software in use. */
|
|
software: Software20
|
|
/** The protocols supported on this server. */
|
|
protocols: Array<Protocol>
|
|
/** The third party sites this server can connect to via their application API. */
|
|
services: Services
|
|
/** Whether this server allows open self-registration. */
|
|
openRegistrations: boolean
|
|
/** Usage statistics for this server. */
|
|
usage: Usage
|
|
/** Free form key value pairs for software specific values. Clients should not rely on any specific key present. */
|
|
metadata: Record<string, any>
|
|
}
|
|
/** Metadata about server software in use (version 2.0). */
|
|
export interface Software20 {
|
|
/** The canonical name of this server software. */
|
|
name: string
|
|
/** The version of this server software. */
|
|
version: string
|
|
}
|
|
export enum Protocol {
|
|
Activitypub = 'activitypub',
|
|
Buddycloud = 'buddycloud',
|
|
Dfrn = 'dfrn',
|
|
Diaspora = 'diaspora',
|
|
Libertree = 'libertree',
|
|
Ostatus = 'ostatus',
|
|
Pumpio = 'pumpio',
|
|
Tent = 'tent',
|
|
Xmpp = 'xmpp',
|
|
Zot = 'zot'
|
|
}
|
|
/** The third party sites this server can connect to via their application API. */
|
|
export interface Services {
|
|
/** The third party sites this server can retrieve messages from for combined display with regular traffic. */
|
|
inbound: Array<Inbound>
|
|
/** The third party sites this server can publish messages to on the behalf of a user. */
|
|
outbound: Array<Outbound>
|
|
}
|
|
/** The third party sites this server can retrieve messages from for combined display with regular traffic. */
|
|
export enum Inbound {
|
|
Atom1 = 'atom1',
|
|
Gnusocial = 'gnusocial',
|
|
Imap = 'imap',
|
|
Pnut = 'pnut',
|
|
Pop3 = 'pop3',
|
|
Pumpio = 'pumpio',
|
|
Rss2 = 'rss2',
|
|
Twitter = 'twitter'
|
|
}
|
|
/** The third party sites this server can publish messages to on the behalf of a user. */
|
|
export enum Outbound {
|
|
Atom1 = 'atom1',
|
|
Blogger = 'blogger',
|
|
Buddycloud = 'buddycloud',
|
|
Diaspora = 'diaspora',
|
|
Dreamwidth = 'dreamwidth',
|
|
Drupal = 'drupal',
|
|
Facebook = 'facebook',
|
|
Friendica = 'friendica',
|
|
Gnusocial = 'gnusocial',
|
|
Google = 'google',
|
|
Insanejournal = 'insanejournal',
|
|
Libertree = 'libertree',
|
|
Linkedin = 'linkedin',
|
|
Livejournal = 'livejournal',
|
|
Mediagoblin = 'mediagoblin',
|
|
Myspace = 'myspace',
|
|
Pinterest = 'pinterest',
|
|
Pnut = 'pnut',
|
|
Posterous = 'posterous',
|
|
Pumpio = 'pumpio',
|
|
Redmatrix = 'redmatrix',
|
|
Rss2 = 'rss2',
|
|
Smtp = 'smtp',
|
|
Tent = 'tent',
|
|
Tumblr = 'tumblr',
|
|
Twitter = 'twitter',
|
|
Wordpress = 'wordpress',
|
|
Xmpp = 'xmpp'
|
|
}
|
|
/** Usage statistics for this server. */
|
|
export interface Usage {
|
|
users: Users
|
|
localPosts: number | null
|
|
localComments: number | null
|
|
}
|
|
/** statistics about the users of this server. */
|
|
export interface Users {
|
|
total: number | null
|
|
activeHalfyear: number | null
|
|
activeMonth: number | null
|
|
}
|
|
export function watchNote(watcherId: string, noteAuthorId: string, noteId: string): Promise<void>
|
|
export function unwatchNote(watcherId: string, noteId: string): Promise<void>
|
|
export function publishToChannelStream(channelId: string, userId: string): void
|
|
export enum ChatEvent {
|
|
Message = 'message',
|
|
Read = 'read',
|
|
Deleted = 'deleted',
|
|
Typing = 'typing'
|
|
}
|
|
export function publishToChatStream(senderUserId: string, receiverUserId: string, kind: ChatEvent, object: any): void
|
|
export enum ChatIndexEvent {
|
|
Message = 'message',
|
|
Read = 'read'
|
|
}
|
|
export function publishToChatIndexStream(userId: string, kind: ChatIndexEvent, object: any): void
|
|
export interface PackedEmoji {
|
|
id: string
|
|
aliases: Array<string>
|
|
name: string
|
|
category: string | null
|
|
host: string | null
|
|
url: string
|
|
license: string | null
|
|
width: number | null
|
|
height: number | null
|
|
}
|
|
export function publishToBroadcastStream(emoji: PackedEmoji): void
|
|
export function publishToGroupChatStream(groupId: string, kind: ChatEvent, object: any): void
|
|
export interface AbuseUserReportLike {
|
|
id: string
|
|
targetUserId: string
|
|
reporterId: string
|
|
comment: string
|
|
}
|
|
export function publishToModerationStream(moderatorId: string, report: AbuseUserReportLike): void
|
|
export function getTimestamp(id: string): number
|
|
/**
|
|
* The generated ID results in the form of `[8 chars timestamp] + [cuid2]`.
|
|
* The minimum and maximum lengths are 16 and 24, respectively.
|
|
* With the length of 16, namely 8 for cuid2, roughly 1427399 IDs are needed
|
|
* in the same millisecond to reach 50% chance of collision.
|
|
*
|
|
* Ref: https://github.com/paralleldrive/cuid2#parameterized-length
|
|
*/
|
|
export function genId(): string
|
|
/** Generate an ID using a specific datetime */
|
|
export function genIdAt(date: Date): string
|
|
export function secureRndstr(length?: number | undefined | null): string
|