polfan-server-js-client 0.2.3 → 0.2.7
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/copilot.data.migration.agent.xml +6 -0
- package/.idea/copilot.data.migration.ask.xml +6 -0
- package/.idea/copilot.data.migration.ask2agent.xml +6 -0
- package/.idea/copilot.data.migration.edit.xml +6 -0
- package/.idea/workspace.xml +401 -177
- package/README.md +22 -2
- package/babel.config.js +4 -5
- package/build/index.cjs.js +4595 -1816
- package/build/index.cjs.js.map +1 -1
- package/build/index.umd.js +1 -1
- package/build/index.umd.js.map +1 -1
- package/build/types/AbstractChatClient.d.ts +14 -2
- package/build/types/FilesClient.d.ts +7 -6
- package/build/types/IndexedObjectCollection.d.ts +4 -3
- package/build/types/Permissions.d.ts +4 -0
- package/build/types/WebSocketChatClient.d.ts +23 -0
- package/build/types/state-tracker/ChatStateTracker.d.ts +5 -0
- package/build/types/state-tracker/RelationshipsManager.d.ts +15 -0
- package/build/types/state-tracker/RoomMessagesHistory.d.ts +2 -0
- package/build/types/state-tracker/SpacesManager.d.ts +1 -0
- package/build/types/state-tracker/TopicHistoryWindow.d.ts +23 -6
- package/build/types/state-tracker/UsersManager.d.ts +3 -1
- package/build/types/types/src/index.d.ts +14 -3
- package/build/types/types/src/schemes/Emoticon.d.ts +1 -0
- package/build/types/types/src/schemes/Message.d.ts +1 -1
- package/build/types/types/src/schemes/Room.d.ts +2 -0
- package/build/types/types/src/schemes/RoomHistory.d.ts +5 -0
- package/build/types/types/src/schemes/RoomMember.d.ts +3 -0
- package/build/types/types/src/schemes/RoomSummary.d.ts +1 -0
- package/build/types/types/src/schemes/SpaceSummary.d.ts +1 -0
- package/build/types/types/src/schemes/User.d.ts +2 -2
- package/build/types/types/src/schemes/UserRelationship.d.ts +6 -0
- package/build/types/types/src/schemes/commands/CreateMessage.d.ts +2 -0
- package/build/types/types/src/schemes/commands/CreateRelationship.d.ts +5 -0
- package/build/types/types/src/schemes/commands/CreateTopic.d.ts +5 -2
- package/build/types/types/src/schemes/commands/DeleteRelationship.d.ts +5 -0
- package/build/types/types/src/schemes/commands/GetRelationships.d.ts +2 -0
- package/build/types/types/src/schemes/commands/Ping.d.ts +2 -0
- package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +2 -0
- package/build/types/types/src/schemes/commands/UpdateRoomMember.d.ts +7 -0
- package/build/types/types/src/schemes/commands/UpdateSpaceMember.d.ts +5 -0
- package/build/types/types/src/schemes/events/NewRelationship.d.ts +4 -0
- package/build/types/types/src/schemes/events/Pong.d.ts +2 -0
- package/build/types/types/src/schemes/events/RelationshipDeleted.d.ts +4 -0
- package/build/types/types/src/schemes/events/Relationships.d.ts +4 -0
- package/build/types/types/src/schemes/events/RoomSummaryUpdated.d.ts +7 -0
- package/build/types/types/src/schemes/events/Session.d.ts +1 -0
- package/package.json +15 -28
- package/src/AbstractChatClient.ts +30 -4
- package/src/FilesClient.ts +26 -13
- package/src/IndexedObjectCollection.ts +26 -10
- package/src/Permissions.ts +1 -0
- package/src/WebSocketChatClient.ts +92 -14
- package/src/state-tracker/ChatStateTracker.ts +22 -6
- package/src/state-tracker/EmoticonsManager.ts +6 -4
- package/src/state-tracker/MessagesManager.ts +3 -4
- package/src/state-tracker/RelationshipsManager.ts +68 -0
- package/src/state-tracker/RoomMessagesHistory.ts +20 -3
- package/src/state-tracker/RoomsManager.ts +38 -8
- package/src/state-tracker/SpacesManager.ts +28 -1
- package/src/state-tracker/TopicHistoryWindow.ts +92 -32
- package/src/state-tracker/UsersManager.ts +16 -6
- package/src/types/src/index.ts +30 -5
- package/src/types/src/schemes/Emoticon.ts +1 -0
- package/src/types/src/schemes/Message.ts +1 -1
- package/src/types/src/schemes/Room.ts +2 -0
- package/src/types/src/schemes/RoomHistory.ts +6 -0
- package/src/types/src/schemes/RoomMember.ts +3 -0
- package/src/types/src/schemes/RoomSummary.ts +1 -0
- package/src/types/src/schemes/SpaceSummary.ts +1 -0
- package/src/types/src/schemes/User.ts +2 -2
- package/src/types/src/schemes/UserRelationship.ts +8 -0
- package/src/types/src/schemes/commands/CreateMessage.ts +2 -0
- package/src/types/src/schemes/commands/CreateRelationship.ts +6 -0
- package/src/types/src/schemes/commands/CreateTopic.ts +6 -2
- package/src/types/src/schemes/commands/DeleteRelationship.ts +6 -0
- package/src/types/src/schemes/commands/GetRelationships.ts +3 -0
- package/src/types/src/schemes/commands/Ping.ts +3 -0
- package/src/types/src/schemes/commands/UpdateRoom.ts +2 -0
- package/src/types/src/schemes/commands/UpdateRoomMember.ts +7 -0
- package/src/types/src/schemes/commands/UpdateSpaceMember.ts +5 -0
- package/src/types/src/schemes/events/NewRelationship.ts +5 -0
- package/src/types/src/schemes/events/Pong.ts +3 -0
- package/src/types/src/schemes/events/RelationshipDeleted.ts +5 -0
- package/src/types/src/schemes/events/Relationships.ts +5 -0
- package/src/types/src/schemes/events/RoomSummaryUpdated.ts +8 -0
- package/src/types/src/schemes/events/Session.ts +1 -0
- package/tests/history-window.test.ts +6 -1
- package/webpack.config.browser.js +2 -24
- package/webpack.config.node.js +2 -14
- package/.eslintignore +0 -0
- package/.eslintrc.json +0 -0
- package/src/types/src/schemes/commands/SetCustomNick.ts +0 -5
|
@@ -1,5 +1,7 @@
|
|
|
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, GetRoomSummary, GetSpaceSummary, RoomSummaryEvent, SpaceSummaryEvent,
|
|
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, GetRoomSummary, GetSpaceSummary, RoomSummaryEvent, SpaceSummaryEvent, UpdateSpaceMember, Relationships, RelationshipDeleted, NewRelationship, DeleteRelationship, CreateRelationship, RoomSummaryUpdated, Pong, Ping } from "./types/src/index";
|
|
2
2
|
import { EventTarget } from "./EventTarget";
|
|
3
|
+
import { GetRelationships } from "./types/src/schemes/commands/GetRelationships";
|
|
4
|
+
import { UpdateRoomMember } from "./types/src/schemes/commands/UpdateRoomMember";
|
|
3
5
|
type ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];
|
|
4
6
|
export declare abstract class AbstractChatClient extends EventTarget {
|
|
5
7
|
protected awaitingResponse: Map<string, ArrayOfPromiseResolvers>;
|
|
@@ -34,6 +36,10 @@ export type EventsMap = {
|
|
|
34
36
|
Emoticons: Emoticons;
|
|
35
37
|
Bans: Bans;
|
|
36
38
|
ClientData: ClientData;
|
|
39
|
+
NewRelationship: NewRelationship;
|
|
40
|
+
RelationshipDeleted: RelationshipDeleted;
|
|
41
|
+
Relationships: Relationships;
|
|
42
|
+
Pong: Pong;
|
|
37
43
|
DiscoverableSpaces: DiscoverableSpaces;
|
|
38
44
|
SpaceJoined: SpaceJoined;
|
|
39
45
|
SpaceLeft: SpaceLeft;
|
|
@@ -58,6 +64,7 @@ export type EventsMap = {
|
|
|
58
64
|
RoomDeleted: RoomDeleted;
|
|
59
65
|
RoomUpdated: RoomUpdated;
|
|
60
66
|
RoomSummaryEvent: RoomSummaryEvent;
|
|
67
|
+
RoomSummaryUpdated: RoomSummaryUpdated;
|
|
61
68
|
NewTopic: NewTopic;
|
|
62
69
|
TopicDeleted: TopicDeleted;
|
|
63
70
|
NewMessage: NewMessage;
|
|
@@ -91,6 +98,10 @@ export type CommandsMap = {
|
|
|
91
98
|
Kick: [Kick, EventsMap['Ok']];
|
|
92
99
|
GetClientData: [GetClientData, EventsMap['ClientData']];
|
|
93
100
|
SetClientData: [SetClientData, EventsMap['Ok']];
|
|
101
|
+
DeleteRelationship: [DeleteRelationship, EventsMap['RelationshipDeleted']];
|
|
102
|
+
CreateRelationship: [CreateRelationship, EventsMap['NewRelationship']];
|
|
103
|
+
GetRelationships: [GetRelationships, EventsMap['Relationships']];
|
|
104
|
+
Ping: [Ping, EventsMap['Pong']];
|
|
94
105
|
GetDiscoverableSpaces: [GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']];
|
|
95
106
|
JoinSpace: [JoinSpace, EventsMap['SpaceJoined']];
|
|
96
107
|
LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']];
|
|
@@ -105,7 +116,7 @@ export type CommandsMap = {
|
|
|
105
116
|
AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']];
|
|
106
117
|
DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']];
|
|
107
118
|
GetSpaceSummary: [GetSpaceSummary, EventsMap['SpaceSummaryEvent']];
|
|
108
|
-
|
|
119
|
+
UpdateSpaceMember: [UpdateSpaceMember, EventsMap['SpaceMemberUpdated']];
|
|
109
120
|
JoinRoom: [JoinRoom, EventsMap['RoomJoined']];
|
|
110
121
|
LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']];
|
|
111
122
|
CreateRoom: [CreateRoom, EventsMap['RoomJoined']];
|
|
@@ -113,6 +124,7 @@ export type CommandsMap = {
|
|
|
113
124
|
UpdateRoom: [UpdateRoom, EventsMap['RoomUpdated']];
|
|
114
125
|
GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']];
|
|
115
126
|
GetRoomSummary: [GetRoomSummary, EventsMap['RoomSummaryEvent']];
|
|
127
|
+
UpdateRoomMember: [UpdateRoomMember, EventsMap['RoomMemberUpdated']];
|
|
116
128
|
CreateTopic: [CreateTopic, EventsMap['NewTopic']];
|
|
117
129
|
DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']];
|
|
118
130
|
CreateMessage: [CreateMessage, EventsMap['NewMessage']];
|
|
@@ -2,14 +2,15 @@ import { AbstractRestClient, RestClientResponse } from "./AbstractRestClient";
|
|
|
2
2
|
export interface File {
|
|
3
3
|
id: string;
|
|
4
4
|
url: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
mime_type: string;
|
|
5
|
+
name: string;
|
|
6
|
+
mime: string;
|
|
8
7
|
size: number;
|
|
9
|
-
|
|
8
|
+
width?: number;
|
|
9
|
+
height?: number;
|
|
10
10
|
}
|
|
11
11
|
export declare class FilesClient extends AbstractRestClient {
|
|
12
12
|
protected defaultUrl: string;
|
|
13
|
-
uploadFile(file:
|
|
14
|
-
|
|
13
|
+
uploadFile(file: globalThis.File | Blob): Promise<RestClientResponse<File>>;
|
|
14
|
+
getFileMeta(id: string): Promise<RestClientResponse<File>>;
|
|
15
|
+
getFileMetaBulk(ids: string[]): Promise<RestClientResponse<File[]>>;
|
|
15
16
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { EventTarget, ObservableInterface } from "./EventTarget";
|
|
2
2
|
export declare class IndexedCollection<KeyT, ValueT> {
|
|
3
3
|
protected _items: Map<KeyT, ValueT>;
|
|
4
|
-
protected _mutationCounter: number;
|
|
5
4
|
constructor(items?: [key: KeyT, value: ValueT][]);
|
|
6
|
-
get mutationCounter(): number;
|
|
7
5
|
get items(): Map<KeyT, ValueT>;
|
|
8
6
|
get length(): number;
|
|
9
7
|
set(...items: [KeyT, ValueT][]): void;
|
|
@@ -12,6 +10,7 @@ export declare class IndexedCollection<KeyT, ValueT> {
|
|
|
12
10
|
delete(...ids: KeyT[]): void;
|
|
13
11
|
deleteAll(): void;
|
|
14
12
|
findBy(field: keyof ValueT, valueToFind: any, limit?: number): IndexedCollection<KeyT, ValueT>;
|
|
13
|
+
createMirror(): IndexedCollection<KeyT, ValueT>;
|
|
15
14
|
}
|
|
16
15
|
export declare class IndexedObjectCollection<T> {
|
|
17
16
|
readonly id: keyof T | ((item: T) => any);
|
|
@@ -19,7 +18,6 @@ export declare class IndexedObjectCollection<T> {
|
|
|
19
18
|
constructor(id: keyof T | ((item: T) => any), items?: T[]);
|
|
20
19
|
get items(): T[];
|
|
21
20
|
get length(): number;
|
|
22
|
-
get mutationCounter(): number;
|
|
23
21
|
set(...items: T[]): void;
|
|
24
22
|
get(id: any): T | undefined;
|
|
25
23
|
getAt(index: number): T | undefined;
|
|
@@ -27,6 +25,7 @@ export declare class IndexedObjectCollection<T> {
|
|
|
27
25
|
delete(...ids: any[]): void;
|
|
28
26
|
deleteAll(): void;
|
|
29
27
|
findBy(field: keyof T, valueToFind: any, limit?: number): IndexedObjectCollection<T>;
|
|
28
|
+
createMirror(): IndexedObjectCollection<T>;
|
|
30
29
|
protected getId(item: T): any;
|
|
31
30
|
}
|
|
32
31
|
interface ObservableCollectionEvent<KeyT> {
|
|
@@ -39,6 +38,7 @@ export declare class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCo
|
|
|
39
38
|
set(...items: [KeyT, ValueT][]): void;
|
|
40
39
|
delete(...ids: KeyT[]): void;
|
|
41
40
|
deleteAll(): void;
|
|
41
|
+
createMirror(): ObservableIndexedCollection<KeyT, ValueT>;
|
|
42
42
|
on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this;
|
|
43
43
|
once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this;
|
|
44
44
|
off(eventName: string, handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this;
|
|
@@ -50,6 +50,7 @@ export declare class ObservableIndexedObjectCollection<T> extends IndexedObjectC
|
|
|
50
50
|
set(...items: T[]): void;
|
|
51
51
|
delete(...ids: string[]): void;
|
|
52
52
|
deleteAll(): void;
|
|
53
|
+
createMirror(): IndexedObjectCollection<T>;
|
|
53
54
|
on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this;
|
|
54
55
|
once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this;
|
|
55
56
|
off(eventName: string, handler: (ev?: ObservableCollectionEvent<string>) => void): this;
|
|
@@ -82,6 +82,10 @@ export declare class Permissions {
|
|
|
82
82
|
value: number;
|
|
83
83
|
maxLayer: Layer;
|
|
84
84
|
};
|
|
85
|
+
ChangeOwnColor: {
|
|
86
|
+
value: number;
|
|
87
|
+
maxLayer: Layer;
|
|
88
|
+
};
|
|
85
89
|
};
|
|
86
90
|
static getNames(): (keyof typeof this.list)[];
|
|
87
91
|
static getByName(name: keyof typeof this.list): PermissionDefinition | undefined;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { ObservableInterface } from "./EventTarget";
|
|
2
3
|
import { AbstractChatClient, CommandResult, CommandsMap } from "./AbstractChatClient";
|
|
3
4
|
import { ChatStateTracker } from "./state-tracker/ChatStateTracker";
|
|
@@ -9,6 +10,20 @@ export interface WebSocketClientOptions {
|
|
|
9
10
|
awaitQueueSendDelayMs?: number;
|
|
10
11
|
stateTracking?: boolean;
|
|
11
12
|
queryParams?: Record<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Ping/pong configuration, enabled by default.
|
|
15
|
+
*/
|
|
16
|
+
ping?: {
|
|
17
|
+
enabled?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Time without activity after which a ping will be sent. Default is 10 seconds.
|
|
20
|
+
*/
|
|
21
|
+
noActivityTimeoutMs?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Time to wait for a pong response before considering the connection dead. Default is 2 seconds.
|
|
24
|
+
*/
|
|
25
|
+
pongBackTimeoutMs?: number;
|
|
26
|
+
};
|
|
12
27
|
}
|
|
13
28
|
declare enum WebSocketChatClientEvent {
|
|
14
29
|
connect = "connect",
|
|
@@ -25,14 +40,22 @@ export declare class WebSocketChatClient extends AbstractChatClient implements O
|
|
|
25
40
|
protected connectingTimeoutId: any;
|
|
26
41
|
protected authenticated: boolean;
|
|
27
42
|
protected authenticatedResolvers: [() => void, (error: Error) => void];
|
|
43
|
+
protected pingIntervalId?: NodeJS.Timeout;
|
|
44
|
+
protected lastReceivedMessageAt?: number;
|
|
45
|
+
protected pingInFlight: boolean;
|
|
28
46
|
constructor(options: WebSocketClientOptions);
|
|
29
47
|
connect(): Promise<void>;
|
|
30
48
|
disconnect(): void;
|
|
31
49
|
send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;
|
|
50
|
+
get isReady(): boolean;
|
|
32
51
|
private sendEnvelope;
|
|
33
52
|
private onMessage;
|
|
34
53
|
private onClose;
|
|
35
54
|
private sendFromQueue;
|
|
36
55
|
private triggerConnectionTimeout;
|
|
56
|
+
private isConnectingWsState;
|
|
57
|
+
private isOpenWsState;
|
|
58
|
+
private startConnectionMonitor;
|
|
59
|
+
private stopConnectionMonitor;
|
|
37
60
|
}
|
|
38
61
|
export {};
|
|
@@ -5,6 +5,7 @@ import { SpacesManager } from "./SpacesManager";
|
|
|
5
5
|
import { PermissionsManager } from "./PermissionsManager";
|
|
6
6
|
import { EmoticonsManager } from "./EmoticonsManager";
|
|
7
7
|
import { UsersManager } from "./UsersManager";
|
|
8
|
+
import { RelationshipsManager } from "./RelationshipsManager";
|
|
8
9
|
export declare class ChatStateTracker {
|
|
9
10
|
readonly client: WebSocketChatClient;
|
|
10
11
|
/**
|
|
@@ -27,6 +28,10 @@ export declare class ChatStateTracker {
|
|
|
27
28
|
* Users related state.
|
|
28
29
|
*/
|
|
29
30
|
readonly users: UsersManager;
|
|
31
|
+
/**
|
|
32
|
+
* State of relationships with other users.
|
|
33
|
+
*/
|
|
34
|
+
readonly relationships: RelationshipsManager;
|
|
30
35
|
private _me;
|
|
31
36
|
private readonly deferredSession;
|
|
32
37
|
constructor(client: WebSocketChatClient);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ObservableIndexedObjectCollection } from "../IndexedObjectCollection";
|
|
2
|
+
import { UserRelationship, UserRelationshipType } from "../types/src";
|
|
3
|
+
import { ChatStateTracker } from "./ChatStateTracker";
|
|
4
|
+
export declare class RelationshipsManager {
|
|
5
|
+
private tracker;
|
|
6
|
+
private relationships;
|
|
7
|
+
private promises;
|
|
8
|
+
constructor(tracker: ChatStateTracker);
|
|
9
|
+
get(): Promise<ObservableIndexedObjectCollection<UserRelationship>>;
|
|
10
|
+
exists(refUserId: string, type: UserRelationshipType): Promise<boolean>;
|
|
11
|
+
private handleRelationships;
|
|
12
|
+
private handleNewRelationship;
|
|
13
|
+
private handleRelationshipDeleted;
|
|
14
|
+
private handleSession;
|
|
15
|
+
}
|
|
@@ -5,6 +5,7 @@ export declare class RoomMessagesHistory {
|
|
|
5
5
|
private room;
|
|
6
6
|
private tracker;
|
|
7
7
|
private historyWindows;
|
|
8
|
+
private traverseLock;
|
|
8
9
|
constructor(room: Room, tracker: ChatStateTracker);
|
|
9
10
|
/**
|
|
10
11
|
* Returns a history window object for the given topic ID, allowing you to view message history.
|
|
@@ -14,4 +15,5 @@ export declare class RoomMessagesHistory {
|
|
|
14
15
|
private handleNewTopic;
|
|
15
16
|
private handleTopicDeleted;
|
|
16
17
|
private createHistoryWindowForTopic;
|
|
18
|
+
private updateTraverseLock;
|
|
17
19
|
}
|
|
@@ -26,16 +26,25 @@ export declare abstract class TraversableRemoteCollection<T> extends ObservableI
|
|
|
26
26
|
* Current mode od collection window. To change mode, call one of available fetch methods.
|
|
27
27
|
*/
|
|
28
28
|
get state(): WindowState;
|
|
29
|
+
protected internalState: {
|
|
30
|
+
current: WindowState;
|
|
31
|
+
ongoing?: WindowState;
|
|
32
|
+
limit: number | null;
|
|
33
|
+
oldestId: string | null;
|
|
34
|
+
};
|
|
29
35
|
/**
|
|
30
36
|
* Maximum numer of items stored in window.
|
|
31
37
|
* Null for unlimited.
|
|
32
38
|
*/
|
|
33
|
-
limit: number | null;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
get limit(): number | null;
|
|
40
|
+
/**
|
|
41
|
+
* Maximum numer of items stored in window.
|
|
42
|
+
* Null for unlimited.
|
|
43
|
+
*/
|
|
44
|
+
set limit(value: number | null);
|
|
37
45
|
get hasLatest(): boolean;
|
|
38
46
|
get hasOldest(): boolean;
|
|
47
|
+
abstract createMirror(): TraversableRemoteCollection<T>;
|
|
39
48
|
resetToLatest(): Promise<void>;
|
|
40
49
|
fetchPrevious(): Promise<void>;
|
|
41
50
|
fetchNext(): Promise<void>;
|
|
@@ -58,14 +67,22 @@ export declare class TopicHistoryWindow extends TraversableRemoteCollection<Mess
|
|
|
58
67
|
* Reexported available window modes enum.
|
|
59
68
|
*/
|
|
60
69
|
readonly WindowState: typeof WindowState;
|
|
61
|
-
|
|
70
|
+
protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {
|
|
71
|
+
traverseLock: boolean;
|
|
72
|
+
};
|
|
73
|
+
constructor(roomId: string, topicId: string, tracker: ChatStateTracker, bindEvents?: boolean);
|
|
74
|
+
createMirror(): TopicHistoryWindow;
|
|
75
|
+
get isTraverseLocked(): boolean;
|
|
76
|
+
setTraverseLock(lock: boolean): Promise<void>;
|
|
77
|
+
resetToLatest(): Promise<void>;
|
|
78
|
+
fetchNext(): Promise<void>;
|
|
79
|
+
fetchPrevious(): Promise<void>;
|
|
62
80
|
/**
|
|
63
81
|
* For internal use.
|
|
64
82
|
* @internal
|
|
65
83
|
*/
|
|
66
84
|
_updateMessageReference(refTopic: Topic): void;
|
|
67
85
|
private handleNewMessage;
|
|
68
|
-
private handleSession;
|
|
69
86
|
protected fetchItemsAfter(): Promise<Message[] | null>;
|
|
70
87
|
protected fetchItemsBefore(): Promise<Message[] | null>;
|
|
71
88
|
protected fetchLatestItems(): Promise<Message[]>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ChatStateTracker } from "./ChatStateTracker";
|
|
2
2
|
import { ObservableIndexedObjectCollection } from "../IndexedObjectCollection";
|
|
3
3
|
import { User } from "../types/src";
|
|
4
|
+
import { EventTarget } from "../EventTarget";
|
|
4
5
|
export declare class UsersManager {
|
|
5
6
|
private tracker;
|
|
7
|
+
readonly onlineStatus: EventTarget<any>;
|
|
6
8
|
private readonly users;
|
|
7
9
|
constructor(tracker: ChatStateTracker);
|
|
8
10
|
/**
|
|
@@ -10,6 +12,6 @@ export declare class UsersManager {
|
|
|
10
12
|
*/
|
|
11
13
|
getAvailable(): Promise<ObservableIndexedObjectCollection<User>>;
|
|
12
14
|
private handleMembers;
|
|
13
|
-
private handleUsers;
|
|
14
15
|
private handleSession;
|
|
16
|
+
private handleUsers;
|
|
15
17
|
}
|
|
@@ -57,7 +57,7 @@ import { LeaveRoom } from "./schemes/commands/LeaveRoom";
|
|
|
57
57
|
import { CreateRoom } from "./schemes/commands/CreateRoom";
|
|
58
58
|
import { DeleteRoom } from "./schemes/commands/DeleteRoom";
|
|
59
59
|
import { GetRoomMembers } from "./schemes/commands/GetRoomMembers";
|
|
60
|
-
import { CreateTopic } from "./schemes/commands/CreateTopic";
|
|
60
|
+
import { CreateTopic, CreateTopicInitialMessage } from "./schemes/commands/CreateTopic";
|
|
61
61
|
import { DeleteTopic } from "./schemes/commands/DeleteTopic";
|
|
62
62
|
import { CreateMessage } from "./schemes/commands/CreateMessage";
|
|
63
63
|
import { UpdateRole } from "./schemes/commands/UpdateRole";
|
|
@@ -111,10 +111,21 @@ import { GetClientData } from "./schemes/commands/GetClientData";
|
|
|
111
111
|
import { SetClientData } from "./schemes/commands/SetClientData";
|
|
112
112
|
import { ClientData } from "./schemes/events/ClientData";
|
|
113
113
|
import { RoomStream, RoomStreamType } from "./schemes/RoomStream";
|
|
114
|
+
import { RoomHistory, RoomHistoryMode } from "./schemes/RoomHistory";
|
|
114
115
|
import { GetRoomSummary } from "./schemes/commands/GetRoomSummary";
|
|
115
116
|
import { GetSpaceSummary } from "./schemes/commands/GetSpaceSummary";
|
|
116
117
|
import { SpaceFlag } from "./schemes/Space";
|
|
117
118
|
import { SpaceSummary as SpaceSummaryEvent } from "./schemes/events/SpaceSummary";
|
|
118
119
|
import { RoomSummary as RoomSummaryEvent } from "./schemes/events/RoomSummary";
|
|
119
|
-
import {
|
|
120
|
-
|
|
120
|
+
import { UpdateSpaceMember } from "./schemes/commands/UpdateSpaceMember";
|
|
121
|
+
import { NewRelationship } from "./schemes/events/NewRelationship";
|
|
122
|
+
import { RelationshipDeleted } from "./schemes/events/RelationshipDeleted";
|
|
123
|
+
import { UserRelationship, UserRelationshipType } from "./schemes/UserRelationship";
|
|
124
|
+
import { DeleteRelationship } from "./schemes/commands/DeleteRelationship";
|
|
125
|
+
import { Relationships } from "./schemes/events/Relationships";
|
|
126
|
+
import { CreateRelationship } from "./schemes/commands/CreateRelationship";
|
|
127
|
+
import { RoomSummaryUpdated } from "./schemes/events/RoomSummaryUpdated";
|
|
128
|
+
import { UpdateRoomMember } from "./schemes/commands/UpdateRoomMember";
|
|
129
|
+
import { Ping } from "./schemes/commands/Ping";
|
|
130
|
+
import { Pong } from "./schemes/events/Pong";
|
|
131
|
+
export { Envelope, Message, MessageType, MessageAuthor, Role, Room, RoomFlag, RoomType, RoomStream, RoomStreamType, RoomHistory, RoomHistoryMode, RoomMember, RoomSummary, RoomSummaryExtras, Space, SpaceFlag, SpaceMember, Topic, FollowedTopic, User, UserState, PermissionOverwritesValue, ChatLocation, SpaceSummary, SpaceDiscoverable, Emoticon, PermissionOverwritesTarget, BanObject, LeaveReason, UserRelationship, UserRelationshipType, CreateTopicInitialMessage, 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, SpaceSummaryEvent, RoomSummaryEvent, NewRelationship, RelationshipDeleted, Relationships, RoomSummaryUpdated, Pong, 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, GetSpaceSummary, GetRoomSummary, UpdateSpaceMember, CreateRelationship, DeleteRelationship, UpdateRoomMember, Ping, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { User } from "./User";
|
|
2
2
|
import { ChatLocation } from "./ChatLocation";
|
|
3
|
-
export type MessageType = 'Text' | 'RoomJoin' | 'RoomLeave' | 'SpaceJoin' | 'SpaceLeave' | 'TopicChange' | 'CustomNickChange';
|
|
3
|
+
export type MessageType = 'Text' | 'RoomJoin' | 'RoomLeave' | 'SpaceJoin' | 'SpaceLeave' | 'TopicChange' | 'CustomNickChange' | 'Ephemeral';
|
|
4
4
|
export interface MessageAuthor {
|
|
5
5
|
user: User;
|
|
6
6
|
customNick?: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Topic } from "./Topic";
|
|
2
2
|
import { User } from "./User";
|
|
3
3
|
import { RoomStream } from "./RoomStream";
|
|
4
|
+
import { RoomHistory } from "./RoomHistory";
|
|
4
5
|
export type RoomType = 'Text' | 'ClassicText' | 'Pm';
|
|
5
6
|
export declare enum RoomFlag {
|
|
6
7
|
AllowSystemMessages = 1,
|
|
@@ -16,4 +17,5 @@ export interface Room {
|
|
|
16
17
|
recipients: User[] | null;
|
|
17
18
|
flags: number;
|
|
18
19
|
stream: RoomStream | null;
|
|
20
|
+
history: RoomHistory | null;
|
|
19
21
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ChatLocation } from "../ChatLocation";
|
|
2
|
-
|
|
2
|
+
export interface CreateTopicInitialMessage {
|
|
3
|
+
content?: string;
|
|
4
|
+
attachments?: string[];
|
|
5
|
+
}
|
|
3
6
|
export interface CreateTopic {
|
|
4
7
|
location: ChatLocation;
|
|
5
8
|
name: string;
|
|
6
9
|
refMessageId?: string;
|
|
7
|
-
initialMessage?:
|
|
10
|
+
initialMessage?: CreateTopicInitialMessage;
|
|
8
11
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "polfan-server-js-client",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "JavaScript client library for handling communication with Polfan chat server.",
|
|
5
5
|
"author": "Jarosław Żak",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"types": "build/types/index.d.ts",
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
|
+
"types": "./build/types/index.d.ts",
|
|
12
13
|
"require": "./build/index.cjs.js",
|
|
13
14
|
"browser": "./build/index.umd.js",
|
|
14
15
|
"default": "./build/index.cjs.js"
|
|
15
16
|
}
|
|
16
17
|
},
|
|
17
18
|
"scripts": {
|
|
18
|
-
"start": "webpack serve --config webpack.config.demo.js",
|
|
19
19
|
"build": "npm run build:node && npm run build:browser && tsc",
|
|
20
20
|
"build:node": "webpack --config webpack.config.node.js",
|
|
21
21
|
"build:browser": "webpack --config webpack.config.browser.js",
|
|
@@ -24,33 +24,20 @@
|
|
|
24
24
|
"trypublish": "npm publish || true"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@babel/cli": "^7.
|
|
28
|
-
"@babel/core": "^7.
|
|
29
|
-
"@babel/
|
|
30
|
-
"@babel/
|
|
31
|
-
"@
|
|
32
|
-
"
|
|
33
|
-
"@babel/preset-typescript": "^7.27.1",
|
|
34
|
-
"@types/jest": "^29.2.5",
|
|
35
|
-
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
36
|
-
"@typescript-eslint/parser": "^4.33.0",
|
|
37
|
-
"babel-eslint": "^10.1.0",
|
|
38
|
-
"babel-loader": "^9.1.2",
|
|
39
|
-
"babel-preset-minify": "^0.5.2",
|
|
40
|
-
"css-loader": "^6.7.3",
|
|
41
|
-
"css-minimizer-webpack-plugin": "^4.2.2",
|
|
42
|
-
"eslint": "^7.32.0",
|
|
27
|
+
"@babel/cli": "^7.28.3",
|
|
28
|
+
"@babel/core": "^7.28.5",
|
|
29
|
+
"@babel/preset-env": "^7.28.5",
|
|
30
|
+
"@babel/preset-typescript": "^7.28.5",
|
|
31
|
+
"@types/jest": "^29.5.14",
|
|
32
|
+
"babel-loader": "^9.2.1",
|
|
43
33
|
"file-loader": "^6.2.0",
|
|
44
|
-
"
|
|
45
|
-
"jest": "^29.3.1",
|
|
46
|
-
"mini-css-extract-plugin": "^2.7.2",
|
|
47
|
-
"style-loader": "^3.3.1",
|
|
48
|
-
"terser-webpack-plugin": "^5.3.5",
|
|
34
|
+
"jest": "^29.7.0",
|
|
49
35
|
"ts-node": "^10.9.2",
|
|
50
|
-
"typescript": "^4.9.
|
|
51
|
-
"
|
|
52
|
-
"webpack": "^5.
|
|
53
|
-
|
|
54
|
-
|
|
36
|
+
"typescript": "^4.9.5",
|
|
37
|
+
"webpack": "^5.103.0",
|
|
38
|
+
"webpack-cli": "^5.1.4"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"terser-webpack-plugin": "^5.3.14"
|
|
55
42
|
}
|
|
56
43
|
}
|