polfan-server-js-client 0.1.99924 → 0.1.99926

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.
@@ -1,5 +1,5 @@
1
1
  import { ChatStateTracker } from "./ChatStateTracker";
2
- import { ChatLocation, PermissionOverwrites } from "../types/src";
2
+ import { ChatLocation, PermissionOverwrites, PermissionOverwritesTarget } from "../types/src";
3
3
  import { EventHandler, EventTarget } from "../EventTarget";
4
4
  import { Permissions } from "../Permissions";
5
5
  interface CheckPermissionsResult {
@@ -16,7 +16,7 @@ export declare class PermissionsManager extends EventTarget {
16
16
  private readonly overwrites;
17
17
  private readonly overwritesPromises;
18
18
  constructor(tracker: ChatStateTracker);
19
- getOverwrites(location: ChatLocation, target: PermissionOverwrites['target'], targetId: PermissionOverwrites['targetId']): Promise<PermissionOverwrites | undefined>;
19
+ getOverwrites(location: ChatLocation, target: PermissionOverwritesTarget): Promise<PermissionOverwrites | undefined>;
20
20
  on(eventName: 'change', handler: EventHandler<any>): this;
21
21
  check(permissionNames: (keyof typeof Permissions.list)[], location: ChatLocation): Promise<CheckPermissionsResult>;
22
22
  calculatePermissions(location: ChatLocation): Promise<number>;
@@ -99,4 +99,5 @@ import { CreateEmoticon } from "./schemes/commands/CreateEmoticon";
99
99
  import { DeleteEmoticon } from "./schemes/commands/DeleteEmoticon";
100
100
  import { NewEmoticon } from "./schemes/events/NewEmoticon";
101
101
  import { EmoticonDeleted } from "./schemes/events/EmoticonDeleted";
102
- export { Envelope, Message, MessageType, Role, Room, RoomFlag, RoomType, RoomMember, RoomSummary, Space, SpaceMember, Topic, FollowedTopic, User, UserState, PermissionOverwritesValue, ChatLocation, SpaceSummary, SpaceDiscoverable, Emoticon, 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, 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, };
102
+ import { PermissionOverwritesTarget } from "./schemes/PermissionOverwritesTarget";
103
+ export { Envelope, Message, MessageType, Role, Room, RoomFlag, RoomType, RoomMember, RoomSummary, Space, SpaceMember, Topic, FollowedTopic, User, UserState, PermissionOverwritesValue, ChatLocation, SpaceSummary, SpaceDiscoverable, Emoticon, PermissionOverwritesTarget, 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, 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, };
@@ -0,0 +1,5 @@
1
+ export interface PermissionOverwritesTarget {
2
+ type: 'User' | 'Role';
3
+ userId?: string;
4
+ roleId?: string;
5
+ }
@@ -1,6 +1,6 @@
1
1
  import { ChatLocation } from "../ChatLocation";
2
+ import { PermissionOverwritesTarget } from "../PermissionOverwritesTarget";
2
3
  export interface GetPermissionOverwrites {
3
4
  location: ChatLocation;
4
- target: 'User' | 'Role';
5
- targetId: string;
5
+ target: PermissionOverwritesTarget;
6
6
  }
@@ -1,8 +1,8 @@
1
1
  import { PermissionOverwritesValue } from "../PermissionOverwritesValue";
2
2
  import { ChatLocation } from "../ChatLocation";
3
+ import { PermissionOverwritesTarget } from "../PermissionOverwritesTarget";
3
4
  export interface SetPermissionOverwrites {
4
5
  location: ChatLocation;
5
- target: 'User' | 'Role';
6
- targetId: string;
6
+ target: PermissionOverwritesTarget;
7
7
  overwrites: PermissionOverwritesValue;
8
8
  }
@@ -1,8 +1,8 @@
1
1
  import { PermissionOverwritesValue } from "../PermissionOverwritesValue";
2
2
  import { ChatLocation } from "../ChatLocation";
3
+ import { PermissionOverwritesTarget } from "../PermissionOverwritesTarget";
3
4
  export interface PermissionOverwrites {
4
5
  location: ChatLocation;
5
- target: 'User' | 'Role';
6
- targetId: string;
6
+ target: PermissionOverwritesTarget;
7
7
  overwrites: PermissionOverwritesValue;
8
8
  }
@@ -1,8 +1,8 @@
1
1
  import { PermissionOverwritesValue } from "../PermissionOverwritesValue";
2
2
  import { ChatLocation } from "../ChatLocation";
3
+ import { PermissionOverwritesTarget } from "../PermissionOverwritesTarget";
3
4
  export interface PermissionOverwritesUpdated {
4
5
  location: ChatLocation;
5
- target: 'User' | 'Role';
6
- targetId: string;
6
+ target: PermissionOverwritesTarget;
7
7
  overwrites: PermissionOverwritesValue;
8
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polfan-server-js-client",
3
- "version": "0.1.99924",
3
+ "version": "0.1.99926",
4
4
  "description": "JavaScript client library for handling communication with Polfan chat server.",
5
5
  "author": "Jarosław Żak",
6
6
  "license": "MIT",
@@ -25,7 +25,7 @@ export class Permissions {
25
25
  ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},
26
26
  CreateSpaceRooms: {value: 1 << 11, maxLayer: Layer.Space},
27
27
  ManageSpaceRooms: {value: 1 << 12, maxLayer: Layer.Space},
28
- CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Global},
28
+ CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},
29
29
  ManageEmoticon: {value: 1 << 14, maxLayer: Layer.Space},
30
30
  };
