polfan-server-js-client 0.2.58 → 0.2.61

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 (34) hide show
  1. package/.idea/workspace.xml +56 -63
  2. package/babel.config.js +4 -5
  3. package/build/index.cjs.js +4510 -1986
  4. package/build/index.cjs.js.map +1 -1
  5. package/build/index.umd.js +1 -1
  6. package/build/index.umd.js.map +1 -1
  7. package/build/types/AbstractChatClient.d.ts +4 -2
  8. package/build/types/Permissions.d.ts +4 -0
  9. package/build/types/state-tracker/TopicHistoryWindow.d.ts +2 -2
  10. package/build/types/types/src/index.d.ts +3 -2
  11. package/build/types/types/src/schemes/RoomMember.d.ts +3 -0
  12. package/build/types/types/src/schemes/User.d.ts +2 -2
  13. package/build/types/types/src/schemes/commands/CreateMessage.d.ts +2 -0
  14. package/build/types/types/src/schemes/commands/UpdateRoomMember.d.ts +7 -0
  15. package/build/types/types/src/schemes/commands/UpdateSpaceMember.d.ts +5 -0
  16. package/package.json +13 -27
  17. package/src/AbstractChatClient.ts +4 -2
  18. package/src/Permissions.ts +1 -0
  19. package/src/state-tracker/ChatStateTracker.ts +17 -7
  20. package/src/state-tracker/RoomMessagesHistory.ts +1 -1
  21. package/src/state-tracker/RoomsManager.ts +8 -1
  22. package/src/state-tracker/TopicHistoryWindow.ts +2 -2
  23. package/src/types/src/index.ts +5 -3
  24. package/src/types/src/schemes/RoomMember.ts +3 -0
  25. package/src/types/src/schemes/User.ts +2 -2
  26. package/src/types/src/schemes/commands/CreateMessage.ts +2 -0
  27. package/src/types/src/schemes/commands/UpdateRoomMember.ts +7 -0
  28. package/src/types/src/schemes/commands/UpdateSpaceMember.ts +5 -0
  29. package/tests/history-window.test.ts +1 -1
  30. package/webpack.config.browser.js +2 -24
  31. package/webpack.config.node.js +2 -14
  32. package/.eslintignore +0 -0
  33. package/.eslintrc.json +0 -0
  34. package/src/types/src/schemes/commands/SetCustomNick.ts +0 -5
@@ -1,6 +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, Relationships, RelationshipDeleted, NewRelationship, DeleteRelationship, CreateRelationship, RoomSummaryUpdated } 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
3
  import { GetRelationships } from "./types/src/schemes/commands/GetRelationships";
4
+ import { UpdateRoomMember } from "./types/src/schemes/commands/UpdateRoomMember";
4
5
  type ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];
