polfan-server-js-client 0.1.99933 → 0.1.99935
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +26 -3
- package/build/index.js +84 -96
- package/build/index.js.map +1 -1
- package/build/types/AbstractChatClient.d.ts +4 -1
- package/build/types/state-tracker/ChatStateTracker.d.ts +3 -3
- package/build/types/state-tracker/UsersManager.d.ts +15 -0
- package/build/types/types/src/index.d.ts +5 -1
- package/build/types/types/src/schemes/Room.d.ts +2 -0
- package/build/types/types/src/schemes/RoomStream.d.ts +5 -0
- package/build/types/types/src/schemes/commands/GetClientData.d.ts +2 -0
- package/build/types/types/src/schemes/commands/SetClientData.d.ts +1 -0
- package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +2 -0
- package/build/types/types/src/schemes/events/ClientData.d.ts +1 -0
- package/package.json +1 -1
- package/src/AbstractChatClient.ts +4 -1
- package/src/state-tracker/ChatStateTracker.ts +3 -3
- package/src/state-tracker/UsersManager.ts +41 -0
- package/src/types/src/index.ts +9 -0
- package/src/types/src/schemes/Room.ts +2 -0
- package/src/types/src/schemes/RoomStream.ts +6 -0
- package/src/types/src/schemes/commands/GetClientData.ts +3 -0
- package/src/types/src/schemes/commands/SetClientData.ts +1 -0
- package/src/types/src/schemes/commands/UpdateRoom.ts +3 -0
- package/src/types/src/schemes/events/ClientData.ts +1 -0
- package/build/types/state-tracker/Utils.d.ts +0 -15
- package/src/state-tracker/Utils.ts +0 -40
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bye, GetSession, JoinSpace, Session, SpaceJoined, Error as ErrorType, SpaceLeft, SpaceMemberJoined, SpaceMemberLeft, SpaceMemberUpdated, SpaceDeleted, SpaceMembers, SpaceRooms, NewRole, RoomDeleted, RoomJoined, RoomLeft, RoomMemberLeft, RoomMemberJoined, RoomMembers, NewRoom, NewTopic, TopicDeleted, NewMessage, GetPermissionOverwrites, GetComputedPermissions, LeaveSpace, CreateSpace, DeleteSpace, GetSpaceMembers, GetSpaceRooms, CreateRole, DeleteRole, AssignRole, DeassignRole, SetPermissionOverwrites, JoinRoom, LeaveRoom, CreateRoom, DeleteRoom, GetRoomMembers, CreateTopic, DeleteTopic, CreateMessage, Envelope, PermissionOverwrites, PermissionOverwritesUpdated, RoomMemberUpdated, UpdateRole, RoleUpdated, Ack, UserUpdated, UpdateRoom, RoomUpdated, UpdateSpace, SpaceUpdated, PermissionOverwriteTargets, GetPermissionOverwriteTargets, Owners, Ok, GetOwners, CreateOwner, RoleDeleted, FollowedTopicUpdated, TopicFollowed, TopicUnfollowed, FollowedTopics, FollowTopic, UnfollowTopic, GetFollowedTopics, Messages, GetMessages, Topics, GetTopics, TopicUpdated, UpdateTopic, GetDiscoverableSpaces, DiscoverableSpaces, CreateEmoticon, DeleteEmoticon, GetEmoticons, Emoticons, EmoticonDeleted, NewEmoticon, Bans, GetBans, Ban, Unban, Kick } from "./types/src/index";
|
|
1
|
+
import { Bye, GetSession, JoinSpace, Session, SpaceJoined, Error as ErrorType, SpaceLeft, SpaceMemberJoined, SpaceMemberLeft, SpaceMemberUpdated, SpaceDeleted, SpaceMembers, SpaceRooms, NewRole, RoomDeleted, RoomJoined, RoomLeft, RoomMemberLeft, RoomMemberJoined, RoomMembers, NewRoom, NewTopic, TopicDeleted, NewMessage, GetPermissionOverwrites, GetComputedPermissions, LeaveSpace, CreateSpace, DeleteSpace, GetSpaceMembers, GetSpaceRooms, CreateRole, DeleteRole, AssignRole, DeassignRole, SetPermissionOverwrites, JoinRoom, LeaveRoom, CreateRoom, DeleteRoom, GetRoomMembers, CreateTopic, DeleteTopic, CreateMessage, Envelope, PermissionOverwrites, PermissionOverwritesUpdated, RoomMemberUpdated, UpdateRole, RoleUpdated, Ack, UserUpdated, UpdateRoom, RoomUpdated, UpdateSpace, SpaceUpdated, PermissionOverwriteTargets, GetPermissionOverwriteTargets, Owners, Ok, GetOwners, CreateOwner, RoleDeleted, FollowedTopicUpdated, TopicFollowed, TopicUnfollowed, FollowedTopics, FollowTopic, UnfollowTopic, GetFollowedTopics, Messages, GetMessages, Topics, GetTopics, TopicUpdated, UpdateTopic, GetDiscoverableSpaces, DiscoverableSpaces, CreateEmoticon, DeleteEmoticon, GetEmoticons, Emoticons, EmoticonDeleted, NewEmoticon, Bans, GetBans, Ban, Unban, Kick, ClientData, GetClientData, SetClientData } from "./types/src/index";
|
|
2
2
|
import { EventTarget } from "./EventTarget";
|
|
3
3
|
type ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];
|
|
4
4
|
export declare abstract class AbstractChatClient extends EventTarget {
|
|
@@ -33,6 +33,7 @@ export type EventsMap = {
|
|
|
33
33
|
EmoticonDeleted: EmoticonDeleted;
|
|
34
34
|
Emoticons: Emoticons;
|
|
35
35
|
Bans: Bans;
|
|
36
|
+
ClientData: ClientData;
|
|
36
37
|
DiscoverableSpaces: DiscoverableSpaces;
|
|
37
38
|
SpaceJoined: SpaceJoined;
|
|
38
39
|
SpaceLeft: SpaceLeft;
|
|
@@ -86,6 +87,8 @@ export type CommandsMap = {
|
|
|
86
87
|
Ban: [Ban, EventsMap['Ok']];
|
|
87
88
|
Unban: [Unban, EventsMap['Ok']];
|
|
88
89
|
Kick: [Kick, EventsMap['Ok']];
|
|
90
|
+
GetClientData: [GetClientData, EventsMap['ClientData']];
|
|
91
|
+
SetClientData: [SetClientData, EventsMap['Ok']];
|
|
89
92
|
GetDiscoverableSpaces: [GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']];
|
|
90
93
|
JoinSpace: [JoinSpace, EventsMap['SpaceJoined']];
|
|
91
94
|
LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']];
|
|
@@ -4,7 +4,7 @@ import { RoomsManager } from "./RoomsManager";
|
|
|
4
4
|
import { SpacesManager } from "./SpacesManager";
|
|
5
5
|
import { PermissionsManager } from "./PermissionsManager";
|
|
6
6
|
import { EmoticonsManager } from "./EmoticonsManager";
|
|
7
|
-
import {
|
|
7
|
+
import { UsersManager } from "./UsersManager";
|
|
8
8
|
export declare class ChatStateTracker {
|
|
9
9
|
readonly client: WebSocketChatClient;
|
|
10
10
|
/**
|
|
@@ -24,9 +24,9 @@ export declare class ChatStateTracker {
|
|
|
24
24
|
*/
|
|
25
25
|
readonly emoticons: EmoticonsManager;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Users related state.
|
|
28
28
|
*/
|
|
29
|
-
readonly
|
|
29
|
+
readonly users: UsersManager;
|
|
30
30
|
private _me;
|
|
31
31
|
private readonly deferredSession;
|
|
32
32
|
constructor(client: WebSocketChatClient);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChatStateTracker } from "./ChatStateTracker";
|
|
2
|
+
import { ObservableIndexedObjectCollection } from "../IndexedObjectCollection";
|
|
3
|
+
import { User } from "../types/src";
|
|
4
|
+
export declare class UsersManager {
|
|
5
|
+
private tracker;
|
|
6
|
+
private readonly users;
|
|
7
|
+
constructor(tracker: ChatStateTracker);
|
|
8
|
+
/**
|
|
9
|
+
* Get all available (cached) user objects at once.
|
|
10
|
+
*/
|
|
11
|
+
getAvailable(): Promise<ObservableIndexedObjectCollection<User>>;
|
|
12
|
+
private handleMembers;
|
|
13
|
+
private handleUsers;
|
|
14
|
+
private handleSession;
|
|
15
|
+
}
|
|
@@ -107,4 +107,8 @@ import { BanObject } from "./schemes/BanObject";
|
|
|
107
107
|
import { Bans } from "./schemes/events/Bans";
|
|
108
108
|
import { Kick } from "./schemes/commands/Kick";
|
|
109
109
|
import { LeaveReason } from "./schemes/LeaveReason";
|
|
110
|
-
|
|
110
|
+
import { GetClientData } from "./schemes/commands/GetClientData";
|
|
111
|
+
import { SetClientData } from "./schemes/commands/SetClientData";
|
|
112
|
+
import { ClientData } from "./schemes/events/ClientData";
|
|
113
|
+
import { RoomStream, RoomStreamType } from "./schemes/RoomStream";
|
|
114
|
+
export { Envelope, Message, MessageType, Role, Room, RoomFlag, RoomType, RoomMember, RoomSummary, Space, SpaceMember, Topic, FollowedTopic, User, UserState, PermissionOverwritesValue, ChatLocation, SpaceSummary, SpaceDiscoverable, Emoticon, PermissionOverwritesTarget, BanObject, LeaveReason, RoomStream, RoomStreamType, Bye, Error, Messages, NewMessage, NewRole, NewRoom, NewTopic, TopicFollowed, TopicUnfollowed, FollowedTopics, FollowedTopicUpdated, ComputedPermissions, PermissionOverwrites, PermissionOverwritesUpdated, RoleDeleted, RoleUpdated, RoomDeleted, RoomUpdated, RoomJoined, RoomLeft, RoomMemberJoined, RoomMemberLeft, RoomMembers, RoomMemberUpdated, UserUpdated, Session, SpaceDeleted, SpaceUpdated, SpaceJoined, SpaceLeft, SpaceMemberJoined, SpaceMemberLeft, SpaceMembers, SpaceMemberUpdated, SpaceRooms, TopicDeleted, TopicUpdated, PermissionOverwriteTargets, Owners, Ok, DiscoverableSpaces, Emoticons, EmoticonDeleted, NewEmoticon, Bans, ClientData, AssignRole, GetMessages, CreateMessage, Ack, CreateRole, CreateRoom, CreateSpace, CreateTopic, FollowTopic, UnfollowTopic, GetFollowedTopics, DeassignRole, DeleteRole, DeleteRoom, DeleteSpace, DeleteTopic, SetPermissionOverwrites, GetPermissionOverwrites, GetComputedPermissions, GetRoomMembers, GetSession, GetSpaceMembers, GetSpaceRooms, JoinRoom, JoinSpace, LeaveRoom, LeaveSpace, UpdateRole, UpdateSpace, UpdateRoom, UpdateTopic, GetPermissionOverwriteTargets, CreateOwner, DeleteOwner, GetOwners, Topics, GetTopics, GetDiscoverableSpaces, GetEmoticons, CreateEmoticon, DeleteEmoticon, Ban, Unban, GetBans, Kick, GetClientData, SetClientData, };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Topic } from "./Topic";
|
|
2
2
|
import { User } from "./User";
|
|
3
|
+
import { RoomStream } from "./RoomStream";
|
|
3
4
|
export type RoomType = 'Text' | 'ClassicText' | 'Pm';
|
|
4
5
|
export declare enum RoomFlag {
|
|
5
6
|
AllowSystemMessages = 1
|
|
@@ -13,4 +14,5 @@ export interface Room {
|
|
|
13
14
|
defaultTopic: Topic | null;
|
|
14
15
|
recipients: User[] | null;
|
|
15
16
|
flags: number;
|
|
17
|
+
stream: RoomStream | null;
|
|
16
18
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type SetClientData = Record<string, any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ClientData = Record<string, any>;
|
package/package.json
CHANGED
|
@@ -82,7 +82,7 @@ import {
|
|
|
82
82
|
GetEmoticons,
|
|
83
83
|
Emoticons,
|
|
84
84
|
EmoticonDeleted,
|
|
85
|
-
NewEmoticon, Bans, GetBans, Ban, Unban, Kick,
|
|
85
|
+
NewEmoticon, Bans, GetBans, Ban, Unban, Kick, ClientData, GetClientData, SetClientData,
|
|
86
86
|
} from "./types/src/index";
|
|
87
87
|
import {EventTarget} from "./EventTarget";
|
|
88
88
|
import {ErrorObject} from "css-minimizer-webpack-plugin";
|
|
@@ -160,6 +160,7 @@ export type EventsMap = {
|
|
|
160
160
|
EmoticonDeleted: EmoticonDeleted,
|
|
161
161
|
Emoticons: Emoticons,
|
|
162
162
|
Bans: Bans,
|
|
163
|
+
ClientData: ClientData,
|
|
163
164
|
// Space events
|
|
164
165
|
DiscoverableSpaces: DiscoverableSpaces,
|
|
165
166
|
SpaceJoined: SpaceJoined,
|
|
@@ -218,6 +219,8 @@ export type CommandsMap = {
|
|
|
218
219
|
Ban: [Ban, EventsMap['Ok']],
|
|
219
220
|
Unban: [Unban, EventsMap['Ok']],
|
|
220
221
|
Kick: [Kick, EventsMap['Ok']],
|
|
222
|
+
GetClientData: [GetClientData, EventsMap['ClientData']],
|
|
223
|
+
SetClientData: [SetClientData, EventsMap['Ok']],
|
|
221
224
|
// Space commands
|
|
222
225
|
GetDiscoverableSpaces: [GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']],
|
|
223
226
|
JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],
|
|
@@ -5,7 +5,7 @@ import {SpacesManager} from "./SpacesManager";
|
|
|
5
5
|
import {PermissionsManager} from "./PermissionsManager";
|
|
6
6
|
import {DeferredTask} from "./AsyncUtils";
|
|
7
7
|
import {EmoticonsManager} from "./EmoticonsManager";
|
|
8
|
-
import {
|
|
8
|
+
import {UsersManager} from "./UsersManager";
|
|
9
9
|
|
|
10
10
|
export class ChatStateTracker {
|
|
11
11
|
/**
|
|
@@ -29,9 +29,9 @@ export class ChatStateTracker {
|
|
|
29
29
|
public readonly emoticons = new EmoticonsManager(this);
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* Users related state.
|
|
33
33
|
*/
|
|
34
|
-
public readonly
|
|
34
|
+
public readonly users = new UsersManager(this);
|
|
35
35
|
|
|
36
36
|
private _me: User = null;
|
|
37
37
|
private readonly deferredSession = new DeferredTask();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {ChatStateTracker} from "./ChatStateTracker";
|
|
2
|
+
import {ObservableIndexedObjectCollection} from "../IndexedObjectCollection";
|
|
3
|
+
import {RoomMember, Session, SpaceMember, User} from "../types/src";
|
|
4
|
+
import {extractUserFromMember} from "./functions";
|
|
5
|
+
|
|
6
|
+
export class UsersManager {
|
|
7
|
+
private readonly users: ObservableIndexedObjectCollection<User> = new ObservableIndexedObjectCollection('id');
|
|
8
|
+
|
|
9
|
+
public constructor(private tracker: ChatStateTracker) {
|
|
10
|
+
tracker.client.on('UserUpdated', event => this.handleUsers([event.user]));
|
|
11
|
+
tracker.client.on('RoomMemberJoined', event => this.handleMembers([event.member]));
|
|
12
|
+
tracker.client.on('RoomMemberUpdated', event => this.handleMembers([event.member]));
|
|
13
|
+
tracker.client.on('SpaceMemberJoined', event => this.handleMembers([event.member]));
|
|
14
|
+
tracker.client.on('SpaceMemberUpdated', event => this.handleMembers([event.member]));
|
|
15
|
+
tracker.client.on('SpaceMembers', event => this.handleMembers(event.members));
|
|
16
|
+
tracker.client.on('RoomMembers', event => this.handleMembers(event.members));
|
|
17
|
+
tracker.client.on('Messages', event => this.handleUsers(event.messages.map(message => message.user)));
|
|
18
|
+
tracker.client.on('NewMessage', event => this.handleUsers([event.message.user]));
|
|
19
|
+
tracker.client.on('Session', event => this.handleSession(event));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Get all available (cached) user objects at once.
|
|
24
|
+
*/
|
|
25
|
+
public async getAvailable(): Promise<ObservableIndexedObjectCollection<User>> {
|
|
26
|
+
return this.users;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private handleMembers(members: (RoomMember | SpaceMember)[]): void {
|
|
30
|
+
this.users.set(...members.map(extractUserFromMember));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private handleUsers(users: User[]): void {
|
|
34
|
+
this.users.set(...users);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private handleSession(session: Session): void {
|
|
38
|
+
this.users.deleteAll();
|
|
39
|
+
this.users.set(session.user);
|
|
40
|
+
}
|
|
41
|
+
}
|
package/src/types/src/index.ts
CHANGED
|
@@ -107,6 +107,10 @@ import {BanObject} from "./schemes/BanObject";
|
|
|
107
107
|
import {Bans} from "./schemes/events/Bans";
|
|
108
108
|
import {Kick} from "./schemes/commands/Kick";
|
|
109
109
|
import {LeaveReason} from "./schemes/LeaveReason";
|
|
110
|
+
import {GetClientData} from "./schemes/commands/GetClientData";
|
|
111
|
+
import {SetClientData} from "./schemes/commands/SetClientData";
|
|
112
|
+
import {ClientData} from "./schemes/events/ClientData";
|
|
113
|
+
import {RoomStream, RoomStreamType} from "./schemes/RoomStream";
|
|
110
114
|
|
|
111
115
|
export {
|
|
112
116
|
// objects
|
|
@@ -133,6 +137,8 @@ export {
|
|
|
133
137
|
PermissionOverwritesTarget,
|
|
134
138
|
BanObject,
|
|
135
139
|
LeaveReason,
|
|
140
|
+
RoomStream,
|
|
141
|
+
RoomStreamType,
|
|
136
142
|
// events
|
|
137
143
|
Bye,
|
|
138
144
|
Error,
|
|
@@ -179,6 +185,7 @@ export {
|
|
|
179
185
|
EmoticonDeleted,
|
|
180
186
|
NewEmoticon,
|
|
181
187
|
Bans,
|
|
188
|
+
ClientData,
|
|
182
189
|
// commands
|
|
183
190
|
AssignRole,
|
|
184
191
|
GetMessages,
|
|
@@ -225,4 +232,6 @@ export {
|
|
|
225
232
|
Unban,
|
|
226
233
|
GetBans,
|
|
227
234
|
Kick,
|
|
235
|
+
GetClientData,
|
|
236
|
+
SetClientData,
|
|
228
237
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {Topic} from "./Topic";
|
|
2
2
|
import {User} from "./User";
|
|
3
|
+
import {RoomStream} from "./RoomStream";
|
|
3
4
|
|
|
4
5
|
export type RoomType = 'Text' | 'ClassicText' | 'Pm';
|
|
5
6
|
|
|
@@ -16,4 +17,5 @@ export interface Room {
|
|
|
16
17
|
defaultTopic: Topic | null;
|
|
17
18
|
recipients: User[] | null;
|
|
18
19
|
flags: number;
|
|
20
|
+
stream: RoomStream | null;
|
|
19
21
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type SetClientData = Record<string, any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ClientData = Record<string, any>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ChatStateTracker } from "./ChatStateTracker";
|
|
2
|
-
import { IndexedObjectCollection } from "../IndexedObjectCollection";
|
|
3
|
-
import { Room, RoomSummary, User } from "../types/src";
|
|
4
|
-
export declare class Utils {
|
|
5
|
-
private tracker;
|
|
6
|
-
constructor(tracker: ChatStateTracker);
|
|
7
|
-
/**
|
|
8
|
-
* Collect all room summaries and rooms you joined in one collection.
|
|
9
|
-
*/
|
|
10
|
-
collectAllAvailableRooms(): Promise<IndexedObjectCollection<Room | RoomSummary>>;
|
|
11
|
-
/**
|
|
12
|
-
* Collect all users from all spaces and rooms you are in.
|
|
13
|
-
*/
|
|
14
|
-
collectAllAvailableUsers(): Promise<IndexedObjectCollection<User>>;
|
|
15
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import {ChatStateTracker} from "./ChatStateTracker";
|
|
2
|
-
import {IndexedObjectCollection} from "../IndexedObjectCollection";
|
|
3
|
-
import {Room, RoomSummary, User} from "../types/src";
|
|
4
|
-
import {extractUserFromMember} from "./functions";
|
|
5
|
-
|
|
6
|
-
export class Utils {
|
|
7
|
-
public constructor(private tracker: ChatStateTracker) {}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Collect all room summaries and rooms you joined in one collection.
|
|
11
|
-
*/
|
|
12
|
-
public async collectAllAvailableRooms(): Promise<IndexedObjectCollection<Room | RoomSummary>> {
|
|
13
|
-
const result = new IndexedObjectCollection<Room | RoomSummary>('id');
|
|
14
|
-
const spaces = await this.tracker.spaces.get();
|
|
15
|
-
const collections = await Promise.all([
|
|
16
|
-
...spaces.items.map(space => this.tracker.spaces.getRooms(space.id)),
|
|
17
|
-
this.tracker.rooms.get(),
|
|
18
|
-
]);
|
|
19
|
-
|
|
20
|
-
collections.forEach(collection => result.set(...collection.items));
|
|
21
|
-
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Collect all users from all spaces and rooms you are in.
|
|
27
|
-
*/
|
|
28
|
-
public async collectAllAvailableUsers(): Promise<IndexedObjectCollection<User>> {
|
|
29
|
-
const result = new IndexedObjectCollection<User>('id');
|
|
30
|
-
const [spaces, rooms] = await Promise.all([this.tracker.spaces.get(), this.tracker.rooms.get()]);
|
|
31
|
-
const collections = await Promise.all([
|
|
32
|
-
...spaces.items.map(space => this.tracker.spaces.getMembers(space.id)),
|
|
33
|
-
...rooms.items.map(room => this.tracker.rooms.getMembers(room.id)),
|
|
34
|
-
]);
|
|
35
|
-
|
|
36
|
-
collections.forEach(collection => result.set(...collection.items.map(extractUserFromMember)));
|
|
37
|
-
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
}
|