@eleven-am/pondsocket 0.1.115 → 0.1.118

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.
@@ -21,15 +21,53 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  }
22
22
  return t;
23
23
  };
24
- var _ChannelEngine_instances, _ChannelEngine_receiver, _ChannelEngine_presenceEngine, _ChannelEngine_users, _ChannelEngine_parentEngine, _ChannelEngine_subscribe, _ChannelEngine_getUsersFromRecipients, _Channel_engine;
24
+ var _Channel_engine, _ChannelEngine_instances, _ChannelEngine_receiver, _ChannelEngine_presenceEngine, _ChannelEngine_users, _ChannelEngine_parentEngine, _ChannelEngine_subscribe, _ChannelEngine_getUsersFromRecipients;
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Channel = exports.ChannelEngine = void 0;
26
+ exports.ChannelEngine = exports.Channel = void 0;
27
27
  const eventRequest_1 = require("./eventRequest");
28
28
  const eventResponse_1 = require("./eventResponse");
29
29
  const enums_1 = require("../enums");
30
30
  const pondError_1 = require("../errors/pondError");
31
31
  const presence_1 = require("../presence/presence");
32
32
  const subject_1 = require("../subjects/subject");
33
+ class Channel {
34
+ constructor(engine) {
35
+ _Channel_engine.set(this, void 0);
36
+ __classPrivateFieldSet(this, _Channel_engine, engine, "f");
37
+ }
38
+ get name() {
39
+ return __classPrivateFieldGet(this, _Channel_engine, "f").name;
40
+ }
41
+ getAssigns() {
42
+ return __classPrivateFieldGet(this, _Channel_engine, "f").getAssigns();
43
+ }
44
+ getUserData(userId) {
45
+ return __classPrivateFieldGet(this, _Channel_engine, "f").getUserData(userId);
46
+ }
47
+ broadcastMessage(event, payload) {
48
+ __classPrivateFieldGet(this, _Channel_engine, "f").sendMessage(enums_1.SystemSender.CHANNEL, enums_1.ChannelReceiver.ALL_USERS, enums_1.ServerActions.BROADCAST, event, payload);
49
+ }
50
+ sendToUser(userId, event, payload) {
51
+ __classPrivateFieldGet(this, _Channel_engine, "f").sendMessage(enums_1.SystemSender.CHANNEL, [userId], enums_1.ServerActions.BROADCAST, event, payload);
52
+ }
53
+ sendToUsers(userIds, event, payload) {
54
+ __classPrivateFieldGet(this, _Channel_engine, "f").sendMessage(enums_1.SystemSender.CHANNEL, userIds, enums_1.ServerActions.BROADCAST, event, payload);
55
+ }
56
+ evictUser(userId, reason) {
57
+ __classPrivateFieldGet(this, _Channel_engine, "f").kickUser(userId, reason !== null && reason !== void 0 ? reason : 'You have been banned from the channel');
58
+ }
59
+ trackPresence(userId, presence) {
60
+ __classPrivateFieldGet(this, _Channel_engine, "f").presenceEngine.trackPresence(userId, presence);
61
+ }
62
+ removePresence(userId) {
63
+ __classPrivateFieldGet(this, _Channel_engine, "f").presenceEngine.removePresence(userId);
64
+ }
65
+ updatePresence(userId, presence) {
66
+ __classPrivateFieldGet(this, _Channel_engine, "f").presenceEngine.updatePresence(userId, presence);
67
+ }
68
+ }
69
+ exports.Channel = Channel;
70
+ _Channel_engine = new WeakMap();
33
71
  class ChannelEngine {
34
72
  constructor(name, parent) {
35
73
  _ChannelEngine_instances.add(this);
@@ -74,6 +112,7 @@ class ChannelEngine {
74
112
  __classPrivateFieldGet(this, _ChannelEngine_parentEngine, "f").leaveCallback({
75
113
  userId,
76
114
  assigns: user,
115
+ channel: new Channel(this),
77
116
  });
78
117
  }
79
118
  if (__classPrivateFieldGet(this, _ChannelEngine_users, "f").size === 0) {
@@ -247,41 +286,3 @@ _ChannelEngine_receiver = new WeakMap(), _ChannelEngine_presenceEngine = new Wea
247
286
  }
248
287
  return users;
249
288
  };
250
- class Channel {
251
- constructor(engine) {
252
- _Channel_engine.set(this, void 0);
253
- __classPrivateFieldSet(this, _Channel_engine, engine, "f");
254
- }
255
- get name() {
256
- return __classPrivateFieldGet(this, _Channel_engine, "f").name;
257
- }
258
- getAssigns() {
259
- return __classPrivateFieldGet(this, _Channel_engine, "f").getAssigns();
260
- }
261
- getUserData(userId) {
262
- return __classPrivateFieldGet(this, _Channel_engine, "f").getUserData(userId);
263
- }
264
- broadcastMessage(event, payload) {
265
- __classPrivateFieldGet(this, _Channel_engine, "f").sendMessage(enums_1.SystemSender.CHANNEL, enums_1.ChannelReceiver.ALL_USERS, enums_1.ServerActions.BROADCAST, event, payload);
266
- }
267
- sendToUser(userId, event, payload) {
268
- __classPrivateFieldGet(this, _Channel_engine, "f").sendMessage(enums_1.SystemSender.CHANNEL, [userId], enums_1.ServerActions.BROADCAST, event, payload);
269
- }
270
- sendToUsers(userIds, event, payload) {
271
- __classPrivateFieldGet(this, _Channel_engine, "f").sendMessage(enums_1.SystemSender.CHANNEL, userIds, enums_1.ServerActions.BROADCAST, event, payload);
272
- }
273
- evictUser(userId, reason) {
274
- __classPrivateFieldGet(this, _Channel_engine, "f").kickUser(userId, reason !== null && reason !== void 0 ? reason : 'You have been banned from the channel');
275
- }
276
- trackPresence(userId, presence) {
277
- __classPrivateFieldGet(this, _Channel_engine, "f").presenceEngine.trackPresence(userId, presence);
278
- }
279
- removePresence(userId) {
280
- __classPrivateFieldGet(this, _Channel_engine, "f").presenceEngine.removePresence(userId);
281
- }
282
- updatePresence(userId, presence) {
283
- __classPrivateFieldGet(this, _Channel_engine, "f").presenceEngine.updatePresence(userId, presence);
284
- }
285
- }
286
- exports.Channel = Channel;
287
- _Channel_engine = new WeakMap();
package/nest.js CHANGED
@@ -263,25 +263,35 @@ class Context {
263
263
  return (_a = this.data[key]) !== null && _a !== void 0 ? _a : null;
264
264
  }
265
265
  }
