polfan-server-js-client 0.1.25 → 0.1.26

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.js CHANGED
@@ -710,7 +710,7 @@ var RoomsManager = /*#__PURE__*/function () {
710
710
  _context2.next = 8;
711
711
  break;
712
712
  }
713
- return _context2.abrupt("return", null);
713
+ return _context2.abrupt("return", undefined);
714
714
  case 8:
715
715
  return _context2.abrupt("return", members.items.find(function (member) {
716
716
  var _member$user$id, _member$user;
@@ -1210,7 +1210,7 @@ var SpacesManager = /*#__PURE__*/function () {
1210
1210
  _context5.next = 8;
1211
1211
  break;
1212
1212
  }
1213
- return _context5.abrupt("return", null);
1213
+ return _context5.abrupt("return", undefined);
1214
1214
  case 8:
1215
1215
  return _context5.abrupt("return", members.items.find(function (member) {
1216
1216
  return member.user.id === userId;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://PServ/webpack/universalModuleDefinition","webpack://PServ/webpack/bootstrap","webpack://PServ/webpack/runtime/define property getters","webpack://PServ/webpack/runtime/hasOwnProperty shorthand","webpack://PServ/webpack/runtime/make namespace object","webpack://PServ/./src/EventTarget.ts","webpack://PServ/./src/AbstractChatClient.ts","webpack://PServ/./src/IndexedObjectCollection.ts","webpack://PServ/./src/state-tracker/DeferredTask.ts","webpack://PServ/./src/state-tracker/RoomsManager.ts","webpack://PServ/./src/state-tracker/SpacesManager.ts","webpack://PServ/./src/Permission.ts","webpack://PServ/./src/state-tracker/PermissionsManager.ts","webpack://PServ/./src/state-tracker/ChatStateTracker.ts","webpack://PServ/./src/WebSocketChatClient.ts","webpack://PServ/./src/WebApiChatClient.ts","webpack://PServ/./src/AbstractRestClient.ts","webpack://PServ/./src/AuthClient.ts","webpack://PServ/./src/index.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[\"PServ\"] = factory();\n\telse\n\t\troot[\"PServ\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap<EventT> = Map<string, EventHandler<EventT>[]>;\n\nexport interface ObservableInterface<EventT = any> {\n on(eventName: string, handler: EventHandler<EventT>): this;\n once(eventName: string, handler: EventHandler<EventT>): this;\n off(eventName: string, handler: EventHandler<EventT>): this;\n}\n\nexport class EventTarget<EventT = any> implements ObservableInterface<EventT> {\n protected events: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n protected onceEvents: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n\n public on(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public off(eventName: string, handler: EventHandler<EventT>): this {\n const index = this.events.get(eventName)?.indexOf(handler);\n if (!index || index < 0) {\n return this;\n }\n this.events.get(eventName).splice(index, 1);\n }\n\n public emit(eventName: string, event?: EventT): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap<EventT>, eventName: string, handler: EventHandler<EventT>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap<EventT>, eventName: string, event: EventT): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdated,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetPermissionOverwrites,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetPermissionOverwrites,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage,\n Envelope,\n PermissionOverwrites,\n PermissionOverwritesChanged,\n RoomMemberUpdated,\n UpdateRole,\n RoleUpdated,\n} from \"pserv-ts-types\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\n\nexport abstract class AbstractChatClient extends EventTarget {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;\n\n public on<EventName extends keyof EventsMap>\n (eventName: EventName | string, handler: (event: EventsMap[EventName]) => void): this {\n return super.on(eventName, handler);\n }\n\n public once<EventName extends keyof EventsMap>\n (eventName: EventName, handler: (event: EventsMap[EventName]) => void): this {\n return super.once(eventName, handler);\n }\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandsMap[CommandT][0]>):\n Promise<CommandResult<CommandsMap[CommandT][1]>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[0](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: Error};\n\n/**\n * Map of incoming events.\n */\nexport type EventsMap = {\n // General Events\n Bye: Bye,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n PermissionOverwrites: PermissionOverwrites,\n PermissionOverwritesChanged: PermissionOverwritesChanged,\n // Space events\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdated: SpaceMemberUpdated,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoomDeleted,\n RoleUpdated: RoleUpdated,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMemberUpdated: RoomMemberUpdated,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: [GetSession, EventsMap['Session']],\n SetPermissionOverwrites: [SetPermissionOverwrites, EventsMap['PermissionOverwritesChanged']],\n GetPermissionOverwrites: [GetPermissionOverwrites, EventsMap['PermissionOverwrites']],\n GetComputedPermissions: [GetComputedPermissions, EventsMap['Permissions']],\n // Space commands\n JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],\n LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']],\n CreateSpace: [CreateSpace, EventsMap['SpaceJoined']],\n DeleteSpace: [DeleteSpace, EventsMap['SpaceDeleted']],\n GetSpaceMembers: [GetSpaceMembers, EventsMap['SpaceMembers']],\n GetSpaceRooms: [GetSpaceRooms, EventsMap['SpaceRooms']],\n CreateRole: [CreateRole, EventsMap['NewRole']],\n DeleteRole: [DeleteRole, EventsMap['RoleDeleted']],\n UpdateRole: [UpdateRole, EventsMap['RoleUpdated']],\n AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\n // Room commands\n JoinRoom: [JoinRoom, EventsMap['RoomJoined']],\n LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],\n CreateRoom: [CreateRoom, EventsMap['NewRoom']],\n DeleteRoom: [DeleteRoom, EventsMap['RoomDeleted']],\n GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],\n // Topic commands\n CreateTopic: [CreateTopic, EventsMap['NewTopic']],\n DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],\n CreateMessage: [CreateMessage, EventsMap['NewMessage']],\n}","import {EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | null {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = null): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n let item;\n while (!(item = this.items.entries().next().value).done) {\n if (limit && result.length === limit) {\n break;\n }\n if (item[1][field] === valueToFind) {\n result.set(item);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: ValueT, index: KeyT) => MapT): MapT[] {\n return Array.from(this.items.entries()).map((entry) => callback(entry[1], entry[0]));\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | null {\n return this._items.get(id);\n }\n\n public getAt(index: number): T|null {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: T, index: number, array: T[]) => MapT): MapT[] {\n return this.items.map(callback);\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\ninterface ObservableCollectionEvent<KeyT> {\n setItems?: KeyT[],\n deletedItems?: KeyT[],\n}\n\nexport class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<KeyT>>;\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n super();\n this.eventTarget = new EventTarget<ObservableCollectionEvent<KeyT>>();\n this.set(...items);\n }\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => item[0])});\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<T> extends IndexedObjectCollection<T> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<string>>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => string),\n items: T[] = [],\n ) {\n super(id);\n this.eventTarget = new EventTarget();\n this.set(...items);\n }\n\n public set(...items: T[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => this.getId(item))});\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}","export 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}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\nimport {\r\n Message, NewMessage, NewTopic,\r\n Room,\r\n RoomJoined, RoomLeft,\r\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\r\n RoomMemberUpdated, Session,\r\n SpaceMember,\r\n Topic,\r\n TopicDeleted\r\n} from \"pserv-ts-types\";\r\nimport {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {DeferredTask} from \"./DeferredTask\";\r\n\r\nexport class RoomsManager {\r\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\r\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\r\n // Temporary not lazy loaded; server must implement GetTopicMessages command.\r\n private readonly topicsMessages = new IndexedCollection<string, ObservableIndexedObjectCollection<Message>>();\r\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\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('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('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> | null> {\r\n if (! this.members.has(roomId)) {\r\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.handleRoomMembers(result.data);\r\n }\r\n\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 | null> {\r\n const userId = (await this.tracker.getMe()).id;\r\n const members = await this.getMembers(roomId);\r\n\r\n if (! members) {\r\n // User is not in passed room.\r\n return null;\r\n }\r\n\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 collection of room topics.\r\n */\r\n public async getTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null> {\r\n await this.deferredSession.promise;\r\n return this.topics.get(roomId);\r\n }\r\n\r\n /**\r\n * Get collection of the messages written in topic.\r\n */\r\n public async getMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null> {\r\n return this.topicsMessages.get(topicId);\r\n }\r\n\r\n /**\r\n * For internal use. If you want to leave the room, execute a proper command on client object.\r\n * @internal\r\n */\r\n public _delete(...roomIds: string[]): void {\r\n this.list.delete(...roomIds);\r\n this.members.delete(...roomIds);\r\n\r\n const topicIds: string[] = [];\r\n for (const roomId of roomIds) {\r\n topicIds.push(...(this.topics.get(roomId)?.map(topic => topic.id) ?? []));\r\n }\r\n this.topicsMessages.delete(...topicIds);\r\n\r\n this.topics.delete(...roomIds);\r\n }\r\n\r\n /**\r\n * For internal use. If you want to leave the room, execute a proper command on client object.\r\n * @internal\r\n */\r\n public _deleteBySpaceId(spaceId: string): void {\r\n this._delete(\r\n ...this.list.findBy('spaceId', spaceId).map(room => room.id)\r\n );\r\n }\r\n\r\n /**\r\n * For internal use.\r\n * @internal\r\n */\r\n public _handleSpaceMemberUpdate(spaceId: string, member: SpaceMember): void {\r\n // Update members of rooms related to this space\r\n for (const room of this.list.findBy('spaceId', spaceId).items) {\r\n const roomMembers = this.members.get(room.id);\r\n\r\n if (! roomMembers) {\r\n // Skip update if member list for this room is not loaded\r\n continue;\r\n }\r\n\r\n const roomMember = roomMembers.get(member.user.id);\r\n roomMember.spaceMember = member;\r\n roomMembers.set(roomMember);\r\n }\r\n }\r\n\r\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\r\n if (! this.members.has(ev.roomId)) {\r\n return;\r\n }\r\n\r\n this.members.get(ev.roomId).set(ev.member);\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n const collection = this.topics.get(ev.roomId);\r\n collection.delete(ev.id);\r\n this.list.get(ev.roomId).topics = collection.items;\r\n }\r\n\r\n private handleNewMessage(ev: NewMessage): void {\r\n this.topicsMessages.get(ev.topicId).set(ev.message);\r\n }\r\n\r\n private handleNewTopic(ev: NewTopic): void {\r\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\r\n this.list.get(ev.roomId).topics.push(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 this.topicsMessages.set(...topics.map<[string, ObservableIndexedObjectCollection<Message>]>(topic => [\r\n topic.id,\r\n new ObservableIndexedObjectCollection<Message>('id')\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 addJoinedRooms(...rooms: Room[]): void {\r\n for (const room of rooms) {\r\n this.addJoinedRoomTopics(room.id, ...room.topics);\r\n }\r\n this.list.set(...rooms);\r\n }\r\n\r\n private handleRoomLeft(ev: RoomLeft): void {\r\n this._delete(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) {\r\n this.list.deleteAll();\r\n this.topics.deleteAll();\r\n this.members.deleteAll();\r\n\r\n this.addJoinedRooms(...ev.state.rooms);\r\n\r\n this.deferredSession.resolve();\r\n }\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, RoleUpdated, RoomDeleted,\r\n RoomSummary, Session,\r\n Space,\r\n SpaceDeleted, SpaceJoined, SpaceLeft,\r\n SpaceMember, SpaceMemberJoined, SpaceMemberLeft, SpaceMembers, SpaceMemberUpdated, SpaceRooms\r\n} from \"pserv-ts-types\";\r\nimport {DeferredTask} from \"./DeferredTask\";\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 members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\r\n private readonly deferredSession = new DeferredTask();\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('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceLeft(ev));\r\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\r\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\r\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\r\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('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> | null> {\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> | null> {\r\n if (! this.rooms.has(spaceId)) {\r\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.handleSpaceRooms(result.data);\r\n }\r\n\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> | null> {\r\n if (! this.members.has(spaceId)) {\r\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.handleSpaceMembers(result.data);\r\n }\r\n\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 | null> {\r\n const userId = (await this.tracker.getMe()).id;\r\n const members = await this.getMembers(spaceId);\r\n\r\n if (! members) {\r\n // User is not in passed space.\r\n return null;\r\n }\r\n\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 }\r\n\r\n private handleRoomDeleted(ev: RoomDeleted): void {\r\n if (ev.spaceId) {\r\n this.rooms.get(ev.spaceId).delete(ev.id);\r\n }\r\n\r\n this.tracker.rooms._delete(ev.id);\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 handleSpaceDeleted(ev: SpaceDeleted): void {\r\n this.tracker.rooms._deleteBySpaceId(ev.id);\r\n this.roles.delete(ev.id);\r\n this.members.delete(ev.id);\r\n this.rooms.delete(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 handleSpaceLeft(ev: SpaceLeft): void {\r\n this.handleSpaceDeleted(ev);\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 }\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): 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 this.tracker.rooms._handleSpaceMemberUpdate(ev.spaceId, ev.member);\r\n }\r\n\r\n private handleRoleUpdated(ev: RoleUpdated): void {\r\n this.roles.get(ev.spaceId).set(ev.role);\r\n }\r\n\r\n private handleSession(ev: Session) {\r\n this.list.deleteAll();\r\n this.roles.deleteAll();\r\n this.rooms.deleteAll();\r\n this.members.deleteAll();\r\n\r\n this.addJoinedSpaces(...ev.state.spaces);\r\n\r\n this.deferredSession.resolve();\r\n }\r\n}","export enum Permission {\r\n Root = 1 << 0,\r\n CreateSpaces = 1 << 1,\r\n ManageSpaces = 1 << 2,\r\n ManageRoles = 1 << 3,\r\n ChangeNick = 1 << 4,\r\n ManageRooms = 1 << 5,\r\n ManageTopics = 1 << 6,\r\n ManageMembers = 1 << 7,\r\n SendMessages = 1 << 8,\r\n ViewMessages = 1 << 9,\r\n ChangeMessages = 1 << 10,\r\n ManageMessages = 1 << 11,\r\n ManagePermissions = 1 << 12,\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n PermissionOverwrites,\r\n PermissionOverwritesChanged,\r\n PermissionOverwritesValue,\r\n Role\r\n} from \"pserv-ts-types\";\r\nimport {EventHandler, EventTarget} from \"../EventTarget\";\r\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\r\nimport {Permission} from \"../Permission\";\r\n\r\nconst getOvId = (\r\n layer: PermissionOverwrites['layer'],\r\n layerId: PermissionOverwrites['layerId'],\r\n target: PermissionOverwrites['target'],\r\n targetId: PermissionOverwrites['targetId'],\r\n) => layer + (layerId ?? '') + target + targetId;\r\n\r\nconst getOvIdByObject = (overwrites: PermissionOverwrites | PermissionOverwritesChanged): string => getOvId(\r\n overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId\r\n);\r\n\r\nexport class PermissionsManager extends EventTarget {\r\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\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('PermissionOverwritesChanged', ev => this.handlePermissionOverwrites(ev));\r\n }\r\n\r\n public async getOverwrites(\r\n layer: PermissionOverwrites['layer'],\r\n layerId: PermissionOverwrites['layerId'],\r\n target: PermissionOverwrites['target'],\r\n targetId: PermissionOverwrites['targetId'],\r\n ): Promise<PermissionOverwrites | null> {\r\n const id = getOvId(layer, layerId, target, targetId);\r\n\r\n if (this.overwrites.has(id)) {\r\n return this.overwrites.get(id);\r\n }\r\n\r\n const result = await this.tracker.client.send(\r\n 'GetPermissionOverwrites',\r\n {layer, layerId, target, targetId},\r\n );\r\n\r\n return result.error ? null : result.data;\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 Permission)[],\r\n spaceId?: string,\r\n roomId?: string,\r\n topicId?: string,\r\n ): Promise<{ok: boolean, missing: string[]}> {\r\n const ownedPermissions = await this.calculatePermissions(spaceId, roomId, topicId);\r\n const missing: string[] = [];\r\n\r\n permissionNames.forEach(name => {\r\n if (~ ownedPermissions & Permission[name]) {\r\n missing.push(name);\r\n }\r\n });\r\n\r\n return {ok: missing.length === 0, missing};\r\n }\r\n\r\n public async calculatePermissions(spaceId?: string, roomId?: string, topicId?: string): Promise<number> {\r\n if (topicId && ! roomId || roomId && ! spaceId) {\r\n throw new Error('Corrupted arguments hierarchy');\r\n }\r\n\r\n const userId = (await this.tracker.getMe()).id;\r\n\r\n const userRoles: string[] = [];\r\n\r\n const promises: Promise<PermissionOverwritesValue>[] = [\r\n // Global user overwrites\r\n this.getOverwrites('Global', null, 'User', userId).then(v => v.overwrites),\r\n ];\r\n\r\n if (spaceId) {\r\n userRoles.push(...(await this.tracker.spaces.getMe(spaceId)).roles);\r\n promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));\r\n promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(v => v.overwrites));\r\n }\r\n\r\n if (roomId) {\r\n const roomMember = await this.tracker.rooms.getMe(roomId);\r\n\r\n if (roomMember.roles !== null) { // Room overwrites from roles (only for space rooms)\r\n userRoles.push(...roomMember.roles);\r\n promises.push(this.collectRoleOverwrites(spaceId, 'Room', roomId, userRoles));\r\n }\r\n\r\n promises.push(this.getOverwrites('Room', roomId, 'User', userId).then(v => v.overwrites));\r\n }\r\n\r\n if (topicId) {\r\n if (userRoles.length) {\r\n promises.push(this.collectRoleOverwrites(spaceId, 'Topic', topicId, userRoles));\r\n }\r\n\r\n promises.push(this.getOverwrites('Topic', topicId, '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: PermissionOverwritesChanged | PermissionOverwrites) {\r\n this.overwrites.set([getOvIdByObject(ev), ev]);\r\n this.emit('change');\r\n }\r\n\r\n private async collectRoleOverwrites(\r\n spaceId: string,\r\n layer: PermissionOverwrites['layer'],\r\n layerId: PermissionOverwrites['layerId'],\r\n userRoles: string[],\r\n ): Promise<PermissionOverwritesValue> {\r\n const roleOverwrites = await Promise.all(userRoles.map(\r\n roleId => this.getOverwrites(layer, layerId, 'Role', roleId)\r\n ));\r\n\r\n return this.resolveOverwritesFromRolesByOrder(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.targetId).priority - roles.get(b.targetId).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,\r\n currentValue.overwrites.deny.toString(2).length\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 & Permission.Root) {\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 this.getPermissionNames()) {\r\n result |= Permission[name];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getPermissionNames(): string[] {\r\n return Object.keys(Permission).filter(key => Number.isNaN(parseInt(key)));\r\n }\r\n}","import {WebSocketChatClient} from \"../WebSocketChatClient\";\nimport {Session, User} from \"pserv-ts-types\";\nimport {RoomsManager} from \"./RoomsManager\";\nimport {SpacesManager} from \"./SpacesManager\";\nimport {PermissionsManager} from \"./PermissionsManager\";\nimport {DeferredTask} from \"./DeferredTask\";\n\nexport class ChatStateTracker {\n /**\n * State of the rooms you are in.\n */\n public readonly rooms: RoomsManager = new RoomsManager(this);\n /**\n * State of the spaces you are in.\n */\n public readonly spaces = new SpacesManager(this);\n /**\n * State of your permissions.\n */\n public readonly permissions = new PermissionsManager(this);\n\n private me: User = null;\n private readonly deferredSession = new DeferredTask();\n\n public constructor(public readonly client: WebSocketChatClient) {\n this.client.on('Session', ev => this.handleSession(ev));\n }\n\n public async getMe(): Promise<User> {\n await this.deferredSession.promise;\n return this.me;\n }\n\n private handleSession(ev: Session): void {\n this.me = ev.user;\n this.deferredSession.resolve();\n }\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {Envelope} from \"pserv-ts-types\";\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\nexport class WebSocketChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: [commandType: keyof CommandsMap, commandData: any][] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void];\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n }\n\n public async connect(): Promise<void> {\n const authString = this.options.token ? `token=${this.options.token}` : `nick=${this.options.temporaryNick}`;\n this.ws = new WebSocket(`${this.options.url}?${authString}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n return new Promise((...args) => this.authenticatedResolvers = args);\n }\n\n public disconnect(): void {\n this.sendQueue = [];\n this.ws?.close();\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n if (!this.ws || [this.ws.CLOSED, this.ws.CLOSING].includes(this.ws.readyState)) {\n throw new Error('Cannot send; close or closing connection state');\n }\n\n if (this.ws.readyState === this.ws.CONNECTING || !this.authenticated) {\n this.sendQueue.push([commandType, commandData] as any);\n return;\n }\n\n if (this.ws.readyState !== this.ws.OPEN) {\n throw new Error(`Invalid websocket state=${this.ws.readyState}`);\n }\n\n const envelope = this.createEnvelope<CommandsMap[CommandType][0]>(commandType, commandData);\n this.ws.send(JSON.stringify(envelope));\n return this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n }\n\n private onMessage(event: MessageEvent): void {\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Error';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.authenticatedResolvers[0]();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.authenticatedResolvers[1](envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n if (reconnect) {\n this.connect();\n }\n this.emit(this.Event.disconnect, reconnect);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const data = this.sendQueue[dataIndex];\n setTimeout(() => this.send(...data), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n}","import {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"pserv-ts-types\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\nexport class WebApiChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: {data: any, attempts: number, lastTimeoutId: any}[];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n const envelope = this.createEnvelope(commandType, commandData);\n this.sendStack.push({data: envelope, attempts: 0, lastTimeoutId: null});\n this.makeApiCall(this.sendStack.length - 1);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests\n this.sendStack.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.awaitingResponse.delete(item.data.ref);\n });\n this.sendStack = [];\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(reqId: number, response: Response): Promise<void> {\n this.sendStack.splice(reqId, 1);\n const envelope: Envelope = await response.json();\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(reqId: number, body: string): void {\n if (this.sendStack[reqId].attempts >= (this.options.attemptsToSend ?? 10)) {\n this.sendStack.splice(reqId, 1);\n this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n this.sendStack[reqId].lastTimeoutId = setTimeout(\n () => this.makeApiCall(reqId),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(reqId: number): void {\n this.sendStack[reqId].attempts++;\n const bodyJson = JSON.stringify(this.sendStack[reqId].data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n } else if (this.options.temporaryNick) {\n headers.Authorization = `Temp ${this.options.temporaryNick}`;\n }\n\n fetch(this.options.url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(reqId, response))\n .catch(() => this.onError(reqId, bodyJson));\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined\n ): Promise<RestClientResponse<ResponseT>> {\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const result = await fetch(url, {method, body, headers});\n\n return {\n ok: result.ok,\n status: result.status,\n data: await result.json(),\n };\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient} from \"./AbstractRestClient\";\n\nexport interface TokenInterface {\n token: string,\n expiration: string\n}\n\nexport interface MyAccountInterface {\n id: string;\n nick: string;\n avatar: string;\n}\n\nexport class AuthClient extends AbstractRestClient {\n protected defaultUrl: string = 'https://polfan.pl/webservice/api';\n\n public static async createToken(\n login: string,\n password: string,\n clientName: string = 'pserv-js-client'\n ): Promise<TokenInterface> {\n const response = await new AuthClient({token: null}).send('POST', 'auth/tokens', {\n login, password, client_name: clientName\n });\n if (response.ok) {\n return response.data;\n }\n throw new Error(`Cannot create user token: ${response.data.errors[0]}`);\n }\n\n public async deleteToken(token: string): Promise<void> {\n const response = await this.send('DELETE', `auth/tokens/${token}`);\n if (!response.ok) {\n throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);\n }\n }\n\n public async getMe(): Promise<MyAccountInterface> {\n const response = await this.send('GET', 'auth/me');\n if (response.ok) {\n response.data.id = response.data.id.toString();\n return response.data;\n }\n throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);\n }\n}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\nimport {WebApiChatClient} from \"./WebApiChatClient\";\nimport {\n IndexedCollection,\n IndexedObjectCollection,\n ObservableIndexedCollection,\n ObservableIndexedObjectCollection\n} from \"./IndexedObjectCollection\";\nimport { AuthClient } from \"./AuthClient\";\nimport { Permission } from \"./Permission\";\n\nexport {\n IndexedCollection, ObservableIndexedCollection,\n IndexedObjectCollection, ObservableIndexedObjectCollection,\n Permission,\n WebSocketChatClient, WebApiChatClient,\n AuthClient\n};"],"names":["EventTarget","Map","eventName","handler","addHandler","events","onceEvents","index","get","indexOf","splice","event","callHandlers","map","handlers","push","set","forEach","callback","AbstractChatClient","type","data","ref","sentCounter","toString","envelope","Promise","args","awaitingResponse","has","isError","error","IndexedCollection","items","_items","size","item","id","ids","clear","field","valueToFind","limit","result","entries","next","value","done","length","Array","from","entry","IndexedObjectCollection","values","getId","deleteAll","ObservableIndexedCollection","eventTarget","emit","setItems","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","DeferredTask","promise","resolve","RoomsManager","tracker","client","ev","handleNewMessage","handleNewTopic","handleTopicDeleted","handleRoomJoined","handleRoomLeft","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSession","roomId","members","send","getMe","userId","getMembers","find","member","user","spaceMember","deferredSession","list","topics","topicId","topicsMessages","roomIds","topicIds","topic","spaceId","_delete","findBy","room","roomMembers","roomMember","collection","message","addJoinedRoomTopics","addJoinedRooms","rooms","state","SpacesManager","handleNewRoom","handleRoomDeleted","handleSpaceDeleted","handleSpaceJoined","handleSpaceLeft","handleSpaceMemberJoined","handleSpaceMemberLeft","handleSpaceMembers","handleSpaceRooms","handleSpaceMemberUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","roles","role","summary","_deleteBySpaceId","addJoinedSpaces","space","spaces","summaries","_handleSpaceMemberUpdate","Permission","getOvId","layer","layerId","target","targetId","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","permissionNames","calculatePermissions","ownedPermissions","missing","name","ok","Error","userRoles","promises","getOverwrites","then","v","collectRoleOverwrites","all","resolveOverwritesHierarchy","roleId","roleOverwrites","resolveOverwritesFromRolesByOrder","allows","denies","getRoles","sortedOverwrites","sort","a","b","priority","permissionsLength","reduce","previousValue","currentValue","Math","max","allow","deny","overwriteEvent","revDecDenies","split","reverse","join","revDecAllows","i","parseInt","permissionOverwritesValues","Root","getRootAccessValue","getPermissionNames","Object","filter","key","Number","isNaN","ChatStateTracker","me","WebSocketChatClientEvent","WebSocketChatClient","options","token","temporaryNick","stateTracking","authString","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","sendQueue","close","commandType","commandData","CLOSED","CLOSING","includes","readyState","CONNECTING","OPEN","createEnvelope","JSON","stringify","createPromiseFromCommandEnvelope","parse","handleIncomingEnvelope","Event","isAuthenticated","connect","sendFromQueue","clearTimeout","reconnect","code","disconnect","lastDelay","dataIndex","awaitQueueSendDelayMs","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","json","body","attemptsToSend","handleEnvelopeSendError","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","onError","AbstractRestClient","uri","undefined","getUrl","URLSearchParams","status","removeEndingSlash","defaultUrl","removeStartingSlash","text","replace","AuthClient","errors","login","password","clientName","client_name"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;UCVA;UACA;;;;;WCDA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACGO,IAAMA,WAAW;EAAA;IAAA;IAAA,gCACoB,IAAIC,GAAG,EAAkC;IAAA,oCACrC,IAAIA,GAAG,EAAkC;EAAA;EAAA;IAAA;IAAA,OAErF,YAAUC,SAAiB,EAAEC,OAA6B,EAAQ;MAC9D,IAAI,CAACC,UAAU,CAAC,IAAI,CAACC,MAAM,EAAEH,SAAS,EAAEC,OAAO,CAAC;MAChD,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,cAAYD,SAAiB,EAAEC,OAA6B,EAAQ;MAChE,IAAI,CAACC,UAAU,CAAC,IAAI,CAACE,UAAU,EAAEJ,SAAS,EAAEC,OAAO,CAAC;MACpD,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,aAAWD,SAAiB,EAAEC,OAA6B,EAAQ;MAAA;MAC/D,IAAMI,KAAK,uBAAG,IAAI,CAACF,MAAM,CAACG,GAAG,CAACN,SAAS,CAAC,qDAA1B,iBAA4BO,OAAO,CAACN,OAAO,CAAC;MAC1D,IAAI,CAACI,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;QACrB,OAAO,IAAI;MACf;MACA,IAAI,CAACF,MAAM,CAACG,GAAG,CAACN,SAAS,CAAC,CAACQ,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;IAC/C;EAAC;IAAA;IAAA,OAED,cAAYL,SAAiB,EAAES,KAAc,EAAQ;MACjD,IAAI,CAACC,YAAY,CAAC,IAAI,CAACP,MAAM,EAAEH,SAAS,EAAES,KAAK,CAAC;MAChD,IAAI,CAACC,YAAY,CAAC,IAAI,CAACN,UAAU,EAAEJ,SAAS,EAAES,KAAK,CAAC;MACpD,IAAI,CAACL,UAAU,UAAO,CAACJ,SAAS,CAAC;MACjC,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,oBAAmBW,GAAwB,EAAEX,SAAiB,EAAEC,OAA6B,EAAQ;MAAA;MACjG,IAAMW,QAAQ,eAAGD,GAAG,CAACL,GAAG,CAACN,SAAS,CAAC,+CAAI,EAAE;MACzCY,QAAQ,CAACC,IAAI,CAACZ,OAAO,CAAC;MACtBU,GAAG,CAACG,GAAG,CAACd,SAAS,EAAEY,QAAQ,CAAC;IAChC;EAAC;IAAA;IAAA,OAED,sBAAqBD,GAAwB,EAAEX,SAAiB,EAAES,KAAa,EAAQ;MAAA;MACnF,aAAAE,GAAG,CAACL,GAAG,CAACN,SAAS,CAAC,8CAAlB,UAAoBe,OAAO,CAAC,UAAAC,QAAQ;QAAA,OAAIA,QAAQ,CAACP,KAAK,CAAC;MAAA,EAAC;IAC5D;EAAC;EAAA;AAAA;;;;;;;;;;;;;;;;;;ACMqC;AAInC,IAAeQ,kBAAkB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,qFAC+B,IAAIlB,GAAG,EAAmC;IAAA,gFAC7E,CAAC;IAAA;EAAA;EAAA;IAAA;IAAA,OAKjC,YACKC,SAA6B,EAAEC,OAA8C,EAAQ;MACtF,kFAAgBD,SAAS,EAAEC,OAAO;IACtC;EAAC;IAAA;IAAA,OAED,cACKD,SAAoB,EAAEC,OAA8C,EAAQ;MAC7E,oFAAkBD,SAAS,EAAEC,OAAO;IACxC;EAAC;IAAA;IAAA,OAED,wBAAmCiB,IAAY,EAAEC,IAAc,EAAsB;MACjF,OAAO;QACHD,IAAI,EAAJA,IAAI;QAAEC,IAAI,EAAJA,IAAI;QAAEC,GAAG,EAAE,CAAC,EAAE,IAAI,CAACC,WAAW,EAAEC,QAAQ;MAClD,CAAC;IACL;EAAC;IAAA;IAAA,OAED,0CACyCC,QAA4C,EAChC;MAAA;MACjD,OAAO,IAAIC,OAAO,CAAC;QAAA,mCAAIC,IAAI;UAAJA,IAAI;QAAA;QAAA,OACvB,MAAI,CAACC,gBAAgB,CAACZ,GAAG,CAACS,QAAQ,CAACH,GAAG,EAAYK,IAAI,CAAC;MAAA,EAAC;IAChE;EAAC;IAAA;IAAA,OAED,gCAAiCF,QAAkB,EAAQ;MACvD,IAAI,CAAC,IAAI,CAACG,gBAAgB,CAACC,GAAG,CAACJ,QAAQ,CAACH,GAAG,CAAC,EAAE;QAC1C;MACJ;MACA,IAAMQ,OAAO,GAAGL,QAAQ,CAACL,IAAI,KAAK,OAAO;MACzC,IAAI,CAACQ,gBAAgB,CAACpB,GAAG,CAACiB,QAAQ,CAACH,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvCD,IAAI,EAAES,OAAO,GAAG,IAAI,GAAGL,QAAQ,CAACJ,IAAI;QACpCU,KAAK,EAAED,OAAO,GAAGL,QAAQ,CAACJ,IAAI,GAAG;MACrC,CAAC,CAAuB;MACxB,IAAI,CAACO,gBAAgB,UAAO,CAACH,QAAQ,CAACH,GAAG,CAAC;IAC9C;EAAC;IAAA;IAAA,OAED,iCAAkCG,QAAkB,EAAEM,KAAU,EAAQ;MACpE,IAAI,CAAC,IAAI,CAACH,gBAAgB,CAACC,GAAG,CAACJ,QAAQ,CAACH,GAAG,CAAC,EAAE;QAC1C;MACJ;MACA,IAAI,CAACM,gBAAgB,CAACpB,GAAG,CAACiB,QAAQ,CAACH,GAAG,CAAC,CAAC,CAAC,CAAC,CAACS,KAAK,CAAC;MACjD,IAAI,CAACH,gBAAgB,UAAO,CAACH,QAAQ,CAACH,GAAG,CAAC;IAC9C;EAAC;EAAA;AAAA,EAhD4CtB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;ACxDG;AAExD,IAAMgC,iBAAiB;EAG1B,6BAA6D;IAAA,IAA1CC,KAAmC,uEAAG,EAAE;IAAA;IAAA,uDAFrB,IAAIhC,GAAG,EAAE;IAG3C,IAAI,CAACe,GAAG,OAAR,IAAI,qBAAQiB,KAAK,EAAC;EACtB;EAAC;IAAA;IAAA,KAED,eAAsC;MAClC,OAAO,IAAI,CAACC,MAAM;IACtB;EAAC;IAAA;IAAA,KAED,eAA4B;MACxB,OAAO,IAAI,CAACA,MAAM,CAACC,IAAI;IAC3B;EAAC;IAAA;IAAA,OAED,eAA6C;MAAA,kCAA/BF,KAAK;QAALA,KAAK;MAAA;MACf,0BAAmBA,KAAK,4BAAE;QAArB,IAAMG,KAAI;QACX,IAAI,CAACF,MAAM,CAAClB,GAAG,CAACoB,KAAI,CAAC,CAAC,CAAC,EAAEA,KAAI,CAAC,CAAC,CAAC,CAAC;MACrC;IACJ;EAAC;IAAA;IAAA,OAED,aAAWC,EAAQ,EAAsB;MACrC,OAAO,IAAI,CAACJ,KAAK,CAACzB,GAAG,CAAC6B,EAAE,CAAC;IAC7B;EAAC;IAAA;IAAA,OAED,aAAWA,EAAQ,EAAW;MAC1B,OAAO,IAAI,CAACJ,KAAK,CAACJ,GAAG,CAACQ,EAAE,CAAC;IAC7B;EAAC;IAAA;IAAA,OAED,mBAAoC;MAAA,mCAAnBC,GAAG;QAAHA,GAAG;MAAA;MAChB,yBAAiBA,GAAG,4BAAE;QAAjB,IAAMD,GAAE;QACT,IAAI,CAACJ,KAAK,UAAO,CAACI,GAAE,CAAC;MACzB;IACJ;EAAC;IAAA;IAAA,OAED,qBAAyB;MACrB,IAAI,CAACJ,KAAK,CAACM,KAAK,EAAE;IACtB;EAAC;IAAA;IAAA,OAED,gBAAcC,KAAmB,EAAEC,WAAgB,EAAyD;MAAA,IAAvDC,KAAa,uEAAG,IAAI;MACrE,IAAMC,MAAM,GAAG,IAAIX,iBAAiB,EAAgB;MACpD,IAAII,IAAI;MACR,OAAO,CAAC,CAACA,IAAI,GAAG,IAAI,CAACH,KAAK,CAACW,OAAO,EAAE,CAACC,IAAI,EAAE,CAACC,KAAK,EAAEC,IAAI,EAAE;QACrD,IAAIL,KAAK,IAAIC,MAAM,CAACK,MAAM,KAAKN,KAAK,EAAE;UAClC;QACJ;QACA,IAAIN,IAAI,CAAC,CAAC,CAAC,CAACI,KAAK,CAAC,KAAKC,WAAW,EAAE;UAChCE,MAAM,CAAC3B,GAAG,CAACoB,IAAI,CAAC;QACpB;MACJ;MACA,OAAOO,MAAM;IACjB;EAAC;IAAA;IAAA,OAED,aAAuBzB,QAA6C,EAAU;MAC1E,OAAO+B,KAAK,CAACC,IAAI,CAAC,IAAI,CAACjB,KAAK,CAACW,OAAO,EAAE,CAAC,CAAC/B,GAAG,CAAC,UAACsC,KAAK;QAAA,OAAKjC,QAAQ,CAACiC,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC;IACxF;EAAC;EAAA;AAAA;AAGE,IAAMC,uBAAuB;EAGhC,iCACoBf,EAAgC,EAElD;IAAA,IADEJ,KAAU,uEAAG,EAAE;IAAA;IAAA,KADCI,EAAgC,GAAhCA,EAAgC;IAAA;IAGhD,IAAI,CAACH,MAAM,GAAG,IAAIF,iBAAiB,EAAa;IAChD,IAAI,CAAChB,GAAG,OAAR,IAAI,qBAAQiB,KAAK,EAAC;EACtB;EAAC;IAAA;IAAA,KAED,eAAwB;MACpB,OAAOgB,KAAK,CAACC,IAAI,CAAC,IAAI,CAAChB,MAAM,CAACD,KAAK,CAACoB,MAAM,EAAE,CAAC;IACjD;EAAC;IAAA;IAAA,KAED,eAA4B;MACxB,OAAO,IAAI,CAACnB,MAAM,CAACc,MAAM;IAC7B;EAAC;IAAA;IAAA,OAED,eAAgC;MAAA;QAAA;MAAA,mCAAlBf,KAAK;QAALA,KAAK;MAAA;MACf,oBAAI,CAACC,MAAM,EAAClB,GAAG,wCAAKiB,KAAK,CAACpB,GAAG,CAAC,UAAAuB,IAAI;QAAA,OAAI,CAAC,KAAI,CAACkB,KAAK,CAAClB,IAAI,CAAC,EAAEA,IAAI,CAAC;MAAA,CAAe,CAAC,EAAE;IACpF;EAAC;IAAA;IAAA,OAED,aAAWC,EAAO,EAAiB;MAC/B,OAAO,IAAI,CAACH,MAAM,CAAC1B,GAAG,CAAC6B,EAAE,CAAC;IAC9B;EAAC;IAAA;IAAA,OAED,eAAa9B,KAAa,EAAiB;MACvC,OAAO,IAAI,CAAC0B,KAAK,CAAC1B,KAAK,CAAC;IAC5B;EAAC;IAAA;IAAA,OAED,aAAW8B,EAAO,EAAW;MACzB,OAAO,IAAI,CAACH,MAAM,CAACL,GAAG,CAACQ,EAAE,CAAC;IAC9B;EAAC;IAAA;IAAA,OAED,mBAAmC;MAAA;MAC/B,qBAAI,CAACH,MAAM,WAAO,gCAAQ;IAC9B;EAAC;IAAA;IAAA,OAED,qBAAyB;MACrB,IAAI,CAACA,MAAM,CAACqB,SAAS,EAAE;IAC3B;EAAC;IAAA;IAAA,OAED,gBAAcf,KAAc,EAAEC,WAAgB,EAAoD;MAAA,IAAlDC,KAAa,uEAAG,IAAI;MAChE,IAAMC,MAAM,GAAG,IAAIS,uBAAuB,CAAI,IAAI,CAACf,EAAE,CAAC;MAAC,2CACnC,IAAI,CAACJ,KAAK;QAAA;MAAA;QAA9B,oDAAgC;UAAA,IAArBa,MAAK;UACZ,IAAIJ,KAAK,IAAIC,MAAM,CAACK,MAAM,KAAKN,KAAK,EAAE;YAClC;UACJ;UACA,IAAII,MAAK,CAACN,KAAK,CAAC,KAAKC,WAAW,EAAE;YAC9BE,MAAM,CAAC3B,GAAG,CAAC8B,MAAK,CAAC;UACrB;QACJ;MAAC;QAAA;MAAA;QAAA;MAAA;MACD,OAAOH,MAAM;IACjB;EAAC;IAAA;IAAA,OAED,aAAuBzB,QAAsD,EAAU;MACnF,OAAO,IAAI,CAACe,KAAK,CAACpB,GAAG,CAACK,QAAQ,CAAC;IACnC;EAAC;IAAA;IAAA,OAED,eAAgBkB,IAAO,EAAO;MAC1B,OAAO,OAAO,IAAI,CAACC,EAAE,KAAK,UAAU,GAAG,IAAI,CAACA,EAAE,CAACD,IAAI,CAAC,GAAGA,IAAI,CAAC,IAAI,CAACC,EAAE,CAAC;IACxE;EAAC;EAAA;AAAA;AAQE,IAAMmB,2BAA2B;EAAA;EAAA;EAGpC,uCAA6D;IAAA;IAAA;IAAA,IAA1CvB,KAAmC,uEAAG,EAAE;IAAA;IACvD;IAAQ;IACR,OAAKwB,WAAW,GAAG,IAAIzD,WAAW,EAAmC;IACrE,kBAAKgB,GAAG,kCAAIiB,KAAK,EAAC;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,eAAuC;MAAA,mCAAzBA,KAAK;QAALA,KAAK;MAAA;MACf,IAAIA,KAAK,CAACe,MAAM,EAAE;QAAA;QACd,kKAAaf,KAAK;QAClB,IAAI,CAACwB,WAAW,CAACC,IAAI,CAAC,QAAQ,EAAE;UAACC,QAAQ,EAAE1B,KAAK,CAACpB,GAAG,CAAC,UAAAuB,IAAI;YAAA,OAAIA,IAAI,CAAC,CAAC,CAAC;UAAA;QAAC,CAAC,CAAC;MAC3E;IACJ;EAAC;IAAA;IAAA,OAED,mBAA8B;MAAA,mCAAbE,GAAG;QAAHA,GAAG;MAAA;MAChB,IAAIA,GAAG,CAACU,MAAM,EAAE;QAAA;QACZ,qKAAgBV,GAAG;QACnB,IAAI,CAACmB,WAAW,CAACC,IAAI,CAAC,QAAQ,EAAE;UAACE,YAAY,EAAEtB;QAAG,CAAC,CAAC;MACxD;IACJ;EAAC;IAAA;IAAA,OAED,qBAAmB;MACf,IAAI,IAAI,CAACU,MAAM,EAAE;QACb,IAAMV,GAAG,GAAG,IAAI,CAACJ,MAAM,CAAC2B,IAAI,EAAE;QAC9B;QACA,IAAI,CAACJ,WAAW,CAACC,IAAI,CAAC,QAAQ,EAAE;UAACE,YAAY,EAAEX,KAAK,CAACC,IAAI,CAACZ,GAAG;QAAC,CAAC,CAAC;MACpE;IACJ;EAAC;IAAA;IAAA,OAED,YAAUpC,SAAmB,EAAEC,OAAuD,EAAQ;MAC1F,IAAI,CAACsD,WAAW,CAACK,EAAE,CAAC5D,SAAS,EAAEC,OAAO,CAAC;MACvC,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,cAAYD,SAAmB,EAAEC,OAAuD,EAAQ;MAC5F,IAAI,CAACsD,WAAW,CAACM,IAAI,CAAC7D,SAAS,EAAEC,OAAO,CAAC;MACzC,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,aAAWD,SAAiB,EAAEC,OAAuD,EAAQ;MACzF,IAAI,CAACsD,WAAW,CAACO,GAAG,CAAC9D,SAAS,EAAEC,OAAO,CAAC;MACxC,OAAO,IAAI;IACf;EAAC;EAAA;AAAA,EA5C0D6B,iBAAiB;AA+CzE,IAAMiC,iCAAiC;EAAA;EAAA;EAG1C,2CACoB5B,EAAmC,EAErD;IAAA;IAAA;IAAA,IADEJ,KAAU,uEAAG,EAAE;IAAA;IAEf,4BAAMI,EAAE;IAAE,OAHMA,EAAmC,GAAnCA,EAAmC;IAAA;IAInD,OAAKoB,WAAW,GAAG,IAAIzD,WAAW,EAAE;IACpC,kBAAKgB,GAAG,kCAAIiB,KAAK,EAAC;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,eAA0B;MAAA;MAAA,mCAAZA,KAAK;QAALA,KAAK;MAAA;MACf,IAAIA,KAAK,CAACe,MAAM,EAAE;QAAA;QACd,wKAAaf,KAAK;QAClB,IAAI,CAACwB,WAAW,CAACC,IAAI,CAAC,QAAQ,EAAE;UAACC,QAAQ,EAAE1B,KAAK,CAACpB,GAAG,CAAC,UAAAuB,IAAI;YAAA,OAAI,MAAI,CAACkB,KAAK,CAAClB,IAAI,CAAC;UAAA;QAAC,CAAC,CAAC;MACpF;IACJ;EAAC;IAAA;IAAA,OAED,mBAAgC;MAAA,mCAAfE,GAAG;QAAHA,GAAG;MAAA;MAChB,IAAIA,GAAG,CAACU,MAAM,EAAE;QAAA;QACZ,2KAAgBV,GAAG;QACnB,IAAI,CAACmB,WAAW,CAACC,IAAI,CAAC,QAAQ,EAAE;UAACE,YAAY,EAAEtB;QAAG,CAAC,CAAC;MACxD;IACJ;EAAC;IAAA;IAAA,OAED,qBAAmB;MACf,IAAI,IAAI,CAACU,MAAM,EAAE;QACb,IAAMV,GAAG,GAAG,IAAI,CAACJ,MAAM,CAACD,KAAK,CAAC4B,IAAI,EAAE;QACpC;QACA,IAAI,CAACJ,WAAW,CAACC,IAAI,CAAC,QAAQ,EAAE;UAACE,YAAY,EAAEX,KAAK,CAACC,IAAI,CAACZ,GAAG;QAAC,CAAC,CAAC;MACpE;IACJ;EAAC;IAAA;IAAA,OAED,YAAUpC,SAAmB,EAAEC,OAAyD,EAAQ;MAC5F,IAAI,CAACsD,WAAW,CAACK,EAAE,CAAC5D,SAAS,EAAEC,OAAO,CAAC;MACvC,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,cAAYD,SAAmB,EAAEC,OAAyD,EAAQ;MAC9F,IAAI,CAACsD,WAAW,CAACM,IAAI,CAAC7D,SAAS,EAAEC,OAAO,CAAC;MACzC,OAAO,IAAI;IACf;EAAC;IAAA;IAAA,OAED,aAAWD,SAAiB,EAAEC,OAAyD,EAAQ;MAC3F,IAAI,CAACsD,WAAW,CAACO,GAAG,CAAC9D,SAAS,EAAEC,OAAO,CAAC;MACxC,OAAO,IAAI;IACf;EAAC;EAAA;AAAA,EA/CqDiD,uBAAuB;;;;;;;;;ACjL1E,IAAMc,YAAY,yCAIrB,wBAAqB;EAAA;EAAA;EAAA;EAAA;EACjB,IAAI,CAACC,OAAO,GAAG,IAAIzC,OAAO,CAAO,UAAA0C,OAAO;IAAA,OAAI,KAAI,CAACA,OAAO,GAAGA,OAAO;EAAA,EAAC;AACvE,CAAC;;;;;;;;;;+CCLL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADgG;AAYpD;AAErC,IAAMC,YAAY;EAGrB;;EAKA,sBAA2BC,OAAyB,EAAE;IAAA;IAAA;IAAA,KAA3BA,OAAyB,GAAzBA,OAAyB;IAAA,0CAP5B,IAAIL,iCAAiC,CAAO,IAAI,CAAC;IAAA,4CAC/C,IAAIjC,iBAAiB,EAAoD;IAAA,oDAEjE,IAAIA,iBAAiB,EAAsD;IAAA,6CAClF,IAAIA,iBAAiB,EAAyD;IAAA,qDACtE,IAAIkC,YAAY,EAAE;IAGjD,IAAI,CAACI,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,YAAY,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACC,gBAAgB,CAACD,EAAE,CAAC;IAAA,EAAC;IACrE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,UAAU,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACE,cAAc,CAACF,EAAE,CAAC;IAAA,EAAC;IACjE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,cAAc,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACG,kBAAkB,CAACH,EAAE,CAAC;IAAA,EAAC;IACzE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,YAAY,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACI,gBAAgB,CAACJ,EAAE,CAAC;IAAA,EAAC;IACrE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,UAAU,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACK,cAAc,CAACL,EAAE,CAAC;IAAA,EAAC;IACjE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,kBAAkB,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACM,sBAAsB,CAACN,EAAE,CAAC;IAAA,EAAC;IACjF,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,gBAAgB,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACO,oBAAoB,CAACP,EAAE,CAAC;IAAA,EAAC;IAC7E,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,aAAa,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACQ,iBAAiB,CAACR,EAAE,CAAC;IAAA,EAAC;IACvE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,mBAAmB,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACS,uBAAuB,CAACT,EAAE,CAAC;IAAA,EAAC;IACnF,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,SAAS,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACU,aAAa,CAACV,EAAE,CAAC;IAAA,EAAC;EACnE;;EAEA;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,6EAGA,iBAAwBW,MAAc;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,IAC5B,IAAI,CAACC,OAAO,CAACvD,GAAG,CAACsD,MAAM,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACL,IAAI,CAACb,OAAO,CAACC,MAAM,CAACc,IAAI,CAAC,gBAAgB,EAAE;kBAAChD,EAAE,EAAE8C;gBAAM,CAAC,CAAC;cAAA;gBAAvExC,MAAM;gBAAA,KAERA,MAAM,CAACZ,KAAK;kBAAA;kBAAA;gBAAA;gBAAA,MACNY,MAAM,CAACZ,KAAK;cAAA;gBAGtB,IAAI,CAACiD,iBAAiB,CAACrC,MAAM,CAACtB,IAAI,CAAC;cAAC;gBAAA,iCAGjC,IAAI,CAAC+D,OAAO,CAAC5E,GAAG,CAAC2E,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClC;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,wEAGA,kBAAmBA,MAAc;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACP,IAAI,CAACb,OAAO,CAACgB,KAAK,EAAE;cAAA;gBAApCC,MAAM,kBAAgClD,EAAE;gBAAA;gBAAA,OACxB,IAAI,CAACmD,UAAU,CAACL,MAAM,CAAC;cAAA;gBAAvCC,OAAO;gBAAA,IAEPA,OAAO;kBAAA;kBAAA;gBAAA;gBAAA,kCAEFK,SAAS;cAAA;gBAAA,kCAGbL,OAAO,CAACnD,KAAK,CAACyD,IAAI,CAAC,UAAAC,MAAM;kBAAA;kBAAA,OAAI,oCAACA,MAAM,CAACC,IAAI,iDAAX,aAAavD,EAAE,6DAAIsD,MAAM,CAACE,WAAW,CAACD,IAAI,CAACvD,EAAE,MAAMkD,MAAM;gBAAA,EAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClG;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,sEAGA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACU,IAAI,CAACO,eAAe,CAAC3B,OAAO;cAAA;gBAAA,kCAC3B,IAAI,CAAC4B,IAAI;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACnB;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,4EAGA,kBAAuBZ,MAAc;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC3B,IAAI,CAACW,eAAe,CAAC3B,OAAO;cAAA;gBAAA,kCAC3B,IAAI,CAAC6B,MAAM,CAACxF,GAAG,CAAC2E,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjC;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,8EAGA,kBAAyBc,OAAe;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAC7B,IAAI,CAACC,cAAc,CAAC1F,GAAG,CAACyF,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC1C;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;AACA;EAHI;IAAA;IAAA,OAIA,mBAA2C;MAAA;MAAA,kCAAzBE,OAAO;QAAPA,OAAO;MAAA;MACrB,kBAAI,CAACJ,IAAI,WAAO,mBAAII,OAAO,CAAC;MAC5B,qBAAI,CAACf,OAAO,WAAO,sBAAIe,OAAO,CAAC;MAE/B,IAAMC,QAAkB,GAAG,EAAE;MAC7B,4BAAqBD,OAAO,8BAAE;QAAA;QAAzB,IAAMhB,MAAM;QACbiB,QAAQ,CAACrF,IAAI,OAAbqF,QAAQ,6EAAU,IAAI,CAACJ,MAAM,CAACxF,GAAG,CAAC2E,MAAM,CAAC,qDAAvB,iBAAyBtE,GAAG,CAAC,UAAAwF,KAAK;UAAA,OAAIA,KAAK,CAAChE,EAAE;QAAA,EAAC,uEAAI,EAAE,EAAE;MAC7E;MACA,4BAAI,CAAC6D,cAAc,WAAO,6BAAIE,QAAQ,CAAC;MAEvC,oBAAI,CAACJ,MAAM,WAAO,qBAAIG,OAAO,CAAC;IAClC;;IAEA;AACJ;AACA;AACA;EAHI;IAAA;IAAA,OAIA,0BAAwBG,OAAe,EAAQ;MAC3C,IAAI,CAACC,OAAO,OAAZ,IAAI,iCACG,IAAI,CAACR,IAAI,CAACS,MAAM,CAAC,SAAS,EAAEF,OAAO,CAAC,CAACzF,GAAG,CAAC,UAAA4F,IAAI;QAAA,OAAIA,IAAI,CAACpE,EAAE;MAAA,EAAC,EAC/D;IACL;;IAEA;AACJ;AACA;AACA;EAHI;IAAA;IAAA,OAIA,kCAAgCiE,OAAe,EAAEX,MAAmB,EAAQ;MACxE;MAAA,uDACmB,IAAI,CAACI,IAAI,CAACS,MAAM,CAAC,SAAS,EAAEF,OAAO,CAAC,CAACrE,KAAK;QAAA;MAAA;QAA7D,oDAA+D;UAAA,IAApDwE,IAAI;UACX,IAAMC,WAAW,GAAG,IAAI,CAACtB,OAAO,CAAC5E,GAAG,CAACiG,IAAI,CAACpE,EAAE,CAAC;UAE7C,IAAI,CAAEqE,WAAW,EAAE;YACf;YACA;UACJ;UAEA,IAAMC,UAAU,GAAGD,WAAW,CAAClG,GAAG,CAACmF,MAAM,CAACC,IAAI,CAACvD,EAAE,CAAC;UAClDsE,UAAU,CAACd,WAAW,GAAGF,MAAM;UAC/Be,WAAW,CAAC1F,GAAG,CAAC2F,UAAU,CAAC;QAC/B;MAAC;QAAA;MAAA;QAAA;MAAA;IACL;EAAC;IAAA;IAAA,OAED,iCAAgCnC,EAAqB,EAAQ;MACzD,IAAI,CAAE,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAACW,MAAM,CAAC,EAAE;QAC/B;MACJ;MAEA,IAAI,CAACC,OAAO,CAAC5E,GAAG,CAACgE,EAAE,CAACW,MAAM,CAAC,CAACnE,GAAG,CAACwD,EAAE,CAACmB,MAAM,CAAC;IAC9C;EAAC;IAAA;IAAA,OAED,4BAA2BnB,EAAgB,EAAQ;MAC/C,IAAMoC,UAAU,GAAG,IAAI,CAACZ,MAAM,CAACxF,GAAG,CAACgE,EAAE,CAACW,MAAM,CAAC;MAC7CyB,UAAU,UAAO,CAACpC,EAAE,CAACnC,EAAE,CAAC;MACxB,IAAI,CAAC0D,IAAI,CAACvF,GAAG,CAACgE,EAAE,CAACW,MAAM,CAAC,CAACa,MAAM,GAAGY,UAAU,CAAC3E,KAAK;IACtD;EAAC;IAAA;IAAA,OAED,0BAAyBuC,EAAc,EAAQ;MAC3C,IAAI,CAAC0B,cAAc,CAAC1F,GAAG,CAACgE,EAAE,CAACyB,OAAO,CAAC,CAACjF,GAAG,CAACwD,EAAE,CAACqC,OAAO,CAAC;IACvD;EAAC;IAAA;IAAA,OAED,wBAAuBrC,EAAY,EAAQ;MACvC,IAAI,CAACsC,mBAAmB,CAACtC,EAAE,CAACW,MAAM,EAAEX,EAAE,CAAC6B,KAAK,CAAC;MAC7C,IAAI,CAACN,IAAI,CAACvF,GAAG,CAACgE,EAAE,CAACW,MAAM,CAAC,CAACa,MAAM,CAACjF,IAAI,CAACyD,EAAE,CAAC6B,KAAK,CAAC;IAClD;EAAC;IAAA;IAAA,OAED,6BAA4BlB,MAAc,EAA4B;MAAA;MAAA,mCAAvBa,MAAM;QAANA,MAAM;MAAA;MACjD,IAAI,IAAI,CAACA,MAAM,CAACnE,GAAG,CAACsD,MAAM,CAAC,EAAE;QAAA;QACzB,yBAAI,CAACa,MAAM,CAACxF,GAAG,CAAC2E,MAAM,CAAC,EAACnE,GAAG,0BAAIgF,MAAM,CAAC;MAC1C,CAAC,MAAM;QACH,IAAI,CAACA,MAAM,CAAChF,GAAG,CAAC,CAACmE,MAAM,EAAE,IAAIlB,iCAAiC,CAAQ,IAAI,EAAE+B,MAAM,CAAC,CAAC,CAAC;MACzF;MAEA,6BAAI,CAACE,cAAc,EAAClF,GAAG,6DAAIgF,MAAM,CAACnF,GAAG,CAAuD,UAAAwF,KAAK;QAAA,OAAI,CACjGA,KAAK,CAAChE,EAAE,EACR,IAAI4B,iCAAiC,CAAU,IAAI,CAAC,CACvD;MAAA,EAAC,EAAC;IACP;EAAC;IAAA;IAAA,OAED,0BAAyBO,EAAc,EAAQ;MAC3C,IAAI,CAACuC,cAAc,CAACvC,EAAE,CAACiC,IAAI,CAAC;IAChC;EAAC;IAAA;IAAA,OAED,0BAA+C;MAAA;MAAA,mCAArBO,KAAK;QAALA,KAAK;MAAA;MAC3B,2BAAmBA,KAAK,8BAAE;QAArB,IAAMP,IAAI;QACX,IAAI,CAACK,mBAAmB,OAAxB,IAAI,GAAqBL,IAAI,CAACpE,EAAE,wCAAKoE,IAAI,CAACT,MAAM,GAAC;MACrD;MACA,mBAAI,CAACD,IAAI,EAAC/E,GAAG,oBAAIgG,KAAK,CAAC;IAC3B;EAAC;IAAA;IAAA,OAED,wBAAuBxC,EAAY,EAAQ;MACvC,IAAI,CAAC+B,OAAO,CAAC/B,EAAE,CAACnC,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,gCAA+BmC,EAAoB,EAAQ;MACvD,IAAI,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAACW,MAAM,CAAC,EAAE;QAC7B,IAAI,CAACC,OAAO,CAAC5E,GAAG,CAACgE,EAAE,CAACW,MAAM,CAAC,CAACnE,GAAG,CAACwD,EAAE,CAACmB,MAAM,CAAC;MAC9C;IACJ;EAAC;IAAA;IAAA,OAED,8BAA6BnB,EAAkB,EAAQ;MACnD,IAAI,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAACW,MAAM,CAAC,EAAE;QAC7B,IAAI,CAACC,OAAO,CAAC5E,GAAG,CAACgE,EAAE,CAACW,MAAM,CAAC,UAAO,CAACX,EAAE,CAACe,MAAM,CAAC;MACjD;IACJ;EAAC;IAAA;IAAA,OAED,2BAA0Bf,EAAe,EAAQ;MAC7C,IAAI,CAAE,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAACnC,EAAE,CAAC,EAAE;QAC3B,IAAI,CAAC+C,OAAO,CAACpE,GAAG,CAAC,CACbwD,EAAE,CAACnC,EAAE,EACL,IAAI4B,iCAAiC,CACjC,UAAA0B,MAAM;UAAA;UAAA,4CAAIA,MAAM,CAACC,IAAI,kDAAX,cAAavD,EAAE,+DAAIsD,MAAM,CAACE,WAAW,CAACD,IAAI,CAACvD,EAAE;QAAA,GACvDmC,EAAE,CAACY,OAAO,CACb,CACJ,CAAC;MACN;IACJ;EAAC;IAAA;IAAA,OAED,uBAAsBZ,EAAW,EAAE;MAC/B,IAAI,CAACuB,IAAI,CAACxC,SAAS,EAAE;MACrB,IAAI,CAACyC,MAAM,CAACzC,SAAS,EAAE;MACvB,IAAI,CAAC6B,OAAO,CAAC7B,SAAS,EAAE;MAExB,IAAI,CAACwD,cAAc,OAAnB,IAAI,iCAAmBvC,EAAE,CAACyC,KAAK,CAACD,KAAK,EAAC;MAEtC,IAAI,CAAClB,eAAe,CAAC1B,OAAO,EAAE;IAClC;EAAC;EAAA;AAAA;;;;;;;;;4DC3NL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgG;AAWpD;AAErC,IAAM8C,aAAa;EAOtB,uBAA2B5C,OAAyB,EAAE;IAAA;IAAA;IAAA,KAA3BA,OAAyB,GAAzBA,OAAyB;IAAA,2CAN5B,IAAIL,iCAAiC,CAAQ,IAAI,CAAC;IAAA,4CACjD,IAAIjC,iBAAiB,EAAmD;IAAA,4CACxE,IAAIA,iBAAiB,EAA0D;IAAA,8CAC7E,IAAIA,iBAAiB,EAA0D;IAAA,sDACvE,IAAIkC,YAAY,EAAE;IAGjD,IAAI,CAACI,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,SAAS,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAAC2C,aAAa,CAAC3C,EAAE,CAAC;IAAA,EAAC;IAC/D,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,aAAa,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAAC4C,iBAAiB,CAAC5C,EAAE,CAAC;IAAA,EAAC;IACvE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,cAAc,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAAC6C,kBAAkB,CAAC7C,EAAE,CAAC;IAAA,EAAC;IACzE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,aAAa,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAAC8C,iBAAiB,CAAC9C,EAAE,CAAC;IAAA,EAAC;IACvE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,WAAW,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAAC+C,eAAe,CAAC/C,EAAE,CAAC;IAAA,EAAC;IACnE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,mBAAmB,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACgD,uBAAuB,CAAChD,EAAE,CAAC;IAAA,EAAC;IACnF,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,iBAAiB,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACiD,qBAAqB,CAACjD,EAAE,CAAC;IAAA,EAAC;IAC/E,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,cAAc,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACkD,kBAAkB,CAAClD,EAAE,CAAC;IAAA,EAAC;IACzE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,YAAY,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACmD,gBAAgB,CAACnD,EAAE,CAAC;IAAA,EAAC;IACrE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,oBAAoB,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACoD,wBAAwB,CAACpD,EAAE,CAAC;IAAA,EAAC;IACrF,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,SAAS,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACqD,aAAa,CAACrD,EAAE,CAAC;IAAA,EAAC;IAC/D,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,aAAa,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACsD,iBAAiB,CAACtD,EAAE,CAAC;IAAA,EAAC;IACvE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,aAAa,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACuD,iBAAiB,CAACvD,EAAE,CAAC;IAAA,EAAC;IACvE,IAAI,CAACF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,SAAS,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACU,aAAa,CAACV,EAAE,CAAC;IAAA,EAAC;EACnE;;EAEA;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,gGAGA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACU,IAAI,CAACsB,eAAe,CAAC3B,OAAO;cAAA;gBAAA,iCAC3B,IAAI,CAAC4B,IAAI;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACnB;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,qGAGA,kBAAsBO,OAAe;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC3B,IAAI,CAACR,eAAe,CAAC3B,OAAO;cAAA;gBAAA,kCAC3B,IAAI,CAAC6D,KAAK,CAACxH,GAAG,CAAC8F,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjC;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,qGAGA,kBAAsBA,OAAe;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,IAC3B,IAAI,CAACU,KAAK,CAACnF,GAAG,CAACyE,OAAO,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACJ,IAAI,CAAChC,OAAO,CAACC,MAAM,CAACc,IAAI,CAAC,eAAe,EAAE;kBAAChD,EAAE,EAAEiE;gBAAO,CAAC,CAAC;cAAA;gBAAvE3D,MAAM;gBAAA,KAERA,MAAM,CAACZ,KAAK;kBAAA;kBAAA;gBAAA;gBAAA,MACNY,MAAM,CAACZ,KAAK;cAAA;gBAGtB,IAAI,CAAC4F,gBAAgB,CAAChF,MAAM,CAACtB,IAAI,CAAC;cAAC;gBAAA,kCAGhC,IAAI,CAAC2F,KAAK,CAACxG,GAAG,CAAC8F,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjC;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,uGAGA,kBAAwBA,OAAe;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,IAC7B,IAAI,CAAClB,OAAO,CAACvD,GAAG,CAACyE,OAAO,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACN,IAAI,CAAChC,OAAO,CAACC,MAAM,CAACc,IAAI,CAAC,iBAAiB,EAAE;kBAAChD,EAAE,EAAEiE;gBAAO,CAAC,CAAC;cAAA;gBAAzE3D,MAAM;gBAAA,KAERA,MAAM,CAACZ,KAAK;kBAAA;kBAAA;gBAAA;gBAAA,MACNY,MAAM,CAACZ,KAAK;cAAA;gBAGtB,IAAI,CAAC2F,kBAAkB,CAAC/E,MAAM,CAACtB,IAAI,CAAC;cAAC;gBAAA,kCAGlC,IAAI,CAAC+D,OAAO,CAAC5E,GAAG,CAAC8F,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACnC;MAAA;QAAA;MAAA;MAAA;IAAA;IAED;AACJ;AACA;EAFI;IAAA;IAAA;MAAA,kGAGA,kBAAmBA,OAAe;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACR,IAAI,CAAChC,OAAO,CAACgB,KAAK,EAAE;cAAA;gBAApCC,MAAM,kBAAgClD,EAAE;gBAAA;gBAAA,OACxB,IAAI,CAACmD,UAAU,CAACc,OAAO,CAAC;cAAA;gBAAxClB,OAAO;gBAAA,IAEPA,OAAO;kBAAA;kBAAA;gBAAA;gBAAA,kCAEFK,SAAS;cAAA;gBAAA,kCAGbL,OAAO,CAACnD,KAAK,CAACyD,IAAI,CAAC,UAAAC,MAAM;kBAAA,OAAIA,MAAM,CAACC,IAAI,CAACvD,EAAE,KAAKkD,MAAM;gBAAA,EAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,uBAAsBf,EAAW,EAAQ;MACrC,IAAMoC,UAAU,GAAG,IAAI,CAACoB,KAAK,CAACxH,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC;MAC7CM,UAAU,CAAC5F,GAAG,CAACwD,EAAE,CAACyD,IAAI,CAAC;MACvB,IAAI,CAAClC,IAAI,CAACvF,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,CAAC0B,KAAK,GAAGpB,UAAU,CAAC3E,KAAK;IACtD;EAAC;IAAA;IAAA,OAED,uBAAsBuC,EAAW,EAAQ;MAAA;MACrC,uBAAI,CAACwC,KAAK,CAACxG,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,oDAA1B,gBAA4BtF,GAAG,CAACwD,EAAE,CAAC0D,OAAO,CAAC;IAC/C;EAAC;IAAA;IAAA,OAED,2BAA0B1D,EAAe,EAAQ;MAC7C,IAAIA,EAAE,CAAC8B,OAAO,EAAE;QACZ,IAAI,CAACU,KAAK,CAACxG,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,UAAO,CAAC9B,EAAE,CAACnC,EAAE,CAAC;MAC5C;MAEA,IAAI,CAACiC,OAAO,CAAC0C,KAAK,CAACT,OAAO,CAAC/B,EAAE,CAACnC,EAAE,CAAC;IACrC;EAAC;IAAA;IAAA,OAED,2BAA0BmC,EAAe,EAAQ;MAC7C,IAAMoC,UAAU,GAAG,IAAI,CAACoB,KAAK,CAACxH,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC;MAC7CM,UAAU,UAAO,CAACpC,EAAE,CAACnC,EAAE,CAAC;MACxB,IAAI,CAAC0D,IAAI,CAACvF,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,CAAC0B,KAAK,GAAGpB,UAAU,CAAC3E,KAAK;IACtD;EAAC;IAAA;IAAA,OAED,4BAA2BuC,EAAgB,EAAQ;MAC/C,IAAI,CAACF,OAAO,CAAC0C,KAAK,CAACmB,gBAAgB,CAAC3D,EAAE,CAACnC,EAAE,CAAC;MAC1C,IAAI,CAAC2F,KAAK,UAAO,CAACxD,EAAE,CAACnC,EAAE,CAAC;MACxB,IAAI,CAAC+C,OAAO,UAAO,CAACZ,EAAE,CAACnC,EAAE,CAAC;MAC1B,IAAI,CAAC2E,KAAK,UAAO,CAACxC,EAAE,CAACnC,EAAE,CAAC;MACxB,IAAI,CAAC0D,IAAI,UAAO,CAACvB,EAAE,CAACnC,EAAE,CAAC;IAC3B;EAAC;IAAA;IAAA,OAED,2BAA0BmC,EAAe,EAAQ;MAC7C,IAAI,CAAC4D,eAAe,CAAC5D,EAAE,CAAC6D,KAAK,CAAC;IAClC;EAAC;IAAA;IAAA,OAED,2BAAkD;MAAA;MAAA,kCAAvBC,MAAM;QAANA,MAAM;MAAA;MAC7B,mBAAI,CAACN,KAAK,EAAChH,GAAG,oDAAKsH,MAAM,CAACzH,GAAG,CAAC,UAAAwH,KAAK;QAAA,OAAI,CACnCA,KAAK,CAAChG,EAAE,EACR,IAAI4B,iCAAiC,CAAO,IAAI,EAAEoE,KAAK,CAACL,KAAK,CAAC,CACjE;MAAA,EAAC,EAAyD;MAC3D,kBAAI,CAACjC,IAAI,EAAC/E,GAAG,mBAAIsH,MAAM,CAAC;IAC5B;EAAC;IAAA;IAAA,OAED,yBAAwB9D,EAAa,EAAQ;MACzC,IAAI,CAAC6C,kBAAkB,CAAC7C,EAAE,CAAC;IAC/B;EAAC;IAAA;IAAA,OAED,iCAAgCA,EAAqB,EAAQ;MACzD,IAAI,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAAC8B,OAAO,CAAC,EAAE;QAC9B,IAAI,CAAClB,OAAO,CAAC5E,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,CAACtF,GAAG,CAACwD,EAAE,CAACmB,MAAM,CAAC;MAC/C;IACJ;EAAC;IAAA;IAAA,OAED,+BAA8BnB,EAAmB,EAAQ;MACrD,IAAI,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAAC8B,OAAO,CAAC,EAAE;QAC9B,IAAI,CAAClB,OAAO,CAAC5E,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,UAAO,CAAC9B,EAAE,CAACe,MAAM,CAAC;MAClD;IACJ;EAAC;IAAA;IAAA,OAED,4BAA2Bf,EAAgB,EAAQ;MAC/C,IAAI,CAAE,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAACnC,EAAE,CAAC,EAAE;QAC3B,IAAI,CAAC+C,OAAO,CAACpE,GAAG,CAAC,CACbwD,EAAE,CAACnC,EAAE,EACL,IAAI4B,iCAAiC,CAAC,UAAA0B,MAAM;UAAA,OAAIA,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,IAAI,CAACvD,EAAE;QAAA,GAAEmC,EAAE,CAACY,OAAO,CAAC,CAC/E,CAAC;MACN;IACJ;EAAC;IAAA;IAAA,OAED,0BAAyBZ,EAAc,EAAQ;MAC3C,IAAI,CAAE,IAAI,CAACwC,KAAK,CAACnF,GAAG,CAAC2C,EAAE,CAACnC,EAAE,CAAC,EAAE;QACzB,IAAI,CAAC2E,KAAK,CAAChG,GAAG,CAAC,CAACwD,EAAE,CAACnC,EAAE,EAAE,IAAI4B,iCAAiC,CAAC,IAAI,EAAEO,EAAE,CAAC+D,SAAS,CAAC,CAAC,CAAC;MACtF;IACJ;EAAC;IAAA;IAAA,OAED,kCAAiC/D,EAAsB,EAAQ;MAC3D,IAAI,IAAI,CAACY,OAAO,CAACvD,GAAG,CAAC2C,EAAE,CAAC8B,OAAO,CAAC,EAAE;QAC9B,IAAI,CAAClB,OAAO,CAAC5E,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,CAACtF,GAAG,CAACwD,EAAE,CAACmB,MAAM,CAAC;MAC/C;MAEA,IAAI,CAACrB,OAAO,CAAC0C,KAAK,CAACwB,wBAAwB,CAAChE,EAAE,CAAC8B,OAAO,EAAE9B,EAAE,CAACmB,MAAM,CAAC;IACtE;EAAC;IAAA;IAAA,OAED,2BAA0BnB,EAAe,EAAQ;MAC7C,IAAI,CAACwD,KAAK,CAACxH,GAAG,CAACgE,EAAE,CAAC8B,OAAO,CAAC,CAACtF,GAAG,CAACwD,EAAE,CAACyD,IAAI,CAAC;IAC3C;EAAC;IAAA;IAAA,OAED,uBAAsBzD,EAAW,EAAE;MAC/B,IAAI,CAACuB,IAAI,CAACxC,SAAS,EAAE;MACrB,IAAI,CAACyE,KAAK,CAACzE,SAAS,EAAE;MACtB,IAAI,CAACyD,KAAK,CAACzD,SAAS,EAAE;MACtB,IAAI,CAAC6B,OAAO,CAAC7B,SAAS,EAAE;MAExB,IAAI,CAAC6E,eAAe,OAApB,IAAI,kCAAoB5D,EAAE,CAACyC,KAAK,CAACqB,MAAM,EAAC;MAExC,IAAI,CAACxC,eAAe,CAAC1B,OAAO,EAAE;IAClC;EAAC;EAAA;AAAA;;ACvME,IAAKqE,UAAU;AAcrB,WAdWA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;AAAA,GAAVA,UAAU,KAAVA,UAAU;;;;;;;;;;iECCtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMyD;AACI;AACpB;AAEzC,IAAMC,OAAO,GAAG,SAAVA,OAAO,CACTC,KAAoC,EACpCC,OAAwC,EACxCC,MAAsC,EACtCC,QAA0C;EAAA,OACzCH,KAAK,IAAIC,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE,CAAC,GAAGC,MAAM,GAAGC,QAAQ;AAAA;AAEhD,IAAMC,eAAe,GAAG,SAAlBA,eAAe,CAAIC,UAA8D;EAAA,OAAaN,OAAO,CACvGM,UAAU,CAACL,KAAK,EAAEK,UAAU,CAACJ,OAAO,EAAEI,UAAU,CAACH,MAAM,EAAEG,UAAU,CAACF,QAAQ,CAC/E;AAAA;AAEM,IAAMG,kBAAkB;EAAA;EAAA;EAG3B,4BAA2B3E,OAAyB,EAAE;IAAA;IAAA;IAClD;IAAQ,MADeA,OAAyB,GAAzBA,OAAyB;IAAA,iGAFtB,IAAItC,iBAAiB,EAAgC;IAI/E,MAAKsC,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,sBAAsB,EAAE,UAAAU,EAAE;MAAA,OAAI,MAAK0E,0BAA0B,CAAC1E,EAAE,CAAC;IAAA,EAAC;IACzF,MAAKF,OAAO,CAACC,MAAM,CAACT,EAAE,CAAC,6BAA6B,EAAE,UAAAU,EAAE;MAAA,OAAI,MAAK0E,0BAA0B,CAAC1E,EAAE,CAAC;IAAA,EAAC;IAAC;EACrG;EAAC;IAAA;IAAA;MAAA,oHAED,iBACImE,KAAoC,EACpCC,OAAwC,EACxCC,MAAsC,EACtCC,QAA0C;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEpCzG,EAAE,GAAGqG,OAAO,CAACC,KAAK,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,CAAC;gBAAA,KAEhD,IAAI,CAACE,UAAU,CAACnH,GAAG,CAACQ,EAAE,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,iCAChB,IAAI,CAAC2G,UAAU,CAACxI,GAAG,CAAC6B,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAGb,IAAI,CAACiC,OAAO,CAACC,MAAM,CAACc,IAAI,CACzC,yBAAyB,EACzB;kBAACsD,KAAK,EAALA,KAAK;kBAAEC,OAAO,EAAPA,OAAO;kBAAEC,MAAM,EAANA,MAAM;kBAAEC,QAAQ,EAARA;gBAAQ,CAAC,CACrC;cAAA;gBAHKnG,MAAM;gBAAA,iCAKLA,MAAM,CAACZ,KAAK,GAAG,IAAI,GAAGY,MAAM,CAACtB,IAAI;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,YAAUnB,SAAmB,EAAEC,OAA0B,EAAQ;MAC7D,OAAO,+GAASD,SAAS,EAAEC,OAAO;IACtC;EAAC;IAAA;IAAA;MAAA,4GAED,kBACIgJ,eAA4C,EAC5C7C,OAAgB,EAChBnB,MAAe,EACfc,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEe,IAAI,CAACmD,oBAAoB,CAAC9C,OAAO,EAAEnB,MAAM,EAAEc,OAAO,CAAC;cAAA;gBAA5EoD,gBAAgB;gBAChBC,OAAiB,GAAG,EAAE;gBAE5BH,eAAe,CAAClI,OAAO,CAAC,UAAAsI,IAAI,EAAI;kBAC5B,IAAI,CAAEF,gBAAgB,GAAGZ,UAAU,CAACc,IAAI,CAAC,EAAE;oBACvCD,OAAO,CAACvI,IAAI,CAACwI,IAAI,CAAC;kBACtB;gBACJ,CAAC,CAAC;gBAAC,kCAEI;kBAACC,EAAE,EAAEF,OAAO,CAACtG,MAAM,KAAK,CAAC;kBAAEsG,OAAO,EAAPA;gBAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC7C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2HAED,kBAAkChD,OAAgB,EAAEnB,MAAe,EAAEc,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,MAC7EA,OAAO,IAAI,CAAEd,MAAM,IAAIA,MAAM,IAAI,CAAEmB,OAAO;kBAAA;kBAAA;gBAAA;gBAAA,MACpC,IAAImD,KAAK,CAAC,+BAA+B,CAAC;cAAA;gBAAA;gBAAA,OAG9B,IAAI,CAACnF,OAAO,CAACgB,KAAK,EAAE;cAAA;gBAApCC,MAAM,kBAAgClD,EAAE;gBAExCqH,SAAmB,GAAG,EAAE;gBAExBC,QAA8C,GAAG;gBACnD;gBACA,IAAI,CAACC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAErE,MAAM,CAAC,CAACsE,IAAI,CAAC,UAAAC,CAAC;kBAAA,OAAIA,CAAC,CAACd,UAAU;gBAAA,EAAC,CAC7E;gBAAA,KAEG1C,OAAO;kBAAA;kBAAA;gBAAA;gBAAA,eACPoD,SAAS,CAAC3I,IAAI;gBAAA,eAAd2I,SAAS;gBAAA;gBAAA;gBAAA,OAAgB,IAAI,CAACpF,OAAO,CAACgE,MAAM,CAAChD,KAAK,CAACgB,OAAO,CAAC;cAAA;gBAAA,8BAAE0B,KAAK;gBAAA;gBAAA;gBAClE2B,QAAQ,CAAC5I,IAAI,CAAC,IAAI,CAACgJ,qBAAqB,CAACzD,OAAO,EAAE,OAAO,EAAEA,OAAO,EAAEoD,SAAS,CAAC,CAAC;gBAC/EC,QAAQ,CAAC5I,IAAI,CAAC,IAAI,CAAC6I,aAAa,CAAC,OAAO,EAAEtD,OAAO,EAAE,MAAM,EAAEf,MAAM,CAAC,CAACsE,IAAI,CAAC,UAAAC,CAAC;kBAAA,OAAIA,CAAC,CAACd,UAAU;gBAAA,EAAC,CAAC;cAAC;gBAAA,KAG5F7D,MAAM;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACmB,IAAI,CAACb,OAAO,CAAC0C,KAAK,CAAC1B,KAAK,CAACH,MAAM,CAAC;cAAA;gBAAnDwB,UAAU;gBAEhB,IAAIA,UAAU,CAACqB,KAAK,KAAK,IAAI,EAAE;kBAAE;kBAC7B0B,SAAS,CAAC3I,IAAI,OAAd2I,SAAS,uCAAS/C,UAAU,CAACqB,KAAK,EAAC;kBACnC2B,QAAQ,CAAC5I,IAAI,CAAC,IAAI,CAACgJ,qBAAqB,CAACzD,OAAO,EAAE,MAAM,EAAEnB,MAAM,EAAEuE,SAAS,CAAC,CAAC;gBACjF;gBAEAC,QAAQ,CAAC5I,IAAI,CAAC,IAAI,CAAC6I,aAAa,CAAC,MAAM,EAAEzE,MAAM,EAAE,MAAM,EAAEI,MAAM,CAAC,CAACsE,IAAI,CAAC,UAAAC,CAAC;kBAAA,OAAIA,CAAC,CAACd,UAAU;gBAAA,EAAC,CAAC;cAAC;gBAG9F,IAAI/C,OAAO,EAAE;kBACT,IAAIyD,SAAS,CAAC1G,MAAM,EAAE;oBAClB2G,QAAQ,CAAC5I,IAAI,CAAC,IAAI,CAACgJ,qBAAqB,CAACzD,OAAO,EAAE,OAAO,EAAEL,OAAO,EAAEyD,SAAS,CAAC,CAAC;kBACnF;kBAEAC,QAAQ,CAAC5I,IAAI,CAAC,IAAI,CAAC6I,aAAa,CAAC,OAAO,EAAE3D,OAAO,EAAE,MAAM,EAAEV,MAAM,CAAC,CAACsE,IAAI,CAAC,UAAAC,CAAC;oBAAA,OAAIA,CAAC,CAACd,UAAU;kBAAA,EAAC,CAAC;gBAC/F;gBAAC,eAEM,IAAI;gBAAA;gBAAA,OAAkCtH,OAAO,CAACsI,GAAG,CAACL,QAAQ,CAAC;cAAA;gBAAA;gBAAA,+CAAtDM,0BAA0B;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACzC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,oCAAmCzF,EAAsD,EAAE;MACvF,IAAI,CAACwE,UAAU,CAAChI,GAAG,CAAC,CAAC+H,eAAe,CAACvE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC;MAC9C,IAAI,CAACd,IAAI,CAAC,QAAQ,CAAC;IACvB;EAAC;IAAA;IAAA;MAAA,4HAED,kBACI4C,OAAe,EACfqC,KAAoC,EACpCC,OAAwC,EACxCc,SAAmB;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEUhI,OAAO,CAACsI,GAAG,CAACN,SAAS,CAAC7I,GAAG,CAClD,UAAAqJ,MAAM;kBAAA,OAAI,MAAI,CAACN,aAAa,CAACjB,KAAK,EAAEC,OAAO,EAAE,MAAM,EAAEsB,MAAM,CAAC;gBAAA,EAC/D,CAAC;cAAA;gBAFIC,cAAc;gBAAA,kCAIb,IAAI,CAACC,iCAAiC,CAAC9D,OAAO,EAAE6D,cAAc,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACzE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,wIAED,kBACI7D,OAAe,EACf0C,UAAkC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAE9BqB,MAAM,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC;gBAAA;gBAAA,OACN,IAAI,CAAChG,OAAO,CAACgE,MAAM,CAACiC,QAAQ,CAACjE,OAAO,CAAC;cAAA;gBAAnD0B,KAAK;gBACLwC,gBAAgB,GAAGxB,UAAU,CAACyB,IAAI,CACpC,UAACC,CAAC,EAAEC,CAAC;kBAAA,OACD3C,KAAK,CAACxH,GAAG,CAACkK,CAAC,CAAC5B,QAAQ,CAAC,CAAC8B,QAAQ,GAAG5C,KAAK,CAACxH,GAAG,CAACmK,CAAC,CAAC7B,QAAQ,CAAC,CAAC8B,QAAQ;gBAAA,EACtE,EAED;gBACMC,iBAAiB,GAAG7B,UAAU,CAAC8B,MAAM,CACvC,UAACC,aAAqB,EAAEC,YAAkC;kBAAA,OACtDC,IAAI,CAACC,GAAG,CACJH,aAAa,EACbC,YAAY,CAAChC,UAAU,CAACmC,KAAK,CAAC3J,QAAQ,CAAC,CAAC,CAAC,CAACwB,MAAM,EAChDgI,YAAY,CAAChC,UAAU,CAACoC,IAAI,CAAC5J,QAAQ,CAAC,CAAC,CAAC,CAACwB,MAAM,CAClD;gBAAA,GACL,CAAC,CACJ;gBAEDwH,gBAAgB,CAACvJ,OAAO,CAAC,UAAAoK,cAAc,EAAI;kBACvC,IAAMrC,UAAU,GAAGqC,cAAc,CAACrC,UAAU;kBAC5C,IAAMsC,YAAY,GAAGtC,UAAU,CAACoC,IAAI,CAAC5J,QAAQ,CAAC,CAAC,CAAC,CAAC+J,KAAK,CAAC,EAAE,CAAC,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,EAAE,CAAC;kBAC7E,IAAMC,YAAY,GAAG1C,UAAU,CAACmC,KAAK,CAAC3J,QAAQ,CAAC,CAAC,CAAC,CAAC+J,KAAK,CAAC,EAAE,CAAC,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,EAAE,CAAC;kBAE9E,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,iBAAiB,EAAEc,CAAC,EAAE,EAAE;oBAAA;oBACxC,IAAMP,IAAI,GAAGQ,QAAQ,oBAACN,YAAY,CAACK,CAAC,CAAC,6DAAI,GAAG,CAAC;oBAC7C,IAAMR,KAAK,GAAGS,QAAQ,oBAACF,YAAY,CAACC,CAAC,CAAC,6DAAI,GAAG,CAAC;oBAE9C,IAAIP,IAAI,EAAE;sBACNd,MAAM,IAAI,CAAC,IAAIqB,CAAC;oBACpB;oBAEA,IAAIR,KAAK,EAAE;sBACPd,MAAM,IAAI,CAAC,IAAIsB,CAAC;oBACpB;kBACJ;gBACJ,CAAC,CAAC;gBAAC,kCAEI;kBAACR,KAAK,EAAEd,MAAM;kBAAEe,IAAI,EAAEd;gBAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACvC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,oCAAmCuB,0BAAuD,EAAU;MAChG,IAAIlJ,MAAM,GAAG,CAAC;MAAC,6DAEKkJ,0BAA0B;QAAA;MAAA;QAA9C,oDAAgD;UAAA,IAArC/I,KAAK;UACZ,IAAIA,KAAK,CAACqI,KAAK,GAAG1C,eAAe,EAAE;YAC/B,OAAO,IAAI,CAACsD,kBAAkB,EAAE;UACpC;UAEApJ,MAAM,GAAIA,MAAM,GAAG,CAACG,KAAK,CAACsI,IAAI,GAAItI,KAAK,CAACqI,KAAK;QACjD;MAAC;QAAA;MAAA;QAAA;MAAA;MAED,OAAOxI,MAAM;IACjB;EAAC;IAAA;IAAA,OAED,8BAAqC;MACjC,IAAIA,MAAM,GAAG,CAAC;MAAC,8DAEI,IAAI,CAACqJ,kBAAkB,EAAE;QAAA;MAAA;QAA5C,uDAA8C;UAAA,IAAnCzC,IAAI;UACX5G,MAAM,IAAI8F,UAAU,CAACc,IAAI,CAAC;QAC9B;MAAC;QAAA;MAAA;QAAA;MAAA;MAED,OAAO5G,MAAM;IACjB;EAAC;IAAA;IAAA,OAED,8BAAuC;MACnC,OAAOsJ,MAAM,CAACpI,IAAI,CAAC4E,UAAU,CAAC,CAACyD,MAAM,CAAC,UAAAC,GAAG;QAAA,OAAIC,MAAM,CAACC,KAAK,CAACT,QAAQ,CAACO,GAAG,CAAC,CAAC;MAAA,EAAC;IAC7E;EAAC;EAAA;AAAA,EArLmCnM,WAAW;;;+DCrBnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC4C;AACE;AACU;AACZ;AAErC,IAAMsM,gBAAgB;EACzB;AACJ;AACA;;EAEI;AACJ;AACA;;EAEI;AACJ;AACA;;EAMI,0BAAmC/H,MAA2B,EAAE;IAAA;IAAA;IAAA,KAA7BA,MAA2B,GAA3BA,MAA2B;IAAA,+CAbxB,IAAIF,YAAY,CAAC,IAAI,CAAC;IAAA,gDAInC,IAAI6C,aAAa,CAAC,IAAI,CAAC;IAAA,qDAIlB,IAAI+B,kBAAkB,CAAC,IAAI,CAAC;IAAA,4CAEvC,IAAI;IAAA,yDACY,IAAI/E,YAAY,EAAE;IAGjD,IAAI,CAACK,MAAM,CAACT,EAAE,CAAC,SAAS,EAAE,UAAAU,EAAE;MAAA,OAAI,KAAI,CAACU,aAAa,CAACV,EAAE,CAAC;IAAA,EAAC;EAC3D;EAAC;IAAA;IAAA;MAAA,wGAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACU,IAAI,CAACsB,eAAe,CAAC3B,OAAO;cAAA;gBAAA,iCAC3B,IAAI,CAACoI,EAAE;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjB;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,uBAAsB/H,EAAW,EAAQ;MACrC,IAAI,CAAC+H,EAAE,GAAG/H,EAAE,CAACoB,IAAI;MACjB,IAAI,CAACE,eAAe,CAAC1B,OAAO,EAAE;IAClC;EAAC;EAAA;AAAA;;;;;;;;;kECnCL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoF;AAElB;AAAA,IAW7DoI,wBAAwB;AAAA,WAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;AAAA,GAAxBA,wBAAwB,KAAxBA,wBAAwB;AAOtB,IAAMC,mBAAmB;EAAA;EAAA;EAU5B,6BAAoCC,OAA+B,EAAE;IAAA;IAAA;IAAA;IACjE;IAAQ,MADwBA,OAA+B,GAA/BA,OAA+B;IAAA,8FAT3CF,wBAAwB;IAAA;IAAA,2FAGjB,IAAI;IAAA,kGACyC,EAAE;IAAA;IAAA;IAAA;IAO1E,IAAI,CAAC,MAAKE,OAAO,CAACC,KAAK,IAAI,CAAC,MAAKD,OAAO,CAACE,aAAa,EAAE;MACpD,MAAM,IAAInD,KAAK,CAAC,qCAAqC,CAAC;IAC1D;IACA,6BAAI,MAAKiD,OAAO,CAACG,aAAa,yEAAI,IAAI,EAAE;MACpC,MAAK5F,KAAK,GAAG,IAAIqF,gBAAgB,CAAC,iDAAK;IAC3C;IAAC;EACL;EAAC;IAAA;IAAA;MAAA,gHAED;QAAA;UAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBACUQ,UAAU,GAAG,IAAI,CAACJ,OAAO,CAACC,KAAK,mBAAY,IAAI,CAACD,OAAO,CAACC,KAAK,mBAAa,IAAI,CAACD,OAAO,CAACE,aAAa,CAAE;gBAC5G,IAAI,CAACG,EAAE,GAAG,IAAIC,SAAS,WAAI,IAAI,CAACN,OAAO,CAACO,GAAG,cAAIH,UAAU,EAAG;gBAC5D,IAAI,CAACC,EAAE,CAACG,OAAO,GAAG,UAAA1I,EAAE;kBAAA,OAAI,MAAI,CAAC2I,OAAO,CAAC3I,EAAE,CAAC;gBAAA;gBACxC,IAAI,CAACuI,EAAE,CAACK,SAAS,GAAG,UAAA5I,EAAE;kBAAA,OAAI,MAAI,CAAC6I,SAAS,CAAC7I,EAAE,CAAC;gBAAA;gBAC5C,IAAI,CAAC8I,mBAAmB,GAAGC,UAAU,CACjC;kBAAA,OAAM,MAAI,CAACC,wBAAwB,EAAE;gBAAA,4BACrC,IAAI,CAACd,OAAO,CAACe,mBAAmB,yEAAI,KAAK,CAC5C;gBACD,IAAI,CAACC,aAAa,GAAG,KAAK;gBAAC,iCACpB,IAAIhM,OAAO,CAAC;kBAAA,kCAAIC,IAAI;oBAAJA,IAAI;kBAAA;kBAAA,OAAK,MAAI,CAACgM,sBAAsB,GAAGhM,IAAI;gBAAA,EAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,sBAA0B;MAAA;MACtB,IAAI,CAACiM,SAAS,GAAG,EAAE;MACnB,gBAAI,CAACb,EAAE,6CAAP,SAASc,KAAK,EAAE;MAChB,IAAI,CAACd,EAAE,GAAG,IAAI;IAClB;EAAC;IAAA;IAAA;MAAA,6GAED,kBAAyDe,WAAwB,EAAEC,WAAwC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,MAEnH,CAAC,IAAI,CAAChB,EAAE,IAAI,CAAC,IAAI,CAACA,EAAE,CAACiB,MAAM,EAAE,IAAI,CAACjB,EAAE,CAACkB,OAAO,CAAC,CAACC,QAAQ,CAAC,IAAI,CAACnB,EAAE,CAACoB,UAAU,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,MACpE,IAAI1E,KAAK,CAAC,gDAAgD,CAAC;cAAA;gBAAA,MAGjE,IAAI,CAACsD,EAAE,CAACoB,UAAU,KAAK,IAAI,CAACpB,EAAE,CAACqB,UAAU,IAAI,CAAC,IAAI,CAACV,aAAa;kBAAA;kBAAA;gBAAA;gBAChE,IAAI,CAACE,SAAS,CAAC7M,IAAI,CAAC,CAAC+M,WAAW,EAAEC,WAAW,CAAC,CAAQ;gBAAC;cAAA;gBAAA,MAIvD,IAAI,CAAChB,EAAE,CAACoB,UAAU,KAAK,IAAI,CAACpB,EAAE,CAACsB,IAAI;kBAAA;kBAAA;gBAAA;gBAAA,MAC7B,IAAI5E,KAAK,mCAA4B,IAAI,CAACsD,EAAE,CAACoB,UAAU,EAAG;cAAA;gBAG9D1M,QAAQ,GAAG,IAAI,CAAC6M,cAAc,CAA8BR,WAAW,EAAEC,WAAW,CAAC;gBAC3F,IAAI,CAAChB,EAAE,CAAC1H,IAAI,CAACkJ,IAAI,CAACC,SAAS,CAAC/M,QAAQ,CAAC,CAAC;gBAAC,kCAChC,IAAI,CAACgN,gCAAgC,CAAchN,QAAQ,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,mBAAkBd,KAAmB,EAAQ;MACzC,IAAMc,QAAkB,GAAG8M,IAAI,CAACG,KAAK,CAAC/N,KAAK,CAACU,IAAI,CAAC;MACjD,IAAI,CAACsN,sBAAsB,CAAClN,QAAQ,CAAC;MACrC,IAAI,CAACiC,IAAI,CAACjC,QAAQ,CAACL,IAAI,EAAEK,QAAQ,CAACJ,IAAI,CAAC;MACvC,IAAI,CAACqC,IAAI,CAAC,IAAI,CAACkL,KAAK,CAAC/H,OAAO,EAAEpF,QAAQ,CAAC;;MAEvC;MACA,IAAI,CAAC,IAAI,CAACiM,aAAa,EAAE;QACrB,IAAMmB,eAAe,GAAGpN,QAAQ,CAACL,IAAI,KAAK,OAAO;QACjD,IAAI,CAACsM,aAAa,GAAGmB,eAAe;QACpC,IAAIA,eAAe,EAAE;UACjB,IAAI,CAAClB,sBAAsB,CAAC,CAAC,CAAC,EAAE;UAChC,IAAI,CAACjK,IAAI,CAAC,IAAI,CAACkL,KAAK,CAACE,OAAO,CAAC;UAC7B,IAAI,CAACC,aAAa,EAAE;QACxB,CAAC,MAAM;UACH,IAAI,CAACpB,sBAAsB,CAAC,CAAC,CAAC,CAAClM,QAAQ,CAACJ,IAAI,CAAC;QACjD;MACJ;IACJ;EAAC;IAAA;IAAA,OAED,iBAAgBV,KAAiB,EAAQ;MACrCqO,YAAY,CAAC,IAAI,CAAC1B,mBAAmB,CAAC;MACtC,IAAM2B,SAAS,GAAGtO,KAAK,CAACuO,IAAI,KAAK,IAAI,CAAC,CAAC;MACvC,IAAID,SAAS,EAAE;QACX,IAAI,CAACH,OAAO,EAAE;MAClB;MACA,IAAI,CAACpL,IAAI,CAAC,IAAI,CAACkL,KAAK,CAACO,UAAU,EAAEF,SAAS,CAAC;IAC/C;EAAC;IAAA;IAAA,OAED,yBAA8B;MAAA;MAC1B;MACA,IAAIG,SAAS,GAAG,CAAC;MAAC,2BACPC,SAAS;QAAA;QAChB,IAAMhO,IAAI,GAAG,MAAI,CAACuM,SAAS,CAACyB,SAAS,CAAC;QACtC9B,UAAU,CAAC;UAAA,OAAM,MAAI,CAAClI,IAAI,OAAT,MAAI,wCAAShE,IAAI,EAAC;QAAA,GAAE+N,SAAS,CAAC;QAC/CA,SAAS,6BAAI,MAAI,CAAC1C,OAAO,CAAC4C,qBAAqB,yEAAI,GAAG;MAAC;MAH3D,KAAK,IAAMD,SAAS,IAAI,IAAI,CAACzB,SAAS,EAAE;QAAA,MAA7ByB,SAAS;MAIpB;MACA,IAAI,CAACzB,SAAS,GAAG,EAAE;MACnBoB,YAAY,CAAC,IAAI,CAAC1B,mBAAmB,CAAC;IAC1C;EAAC;IAAA;IAAA,OAED,oCAAyC;MACrC,IAAI,CAAC6B,UAAU,EAAE;MACjB,IAAI,CAACzL,IAAI,CAAC,IAAI,CAACkL,KAAK,CAAC7M,KAAK,EAAE,IAAI0H,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAChE;EAAC;EAAA;AAAA,EAvGoCtI,kBAAkB;;;+DCpB3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADoF;AAAA,IAY/EoO,qBAAqB;AAAA,WAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;AAAA,GAArBA,qBAAqB,KAArBA,qBAAqB;AAMnB,IAAMC,gBAAgB;EAAA;EAAA;EAKzB,0BAAoC9C,OAAgC,EAAE;IAAA;IAAA;IAClE;IAAQ,MADwBA,OAAgC,GAAhCA,OAAgC;IAAA,wFAJ5C6C,qBAAqB;IAAA;IAMzC,IAAI,CAAC,MAAK7C,OAAO,CAACC,KAAK,IAAI,CAAC,MAAKD,OAAO,CAACE,aAAa,EAAE;MACpD,MAAM,IAAInD,KAAK,CAAC,qCAAqC,CAAC;IAC1D;IAAC;EACL;EAAC;IAAA;IAAA;MAAA,uGAED,iBAAyDqE,WAAwB,EAAEC,WAAwC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEjHtM,QAAQ,GAAG,IAAI,CAAC6M,cAAc,CAACR,WAAW,EAAEC,WAAW,CAAC;gBAC9D,IAAI,CAAC0B,SAAS,CAAC1O,IAAI,CAAC;kBAACM,IAAI,EAAEI,QAAQ;kBAAEiO,QAAQ,EAAE,CAAC;kBAAEC,aAAa,EAAE;gBAAI,CAAC,CAAC;gBACvE,IAAI,CAACC,WAAW,CAAC,IAAI,CAACH,SAAS,CAACzM,MAAM,GAAG,CAAC,CAAC;gBAAC,iCACrC,IAAI,CAACyL,gCAAgC,CAAChN,QAAQ,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACzD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,mBAAuB;MAAA;MACnB;MACA,IAAI,CAACgO,SAAS,CAACxO,OAAO,CAAC,UAAAmB,IAAI,EAAI;QAC3B,IAAIA,IAAI,CAACuN,aAAa,EAAE;UACpBX,YAAY,CAAC5M,IAAI,CAACuN,aAAa,CAAC;QACpC;QACA,MAAI,CAAC/N,gBAAgB,UAAO,CAACQ,IAAI,CAACf,IAAI,CAACC,GAAG,CAAC;MAC/C,CAAC,CAAC;MACF,IAAI,CAACmO,SAAS,GAAG,EAAE;MACnB,IAAI,CAAC/L,IAAI,CAAC,IAAI,CAACkL,KAAK,CAACiB,OAAO,EAAE,KAAK,CAAC;IACxC;EAAC;IAAA;IAAA;MAAA,4GAED,kBAA0BC,KAAa,EAAEC,QAAkB;QAAA;QAAA;UAAA;YAAA;cAAA;gBACvD,IAAI,CAACN,SAAS,CAAC/O,MAAM,CAACoP,KAAK,EAAE,CAAC,CAAC;gBAAC;gBAAA,OACCC,QAAQ,CAACC,IAAI,EAAE;cAAA;gBAA1CvO,QAAkB;gBACxB,IAAI,CAACkN,sBAAsB,CAAClN,QAAQ,CAAC;gBACrC,IAAI,CAACiC,IAAI,CAACjC,QAAQ,CAACL,IAAI,EAAEK,QAAQ,CAACJ,IAAI,CAAC;gBACvC,IAAI,CAACqC,IAAI,CAAC,IAAI,CAACkL,KAAK,CAAC/H,OAAO,EAAEpF,QAAQ,CAAC;cAAC;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,iBAAkBqO,KAAa,EAAEG,IAAY,EAAQ;MAAA;QAAA;QAAA;MACjD,IAAI,IAAI,CAACR,SAAS,CAACK,KAAK,CAAC,CAACJ,QAAQ,8BAAK,IAAI,CAAChD,OAAO,CAACwD,cAAc,yEAAI,EAAE,CAAC,EAAE;QACvE,IAAI,CAACT,SAAS,CAAC/O,MAAM,CAACoP,KAAK,EAAE,CAAC,CAAC;QAC/B,IAAI,CAACK,uBAAuB,CAAC,IAAI,CAACV,SAAS,CAACK,KAAK,CAAC,CAACzO,IAAI,EAAE,IAAIoI,KAAK,uBAC/CwG,IAAI,6DACtB,CAAC;QACF;MACJ;MACA,IAAI,CAACR,SAAS,CAACK,KAAK,CAAC,CAACH,aAAa,GAAGpC,UAAU,CAC5C;QAAA,OAAM,MAAI,CAACqC,WAAW,CAACE,KAAK,CAAC;MAAA,6BAC7B,IAAI,CAACpD,OAAO,CAAC0D,cAAc,2EAAI,IAAI,CACtC;IACL;EAAC;IAAA;IAAA,OAED,qBAAsBN,KAAa,EAAQ;MAAA;MACvC,IAAI,CAACL,SAAS,CAACK,KAAK,CAAC,CAACJ,QAAQ,EAAE;MAChC,IAAMW,QAAQ,GAAG9B,IAAI,CAACC,SAAS,CAAC,IAAI,CAACiB,SAAS,CAACK,KAAK,CAAC,CAACzO,IAAI,CAAC;MAC3D,IAAMiP,OAAY,GAAG;QACjB,cAAc,EAAE,kBAAkB;QAClCC,MAAM,EAAE;MACZ,CAAC;MAED,IAAI,IAAI,CAAC7D,OAAO,CAACC,KAAK,EAAE;QACpB2D,OAAO,CAACE,aAAa,oBAAa,IAAI,CAAC9D,OAAO,CAACC,KAAK,CAAE;MAC1D,CAAC,MAAM,IAAI,IAAI,CAACD,OAAO,CAACE,aAAa,EAAE;QACnC0D,OAAO,CAACE,aAAa,kBAAW,IAAI,CAAC9D,OAAO,CAACE,aAAa,CAAE;MAChE;MAEA6D,KAAK,CAAC,IAAI,CAAC/D,OAAO,CAACO,GAAG,EAAE;QACpBqD,OAAO,EAAPA,OAAO;QACPL,IAAI,EAAEI,QAAQ;QACdK,MAAM,EAAE;MACZ,CAAC,CAAC,CACG7G,IAAI,CAAC,UAAAkG,QAAQ;QAAA,OAAI,MAAI,CAAC1C,SAAS,CAACyC,KAAK,EAAEC,QAAQ,CAAC;MAAA,EAAC,SAC5C,CAAC;QAAA,OAAM,MAAI,CAACY,OAAO,CAACb,KAAK,EAAEO,QAAQ,CAAC;MAAA,EAAC;IACnD;EAAC;EAAA;AAAA,EA3EiClP,kBAAkB;;;iECjBxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYO,IAAeyP,kBAAkB;EAGpC,4BACqBlE,OAA0B,EAC7C;IAAA;IAAA,KADmBA,OAA0B,GAA1BA,OAA0B;IAAA;EAC5C;EAAC;IAAA;IAAA;MAAA,2GAEJ,iBACIgE,MAAkB,EAClBG,GAAW;QAAA;UAAA;UAAA;UAAA;UAAA;UAAA;QAAA;UAAA;YAAA;cAAA;gBACXxP,IAAS,2DAAGoE,SAAS;gBAEf6K,OAAY,GAAG;kBACjB,cAAc,EAAE,kBAAkB;kBAClCC,MAAM,EAAE;gBACZ,CAAC;gBAED,IAAI,IAAI,CAAC7D,OAAO,CAACC,KAAK,EAAE;kBACpB2D,OAAO,CAACE,aAAa,oBAAa,IAAI,CAAC9D,OAAO,CAACC,KAAK,CAAE;gBAC1D;gBAEIM,GAAG,GAAG,IAAI,CAAC6D,MAAM,CAACD,GAAG,CAAC;gBACtBZ,IAAI,GAAGxK,SAAS;gBAEpB,IAAIpE,IAAI,EAAE;kBACN,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC6M,QAAQ,CAACwC,MAAM,CAAC,EAAE;oBACpCzD,GAAG,IAAI,IAAI8D,eAAe,CAAC1P,IAAI,CAAC,CAACG,QAAQ,EAAE;kBAC/C,CAAC,MAAM;oBACHyO,IAAI,GAAG1B,IAAI,CAACC,SAAS,CAACnN,IAAI,CAAC;kBAC/B;gBACJ;gBAAC;gBAAA,OAEoBoP,KAAK,CAACxD,GAAG,EAAE;kBAACyD,MAAM,EAANA,MAAM;kBAAET,IAAI,EAAJA,IAAI;kBAAEK,OAAO,EAAPA;gBAAO,CAAC,CAAC;cAAA;gBAAlD3N,MAAM;gBAAA,cAGJA,MAAM,CAAC6G,EAAE;gBAAA,cACL7G,MAAM,CAACqO,MAAM;gBAAA;gBAAA,OACTrO,MAAM,CAACqN,IAAI,EAAE;cAAA;gBAAA;gBAAA;kBAFzBxG,EAAE;kBACFwH,MAAM;kBACN3P,IAAI;gBAAA;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEX;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,gBAAiBwP,GAAW,EAAU;MAAA;MAClC,OAAO,IAAI,CAACI,iBAAiB,sBAAC,IAAI,CAACvE,OAAO,CAACO,GAAG,iEAAI,IAAI,CAACiE,UAAU,CAAC,GAAG,GAAG,GAAG,IAAI,CAACC,mBAAmB,CAACN,GAAG,CAAC;IAC5G;EAAC;IAAA;IAAA,OAED,6BAA4BO,IAAY,EAAU;MAC9C,OAAOA,IAAI,CAACC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACnC;EAAC;IAAA;IAAA,OAED,2BAA0BD,IAAY,EAAU;MAC5C,OAAOA,IAAI,CAACC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACnC;EAAC;EAAA;AAAA;;;yDC/DL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADwD;AAajD,IAAMC,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,iFACY,kCAAkC;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,kGAgBjE,iBAAyB3E,KAAa;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACX,IAAI,CAACtH,IAAI,CAAC,QAAQ,wBAAiBsH,KAAK,EAAG;cAAA;gBAA5DoD,QAAQ;gBAAA,IACTA,QAAQ,CAACvG,EAAE;kBAAA;kBAAA;gBAAA;gBAAA,MACN,IAAIC,KAAK,uCAAgCsG,QAAQ,CAAC1O,IAAI,CAACkQ,MAAM,CAAC,CAAC,CAAC,EAAG;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEhF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,4FAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC2B,IAAI,CAAClM,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;cAAA;gBAA5C0K,QAAQ;gBAAA,KACVA,QAAQ,CAACvG,EAAE;kBAAA;kBAAA;gBAAA;gBACXuG,QAAQ,CAAC1O,IAAI,CAACgB,EAAE,GAAG0N,QAAQ,CAAC1O,IAAI,CAACgB,EAAE,CAACb,QAAQ,EAAE;gBAAC,kCACxCuO,QAAQ,CAAC1O,IAAI;cAAA;gBAAA,MAElB,IAAIoI,KAAK,4CAAqCsG,QAAQ,CAAC1O,IAAI,CAACkQ,MAAM,CAAC,CAAC,CAAC,EAAG;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,kGA5BD,kBACIC,KAAa,EACbC,QAAgB;QAAA;UAAA;UAAA;QAAA;UAAA;YAAA;cAAA;gBAChBC,UAAkB,8DAAG,iBAAiB;gBAAA;gBAAA,OAEf,IAAIJ,UAAU,CAAC;kBAAC3E,KAAK,EAAE;gBAAI,CAAC,CAAC,CAACtH,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE;kBAC7EmM,KAAK,EAALA,KAAK;kBAAEC,QAAQ,EAARA,QAAQ;kBAAEE,WAAW,EAAED;gBAClC,CAAC,CAAC;cAAA;gBAFI3B,QAAQ;gBAAA,KAGVA,QAAQ,CAACvG,EAAE;kBAAA;kBAAA;gBAAA;gBAAA,kCACJuG,QAAQ,CAAC1O,IAAI;cAAA;gBAAA,MAElB,IAAIoI,KAAK,qCAA8BsG,QAAQ,CAAC1O,IAAI,CAACkQ,MAAM,CAAC,CAAC,CAAC,EAAG;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC1E;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAf2BX,kBAAkB;;ACbQ;AACN;AAMjB;AACO;AACA","sources":["webpack://PServ/webpack/universalModuleDefinition","webpack://PServ/webpack/bootstrap","webpack://PServ/webpack/runtime/define property getters","webpack://PServ/webpack/runtime/hasOwnProperty shorthand","webpack://PServ/webpack/runtime/make namespace object","webpack://PServ/./src/EventTarget.ts","webpack://PServ/./src/AbstractChatClient.ts","webpack://PServ/./src/IndexedObjectCollection.ts","webpack://PServ/./src/state-tracker/DeferredTask.ts","webpack://PServ/./src/state-tracker/RoomsManager.ts","webpack://PServ/./src/state-tracker/SpacesManager.ts","webpack://PServ/./src/Permission.ts","webpack://PServ/./src/state-tracker/PermissionsManager.ts","webpack://PServ/./src/state-tracker/ChatStateTracker.ts","webpack://PServ/./src/WebSocketChatClient.ts","webpack://PServ/./src/WebApiChatClient.ts","webpack://PServ/./src/AbstractRestClient.ts","webpack://PServ/./src/AuthClient.ts","webpack://PServ/./src/index.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[\"PServ\"] = factory();\n\telse\n\t\troot[\"PServ\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap<EventT> = Map<string, EventHandler<EventT>[]>;\n\nexport interface ObservableInterface<EventT = any> {\n on(eventName: string, handler: EventHandler<EventT>): this;\n once(eventName: string, handler: EventHandler<EventT>): this;\n off(eventName: string, handler: EventHandler<EventT>): this;\n}\n\nexport class EventTarget<EventT = any> implements ObservableInterface<EventT> {\n protected events: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n protected onceEvents: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n\n public on(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public off(eventName: string, handler: EventHandler<EventT>): this {\n const index = this.events.get(eventName)?.indexOf(handler);\n if (!index || index < 0) {\n return this;\n }\n this.events.get(eventName).splice(index, 1);\n }\n\n public emit(eventName: string, event?: EventT): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap<EventT>, eventName: string, handler: EventHandler<EventT>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap<EventT>, eventName: string, event: EventT): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdated,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetPermissionOverwrites,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetPermissionOverwrites,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage,\n Envelope,\n PermissionOverwrites,\n PermissionOverwritesChanged,\n RoomMemberUpdated,\n UpdateRole,\n RoleUpdated,\n} from \"pserv-ts-types\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\n\nexport abstract class AbstractChatClient extends EventTarget {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;\n\n public on<EventName extends keyof EventsMap>\n (eventName: EventName | string, handler: (event: EventsMap[EventName]) => void): this {\n return super.on(eventName, handler);\n }\n\n public once<EventName extends keyof EventsMap>\n (eventName: EventName, handler: (event: EventsMap[EventName]) => void): this {\n return super.once(eventName, handler);\n }\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandsMap[CommandT][0]>):\n Promise<CommandResult<CommandsMap[CommandT][1]>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[0](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: Error};\n\n/**\n * Map of incoming events.\n */\nexport type EventsMap = {\n // General Events\n Bye: Bye,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n PermissionOverwrites: PermissionOverwrites,\n PermissionOverwritesChanged: PermissionOverwritesChanged,\n // Space events\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdated: SpaceMemberUpdated,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoomDeleted,\n RoleUpdated: RoleUpdated,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMemberUpdated: RoomMemberUpdated,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: [GetSession, EventsMap['Session']],\n SetPermissionOverwrites: [SetPermissionOverwrites, EventsMap['PermissionOverwritesChanged']],\n GetPermissionOverwrites: [GetPermissionOverwrites, EventsMap['PermissionOverwrites']],\n GetComputedPermissions: [GetComputedPermissions, EventsMap['Permissions']],\n // Space commands\n JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],\n LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']],\n CreateSpace: [CreateSpace, EventsMap['SpaceJoined']],\n DeleteSpace: [DeleteSpace, EventsMap['SpaceDeleted']],\n GetSpaceMembers: [GetSpaceMembers, EventsMap['SpaceMembers']],\n GetSpaceRooms: [GetSpaceRooms, EventsMap['SpaceRooms']],\n CreateRole: [CreateRole, EventsMap['NewRole']],\n DeleteRole: [DeleteRole, EventsMap['RoleDeleted']],\n UpdateRole: [UpdateRole, EventsMap['RoleUpdated']],\n AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],\n // Room commands\n JoinRoom: [JoinRoom, EventsMap['RoomJoined']],\n LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],\n CreateRoom: [CreateRoom, EventsMap['NewRoom']],\n DeleteRoom: [DeleteRoom, EventsMap['RoomDeleted']],\n GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],\n // Topic commands\n CreateTopic: [CreateTopic, EventsMap['NewTopic']],\n DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],\n CreateMessage: [CreateMessage, EventsMap['NewMessage']],\n}","import {EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | undefined {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = null): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n let item;\n while (!(item = this.items.entries().next().value).done) {\n if (limit && result.length === limit) {\n break;\n }\n if (item[1][field] === valueToFind) {\n result.set(item);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: ValueT, index: KeyT) => MapT): MapT[] {\n return Array.from(this.items.entries()).map((entry) => callback(entry[1], entry[0]));\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | undefined {\n return this._items.get(id);\n }\n\n public getAt(index: number): T | undefined {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: T, index: number, array: T[]) => MapT): MapT[] {\n return this.items.map(callback);\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\ninterface ObservableCollectionEvent<KeyT> {\n setItems?: KeyT[],\n deletedItems?: KeyT[],\n}\n\nexport class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<KeyT>>;\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n super();\n this.eventTarget = new EventTarget<ObservableCollectionEvent<KeyT>>();\n this.set(...items);\n }\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => item[0])});\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<T> extends IndexedObjectCollection<T> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<string>>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => string),\n items: T[] = [],\n ) {\n super(id);\n this.eventTarget = new EventTarget();\n this.set(...items);\n }\n\n public set(...items: T[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => this.getId(item))});\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off(eventName: string, handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}","export 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}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\r\nimport {\r\n Message, NewMessage, NewTopic,\r\n Room,\r\n RoomJoined, RoomLeft,\r\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\r\n RoomMemberUpdated, Session,\r\n SpaceMember,\r\n Topic,\r\n TopicDeleted\r\n} from \"pserv-ts-types\";\r\nimport {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {DeferredTask} from \"./DeferredTask\";\r\n\r\nexport class RoomsManager {\r\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\r\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\r\n // Temporary not lazy loaded; server must implement GetTopicMessages command.\r\n private readonly topicsMessages = new IndexedCollection<string, ObservableIndexedObjectCollection<Message>>();\r\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(private tracker: ChatStateTracker) {\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('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('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.members.has(roomId)) {\r\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.handleRoomMembers(result.data);\r\n }\r\n\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 const members = await this.getMembers(roomId);\r\n\r\n if (! members) {\r\n // User is not in passed room.\r\n return undefined;\r\n }\r\n\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 collection of room topics.\r\n */\r\n public async getTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\r\n await this.deferredSession.promise;\r\n return this.topics.get(roomId);\r\n }\r\n\r\n /**\r\n * Get collection of the messages written in topic.\r\n */\r\n public async getMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | undefined> {\r\n return this.topicsMessages.get(topicId);\r\n }\r\n\r\n /**\r\n * For internal use. If you want to leave the room, execute a proper command on client object.\r\n * @internal\r\n */\r\n public _delete(...roomIds: string[]): void {\r\n this.list.delete(...roomIds);\r\n this.members.delete(...roomIds);\r\n\r\n const topicIds: string[] = [];\r\n for (const roomId of roomIds) {\r\n topicIds.push(...(this.topics.get(roomId)?.map(topic => topic.id) ?? []));\r\n }\r\n this.topicsMessages.delete(...topicIds);\r\n\r\n this.topics.delete(...roomIds);\r\n }\r\n\r\n /**\r\n * For internal use. If you want to leave the room, execute a proper command on client object.\r\n * @internal\r\n */\r\n public _deleteBySpaceId(spaceId: string): void {\r\n this._delete(\r\n ...this.list.findBy('spaceId', spaceId).map(room => room.id)\r\n );\r\n }\r\n\r\n /**\r\n * For internal use.\r\n * @internal\r\n */\r\n public _handleSpaceMemberUpdate(spaceId: string, member: SpaceMember): void {\r\n // Update members of rooms related to this space\r\n for (const room of this.list.findBy('spaceId', spaceId).items) {\r\n const roomMembers = this.members.get(room.id);\r\n\r\n if (! roomMembers) {\r\n // Skip update if member list for this room is not loaded\r\n continue;\r\n }\r\n\r\n const roomMember = roomMembers.get(member.user.id);\r\n roomMember.spaceMember = member;\r\n roomMembers.set(roomMember);\r\n }\r\n }\r\n\r\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\r\n if (! this.members.has(ev.roomId)) {\r\n return;\r\n }\r\n\r\n this.members.get(ev.roomId).set(ev.member);\r\n }\r\n\r\n private handleTopicDeleted(ev: TopicDeleted): void {\r\n const collection = this.topics.get(ev.roomId);\r\n collection.delete(ev.id);\r\n this.list.get(ev.roomId).topics = collection.items;\r\n }\r\n\r\n private handleNewMessage(ev: NewMessage): void {\r\n this.topicsMessages.get(ev.topicId).set(ev.message);\r\n }\r\n\r\n private handleNewTopic(ev: NewTopic): void {\r\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\r\n this.list.get(ev.roomId).topics.push(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 this.topicsMessages.set(...topics.map<[string, ObservableIndexedObjectCollection<Message>]>(topic => [\r\n topic.id,\r\n new ObservableIndexedObjectCollection<Message>('id')\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 addJoinedRooms(...rooms: Room[]): void {\r\n for (const room of rooms) {\r\n this.addJoinedRoomTopics(room.id, ...room.topics);\r\n }\r\n this.list.set(...rooms);\r\n }\r\n\r\n private handleRoomLeft(ev: RoomLeft): void {\r\n this._delete(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) {\r\n this.list.deleteAll();\r\n this.topics.deleteAll();\r\n this.members.deleteAll();\r\n\r\n this.addJoinedRooms(...ev.state.rooms);\r\n\r\n this.deferredSession.resolve();\r\n }\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, RoleUpdated, RoomDeleted,\r\n RoomSummary, Session,\r\n Space,\r\n SpaceDeleted, SpaceJoined, SpaceLeft,\r\n SpaceMember, SpaceMemberJoined, SpaceMemberLeft, SpaceMembers, SpaceMemberUpdated, SpaceRooms\r\n} from \"pserv-ts-types\";\r\nimport {DeferredTask} from \"./DeferredTask\";\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 members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\r\n private readonly deferredSession = new DeferredTask();\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('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\r\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\r\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceLeft(ev));\r\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\r\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\r\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\r\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\r\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\r\n this.tracker.client.on('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.rooms.has(spaceId)) {\r\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.handleSpaceRooms(result.data);\r\n }\r\n\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.members.has(spaceId)) {\r\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\r\n\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n\r\n this.handleSpaceMembers(result.data);\r\n }\r\n\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 const members = await this.getMembers(spaceId);\r\n\r\n if (! members) {\r\n // User is not in passed space.\r\n return undefined;\r\n }\r\n\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 }\r\n\r\n private handleRoomDeleted(ev: RoomDeleted): void {\r\n if (ev.spaceId) {\r\n this.rooms.get(ev.spaceId).delete(ev.id);\r\n }\r\n\r\n this.tracker.rooms._delete(ev.id);\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 handleSpaceDeleted(ev: SpaceDeleted): void {\r\n this.tracker.rooms._deleteBySpaceId(ev.id);\r\n this.roles.delete(ev.id);\r\n this.members.delete(ev.id);\r\n this.rooms.delete(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 handleSpaceLeft(ev: SpaceLeft): void {\r\n this.handleSpaceDeleted(ev);\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 }\r\n }\r\n\r\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): 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 this.tracker.rooms._handleSpaceMemberUpdate(ev.spaceId, ev.member);\r\n }\r\n\r\n private handleRoleUpdated(ev: RoleUpdated): void {\r\n this.roles.get(ev.spaceId).set(ev.role);\r\n }\r\n\r\n private handleSession(ev: Session) {\r\n this.list.deleteAll();\r\n this.roles.deleteAll();\r\n this.rooms.deleteAll();\r\n this.members.deleteAll();\r\n\r\n this.addJoinedSpaces(...ev.state.spaces);\r\n\r\n this.deferredSession.resolve();\r\n }\r\n}","export enum Permission {\r\n Root = 1 << 0,\r\n CreateSpaces = 1 << 1,\r\n ManageSpaces = 1 << 2,\r\n ManageRoles = 1 << 3,\r\n ChangeNick = 1 << 4,\r\n ManageRooms = 1 << 5,\r\n ManageTopics = 1 << 6,\r\n ManageMembers = 1 << 7,\r\n SendMessages = 1 << 8,\r\n ViewMessages = 1 << 9,\r\n ChangeMessages = 1 << 10,\r\n ManageMessages = 1 << 11,\r\n ManagePermissions = 1 << 12,\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\r\nimport {\r\n PermissionOverwrites,\r\n PermissionOverwritesChanged,\r\n PermissionOverwritesValue,\r\n Role\r\n} from \"pserv-ts-types\";\r\nimport {EventHandler, EventTarget} from \"../EventTarget\";\r\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\r\nimport {Permission} from \"../Permission\";\r\n\r\nconst getOvId = (\r\n layer: PermissionOverwrites['layer'],\r\n layerId: PermissionOverwrites['layerId'],\r\n target: PermissionOverwrites['target'],\r\n targetId: PermissionOverwrites['targetId'],\r\n) => layer + (layerId ?? '') + target + targetId;\r\n\r\nconst getOvIdByObject = (overwrites: PermissionOverwrites | PermissionOverwritesChanged): string => getOvId(\r\n overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId\r\n);\r\n\r\nexport class PermissionsManager extends EventTarget {\r\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\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('PermissionOverwritesChanged', ev => this.handlePermissionOverwrites(ev));\r\n }\r\n\r\n public async getOverwrites(\r\n layer: PermissionOverwrites['layer'],\r\n layerId: PermissionOverwrites['layerId'],\r\n target: PermissionOverwrites['target'],\r\n targetId: PermissionOverwrites['targetId'],\r\n ): Promise<PermissionOverwrites | undefined> {\r\n const id = getOvId(layer, layerId, target, targetId);\r\n\r\n if (this.overwrites.has(id)) {\r\n return this.overwrites.get(id);\r\n }\r\n\r\n const result = await this.tracker.client.send(\r\n 'GetPermissionOverwrites',\r\n {layer, layerId, target, targetId},\r\n );\r\n\r\n return result.error ? null : result.data;\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 Permission)[],\r\n spaceId?: string,\r\n roomId?: string,\r\n topicId?: string,\r\n ): Promise<{ok: boolean, missing: string[]}> {\r\n const ownedPermissions = await this.calculatePermissions(spaceId, roomId, topicId);\r\n const missing: string[] = [];\r\n\r\n permissionNames.forEach(name => {\r\n if (~ ownedPermissions & Permission[name]) {\r\n missing.push(name);\r\n }\r\n });\r\n\r\n return {ok: missing.length === 0, missing};\r\n }\r\n\r\n public async calculatePermissions(spaceId?: string, roomId?: string, topicId?: string): Promise<number> {\r\n if (topicId && ! roomId || roomId && ! spaceId) {\r\n throw new Error('Corrupted arguments hierarchy');\r\n }\r\n\r\n const userId = (await this.tracker.getMe()).id;\r\n\r\n const userRoles: string[] = [];\r\n\r\n const promises: Promise<PermissionOverwritesValue>[] = [\r\n // Global user overwrites\r\n this.getOverwrites('Global', null, 'User', userId).then(v => v.overwrites),\r\n ];\r\n\r\n if (spaceId) {\r\n userRoles.push(...(await this.tracker.spaces.getMe(spaceId)).roles);\r\n promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));\r\n promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(v => v.overwrites));\r\n }\r\n\r\n if (roomId) {\r\n const roomMember = await this.tracker.rooms.getMe(roomId);\r\n\r\n if (roomMember.roles !== null) { // Room overwrites from roles (only for space rooms)\r\n userRoles.push(...roomMember.roles);\r\n promises.push(this.collectRoleOverwrites(spaceId, 'Room', roomId, userRoles));\r\n }\r\n\r\n promises.push(this.getOverwrites('Room', roomId, 'User', userId).then(v => v.overwrites));\r\n }\r\n\r\n if (topicId) {\r\n if (userRoles.length) {\r\n promises.push(this.collectRoleOverwrites(spaceId, 'Topic', topicId, userRoles));\r\n }\r\n\r\n promises.push(this.getOverwrites('Topic', topicId, '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: PermissionOverwritesChanged | PermissionOverwrites) {\r\n this.overwrites.set([getOvIdByObject(ev), ev]);\r\n this.emit('change');\r\n }\r\n\r\n private async collectRoleOverwrites(\r\n spaceId: string,\r\n layer: PermissionOverwrites['layer'],\r\n layerId: PermissionOverwrites['layerId'],\r\n userRoles: string[],\r\n ): Promise<PermissionOverwritesValue> {\r\n const roleOverwrites = await Promise.all(userRoles.map(\r\n roleId => this.getOverwrites(layer, layerId, 'Role', roleId)\r\n ));\r\n\r\n return this.resolveOverwritesFromRolesByOrder(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.targetId).priority - roles.get(b.targetId).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,\r\n currentValue.overwrites.deny.toString(2).length\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 & Permission.Root) {\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 this.getPermissionNames()) {\r\n result |= Permission[name];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getPermissionNames(): string[] {\r\n return Object.keys(Permission).filter(key => Number.isNaN(parseInt(key)));\r\n }\r\n}","import {WebSocketChatClient} from \"../WebSocketChatClient\";\nimport {Session, User} from \"pserv-ts-types\";\nimport {RoomsManager} from \"./RoomsManager\";\nimport {SpacesManager} from \"./SpacesManager\";\nimport {PermissionsManager} from \"./PermissionsManager\";\nimport {DeferredTask} from \"./DeferredTask\";\n\nexport class ChatStateTracker {\n /**\n * State of the rooms you are in.\n */\n public readonly rooms: RoomsManager = new RoomsManager(this);\n /**\n * State of the spaces you are in.\n */\n public readonly spaces = new SpacesManager(this);\n /**\n * State of your permissions.\n */\n public readonly permissions = new PermissionsManager(this);\n\n private me: User = null;\n private readonly deferredSession = new DeferredTask();\n\n public constructor(public readonly client: WebSocketChatClient) {\n this.client.on('Session', ev => this.handleSession(ev));\n }\n\n public async getMe(): Promise<User> {\n await this.deferredSession.promise;\n return this.me;\n }\n\n private handleSession(ev: Session): void {\n this.me = ev.user;\n this.deferredSession.resolve();\n }\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {Envelope} from \"pserv-ts-types\";\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\nexport class WebSocketChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: [commandType: keyof CommandsMap, commandData: any][] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void];\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n }\n\n public async connect(): Promise<void> {\n const authString = this.options.token ? `token=${this.options.token}` : `nick=${this.options.temporaryNick}`;\n this.ws = new WebSocket(`${this.options.url}?${authString}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n return new Promise((...args) => this.authenticatedResolvers = args);\n }\n\n public disconnect(): void {\n this.sendQueue = [];\n this.ws?.close();\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n if (!this.ws || [this.ws.CLOSED, this.ws.CLOSING].includes(this.ws.readyState)) {\n throw new Error('Cannot send; close or closing connection state');\n }\n\n if (this.ws.readyState === this.ws.CONNECTING || !this.authenticated) {\n this.sendQueue.push([commandType, commandData] as any);\n return;\n }\n\n if (this.ws.readyState !== this.ws.OPEN) {\n throw new Error(`Invalid websocket state=${this.ws.readyState}`);\n }\n\n const envelope = this.createEnvelope<CommandsMap[CommandType][0]>(commandType, commandData);\n this.ws.send(JSON.stringify(envelope));\n return this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n }\n\n private onMessage(event: MessageEvent): void {\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Error';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.authenticatedResolvers[0]();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.authenticatedResolvers[1](envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n if (reconnect) {\n this.connect();\n }\n this.emit(this.Event.disconnect, reconnect);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const data = this.sendQueue[dataIndex];\n setTimeout(() => this.send(...data), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n}","import {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"pserv-ts-types\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\nexport class WebApiChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: {data: any, attempts: number, lastTimeoutId: any}[];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n const envelope = this.createEnvelope(commandType, commandData);\n this.sendStack.push({data: envelope, attempts: 0, lastTimeoutId: null});\n this.makeApiCall(this.sendStack.length - 1);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests\n this.sendStack.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.awaitingResponse.delete(item.data.ref);\n });\n this.sendStack = [];\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(reqId: number, response: Response): Promise<void> {\n this.sendStack.splice(reqId, 1);\n const envelope: Envelope = await response.json();\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(reqId: number, body: string): void {\n if (this.sendStack[reqId].attempts >= (this.options.attemptsToSend ?? 10)) {\n this.sendStack.splice(reqId, 1);\n this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n this.sendStack[reqId].lastTimeoutId = setTimeout(\n () => this.makeApiCall(reqId),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(reqId: number): void {\n this.sendStack[reqId].attempts++;\n const bodyJson = JSON.stringify(this.sendStack[reqId].data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n } else if (this.options.temporaryNick) {\n headers.Authorization = `Temp ${this.options.temporaryNick}`;\n }\n\n fetch(this.options.url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(reqId, response))\n .catch(() => this.onError(reqId, bodyJson));\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined\n ): Promise<RestClientResponse<ResponseT>> {\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const result = await fetch(url, {method, body, headers});\n\n return {\n ok: result.ok,\n status: result.status,\n data: await result.json(),\n };\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient} from \"./AbstractRestClient\";\n\nexport interface TokenInterface {\n token: string,\n expiration: string\n}\n\nexport interface MyAccountInterface {\n id: string;\n nick: string;\n avatar: string;\n}\n\nexport class AuthClient extends AbstractRestClient {\n protected defaultUrl: string = 'https://polfan.pl/webservice/api';\n\n public static async createToken(\n login: string,\n password: string,\n clientName: string = 'pserv-js-client'\n ): Promise<TokenInterface> {\n const response = await new AuthClient({token: null}).send('POST', 'auth/tokens', {\n login, password, client_name: clientName\n });\n if (response.ok) {\n return response.data;\n }\n throw new Error(`Cannot create user token: ${response.data.errors[0]}`);\n }\n\n public async deleteToken(token: string): Promise<void> {\n const response = await this.send('DELETE', `auth/tokens/${token}`);\n if (!response.ok) {\n throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);\n }\n }\n\n public async getMe(): Promise<MyAccountInterface> {\n const response = await this.send('GET', 'auth/me');\n if (response.ok) {\n response.data.id = response.data.id.toString();\n return response.data;\n }\n throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);\n }\n}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\nimport {WebApiChatClient} from \"./WebApiChatClient\";\nimport {\n IndexedCollection,\n IndexedObjectCollection,\n ObservableIndexedCollection,\n ObservableIndexedObjectCollection\n} from \"./IndexedObjectCollection\";\nimport { AuthClient } from \"./AuthClient\";\nimport { Permission } from \"./Permission\";\n\nexport {\n IndexedCollection, ObservableIndexedCollection,\n IndexedObjectCollection, ObservableIndexedObjectCollection,\n Permission,\n WebSocketChatClient, WebApiChatClient,\n AuthClient\n};"],"names":["EventTarget","Map","eventName","handler","addHandler","events","onceEvents","index","get","indexOf","splice","event","callHandlers","map","handlers","push","set","forEach","callback","AbstractChatClient","type","data","ref","sentCounter","toString","envelope","Promise","args","awaitingResponse","has","isError","error","IndexedCollection","items","_items","size","item","id","ids","clear","field","valueToFind","limit","result","entries","next","value","done","length","Array","from","entry","IndexedObjectCollection","values","getId","deleteAll","ObservableIndexedCollection","eventTarget","emit","setItems","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","DeferredTask","promise","resolve","RoomsManager","tracker","client","ev","handleNewMessage","handleNewTopic","handleTopicDeleted","handleRoomJoined","handleRoomLeft","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSession","roomId","members","send","getMe","userId","getMembers","undefined","find","member","user","spaceMember","deferredSession","list","topics","topicId","topicsMessages","roomIds","topicIds","topic","spaceId","_delete","findBy","room","roomMembers","roomMember","collection","message","addJoinedRoomTopics","addJoinedRooms","rooms","state","SpacesManager","handleNewRoom","handleRoomDeleted","handleSpaceDeleted","handleSpaceJoined","handleSpaceLeft","handleSpaceMemberJoined","handleSpaceMemberLeft","handleSpaceMembers","handleSpaceRooms","handleSpaceMemberUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","roles","role","summary","_deleteBySpaceId","addJoinedSpaces","space","spaces","summaries","_handleSpaceMemberUpdate","Permission","getOvId","layer","layerId","target","targetId","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","permissionNames","calculatePermissions","ownedPermissions","missing","name","ok","Error","userRoles","promises","getOverwrites","then","v","collectRoleOverwrites","all","resolveOverwritesHierarchy","roleId","roleOverwrites","resolveOverwritesFromRolesByOrder","allows","denies","getRoles","sortedOverwrites","sort","a","b","priority","permissionsLength","reduce","previousValue","currentValue","Math","max","allow","deny","overwriteEvent","revDecDenies","split","reverse","join","revDecAllows","i","parseInt","permissionOverwritesValues","Root","getRootAccessValue","getPermissionNames","Object","filter","key","Number","isNaN","ChatStateTracker","me","WebSocketChatClientEvent","WebSocketChatClient","options","token","temporaryNick","stateTracking","authString","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","sendQueue","close","commandType","commandData","CLOSED","CLOSING","includes","readyState","CONNECTING","OPEN","createEnvelope","JSON","stringify","createPromiseFromCommandEnvelope","parse","handleIncomingEnvelope","Event","isAuthenticated","connect","sendFromQueue","clearTimeout","reconnect","code","disconnect","lastDelay","dataIndex","awaitQueueSendDelayMs","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","json","body","attemptsToSend","handleEnvelopeSendError","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","onError","AbstractRestClient","uri","getUrl","URLSearchParams","status","removeEndingSlash","defaultUrl","removeStartingSlash","text","replace","AuthClient","errors","login","password","clientName","client_name"],"sourceRoot":""}
@@ -5,7 +5,7 @@ export declare class IndexedCollection<KeyT, ValueT> {
5
5
  get items(): Map<KeyT, ValueT>;
6
6
  get length(): number;
7
7
  set(...items: [KeyT, ValueT][]): void;
8
- get(id: KeyT): ValueT | null;
8
+ get(id: KeyT): ValueT | undefined;
9
9
  has(id: KeyT): boolean;
10
10
  delete(...ids: KeyT[]): void;
11
11
  deleteAll(): void;
@@ -19,8 +19,8 @@ export declare class IndexedObjectCollection<T> {
19
19
  get items(): T[];
20
20
  get length(): number;
21
21
  set(...items: T[]): void;
22
- get(id: any): T | null;
23
- getAt(index: number): T | null;
22
+ get(id: any): T | undefined;
23
+ getAt(index: number): T | undefined;
24
24
  has(id: any): boolean;
25
25
  delete(...ids: any[]): void;
26
26
  deleteAll(): void;
@@ -6,7 +6,7 @@ export declare class PermissionsManager extends EventTarget {
6
6
  private tracker;
7
7
  private readonly overwrites;
8
8
  constructor(tracker: ChatStateTracker);
9
- getOverwrites(layer: PermissionOverwrites['layer'], layerId: PermissionOverwrites['layerId'], target: PermissionOverwrites['target'], targetId: PermissionOverwrites['targetId']): Promise<PermissionOverwrites | null>;
9
+ getOverwrites(layer: PermissionOverwrites['layer'], layerId: PermissionOverwrites['layerId'], target: PermissionOverwrites['target'], targetId: PermissionOverwrites['targetId']): Promise<PermissionOverwrites | undefined>;
10
10
  on(eventName: 'change', handler: EventHandler<any>): this;
11
11
  check(permissionNames: (keyof typeof Permission)[], spaceId?: string, roomId?: string, topicId?: string): Promise<{
12
12
  ok: boolean;
@@ -12,11 +12,11 @@ export declare class RoomsManager {
12
12
  /**
13
13
  * Get collection of room members.
14
14
  */
15
- getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | null>;
15
+ getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined>;
16
16
  /**
17
17
  * Get a room member representing the current user.
18
18
  */
19
- getMe(roomId: string): Promise<RoomMember | null>;
19
+ getMe(roomId: string): Promise<RoomMember | undefined>;
20
20
  /**
21
21
  * Get collection of all the rooms you are in.
22
22
  */
@@ -24,11 +24,11 @@ export declare class RoomsManager {
24
24
  /**
25
25
  * Get collection of room topics.
26
26
  */
27
- getTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null>;
27
+ getTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | undefined>;
28
28
  /**
29
29
  * Get collection of the messages written in topic.
30
30
  */
31
- getMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null>;
31
+ getMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | undefined>;
32
32
  /**
33
33
  * For internal use. If you want to leave the room, execute a proper command on client object.
34
34
  * @internal
@@ -16,19 +16,19 @@ export declare class SpacesManager {
16
16
  /**
17
17
  * Get collection of space roles.
18
18
  */
19
- getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | null>;
19
+ getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined>;
20
20
  /**
21
21
  * Get collection of the all available rooms inside given space.
22
22
  */
23
- getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | null>;
23
+ getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined>;
24
24
  /**
25
25
  * Get collection of space members.
26
26
  */
27
- getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | null>;
27
+ getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined>;
28
28
  /**
29
29
  * Get a space member representing the current user.
30
30
  */
31
- getMe(spaceId: string): Promise<SpaceMember | null>;
31
+ getMe(spaceId: string): Promise<SpaceMember | undefined>;
32
32
  private handleNewRole;
33
33
  private handleNewRoom;
34
34
  private handleRoomDeleted;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polfan-server-js-client",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "JavaScript client library for handling communication with Polfan chat server.",
5
5
  "author": "Jarosław Żak",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@ export class IndexedCollection<KeyT, ValueT> {
21
21
  }
22
22
  }
23
23
 
24
- public get(id: KeyT): ValueT | null {
24
+ public get(id: KeyT): ValueT | undefined {
25
25
  return this.items.get(id);
26
26
  }
27
27
 
@@ -81,11 +81,11 @@ export class IndexedObjectCollection<T> {
81
81
  this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));
82
82
  }
83
83
 
84
- public get(id: any): T | null {
84
+ public get(id: any): T | undefined {
85
85
  return this._items.get(id);
86
86
  }
87
87
 
88
- public getAt(index: number): T|null {
88
+ public getAt(index: number): T | undefined {
89
89
  return this.items[index];
90
90
  }
91
91
 
@@ -34,7 +34,7 @@ export class PermissionsManager extends EventTarget {
34
34
  layerId: PermissionOverwrites['layerId'],
35
35
  target: PermissionOverwrites['target'],
36
36
  targetId: PermissionOverwrites['targetId'],
37
- ): Promise<PermissionOverwrites | null> {
37
+ ): Promise<PermissionOverwrites | undefined> {
38
38
  const id = getOvId(layer, layerId, target, targetId);
39
39
 
40
40
  if (this.overwrites.has(id)) {
@@ -36,7 +36,7 @@ export class RoomsManager {
36
36
  /**
37
37
  * Get collection of room members.
38
38
  */
39
- public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | null> {
39
+ public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {
40
40
  if (! this.members.has(roomId)) {
41
41
  const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});
42
42
 
@@ -53,13 +53,13 @@ export class RoomsManager {
53
53
  /**
54
54
  * Get a room member representing the current user.
55
55
  */
56
- public async getMe(roomId: string): Promise<RoomMember | null> {
56
+ public async getMe(roomId: string): Promise<RoomMember | undefined> {
57
57
  const userId = (await this.tracker.getMe()).id;
58
58
  const members = await this.getMembers(roomId);
59
59
 
60
60
  if (! members) {
61
61
  // User is not in passed room.
62
- return null;
62
+ return undefined;
63
63
  }
64
64
 
65
65
  return members.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);
@@ -76,7 +76,7 @@ export class RoomsManager {
76
76
  /**
77
77
  * Get collection of room topics.
78
78
  */
79
- public async getTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null> {
79
+ public async getTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {
80
80
  await this.deferredSession.promise;
81
81
  return this.topics.get(roomId);
82
82
  }
@@ -84,7 +84,7 @@ export class RoomsManager {
84
84
  /**
85
85
  * Get collection of the messages written in topic.
86
86
  */
87
- public async getMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null> {
87
+ public async getMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | undefined> {
88
88
  return this.topicsMessages.get(topicId);
89
89
  }
90
90
 
@@ -47,7 +47,7 @@ export class SpacesManager {
47
47
  /**
48
48
  * Get collection of space roles.
49
49
  */
50
- public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | null> {
50
+ public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {
51
51
  await this.deferredSession.promise;
52
52
  return this.roles.get(spaceId);
53
53
  }
@@ -55,7 +55,7 @@ export class SpacesManager {
55
55
  /**
56
56
  * Get collection of the all available rooms inside given space.
57
57
  */
58
- public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | null> {
58
+ public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {
59
59
  if (! this.rooms.has(spaceId)) {
60
60
  const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});
61
61
 
@@ -72,7 +72,7 @@ export class SpacesManager {
72
72
  /**
73
73
  * Get collection of space members.
74
74
  */
75
- public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | null> {
75
+ public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {
76
76
  if (! this.members.has(spaceId)) {
77
77
  const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});
78
78
 
@@ -89,13 +89,13 @@ export class SpacesManager {
89
89
  /**
90
90
  * Get a space member representing the current user.
91
91
  */
92
- public async getMe(spaceId: string): Promise<SpaceMember | null> {
92
+ public async getMe(spaceId: string): Promise<SpaceMember | undefined> {
93
93
  const userId = (await this.tracker.getMe()).id;
94
94
  const members = await this.getMembers(spaceId);
95
95
 
96
96
  if (! members) {
97
97
  // User is not in passed space.
98
- return null;
98
+ return undefined;
99
99
  }
100
100
 
101
101
  return members.items.find(member => member.user.id === userId);