@eleven-am/pondsocket 0.1.115 → 0.1.116

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,30 @@ 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, 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
+ response.send(event, rest, assigns);
274
+ }
275
+ else if (isNotEmpty(assigns)) {
276
+ response.accept(assigns);
277
+ }
278
+ if (broadcast && typeof broadcast === 'string' && isNotEmpty(rest) && 'broadcast' in response) {
279
+ response.broadcast(broadcast, rest);
280
+ }
281
+ if ('trackPresence' in response && presence) {
282
+ response.trackPresence(presence);
283
+ }
284
+ else if ('updatePresence' in response && updatePresence) {
285
+ response.updatePresence(updatePresence);
286
+ }
282
287
  }
283
- else if ('updatePresence' in response && updatePresence) {
284
- response.updatePresence(updatePresence);
288
+ else if (channel && broadcast && typeof broadcast === 'string' && isNotEmpty(rest)) {
289
+ channel.broadcastMessage(broadcast, rest);
285
290
  }
286
291
  }
287
292
  function manageError(error, response) {
@@ -527,29 +532,38 @@ function GetChannel() {
527
532
  })(null);
528
533
  }
529
534
  exports.GetChannel = GetChannel;
530
- function manageAction(instance, moduleRef, originalMethod, propertyKey, request, response) {
535
+ function manageAction(instance, moduleRef, originalMethod, propertyKey, leaveEvent, request, response) {
531
536
  return __awaiter(this, void 0, void 0, function* () {
532
537
  const req = {};
533
538
  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;
539
+ let channel = null;
540
+ if (request && response) {
541
+ if (request instanceof joinRequest_1.JoinRequest && response instanceof joinResponse_1.JoinResponse) {
542
+ channel = request.channel;
543
+ req.joinRequest = request;
544
+ res.joinResponse = response;
545
+ }
546
+ else if (request instanceof eventRequest_1.EventRequest && response instanceof eventResponse_1.EventResponse) {
547
+ channel = request.channel;
548
+ req.eventRequest = request;
549
+ res.eventResponse = response;
550
+ }
551
+ else if ('headers' in request && response instanceof response_1.ConnectionResponse) {
552
+ req.connection = request;
553
+ res.connection = response;
554
+ }
541
555
  }
542
- else if ('headers' in request && response instanceof response_1.ConnectionResponse) {
543
- req.connection = request;
544
- res.connection = response;
556
+ else if (leaveEvent) {
557
+ channel = leaveEvent.channel;
558
+ req.leveeEvent = leaveEvent;
545
559
  }
546
560
  const context = new Context(req, res, instance, propertyKey);
547
561
  const canProceed = yield resolveGuards(moduleRef, context);
548
562
  if (canProceed) {
549
563
  const data = yield originalMethod.apply(instance, resolveParameters(context));
550
- manageResponse(data, response);
564
+ manageResponse(data, channel, response);
551
565
  }
552
- else {
566
+ else if (response) {
553
567
  response.reject('Unauthorized', 401);
554
568
  }
555
569
  });
@@ -560,7 +574,7 @@ function OnConnectionRequest() {
560
574
  const { set } = manageConnectionHandlers(target);
561
575
  set('', (instance, moduleRef, request, response) => __awaiter(this, void 0, void 0, function* () {
562
576
  try {
563
- yield manageAction(instance, moduleRef, originalMethod, propertyKey, request, response);
577
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, null, request, response);
564
578
  }
565
579
  catch (error) {
566
580
  manageError(error, response);
@@ -575,7 +589,7 @@ function OnJoinRequest() {
575
589
  const { set } = manageJoinHandlers(target);
576
590
  set('', (instance, moduleRef, request, response) => __awaiter(this, void 0, void 0, function* () {
577
591
  try {
578
- yield manageAction(instance, moduleRef, originalMethod, propertyKey, request, response);
592
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, null, request, response);
579
593
  }
580
594
  catch (error) {
581
595
  manageError(error, response);
@@ -590,7 +604,7 @@ function OnEvent(event = '*') {
590
604
  const { set } = manageEventHandlers(target);
591
605
  set(event, (instance, moduleRef, request, response) => __awaiter(this, void 0, void 0, function* () {
592
606
  try {
593
- yield manageAction(instance, moduleRef, originalMethod, propertyKey, request, response);
607
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, null, request, response);
594
608
  }
595
609
  catch (error) {
596
610
  manageError(error, response);
@@ -603,11 +617,8 @@ function OnLeaveEvent() {
603
617
  return (target, propertyKey, descriptor) => {
604
618
  const originalMethod = descriptor.value;
605
619
  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));
620
+ set('', (instance, moduleRef, event) => __awaiter(this, void 0, void 0, function* () {
621
+ yield manageAction(instance, moduleRef, originalMethod, propertyKey, event);
611
622
  }));
612
623
  };
613
624
  }
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.116",
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;