123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import { ActorModel } from '../../../models/activitypub/actor'
- import { FunctionProperties, PickWith, PickWithOpt } from '../../utils'
- import { MAccount, MAccountDefault, MAccountId, MAccountIdActor } from './account'
- import { MServer, MServerHost, MServerHostBlocks, MServerRedundancyAllowed } from '../server'
- import { MAvatar, MAvatarFormattable } from './avatar'
- import { MChannel, MChannelAccountActor, MChannelAccountDefault, MChannelId, MChannelIdActor } from '../video'
- type Use<K extends keyof ActorModel, M> = PickWith<ActorModel, K, M>
- // ############################################################################
- export type MActor = Omit<ActorModel, 'Account' | 'VideoChannel' | 'ActorFollowing' | 'Avatar' | 'ActorFollowers' | 'Server'>
- // ############################################################################
- export type MActorUrl = Pick<MActor, 'url'>
- export type MActorId = Pick<MActor, 'id'>
- export type MActorUsername = Pick<MActor, 'preferredUsername'>
- export type MActorFollowersUrl = Pick<MActor, 'followersUrl'>
- export type MActorAudience = MActorUrl & MActorFollowersUrl
- export type MActorFollowerException = Pick<ActorModel, 'sharedInboxUrl' | 'inboxUrl'>
- export type MActorSignature = MActorAccountChannelId
- export type MActorLight = Omit<MActor, 'privateKey' | 'privateKey'>
- // ############################################################################
- // Some association attributes
- export type MActorHost = Use<'Server', MServerHost>
- export type MActorRedundancyAllowedOpt = PickWithOpt<ActorModel, 'Server', MServerRedundancyAllowed>
- export type MActorDefaultLight = MActorLight &
- Use<'Server', MServerHost> &
- Use<'Avatar', MAvatar>
- export type MActorAccountId = MActor &
- Use<'Account', MAccountId>
- export type MActorAccountIdActor = MActor &
- Use<'Account', MAccountIdActor>
- export type MActorChannelId = MActor &
- Use<'VideoChannel', MChannelId>
- export type MActorChannelIdActor = MActor &
- Use<'VideoChannel', MChannelIdActor>
- export type MActorAccountChannelId = MActorAccountId & MActorChannelId
- export type MActorAccountChannelIdActor = MActorAccountIdActor & MActorChannelIdActor
- // ############################################################################
- // Include raw account/channel/server
- export type MActorAccount = MActor &
- Use<'Account', MAccount>
- export type MActorChannel = MActor &
- Use<'VideoChannel', MChannel>
- export type MActorDefaultAccountChannel = MActorDefault & MActorAccount & MActorChannel
- export type MActorServer = MActor &
- Use<'Server', MServer>
- // ############################################################################
- // Complex actor associations
- export type MActorDefault = MActor &
- Use<'Server', MServer> &
- Use<'Avatar', MAvatar>
- // Actor with channel that is associated to an account and its actor
- // Actor -> VideoChannel -> Account -> Actor
- export type MActorChannelAccountActor = MActor &
- Use<'VideoChannel', MChannelAccountActor>
- export type MActorFull = MActor &
- Use<'Server', MServer> &
- Use<'Avatar', MAvatar> &
- Use<'Account', MAccount> &
- Use<'VideoChannel', MChannelAccountActor>
- // Same than ActorFull, but the account and the channel have their actor
- export type MActorFullActor = MActor &
- Use<'Server', MServer> &
- Use<'Avatar', MAvatar> &
- Use<'Account', MAccountDefault> &
- Use<'VideoChannel', MChannelAccountDefault>
- // ############################################################################
- // API
- export type MActorSummary = FunctionProperties<MActor> &
- Pick<MActor, 'id' | 'preferredUsername' | 'url' | 'serverId' | 'avatarId'> &
- Use<'Server', MServerHost> &
- Use<'Avatar', MAvatar>
- export type MActorSummaryBlocks = MActorSummary &
- Use<'Server', MServerHostBlocks>
- export type MActorAPI = Omit<MActorDefault, 'publicKey' | 'privateKey' | 'inboxUrl' | 'outboxUrl' | 'sharedInboxUrl' |
- 'followersUrl' | 'followingUrl' | 'url' | 'createdAt' | 'updatedAt'>
- // ############################################################################
- // Format for API or AP object
- export type MActorSummaryFormattable = FunctionProperties<MActor> &
- Pick<MActor, 'url' | 'preferredUsername'> &
- Use<'Server', MServerHost> &
- Use<'Avatar', MAvatarFormattable>
- export type MActorFormattable = MActorSummaryFormattable &
- Pick<MActor, 'id' | 'followingCount' | 'followersCount' | 'createdAt' | 'updatedAt'> &
- Use<'Server', MServerHost & Partial<Pick<MServer, 'redundancyAllowed'>>>
- export type MActorAP = MActor &
- Use<'Avatar', MAvatar>
|