polfan-server-js-client 0.2.58 → 0.2.59

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","mappings":"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","sources":["webpack://polfan-server-js-client/webpack/bootstrap","webpack://polfan-server-js-client/webpack/runtime/define property getters","webpack://polfan-server-js-client/webpack/runtime/hasOwnProperty shorthand","webpack://polfan-server-js-client/webpack/runtime/make namespace object","webpack://polfan-server-js-client/./src/EventTarget.ts","webpack://polfan-server-js-client/./src/AbstractChatClient.ts","webpack://polfan-server-js-client/./src/IndexedObjectCollection.ts","webpack://polfan-server-js-client/./src/state-tracker/AsyncUtils.ts","webpack://polfan-server-js-client/./src/state-tracker/TopicHistoryWindow.ts","webpack://polfan-server-js-client/./src/state-tracker/RoomMessagesHistory.ts","webpack://polfan-server-js-client/./src/state-tracker/MessagesManager.ts","webpack://polfan-server-js-client/./src/state-tracker/RoomsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/functions.ts","webpack://polfan-server-js-client/./src/state-tracker/SpacesManager.ts","webpack://polfan-server-js-client/./src/Permissions.ts","webpack://polfan-server-js-client/./src/state-tracker/PermissionsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/EmoticonsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/UsersManager.ts","webpack://polfan-server-js-client/./src/state-tracker/RelationshipsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/ChatStateTracker.ts","webpack://polfan-server-js-client/./src/WebSocketChatClient.ts","webpack://polfan-server-js-client/./src/WebApiChatClient.ts","webpack://polfan-server-js-client/./src/AbstractRestClient.ts","webpack://polfan-server-js-client/./src/AuthClient.ts","webpack://polfan-server-js-client/./src/FilesClient.ts","webpack://polfan-server-js-client/./src/index.ts"],"sourcesContent":["// 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;\r\ntype HandlersMap<EventT> = Map<string, EventHandler<EventT>[]>;\r\n\r\nexport interface ObservableInterface<EventT = any> {\r\n on(eventName: string, handler: EventHandler<EventT>): this;\r\n once(eventName: string, handler: EventHandler<EventT>): this;\r\n off(eventName: string, handler: EventHandler<EventT>): this;\r\n}\r\n\r\nexport class EventTarget<EventT = any> implements ObservableInterface<EventT> {\r\n protected events: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\r\n protected onceEvents: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\r\n\r\n public on(eventName: string, handler: EventHandler<EventT>): this {\r\n this.addHandler(this.events, eventName, handler);\r\n return this;\r\n }\r\n\r\n public once(eventName: string, handler: EventHandler<EventT>): this {\r\n this.addHandler(this.onceEvents, eventName, handler);\r\n return this;\r\n }\r\n\r\n public off(eventName: string, handler: EventHandler<EventT>): this {\r\n const index = this.events.get(eventName)?.indexOf(handler);\r\n if (!index || index < 0) {\r\n return this;\r\n }\r\n this.events.get(eventName).splice(index, 1);\r\n return this;\r\n }\r\n\r\n public emit(eventName: string, event?: EventT): this {\r\n this.callHandlers(this.events, eventName, event);\r\n this.callHandlers(this.onceEvents, eventName, event);\r\n this.onceEvents.delete(eventName);\r\n return this;\r\n }\r\n\r\n private addHandler(map: HandlersMap<EventT>, eventName: string, handler: EventHandler<EventT>): void {\r\n const handlers = map.get(eventName) ?? [];\r\n handlers.push(handler);\r\n map.set(eventName, handlers);\r\n }\r\n\r\n private callHandlers(map: HandlersMap<EventT>, eventName: string, event: EventT): void {\r\n map.get(eventName)?.forEach(callback => callback(event));\r\n }\r\n}","import {\r\n Bye,\r\n GetSession,\r\n JoinSpace,\r\n Session,\r\n SpaceJoined,\r\n Error as ErrorType,\r\n SpaceLeft,\r\n SpaceMemberJoined,\r\n SpaceMemberLeft,\r\n SpaceMemberUpdated,\r\n SpaceDeleted,\r\n SpaceMembers,\r\n SpaceRooms,\r\n NewRole,\r\n RoomDeleted,\r\n RoomJoined,\r\n RoomLeft,\r\n RoomMemberLeft,\r\n RoomMemberJoined,\r\n RoomMembers,\r\n NewRoom,\r\n NewTopic,\r\n TopicDeleted,\r\n NewMessage,\r\n GetPermissionOverwrites,\r\n GetComputedPermissions,\r\n LeaveSpace,\r\n CreateSpace,\r\n DeleteSpace,\r\n GetSpaceMembers,\r\n GetSpaceRooms,\r\n CreateRole,\r\n DeleteRole,\r\n AssignRole,\r\n DeassignRole,\r\n SetPermissionOverwrites,\r\n JoinRoom,\r\n LeaveRoom,\r\n CreateRoom,\r\n DeleteRoom,\r\n GetRoomMembers,\r\n CreateTopic,\r\n DeleteTopic,\r\n CreateMessage,\r\n Envelope,\r\n PermissionOverwrites,\r\n PermissionOverwritesUpdated,\r\n RoomMemberUpdated,\r\n UpdateRole,\r\n RoleUpdated,\r\n Ack,\r\n UserUpdated,\r\n UpdateRoom,\r\n RoomUpdated,\r\n UpdateSpace,\r\n SpaceUpdated,\r\n PermissionOverwriteTargets,\r\n GetPermissionOverwriteTargets,\r\n Owners,\r\n Ok,\r\n GetOwners,\r\n CreateOwner,\r\n RoleDeleted,\r\n FollowedTopicUpdated,\r\n TopicFollowed,\r\n TopicUnfollowed,\r\n FollowedTopics,\r\n FollowTopic,\r\n UnfollowTopic,\r\n GetFollowedTopics,\r\n Messages,\r\n GetMessages,\r\n Topics,\r\n GetTopics,\r\n TopicUpdated,\r\n UpdateTopic,\r\n GetDiscoverableSpaces,\r\n DiscoverableSpaces,\r\n CreateEmoticon,\r\n DeleteEmoticon,\r\n GetEmoticons,\r\n Emoticons,\r\n EmoticonDeleted,\r\n NewEmoticon,\r\n Bans,\r\n GetBans,\r\n Ban,\r\n Unban,\r\n Kick,\r\n ClientData,\r\n GetClientData,\r\n SetClientData,\r\n GetRoomSummary,\r\n GetSpaceSummary,\r\n RoomSummaryEvent,\r\n SpaceSummaryEvent,\r\n SetCustomNick,\r\n Relationships,\r\n RelationshipDeleted,\r\n NewRelationship,\r\n DeleteRelationship,\r\n CreateRelationship,\r\n RoomSummaryUpdated,\r\n} from \"./types/src/index\";\r\nimport {EventTarget} from \"./EventTarget\";\r\nimport {GetRelationships} from \"./types/src/schemes/commands/GetRelationships\";\r\n\r\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\r\n\r\nexport abstract class AbstractChatClient extends EventTarget {\r\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\r\n protected sentCounter: number = 0;\r\n\r\n public abstract send<CommandType extends keyof CommandsMap>\r\n (commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;\r\n\r\n public on<EventName extends keyof EventsMap>\r\n (eventName: EventName | string, handler: (event: EventsMap[EventName]) => void): this {\r\n return super.on(eventName, handler);\r\n }\r\n\r\n public once<EventName extends keyof EventsMap>\r\n (eventName: EventName, handler: (event: EventsMap[EventName]) => void): this {\r\n return super.once(eventName, handler);\r\n }\r\n\r\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\r\n return {\r\n type, data, ref: (++this.sentCounter).toString()\r\n };\r\n }\r\n\r\n protected createPromiseFromCommandEnvelope\r\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandsMap[CommandT][0]>):\r\n Promise<CommandResult<CommandsMap[CommandT][1]>> {\r\n return new Promise((...args) =>\r\n this.awaitingResponse.set(envelope.ref as string, args));\r\n }\r\n\r\n protected handleIncomingEnvelope(envelope: Envelope): void {\r\n if (!this.awaitingResponse.has(envelope.ref)) {\r\n return;\r\n }\r\n const isError = envelope.type === 'Error';\r\n this.awaitingResponse.get(envelope.ref)[0]({\r\n data: isError ? null : envelope.data,\r\n error: isError ? envelope.data : null,\r\n } as CommandResult<any>);\r\n this.awaitingResponse.delete(envelope.ref);\r\n }\r\n\r\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\r\n if (!this.awaitingResponse.has(envelope.ref)) {\r\n return;\r\n }\r\n this.awaitingResponse.get(envelope.ref)[1](error);\r\n this.awaitingResponse.delete(envelope.ref);\r\n }\r\n}\r\n\r\nexport type CommandResult<ResultT> = {data?: ResultT, error?: ErrorType};\r\n\r\n/**\r\n * Map of incoming events.\r\n */\r\nexport type EventsMap = {\r\n // General Events\r\n Bye: Bye,\r\n Ok: Ok,\r\n Error: ErrorType,\r\n Session: Session,\r\n Permissions: Permissions,\r\n PermissionOverwrites: PermissionOverwrites,\r\n PermissionOverwritesUpdated: PermissionOverwritesUpdated,\r\n PermissionOverwriteTargets: PermissionOverwriteTargets,\r\n Owners: Owners,\r\n NewEmoticon: NewEmoticon,\r\n EmoticonDeleted: EmoticonDeleted,\r\n Emoticons: Emoticons,\r\n Bans: Bans,\r\n ClientData: ClientData,\r\n NewRelationship: NewRelationship,\r\n RelationshipDeleted: RelationshipDeleted,\r\n Relationships: Relationships,\r\n // Space events\r\n DiscoverableSpaces: DiscoverableSpaces,\r\n SpaceJoined: SpaceJoined,\r\n SpaceLeft: SpaceLeft,\r\n SpaceMemberJoined: SpaceMemberJoined,\r\n SpaceMemberLeft: SpaceMemberLeft,\r\n SpaceMemberUpdated: SpaceMemberUpdated,\r\n SpaceUpdated: SpaceUpdated,\r\n SpaceDeleted: SpaceDeleted,\r\n SpaceMembers: SpaceMembers,\r\n SpaceRooms: SpaceRooms,\r\n NewRole: NewRole,\r\n RoleDeleted: RoleDeleted,\r\n RoleUpdated: RoleUpdated,\r\n SpaceSummaryEvent: SpaceSummaryEvent,\r\n // Room events\r\n RoomJoined: RoomJoined,\r\n RoomLeft: RoomLeft,\r\n RoomMemberJoined: RoomMemberJoined,\r\n RoomMemberLeft: RoomMemberLeft,\r\n RoomMemberUpdated: RoomMemberUpdated,\r\n RoomMembers: RoomMembers,\r\n NewRoom: NewRoom,\r\n RoomDeleted: RoomDeleted,\r\n RoomUpdated: RoomUpdated,\r\n RoomSummaryEvent: RoomSummaryEvent,\r\n RoomSummaryUpdated: RoomSummaryUpdated,\r\n // Topic events\r\n NewTopic: NewTopic,\r\n TopicDeleted: TopicDeleted,\r\n NewMessage: NewMessage,\r\n UserUpdated: UserUpdated,\r\n TopicFollowed: TopicFollowed,\r\n TopicUnfollowed: TopicUnfollowed,\r\n FollowedTopics: FollowedTopics,\r\n FollowedTopicUpdated: FollowedTopicUpdated,\r\n Messages: Messages,\r\n Topics: Topics,\r\n TopicUpdated: TopicUpdated,\r\n};\r\n\r\n/**\r\n * Map of commands and their corresponding events.\r\n */\r\nexport type CommandsMap = {\r\n // General commands\r\n GetSession: [GetSession, EventsMap['Session']],\r\n SetPermissionOverwrites: [SetPermissionOverwrites, EventsMap['PermissionOverwritesUpdated']],\r\n GetPermissionOverwrites: [GetPermissionOverwrites, EventsMap['PermissionOverwrites']],\r\n GetComputedPermissions: [GetComputedPermissions, EventsMap['Permissions']],\r\n GetPermissionOverwriteTargets: [GetPermissionOverwriteTargets, EventsMap['PermissionOverwriteTargets']],\r\n GetOwners: [GetOwners, EventsMap['Owners']],\r\n CreateOwner: [CreateOwner, EventsMap['Owners']],\r\n DeleteOwner: [CreateOwner, EventsMap['Owners']],\r\n CreateEmoticon: [CreateEmoticon, EventsMap['NewEmoticon']],\r\n DeleteEmoticon: [DeleteEmoticon, EventsMap['EmoticonDeleted']],\r\n GetEmoticons: [GetEmoticons, EventsMap['Emoticons']],\r\n GetBans: [GetBans, EventsMap['Bans']],\r\n Ban: [Ban, EventsMap['Ok']],\r\n Unban: [Unban, EventsMap['Ok']],\r\n Kick: [Kick, EventsMap['Ok']],\r\n GetClientData: [GetClientData, EventsMap['ClientData']],\r\n SetClientData: [SetClientData, EventsMap['Ok']],\r\n DeleteRelationship: [DeleteRelationship, EventsMap['RelationshipDeleted']],\r\n CreateRelationship: [CreateRelationship, EventsMap['NewRelationship']],\r\n GetRelationships: [GetRelationships, EventsMap['Relationships']],\r\n // Space commands\r\n GetDiscoverableSpaces: [GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']],\r\n JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],\r\n LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']],\r\n CreateSpace: [CreateSpace, EventsMap['SpaceJoined']],\r\n UpdateSpace: [UpdateSpace, EventsMap['SpaceUpdated']],\r\n DeleteSpace: [DeleteSpace, EventsMap['SpaceDeleted']],\r\n GetSpaceMembers: [GetSpaceMembers, EventsMap['SpaceMembers']],\r\n GetSpaceRooms: [GetSpaceRooms, EventsMap['SpaceRooms']],\r\n CreateRole: [CreateRole, EventsMap['NewRole']],\r\n DeleteRole: [DeleteRole, EventsMap['RoleDeleted']],\r\n UpdateRole: [UpdateRole, EventsMap['RoleUpdated']],\r\n AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\r\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\r\n GetSpaceSummary: [GetSpaceSummary, EventsMap['SpaceSummaryEvent']],\r\n SetCustomNick: [SetCustomNick, EventsMap['SpaceMemberUpdated']],\r\n // Room commands\r\n JoinRoom: [JoinRoom, EventsMap['RoomJoined']],\r\n LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],\r\n CreateRoom: [CreateRoom, EventsMap['RoomJoined']],\r\n DeleteRoom: [DeleteRoom, EventsMap['RoomDeleted']],\r\n UpdateRoom: [UpdateRoom, EventsMap['RoomUpdated']],\r\n GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],\r\n GetRoomSummary: [GetRoomSummary, EventsMap['RoomSummaryEvent']],\r\n // Topic commands\r\n CreateTopic: [CreateTopic, EventsMap['NewTopic']],\r\n DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],\r\n CreateMessage: [CreateMessage, EventsMap['NewMessage']],\r\n Ack: [Ack, EventsMap['FollowedTopicUpdated'] | EventsMap['Ok']],\r\n FollowTopic: [FollowTopic, EventsMap['TopicFollowed']],\r\n UnfollowTopic: [UnfollowTopic, EventsMap['TopicUnfollowed']],\r\n GetFollowedTopics: [GetFollowedTopics, EventsMap['FollowedTopics']],\r\n GetMessages: [GetMessages, EventsMap['Messages']],\r\n GetTopics: [GetTopics, EventsMap['Topics']],\r\n UpdateTopic: [UpdateTopic, EventsMap['TopicUpdated']],\r\n}","import {EventTarget, ObservableInterface} from \"./EventTarget\";\r\n\r\nexport class IndexedCollection<KeyT, ValueT> {\r\n protected _items: Map<KeyT, ValueT> = new Map();\r\n\r\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\r\n this.set(...items);\r\n }\r\n\r\n public get items(): Map<KeyT, ValueT> {\r\n return this._items;\r\n }\r\n\r\n public get length(): number {\r\n return this._items.size;\r\n }\r\n\r\n public set(...items: [KeyT, ValueT][]): void {\r\n for (const item of items) {\r\n this._items.set(item[0], item[1]);\r\n }\r\n }\r\n\r\n public get(id: KeyT): ValueT | undefined {\r\n return this.items.get(id);\r\n }\r\n\r\n public has(id: KeyT): boolean {\r\n return this.items.has(id);\r\n }\r\n\r\n public delete(...ids: KeyT[]): void {\r\n for (const id of ids) {\r\n this.items.delete(id);\r\n }\r\n }\r\n\r\n public deleteAll(): void {\r\n this.items.clear();\r\n }\r\n\r\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = null): IndexedCollection<KeyT, ValueT> {\r\n const result = new IndexedCollection<KeyT, ValueT>();\r\n let item;\r\n while (!(item = this.items.entries().next().value).done) {\r\n if (limit && result.length === limit) {\r\n break;\r\n }\r\n if (item[1][field] === valueToFind) {\r\n result.set(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public createMirror(): IndexedCollection<KeyT, ValueT> {\r\n const copy = new IndexedCollection<KeyT, ValueT>();\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n}\r\n\r\nexport class IndexedObjectCollection<T> {\r\n protected _items: IndexedCollection<string, T>;\r\n\r\n public constructor(\r\n public readonly id: keyof T | ((item: T) => any),\r\n items: T[] = [],\r\n ) {\r\n this._items = new IndexedCollection<string, T>();\r\n this.set(...items);\r\n }\r\n\r\n public get items(): T[] {\r\n return Array.from(this._items.items.values());\r\n }\r\n\r\n public get length(): number {\r\n return this._items.length;\r\n }\r\n\r\n public set(...items: T[]): void {\r\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\r\n }\r\n\r\n public get(id: any): T | undefined {\r\n return this._items.get(id);\r\n }\r\n\r\n public getAt(index: number): T | undefined {\r\n return this.items[index];\r\n }\r\n\r\n public has(id: any): boolean {\r\n return this._items.has(id);\r\n }\r\n\r\n public delete(...ids: any[]): void {\r\n this._items.delete(...ids);\r\n }\r\n\r\n public deleteAll(): void {\r\n this._items.deleteAll();\r\n }\r\n\r\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\r\n const result = new IndexedObjectCollection<T>(this.id);\r\n for (const value of this.items) {\r\n if (limit && result.length === limit) {\r\n break;\r\n }\r\n if (value[field] === valueToFind) {\r\n result.set(value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public createMirror(): IndexedObjectCollection<T> {\r\n const copy = new IndexedObjectCollection<T>(this.id);\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n\r\n protected getId(item: T): any {\r\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\r\n }\r\n}\r\n\r\ninterface ObservableCollectionEvent<KeyT> {\r\n setItems?: KeyT[],\r\n deletedItems?: KeyT[],\r\n}\r\n\r\nexport class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface {\r\n protected eventTarget: EventTarget<ObservableCollectionEvent<KeyT>>;\r\n\r\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\r\n super();\r\n this.eventTarget = new EventTarget<ObservableCollectionEvent<KeyT>>();\r\n this.set(...items);\r\n }\r\n\r\n public set(...items: [KeyT, ValueT][]) {\r\n if (items.length) {\r\n super.set(...items);\r\n this.eventTarget.emit('change', {setItems: items.map(item => item[0])});\r\n }\r\n }\r\n\r\n public delete(...ids: KeyT[]) {\r\n if (ids.length) {\r\n super.delete(...ids);\r\n this.eventTarget.emit('change', {deletedItems: ids});\r\n }\r\n }\r\n\r\n public deleteAll() {\r\n if (this.length) {\r\n const ids = this._items.keys();\r\n super.deleteAll();\r\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\r\n }\r\n }\r\n\r\n public createMirror(): ObservableIndexedCollection<KeyT, ValueT> {\r\n const copy = new ObservableIndexedCollection<KeyT, ValueT>();\r\n copy.eventTarget = this.eventTarget;\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n\r\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\r\n this.eventTarget.on(eventName, handler);\r\n return this;\r\n }\r\n\r\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\r\n this.eventTarget.once(eventName, handler);\r\n return this;\r\n }\r\n\r\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\r\n this.eventTarget.off(eventName, handler);\r\n return this;\r\n }\r\n}\r\n\r\nexport class ObservableIndexedObjectCollection<T> extends IndexedObjectCollection<T> implements ObservableInterface {\r\n protected eventTarget: EventTarget<ObservableCollectionEvent<string>>;\r\n\r\n public constructor(\r\n public readonly id: keyof T | ((item: T) => string),\r\n items: T[] = [],\r\n ) {\r\n super(id);\r\n this.eventTarget = new EventTarget();\r\n this.set(...items);\r\n }\r\n\r\n public set(...items: T[]) {\r\n if (items.length) {\r\n super.set(...items);\r\n this.eventTarget.emit('change', {setItems: items.map(item => this.getId(item))});\r\n }\r\n }\r\n\r\n public delete(...ids: string[]) {\r\n if (ids.length) {\r\n super.delete(...ids);\r\n this.eventTarget.emit('change', {deletedItems: ids});\r\n }\r\n }\r\n\r\n public deleteAll() {\r\n if (this.length) {\r\n const ids = this._items.items.keys();\r\n super.deleteAll();\r\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\r\n }\r\n }\r\n\r\n public createMirror(): IndexedObjectCollection<T> {\r\n const copy = new ObservableIndexedObjectCollection<T>(this.id);\r\n copy.eventTarget = this.eventTarget;\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n\r\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\r\n this.eventTarget.on(eventName, handler);\r\n return this;\r\n }\r\n\r\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\r\n this.eventTarget.once(eventName, handler);\r\n return this;\r\n }\r\n\r\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<string>) => void): this {\r\n this.eventTarget.off(eventName, handler);\r\n return this;\r\n }\r\n}","import {IndexedCollection} from \"../IndexedObjectCollection\";\r\n\r\nexport class DeferredTask {\r\n public readonly promise: Promise<void>;\r\n public resolve: () => void;\r\n\r\n public constructor() {\r\n this.promise = new Promise<void>((resolve) => this.resolve = resolve);\r\n }\r\n}\r\n\r\nexport class PromiseRegistry {\r\n private promises = new IndexedCollection<string, Promise<any>>();\r\n\r\n public register<T = any>(promise: Promise<T>, key: string): void {\r\n this.promises.set([key, promise]);\r\n }\r\n\r\n public registerByFunction(fn: () => Promise<any>, key: string): void {\r\n this.register(fn(), key);\r\n }\r\n\r\n public get<T = any>(key: string): Promise<T> | undefined {\r\n return this.promises.get(key);\r\n }\r\n\r\n public has(key: string): boolean {\r\n return this.promises.has(key);\r\n }\r\n\r\n public notExist(key: string): boolean {\r\n return ! this.has(key);\r\n }\r\n\r\n public forget(...keys: string[]): void {\r\n this.promises.delete(...keys);\r\n }\r\n\r\n public forgetAll(): void {\r\n this.promises.deleteAll();\r\n }\r\n}","import {Message, NewMessage, Session, Topic} from \"../types/src\";\r\nimport {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {IndexedObjectCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\n\r\nexport enum WindowState {\r\n /**\r\n * The latest messages (those received live) are available in the history window, history has not been fetched.\r\n */\r\n LIVE,\r\n\r\n /**\r\n * The latest messages has been fetched and are available in the history window.\r\n */\r\n LATEST,\r\n\r\n /**\r\n * The historical messages have been fetched and are available in the history window.\r\n * Latest messages are not available and will not be available.\r\n */\r\n PAST,\r\n\r\n /**\r\n * The oldest messages have been fetched and are available in the history window.\r\n * Next attempts to fetch previous messages will result with no-op.\r\n */\r\n OLDEST,\r\n}\r\n\r\nexport abstract class TraversableRemoteCollection<T> extends ObservableIndexedObjectCollection<T> {\r\n /**\r\n * Current mode od collection window. To change mode, call one of available fetch methods.\r\n */\r\n public get state(): WindowState {\r\n return this.internalState.current;\r\n }\r\n\r\n protected internalState: {\r\n current: WindowState,\r\n ongoing?: WindowState,\r\n limit: number | null,\r\n oldestId: string | null,\r\n } = {\r\n current: WindowState.LIVE,\r\n ongoing: undefined,\r\n limit: 50,\r\n oldestId: null,\r\n };\r\n\r\n /**\r\n * Maximum numer of items stored in window.\r\n * Null for unlimited.\r\n */\r\n public get limit(): number | null {\r\n return this.internalState.limit;\r\n }\r\n\r\n /**\r\n * Maximum numer of items stored in window.\r\n * Null for unlimited.\r\n */\r\n public set limit(value: number | null) {\r\n this.internalState.limit = value;\r\n }\r\n\r\n public get hasLatest(): boolean {\r\n return [WindowState.LATEST, WindowState.LIVE].includes(this.state);\r\n }\r\n\r\n public get hasOldest(): boolean {\r\n return this.state === WindowState.OLDEST || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);\r\n }\r\n\r\n public abstract createMirror(): IndexedObjectCollection<T>;\r\n\r\n public async resetToLatest(): Promise<void> {\r\n if (this.internalState.ongoing || this.internalState.current === WindowState.LATEST) {\r\n return;\r\n }\r\n\r\n this.internalState.ongoing = WindowState.LATEST;\r\n\r\n let result;\r\n\r\n try {\r\n result = await this.fetchLatestItems();\r\n } finally {\r\n this.internalState.ongoing = undefined;\r\n }\r\n\r\n this.deleteAll();\r\n this.addItems(result, 'tail');\r\n this.internalState.current = WindowState.LATEST;\r\n }\r\n\r\n public async fetchPrevious(): Promise<void> {\r\n if (this.internalState.ongoing || this.hasOldest) {\r\n return;\r\n }\r\n\r\n this.internalState.ongoing = WindowState.PAST;\r\n\r\n let result;\r\n\r\n try {\r\n result = await this.fetchItemsBefore();\r\n } finally {\r\n this.internalState.ongoing = undefined;\r\n }\r\n\r\n if (! result) {\r\n return this.resetToLatest();\r\n }\r\n\r\n if (! result.length) {\r\n const firstItem = this.getAt(0);\r\n this.internalState.oldestId = firstItem ? this.getId(firstItem) : null;\r\n\r\n await this.refreshFetchedState();\r\n\r\n // LATEST state has priority over OLDEST\r\n if (this.internalState.current === WindowState.PAST) {\r\n this.internalState.current = WindowState.OLDEST;\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.addItems(result, 'head');\r\n await this.refreshFetchedState();\r\n }\r\n\r\n public async fetchNext(): Promise<void> {\r\n if (this.internalState.ongoing || this.hasLatest) {\r\n return;\r\n }\r\n\r\n this.internalState.ongoing = WindowState.PAST;\r\n\r\n let result;\r\n\r\n try {\r\n result = await this.fetchItemsAfter();\r\n } finally {\r\n this.internalState.ongoing = undefined;\r\n }\r\n\r\n if (! result) {\r\n await this.resetToLatest();\r\n return;\r\n }\r\n\r\n if (result.length) {\r\n this.addItems(result, 'tail');\r\n await this.refreshFetchedState();\r\n return;\r\n }\r\n }\r\n\r\n protected abstract fetchLatestItems(): Promise<T[]>;\r\n\r\n protected abstract fetchItemsBefore(): Promise<T[] | null>;\r\n\r\n protected abstract fetchItemsAfter(): Promise<T[] | null>;\r\n\r\n protected abstract isLatestItemLoaded(): Promise<boolean>;\r\n\r\n protected async refreshFetchedState(): Promise<void> {\r\n this.internalState.current = (await this.isLatestItemLoaded()) ? WindowState.LATEST : WindowState.PAST;\r\n }\r\n\r\n protected addItems(newItems: T[], to: 'head' | 'tail'): void {\r\n let result;\r\n\r\n if (to === 'head') {\r\n result = this.trimItemsArrayToLimit([...newItems, ...this.items], 'tail');\r\n }\r\n\r\n if (to === 'tail') {\r\n result = this.trimItemsArrayToLimit([...this.items, ...newItems], 'head');\r\n }\r\n\r\n this.deleteAll();\r\n this.set(...result);\r\n }\r\n\r\n /**\r\n * Return array with messages of count that matching limit.\r\n */\r\n private trimItemsArrayToLimit(items: T[], from: 'head' | 'tail'): T[] {\r\n if (this.limit === null) {\r\n return items;\r\n }\r\n\r\n if (from === 'head') {\r\n return items.slice(-this.limit);\r\n }\r\n\r\n if (from === 'tail') {\r\n return items.slice(0, this.limit);\r\n }\r\n }\r\n}\r\n\r\nexport class TopicHistoryWindow extends TraversableRemoteCollection<Message> {\r\n /**\r\n * Reexported available window modes enum.\r\n */\r\n public readonly WindowState: typeof WindowState = WindowState;\r\n\r\n declare protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {\r\n traverseLock: boolean,\r\n };\r\n\r\n public constructor(\r\n private roomId: string,\r\n private topicId: string,\r\n private tracker: ChatStateTracker,\r\n bindEvents: boolean = true,\r\n ) {\r\n super('id');\r\n\r\n this.internalState.traverseLock = false;\r\n\r\n if (bindEvents) {\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\r\n }\r\n }\r\n\r\n public createMirror(): TopicHistoryWindow {\r\n const copy = new TopicHistoryWindow(this.roomId, this.topicId, this.tracker, false);\r\n copy.eventTarget = this.eventTarget;\r\n copy._items = this._items;\r\n copy.internalState = this.internalState;\r\n return copy;\r\n }\r\n\r\n public get isTraverseLocked(): boolean {\r\n return this.internalState.traverseLock;\r\n }\r\n\r\n public async setTraverseLock(lock: boolean): Promise<void> {\r\n this.internalState.traverseLock = lock;\r\n\r\n if (lock && (this.state !== WindowState.LIVE && this.state !== WindowState.LATEST)) {\r\n await super.resetToLatest();\r\n }\r\n }\r\n\r\n public async resetToLatest(): Promise<void> {\r\n if (this.internalState.traverseLock) {\r\n return;\r\n }\r\n return super.resetToLatest();\r\n }\r\n\r\n public async fetchNext(): Promise<void> {\r\n if (this.internalState.traverseLock) {\r\n return;\r\n }\r\n return super.fetchNext();\r\n }\r\n\r\n public async fetchPrevious(): Promise<void> {\r\n if (this.internalState.traverseLock) {\r\n return;\r\n }\r\n return super.fetchPrevious();\r\n }\r\n\r\n /**\r\n * For internal use.\r\n * @internal\r\n */\r\n public _updateMessageReference(refTopic: Topic): void {\r\n const refMessage = this.get(refTopic.refMessage.id);\r\n\r\n if (refMessage) {\r\n // Update referenced topic ID in message\r\n this.set({...refMessage, topicRef: refTopic.id});\r\n }\r\n }\r\n\r\n private async handleNewMessage(ev: NewMessage): Promise<void> {\r\n if (\r\n [WindowState.LATEST, WindowState.LIVE].includes(this.state)\r\n && ev.message.location.roomId === this.roomId\r\n && ev.message.location.topicId === this.topicId\r\n ) {\r\n this.addItems([ev.message], 'tail');\r\n }\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n const rooms = ev.state.rooms;\r\n\r\n if (rooms.find(room => room.id === this.roomId)) {\r\n void this.resetToLatest();\r\n } else {\r\n this.deleteAll();\r\n }\r\n }\r\n\r\n protected async fetchItemsAfter(): Promise<Message[] | null> {\r\n const afterId = this.getAt(this.length - 1)?.id;\r\n\r\n if (! afterId) {\r\n // If there is no message to refer, fetch latest\r\n return null;\r\n }\r\n\r\n const result = await this.tracker.client.send('GetMessages', {\r\n location: {roomId: this.roomId, topicId: this.topicId},\r\n after: afterId,\r\n });\r\n\r\n if (result.error) {\r\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\r\n }\r\n\r\n return result.data.messages;\r\n }\r\n\r\n protected async fetchItemsBefore(): Promise<Message[] | null> {\r\n const beforeId = this.getAt(0)?.id;\r\n\r\n if (! beforeId) {\r\n // If there is no message to refer, fetch latest\r\n return null;\r\n }\r\n\r\n const result = await this.tracker.client.send('GetMessages', {\r\n location: {roomId: this.roomId, topicId: this.topicId},\r\n before: beforeId,\r\n });\r\n\r\n if (result.error) {\r\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\r\n }\r\n\r\n return result.data.messages;\r\n }\r\n\r\n protected async fetchLatestItems(): Promise<Message[]> {\r\n const result = await this.tracker.client.send('GetMessages', {\r\n location: {roomId: this.roomId, topicId: this.topicId},\r\n });\r\n\r\n if (result.error) {\r\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\r\n }\r\n\r\n return result.data.messages;\r\n }\r\n\r\n private async getTopic(): Promise<Topic | undefined> {\r\n return (await this.tracker.rooms.getTopics(this.roomId, [this.topicId])).get(this.topicId);\r\n }\r\n\r\n private async getLatestMessageId(): Promise<string | undefined> {\r\n return (await this.getTopic())?.lastMessage?.id;\r\n }\r\n\r\n protected async isLatestItemLoaded(): Promise<boolean> {\r\n const lastMessageId = await this.getLatestMessageId();\r\n return lastMessageId ? this.has(lastMessageId) : true;\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {NewTopic, Room, RoomUpdated, Topic, TopicDeleted} from \"../types/src\";\r\nimport {IndexedCollection,} from \"../IndexedObjectCollection\";\r\nimport {TopicHistoryWindow} from \"./TopicHistoryWindow\";\r\n\r\nexport class RoomMessagesHistory {\r\n private historyWindows = new IndexedCollection<string, TopicHistoryWindow>();\r\n private traverseLock: boolean = false;\r\n\r\n public constructor(\r\n private room: Room,\r\n private tracker: ChatStateTracker,\r\n ) {\r\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\r\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n\r\n this.updateTraverseLock(this.room);\r\n\r\n if (this.room.defaultTopic) {\r\n this.createHistoryWindowForTopic(this.room.defaultTopic);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a history window object for the given topic ID, allowing you to view message history.\r\n */\r\n public async getMessagesWindow(topicId: string): Promise<TopicHistoryWindow | undefined> {\r\n let historyWindow = this.historyWindows.get(topicId);\r\n\r\n if (!historyWindow) {\r\n const topic = (await this.tracker.rooms.getTopics(this.room.id, [topicId])).get(topicId);\r\n\r\n if (topic) {\r\n this.createHistoryWindowForTopic(topic);\r\n }\r\n }\r\n\r\n return this.historyWindows.get(topicId);\r\n }\r\n\r\n private async handleRoomUpdated(ev: RoomUpdated): Promise<void> {\r\n if (this.room.id === ev.room.id) {\r\n this.room = ev.room;\r\n\r\n this.updateTraverseLock(ev.room);\r\n\r\n if (ev.room.defaultTopic) {\r\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\r\n }\r\n\r\n for (const [, window] of Array.from(this.historyWindows.items)) {\r\n await window.setTraverseLock(this.traverseLock);\r\n }\r\n }\r\n }\r\n\r\n private handleNewTopic(ev: NewTopic): void {\r\n if (this.room.id === ev.roomId) {\r\n this.createHistoryWindowForTopic(ev.topic);\r\n }\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n if (this.room.id === ev.location.roomId) {\r\n this.historyWindows.delete(ev.location.topicId);\r\n }\r\n }\r\n\r\n private createHistoryWindowForTopic(topic: Topic): void {\r\n if (this.historyWindows.has(topic.id)) {\r\n return;\r\n }\r\n\r\n const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);\r\n\r\n historyWindow.setTraverseLock(this.traverseLock);\r\n\r\n this.historyWindows.set([topic.id, historyWindow]);\r\n\r\n // If new topic refers to some message from this room, update other structures\r\n if (topic.refMessage) {\r\n const refHistoryWindow = this.historyWindows.get(topic.refMessage.location.topicId);\r\n refHistoryWindow?._updateMessageReference(topic);\r\n }\r\n }\r\n\r\n private updateTraverseLock(room: Room): void {\r\n this.traverseLock = room.history.mode === 'Ephemeral';\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n ChatLocation,\r\n NewMessage,\r\n FollowedTopic,\r\n TopicFollowed,\r\n TopicUnfollowed,\r\n RoomDeleted,\r\n RoomLeft,\r\n TopicDeleted,\r\n FollowedTopicUpdated, RoomJoined, NewTopic, Session, Room, MessageType,\r\n} from \"../types/src\";\r\nimport {\r\n IndexedCollection,\r\n ObservableIndexedObjectCollection\r\n} from \"../IndexedObjectCollection\";\r\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\r\nimport {RoomMessagesHistory} from \"./RoomMessagesHistory\";\r\n\r\nexport class MessagesManager {\r\n private readonly roomHistories = new IndexedCollection<string, RoomMessagesHistory>();\r\n private readonly followedTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<FollowedTopic>>();\r\n private readonly followedTopicsPromises = new PromiseRegistry();\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\r\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\r\n this.tracker.client.on('FollowedTopicUpdated', ev => this.handleFollowedTopicUpdated(ev));\r\n this.tracker.client.on('TopicFollowed', ev => this.handleTopicFollowed(ev));\r\n this.tracker.client.on('TopicUnfollowed', ev => this.handleTopicUnfollowed(ev));\r\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n }\r\n\r\n /**\r\n * Get history manager for given room ID.\r\n */\r\n public async getRoomHistory(roomId: string): Promise<RoomMessagesHistory | undefined> {\r\n await this.deferredSession.promise;\r\n return this.roomHistories.get(roomId);\r\n }\r\n\r\n /**\r\n * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.\r\n * Then you can get them using getRoomFollowedTopics().\r\n * @see getRoomFollowedTopics\r\n */\r\n public async cacheSpaceFollowedTopics(spaceId: string | null): Promise<void> {\r\n if (spaceId && ! (await this.tracker.spaces.get()).has(spaceId)) {\r\n throw new Error(`You are not in space ${spaceId}`);\r\n }\r\n\r\n const roomIds = (await this.tracker.rooms.get()).findBy('spaceId', spaceId).items.map(room => room.id);\r\n\r\n if (! roomIds.length) {\r\n // We don't need to ping server for followed topics for this space, if user has no joined rooms\r\n return;\r\n }\r\n\r\n const resultPromise = this.tracker.client.send('GetFollowedTopics', {location: {spaceId}});\r\n\r\n roomIds.forEach(roomId => this.followedTopicsPromises.register(resultPromise, roomId));\r\n\r\n const result = await resultPromise;\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.setFollowedTopicsArray(roomIds, result.data.followedTopics);\r\n }\r\n\r\n /**\r\n * Get followed topics for the given room.\r\n * @return Undefined if you are not in the room, collection otherwise.\r\n */\r\n public async getRoomFollowedTopics(roomId: string): Promise<ObservableIndexedObjectCollection<FollowedTopic> | undefined> {\r\n if (! (await this.tracker.rooms.get()).has(roomId)) {\r\n return undefined;\r\n }\r\n\r\n if (! this.followedTopics.has(roomId)) {\r\n if (this.followedTopicsPromises.notExist(roomId)) {\r\n this.followedTopicsPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {roomId}});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.setFollowedTopicsArray([roomId], result.data.followedTopics);\r\n }, roomId);\r\n }\r\n\r\n await this.followedTopicsPromises.get(roomId);\r\n }\r\n\r\n return this.followedTopics.get(roomId);\r\n }\r\n\r\n /**\r\n * Batch acknowledge all missed messages from any topics in given room.\r\n */\r\n public async ackRoomFollowedTopics(roomId: string): Promise<void> {\r\n const collection = await this.getRoomFollowedTopics(roomId);\r\n\r\n if (! collection) {\r\n return;\r\n }\r\n\r\n for (const followedTopic of collection.items) {\r\n if (followedTopic.missed) {\r\n await this.tracker.client.send('Ack', {location: followedTopic.location});\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculate missed messages from any topic in given room.\r\n * @return Undefined if you are not in room.\r\n */\r\n public async calculateRoomMissedMessages(roomId: string): Promise<number | undefined> {\r\n const collection = await this.getRoomFollowedTopics(roomId);\r\n\r\n if (collection) {\r\n return collection.items.reduce(\r\n (previousValue, currentValue) => previousValue + (currentValue.missed ?? 0),\r\n 0,\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * For internal use. If you want to delete the message, execute a proper command on client object.\r\n * @internal\r\n */\r\n public _deleteByTopicIds(roomId: string, ...topicIds: string[]): void {\r\n this.followedTopics.get(roomId)?.delete(...topicIds);\r\n }\r\n\r\n private createHistoryForNewRoom(room: Room): void {\r\n this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);\r\n }\r\n\r\n private handleNewMessage(ev: NewMessage): void {\r\n this.updateLocallyFollowedTopicOnNewMessage(ev);\r\n }\r\n\r\n private handleFollowedTopicUpdated(ev: FollowedTopicUpdated): void {\r\n this.followedTopics.get(ev.followedTopic.location.roomId)?.set(ev.followedTopic);\r\n }\r\n\r\n private handleTopicFollowed(ev: TopicFollowed): void {\r\n this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);\r\n }\r\n\r\n private handleTopicUnfollowed(ev: TopicUnfollowed): void {\r\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\r\n }\r\n\r\n private handleRoomDeleted(ev: RoomDeleted): void {\r\n this.roomHistories.delete(ev.id);\r\n this.clearRoomFollowedTopicsStructures(ev.id);\r\n }\r\n\r\n private handleRoomJoin(ev: RoomJoined): void {\r\n this.createHistoryForNewRoom(ev.room)\r\n this.clearRoomFollowedTopicsStructures(ev.room.id);\r\n }\r\n\r\n private handleRoomLeft(ev: RoomLeft): void {\r\n this.roomHistories.delete(ev.id);\r\n this.clearRoomFollowedTopicsStructures(ev.id);\r\n }\r\n\r\n private async handleNewTopic(ev: NewTopic): Promise<void> {\r\n if (this.followedTopics.has(ev.roomId)) {\r\n // Check if the new topic is followed by user\r\n // only if client asked for followed topics list before for this room\r\n const result = await this.tracker.client.send(\r\n 'GetFollowedTopics',\r\n {location: {roomId: ev.roomId, topicId: ev.topic.id}},\r\n );\r\n const followedTopic = result.data.followedTopics[0];\r\n if (followedTopic) {\r\n this.followedTopics.get(ev.roomId).set(followedTopic);\r\n }\r\n }\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.followedTopics.deleteAll();\r\n this.followedTopicsPromises.forgetAll();\r\n this.roomHistories.deleteAll();\r\n ev.state.rooms.forEach(room => this.createHistoryForNewRoom(room));\r\n this.deferredSession.resolve();\r\n }\r\n\r\n private updateLocallyFollowedTopicOnNewMessage(ev: NewMessage): void {\r\n const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);\r\n const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);\r\n\r\n if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {\r\n // Skip if we don't follow this room or targeted topic or the message is ephemeral\r\n return;\r\n }\r\n\r\n const isMe = ev.message.author.user.id === this.tracker.me?.id;\r\n\r\n let update: Partial<FollowedTopic>;\r\n\r\n if (isMe) {\r\n // Reset missed messages count if new message is authored by me\r\n update = {missed: 0, lastAckMessageId: ev.message.id};\r\n } else {\r\n // ...add 1 otherwise\r\n update = {missed: followedTopic.missed === null ? null : followedTopic.missed + 1};\r\n }\r\n\r\n roomFollowedTopics.set({...followedTopic, ...update});\r\n }\r\n\r\n private setFollowedTopicsArray(roomIds: string[], followedTopics: FollowedTopic[]): void {\r\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\r\n\r\n // Reassign followed topics to limit collection change event emit\r\n followedTopics.forEach(followedTopic => {\r\n roomToTopics[followedTopic.location.roomId] ??= [];\r\n roomToTopics[followedTopic.location.roomId].push(followedTopic);\r\n });\r\n\r\n roomIds.forEach(roomId => {\r\n if (! this.followedTopics.has(roomId)) {\r\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\r\n followedTopic => followedTopic.location.topicId\r\n )]);\r\n }\r\n\r\n if (roomToTopics[roomId]) {\r\n this.followedTopics.get(roomId).set(...roomToTopics[roomId]);\r\n }\r\n });\r\n }\r\n\r\n private clearRoomFollowedTopicsStructures(roomId: string): void {\r\n this.followedTopics.delete(roomId);\r\n this.followedTopicsPromises.forget(roomId);\r\n }\r\n}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\nimport {\r\n NewMessage,\r\n NewTopic,\r\n Room, RoomDeleted,\r\n RoomJoined, RoomLeft,\r\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\r\n RoomMemberUpdated, RoomUpdated, Session, SpaceDeleted, SpaceLeft, SpaceMemberLeft,\r\n SpaceMemberUpdated,\r\n Topic,\r\n TopicDeleted, TopicUpdated,\r\n UserUpdated,\r\n} from \"../types/src\";\r\nimport {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\r\nimport {MessagesManager} from \"./MessagesManager\";\r\n\r\nexport class RoomsManager {\r\n public readonly messages: MessagesManager;\r\n\r\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\r\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\r\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\r\n private readonly deferredSession = new DeferredTask();\r\n private readonly membersPromises = new PromiseRegistry();\r\n private readonly topicsPromises = new PromiseRegistry();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n this.messages = new MessagesManager(tracker);\r\n\r\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\r\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\r\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\r\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('TopicUpdated', ev => this.handleTopicUpdated(ev));\r\n this.tracker.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\r\n this.tracker.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\r\n this.tracker.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\r\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\r\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n }\r\n\r\n /**\r\n * Get collection of room members.\r\n */\r\n public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {\r\n if (this.membersPromises.notExist(roomId)) {\r\n this.membersPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleRoomMembers(result.data);\r\n }, roomId);\r\n }\r\n\r\n await this.membersPromises.get(roomId);\r\n return this.members.get(roomId);\r\n }\r\n\r\n /**\r\n * Get a room member representing the current user.\r\n */\r\n public async getMe(roomId: string): Promise<RoomMember | undefined> {\r\n const userId = (await this.tracker.getMe()).id;\r\n\r\n if (! this.list.has(roomId)) {\r\n // User is not in passed room.\r\n return undefined;\r\n }\r\n\r\n const members = await this.getMembers(roomId);\r\n return members?.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);\r\n }\r\n\r\n /**\r\n * Get collection of all the rooms you are in.\r\n */\r\n public async get(): Promise<ObservableIndexedObjectCollection<Room>> {\r\n await this.deferredSession.promise;\r\n return this.list;\r\n }\r\n\r\n /**\r\n * Get a collection of locally cached Topic objects for given room.\r\n * You can pass topic ids as second argument, to try to fetch them from the server.\r\n */\r\n public async getTopics(roomId: string, tryToFetchTopicIds?: string[]): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\r\n await this.deferredSession.promise;\r\n\r\n if (tryToFetchTopicIds?.length) {\r\n // Topic can be fetched if it isn't already cached and fetch is not already in progress\r\n const canFetch = (topicId: string) => ! this.topics.get(roomId)?.has(topicId) && ! this.topicsPromises.has(roomId + topicId);\r\n const idsToFetch = tryToFetchTopicIds.filter(canFetch);\r\n\r\n if (idsToFetch.length) {\r\n const promise = this.tracker\r\n .client\r\n .send('GetTopics', {roomId, topicIds: idsToFetch})\r\n .then(result => this.topics.get(result.data.location.roomId)?.set(...result.data.topics));\r\n\r\n idsToFetch.forEach(topicId => this.topicsPromises.register(promise, roomId + topicId));\r\n }\r\n\r\n for (const topicId of tryToFetchTopicIds) {\r\n await this.topicsPromises.get(roomId + topicId);\r\n }\r\n }\r\n\r\n return this.topics.get(roomId);\r\n }\r\n\r\n private deleteRoom(...roomIds: string[]): void {\r\n this.list.delete(...roomIds);\r\n this.members.delete(...roomIds);\r\n this.membersPromises.forget(...roomIds);\r\n\r\n for (const roomId of roomIds) {\r\n const topicIds: string[] = this.topics.get(roomId)?.items.map(topic => topic.id) ?? [];\r\n this.messages._deleteByTopicIds(roomId, ...topicIds);\r\n }\r\n\r\n this.topics.delete(...roomIds);\r\n }\r\n\r\n private deleteRoomsBySpaceId(spaceId: string): void {\r\n this.deleteRoom(\r\n ...this.list.findBy('spaceId', spaceId).items.map(room => room.id)\r\n );\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\r\n // Update members of rooms related to this space\r\n for (const room of this.list.findBy('spaceId', ev.spaceId).items) {\r\n const roomMembers = this.members.get(room.id);\r\n\r\n if (! roomMembers || ! roomMembers.has(ev.userId)) {\r\n // Skip update if member list for this room is not loaded\r\n // or user is not in room\r\n continue;\r\n }\r\n\r\n const roomMember = roomMembers.get(ev.userId);\r\n const user = roomMember.spaceMember.user;\r\n\r\n // Update space member but first fill user object (it's null in event object)\r\n roomMember.spaceMember = {...ev.member, user};\r\n roomMembers.set(roomMember);\r\n }\r\n }\r\n\r\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\r\n this.list\r\n .findBy('spaceId', ev.spaceId).items\r\n .forEach(room => this.members.get(room.id)?.delete(ev.userId));\r\n }\r\n\r\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\r\n if (! this.members.has(ev.roomId)) {\r\n // We do not track member list for this room.\r\n return;\r\n }\r\n\r\n const members = this.members.get(ev.roomId);\r\n const member = members.get(ev.userId);\r\n const newMember = ev.member;\r\n const user = member.spaceMember?.user ?? member.user;\r\n\r\n // Preserving user object, because it's not included in event\r\n if (newMember.spaceMember) {\r\n newMember.spaceMember.user = user;\r\n } else {\r\n newMember.user = user;\r\n }\r\n\r\n members.set(newMember);\r\n }\r\n\r\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\r\n this.deleteRoomsBySpaceId(ev.id);\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n const collection = this.topics.get(ev.location.roomId);\r\n collection.delete(ev.location.topicId);\r\n\r\n const room = this.list.get(ev.location.roomId);\r\n if (room.defaultTopic?.id === ev.location.topicId) {\r\n this.list.set({...room, defaultTopic: null});\r\n }\r\n }\r\n\r\n private handleNewTopic(ev: NewTopic): void {\r\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\r\n }\r\n\r\n private addJoinedRoomTopics(roomId: string, ...topics: Topic[]): void {\r\n if (this.topics.has(roomId)) {\r\n this.topics.get(roomId).set(...topics);\r\n } else {\r\n this.topics.set([roomId, new ObservableIndexedObjectCollection<Topic>('id', topics)]);\r\n }\r\n }\r\n\r\n private handleRoomJoined(ev: RoomJoined): void {\r\n this.addJoinedRooms(ev.room);\r\n }\r\n\r\n private handleRoomUpdated(ev: RoomUpdated): void {\r\n if (this.list.has(ev.room.id)) {\r\n this.list.set(ev.room);\r\n }\r\n }\r\n\r\n private handleRoomDeleted(ev: RoomDeleted): void {\r\n this.deleteRoom(ev.id);\r\n }\r\n\r\n private handleTopicUpdated(ev: TopicUpdated): void {\r\n const room = this.list.get(ev.location.roomId);\r\n\r\n if (this.topics.get(ev.location.roomId)?.has(ev.topic.id)) {\r\n this.topics.get(ev.location.roomId).set(ev.topic);\r\n }\r\n\r\n if (room.defaultTopic.id === ev.topic.id) {\r\n room.defaultTopic = ev.topic;\r\n this.list.set(room);\r\n }\r\n }\r\n\r\n private addJoinedRooms(...rooms: Room[]): void {\r\n for (const room of rooms) {\r\n if (room.defaultTopic) {\r\n this.addJoinedRoomTopics(room.id, room.defaultTopic);\r\n }\r\n\r\n if (room.type === 'Pm' && room.recipients) {\r\n // Treat PM recipients as normal room members.\r\n // We are registering fake promise in `memberPromises`\r\n // because GetMembers are not supported for PM rooms.\r\n this.handleRoomMembers({\r\n id: room.id,\r\n members: room.recipients.map(user => ({user, spaceMember: null, roles: null})),\r\n });\r\n this.membersPromises.register(Promise.resolve(), room.id);\r\n }\r\n }\r\n this.list.set(...rooms);\r\n }\r\n\r\n private handleRoomLeft(ev: RoomLeft): void {\r\n this.deleteRoom(ev.id);\r\n }\r\n\r\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\r\n if (this.members.has(ev.roomId)) {\r\n this.members.get(ev.roomId).set(ev.member);\r\n }\r\n }\r\n\r\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\r\n if (this.members.has(ev.roomId)) {\r\n this.members.get(ev.roomId).delete(ev.userId);\r\n }\r\n }\r\n\r\n private handleRoomMembers(ev: RoomMembers): void {\r\n if (! this.members.has(ev.id)) {\r\n this.members.set([\r\n ev.id,\r\n new ObservableIndexedObjectCollection(\r\n member => member.user?.id ?? member.spaceMember.user.id,\r\n ev.members,\r\n )\r\n ]);\r\n }\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.list.deleteAll();\r\n this.topics.deleteAll();\r\n this.topicsPromises.forgetAll();\r\n this.members.deleteAll();\r\n this.membersPromises.forgetAll();\r\n\r\n this.addJoinedRooms(...ev.state.rooms);\r\n\r\n this.deferredSession.resolve();\r\n }\r\n\r\n private handleUserUpdated(ev: UserUpdated): void {\r\n // Update room members users\r\n this.members.items.forEach((members) => {\r\n const member = members.get(ev.user.id);\r\n\r\n if (! member) {\r\n // Skip room; updated user is not here\r\n return;\r\n }\r\n\r\n const newMember: RoomMember = {...member};\r\n\r\n if (member.user) {\r\n newMember.user = ev.user;\r\n } else {\r\n newMember.spaceMember.user = ev.user;\r\n }\r\n\r\n members.set(newMember);\r\n });\r\n\r\n // Update recipients users\r\n const newRooms: Room[] = [];\r\n this.list.items.forEach(room => {\r\n if (room.recipients?.some(user => user.id === ev.user.id)) {\r\n room.recipients = room.recipients.map(user => user.id === ev.user.id ? ev.user : user);\r\n newRooms.push({...room});\r\n }\r\n });\r\n this.list.set(...newRooms);\r\n }\r\n\r\n private handleNewMessage(ev: NewMessage): void {\r\n const topics = this.topics.get(ev.message.location.roomId);\r\n const topic = topics?.get(ev.message.location.topicId);\r\n\r\n if (!topic) {\r\n return; // No topic found, nothing to update\r\n }\r\n\r\n const newTopic = {\r\n ...topic,\r\n messageCount: topic.messageCount + 1,\r\n lastMessage: ev.message,\r\n };\r\n\r\n topics.set(newTopic);\r\n const room = this.list.get(ev.message.location.roomId);\r\n\r\n if (room.defaultTopic?.id === ev.message.location.topicId) {\r\n this.list.set({ ...room, defaultTopic: newTopic });\r\n }\r\n }\r\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\";\r\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\nimport {\r\n NewRole,\r\n NewRoom,\r\n Role,\r\n RoleDeleted,\r\n RoleUpdated,\r\n RoomDeleted,\r\n RoomSummary,\r\n RoomSummaryUpdated,\r\n RoomUpdated,\r\n Session,\r\n Space,\r\n SpaceDeleted,\r\n SpaceJoined,\r\n SpaceLeft,\r\n SpaceMember,\r\n SpaceMemberJoined,\r\n SpaceMemberLeft,\r\n SpaceMembers,\r\n SpaceMemberUpdated,\r\n SpaceRooms,\r\n SpaceUpdated,\r\n UserUpdated\r\n} from \"../types/src\";\r\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\r\nimport {reorderRolesOnPriorityUpdate} from \"./functions\";\r\n\r\nexport class SpacesManager {\r\n private readonly list = new ObservableIndexedObjectCollection<Space>('id');\r\n private readonly roles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\r\n private readonly rooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\r\n private readonly roomIdToSpaceId = new IndexedCollection<string, string>();\r\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\r\n private readonly deferredSession = new DeferredTask();\r\n private readonly roomsPromises = new PromiseRegistry();\r\n private readonly membersPromises = new PromiseRegistry();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n this.tracker.client.on('NewRoom', ev => this.handleNewRoom(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceUpdated', ev => this.handleSpaceUpdated(ev));\r\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\r\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\r\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\r\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\r\n this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\r\n this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));\r\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\r\n this.tracker.client.on('RoleUpdated', ev => this.handleRoleUpdated(ev));\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n }\r\n\r\n /**\r\n * Get collection of all the spaces you are in.\r\n */\r\n public async get(): Promise<ObservableIndexedObjectCollection<Space>> {\r\n await this.deferredSession.promise;\r\n return this.list;\r\n }\r\n\r\n /**\r\n * Get collection of space roles.\r\n */\r\n public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {\r\n await this.deferredSession.promise;\r\n return this.roles.get(spaceId);\r\n }\r\n\r\n /**\r\n * Get collection of the all available rooms inside given space.\r\n */\r\n public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {\r\n if (this.roomsPromises.notExist(spaceId)) {\r\n this.roomsPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleSpaceRooms(result.data);\r\n }, spaceId);\r\n }\r\n\r\n await this.roomsPromises.get(spaceId);\r\n return this.rooms.get(spaceId);\r\n }\r\n\r\n /**\r\n * Get collection of space members.\r\n */\r\n public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {\r\n if (this.membersPromises.notExist(spaceId)) {\r\n this.membersPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleSpaceMembers(result.data);\r\n }, spaceId);\r\n }\r\n\r\n await this.membersPromises.get(spaceId);\r\n return this.members.get(spaceId);\r\n }\r\n\r\n /**\r\n * Get a space member representing the current user.\r\n */\r\n public async getMe(spaceId: string): Promise<SpaceMember | undefined> {\r\n const userId = (await this.tracker.getMe()).id;\r\n\r\n if (! this.list.has(spaceId)) {\r\n // User is not in passed space.\r\n return undefined;\r\n }\r\n\r\n const members = await this.getMembers(spaceId);\r\n return members?.items.find(member => member.user.id === userId);\r\n }\r\n\r\n private handleNewRole(ev: NewRole): void {\r\n const collection = this.roles.get(ev.spaceId);\r\n collection.set(ev.role);\r\n this.list.get(ev.spaceId).roles = collection.items;\r\n }\r\n\r\n private handleNewRoom(ev: NewRoom): void {\r\n this.rooms.get(ev.spaceId)?.set(ev.summary);\r\n this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);\r\n }\r\n\r\n private handleRoomUpdated(ev: RoomUpdated): void {\r\n if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {\r\n const rooms = this.rooms.get(ev.room.spaceId);\r\n rooms.set({\r\n ...rooms.get(ev.room.id),\r\n name: ev.room.name,\r\n description: ev.room.description,\r\n } as RoomSummary);\r\n }\r\n }\r\n\r\n private async handleRoomDeleted(ev: RoomDeleted): Promise<void> {\r\n const spaceId = this.roomIdToSpaceId.get(ev.id);\r\n this.roomIdToSpaceId.delete(ev.id);\r\n\r\n if (! spaceId) {\r\n return;\r\n }\r\n\r\n const space = this.list.get(spaceId);\r\n let spaceChanged = false;\r\n\r\n this.rooms.get(spaceId)?.delete(ev.id);\r\n\r\n if (space.systemRoom === ev.id) {\r\n space.systemRoom = null;\r\n spaceChanged = true;\r\n }\r\n\r\n if (space.defaultRooms.includes(ev.id)) {\r\n space.defaultRooms = space.defaultRooms.filter(roomId => roomId !== ev.id);\r\n spaceChanged = true;\r\n }\r\n\r\n if (spaceChanged) {\r\n this.list.set(space);\r\n }\r\n }\r\n\r\n private handleRoleDeleted(ev: RoleDeleted): void {\r\n const collection = this.roles.get(ev.spaceId);\r\n collection.delete(ev.id);\r\n this.list.get(ev.spaceId).roles = collection.items;\r\n }\r\n\r\n private handleSpaceUpdated(ev: SpaceUpdated): void {\r\n this.list.set(ev.space);\r\n }\r\n\r\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\r\n const roomIds = this.rooms.get(ev.id)?.items.map(item => item.id) ?? [];\r\n this.roomIdToSpaceId.delete(...roomIds);\r\n\r\n this.roles.delete(ev.id);\r\n this.members.delete(ev.id);\r\n this.membersPromises.forget(ev.id);\r\n this.rooms.delete(ev.id);\r\n this.roomsPromises.forget(ev.id);\r\n this.list.delete(ev.id);\r\n }\r\n\r\n private handleSpaceJoined(ev: SpaceJoined): void {\r\n this.addJoinedSpaces(ev.space);\r\n }\r\n\r\n private addJoinedSpaces(...spaces: Space[]): void {\r\n this.roles.set(...(spaces.map(space => [\r\n space.id,\r\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\r\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\r\n this.list.set(...spaces);\r\n }\r\n\r\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\r\n if (this.members.has(ev.spaceId)) {\r\n this.members.get(ev.spaceId).set(ev.member);\r\n }\r\n }\r\n\r\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\r\n if (this.members.has(ev.spaceId)) {\r\n this.members.get(ev.spaceId).delete(ev.userId);\r\n }\r\n }\r\n\r\n private handleSpaceMembers(ev: SpaceMembers): void {\r\n if (! this.members.has(ev.id)) {\r\n this.members.set([\r\n ev.id,\r\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\r\n ]);\r\n }\r\n }\r\n\r\n private handleSpaceRooms(ev: SpaceRooms): void {\r\n if (!this.rooms.has(ev.id)) {\r\n this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\r\n ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));\r\n }\r\n }\r\n\r\n private async handleRoomSummaryUpdated(ev: RoomSummaryUpdated): Promise<void> {\r\n const spaceId = this.roomIdToSpaceId.get(ev.summary.id);\r\n const summariesPromise = this.roomsPromises.get(spaceId);\r\n\r\n /**\r\n * Update summary only if the list was already loaded.\r\n * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.\r\n */\r\n if (spaceId && summariesPromise) {\r\n await summariesPromise;\r\n\r\n const summaries = this.rooms.get(spaceId);\r\n const oldSummary = summaries.get(ev.summary.id);\r\n let newSummary: RoomSummary;\r\n\r\n if (oldSummary) {\r\n newSummary = {...oldSummary, ...ev.summary};\r\n } else {\r\n newSummary = ev.summary;\r\n }\r\n\r\n summaries.set(newSummary);\r\n }\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\r\n if (this.members.has(ev.spaceId)) {\r\n const members = this.members.get(ev.spaceId);\r\n const member = members.get(ev.userId);\r\n members.set({...ev.member, user: member.user});\r\n }\r\n }\r\n\r\n private handleRoleUpdated(ev: RoleUpdated): void {\r\n const roles = this.roles.get(ev.spaceId);\r\n const oldRole = roles.get(ev.role.id);\r\n const newRole = ev.role;\r\n const rolesToUpdate = [newRole];\r\n\r\n if (oldRole.priority !== newRole.priority) {\r\n rolesToUpdate.push(\r\n ...reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)\r\n );\r\n }\r\n\r\n this.roles.get(ev.spaceId).set(...rolesToUpdate);\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.list.deleteAll();\r\n this.roles.deleteAll();\r\n this.rooms.deleteAll();\r\n this.roomsPromises.forgetAll();\r\n this.members.deleteAll();\r\n this.membersPromises.forgetAll();\r\n this.roomIdToSpaceId.deleteAll();\r\n\r\n this.addJoinedSpaces(...ev.state.spaces);\r\n\r\n this.deferredSession.resolve();\r\n }\r\n\r\n private handleUserUpdated(ev: UserUpdated): void {\r\n this.members.items.forEach((members) => {\r\n const member = members.get(ev.user.id);\r\n\r\n if (! member) {\r\n // Skip space; updated user is not here\r\n return;\r\n }\r\n\r\n members.set({...member, user: ev.user});\r\n });\r\n }\r\n}","export enum Layer {\r\n Global,\r\n Space,\r\n Room,\r\n Topic,\r\n}\r\n\r\nexport class PermissionDefinition {\r\n value: number;\r\n maxLayer: Layer;\r\n}\r\n\r\nexport class Permissions {\r\n public static readonly list = {\r\n Root: {value: 1 << 0, maxLayer: Layer.Room},\r\n CreateSpaces: {value: 1 << 1, maxLayer: Layer.Global},\r\n ManageSpace: {value: 1 << 2, maxLayer: Layer.Space},\r\n ManageSpaceRoles: {value: 1 << 3, maxLayer: Layer.Space},\r\n ManageRoom: {value: 1 << 4, maxLayer: Layer.Room},\r\n CreateTopics: {value: 1 << 5, maxLayer: Layer.Room},\r\n ManageTopic: {value: 1 << 6, maxLayer: Layer.Topic},\r\n ManageSpaceMembers: {value: 1 << 7, maxLayer: Layer.Space},\r\n ManageRoomMembers: {value: 1 << 8, maxLayer: Layer.Room},\r\n CreateMessages: {value: 1 << 9, maxLayer: Layer.Topic},\r\n ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},\r\n CreateSpaceRooms: {value: 1 << 11, maxLayer: Layer.Space},\r\n ManageSpaceRooms: {value: 1 << 12, maxLayer: Layer.Space},\r\n CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},\r\n ManageEmoticon: {value: 1 << 14, maxLayer: Layer.Space},\r\n ManageBan: {value: 1 << 15, maxLayer: Layer.Room},\r\n Kick: {value: 1 << 16, maxLayer: Layer.Room},\r\n ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},\r\n };\r\n\r\n public static getNames(): (keyof typeof this.list)[] {\r\n return Object.keys(this.list) as any;\r\n }\r\n\r\n public static getByName(name: keyof typeof this.list): PermissionDefinition | undefined {\r\n return this.list[name];\r\n }\r\n\r\n public static canBeDefinedOnLayer(permissionName: keyof typeof this.list, layer: Layer): boolean {\r\n const def = this.getByName(permissionName);\r\n\r\n if (! def) {\r\n throw new Error(`Invalid permission name: ${permissionName}`);\r\n }\r\n\r\n return layer <= this.getByName(permissionName).maxLayer;\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n ChatLocation,\r\n PermissionOverwrites, PermissionOverwritesTarget,\r\n PermissionOverwritesUpdated,\r\n PermissionOverwritesValue,\r\n RoleDeleted,\r\n RoomDeleted,\r\n RoomLeft, RoomMember, RoomMemberUpdated, Session,\r\n SpaceDeleted,\r\n SpaceLeft, SpaceMember,\r\n SpaceMemberUpdated,\r\n TopicDeleted,\r\n} from \"../types/src\";\r\nimport {EventHandler, EventTarget} from \"../EventTarget\";\r\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\r\nimport {Permissions} from \"../Permissions\";\r\nimport {PromiseRegistry} from \"./AsyncUtils\";\r\n\r\nconst getOvId = (\r\n location: ChatLocation,\r\n target?: PermissionOverwritesTarget,\r\n) => [location.spaceId, location.roomId, location.topicId, target?.type, target?.userId, target?.roleId].filter(Boolean).join('/');\r\n\r\nconst getOvIdByObject\r\n = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);\r\n\r\ninterface CheckPermissionsResult {\r\n /**\r\n * @deprecated Use `hasAll` instead.\r\n */\r\n ok: boolean;\r\n hasAll: boolean;\r\n hasAny: boolean;\r\n missing: string[];\r\n}\r\n\r\nexport class PermissionsManager extends EventTarget {\r\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\r\n private readonly overwritesPromises = new PromiseRegistry();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n super();\r\n this.tracker.client.on('PermissionOverwrites', ev => this.handlePermissionOverwrites(ev));\r\n this.tracker.client.on('PermissionOverwritesUpdated', ev => this.handlePermissionOverwrites(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('RoomLeft', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n }\r\n\r\n public async getOverwrites(\r\n location: ChatLocation,\r\n target: PermissionOverwritesTarget,\r\n ): Promise<PermissionOverwrites | undefined> {\r\n this.validateLocation(location);\r\n\r\n const id = getOvId(location, target);\r\n\r\n if (this.overwritesPromises.notExist(id)) {\r\n this.overwritesPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send(\r\n 'GetPermissionOverwrites',\r\n {location, target},\r\n );\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handlePermissionOverwrites(result.data);\r\n }, id);\r\n }\r\n\r\n await this.overwritesPromises.get(id);\r\n return this.overwrites.get(id);\r\n }\r\n\r\n public on(eventName: 'change', handler: EventHandler<any>): this {\r\n return super.on(eventName, handler);\r\n }\r\n\r\n public async check(\r\n permissionNames: (keyof typeof Permissions.list)[],\r\n location: ChatLocation,\r\n ): Promise<CheckPermissionsResult> {\r\n if (! permissionNames.length) {\r\n throw new Error('Permission names array cannot be empty');\r\n }\r\n\r\n const ownedPermissions = await this.calculatePermissions(location);\r\n const missing: string[] = [];\r\n\r\n permissionNames.forEach(name => {\r\n if (~ ownedPermissions & Permissions.getByName(name).value) {\r\n missing.push(name as string);\r\n }\r\n });\r\n\r\n return {\r\n ok: missing.length === 0,\r\n hasAll: missing.length === 0,\r\n hasAny: missing.length < permissionNames.length,\r\n missing,\r\n };\r\n }\r\n\r\n public async calculatePermissions(location: ChatLocation): Promise<number> {\r\n this.validateLocation(location);\r\n\r\n const userId = (await this.tracker.getMe()).id;\r\n const [spaceMember, roomMember] = await this.fetchMembersOrFail(location);\r\n const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];\r\n const promises: Promise<PermissionOverwritesValue>[] = [\r\n // Global user overwrites\r\n this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),\r\n ];\r\n\r\n if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {\r\n const filterLocation: ChatLocation = {spaceId: location.spaceId};\r\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\r\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\r\n }\r\n\r\n if (location.roomId && (await this.tracker.rooms.get())?.has(location.roomId)) {\r\n const filterLocation: ChatLocation = {spaceId: location.spaceId, roomId: location.roomId};\r\n if (userRoles.length) {\r\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\r\n }\r\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\r\n }\r\n\r\n if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {\r\n if (userRoles.length) {\r\n promises.push(this.collectRoleOverwrites(location, userRoles));\r\n }\r\n promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));\r\n }\r\n\r\n return this.resolveOverwritesHierarchy(await Promise.all(promises));\r\n }\r\n\r\n private handlePermissionOverwrites(ev: PermissionOverwritesUpdated | PermissionOverwrites): void {\r\n this.overwrites.set([getOvIdByObject(ev), ev]);\r\n this.emit('change');\r\n }\r\n\r\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.id}));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n\r\n private async handleRoomDeleted(ev: RoomDeleted | RoomLeft): Promise<void> {\r\n const room = (await this.tracker.rooms.get()).get(ev.id);\r\n if (room) {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: room.spaceId, roomId: room.id}));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n\r\n private handleRoleDeleted(ev: RoleDeleted): void {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\r\n if (ev.userId === this.tracker.me?.id) {\r\n // User roles in space could potentially have changed\r\n this.emit('change');\r\n }\r\n }\r\n\r\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\r\n if (ev.userId === this.tracker.me?.id) {\r\n // User roles in room could potentially have changed\r\n this.emit('change');\r\n }\r\n }\r\n\r\n /**\r\n * @return Matched and deleted ids\r\n */\r\n private deleteOverwritesByIdPrefix(prefix: string): string[] {\r\n const ids: string[] = [];\r\n this.overwrites.items.forEach((overwrites) => {\r\n const id = getOvIdByObject(overwrites);\r\n if (id.startsWith(prefix)) {\r\n ids.push(id);\r\n this.overwrites.delete(id);\r\n }\r\n });\r\n return ids;\r\n }\r\n\r\n private async collectRoleOverwrites(\r\n location: ChatLocation,\r\n userRoles: string[],\r\n ): Promise<PermissionOverwritesValue> {\r\n const roleOverwrites = await Promise.all(userRoles.map(\r\n roleId => this.getOverwrites(location, { type: 'Role', roleId }),\r\n ));\r\n\r\n return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);\r\n }\r\n\r\n private async resolveOverwritesFromRolesByOrder(\r\n spaceId: string,\r\n overwrites: PermissionOverwrites[],\r\n ): Promise<PermissionOverwritesValue> {\r\n let allows = 0, denies = 0;\r\n const roles = await this.tracker.spaces.getRoles(spaceId);\r\n const sortedOverwrites = overwrites.sort(\r\n (a, b) =>\r\n roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority\r\n );\r\n\r\n // Max length of bit word\r\n const permissionsLength = overwrites.reduce(\r\n (previousValue: number, currentValue: PermissionOverwrites) =>\r\n Math.max(\r\n previousValue,\r\n currentValue.overwrites.allow?.toString(2).length ?? 0,\r\n currentValue.overwrites.deny?.toString(2).length ?? 0,\r\n ),\r\n 0,\r\n );\r\n\r\n sortedOverwrites.forEach(overwriteEvent => {\r\n const overwrites = overwriteEvent.overwrites;\r\n const revDecDenies = overwrites.deny?.toString(2).split('').reverse().join('') ?? '';\r\n const revDecAllows = overwrites.allow?.toString(2).split('').reverse().join('') ?? '';\r\n\r\n for (let i = 0; i < permissionsLength; i++) {\r\n const deny = parseInt(revDecDenies[i] ?? '0');\r\n const allow = parseInt(revDecAllows[i] ?? '0');\r\n\r\n if (deny) {\r\n denies |= 1 << i;\r\n }\r\n\r\n if (allow) {\r\n allows |= 1 << i;\r\n }\r\n }\r\n });\r\n\r\n return {allow: allows, deny: denies};\r\n }\r\n\r\n private resolveOverwritesHierarchy(permissionOverwritesValues: PermissionOverwritesValue[]): number {\r\n let result = 0;\r\n\r\n for (const value of permissionOverwritesValues) {\r\n if (value.allow & Permissions.getByName('Root').value) {\r\n return this.getRootAccessValue();\r\n }\r\n\r\n result = (result & ~value.deny) | value.allow;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getRootAccessValue(): number {\r\n let result = 0;\r\n\r\n for (const name of Permissions.getNames()) {\r\n result |= Permissions.getByName(name).value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private async fetchMembersOrFail(location: ChatLocation): Promise<[SpaceMember | null, RoomMember | null]> {\r\n const results = await Promise.all([\r\n location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null,\r\n location.roomId ? this.tracker.rooms.getMe(location.roomId) : null,\r\n ]);\r\n\r\n const spaceFail = location.spaceId && ! results[0];\r\n const roomFail = location.roomId && ! results[1];\r\n\r\n if (spaceFail || roomFail) {\r\n const layer = spaceFail ? `space (${location.spaceId})` : `room (${location.roomId})`;\r\n throw new Error(`Attempting to calculate permissions for a ${layer} that the user does not belong to`);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n private validateLocation(location: ChatLocation): void {\r\n if (location.topicId && ! location.roomId) {\r\n throw new Error('Corrupted arguments hierarchy');\r\n }\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.overwrites.deleteAll();\r\n this.overwritesPromises.forgetAll();\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n IndexedCollection,\r\n ObservableIndexedObjectCollection\r\n} from \"../IndexedObjectCollection\";\r\nimport {Emoticon, EmoticonDeleted, Emoticons, NewEmoticon, SpaceDeleted} from \"../types/src\";\r\nimport {PromiseRegistry} from \"./AsyncUtils\";\r\n\r\nconst GLOBAL_KEY = 'global';\r\n\r\nexport class EmoticonsManager {\r\n private list: IndexedCollection<string, ObservableIndexedObjectCollection<Emoticon>> = new IndexedCollection();\r\n private emoticonsPromises = new PromiseRegistry();\r\n \r\n public constructor(private tracker: ChatStateTracker) {\r\n this.tracker.client.on('Emoticons', ev => this.handleEmoticons(ev));\r\n this.tracker.client.on('NewEmoticon', ev => this.handleNewEmoticon(ev));\r\n this.tracker.client.on('EmoticonDeleted', ev => this.handleEmoticonDeleted(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('Session', () => this.handleSession());\r\n }\r\n\r\n public async get(spaceId?: string): Promise<ObservableIndexedObjectCollection<Emoticon>> {\r\n const key = spaceId ?? GLOBAL_KEY;\r\n\r\n if (this.emoticonsPromises.notExist(key)) {\r\n this.emoticonsPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetEmoticons', {spaceId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleEmoticons(result.data);\r\n }, key);\r\n }\r\n\r\n await this.emoticonsPromises.get(key);\r\n return this.list.get(key);\r\n }\r\n\r\n private handleEmoticons(event: Emoticons): void {\r\n const spaceId = event.location.spaceId ?? GLOBAL_KEY;\r\n\r\n if (!this.list.has(spaceId)) {\r\n this.list.set([spaceId, new ObservableIndexedObjectCollection<Emoticon>('id')]);\r\n }\r\n\r\n const collection = this.list.get(spaceId);\r\n collection.set(...event.emoticons);\r\n }\r\n\r\n private handleNewEmoticon(ev: NewEmoticon): void {\r\n const collection = this.list.get(ev.emoticon.spaceId ?? GLOBAL_KEY);\r\n collection?.set(ev.emoticon);\r\n }\r\n\r\n private handleEmoticonDeleted(ev: EmoticonDeleted): void {\r\n const collection = this.list.get(ev.spaceId ?? GLOBAL_KEY);\r\n collection?.delete(ev.emoticonId);\r\n }\r\n\r\n private handleSpaceDeleted(event: SpaceDeleted): void {\r\n this.list.delete(event.id);\r\n }\r\n\r\n private handleSession(): void {\r\n this.list.deleteAll();\r\n this.emoticonsPromises.forgetAll();\r\n }\r\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();\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 /**\r\n * State of your permissions.\r\n */\r\n public readonly permissions = new PermissionsManager(this);\r\n\r\n /**\r\n * State of the rooms you are in.\r\n */\r\n public readonly rooms: RoomsManager = new RoomsManager(this);\r\n\r\n /**\r\n * State of the spaces you are in.\r\n */\r\n public readonly spaces = new SpacesManager(this);\r\n\r\n /**\r\n * State of the emoticons (global and space-related).\r\n */\r\n public readonly emoticons = new EmoticonsManager(this);\r\n\r\n /**\r\n * Users related state.\r\n */\r\n public readonly users = new UsersManager(this);\r\n\r\n /**\r\n * State of relationships with other users.\r\n */\r\n public readonly relationships = new RelationshipsManager(this);\r\n\r\n private _me: User = null;\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(public readonly client: WebSocketChatClient) {\r\n this.client.on('Session', ev => this.handleSession(ev));\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\";\r\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\r\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\r\nimport {Envelope} from \"./types/src\";\r\n\r\nexport interface WebSocketClientOptions {\r\n url: string;\r\n token: string;\r\n connectingTimeoutMs?: number;\r\n awaitQueueSendDelayMs?: number;\r\n stateTracking?: boolean;\r\n queryParams?: Record<string, string>;\r\n}\r\n\r\nenum WebSocketChatClientEvent {\r\n connect = 'connect',\r\n disconnect = 'disconnect',\r\n message = 'message',\r\n error = 'error',\r\n}\r\n\r\nexport class WebSocketChatClient extends AbstractChatClient implements ObservableInterface {\r\n public readonly Event = WebSocketChatClientEvent;\r\n public readonly state?: ChatStateTracker;\r\n\r\n protected ws: WebSocket|null = null;\r\n protected sendQueue: Envelope[] = [];\r\n protected connectingTimeoutId: any;\r\n protected authenticated: boolean;\r\n protected authenticatedResolvers: [() => void, (error: Error) => void];\r\n\r\n public constructor(private readonly options: WebSocketClientOptions) {\r\n super();\r\n if (this.options.stateTracking ?? true) {\r\n this.state = new ChatStateTracker(this);\r\n }\r\n }\r\n\r\n public async connect(): Promise<void> {\r\n const params = new URLSearchParams(this.options.queryParams ?? {});\r\n params.set('token', this.options.token);\r\n\r\n this.ws = new WebSocket(`${this.options.url}?${params}`);\r\n this.ws.onclose = ev => this.onClose(ev);\r\n this.ws.onmessage = ev => this.onMessage(ev);\r\n this.connectingTimeoutId = setTimeout(\r\n () => this.triggerConnectionTimeout(),\r\n this.options.connectingTimeoutMs ?? 10000\r\n );\r\n this.authenticated = false;\r\n\r\n return new Promise((...args) => this.authenticatedResolvers = args);\r\n }\r\n\r\n public disconnect(): void {\r\n this.sendQueue = [];\r\n this.ws?.close();\r\n this.ws = null;\r\n }\r\n\r\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\r\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\r\n const envelope = this.createEnvelope<CommandsMap[CommandType][0]>(commandType, commandData);\r\n const promise = this.createPromiseFromCommandEnvelope<CommandType>(envelope);\r\n\r\n if (this.isPendingReadyWsState()) {\r\n this.sendQueue.push(envelope);\r\n return promise;\r\n }\r\n\r\n this.sendEnvelope(envelope);\r\n return promise;\r\n }\r\n\r\n private sendEnvelope(envelope: Envelope): void {\r\n if (this.isReadyToSendWsState()) {\r\n this.ws.send(JSON.stringify(envelope));\r\n return;\r\n }\r\n\r\n this.handleEnvelopeSendError(\r\n envelope,\r\n new Error(`Cannot send; invalid websocket state=${this.ws?.readyState ?? '[no connection]'}`)\r\n );\r\n }\r\n\r\n private onMessage(event: MessageEvent): void {\r\n const envelope: Envelope = JSON.parse(event.data);\r\n this.handleIncomingEnvelope(envelope);\r\n this.emit(envelope.type, envelope.data);\r\n this.emit(this.Event.message, envelope);\r\n\r\n // Login successfully\r\n if (!this.authenticated) {\r\n const isAuthenticated = envelope.type !== 'Bye';\r\n this.authenticated = isAuthenticated;\r\n if (isAuthenticated) {\r\n this.authenticatedResolvers[0]();\r\n this.emit(this.Event.connect);\r\n this.sendFromQueue();\r\n } else {\r\n this.authenticatedResolvers[1](envelope.data);\r\n }\r\n }\r\n }\r\n\r\n private onClose(event: CloseEvent): void {\r\n clearTimeout(this.connectingTimeoutId);\r\n const reconnect = event.code !== 1000; // Connection was closed because of error\r\n if (reconnect) {\r\n void this.connect();\r\n }\r\n this.emit(this.Event.disconnect, reconnect);\r\n }\r\n\r\n private sendFromQueue(): void {\r\n // Send awaiting data to server\r\n let lastDelay = 0;\r\n for (const dataIndex in this.sendQueue) {\r\n const envelope = this.sendQueue[dataIndex];\r\n setTimeout(() => this.sendEnvelope(envelope), lastDelay);\r\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\r\n }\r\n this.sendQueue = [];\r\n clearTimeout(this.connectingTimeoutId);\r\n }\r\n\r\n private triggerConnectionTimeout(): void {\r\n this.disconnect();\r\n this.emit(this.Event.error, new Error('Connection timeout'));\r\n }\r\n\r\n private isPendingReadyWsState(): boolean {\r\n return this.ws && this.ws.readyState === this.ws.CONNECTING || !this.authenticated;\r\n }\r\n\r\n private isReadyToSendWsState(): boolean {\r\n return this.ws && this.ws.readyState === this.ws.OPEN && this.authenticated;\r\n }\r\n}","import {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\r\nimport {ObservableInterface} from \"./EventTarget\";\r\nimport {Envelope} from \"./types/src\";\r\n\r\nexport interface WebApiChatClientOptions {\r\n url: string;\r\n token: string;\r\n attemptsToSend?: number;\r\n attemptDelayMs?: number;\r\n queryParams?: Record<string, string>;\r\n}\r\n\r\nenum WebApiChatClientEvent {\r\n message = 'message',\r\n error = 'error',\r\n destroy = 'destroy',\r\n}\r\n\r\nexport class WebApiChatClient extends AbstractChatClient implements ObservableInterface {\r\n public readonly Event = WebApiChatClientEvent;\r\n\r\n protected sendStack: {data: any, attempts: number, lastTimeoutId: any}[];\r\n\r\n public constructor(private readonly options: WebApiChatClientOptions) {\r\n super();\r\n }\r\n\r\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\r\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\r\n const envelope = this.createEnvelope(commandType, commandData);\r\n this.sendStack.push({data: envelope, attempts: 0, lastTimeoutId: null});\r\n this.makeApiCall(this.sendStack.length - 1);\r\n return this.createPromiseFromCommandEnvelope(envelope);\r\n }\r\n\r\n public destroy(): void {\r\n // Cancel all awaiting requests\r\n this.sendStack.forEach(item => {\r\n if (item.lastTimeoutId) {\r\n clearTimeout(item.lastTimeoutId);\r\n }\r\n this.awaitingResponse.delete(item.data.ref);\r\n });\r\n this.sendStack = [];\r\n this.emit(this.Event.destroy, false);\r\n }\r\n\r\n protected async onMessage(reqId: number, response: Response): Promise<void> {\r\n this.sendStack.splice(reqId, 1);\r\n const envelope: Envelope = await response.json();\r\n this.handleIncomingEnvelope(envelope);\r\n this.emit(envelope.type, envelope.data);\r\n this.emit(this.Event.message, envelope);\r\n }\r\n\r\n protected onError(reqId: number, body: string): void {\r\n if (this.sendStack[reqId].attempts >= (this.options.attemptsToSend ?? 10)) {\r\n this.sendStack.splice(reqId, 1);\r\n this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error(\r\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\r\n ));\r\n return;\r\n }\r\n this.sendStack[reqId].lastTimeoutId = setTimeout(\r\n () => this.makeApiCall(reqId),\r\n this.options.attemptDelayMs ?? 3000\r\n );\r\n }\r\n\r\n protected makeApiCall(reqId: number): void {\r\n this.sendStack[reqId].attempts++;\r\n const bodyJson = JSON.stringify(this.sendStack[reqId].data);\r\n const headers: any = {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json'\r\n };\r\n\r\n headers.Authorization = `Bearer ${this.options.token}`;\r\n\r\n const params = new URLSearchParams(this.options.queryParams ?? {});\r\n const url = `${this.options.url}${params ? '?' + params : ''}`;\r\n\r\n fetch(url, {\r\n headers,\r\n body: bodyJson,\r\n method: 'POST',\r\n })\r\n .then(response => this.onMessage(reqId, response))\r\n .catch(() => this.onError(reqId, bodyJson));\r\n }\r\n}","export interface RestClientOptions {\r\n url?: string;\r\n token: string;\r\n}\r\n\r\nexport interface RestClientResponse<T> {\r\n ok: boolean;\r\n status: number;\r\n data: T;\r\n}\r\n\r\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\r\n\r\nexport abstract class AbstractRestClient {\r\n protected abstract defaultUrl: string;\r\n\r\n public constructor(\r\n private readonly options: RestClientOptions,\r\n ) {}\r\n\r\n protected async send<ResponseT = any>(\r\n method: HttpMethod,\r\n uri: string,\r\n data: any = undefined\r\n ): Promise<RestClientResponse<ResponseT>> {\r\n let url = this.getUrl(uri);\r\n let body = undefined;\r\n\r\n if (data) {\r\n if (['GET', 'DELETE'].includes(method)) {\r\n url += new URLSearchParams(data).toString()\r\n } else {\r\n body = JSON.stringify(data);\r\n }\r\n }\r\n\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n ...this.getAuthHeaders(),\r\n };\r\n\r\n const result = await fetch(url, {method, body, headers});\r\n\r\n return this.convertFetchResponse(result);\r\n }\r\n\r\n protected getAuthHeaders(): any {\r\n const headers = {} as any;\r\n\r\n if (this.options.token) {\r\n headers.Authorization = `Bearer ${this.options.token}`;\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected getUrl(uri: string): string {\r\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\r\n }\r\n\r\n protected async convertFetchResponse<T>(result: Response): Promise<RestClientResponse<T>> {\r\n return {\r\n ok: result.ok,\r\n status: result.status,\r\n data: result.headers.get('content-type')?.includes('json') ? await result.json() : await result.text(),\r\n };\r\n }\r\n\r\n private removeStartingSlash(text: string): string {\r\n return text.replace(/^\\/+/, '');\r\n }\r\n\r\n private removeEndingSlash(text: string): string {\r\n return text.replace(/\\/+$/, '');\r\n }\r\n}","import {AbstractRestClient} from \"./AbstractRestClient\";\r\n\r\nexport interface TokenInterface {\r\n token: string,\r\n expiration: string\r\n}\r\n\r\nexport interface MyAccountInterface {\r\n id: string;\r\n nick: string;\r\n avatar: string;\r\n}\r\n\r\nexport class AuthClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://polfan.pl/webservice/api';\r\n\r\n public static async createToken(\r\n login: string,\r\n password: string,\r\n clientName: string = 'pserv-js-client'\r\n ): Promise<TokenInterface> {\r\n const response = await new AuthClient({token: null}).send('POST', 'auth/tokens', {\r\n login, password, client_name: clientName\r\n });\r\n if (response.ok) {\r\n return response.data;\r\n }\r\n throw new Error(`Cannot create user token: ${response.data.errors[0]}`);\r\n }\r\n\r\n public async deleteToken(token: string): Promise<void> {\r\n const response = await this.send('DELETE', `auth/tokens/${token}`);\r\n if (!response.ok) {\r\n throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);\r\n }\r\n }\r\n\r\n public async getMe(): Promise<MyAccountInterface> {\r\n const response = await this.send('GET', 'auth/me');\r\n if (response.ok) {\r\n response.data.id = response.data.id.toString();\r\n return response.data;\r\n }\r\n throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);\r\n }\r\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}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\r\nimport {WebApiChatClient} from \"./WebApiChatClient\";\r\nimport {\r\n IndexedCollection,\r\n IndexedObjectCollection,\r\n ObservableIndexedCollection,\r\n ObservableIndexedObjectCollection\r\n} from \"./IndexedObjectCollection\";\r\nimport { AuthClient, MyAccountInterface, TokenInterface } from \"./AuthClient\";\r\nimport {FilesClient, File} from \"./FilesClient\";\r\nimport { Permissions, PermissionDefinition, Layer } from \"./Permissions\";\r\nimport * as ChatTypes from './types/src';\r\nimport {extractUserFromMember} from \"./state-tracker/functions\";\r\n\r\nexport {\r\n IndexedCollection, ObservableIndexedCollection,\r\n IndexedObjectCollection, ObservableIndexedObjectCollection,\r\n Permissions, PermissionDefinition, Layer,\r\n WebSocketChatClient, WebApiChatClient,\r\n AuthClient,\r\n FilesClient,\r\n extractUserFromMember,\r\n};\r\n\r\nexport type {\r\n ChatTypes,\r\n MyAccountInterface, TokenInterface, File,\r\n};"],"names":["EventTarget","constructor","_defineProperty","Map","on","eventName","handler","addHandler","events","once","onceEvents","off","index","get","indexOf","splice","emit","event","callHandlers","delete","map","handlers","push","set","forEach","callback","AbstractChatClient","args","createEnvelope","type","data","ref","sentCounter","toString","createPromiseFromCommandEnvelope","envelope","Promise","awaitingResponse","handleIncomingEnvelope","has","isError","error","handleEnvelopeSendError","IndexedCollection","items","_items","length","size","item","id","ids","deleteAll","clear","findBy","field","valueToFind","limit","result","entries","next","value","done","createMirror","copy","IndexedObjectCollection","Array","from","values","getId","getAt","ObservableIndexedCollection","eventTarget","setItems","deletedItems","keys","ObservableIndexedObjectCollection","DeferredTask","promise","resolve","PromiseRegistry","register","key","promises","registerByFunction","fn","notExist","forget","forgetAll","WindowState","TraversableRemoteCollection","current","LIVE","ongoing","undefined","oldestId","state","internalState","hasLatest","LATEST","includes","hasOldest","OLDEST","resetToLatest","fetchLatestItems","addItems","fetchPrevious","PAST","fetchItemsBefore","firstItem","refreshFetchedState","fetchNext","fetchItemsAfter","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","slice","TopicHistoryWindow","roomId","topicId","tracker","bindEvents","traverseLock","client","ev","handleSession","handleNewMessage","isTraverseLocked","setTraverseLock","lock","_updateMessageReference","refTopic","refMessage","topicRef","message","location","rooms","find","room","afterId","send","after","Error","messages","beforeId","before","getTopic","getTopics","getLatestMessageId","lastMessage","lastMessageId","RoomMessagesHistory","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","getMessagesWindow","historyWindow","historyWindows","topic","window","refHistoryWindow","history","mode","MessagesManager","handleRoomJoin","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","handleRoomDeleted","handleRoomLeft","getRoomHistory","deferredSession","roomHistories","cacheSpaceFollowedTopics","spaceId","spaces","roomIds","resultPromise","followedTopicsPromises","setFollowedTopicsArray","followedTopics","getRoomFollowedTopics","ackRoomFollowedTopics","collection","followedTopic","missed","calculateRoomMissedMessages","reduce","previousValue","currentValue","_deleteByTopicIds","topicIds","createHistoryForNewRoom","updateLocallyFollowedTopicOnNewMessage","clearRoomFollowedTopicsStructures","roomFollowedTopics","isMe","author","user","me","update","lastAckMessageId","roomToTopics","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","getMembers","membersPromises","members","getMe","userId","list","member","spaceMember","tryToFetchTopicIds","canFetch","topics","topicsPromises","idsToFetch","filter","then","deleteRoom","deleteRoomsBySpaceId","roomMembers","roomMember","newMember","addJoinedRoomTopics","addJoinedRooms","recipients","roles","newRooms","some","newTopic","messageCount","reorderRolesOnPriorityUpdate","allRoles","oldRole","updatedRole","increased","priority","decreased","changedRoles","role","extractUserFromMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","getRoles","getRooms","roomsPromises","summary","roomIdToSpaceId","name","description","space","spaceChanged","systemRoom","defaultRooms","addJoinedSpaces","summaries","summariesPromise","oldSummary","newSummary","newRole","rolesToUpdate","Layer","PermissionDefinition","Permissions","getNames","Object","getByName","canBeDefinedOnLayer","permissionName","layer","def","maxLayer","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageSpaceRoles","ManageRoom","CreateTopics","ManageTopic","Topic","ManageSpaceMembers","ManageRoomMembers","CreateMessages","ManagePermissions","CreateSpaceRooms","ManageSpaceRooms","CreateEmoticons","ManageEmoticon","ManageBan","Kick","ChangeOwnNick","getOvId","target","roleId","Boolean","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","getOverwrites","validateLocation","overwritesPromises","check","permissionNames","ownedPermissions","calculatePermissions","missing","ok","hasAll","hasAny","fetchMembersOrFail","userRoles","v","filterLocation","collectRoleOverwrites","resolveOverwritesHierarchy","all","deleteOverwritesByIdPrefix","prefix","startsWith","roleOverwrites","resolveOverwritesFromRolesByOrder","allows","denies","sortedOverwrites","sort","a","b","permissionsLength","Math","max","allow","deny","overwriteEvent","revDecDenies","split","reverse","revDecAllows","i","parseInt","permissionOverwritesValues","getRootAccessValue","results","spaceFail","roomFail","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","emoticons","emoticon","emoticonId","UsersManager","handleUsers","handleMembers","getAvailable","users","session","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","exists","ChatStateTracker","_me","WebSocketChatClientEvent","WebSocketChatClient","options","stateTracking","connect","params","URLSearchParams","queryParams","token","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","disconnect","sendQueue","close","commandType","commandData","isPendingReadyWsState","sendEnvelope","isReadyToSendWsState","JSON","stringify","readyState","parse","Event","isAuthenticated","sendFromQueue","clearTimeout","reconnect","code","lastDelay","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","json","onError","body","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","catch","AbstractRestClient","uri","getUrl","getAuthHeaders","convertFetchResponse","removeEndingSlash","defaultUrl","removeStartingSlash","status","text","replace","AuthClient","createToken","login","password","clientName","client_name","errors","deleteToken","FilesClient","uploadFile","file","encodeURIComponent","getFileMeta","getFileMetaBulk","searchParams","append"],"sourceRoot":""}
1
+ {"version":3,"file":"index.cjs.js","mappings":"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","sources":["webpack://polfan-server-js-client/webpack/bootstrap","webpack://polfan-server-js-client/webpack/runtime/define property getters","webpack://polfan-server-js-client/webpack/runtime/hasOwnProperty shorthand","webpack://polfan-server-js-client/webpack/runtime/make namespace object","webpack://polfan-server-js-client/./src/EventTarget.ts","webpack://polfan-server-js-client/./src/AbstractChatClient.ts","webpack://polfan-server-js-client/./src/IndexedObjectCollection.ts","webpack://polfan-server-js-client/./src/state-tracker/AsyncUtils.ts","webpack://polfan-server-js-client/./src/state-tracker/TopicHistoryWindow.ts","webpack://polfan-server-js-client/./src/state-tracker/RoomMessagesHistory.ts","webpack://polfan-server-js-client/./src/state-tracker/MessagesManager.ts","webpack://polfan-server-js-client/./src/state-tracker/RoomsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/functions.ts","webpack://polfan-server-js-client/./src/state-tracker/SpacesManager.ts","webpack://polfan-server-js-client/./src/Permissions.ts","webpack://polfan-server-js-client/./src/state-tracker/PermissionsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/EmoticonsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/UsersManager.ts","webpack://polfan-server-js-client/./src/state-tracker/RelationshipsManager.ts","webpack://polfan-server-js-client/./src/state-tracker/ChatStateTracker.ts","webpack://polfan-server-js-client/./src/WebSocketChatClient.ts","webpack://polfan-server-js-client/./src/WebApiChatClient.ts","webpack://polfan-server-js-client/./src/AbstractRestClient.ts","webpack://polfan-server-js-client/./src/AuthClient.ts","webpack://polfan-server-js-client/./src/FilesClient.ts","webpack://polfan-server-js-client/./src/index.ts"],"sourcesContent":["// 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;\r\ntype HandlersMap<EventT> = Map<string, EventHandler<EventT>[]>;\r\n\r\nexport interface ObservableInterface<EventT = any> {\r\n on(eventName: string, handler: EventHandler<EventT>): this;\r\n once(eventName: string, handler: EventHandler<EventT>): this;\r\n off(eventName: string, handler: EventHandler<EventT>): this;\r\n}\r\n\r\nexport class EventTarget<EventT = any> implements ObservableInterface<EventT> {\r\n protected events: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\r\n protected onceEvents: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\r\n\r\n public on(eventName: string, handler: EventHandler<EventT>): this {\r\n this.addHandler(this.events, eventName, handler);\r\n return this;\r\n }\r\n\r\n public once(eventName: string, handler: EventHandler<EventT>): this {\r\n this.addHandler(this.onceEvents, eventName, handler);\r\n return this;\r\n }\r\n\r\n public off(eventName: string, handler: EventHandler<EventT>): this {\r\n const index = this.events.get(eventName)?.indexOf(handler);\r\n if (!index || index < 0) {\r\n return this;\r\n }\r\n this.events.get(eventName).splice(index, 1);\r\n return this;\r\n }\r\n\r\n public emit(eventName: string, event?: EventT): this {\r\n this.callHandlers(this.events, eventName, event);\r\n this.callHandlers(this.onceEvents, eventName, event);\r\n this.onceEvents.delete(eventName);\r\n return this;\r\n }\r\n\r\n private addHandler(map: HandlersMap<EventT>, eventName: string, handler: EventHandler<EventT>): void {\r\n const handlers = map.get(eventName) ?? [];\r\n handlers.push(handler);\r\n map.set(eventName, handlers);\r\n }\r\n\r\n private callHandlers(map: HandlersMap<EventT>, eventName: string, event: EventT): void {\r\n map.get(eventName)?.forEach(callback => callback(event));\r\n }\r\n}","import {\r\n Bye,\r\n GetSession,\r\n JoinSpace,\r\n Session,\r\n SpaceJoined,\r\n Error as ErrorType,\r\n SpaceLeft,\r\n SpaceMemberJoined,\r\n SpaceMemberLeft,\r\n SpaceMemberUpdated,\r\n SpaceDeleted,\r\n SpaceMembers,\r\n SpaceRooms,\r\n NewRole,\r\n RoomDeleted,\r\n RoomJoined,\r\n RoomLeft,\r\n RoomMemberLeft,\r\n RoomMemberJoined,\r\n RoomMembers,\r\n NewRoom,\r\n NewTopic,\r\n TopicDeleted,\r\n NewMessage,\r\n GetPermissionOverwrites,\r\n GetComputedPermissions,\r\n LeaveSpace,\r\n CreateSpace,\r\n DeleteSpace,\r\n GetSpaceMembers,\r\n GetSpaceRooms,\r\n CreateRole,\r\n DeleteRole,\r\n AssignRole,\r\n DeassignRole,\r\n SetPermissionOverwrites,\r\n JoinRoom,\r\n LeaveRoom,\r\n CreateRoom,\r\n DeleteRoom,\r\n GetRoomMembers,\r\n CreateTopic,\r\n DeleteTopic,\r\n CreateMessage,\r\n Envelope,\r\n PermissionOverwrites,\r\n PermissionOverwritesUpdated,\r\n RoomMemberUpdated,\r\n UpdateRole,\r\n RoleUpdated,\r\n Ack,\r\n UserUpdated,\r\n UpdateRoom,\r\n RoomUpdated,\r\n UpdateSpace,\r\n SpaceUpdated,\r\n PermissionOverwriteTargets,\r\n GetPermissionOverwriteTargets,\r\n Owners,\r\n Ok,\r\n GetOwners,\r\n CreateOwner,\r\n RoleDeleted,\r\n FollowedTopicUpdated,\r\n TopicFollowed,\r\n TopicUnfollowed,\r\n FollowedTopics,\r\n FollowTopic,\r\n UnfollowTopic,\r\n GetFollowedTopics,\r\n Messages,\r\n GetMessages,\r\n Topics,\r\n GetTopics,\r\n TopicUpdated,\r\n UpdateTopic,\r\n GetDiscoverableSpaces,\r\n DiscoverableSpaces,\r\n CreateEmoticon,\r\n DeleteEmoticon,\r\n GetEmoticons,\r\n Emoticons,\r\n EmoticonDeleted,\r\n NewEmoticon,\r\n Bans,\r\n GetBans,\r\n Ban,\r\n Unban,\r\n Kick,\r\n ClientData,\r\n GetClientData,\r\n SetClientData,\r\n GetRoomSummary,\r\n GetSpaceSummary,\r\n RoomSummaryEvent,\r\n SpaceSummaryEvent,\r\n SetCustomNick,\r\n Relationships,\r\n RelationshipDeleted,\r\n NewRelationship,\r\n DeleteRelationship,\r\n CreateRelationship,\r\n RoomSummaryUpdated,\r\n} from \"./types/src/index\";\r\nimport {EventTarget} from \"./EventTarget\";\r\nimport {GetRelationships} from \"./types/src/schemes/commands/GetRelationships\";\r\n\r\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\r\n\r\nexport abstract class AbstractChatClient extends EventTarget {\r\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\r\n protected sentCounter: number = 0;\r\n\r\n public abstract send<CommandType extends keyof CommandsMap>\r\n (commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;\r\n\r\n public on<EventName extends keyof EventsMap>\r\n (eventName: EventName | string, handler: (event: EventsMap[EventName]) => void): this {\r\n return super.on(eventName, handler);\r\n }\r\n\r\n public once<EventName extends keyof EventsMap>\r\n (eventName: EventName, handler: (event: EventsMap[EventName]) => void): this {\r\n return super.once(eventName, handler);\r\n }\r\n\r\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\r\n return {\r\n type, data, ref: (++this.sentCounter).toString()\r\n };\r\n }\r\n\r\n protected createPromiseFromCommandEnvelope\r\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandsMap[CommandT][0]>):\r\n Promise<CommandResult<CommandsMap[CommandT][1]>> {\r\n return new Promise((...args) =>\r\n this.awaitingResponse.set(envelope.ref as string, args));\r\n }\r\n\r\n protected handleIncomingEnvelope(envelope: Envelope): void {\r\n if (!this.awaitingResponse.has(envelope.ref)) {\r\n return;\r\n }\r\n const isError = envelope.type === 'Error';\r\n this.awaitingResponse.get(envelope.ref)[0]({\r\n data: isError ? null : envelope.data,\r\n error: isError ? envelope.data : null,\r\n } as CommandResult<any>);\r\n this.awaitingResponse.delete(envelope.ref);\r\n }\r\n\r\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\r\n if (!this.awaitingResponse.has(envelope.ref)) {\r\n return;\r\n }\r\n this.awaitingResponse.get(envelope.ref)[1](error);\r\n this.awaitingResponse.delete(envelope.ref);\r\n }\r\n}\r\n\r\nexport type CommandResult<ResultT> = {data?: ResultT, error?: ErrorType};\r\n\r\n/**\r\n * Map of incoming events.\r\n */\r\nexport type EventsMap = {\r\n // General Events\r\n Bye: Bye,\r\n Ok: Ok,\r\n Error: ErrorType,\r\n Session: Session,\r\n Permissions: Permissions,\r\n PermissionOverwrites: PermissionOverwrites,\r\n PermissionOverwritesUpdated: PermissionOverwritesUpdated,\r\n PermissionOverwriteTargets: PermissionOverwriteTargets,\r\n Owners: Owners,\r\n NewEmoticon: NewEmoticon,\r\n EmoticonDeleted: EmoticonDeleted,\r\n Emoticons: Emoticons,\r\n Bans: Bans,\r\n ClientData: ClientData,\r\n NewRelationship: NewRelationship,\r\n RelationshipDeleted: RelationshipDeleted,\r\n Relationships: Relationships,\r\n // Space events\r\n DiscoverableSpaces: DiscoverableSpaces,\r\n SpaceJoined: SpaceJoined,\r\n SpaceLeft: SpaceLeft,\r\n SpaceMemberJoined: SpaceMemberJoined,\r\n SpaceMemberLeft: SpaceMemberLeft,\r\n SpaceMemberUpdated: SpaceMemberUpdated,\r\n SpaceUpdated: SpaceUpdated,\r\n SpaceDeleted: SpaceDeleted,\r\n SpaceMembers: SpaceMembers,\r\n SpaceRooms: SpaceRooms,\r\n NewRole: NewRole,\r\n RoleDeleted: RoleDeleted,\r\n RoleUpdated: RoleUpdated,\r\n SpaceSummaryEvent: SpaceSummaryEvent,\r\n // Room events\r\n RoomJoined: RoomJoined,\r\n RoomLeft: RoomLeft,\r\n RoomMemberJoined: RoomMemberJoined,\r\n RoomMemberLeft: RoomMemberLeft,\r\n RoomMemberUpdated: RoomMemberUpdated,\r\n RoomMembers: RoomMembers,\r\n NewRoom: NewRoom,\r\n RoomDeleted: RoomDeleted,\r\n RoomUpdated: RoomUpdated,\r\n RoomSummaryEvent: RoomSummaryEvent,\r\n RoomSummaryUpdated: RoomSummaryUpdated,\r\n // Topic events\r\n NewTopic: NewTopic,\r\n TopicDeleted: TopicDeleted,\r\n NewMessage: NewMessage,\r\n UserUpdated: UserUpdated,\r\n TopicFollowed: TopicFollowed,\r\n TopicUnfollowed: TopicUnfollowed,\r\n FollowedTopics: FollowedTopics,\r\n FollowedTopicUpdated: FollowedTopicUpdated,\r\n Messages: Messages,\r\n Topics: Topics,\r\n TopicUpdated: TopicUpdated,\r\n};\r\n\r\n/**\r\n * Map of commands and their corresponding events.\r\n */\r\nexport type CommandsMap = {\r\n // General commands\r\n GetSession: [GetSession, EventsMap['Session']],\r\n SetPermissionOverwrites: [SetPermissionOverwrites, EventsMap['PermissionOverwritesUpdated']],\r\n GetPermissionOverwrites: [GetPermissionOverwrites, EventsMap['PermissionOverwrites']],\r\n GetComputedPermissions: [GetComputedPermissions, EventsMap['Permissions']],\r\n GetPermissionOverwriteTargets: [GetPermissionOverwriteTargets, EventsMap['PermissionOverwriteTargets']],\r\n GetOwners: [GetOwners, EventsMap['Owners']],\r\n CreateOwner: [CreateOwner, EventsMap['Owners']],\r\n DeleteOwner: [CreateOwner, EventsMap['Owners']],\r\n CreateEmoticon: [CreateEmoticon, EventsMap['NewEmoticon']],\r\n DeleteEmoticon: [DeleteEmoticon, EventsMap['EmoticonDeleted']],\r\n GetEmoticons: [GetEmoticons, EventsMap['Emoticons']],\r\n GetBans: [GetBans, EventsMap['Bans']],\r\n Ban: [Ban, EventsMap['Ok']],\r\n Unban: [Unban, EventsMap['Ok']],\r\n Kick: [Kick, EventsMap['Ok']],\r\n GetClientData: [GetClientData, EventsMap['ClientData']],\r\n SetClientData: [SetClientData, EventsMap['Ok']],\r\n DeleteRelationship: [DeleteRelationship, EventsMap['RelationshipDeleted']],\r\n CreateRelationship: [CreateRelationship, EventsMap['NewRelationship']],\r\n GetRelationships: [GetRelationships, EventsMap['Relationships']],\r\n // Space commands\r\n GetDiscoverableSpaces: [GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']],\r\n JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],\r\n LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']],\r\n CreateSpace: [CreateSpace, EventsMap['SpaceJoined']],\r\n UpdateSpace: [UpdateSpace, EventsMap['SpaceUpdated']],\r\n DeleteSpace: [DeleteSpace, EventsMap['SpaceDeleted']],\r\n GetSpaceMembers: [GetSpaceMembers, EventsMap['SpaceMembers']],\r\n GetSpaceRooms: [GetSpaceRooms, EventsMap['SpaceRooms']],\r\n CreateRole: [CreateRole, EventsMap['NewRole']],\r\n DeleteRole: [DeleteRole, EventsMap['RoleDeleted']],\r\n UpdateRole: [UpdateRole, EventsMap['RoleUpdated']],\r\n AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\r\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\r\n GetSpaceSummary: [GetSpaceSummary, EventsMap['SpaceSummaryEvent']],\r\n SetCustomNick: [SetCustomNick, EventsMap['SpaceMemberUpdated']],\r\n // Room commands\r\n JoinRoom: [JoinRoom, EventsMap['RoomJoined']],\r\n LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],\r\n CreateRoom: [CreateRoom, EventsMap['RoomJoined']],\r\n DeleteRoom: [DeleteRoom, EventsMap['RoomDeleted']],\r\n UpdateRoom: [UpdateRoom, EventsMap['RoomUpdated']],\r\n GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],\r\n GetRoomSummary: [GetRoomSummary, EventsMap['RoomSummaryEvent']],\r\n // Topic commands\r\n CreateTopic: [CreateTopic, EventsMap['NewTopic']],\r\n DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],\r\n CreateMessage: [CreateMessage, EventsMap['NewMessage']],\r\n Ack: [Ack, EventsMap['FollowedTopicUpdated'] | EventsMap['Ok']],\r\n FollowTopic: [FollowTopic, EventsMap['TopicFollowed']],\r\n UnfollowTopic: [UnfollowTopic, EventsMap['TopicUnfollowed']],\r\n GetFollowedTopics: [GetFollowedTopics, EventsMap['FollowedTopics']],\r\n GetMessages: [GetMessages, EventsMap['Messages']],\r\n GetTopics: [GetTopics, EventsMap['Topics']],\r\n UpdateTopic: [UpdateTopic, EventsMap['TopicUpdated']],\r\n}","import {EventTarget, ObservableInterface} from \"./EventTarget\";\r\n\r\nexport class IndexedCollection<KeyT, ValueT> {\r\n protected _items: Map<KeyT, ValueT> = new Map();\r\n\r\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\r\n this.set(...items);\r\n }\r\n\r\n public get items(): Map<KeyT, ValueT> {\r\n return this._items;\r\n }\r\n\r\n public get length(): number {\r\n return this._items.size;\r\n }\r\n\r\n public set(...items: [KeyT, ValueT][]): void {\r\n for (const item of items) {\r\n this._items.set(item[0], item[1]);\r\n }\r\n }\r\n\r\n public get(id: KeyT): ValueT | undefined {\r\n return this.items.get(id);\r\n }\r\n\r\n public has(id: KeyT): boolean {\r\n return this.items.has(id);\r\n }\r\n\r\n public delete(...ids: KeyT[]): void {\r\n for (const id of ids) {\r\n this.items.delete(id);\r\n }\r\n }\r\n\r\n public deleteAll(): void {\r\n this.items.clear();\r\n }\r\n\r\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = null): IndexedCollection<KeyT, ValueT> {\r\n const result = new IndexedCollection<KeyT, ValueT>();\r\n let item;\r\n while (!(item = this.items.entries().next().value).done) {\r\n if (limit && result.length === limit) {\r\n break;\r\n }\r\n if (item[1][field] === valueToFind) {\r\n result.set(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public createMirror(): IndexedCollection<KeyT, ValueT> {\r\n const copy = new IndexedCollection<KeyT, ValueT>();\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n}\r\n\r\nexport class IndexedObjectCollection<T> {\r\n protected _items: IndexedCollection<string, T>;\r\n\r\n public constructor(\r\n public readonly id: keyof T | ((item: T) => any),\r\n items: T[] = [],\r\n ) {\r\n this._items = new IndexedCollection<string, T>();\r\n this.set(...items);\r\n }\r\n\r\n public get items(): T[] {\r\n return Array.from(this._items.items.values());\r\n }\r\n\r\n public get length(): number {\r\n return this._items.length;\r\n }\r\n\r\n public set(...items: T[]): void {\r\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\r\n }\r\n\r\n public get(id: any): T | undefined {\r\n return this._items.get(id);\r\n }\r\n\r\n public getAt(index: number): T | undefined {\r\n return this.items[index];\r\n }\r\n\r\n public has(id: any): boolean {\r\n return this._items.has(id);\r\n }\r\n\r\n public delete(...ids: any[]): void {\r\n this._items.delete(...ids);\r\n }\r\n\r\n public deleteAll(): void {\r\n this._items.deleteAll();\r\n }\r\n\r\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\r\n const result = new IndexedObjectCollection<T>(this.id);\r\n for (const value of this.items) {\r\n if (limit && result.length === limit) {\r\n break;\r\n }\r\n if (value[field] === valueToFind) {\r\n result.set(value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public createMirror(): IndexedObjectCollection<T> {\r\n const copy = new IndexedObjectCollection<T>(this.id);\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n\r\n protected getId(item: T): any {\r\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\r\n }\r\n}\r\n\r\ninterface ObservableCollectionEvent<KeyT> {\r\n setItems?: KeyT[],\r\n deletedItems?: KeyT[],\r\n}\r\n\r\nexport class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface {\r\n protected eventTarget: EventTarget<ObservableCollectionEvent<KeyT>>;\r\n\r\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\r\n super();\r\n this.eventTarget = new EventTarget<ObservableCollectionEvent<KeyT>>();\r\n this.set(...items);\r\n }\r\n\r\n public set(...items: [KeyT, ValueT][]) {\r\n if (items.length) {\r\n super.set(...items);\r\n this.eventTarget.emit('change', {setItems: items.map(item => item[0])});\r\n }\r\n }\r\n\r\n public delete(...ids: KeyT[]) {\r\n if (ids.length) {\r\n super.delete(...ids);\r\n this.eventTarget.emit('change', {deletedItems: ids});\r\n }\r\n }\r\n\r\n public deleteAll() {\r\n if (this.length) {\r\n const ids = this._items.keys();\r\n super.deleteAll();\r\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\r\n }\r\n }\r\n\r\n public createMirror(): ObservableIndexedCollection<KeyT, ValueT> {\r\n const copy = new ObservableIndexedCollection<KeyT, ValueT>();\r\n copy.eventTarget = this.eventTarget;\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n\r\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\r\n this.eventTarget.on(eventName, handler);\r\n return this;\r\n }\r\n\r\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\r\n this.eventTarget.once(eventName, handler);\r\n return this;\r\n }\r\n\r\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\r\n this.eventTarget.off(eventName, handler);\r\n return this;\r\n }\r\n}\r\n\r\nexport class ObservableIndexedObjectCollection<T> extends IndexedObjectCollection<T> implements ObservableInterface {\r\n protected eventTarget: EventTarget<ObservableCollectionEvent<string>>;\r\n\r\n public constructor(\r\n public readonly id: keyof T | ((item: T) => string),\r\n items: T[] = [],\r\n ) {\r\n super(id);\r\n this.eventTarget = new EventTarget();\r\n this.set(...items);\r\n }\r\n\r\n public set(...items: T[]) {\r\n if (items.length) {\r\n super.set(...items);\r\n this.eventTarget.emit('change', {setItems: items.map(item => this.getId(item))});\r\n }\r\n }\r\n\r\n public delete(...ids: string[]) {\r\n if (ids.length) {\r\n super.delete(...ids);\r\n this.eventTarget.emit('change', {deletedItems: ids});\r\n }\r\n }\r\n\r\n public deleteAll() {\r\n if (this.length) {\r\n const ids = this._items.items.keys();\r\n super.deleteAll();\r\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\r\n }\r\n }\r\n\r\n public createMirror(): IndexedObjectCollection<T> {\r\n const copy = new ObservableIndexedObjectCollection<T>(this.id);\r\n copy.eventTarget = this.eventTarget;\r\n copy._items = this._items;\r\n return copy;\r\n }\r\n\r\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\r\n this.eventTarget.on(eventName, handler);\r\n return this;\r\n }\r\n\r\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\r\n this.eventTarget.once(eventName, handler);\r\n return this;\r\n }\r\n\r\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<string>) => void): this {\r\n this.eventTarget.off(eventName, handler);\r\n return this;\r\n }\r\n}","import {IndexedCollection} from \"../IndexedObjectCollection\";\r\n\r\nexport class DeferredTask {\r\n public readonly promise: Promise<void>;\r\n public resolve: () => void;\r\n\r\n public constructor() {\r\n this.promise = new Promise<void>((resolve) => this.resolve = resolve);\r\n }\r\n}\r\n\r\nexport class PromiseRegistry {\r\n private promises = new IndexedCollection<string, Promise<any>>();\r\n\r\n public register<T = any>(promise: Promise<T>, key: string): void {\r\n this.promises.set([key, promise]);\r\n }\r\n\r\n public registerByFunction(fn: () => Promise<any>, key: string): void {\r\n this.register(fn(), key);\r\n }\r\n\r\n public get<T = any>(key: string): Promise<T> | undefined {\r\n return this.promises.get(key);\r\n }\r\n\r\n public has(key: string): boolean {\r\n return this.promises.has(key);\r\n }\r\n\r\n public notExist(key: string): boolean {\r\n return ! this.has(key);\r\n }\r\n\r\n public forget(...keys: string[]): void {\r\n this.promises.delete(...keys);\r\n }\r\n\r\n public forgetAll(): void {\r\n this.promises.deleteAll();\r\n }\r\n}","import {Message, NewMessage, Session, Topic} from \"../types/src\";\r\nimport {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\n\r\nexport enum WindowState {\r\n /**\r\n * The latest messages (those received live) are available in the history window, history has not been fetched.\r\n */\r\n LIVE,\r\n\r\n /**\r\n * The latest messages has been fetched and are available in the history window.\r\n */\r\n LATEST,\r\n\r\n /**\r\n * The historical messages have been fetched and are available in the history window.\r\n * Latest messages are not available and will not be available.\r\n */\r\n PAST,\r\n\r\n /**\r\n * The oldest messages have been fetched and are available in the history window.\r\n * Next attempts to fetch previous messages will result with no-op.\r\n */\r\n OLDEST,\r\n}\r\n\r\nexport abstract class TraversableRemoteCollection<T> extends ObservableIndexedObjectCollection<T> {\r\n /**\r\n * Current mode od collection window. To change mode, call one of available fetch methods.\r\n */\r\n public get state(): WindowState {\r\n return this.internalState.current;\r\n }\r\n\r\n protected internalState: {\r\n current: WindowState,\r\n ongoing?: WindowState,\r\n limit: number | null,\r\n oldestId: string | null,\r\n } = {\r\n current: WindowState.LIVE,\r\n ongoing: undefined,\r\n limit: 50,\r\n oldestId: null,\r\n };\r\n\r\n /**\r\n * Maximum numer of items stored in window.\r\n * Null for unlimited.\r\n */\r\n public get limit(): number | null {\r\n return this.internalState.limit;\r\n }\r\n\r\n /**\r\n * Maximum numer of items stored in window.\r\n * Null for unlimited.\r\n */\r\n public set limit(value: number | null) {\r\n this.internalState.limit = value;\r\n }\r\n\r\n public get hasLatest(): boolean {\r\n return [WindowState.LATEST, WindowState.LIVE].includes(this.state);\r\n }\r\n\r\n public get hasOldest(): boolean {\r\n return this.state === WindowState.OLDEST || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);\r\n }\r\n\r\n public abstract createMirror(): TraversableRemoteCollection<T>;\r\n\r\n public async resetToLatest(): Promise<void> {\r\n if (this.internalState.ongoing || this.internalState.current === WindowState.LATEST) {\r\n return;\r\n }\r\n\r\n this.internalState.ongoing = WindowState.LATEST;\r\n\r\n let result;\r\n\r\n try {\r\n result = await this.fetchLatestItems();\r\n } finally {\r\n this.internalState.ongoing = undefined;\r\n }\r\n\r\n this.deleteAll();\r\n this.addItems(result, 'tail');\r\n this.internalState.current = WindowState.LATEST;\r\n }\r\n\r\n public async fetchPrevious(): Promise<void> {\r\n if (this.internalState.ongoing || this.hasOldest) {\r\n return;\r\n }\r\n\r\n this.internalState.ongoing = WindowState.PAST;\r\n\r\n let result;\r\n\r\n try {\r\n result = await this.fetchItemsBefore();\r\n } finally {\r\n this.internalState.ongoing = undefined;\r\n }\r\n\r\n if (! result) {\r\n return this.resetToLatest();\r\n }\r\n\r\n if (! result.length) {\r\n const firstItem = this.getAt(0);\r\n this.internalState.oldestId = firstItem ? this.getId(firstItem) : null;\r\n\r\n await this.refreshFetchedState();\r\n\r\n // LATEST state has priority over OLDEST\r\n if (this.internalState.current === WindowState.PAST) {\r\n this.internalState.current = WindowState.OLDEST;\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.addItems(result, 'head');\r\n await this.refreshFetchedState();\r\n }\r\n\r\n public async fetchNext(): Promise<void> {\r\n if (this.internalState.ongoing || this.hasLatest) {\r\n return;\r\n }\r\n\r\n this.internalState.ongoing = WindowState.PAST;\r\n\r\n let result;\r\n\r\n try {\r\n result = await this.fetchItemsAfter();\r\n } finally {\r\n this.internalState.ongoing = undefined;\r\n }\r\n\r\n if (! result) {\r\n await this.resetToLatest();\r\n return;\r\n }\r\n\r\n if (result.length) {\r\n this.addItems(result, 'tail');\r\n await this.refreshFetchedState();\r\n return;\r\n }\r\n }\r\n\r\n protected abstract fetchLatestItems(): Promise<T[]>;\r\n\r\n protected abstract fetchItemsBefore(): Promise<T[] | null>;\r\n\r\n protected abstract fetchItemsAfter(): Promise<T[] | null>;\r\n\r\n protected abstract isLatestItemLoaded(): Promise<boolean>;\r\n\r\n protected async refreshFetchedState(): Promise<void> {\r\n this.internalState.current = (await this.isLatestItemLoaded()) ? WindowState.LATEST : WindowState.PAST;\r\n }\r\n\r\n protected addItems(newItems: T[], to: 'head' | 'tail'): void {\r\n let result;\r\n\r\n if (to === 'head') {\r\n result = this.trimItemsArrayToLimit([...newItems, ...this.items], 'tail');\r\n }\r\n\r\n if (to === 'tail') {\r\n result = this.trimItemsArrayToLimit([...this.items, ...newItems], 'head');\r\n }\r\n\r\n this.deleteAll();\r\n this.set(...result);\r\n }\r\n\r\n /**\r\n * Return array with messages of count that matching limit.\r\n */\r\n private trimItemsArrayToLimit(items: T[], from: 'head' | 'tail'): T[] {\r\n if (this.limit === null) {\r\n return items;\r\n }\r\n\r\n if (from === 'head') {\r\n return items.slice(-this.limit);\r\n }\r\n\r\n if (from === 'tail') {\r\n return items.slice(0, this.limit);\r\n }\r\n }\r\n}\r\n\r\nexport class TopicHistoryWindow extends TraversableRemoteCollection<Message> {\r\n /**\r\n * Reexported available window modes enum.\r\n */\r\n public readonly WindowState: typeof WindowState = WindowState;\r\n\r\n declare protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {\r\n traverseLock: boolean,\r\n };\r\n\r\n public constructor(\r\n private roomId: string,\r\n private topicId: string,\r\n private tracker: ChatStateTracker,\r\n bindEvents: boolean = true,\r\n ) {\r\n super('id');\r\n\r\n this.internalState.traverseLock = false;\r\n\r\n if (bindEvents) {\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\r\n }\r\n }\r\n\r\n public createMirror(): TopicHistoryWindow {\r\n const copy = new TopicHistoryWindow(this.roomId, this.topicId, this.tracker, false);\r\n copy.eventTarget = this.eventTarget;\r\n copy._items = this._items;\r\n copy.internalState = this.internalState;\r\n return copy;\r\n }\r\n\r\n public get isTraverseLocked(): boolean {\r\n return this.internalState.traverseLock;\r\n }\r\n\r\n public async setTraverseLock(lock: boolean): Promise<void> {\r\n this.internalState.traverseLock = lock;\r\n\r\n if (lock && (this.state !== WindowState.LIVE && this.state !== WindowState.LATEST)) {\r\n await super.resetToLatest();\r\n }\r\n }\r\n\r\n public async resetToLatest(): Promise<void> {\r\n if (this.internalState.traverseLock) {\r\n return;\r\n }\r\n return super.resetToLatest();\r\n }\r\n\r\n public async fetchNext(): Promise<void> {\r\n if (this.internalState.traverseLock) {\r\n return;\r\n }\r\n return super.fetchNext();\r\n }\r\n\r\n public async fetchPrevious(): Promise<void> {\r\n if (this.internalState.traverseLock) {\r\n return;\r\n }\r\n return super.fetchPrevious();\r\n }\r\n\r\n /**\r\n * For internal use.\r\n * @internal\r\n */\r\n public _updateMessageReference(refTopic: Topic): void {\r\n const refMessage = this.get(refTopic.refMessage.id);\r\n\r\n if (refMessage) {\r\n // Update referenced topic ID in message\r\n this.set({...refMessage, topicRef: refTopic.id});\r\n }\r\n }\r\n\r\n private async handleNewMessage(ev: NewMessage): Promise<void> {\r\n if (\r\n [WindowState.LATEST, WindowState.LIVE].includes(this.state)\r\n && ev.message.location.roomId === this.roomId\r\n && ev.message.location.topicId === this.topicId\r\n ) {\r\n this.addItems([ev.message], 'tail');\r\n }\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n const rooms = ev.state.rooms;\r\n\r\n if (rooms.find(room => room.id === this.roomId)) {\r\n void this.resetToLatest();\r\n } else {\r\n this.deleteAll();\r\n }\r\n }\r\n\r\n protected async fetchItemsAfter(): Promise<Message[] | null> {\r\n const afterId = this.getAt(this.length - 1)?.id;\r\n\r\n if (! afterId) {\r\n // If there is no message to refer, fetch latest\r\n return null;\r\n }\r\n\r\n const result = await this.tracker.client.send('GetMessages', {\r\n location: {roomId: this.roomId, topicId: this.topicId},\r\n after: afterId,\r\n });\r\n\r\n if (result.error) {\r\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\r\n }\r\n\r\n return result.data.messages;\r\n }\r\n\r\n protected async fetchItemsBefore(): Promise<Message[] | null> {\r\n const beforeId = this.getAt(0)?.id;\r\n\r\n if (! beforeId) {\r\n // If there is no message to refer, fetch latest\r\n return null;\r\n }\r\n\r\n const result = await this.tracker.client.send('GetMessages', {\r\n location: {roomId: this.roomId, topicId: this.topicId},\r\n before: beforeId,\r\n });\r\n\r\n if (result.error) {\r\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\r\n }\r\n\r\n return result.data.messages;\r\n }\r\n\r\n protected async fetchLatestItems(): Promise<Message[]> {\r\n const result = await this.tracker.client.send('GetMessages', {\r\n location: {roomId: this.roomId, topicId: this.topicId},\r\n });\r\n\r\n if (result.error) {\r\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\r\n }\r\n\r\n return result.data.messages;\r\n }\r\n\r\n private async getTopic(): Promise<Topic | undefined> {\r\n return (await this.tracker.rooms.getTopics(this.roomId, [this.topicId])).get(this.topicId);\r\n }\r\n\r\n private async getLatestMessageId(): Promise<string | undefined> {\r\n return (await this.getTopic())?.lastMessage?.id;\r\n }\r\n\r\n protected async isLatestItemLoaded(): Promise<boolean> {\r\n const lastMessageId = await this.getLatestMessageId();\r\n return lastMessageId ? this.has(lastMessageId) : true;\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {NewTopic, Room, RoomUpdated, Topic, TopicDeleted} from \"../types/src\";\r\nimport {IndexedCollection,} from \"../IndexedObjectCollection\";\r\nimport {TopicHistoryWindow} from \"./TopicHistoryWindow\";\r\n\r\nexport class RoomMessagesHistory {\r\n private historyWindows = new IndexedCollection<string, TopicHistoryWindow>();\r\n private traverseLock: boolean = false;\r\n\r\n public constructor(\r\n private room: Room,\r\n private tracker: ChatStateTracker,\r\n ) {\r\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\r\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n\r\n this.updateTraverseLock(this.room);\r\n\r\n if (this.room.defaultTopic) {\r\n this.createHistoryWindowForTopic(this.room.defaultTopic);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a history window object for the given topic ID, allowing you to view message history.\r\n */\r\n public async getMessagesWindow(topicId: string): Promise<TopicHistoryWindow | undefined> {\r\n let historyWindow = this.historyWindows.get(topicId);\r\n\r\n if (!historyWindow) {\r\n const topic = (await this.tracker.rooms.getTopics(this.room.id, [topicId])).get(topicId);\r\n\r\n if (topic) {\r\n this.createHistoryWindowForTopic(topic);\r\n }\r\n }\r\n\r\n return this.historyWindows.get(topicId);\r\n }\r\n\r\n private async handleRoomUpdated(ev: RoomUpdated): Promise<void> {\r\n if (this.room.id === ev.room.id) {\r\n this.room = ev.room;\r\n\r\n this.updateTraverseLock(ev.room);\r\n\r\n if (ev.room.defaultTopic) {\r\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\r\n }\r\n\r\n for (const [, window] of Array.from(this.historyWindows.items)) {\r\n await window.setTraverseLock(this.traverseLock);\r\n }\r\n }\r\n }\r\n\r\n private handleNewTopic(ev: NewTopic): void {\r\n if (this.room.id === ev.roomId) {\r\n this.createHistoryWindowForTopic(ev.topic);\r\n }\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n if (this.room.id === ev.location.roomId) {\r\n this.historyWindows.delete(ev.location.topicId);\r\n }\r\n }\r\n\r\n private createHistoryWindowForTopic(topic: Topic): void {\r\n if (this.historyWindows.has(topic.id)) {\r\n return;\r\n }\r\n\r\n const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);\r\n\r\n void historyWindow.setTraverseLock(this.traverseLock);\r\n\r\n this.historyWindows.set([topic.id, historyWindow]);\r\n\r\n // If new topic refers to some message from this room, update other structures\r\n if (topic.refMessage) {\r\n const refHistoryWindow = this.historyWindows.get(topic.refMessage.location.topicId);\r\n refHistoryWindow?._updateMessageReference(topic);\r\n }\r\n }\r\n\r\n private updateTraverseLock(room: Room): void {\r\n this.traverseLock = room.history.mode === 'Ephemeral';\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n ChatLocation,\r\n NewMessage,\r\n FollowedTopic,\r\n TopicFollowed,\r\n TopicUnfollowed,\r\n RoomDeleted,\r\n RoomLeft,\r\n TopicDeleted,\r\n FollowedTopicUpdated, RoomJoined, NewTopic, Session, Room, MessageType,\r\n} from \"../types/src\";\r\nimport {\r\n IndexedCollection,\r\n ObservableIndexedObjectCollection\r\n} from \"../IndexedObjectCollection\";\r\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\r\nimport {RoomMessagesHistory} from \"./RoomMessagesHistory\";\r\n\r\nexport class MessagesManager {\r\n private readonly roomHistories = new IndexedCollection<string, RoomMessagesHistory>();\r\n private readonly followedTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<FollowedTopic>>();\r\n private readonly followedTopicsPromises = new PromiseRegistry();\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\r\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\r\n this.tracker.client.on('FollowedTopicUpdated', ev => this.handleFollowedTopicUpdated(ev));\r\n this.tracker.client.on('TopicFollowed', ev => this.handleTopicFollowed(ev));\r\n this.tracker.client.on('TopicUnfollowed', ev => this.handleTopicUnfollowed(ev));\r\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n }\r\n\r\n /**\r\n * Get history manager for given room ID.\r\n */\r\n public async getRoomHistory(roomId: string): Promise<RoomMessagesHistory | undefined> {\r\n await this.deferredSession.promise;\r\n return this.roomHistories.get(roomId);\r\n }\r\n\r\n /**\r\n * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.\r\n * Then you can get them using getRoomFollowedTopics().\r\n * @see getRoomFollowedTopics\r\n */\r\n public async cacheSpaceFollowedTopics(spaceId: string | null): Promise<void> {\r\n if (spaceId && ! (await this.tracker.spaces.get()).has(spaceId)) {\r\n throw new Error(`You are not in space ${spaceId}`);\r\n }\r\n\r\n const roomIds = (await this.tracker.rooms.get()).findBy('spaceId', spaceId).items.map(room => room.id);\r\n\r\n if (! roomIds.length) {\r\n // We don't need to ping server for followed topics for this space, if user has no joined rooms\r\n return;\r\n }\r\n\r\n const resultPromise = this.tracker.client.send('GetFollowedTopics', {location: {spaceId}});\r\n\r\n roomIds.forEach(roomId => this.followedTopicsPromises.register(resultPromise, roomId));\r\n\r\n const result = await resultPromise;\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.setFollowedTopicsArray(roomIds, result.data.followedTopics);\r\n }\r\n\r\n /**\r\n * Get followed topics for the given room.\r\n * @return Undefined if you are not in the room, collection otherwise.\r\n */\r\n public async getRoomFollowedTopics(roomId: string): Promise<ObservableIndexedObjectCollection<FollowedTopic> | undefined> {\r\n if (! (await this.tracker.rooms.get()).has(roomId)) {\r\n return undefined;\r\n }\r\n\r\n if (! this.followedTopics.has(roomId)) {\r\n if (this.followedTopicsPromises.notExist(roomId)) {\r\n this.followedTopicsPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {roomId}});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.setFollowedTopicsArray([roomId], result.data.followedTopics);\r\n }, roomId);\r\n }\r\n\r\n await this.followedTopicsPromises.get(roomId);\r\n }\r\n\r\n return this.followedTopics.get(roomId);\r\n }\r\n\r\n /**\r\n * Batch acknowledge all missed messages from any topics in given room.\r\n */\r\n public async ackRoomFollowedTopics(roomId: string): Promise<void> {\r\n const collection = await this.getRoomFollowedTopics(roomId);\r\n\r\n if (! collection) {\r\n return;\r\n }\r\n\r\n for (const followedTopic of collection.items) {\r\n if (followedTopic.missed) {\r\n await this.tracker.client.send('Ack', {location: followedTopic.location});\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculate missed messages from any topic in given room.\r\n * @return Undefined if you are not in room.\r\n */\r\n public async calculateRoomMissedMessages(roomId: string): Promise<number | undefined> {\r\n const collection = await this.getRoomFollowedTopics(roomId);\r\n\r\n if (collection) {\r\n return collection.items.reduce(\r\n (previousValue, currentValue) => previousValue + (currentValue.missed ?? 0),\r\n 0,\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * For internal use. If you want to delete the message, execute a proper command on client object.\r\n * @internal\r\n */\r\n public _deleteByTopicIds(roomId: string, ...topicIds: string[]): void {\r\n this.followedTopics.get(roomId)?.delete(...topicIds);\r\n }\r\n\r\n private createHistoryForNewRoom(room: Room): void {\r\n this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);\r\n }\r\n\r\n private handleNewMessage(ev: NewMessage): void {\r\n this.updateLocallyFollowedTopicOnNewMessage(ev);\r\n }\r\n\r\n private handleFollowedTopicUpdated(ev: FollowedTopicUpdated): void {\r\n this.followedTopics.get(ev.followedTopic.location.roomId)?.set(ev.followedTopic);\r\n }\r\n\r\n private handleTopicFollowed(ev: TopicFollowed): void {\r\n this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);\r\n }\r\n\r\n private handleTopicUnfollowed(ev: TopicUnfollowed): void {\r\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\r\n }\r\n\r\n private handleRoomDeleted(ev: RoomDeleted): void {\r\n this.roomHistories.delete(ev.id);\r\n this.clearRoomFollowedTopicsStructures(ev.id);\r\n }\r\n\r\n private handleRoomJoin(ev: RoomJoined): void {\r\n this.createHistoryForNewRoom(ev.room)\r\n this.clearRoomFollowedTopicsStructures(ev.room.id);\r\n }\r\n\r\n private handleRoomLeft(ev: RoomLeft): void {\r\n this.roomHistories.delete(ev.id);\r\n this.clearRoomFollowedTopicsStructures(ev.id);\r\n }\r\n\r\n private async handleNewTopic(ev: NewTopic): Promise<void> {\r\n if (this.followedTopics.has(ev.roomId)) {\r\n // Check if the new topic is followed by user\r\n // only if client asked for followed topics list before for this room\r\n const result = await this.tracker.client.send(\r\n 'GetFollowedTopics',\r\n {location: {roomId: ev.roomId, topicId: ev.topic.id}},\r\n );\r\n const followedTopic = result.data.followedTopics[0];\r\n if (followedTopic) {\r\n this.followedTopics.get(ev.roomId).set(followedTopic);\r\n }\r\n }\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.followedTopics.deleteAll();\r\n this.followedTopicsPromises.forgetAll();\r\n this.roomHistories.deleteAll();\r\n ev.state.rooms.forEach(room => this.createHistoryForNewRoom(room));\r\n this.deferredSession.resolve();\r\n }\r\n\r\n private updateLocallyFollowedTopicOnNewMessage(ev: NewMessage): void {\r\n const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);\r\n const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);\r\n\r\n if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {\r\n // Skip if we don't follow this room or targeted topic or the message is ephemeral\r\n return;\r\n }\r\n\r\n const isMe = ev.message.author.user.id === this.tracker.me?.id;\r\n\r\n let update: Partial<FollowedTopic>;\r\n\r\n if (isMe) {\r\n // Reset missed messages count if new message is authored by me\r\n update = {missed: 0, lastAckMessageId: ev.message.id};\r\n } else {\r\n // ...add 1 otherwise\r\n update = {missed: followedTopic.missed === null ? null : followedTopic.missed + 1};\r\n }\r\n\r\n roomFollowedTopics.set({...followedTopic, ...update});\r\n }\r\n\r\n private setFollowedTopicsArray(roomIds: string[], followedTopics: FollowedTopic[]): void {\r\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\r\n\r\n // Reassign followed topics to limit collection change event emit\r\n followedTopics.forEach(followedTopic => {\r\n roomToTopics[followedTopic.location.roomId] ??= [];\r\n roomToTopics[followedTopic.location.roomId].push(followedTopic);\r\n });\r\n\r\n roomIds.forEach(roomId => {\r\n if (! this.followedTopics.has(roomId)) {\r\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\r\n followedTopic => followedTopic.location.topicId\r\n )]);\r\n }\r\n\r\n if (roomToTopics[roomId]) {\r\n this.followedTopics.get(roomId).set(...roomToTopics[roomId]);\r\n }\r\n });\r\n }\r\n\r\n private clearRoomFollowedTopicsStructures(roomId: string): void {\r\n this.followedTopics.delete(roomId);\r\n this.followedTopicsPromises.forget(roomId);\r\n }\r\n}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\nimport {\r\n NewMessage,\r\n NewTopic,\r\n Room, RoomDeleted,\r\n RoomJoined, RoomLeft,\r\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\r\n RoomMemberUpdated, RoomUpdated, Session, SpaceDeleted, SpaceLeft, SpaceMemberLeft,\r\n SpaceMemberUpdated,\r\n Topic,\r\n TopicDeleted, TopicUpdated,\r\n UserUpdated,\r\n} from \"../types/src\";\r\nimport {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\r\nimport {MessagesManager} from \"./MessagesManager\";\r\n\r\nexport class RoomsManager {\r\n public readonly messages: MessagesManager;\r\n\r\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\r\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\r\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\r\n private readonly deferredSession = new DeferredTask();\r\n private readonly membersPromises = new PromiseRegistry();\r\n private readonly topicsPromises = new PromiseRegistry();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n this.messages = new MessagesManager(tracker);\r\n\r\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\r\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\r\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\r\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('TopicUpdated', ev => this.handleTopicUpdated(ev));\r\n this.tracker.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\r\n this.tracker.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\r\n this.tracker.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\r\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\r\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n }\r\n\r\n /**\r\n * Get collection of room members.\r\n */\r\n public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {\r\n if (this.membersPromises.notExist(roomId)) {\r\n this.membersPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleRoomMembers(result.data);\r\n }, roomId);\r\n }\r\n\r\n await this.membersPromises.get(roomId);\r\n return this.members.get(roomId);\r\n }\r\n\r\n /**\r\n * Get a room member representing the current user.\r\n */\r\n public async getMe(roomId: string): Promise<RoomMember | undefined> {\r\n const userId = (await this.tracker.getMe()).id;\r\n\r\n if (! this.list.has(roomId)) {\r\n // User is not in passed room.\r\n return undefined;\r\n }\r\n\r\n const members = await this.getMembers(roomId);\r\n return members?.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);\r\n }\r\n\r\n /**\r\n * Get collection of all the rooms you are in.\r\n */\r\n public async get(): Promise<ObservableIndexedObjectCollection<Room>> {\r\n await this.deferredSession.promise;\r\n return this.list;\r\n }\r\n\r\n /**\r\n * Get a collection of locally cached Topic objects for given room.\r\n * You can pass topic ids as second argument, to try to fetch them from the server.\r\n */\r\n public async getTopics(roomId: string, tryToFetchTopicIds?: string[]): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\r\n await this.deferredSession.promise;\r\n\r\n if (tryToFetchTopicIds?.length) {\r\n // Topic can be fetched if it isn't already cached and fetch is not already in progress\r\n const canFetch = (topicId: string) => ! this.topics.get(roomId)?.has(topicId) && ! this.topicsPromises.has(roomId + topicId);\r\n const idsToFetch = tryToFetchTopicIds.filter(canFetch);\r\n\r\n if (idsToFetch.length) {\r\n const promise = this.tracker\r\n .client\r\n .send('GetTopics', {roomId, topicIds: idsToFetch})\r\n .then(result => this.topics.get(result.data.location.roomId)?.set(...result.data.topics));\r\n\r\n idsToFetch.forEach(topicId => this.topicsPromises.register(promise, roomId + topicId));\r\n }\r\n\r\n for (const topicId of tryToFetchTopicIds) {\r\n await this.topicsPromises.get(roomId + topicId);\r\n }\r\n }\r\n\r\n return this.topics.get(roomId);\r\n }\r\n\r\n private deleteRoom(...roomIds: string[]): void {\r\n this.list.delete(...roomIds);\r\n this.members.delete(...roomIds);\r\n this.membersPromises.forget(...roomIds);\r\n\r\n for (const roomId of roomIds) {\r\n const topicIds: string[] = this.topics.get(roomId)?.items.map(topic => topic.id) ?? [];\r\n this.messages._deleteByTopicIds(roomId, ...topicIds);\r\n }\r\n\r\n this.topics.delete(...roomIds);\r\n }\r\n\r\n private deleteRoomsBySpaceId(spaceId: string): void {\r\n this.deleteRoom(\r\n ...this.list.findBy('spaceId', spaceId).items.map(room => room.id)\r\n );\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\r\n // Update members of rooms related to this space\r\n for (const room of this.list.findBy('spaceId', ev.spaceId).items) {\r\n const roomMembers = this.members.get(room.id);\r\n\r\n if (! roomMembers || ! roomMembers.has(ev.userId)) {\r\n // Skip update if member list for this room is not loaded\r\n // or user is not in room\r\n continue;\r\n }\r\n\r\n const roomMember = roomMembers.get(ev.userId);\r\n const user = roomMember.spaceMember.user;\r\n\r\n // Update space member but first fill user object (it's null in event object)\r\n roomMember.spaceMember = {...ev.member, user};\r\n roomMembers.set(roomMember);\r\n }\r\n }\r\n\r\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\r\n this.list\r\n .findBy('spaceId', ev.spaceId).items\r\n .forEach(room => this.members.get(room.id)?.delete(ev.userId));\r\n }\r\n\r\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\r\n if (! this.members.has(ev.roomId)) {\r\n // We do not track member list for this room.\r\n return;\r\n }\r\n\r\n const members = this.members.get(ev.roomId);\r\n const member = members.get(ev.userId);\r\n const newMember = ev.member;\r\n const user = member.spaceMember?.user ?? member.user;\r\n\r\n // Preserving user object, because it's not included in event\r\n if (newMember.spaceMember) {\r\n newMember.spaceMember.user = user;\r\n } else {\r\n newMember.user = user;\r\n }\r\n\r\n members.set(newMember);\r\n }\r\n\r\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\r\n this.deleteRoomsBySpaceId(ev.id);\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n const collection = this.topics.get(ev.location.roomId);\r\n collection.delete(ev.location.topicId);\r\n\r\n const room = this.list.get(ev.location.roomId);\r\n if (room.defaultTopic?.id === ev.location.topicId) {\r\n this.list.set({...room, defaultTopic: null});\r\n }\r\n }\r\n\r\n private handleNewTopic(ev: NewTopic): void {\r\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\r\n }\r\n\r\n private addJoinedRoomTopics(roomId: string, ...topics: Topic[]): void {\r\n if (this.topics.has(roomId)) {\r\n this.topics.get(roomId).set(...topics);\r\n } else {\r\n this.topics.set([roomId, new ObservableIndexedObjectCollection<Topic>('id', topics)]);\r\n }\r\n }\r\n\r\n private handleRoomJoined(ev: RoomJoined): void {\r\n this.addJoinedRooms(ev.room);\r\n }\r\n\r\n private handleRoomUpdated(ev: RoomUpdated): void {\r\n if (this.list.has(ev.room.id)) {\r\n this.list.set(ev.room);\r\n }\r\n }\r\n\r\n private handleRoomDeleted(ev: RoomDeleted): void {\r\n this.deleteRoom(ev.id);\r\n }\r\n\r\n private handleTopicUpdated(ev: TopicUpdated): void {\r\n const room = this.list.get(ev.location.roomId);\r\n\r\n if (this.topics.get(ev.location.roomId)?.has(ev.topic.id)) {\r\n this.topics.get(ev.location.roomId).set(ev.topic);\r\n }\r\n\r\n if (room.defaultTopic.id === ev.topic.id) {\r\n room.defaultTopic = ev.topic;\r\n this.list.set(room);\r\n }\r\n }\r\n\r\n private addJoinedRooms(...rooms: Room[]): void {\r\n for (const room of rooms) {\r\n if (room.defaultTopic) {\r\n this.addJoinedRoomTopics(room.id, room.defaultTopic);\r\n }\r\n\r\n if (room.type === 'Pm' && room.recipients) {\r\n // Treat PM recipients as normal room members.\r\n // We are registering fake promise in `memberPromises`\r\n // because GetMembers are not supported for PM rooms.\r\n this.handleRoomMembers({\r\n id: room.id,\r\n members: room.recipients.map(user => ({user, spaceMember: null, roles: null})),\r\n });\r\n this.membersPromises.register(Promise.resolve(), room.id);\r\n }\r\n }\r\n this.list.set(...rooms);\r\n }\r\n\r\n private handleRoomLeft(ev: RoomLeft): void {\r\n this.deleteRoom(ev.id);\r\n }\r\n\r\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\r\n if (this.members.has(ev.roomId)) {\r\n this.members.get(ev.roomId).set(ev.member);\r\n }\r\n }\r\n\r\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\r\n if (this.members.has(ev.roomId)) {\r\n this.members.get(ev.roomId).delete(ev.userId);\r\n }\r\n }\r\n\r\n private handleRoomMembers(ev: RoomMembers): void {\r\n if (! this.members.has(ev.id)) {\r\n this.members.set([\r\n ev.id,\r\n new ObservableIndexedObjectCollection(\r\n member => member.user?.id ?? member.spaceMember.user.id,\r\n ev.members,\r\n )\r\n ]);\r\n }\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.list.deleteAll();\r\n this.topics.deleteAll();\r\n this.topicsPromises.forgetAll();\r\n this.members.deleteAll();\r\n this.membersPromises.forgetAll();\r\n\r\n this.addJoinedRooms(...ev.state.rooms);\r\n\r\n this.deferredSession.resolve();\r\n }\r\n\r\n private handleUserUpdated(ev: UserUpdated): void {\r\n // Update room members users\r\n this.members.items.forEach((members) => {\r\n const member = members.get(ev.user.id);\r\n\r\n if (! member) {\r\n // Skip room; updated user is not here\r\n return;\r\n }\r\n\r\n const newMember: RoomMember = {...member};\r\n\r\n if (member.user) {\r\n newMember.user = ev.user;\r\n } else {\r\n newMember.spaceMember.user = ev.user;\r\n }\r\n\r\n members.set(newMember);\r\n });\r\n\r\n // Update recipients users\r\n const newRooms: Room[] = [];\r\n this.list.items.forEach(room => {\r\n if (room.recipients?.some(user => user.id === ev.user.id)) {\r\n room.recipients = room.recipients.map(user => user.id === ev.user.id ? ev.user : user);\r\n newRooms.push({...room});\r\n }\r\n });\r\n this.list.set(...newRooms);\r\n }\r\n\r\n private handleNewMessage(ev: NewMessage): void {\r\n const topics = this.topics.get(ev.message.location.roomId);\r\n const topic = topics?.get(ev.message.location.topicId);\r\n\r\n if (!topic) {\r\n return; // No topic found, nothing to update\r\n }\r\n\r\n const newTopic = {\r\n ...topic,\r\n messageCount: topic.messageCount + 1,\r\n lastMessage: ev.message,\r\n };\r\n\r\n topics.set(newTopic);\r\n const room = this.list.get(ev.message.location.roomId);\r\n\r\n if (room.defaultTopic?.id === ev.message.location.topicId) {\r\n this.list.set({ ...room, defaultTopic: newTopic });\r\n }\r\n }\r\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\";\r\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\nimport {\r\n NewRole,\r\n NewRoom,\r\n Role,\r\n RoleDeleted,\r\n RoleUpdated,\r\n RoomDeleted,\r\n RoomSummary,\r\n RoomSummaryUpdated,\r\n RoomUpdated,\r\n Session,\r\n Space,\r\n SpaceDeleted,\r\n SpaceJoined,\r\n SpaceLeft,\r\n SpaceMember,\r\n SpaceMemberJoined,\r\n SpaceMemberLeft,\r\n SpaceMembers,\r\n SpaceMemberUpdated,\r\n SpaceRooms,\r\n SpaceUpdated,\r\n UserUpdated\r\n} from \"../types/src\";\r\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\r\nimport {reorderRolesOnPriorityUpdate} from \"./functions\";\r\n\r\nexport class SpacesManager {\r\n private readonly list = new ObservableIndexedObjectCollection<Space>('id');\r\n private readonly roles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\r\n private readonly rooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\r\n private readonly roomIdToSpaceId = new IndexedCollection<string, string>();\r\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\r\n private readonly deferredSession = new DeferredTask();\r\n private readonly roomsPromises = new PromiseRegistry();\r\n private readonly membersPromises = new PromiseRegistry();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n this.tracker.client.on('NewRoom', ev => this.handleNewRoom(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceUpdated', ev => this.handleSpaceUpdated(ev));\r\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\r\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\r\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\r\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\r\n this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\r\n this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));\r\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\r\n this.tracker.client.on('RoleUpdated', ev => this.handleRoleUpdated(ev));\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n }\r\n\r\n /**\r\n * Get collection of all the spaces you are in.\r\n */\r\n public async get(): Promise<ObservableIndexedObjectCollection<Space>> {\r\n await this.deferredSession.promise;\r\n return this.list;\r\n }\r\n\r\n /**\r\n * Get collection of space roles.\r\n */\r\n public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {\r\n await this.deferredSession.promise;\r\n return this.roles.get(spaceId);\r\n }\r\n\r\n /**\r\n * Get collection of the all available rooms inside given space.\r\n */\r\n public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {\r\n if (this.roomsPromises.notExist(spaceId)) {\r\n this.roomsPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleSpaceRooms(result.data);\r\n }, spaceId);\r\n }\r\n\r\n await this.roomsPromises.get(spaceId);\r\n return this.rooms.get(spaceId);\r\n }\r\n\r\n /**\r\n * Get collection of space members.\r\n */\r\n public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {\r\n if (this.membersPromises.notExist(spaceId)) {\r\n this.membersPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleSpaceMembers(result.data);\r\n }, spaceId);\r\n }\r\n\r\n await this.membersPromises.get(spaceId);\r\n return this.members.get(spaceId);\r\n }\r\n\r\n /**\r\n * Get a space member representing the current user.\r\n */\r\n public async getMe(spaceId: string): Promise<SpaceMember | undefined> {\r\n const userId = (await this.tracker.getMe()).id;\r\n\r\n if (! this.list.has(spaceId)) {\r\n // User is not in passed space.\r\n return undefined;\r\n }\r\n\r\n const members = await this.getMembers(spaceId);\r\n return members?.items.find(member => member.user.id === userId);\r\n }\r\n\r\n private handleNewRole(ev: NewRole): void {\r\n const collection = this.roles.get(ev.spaceId);\r\n collection.set(ev.role);\r\n this.list.get(ev.spaceId).roles = collection.items;\r\n }\r\n\r\n private handleNewRoom(ev: NewRoom): void {\r\n this.rooms.get(ev.spaceId)?.set(ev.summary);\r\n this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);\r\n }\r\n\r\n private handleRoomUpdated(ev: RoomUpdated): void {\r\n if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {\r\n const rooms = this.rooms.get(ev.room.spaceId);\r\n rooms.set({\r\n ...rooms.get(ev.room.id),\r\n name: ev.room.name,\r\n description: ev.room.description,\r\n } as RoomSummary);\r\n }\r\n }\r\n\r\n private async handleRoomDeleted(ev: RoomDeleted): Promise<void> {\r\n const spaceId = this.roomIdToSpaceId.get(ev.id);\r\n this.roomIdToSpaceId.delete(ev.id);\r\n\r\n if (! spaceId) {\r\n return;\r\n }\r\n\r\n const space = this.list.get(spaceId);\r\n let spaceChanged = false;\r\n\r\n this.rooms.get(spaceId)?.delete(ev.id);\r\n\r\n if (space.systemRoom === ev.id) {\r\n space.systemRoom = null;\r\n spaceChanged = true;\r\n }\r\n\r\n if (space.defaultRooms.includes(ev.id)) {\r\n space.defaultRooms = space.defaultRooms.filter(roomId => roomId !== ev.id);\r\n spaceChanged = true;\r\n }\r\n\r\n if (spaceChanged) {\r\n this.list.set(space);\r\n }\r\n }\r\n\r\n private handleRoleDeleted(ev: RoleDeleted): void {\r\n const collection = this.roles.get(ev.spaceId);\r\n collection.delete(ev.id);\r\n this.list.get(ev.spaceId).roles = collection.items;\r\n }\r\n\r\n private handleSpaceUpdated(ev: SpaceUpdated): void {\r\n this.list.set(ev.space);\r\n }\r\n\r\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\r\n const roomIds = this.rooms.get(ev.id)?.items.map(item => item.id) ?? [];\r\n this.roomIdToSpaceId.delete(...roomIds);\r\n\r\n this.roles.delete(ev.id);\r\n this.members.delete(ev.id);\r\n this.membersPromises.forget(ev.id);\r\n this.rooms.delete(ev.id);\r\n this.roomsPromises.forget(ev.id);\r\n this.list.delete(ev.id);\r\n }\r\n\r\n private handleSpaceJoined(ev: SpaceJoined): void {\r\n this.addJoinedSpaces(ev.space);\r\n }\r\n\r\n private addJoinedSpaces(...spaces: Space[]): void {\r\n this.roles.set(...(spaces.map(space => [\r\n space.id,\r\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\r\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\r\n this.list.set(...spaces);\r\n }\r\n\r\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\r\n if (this.members.has(ev.spaceId)) {\r\n this.members.get(ev.spaceId).set(ev.member);\r\n }\r\n }\r\n\r\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\r\n if (this.members.has(ev.spaceId)) {\r\n this.members.get(ev.spaceId).delete(ev.userId);\r\n }\r\n }\r\n\r\n private handleSpaceMembers(ev: SpaceMembers): void {\r\n if (! this.members.has(ev.id)) {\r\n this.members.set([\r\n ev.id,\r\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\r\n ]);\r\n }\r\n }\r\n\r\n private handleSpaceRooms(ev: SpaceRooms): void {\r\n if (!this.rooms.has(ev.id)) {\r\n this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\r\n ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));\r\n }\r\n }\r\n\r\n private async handleRoomSummaryUpdated(ev: RoomSummaryUpdated): Promise<void> {\r\n const spaceId = this.roomIdToSpaceId.get(ev.summary.id);\r\n const summariesPromise = this.roomsPromises.get(spaceId);\r\n\r\n /**\r\n * Update summary only if the list was already loaded.\r\n * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.\r\n */\r\n if (spaceId && summariesPromise) {\r\n await summariesPromise;\r\n\r\n const summaries = this.rooms.get(spaceId);\r\n const oldSummary = summaries.get(ev.summary.id);\r\n let newSummary: RoomSummary;\r\n\r\n if (oldSummary) {\r\n newSummary = {...oldSummary, ...ev.summary};\r\n } else {\r\n newSummary = ev.summary;\r\n }\r\n\r\n summaries.set(newSummary);\r\n }\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\r\n if (this.members.has(ev.spaceId)) {\r\n const members = this.members.get(ev.spaceId);\r\n const member = members.get(ev.userId);\r\n members.set({...ev.member, user: member.user});\r\n }\r\n }\r\n\r\n private handleRoleUpdated(ev: RoleUpdated): void {\r\n const roles = this.roles.get(ev.spaceId);\r\n const oldRole = roles.get(ev.role.id);\r\n const newRole = ev.role;\r\n const rolesToUpdate = [newRole];\r\n\r\n if (oldRole.priority !== newRole.priority) {\r\n rolesToUpdate.push(\r\n ...reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)\r\n );\r\n }\r\n\r\n this.roles.get(ev.spaceId).set(...rolesToUpdate);\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.list.deleteAll();\r\n this.roles.deleteAll();\r\n this.rooms.deleteAll();\r\n this.roomsPromises.forgetAll();\r\n this.members.deleteAll();\r\n this.membersPromises.forgetAll();\r\n this.roomIdToSpaceId.deleteAll();\r\n\r\n this.addJoinedSpaces(...ev.state.spaces);\r\n\r\n this.deferredSession.resolve();\r\n }\r\n\r\n private handleUserUpdated(ev: UserUpdated): void {\r\n this.members.items.forEach((members) => {\r\n const member = members.get(ev.user.id);\r\n\r\n if (! member) {\r\n // Skip space; updated user is not here\r\n return;\r\n }\r\n\r\n members.set({...member, user: ev.user});\r\n });\r\n }\r\n}","export enum Layer {\r\n Global,\r\n Space,\r\n Room,\r\n Topic,\r\n}\r\n\r\nexport class PermissionDefinition {\r\n value: number;\r\n maxLayer: Layer;\r\n}\r\n\r\nexport class Permissions {\r\n public static readonly list = {\r\n Root: {value: 1 << 0, maxLayer: Layer.Room},\r\n CreateSpaces: {value: 1 << 1, maxLayer: Layer.Global},\r\n ManageSpace: {value: 1 << 2, maxLayer: Layer.Space},\r\n ManageSpaceRoles: {value: 1 << 3, maxLayer: Layer.Space},\r\n ManageRoom: {value: 1 << 4, maxLayer: Layer.Room},\r\n CreateTopics: {value: 1 << 5, maxLayer: Layer.Room},\r\n ManageTopic: {value: 1 << 6, maxLayer: Layer.Topic},\r\n ManageSpaceMembers: {value: 1 << 7, maxLayer: Layer.Space},\r\n ManageRoomMembers: {value: 1 << 8, maxLayer: Layer.Room},\r\n CreateMessages: {value: 1 << 9, maxLayer: Layer.Topic},\r\n ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},\r\n CreateSpaceRooms: {value: 1 << 11, maxLayer: Layer.Space},\r\n ManageSpaceRooms: {value: 1 << 12, maxLayer: Layer.Space},\r\n CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},\r\n ManageEmoticon: {value: 1 << 14, maxLayer: Layer.Space},\r\n ManageBan: {value: 1 << 15, maxLayer: Layer.Room},\r\n Kick: {value: 1 << 16, maxLayer: Layer.Room},\r\n ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},\r\n };\r\n\r\n public static getNames(): (keyof typeof this.list)[] {\r\n return Object.keys(this.list) as any;\r\n }\r\n\r\n public static getByName(name: keyof typeof this.list): PermissionDefinition | undefined {\r\n return this.list[name];\r\n }\r\n\r\n public static canBeDefinedOnLayer(permissionName: keyof typeof this.list, layer: Layer): boolean {\r\n const def = this.getByName(permissionName);\r\n\r\n if (! def) {\r\n throw new Error(`Invalid permission name: ${permissionName}`);\r\n }\r\n\r\n return layer <= this.getByName(permissionName).maxLayer;\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n ChatLocation,\r\n PermissionOverwrites, PermissionOverwritesTarget,\r\n PermissionOverwritesUpdated,\r\n PermissionOverwritesValue,\r\n RoleDeleted,\r\n RoomDeleted,\r\n RoomLeft, RoomMember, RoomMemberUpdated, Session,\r\n SpaceDeleted,\r\n SpaceLeft, SpaceMember,\r\n SpaceMemberUpdated,\r\n TopicDeleted,\r\n} from \"../types/src\";\r\nimport {EventHandler, EventTarget} from \"../EventTarget\";\r\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\r\nimport {Permissions} from \"../Permissions\";\r\nimport {PromiseRegistry} from \"./AsyncUtils\";\r\n\r\nconst getOvId = (\r\n location: ChatLocation,\r\n target?: PermissionOverwritesTarget,\r\n) => [location.spaceId, location.roomId, location.topicId, target?.type, target?.userId, target?.roleId].filter(Boolean).join('/');\r\n\r\nconst getOvIdByObject\r\n = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);\r\n\r\ninterface CheckPermissionsResult {\r\n /**\r\n * @deprecated Use `hasAll` instead.\r\n */\r\n ok: boolean;\r\n hasAll: boolean;\r\n hasAny: boolean;\r\n missing: string[];\r\n}\r\n\r\nexport class PermissionsManager extends EventTarget {\r\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\r\n private readonly overwritesPromises = new PromiseRegistry();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\r\n super();\r\n this.tracker.client.on('PermissionOverwrites', ev => this.handlePermissionOverwrites(ev));\r\n this.tracker.client.on('PermissionOverwritesUpdated', ev => this.handlePermissionOverwrites(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('RoomLeft', ev => this.handleRoomDeleted(ev));\r\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\r\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\r\n this.tracker.client.on('Session', ev => this.handleSession(ev));\r\n }\r\n\r\n public async getOverwrites(\r\n location: ChatLocation,\r\n target: PermissionOverwritesTarget,\r\n ): Promise<PermissionOverwrites | undefined> {\r\n this.validateLocation(location);\r\n\r\n const id = getOvId(location, target);\r\n\r\n if (this.overwritesPromises.notExist(id)) {\r\n this.overwritesPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send(\r\n 'GetPermissionOverwrites',\r\n {location, target},\r\n );\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handlePermissionOverwrites(result.data);\r\n }, id);\r\n }\r\n\r\n await this.overwritesPromises.get(id);\r\n return this.overwrites.get(id);\r\n }\r\n\r\n public on(eventName: 'change', handler: EventHandler<any>): this {\r\n return super.on(eventName, handler);\r\n }\r\n\r\n public async check(\r\n permissionNames: (keyof typeof Permissions.list)[],\r\n location: ChatLocation,\r\n ): Promise<CheckPermissionsResult> {\r\n if (! permissionNames.length) {\r\n throw new Error('Permission names array cannot be empty');\r\n }\r\n\r\n const ownedPermissions = await this.calculatePermissions(location);\r\n const missing: string[] = [];\r\n\r\n permissionNames.forEach(name => {\r\n if (~ ownedPermissions & Permissions.getByName(name).value) {\r\n missing.push(name as string);\r\n }\r\n });\r\n\r\n return {\r\n ok: missing.length === 0,\r\n hasAll: missing.length === 0,\r\n hasAny: missing.length < permissionNames.length,\r\n missing,\r\n };\r\n }\r\n\r\n public async calculatePermissions(location: ChatLocation): Promise<number> {\r\n this.validateLocation(location);\r\n\r\n const userId = (await this.tracker.getMe()).id;\r\n const [spaceMember, roomMember] = await this.fetchMembersOrFail(location);\r\n const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];\r\n const promises: Promise<PermissionOverwritesValue>[] = [\r\n // Global user overwrites\r\n this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),\r\n ];\r\n\r\n if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {\r\n const filterLocation: ChatLocation = {spaceId: location.spaceId};\r\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\r\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\r\n }\r\n\r\n if (location.roomId && (await this.tracker.rooms.get())?.has(location.roomId)) {\r\n const filterLocation: ChatLocation = {spaceId: location.spaceId, roomId: location.roomId};\r\n if (userRoles.length) {\r\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\r\n }\r\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\r\n }\r\n\r\n if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {\r\n if (userRoles.length) {\r\n promises.push(this.collectRoleOverwrites(location, userRoles));\r\n }\r\n promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));\r\n }\r\n\r\n return this.resolveOverwritesHierarchy(await Promise.all(promises));\r\n }\r\n\r\n private handlePermissionOverwrites(ev: PermissionOverwritesUpdated | PermissionOverwrites): void {\r\n this.overwrites.set([getOvIdByObject(ev), ev]);\r\n this.emit('change');\r\n }\r\n\r\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.id}));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n\r\n private async handleRoomDeleted(ev: RoomDeleted | RoomLeft): Promise<void> {\r\n const room = (await this.tracker.rooms.get()).get(ev.id);\r\n if (room) {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: room.spaceId, roomId: room.id}));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n\r\n private handleRoleDeleted(ev: RoleDeleted): void {\r\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));\r\n this.overwritesPromises.forget(...ids);\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\r\n if (ev.userId === this.tracker.me?.id) {\r\n // User roles in space could potentially have changed\r\n this.emit('change');\r\n }\r\n }\r\n\r\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\r\n if (ev.userId === this.tracker.me?.id) {\r\n // User roles in room could potentially have changed\r\n this.emit('change');\r\n }\r\n }\r\n\r\n /**\r\n * @return Matched and deleted ids\r\n */\r\n private deleteOverwritesByIdPrefix(prefix: string): string[] {\r\n const ids: string[] = [];\r\n this.overwrites.items.forEach((overwrites) => {\r\n const id = getOvIdByObject(overwrites);\r\n if (id.startsWith(prefix)) {\r\n ids.push(id);\r\n this.overwrites.delete(id);\r\n }\r\n });\r\n return ids;\r\n }\r\n\r\n private async collectRoleOverwrites(\r\n location: ChatLocation,\r\n userRoles: string[],\r\n ): Promise<PermissionOverwritesValue> {\r\n const roleOverwrites = await Promise.all(userRoles.map(\r\n roleId => this.getOverwrites(location, { type: 'Role', roleId }),\r\n ));\r\n\r\n return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);\r\n }\r\n\r\n private async resolveOverwritesFromRolesByOrder(\r\n spaceId: string,\r\n overwrites: PermissionOverwrites[],\r\n ): Promise<PermissionOverwritesValue> {\r\n let allows = 0, denies = 0;\r\n const roles = await this.tracker.spaces.getRoles(spaceId);\r\n const sortedOverwrites = overwrites.sort(\r\n (a, b) =>\r\n roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority\r\n );\r\n\r\n // Max length of bit word\r\n const permissionsLength = overwrites.reduce(\r\n (previousValue: number, currentValue: PermissionOverwrites) =>\r\n Math.max(\r\n previousValue,\r\n currentValue.overwrites.allow?.toString(2).length ?? 0,\r\n currentValue.overwrites.deny?.toString(2).length ?? 0,\r\n ),\r\n 0,\r\n );\r\n\r\n sortedOverwrites.forEach(overwriteEvent => {\r\n const overwrites = overwriteEvent.overwrites;\r\n const revDecDenies = overwrites.deny?.toString(2).split('').reverse().join('') ?? '';\r\n const revDecAllows = overwrites.allow?.toString(2).split('').reverse().join('') ?? '';\r\n\r\n for (let i = 0; i < permissionsLength; i++) {\r\n const deny = parseInt(revDecDenies[i] ?? '0');\r\n const allow = parseInt(revDecAllows[i] ?? '0');\r\n\r\n if (deny) {\r\n denies |= 1 << i;\r\n }\r\n\r\n if (allow) {\r\n allows |= 1 << i;\r\n }\r\n }\r\n });\r\n\r\n return {allow: allows, deny: denies};\r\n }\r\n\r\n private resolveOverwritesHierarchy(permissionOverwritesValues: PermissionOverwritesValue[]): number {\r\n let result = 0;\r\n\r\n for (const value of permissionOverwritesValues) {\r\n if (value.allow & Permissions.getByName('Root').value) {\r\n return this.getRootAccessValue();\r\n }\r\n\r\n result = (result & ~value.deny) | value.allow;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getRootAccessValue(): number {\r\n let result = 0;\r\n\r\n for (const name of Permissions.getNames()) {\r\n result |= Permissions.getByName(name).value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private async fetchMembersOrFail(location: ChatLocation): Promise<[SpaceMember | null, RoomMember | null]> {\r\n const results = await Promise.all([\r\n location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null,\r\n location.roomId ? this.tracker.rooms.getMe(location.roomId) : null,\r\n ]);\r\n\r\n const spaceFail = location.spaceId && ! results[0];\r\n const roomFail = location.roomId && ! results[1];\r\n\r\n if (spaceFail || roomFail) {\r\n const layer = spaceFail ? `space (${location.spaceId})` : `room (${location.roomId})`;\r\n throw new Error(`Attempting to calculate permissions for a ${layer} that the user does not belong to`);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n private validateLocation(location: ChatLocation): void {\r\n if (location.topicId && ! location.roomId) {\r\n throw new Error('Corrupted arguments hierarchy');\r\n }\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this.overwrites.deleteAll();\r\n this.overwritesPromises.forgetAll();\r\n }\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n IndexedCollection,\r\n ObservableIndexedObjectCollection\r\n} from \"../IndexedObjectCollection\";\r\nimport {Emoticon, EmoticonDeleted, Emoticons, NewEmoticon, SpaceDeleted} from \"../types/src\";\r\nimport {PromiseRegistry} from \"./AsyncUtils\";\r\n\r\nconst GLOBAL_KEY = 'global';\r\n\r\nexport class EmoticonsManager {\r\n private list: IndexedCollection<string, ObservableIndexedObjectCollection<Emoticon>> = new IndexedCollection();\r\n private emoticonsPromises = new PromiseRegistry();\r\n \r\n public constructor(private tracker: ChatStateTracker) {\r\n this.tracker.client.on('Emoticons', ev => this.handleEmoticons(ev));\r\n this.tracker.client.on('NewEmoticon', ev => this.handleNewEmoticon(ev));\r\n this.tracker.client.on('EmoticonDeleted', ev => this.handleEmoticonDeleted(ev));\r\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('Session', () => this.handleSession());\r\n }\r\n\r\n public async get(spaceId?: string): Promise<ObservableIndexedObjectCollection<Emoticon>> {\r\n const key = spaceId ?? GLOBAL_KEY;\r\n\r\n if (this.emoticonsPromises.notExist(key)) {\r\n this.emoticonsPromises.registerByFunction(async () => {\r\n const result = await this.tracker.client.send('GetEmoticons', {spaceId});\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n this.handleEmoticons(result.data);\r\n }, key);\r\n }\r\n\r\n await this.emoticonsPromises.get(key);\r\n return this.list.get(key);\r\n }\r\n\r\n private handleEmoticons(event: Emoticons): void {\r\n const spaceId = event.location.spaceId ?? GLOBAL_KEY;\r\n\r\n if (!this.list.has(spaceId)) {\r\n this.list.set([spaceId, new ObservableIndexedObjectCollection<Emoticon>('id')]);\r\n }\r\n\r\n const collection = this.list.get(spaceId);\r\n collection.set(...event.emoticons);\r\n }\r\n\r\n private handleNewEmoticon(ev: NewEmoticon): void {\r\n const collection = this.list.get(ev.emoticon.spaceId ?? GLOBAL_KEY);\r\n collection?.set(ev.emoticon);\r\n }\r\n\r\n private handleEmoticonDeleted(ev: EmoticonDeleted): void {\r\n const collection = this.list.get(ev.spaceId ?? GLOBAL_KEY);\r\n collection?.delete(ev.emoticonId);\r\n }\r\n\r\n private handleSpaceDeleted(event: SpaceDeleted): void {\r\n this.list.delete(event.id);\r\n }\r\n\r\n private handleSession(): void {\r\n this.list.deleteAll();\r\n this.emoticonsPromises.forgetAll();\r\n }\r\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();\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\";\r\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\r\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\r\nimport {Envelope} from \"./types/src\";\r\n\r\nexport interface WebSocketClientOptions {\r\n url: string;\r\n token: string;\r\n connectingTimeoutMs?: number;\r\n awaitQueueSendDelayMs?: number;\r\n stateTracking?: boolean;\r\n queryParams?: Record<string, string>;\r\n}\r\n\r\nenum WebSocketChatClientEvent {\r\n connect = 'connect',\r\n disconnect = 'disconnect',\r\n message = 'message',\r\n error = 'error',\r\n}\r\n\r\nexport class WebSocketChatClient extends AbstractChatClient implements ObservableInterface {\r\n public readonly Event = WebSocketChatClientEvent;\r\n public readonly state?: ChatStateTracker;\r\n\r\n protected ws: WebSocket|null = null;\r\n protected sendQueue: Envelope[] = [];\r\n protected connectingTimeoutId: any;\r\n protected authenticated: boolean;\r\n protected authenticatedResolvers: [() => void, (error: Error) => void];\r\n\r\n public constructor(private readonly options: WebSocketClientOptions) {\r\n super();\r\n if (this.options.stateTracking ?? true) {\r\n this.state = new ChatStateTracker(this);\r\n }\r\n }\r\n\r\n public async connect(): Promise<void> {\r\n const params = new URLSearchParams(this.options.queryParams ?? {});\r\n params.set('token', this.options.token);\r\n\r\n this.ws = new WebSocket(`${this.options.url}?${params}`);\r\n this.ws.onclose = ev => this.onClose(ev);\r\n this.ws.onmessage = ev => this.onMessage(ev);\r\n this.connectingTimeoutId = setTimeout(\r\n () => this.triggerConnectionTimeout(),\r\n this.options.connectingTimeoutMs ?? 10000\r\n );\r\n this.authenticated = false;\r\n\r\n return new Promise((...args) => this.authenticatedResolvers = args);\r\n }\r\n\r\n public disconnect(): void {\r\n this.sendQueue = [];\r\n this.ws?.close();\r\n this.ws = null;\r\n }\r\n\r\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\r\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\r\n const envelope = this.createEnvelope<CommandsMap[CommandType][0]>(commandType, commandData);\r\n const promise = this.createPromiseFromCommandEnvelope<CommandType>(envelope);\r\n\r\n if (this.isPendingReadyWsState()) {\r\n this.sendQueue.push(envelope);\r\n return promise;\r\n }\r\n\r\n this.sendEnvelope(envelope);\r\n return promise;\r\n }\r\n\r\n private sendEnvelope(envelope: Envelope): void {\r\n if (this.isReadyToSendWsState()) {\r\n this.ws.send(JSON.stringify(envelope));\r\n return;\r\n }\r\n\r\n this.handleEnvelopeSendError(\r\n envelope,\r\n new Error(`Cannot send; invalid websocket state=${this.ws?.readyState ?? '[no connection]'}`)\r\n );\r\n }\r\n\r\n private onMessage(event: MessageEvent): void {\r\n const envelope: Envelope = JSON.parse(event.data);\r\n this.handleIncomingEnvelope(envelope);\r\n this.emit(envelope.type, envelope.data);\r\n this.emit(this.Event.message, envelope);\r\n\r\n // Login successfully\r\n if (!this.authenticated) {\r\n const isAuthenticated = envelope.type !== 'Bye';\r\n this.authenticated = isAuthenticated;\r\n if (isAuthenticated) {\r\n this.authenticatedResolvers[0]();\r\n this.emit(this.Event.connect);\r\n this.sendFromQueue();\r\n } else {\r\n this.authenticatedResolvers[1](envelope.data);\r\n }\r\n }\r\n }\r\n\r\n private onClose(event: CloseEvent): void {\r\n clearTimeout(this.connectingTimeoutId);\r\n const reconnect = event.code !== 1000; // Connection was closed because of error\r\n if (reconnect) {\r\n void this.connect();\r\n }\r\n this.emit(this.Event.disconnect, reconnect);\r\n }\r\n\r\n private sendFromQueue(): void {\r\n // Send awaiting data to server\r\n let lastDelay = 0;\r\n for (const dataIndex in this.sendQueue) {\r\n const envelope = this.sendQueue[dataIndex];\r\n setTimeout(() => this.sendEnvelope(envelope), lastDelay);\r\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\r\n }\r\n this.sendQueue = [];\r\n clearTimeout(this.connectingTimeoutId);\r\n }\r\n\r\n private triggerConnectionTimeout(): void {\r\n this.disconnect();\r\n this.emit(this.Event.error, new Error('Connection timeout'));\r\n }\r\n\r\n private isPendingReadyWsState(): boolean {\r\n return this.ws && this.ws.readyState === this.ws.CONNECTING || !this.authenticated;\r\n }\r\n\r\n private isReadyToSendWsState(): boolean {\r\n return this.ws && this.ws.readyState === this.ws.OPEN && this.authenticated;\r\n }\r\n}","import {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\r\nimport {ObservableInterface} from \"./EventTarget\";\r\nimport {Envelope} from \"./types/src\";\r\n\r\nexport interface WebApiChatClientOptions {\r\n url: string;\r\n token: string;\r\n attemptsToSend?: number;\r\n attemptDelayMs?: number;\r\n queryParams?: Record<string, string>;\r\n}\r\n\r\nenum WebApiChatClientEvent {\r\n message = 'message',\r\n error = 'error',\r\n destroy = 'destroy',\r\n}\r\n\r\nexport class WebApiChatClient extends AbstractChatClient implements ObservableInterface {\r\n public readonly Event = WebApiChatClientEvent;\r\n\r\n protected sendStack: {data: any, attempts: number, lastTimeoutId: any}[];\r\n\r\n public constructor(private readonly options: WebApiChatClientOptions) {\r\n super();\r\n }\r\n\r\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\r\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\r\n const envelope = this.createEnvelope(commandType, commandData);\r\n this.sendStack.push({data: envelope, attempts: 0, lastTimeoutId: null});\r\n this.makeApiCall(this.sendStack.length - 1);\r\n return this.createPromiseFromCommandEnvelope(envelope);\r\n }\r\n\r\n public destroy(): void {\r\n // Cancel all awaiting requests\r\n this.sendStack.forEach(item => {\r\n if (item.lastTimeoutId) {\r\n clearTimeout(item.lastTimeoutId);\r\n }\r\n this.awaitingResponse.delete(item.data.ref);\r\n });\r\n this.sendStack = [];\r\n this.emit(this.Event.destroy, false);\r\n }\r\n\r\n protected async onMessage(reqId: number, response: Response): Promise<void> {\r\n this.sendStack.splice(reqId, 1);\r\n const envelope: Envelope = await response.json();\r\n this.handleIncomingEnvelope(envelope);\r\n this.emit(envelope.type, envelope.data);\r\n this.emit(this.Event.message, envelope);\r\n }\r\n\r\n protected onError(reqId: number, body: string): void {\r\n if (this.sendStack[reqId].attempts >= (this.options.attemptsToSend ?? 10)) {\r\n this.sendStack.splice(reqId, 1);\r\n this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error(\r\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\r\n ));\r\n return;\r\n }\r\n this.sendStack[reqId].lastTimeoutId = setTimeout(\r\n () => this.makeApiCall(reqId),\r\n this.options.attemptDelayMs ?? 3000\r\n );\r\n }\r\n\r\n protected makeApiCall(reqId: number): void {\r\n this.sendStack[reqId].attempts++;\r\n const bodyJson = JSON.stringify(this.sendStack[reqId].data);\r\n const headers: any = {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json'\r\n };\r\n\r\n headers.Authorization = `Bearer ${this.options.token}`;\r\n\r\n const params = new URLSearchParams(this.options.queryParams ?? {});\r\n const url = `${this.options.url}${params ? '?' + params : ''}`;\r\n\r\n fetch(url, {\r\n headers,\r\n body: bodyJson,\r\n method: 'POST',\r\n })\r\n .then(response => this.onMessage(reqId, response))\r\n .catch(() => this.onError(reqId, bodyJson));\r\n }\r\n}","export interface RestClientOptions {\r\n url?: string;\r\n token: string;\r\n}\r\n\r\nexport interface RestClientResponse<T> {\r\n ok: boolean;\r\n status: number;\r\n data: T;\r\n}\r\n\r\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\r\n\r\nexport abstract class AbstractRestClient {\r\n protected abstract defaultUrl: string;\r\n\r\n public constructor(\r\n private readonly options: RestClientOptions,\r\n ) {}\r\n\r\n protected async send<ResponseT = any>(\r\n method: HttpMethod,\r\n uri: string,\r\n data: any = undefined\r\n ): Promise<RestClientResponse<ResponseT>> {\r\n let url = this.getUrl(uri);\r\n let body = undefined;\r\n\r\n if (data) {\r\n if (['GET', 'DELETE'].includes(method)) {\r\n url += new URLSearchParams(data).toString()\r\n } else {\r\n body = JSON.stringify(data);\r\n }\r\n }\r\n\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n ...this.getAuthHeaders(),\r\n };\r\n\r\n const result = await fetch(url, {method, body, headers});\r\n\r\n return this.convertFetchResponse(result);\r\n }\r\n\r\n protected getAuthHeaders(): any {\r\n const headers = {} as any;\r\n\r\n if (this.options.token) {\r\n headers.Authorization = `Bearer ${this.options.token}`;\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected getUrl(uri: string): string {\r\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\r\n }\r\n\r\n protected async convertFetchResponse<T>(result: Response): Promise<RestClientResponse<T>> {\r\n return {\r\n ok: result.ok,\r\n status: result.status,\r\n data: result.headers.get('content-type')?.includes('json') ? await result.json() : await result.text(),\r\n };\r\n }\r\n\r\n private removeStartingSlash(text: string): string {\r\n return text.replace(/^\\/+/, '');\r\n }\r\n\r\n private removeEndingSlash(text: string): string {\r\n return text.replace(/\\/+$/, '');\r\n }\r\n}","import {AbstractRestClient} from \"./AbstractRestClient\";\r\n\r\nexport interface TokenInterface {\r\n token: string,\r\n expiration: string\r\n}\r\n\r\nexport interface MyAccountInterface {\r\n id: string;\r\n nick: string;\r\n avatar: string;\r\n}\r\n\r\nexport class AuthClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://polfan.pl/webservice/api';\r\n\r\n public static async createToken(\r\n login: string,\r\n password: string,\r\n clientName: string = 'pserv-js-client'\r\n ): Promise<TokenInterface> {\r\n const response = await new AuthClient({token: null}).send('POST', 'auth/tokens', {\r\n login, password, client_name: clientName\r\n });\r\n if (response.ok) {\r\n return response.data;\r\n }\r\n throw new Error(`Cannot create user token: ${response.data.errors[0]}`);\r\n }\r\n\r\n public async deleteToken(token: string): Promise<void> {\r\n const response = await this.send('DELETE', `auth/tokens/${token}`);\r\n if (!response.ok) {\r\n throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);\r\n }\r\n }\r\n\r\n public async getMe(): Promise<MyAccountInterface> {\r\n const response = await this.send('GET', 'auth/me');\r\n if (response.ok) {\r\n response.data.id = response.data.id.toString();\r\n return response.data;\r\n }\r\n throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);\r\n }\r\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}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\r\nimport {WebApiChatClient} from \"./WebApiChatClient\";\r\nimport {\r\n IndexedCollection,\r\n IndexedObjectCollection,\r\n ObservableIndexedCollection,\r\n ObservableIndexedObjectCollection\r\n} from \"./IndexedObjectCollection\";\r\nimport { AuthClient, MyAccountInterface, TokenInterface } from \"./AuthClient\";\r\nimport {FilesClient, File} from \"./FilesClient\";\r\nimport { Permissions, PermissionDefinition, Layer } from \"./Permissions\";\r\nimport * as ChatTypes from './types/src';\r\nimport {extractUserFromMember} from \"./state-tracker/functions\";\r\n\r\nexport {\r\n IndexedCollection, ObservableIndexedCollection,\r\n IndexedObjectCollection, ObservableIndexedObjectCollection,\r\n Permissions, PermissionDefinition, Layer,\r\n WebSocketChatClient, WebApiChatClient,\r\n AuthClient,\r\n FilesClient,\r\n extractUserFromMember,\r\n};\r\n\r\nexport type {\r\n ChatTypes,\r\n MyAccountInterface, TokenInterface, File,\r\n};"],"names":["EventTarget","_classCallCheck","_defineProperty","Map","_createClass","key","value","on","eventName","handler","addHandler","events","once","onceEvents","off","_this$events$get","index","get","indexOf","splice","emit","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","_superPropGet","createEnvelope","type","data","ref","sentCounter","toString","createPromiseFromCommandEnvelope","envelope","_this2","Promise","_len2","_key2","awaitingResponse","handleIncomingEnvelope","has","isError","error","handleEnvelopeSendError","IndexedCollection","items","undefined","apply","_toConsumableArray","_items","size","_i","item","id","delete","ids","_i2","_ids","deleteAll","clear","findBy","field","valueToFind","limit","result","entries","next","done","createMirror","copy","IndexedObjectCollection","from","values","_this$_items","_len3","_key3","getId","getAt","_this$_items2","_iterator","_createForOfIteratorHelper","_step","s","n","err","e","f","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","setItems","_len5","_key5","deletedItems","keys","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","DeferredTask","promise","resolve","PromiseRegistry","register","promises","registerByFunction","fn","notExist","forget","_this$promises","forgetAll","t","r","Symbol","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","call","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","_typeof","_assertThisInitialized","ReferenceError","Boolean","valueOf","_setPrototypeOf","_toPrimitive","toPrimitive","String","Number","WindowState","TraversableRemoteCollection","_ObservableIndexedObj","current","LIVE","ongoing","oldestId","internalState","LATEST","includes","state","OLDEST","_resetToLatest","_callee","_context","fetchLatestItems","addItems","resetToLatest","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","fetchPrevious","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","fetchNext","_refreshFetchedState","_callee4","_t","_context4","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","slice","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","traverseLock","client","ev","handleSession","handleNewMessage","_setTraverseLock","_callee5","lock","_context5","setTraverseLock","_x","_resetToLatest2","_callee6","_context6","_fetchNext2","_callee7","_context7","_fetchPrevious2","_callee8","_context8","_updateMessageReference","refTopic","refMessage","_objectSpread","topicRef","_handleNewMessage","_callee9","_context9","message","location","_x2","rooms","find","room","_fetchItemsAfter","_callee0","_this$getAt","afterId","_context0","send","after","Error","messages","_fetchItemsBefore","_callee1","_this$getAt2","beforeId","_context1","before","_fetchLatestItems","_callee10","_context10","_getTopic","_callee11","_context11","getTopics","getTopic","_getLatestMessageId","_callee12","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context12","lastMessage","getLatestMessageId","_isLatestItemLoaded","_callee13","lastMessageId","_context13","RoomMessagesHistory","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","historyWindow","topic","historyWindows","getMessagesWindow","_handleRoomUpdated","_Array$from","_Array$from$_i","window","_slicedToArray","refHistoryWindow","history","mode","MessagesManager","handleRoomJoin","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","getRoomHistory","_cacheSpaceFollowedTopics","spaceId","roomIds","resultPromise","spaces","followedTopicsPromises","setFollowedTopicsArray","followedTopics","cacheSpaceFollowedTopics","_getRoomFollowedTopics","getRoomFollowedTopics","_x3","_ackRoomFollowedTopics","collection","followedTopic","missed","ackRoomFollowedTopics","_x4","_calculateRoomMissedMessages","reduce","previousValue","currentValue","_currentValue$missed","calculateRoomMissedMessages","_x5","_deleteByTopicIds","_this$followedTopics$","topicIds","createHistoryForNewRoom","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","_this$followedTopics$3","clearRoomFollowedTopicsStructures","_handleNewTopic","_x6","_this$followedTopics$4","_this$tracker$me","roomFollowedTopics","isMe","author","user","me","update","lastAckMessageId","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_this5$followedTopics","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","getMembers","_getMe","userId","getMe","list","member","_member$user$id","_member$user","spaceMember","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","filter","_this3$topics$get2","deleteRoom","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get","_this$messages","deleteRoomsBySpaceId","_iterator2","_step2","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","_member$spaceMember","newMember","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get2","addJoinedRooms","_this$topics$get3","_this$list2","_rooms","recipients","roles","_member$user$id2","_member$user2","_this$list3","newRooms","_room$recipients","some","_room$defaultTopic2","newTopic","messageCount","reorderRolesOnPriorityUpdate","allRoles","oldRole","updatedRole","increased","priority","decreased","changedRoles","role","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","getRoles","_getRooms","roomsPromises","getRooms","_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","newRole","rolesToUpdate","Layer","PermissionDefinition","Permissions","getNames","getByName","canBeDefinedOnLayer","permissionName","layer","def","maxLayer","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageSpaceRoles","ManageRoom","CreateTopics","ManageTopic","Topic","ManageSpaceMembers","ManageRoomMembers","CreateMessages","ManagePermissions","CreateSpaceRooms","ManageSpaceRooms","CreateEmoticons","ManageEmoticon","ManageBan","Kick","ChangeOwnNick","_superPropBase","getOwnPropertyDescriptor","hasOwnProperty","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","getOverwrites","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","check","_calculatePermissions","_spaceMember$roles","_roomMember$roles","_yield$this$tracker$s","_yield$this$tracker$r","_yield$this$tracker$r2","_yield$this$fetchMemb","_yield$this$fetchMemb2","userRoles","filterLocation","_filterLocation","_t6","_t7","_t8","_t9","_t0","_t1","_t10","_t11","fetchMembersOrFail","collectRoleOverwrites","all","resolveOverwritesHierarchy","_this$overwritesPromi","deleteOverwritesByIdPrefix","_this$overwritesPromi2","_this$overwritesPromi3","_this$overwritesPromi4","_this$tracker$me2","prefix","startsWith","_collectRoleOverwrites","roleOverwrites","resolveOverwritesFromRolesByOrder","_x7","_x8","_resolveOverwritesFromRolesByOrder","allows","denies","sortedOverwrites","permissionsLength","sort","b","_currentValue$overwri","_currentValue$overwri2","_currentValue$overwri3","_currentValue$overwri4","Math","max","allow","deny","overwriteEvent","_overwrites$deny$toSt","_overwrites$deny","_overwrites$allow$toS","_overwrites$allow","revDecDenies","split","reverse","revDecAllows","_revDecDenies$i","_revDecAllows$i","parseInt","_x9","_x0","permissionOverwritesValues","getRootAccessValue","_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","_getAvailable","users","getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","exists","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","stateTracking","_connect","_this$options$queryPa","_this$options$connect","params","URLSearchParams","queryParams","token","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","connect","disconnect","_this$ws","sendQueue","close","_send","commandType","commandData","isPendingReadyWsState","sendEnvelope","_this$ws$readyState","_this$ws2","isReadyToSendWsState","JSON","stringify","readyState","parse","Event","isAuthenticated","sendFromQueue","clearTimeout","reconnect","code","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","_onMessage","reqId","response","json","onError","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptors","defineProperties","AbstractRestClient","uri","_args","getUrl","getAuthHeaders","convertFetchResponse","_this$options$url","removeEndingSlash","defaultUrl","removeStartingSlash","_convertFetchResponse","_result$headers$get","status","text","replace","AuthClient","_AbstractRestClient","_deleteToken","errors","deleteToken","_createToken","login","password","clientName","_args3","client_name","createToken","FilesClient","_uploadFile","file","_name","encodeURIComponent","uploadFile","_getFileMeta","getFileMeta","_getFileMetaBulk","searchParams","append","getFileMetaBulk"],"ignoreList":[],"sourceRoot":""}