266
- function manageResponse(data, response) {
267
- if (response.hasResponded || !isNotEmpty(data)) {
266
+ function manageResponse(data, channel, clientId, response) {
267
+ if (response && response.hasResponded || !isNotEmpty(data)) {
268
268
  return;
269
269
  }
270
270
  const { event, presence, updatePresence, assigns, broadcast } = data, rest = __rest(data, ["event", "presence", "updatePresence", "assigns", "broadcast"]);
271
- if (event && typeof event === 'string' && isNotEmpty(rest)) {
272
- response.send(event, rest, assigns);
273
- }
274
- else if (isNotEmpty(assigns)) {
275
- response.accept(assigns);
276
- }
277
- if (broadcast && typeof broadcast === 'string' && isNotEmpty(rest) && 'broadcast' in response) {
278
- response.broadcast(broadcast, rest);
279
- }
280
- if ('trackPresence' in response && presence) {
281
- response.trackPresence(presence);
271
+ if (response) {
272
+ if (event && typeof event === 'string' && isNotEmpty(rest)) {
273
+ if (clientId && response instanceof eventResponse_1.EventResponse && !isNotEmpty(assigns)) {
274
+ response.sendToUsers(event, rest, [clientId]);
275
+ }
276
+ else {
277
+ response.send(event, rest, assigns);
278
+ }
279
+ }
280
+ else if (isNotEmpty(assigns)) {
281
+ response.accept(assigns);
282
+ }
283
+ if (broadcast && typeof broadcast === 'string' && isNotEmpty(rest) && 'broadcast' in response) {
284
+ response.broadcast(broadcast, rest);
285
+ }
286
+ if ('trackPresence' in response && presence) {
287
+ response.trackPresence(presence);
288
+ }
289
+ else if ('updatePresence' in response && updatePresence) {
290
+ response.updatePresence(updatePresence);
291
+ }
282
292
  }
283
- else if ('updatePresence' in response && updatePresence) {
284
- response.updatePresence(updatePresence);
293
+ else if (channel && broadcast && typeof broadcast === 'string' && isNotEmpty(rest)) {
294
+ channel.broadcastMessage(broadcast, rest);
285
295
  }
286
296
  }
287
297
  function manageError(error, response) {
@@ -527,29 +537,43 @@ function GetChannel() {
527
537
  })(null);
528
538
  }
529
539
  exports.GetChannel = GetChannel;
530
- function manageAction(instance, moduleRef, originalMethod, propertyKey, request, response) {
540
+ function manageAction(instance, moduleRef, originalMethod, propertyKey, leaveEvent, request, response) {
531
541
  return __awaiter(this, void 0, void 0, function* () {
532
542
  const req = {};
533
543
  const res = {};
534
- if (request instanceof joinRequest_1.JoinRequest && response instanceof joinResponse_1.JoinResponse) {
535
- req.joinRequest = request;
536
- res.joinResponse = response;
537
- }
538
- else if (request instanceof eventRequest_1.EventRequest && response instanceof eventResponse_1.EventResponse) {
539
- req.eventRequest = request;
540
- res.eventResponse = response;
544
+ let channel = null;
545
+ let clientId = null;
546
+ if (request && response) {
547
+ if (request instanceof joinRequest_1.JoinRequest && response instanceof joinResponse_1.JoinResponse) {
548
+ channel = request.channel;
549
+ clientId = request.user.id;
550
+ req.joinRequest = request;
551
+ res.joinResponse = response;
552
+ }
553
+ else if (request instanceof eventRequest_1.EventRequest && response instanceof eventResponse_1.EventResponse) {
554
+ channel = request.channel;
555
+ clientId = request.user.id;
556
+ req.eventRequest = request;
557
+ res.eventResponse = response;
558
+ }
559
+ else if ('headers' in request && response instanceof response_1.ConnectionResponse) {
560
+ clientId = request.id;
561
+ req.connection = request;
562
+ res.connection = response;
563
+ }
541
564
  }
542
- else if ('headers' in request && response instanceof response_1.ConnectionResponse) {
543
- req.connection = request;
544
- res.connection = response;
565
+ else if (leaveEvent) {
566
+ clientId = leaveEvent.userId;
567
+ channel = leaveEvent.channel;
568
+ req.leveeEvent = leaveEvent;
545
569
  }
546
570
  const context = new Context(req, res, instance, propertyKey);
547
571
  const canProceed = yield resolveGuards(moduleRef, context);
548
572
  if (canProceed) {
549
573
  const data = yield originalMethod.apply(instance, resolveParameters(context));
550
- manageResponse(data, response);
574
+ manageResponse(data, channel, clientId, response);
551
575
  }
552
- else {
576
+ else if (response) {
553
577
  response.reject('Unauthorized', 401);
554
578
  }
555
579
  });
@@ -560,7 +584,7 @@ function OnConnectionRequest() {
560
584
  const { set } = manageConnectionHandlers(target);
561
585
  set('', (instance, moduleRef, request, response) => __awaiter(this, void 0, void 0, function* () {
562
586
  try {
563
- yield manageAction(instance, moduleRef, originalMethod, propertyKey, request, response);
587
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, null, request, response);
564
588
  }
565
589
  catch (error) {
566
590
  manageError(error, response);
@@ -575,7 +599,7 @@ function OnJoinRequest() {
575
599
  const { set } = manageJoinHandlers(target);
576
600
  set('', (instance, moduleRef, request, response) => __awaiter(this, void 0, void 0, function* () {
577
601
  try {
578
- yield manageAction(instance, moduleRef, originalMethod, propertyKey, request, response);
602
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, null, request, response);
579
603
  }
580
604
  catch (error) {
581
605
  manageError(error, response);
@@ -590,7 +614,7 @@ function OnEvent(event = '*') {
590
614
  const { set } = manageEventHandlers(target);
591
615
  set(event, (instance, moduleRef, request, response) => __awaiter(this, void 0, void 0, function* () {
592
616
  try {
593
- yield manageAction(instance, moduleRef, originalMethod, propertyKey, request, response);
617
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, null, request, response);
594
618
  }
595
619
  catch (error) {
596
620
  manageError(error, response);
@@ -603,11 +627,8 @@ function OnLeaveEvent() {
603
627
  return (target, propertyKey, descriptor) => {
604
628
  const originalMethod = descriptor.value;
605
629
  const { set } = manageOnLeaveHandlers(target);
606
- set('', (instance, _, event) => __awaiter(this, void 0, void 0, function* () {
607
- const context = new Context({
608
- leveeEvent: event,
609
- }, {}, instance, propertyKey);
610
- yield originalMethod.apply(instance, resolveParameters(context));
630
+ set('', (instance, moduleRef, event) => __awaiter(this, void 0, void 0, function* () {
631
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, event);
611
632
  }));
612
633
  };
613
634
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eleven-am/pondsocket",
3
- "version": "0.1.115",
3
+ "version": "0.1.118",
4
4
  "description": "PondSocket is a fast simple socket server",
5
5
  "keywords": [
6
6
  "socket",
package/types.d.ts CHANGED
@@ -84,6 +84,7 @@ type IncomingConnection<Path> = EventParams<Path> & {
84
84
  interface LeaveEvent {
85
85
  userId: string;
86
86
  assigns: PondAssigns;
87
+ channel: Channel;
87
88
  }
88
89
 
89
90
  type LeaveCallback = (event: LeaveEvent) => void;