@eleven-am/pondsocket-nest 0.0.11 → 0.0.13

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.
@@ -43,7 +43,7 @@ class Context {
43
43
  return (_d = (_b = (_a = this.joinRequest) === null || _a === void 0 ? void 0 : _a.presence) !== null && _b !== void 0 ? _b : (_c = this.eventRequest) === null || _c === void 0 ? void 0 : _c.presence) !== null && _d !== void 0 ? _d : null;
44
44
  }
45
45
  get user() {
46
- var _a, _b, _c, _d;
46
+ var _a, _b;
47
47
  if (this.connection) {
48
48
  const user = {
49
49
  id: this.connection.id,
@@ -54,13 +54,13 @@ class Context {
54
54
  }
55
55
  else if (this.leaveEvent) {
56
56
  const user = {
57
- id: this.leaveEvent.userId,
57
+ id: this.leaveEvent.id,
58
58
  assigns: this.leaveEvent.assigns,
59
59
  presence: {},
60
60
  };
61
61
  return user;
62
62
  }
63
- return (_d = (_b = (_a = this.joinRequest) === null || _a === void 0 ? void 0 : _a.user) !== null && _b !== void 0 ? _b : (_c = this.eventRequest) === null || _c === void 0 ? void 0 : _c.user) !== null && _d !== void 0 ? _d : null;
63
+ return (_b = (_a = this.joinRequest) === null || _a === void 0 ? void 0 : _a.user) !== null && _b !== void 0 ? _b : this.eventRequest.user;
64
64
  }
65
65
  get channel() {
66
66
  var _a, _b, _c, _d, _e, _f;
package/index.d.ts CHANGED
@@ -35,7 +35,6 @@ type NestFuncType<Event extends string, Payload extends PondMessage, Presence ex
35
35
  broadcast?: Event;
36
36
  assigns?: Assigns;
37
37
  presence?: Presence;
38
- updatePresence?: Presence;
39
38
  } & Payload;
40
39
 
41
40
  type NestReturnType<EventType extends PondEvenType, Event extends keyof EventType, Presence extends PondPresence = PondPresence, Assigns extends PondAssigns = PondAssigns> =
@@ -45,16 +44,16 @@ type NestReturnType<EventType extends PondEvenType, Event extends keyof EventTyp
45
44
  never :
46
45
  never;
47
46
 
48
- declare class Context<Path extends string = string, Event extends PondEvenType = PondEvenType> {
47
+ declare class Context<Path extends string = string, Event extends PondEvenType = PondEvenType, Presence extends PondPresence = PondPresence, Assigns extends PondAssigns = PondAssigns> {
49
48
  /**
50
49
  * @desc The request object, available in onJoin handlers
51
50
  */
52
- get joinRequest (): JoinRequest<Path> | null;
51
+ get joinRequest (): JoinRequest<Path, Presence, Assigns> | null;
53
52
 
54
53
  /**
55
54
  * @desc The request object, available in onEvent handlers
56
55
  */
57
- get eventRequest (): EventRequest<Path> | null;
56
+ get eventRequest (): EventRequest<Path, Presence, Assigns> | null;
58
57
 
59
58
  /**
60
59
  * @desc The request object, available in onConnection handlers
@@ -69,12 +68,12 @@ declare class Context<Path extends string = string, Event extends PondEvenType =
69
68
  /**
70
69
  * @desc The response object, available in onJoin handlers
71
70
  */
72
- get joinResponse (): JoinResponse<Event> | null;
71
+ get joinResponse (): JoinResponse<Event, Presence, Assigns> | null;
73
72
 
74
73
  /**
75
74
  * @desc The response object, available in onEvent handlers
76
75
  */
77
- get eventResponse (): EventResponse<Event> | null;
76
+ get eventResponse (): EventResponse<Event, Presence, Assigns> | null;
78
77
 
79
78
  /**
80
79
  * @desc The response object, available in onConnection handlers
@@ -84,17 +83,17 @@ declare class Context<Path extends string = string, Event extends PondEvenType =
84
83
  /**
85
84
  * @desc The presence object, available on the channel
86
85
  */
87
- get presence<Presence extends PondPresence = PondPresence> (): Record<string, Presence> | null;
86
+ get presence (): Record<string, Presence> | null;
88
87
 
89
88
  /**
90
89
  * @desc The user object, assigned to the current user
91
90
  */
92
- get user<Presence extends PondPresence = PondPresence, Assigns extends PondAssigns = PondAssigns> (): UserData<Presence, Assigns> | null;
91
+ get user (): UserData<Presence, Assigns> | null;
93
92
 
94
93
  /**
95
94
  * @desc The channel object handling the request
96
95
  */
97
- get channel<EventType extends PondEvenType = PondEvenType, Presence extends PondPresence = PondPresence, Assigns extends PondAssigns = PondAssigns> (): PondChannel<EventType, Presence, Assigns> | null;
96
+ get channel (): PondChannel<Event, Presence, Assigns> | null;
98
97
 
99
98
  /**
100
99
  * @desc The event object of the current the request
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eleven-am/pondsocket-nest",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "PondSocket is a fast simple socket server",
5
5
  "keywords": [
6
6
  "socket",
@@ -28,7 +28,7 @@
28
28
  "pipeline": "npm run lint && npm run build && npm run push"
29
29
  },
30
30
  "dependencies": {
31
- "@eleven-am/pondsocket": "^0.1.131"
31
+ "@eleven-am/pondsocket": "^0.1.133"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@nestjs/common": "^10.3.0",
@@ -49,10 +49,11 @@ function performAction(instance, moduleRef, originalMethod, propertyKey, leaveEv
49
49
  }
50
50
  const context = new context_1.Context(req, res, instance, propertyKey);
51
51
  const channel = context.channel;
52
+ const socketId = context.user.id;
52
53
  const canProceed = yield (0, guards_1.performGuards)(moduleRef, context);
53
54
  if (canProceed) {
54
55
  const data = yield originalMethod.apply(instance, retrieveParameters(context));
55
- (0, response_1.performResponse)(data, channel, response);
56
+ (0, response_1.performResponse)(data, socketId, channel, response);
56
57
  }
57
58
  else if (response) {
58
59
  response.reject('Unauthorized', 401);
@@ -18,11 +18,11 @@ function isNotEmpty(value) {
18
18
  value !== '' &&
19
19
  Object.keys(value).length !== 0;
20
20
  }
21
- function performResponse(data, channel, response) {
21
+ function performResponse(data, socketId, channel, response) {
22
22
  if (response && response.hasResponded || !isNotEmpty(data)) {
23
23
  return;
24
24
  }
25
- const { event, presence, updatePresence, assigns, broadcast } = data, rest = __rest(data, ["event", "presence", "updatePresence", "assigns", "broadcast"]);
25
+ const { event, presence, assigns, broadcast } = data, rest = __rest(data, ["event", "presence", "assigns", "broadcast"]);
26
26
  if (response) {
27
27
  if (event && typeof event === 'string' && isNotEmpty(rest)) {
28
28
  if ('sendOnly' in response) {
@@ -38,15 +38,18 @@ function performResponse(data, channel, response) {
38
38
  if (broadcast && typeof broadcast === 'string' && isNotEmpty(rest) && 'broadcast' in response) {
39
39
  response.broadcast(broadcast, rest);
40
40
  }
41
- if ('trackPresence' in response && presence) {
42
- response.trackPresence(presence);
43
- }
44
- else if ('updatePresence' in response && updatePresence) {
45
- response.updatePresence(updatePresence);
46
- }
47
41
  }
48
42
  else if (channel && broadcast && typeof broadcast === 'string' && isNotEmpty(rest)) {
49
43
  channel.broadcastMessage(broadcast, rest);
50
44
  }
45
+ if (presence && isNotEmpty(presence) && channel) {
46
+ const existingPresence = channel.getPresence()[socketId];
47
+ if (existingPresence) {
48
+ channel.updatePresence(socketId, presence);
49
+ }
50
+ else if (response) {
51
+ channel.trackPresence(socketId, presence);
52
+ }
53
+ }
51
54
  }
52
55
  exports.performResponse = performResponse;