polfan-server-js-client 0.0.96 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/types/AbstractClient.d.ts +78 -0
- package/build/types/EventTarget.d.ts +16 -0
- package/build/types/IndexedObjectCollection.d.ts +53 -0
- package/build/types/WebApiClient.d.ts +30 -0
- package/build/types/WebSocketClient.d.ts +36 -0
- package/build/types/WebSocketStateTracker.d.ts +54 -0
- package/build/types/index.d.ts +4 -68
- package/package.json +65 -64
- package/src/AbstractClient.ts +174 -0
- package/src/EventTarget.ts +39 -0
- package/src/IndexedObjectCollection.ts +209 -0
- package/src/{connections/WebApiConnection.ts → WebApiClient.ts} +94 -81
- package/src/WebSocketClient.ts +125 -0
- package/src/WebSocketStateTracker.ts +326 -0
- package/src/index.ts +13 -123
- package/build/types/Client.d.ts +0 -107
- package/build/types/ObservableInterface.d.ts +0 -16
- package/build/types/connections/ConnectionAssets.d.ts +0 -17
- package/build/types/connections/RestApiConnection.d.ts +0 -14
- package/build/types/connections/WebApiConnection.d.ts +0 -21
- package/build/types/connections/WebSocketConnection.d.ts +0 -22
- package/build/types/dtos/Dto.d.ts +0 -16
- package/build/types/dtos/Message.d.ts +0 -9
- package/build/types/dtos/Permission.d.ts +0 -7
- package/build/types/dtos/Role.d.ts +0 -7
- package/build/types/dtos/Room.d.ts +0 -10
- package/build/types/dtos/RoomMember.d.ts +0 -6
- package/build/types/dtos/RoomSummary.d.ts +0 -7
- package/build/types/dtos/Space.d.ts +0 -8
- package/build/types/dtos/SpaceMember.d.ts +0 -7
- package/build/types/dtos/Topic.d.ts +0 -7
- package/build/types/dtos/User.d.ts +0 -9
- package/build/types/dtos/UserState.d.ts +0 -8
- package/build/types/dtos/protocol/Envelope.d.ts +0 -7
- package/build/types/dtos/protocol/commands/AssignRole.d.ts +0 -7
- package/build/types/dtos/protocol/commands/CreateMessage.d.ts +0 -7
- package/build/types/dtos/protocol/commands/CreateRole.d.ts +0 -7
- package/build/types/dtos/protocol/commands/CreateRoom.d.ts +0 -7
- package/build/types/dtos/protocol/commands/CreateSpace.d.ts +0 -5
- package/build/types/dtos/protocol/commands/CreateTopic.d.ts +0 -7
- package/build/types/dtos/protocol/commands/DeassignRole.d.ts +0 -7
- package/build/types/dtos/protocol/commands/DeleteRole.d.ts +0 -6
- package/build/types/dtos/protocol/commands/DeleteRoom.d.ts +0 -5
- package/build/types/dtos/protocol/commands/DeleteSpace.d.ts +0 -5
- package/build/types/dtos/protocol/commands/DeleteTopic.d.ts +0 -5
- package/build/types/dtos/protocol/commands/GetComputedPermissions.d.ts +0 -8
- package/build/types/dtos/protocol/commands/GetRolePermissions.d.ts +0 -8
- package/build/types/dtos/protocol/commands/GetRoomMembers.d.ts +0 -5
- package/build/types/dtos/protocol/commands/GetSession.d.ts +0 -4
- package/build/types/dtos/protocol/commands/GetSpaceMembers.d.ts +0 -5
- package/build/types/dtos/protocol/commands/GetSpaceRooms.d.ts +0 -5
- package/build/types/dtos/protocol/commands/GetUserPermissions.d.ts +0 -8
- package/build/types/dtos/protocol/commands/JoinRoom.d.ts +0 -5
- package/build/types/dtos/protocol/commands/JoinSpace.d.ts +0 -5
- package/build/types/dtos/protocol/commands/LeaveRoom.d.ts +0 -5
- package/build/types/dtos/protocol/commands/LeaveSpace.d.ts +0 -5
- package/build/types/dtos/protocol/commands/SetRolePermissions.d.ts +0 -9
- package/build/types/dtos/protocol/commands/SetUserPermissions.d.ts +0 -9
- package/build/types/dtos/protocol/events/Bye.d.ts +0 -5
- package/build/types/dtos/protocol/events/Error.d.ts +0 -6
- package/build/types/dtos/protocol/events/NewMessage.d.ts +0 -6
- package/build/types/dtos/protocol/events/NewRole.d.ts +0 -7
- package/build/types/dtos/protocol/events/NewRoom.d.ts +0 -7
- package/build/types/dtos/protocol/events/NewTopic.d.ts +0 -7
- package/build/types/dtos/protocol/events/Ok.d.ts +0 -4
- package/build/types/dtos/protocol/events/Permissions.d.ts +0 -6
- package/build/types/dtos/protocol/events/RoleDeleted.d.ts +0 -6
- package/build/types/dtos/protocol/events/RoomDeleted.d.ts +0 -5
- package/build/types/dtos/protocol/events/RoomJoined.d.ts +0 -6
- package/build/types/dtos/protocol/events/RoomLeft.d.ts +0 -5
- package/build/types/dtos/protocol/events/RoomMemberJoined.d.ts +0 -6
- package/build/types/dtos/protocol/events/RoomMemberLeft.d.ts +0 -5
- package/build/types/dtos/protocol/events/RoomMembers.d.ts +0 -6
- package/build/types/dtos/protocol/events/Session.d.ts +0 -9
- package/build/types/dtos/protocol/events/SpaceDeleted.d.ts +0 -5
- package/build/types/dtos/protocol/events/SpaceJoined.d.ts +0 -6
- package/build/types/dtos/protocol/events/SpaceLeft.d.ts +0 -5
- package/build/types/dtos/protocol/events/SpaceMemberJoined.d.ts +0 -6
- package/build/types/dtos/protocol/events/SpaceMemberLeft.d.ts +0 -5
- package/build/types/dtos/protocol/events/SpaceMemberUpdate.d.ts +0 -6
- package/build/types/dtos/protocol/events/SpaceMembers.d.ts +0 -6
- package/build/types/dtos/protocol/events/SpaceRooms.d.ts +0 -6
- package/build/types/dtos/protocol/events/TopicDeleted.d.ts +0 -5
- package/build/types/protocol.d.ts +0 -102
- package/src/Client.ts +0 -267
- package/src/ObservableInterface.ts +0 -39
- package/src/connections/ConnectionAssets.ts +0 -20
- package/src/connections/RestApiConnection.ts +0 -47
- package/src/connections/WebSocketConnection.ts +0 -103
- package/src/dtos/Dto.ts +0 -45
- package/src/dtos/Message.ts +0 -16
- package/src/dtos/Permission.ts +0 -12
- package/src/dtos/Role.ts +0 -12
- package/src/dtos/Room.ts +0 -17
- package/src/dtos/RoomMember.ts +0 -13
- package/src/dtos/RoomSummary.ts +0 -12
- package/src/dtos/Space.ts +0 -15
- package/src/dtos/SpaceMember.ts +0 -14
- package/src/dtos/Topic.ts +0 -12
- package/src/dtos/User.ts +0 -15
- package/src/dtos/UserState.ts +0 -16
- package/src/dtos/protocol/Envelope.ts +0 -12
- package/src/dtos/protocol/commands/AssignRole.ts +0 -12
- package/src/dtos/protocol/commands/CreateMessage.ts +0 -12
- package/src/dtos/protocol/commands/CreateRole.ts +0 -12
- package/src/dtos/protocol/commands/CreateRoom.ts +0 -12
- package/src/dtos/protocol/commands/CreateSpace.ts +0 -10
- package/src/dtos/protocol/commands/CreateTopic.ts +0 -12
- package/src/dtos/protocol/commands/DeassignRole.ts +0 -12
- package/src/dtos/protocol/commands/DeleteRole.ts +0 -11
- package/src/dtos/protocol/commands/DeleteRoom.ts +0 -10
- package/src/dtos/protocol/commands/DeleteSpace.ts +0 -10
- package/src/dtos/protocol/commands/DeleteTopic.ts +0 -10
- package/src/dtos/protocol/commands/GetComputedPermissions.ts +0 -13
- package/src/dtos/protocol/commands/GetRolePermissions.ts +0 -13
- package/src/dtos/protocol/commands/GetRoomMembers.ts +0 -10
- package/src/dtos/protocol/commands/GetSession.ts +0 -8
- package/src/dtos/protocol/commands/GetSpaceMembers.ts +0 -10
- package/src/dtos/protocol/commands/GetSpaceRooms.ts +0 -10
- package/src/dtos/protocol/commands/GetUserPermissions.ts +0 -13
- package/src/dtos/protocol/commands/JoinRoom.ts +0 -10
- package/src/dtos/protocol/commands/JoinSpace.ts +0 -10
- package/src/dtos/protocol/commands/LeaveRoom.ts +0 -10
- package/src/dtos/protocol/commands/LeaveSpace.ts +0 -10
- package/src/dtos/protocol/commands/SetRolePermissions.ts +0 -16
- package/src/dtos/protocol/commands/SetUserPermissions.ts +0 -16
- package/src/dtos/protocol/events/Bye.ts +0 -10
- package/src/dtos/protocol/events/Error.ts +0 -11
- package/src/dtos/protocol/events/NewMessage.ts +0 -13
- package/src/dtos/protocol/events/NewRole.ts +0 -14
- package/src/dtos/protocol/events/NewRoom.ts +0 -14
- package/src/dtos/protocol/events/NewTopic.ts +0 -14
- package/src/dtos/protocol/events/Ok.ts +0 -8
- package/src/dtos/protocol/events/Permissions.ts +0 -13
- package/src/dtos/protocol/events/RoleDeleted.ts +0 -11
- package/src/dtos/protocol/events/RoomDeleted.ts +0 -10
- package/src/dtos/protocol/events/RoomJoined.ts +0 -13
- package/src/dtos/protocol/events/RoomLeft.ts +0 -10
- package/src/dtos/protocol/events/RoomMemberJoined.ts +0 -13
- package/src/dtos/protocol/events/RoomMemberLeft.ts +0 -10
- package/src/dtos/protocol/events/RoomMembers.ts +0 -13
- package/src/dtos/protocol/events/Session.ts +0 -17
- package/src/dtos/protocol/events/SpaceDeleted.ts +0 -10
- package/src/dtos/protocol/events/SpaceJoined.ts +0 -13
- package/src/dtos/protocol/events/SpaceLeft.ts +0 -10
- package/src/dtos/protocol/events/SpaceMemberJoined.ts +0 -13
- package/src/dtos/protocol/events/SpaceMemberLeft.ts +0 -10
- package/src/dtos/protocol/events/SpaceMemberUpdate.ts +0 -13
- package/src/dtos/protocol/events/SpaceMembers.ts +0 -13
- package/src/dtos/protocol/events/SpaceRooms.ts +0 -13
- package/src/dtos/protocol/events/TopicDeleted.ts +0 -10
- package/src/protocol.ts +0 -113
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Dto, DtoData } from "../../Dto";
|
|
2
|
-
import { Permission } from "../../Permission";
|
|
3
|
-
export declare class SetRolePermissions extends Dto {
|
|
4
|
-
readonly permissions: Permission[];
|
|
5
|
-
readonly layer: 'Space' | 'Room' | 'Topic';
|
|
6
|
-
readonly layerId: string;
|
|
7
|
-
readonly roleId: string;
|
|
8
|
-
constructor(data: DtoData<SetRolePermissions>);
|
|
9
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Permission } from "../../Permission";
|
|
2
|
-
import { Dto, DtoData } from "../../Dto";
|
|
3
|
-
export declare class SetUserPermissions extends Dto {
|
|
4
|
-
readonly permissions: Permission[];
|
|
5
|
-
readonly layer: 'Global' | 'Space' | 'Room' | 'Topic';
|
|
6
|
-
readonly layerId: string;
|
|
7
|
-
readonly userId: string;
|
|
8
|
-
constructor(data: DtoData<SetUserPermissions>);
|
|
9
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Dto, DtoData } from "../../Dto";
|
|
2
|
-
import { UserState } from "../../UserState";
|
|
3
|
-
import { User } from "../../User";
|
|
4
|
-
export declare class Session extends Dto {
|
|
5
|
-
readonly serverVersion: string;
|
|
6
|
-
readonly state: UserState;
|
|
7
|
-
readonly user: User;
|
|
8
|
-
constructor(data: DtoData<Session>);
|
|
9
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Bye } from "./dtos/protocol/events/Bye";
|
|
2
|
-
import { Ok } from "./dtos/protocol/events/Ok";
|
|
3
|
-
import { Error } from "./dtos/protocol/events/Error";
|
|
4
|
-
import { Session } from "./dtos/protocol/events/Session";
|
|
5
|
-
import { Permissions } from "./dtos/protocol/events/Permissions";
|
|
6
|
-
import { SpaceJoined } from "./dtos/protocol/events/SpaceJoined";
|
|
7
|
-
import { SpaceLeft } from "./dtos/protocol/events/SpaceLeft";
|
|
8
|
-
import { SpaceMemberJoined } from "./dtos/protocol/events/SpaceMemberJoined";
|
|
9
|
-
import { SpaceMemberLeft } from "./dtos/protocol/events/SpaceMemberLeft";
|
|
10
|
-
import { SpaceMemberUpdate } from "./dtos/protocol/events/SpaceMemberUpdate";
|
|
11
|
-
import { SpaceDeleted } from "./dtos/protocol/events/SpaceDeleted";
|
|
12
|
-
import { SpaceMembers } from "./dtos/protocol/events/SpaceMembers";
|
|
13
|
-
import { SpaceRooms } from "./dtos/protocol/events/SpaceRooms";
|
|
14
|
-
import { NewRole } from "./dtos/protocol/events/NewRole";
|
|
15
|
-
import { RoleDeleted } from "./dtos/protocol/events/RoleDeleted";
|
|
16
|
-
import { RoomJoined } from "./dtos/protocol/events/RoomJoined";
|
|
17
|
-
import { RoomLeft } from "./dtos/protocol/events/RoomLeft";
|
|
18
|
-
import { RoomMemberJoined } from "./dtos/protocol/events/RoomMemberJoined";
|
|
19
|
-
import { RoomMemberLeft } from "./dtos/protocol/events/RoomMemberLeft";
|
|
20
|
-
import { RoomMembers } from "./dtos/protocol/events/RoomMembers";
|
|
21
|
-
import { NewRoom } from "./dtos/protocol/events/NewRoom";
|
|
22
|
-
import { RoomDeleted } from "./dtos/protocol/events/RoomDeleted";
|
|
23
|
-
import { NewTopic } from "./dtos/protocol/events/NewTopic";
|
|
24
|
-
import { TopicDeleted } from "./dtos/protocol/events/TopicDeleted";
|
|
25
|
-
import { NewMessage } from "./dtos/protocol/events/NewMessage";
|
|
26
|
-
import { GetSession } from "./dtos/protocol/commands/GetSession";
|
|
27
|
-
import { SetUserPermissions } from "./dtos/protocol/commands/SetUserPermissions";
|
|
28
|
-
import { GetUserPermissions } from "./dtos/protocol/commands/GetUserPermissions";
|
|
29
|
-
import { GetComputedPermissions } from "./dtos/protocol/commands/GetComputedPermissions";
|
|
30
|
-
import { JoinSpace } from "./dtos/protocol/commands/JoinSpace";
|
|
31
|
-
import { LeaveSpace } from "./dtos/protocol/commands/LeaveSpace";
|
|
32
|
-
import { CreateSpace } from "./dtos/protocol/commands/CreateSpace";
|
|
33
|
-
import { DeleteSpace } from "./dtos/protocol/commands/DeleteSpace";
|
|
34
|
-
import { GetSpaceMembers } from "./dtos/protocol/commands/GetSpaceMembers";
|
|
35
|
-
import { GetSpaceRooms } from "./dtos/protocol/commands/GetSpaceRooms";
|
|
36
|
-
import { CreateRole } from "./dtos/protocol/commands/CreateRole";
|
|
37
|
-
import { DeleteRole } from "./dtos/protocol/commands/DeleteRole";
|
|
38
|
-
import { AssignRole } from "./dtos/protocol/commands/AssignRole";
|
|
39
|
-
import { DeassignRole } from "./dtos/protocol/commands/DeassignRole";
|
|
40
|
-
import { SetRolePermissions } from "./dtos/protocol/commands/SetRolePermissions";
|
|
41
|
-
import { GetRolePermissions } from "./dtos/protocol/commands/GetRolePermissions";
|
|
42
|
-
import { JoinRoom } from "./dtos/protocol/commands/JoinRoom";
|
|
43
|
-
import { LeaveRoom } from "./dtos/protocol/commands/LeaveRoom";
|
|
44
|
-
import { CreateRoom } from "./dtos/protocol/commands/CreateRoom";
|
|
45
|
-
import { DeleteRoom } from "./dtos/protocol/commands/DeleteRoom";
|
|
46
|
-
import { GetRoomMembers } from "./dtos/protocol/commands/GetRoomMembers";
|
|
47
|
-
import { CreateTopic } from "./dtos/protocol/commands/CreateTopic";
|
|
48
|
-
import { DeleteTopic } from "./dtos/protocol/commands/DeleteTopic";
|
|
49
|
-
import { CreateMessage } from "./dtos/protocol/commands/CreateMessage";
|
|
50
|
-
export declare const events: {
|
|
51
|
-
Bye: typeof Bye;
|
|
52
|
-
Ok: typeof Ok;
|
|
53
|
-
Error: typeof Error;
|
|
54
|
-
Session: typeof Session;
|
|
55
|
-
Permissions: typeof Permissions;
|
|
56
|
-
SpaceJoined: typeof SpaceJoined;
|
|
57
|
-
SpaceLeft: typeof SpaceLeft;
|
|
58
|
-
SpaceMemberJoined: typeof SpaceMemberJoined;
|
|
59
|
-
SpaceMemberLeft: typeof SpaceMemberLeft;
|
|
60
|
-
SpaceMemberUpdate: typeof SpaceMemberUpdate;
|
|
61
|
-
SpaceDeleted: typeof SpaceDeleted;
|
|
62
|
-
SpaceMembers: typeof SpaceMembers;
|
|
63
|
-
SpaceRooms: typeof SpaceRooms;
|
|
64
|
-
NewRole: typeof NewRole;
|
|
65
|
-
RoleDeleted: typeof RoleDeleted;
|
|
66
|
-
RoomJoined: typeof RoomJoined;
|
|
67
|
-
RoomLeft: typeof RoomLeft;
|
|
68
|
-
RoomMemberJoined: typeof RoomMemberJoined;
|
|
69
|
-
RoomMemberLeft: typeof RoomMemberLeft;
|
|
70
|
-
RoomMembers: typeof RoomMembers;
|
|
71
|
-
NewRoom: typeof NewRoom;
|
|
72
|
-
RoomDeleted: typeof RoomDeleted;
|
|
73
|
-
NewTopic: typeof NewTopic;
|
|
74
|
-
TopicDeleted: typeof TopicDeleted;
|
|
75
|
-
NewMessage: typeof NewMessage;
|
|
76
|
-
};
|
|
77
|
-
export declare const commands: {
|
|
78
|
-
GetSession: typeof GetSession;
|
|
79
|
-
SetUserPermissions: typeof SetUserPermissions;
|
|
80
|
-
GetUserPermissions: typeof GetUserPermissions;
|
|
81
|
-
GetComputedPermissions: typeof GetComputedPermissions;
|
|
82
|
-
JoinSpace: typeof JoinSpace;
|
|
83
|
-
LeaveSpace: typeof LeaveSpace;
|
|
84
|
-
CreateSpace: typeof CreateSpace;
|
|
85
|
-
DeleteSpace: typeof DeleteSpace;
|
|
86
|
-
GetSpaceMembers: typeof GetSpaceMembers;
|
|
87
|
-
GetSpaceRooms: typeof GetSpaceRooms;
|
|
88
|
-
CreateRole: typeof CreateRole;
|
|
89
|
-
DeleteRole: typeof DeleteRole;
|
|
90
|
-
AssignRole: typeof AssignRole;
|
|
91
|
-
DeassignRole: typeof DeassignRole;
|
|
92
|
-
SetRolePermissions: typeof SetRolePermissions;
|
|
93
|
-
GetRolePermissions: typeof GetRolePermissions;
|
|
94
|
-
JoinRoom: typeof JoinRoom;
|
|
95
|
-
LeaveRoom: typeof LeaveRoom;
|
|
96
|
-
CreateRoom: typeof CreateRoom;
|
|
97
|
-
DeleteRoom: typeof DeleteRoom;
|
|
98
|
-
GetRoomMembers: typeof GetRoomMembers;
|
|
99
|
-
CreateTopic: typeof CreateTopic;
|
|
100
|
-
DeleteTopic: typeof DeleteTopic;
|
|
101
|
-
CreateMessage: typeof CreateMessage;
|
|
102
|
-
};
|
package/src/Client.ts
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import {ChatConnectionEvent, ChatConnectionInterface} from "./connections/ConnectionAssets";
|
|
2
|
-
import {EventTarget} from "./ObservableInterface";
|
|
3
|
-
import {Envelope} from "./dtos/protocol/Envelope";
|
|
4
|
-
import {JoinRoom} from "./dtos/protocol/commands/JoinRoom";
|
|
5
|
-
import {Dto} from "./dtos/Dto";
|
|
6
|
-
import {RoomJoined} from "./dtos/protocol/events/RoomJoined";
|
|
7
|
-
import {LeaveRoom} from "./dtos/protocol/commands/LeaveRoom";
|
|
8
|
-
import {RoomLeft} from "./dtos/protocol/events/RoomLeft";
|
|
9
|
-
import {CreateRoom} from "./dtos/protocol/commands/CreateRoom";
|
|
10
|
-
import {Error as ErrorEvent} from "./dtos/protocol/events/Error";
|
|
11
|
-
import {SpaceRooms} from "./dtos/protocol/events/SpaceRooms";
|
|
12
|
-
import {DeleteRoom} from "./dtos/protocol/commands/DeleteRoom";
|
|
13
|
-
import {RoomDeleted} from "./dtos/protocol/events/RoomDeleted";
|
|
14
|
-
import {GetRoomMembers} from "./dtos/protocol/commands/GetRoomMembers";
|
|
15
|
-
import {RoomMembers} from "./dtos/protocol/events/RoomMembers";
|
|
16
|
-
import {JoinSpace} from "./dtos/protocol/commands/JoinSpace";
|
|
17
|
-
import {SpaceJoined} from "./dtos/protocol/events/SpaceJoined";
|
|
18
|
-
import {LeaveSpace} from "./dtos/protocol/commands/LeaveSpace";
|
|
19
|
-
import {SpaceLeft} from "./dtos/protocol/events/SpaceLeft";
|
|
20
|
-
import {CreateSpace} from "./dtos/protocol/commands/CreateSpace";
|
|
21
|
-
import {DeleteSpace} from "./dtos/protocol/commands/DeleteSpace";
|
|
22
|
-
import {SpaceDeleted} from "./dtos/protocol/events/SpaceDeleted";
|
|
23
|
-
import {GetSpaceMembers} from "./dtos/protocol/commands/GetSpaceMembers";
|
|
24
|
-
import {SpaceMembers} from "./dtos/protocol/events/SpaceMembers";
|
|
25
|
-
import {GetSpaceRooms} from "./dtos/protocol/commands/GetSpaceRooms";
|
|
26
|
-
import {GetSession} from "./dtos/protocol/commands/GetSession";
|
|
27
|
-
import {Session} from "./dtos/protocol/events/Session";
|
|
28
|
-
import {AssignRole} from "./dtos/protocol/commands/AssignRole";
|
|
29
|
-
import {SpaceMemberUpdate} from "./dtos/protocol/events/SpaceMemberUpdate";
|
|
30
|
-
import {DeassignRole} from "./dtos/protocol/commands/DeassignRole";
|
|
31
|
-
import {CreateRole} from "./dtos/protocol/commands/CreateRole";
|
|
32
|
-
import {NewRole} from "./dtos/protocol/events/NewRole";
|
|
33
|
-
import {DeleteRole} from "./dtos/protocol/commands/DeleteRole";
|
|
34
|
-
import {RoleDeleted} from "./dtos/protocol/events/RoleDeleted";
|
|
35
|
-
import {SetRolePermissions} from "./dtos/protocol/commands/SetRolePermissions";
|
|
36
|
-
import {Permissions} from "./dtos/protocol/events/Permissions";
|
|
37
|
-
import {SetUserPermissions} from "./dtos/protocol/commands/SetUserPermissions";
|
|
38
|
-
import {CreateTopic} from "./dtos/protocol/commands/CreateTopic";
|
|
39
|
-
import {NewTopic} from "./dtos/protocol/events/NewTopic";
|
|
40
|
-
import {DeleteTopic} from "./dtos/protocol/commands/DeleteTopic";
|
|
41
|
-
import {TopicDeleted} from "./dtos/protocol/events/TopicDeleted";
|
|
42
|
-
import {CreateMessage} from "./dtos/protocol/commands/CreateMessage";
|
|
43
|
-
import {NewMessage} from "./dtos/protocol/events/NewMessage";
|
|
44
|
-
import {GetComputedPermissions} from "./dtos/protocol/commands/GetComputedPermissions";
|
|
45
|
-
import {GetRolePermissions} from "./dtos/protocol/commands/GetRolePermissions";
|
|
46
|
-
import {GetUserPermissions} from "./dtos/protocol/commands/GetUserPermissions";
|
|
47
|
-
import {commands, events} from "./protocol";
|
|
48
|
-
import {WebSocketConnection} from "./connections/WebSocketConnection";
|
|
49
|
-
import {RestApiConnection} from "./connections/RestApiConnection";
|
|
50
|
-
|
|
51
|
-
type ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];
|
|
52
|
-
type CmdResult<EventDto> = EventDto | ErrorEvent;
|
|
53
|
-
type CommandsToEventsType<CommandT> =
|
|
54
|
-
// General commands
|
|
55
|
-
CommandT extends GetSession ? CmdResult<Session> :
|
|
56
|
-
CommandT extends SetUserPermissions ? CmdResult<Permissions> :
|
|
57
|
-
CommandT extends GetUserPermissions ? CmdResult<Permissions> :
|
|
58
|
-
CommandT extends GetComputedPermissions ? CmdResult<Permissions> :
|
|
59
|
-
// Space commands
|
|
60
|
-
CommandT extends JoinSpace ? CmdResult<SpaceJoined> :
|
|
61
|
-
CommandT extends LeaveSpace ? CmdResult<SpaceLeft> :
|
|
62
|
-
CommandT extends CreateSpace ? CmdResult<SpaceJoined> :
|
|
63
|
-
CommandT extends DeleteSpace ? CmdResult<SpaceDeleted> :
|
|
64
|
-
CommandT extends GetSpaceMembers ? CmdResult<SpaceMembers> :
|
|
65
|
-
CommandT extends GetSpaceRooms ? CmdResult<SpaceRooms> :
|
|
66
|
-
CommandT extends CreateRole ? CmdResult<NewRole> :
|
|
67
|
-
CommandT extends DeleteRole ? CmdResult<RoleDeleted> :
|
|
68
|
-
CommandT extends AssignRole ? CmdResult<SpaceMemberUpdate> :
|
|
69
|
-
CommandT extends DeassignRole ? CmdResult<SpaceMemberUpdate> :
|
|
70
|
-
CommandT extends SetRolePermissions ? CmdResult<Permissions> :
|
|
71
|
-
CommandT extends GetRolePermissions ? CmdResult<Permissions> :
|
|
72
|
-
// Room commands
|
|
73
|
-
CommandT extends JoinRoom ? CmdResult<RoomJoined> :
|
|
74
|
-
CommandT extends LeaveRoom ? CmdResult<RoomLeft> :
|
|
75
|
-
CommandT extends CreateRoom ? CmdResult<RoomJoined> :
|
|
76
|
-
CommandT extends DeleteRoom ? CmdResult<RoomDeleted> :
|
|
77
|
-
CommandT extends GetRoomMembers ? CmdResult<RoomMembers> :
|
|
78
|
-
// Topic commands
|
|
79
|
-
CommandT extends CreateTopic ? CmdResult<NewTopic> :
|
|
80
|
-
CommandT extends DeleteTopic ? CmdResult<TopicDeleted> :
|
|
81
|
-
CommandT extends CreateMessage ? CmdResult<NewMessage> :
|
|
82
|
-
any;
|
|
83
|
-
|
|
84
|
-
function guessCommandType(obj: any): string {
|
|
85
|
-
for (const type in commands) {
|
|
86
|
-
if (obj instanceof commands[type]) {
|
|
87
|
-
return type;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return Object.getPrototypeOf(obj).constructor.name;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export enum ClientEvent {
|
|
94
|
-
message = 'message',
|
|
95
|
-
ready = 'ready',
|
|
96
|
-
renewal = 'renewalStart',
|
|
97
|
-
renewalSuccess = 'renewalSuccess',
|
|
98
|
-
renewalError = 'renewalError',
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export interface TokenInterface {
|
|
102
|
-
token: string,
|
|
103
|
-
expiration: string
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export interface MyAccountInterface {
|
|
107
|
-
id: string;
|
|
108
|
-
nick: string;
|
|
109
|
-
avatar: string;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export class Client extends EventTarget {
|
|
113
|
-
public static readonly defaultClientName = 'polfan-server-js-client';
|
|
114
|
-
public static readonly defaultWebSocketUrl = 'ws://pserv.shado.p5.tiktalik.io:1600/ws';
|
|
115
|
-
public static readonly defaultWebApiUrl = 'http://pserv.shado.p5.tiktalik.io:1600/api';
|
|
116
|
-
public static readonly defaultRestApiUrl = 'https://polfan.pl/webservice/api';
|
|
117
|
-
public static readonly defaultAvatarUrlPrefix = 'https://polfan.pl/modules/users/avatars/';
|
|
118
|
-
|
|
119
|
-
public static async getToken(
|
|
120
|
-
login: string,
|
|
121
|
-
password: string,
|
|
122
|
-
clientName: string = Client.defaultClientName
|
|
123
|
-
): Promise<TokenInterface> {
|
|
124
|
-
const connection = new RestApiConnection({url: Client.defaultRestApiUrl});
|
|
125
|
-
const response = await connection.send('POST', 'auth/tokens', {
|
|
126
|
-
login, password, client_name: clientName
|
|
127
|
-
});
|
|
128
|
-
if (response.ok) {
|
|
129
|
-
return response.data;
|
|
130
|
-
}
|
|
131
|
-
throw new Error(`Cannot create user token: ${response.data.errors[0]}`);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
public static createByToken(token: string): Client {
|
|
135
|
-
return new Client(
|
|
136
|
-
new WebSocketConnection({token, url: Client.defaultWebSocketUrl}),
|
|
137
|
-
new RestApiConnection({token, url: Client.defaultRestApiUrl}),
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public static createByTemporaryNick(temporaryNick: string): Client {
|
|
142
|
-
return new Client(
|
|
143
|
-
new WebSocketConnection({temporaryNick, url: Client.defaultWebSocketUrl}),
|
|
144
|
-
new RestApiConnection({url: Client.defaultRestApiUrl}),
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
protected commandsCount = 0;
|
|
149
|
-
protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();
|
|
150
|
-
protected eventsMap: {[x: string]: typeof Dto};
|
|
151
|
-
protected reconnecting: boolean;
|
|
152
|
-
|
|
153
|
-
public constructor(
|
|
154
|
-
public readonly chatConnection: ChatConnectionInterface,
|
|
155
|
-
public readonly restConnection: RestApiConnection,
|
|
156
|
-
) {
|
|
157
|
-
super();
|
|
158
|
-
this.setCustomEventMap({}); // Set default event map.
|
|
159
|
-
this.chatConnection.on(ChatConnectionEvent.message, (payload: any) => this.onMessage(payload));
|
|
160
|
-
this.chatConnection.on(ChatConnectionEvent.destroy, (reconnect: boolean) => this.onDisconnect(reconnect));
|
|
161
|
-
this.chatConnection.on(ChatConnectionEvent.ready, () => {
|
|
162
|
-
if (this.reconnecting) {
|
|
163
|
-
this.reconnecting = false;
|
|
164
|
-
this.emit(ClientEvent.renewalSuccess);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
this.emit(ClientEvent.ready);
|
|
168
|
-
});
|
|
169
|
-
this.chatConnection.on(ChatConnectionEvent.error, () => {
|
|
170
|
-
if (this.reconnecting) {
|
|
171
|
-
this.reconnecting = false;
|
|
172
|
-
this.emit(ClientEvent.renewalError);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Send command to chat server.
|
|
179
|
-
* @param commandPayload Command payload object.
|
|
180
|
-
* @param commandType Command type; if not specified, it will be guessed from the command payload class name.
|
|
181
|
-
* @return Promise which resolves to the event returned by server (including `Error`)
|
|
182
|
-
* in response to command and rejects with connection error.
|
|
183
|
-
*/
|
|
184
|
-
public async sendCommand<CommandT extends Dto = any>(
|
|
185
|
-
commandPayload: CommandT,
|
|
186
|
-
commandType?: string
|
|
187
|
-
): Promise<CommandsToEventsType<CommandT>> {
|
|
188
|
-
const message = this.createEnvelope(commandType ?? guessCommandType(commandPayload), commandPayload);
|
|
189
|
-
this.chatConnection.send(message.toRaw());
|
|
190
|
-
return new Promise(
|
|
191
|
-
(...args) => this.awaitingResponse.set(message.ref as string, args)
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Set custom DTO classes for events.
|
|
197
|
-
*/
|
|
198
|
-
public setCustomEventMap(customMap: {[x: string]: typeof Dto}): this {
|
|
199
|
-
this.eventsMap = {...events, ...customMap};
|
|
200
|
-
return this;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
public init(): this {
|
|
204
|
-
this.chatConnection.init();
|
|
205
|
-
return this;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
public destroy(): this {
|
|
209
|
-
this.chatConnection.destroy();
|
|
210
|
-
return this;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
public async getMe(): Promise<MyAccountInterface> {
|
|
214
|
-
const response = await this.restConnection.send('GET', 'auth/me');
|
|
215
|
-
if (response.ok) {
|
|
216
|
-
response.data.id = response.data.id.toString();
|
|
217
|
-
return response.data;
|
|
218
|
-
}
|
|
219
|
-
throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
public async deleteToken(token: string): Promise<void> {
|
|
223
|
-
const response = await this.restConnection.send('DELETE', `auth/tokens/${token}`);
|
|
224
|
-
if (!response.ok) {
|
|
225
|
-
throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
private onMessage(message: any) {
|
|
230
|
-
const dto = this.createEvent(message);
|
|
231
|
-
|
|
232
|
-
const [resolve] = this.awaitingResponse.get(message.ref ?? '') ?? [];
|
|
233
|
-
if (resolve) {
|
|
234
|
-
resolve(dto ?? message.data);
|
|
235
|
-
this.awaitingResponse.delete(message.ref as string);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
this.emit(ClientEvent.message, message);
|
|
239
|
-
this.emit(message.type ?? 'unknown', dto, message);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
private onDisconnect(reconnect: boolean): void {
|
|
243
|
-
this.awaitingResponse.forEach(([resolve, reject], key: string) => {
|
|
244
|
-
reject('Disconnected');
|
|
245
|
-
this.awaitingResponse.delete(key);
|
|
246
|
-
});
|
|
247
|
-
if (reconnect) {
|
|
248
|
-
this.reconnecting = true;
|
|
249
|
-
this.emit(ClientEvent.renewal);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
private createEnvelope(commandType: string, dto: Dto): Envelope {
|
|
254
|
-
return new Envelope({
|
|
255
|
-
type: commandType,
|
|
256
|
-
ref: (++this.commandsCount).toString(),
|
|
257
|
-
data: dto
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
private createEvent(message: Envelope): Dto | null {
|
|
262
|
-
if ((message.type ?? false) && this.eventsMap.hasOwnProperty(message.type)) {
|
|
263
|
-
return new (this.eventsMap[message.type] as any)(message.data);
|
|
264
|
-
}
|
|
265
|
-
return null;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export type EventHandler<T = any> = (...args: T[]) => void;
|
|
2
|
-
type HandlersMap = Map<string, EventHandler[]>;
|
|
3
|
-
|
|
4
|
-
export interface ObservableInterface {
|
|
5
|
-
on(eventName: string, handler: EventHandler): ObservableInterface;
|
|
6
|
-
once(eventName: string, handler: EventHandler): ObservableInterface;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export abstract class EventTarget implements ObservableInterface {
|
|
10
|
-
protected events: HandlersMap = new Map<string, EventHandler[]>();
|
|
11
|
-
protected onceEvents: HandlersMap = new Map<string, EventHandler[]>();
|
|
12
|
-
|
|
13
|
-
public on(eventName: string, handler: EventHandler): EventTarget {
|
|
14
|
-
this.addHandler(this.events, eventName, handler);
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public once(eventName: string, handler: EventHandler): EventTarget {
|
|
19
|
-
this.addHandler(this.onceEvents, eventName, handler);
|
|
20
|
-
return this;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public emit(eventName: string, ...args: any): EventTarget {
|
|
24
|
-
this.callHandlers(this.events, eventName, args);
|
|
25
|
-
this.callHandlers(this.onceEvents, eventName, args);
|
|
26
|
-
this.onceEvents.delete(eventName);
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
private addHandler(map: HandlersMap, eventName: string, handler: EventHandler): void {
|
|
31
|
-
const handlers = map.get(eventName) ?? [];
|
|
32
|
-
handlers.push(handler);
|
|
33
|
-
map.set(eventName, handlers);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
private callHandlers(map: HandlersMap, eventName: string, args: any[]): void {
|
|
37
|
-
map.get(eventName)?.forEach(callback => callback(...args));
|
|
38
|
-
}
|
|
39
|
-
}
|