polfan-server-js-client 0.1.21 → 0.1.22
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/README.md +17 -17
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ChatStateTracker.ts +1 -1
- package/index.html +0 -8
package/README.md
CHANGED
|
@@ -4,22 +4,22 @@ TypeScript client library to handle connection with Polfan chat service.
|
|
|
4
4
|
## How to use?
|
|
5
5
|
|
|
6
6
|
```js
|
|
7
|
-
(async
|
|
8
|
-
//
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
console.log(
|
|
7
|
+
(async () => {
|
|
8
|
+
// Get access token by credentials
|
|
9
|
+
const token = await PServ.AuthClient.createToken('login', 'password');
|
|
10
|
+
|
|
11
|
+
// Create web api client (there is also WebSocket client available)
|
|
12
|
+
const client = new PServ.WebApiChatClient({
|
|
13
|
+
token: token.token, // Pass received token
|
|
14
|
+
url: 'https://pserv-api-address',
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// Call `GetSession` command which returns user session data
|
|
18
|
+
const session = await client.send('GetSession');
|
|
19
|
+
|
|
20
|
+
console.log("My nick:", session.user.nick);
|
|
21
|
+
console.log("The rooms you are in:", session.rooms);
|
|
22
|
+
console.log("The spaces you are in:", session.spaces);
|
|
23
|
+
console.log("The version of server you connected to:", session.serverVersion);
|
|
24
24
|
})();
|
|
25
25
|
```
|
package/build/index.js
CHANGED
|
@@ -1053,8 +1053,8 @@ var ChatStateTracker = /*#__PURE__*/function () {
|
|
|
1053
1053
|
if (!this.roomsMembers.has(ev.id)) {
|
|
1054
1054
|
var _this$deferredGetters2;
|
|
1055
1055
|
this.roomsMembers.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
|
|
1056
|
-
var _member$user$id;
|
|
1057
|
-
return (_member$user$id = member === null ||
|
|
1056
|
+
var _member$user$id, _member$user;
|
|
1057
|
+
return (_member$user$id = (_member$user = member.user) === null || _member$user === void 0 ? void 0 : _member$user.id) !== null && _member$user$id !== void 0 ? _member$user$id : member.spaceMember.user.id;
|
|
1058
1058
|
}, ev.members)]);
|
|
1059
1059
|
(_this$deferredGetters2 = this.deferredGetters.get("rooms-members-".concat(ev.id))) === null || _this$deferredGetters2 === void 0 ? void 0 : _this$deferredGetters2.resolver();
|
|
1060
1060
|
}
|
package/build/index.js.map
CHANGED
|
@@ -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/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 Ok,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdate,\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 GetUserPermissions,\n SetUserPermissions,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetRolePermissions,\n GetRolePermissions,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage, Envelope,\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 Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n // Space events\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdate: SpaceMemberUpdate,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoomDeleted,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\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 SetUserPermissions: [SetUserPermissions, EventsMap['Permissions']],\n GetUserPermissions: [GetUserPermissions, EventsMap['Permissions']],\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 AssignRole: [AssignRole, EventsMap['SpaceMemberUpdate']],\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdate']],\n SetRolePermissions: [SetRolePermissions, EventsMap['Permissions']],\n GetRolePermissions: [GetRolePermissions, EventsMap['Permissions']],\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}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"./IndexedObjectCollection\";\nimport {\n Message,\n NewMessage,\n NewRole,\n NewRoom,\n NewTopic, Role,\n RoleDeleted,\n Room,\n RoomDeleted,\n RoomJoined,\n RoomLeft, RoomMember,\n RoomMemberJoined,\n RoomMemberLeft,\n RoomMembers, RoomSummary,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft, SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdate,\n SpaceRooms, Topic,\n TopicDeleted, User\n} from \"pserv-ts-types\";\n\ntype Deferred = {resolver: () => void, promise: Promise<void>};\n\nexport class ChatStateTracker {\n private readonly joinedSpaces = new ObservableIndexedObjectCollection<Space>('id');\n private readonly joinedRooms = new ObservableIndexedObjectCollection<Room>('id');\n private readonly spacesRoles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly roomsTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n // Temporary not lazy loaded; server must implement GetTopicMessages command.\n private readonly topicsMessages = new IndexedCollection<string, ObservableIndexedObjectCollection<Message>>();\n\n // lazy loaded collections\n private readonly spacesRooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly spacesMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly roomsMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredGetters = new IndexedCollection<string, Deferred>();\n\n private reconnecting: boolean = false;\n private me: User = null;\n\n public constructor(private readonly client: WebSocketChatClient) {\n this.createDeferredGetter('session');\n this.bind();\n }\n\n public async getMe(): Promise<User> {\n await this.deferredGetterReadiness('session');\n return this.me;\n }\n\n public async getJoinedSpaces(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredGetterReadiness('session');\n return this.joinedSpaces;\n }\n\n public async getJoinedRooms(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredGetterReadiness('session');\n return this.joinedRooms;\n }\n\n public async getSpaceRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | null> {\n await this.deferredGetterReadiness('session');\n return this.spacesRoles.get(spaceId);\n }\n\n public async getRoomTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null> {\n await this.deferredGetterReadiness('session');\n return this.roomsTopics.get(roomId);\n }\n\n public async getTopicMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null> {\n return this.topicsMessages.get(topicId);\n }\n\n public async getSpaceRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | null> {\n const deferredGetterName = `spaces-rooms-${spaceId}`;\n if (!this.spacesRooms.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceRooms', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesRooms.get(spaceId);\n }\n\n public async getSpaceMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | null> {\n const deferredGetterName = `spaces-members-${spaceId}`;\n if (!this.spacesMembers.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceMembers', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesMembers.get(spaceId);\n }\n\n public async getRoomMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | null> {\n const deferredGetterName = `rooms-members-${roomId}`;\n if (!this.roomsMembers.has(roomId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetRoomMembers', {id: roomId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.roomsMembers.get(roomId);\n }\n\n private async deferredGetterReadiness(name: string): Promise<void> {\n if (this.deferredGetters.has(name)) {\n await this.deferredGetters.get(name)?.promise;\n }\n }\n\n private bind(): void {\n this.client.on(this.client.Event.disconnect, ev => this.handleDisconnect(ev as any as boolean));\n this.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.client.on('NewRole', ev => this.handleNewRole(ev));\n this.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.client.on('Session', ev => this.handleSession(ev));\n this.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.client.on('SpaceLeft', ev => this.handleSpaceLeft(ev));\n this.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.client.on('SpaceMemberUpdate', ev => this.handleSpaceMemberUpdate(ev));\n this.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n private createDeferredGetter(name: string): void {\n if (this.deferredGetters.has(name)) {\n return;\n }\n const deferred: Deferred = {promise: undefined, resolver: undefined};\n deferred.promise = new Promise(resolve => deferred.resolver = resolve);\n this.deferredGetters.set([name, deferred]);\n }\n\n private handleDisconnect(reconnect: boolean): void {\n if (reconnect) {\n this.reconnecting = true;\n return;\n }\n }\n\n private handleNewMessage(ev: NewMessage): void {\n this.topicsMessages.get(ev.topicId).set(ev.message);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.set(ev.role);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.spacesRooms.get(ev.spaceId)?.set(ev.summary);\n }\n\n private handleNewTopic(ev: NewTopic): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.set(ev.topic);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.delete(ev.id);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n if (ev.spaceId) {\n this.spacesRooms.get(ev.spaceId).delete(ev.id);\n }\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n this.roomsTopics.set(...rooms.map<[string, ObservableIndexedObjectCollection<Topic>]>(room => [\n room.id,\n new ObservableIndexedObjectCollection<Topic>('id', room.topics)\n ]));\n\n const topicsMessages: [string, ObservableIndexedObjectCollection<Message>][] = [];\n for (const room of rooms) {\n topicsMessages.push(...room.topics.map<[string, ObservableIndexedObjectCollection<Message>]>(topic => [\n topic.id,\n new ObservableIndexedObjectCollection<Message>('id')\n ]));\n }\n this.topicsMessages.set(...topicsMessages);\n\n this.joinedRooms.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (!this.roomsMembers.has(ev.id)) {\n this.roomsMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member?.user.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n this.deferredGetters.get(`rooms-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSession(ev: Session): void {\n if (this.me && !this.reconnecting) {\n return;\n }\n\n this.me = ev.user;\n this.reconnecting = false;\n\n this.joinedRooms.deleteAll();\n this.roomsTopics.deleteAll();\n this.roomsMembers.deleteAll();\n this.joinedSpaces.deleteAll();\n this.spacesRoles.deleteAll();\n this.spacesRooms.deleteAll();\n this.spacesMembers.deleteAll();\n\n this.addJoinedRooms(...ev.state.rooms);\n this.addJoinedSpaces(...ev.state.spaces);\n\n this.deferredGetters.get('session')?.resolver();\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n \n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.spacesRoles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.joinedSpaces.set(...spaces);\n }\n\n private handleSpaceLeft(ev: SpaceLeft): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (!this.spacesMembers.has(ev.id)) {\n this.spacesMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n this.deferredGetters.get(`spaces-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (!this.spacesRooms.has(ev.id)) {\n this.spacesRooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n this.deferredGetters.get(`spaces-rooms-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceMemberUpdate(ev: SpaceMemberUpdate): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.delete(ev.id);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {Envelope} from \"pserv-ts-types\";\nimport {ChatStateTracker} from \"./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\";\n\nexport {\n IndexedCollection, ObservableIndexedCollection,\n IndexedObjectCollection, ObservableIndexedObjectCollection,\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","ChatStateTracker","client","createDeferredGetter","bind","deferredGetterReadiness","me","joinedSpaces","joinedRooms","spaceId","spacesRoles","roomId","roomsTopics","topicId","topicsMessages","deferredGetterName","spacesRooms","deferredGetters","send","spacesMembers","roomsMembers","name","promise","Event","disconnect","ev","handleDisconnect","handleNewMessage","handleNewRole","handleNewRoom","handleNewTopic","handleRoleDeleted","handleRoomDeleted","handleRoomJoined","handleRoomLeft","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleSession","handleSpaceDeleted","handleSpaceJoined","handleSpaceLeft","handleSpaceMemberJoined","handleSpaceMemberLeft","handleSpaceMembers","handleSpaceRooms","handleSpaceMemberUpdate","handleTopicDeleted","deferred","undefined","resolver","resolve","reconnect","reconnecting","message","collection","role","roles","summary","topic","topics","addJoinedRooms","room","rooms","member","userId","user","spaceMember","members","state","addJoinedSpaces","spaces","space","summaries","WebSocketChatClientEvent","WebSocketChatClient","options","token","temporaryNick","Error","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","isAuthenticated","connect","sendFromQueue","clearTimeout","code","lastDelay","dataIndex","awaitQueueSendDelayMs","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","json","body","attemptsToSend","handleEnvelopeSendError","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","then","onError","AbstractRestClient","uri","getUrl","URLSearchParams","ok","status","removeEndingSlash","defaultUrl","removeStartingSlash","text","replace","AuthClient","errors","login","password","clientName","client_name"],"sourceRoot":""}
|
|
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/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 Ok,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdate,\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 GetUserPermissions,\n SetUserPermissions,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetRolePermissions,\n GetRolePermissions,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage, Envelope,\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 Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n // Space events\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdate: SpaceMemberUpdate,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoomDeleted,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\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 SetUserPermissions: [SetUserPermissions, EventsMap['Permissions']],\n GetUserPermissions: [GetUserPermissions, EventsMap['Permissions']],\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 AssignRole: [AssignRole, EventsMap['SpaceMemberUpdate']],\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdate']],\n SetRolePermissions: [SetRolePermissions, EventsMap['Permissions']],\n GetRolePermissions: [GetRolePermissions, EventsMap['Permissions']],\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}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"./IndexedObjectCollection\";\nimport {\n Message,\n NewMessage,\n NewRole,\n NewRoom,\n NewTopic, Role,\n RoleDeleted,\n Room,\n RoomDeleted,\n RoomJoined,\n RoomLeft, RoomMember,\n RoomMemberJoined,\n RoomMemberLeft,\n RoomMembers, RoomSummary,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft, SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdate,\n SpaceRooms, Topic,\n TopicDeleted, User\n} from \"pserv-ts-types\";\n\ntype Deferred = {resolver: () => void, promise: Promise<void>};\n\nexport class ChatStateTracker {\n private readonly joinedSpaces = new ObservableIndexedObjectCollection<Space>('id');\n private readonly joinedRooms = new ObservableIndexedObjectCollection<Room>('id');\n private readonly spacesRoles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly roomsTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n // Temporary not lazy loaded; server must implement GetTopicMessages command.\n private readonly topicsMessages = new IndexedCollection<string, ObservableIndexedObjectCollection<Message>>();\n\n // lazy loaded collections\n private readonly spacesRooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly spacesMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly roomsMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredGetters = new IndexedCollection<string, Deferred>();\n\n private reconnecting: boolean = false;\n private me: User = null;\n\n public constructor(private readonly client: WebSocketChatClient) {\n this.createDeferredGetter('session');\n this.bind();\n }\n\n public async getMe(): Promise<User> {\n await this.deferredGetterReadiness('session');\n return this.me;\n }\n\n public async getJoinedSpaces(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredGetterReadiness('session');\n return this.joinedSpaces;\n }\n\n public async getJoinedRooms(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredGetterReadiness('session');\n return this.joinedRooms;\n }\n\n public async getSpaceRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | null> {\n await this.deferredGetterReadiness('session');\n return this.spacesRoles.get(spaceId);\n }\n\n public async getRoomTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null> {\n await this.deferredGetterReadiness('session');\n return this.roomsTopics.get(roomId);\n }\n\n public async getTopicMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null> {\n return this.topicsMessages.get(topicId);\n }\n\n public async getSpaceRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | null> {\n const deferredGetterName = `spaces-rooms-${spaceId}`;\n if (!this.spacesRooms.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceRooms', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesRooms.get(spaceId);\n }\n\n public async getSpaceMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | null> {\n const deferredGetterName = `spaces-members-${spaceId}`;\n if (!this.spacesMembers.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceMembers', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesMembers.get(spaceId);\n }\n\n public async getRoomMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | null> {\n const deferredGetterName = `rooms-members-${roomId}`;\n if (!this.roomsMembers.has(roomId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetRoomMembers', {id: roomId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.roomsMembers.get(roomId);\n }\n\n private async deferredGetterReadiness(name: string): Promise<void> {\n if (this.deferredGetters.has(name)) {\n await this.deferredGetters.get(name)?.promise;\n }\n }\n\n private bind(): void {\n this.client.on(this.client.Event.disconnect, ev => this.handleDisconnect(ev as any as boolean));\n this.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.client.on('NewRole', ev => this.handleNewRole(ev));\n this.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.client.on('Session', ev => this.handleSession(ev));\n this.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.client.on('SpaceLeft', ev => this.handleSpaceLeft(ev));\n this.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.client.on('SpaceMemberUpdate', ev => this.handleSpaceMemberUpdate(ev));\n this.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n private createDeferredGetter(name: string): void {\n if (this.deferredGetters.has(name)) {\n return;\n }\n const deferred: Deferred = {promise: undefined, resolver: undefined};\n deferred.promise = new Promise(resolve => deferred.resolver = resolve);\n this.deferredGetters.set([name, deferred]);\n }\n\n private handleDisconnect(reconnect: boolean): void {\n if (reconnect) {\n this.reconnecting = true;\n return;\n }\n }\n\n private handleNewMessage(ev: NewMessage): void {\n this.topicsMessages.get(ev.topicId).set(ev.message);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.set(ev.role);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.spacesRooms.get(ev.spaceId)?.set(ev.summary);\n }\n\n private handleNewTopic(ev: NewTopic): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.set(ev.topic);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.delete(ev.id);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n if (ev.spaceId) {\n this.spacesRooms.get(ev.spaceId).delete(ev.id);\n }\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n this.roomsTopics.set(...rooms.map<[string, ObservableIndexedObjectCollection<Topic>]>(room => [\n room.id,\n new ObservableIndexedObjectCollection<Topic>('id', room.topics)\n ]));\n\n const topicsMessages: [string, ObservableIndexedObjectCollection<Message>][] = [];\n for (const room of rooms) {\n topicsMessages.push(...room.topics.map<[string, ObservableIndexedObjectCollection<Message>]>(topic => [\n topic.id,\n new ObservableIndexedObjectCollection<Message>('id')\n ]));\n }\n this.topicsMessages.set(...topicsMessages);\n\n this.joinedRooms.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (!this.roomsMembers.has(ev.id)) {\n this.roomsMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member.user?.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n this.deferredGetters.get(`rooms-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSession(ev: Session): void {\n if (this.me && !this.reconnecting) {\n return;\n }\n\n this.me = ev.user;\n this.reconnecting = false;\n\n this.joinedRooms.deleteAll();\n this.roomsTopics.deleteAll();\n this.roomsMembers.deleteAll();\n this.joinedSpaces.deleteAll();\n this.spacesRoles.deleteAll();\n this.spacesRooms.deleteAll();\n this.spacesMembers.deleteAll();\n\n this.addJoinedRooms(...ev.state.rooms);\n this.addJoinedSpaces(...ev.state.spaces);\n\n this.deferredGetters.get('session')?.resolver();\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n \n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.spacesRoles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.joinedSpaces.set(...spaces);\n }\n\n private handleSpaceLeft(ev: SpaceLeft): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (!this.spacesMembers.has(ev.id)) {\n this.spacesMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n this.deferredGetters.get(`spaces-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (!this.spacesRooms.has(ev.id)) {\n this.spacesRooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n this.deferredGetters.get(`spaces-rooms-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceMemberUpdate(ev: SpaceMemberUpdate): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.delete(ev.id);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {Envelope} from \"pserv-ts-types\";\nimport {ChatStateTracker} from \"./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\";\n\nexport {\n IndexedCollection, ObservableIndexedCollection,\n IndexedObjectCollection, ObservableIndexedObjectCollection,\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","ChatStateTracker","client","createDeferredGetter","bind","deferredGetterReadiness","me","joinedSpaces","joinedRooms","spaceId","spacesRoles","roomId","roomsTopics","topicId","topicsMessages","deferredGetterName","spacesRooms","deferredGetters","send","spacesMembers","roomsMembers","name","promise","Event","disconnect","ev","handleDisconnect","handleNewMessage","handleNewRole","handleNewRoom","handleNewTopic","handleRoleDeleted","handleRoomDeleted","handleRoomJoined","handleRoomLeft","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleSession","handleSpaceDeleted","handleSpaceJoined","handleSpaceLeft","handleSpaceMemberJoined","handleSpaceMemberLeft","handleSpaceMembers","handleSpaceRooms","handleSpaceMemberUpdate","handleTopicDeleted","deferred","undefined","resolver","resolve","reconnect","reconnecting","message","collection","role","roles","summary","topic","topics","addJoinedRooms","room","rooms","member","userId","user","spaceMember","members","state","addJoinedSpaces","spaces","space","summaries","WebSocketChatClientEvent","WebSocketChatClient","options","token","temporaryNick","Error","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","isAuthenticated","connect","sendFromQueue","clearTimeout","code","lastDelay","dataIndex","awaitQueueSendDelayMs","WebApiChatClientEvent","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","json","body","attemptsToSend","handleEnvelopeSendError","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","then","onError","AbstractRestClient","uri","getUrl","URLSearchParams","ok","status","removeEndingSlash","defaultUrl","removeStartingSlash","text","replace","AuthClient","errors","login","password","clientName","client_name"],"sourceRoot":""}
|
package/package.json
CHANGED
package/src/ChatStateTracker.ts
CHANGED
|
@@ -237,7 +237,7 @@ export class ChatStateTracker {
|
|
|
237
237
|
this.roomsMembers.set([
|
|
238
238
|
ev.id,
|
|
239
239
|
new ObservableIndexedObjectCollection(
|
|
240
|
-
member => member?.
|
|
240
|
+
member => member.user?.id ?? member.spaceMember.user.id,
|
|
241
241
|
ev.members,
|
|
242
242
|
)
|
|
243
243
|
]);
|