polfan-server-js-client 0.2.2 → 0.2.6
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.
- package/.idea/copilot.data.migration.agent.xml +6 -0
- package/.idea/copilot.data.migration.ask.xml +6 -0
- package/.idea/copilot.data.migration.ask2agent.xml +6 -0
- package/.idea/copilot.data.migration.edit.xml +6 -0
- package/.idea/workspace.xml +376 -135
- package/babel.config.js +4 -5
- package/build/index.cjs.js +4538 -1816
- package/build/index.cjs.js.map +1 -1
- package/build/index.umd.js +1 -1
- package/build/index.umd.js.map +1 -1
- package/build/types/AbstractChatClient.d.ts +12 -2
- package/build/types/FilesClient.d.ts +7 -6
- package/build/types/IndexedObjectCollection.d.ts +4 -3
- package/build/types/Permissions.d.ts +4 -0
- package/build/types/WebSocketChatClient.d.ts +2 -0
- package/build/types/state-tracker/ChatStateTracker.d.ts +5 -0
- package/build/types/state-tracker/RelationshipsManager.d.ts +15 -0
- package/build/types/state-tracker/RoomMessagesHistory.d.ts +2 -0
- package/build/types/state-tracker/SpacesManager.d.ts +1 -0
- package/build/types/state-tracker/TopicHistoryWindow.d.ts +23 -5
- package/build/types/state-tracker/UsersManager.d.ts +3 -1
- package/build/types/types/src/index.d.ts +12 -3
- package/build/types/types/src/schemes/Emoticon.d.ts +1 -0
- package/build/types/types/src/schemes/Message.d.ts +1 -1
- package/build/types/types/src/schemes/Room.d.ts +2 -0
- package/build/types/types/src/schemes/RoomHistory.d.ts +5 -0
- package/build/types/types/src/schemes/RoomSummary.d.ts +1 -0
- package/build/types/types/src/schemes/SpaceSummary.d.ts +1 -0
- package/build/types/types/src/schemes/User.d.ts +2 -2
- package/build/types/types/src/schemes/UserRelationship.d.ts +6 -0
- package/build/types/types/src/schemes/commands/CreateMessage.d.ts +2 -0
- package/build/types/types/src/schemes/commands/CreateRelationship.d.ts +5 -0
- package/build/types/types/src/schemes/commands/CreateTopic.d.ts +5 -2
- package/build/types/types/src/schemes/commands/DeleteRelationship.d.ts +5 -0
- package/build/types/types/src/schemes/commands/GetRelationships.d.ts +2 -0
- package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +2 -0
- package/build/types/types/src/schemes/commands/UpdateRoomMember.d.ts +7 -0
- package/build/types/types/src/schemes/commands/UpdateSpaceMember.d.ts +5 -0
- package/build/types/types/src/schemes/events/NewRelationship.d.ts +4 -0
- package/build/types/types/src/schemes/events/RelationshipDeleted.d.ts +4 -0
- package/build/types/types/src/schemes/events/Relationships.d.ts +4 -0
- package/build/types/types/src/schemes/events/RoomSummaryUpdated.d.ts +7 -0
- package/build/types/types/src/schemes/events/Session.d.ts +1 -0
- package/package.json +15 -30
- package/src/AbstractChatClient.ts +28 -4
- package/src/FilesClient.ts +26 -13
- package/src/IndexedObjectCollection.ts +26 -10
- package/src/Permissions.ts +1 -0
- package/src/WebSocketChatClient.ts +19 -11
- package/src/state-tracker/ChatStateTracker.ts +22 -6
- package/src/state-tracker/EmoticonsManager.ts +6 -4
- package/src/state-tracker/MessagesManager.ts +3 -3
- package/src/state-tracker/RelationshipsManager.ts +68 -0
- package/src/state-tracker/RoomMessagesHistory.ts +20 -3
- package/src/state-tracker/RoomsManager.ts +30 -7
- package/src/state-tracker/SpacesManager.ts +28 -1
- package/src/state-tracker/TopicHistoryWindow.ts +94 -23
- package/src/state-tracker/UsersManager.ts +16 -6
- package/src/types/src/index.ts +26 -5
- package/src/types/src/schemes/Emoticon.ts +1 -0
- package/src/types/src/schemes/Message.ts +1 -1
- package/src/types/src/schemes/Room.ts +2 -0
- package/src/types/src/schemes/RoomHistory.ts +6 -0
- package/src/types/src/schemes/RoomSummary.ts +1 -0
- package/src/types/src/schemes/SpaceSummary.ts +1 -0
- package/src/types/src/schemes/User.ts +2 -2
- package/src/types/src/schemes/UserRelationship.ts +8 -0
- package/src/types/src/schemes/commands/CreateMessage.ts +2 -0
- package/src/types/src/schemes/commands/CreateRelationship.ts +6 -0
- package/src/types/src/schemes/commands/CreateTopic.ts +6 -2
- package/src/types/src/schemes/commands/DeleteRelationship.ts +6 -0
- package/src/types/src/schemes/commands/GetRelationships.ts +3 -0
- package/src/types/src/schemes/commands/UpdateRoom.ts +2 -0
- package/src/types/src/schemes/commands/UpdateRoomMember.ts +7 -0
- package/src/types/src/schemes/commands/UpdateSpaceMember.ts +5 -0
- package/src/types/src/schemes/events/NewRelationship.ts +5 -0
- package/src/types/src/schemes/events/RelationshipDeleted.ts +5 -0
- package/src/types/src/schemes/events/Relationships.ts +5 -0
- package/src/types/src/schemes/events/RoomSummaryUpdated.ts +8 -0
- package/src/types/src/schemes/events/Session.ts +1 -0
- package/tests/history-window.test.ts +6 -1
- package/webpack.config.browser.js +2 -24
- package/webpack.config.node.js +2 -14
- package/.eslintignore +0 -0
- package/.eslintrc.json +0 -0
- package/src/types/src/schemes/commands/SetCustomNick.ts +0 -5
package/build/index.cjs.js.map
CHANGED
|
@@ -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/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, Bans, GetBans, Ban, Unban, Kick, ClientData, GetClientData, SetClientData,\r\n GetRoomSummary,\r\n GetSpaceSummary,\r\n RoomSummaryEvent,\r\n SpaceSummaryEvent,\r\n SetCustomNick,\r\n} from \"./types/src/index\";\r\nimport {EventTarget} from \"./EventTarget\";\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)[0](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 // 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 // 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 // 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 protected _mutationCounter: number = 0;\r\n\r\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\r\n this.set(...items);\r\n }\r\n\r\n public get mutationCounter(): number {\r\n return this._mutationCounter;\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 this._mutationCounter++;\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\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 get mutationCounter(): number {\r\n return this._items.mutationCounter;\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 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 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 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.currentState;\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 limit: number | null = 50;\r\n\r\n private currentState: WindowState = WindowState.LIVE;\r\n private fetchingState: WindowState = undefined;\r\n public oldestId: string = null;\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.oldestId !== null && this.has(this.oldestId);\r\n }\r\n\r\n public async resetToLatest(): Promise<void> {\r\n if (this.fetchingState || this.currentState === WindowState.LATEST) {\r\n return;\r\n }\r\n\r\n this.fetchingState = 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.fetchingState = undefined;\r\n }\r\n\r\n this.deleteAll();\r\n this.addItems(result, 'tail');\r\n this.currentState = WindowState.LATEST;\r\n }\r\n\r\n public async fetchPrevious(): Promise<void> {\r\n if (this.fetchingState || this.hasOldest) {\r\n return;\r\n }\r\n\r\n this.fetchingState = 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.fetchingState = 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.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.currentState === WindowState.PAST) {\r\n this.currentState = 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.fetchingState || this.hasLatest) {\r\n return;\r\n }\r\n\r\n this.fetchingState = 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.fetchingState = 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.currentState = (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 public constructor(\r\n private roomId: string,\r\n private topicId: string,\r\n private tracker: ChatStateTracker,\r\n ) {\r\n super('id');\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 * 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 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\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 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 handleRoomUpdated(ev: RoomUpdated): void {\r\n if (this.room.id === ev.room.id) {\r\n this.room = ev.room;\r\n\r\n if (ev.room.defaultTopic) {\r\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\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 this.historyWindows.set([topic.id, new TopicHistoryWindow(this.room.id, topic.id, this.tracker)]);\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}","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,\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) {\r\n // Skip if we don't follow this room or targeted topic\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 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 this.list.set(ev.room);\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 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\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 topics.set({\r\n ...topic,\r\n messageCount: topic.messageCount + 1,\r\n lastMessage: ev.message,\r\n });\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 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('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 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 if (this.emoticonsPromises.notExist(spaceId)) {\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 }, spaceId ?? GLOBAL_KEY);\r\n }\r\n\r\n await this.emoticonsPromises.get(spaceId);\r\n return this.list.get(spaceId);\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\";\n\nexport class UsersManager {\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.users.set(...members.map(extractUserFromMember));\n }\n\n private handleUsers(users: User[]): void {\n this.users.set(...users);\n }\n\n private handleSession(session: Session): void {\n this.users.deleteAll();\n this.users.set(session.user);\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\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 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 if (!this.ws || [this.ws.CLOSED, this.ws.CLOSING].includes(this.ws.readyState)) {\r\n throw new Error('Cannot send; close or closing connection state');\r\n }\r\n\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.ws.readyState === this.ws.CONNECTING || !this.authenticated) {\r\n this.sendQueue.push(envelope);\r\n return promise;\r\n }\r\n\r\n if (this.ws.readyState !== this.ws.OPEN) {\r\n throw new Error(`Invalid websocket state=${this.ws.readyState}`);\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 this.ws.send(JSON.stringify(envelope));\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 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}","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 original_url: string;\r\n original_name: string;\r\n mime_type: string;\r\n size: number;\r\n image_dimensions: [number, number] | null;\r\n}\r\n\r\nexport class FilesClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://polfan.pl/webservice/api/files';\r\n\r\n public async uploadFile(file: Parameters<typeof FormData.prototype.append>[1]): Promise<RestClientResponse<File>> {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n let headers = {...this.getAuthHeaders(), Accept: 'application/json'};\r\n\r\n const response = await fetch(this.defaultUrl, {method: 'POST', body: formData, headers});\r\n\r\n return this.convertFetchResponse<File>(response);\r\n }\r\n\r\n public async getFileMetadata(id: string): Promise<RestClientResponse<File>> {\r\n return this.send('GET', '/' + id);\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","mutationCounter","_mutationCounter","_items","length","size","item","id","ids","deleteAll","clear","findBy","field","valueToFind","limit","result","entries","next","value","done","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","LIVE","undefined","state","currentState","hasLatest","LATEST","includes","hasOldest","OLDEST","oldestId","resetToLatest","fetchingState","fetchLatestItems","addItems","fetchPrevious","PAST","fetchItemsBefore","firstItem","refreshFetchedState","fetchNext","fetchItemsAfter","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","slice","TopicHistoryWindow","roomId","topicId","tracker","client","ev","handleSession","handleNewMessage","_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","defaultTopic","createHistoryWindowForTopic","getMessagesWindow","historyWindow","historyWindows","topic","refHistoryWindow","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","messageCount","reorderRolesOnPriorityUpdate","allRoles","oldRole","updatedRole","increased","priority","decreased","changedRoles","role","extractUserFromMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleNewRole","handleRoleDeleted","handleRoleUpdated","getRoles","getRooms","roomsPromises","summary","roomIdToSpaceId","name","description","space","spaceChanged","systemRoom","defaultRooms","addJoinedSpaces","summaries","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","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","CLOSED","CLOSING","readyState","CONNECTING","OPEN","sendEnvelope","JSON","stringify","parse","Event","isAuthenticated","sendFromQueue","clearTimeout","reconnect","code","lastDelay","dataIndex","awaitQueueSendDelayMs","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","formData","FormData","append","getFileMetadata"],"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 UpdateSpaceMember,\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\nimport {UpdateRoomMember} from \"./types/src/schemes/commands/UpdateRoomMember\";\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 UpdateSpaceMember: [UpdateSpaceMember, 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 UpdateRoomMember: [UpdateRoomMember, EventsMap['RoomMemberUpdated']],\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 ChangeOwnColor: {value: 1 << 18, maxLayer: Layer.Room},\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","ChangeOwnColor","_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":""}
|