polfan-server-js-client 0.2.3 → 0.2.6

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.
Files changed (86) hide show
  1. package/.idea/copilot.data.migration.agent.xml +6 -0
  2. package/.idea/copilot.data.migration.ask.xml +6 -0
  3. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  4. package/.idea/copilot.data.migration.edit.xml +6 -0
  5. package/.idea/workspace.xml +372 -153
  6. package/babel.config.js +4 -5
  7. package/build/index.cjs.js +4538 -1816
  8. package/build/index.cjs.js.map +1 -1
  9. package/build/index.umd.js +1 -1
  10. package/build/index.umd.js.map +1 -1
  11. package/build/types/AbstractChatClient.d.ts +12 -2
  12. package/build/types/FilesClient.d.ts +7 -6
  13. package/build/types/IndexedObjectCollection.d.ts +4 -3
  14. package/build/types/Permissions.d.ts +4 -0
  15. package/build/types/WebSocketChatClient.d.ts +2 -0
  16. package/build/types/state-tracker/ChatStateTracker.d.ts +5 -0
  17. package/build/types/state-tracker/RelationshipsManager.d.ts +15 -0
  18. package/build/types/state-tracker/RoomMessagesHistory.d.ts +2 -0
  19. package/build/types/state-tracker/SpacesManager.d.ts +1 -0
  20. package/build/types/state-tracker/TopicHistoryWindow.d.ts +23 -5
  21. package/build/types/state-tracker/UsersManager.d.ts +3 -1
  22. package/build/types/types/src/index.d.ts +12 -3
  23. package/build/types/types/src/schemes/Emoticon.d.ts +1 -0
  24. package/build/types/types/src/schemes/Message.d.ts +1 -1
  25. package/build/types/types/src/schemes/Room.d.ts +2 -0
  26. package/build/types/types/src/schemes/RoomHistory.d.ts +5 -0
  27. package/build/types/types/src/schemes/RoomSummary.d.ts +1 -0
  28. package/build/types/types/src/schemes/SpaceSummary.d.ts +1 -0
  29. package/build/types/types/src/schemes/User.d.ts +2 -2
  30. package/build/types/types/src/schemes/UserRelationship.d.ts +6 -0
  31. package/build/types/types/src/schemes/commands/CreateMessage.d.ts +2 -0
  32. package/build/types/types/src/schemes/commands/CreateRelationship.d.ts +5 -0
  33. package/build/types/types/src/schemes/commands/CreateTopic.d.ts +5 -2
  34. package/build/types/types/src/schemes/commands/DeleteRelationship.d.ts +5 -0
  35. package/build/types/types/src/schemes/commands/GetRelationships.d.ts +2 -0
  36. package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +2 -0
  37. package/build/types/types/src/schemes/commands/UpdateRoomMember.d.ts +7 -0
  38. package/build/types/types/src/schemes/commands/UpdateSpaceMember.d.ts +5 -0
  39. package/build/types/types/src/schemes/events/NewRelationship.d.ts +4 -0
  40. package/build/types/types/src/schemes/events/RelationshipDeleted.d.ts +4 -0
  41. package/build/types/types/src/schemes/events/Relationships.d.ts +4 -0
  42. package/build/types/types/src/schemes/events/RoomSummaryUpdated.d.ts +7 -0
  43. package/build/types/types/src/schemes/events/Session.d.ts +1 -0
  44. package/package.json +15 -28
  45. package/src/AbstractChatClient.ts +28 -4
  46. package/src/FilesClient.ts +26 -13
  47. package/src/IndexedObjectCollection.ts +26 -10
  48. package/src/Permissions.ts +1 -0
  49. package/src/WebSocketChatClient.ts +19 -11
  50. package/src/state-tracker/ChatStateTracker.ts +22 -6
  51. package/src/state-tracker/EmoticonsManager.ts +6 -4
  52. package/src/state-tracker/MessagesManager.ts +3 -3
  53. package/src/state-tracker/RelationshipsManager.ts +68 -0
  54. package/src/state-tracker/RoomMessagesHistory.ts +20 -3
  55. package/src/state-tracker/RoomsManager.ts +30 -7
  56. package/src/state-tracker/SpacesManager.ts +28 -1
  57. package/src/state-tracker/TopicHistoryWindow.ts +94 -23
  58. package/src/state-tracker/UsersManager.ts +16 -6
  59. package/src/types/src/index.ts +26 -5
  60. package/src/types/src/schemes/Emoticon.ts +1 -0
  61. package/src/types/src/schemes/Message.ts +1 -1
  62. package/src/types/src/schemes/Room.ts +2 -0
  63. package/src/types/src/schemes/RoomHistory.ts +6 -0
  64. package/src/types/src/schemes/RoomSummary.ts +1 -0
  65. package/src/types/src/schemes/SpaceSummary.ts +1 -0
  66. package/src/types/src/schemes/User.ts +2 -2
  67. package/src/types/src/schemes/UserRelationship.ts +8 -0
  68. package/src/types/src/schemes/commands/CreateMessage.ts +2 -0
  69. package/src/types/src/schemes/commands/CreateRelationship.ts +6 -0
  70. package/src/types/src/schemes/commands/CreateTopic.ts +6 -2
  71. package/src/types/src/schemes/commands/DeleteRelationship.ts +6 -0
  72. package/src/types/src/schemes/commands/GetRelationships.ts +3 -0
  73. package/src/types/src/schemes/commands/UpdateRoom.ts +2 -0
  74. package/src/types/src/schemes/commands/UpdateRoomMember.ts +7 -0
  75. package/src/types/src/schemes/commands/UpdateSpaceMember.ts +5 -0
  76. package/src/types/src/schemes/events/NewRelationship.ts +5 -0
  77. package/src/types/src/schemes/events/RelationshipDeleted.ts +5 -0
  78. package/src/types/src/schemes/events/Relationships.ts +5 -0
  79. package/src/types/src/schemes/events/RoomSummaryUpdated.ts +8 -0
  80. package/src/types/src/schemes/events/Session.ts +1 -0
  81. package/tests/history-window.test.ts +6 -1
  82. package/webpack.config.browser.js +2 -24
  83. package/webpack.config.node.js +2 -14
  84. package/.eslintignore +0 -0
  85. package/.eslintrc.json +0 -0
  86. 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, SetCustomNick } 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, GetRoomSummary, GetSpaceSummary, RoomSummaryEvent, SpaceSummaryEvent, UpdateSpaceMember, Relationships, RelationshipDeleted, NewRelationship, DeleteRelationship, CreateRelationship, RoomSummaryUpdated } 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,9 @@ export type EventsMap = {
34
36
  Emoticons: Emoticons;
35
37
  Bans: Bans;
36
38
  ClientData: ClientData;
39
+ NewRelationship: NewRelationship;
40
+ RelationshipDeleted: RelationshipDeleted;
41
+ Relationships: Relationships;
37
42
  DiscoverableSpaces: DiscoverableSpaces;
38
43
  SpaceJoined: SpaceJoined;
39
44
  SpaceLeft: SpaceLeft;
@@ -58,6 +63,7 @@ export type EventsMap = {
58
63
  RoomDeleted: RoomDeleted;
59
64
  RoomUpdated: RoomUpdated;
60
65
  RoomSummaryEvent: RoomSummaryEvent;
66
+ RoomSummaryUpdated: RoomSummaryUpdated;
61
67
  NewTopic: NewTopic;
62
68
  TopicDeleted: TopicDeleted;
63
69
  NewMessage: NewMessage;
@@ -91,6 +97,9 @@ export type CommandsMap = {
91
97
  Kick: [Kick, EventsMap['Ok']];
92
98
  GetClientData: [GetClientData, EventsMap['ClientData']];
93
99
  SetClientData: [SetClientData, EventsMap['Ok']];
100
+ DeleteRelationship: [DeleteRelationship, EventsMap['RelationshipDeleted']];
101
+ CreateRelationship: [CreateRelationship, EventsMap['NewRelationship']];
102
+ GetRelationships: [GetRelationships, EventsMap['Relationships']];
94
103
  GetDiscoverableSpaces: [GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']];
95
104
  JoinSpace: [JoinSpace, EventsMap['SpaceJoined']];
96
105
  LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']];
@@ -105,7 +114,7 @@ export type CommandsMap = {
105
114
  AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']];
106
115
  DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']];
107
116
  GetSpaceSummary: [GetSpaceSummary, EventsMap['SpaceSummaryEvent']];
108
- SetCustomNick: [SetCustomNick, EventsMap['SpaceMemberUpdated']];
117
+ UpdateSpaceMember: [UpdateSpaceMember, EventsMap['SpaceMemberUpdated']];
109
118
  JoinRoom: [JoinRoom, EventsMap['RoomJoined']];
110
119
  LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']];
111
120
  CreateRoom: [CreateRoom, EventsMap['RoomJoined']];
@@ -113,6 +122,7 @@ export type CommandsMap = {
113
122
  UpdateRoom: [UpdateRoom, EventsMap['RoomUpdated']];
114
123
  GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']];
115
124
  GetRoomSummary: [GetRoomSummary, EventsMap['RoomSummaryEvent']];
125
+ UpdateRoomMember: [UpdateRoomMember, EventsMap['RoomMemberUpdated']];
116
126
  CreateTopic: [CreateTopic, EventsMap['NewTopic']];
117
127
  DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']];
118
128
  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
- original_url: string;
6
- original_name: string;
7
- mime_type: string;
5
+ name: string;
6
+ mime: string;
8
7
  size: number;
9
- image_dimensions: [number, number] | null;
8
+ width?: number;
9
+ height?: number;
10
10
  }
11
11
  export declare class FilesClient extends AbstractRestClient {
12
12
  protected defaultUrl: string;
13
- uploadFile(file: Parameters<typeof FormData.prototype.append>[1]): Promise<RestClientResponse<File>>;
14
- getFileMetadata(id: string): Promise<RestClientResponse<File>>;
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;
@@ -34,5 +34,7 @@ export declare class WebSocketChatClient extends AbstractChatClient implements O
34
34
  private onClose;
35
35
  private sendFromQueue;
36
36
  private triggerConnectionTimeout;
37
+ private isPendingReadyWsState;
38
+ private isReadyToSendWsState;
37
39
  }
38
40
  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
  }
@@ -45,6 +45,7 @@ export declare class SpacesManager {
45
45
  private handleSpaceMemberLeft;
46
46
  private handleSpaceMembers;
47
47
  private handleSpaceRooms;
48
+ private handleRoomSummaryUpdated;
48
49
  private handleSpaceMemberUpdated;
49
50
  private handleRoleUpdated;
50
51
  private handleSession;
@@ -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
- private currentState;
35
- private fetchingState;
36
- oldestId: string;
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,7 +67,16 @@ export declare class TopicHistoryWindow extends TraversableRemoteCollection<Mess
58
67
  * Reexported available window modes enum.
59
68
  */
60
69
  readonly WindowState: typeof WindowState;
61
- constructor(roomId: string, topicId: string, tracker: ChatStateTracker);
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
@@ -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,19 @@ 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 { SetCustomNick } from "./schemes/commands/SetCustomNick";
120
- export { Envelope, Message, MessageType, MessageAuthor, Role, Room, RoomFlag, RoomType, RoomMember, RoomSummary, RoomSummaryExtras, Space, SpaceFlag, 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, SpaceSummaryEvent, RoomSummaryEvent, 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, SetCustomNick, };
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
+ 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, 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, };
@@ -5,4 +5,5 @@ export interface Emoticon {
5
5
  name: string;
6
6
  fileId: string;
7
7
  user: User;
8
+ tag?: string;
8
9
  }
@@ -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
  }
@@ -0,0 +1,5 @@
1
+ export type RoomHistoryMode = 'Full' | 'Ephemeral' | 'MaxAge';
2
+ export interface RoomHistory {
3
+ mode: RoomHistoryMode;
4
+ maxAge?: number;
5
+ }
@@ -6,6 +6,7 @@ export interface RoomSummary {
6
6
  id: string;
7
7
  name: string;
8
8
  description: string;
9
+ memberCount: number;
9
10
  type: RoomType;
10
11
  extras?: RoomSummaryExtras;
11
12
  }
@@ -4,4 +4,5 @@ export interface SpaceSummary {
4
4
  description: string;
5
5
  icon?: string;
6
6
  banner?: string;
7
+ memberCount: number;
7
8
  }
@@ -1,8 +1,8 @@
1
- export type UserFlag = 'bot' | 'temp';
1
+ export type UserTags = 'bot' | 'temp';
2
2
  export interface User {
3
3
  id: string;
4
4
  nick: string;
5
5
  avatar: string;
6
- flags: UserFlag[];
6
+ tags: UserTags[];
7
7
  online: boolean;
8
8
  }
@@ -0,0 +1,6 @@
1
+ import { User } from "./User";
2
+ export type UserRelationshipType = 'Ignore';
3
+ export interface UserRelationship {
4
+ refUser: User;
5
+ type: UserRelationshipType;
6
+ }
@@ -3,4 +3,6 @@ export interface CreateMessage {
3
3
  location: ChatLocation;
4
4
  content: string;
5
5
  attachments?: string[];
6
+ customNick?: string;
7
+ customColor?: string;
6
8
  }
@@ -0,0 +1,5 @@
1
+ import { UserRelationshipType } from "../UserRelationship";
2
+ export interface CreateRelationship {
3
+ refUserId: string;
4
+ type: UserRelationshipType;
5
+ }
@@ -1,8 +1,11 @@
1
1
  import { ChatLocation } from "../ChatLocation";
2
- import { CreateMessage } from "./CreateMessage";
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?: Omit<CreateMessage, 'location'>;
10
+ initialMessage?: CreateTopicInitialMessage;
8
11
  }
@@ -0,0 +1,5 @@
1
+ import { UserRelationshipType } from "../UserRelationship";
2
+ export interface DeleteRelationship {
3
+ refUserId: string;
4
+ type: UserRelationshipType;
5
+ }
@@ -0,0 +1,2 @@
1
+ export interface GetRelationships {
2
+ }
@@ -1,8 +1,10 @@
1
1
  import { RoomStream } from "../RoomStream";
2
+ import { RoomHistory } from "../RoomHistory";
2
3
  export interface UpdateRoom {
3
4
  id: string;
4
5
  name?: string;
5
6
  description?: string;
6
7
  flags?: number;
7
8
  stream?: RoomStream | null;
9
+ history?: RoomHistory;
8
10
  }
@@ -0,0 +1,7 @@
1
+ export interface UpdateRoomMember {
2
+ roomId: string;
3
+ userId: string;
4
+ customNick?: string | null;
5
+ customColor?: string | null;
6
+ extras?: string | null;
7
+ }
@@ -0,0 +1,5 @@
1
+ export interface UpdateSpaceMember {
2
+ spaceId: string;
3
+ userId: string;
4
+ customNick?: string | null;
5
+ }
@@ -0,0 +1,4 @@
1
+ import { UserRelationship } from "../UserRelationship";
2
+ export interface NewRelationship {
3
+ relationship: UserRelationship;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { UserRelationship } from "../UserRelationship";
2
+ export interface RelationshipDeleted {
3
+ relationship: UserRelationship;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { UserRelationship } from "../UserRelationship";
2
+ export interface Relationships {
3
+ relationships: UserRelationship[];
4
+ }
@@ -0,0 +1,7 @@
1
+ import { RoomSummary } from "../RoomSummary";
2
+ export interface RoomSummaryUpdated {
3
+ /**
4
+ * Partial summary: without the `extras` field.
5
+ */
6
+ summary: RoomSummary;
7
+ }
@@ -2,6 +2,7 @@ import { UserState } from "../UserState";
2
2
  import { User } from "../User";
3
3
  export interface Session {
4
4
  serverVersion: string;
5
+ protoVersion: string;
5
6
  state: UserState;
6
7
  user: User;
7
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polfan-server-js-client",
3
- "version": "0.2.3",
3
+ "version": "0.2.6",
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.20.7",
28
- "@babel/core": "^7.20.12",
29
- "@babel/plugin-proposal-class-properties": "^7.16.0",
30
- "@babel/plugin-transform-typescript": "^7.20.2",
31
- "@babel/polyfill": "^7.12.1",
32
- "@babel/preset-env": "^7.20.2",
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
- "html-webpack-plugin": "^5.5.0",
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.4",
51
- "url-loader": "^4.1.1",
52
- "webpack": "^5.75.0",
53
- "webpack-cli": "^5.0.1",
54
- "webpack-dev-server": "4.11.1"
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
  }