polfan-server-js-client 0.2.108 → 0.2.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_26_07_2026_21_26_[Changes]/shelved.patch +174 -0
  2. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_26_07_2026_21_26__Changes_.xml +4 -0
  3. package/.idea/workspace.xml +16 -16
  4. package/build/index.cjs.js +113 -521
  5. package/build/index.cjs.js.map +1 -1
  6. package/build/index.umd.js +1 -1
  7. package/build/index.umd.js.map +1 -1
  8. package/build/types/AbstractChatClient.d.ts +0 -10
  9. package/build/types/IndexedObjectCollection.d.ts +0 -8
  10. package/build/types/WebSocketChatClient.d.ts +1 -17
  11. package/build/types/state-tracker/FollowedTopicsManager.d.ts +1 -18
  12. package/build/types/state-tracker/RoomMessagesHistory.d.ts +0 -12
  13. package/build/types/state-tracker/TopicHistoryWindow.d.ts +2 -2
  14. package/package.json +1 -1
  15. package/src/AbstractChatClient.ts +0 -22
  16. package/src/IndexedObjectCollection.ts +0 -31
  17. package/src/WebSocketChatClient.ts +7 -63
  18. package/src/state-tracker/AsyncUtils.ts +0 -11
  19. package/src/state-tracker/EmoticonsManager.ts +3 -7
  20. package/src/state-tracker/FollowedTopicsManager.ts +14 -55
  21. package/src/state-tracker/MessagesManager.ts +2 -21
  22. package/src/state-tracker/PermissionsManager.ts +1 -5
  23. package/src/state-tracker/RelationshipsManager.ts +5 -5
  24. package/src/state-tracker/RoomMessagesHistory.ts +1 -41
  25. package/src/state-tracker/RoomsManager.ts +4 -21
  26. package/src/state-tracker/SpacesManager.ts +8 -35
  27. package/src/state-tracker/TopicHistoryWindow.ts +4 -4
  28. package/src/state-tracker/UsersManager.ts +1 -3
  29. package/tests/collections.test.ts +0 -92
  30. package/tests/pending-commands.test.ts +0 -171
  31. package/tests/state-reconnect.test.ts +0 -257
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://PservClient/webpack/universalModuleDefinition","webpack://PservClient/webpack/bootstrap","webpack://PservClient/webpack/runtime/define property getters","webpack://PservClient/webpack/runtime/hasOwnProperty shorthand","webpack://PservClient/webpack/runtime/make namespace object","webpack://PservClient/./src/EventTarget.ts","webpack://PservClient/./src/AbstractChatClient.ts","webpack://PservClient/./src/IndexedObjectCollection.ts","webpack://PservClient/./src/state-tracker/AsyncUtils.ts","webpack://PservClient/./src/state-tracker/TopicHistoryWindow.ts","webpack://PservClient/./src/state-tracker/RoomMessagesHistory.ts","webpack://PservClient/./src/state-tracker/MessagesManager.ts","webpack://PservClient/./src/state-tracker/FollowedTopicsManager.ts","webpack://PservClient/./src/state-tracker/RoomsManager.ts","webpack://PservClient/./src/state-tracker/functions.ts","webpack://PservClient/./src/state-tracker/SpacesManager.ts","webpack://PservClient/./src/Permissions.ts","webpack://PservClient/./src/state-tracker/PermissionsManager.ts","webpack://PservClient/./src/state-tracker/EmoticonsManager.ts","webpack://PservClient/./src/state-tracker/UsersManager.ts","webpack://PservClient/./src/state-tracker/RelationshipsManager.ts","webpack://PservClient/./src/state-tracker/ChatStateTracker.ts","webpack://PservClient/./src/WebSocketChatClient.ts","webpack://PservClient/./src/WebApiChatClient.ts","webpack://PservClient/./src/AbstractRestClient.ts","webpack://PservClient/./src/FilesClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PservClient\"] = factory();\n\telse\n\t\troot[\"PservClient\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap = Map<string, EventHandler<any>[]>;\ntype EventMapLike = Record<string, any>;\ntype KnownEventNames<EventT> = EventT extends EventMapLike ? keyof EventT & string : string;\ntype EventPayload<EventT, EventName extends string = never> = EventT extends EventMapLike\n ? [EventName] extends [never]\n ? EventT[keyof EventT]\n : EventName extends keyof EventT\n ? EventT[EventName]\n : EventT[keyof EventT]\n : EventT;\n\nexport type ChangeEventMap<Payload = void> = { change: Payload };\n\nexport interface ObservableInterface<EventT = any> {\n on<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n on(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n once<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n once(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n off<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n off(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n}\n\nexport class EventTarget<EventMapT extends Record<string, any> = Record<string, any>> implements ObservableInterface<EventMapT> {\n protected events: HandlersMap = new Map<string, EventHandler<any>[]>();\n protected onceEvents: HandlersMap = new Map<string, EventHandler<any>[]>();\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public on(eventName: string, handler: EventHandler<unknown>): this;\n public on(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public once(eventName: string, handler: EventHandler<unknown>): this;\n public once(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public off(eventName: string, handler: EventHandler<unknown>): this;\n public off(eventName: string, handler: EventHandler<any>): this {\n const index = this.events.get(eventName)?.indexOf(handler);\n if (index === undefined || index < 0) {\n return this;\n }\n this.events.get(eventName)?.splice(index, 1);\n return this;\n }\n\n public emit<K extends keyof EventMapT & string>(eventName: K, event: EventMapT[K]): this;\n public emit(eventName: string, event?: unknown): this;\n public emit(eventName: string, event?: any): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap, eventName: string, handler: EventHandler<any>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap, eventName: string, event: unknown): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdated,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetPermissionOverwrites,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetPermissionOverwrites,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage,\n Envelope,\n PermissionOverwrites,\n PermissionOverwritesUpdated,\n RoomMemberUpdated,\n UpdateRole,\n RoleUpdated,\n Ack,\n UserUpdated,\n UpdateRoom,\n RoomUpdated,\n UpdateSpace,\n SpaceUpdated,\n PermissionOverwriteTargets,\n GetPermissionOverwriteTargets,\n Owners,\n Ok,\n GetOwners,\n CreateOwner,\n RoleDeleted,\n FollowedTopicUpdated,\n TopicFollowed,\n FollowedTopics,\n FollowTopic,\n UpdateFollowedTopic,\n GetFollowedTopics,\n Messages,\n GetMessages,\n Topics,\n GetTopics,\n TopicUpdated,\n UpdateTopic,\n GetDiscoverableSpaces,\n DiscoverableSpaces,\n CreateEmoticon,\n DeleteEmoticon,\n GetEmoticons,\n Emoticons,\n EmoticonDeleted,\n NewEmoticon,\n Bans,\n GetBans,\n Ban,\n Unban,\n Kick,\n ClientData,\n GetClientData,\n SetClientData,\n GetRoomSummary,\n GetSpaceSummary,\n RoomSummaryEvent,\n SpaceSummaryEvent,\n UpdateSpaceMember,\n Relationships,\n RelationshipDeleted,\n NewRelationship,\n DeleteRelationship,\n CreateRelationship,\n RoomSummaryUpdated,\n Pong,\n Ping,\n RedactMessages,\n MessagesRedacted,\n ReportAbuse,\n UpdateRoomMember,\n GetRelationships,\n GetUserInfo,\n UserInfo,\n SetSessionData,\n SessionData,\n GetSessionData,\n UnfollowTopic,\n TopicUnfollowed,\n} from \"./types/src\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\ntype ExtraEventMap = Record<string, any>;\n\ntype CommandDefinition<RequestT, ResponseT> = {\n request: RequestT;\n response: ResponseT;\n};\n\nexport abstract class AbstractChatClient<AdditionalEvents extends ExtraEventMap = {}> extends EventTarget<EventsMap & AdditionalEvents> {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandRequest<CommandType>): Promise<CommandResult<CommandResponse<CommandType>>>;\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandRequest<CommandT>>):\n Promise<CommandResult<CommandResponse<CommandT>>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[1](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n /**\n * Reject every command that is still waiting for a response.\n *\n * Call this whenever the transport can no longer deliver an answer (the\n * connection dropped). The server will never reply to those commands, so\n * leaving them pending would hang every caller awaiting them forever -\n * including cached lookups in the state tracker, which would then keep a\n * view stuck on a loader even after a successful reconnect.\n */\n protected failAwaitingResponses(error: any): void {\n if (! this.awaitingResponse.size) {\n return;\n }\n\n const pending = Array.from(this.awaitingResponse.values());\n this.awaitingResponse.clear();\n\n for (const [, reject] of pending) {\n reject(error);\n }\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: ErrorType};\nexport type CommandRequest<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['request'];\nexport type CommandResponse<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['response'];\n\n /**\n * Map of incoming events.\n */\n export type EventsMap = {\n // General Events\n Bye: Bye,\n Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n PermissionOverwrites: PermissionOverwrites,\n PermissionOverwritesUpdated: PermissionOverwritesUpdated,\n PermissionOverwriteTargets: PermissionOverwriteTargets,\n Owners: Owners,\n NewEmoticon: NewEmoticon,\n EmoticonDeleted: EmoticonDeleted,\n Emoticons: Emoticons,\n Bans: Bans,\n ClientData: ClientData,\n SessionData: SessionData,\n NewRelationship: NewRelationship,\n RelationshipDeleted: RelationshipDeleted,\n Relationships: Relationships,\n Pong: Pong,\n UserInfo: UserInfo,\n // Space events\n DiscoverableSpaces: DiscoverableSpaces,\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdated: SpaceMemberUpdated,\n SpaceUpdated: SpaceUpdated,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoleDeleted,\n RoleUpdated: RoleUpdated,\n SpaceSummaryEvent: SpaceSummaryEvent,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMemberUpdated: RoomMemberUpdated,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n RoomUpdated: RoomUpdated,\n RoomSummaryEvent: RoomSummaryEvent,\n RoomSummaryUpdated: RoomSummaryUpdated,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n UserUpdated: UserUpdated,\n TopicFollowed: TopicFollowed,\n TopicUnfollowed: TopicUnfollowed,\n FollowedTopics: FollowedTopics,\n FollowedTopicUpdated: FollowedTopicUpdated,\n Messages: Messages,\n Topics: Topics,\n TopicUpdated: TopicUpdated,\n MessagesRedacted: MessagesRedacted,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: CommandDefinition<GetSession, EventsMap['Session']>,\n SetPermissionOverwrites: CommandDefinition<SetPermissionOverwrites, EventsMap['PermissionOverwritesUpdated']>,\n GetPermissionOverwrites: CommandDefinition<GetPermissionOverwrites, EventsMap['PermissionOverwrites']>,\n GetComputedPermissions: CommandDefinition<GetComputedPermissions, EventsMap['Permissions']>,\n GetPermissionOverwriteTargets: CommandDefinition<GetPermissionOverwriteTargets, EventsMap['PermissionOverwriteTargets']>,\n GetOwners: CommandDefinition<GetOwners, EventsMap['Owners']>,\n CreateOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n DeleteOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n CreateEmoticon: CommandDefinition<CreateEmoticon, EventsMap['NewEmoticon']>,\n DeleteEmoticon: CommandDefinition<DeleteEmoticon, EventsMap['EmoticonDeleted']>,\n GetEmoticons: CommandDefinition<GetEmoticons, EventsMap['Emoticons']>,\n GetBans: CommandDefinition<GetBans, EventsMap['Bans']>,\n Ban: CommandDefinition<Ban, EventsMap['Ok']>,\n Unban: CommandDefinition<Unban, EventsMap['Ok']>,\n Kick: CommandDefinition<Kick, EventsMap['Ok']>,\n GetClientData: CommandDefinition<GetClientData, EventsMap['ClientData']>,\n SetClientData: CommandDefinition<SetClientData, EventsMap['Ok']>,\n DeleteRelationship: CommandDefinition<DeleteRelationship, EventsMap['RelationshipDeleted']>,\n CreateRelationship: CommandDefinition<CreateRelationship, EventsMap['NewRelationship']>,\n GetRelationships: CommandDefinition<GetRelationships, EventsMap['Relationships']>,\n Ping: CommandDefinition<Ping, EventsMap['Pong']>,\n ReportAbuse: CommandDefinition<ReportAbuse, EventsMap['Ok']>,\n GetUserInfo: CommandDefinition<GetUserInfo, EventsMap['UserInfo']>,\n GetSessionData: CommandDefinition<GetSessionData, EventsMap['SessionData']>,\n SetSessionData: CommandDefinition<SetSessionData, EventsMap['Ok']>,\n // Space commands\n GetDiscoverableSpaces: CommandDefinition<GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']>,\n JoinSpace: CommandDefinition<JoinSpace, EventsMap['SpaceJoined']>,\n LeaveSpace: CommandDefinition<LeaveSpace, EventsMap['SpaceLeft']>,\n CreateSpace: CommandDefinition<CreateSpace, EventsMap['SpaceJoined']>,\n UpdateSpace: CommandDefinition<UpdateSpace, EventsMap['SpaceUpdated']>,\n DeleteSpace: CommandDefinition<DeleteSpace, EventsMap['SpaceDeleted']>,\n GetSpaceMembers: CommandDefinition<GetSpaceMembers, EventsMap['SpaceMembers']>,\n GetSpaceRooms: CommandDefinition<GetSpaceRooms, EventsMap['SpaceRooms']>,\n CreateRole: CommandDefinition<CreateRole, EventsMap['NewRole']>,\n DeleteRole: CommandDefinition<DeleteRole, EventsMap['RoleDeleted']>,\n UpdateRole: CommandDefinition<UpdateRole, EventsMap['RoleUpdated']>,\n AssignRole: CommandDefinition<AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n DeassignRole: CommandDefinition<DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n GetSpaceSummary: CommandDefinition<GetSpaceSummary, EventsMap['SpaceSummaryEvent']>,\n UpdateSpaceMember: CommandDefinition<UpdateSpaceMember, EventsMap['SpaceMemberUpdated']>,\n // Room commands\n JoinRoom: CommandDefinition<JoinRoom, EventsMap['RoomJoined']>,\n LeaveRoom: CommandDefinition<LeaveRoom, EventsMap['RoomLeft']>,\n CreateRoom: CommandDefinition<CreateRoom, EventsMap['RoomJoined']>,\n DeleteRoom: CommandDefinition<DeleteRoom, EventsMap['RoomDeleted']>,\n UpdateRoom: CommandDefinition<UpdateRoom, EventsMap['RoomUpdated']>,\n GetRoomMembers: CommandDefinition<GetRoomMembers, EventsMap['RoomMembers']>,\n GetRoomSummary: CommandDefinition<GetRoomSummary, EventsMap['RoomSummaryEvent']>,\n UpdateRoomMember: CommandDefinition<UpdateRoomMember, EventsMap['RoomMemberUpdated']>,\n // Topic commands\n CreateTopic: CommandDefinition<CreateTopic, EventsMap['NewTopic']>,\n DeleteTopic: CommandDefinition<DeleteTopic, EventsMap['TopicDeleted']>,\n CreateMessage: CommandDefinition<CreateMessage, EventsMap['NewMessage']>,\n Ack: CommandDefinition<Ack, EventsMap['FollowedTopicUpdated'] | EventsMap['Ok']>,\n FollowTopic: CommandDefinition<FollowTopic, EventsMap['TopicFollowed']>,\n UnfollowTopic: CommandDefinition<UnfollowTopic, EventsMap['TopicUnfollowed']>,\n UpdateFollowedTopic: CommandDefinition<UpdateFollowedTopic, EventsMap['FollowedTopicUpdated']>,\n GetFollowedTopics: CommandDefinition<GetFollowedTopics, EventsMap['FollowedTopics']>,\n GetMessages: CommandDefinition<GetMessages, EventsMap['Messages']>,\n GetTopics: CommandDefinition<GetTopics, EventsMap['Topics']>,\n UpdateTopic: CommandDefinition<UpdateTopic, EventsMap['TopicUpdated']>,\n RedactMessages: CommandDefinition<RedactMessages, EventsMap['MessagesRedacted']>,\n }\n","import {EventHandler, EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | undefined {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = Infinity): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n for (const [key, value] of this.items.entries()) {\n if (result.length >= limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set([key, value]);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedCollection<KeyT, ValueT> {\n const copy = new IndexedCollection<KeyT, ValueT>();\n copy._items = this._items;\n return copy;\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | undefined {\n return this._items.get(id);\n }\n\n public getAt(index: number): T | undefined {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedObjectCollection<T> {\n const copy = new IndexedObjectCollection<T>(this.id);\n copy._items = this._items;\n return copy;\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\nexport type CollectionEventMap<IdType = string> = {\n change: { setItems?: IdType[]; deletedItems?: IdType[] };\n};\n\nexport class ObservableIndexedCollection<\n KeyT,\n ValueT,\n EventMapT extends CollectionEventMap<KeyT> = CollectionEventMap<KeyT>\n> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface<EventMapT> {\n\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n super();\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => item[0]) });\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = Array.from(this._items.keys());\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: Array.from(ids) });\n }\n }\n\n public createMirror(): ObservableIndexedCollection<KeyT, ValueT, EventMapT> {\n const copy = new ObservableIndexedCollection<KeyT, ValueT, EventMapT>();\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends IndexedObjectCollection<ItemT> implements ObservableInterface<EventMapT> {\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(\n id: keyof ItemT | ((item: ItemT) => string),\n items: ItemT[] = [],\n ) {\n super(id);\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: ItemT[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => this.getId(item)) });\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this.items.map(item => this.getId(item));\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n /**\n * Bring the collection to exactly match the provided items: upsert every\n * provided item and remove any existing item whose id is not present in the\n * provided set. Emits at most a single `change` event describing both the\n * set and the deleted ids, so bound consumers can update in place without\n * ever observing an intermediate empty state (unlike deleteAll + set).\n */\n public reconcile(...items: ItemT[]) {\n const incomingIds = new Set(items.map(item => this.getId(item)));\n const deletedItems: string[] = [];\n\n for (const existing of this.items) {\n const id = this.getId(existing);\n if (! incomingIds.has(id)) {\n deletedItems.push(id);\n }\n }\n\n if (! items.length && ! deletedItems.length) {\n return;\n }\n\n this._items.delete(...deletedItems);\n super.set(...items);\n\n this.eventTarget.emit('change', {\n setItems: items.map(item => this.getId(item)),\n deletedItems,\n });\n }\n\n public createMirror(): ObservableIndexedObjectCollection<ItemT, EventMapT> {\n const copy = new ObservableIndexedObjectCollection<ItemT, EventMapT>(this.id);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}","import {IndexedCollection} from \"../IndexedObjectCollection\";\n\nexport class DeferredTask {\n public readonly promise: Promise<void>;\n public resolve: () => void;\n\n public constructor() {\n this.promise = new Promise<void>((resolve) => this.resolve = resolve);\n }\n}\n\nexport class PromiseRegistry {\n private promises = new IndexedCollection<string, Promise<any>>();\n\n public register<T = any>(promise: Promise<T>, key: string): void {\n this.promises.set([key, promise]);\n\n // Never cache a failed lookup: drop it so the next access retries\n // instead of replaying the same rejection forever (a request issued\n // while the client was offline would otherwise poison the key). The\n // handler also keeps the cached promise from surfacing as an unhandled\n // rejection - callers still receive the rejection from their own await.\n promise.catch(() => {\n if (this.promises.get(key) === promise) {\n this.promises.delete(key);\n }\n });\n }\n\n public registerByFunction(fn: () => Promise<any>, key: string): void {\n this.register(fn(), key);\n }\n\n public get<T = any>(key: string): Promise<T> | undefined {\n return this.promises.get(key);\n }\n\n public has(key: string): boolean {\n return this.promises.has(key);\n }\n\n public notExist(key: string): boolean {\n return ! this.has(key);\n }\n\n public forget(...keys: string[]): void {\n this.promises.delete(...keys);\n }\n\n public forgetAll(): void {\n this.promises.deleteAll();\n }\n}","import {Message, MessagesRedacted, NewMessage, Topic} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {CollectionEventMap, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\n\nexport enum WindowState {\n /**\n * The latest messages (those received live) are available in the history window, history has not been fetched.\n */\n LIVE,\n\n /**\n * The latest messages has been fetched and are available in the history window.\n */\n LATEST,\n\n /**\n * The historical messages have been fetched and are available in the history window.\n * Latest messages are not available and will not be available.\n */\n PAST,\n\n /**\n * The oldest messages have been fetched and are available in the history window.\n * Next attempts to fetch previous messages will result with no-op.\n */\n OLDEST,\n}\n\nexport abstract class TraversableRemoteCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends ObservableIndexedObjectCollection<ItemT, EventMapT> {\n /**\n * Current mode od collection window. To change mode, call one of available fetch methods.\n */\n public get state(): WindowState {\n return this.internalState.current;\n }\n\n protected internalState: {\n current: WindowState,\n ongoing?: WindowState,\n limit: number | null, // Acts as High Watermark\n retainRatio: number, // Percentage of limit to keep when trimming\n fetchLimit: number,\n lastFetchCount: number,\n oldestId: string | null,\n } = {\n current: WindowState.LIVE,\n ongoing: undefined,\n limit: 1000,\n retainRatio: 1,\n fetchLimit: 50,\n lastFetchCount: 0,\n oldestId: null,\n };\n\n /**\n * Number of items to fetch per request.\n */\n public get fetchLimit(): number {\n return this.internalState.fetchLimit;\n }\n\n /**\n * Sets number of items to fetch per request.\n */\n public set fetchLimit(value: number) {\n this.internalState.fetchLimit = value;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public get limit(): number | null {\n return this.internalState.limit;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public set limit(value: number | null) {\n this.internalState.limit = value;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public get retainRatio(): number {\n return this.internalState.retainRatio;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public set retainRatio(value: number) {\n this.internalState.retainRatio = value;\n }\n\n public get hasLatest(): boolean {\n return [WindowState.LATEST, WindowState.LIVE].includes(this.state);\n }\n\n public get hasOldest(): boolean {\n return this.state === WindowState.OLDEST\n || this.state === WindowState.LATEST && this.length < this.fetchLimit\n || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);\n }\n\n public abstract createMirror(): TraversableRemoteCollection<ItemT, EventMapT>;\n\n public async resetToLatest(force: boolean = false): Promise<void> {\n if (this.internalState.ongoing || (! force && this.internalState.current === WindowState.LATEST)) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.LATEST;\n\n try {\n result = await this.fetchLatestItems();\n this.internalState.lastFetchCount = result.length;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n this.internalState.current = WindowState.LATEST;\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.ongoing || this.hasOldest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsBefore();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n return this.resetToLatest();\n }\n\n if (! result.length) {\n const firstItem = this.getAt(0);\n this.internalState.oldestId = firstItem ? this.getId(firstItem) : null;\n\n await this.refreshFetchedState();\n\n // LATEST state has priority over OLDEST\n if (this.internalState.current === WindowState.PAST) {\n this.internalState.current = WindowState.OLDEST;\n }\n\n this.emitChangeWithDiff(false, originalState);\n return;\n }\n\n this.addItems(result, 'head');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.ongoing || this.hasLatest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAfter();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n await this.resetToLatest();\n return;\n }\n\n if (result.length) {\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n return;\n }\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.ongoing || (this.state !== WindowState.LIVE && this._items.has(id))) {\n return;\n }\n\n let result: ItemT[] | null;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAround(id);\n this.internalState.lastFetchCount = result ? result.length : 0;\n\n if (result) {\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n }\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this.emitChangeWithDiff(!!result, originalState);\n }\n\n protected abstract fetchLatestItems(): Promise<ItemT[]>;\n\n protected abstract fetchItemsBefore(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAfter(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAround(id: string): Promise<ItemT[] | null>;\n\n protected abstract isLatestItemLoaded(): Promise<boolean>;\n\n protected async refreshFetchedState(): Promise<void> {\n this.internalState.current = (await this.isLatestItemLoaded()) ? WindowState.LATEST : WindowState.PAST;\n }\n\n protected addItems(newItems: ItemT[], to: 'head' | 'tail'): void {\n let result;\n\n if (to === 'head') {\n result = this.trimItemsArrayToLimit([...newItems, ...this.items], 'tail');\n }\n\n if (to === 'tail') {\n result = this.trimItemsArrayToLimit([...this.items, ...newItems], 'head');\n }\n\n // Directly calls to prevent event emit.\n this._items.deleteAll();\n this._items.set(...(result.map(item => [this.getId(item), item] as [string, ItemT])));\n }\n\n protected emitChangeWithDiff(itemChanged: boolean, originalState: WindowState): void {\n if (itemChanged || originalState !== this.state) {\n this.eventTarget.emit('change', { setItems: Array.from(this._items.items.keys()) })\n }\n }\n\n /**\n * Return array with messages trimmed using High/Low Watermark strategy.\n */\n private trimItemsArrayToLimit(items: ItemT[], from: 'head' | 'tail'): ItemT[] {\n const highWatermark = this.limit;\n\n if (highWatermark === null || items.length <= highWatermark) {\n return items;\n }\n\n const lowWatermark = Math.floor(highWatermark * this.internalState.retainRatio);\n\n if (from === 'head') {\n return items.slice(-lowWatermark);\n }\n\n if (from === 'tail') {\n return items.slice(0, lowWatermark);\n }\n\n return items;\n }\n}\n\nexport type TopicHistoryWindowEventMap = CollectionEventMap & {\n reftopicsdeleted: string[];\n};\n\nexport class TopicHistoryWindow extends TraversableRemoteCollection<\n Message,\n TopicHistoryWindowEventMap\n> {\n /**\n * Reexported available window modes enum.\n */\n public readonly WindowState: typeof WindowState = WindowState;\n\n declare protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {\n traverseLock: boolean,\n };\n\n public constructor(\n private roomId: string,\n private topicId: string,\n private tracker: ChatStateTracker,\n bindEvents: boolean = true,\n ) {\n super('id');\n\n this.internalState.traverseLock = false;\n\n if (bindEvents) {\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n }\n }\n\n public createMirror(): TopicHistoryWindow {\n const copy = new TopicHistoryWindow(this.roomId, this.topicId, this.tracker, false);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n copy.internalState = this.internalState;\n return copy;\n }\n\n public get isTraverseLocked(): boolean {\n return this.internalState.traverseLock;\n }\n\n public async setTraverseLock(lock: boolean): Promise<void> {\n this.internalState.traverseLock = lock;\n\n if (lock && (this.state !== WindowState.LIVE && this.state !== WindowState.LATEST)) {\n await super.resetToLatest();\n }\n }\n\n public async resetToLatest(force: boolean = false): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.resetToLatest(force);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchNext();\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchPrevious();\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.jumpTo(id);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public _updateMessageReference(refTopic: Topic): void {\n const refMessage = this.get(refTopic.refMessage.id);\n\n if (refMessage) {\n // Update referenced topic ID in message\n this.set({...refMessage, topicRef: refTopic.id});\n }\n }\n\n protected async fetchItemsAfter(): Promise<Message[] | null> {\n const afterId = this.getAt(this.length - 1)?.id;\n\n if (! afterId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n after: afterId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsAround(id: string): Promise<Message[] | null> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n around: id,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsBefore(): Promise<Message[] | null> {\n const beforeId = this.getAt(0)?.id;\n\n if (! beforeId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n before: beforeId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchLatestItems(): Promise<Message[]> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n private async getTopic(): Promise<Topic | undefined> {\n return (await this.tracker.rooms.getTopics(this.roomId, [this.topicId])).get(this.topicId);\n }\n\n private async getLatestMessageId(): Promise<string | undefined> {\n return (await this.getTopic())?.lastMessage?.id;\n }\n\n protected async isLatestItemLoaded(): Promise<boolean> {\n const lastMessageId = await this.getLatestMessageId();\n return lastMessageId ? this.has(lastMessageId) : true;\n }\n\n private async handleNewMessage(ev: NewMessage): Promise<void> {\n if (\n [WindowState.LATEST, WindowState.LIVE].includes(this.state)\n && ev.message.location.roomId === this.roomId\n && ev.message.location.topicId === this.topicId\n ) {\n const originalState = this.state;\n this.addItems([ev.message], 'tail');\n this.emitChangeWithDiff(true, originalState);\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n if (ev.location.topicId !== this.topicId || ev.location.roomId !== this.roomId) {\n return;\n }\n\n const refTopicIds = this.items\n .filter(msg => msg.topicRef && ev.ids.includes(msg.id))\n .map(msg => msg.topicRef as string);\n\n this.delete(...ev.ids);\n\n if (this.length === 0) {\n await this.resetToLatest();\n }\n\n if (refTopicIds.length > 0) {\n this.eventTarget.emit('reftopicsdeleted', refTopicIds);\n }\n }\n}\n","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {NewTopic, Room, RoomUpdated, Topic, TopicDeleted} from \"../types/src\";\nimport {IndexedCollection,} from \"../IndexedObjectCollection\";\nimport {TopicHistoryWindow, WindowState} from \"./TopicHistoryWindow\";\n\nexport class RoomMessagesHistory {\n private historyWindows = new IndexedCollection<string, TopicHistoryWindow>();\n private traverseLock: boolean = false;\n\n public constructor(\n private room: Room,\n private tracker: ChatStateTracker,\n ) {\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n\n this.updateTraverseLock(this.room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n }\n\n /**\n * Returns a history window object for the given topic ID, allowing you to view message history.\n * @param topicId\n * @param peek If true, do not create a cache for this topic and do not allow it to collect new messages.\n */\n public async getMessagesWindow(topicId: string, peek: boolean = false): Promise<TopicHistoryWindow | undefined> {\n if (!this.historyWindows.has(topicId) && !peek) {\n const topic = (await this.tracker.rooms.getTopics(this.room.id, [topicId])).get(topicId);\n\n if (topic) {\n this.createHistoryWindowForTopic(topic);\n }\n }\n\n return this.historyWindows.get(topicId);\n }\n\n /**\n * Re-synchronise this room's history after a reconnect without discarding\n * the existing window objects (which would blank the UI and, for ephemeral\n * rooms, permanently drop live-only history).\n *\n * The window bindings are preserved; only windows that the application had\n * actually pulled to the latest page (state === LATEST) are refreshed, with\n * a single resetToLatest instead of a chain of catch-up requests. Windows\n * that were never pulled (LIVE) or belong to an ephemeral room are left\n * untouched so their in-memory context survives the reconnect.\n */\n public async resync(room: Room): Promise<void> {\n this.room = room;\n this.updateTraverseLock(room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n try {\n await window.setTraverseLock(this.traverseLock);\n\n // Ephemeral history lives only in memory (the server does not\n // persist it), so never refetch/replace it on reconnect.\n if (this.traverseLock) {\n continue;\n }\n\n if (window.state === WindowState.LATEST) {\n await window.resetToLatest(true);\n }\n } catch (_e) {\n // Best effort: the connection can drop again mid-resync. The\n // window keeps its current content and stays usable, so the\n // application can refresh it on demand.\n }\n }\n }\n\n private async handleRoomUpdated(ev: RoomUpdated): Promise<void> {\n if (this.room.id === ev.room.id) {\n this.room = ev.room;\n\n this.updateTraverseLock(ev.room);\n\n if (ev.room.defaultTopic) {\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n await window.setTraverseLock(this.traverseLock);\n }\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n if (this.room.id === ev.roomId) {\n this.createHistoryWindowForTopic(ev.topic);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n if (this.room.id === ev.location.roomId) {\n this.historyWindows.delete(ev.location.topicId);\n }\n }\n\n private createHistoryWindowForTopic(topic: Topic): void {\n if (this.historyWindows.has(topic.id)) {\n return;\n }\n\n const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);\n\n void historyWindow.setTraverseLock(this.traverseLock);\n\n this.historyWindows.set([topic.id, historyWindow]);\n\n // Current behavior of deletion a message with referenced topic is to delete the whole side topic\n // So we need to listen for topic deletions here\n historyWindow.on('reftopicsdeleted', (deletedTopicIds: string[]) => {\n for (const topicId of deletedTopicIds) {\n this.historyWindows.delete(topicId);\n }\n this.tracker.rooms._deleteTopicsFromRoom(this.room.id, ...deletedTopicIds);\n });\n\n // If new topic refers to some message from this room, update other structures\n if (topic.refMessage) {\n const refHistoryWindow = this.historyWindows.get(topic.refMessage.location.topicId);\n refHistoryWindow?._updateMessageReference(topic);\n }\n }\n\n private updateTraverseLock(room: Room): void {\n this.traverseLock = room.history.mode === 'Ephemeral';\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n RoomDeleted,\n RoomLeft,\n RoomJoined,\n Session,\n Room,\n Message, ChatLocation,\n} from \"../types/src\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {DeferredTask} from \"./AsyncUtils\";\nimport {RoomMessagesHistory} from \"./RoomMessagesHistory\";\n\nexport class MessagesManager {\n private readonly roomHistories = new IndexedCollection<string, RoomMessagesHistory>();\n private readonly deferredSession = new DeferredTask();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n }\n\n /**\n * Get history manager for given room ID.\n */\n public async getRoomHistory(roomId: string): Promise<RoomMessagesHistory | undefined> {\n await this.deferredSession.promise;\n return this.roomHistories.get(roomId);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public async _resolveLastMessage(location: ChatLocation): Promise<Message|null> {\n // Try to get last message from history window (if cached)\n let message: Message = await this.getRoomHistory(location.roomId)\n .then(roomHistory => roomHistory?.getMessagesWindow(location.topicId, true))\n .then(\n historyWindow =>\n historyWindow?.hasLatest && historyWindow.getAt(historyWindow.length - 1)\n );\n\n if (!message) {\n const result = await this.tracker.client.send('GetMessages', {\n location,\n limit: 1,\n });\n message = result.data?.messages[0];\n }\n\n return message || null;\n }\n\n private createHistoryForNewRoom(room: Room): void {\n this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.createHistoryForNewRoom(ev.room);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleSession(ev: Session): void {\n const stateRoomIds = new Set(ev.state.rooms.map(room => room.id));\n\n // Drop histories only for rooms that no longer exist server-side.\n for (const roomId of Array.from(this.roomHistories.items.keys())) {\n if (! stateRoomIds.has(roomId)) {\n this.roomHistories.delete(roomId);\n }\n }\n\n // Keep existing histories (preserving loaded messages and, crucially,\n // live-only ephemeral history), create histories for newly joined\n // rooms, and resync survivors against the fresh room snapshot.\n for (const room of ev.state.rooms) {\n const history = this.roomHistories.get(room.id);\n if (history) {\n void history.resync(room);\n } else {\n this.createHistoryForNewRoom(room);\n }\n }\n\n this.deferredSession.resolve();\n }\n}","import {EventTarget} from \"../EventTarget\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n ChatLocation,\n FollowedTopic,\n FollowedTopicUpdated,\n NewMessage, NewTopic,\n RoomDeleted,\n RoomJoined, RoomLeft,\n Session, TopicDeleted,\n TopicFollowed, TopicUnfollowed\n} from \"../types/src\";\n\ninterface EventMap {\n change: {};\n}\n\nexport interface UnreadSummary {\n mentionCount: number;\n unreadTopicCount: number;\n isUnread: boolean;\n}\n\nexport class FollowedTopicsManager extends EventTarget<EventMap> {\n private readonly followedTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<FollowedTopic>>();\n private readonly followedTopicsPromises = new PromiseRegistry();\n private readonly deferredSession = new DeferredTask();\n private readonly summariesCache = new Map<string, UnreadSummary>();\n\n /**\n * Rooms whose cached followed-topics are stale after a reconnect and must\n * be refetched (and reconciled in place) the next time they are accessed.\n */\n private readonly staleRooms = new Set<string>();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('FollowedTopicUpdated', ev => this.handleFollowedTopicUpdated(ev));\n this.tracker.client.on('TopicFollowed', ev => this.handleTopicFollowed(ev));\n this.tracker.client.on('TopicUnfollowed', ev => this.handleTopicUnfollowed(ev));\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n /**\n * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.\n * Then you can get them using getRoomFollowedTopics().\n * @see getForRoom\n */\n public async cacheForSpace(spaceId: string | null): Promise<void> {\n if (spaceId && ! (await this.tracker.spaces.get()).has(spaceId)) {\n throw new Error(`You are not in space ${spaceId}`);\n }\n\n const rooms = await this.tracker.rooms.get();\n const roomIds = spaceId\n ? rooms.findBy('spaceId', spaceId).items.map(r => r.id)\n : rooms.items.filter(r => !r.spaceId).map(r => r.id);\n\n if (!roomIds.length) {\n return;\n }\n\n const needsFetch = roomIds.some(roomId => ! this.followedTopics.has(roomId) || this.staleRooms.has(roomId));\n if (! needsFetch) {\n return;\n }\n\n const spaceRegistryKey = `space_fetch_${spaceId || 'spaceless'}`;\n\n if (this.followedTopicsPromises.notExist(spaceRegistryKey)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {spaceId}});\n if (result.error) throw result.error;\n\n this.reconcileRoomsFollowedTopics(roomIds, result.data.followedTopics);\n }, spaceRegistryKey);\n }\n\n await this.followedTopicsPromises.get(spaceRegistryKey);\n }\n\n /**\n * Get followed topics for the given room.\n * @return Undefined if you are not in the room, collection otherwise.\n */\n public async getForRoom(roomId: string): Promise<ObservableIndexedObjectCollection<FollowedTopic> | undefined> {\n if (! (await this.tracker.rooms.get()).has(roomId)) {\n return undefined;\n }\n\n if (! this.followedTopics.has(roomId) || this.staleRooms.has(roomId)) {\n if (this.followedTopicsPromises.notExist(roomId)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {roomId}});\n\n if (result.error) {\n throw result.error;\n }\n\n this.applyRoomFollowedTopics(roomId, result.data.followedTopics);\n this.invalidateUnreadSummaries(roomId);\n }, roomId);\n }\n\n await this.followedTopicsPromises.get(roomId);\n }\n\n return this.followedTopics.get(roomId);\n }\n\n /**\n * Batch acknowledge all messages for given room.\n */\n public async ackRoom(roomId: string): Promise<void> {\n const collection = await this.getForRoom(roomId);\n\n if (! collection) {\n return;\n }\n\n for (const followedTopic of collection.items) {\n if (followedTopic.isUnread) {\n await this.tracker.client.send('Ack', {location: followedTopic.location});\n }\n }\n }\n\n /**\n * Summarize all unread messages or mentions from any topic in given location.\n * This method uses an internal cache, so it's ok to call it multiple times.\n * Capture the 'change' event to determine when it's worth calling this method again due to data changes.\n * @return Undefined if you are not in room.\n */\n public async summarize(location: ChatLocation): Promise<UnreadSummary> {\n const cacheKey = location.topicId\n ? `topic:${location.roomId}:${location.topicId}`\n : location.roomId\n ? `room:${location.roomId}`\n : location.spaceId\n ? `space:${location.spaceId}`\n : 'spaceless';\n\n if (this.summariesCache.has(cacheKey)) {\n return this.summariesCache.get(cacheKey)!;\n }\n\n let roomIds: string[] = [];\n let targetTopicId: string | undefined;\n const rooms = await this.tracker.rooms.get();\n\n if (location.topicId) {\n if (!location.roomId) {\n throw new Error(\"roomId is required when querying by topicId\");\n }\n roomIds = [location.roomId];\n targetTopicId = location.topicId;\n } else if (location.roomId) {\n roomIds = [location.roomId];\n } else if (location.spaceId) {\n await this.cacheForSpace(location.spaceId);\n roomIds = rooms.findBy('spaceId', location.spaceId).items.map(r => r.id);\n } else {\n await this.cacheForSpace(null);\n roomIds = rooms.items.filter(r => !r.spaceId).map(r => r.id);\n }\n\n let mentionCount = 0;\n let unreadTopicCount = 0;\n\n for (const roomId of roomIds) {\n const collection = await this.getForRoom(roomId);\n\n if (!collection) {\n continue;\n }\n\n for (const topic of collection.items) {\n if (targetTopicId && topic.location.topicId !== targetTopicId) {\n continue;\n }\n\n if (topic.isUnread) {\n unreadTopicCount++;\n }\n\n mentionCount += (topic.mentionCount ?? 0);\n }\n }\n\n const result = { mentionCount, unreadTopicCount, isUnread: unreadTopicCount > 0 };\n this.summariesCache.set(cacheKey, result);\n\n return result;\n }\n\n /**\n * For internal use. If you want to delete the message, execute a proper command on client object.\n * @internal\n */\n public _deleteByTopicIds(roomId: string, ...topicIds: string[]): void {\n this.followedTopics.get(roomId)?.delete(...topicIds);\n topicIds.forEach(topicId => this.invalidateUnreadSummaries(roomId, topicId));\n }\n\n private handleSession(ev: Session): void {\n // Keep cached followed-topic collections (they drive unread indicators\n // that would otherwise blank on reconnect), but mark them stale and drop\n // the fetch guards so the next access/caching refetches and reconciles\n // them in place.\n for (const roomId of this.followedTopics.items.keys()) {\n this.staleRooms.add(roomId);\n }\n this.followedTopicsPromises.forgetAll();\n this.invalidateUnreadSummaries();\n this.deferredSession.resolve();\n }\n\n private handleNewMessage(ev: NewMessage): void {\n void this.updateLocallyFollowedTopicOnNewMessage(ev);\n }\n\n private handleFollowedTopicUpdated(ev: FollowedTopicUpdated): void {\n this.followedTopics.get(ev.followedTopic.location.roomId)?.set(ev.followedTopic);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicFollowed(ev: TopicFollowed): void {\n this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicUnfollowed(ev: TopicUnfollowed): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.clearRoomFollowedTopicsStructures(ev.room.id);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private async handleNewTopic(ev: NewTopic): Promise<void> {\n if (this.followedTopics.has(ev.roomId)) {\n // Check if the new topic is followed by user\n // only if client asked for followed topics list before for this room\n const result = await this.tracker.client.send(\n 'GetFollowedTopics',\n {location: {roomId: ev.roomId, topicId: ev.topic.id}},\n );\n const followedTopic = result.data.followedTopics[0];\n if (followedTopic) {\n this.followedTopics.get(ev.roomId).set(followedTopic);\n this.invalidateUnreadSummaries(ev.roomId, ev.topic.id);\n }\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n /**\n * Invalidate the summaries cache intentionally, only for the locations affected by the change.\n */\n private invalidateUnreadSummaries(roomId?: string, topicId?: string): void {\n if (roomId) {\n this.summariesCache.delete(`room:${roomId}`);\n\n if (topicId) {\n this.summariesCache.delete(`topic:${roomId}:${topicId}`);\n } else {\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith(`topic:${roomId}:`)) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n }\n }\n } else {\n this.summariesCache.clear();\n }\n\n this.emit('change');\n }\n\n private invalidateUnreadSummariesForRooms(roomIds: string[]): void {\n const roomIdsSet = new Set(roomIds);\n roomIds.forEach(roomId => {\n this.summariesCache.delete(`room:${roomId}`);\n });\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n continue;\n }\n if (key.startsWith('topic:')) {\n const parts = key.split(':');\n if (parts.length >= 2 && roomIdsSet.has(parts[1])) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n this.emit('change');\n }\n\n private async updateLocallyFollowedTopicOnNewMessage(ev: NewMessage): Promise<void> {\n const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);\n const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);\n\n if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {\n // Skip if we don't follow this room or message is ephemeral\n return;\n }\n\n const me = await this.tracker.getMe();\n const isMe = ev.message.author.user.id === me.id;\n let update: Partial<FollowedTopic>;\n\n if (isMe) {\n // Reset missed messages count if new message is authored by me\n update = {missed: 0, lastAckMessageId: ev.message.id};\n } else if (ev.message.type === 'Text') {\n // ...check for mentions if it's text message...\n const member = await this.tracker.rooms.getMe(ev.message.location.roomId);\n const roleIds = [...(member.spaceMember?.roles ?? []), ...(member.roles ?? [])];\n const mentionHandlers = [\n ...roleIds.map(id => `<@&${id}>`),\n `<@${me.id}>`,\n ];\n const mentionExists = mentionHandlers.some(handler => ev.message.content.includes(handler));\n\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n mentionCount: followedTopic.mentionCount + (mentionExists ? 1 : 0),\n };\n } else {\n // ...or just mark as unread.\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n };\n }\n\n roomFollowedTopics.set({...followedTopic, ...update});\n this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);\n }\n\n /**\n * Reconcile the followed-topics collection for a single room to exactly\n * match the provided list (upsert present, drop absent) without emitting an\n * intermediate empty state, and clear its stale marker. Does not touch the\n * unread summaries cache - callers decide how to invalidate it.\n */\n private applyRoomFollowedTopics(roomId: string, followedTopics: FollowedTopic[]): void {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n this.followedTopics.get(roomId).reconcile(...followedTopics);\n this.staleRooms.delete(roomId);\n }\n\n /**\n * Reconcile a batch of rooms from a single bulk GetFollowedTopics response.\n * Rooms with no followed topics in the response are reconciled to empty, so\n * topics unfollowed/removed during the downtime are correctly dropped.\n */\n private reconcileRoomsFollowedTopics(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n followedTopics.forEach(followedTopic => {\n (roomToTopics[followedTopic.location.roomId] ??= []).push(followedTopic);\n });\n\n roomIds.forEach(roomId => this.applyRoomFollowedTopics(roomId, roomToTopics[roomId] ?? []));\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private setFollowedTopicsArray(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n // Reassign followed topics to limit collection change event emit\n followedTopics.forEach(followedTopic => {\n roomToTopics[followedTopic.location.roomId] ??= [];\n roomToTopics[followedTopic.location.roomId].push(followedTopic);\n });\n\n roomIds.forEach(roomId => {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n if (roomToTopics[roomId]) {\n this.followedTopics.get(roomId).set(...roomToTopics[roomId]);\n }\n });\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private clearRoomFollowedTopicsStructures(roomId: string): void {\n this.followedTopics.delete(roomId);\n this.followedTopicsPromises.forget(roomId);\n this.staleRooms.delete(roomId);\n this.invalidateUnreadSummaries(roomId);\n }\n}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n Message,\n MessagesRedacted,\n NewMessage,\n NewTopic,\n Room, RoomDeleted,\n RoomJoined, RoomLeft,\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\n RoomMemberUpdated, RoomUpdated, Session, SpaceDeleted, SpaceLeft, SpaceMemberLeft,\n SpaceMemberUpdated,\n Topic,\n TopicDeleted, TopicUpdated,\n UserUpdated,\n} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {MessagesManager} from \"./MessagesManager\";\nimport {FollowedTopicsManager} from \"./FollowedTopicsManager\";\n\nexport class RoomsManager {\n public readonly messages: MessagesManager;\n public readonly followedTopics: FollowedTopicsManager;\n\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly membersPromises = new PromiseRegistry();\n private readonly topicsPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.messages = new MessagesManager(tracker);\n this.followedTopics = new FollowedTopicsManager(tracker);\n\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicUpdated', ev => this.handleTopicUpdated(ev));\n this.tracker.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.tracker.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.tracker.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of room members.\n */\n public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {\n if (this.membersPromises.notExist(roomId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\n if (result.error) {\n throw result.error;\n }\n this.handleRoomMembers(result.data);\n }, roomId);\n }\n\n await this.membersPromises.get(roomId);\n return this.members.get(roomId);\n }\n\n /**\n * Get a room member representing the current user.\n */\n public async getMe(roomId: string): Promise<RoomMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(roomId)) {\n // User is not in passed room.\n return undefined;\n }\n\n const members = await this.getMembers(roomId);\n return members?.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);\n }\n\n /**\n * Get collection of all the rooms you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get a collection of locally cached Topic objects for given room.\n * You can pass topic ids as second argument, to try to fetch them from the server.\n */\n public async getTopics(roomId: string, tryToFetchTopicIds?: string[]): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\n await this.deferredSession.promise;\n\n if (tryToFetchTopicIds?.length) {\n // Topic can be fetched if it isn't already cached and fetch is not already in progress\n const canFetch = (topicId: string) => ! this.topics.get(roomId)?.has(topicId) && ! this.topicsPromises.has(roomId + topicId);\n const idsToFetch = tryToFetchTopicIds.filter(canFetch);\n\n if (idsToFetch.length) {\n const promise = this.tracker\n .client\n .send('GetTopics', {roomId, topicIds: idsToFetch})\n .then(result => this.topics.get(result.data.location.roomId)?.set(...result.data.topics));\n\n idsToFetch.forEach(topicId => this.topicsPromises.register(promise, roomId + topicId));\n }\n\n for (const topicId of tryToFetchTopicIds) {\n await this.topicsPromises.get(roomId + topicId);\n }\n }\n\n return this.topics.get(roomId);\n }\n\n /**\n * For internal use. If you want to delete topic, execute a proper command on client object.\n * @internal\n */\n public _deleteTopicsFromRoom(roomId: string, ...topicIds: string[]): void {\n this.topics.get(roomId)?.delete(...topicIds);\n }\n\n private deleteRoom(...roomIds: string[]): void {\n this.list.delete(...roomIds);\n this.members.delete(...roomIds);\n this.membersPromises.forget(...roomIds);\n\n for (const roomId of roomIds) {\n const topicIds: string[] = this.topics.get(roomId)?.items.map(topic => topic.id) ?? [];\n this.followedTopics._deleteByTopicIds(roomId, ...topicIds);\n }\n\n this.topics.delete(...roomIds);\n }\n\n private deleteRoomsBySpaceId(spaceId: string): void {\n this.deleteRoom(\n ...this.list.findBy('spaceId', spaceId).items.map(room => room.id)\n );\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n // Update members of rooms related to this space\n for (const room of this.list.findBy('spaceId', ev.spaceId).items) {\n const roomMembers = this.members.get(room.id);\n\n if (!roomMembers || !roomMembers.has(ev.userId)) {\n // Skip update if member list for this room is not loaded\n // or user is not in room\n continue;\n }\n\n // Update space member in roomMember, but first fill the user object (it's null in event)\n const roomMember = roomMembers.get(ev.userId);\n const spaceMember = ev.member;\n spaceMember.user = roomMember.spaceMember.user;\n roomMembers.set({ ...roomMember, spaceMember });\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n this.list\n .findBy('spaceId', ev.spaceId).items\n .forEach(room => this.members.get(room.id)?.delete(ev.userId));\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (! this.members.has(ev.roomId)) {\n // We do not track member list for this room.\n return;\n }\n\n const members = this.members.get(ev.roomId);\n const member = members.get(ev.userId);\n const newMember = ev.member;\n const user = member.spaceMember?.user ?? member.user;\n\n // Preserving user object, because it's not included in event\n if (newMember.spaceMember) {\n newMember.spaceMember.user = user;\n } else {\n newMember.user = user;\n }\n\n members.set(newMember);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n this.deleteRoomsBySpaceId(ev.id);\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.topics.get(ev.location.roomId);\n collection.delete(ev.location.topicId);\n\n const room = this.list.get(ev.location.roomId);\n if (room.defaultTopic?.id === ev.location.topicId) {\n this.list.set({...room, defaultTopic: null});\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\n }\n\n private addJoinedRoomTopics(roomId: string, ...topics: Topic[]): void {\n if (this.topics.has(roomId)) {\n this.topics.get(roomId).set(...topics);\n } else {\n this.topics.set([roomId, new ObservableIndexedObjectCollection<Topic>('id', topics)]);\n }\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (this.list.has(ev.room.id)) {\n this.list.set(ev.room);\n }\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.deleteRoom(ev.id);\n }\n\n private handleTopicUpdated(ev: TopicUpdated): void {\n const room = this.list.get(ev.location.roomId);\n\n if (this.topics.get(ev.location.roomId)?.has(ev.topic.id)) {\n this.topics.get(ev.location.roomId).set(ev.topic);\n }\n\n if (room.defaultTopic.id === ev.topic.id) {\n const newRoom = { ...room };\n newRoom.defaultTopic = ev.topic;\n this.list.set(newRoom);\n }\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n for (const room of rooms) {\n if (room.defaultTopic) {\n this.addJoinedRoomTopics(room.id, room.defaultTopic);\n }\n\n if (room.type === 'Pm' && room.recipients) {\n // Treat PM recipients as normal room members.\n // We are registering fake promise in `memberPromises`\n // because GetMembers are not supported for PM rooms.\n this.handleRoomMembers({\n id: room.id,\n members: room.recipients.map(user => ({\n user,\n spaceMember: null,\n roles: null,\n customColor: null,\n customNick: null,\n extras: '',\n })),\n });\n this.membersPromises.register(Promise.resolve(), room.id);\n }\n }\n this.list.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.deleteRoom(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member.user?.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n } else {\n // Reconcile into the existing (bound) collection so a reconnect\n // refetch updates it in place instead of leaving stale members.\n this.members.get(ev.id).reconcile(...ev.members);\n }\n }\n\n private handleSession(ev: Session): void {\n const stateRoomIds = new Set(ev.state.rooms.map(room => room.id));\n\n // Remove only rooms that were left/deleted on the server during the\n // downtime, reusing the cascade cleanup (members, topics, followed\n // topics). Surviving rooms keep their identity and bindings.\n const removedRoomIds = this.list.items\n .filter(room => ! stateRoomIds.has(room.id))\n .map(room => room.id);\n if (removedRoomIds.length) {\n this.deleteRoom(...removedRoomIds);\n }\n\n // Invalidate lazy caches so the next access refetches fresh data, but\n // keep the collection objects: handleRoomMembers reconciles into them,\n // so bound views refresh in place without blanking.\n this.membersPromises.forgetAll();\n this.topicsPromises.forgetAll();\n\n // Upsert surviving/new rooms from the authoritative snapshot.\n this.addJoinedRooms(...ev.state.rooms);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n // Update room members users\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip room; updated user is not here\n return;\n }\n\n const newMember: RoomMember = {...member};\n\n if (member.user) {\n newMember.user = ev.user;\n } else {\n newMember.spaceMember.user = ev.user;\n }\n\n members.set(newMember);\n });\n\n // Update recipients users\n const newRooms: Room[] = [];\n this.list.items.forEach(room => {\n if (room.recipients?.some(user => user.id === ev.user.id)) {\n room.recipients = room.recipients.map(user => user.id === ev.user.id ? ev.user : user);\n newRooms.push({...room});\n }\n });\n this.list.set(...newRooms);\n }\n\n private handleNewMessage(ev: NewMessage): void {\n const topics = this.topics.get(ev.message.location.roomId);\n const topic = topics?.get(ev.message.location.topicId);\n\n if (!topic) {\n return; // No topic found, nothing to update\n }\n\n const newTopic = {\n ...topic,\n messageCount: topic.messageCount + 1,\n lastMessage: ev.message,\n };\n\n topics.set(newTopic);\n const room = this.list.get(ev.message.location.roomId);\n\n if (room.defaultTopic?.id === ev.message.location.topicId) {\n this.list.set({ ...room, defaultTopic: newTopic });\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n // Remove redacted messages from topic and update metadata\n const topics = this.topics.get(ev.location.roomId);\n const topic = topics?.get(ev.location.topicId);\n if (topic) {\n const messageCount = Math.max(topic.messageCount - ev.ids.length, 0);\n const lastMessage: Message = messageCount > 0 ? await this.messages._resolveLastMessage(ev.location) : null;\n topics.set({ ...topic, messageCount, lastMessage } as Topic);\n }\n }\n}","import {Role, RoomMember, SpaceMember, User} from \"../types/src\";\r\n\r\nexport function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, updatedRole: Role): Role[] {\r\n // If the priority has changed, adjust the rest of roles\r\n const increased = (updatedRole.priority - oldRole.priority) > 0;\r\n const decreased = ! increased;\r\n const changedRoles: Role[] = [];\r\n\r\n allRoles.forEach(role => {\r\n if (role.id === updatedRole.id) {\r\n // Skip the updated role\r\n return;\r\n }\r\n if (increased && oldRole.priority <= role.priority) {\r\n role.priority--;\r\n changedRoles.push(role);\r\n }\r\n if (decreased && updatedRole.priority <= role.priority) {\r\n role.priority++;\r\n changedRoles.push(role);\r\n }\r\n });\r\n\r\n return changedRoles;\r\n}\r\n\r\nexport function extractUserFromMember(member: RoomMember | SpaceMember): User | null {\r\n return member.user ?? (member as RoomMember).spaceMember?.user;\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRole,\n NewRoom,\n Role,\n RoleDeleted,\n RoleUpdated,\n RoomDeleted,\n RoomSummary,\n RoomSummaryUpdated,\n RoomUpdated,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft,\n SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdated,\n SpaceRooms,\n SpaceUpdated,\n UserUpdated\n} from \"../types/src\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {reorderRolesOnPriorityUpdate} from \"./functions\";\n\nexport class SpacesManager {\n private readonly list = new ObservableIndexedObjectCollection<Space>('id');\n private readonly roles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly rooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly roomIdToSpaceId = new IndexedCollection<string, string>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly roomsPromises = new PromiseRegistry();\n private readonly membersPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceUpdated', ev => this.handleSpaceUpdated(ev));\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('RoleUpdated', ev => this.handleRoleUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of all the spaces you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get collection of space roles.\n */\n public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {\n await this.deferredSession.promise;\n return this.roles.get(spaceId);\n }\n\n /**\n * Get collection of the all available rooms inside given space.\n */\n public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {\n if (this.roomsPromises.notExist(spaceId)) {\n this.roomsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceRooms(result.data);\n }, spaceId);\n }\n\n await this.roomsPromises.get(spaceId);\n return this.rooms.get(spaceId);\n }\n\n /**\n * Get collection of space members.\n */\n public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {\n if (this.membersPromises.notExist(spaceId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceMembers(result.data);\n }, spaceId);\n }\n\n await this.membersPromises.get(spaceId);\n return this.members.get(spaceId);\n }\n\n /**\n * Get a space member representing the current user.\n */\n public async getMe(spaceId: string): Promise<SpaceMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(spaceId)) {\n // User is not in passed space.\n return undefined;\n }\n\n const members = await this.getMembers(spaceId);\n return members?.items.find(member => member.user.id === userId);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.roles.get(ev.spaceId);\n collection.set(ev.role);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.rooms.get(ev.spaceId)?.set(ev.summary);\n this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {\n const rooms = this.rooms.get(ev.room.spaceId);\n rooms.set({\n ...rooms.get(ev.room.id),\n name: ev.room.name,\n description: ev.room.description,\n } as RoomSummary);\n }\n }\n\n private async handleRoomDeleted(ev: RoomDeleted): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.id);\n this.roomIdToSpaceId.delete(ev.id);\n\n if (! spaceId) {\n return;\n }\n\n const space = this.list.get(spaceId);\n let spaceChanged = false;\n\n this.rooms.get(spaceId)?.delete(ev.id);\n\n if (space.systemRoom === ev.id) {\n space.systemRoom = null;\n spaceChanged = true;\n }\n\n if (space.defaultRooms.includes(ev.id)) {\n space.defaultRooms = space.defaultRooms.filter(roomId => roomId !== ev.id);\n spaceChanged = true;\n }\n\n if (spaceChanged) {\n this.list.set(space);\n }\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.roles.get(ev.spaceId);\n collection.delete(ev.id);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleSpaceUpdated(ev: SpaceUpdated): void {\n this.list.set(ev.space);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const roomIds = this.rooms.get(ev.id)?.items.map(item => item.id) ?? [];\n this.roomIdToSpaceId.delete(...roomIds);\n\n this.roles.delete(ev.id);\n this.members.delete(ev.id);\n this.membersPromises.forget(ev.id);\n this.rooms.delete(ev.id);\n this.roomsPromises.forget(ev.id);\n this.list.delete(ev.id);\n }\n\n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.roles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.list.set(...spaces);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n } else {\n // Reconcile into the existing (bound) collection so a reconnect\n // refetch updates it in place instead of leaving stale members.\n this.members.get(ev.id).reconcile(...ev.members);\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (! this.rooms.has(ev.id)) {\n this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n } else {\n this.rooms.get(ev.id).reconcile(...ev.summaries);\n }\n ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));\n }\n\n private async handleRoomSummaryUpdated(ev: RoomSummaryUpdated): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.summary.id);\n const summariesPromise = this.roomsPromises.get(spaceId);\n\n /**\n * Update summary only if the list was already loaded.\n * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.\n */\n if (spaceId && summariesPromise) {\n await summariesPromise;\n\n const summaries = this.rooms.get(spaceId);\n const oldSummary = summaries.get(ev.summary.id);\n let newSummary: RoomSummary;\n\n if (oldSummary) {\n newSummary = {...oldSummary, ...ev.summary};\n } else {\n newSummary = ev.summary;\n }\n\n summaries.set(newSummary);\n }\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (this.members.has(ev.spaceId)) {\n const members = this.members.get(ev.spaceId);\n const member = members.get(ev.userId);\n members.set({...ev.member, user: member.user});\n }\n }\n\n private handleRoleUpdated(ev: RoleUpdated): void {\n const roles = this.roles.get(ev.spaceId);\n const oldRole = roles.get(ev.role.id);\n const newRole = ev.role;\n const rolesToUpdate = [newRole];\n\n if (oldRole.priority !== newRole.priority) {\n rolesToUpdate.push(\n ...reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)\n );\n }\n\n this.roles.get(ev.spaceId).set(...rolesToUpdate);\n }\n\n private handleSession(ev: Session): void {\n const stateSpaceIds = new Set(ev.state.spaces.map(space => space.id));\n\n // Remove only spaces that were left/deleted on the server during the\n // downtime, reusing the cascade cleanup (roles, rooms, members, index).\n const removedSpaceIds = this.list.items\n .filter(space => ! stateSpaceIds.has(space.id))\n .map(space => space.id);\n for (const spaceId of removedSpaceIds) {\n this.handleSpaceDeleted({ id: spaceId } as SpaceDeleted);\n }\n\n // Invalidate lazy caches (rooms/members) but keep their objects so the\n // next access refetches and reconciles them in place.\n this.roomsPromises.forgetAll();\n this.membersPromises.forgetAll();\n\n // Reconcile roles in place (kept, possibly bound object) and upsert the\n // spaces from the authoritative snapshot.\n for (const space of ev.state.spaces) {\n if (this.roles.has(space.id)) {\n this.roles.get(space.id).reconcile(...space.roles);\n } else {\n this.roles.set([\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles),\n ]);\n }\n }\n\n this.list.set(...ev.state.spaces);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip space; updated user is not here\n return;\n }\n\n members.set({...member, user: ev.user});\n });\n }\n}","export enum Layer {\n Global,\n Space,\n Room,\n Topic,\n}\n\nexport class PermissionDefinition {\n value: number;\n maxLayer: Layer;\n}\n\nexport class Permissions {\n public static readonly list = {\n Root: {value: 1 << 0, maxLayer: Layer.Room},\n CreateSpaces: {value: 1 << 1, maxLayer: Layer.Global},\n ManageSpace: {value: 1 << 2, maxLayer: Layer.Space},\n ManageRoles: {value: 1 << 3, maxLayer: Layer.Space},\n //ManageRoom: {value: 1 << 4, maxLayer: Layer.Room},\n CreateTopics: {value: 1 << 5, maxLayer: Layer.Room},\n ManageTopic: {value: 1 << 6, maxLayer: Layer.Topic},\n ManageMemberProfiles: {value: 1 << 7, maxLayer: Layer.Space},\n ManageMemberRoles: {value: 1 << 8, maxLayer: Layer.Room},\n CreateMessages: {value: 1 << 9, maxLayer: Layer.Topic},\n ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},\n CreateRooms: {value: 1 << 11, maxLayer: Layer.Space},\n ManageRoom: {value: 1 << 12, maxLayer: Layer.Room},\n CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},\n ManageEmoticons: {value: 1 << 14, maxLayer: Layer.Space},\n ManageBans: {value: 1 << 15, maxLayer: Layer.Room},\n Kick: {value: 1 << 16, maxLayer: Layer.Room},\n ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},\n ChangeOwnColor: {value: 1 << 18, maxLayer: Layer.Room},\n RedactMessages: {value: 1 << 19, maxLayer: Layer.Topic},\n };\n\n public static getNames(): (keyof typeof this.list)[] {\n return Object.keys(this.list) as any;\n }\n\n public static getByName(name: keyof typeof this.list): PermissionDefinition | undefined {\n return this.list[name];\n }\n\n public static canBeDefinedOnLayer(permissionName: keyof typeof this.list, layer: Layer): boolean {\n const def = this.getByName(permissionName);\n\n if (! def) {\n throw new Error(`Invalid permission name: ${permissionName}`);\n }\n\n return layer <= this.getByName(permissionName).maxLayer;\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n ChatLocation,\n PermissionOverwrites, PermissionOverwritesTarget,\n PermissionOverwritesUpdated,\n PermissionOverwritesValue,\n RoleDeleted,\n RoomDeleted,\n RoomLeft, RoomMember, RoomMemberUpdated, Session,\n SpaceDeleted,\n SpaceLeft, SpaceMember,\n SpaceMemberUpdated,\n TopicDeleted,\n} from \"../types/src\";\nimport {ChangeEventMap, EventTarget} from \"../EventTarget\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {Permissions} from \"../Permissions\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst getOvId = (\n location: ChatLocation,\n target?: PermissionOverwritesTarget,\n) => [location.spaceId, location.roomId, location.topicId, target?.type, target?.userId, target?.roleId].filter(Boolean).join('/');\n\nconst getOvIdByObject\n = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);\n\ninterface CheckPermissionsResult {\n /**\n * @deprecated Use `hasAll` instead.\n */\n ok: boolean;\n hasAll: boolean;\n hasAny: boolean;\n missing: string[];\n}\n\ntype PermissionsManagerEventMap = ChangeEventMap<void>;\n\nexport class PermissionsManager extends EventTarget<PermissionsManagerEventMap> {\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\n private readonly overwritesPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n this.tracker.client.on('PermissionOverwrites', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('PermissionOverwritesUpdated', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n public async getOverwrites(\n location: ChatLocation,\n target: PermissionOverwritesTarget,\n ): Promise<PermissionOverwrites | undefined> {\n this.validateLocation(location);\n\n const id = getOvId(location, target);\n\n if (this.overwritesPromises.notExist(id)) {\n this.overwritesPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send(\n 'GetPermissionOverwrites',\n {location, target},\n );\n if (result.error) {\n throw result.error;\n }\n this.handlePermissionOverwrites(result.data);\n }, id);\n }\n\n await this.overwritesPromises.get(id);\n return this.overwrites.get(id);\n }\n\n public async check(\n permissionNames: (keyof typeof Permissions.list)[],\n location: ChatLocation,\n ): Promise<CheckPermissionsResult> {\n if (! permissionNames.length) {\n throw new Error('Permission names array cannot be empty');\n }\n\n const ownedPermissions = await this.calculatePermissions(location);\n const missing: string[] = [];\n\n permissionNames.forEach(name => {\n if (~ ownedPermissions & Permissions.getByName(name).value) {\n missing.push(name as string);\n }\n });\n\n return {\n ok: missing.length === 0,\n hasAll: missing.length === 0,\n hasAny: missing.length < permissionNames.length,\n missing,\n };\n }\n\n public async calculatePermissions(location: ChatLocation): Promise<number> {\n const room = location.roomId ? (await this.tracker.rooms.get()).get(location.roomId) : null;\n location = {\n spaceId: location.spaceId ?? room?.spaceId,\n roomId: location.roomId,\n topicId: location.topicId,\n };\n\n this.validateLocation(location);\n\n const userId = (await this.tracker.getMe()).id;\n const [spaceMember, roomMember] = await this.fetchMembersOrFail(location);\n const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];\n const promises: Promise<PermissionOverwritesValue>[] = [\n // Global user overwrites\n this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),\n ];\n\n if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId};\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (room) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId, roomId: location.roomId};\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n }\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(location, userRoles));\n }\n promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n return this.resolveOverwritesHierarchy(await Promise.all(promises));\n }\n\n private handlePermissionOverwrites(ev: PermissionOverwritesUpdated | PermissionOverwrites): void {\n this.overwrites.set([getOvIdByObject(ev), ev]);\n this.emit('change');\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.id}));\n this.overwritesPromises.forget(...ids);\n }\n\n private async handleRoomDeleted(ev: RoomDeleted | RoomLeft): Promise<void> {\n const room = (await this.tracker.rooms.get()).get(ev.id);\n if (room) {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: room.spaceId, roomId: room.id}));\n this.overwritesPromises.forget(...ids);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in space could potentially have changed\n this.emit('change');\n }\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in room could potentially have changed\n this.emit('change');\n }\n }\n\n /**\n * @return Matched and deleted ids\n */\n private deleteOverwritesByIdPrefix(prefix: string): string[] {\n const ids: string[] = [];\n this.overwrites.items.forEach((overwrites) => {\n const id = getOvIdByObject(overwrites);\n if (id.startsWith(prefix)) {\n ids.push(id);\n this.overwrites.delete(id);\n }\n });\n return ids;\n }\n\n private async collectRoleOverwrites(\n location: ChatLocation,\n userRoles: string[],\n ): Promise<PermissionOverwritesValue> {\n const roleOverwrites = await Promise.all(userRoles.map(\n roleId => this.getOverwrites(location, { type: 'Role', roleId }),\n ));\n\n return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);\n }\n\n private async resolveOverwritesFromRolesByOrder(\n spaceId: string,\n overwrites: PermissionOverwrites[],\n ): Promise<PermissionOverwritesValue> {\n let allows = 0, denies = 0;\n const roles = await this.tracker.spaces.getRoles(spaceId);\n const sortedOverwrites = overwrites.sort(\n (a, b) =>\n roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority\n );\n\n // Max length of bit word\n const permissionsLength = overwrites.reduce(\n (previousValue: number, currentValue: PermissionOverwrites) =>\n Math.max(\n previousValue,\n currentValue.overwrites.allow?.toString(2).length ?? 0,\n currentValue.overwrites.deny?.toString(2).length ?? 0,\n ),\n 0,\n );\n\n sortedOverwrites.forEach(overwriteEvent => {\n const overwrites = overwriteEvent.overwrites;\n const revDecDenies = overwrites.deny?.toString(2).split('').reverse().join('') ?? '';\n const revDecAllows = overwrites.allow?.toString(2).split('').reverse().join('') ?? '';\n\n for (let i = 0; i < permissionsLength; i++) {\n const deny = parseInt(revDecDenies[i] ?? '0');\n const allow = parseInt(revDecAllows[i] ?? '0');\n\n if (deny) {\n denies |= 1 << i;\n }\n\n if (allow) {\n allows |= 1 << i;\n }\n }\n });\n\n return {allow: allows, deny: denies};\n }\n\n private resolveOverwritesHierarchy(permissionOverwritesValues: PermissionOverwritesValue[]): number {\n let result = 0;\n\n for (const value of permissionOverwritesValues) {\n if (value.allow & Permissions.getByName('Root').value) {\n return this.getRootAccessValue();\n }\n\n result = (result & ~value.deny) | value.allow;\n }\n\n return result;\n }\n\n private getRootAccessValue(): number {\n let result = 0;\n\n for (const name of Permissions.getNames()) {\n result |= Permissions.getByName(name).value;\n }\n\n return result;\n }\n\n private async fetchMembersOrFail(location: ChatLocation): Promise<[SpaceMember | null, RoomMember | null]> {\n const results = await Promise.all([\n location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null,\n location.roomId ? this.tracker.rooms.getMe(location.roomId) : null,\n ]);\n\n const spaceFail = location.spaceId && ! results[0];\n const roomFail = location.roomId && ! results[1];\n\n if (spaceFail || roomFail) {\n const layer = spaceFail ? `space (${location.spaceId})` : `room (${location.roomId})`;\n throw new Error(`Attempting to calculate permissions for a ${layer} that the user does not belong to`);\n }\n\n return results;\n }\n\n private validateLocation(location: ChatLocation): void {\n if (location.topicId && ! location.roomId) {\n throw new Error('Corrupted arguments hierarchy');\n }\n }\n\n private handleSession(ev: Session): void {\n // Drop the fetch guards so permission checks recompute against fresh\n // overwrites (getOverwrites refetches and upserts on the next access),\n // and notify consumers to recompute so bound permission UI is never\n // left showing stale results after a reconnect.\n this.overwritesPromises.forgetAll();\n this.emit('change');\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n IndexedCollection,\n ObservableIndexedObjectCollection\n} from \"../IndexedObjectCollection\";\nimport {Emoticon, EmoticonDeleted, Emoticons, NewEmoticon, SpaceDeleted} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst GLOBAL_KEY = 'global';\n\nexport class EmoticonsManager {\n private list: IndexedCollection<string, ObservableIndexedObjectCollection<Emoticon>> = new IndexedCollection();\n private emoticonsPromises = new PromiseRegistry();\n \n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Emoticons', ev => this.handleEmoticons(ev));\n this.tracker.client.on('NewEmoticon', ev => this.handleNewEmoticon(ev));\n this.tracker.client.on('EmoticonDeleted', ev => this.handleEmoticonDeleted(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(spaceId?: string): Promise<ObservableIndexedObjectCollection<Emoticon>> {\n const key = spaceId ?? GLOBAL_KEY;\n\n if (this.emoticonsPromises.notExist(key)) {\n this.emoticonsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetEmoticons', {spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleEmoticons(result.data);\n }, key);\n }\n\n await this.emoticonsPromises.get(key);\n return this.list.get(key);\n }\n\n private handleEmoticons(event: Emoticons): void {\n const spaceId = event.location.spaceId ?? GLOBAL_KEY;\n\n if (!this.list.has(spaceId)) {\n this.list.set([spaceId, new ObservableIndexedObjectCollection<Emoticon>('id')]);\n }\n\n // handleEmoticons always carries the full list for a location, so\n // reconcile in place: a reconnect refetch drops removed emoticons and\n // adds new ones without blanking a bound (visible) collection.\n this.list.get(spaceId).reconcile(...event.emoticons);\n }\n\n private handleNewEmoticon(ev: NewEmoticon): void {\n const collection = this.list.get(ev.emoticon.spaceId ?? GLOBAL_KEY);\n collection?.set(ev.emoticon);\n }\n\n private handleEmoticonDeleted(ev: EmoticonDeleted): void {\n const collection = this.list.get(ev.spaceId ?? GLOBAL_KEY);\n collection?.delete(ev.emoticonId);\n }\n\n private handleSpaceDeleted(event: SpaceDeleted): void {\n this.list.delete(event.id);\n }\n\n private handleSession(): void {\n // Keep cached emoticon collections (they may be bound to visible\n // pickers); just drop the fetch guards so the next access refetches and\n // reconciles them in place.\n this.emoticonsPromises.forgetAll();\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {RoomMember, Session, SpaceMember, User} from \"../types/src\";\nimport {extractUserFromMember} from \"./functions\";\nimport {EventTarget} from \"../EventTarget\";\n\nexport class UsersManager {\n public readonly onlineStatus = new EventTarget<{ change: User }>();\n\n private readonly users: ObservableIndexedObjectCollection<User> = new ObservableIndexedObjectCollection('id');\n\n public constructor(private tracker: ChatStateTracker) {\n // RoomMemberUpdated & SpaceMemberUpdated events are not contains user object\n tracker.client.on('UserUpdated', event => this.handleUsers([event.user]));\n tracker.client.on('RoomMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMembers', event => this.handleMembers(event.members));\n tracker.client.on('RoomMembers', event => this.handleMembers(event.members));\n tracker.client.on('Messages', event => this.handleUsers(event.messages.map(message => message.author.user)));\n tracker.client.on('NewMessage', event => this.handleUsers([event.message.author.user]));\n tracker.client.on('Session', event => this.handleSession(event));\n }\n\n /**\n * Get all available (cached) user objects at once.\n */\n public async getAvailable(): Promise<ObservableIndexedObjectCollection<User>> {\n return this.users;\n }\n\n private handleMembers(members: (RoomMember | SpaceMember)[]): void {\n this.handleUsers(members.map(extractUserFromMember));\n }\n\n private handleSession(session: Session): void {\n // Keep the \"seen users\" cache across reconnects so bound user lists do\n // not blank out; just ensure our own user is present/updated. Stale\n // entries are refreshed as member/message collections refetch.\n this.handleUsers([session.user]);\n }\n\n private handleUsers(users: User[]): void {\n users.forEach(newUser => {\n const oldUser = this.users.get(newUser.id);\n if (oldUser && oldUser.online !== newUser.online) {\n this.onlineStatus.emit('change', newUser);\n }\n });\n\n this.users.set(...users);\n }\n}","import {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRelationship,\n RelationshipDeleted,\n Relationships,\n UserRelationship,\n UserRelationshipType\n} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\n\nconst getId = (refUserId: string, type: UserRelationshipType): string => `${refUserId}-${type}`;\nconst getIdFromRelationship = (relationship: UserRelationship): string => getId(relationship.refUser.id, relationship.type);\n\nexport class RelationshipsManager {\n private relationships: ObservableIndexedObjectCollection<UserRelationship> = new ObservableIndexedObjectCollection<UserRelationship>(getIdFromRelationship);\n private promises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Relationships', ev => this.handleRelationships(ev));\n this.tracker.client.on('NewRelationship', ev => this.handleNewRelationship(ev));\n this.tracker.client.on('RelationshipDeleted', ev => this.handleRelationshipDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(): Promise<ObservableIndexedObjectCollection<UserRelationship>> {\n if (this.promises.notExist('all')) {\n this.promises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRelationships', {});\n if (result.error) {\n throw result.error;\n }\n }, 'all');\n }\n\n await this.promises.get('all');\n return this.relationships;\n }\n\n public async exists(refUserId: string, type: UserRelationshipType): Promise<boolean> {\n await this.get();\n return this.relationships.has(getId(refUserId, type));\n }\n\n private handleRelationships(ev: Relationships): void {\n // Full list from the server: reconcile in place so a reconnect refetch\n // updates a bound (visible) list without an intermediate empty state.\n this.relationships.reconcile(...ev.relationships);\n }\n\n private handleNewRelationship(ev: NewRelationship): void {\n if (this.promises.has('all')) {\n this.relationships.set(ev.relationship);\n }\n }\n\n private handleRelationshipDeleted(ev: RelationshipDeleted): void {\n if (this.promises.has('all')) {\n this.relationships.delete(getIdFromRelationship(ev.relationship));\n }\n }\n\n private handleSession(): void {\n // Keep the (possibly bound) collection; just drop the fetch guard so the\n // next get() refetches and reconciles it in place.\n this.promises.forgetAll();\n }\n}","import {WebSocketChatClient} from \"../WebSocketChatClient\";\r\nimport {Session, User} from \"../types/src\";\r\nimport {RoomsManager} from \"./RoomsManager\";\r\nimport {SpacesManager} from \"./SpacesManager\";\r\nimport {PermissionsManager} from \"./PermissionsManager\";\r\nimport {DeferredTask} from \"./AsyncUtils\";\r\nimport {EmoticonsManager} from \"./EmoticonsManager\";\r\nimport {UsersManager} from \"./UsersManager\";\r\nimport {RelationshipsManager} from \"./RelationshipsManager\";\r\n\r\nexport class ChatStateTracker {\r\n public readonly client: WebSocketChatClient;\r\n\r\n /**\r\n * State of your permissions.\r\n */\r\n public readonly permissions: PermissionsManager;\r\n\r\n /**\r\n * State of the rooms you are in.\r\n */\r\n public readonly rooms: RoomsManager;\r\n\r\n /**\r\n * State of the spaces you are in.\r\n */\r\n public readonly spaces: SpacesManager;\r\n\r\n /**\r\n * State of the emoticons (global and space-related).\r\n */\r\n public readonly emoticons: EmoticonsManager;\r\n\r\n /**\r\n * Users related state.\r\n */\r\n public readonly users: UsersManager;\r\n\r\n /**\r\n * State of relationships with other users.\r\n */\r\n public readonly relationships: RelationshipsManager;\r\n\r\n private _me: User = null;\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(client: WebSocketChatClient) {\r\n this.client = client;\r\n this.client.on('Session', ev => this.handleSession(ev));\r\n\r\n this.permissions = new PermissionsManager(this);\r\n this.rooms = new RoomsManager(this);\r\n this.spaces = new SpacesManager(this);\r\n this.emoticons = new EmoticonsManager(this);\r\n this.users = new UsersManager(this);\r\n this.relationships = new RelationshipsManager(this);\r\n }\r\n\r\n public get me(): User | null {\r\n return this._me;\r\n }\r\n\r\n public async getMe(): Promise<User> {\r\n await this.deferredSession.promise;\r\n return this._me;\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this._me = ev.user;\r\n this.deferredSession.resolve();\r\n }\r\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n queryParams?: Record<string, string>;\n /**\n * Ping/pong configuration, enabled by default.\n */\n ping?: {\n enabled?: boolean;\n /**\n * Time without activity after which a ping will be sent. Default is 10 seconds.\n */\n noActivityTimeoutMs?: number;\n /**\n * Time to wait for a pong response before considering the connection dead. Default is 2 seconds.\n */\n pongBackTimeoutMs?: number;\n },\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\ntype WebSocketEventMap = EventsMap & {\n [WebSocketChatClientEvent.connect]: void;\n [WebSocketChatClientEvent.disconnect]: boolean;\n [WebSocketChatClientEvent.message]: Envelope;\n [WebSocketChatClientEvent.error]: Error;\n};\n\nexport class WebSocketChatClient extends AbstractChatClient<Pick<WebSocketEventMap, keyof WebSocketEventMap>> implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: Envelope[] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void] | null = null;\n /**\n * Pending promise returned by connect(). Kept until the client is either\n * authenticated or gives up, so that an automatic reconnect settles the\n * original caller instead of stranding it on a superseded promise.\n */\n protected connectPromise: Promise<void> | null = null;\n protected pingMonitorInterval?: NodeJS.Timeout;\n protected inFlightPingTimeout: NodeJS.Timeout;\n protected lastReceivedMessageAt?: number;\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n\n options.ping ??= {};\n options.ping.enabled ??= true;\n options.ping.noActivityTimeoutMs ??= 15000;\n options.ping.pongBackTimeoutMs ??= 5000;\n }\n\n public async connect(): Promise<void> {\n if (this.isOpenWsState() || this.isConnectingWsState()) {\n return this.connectPromise ?? undefined;\n }\n\n // Reuse the promise of an attempt that has not settled yet (an\n // automatic reconnect), so the caller that started connecting is\n // resolved by whichever attempt eventually authenticates.\n this.connectPromise ??= new Promise<void>((...args) => this.authenticatedResolvers = args);\n\n const params = new URLSearchParams(this.options.queryParams ?? {});\n params.set('token', this.options.token);\n\n this.ws = new WebSocket(`${this.options.url}?${params}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n\n return this.connectPromise;\n }\n\n public disconnect(): void {\n this.failPendingCommands(new Error('Client disconnected before the command was answered'));\n this.ws?.close(1000); // Normal closure\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope<CommandRequest<CommandType>>(commandType, commandData);\n const promise = this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n\n if (this.isConnectingWsState() || !this.authenticated && this.isOpenWsState()) {\n this.sendQueue.push(envelope);\n return promise;\n }\n\n this.sendEnvelope(envelope);\n return promise;\n }\n\n public get isReady(): boolean {\n return this.isOpenWsState() && this.authenticated;\n }\n\n private sendEnvelope(envelope: Envelope): void {\n if (this.isReady) {\n this.ws.send(JSON.stringify(envelope));\n return;\n }\n\n this.handleEnvelopeSendError(\n envelope,\n new Error(`Cannot send - client is not ready (state=${this.ws?.readyState ?? '[no connection]'}; authenticated=${this.authenticated})`)\n );\n }\n\n private onMessage(event: MessageEvent): void {\n this.lastReceivedMessageAt = Date.now();\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Bye';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.startConnectionMonitor();\n this.settleConnect();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.settleConnect(envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n this.stopConnectionMonitor();\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n\n // The server can no longer answer anything that was queued or in\n // flight, so settle those promises instead of leaving them pending.\n this.failPendingCommands(new Error('Connection closed before the command was answered'));\n\n if (reconnect) {\n // Keep a pending connect() promise unsettled - the retry below is\n // expected to authenticate and will resolve it.\n void this.connect();\n } else {\n this.settleConnect(new Error('Connection closed before authentication'));\n }\n\n this.emit(this.Event.disconnect, reconnect);\n }\n\n /**\n * Resolve (or reject, when an error is given) a pending connect() promise.\n * No-op when there is nothing pending.\n */\n private settleConnect(error?: any): void {\n const resolvers = this.authenticatedResolvers;\n\n this.authenticatedResolvers = null;\n this.connectPromise = null;\n\n if (! resolvers) {\n return;\n }\n\n error ? resolvers[1](error) : resolvers[0]();\n }\n\n /**\n * Reject every command that has not been answered yet - both the ones still\n * waiting in the send queue and the ones already sent to the server.\n */\n private failPendingCommands(error: Error): void {\n const queued = this.sendQueue;\n this.sendQueue = [];\n\n for (const envelope of queued) {\n this.handleEnvelopeSendError(envelope, error);\n }\n\n this.failAwaitingResponses(error);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const envelope = this.sendQueue[dataIndex];\n setTimeout(() => this.sendEnvelope(envelope), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n\n private isConnectingWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.CONNECTING;\n }\n\n private isOpenWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.OPEN;\n }\n\n private startConnectionMonitor(): void {\n if (!this.options.ping!.enabled) {\n return;\n }\n\n this.lastReceivedMessageAt = Date.now();\n\n this.pingMonitorInterval = setInterval(async () => {\n if (!this.isReady || this.inFlightPingTimeout) {\n return;\n }\n\n if ((Date.now() - this.lastReceivedMessageAt) < this.options.ping!.noActivityTimeoutMs) {\n return;\n }\n\n this.inFlightPingTimeout = setTimeout(() => {\n this.inFlightPingTimeout = undefined;\n this.ws.close(3000); // Service Restart (reconnect)\n }, this.options.ping.pongBackTimeoutMs);\n\n // A rejection here means the connection dropped while the ping was\n // in flight; onClose already handles that, so just stop waiting.\n this.send('Ping', {}).catch(() => undefined).then(() => {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n });\n }, 1000);\n }\n\n private stopConnectionMonitor(): void {\n if (this.inFlightPingTimeout) {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n }\n if (this.pingMonitorInterval) {\n clearInterval(this.pingMonitorInterval);\n this.pingMonitorInterval = undefined;\n }\n }\n}","import {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n queryParams?: Record<string, string>;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\ntype WebApiEventMap = EventsMap & {\n [WebApiChatClientEvent.message]: Envelope;\n [WebApiChatClientEvent.error]: Error;\n [WebApiChatClientEvent.destroy]: boolean;\n};\n\ninterface SendStackItem {\n data: Envelope;\n attempts: number;\n lastTimeoutId: any;\n}\n\nexport class WebApiChatClient extends AbstractChatClient<Pick<WebApiEventMap, keyof WebApiEventMap>> implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: SendStackItem[] = [];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope(commandType, commandData);\n const item: SendStackItem = {data: envelope, attempts: 0, lastTimeoutId: null};\n this.sendStack.push(item);\n this.makeApiCall(item);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests, rejecting their promises so no caller\n // is left awaiting forever\n const pending = this.sendStack;\n this.sendStack = [];\n pending.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.handleEnvelopeSendError(item.data, new Error('Client destroyed'));\n });\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(item: SendStackItem, response: Response): Promise<void> {\n let envelope: Envelope;\n try {\n envelope = await response.json();\n } catch (e) {\n // Non-envelope response (e.g. a proxy error page) - failed attempt\n this.onError(item, `envelope ${item.data.ref} (HTTP ${response.status}, unparsable body)`);\n return;\n }\n\n if (!this.removeFromStack(item)) {\n return; // Destroyed in the meantime - the promise is already rejected\n }\n\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(item: SendStackItem, body: string): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed in the meantime\n }\n\n if (item.attempts >= (this.options.attemptsToSend ?? 10)) {\n this.removeFromStack(item);\n this.handleEnvelopeSendError(item.data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n\n item.lastTimeoutId = setTimeout(\n () => this.makeApiCall(item),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(item: SendStackItem): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed before this (re)try fired\n }\n\n item.attempts++;\n item.lastTimeoutId = null;\n const bodyJson = JSON.stringify(item.data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n headers.Authorization = `Bearer ${this.options.token}`;\n\n const query = new URLSearchParams(this.options.queryParams ?? {}).toString();\n const url = query ? `${this.options.url}?${query}` : this.options.url;\n\n fetch(url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(item, response))\n .catch(() => this.onError(item, bodyJson));\n }\n\n private removeFromStack(item: SendStackItem): boolean {\n const index = this.sendStack.indexOf(item);\n if (index === -1) {\n return false;\n }\n this.sendStack.splice(index, 1);\n return true;\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined,\n additionalHeaders: Record<string, string> = {},\n ): Promise<RestClientResponse<ResponseT>> {\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += '?' + new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...additionalHeaders,\n ...this.getAuthHeaders(),\n };\n\n const result = await fetch(url, {method, body, headers});\n\n return this.convertFetchResponse(result);\n }\n\n protected getAuthHeaders(): any {\n const headers = {} as any;\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n return headers;\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n protected async convertFetchResponse<T>(result: Response): Promise<RestClientResponse<T>> {\n return {\n ok: result.ok,\n status: result.status,\n data: result.headers.get('content-type')?.includes('json') ? await result.json() : await result.text(),\n };\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient, RestClientResponse} from \"./AbstractRestClient\";\r\n\r\nexport interface File {\r\n id: string;\r\n url: string;\r\n name: string;\r\n mime: string;\r\n size: number;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport class FilesClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://files.devana.pl';\r\n\r\n public async uploadFile(file: globalThis.File | Blob): Promise<RestClientResponse<File>> {\r\n const name = encodeURIComponent((file as globalThis.File).name ?? '');\r\n let headers = {\r\n ...this.getAuthHeaders(),\r\n Accept: 'application/json',\r\n 'Content-Disposition': `attachment; filename=\"${name}\"`,\r\n 'Content-Length': file.size\r\n };\r\n\r\n const response = await fetch(this.getUrl('files'), {\r\n method: 'POST',\r\n body: file,\r\n headers\r\n });\r\n\r\n return this.convertFetchResponse<File>(response);\r\n }\r\n\r\n public async getFileMeta(id: string): Promise<RestClientResponse<File>> {\r\n return this.send('GET', 'files/' + id);\r\n }\r\n\r\n public async getFileMetaBulk(ids: string[]): Promise<RestClientResponse<File[]>> {\r\n const searchParams = new URLSearchParams();\r\n ids.forEach(id => searchParams.append('id[]', id));\r\n return this.send('GET', 'files?' + searchParams);\r\n }\r\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","_classCallCheck","_defineProperty","Map","eventName","handler","addHandler","events","onceEvents","_this$events$get","_this$events$get2","index","indexOf","undefined","splice","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","type","data","ref","sentCounter","toString","envelope","_this2","Promise","_len2","_key2","awaitingResponse","has","isError","error","size","pending","from","values","clear","_i","_pending","reject","_slicedToArray","IndexedCollection","items","apply","_toConsumableArray","_createClass","_items","item","id","ids","_i2","_ids","field","valueToFind","_step","limit","Infinity","result","_iterator","_createForOfIteratorHelper","entries","s","n","done","_step$value","err","e","f","copy","IndexedObjectCollection","_this$_items","_len3","_key3","getId","_this$_items2","deleteAll","_step2","_iterator2","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","_superPropGet","emit","setItems","_len5","_key5","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","_this7","_this$_items3","_this8","_len8","_key8","_step3","incomingIds","Set","_iterator3","existing","DeferredTask","promise","resolve","PromiseRegistry","promises","fn","register","_this$promises","t","r","iterator","i","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","toPrimitive","String","Number","_toPrimitive","WindowState","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","internalState","traverseLock","client","ev","handleNewMessage","handleMessagesRedacted","_setTraverseLock","_callee6","lock","_context6","state","LIVE","LATEST","_x2","_resetToLatest2","_callee7","force","_args7","_context7","_fetchNext2","_callee8","_context8","_fetchPrevious2","_callee9","_context9","_jumpTo2","_callee0","_context0","_x3","refTopic","refMessage","_objectSpread","topicRef","_fetchItemsAfter","_callee1","_this$getAt","afterId","_context1","getAt","send","location","after","fetchLimit","Error","message","messages","_fetchItemsAround","_callee10","_context10","around","_x4","_fetchItemsBefore","_callee11","_this$getAt2","beforeId","_context11","before","_fetchLatestItems","_callee12","_context12","_getTopic","_callee13","_context13","rooms","getTopics","_getLatestMessageId","_callee14","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context14","getTopic","lastMessage","_isLatestItemLoaded","_callee15","lastMessageId","_context15","getLatestMessageId","_handleNewMessage","_callee16","originalState","_context16","includes","addItems","emitChangeWithDiff","_x5","_handleMessagesRedacted","_callee17","refTopicIds","_context17","filter","msg","resetToLatest","_x6","_ObservableIndexedObj","TraversableRemoteCollection","current","ongoing","retainRatio","lastFetchCount","oldestId","OLDEST","_resetToLatest","_callee","_args","_context","fetchLatestItems","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","_jumpTo","_callee4","_context4","fetchItemsAround","_x","_refreshFetchedState","_callee5","_t","_context5","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","itemChanged","highWatermark","lowWatermark","Math","floor","slice","RoomMessagesHistory","room","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","peek","topic","historyWindows","_resync","_Array$from","_Array$from$_i","window","setTraverseLock","_handleRoomUpdated","_Array$from2","_Array$from2$_i","historyWindow","deletedTopicIds","_this2$tracker$rooms","_deleteTopicsFromRoom","refHistoryWindow","_updateMessageReference","history","mode","MessagesManager","handleSession","handleRoomJoin","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","_resolveLastMessage2","_result$data","getRoomHistory","roomHistory","getMessagesWindow","createHistoryForNewRoom","stateRoomIds","resync","FollowedTopicsManager","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","_cacheForSpace","spaceId","roomIds","spaceRegistryKey","spaces","findBy","some","followedTopics","staleRooms","followedTopicsPromises","notExist","registerByFunction","reconcileRoomsFollowedTopics","_getForRoom","applyRoomFollowedTopics","invalidateUnreadSummaries","_ackRoom","collection","followedTopic","getForRoom","isUnread","_summarize","cacheKey","targetTopicId","mentionCount","unreadTopicCount","_topic$mentionCount","summariesCache","cacheForSpace","_this$followedTopics$","topicIds","_step4","_iterator4","add","forgetAll","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","setFollowedTopicsArray","_this$followedTopics$3","clearRoomFollowedTopicsStructures","_handleNewTopic","_this$followedTopics$4","_step5","_iterator5","startsWith","_step6","_iterator6","roomIdsSet","_step7","_iterator7","parts","split","_updateLocallyFollowedTopicOnNewMessage","roomFollowedTopics","me","update","_member$spaceMember$r","_member$spaceMember","_member$roles","member","roleIds","mentionHandlers","mentionExists","getMe","author","user","missed","lastAckMessageId","spaceMember","roles","content","_this$followedTopics$5","reconcile","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_roomToTopics$roomId","invalidateUnreadSummariesForRooms","_followedTopic$locati2","_roomToTopics$_follow2","_this7$followedTopics","forget","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","_getMe","userId","list","getMembers","find","_member$user$id","_member$user","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","_this3$topics$get2","_this$topics$get","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get2","_this$followedTopics","_deleteByTopicIds","deleteRoom","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","newMember","deleteRoomsBySpaceId","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get3","addJoinedRooms","_this$topics$get4","newRoom","_this$list2","_rooms","recipients","customColor","customNick","extras","_this$members$get","_member$user$id2","_member$user2","removedRoomIds","_this$list3","newRooms","_room$recipients","_room$defaultTopic2","newTopic","messageCount","max","_resolveLastMessage","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","_getRooms","roomsPromises","role","_this$rooms$get","summary","roomIdToSpaceId","name","description","_handleRoomDeleted","_this$rooms$get2","space","spaceChanged","systemRoom","defaultRooms","_this$rooms$get$items","_this$rooms$get3","_this$roomIdToSpaceId","addJoinedSpaces","_this$roles","_this$rooms$get4","summaries","_handleRoomSummaryUpdated","summariesPromise","oldSummary","newSummary","_this$roles$get","oldRole","newRole","rolesToUpdate","priority","allRoles","updatedRole","increased","decreased","changedRoles","reorderRolesOnPriorityUpdate","stateSpaceIds","removedSpaceIds","_this$roles$get2","Layer","PermissionDefinition","Permissions","permissionName","layer","getByName","maxLayer","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageRoles","CreateTopics","ManageTopic","Topic","ManageMemberProfiles","ManageMemberRoles","CreateMessages","ManagePermissions","CreateRooms","ManageRoom","CreateEmoticons","ManageEmoticons","ManageBans","Kick","ChangeOwnNick","ChangeOwnColor","RedactMessages","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","_calculatePermissions","_location$spaceId","_spaceMember$roles","_roomMember$roles","_yield$this$tracker$s","_yield$this$tracker$r","_yield$this$fetchMemb","_yield$this$fetchMemb2","userRoles","filterLocation","_filterLocation","_t6","_t7","_t8","_t9","_t0","fetchMembersOrFail","getOverwrites","collectRoleOverwrites","all","resolveOverwritesHierarchy","_this$overwritesPromi","deleteOverwritesByIdPrefix","_this$overwritesPromi2","_this$overwritesPromi3","_this$overwritesPromi4","_this$tracker$me","_this$tracker$me2","prefix","_collectRoleOverwrites","roleOverwrites","resolveOverwritesFromRolesByOrder","_x7","_x8","_resolveOverwritesFromRolesByOrder","allows","denies","sortedOverwrites","permissionsLength","getRoles","sort","b","reduce","previousValue","currentValue","_currentValue$overwri","_currentValue$overwri2","_currentValue$overwri3","_currentValue$overwri4","allow","deny","overwriteEvent","_overwrites$deny$toSt","_overwrites$deny","_overwrites$allow$toS","_overwrites$allow","revDecDenies","reverse","revDecAllows","_revDecDenies$i","_revDecAllows$i","parseInt","_x9","_x0","permissionOverwritesValues","getRootAccessValue","getNames","_fetchMembersOrFail","results","spaceFail","roomFail","_x1","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","_event$location$space","_this$list$get","emoticons","_ev$emoticon$spaceId","emoticon","_ev$spaceId","emoticonId","UsersManager","handleUsers","handleMembers","users","_getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","_this$relationships","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","_options$ping","_options$ping2","_options$ping2$enable","_options$ping3","_options$ping3$noActi","_options$ping4","_options$ping4$pongBa","stateTracking","ping","enabled","noActivityTimeoutMs","pongBackTimeoutMs","_connect","_this$connectPromise2","_this$options$queryPa","_this$options$connect","_this$connectPromise","params","isOpenWsState","isConnectingWsState","connectPromise","authenticatedResolvers","URLSearchParams","queryParams","token","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","_this$ws","failPendingCommands","close","_send","commandType","commandData","createEnvelope","createPromiseFromCommandEnvelope","sendQueue","sendEnvelope","_this$ws$readyState","_this$ws2","isReady","JSON","stringify","handleEnvelopeSendError","readyState","lastReceivedMessageAt","Date","now","parse","handleIncomingEnvelope","Event","isAuthenticated","startConnectionMonitor","settleConnect","connect","sendFromQueue","stopConnectionMonitor","clearTimeout","reconnect","code","disconnect","resolvers","queued","failAwaitingResponses","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","pingMonitorInterval","setInterval","inFlightPingTimeout","clearInterval","WebApiChatClientEvent","WebApiChatClient","attempts","lastTimeoutId","sendStack","makeApiCall","destroy","_onMessage","response","json","onError","status","removeFromStack","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","query","fetch","method","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","AbstractRestClient","uri","additionalHeaders","getUrl","getAuthHeaders","convertFetchResponse","_this$options$url","removeEndingSlash","defaultUrl","removeStartingSlash","_convertFetchResponse","_result$headers$get","text","replace","FilesClient","_AbstractRestClient","_uploadFile","file","_name","encodeURIComponent","_getFileMeta","_getFileMetaBulk","searchParams","append"],"ignoreList":[],"sourceRoot":""}
1
+ {"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://PservClient/webpack/universalModuleDefinition","webpack://PservClient/webpack/bootstrap","webpack://PservClient/webpack/runtime/define property getters","webpack://PservClient/webpack/runtime/hasOwnProperty shorthand","webpack://PservClient/webpack/runtime/make namespace object","webpack://PservClient/./src/EventTarget.ts","webpack://PservClient/./src/AbstractChatClient.ts","webpack://PservClient/./src/IndexedObjectCollection.ts","webpack://PservClient/./src/state-tracker/AsyncUtils.ts","webpack://PservClient/./src/state-tracker/TopicHistoryWindow.ts","webpack://PservClient/./src/state-tracker/RoomMessagesHistory.ts","webpack://PservClient/./src/state-tracker/MessagesManager.ts","webpack://PservClient/./src/state-tracker/FollowedTopicsManager.ts","webpack://PservClient/./src/state-tracker/RoomsManager.ts","webpack://PservClient/./src/state-tracker/functions.ts","webpack://PservClient/./src/state-tracker/SpacesManager.ts","webpack://PservClient/./src/Permissions.ts","webpack://PservClient/./src/state-tracker/PermissionsManager.ts","webpack://PservClient/./src/state-tracker/EmoticonsManager.ts","webpack://PservClient/./src/state-tracker/UsersManager.ts","webpack://PservClient/./src/state-tracker/RelationshipsManager.ts","webpack://PservClient/./src/state-tracker/ChatStateTracker.ts","webpack://PservClient/./src/WebSocketChatClient.ts","webpack://PservClient/./src/WebApiChatClient.ts","webpack://PservClient/./src/AbstractRestClient.ts","webpack://PservClient/./src/FilesClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PservClient\"] = factory();\n\telse\n\t\troot[\"PservClient\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap = Map<string, EventHandler<any>[]>;\ntype EventMapLike = Record<string, any>;\ntype KnownEventNames<EventT> = EventT extends EventMapLike ? keyof EventT & string : string;\ntype EventPayload<EventT, EventName extends string = never> = EventT extends EventMapLike\n ? [EventName] extends [never]\n ? EventT[keyof EventT]\n : EventName extends keyof EventT\n ? EventT[EventName]\n : EventT[keyof EventT]\n : EventT;\n\nexport type ChangeEventMap<Payload = void> = { change: Payload };\n\nexport interface ObservableInterface<EventT = any> {\n on<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n on(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n once<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n once(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n off<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n off(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n}\n\nexport class EventTarget<EventMapT extends Record<string, any> = Record<string, any>> implements ObservableInterface<EventMapT> {\n protected events: HandlersMap = new Map<string, EventHandler<any>[]>();\n protected onceEvents: HandlersMap = new Map<string, EventHandler<any>[]>();\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public on(eventName: string, handler: EventHandler<unknown>): this;\n public on(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public once(eventName: string, handler: EventHandler<unknown>): this;\n public once(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public off(eventName: string, handler: EventHandler<unknown>): this;\n public off(eventName: string, handler: EventHandler<any>): this {\n const index = this.events.get(eventName)?.indexOf(handler);\n if (index === undefined || index < 0) {\n return this;\n }\n this.events.get(eventName)?.splice(index, 1);\n return this;\n }\n\n public emit<K extends keyof EventMapT & string>(eventName: K, event: EventMapT[K]): this;\n public emit(eventName: string, event?: unknown): this;\n public emit(eventName: string, event?: any): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap, eventName: string, handler: EventHandler<any>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap, eventName: string, event: unknown): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdated,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetPermissionOverwrites,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetPermissionOverwrites,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage,\n Envelope,\n PermissionOverwrites,\n PermissionOverwritesUpdated,\n RoomMemberUpdated,\n UpdateRole,\n RoleUpdated,\n Ack,\n UserUpdated,\n UpdateRoom,\n RoomUpdated,\n UpdateSpace,\n SpaceUpdated,\n PermissionOverwriteTargets,\n GetPermissionOverwriteTargets,\n Owners,\n Ok,\n GetOwners,\n CreateOwner,\n RoleDeleted,\n FollowedTopicUpdated,\n TopicFollowed,\n FollowedTopics,\n FollowTopic,\n UpdateFollowedTopic,\n GetFollowedTopics,\n Messages,\n GetMessages,\n Topics,\n GetTopics,\n TopicUpdated,\n UpdateTopic,\n GetDiscoverableSpaces,\n DiscoverableSpaces,\n CreateEmoticon,\n DeleteEmoticon,\n GetEmoticons,\n Emoticons,\n EmoticonDeleted,\n NewEmoticon,\n Bans,\n GetBans,\n Ban,\n Unban,\n Kick,\n ClientData,\n GetClientData,\n SetClientData,\n GetRoomSummary,\n GetSpaceSummary,\n RoomSummaryEvent,\n SpaceSummaryEvent,\n UpdateSpaceMember,\n Relationships,\n RelationshipDeleted,\n NewRelationship,\n DeleteRelationship,\n CreateRelationship,\n RoomSummaryUpdated,\n Pong,\n Ping,\n RedactMessages,\n MessagesRedacted,\n ReportAbuse,\n UpdateRoomMember,\n GetRelationships,\n GetUserInfo,\n UserInfo,\n SetSessionData,\n SessionData,\n GetSessionData,\n UnfollowTopic,\n TopicUnfollowed,\n} from \"./types/src\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\ntype ExtraEventMap = Record<string, any>;\n\ntype CommandDefinition<RequestT, ResponseT> = {\n request: RequestT;\n response: ResponseT;\n};\n\nexport abstract class AbstractChatClient<AdditionalEvents extends ExtraEventMap = {}> extends EventTarget<EventsMap & AdditionalEvents> {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandRequest<CommandType>): Promise<CommandResult<CommandResponse<CommandType>>>;\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandRequest<CommandT>>):\n Promise<CommandResult<CommandResponse<CommandT>>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[1](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: ErrorType};\nexport type CommandRequest<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['request'];\nexport type CommandResponse<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['response'];\n\n /**\n * Map of incoming events.\n */\n export type EventsMap = {\n // General Events\n Bye: Bye,\n Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n PermissionOverwrites: PermissionOverwrites,\n PermissionOverwritesUpdated: PermissionOverwritesUpdated,\n PermissionOverwriteTargets: PermissionOverwriteTargets,\n Owners: Owners,\n NewEmoticon: NewEmoticon,\n EmoticonDeleted: EmoticonDeleted,\n Emoticons: Emoticons,\n Bans: Bans,\n ClientData: ClientData,\n SessionData: SessionData,\n NewRelationship: NewRelationship,\n RelationshipDeleted: RelationshipDeleted,\n Relationships: Relationships,\n Pong: Pong,\n UserInfo: UserInfo,\n // Space events\n DiscoverableSpaces: DiscoverableSpaces,\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdated: SpaceMemberUpdated,\n SpaceUpdated: SpaceUpdated,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoleDeleted,\n RoleUpdated: RoleUpdated,\n SpaceSummaryEvent: SpaceSummaryEvent,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMemberUpdated: RoomMemberUpdated,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n RoomUpdated: RoomUpdated,\n RoomSummaryEvent: RoomSummaryEvent,\n RoomSummaryUpdated: RoomSummaryUpdated,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n UserUpdated: UserUpdated,\n TopicFollowed: TopicFollowed,\n TopicUnfollowed: TopicUnfollowed,\n FollowedTopics: FollowedTopics,\n FollowedTopicUpdated: FollowedTopicUpdated,\n Messages: Messages,\n Topics: Topics,\n TopicUpdated: TopicUpdated,\n MessagesRedacted: MessagesRedacted,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: CommandDefinition<GetSession, EventsMap['Session']>,\n SetPermissionOverwrites: CommandDefinition<SetPermissionOverwrites, EventsMap['PermissionOverwritesUpdated']>,\n GetPermissionOverwrites: CommandDefinition<GetPermissionOverwrites, EventsMap['PermissionOverwrites']>,\n GetComputedPermissions: CommandDefinition<GetComputedPermissions, EventsMap['Permissions']>,\n GetPermissionOverwriteTargets: CommandDefinition<GetPermissionOverwriteTargets, EventsMap['PermissionOverwriteTargets']>,\n GetOwners: CommandDefinition<GetOwners, EventsMap['Owners']>,\n CreateOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n DeleteOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n CreateEmoticon: CommandDefinition<CreateEmoticon, EventsMap['NewEmoticon']>,\n DeleteEmoticon: CommandDefinition<DeleteEmoticon, EventsMap['EmoticonDeleted']>,\n GetEmoticons: CommandDefinition<GetEmoticons, EventsMap['Emoticons']>,\n GetBans: CommandDefinition<GetBans, EventsMap['Bans']>,\n Ban: CommandDefinition<Ban, EventsMap['Ok']>,\n Unban: CommandDefinition<Unban, EventsMap['Ok']>,\n Kick: CommandDefinition<Kick, EventsMap['Ok']>,\n GetClientData: CommandDefinition<GetClientData, EventsMap['ClientData']>,\n SetClientData: CommandDefinition<SetClientData, EventsMap['Ok']>,\n DeleteRelationship: CommandDefinition<DeleteRelationship, EventsMap['RelationshipDeleted']>,\n CreateRelationship: CommandDefinition<CreateRelationship, EventsMap['NewRelationship']>,\n GetRelationships: CommandDefinition<GetRelationships, EventsMap['Relationships']>,\n Ping: CommandDefinition<Ping, EventsMap['Pong']>,\n ReportAbuse: CommandDefinition<ReportAbuse, EventsMap['Ok']>,\n GetUserInfo: CommandDefinition<GetUserInfo, EventsMap['UserInfo']>,\n GetSessionData: CommandDefinition<GetSessionData, EventsMap['SessionData']>,\n SetSessionData: CommandDefinition<SetSessionData, EventsMap['Ok']>,\n // Space commands\n GetDiscoverableSpaces: CommandDefinition<GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']>,\n JoinSpace: CommandDefinition<JoinSpace, EventsMap['SpaceJoined']>,\n LeaveSpace: CommandDefinition<LeaveSpace, EventsMap['SpaceLeft']>,\n CreateSpace: CommandDefinition<CreateSpace, EventsMap['SpaceJoined']>,\n UpdateSpace: CommandDefinition<UpdateSpace, EventsMap['SpaceUpdated']>,\n DeleteSpace: CommandDefinition<DeleteSpace, EventsMap['SpaceDeleted']>,\n GetSpaceMembers: CommandDefinition<GetSpaceMembers, EventsMap['SpaceMembers']>,\n GetSpaceRooms: CommandDefinition<GetSpaceRooms, EventsMap['SpaceRooms']>,\n CreateRole: CommandDefinition<CreateRole, EventsMap['NewRole']>,\n DeleteRole: CommandDefinition<DeleteRole, EventsMap['RoleDeleted']>,\n UpdateRole: CommandDefinition<UpdateRole, EventsMap['RoleUpdated']>,\n AssignRole: CommandDefinition<AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n DeassignRole: CommandDefinition<DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n GetSpaceSummary: CommandDefinition<GetSpaceSummary, EventsMap['SpaceSummaryEvent']>,\n UpdateSpaceMember: CommandDefinition<UpdateSpaceMember, EventsMap['SpaceMemberUpdated']>,\n // Room commands\n JoinRoom: CommandDefinition<JoinRoom, EventsMap['RoomJoined']>,\n LeaveRoom: CommandDefinition<LeaveRoom, EventsMap['RoomLeft']>,\n CreateRoom: CommandDefinition<CreateRoom, EventsMap['RoomJoined']>,\n DeleteRoom: CommandDefinition<DeleteRoom, EventsMap['RoomDeleted']>,\n UpdateRoom: CommandDefinition<UpdateRoom, EventsMap['RoomUpdated']>,\n GetRoomMembers: CommandDefinition<GetRoomMembers, EventsMap['RoomMembers']>,\n GetRoomSummary: CommandDefinition<GetRoomSummary, EventsMap['RoomSummaryEvent']>,\n UpdateRoomMember: CommandDefinition<UpdateRoomMember, EventsMap['RoomMemberUpdated']>,\n // Topic commands\n CreateTopic: CommandDefinition<CreateTopic, EventsMap['NewTopic']>,\n DeleteTopic: CommandDefinition<DeleteTopic, EventsMap['TopicDeleted']>,\n CreateMessage: CommandDefinition<CreateMessage, EventsMap['NewMessage']>,\n Ack: CommandDefinition<Ack, EventsMap['FollowedTopicUpdated'] | EventsMap['Ok']>,\n FollowTopic: CommandDefinition<FollowTopic, EventsMap['TopicFollowed']>,\n UnfollowTopic: CommandDefinition<UnfollowTopic, EventsMap['TopicUnfollowed']>,\n UpdateFollowedTopic: CommandDefinition<UpdateFollowedTopic, EventsMap['FollowedTopicUpdated']>,\n GetFollowedTopics: CommandDefinition<GetFollowedTopics, EventsMap['FollowedTopics']>,\n GetMessages: CommandDefinition<GetMessages, EventsMap['Messages']>,\n GetTopics: CommandDefinition<GetTopics, EventsMap['Topics']>,\n UpdateTopic: CommandDefinition<UpdateTopic, EventsMap['TopicUpdated']>,\n RedactMessages: CommandDefinition<RedactMessages, EventsMap['MessagesRedacted']>,\n }\n","import {EventHandler, EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | undefined {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = Infinity): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n for (const [key, value] of this.items.entries()) {\n if (result.length >= limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set([key, value]);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedCollection<KeyT, ValueT> {\n const copy = new IndexedCollection<KeyT, ValueT>();\n copy._items = this._items;\n return copy;\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | undefined {\n return this._items.get(id);\n }\n\n public getAt(index: number): T | undefined {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedObjectCollection<T> {\n const copy = new IndexedObjectCollection<T>(this.id);\n copy._items = this._items;\n return copy;\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\nexport type CollectionEventMap<IdType = string> = {\n change: { setItems?: IdType[]; deletedItems?: IdType[] };\n};\n\nexport class ObservableIndexedCollection<\n KeyT,\n ValueT,\n EventMapT extends CollectionEventMap<KeyT> = CollectionEventMap<KeyT>\n> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface<EventMapT> {\n\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n super();\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => item[0]) });\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = Array.from(this._items.keys());\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: Array.from(ids) });\n }\n }\n\n public createMirror(): ObservableIndexedCollection<KeyT, ValueT, EventMapT> {\n const copy = new ObservableIndexedCollection<KeyT, ValueT, EventMapT>();\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends IndexedObjectCollection<ItemT> implements ObservableInterface<EventMapT> {\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(\n id: keyof ItemT | ((item: ItemT) => string),\n items: ItemT[] = [],\n ) {\n super(id);\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: ItemT[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => this.getId(item)) });\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this.items.map(item => this.getId(item));\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public createMirror(): ObservableIndexedObjectCollection<ItemT, EventMapT> {\n const copy = new ObservableIndexedObjectCollection<ItemT, EventMapT>(this.id);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}","import {IndexedCollection} from \"../IndexedObjectCollection\";\n\nexport class DeferredTask {\n public readonly promise: Promise<void>;\n public resolve: () => void;\n\n public constructor() {\n this.promise = new Promise<void>((resolve) => this.resolve = resolve);\n }\n}\n\nexport class PromiseRegistry {\n private promises = new IndexedCollection<string, Promise<any>>();\n\n public register<T = any>(promise: Promise<T>, key: string): void {\n this.promises.set([key, promise]);\n }\n\n public registerByFunction(fn: () => Promise<any>, key: string): void {\n this.register(fn(), key);\n }\n\n public get<T = any>(key: string): Promise<T> | undefined {\n return this.promises.get(key);\n }\n\n public has(key: string): boolean {\n return this.promises.has(key);\n }\n\n public notExist(key: string): boolean {\n return ! this.has(key);\n }\n\n public forget(...keys: string[]): void {\n this.promises.delete(...keys);\n }\n\n public forgetAll(): void {\n this.promises.deleteAll();\n }\n}","import {Message, MessagesRedacted, NewMessage, Topic} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {CollectionEventMap, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\n\nexport enum WindowState {\n /**\n * The latest messages (those received live) are available in the history window, history has not been fetched.\n */\n LIVE,\n\n /**\n * The latest messages has been fetched and are available in the history window.\n */\n LATEST,\n\n /**\n * The historical messages have been fetched and are available in the history window.\n * Latest messages are not available and will not be available.\n */\n PAST,\n\n /**\n * The oldest messages have been fetched and are available in the history window.\n * Next attempts to fetch previous messages will result with no-op.\n */\n OLDEST,\n}\n\nexport abstract class TraversableRemoteCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends ObservableIndexedObjectCollection<ItemT, EventMapT> {\n /**\n * Current mode od collection window. To change mode, call one of available fetch methods.\n */\n public get state(): WindowState {\n return this.internalState.current;\n }\n\n protected internalState: {\n current: WindowState,\n ongoing?: WindowState,\n limit: number | null, // Acts as High Watermark\n retainRatio: number, // Percentage of limit to keep when trimming\n fetchLimit: number,\n lastFetchCount: number,\n oldestId: string | null,\n } = {\n current: WindowState.LIVE,\n ongoing: undefined,\n limit: 1000,\n retainRatio: 1,\n fetchLimit: 50,\n lastFetchCount: 0,\n oldestId: null,\n };\n\n /**\n * Number of items to fetch per request.\n */\n public get fetchLimit(): number {\n return this.internalState.fetchLimit;\n }\n\n /**\n * Sets number of items to fetch per request.\n */\n public set fetchLimit(value: number) {\n this.internalState.fetchLimit = value;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public get limit(): number | null {\n return this.internalState.limit;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public set limit(value: number | null) {\n this.internalState.limit = value;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public get retainRatio(): number {\n return this.internalState.retainRatio;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public set retainRatio(value: number) {\n this.internalState.retainRatio = value;\n }\n\n public get hasLatest(): boolean {\n return [WindowState.LATEST, WindowState.LIVE].includes(this.state);\n }\n\n public get hasOldest(): boolean {\n return this.state === WindowState.OLDEST\n || this.state === WindowState.LATEST && this.length < this.fetchLimit\n || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);\n }\n\n public abstract createMirror(): TraversableRemoteCollection<ItemT, EventMapT>;\n\n public async resetToLatest(): Promise<void> {\n if (this.internalState.ongoing || this.internalState.current === WindowState.LATEST) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.LATEST;\n\n try {\n result = await this.fetchLatestItems();\n this.internalState.lastFetchCount = result.length;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n this.internalState.current = WindowState.LATEST;\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.ongoing || this.hasOldest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsBefore();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n return this.resetToLatest();\n }\n\n if (! result.length) {\n const firstItem = this.getAt(0);\n this.internalState.oldestId = firstItem ? this.getId(firstItem) : null;\n\n await this.refreshFetchedState();\n\n // LATEST state has priority over OLDEST\n if (this.internalState.current === WindowState.PAST) {\n this.internalState.current = WindowState.OLDEST;\n }\n\n this.emitChangeWithDiff(false, originalState);\n return;\n }\n\n this.addItems(result, 'head');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.ongoing || this.hasLatest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAfter();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n await this.resetToLatest();\n return;\n }\n\n if (result.length) {\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n return;\n }\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.ongoing || (this.state !== WindowState.LIVE && this._items.has(id))) {\n return;\n }\n\n let result: ItemT[] | null;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAround(id);\n this.internalState.lastFetchCount = result ? result.length : 0;\n\n if (result) {\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n }\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this.emitChangeWithDiff(!!result, originalState);\n }\n\n protected abstract fetchLatestItems(): Promise<ItemT[]>;\n\n protected abstract fetchItemsBefore(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAfter(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAround(id: string): Promise<ItemT[] | null>;\n\n protected abstract isLatestItemLoaded(): Promise<boolean>;\n\n protected async refreshFetchedState(): Promise<void> {\n this.internalState.current = (await this.isLatestItemLoaded()) ? WindowState.LATEST : WindowState.PAST;\n }\n\n protected addItems(newItems: ItemT[], to: 'head' | 'tail'): void {\n let result;\n\n if (to === 'head') {\n result = this.trimItemsArrayToLimit([...newItems, ...this.items], 'tail');\n }\n\n if (to === 'tail') {\n result = this.trimItemsArrayToLimit([...this.items, ...newItems], 'head');\n }\n\n // Directly calls to prevent event emit.\n this._items.deleteAll();\n this._items.set(...(result.map(item => [this.getId(item), item] as [string, ItemT])));\n }\n\n protected emitChangeWithDiff(itemChanged: boolean, originalState: WindowState): void {\n if (itemChanged || originalState !== this.state) {\n this.eventTarget.emit('change', { setItems: Array.from(this._items.items.keys()) })\n }\n }\n\n /**\n * Return array with messages trimmed using High/Low Watermark strategy.\n */\n private trimItemsArrayToLimit(items: ItemT[], from: 'head' | 'tail'): ItemT[] {\n const highWatermark = this.limit;\n\n if (highWatermark === null || items.length <= highWatermark) {\n return items;\n }\n\n const lowWatermark = Math.floor(highWatermark * this.internalState.retainRatio);\n\n if (from === 'head') {\n return items.slice(-lowWatermark);\n }\n\n if (from === 'tail') {\n return items.slice(0, lowWatermark);\n }\n\n return items;\n }\n}\n\nexport type TopicHistoryWindowEventMap = CollectionEventMap & {\n reftopicsdeleted: string[];\n};\n\nexport class TopicHistoryWindow extends TraversableRemoteCollection<\n Message,\n TopicHistoryWindowEventMap\n> {\n /**\n * Reexported available window modes enum.\n */\n public readonly WindowState: typeof WindowState = WindowState;\n\n declare protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {\n traverseLock: boolean,\n };\n\n public constructor(\n private roomId: string,\n private topicId: string,\n private tracker: ChatStateTracker,\n bindEvents: boolean = true,\n ) {\n super('id');\n\n this.internalState.traverseLock = false;\n\n if (bindEvents) {\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n }\n }\n\n public createMirror(): TopicHistoryWindow {\n const copy = new TopicHistoryWindow(this.roomId, this.topicId, this.tracker, false);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n copy.internalState = this.internalState;\n return copy;\n }\n\n public get isTraverseLocked(): boolean {\n return this.internalState.traverseLock;\n }\n\n public async setTraverseLock(lock: boolean): Promise<void> {\n this.internalState.traverseLock = lock;\n\n if (lock && (this.state !== WindowState.LIVE && this.state !== WindowState.LATEST)) {\n await super.resetToLatest();\n }\n }\n\n public async resetToLatest(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.resetToLatest();\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchNext();\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchPrevious();\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.jumpTo(id);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public _updateMessageReference(refTopic: Topic): void {\n const refMessage = this.get(refTopic.refMessage.id);\n\n if (refMessage) {\n // Update referenced topic ID in message\n this.set({...refMessage, topicRef: refTopic.id});\n }\n }\n\n protected async fetchItemsAfter(): Promise<Message[] | null> {\n const afterId = this.getAt(this.length - 1)?.id;\n\n if (! afterId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n after: afterId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsAround(id: string): Promise<Message[] | null> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n around: id,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsBefore(): Promise<Message[] | null> {\n const beforeId = this.getAt(0)?.id;\n\n if (! beforeId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n before: beforeId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchLatestItems(): Promise<Message[]> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n private async getTopic(): Promise<Topic | undefined> {\n return (await this.tracker.rooms.getTopics(this.roomId, [this.topicId])).get(this.topicId);\n }\n\n private async getLatestMessageId(): Promise<string | undefined> {\n return (await this.getTopic())?.lastMessage?.id;\n }\n\n protected async isLatestItemLoaded(): Promise<boolean> {\n const lastMessageId = await this.getLatestMessageId();\n return lastMessageId ? this.has(lastMessageId) : true;\n }\n\n private async handleNewMessage(ev: NewMessage): Promise<void> {\n if (\n [WindowState.LATEST, WindowState.LIVE].includes(this.state)\n && ev.message.location.roomId === this.roomId\n && ev.message.location.topicId === this.topicId\n ) {\n const originalState = this.state;\n this.addItems([ev.message], 'tail');\n this.emitChangeWithDiff(true, originalState);\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n if (ev.location.topicId !== this.topicId || ev.location.roomId !== this.roomId) {\n return;\n }\n\n const refTopicIds = this.items\n .filter(msg => msg.topicRef && ev.ids.includes(msg.id))\n .map(msg => msg.topicRef as string);\n\n this.delete(...ev.ids);\n\n if (this.length === 0) {\n await this.resetToLatest();\n }\n\n if (refTopicIds.length > 0) {\n this.eventTarget.emit('reftopicsdeleted', refTopicIds);\n }\n }\n}\n","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {NewTopic, Room, RoomUpdated, Topic, TopicDeleted} from \"../types/src\";\nimport {IndexedCollection,} from \"../IndexedObjectCollection\";\nimport {TopicHistoryWindow} from \"./TopicHistoryWindow\";\n\nexport class RoomMessagesHistory {\n private historyWindows = new IndexedCollection<string, TopicHistoryWindow>();\n private traverseLock: boolean = false;\n\n public constructor(\n private room: Room,\n private tracker: ChatStateTracker,\n ) {\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n\n this.updateTraverseLock(this.room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n }\n\n /**\n * Returns a history window object for the given topic ID, allowing you to view message history.\n * @param topicId\n * @param peek If true, do not create a cache for this topic and do not allow it to collect new messages.\n */\n public async getMessagesWindow(topicId: string, peek: boolean = false): Promise<TopicHistoryWindow | undefined> {\n if (!this.historyWindows.has(topicId) && !peek) {\n const topic = (await this.tracker.rooms.getTopics(this.room.id, [topicId])).get(topicId);\n\n if (topic) {\n this.createHistoryWindowForTopic(topic);\n }\n }\n\n return this.historyWindows.get(topicId);\n }\n\n private async handleRoomUpdated(ev: RoomUpdated): Promise<void> {\n if (this.room.id === ev.room.id) {\n this.room = ev.room;\n\n this.updateTraverseLock(ev.room);\n\n if (ev.room.defaultTopic) {\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n await window.setTraverseLock(this.traverseLock);\n }\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n if (this.room.id === ev.roomId) {\n this.createHistoryWindowForTopic(ev.topic);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n if (this.room.id === ev.location.roomId) {\n this.historyWindows.delete(ev.location.topicId);\n }\n }\n\n private createHistoryWindowForTopic(topic: Topic): void {\n if (this.historyWindows.has(topic.id)) {\n return;\n }\n\n const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);\n\n void historyWindow.setTraverseLock(this.traverseLock);\n\n this.historyWindows.set([topic.id, historyWindow]);\n\n // Current behavior of deletion a message with referenced topic is to delete the whole side topic\n // So we need to listen for topic deletions here\n historyWindow.on('reftopicsdeleted', (deletedTopicIds: string[]) => {\n for (const topicId of deletedTopicIds) {\n this.historyWindows.delete(topicId);\n }\n this.tracker.rooms._deleteTopicsFromRoom(this.room.id, ...deletedTopicIds);\n });\n\n // If new topic refers to some message from this room, update other structures\n if (topic.refMessage) {\n const refHistoryWindow = this.historyWindows.get(topic.refMessage.location.topicId);\n refHistoryWindow?._updateMessageReference(topic);\n }\n }\n\n private updateTraverseLock(room: Room): void {\n this.traverseLock = room.history.mode === 'Ephemeral';\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n RoomDeleted,\n RoomLeft,\n RoomJoined,\n Session,\n Room,\n Message, ChatLocation,\n} from \"../types/src\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {DeferredTask} from \"./AsyncUtils\";\nimport {RoomMessagesHistory} from \"./RoomMessagesHistory\";\n\nexport class MessagesManager {\n private readonly roomHistories = new IndexedCollection<string, RoomMessagesHistory>();\n private readonly deferredSession = new DeferredTask();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n }\n\n /**\n * Get history manager for given room ID.\n */\n public async getRoomHistory(roomId: string): Promise<RoomMessagesHistory | undefined> {\n await this.deferredSession.promise;\n return this.roomHistories.get(roomId);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public async _resolveLastMessage(location: ChatLocation): Promise<Message|null> {\n // Try to get last message from history window (if cached)\n let message: Message = await this.getRoomHistory(location.roomId)\n .then(roomHistory => roomHistory?.getMessagesWindow(location.topicId, true))\n .then(\n historyWindow =>\n historyWindow?.hasLatest && historyWindow.getAt(historyWindow.length - 1)\n );\n\n if (!message) {\n const result = await this.tracker.client.send('GetMessages', {\n location,\n limit: 1,\n });\n message = result.data?.messages[0];\n }\n\n return message || null;\n }\n\n private createHistoryForNewRoom(room: Room): void {\n this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.createHistoryForNewRoom(ev.room);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleSession(ev: Session): void {\n this.roomHistories.deleteAll();\n ev.state.rooms.forEach(room => this.createHistoryForNewRoom(room));\n this.deferredSession.resolve();\n }\n}","import {EventTarget} from \"../EventTarget\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n ChatLocation,\n FollowedTopic,\n FollowedTopicUpdated,\n NewMessage, NewTopic,\n RoomDeleted,\n RoomJoined, RoomLeft,\n Session, TopicDeleted,\n TopicFollowed, TopicUnfollowed\n} from \"../types/src\";\n\ninterface EventMap {\n change: {};\n}\n\nexport interface UnreadSummary {\n mentionCount: number;\n unreadTopicCount: number;\n unreadRoomCount: number;\n isUnread: boolean;\n}\n\nexport class FollowedTopicsManager extends EventTarget<EventMap> {\n private readonly followedTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<FollowedTopic>>();\n private readonly followedTopicsPromises = new PromiseRegistry();\n private readonly deferredSession = new DeferredTask();\n private readonly summariesCache = new Map<string, UnreadSummary>();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('FollowedTopicUpdated', ev => this.handleFollowedTopicUpdated(ev));\n this.tracker.client.on('TopicFollowed', ev => this.handleTopicFollowed(ev));\n this.tracker.client.on('TopicUnfollowed', ev => this.handleTopicUnfollowed(ev));\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n /**\n * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.\n * Then you can get them using getRoomFollowedTopics().\n * @see getForRoom\n */\n public async cacheForSpace(spaceId: string | null): Promise<void> {\n if (spaceId && ! (await this.tracker.spaces.get()).has(spaceId)) {\n throw new Error(`You are not in space ${spaceId}`);\n }\n\n const rooms = await this.tracker.rooms.get();\n const roomIds = spaceId\n ? rooms.findBy('spaceId', spaceId).items.map(r => r.id)\n : rooms.items.filter(r => !r.spaceId).map(r => r.id);\n\n if (!roomIds.length) {\n return;\n }\n\n const isAlreadyCached = roomIds.every(roomId => this.followedTopics.has(roomId));\n if (isAlreadyCached) {\n return;\n }\n\n const spaceRegistryKey = `space_fetch_${spaceId || 'spaceless'}`;\n\n if (this.followedTopicsPromises.notExist(spaceRegistryKey)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {spaceId}});\n if (result.error) throw result.error;\n\n this.setFollowedTopicsArray(roomIds, result.data.followedTopics);\n }, spaceRegistryKey);\n }\n\n await this.followedTopicsPromises.get(spaceRegistryKey);\n }\n\n /**\n * Get followed topics for the given room.\n * @return Undefined if you are not in the room, collection otherwise.\n */\n public async getForRoom(roomId: string): Promise<ObservableIndexedObjectCollection<FollowedTopic> | undefined> {\n if (! (await this.tracker.rooms.get()).has(roomId)) {\n return undefined;\n }\n\n if (! this.followedTopics.has(roomId)) {\n if (this.followedTopicsPromises.notExist(roomId)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {roomId}});\n\n if (result.error) {\n throw result.error;\n }\n\n this.setFollowedTopicsArray([roomId], result.data.followedTopics);\n }, roomId);\n }\n\n await this.followedTopicsPromises.get(roomId);\n }\n\n return this.followedTopics.get(roomId);\n }\n\n /**\n * Batch acknowledge all messages for given room.\n */\n public async ackRoom(roomId: string): Promise<void> {\n const collection = await this.getForRoom(roomId);\n\n if (! collection) {\n return;\n }\n\n for (const followedTopic of collection.items) {\n if (followedTopic.isUnread) {\n await this.tracker.client.send('Ack', {location: followedTopic.location});\n }\n }\n }\n\n /**\n * Summarize all unread messages or mentions from any topic in given location.\n * This method uses an internal cache, so it's ok to call it multiple times.\n * Capture the 'change' event to determine when it's worth calling this method again due to data changes.\n * @return Undefined if you are not in room.\n */\n public async summarize(location: ChatLocation): Promise<UnreadSummary> {\n const cacheKey = location.topicId\n ? `topic:${location.roomId}:${location.topicId}`\n : location.roomId\n ? `room:${location.roomId}`\n : location.spaceId\n ? `space:${location.spaceId}`\n : 'spaceless';\n\n if (this.summariesCache.has(cacheKey)) {\n return this.summariesCache.get(cacheKey)!;\n }\n\n let roomIds: string[] = [];\n let targetTopicId: string | undefined;\n const rooms = await this.tracker.rooms.get();\n\n if (location.topicId) {\n if (!location.roomId) {\n throw new Error(\"roomId is required when querying by topicId\");\n }\n roomIds = [location.roomId];\n targetTopicId = location.topicId;\n } else if (location.roomId) {\n roomIds = [location.roomId];\n } else if (location.spaceId) {\n await this.cacheForSpace(location.spaceId);\n roomIds = rooms.findBy('spaceId', location.spaceId).items.map(r => r.id);\n } else {\n await this.cacheForSpace(null);\n roomIds = rooms.items.filter(r => !r.spaceId).map(r => r.id);\n }\n\n let mentionCount = 0;\n let unreadTopicCount = 0;\n let unreadRoomCount = 0;\n\n for (const roomId of roomIds) {\n const collection = await this.getForRoom(roomId);\n\n if (!collection) {\n continue;\n }\n\n let isRoomUnreadCount = false;\n for (const topic of collection.items) {\n if (targetTopicId && topic.location.topicId !== targetTopicId) {\n continue;\n }\n\n if (topic.isUnread) {\n if (!isRoomUnreadCount) {\n unreadRoomCount++;\n isRoomUnreadCount = true;\n }\n unreadTopicCount++;\n }\n\n mentionCount += (topic.mentionCount ?? 0);\n }\n }\n\n const result = { mentionCount, unreadTopicCount, unreadRoomCount, isUnread: unreadTopicCount > 0 };\n this.summariesCache.set(cacheKey, result);\n\n return result;\n }\n\n /**\n * For internal use. If you want to delete the message, execute a proper command on client object.\n * @internal\n */\n public _deleteByTopicIds(roomId: string, ...topicIds: string[]): void {\n this.followedTopics.get(roomId)?.delete(...topicIds);\n topicIds.forEach(topicId => this.invalidateUnreadSummaries(roomId, topicId));\n }\n\n private handleSession(ev: Session): void {\n this.followedTopics.deleteAll();\n this.followedTopicsPromises.forgetAll();\n this.invalidateUnreadSummaries();\n this.deferredSession.resolve();\n }\n\n private handleNewMessage(ev: NewMessage): void {\n void this.updateLocallyFollowedTopicOnNewMessage(ev);\n }\n\n private handleFollowedTopicUpdated(ev: FollowedTopicUpdated): void {\n this.followedTopics.get(ev.followedTopic.location.roomId)?.set(ev.followedTopic);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicFollowed(ev: TopicFollowed): void {\n this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicUnfollowed(ev: TopicUnfollowed): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.clearRoomFollowedTopicsStructures(ev.room.id);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private async handleNewTopic(ev: NewTopic): Promise<void> {\n if (this.followedTopics.has(ev.roomId)) {\n // Check if the new topic is followed by user\n // only if client asked for followed topics list before for this room\n const result = await this.tracker.client.send(\n 'GetFollowedTopics',\n {location: {roomId: ev.roomId, topicId: ev.topic.id}},\n );\n const followedTopic = result.data.followedTopics[0];\n if (followedTopic) {\n this.followedTopics.get(ev.roomId).set(followedTopic);\n this.invalidateUnreadSummaries(ev.roomId, ev.topic.id);\n }\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n /**\n * Invalidate the summaries cache intentionally, only for the locations affected by the change.\n */\n private invalidateUnreadSummaries(roomId?: string, topicId?: string): void {\n if (roomId) {\n this.summariesCache.delete(`room:${roomId}`);\n\n if (topicId) {\n this.summariesCache.delete(`topic:${roomId}:${topicId}`);\n } else {\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith(`topic:${roomId}:`)) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n }\n }\n } else {\n this.summariesCache.clear();\n }\n\n this.emit('change');\n }\n\n private invalidateUnreadSummariesForRooms(roomIds: string[]): void {\n const roomIdsSet = new Set(roomIds);\n roomIds.forEach(roomId => {\n this.summariesCache.delete(`room:${roomId}`);\n });\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n continue;\n }\n if (key.startsWith('topic:')) {\n const parts = key.split(':');\n if (parts.length >= 2 && roomIdsSet.has(parts[1])) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n this.emit('change');\n }\n\n private async updateLocallyFollowedTopicOnNewMessage(ev: NewMessage): Promise<void> {\n const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);\n const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);\n\n if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {\n // Skip if we don't follow this room or message is ephemeral\n return;\n }\n\n const me = await this.tracker.getMe();\n const isMe = ev.message.author.user.id === me.id;\n let update: Partial<FollowedTopic>;\n\n if (isMe) {\n // Reset missed messages count if new message is authored by me\n update = {missed: 0, lastAckMessageId: ev.message.id};\n } else if (ev.message.type === 'Text') {\n // ...check for mentions if it's text message...\n const member = await this.tracker.rooms.getMe(ev.message.location.roomId);\n const roleIds = [...(member.spaceMember?.roles ?? []), ...(member.roles ?? [])];\n const mentionHandlers = [\n ...roleIds.map(id => `<@&${id}>`),\n `<@${me.id}>`,\n ];\n const mentionExists = mentionHandlers.some(handler => ev.message.content.includes(handler));\n\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n mentionCount: followedTopic.mentionCount + (mentionExists ? 1 : 0),\n };\n } else {\n // ...or just mark as unread.\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n };\n }\n\n roomFollowedTopics.set({...followedTopic, ...update});\n this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);\n }\n\n private setFollowedTopicsArray(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n // Reassign followed topics to limit collection change event emit\n followedTopics.forEach(followedTopic => {\n roomToTopics[followedTopic.location.roomId] ??= [];\n roomToTopics[followedTopic.location.roomId].push(followedTopic);\n });\n\n roomIds.forEach(roomId => {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n if (roomToTopics[roomId]) {\n this.followedTopics.get(roomId).set(...roomToTopics[roomId]);\n }\n });\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private clearRoomFollowedTopicsStructures(roomId: string): void {\n this.followedTopics.delete(roomId);\n this.followedTopicsPromises.forget(roomId);\n this.invalidateUnreadSummaries(roomId);\n }\n}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n Message,\n MessagesRedacted,\n NewMessage,\n NewTopic,\n Room, RoomDeleted,\n RoomJoined, RoomLeft,\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\n RoomMemberUpdated, RoomUpdated, Session, SpaceDeleted, SpaceLeft, SpaceMemberLeft,\n SpaceMemberUpdated,\n Topic,\n TopicDeleted, TopicUpdated,\n UserUpdated,\n} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {MessagesManager} from \"./MessagesManager\";\nimport {FollowedTopicsManager} from \"./FollowedTopicsManager\";\n\nexport class RoomsManager {\n public readonly messages: MessagesManager;\n public readonly followedTopics: FollowedTopicsManager;\n\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly membersPromises = new PromiseRegistry();\n private readonly topicsPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.messages = new MessagesManager(tracker);\n this.followedTopics = new FollowedTopicsManager(tracker);\n\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicUpdated', ev => this.handleTopicUpdated(ev));\n this.tracker.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.tracker.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.tracker.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of room members.\n */\n public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {\n if (this.membersPromises.notExist(roomId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\n if (result.error) {\n throw result.error;\n }\n this.handleRoomMembers(result.data);\n }, roomId);\n }\n\n await this.membersPromises.get(roomId);\n return this.members.get(roomId);\n }\n\n /**\n * Get a room member representing the current user.\n */\n public async getMe(roomId: string): Promise<RoomMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(roomId)) {\n // User is not in passed room.\n return undefined;\n }\n\n const members = await this.getMembers(roomId);\n return members?.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);\n }\n\n /**\n * Get collection of all the rooms you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get a collection of locally cached Topic objects for given room.\n * You can pass topic ids as second argument, to try to fetch them from the server.\n */\n public async getTopics(roomId: string, tryToFetchTopicIds?: string[]): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\n await this.deferredSession.promise;\n\n if (tryToFetchTopicIds?.length) {\n // Topic can be fetched if it isn't already cached and fetch is not already in progress\n const canFetch = (topicId: string) => ! this.topics.get(roomId)?.has(topicId) && ! this.topicsPromises.has(roomId + topicId);\n const idsToFetch = tryToFetchTopicIds.filter(canFetch);\n\n if (idsToFetch.length) {\n const promise = this.tracker\n .client\n .send('GetTopics', {roomId, topicIds: idsToFetch})\n .then(result => this.topics.get(result.data.location.roomId)?.set(...result.data.topics));\n\n idsToFetch.forEach(topicId => this.topicsPromises.register(promise, roomId + topicId));\n }\n\n for (const topicId of tryToFetchTopicIds) {\n await this.topicsPromises.get(roomId + topicId);\n }\n }\n\n return this.topics.get(roomId);\n }\n\n /**\n * For internal use. If you want to delete topic, execute a proper command on client object.\n * @internal\n */\n public _deleteTopicsFromRoom(roomId: string, ...topicIds: string[]): void {\n this.topics.get(roomId)?.delete(...topicIds);\n }\n\n private deleteRoom(...roomIds: string[]): void {\n this.list.delete(...roomIds);\n this.members.delete(...roomIds);\n this.membersPromises.forget(...roomIds);\n\n for (const roomId of roomIds) {\n const topicIds: string[] = this.topics.get(roomId)?.items.map(topic => topic.id) ?? [];\n this.followedTopics._deleteByTopicIds(roomId, ...topicIds);\n }\n\n this.topics.delete(...roomIds);\n }\n\n private deleteRoomsBySpaceId(spaceId: string): void {\n this.deleteRoom(\n ...this.list.findBy('spaceId', spaceId).items.map(room => room.id)\n );\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n // Update members of rooms related to this space\n for (const room of this.list.findBy('spaceId', ev.spaceId).items) {\n const roomMembers = this.members.get(room.id);\n\n if (!roomMembers || !roomMembers.has(ev.userId)) {\n // Skip update if member list for this room is not loaded\n // or user is not in room\n continue;\n }\n\n // Update space member in roomMember, but first fill the user object (it's null in event)\n const roomMember = roomMembers.get(ev.userId);\n const spaceMember = ev.member;\n spaceMember.user = roomMember.spaceMember.user;\n roomMembers.set({ ...roomMember, spaceMember });\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n this.list\n .findBy('spaceId', ev.spaceId).items\n .forEach(room => this.members.get(room.id)?.delete(ev.userId));\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (! this.members.has(ev.roomId)) {\n // We do not track member list for this room.\n return;\n }\n\n const members = this.members.get(ev.roomId);\n const member = members.get(ev.userId);\n const newMember = ev.member;\n const user = member.spaceMember?.user ?? member.user;\n\n // Preserving user object, because it's not included in event\n if (newMember.spaceMember) {\n newMember.spaceMember.user = user;\n } else {\n newMember.user = user;\n }\n\n members.set(newMember);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n this.deleteRoomsBySpaceId(ev.id);\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.topics.get(ev.location.roomId);\n collection.delete(ev.location.topicId);\n\n const room = this.list.get(ev.location.roomId);\n if (room.defaultTopic?.id === ev.location.topicId) {\n this.list.set({...room, defaultTopic: null});\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\n }\n\n private addJoinedRoomTopics(roomId: string, ...topics: Topic[]): void {\n if (this.topics.has(roomId)) {\n this.topics.get(roomId).set(...topics);\n } else {\n this.topics.set([roomId, new ObservableIndexedObjectCollection<Topic>('id', topics)]);\n }\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (this.list.has(ev.room.id)) {\n this.list.set(ev.room);\n }\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.deleteRoom(ev.id);\n }\n\n private handleTopicUpdated(ev: TopicUpdated): void {\n const room = this.list.get(ev.location.roomId);\n\n if (this.topics.get(ev.location.roomId)?.has(ev.topic.id)) {\n this.topics.get(ev.location.roomId).set(ev.topic);\n }\n\n if (room.defaultTopic.id === ev.topic.id) {\n const newRoom = { ...room };\n newRoom.defaultTopic = ev.topic;\n this.list.set(newRoom);\n }\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n for (const room of rooms) {\n if (room.defaultTopic) {\n this.addJoinedRoomTopics(room.id, room.defaultTopic);\n }\n\n if (room.type === 'Pm' && room.recipients) {\n // Treat PM recipients as normal room members.\n // We are registering fake promise in `memberPromises`\n // because GetMembers are not supported for PM rooms.\n this.handleRoomMembers({\n id: room.id,\n members: room.recipients.map(user => ({\n user,\n spaceMember: null,\n roles: null,\n customColor: null,\n customNick: null,\n extras: '',\n })),\n });\n this.membersPromises.register(Promise.resolve(), room.id);\n }\n }\n this.list.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.deleteRoom(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member.user?.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n }\n }\n\n private handleSession(ev: Session): void {\n this.list.deleteAll();\n this.topics.deleteAll();\n this.topicsPromises.forgetAll();\n this.members.deleteAll();\n this.membersPromises.forgetAll();\n\n this.addJoinedRooms(...ev.state.rooms);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n // Update room members users\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip room; updated user is not here\n return;\n }\n\n const newMember: RoomMember = {...member};\n\n if (member.user) {\n newMember.user = ev.user;\n } else {\n newMember.spaceMember.user = ev.user;\n }\n\n members.set(newMember);\n });\n\n // Update recipients users\n const newRooms: Room[] = [];\n this.list.items.forEach(room => {\n if (room.recipients?.some(user => user.id === ev.user.id)) {\n room.recipients = room.recipients.map(user => user.id === ev.user.id ? ev.user : user);\n newRooms.push({...room});\n }\n });\n this.list.set(...newRooms);\n }\n\n private handleNewMessage(ev: NewMessage): void {\n const topics = this.topics.get(ev.message.location.roomId);\n const topic = topics?.get(ev.message.location.topicId);\n\n if (!topic) {\n return; // No topic found, nothing to update\n }\n\n const newTopic = {\n ...topic,\n messageCount: topic.messageCount + 1,\n lastMessage: ev.message,\n };\n\n topics.set(newTopic);\n const room = this.list.get(ev.message.location.roomId);\n\n if (room.defaultTopic?.id === ev.message.location.topicId) {\n this.list.set({ ...room, defaultTopic: newTopic });\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n // Remove redacted messages from topic and update metadata\n const topics = this.topics.get(ev.location.roomId);\n const topic = topics?.get(ev.location.topicId);\n if (topic) {\n const messageCount = Math.max(topic.messageCount - ev.ids.length, 0);\n const lastMessage: Message = messageCount > 0 ? await this.messages._resolveLastMessage(ev.location) : null;\n topics.set({ ...topic, messageCount, lastMessage } as Topic);\n }\n }\n}","import {Role, RoomMember, SpaceMember, User} from \"../types/src\";\r\n\r\nexport function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, updatedRole: Role): Role[] {\r\n // If the priority has changed, adjust the rest of roles\r\n const increased = (updatedRole.priority - oldRole.priority) > 0;\r\n const decreased = ! increased;\r\n const changedRoles: Role[] = [];\r\n\r\n allRoles.forEach(role => {\r\n if (role.id === updatedRole.id) {\r\n // Skip the updated role\r\n return;\r\n }\r\n if (increased && oldRole.priority <= role.priority) {\r\n role.priority--;\r\n changedRoles.push(role);\r\n }\r\n if (decreased && updatedRole.priority <= role.priority) {\r\n role.priority++;\r\n changedRoles.push(role);\r\n }\r\n });\r\n\r\n return changedRoles;\r\n}\r\n\r\nexport function extractUserFromMember(member: RoomMember | SpaceMember): User | null {\r\n return member.user ?? (member as RoomMember).spaceMember?.user;\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRole,\n NewRoom,\n Role,\n RoleDeleted,\n RoleUpdated,\n RoomDeleted,\n RoomSummary,\n RoomSummaryUpdated,\n RoomUpdated,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft,\n SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdated,\n SpaceRooms,\n SpaceUpdated,\n UserUpdated\n} from \"../types/src\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {reorderRolesOnPriorityUpdate} from \"./functions\";\n\nexport class SpacesManager {\n private readonly list = new ObservableIndexedObjectCollection<Space>('id');\n private readonly roles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly rooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly roomIdToSpaceId = new IndexedCollection<string, string>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly roomsPromises = new PromiseRegistry();\n private readonly membersPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceUpdated', ev => this.handleSpaceUpdated(ev));\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('RoleUpdated', ev => this.handleRoleUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of all the spaces you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get collection of space roles.\n */\n public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {\n await this.deferredSession.promise;\n return this.roles.get(spaceId);\n }\n\n /**\n * Get collection of the all available rooms inside given space.\n */\n public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {\n if (this.roomsPromises.notExist(spaceId)) {\n this.roomsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceRooms(result.data);\n }, spaceId);\n }\n\n await this.roomsPromises.get(spaceId);\n return this.rooms.get(spaceId);\n }\n\n /**\n * Get collection of space members.\n */\n public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {\n if (this.membersPromises.notExist(spaceId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceMembers(result.data);\n }, spaceId);\n }\n\n await this.membersPromises.get(spaceId);\n return this.members.get(spaceId);\n }\n\n /**\n * Get a space member representing the current user.\n */\n public async getMe(spaceId: string): Promise<SpaceMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(spaceId)) {\n // User is not in passed space.\n return undefined;\n }\n\n const members = await this.getMembers(spaceId);\n return members?.items.find(member => member.user.id === userId);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.roles.get(ev.spaceId);\n collection.set(ev.role);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.rooms.get(ev.spaceId)?.set(ev.summary);\n this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {\n const rooms = this.rooms.get(ev.room.spaceId);\n rooms.set({\n ...rooms.get(ev.room.id),\n name: ev.room.name,\n description: ev.room.description,\n } as RoomSummary);\n }\n }\n\n private async handleRoomDeleted(ev: RoomDeleted): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.id);\n this.roomIdToSpaceId.delete(ev.id);\n\n if (! spaceId) {\n return;\n }\n\n const space = this.list.get(spaceId);\n let spaceChanged = false;\n\n this.rooms.get(spaceId)?.delete(ev.id);\n\n if (space.systemRoom === ev.id) {\n space.systemRoom = null;\n spaceChanged = true;\n }\n\n if (space.defaultRooms.includes(ev.id)) {\n space.defaultRooms = space.defaultRooms.filter(roomId => roomId !== ev.id);\n spaceChanged = true;\n }\n\n if (spaceChanged) {\n this.list.set(space);\n }\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.roles.get(ev.spaceId);\n collection.delete(ev.id);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleSpaceUpdated(ev: SpaceUpdated): void {\n this.list.set(ev.space);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const roomIds = this.rooms.get(ev.id)?.items.map(item => item.id) ?? [];\n this.roomIdToSpaceId.delete(...roomIds);\n\n this.roles.delete(ev.id);\n this.members.delete(ev.id);\n this.membersPromises.forget(ev.id);\n this.rooms.delete(ev.id);\n this.roomsPromises.forget(ev.id);\n this.list.delete(ev.id);\n }\n\n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.roles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.list.set(...spaces);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (!this.rooms.has(ev.id)) {\n this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));\n }\n }\n\n private async handleRoomSummaryUpdated(ev: RoomSummaryUpdated): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.summary.id);\n const summariesPromise = this.roomsPromises.get(spaceId);\n\n /**\n * Update summary only if the list was already loaded.\n * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.\n */\n if (spaceId && summariesPromise) {\n await summariesPromise;\n\n const summaries = this.rooms.get(spaceId);\n const oldSummary = summaries.get(ev.summary.id);\n let newSummary: RoomSummary;\n\n if (oldSummary) {\n newSummary = {...oldSummary, ...ev.summary};\n } else {\n newSummary = ev.summary;\n }\n\n summaries.set(newSummary);\n }\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (this.members.has(ev.spaceId)) {\n const members = this.members.get(ev.spaceId);\n const member = members.get(ev.userId);\n members.set({...ev.member, user: member.user});\n }\n }\n\n private handleRoleUpdated(ev: RoleUpdated): void {\n const roles = this.roles.get(ev.spaceId);\n const oldRole = roles.get(ev.role.id);\n const newRole = ev.role;\n const rolesToUpdate = [newRole];\n\n if (oldRole.priority !== newRole.priority) {\n rolesToUpdate.push(\n ...reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)\n );\n }\n\n this.roles.get(ev.spaceId).set(...rolesToUpdate);\n }\n\n private handleSession(ev: Session): void {\n this.list.deleteAll();\n this.roles.deleteAll();\n this.rooms.deleteAll();\n this.roomsPromises.forgetAll();\n this.members.deleteAll();\n this.membersPromises.forgetAll();\n this.roomIdToSpaceId.deleteAll();\n\n this.addJoinedSpaces(...ev.state.spaces);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip space; updated user is not here\n return;\n }\n\n members.set({...member, user: ev.user});\n });\n }\n}","export enum Layer {\n Global,\n Space,\n Room,\n Topic,\n}\n\nexport class PermissionDefinition {\n value: number;\n maxLayer: Layer;\n}\n\nexport class Permissions {\n public static readonly list = {\n Root: {value: 1 << 0, maxLayer: Layer.Room},\n CreateSpaces: {value: 1 << 1, maxLayer: Layer.Global},\n ManageSpace: {value: 1 << 2, maxLayer: Layer.Space},\n ManageRoles: {value: 1 << 3, maxLayer: Layer.Space},\n //ManageRoom: {value: 1 << 4, maxLayer: Layer.Room},\n CreateTopics: {value: 1 << 5, maxLayer: Layer.Room},\n ManageTopic: {value: 1 << 6, maxLayer: Layer.Topic},\n ManageMemberProfiles: {value: 1 << 7, maxLayer: Layer.Space},\n ManageMemberRoles: {value: 1 << 8, maxLayer: Layer.Room},\n CreateMessages: {value: 1 << 9, maxLayer: Layer.Topic},\n ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},\n CreateRooms: {value: 1 << 11, maxLayer: Layer.Space},\n ManageRoom: {value: 1 << 12, maxLayer: Layer.Room},\n CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},\n ManageEmoticons: {value: 1 << 14, maxLayer: Layer.Space},\n ManageBans: {value: 1 << 15, maxLayer: Layer.Room},\n Kick: {value: 1 << 16, maxLayer: Layer.Room},\n ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},\n ChangeOwnColor: {value: 1 << 18, maxLayer: Layer.Room},\n RedactMessages: {value: 1 << 19, maxLayer: Layer.Topic},\n };\n\n public static getNames(): (keyof typeof this.list)[] {\n return Object.keys(this.list) as any;\n }\n\n public static getByName(name: keyof typeof this.list): PermissionDefinition | undefined {\n return this.list[name];\n }\n\n public static canBeDefinedOnLayer(permissionName: keyof typeof this.list, layer: Layer): boolean {\n const def = this.getByName(permissionName);\n\n if (! def) {\n throw new Error(`Invalid permission name: ${permissionName}`);\n }\n\n return layer <= this.getByName(permissionName).maxLayer;\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n ChatLocation,\n PermissionOverwrites, PermissionOverwritesTarget,\n PermissionOverwritesUpdated,\n PermissionOverwritesValue,\n RoleDeleted,\n RoomDeleted,\n RoomLeft, RoomMember, RoomMemberUpdated, Session,\n SpaceDeleted,\n SpaceLeft, SpaceMember,\n SpaceMemberUpdated,\n TopicDeleted,\n} from \"../types/src\";\nimport {ChangeEventMap, EventTarget} from \"../EventTarget\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {Permissions} from \"../Permissions\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst getOvId = (\n location: ChatLocation,\n target?: PermissionOverwritesTarget,\n) => [location.spaceId, location.roomId, location.topicId, target?.type, target?.userId, target?.roleId].filter(Boolean).join('/');\n\nconst getOvIdByObject\n = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);\n\ninterface CheckPermissionsResult {\n /**\n * @deprecated Use `hasAll` instead.\n */\n ok: boolean;\n hasAll: boolean;\n hasAny: boolean;\n missing: string[];\n}\n\ntype PermissionsManagerEventMap = ChangeEventMap<void>;\n\nexport class PermissionsManager extends EventTarget<PermissionsManagerEventMap> {\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\n private readonly overwritesPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n this.tracker.client.on('PermissionOverwrites', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('PermissionOverwritesUpdated', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n public async getOverwrites(\n location: ChatLocation,\n target: PermissionOverwritesTarget,\n ): Promise<PermissionOverwrites | undefined> {\n this.validateLocation(location);\n\n const id = getOvId(location, target);\n\n if (this.overwritesPromises.notExist(id)) {\n this.overwritesPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send(\n 'GetPermissionOverwrites',\n {location, target},\n );\n if (result.error) {\n throw result.error;\n }\n this.handlePermissionOverwrites(result.data);\n }, id);\n }\n\n await this.overwritesPromises.get(id);\n return this.overwrites.get(id);\n }\n\n public async check(\n permissionNames: (keyof typeof Permissions.list)[],\n location: ChatLocation,\n ): Promise<CheckPermissionsResult> {\n if (! permissionNames.length) {\n throw new Error('Permission names array cannot be empty');\n }\n\n const ownedPermissions = await this.calculatePermissions(location);\n const missing: string[] = [];\n\n permissionNames.forEach(name => {\n if (~ ownedPermissions & Permissions.getByName(name).value) {\n missing.push(name as string);\n }\n });\n\n return {\n ok: missing.length === 0,\n hasAll: missing.length === 0,\n hasAny: missing.length < permissionNames.length,\n missing,\n };\n }\n\n public async calculatePermissions(location: ChatLocation): Promise<number> {\n const room = location.roomId ? (await this.tracker.rooms.get()).get(location.roomId) : null;\n location = {\n spaceId: location.spaceId ?? room?.spaceId,\n roomId: location.roomId,\n topicId: location.topicId,\n };\n\n this.validateLocation(location);\n\n const userId = (await this.tracker.getMe()).id;\n const [spaceMember, roomMember] = await this.fetchMembersOrFail(location);\n const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];\n const promises: Promise<PermissionOverwritesValue>[] = [\n // Global user overwrites\n this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),\n ];\n\n if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId};\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (room) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId, roomId: location.roomId};\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n }\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(location, userRoles));\n }\n promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n return this.resolveOverwritesHierarchy(await Promise.all(promises));\n }\n\n private handlePermissionOverwrites(ev: PermissionOverwritesUpdated | PermissionOverwrites): void {\n this.overwrites.set([getOvIdByObject(ev), ev]);\n this.emit('change');\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.id}));\n this.overwritesPromises.forget(...ids);\n }\n\n private async handleRoomDeleted(ev: RoomDeleted | RoomLeft): Promise<void> {\n const room = (await this.tracker.rooms.get()).get(ev.id);\n if (room) {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: room.spaceId, roomId: room.id}));\n this.overwritesPromises.forget(...ids);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in space could potentially have changed\n this.emit('change');\n }\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in room could potentially have changed\n this.emit('change');\n }\n }\n\n /**\n * @return Matched and deleted ids\n */\n private deleteOverwritesByIdPrefix(prefix: string): string[] {\n const ids: string[] = [];\n this.overwrites.items.forEach((overwrites) => {\n const id = getOvIdByObject(overwrites);\n if (id.startsWith(prefix)) {\n ids.push(id);\n this.overwrites.delete(id);\n }\n });\n return ids;\n }\n\n private async collectRoleOverwrites(\n location: ChatLocation,\n userRoles: string[],\n ): Promise<PermissionOverwritesValue> {\n const roleOverwrites = await Promise.all(userRoles.map(\n roleId => this.getOverwrites(location, { type: 'Role', roleId }),\n ));\n\n return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);\n }\n\n private async resolveOverwritesFromRolesByOrder(\n spaceId: string,\n overwrites: PermissionOverwrites[],\n ): Promise<PermissionOverwritesValue> {\n let allows = 0, denies = 0;\n const roles = await this.tracker.spaces.getRoles(spaceId);\n const sortedOverwrites = overwrites.sort(\n (a, b) =>\n roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority\n );\n\n // Max length of bit word\n const permissionsLength = overwrites.reduce(\n (previousValue: number, currentValue: PermissionOverwrites) =>\n Math.max(\n previousValue,\n currentValue.overwrites.allow?.toString(2).length ?? 0,\n currentValue.overwrites.deny?.toString(2).length ?? 0,\n ),\n 0,\n );\n\n sortedOverwrites.forEach(overwriteEvent => {\n const overwrites = overwriteEvent.overwrites;\n const revDecDenies = overwrites.deny?.toString(2).split('').reverse().join('') ?? '';\n const revDecAllows = overwrites.allow?.toString(2).split('').reverse().join('') ?? '';\n\n for (let i = 0; i < permissionsLength; i++) {\n const deny = parseInt(revDecDenies[i] ?? '0');\n const allow = parseInt(revDecAllows[i] ?? '0');\n\n if (deny) {\n denies |= 1 << i;\n }\n\n if (allow) {\n allows |= 1 << i;\n }\n }\n });\n\n return {allow: allows, deny: denies};\n }\n\n private resolveOverwritesHierarchy(permissionOverwritesValues: PermissionOverwritesValue[]): number {\n let result = 0;\n\n for (const value of permissionOverwritesValues) {\n if (value.allow & Permissions.getByName('Root').value) {\n return this.getRootAccessValue();\n }\n\n result = (result & ~value.deny) | value.allow;\n }\n\n return result;\n }\n\n private getRootAccessValue(): number {\n let result = 0;\n\n for (const name of Permissions.getNames()) {\n result |= Permissions.getByName(name).value;\n }\n\n return result;\n }\n\n private async fetchMembersOrFail(location: ChatLocation): Promise<[SpaceMember | null, RoomMember | null]> {\n const results = await Promise.all([\n location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null,\n location.roomId ? this.tracker.rooms.getMe(location.roomId) : null,\n ]);\n\n const spaceFail = location.spaceId && ! results[0];\n const roomFail = location.roomId && ! results[1];\n\n if (spaceFail || roomFail) {\n const layer = spaceFail ? `space (${location.spaceId})` : `room (${location.roomId})`;\n throw new Error(`Attempting to calculate permissions for a ${layer} that the user does not belong to`);\n }\n\n return results;\n }\n\n private validateLocation(location: ChatLocation): void {\n if (location.topicId && ! location.roomId) {\n throw new Error('Corrupted arguments hierarchy');\n }\n }\n\n private handleSession(ev: Session): void {\n this.overwrites.deleteAll();\n this.overwritesPromises.forgetAll();\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n IndexedCollection,\n ObservableIndexedObjectCollection\n} from \"../IndexedObjectCollection\";\nimport {Emoticon, EmoticonDeleted, Emoticons, NewEmoticon, SpaceDeleted} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst GLOBAL_KEY = 'global';\n\nexport class EmoticonsManager {\n private list: IndexedCollection<string, ObservableIndexedObjectCollection<Emoticon>> = new IndexedCollection();\n private emoticonsPromises = new PromiseRegistry();\n \n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Emoticons', ev => this.handleEmoticons(ev));\n this.tracker.client.on('NewEmoticon', ev => this.handleNewEmoticon(ev));\n this.tracker.client.on('EmoticonDeleted', ev => this.handleEmoticonDeleted(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(spaceId?: string): Promise<ObservableIndexedObjectCollection<Emoticon>> {\n const key = spaceId ?? GLOBAL_KEY;\n\n if (this.emoticonsPromises.notExist(key)) {\n this.emoticonsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetEmoticons', {spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleEmoticons(result.data);\n }, key);\n }\n\n await this.emoticonsPromises.get(key);\n return this.list.get(key);\n }\n\n private handleEmoticons(event: Emoticons): void {\n const spaceId = event.location.spaceId ?? GLOBAL_KEY;\n\n if (!this.list.has(spaceId)) {\n this.list.set([spaceId, new ObservableIndexedObjectCollection<Emoticon>('id')]);\n }\n\n const collection = this.list.get(spaceId);\n collection.set(...event.emoticons);\n }\n\n private handleNewEmoticon(ev: NewEmoticon): void {\n const collection = this.list.get(ev.emoticon.spaceId ?? GLOBAL_KEY);\n collection?.set(ev.emoticon);\n }\n\n private handleEmoticonDeleted(ev: EmoticonDeleted): void {\n const collection = this.list.get(ev.spaceId ?? GLOBAL_KEY);\n collection?.delete(ev.emoticonId);\n }\n\n private handleSpaceDeleted(event: SpaceDeleted): void {\n this.list.delete(event.id);\n }\n\n private handleSession(): void {\n this.list.deleteAll();\n this.emoticonsPromises.forgetAll();\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {RoomMember, Session, SpaceMember, User} from \"../types/src\";\nimport {extractUserFromMember} from \"./functions\";\nimport {EventTarget} from \"../EventTarget\";\n\nexport class UsersManager {\n public readonly onlineStatus = new EventTarget<{ change: User }>();\n\n private readonly users: ObservableIndexedObjectCollection<User> = new ObservableIndexedObjectCollection('id');\n\n public constructor(private tracker: ChatStateTracker) {\n // RoomMemberUpdated & SpaceMemberUpdated events are not contains user object\n tracker.client.on('UserUpdated', event => this.handleUsers([event.user]));\n tracker.client.on('RoomMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMembers', event => this.handleMembers(event.members));\n tracker.client.on('RoomMembers', event => this.handleMembers(event.members));\n tracker.client.on('Messages', event => this.handleUsers(event.messages.map(message => message.author.user)));\n tracker.client.on('NewMessage', event => this.handleUsers([event.message.author.user]));\n tracker.client.on('Session', event => this.handleSession(event));\n }\n\n /**\n * Get all available (cached) user objects at once.\n */\n public async getAvailable(): Promise<ObservableIndexedObjectCollection<User>> {\n return this.users;\n }\n\n private handleMembers(members: (RoomMember | SpaceMember)[]): void {\n this.handleUsers(members.map(extractUserFromMember));\n }\n\n private handleSession(session: Session): void {\n this.users.deleteAll();\n this.handleUsers([session.user]);\n }\n\n private handleUsers(users: User[]): void {\n users.forEach(newUser => {\n const oldUser = this.users.get(newUser.id);\n if (oldUser && oldUser.online !== newUser.online) {\n this.onlineStatus.emit('change', newUser);\n }\n });\n\n this.users.set(...users);\n }\n}","import {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRelationship,\n RelationshipDeleted,\n Relationships,\n UserRelationship,\n UserRelationshipType\n} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\n\nconst getId = (refUserId: string, type: UserRelationshipType): string => `${refUserId}-${type}`;\nconst getIdFromRelationship = (relationship: UserRelationship): string => getId(relationship.refUser.id, relationship.type);\n\nexport class RelationshipsManager {\n private relationships: ObservableIndexedObjectCollection<UserRelationship> = new ObservableIndexedObjectCollection<UserRelationship>(getIdFromRelationship);\n private promises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Relationships', ev => this.handleRelationships(ev));\n this.tracker.client.on('NewRelationship', ev => this.handleNewRelationship(ev));\n this.tracker.client.on('RelationshipDeleted', ev => this.handleRelationshipDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(): Promise<ObservableIndexedObjectCollection<UserRelationship>> {\n if (this.promises.notExist('all')) {\n this.promises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRelationships', {});\n if (result.error) {\n throw result.error;\n }\n }, 'all');\n }\n\n await this.promises.get('all');\n return this.relationships;\n }\n\n public async exists(refUserId: string, type: UserRelationshipType): Promise<boolean> {\n await this.get();\n return this.relationships.has(getId(refUserId, type));\n }\n\n private handleRelationships(ev: Relationships): void {\n this.relationships.deleteAll();\n ev.relationships.forEach(relationship => {\n this.relationships.set(relationship);\n });\n }\n\n private handleNewRelationship(ev: NewRelationship): void {\n if (this.promises.has('all')) {\n this.relationships.set(ev.relationship);\n }\n }\n\n private handleRelationshipDeleted(ev: RelationshipDeleted): void {\n if (this.promises.has('all')) {\n this.relationships.delete(getIdFromRelationship(ev.relationship));\n }\n }\n\n private handleSession(): void {\n this.promises.forgetAll();\n this.relationships.deleteAll();\n }\n}","import {WebSocketChatClient} from \"../WebSocketChatClient\";\r\nimport {Session, User} from \"../types/src\";\r\nimport {RoomsManager} from \"./RoomsManager\";\r\nimport {SpacesManager} from \"./SpacesManager\";\r\nimport {PermissionsManager} from \"./PermissionsManager\";\r\nimport {DeferredTask} from \"./AsyncUtils\";\r\nimport {EmoticonsManager} from \"./EmoticonsManager\";\r\nimport {UsersManager} from \"./UsersManager\";\r\nimport {RelationshipsManager} from \"./RelationshipsManager\";\r\n\r\nexport class ChatStateTracker {\r\n public readonly client: WebSocketChatClient;\r\n\r\n /**\r\n * State of your permissions.\r\n */\r\n public readonly permissions: PermissionsManager;\r\n\r\n /**\r\n * State of the rooms you are in.\r\n */\r\n public readonly rooms: RoomsManager;\r\n\r\n /**\r\n * State of the spaces you are in.\r\n */\r\n public readonly spaces: SpacesManager;\r\n\r\n /**\r\n * State of the emoticons (global and space-related).\r\n */\r\n public readonly emoticons: EmoticonsManager;\r\n\r\n /**\r\n * Users related state.\r\n */\r\n public readonly users: UsersManager;\r\n\r\n /**\r\n * State of relationships with other users.\r\n */\r\n public readonly relationships: RelationshipsManager;\r\n\r\n private _me: User = null;\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(client: WebSocketChatClient) {\r\n this.client = client;\r\n this.client.on('Session', ev => this.handleSession(ev));\r\n\r\n this.permissions = new PermissionsManager(this);\r\n this.rooms = new RoomsManager(this);\r\n this.spaces = new SpacesManager(this);\r\n this.emoticons = new EmoticonsManager(this);\r\n this.users = new UsersManager(this);\r\n this.relationships = new RelationshipsManager(this);\r\n }\r\n\r\n public get me(): User | null {\r\n return this._me;\r\n }\r\n\r\n public async getMe(): Promise<User> {\r\n await this.deferredSession.promise;\r\n return this._me;\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this._me = ev.user;\r\n this.deferredSession.resolve();\r\n }\r\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n queryParams?: Record<string, string>;\n /**\n * Ping/pong configuration, enabled by default.\n */\n ping?: {\n enabled?: boolean;\n /**\n * Time without activity after which a ping will be sent. Default is 10 seconds.\n */\n noActivityTimeoutMs?: number;\n /**\n * Time to wait for a pong response before considering the connection dead. Default is 2 seconds.\n */\n pongBackTimeoutMs?: number;\n },\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\ntype WebSocketEventMap = EventsMap & {\n [WebSocketChatClientEvent.connect]: void;\n [WebSocketChatClientEvent.disconnect]: boolean;\n [WebSocketChatClientEvent.message]: Envelope;\n [WebSocketChatClientEvent.error]: Error;\n};\n\nexport class WebSocketChatClient extends AbstractChatClient<Pick<WebSocketEventMap, keyof WebSocketEventMap>> implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: Envelope[] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void];\n protected pingMonitorInterval?: NodeJS.Timeout;\n protected inFlightPingTimeout: NodeJS.Timeout;\n protected lastReceivedMessageAt?: number;\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n\n options.ping ??= {};\n options.ping.enabled ??= true;\n options.ping.noActivityTimeoutMs ??= 15000;\n options.ping.pongBackTimeoutMs ??= 5000;\n }\n\n public async connect(): Promise<void> {\n if (this.isOpenWsState() || this.isConnectingWsState()) {\n return;\n }\n\n const params = new URLSearchParams(this.options.queryParams ?? {});\n params.set('token', this.options.token);\n\n this.ws = new WebSocket(`${this.options.url}?${params}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n return new Promise((...args) => this.authenticatedResolvers = args);\n }\n\n public disconnect(): void {\n this.sendQueue = [];\n this.ws?.close(1000); // Normal closure\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope<CommandRequest<CommandType>>(commandType, commandData);\n const promise = this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n\n if (this.isConnectingWsState() || !this.authenticated && this.isOpenWsState()) {\n this.sendQueue.push(envelope);\n return promise;\n }\n\n this.sendEnvelope(envelope);\n return promise;\n }\n\n public get isReady(): boolean {\n return this.isOpenWsState() && this.authenticated;\n }\n\n private sendEnvelope(envelope: Envelope): void {\n if (this.isReady) {\n this.ws.send(JSON.stringify(envelope));\n return;\n }\n\n this.handleEnvelopeSendError(\n envelope,\n new Error(`Cannot send - client is not ready (state=${this.ws?.readyState ?? '[no connection]'}; authenticated=${this.authenticated})`)\n );\n }\n\n private onMessage(event: MessageEvent): void {\n this.lastReceivedMessageAt = Date.now();\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Bye';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.startConnectionMonitor();\n this.authenticatedResolvers[0]();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.authenticatedResolvers[1](envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n this.stopConnectionMonitor();\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n if (reconnect) {\n void this.connect();\n }\n this.emit(this.Event.disconnect, reconnect);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const envelope = this.sendQueue[dataIndex];\n setTimeout(() => this.sendEnvelope(envelope), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n\n private isConnectingWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.CONNECTING;\n }\n\n private isOpenWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.OPEN;\n }\n\n private startConnectionMonitor(): void {\n if (!this.options.ping!.enabled) {\n return;\n }\n\n this.lastReceivedMessageAt = Date.now();\n\n this.pingMonitorInterval = setInterval(async () => {\n if (!this.isReady || this.inFlightPingTimeout) {\n return;\n }\n\n if ((Date.now() - this.lastReceivedMessageAt) < this.options.ping!.noActivityTimeoutMs) {\n return;\n }\n\n this.inFlightPingTimeout = setTimeout(() => {\n this.inFlightPingTimeout = undefined;\n this.ws.close(3000); // Service Restart (reconnect)\n }, this.options.ping.pongBackTimeoutMs);\n\n this.send('Ping', {}).then(() => {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n });\n }, 1000);\n }\n\n private stopConnectionMonitor(): void {\n if (this.inFlightPingTimeout) {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n }\n if (this.pingMonitorInterval) {\n clearInterval(this.pingMonitorInterval);\n this.pingMonitorInterval = undefined;\n }\n }\n}","import {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n queryParams?: Record<string, string>;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\ntype WebApiEventMap = EventsMap & {\n [WebApiChatClientEvent.message]: Envelope;\n [WebApiChatClientEvent.error]: Error;\n [WebApiChatClientEvent.destroy]: boolean;\n};\n\ninterface SendStackItem {\n data: Envelope;\n attempts: number;\n lastTimeoutId: any;\n}\n\nexport class WebApiChatClient extends AbstractChatClient<Pick<WebApiEventMap, keyof WebApiEventMap>> implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: SendStackItem[] = [];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope(commandType, commandData);\n const item: SendStackItem = {data: envelope, attempts: 0, lastTimeoutId: null};\n this.sendStack.push(item);\n this.makeApiCall(item);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests, rejecting their promises so no caller\n // is left awaiting forever\n const pending = this.sendStack;\n this.sendStack = [];\n pending.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.handleEnvelopeSendError(item.data, new Error('Client destroyed'));\n });\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(item: SendStackItem, response: Response): Promise<void> {\n let envelope: Envelope;\n try {\n envelope = await response.json();\n } catch (e) {\n // Non-envelope response (e.g. a proxy error page) - failed attempt\n this.onError(item, `envelope ${item.data.ref} (HTTP ${response.status}, unparsable body)`);\n return;\n }\n\n if (!this.removeFromStack(item)) {\n return; // Destroyed in the meantime - the promise is already rejected\n }\n\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(item: SendStackItem, body: string): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed in the meantime\n }\n\n if (item.attempts >= (this.options.attemptsToSend ?? 10)) {\n this.removeFromStack(item);\n this.handleEnvelopeSendError(item.data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n\n item.lastTimeoutId = setTimeout(\n () => this.makeApiCall(item),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(item: SendStackItem): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed before this (re)try fired\n }\n\n item.attempts++;\n item.lastTimeoutId = null;\n const bodyJson = JSON.stringify(item.data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n headers.Authorization = `Bearer ${this.options.token}`;\n\n const query = new URLSearchParams(this.options.queryParams ?? {}).toString();\n const url = query ? `${this.options.url}?${query}` : this.options.url;\n\n fetch(url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(item, response))\n .catch(() => this.onError(item, bodyJson));\n }\n\n private removeFromStack(item: SendStackItem): boolean {\n const index = this.sendStack.indexOf(item);\n if (index === -1) {\n return false;\n }\n this.sendStack.splice(index, 1);\n return true;\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined,\n additionalHeaders: Record<string, string> = {},\n ): Promise<RestClientResponse<ResponseT>> {\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += '?' + new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...additionalHeaders,\n ...this.getAuthHeaders(),\n };\n\n const result = await fetch(url, {method, body, headers});\n\n return this.convertFetchResponse(result);\n }\n\n protected getAuthHeaders(): any {\n const headers = {} as any;\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n return headers;\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n protected async convertFetchResponse<T>(result: Response): Promise<RestClientResponse<T>> {\n return {\n ok: result.ok,\n status: result.status,\n data: result.headers.get('content-type')?.includes('json') ? await result.json() : await result.text(),\n };\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient, RestClientResponse} from \"./AbstractRestClient\";\r\n\r\nexport interface File {\r\n id: string;\r\n url: string;\r\n name: string;\r\n mime: string;\r\n size: number;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport class FilesClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://files.devana.pl';\r\n\r\n public async uploadFile(file: globalThis.File | Blob): Promise<RestClientResponse<File>> {\r\n const name = encodeURIComponent((file as globalThis.File).name ?? '');\r\n let headers = {\r\n ...this.getAuthHeaders(),\r\n Accept: 'application/json',\r\n 'Content-Disposition': `attachment; filename=\"${name}\"`,\r\n 'Content-Length': file.size\r\n };\r\n\r\n const response = await fetch(this.getUrl('files'), {\r\n method: 'POST',\r\n body: file,\r\n headers\r\n });\r\n\r\n return this.convertFetchResponse<File>(response);\r\n }\r\n\r\n public async getFileMeta(id: string): Promise<RestClientResponse<File>> {\r\n return this.send('GET', 'files/' + id);\r\n }\r\n\r\n public async getFileMetaBulk(ids: string[]): Promise<RestClientResponse<File[]>> {\r\n const searchParams = new URLSearchParams();\r\n ids.forEach(id => searchParams.append('id[]', id));\r\n return this.send('GET', 'files?' + searchParams);\r\n }\r\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","_classCallCheck","_defineProperty","Map","eventName","handler","addHandler","events","onceEvents","_this$events$get","_this$events$get2","index","indexOf","undefined","splice","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","type","data","ref","sentCounter","toString","envelope","_this2","Promise","_len2","_key2","awaitingResponse","has","isError","error","IndexedCollection","items","apply","_toConsumableArray","_createClass","_items","size","_i","item","id","ids","_i2","_ids","clear","field","valueToFind","_step","limit","Infinity","result","_iterator","_createForOfIteratorHelper","entries","s","n","done","_step$value","_slicedToArray","err","e","f","copy","IndexedObjectCollection","from","values","_this$_items","_len3","_key3","getId","_this$_items2","deleteAll","_step2","_iterator2","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","_superPropGet","emit","setItems","_len5","_key5","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","_this7","DeferredTask","promise","resolve","PromiseRegistry","promises","fn","register","_this$promises","t","r","iterator","i","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","toPrimitive","String","Number","_toPrimitive","WindowState","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","internalState","traverseLock","client","ev","handleNewMessage","handleMessagesRedacted","_setTraverseLock","_callee6","lock","_context6","state","LIVE","LATEST","_x2","_resetToLatest2","_callee7","_context7","_fetchNext2","_callee8","_context8","_fetchPrevious2","_callee9","_context9","_jumpTo2","_callee0","_context0","_x3","refTopic","refMessage","_objectSpread","topicRef","_fetchItemsAfter","_callee1","_this$getAt","afterId","_context1","getAt","send","location","after","fetchLimit","Error","message","messages","_fetchItemsAround","_callee10","_context10","around","_x4","_fetchItemsBefore","_callee11","_this$getAt2","beforeId","_context11","before","_fetchLatestItems","_callee12","_context12","_getTopic","_callee13","_context13","rooms","getTopics","_getLatestMessageId","_callee14","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context14","getTopic","lastMessage","_isLatestItemLoaded","_callee15","lastMessageId","_context15","getLatestMessageId","_handleNewMessage","_callee16","originalState","_context16","includes","addItems","emitChangeWithDiff","_x5","_handleMessagesRedacted","_callee17","refTopicIds","_context17","filter","msg","resetToLatest","_x6","_ObservableIndexedObj","TraversableRemoteCollection","current","ongoing","retainRatio","lastFetchCount","oldestId","OLDEST","_resetToLatest","_callee","_context","fetchLatestItems","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","_jumpTo","_callee4","_context4","fetchItemsAround","_x","_refreshFetchedState","_callee5","_t","_context5","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","itemChanged","highWatermark","lowWatermark","Math","floor","slice","RoomMessagesHistory","room","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","peek","topic","_args","historyWindows","_handleRoomUpdated","_Array$from","_Array$from$_i","window","setTraverseLock","historyWindow","deletedTopicIds","_this2$tracker$rooms","_deleteTopicsFromRoom","refHistoryWindow","_updateMessageReference","history","mode","MessagesManager","handleSession","handleRoomJoin","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","_resolveLastMessage2","_result$data","getRoomHistory","roomHistory","getMessagesWindow","createHistoryForNewRoom","FollowedTopicsManager","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","_cacheForSpace","spaceId","roomIds","spaceRegistryKey","spaces","findBy","every","followedTopics","followedTopicsPromises","notExist","registerByFunction","setFollowedTopicsArray","_getForRoom","_ackRoom","collection","followedTopic","getForRoom","isUnread","_summarize","cacheKey","targetTopicId","mentionCount","unreadTopicCount","unreadRoomCount","isRoomUnreadCount","_iterator3","_step3","_topic$mentionCount","summariesCache","cacheForSpace","_this$followedTopics$","topicIds","invalidateUnreadSummaries","forgetAll","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","_this$followedTopics$3","clearRoomFollowedTopicsStructures","_handleNewTopic","_this$followedTopics$4","_step4","_iterator4","startsWith","_step5","_iterator5","roomIdsSet","Set","_step6","_iterator6","parts","split","_updateLocallyFollowedTopicOnNewMessage","roomFollowedTopics","me","update","_member$spaceMember$r","_member$spaceMember","_member$roles","member","roleIds","mentionHandlers","mentionExists","getMe","author","user","missed","lastAckMessageId","spaceMember","roles","some","content","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_this6$followedTopics","invalidateUnreadSummariesForRooms","forget","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","_getMe","userId","list","getMembers","find","_member$user$id","_member$user","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","_this3$topics$get2","_this$topics$get","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get2","_this$followedTopics","_deleteByTopicIds","deleteRoom","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","newMember","deleteRoomsBySpaceId","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get3","addJoinedRooms","_this$topics$get4","newRoom","_this$list2","_rooms","recipients","customColor","customNick","extras","_member$user$id2","_member$user2","_this$list3","newRooms","_room$recipients","_room$defaultTopic2","newTopic","messageCount","max","_resolveLastMessage","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","_getRooms","roomsPromises","role","_this$rooms$get","summary","roomIdToSpaceId","name","description","_handleRoomDeleted","_this$rooms$get2","space","spaceChanged","systemRoom","defaultRooms","_this$rooms$get$items","_this$rooms$get3","_this$roomIdToSpaceId","addJoinedSpaces","_this$roles","summaries","_handleRoomSummaryUpdated","summariesPromise","oldSummary","newSummary","_this$roles$get","oldRole","newRole","rolesToUpdate","priority","allRoles","updatedRole","increased","decreased","changedRoles","reorderRolesOnPriorityUpdate","Layer","PermissionDefinition","Permissions","permissionName","layer","getByName","maxLayer","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageRoles","CreateTopics","ManageTopic","Topic","ManageMemberProfiles","ManageMemberRoles","CreateMessages","ManagePermissions","CreateRooms","ManageRoom","CreateEmoticons","ManageEmoticons","ManageBans","Kick","ChangeOwnNick","ChangeOwnColor","RedactMessages","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","_calculatePermissions","_location$spaceId","_spaceMember$roles","_roomMember$roles","_yield$this$tracker$s","_yield$this$tracker$r","_yield$this$fetchMemb","_yield$this$fetchMemb2","userRoles","filterLocation","_filterLocation","_t6","_t7","_t8","_t9","_t0","fetchMembersOrFail","getOverwrites","collectRoleOverwrites","all","resolveOverwritesHierarchy","_this$overwritesPromi","deleteOverwritesByIdPrefix","_this$overwritesPromi2","_this$overwritesPromi3","_this$overwritesPromi4","_this$tracker$me","_this$tracker$me2","prefix","_collectRoleOverwrites","roleOverwrites","resolveOverwritesFromRolesByOrder","_x7","_x8","_resolveOverwritesFromRolesByOrder","allows","denies","sortedOverwrites","permissionsLength","getRoles","sort","b","reduce","previousValue","currentValue","_currentValue$overwri","_currentValue$overwri2","_currentValue$overwri3","_currentValue$overwri4","allow","deny","overwriteEvent","_overwrites$deny$toSt","_overwrites$deny","_overwrites$allow$toS","_overwrites$allow","revDecDenies","reverse","revDecAllows","_revDecDenies$i","_revDecAllows$i","parseInt","_x9","_x0","permissionOverwritesValues","getRootAccessValue","getNames","_fetchMembersOrFail","results","spaceFail","roomFail","_x1","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","_event$location$space","emoticons","_ev$emoticon$spaceId","emoticon","_ev$spaceId","emoticonId","UsersManager","handleUsers","handleMembers","users","_getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","_options$ping","_options$ping2","_options$ping2$enable","_options$ping3","_options$ping3$noActi","_options$ping4","_options$ping4$pongBa","stateTracking","ping","enabled","noActivityTimeoutMs","pongBackTimeoutMs","_connect","_this$options$queryPa","_this$options$connect","params","isOpenWsState","isConnectingWsState","URLSearchParams","queryParams","token","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","_this$ws","sendQueue","close","_send","commandType","commandData","createEnvelope","createPromiseFromCommandEnvelope","sendEnvelope","_this$ws$readyState","_this$ws2","isReady","JSON","stringify","handleEnvelopeSendError","readyState","lastReceivedMessageAt","Date","now","parse","handleIncomingEnvelope","Event","isAuthenticated","startConnectionMonitor","connect","sendFromQueue","stopConnectionMonitor","clearTimeout","reconnect","code","disconnect","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","pingMonitorInterval","setInterval","inFlightPingTimeout","clearInterval","WebApiChatClientEvent","WebApiChatClient","attempts","lastTimeoutId","sendStack","makeApiCall","pending","destroy","_onMessage","response","json","onError","status","removeFromStack","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","query","fetch","method","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","AbstractRestClient","uri","additionalHeaders","getUrl","getAuthHeaders","convertFetchResponse","_this$options$url","removeEndingSlash","defaultUrl","removeStartingSlash","_convertFetchResponse","_result$headers$get","text","replace","FilesClient","_AbstractRestClient","_uploadFile","file","_name","encodeURIComponent","_getFileMeta","_getFileMetaBulk","searchParams","append"],"ignoreList":[],"sourceRoot":""}