31
31
 
@@ -1,7 +1,7 @@
1
1
  import {ChatStateTracker} from "./ChatStateTracker";
2
2
  import {
3
3
  ChatLocation,
4
- PermissionOverwrites,
4
+ PermissionOverwrites, PermissionOverwritesTarget,
5
5
  PermissionOverwritesUpdated,
6
6
  PermissionOverwritesValue,
7
7
  RoleDeleted,
@@ -19,13 +19,11 @@ import {PromiseRegistry} from "./AsyncUtils";
19
19
 
20
20
  const getOvId = (
21
21
  location: ChatLocation,
22
- target?: PermissionOverwrites['target'],
23
- targetId?: PermissionOverwrites['targetId'],
24
- ) => (location.spaceId ?? '') + (location.roomId ?? '') + (location.topicId ?? '') + (target ?? '') + (targetId ?? '');
22
+ target?: PermissionOverwritesTarget,
23
+ ) => [location.spaceId, location.roomId, location.topicId, target.type, target.userId, target.roleId].filter(Boolean).join('/');
25
24
 
26
- const getOvIdByObject = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(
27
- overwrites.location, overwrites.target, overwrites.targetId
28
- );
25
+ const getOvIdByObject
26
+ = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);
29
27
 
30
28
  interface CheckPermissionsResult {
31
29
  /**
@@ -58,18 +56,17 @@ export class PermissionsManager extends EventTarget {
58
56
 
59
57
  public async getOverwrites(
60
58
  location: ChatLocation,
61
- target: PermissionOverwrites['target'],
62
- targetId: PermissionOverwrites['targetId'],
59
+ target: PermissionOverwritesTarget,
63
60
  ): Promise<PermissionOverwrites | undefined> {
64
61
  this.validateLocation(location);
65
62
 
66
- const id = getOvId(location, target, targetId);
63
+ const id = getOvId(location, target);
67
64
 
68
65
  if (this.overwritesPromises.notExist(id)) {
69
66
  this.overwritesPromises.registerByFunction(async () => {
70
67
  const result = await this.tracker.client.send(
71
68
  'GetPermissionOverwrites',
72
- {location, target, targetId},
69
+ {location, target},
73
70
  );
74
71
  if (result.error) {
75
72
  throw result.error;
@@ -119,13 +116,13 @@ export class PermissionsManager extends EventTarget {
119
116
  const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];
120
117
  const promises: Promise<PermissionOverwritesValue>[] = [
121
118
  // Global user overwrites
122
- this.getOverwrites({}, 'User', userId).then(v => v.overwrites),
119
+ this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),
123
120
  ];
124
121
 
125
122
  if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {
126
123
  const filterLocation: ChatLocation = {spaceId: location.spaceId};
127
124
  promises.push(this.collectRoleOverwrites(filterLocation, userRoles));
128
- promises.push(this.getOverwrites(filterLocation, 'User', userId).then(v => v.overwrites));
125
+ promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));
129
126
  }
130
127
 
131
128
  if (location.roomId && (await this.tracker.rooms.get())?.has(location.roomId)) {
@@ -133,14 +130,14 @@ export class PermissionsManager extends EventTarget {
133
130
  if (userRoles.length) {
134
131
  promises.push(this.collectRoleOverwrites(filterLocation, userRoles));
135
132
  }
136
- promises.push(this.getOverwrites(filterLocation, 'User', userId).then(v => v.overwrites));
133
+ promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));
137
134
  }
138
135
 
139
136
  if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {
140
137
  if (userRoles.length) {
141
138
  promises.push(this.collectRoleOverwrites(location, userRoles));
142
139
  }
143
- promises.push(this.getOverwrites(location, 'User', userId).then(v => v.overwrites));
140
+ promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));
144
141
  }
145
142
 
146
143
  return this.resolveOverwritesHierarchy(await Promise.all(promises));
@@ -170,7 +167,7 @@ export class PermissionsManager extends EventTarget {
170
167
  }
171
168
 
172
169
  private handleRoleDeleted(ev: RoleDeleted): void {
173
- const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, 'Role', ev.id));
170
+ const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));
174
171
  this.overwritesPromises.forget(...ids);
175
172
  }
176
173
 
@@ -208,7 +205,7 @@ export class PermissionsManager extends EventTarget {
208
205
  userRoles: string[],
209
206
  ): Promise<PermissionOverwritesValue> {
210
207
  const roleOverwrites = await Promise.all(userRoles.map(
211
- roleId => this.getOverwrites(location, 'Role', roleId)
208
+ roleId => this.getOverwrites(location, { type: 'Role', roleId }),
212
209
  ));
213
210
 
214
211
  return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);
@@ -222,7 +219,7 @@ export class PermissionsManager extends EventTarget {
222
219
  const roles = await this.tracker.spaces.getRoles(spaceId);
223
220
  const sortedOverwrites = overwrites.sort(
224
221
  (a, b) =>
225
- roles.get(a.targetId).priority - roles.get(b.targetId).priority
222
+ roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority
226
223
  );
227
224
 
228
225
  // Max length of bit word
@@ -99,6 +99,7 @@ import {CreateEmoticon} from "./schemes/commands/CreateEmoticon";
99
99
  import {DeleteEmoticon} from "./schemes/commands/DeleteEmoticon";
100
100
  import {NewEmoticon} from "./schemes/events/NewEmoticon";
101
101
  import {EmoticonDeleted} from "./schemes/events/EmoticonDeleted";
102
+ import {PermissionOverwritesTarget} from "./schemes/PermissionOverwritesTarget";
102
103
 
103
104
  export {
104
105
  // objects
@@ -122,6 +123,7 @@ export {
122
123
  SpaceSummary,
123
124
  SpaceDiscoverable,
124
125
  Emoticon,
126
+ PermissionOverwritesTarget,
125
127
  // events
126
128
  Bye,
127
129
  Error,
@@ -0,0 +1,5 @@
1
+ export interface PermissionOverwritesTarget {
2
+ type: 'User' | 'Role';
3
+ userId?: string;
4
+ roleId?: string;
5
+ }
@@ -1,7 +1,7 @@
1
1
  import {ChatLocation} from "../ChatLocation";
2
+ import {PermissionOverwritesTarget} from "../PermissionOverwritesTarget";
2
3
 
3
4
  export interface GetPermissionOverwrites {
4
5
  location: ChatLocation;
5
- target: 'User' | 'Role';
6
- targetId: string;
6
+ target: PermissionOverwritesTarget;
7
7
  }
@@ -1,9 +1,9 @@
1
1
  import {PermissionOverwritesValue} from "../PermissionOverwritesValue";
2
2
  import {ChatLocation} from "../ChatLocation";
3
+ import {PermissionOverwritesTarget} from "../PermissionOverwritesTarget";
3
4
 
4
5
  export interface SetPermissionOverwrites {
5
6
  location: ChatLocation;
6
- target: 'User' | 'Role';
7
- targetId: string;
7
+ target: PermissionOverwritesTarget;
8
8
  overwrites: PermissionOverwritesValue;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import {PermissionOverwritesValue} from "../PermissionOverwritesValue";
2
2
  import {ChatLocation} from "../ChatLocation";
3
+ import {PermissionOverwritesTarget} from "../PermissionOverwritesTarget";
3
4
 
4
5
  export interface PermissionOverwrites {
5
6
  location: ChatLocation;
6
- target: 'User' | 'Role';
7
- targetId: string;
7
+ target: PermissionOverwritesTarget;
8
8
  overwrites: PermissionOverwritesValue;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import {PermissionOverwritesValue} from "../PermissionOverwritesValue";
2
2
  import {ChatLocation} from "../ChatLocation";
3
+ import {PermissionOverwritesTarget} from "../PermissionOverwritesTarget";
3
4
 
4
5
  export interface PermissionOverwritesUpdated {
5
6
  location: ChatLocation;
6
- target: 'User' | 'Role';
7
- targetId: string;
7
+ target: PermissionOverwritesTarget;
8
8
  overwrites: PermissionOverwritesValue;
9
9
  }