5
6
  export declare abstract class AbstractChatClient extends EventTarget {
6
7
  protected awaitingResponse: Map<string, ArrayOfPromiseResolvers>;
@@ -113,7 +114,7 @@ export type CommandsMap = {
113
114
  AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']];
114
115
  DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']];
115
116
  GetSpaceSummary: [GetSpaceSummary, EventsMap['SpaceSummaryEvent']];
116
- SetCustomNick: [SetCustomNick, EventsMap['SpaceMemberUpdated']];
117
+ UpdateSpaceMember: [UpdateSpaceMember, EventsMap['SpaceMemberUpdated']];
117
118
  JoinRoom: [JoinRoom, EventsMap['RoomJoined']];
118
119
  LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']];
119
120
  CreateRoom: [CreateRoom, EventsMap['RoomJoined']];
@@ -121,6 +122,7 @@ export type CommandsMap = {
121
122
  UpdateRoom: [UpdateRoom, EventsMap['RoomUpdated']];
122
123
  GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']];
123
124
  GetRoomSummary: [GetRoomSummary, EventsMap['RoomSummaryEvent']];
125
+ UpdateRoomMember: [UpdateRoomMember, EventsMap['RoomMemberUpdated']];
124
126
  CreateTopic: [CreateTopic, EventsMap['NewTopic']];
125
127
  DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']];
126
128
  CreateMessage: [CreateMessage, EventsMap['NewMessage']];
@@ -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,6 +1,6 @@
1
1
  import { Message, Topic } from "../types/src";
2
2
  import { ChatStateTracker } from "./ChatStateTracker";
3
- import { IndexedObjectCollection, ObservableIndexedObjectCollection } from "../IndexedObjectCollection";
3
+ import { ObservableIndexedObjectCollection } from "../IndexedObjectCollection";
4
4
  export declare enum WindowState {
5
5
  /**
6
6
  * The latest messages (those received live) are available in the history window, history has not been fetched.
@@ -44,7 +44,7 @@ export declare abstract class TraversableRemoteCollection<T> extends ObservableI
44
44
  set limit(value: number | null);
45
45
  get hasLatest(): boolean;
46
46
  get hasOldest(): boolean;
47
- abstract createMirror(): IndexedObjectCollection<T>;
47
+ abstract createMirror(): TraversableRemoteCollection<T>;
48
48
  resetToLatest(): Promise<void>;
49
49
  fetchPrevious(): Promise<void>;
50
50
  fetchNext(): Promise<void>;
@@ -117,7 +117,7 @@ import { GetSpaceSummary } from "./schemes/commands/GetSpaceSummary";
117
117
  import { SpaceFlag } from "./schemes/Space";
118
118
  import { SpaceSummary as SpaceSummaryEvent } from "./schemes/events/SpaceSummary";
119
119
  import { RoomSummary as RoomSummaryEvent } from "./schemes/events/RoomSummary";
120
- import { SetCustomNick } from "./schemes/commands/SetCustomNick";
120
+ import { UpdateSpaceMember } from "./schemes/commands/UpdateSpaceMember";
121
121
  import { NewRelationship } from "./schemes/events/NewRelationship";
122
122
  import { RelationshipDeleted } from "./schemes/events/RelationshipDeleted";
123
123
  import { UserRelationship, UserRelationshipType } from "./schemes/UserRelationship";
@@ -125,4 +125,5 @@ import { DeleteRelationship } from "./schemes/commands/DeleteRelationship";
125
125
  import { Relationships } from "./schemes/events/Relationships";
126
126
  import { CreateRelationship } from "./schemes/commands/CreateRelationship";
127
127
  import { RoomSummaryUpdated } from "./schemes/events/RoomSummaryUpdated";
128
- 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, SetCustomNick, CreateRelationship, DeleteRelationship };
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, };
@@ -4,4 +4,7 @@ export interface RoomMember {
4
4
  user: User | null;
5
5
  spaceMember: SpaceMember | null;
6
6
  roles: string[] | null;
7
+ customNick: string | null;
8
+ customColor: string | null;
9
+ extras: string;
7
10
  }
@@ -1,8 +1,8 @@
1
- export type UserFlag = 'bot' | 'temp';
1
+ export type UserTags = 'bot' | 'temp' | string;
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
  }
@@ -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,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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polfan-server-js-client",
3
- "version": "0.2.58",
3
+ "version": "0.2.61",
4
4
  "description": "JavaScript client library for handling communication with Polfan chat server.",
5
5
  "author": "Jarosław Żak",
6
6
  "license": "MIT",
@@ -16,7 +16,6 @@
16
16
  }
17
17
  },
18
18
  "scripts": {
19
- "start": "webpack serve --config webpack.config.demo.js",
20
19
  "build": "npm run build:node && npm run build:browser && tsc",
21
20
  "build:node": "webpack --config webpack.config.node.js",
22
21
  "build:browser": "webpack --config webpack.config.browser.js",
@@ -25,33 +24,20 @@
25
24
  "trypublish": "npm publish || true"
26
25
  },
27
26
  "devDependencies": {
28
- "@babel/cli": "^7.20.7",
29
- "@babel/core": "^7.20.12",
30
- "@babel/plugin-proposal-class-properties": "^7.16.0",
31
- "@babel/plugin-transform-typescript": "^7.20.2",
32
- "@babel/polyfill": "^7.12.1",
33
- "@babel/preset-env": "^7.20.2",
27
+ "@babel/cli": "^7.28.3",
28
+ "@babel/core": "^7.28.5",
29
+ "@babel/preset-env": "^7.28.5",
34
30
  "@babel/preset-typescript": "^7.28.5",
35
- "@types/jest": "^29.2.5",
36
- "@typescript-eslint/eslint-plugin": "^4.33.0",
37
- "@typescript-eslint/parser": "^4.33.0",
38
- "babel-eslint": "^10.1.0",
39
- "babel-loader": "^9.1.2",
40
- "babel-preset-minify": "^0.5.2",
41
- "css-loader": "^6.7.3",
42
- "css-minimizer-webpack-plugin": "^4.2.2",
43
- "eslint": "^7.32.0",
31
+ "@types/jest": "^29.5.14",
32
+ "babel-loader": "^9.2.1",
44
33
  "file-loader": "^6.2.0",
45
- "html-webpack-plugin": "^5.5.0",
46
- "jest": "^29.3.1",
47
- "mini-css-extract-plugin": "^2.7.2",
48
- "style-loader": "^3.3.1",
49
- "terser-webpack-plugin": "^5.3.5",
34
+ "jest": "^29.7.0",
50
35
  "ts-node": "^10.9.2",
51
- "typescript": "^4.9.4",
52
- "url-loader": "^4.1.1",
53
- "webpack": "^5.75.0",
54
- "webpack-cli": "^5.0.1",
55
- "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"
56
42
  }
57
43
  }
@@ -95,7 +95,7 @@ import {
95
95
  GetSpaceSummary,
96
96
  RoomSummaryEvent,
97
97
  SpaceSummaryEvent,
98
- SetCustomNick,
98
+ UpdateSpaceMember,
99
99
  Relationships,
100
100
  RelationshipDeleted,
101
101
  NewRelationship,
@@ -105,6 +105,7 @@ import {
105
105
  } from "./types/src/index";
106
106
  import {EventTarget} from "./EventTarget";
107
107
  import {GetRelationships} from "./types/src/schemes/commands/GetRelationships";
108
+ import {UpdateRoomMember} from "./types/src/schemes/commands/UpdateRoomMember";
108
109
 
109
110
  type ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];
110
111
 
@@ -264,7 +265,7 @@ export type CommandsMap = {
264
265
  AssignRole: [AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],
265
266
  DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']],
266
267
  GetSpaceSummary: [GetSpaceSummary, EventsMap['SpaceSummaryEvent']],
267
- SetCustomNick: [SetCustomNick, EventsMap['SpaceMemberUpdated']],
268
+ UpdateSpaceMember: [UpdateSpaceMember, EventsMap['SpaceMemberUpdated']],
268
269
  // Room commands
269
270
  JoinRoom: [JoinRoom, EventsMap['RoomJoined']],
270
271
  LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],
@@ -273,6 +274,7 @@ export type CommandsMap = {
273
274
  UpdateRoom: [UpdateRoom, EventsMap['RoomUpdated']],
274
275
  GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],
275
276
  GetRoomSummary: [GetRoomSummary, EventsMap['RoomSummaryEvent']],
277
+ UpdateRoomMember: [UpdateRoomMember, EventsMap['RoomMemberUpdated']],
276
278
  // Topic commands
277
279
  CreateTopic: [CreateTopic, EventsMap['NewTopic']],
278
280
  DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],
@@ -30,6 +30,7 @@ export class Permissions {
30
30
  ManageBan: {value: 1 << 15, maxLayer: Layer.Room},
31
31
  Kick: {value: 1 << 16, maxLayer: Layer.Room},
32
32
  ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},
33
+ ChangeOwnColor: {value: 1 << 18, maxLayer: Layer.Room},
33
34
  };
34
35
 
35
36
  public static getNames(): (keyof typeof this.list)[] {
@@ -9,41 +9,51 @@ import {UsersManager} from "./UsersManager";
9
9
  import {RelationshipsManager} from "./RelationshipsManager";
10
10
 
11
11
  export class ChatStateTracker {
12
+ public readonly client: WebSocketChatClient;
13
+
12
14
  /**
13
15
  * State of your permissions.
14
16
  */
15
- public readonly permissions = new PermissionsManager(this);
17
+ public readonly permissions: PermissionsManager;
16
18
 
17
19
  /**
18
20
  * State of the rooms you are in.
19
21
  */
20
- public readonly rooms: RoomsManager = new RoomsManager(this);
22
+ public readonly rooms: RoomsManager;
21
23
 
22
24
  /**
23
25
  * State of the spaces you are in.
24
26
  */
25
- public readonly spaces = new SpacesManager(this);
27
+ public readonly spaces: SpacesManager;
26
28
 
27
29
  /**
28
30
  * State of the emoticons (global and space-related).
29
31
  */
30
- public readonly emoticons = new EmoticonsManager(this);
32
+ public readonly emoticons: EmoticonsManager;
31
33
 
32
34
  /**
33
35
  * Users related state.
34
36
  */
35
- public readonly users = new UsersManager(this);
37
+ public readonly users: UsersManager;
36
38
 
37
39
  /**
38
40
  * State of relationships with other users.
39
41
  */
40
- public readonly relationships = new RelationshipsManager(this);
42
+ public readonly relationships: RelationshipsManager;
41
43
 
42
44
  private _me: User = null;
43
45
  private readonly deferredSession = new DeferredTask();
44
46
 
45
- public constructor(public readonly client: WebSocketChatClient) {
47
+ public constructor(client: WebSocketChatClient) {
48
+ this.client = client;
46
49
  this.client.on('Session', ev => this.handleSession(ev));
50
+
51
+ this.permissions = new PermissionsManager(this);
52
+ this.rooms = new RoomsManager(this);
53
+ this.spaces = new SpacesManager(this);
54
+ this.emoticons = new EmoticonsManager(this);
55
+ this.users = new UsersManager(this);
56
+ this.relationships = new RelationshipsManager(this);
47
57
  }
48
58
 
49
59
  public get me(): User | null {
@@ -74,7 +74,7 @@ export class RoomMessagesHistory {
74
74
 
75
75
  const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);
76
76
 
77
- historyWindow.setTraverseLock(this.traverseLock);
77
+ void historyWindow.setTraverseLock(this.traverseLock);
78
78
 
79
79
  this.historyWindows.set([topic.id, historyWindow]);
80
80
 
@@ -249,7 +249,14 @@ export class RoomsManager {
249
249
  // because GetMembers are not supported for PM rooms.
250
250
  this.handleRoomMembers({
251
251
  id: room.id,
252
- members: room.recipients.map(user => ({user, spaceMember: null, roles: null})),
252
+ members: room.recipients.map(user => ({
253
+ user,
254
+ spaceMember: null,
255
+ roles: null,
256
+ customColor: null,
257
+ customNick: null,
258
+ extras: '',
259
+ })),
253
260
  });
254
261
  this.membersPromises.register(Promise.resolve(), room.id);
255
262
  }
@@ -1,6 +1,6 @@
1
1
  import {Message, NewMessage, Session, Topic} from "../types/src";
2
2
  import {ChatStateTracker} from "./ChatStateTracker";
3
- import {IndexedObjectCollection, ObservableIndexedObjectCollection} from "../IndexedObjectCollection";
3
+ import {ObservableIndexedObjectCollection} from "../IndexedObjectCollection";
4
4
 
5
5
  export enum WindowState {
6
6
  /**
@@ -70,7 +70,7 @@ export abstract class TraversableRemoteCollection<T> extends ObservableIndexedOb
70
70
  return this.state === WindowState.OLDEST || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);
71
71
  }
72
72
 
73
- public abstract createMirror(): IndexedObjectCollection<T>;
73
+ public abstract createMirror(): TraversableRemoteCollection<T>;
74
74
 
75
75
  public async resetToLatest(): Promise<void> {
76
76
  if (this.internalState.ongoing || this.internalState.current === WindowState.LATEST) {
@@ -117,7 +117,7 @@ import {GetSpaceSummary} from "./schemes/commands/GetSpaceSummary";
117
117
  import {SpaceFlag} from "./schemes/Space";
118
118
  import {SpaceSummary as SpaceSummaryEvent} from "./schemes/events/SpaceSummary";
119
119
  import {RoomSummary as RoomSummaryEvent} from "./schemes/events/RoomSummary";
120
- import {SetCustomNick} from "./schemes/commands/SetCustomNick";
120
+ import {UpdateSpaceMember} from "./schemes/commands/UpdateSpaceMember";
121
121
  import {NewRelationship} from "./schemes/events/NewRelationship";
122
122
  import {RelationshipDeleted} from "./schemes/events/RelationshipDeleted";
123
123
  import {UserRelationship, UserRelationshipType} from "./schemes/UserRelationship";
@@ -125,6 +125,7 @@ import {DeleteRelationship} from "./schemes/commands/DeleteRelationship";
125
125
  import {Relationships} from "./schemes/events/Relationships";
126
126
  import {CreateRelationship} from "./schemes/commands/CreateRelationship";
127
127
  import {RoomSummaryUpdated} from "./schemes/events/RoomSummaryUpdated";
128
+ import {UpdateRoomMember} from "./schemes/commands/UpdateRoomMember";
128
129
 
129
130
  export {
130
131
  // objects
@@ -264,7 +265,8 @@ export {
264
265
  SetClientData,
265
266
  GetSpaceSummary,
266
267
  GetRoomSummary,
267
- SetCustomNick,
268
+ UpdateSpaceMember,
268
269
  CreateRelationship,
269
- DeleteRelationship
270
+ DeleteRelationship,
271
+ UpdateRoomMember,
270
272
  };
@@ -5,4 +5,7 @@ export interface RoomMember {
5
5
  user: User | null;
6
6
  spaceMember: SpaceMember | null;
7
7
  roles: string[] | null;
8
+ customNick: string | null;
9
+ customColor: string | null;
10
+ extras: string;
8
11
  }
@@ -1,9 +1,9 @@
1
- export type UserFlag = 'bot' | 'temp';
1
+ export type UserTags = 'bot' | 'temp' | string;
2
2
 
3
3
  export interface User {
4
4
  id: string;
5
5
  nick: string;
6
6
  avatar: string;
7
- flags: UserFlag[];
7
+ tags: UserTags[];
8
8
  online: boolean;
9
9
  }
@@ -4,4 +4,6 @@ export interface CreateMessage {
4
4
  location: ChatLocation;
5
5
  content: string;
6
6
  attachments?: string[];
7
+ customNick?: string;
8
+ customColor?: string;
7
9
  }
@@ -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
+ }
@@ -19,7 +19,7 @@ const messages: SimpleMessage[] = [
19
19
  ];
20
20
 
21
21
  class TestableHistoryWindow extends TraversableRemoteCollection<SimpleMessage> {
22
- public createMirror(): IndexedObjectCollection<SimpleMessage> {
22
+ public createMirror(): TraversableRemoteCollection<SimpleMessage> {
23
23
  throw new Error('Method not implemented.');
24
24
  }
25
25
 
@@ -1,6 +1,5 @@
1
1
  const path = require('path');
2
- const TerserPlugin = require('terser-webpack-plugin');
3
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
2
+ const TerserPlugin = require("terser-webpack-plugin");
4
3
 
5
4
  module.exports = {
6
5
  mode: "production",
@@ -27,32 +26,11 @@ module.exports = {
27
26
  test: /\.(m|j|t)s$/,
28
27
  exclude: /(node_modules|bower_components)/,
29
28
  use: {
30
- loader: 'babel-loader',
31
- options: {
32
- presets: [
33
- ['@babel/preset-env', { targets: { esmodules: true } }],
34
- '@babel/preset-typescript'
35
- ],
36
- plugins: [
37
-
38
- ]
39
- }
29
+ loader: 'babel-loader'
40
30
  }
41
31
  },
42
- {
43
- test: /\.(sa|sc|c)ss$/,
44
- use: [
45
- MiniCssExtractPlugin.loader,
46
- { loader: "css-loader", options: { sourceMap: true } },
47
- ],
48
- }
49
32
  ]
50
33
  },
51
- plugins: [
52
- new MiniCssExtractPlugin({
53
- filename: 'index.css',
54
- }),
55
- ],
56
34
  resolve: {
57
35
  extensions: ['.ts', '.js', '.json']
58
36
  }
@@ -24,24 +24,12 @@ module.exports = {
24
24
  test: /\.(m|j|t)s$/,
25
25
  exclude: /(node_modules|bower_components)/,
26
26
  use: {
27
- loader: 'babel-loader',
28
- options: {
29
- presets: [
30
- ['@babel/preset-env', { targets: { node: 'current' } }],
31
- '@babel/preset-typescript'
32
- ],
33
- plugins: [
34
-
35
- ]
36
- }
27
+ loader: 'babel-loader'
37
28
  }
38
29
  },
39
30
  ]
40
31
  },
41
32
  resolve: {
42
33
  extensions: ['.ts', '.js', '.json']
43
- },
44
- externals: [
45
-
46
- ]
34
+ }
47
35
  };
package/.eslintignore DELETED
File without changes
package/.eslintrc.json DELETED
File without changes
@@ -1,5 +0,0 @@
1
- export interface SetCustomNick {
2
- spaceId: string;
3
- userId: string;
4
- nick: string|null;
5
- }