polfan-server-js-client 0.2.61 → 0.2.63
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/build/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://PservClient/webpack/universalModuleDefinition","webpack://PservClient/webpack/bootstrap","webpack://PservClient/webpack/runtime/define property getters","webpack://PservClient/webpack/runtime/hasOwnProperty shorthand","webpack://PservClient/webpack/runtime/make namespace object","webpack://PservClient/./src/EventTarget.ts","webpack://PservClient/./src/AbstractChatClient.ts","webpack://PservClient/./src/IndexedObjectCollection.ts","webpack://PservClient/./src/state-tracker/AsyncUtils.ts","webpack://PservClient/./src/state-tracker/TopicHistoryWindow.ts","webpack://PservClient/./src/state-tracker/RoomMessagesHistory.ts","webpack://PservClient/./src/state-tracker/MessagesManager.ts","webpack://PservClient/./src/state-tracker/RoomsManager.ts","webpack://PservClient/./src/state-tracker/functions.ts","webpack://PservClient/./src/state-tracker/SpacesManager.ts","webpack://PservClient/./src/Permissions.ts","webpack://PservClient/./src/state-tracker/PermissionsManager.ts","webpack://PservClient/./src/state-tracker/EmoticonsManager.ts","webpack://PservClient/./src/state-tracker/UsersManager.ts","webpack://PservClient/./src/state-tracker/RelationshipsManager.ts","webpack://PservClient/./src/state-tracker/ChatStateTracker.ts","webpack://PservClient/./src/WebSocketChatClient.ts","webpack://PservClient/./src/WebApiChatClient.ts","webpack://PservClient/./src/AbstractRestClient.ts","webpack://PservClient/./src/AuthClient.ts","webpack://PservClient/./src/FilesClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PservClient\"] = factory();\n\telse\n\t\troot[\"PservClient\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\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 => ({\r\n user,\r\n spaceMember: null,\r\n roles: null,\r\n customColor: null,\r\n customNick: null,\r\n extras: '',\r\n })),\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}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","_classCallCheck","_defineProperty","Map","eventName","handler","addHandler","events","onceEvents","_this$events$get","index","indexOf","splice","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","_superPropGet","type","data","ref","sentCounter","toString","envelope","_this2","Promise","_len2","_key2","awaitingResponse","has","isError","error","IndexedCollection","items","undefined","apply","_toConsumableArray","_createClass","_items","size","_i","item","id","ids","_i2","_ids","clear","field","valueToFind","limit","result","entries","next","done","copy","IndexedObjectCollection","from","values","_this$_items","_len3","_key3","getId","_this$_items2","deleteAll","_step","_iterator","_createForOfIteratorHelper","s","n","err","e","f","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","emit","setItems","_len5","_key5","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","DeferredTask","promise","resolve","PromiseRegistry","promises","fn","register","_this$promises","t","r","iterator","i","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","toPrimitive","String","Number","_toPrimitive","WindowState","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","internalState","traverseLock","client","ev","handleSession","handleNewMessage","_setTraverseLock","_callee5","lock","_context5","state","LIVE","LATEST","_x","_resetToLatest2","_callee6","_context6","_fetchNext2","_callee7","_context7","_fetchPrevious2","_callee8","_context8","refTopic","refMessage","_objectSpread","topicRef","_handleNewMessage","_callee9","_context9","includes","message","location","addItems","_x2","rooms","find","room","resetToLatest","_fetchItemsAfter","_callee0","_this$getAt","afterId","_context0","getAt","send","after","Error","messages","_fetchItemsBefore","_callee1","_this$getAt2","beforeId","_context1","before","_fetchLatestItems","_callee10","_context10","_getTopic","_callee11","_context11","getTopics","_getLatestMessageId","_callee12","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context12","getTopic","lastMessage","_isLatestItemLoaded","_callee13","lastMessageId","_context13","getLatestMessageId","_ObservableIndexedObj","TraversableRemoteCollection","current","ongoing","oldestId","OLDEST","_resetToLatest","_callee","_context","fetchLatestItems","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","_refreshFetchedState","_callee4","_t","_context4","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","slice","RoomMessagesHistory","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","topic","historyWindows","_handleRoomUpdated","_Array$from","_Array$from$_i","window","_slicedToArray","setTraverseLock","historyWindow","refHistoryWindow","_updateMessageReference","history","mode","MessagesManager","handleRoomJoin","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","_cacheSpaceFollowedTopics","spaceId","roomIds","resultPromise","spaces","findBy","followedTopicsPromises","setFollowedTopicsArray","followedTopics","_getRoomFollowedTopics","notExist","registerByFunction","_x3","_ackRoomFollowedTopics","collection","followedTopic","getRoomFollowedTopics","missed","_x4","_calculateRoomMissedMessages","reduce","previousValue","currentValue","_currentValue$missed","_x5","_this$followedTopics$","topicIds","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","_this$followedTopics$3","clearRoomFollowedTopicsStructures","createHistoryForNewRoom","_handleNewTopic","_x6","_this$followedTopics$4","forgetAll","_this$tracker$me","update","roomFollowedTopics","author","user","me","lastAckMessageId","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_this5$followedTopics","forget","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","_getMe","userId","getMe","list","getMembers","member","_member$user$id","_member$user","spaceMember","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","filter","_this3$topics$get2","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get","_this$messages","_deleteByTopicIds","deleteRoom","_step2","_iterator2","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","_member$spaceMember","newMember","deleteRoomsBySpaceId","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get2","addJoinedRooms","_this$topics$get3","_this$list2","_rooms","recipients","roles","customColor","customNick","extras","_member$user$id2","_member$user2","_this$list3","newRooms","_room$recipients","some","_room$defaultTopic2","newTopic","messageCount","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","_getRooms","roomsPromises","role","_this$rooms$get","summary","roomIdToSpaceId","name","description","_handleRoomDeleted","_this$rooms$get2","space","spaceChanged","systemRoom","defaultRooms","_this$rooms$get$items","_this$rooms$get3","_this$roomIdToSpaceId","addJoinedSpaces","_this$roles","summaries","_handleRoomSummaryUpdated","summariesPromise","oldSummary","newSummary","_this$roles$get","oldRole","newRole","rolesToUpdate","priority","allRoles","updatedRole","increased","decreased","changedRoles","reorderRolesOnPriorityUpdate","Layer","PermissionDefinition","Permissions","permissionName","layer","getByName","maxLayer","_superPropBase","getOwnPropertyDescriptor","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageSpaceRoles","ManageRoom","CreateTopics","ManageTopic","Topic","ManageSpaceMembers","ManageRoomMembers","CreateMessages","ManagePermissions","CreateSpaceRooms","ManageSpaceRooms","CreateEmoticons","ManageEmoticon","ManageBan","Kick","ChangeOwnNick","ChangeOwnColor","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","_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","getOverwrites","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","getRoles","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","getNames","_fetchMembersOrFail","results","spaceFail","roomFail","_x1","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","_event$location$space","emoticons","_ev$emoticon$spaceId","emoticon","_ev$spaceId","emoticonId","UsersManager","handleUsers","handleMembers","users","_getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","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","_this$ws","sendQueue","close","_send","commandType","commandData","createEnvelope","createPromiseFromCommandEnvelope","isPendingReadyWsState","sendEnvelope","_this$ws$readyState","_this$ws2","isReadyToSendWsState","JSON","stringify","handleEnvelopeSendError","readyState","parse","handleIncomingEnvelope","Event","isAuthenticated","connect","sendFromQueue","clearTimeout","reconnect","code","disconnect","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","_onMessage","reqId","response","json","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","onError","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","_createToken","login","password","clientName","_args3","client_name","FilesClient","_uploadFile","file","_name","encodeURIComponent","_getFileMeta","_getFileMetaBulk","searchParams","append"],"ignoreList":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://PservClient/webpack/universalModuleDefinition","webpack://PservClient/webpack/bootstrap","webpack://PservClient/webpack/runtime/define property getters","webpack://PservClient/webpack/runtime/hasOwnProperty shorthand","webpack://PservClient/webpack/runtime/make namespace object","webpack://PservClient/./src/EventTarget.ts","webpack://PservClient/./src/AbstractChatClient.ts","webpack://PservClient/./src/IndexedObjectCollection.ts","webpack://PservClient/./src/state-tracker/AsyncUtils.ts","webpack://PservClient/./src/state-tracker/TopicHistoryWindow.ts","webpack://PservClient/./src/state-tracker/RoomMessagesHistory.ts","webpack://PservClient/./src/state-tracker/MessagesManager.ts","webpack://PservClient/./src/state-tracker/RoomsManager.ts","webpack://PservClient/./src/state-tracker/functions.ts","webpack://PservClient/./src/state-tracker/SpacesManager.ts","webpack://PservClient/./src/Permissions.ts","webpack://PservClient/./src/state-tracker/PermissionsManager.ts","webpack://PservClient/./src/state-tracker/EmoticonsManager.ts","webpack://PservClient/./src/state-tracker/UsersManager.ts","webpack://PservClient/./src/state-tracker/RelationshipsManager.ts","webpack://PservClient/./src/state-tracker/ChatStateTracker.ts","webpack://PservClient/./src/WebSocketChatClient.ts","webpack://PservClient/./src/WebApiChatClient.ts","webpack://PservClient/./src/AbstractRestClient.ts","webpack://PservClient/./src/AuthClient.ts","webpack://PservClient/./src/FilesClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PservClient\"] = factory();\n\telse\n\t\troot[\"PservClient\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\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 => ({\r\n user,\r\n spaceMember: null,\r\n roles: null,\r\n customColor: null,\r\n customNick: null,\r\n extras: '',\r\n })),\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 public get isReady(): boolean {\r\n return this.isReadyToSendWsState();\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}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","_classCallCheck","_defineProperty","Map","eventName","handler","addHandler","events","onceEvents","_this$events$get","index","indexOf","splice","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","_superPropGet","type","data","ref","sentCounter","toString","envelope","_this2","Promise","_len2","_key2","awaitingResponse","has","isError","error","IndexedCollection","items","undefined","apply","_toConsumableArray","_createClass","_items","size","_i","item","id","ids","_i2","_ids","clear","field","valueToFind","limit","result","entries","next","done","copy","IndexedObjectCollection","from","values","_this$_items","_len3","_key3","getId","_this$_items2","deleteAll","_step","_iterator","_createForOfIteratorHelper","s","n","err","e","f","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","emit","setItems","_len5","_key5","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","DeferredTask","promise","resolve","PromiseRegistry","promises","fn","register","_this$promises","t","r","iterator","i","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","toPrimitive","String","Number","_toPrimitive","WindowState","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","internalState","traverseLock","client","ev","handleSession","handleNewMessage","_setTraverseLock","_callee5","lock","_context5","state","LIVE","LATEST","_x","_resetToLatest2","_callee6","_context6","_fetchNext2","_callee7","_context7","_fetchPrevious2","_callee8","_context8","refTopic","refMessage","_objectSpread","topicRef","_handleNewMessage","_callee9","_context9","includes","message","location","addItems","_x2","rooms","find","room","resetToLatest","_fetchItemsAfter","_callee0","_this$getAt","afterId","_context0","getAt","send","after","Error","messages","_fetchItemsBefore","_callee1","_this$getAt2","beforeId","_context1","before","_fetchLatestItems","_callee10","_context10","_getTopic","_callee11","_context11","getTopics","_getLatestMessageId","_callee12","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context12","getTopic","lastMessage","_isLatestItemLoaded","_callee13","lastMessageId","_context13","getLatestMessageId","_ObservableIndexedObj","TraversableRemoteCollection","current","ongoing","oldestId","OLDEST","_resetToLatest","_callee","_context","fetchLatestItems","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","_refreshFetchedState","_callee4","_t","_context4","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","slice","RoomMessagesHistory","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","topic","historyWindows","_handleRoomUpdated","_Array$from","_Array$from$_i","window","_slicedToArray","setTraverseLock","historyWindow","refHistoryWindow","_updateMessageReference","history","mode","MessagesManager","handleRoomJoin","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","_cacheSpaceFollowedTopics","spaceId","roomIds","resultPromise","spaces","findBy","followedTopicsPromises","setFollowedTopicsArray","followedTopics","_getRoomFollowedTopics","notExist","registerByFunction","_x3","_ackRoomFollowedTopics","collection","followedTopic","getRoomFollowedTopics","missed","_x4","_calculateRoomMissedMessages","reduce","previousValue","currentValue","_currentValue$missed","_x5","_this$followedTopics$","topicIds","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","_this$followedTopics$3","clearRoomFollowedTopicsStructures","createHistoryForNewRoom","_handleNewTopic","_x6","_this$followedTopics$4","forgetAll","_this$tracker$me","update","roomFollowedTopics","author","user","me","lastAckMessageId","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_this5$followedTopics","forget","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","_getMe","userId","getMe","list","getMembers","member","_member$user$id","_member$user","spaceMember","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","filter","_this3$topics$get2","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get","_this$messages","_deleteByTopicIds","deleteRoom","_step2","_iterator2","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","_member$spaceMember","newMember","deleteRoomsBySpaceId","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get2","addJoinedRooms","_this$topics$get3","_this$list2","_rooms","recipients","roles","customColor","customNick","extras","_member$user$id2","_member$user2","_this$list3","newRooms","_room$recipients","some","_room$defaultTopic2","newTopic","messageCount","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","_getRooms","roomsPromises","role","_this$rooms$get","summary","roomIdToSpaceId","name","description","_handleRoomDeleted","_this$rooms$get2","space","spaceChanged","systemRoom","defaultRooms","_this$rooms$get$items","_this$rooms$get3","_this$roomIdToSpaceId","addJoinedSpaces","_this$roles","summaries","_handleRoomSummaryUpdated","summariesPromise","oldSummary","newSummary","_this$roles$get","oldRole","newRole","rolesToUpdate","priority","allRoles","updatedRole","increased","decreased","changedRoles","reorderRolesOnPriorityUpdate","Layer","PermissionDefinition","Permissions","permissionName","layer","getByName","maxLayer","_superPropBase","getOwnPropertyDescriptor","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageSpaceRoles","ManageRoom","CreateTopics","ManageTopic","Topic","ManageSpaceMembers","ManageRoomMembers","CreateMessages","ManagePermissions","CreateSpaceRooms","ManageSpaceRooms","CreateEmoticons","ManageEmoticon","ManageBan","Kick","ChangeOwnNick","ChangeOwnColor","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","_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","getOverwrites","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","getRoles","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","getNames","_fetchMembersOrFail","results","spaceFail","roomFail","_x1","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","_event$location$space","emoticons","_ev$emoticon$spaceId","emoticon","_ev$spaceId","emoticonId","UsersManager","handleUsers","handleMembers","users","_getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","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","_this$ws","sendQueue","close","_send","commandType","commandData","createEnvelope","createPromiseFromCommandEnvelope","isPendingReadyWsState","sendEnvelope","isReadyToSendWsState","_this$ws$readyState","_this$ws2","JSON","stringify","handleEnvelopeSendError","readyState","parse","handleIncomingEnvelope","Event","isAuthenticated","connect","sendFromQueue","clearTimeout","reconnect","code","disconnect","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","_onMessage","reqId","response","json","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","onError","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","_createToken","login","password","clientName","_args3","client_name","FilesClient","_uploadFile","file","_name","encodeURIComponent","_getFileMeta","_getFileMetaBulk","searchParams","append"],"ignoreList":[],"sourceRoot":""}
|