@eleven-am/pondsocket 0.1.168 → 0.1.170
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.
- package/abstracts/middleware.js +40 -17
- package/abstracts/redisClient.js +278 -0
- package/engines/channelEngine.js +163 -0
- package/engines/endpointEngine.js +163 -0
- package/engines/lobbyEngine.js +79 -0
- package/errors/httpError.js +11 -0
- package/index.js +2 -2
- package/managers/distributedManager.js +115 -0
- package/managers/localManager.js +41 -0
- package/managers/manager.js +219 -0
- package/managers/managerFactory.js +31 -0
- package/package.json +24 -14
- package/requests/eventRequest.js +51 -0
- package/requests/joinRequest.js +56 -0
- package/responses/connectionResponse.js +89 -0
- package/{channel → responses}/eventResponse.js +8 -79
- package/{lobby → responses}/joinResponse.js +25 -84
- package/server/{pondSocket.js → server.js} +55 -55
- package/types.d.ts +33 -106
- package/wrappers/channel.js +70 -0
- package/wrappers/endpoint.js +32 -0
- package/wrappers/pondChannel.js +48 -0
- package/abstracts/abstractRequest.js +0 -57
- package/abstracts/abstractRequest.test.js +0 -48
- package/abstracts/middleware.test.js +0 -70
- package/channel/channel.js +0 -351
- package/channel/channel.test.js +0 -435
- package/channel/eventRequest.js +0 -25
- package/channel/eventRequest.test.js +0 -30
- package/channel/eventResponse.test.js +0 -175
- package/endpoint/endpoint.js +0 -299
- package/endpoint/endpoint.test.js +0 -299
- package/endpoint/response.js +0 -129
- package/errors/pondError.js +0 -28
- package/lobby/JoinRequest.test.js +0 -50
- package/lobby/JoinResponse.test.js +0 -142
- package/lobby/joinRequest.js +0 -43
- package/lobby/lobby.js +0 -186
- package/matcher/matcher.test.js +0 -90
- package/presence/presence.js +0 -112
- package/presence/presenceEngine.test.js +0 -129
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ManagerFactory = void 0;
|
|
13
|
+
const distributedManager_1 = require("./distributedManager");
|
|
14
|
+
const localManager_1 = require("./localManager");
|
|
15
|
+
class ManagerFactory {
|
|
16
|
+
static create(channelId, clientFactory, onClose) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
let manager;
|
|
19
|
+
if (clientFactory) {
|
|
20
|
+
const client = clientFactory(channelId);
|
|
21
|
+
manager = new distributedManager_1.DistributedManager(client);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
manager = new localManager_1.LocalManager(channelId);
|
|
25
|
+
}
|
|
26
|
+
yield manager.initialize(onClose);
|
|
27
|
+
return manager;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ManagerFactory = ManagerFactory;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eleven-am/pondsocket",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.170",
|
|
4
4
|
"description": "PondSocket is a fast simple socket server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"socket",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"build": "rimraf dist && tsc && npm run remove",
|
|
21
21
|
"lint": "eslint --ext .ts src",
|
|
22
22
|
"lint:fix": "eslint --fix --ext .ts src",
|
|
23
|
-
"remove": "rm dist/
|
|
24
|
-
"copy": "cp src/types.ts dist/types.d.ts && cp src/distIndex.ts dist/index.d.ts && cp package.json dist && cp README.md dist && cp LICENSE dist",
|
|
23
|
+
"remove": "rm -r dist/tests && rm dist/distIndex.js",
|
|
24
|
+
"copy": "cp src/types.d.ts dist/types.d.ts && cp src/distIndex.ts dist/index.d.ts && cp package.json dist && cp README.md dist && cp LICENSE dist",
|
|
25
25
|
"push": "npm version patch && npm run copy && cd dist && npm publish && cd ..",
|
|
26
26
|
"pipeline": "npm run lint && npm run test && npm run build && npm run push"
|
|
27
27
|
},
|
|
@@ -34,23 +34,33 @@
|
|
|
34
34
|
"url": "git+https://github.com/Eleven-am/pondSocket.git"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@eleven-am/pondsocket-common": "^0.0.
|
|
37
|
+
"@eleven-am/pondsocket-common": "^0.0.24",
|
|
38
|
+
"ioredis": "^5.4.1",
|
|
38
39
|
"ws": "^8.18.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"@
|
|
42
|
-
"@types/
|
|
43
|
-
"@types/
|
|
44
|
-
"@types/ws": "^8.5.
|
|
45
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
42
|
+
"@stylistic/eslint-plugin-ts": "^2.8.0",
|
|
43
|
+
"@types/jest": "^29.5.13",
|
|
44
|
+
"@types/node": "^22.7.4",
|
|
45
|
+
"@types/ws": "^8.5.12",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^8.8.0",
|
|
47
|
+
"@typescript-eslint/parser": "^8.8.0",
|
|
46
48
|
"eslint": "^8.57.0",
|
|
47
|
-
"eslint-
|
|
48
|
-
"eslint-
|
|
49
|
+
"eslint-config-prettier": "^9.1.0",
|
|
50
|
+
"eslint-import-resolver-node": "^0.3.9",
|
|
51
|
+
"eslint-plugin-file-progress": "^1.5.0",
|
|
52
|
+
"eslint-plugin-import": "^2.30.0",
|
|
53
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
49
54
|
"jest": "^29.7.0",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
55
|
+
"nodemon": "^3.1.7",
|
|
56
|
+
"prettier": "^3.3.3",
|
|
57
|
+
"source-map-support": "^0.5.21",
|
|
58
|
+
"supertest": "^7.0.0",
|
|
59
|
+
"ts-jest": "^29.2.5",
|
|
60
|
+
"ts-loader": "^9.5.1",
|
|
52
61
|
"ts-node": "^10.9.2",
|
|
53
|
-
"
|
|
62
|
+
"tsconfig-paths": "^4.2.0",
|
|
63
|
+
"typescript": "^5.6.2"
|
|
54
64
|
},
|
|
55
65
|
"jest": {
|
|
56
66
|
"moduleFileExtensions": [
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _EventRequest_event, _EventRequest_engine, _EventRequest_params;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.EventRequest = void 0;
|
|
16
|
+
const channel_1 = require("../wrappers/channel");
|
|
17
|
+
class EventRequest {
|
|
18
|
+
constructor(event, params, engine) {
|
|
19
|
+
_EventRequest_event.set(this, void 0);
|
|
20
|
+
_EventRequest_engine.set(this, void 0);
|
|
21
|
+
_EventRequest_params.set(this, void 0);
|
|
22
|
+
__classPrivateFieldSet(this, _EventRequest_event, event, "f");
|
|
23
|
+
__classPrivateFieldSet(this, _EventRequest_params, params, "f");
|
|
24
|
+
__classPrivateFieldSet(this, _EventRequest_engine, engine, "f");
|
|
25
|
+
}
|
|
26
|
+
get event() {
|
|
27
|
+
return {
|
|
28
|
+
event: __classPrivateFieldGet(this, _EventRequest_event, "f").event,
|
|
29
|
+
query: __classPrivateFieldGet(this, _EventRequest_params, "f").query,
|
|
30
|
+
params: __classPrivateFieldGet(this, _EventRequest_params, "f").params,
|
|
31
|
+
payload: __classPrivateFieldGet(this, _EventRequest_event, "f").payload,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
get channelName() {
|
|
35
|
+
return __classPrivateFieldGet(this, _EventRequest_engine, "f").name;
|
|
36
|
+
}
|
|
37
|
+
get channel() {
|
|
38
|
+
return new channel_1.Channel(__classPrivateFieldGet(this, _EventRequest_engine, "f"));
|
|
39
|
+
}
|
|
40
|
+
get presences() {
|
|
41
|
+
return __classPrivateFieldGet(this, _EventRequest_engine, "f").getPresence();
|
|
42
|
+
}
|
|
43
|
+
get assigns() {
|
|
44
|
+
return __classPrivateFieldGet(this, _EventRequest_engine, "f").getAssigns();
|
|
45
|
+
}
|
|
46
|
+
get user() {
|
|
47
|
+
return __classPrivateFieldGet(this, _EventRequest_engine, "f").getUser(__classPrivateFieldGet(this, _EventRequest_event, "f").sender);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.EventRequest = EventRequest;
|
|
51
|
+
_EventRequest_event = new WeakMap(), _EventRequest_engine = new WeakMap(), _EventRequest_params = new WeakMap();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _JoinRequest_options, _JoinRequest_engine;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.JoinRequest = void 0;
|
|
16
|
+
const channel_1 = require("../wrappers/channel");
|
|
17
|
+
class JoinRequest {
|
|
18
|
+
constructor(options, channel) {
|
|
19
|
+
_JoinRequest_options.set(this, void 0);
|
|
20
|
+
_JoinRequest_engine.set(this, void 0);
|
|
21
|
+
__classPrivateFieldSet(this, _JoinRequest_options, options, "f");
|
|
22
|
+
__classPrivateFieldSet(this, _JoinRequest_engine, channel, "f");
|
|
23
|
+
}
|
|
24
|
+
get event() {
|
|
25
|
+
return {
|
|
26
|
+
event: __classPrivateFieldGet(this, _JoinRequest_engine, "f").name,
|
|
27
|
+
query: __classPrivateFieldGet(this, _JoinRequest_options, "f").params.query,
|
|
28
|
+
params: __classPrivateFieldGet(this, _JoinRequest_options, "f").params.params,
|
|
29
|
+
payload: __classPrivateFieldGet(this, _JoinRequest_options, "f").joinParams,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
get channelName() {
|
|
33
|
+
return __classPrivateFieldGet(this, _JoinRequest_engine, "f").name;
|
|
34
|
+
}
|
|
35
|
+
get channel() {
|
|
36
|
+
return new channel_1.Channel(__classPrivateFieldGet(this, _JoinRequest_engine, "f"));
|
|
37
|
+
}
|
|
38
|
+
get presences() {
|
|
39
|
+
return __classPrivateFieldGet(this, _JoinRequest_engine, "f").getPresence();
|
|
40
|
+
}
|
|
41
|
+
get assigns() {
|
|
42
|
+
return __classPrivateFieldGet(this, _JoinRequest_engine, "f").getAssigns();
|
|
43
|
+
}
|
|
44
|
+
get user() {
|
|
45
|
+
return {
|
|
46
|
+
id: __classPrivateFieldGet(this, _JoinRequest_options, "f").clientId,
|
|
47
|
+
assigns: __classPrivateFieldGet(this, _JoinRequest_options, "f").assigns,
|
|
48
|
+
presence: {},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
get joinParams() {
|
|
52
|
+
return __classPrivateFieldGet(this, _JoinRequest_options, "f").joinParams;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.JoinRequest = JoinRequest;
|
|
56
|
+
_JoinRequest_options = new WeakMap(), _JoinRequest_engine = new WeakMap();
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _ConnectionResponse_instances, _ConnectionResponse_executed, _ConnectionResponse_assigns, _ConnectionResponse_clientId, _ConnectionResponse_engine, _ConnectionResponse_params, _ConnectionResponse_webSocketServer, _ConnectionResponse_performChecks;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ConnectionResponse = void 0;
|
|
16
|
+
const pondsocket_common_1 = require("@eleven-am/pondsocket-common");
|
|
17
|
+
const httpError_1 = require("../errors/httpError");
|
|
18
|
+
class ConnectionResponse {
|
|
19
|
+
constructor(clientId, { engine, params, webSocketServer }) {
|
|
20
|
+
_ConnectionResponse_instances.add(this);
|
|
21
|
+
_ConnectionResponse_executed.set(this, void 0);
|
|
22
|
+
_ConnectionResponse_assigns.set(this, void 0);
|
|
23
|
+
_ConnectionResponse_clientId.set(this, void 0);
|
|
24
|
+
_ConnectionResponse_engine.set(this, void 0);
|
|
25
|
+
_ConnectionResponse_params.set(this, void 0);
|
|
26
|
+
_ConnectionResponse_webSocketServer.set(this, void 0);
|
|
27
|
+
__classPrivateFieldSet(this, _ConnectionResponse_webSocketServer, webSocketServer, "f");
|
|
28
|
+
__classPrivateFieldSet(this, _ConnectionResponse_clientId, clientId, "f");
|
|
29
|
+
__classPrivateFieldSet(this, _ConnectionResponse_executed, false, "f");
|
|
30
|
+
__classPrivateFieldSet(this, _ConnectionResponse_engine, engine, "f");
|
|
31
|
+
__classPrivateFieldSet(this, _ConnectionResponse_params, params, "f");
|
|
32
|
+
__classPrivateFieldSet(this, _ConnectionResponse_assigns, {}, "f");
|
|
33
|
+
}
|
|
34
|
+
assign(assigns) {
|
|
35
|
+
if (!__classPrivateFieldGet(this, _ConnectionResponse_executed, "f")) {
|
|
36
|
+
__classPrivateFieldSet(this, _ConnectionResponse_assigns, Object.assign(Object.assign({}, __classPrivateFieldGet(this, _ConnectionResponse_assigns, "f")), assigns), "f");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const user = __classPrivateFieldGet(this, _ConnectionResponse_engine, "f").getUser(__classPrivateFieldGet(this, _ConnectionResponse_clientId, "f"));
|
|
40
|
+
user.assigns = Object.assign(Object.assign({}, user.assigns), assigns);
|
|
41
|
+
}
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
accept() {
|
|
45
|
+
__classPrivateFieldGet(this, _ConnectionResponse_instances, "m", _ConnectionResponse_performChecks).call(this);
|
|
46
|
+
__classPrivateFieldGet(this, _ConnectionResponse_webSocketServer, "f").handleUpgrade(__classPrivateFieldGet(this, _ConnectionResponse_params, "f").request, __classPrivateFieldGet(this, _ConnectionResponse_params, "f").socket, __classPrivateFieldGet(this, _ConnectionResponse_params, "f").head, (ws) => {
|
|
47
|
+
const cache = {
|
|
48
|
+
clientId: __classPrivateFieldGet(this, _ConnectionResponse_clientId, "f"),
|
|
49
|
+
subscriptions: new Set(),
|
|
50
|
+
assigns: __classPrivateFieldGet(this, _ConnectionResponse_assigns, "f"),
|
|
51
|
+
socket: ws,
|
|
52
|
+
};
|
|
53
|
+
__classPrivateFieldGet(this, _ConnectionResponse_webSocketServer, "f").emit('connection', ws);
|
|
54
|
+
__classPrivateFieldGet(this, _ConnectionResponse_engine, "f").manageSocket(cache);
|
|
55
|
+
});
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
decline(message, errorCode) {
|
|
59
|
+
__classPrivateFieldGet(this, _ConnectionResponse_instances, "m", _ConnectionResponse_performChecks).call(this);
|
|
60
|
+
const code = errorCode || 400;
|
|
61
|
+
const { socket } = __classPrivateFieldGet(this, _ConnectionResponse_params, "f");
|
|
62
|
+
const newMessage = message || 'Unauthorized connection';
|
|
63
|
+
socket.write(`HTTP/1.1 ${code} ${newMessage}\r\n\r\n`);
|
|
64
|
+
socket.destroy();
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
reply(event, payload) {
|
|
68
|
+
if (!__classPrivateFieldGet(this, _ConnectionResponse_executed, "f")) {
|
|
69
|
+
throw new httpError_1.HttpError(400, 'Connection has not been accepted');
|
|
70
|
+
}
|
|
71
|
+
const { socket } = __classPrivateFieldGet(this, _ConnectionResponse_engine, "f").getUser(__classPrivateFieldGet(this, _ConnectionResponse_clientId, "f"));
|
|
72
|
+
const message = {
|
|
73
|
+
event,
|
|
74
|
+
payload,
|
|
75
|
+
action: pondsocket_common_1.ServerActions.BROADCAST,
|
|
76
|
+
requestId: __classPrivateFieldGet(this, _ConnectionResponse_params, "f").requestId,
|
|
77
|
+
channelName: pondsocket_common_1.SystemSender.ENDPOINT,
|
|
78
|
+
};
|
|
79
|
+
__classPrivateFieldGet(this, _ConnectionResponse_engine, "f").sendMessage(socket, message);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.ConnectionResponse = ConnectionResponse;
|
|
84
|
+
_ConnectionResponse_executed = new WeakMap(), _ConnectionResponse_assigns = new WeakMap(), _ConnectionResponse_clientId = new WeakMap(), _ConnectionResponse_engine = new WeakMap(), _ConnectionResponse_params = new WeakMap(), _ConnectionResponse_webSocketServer = new WeakMap(), _ConnectionResponse_instances = new WeakSet(), _ConnectionResponse_performChecks = function _ConnectionResponse_performChecks() {
|
|
85
|
+
if (__classPrivateFieldGet(this, _ConnectionResponse_executed, "f")) {
|
|
86
|
+
throw new httpError_1.HttpError(400, 'Response has already been executed');
|
|
87
|
+
}
|
|
88
|
+
__classPrivateFieldSet(this, _ConnectionResponse_executed, true, "f");
|
|
89
|
+
};
|
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _EventResponse_instances, _EventResponse_event, _EventResponse_engine, _EventResponse_requestId,
|
|
13
|
+
var _EventResponse_instances, _EventResponse_event, _EventResponse_engine, _EventResponse_requestId, _EventResponse_sendMessage;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.EventResponse = void 0;
|
|
16
16
|
const pondsocket_common_1 = require("@eleven-am/pondsocket-common");
|
|
@@ -24,116 +24,45 @@ class EventResponse {
|
|
|
24
24
|
__classPrivateFieldSet(this, _EventResponse_engine, engine, "f");
|
|
25
25
|
__classPrivateFieldSet(this, _EventResponse_requestId, event.requestId, "f");
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
28
|
-
* @desc Assigns data to the client
|
|
29
|
-
* @param assigns - the data to assign to the client
|
|
30
|
-
*/
|
|
31
27
|
assign(assigns) {
|
|
32
|
-
__classPrivateFieldGet(this,
|
|
28
|
+
__classPrivateFieldGet(this, _EventResponse_engine, "f").updateAssigns(__classPrivateFieldGet(this, _EventResponse_event, "f").sender, assigns);
|
|
33
29
|
return this;
|
|
34
30
|
}
|
|
35
|
-
/**
|
|
36
|
-
* @desc Emits a direct message to the client
|
|
37
|
-
* @param event - the event name
|
|
38
|
-
* @param payload - the payload to send
|
|
39
|
-
*/
|
|
40
31
|
reply(event, payload) {
|
|
41
32
|
__classPrivateFieldGet(this, _EventResponse_engine, "f").sendMessage(pondsocket_common_1.SystemSender.CHANNEL, [__classPrivateFieldGet(this, _EventResponse_event, "f").sender], pondsocket_common_1.ServerActions.SYSTEM, event, payload, __classPrivateFieldGet(this, _EventResponse_requestId, "f"));
|
|
42
33
|
return this;
|
|
43
34
|
}
|
|
44
|
-
/**
|
|
45
|
-
* @desc Sends a message to all clients in the channel
|
|
46
|
-
* @param event - the event to send
|
|
47
|
-
* @param payload - the payload to send
|
|
48
|
-
*/
|
|
49
35
|
broadcast(event, payload) {
|
|
50
36
|
__classPrivateFieldGet(this, _EventResponse_instances, "m", _EventResponse_sendMessage).call(this, pondsocket_common_1.ChannelReceiver.ALL_USERS, event, payload);
|
|
51
37
|
return this;
|
|
52
38
|
}
|
|
53
|
-
/**
|
|
54
|
-
* @desc Sends a message to all clients in the channel except the client making the request
|
|
55
|
-
* @param event - the event to send
|
|
56
|
-
* @param payload - the payload to send
|
|
57
|
-
*/
|
|
58
39
|
broadcastFrom(event, payload) {
|
|
59
40
|
__classPrivateFieldGet(this, _EventResponse_instances, "m", _EventResponse_sendMessage).call(this, pondsocket_common_1.ChannelReceiver.ALL_EXCEPT_SENDER, event, payload);
|
|
60
41
|
return this;
|
|
61
42
|
}
|
|
62
|
-
/**
|
|
63
|
-
* @desc Sends a message to a set of clients in the channel
|
|
64
|
-
* @param event - the event to send
|
|
65
|
-
* @param payload - the payload to send
|
|
66
|
-
* @param userIds - the ids of the clients to send the message to
|
|
67
|
-
*/
|
|
68
43
|
broadcastTo(event, payload, userIds) {
|
|
69
44
|
const ids = Array.isArray(userIds) ? userIds : [userIds];
|
|
70
45
|
__classPrivateFieldGet(this, _EventResponse_instances, "m", _EventResponse_sendMessage).call(this, ids, event, payload);
|
|
71
46
|
return this;
|
|
72
47
|
}
|
|
73
|
-
/**
|
|
74
|
-
* @desc Tracks a user's presence in the channel
|
|
75
|
-
* @param presence - the initial presence data
|
|
76
|
-
* @param userId - the id of the user to track
|
|
77
|
-
*/
|
|
78
48
|
trackPresence(presence, userId = __classPrivateFieldGet(this, _EventResponse_event, "f").sender) {
|
|
79
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").
|
|
49
|
+
__classPrivateFieldGet(this, _EventResponse_engine, "f").trackPresence(userId, presence);
|
|
80
50
|
return this;
|
|
81
51
|
}
|
|
82
|
-
/**
|
|
83
|
-
* @desc Updates a user's presence in the channel
|
|
84
|
-
* @param presence - the updated presence data
|
|
85
|
-
* @param userId - the id of the user to update
|
|
86
|
-
*/
|
|
87
52
|
updatePresence(presence, userId = __classPrivateFieldGet(this, _EventResponse_event, "f").sender) {
|
|
88
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").
|
|
89
|
-
return this;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* @desc Removes a user's presence from the channel
|
|
93
|
-
* @param userId - the id of the user to remove
|
|
94
|
-
*/
|
|
95
|
-
removePresence(userId = __classPrivateFieldGet(this, _EventResponse_event, "f").sender) {
|
|
96
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").presenceEngine.removePresence(userId);
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* @desc Subscribes the client to a channel
|
|
101
|
-
* @param channel - the channel to subscribe to
|
|
102
|
-
*/
|
|
103
|
-
subscribeTo(channel) {
|
|
104
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").subscribeTo(__classPrivateFieldGet(this, _EventResponse_event, "f").sender, channel);
|
|
53
|
+
__classPrivateFieldGet(this, _EventResponse_engine, "f").updatePresence(userId, presence);
|
|
105
54
|
return this;
|
|
106
55
|
}
|
|
107
|
-
/**
|
|
108
|
-
* @desc Unsubscribes the client from a channel
|
|
109
|
-
* @param channel - the channel to unsubscribe from
|
|
110
|
-
*/
|
|
111
|
-
unsubscribeFrom(channel) {
|
|
112
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").unsubscribeFrom(__classPrivateFieldGet(this, _EventResponse_event, "f").sender, channel);
|
|
113
|
-
return this;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* @desc Evicts a user from the channel
|
|
117
|
-
* @param reason - the reason for the eviction
|
|
118
|
-
* @param userId - the id of the user to evict,
|
|
119
|
-
*/
|
|
120
56
|
evictUser(reason, userId = __classPrivateFieldGet(this, _EventResponse_event, "f").sender) {
|
|
121
57
|
__classPrivateFieldGet(this, _EventResponse_engine, "f").kickUser(userId, reason);
|
|
122
58
|
return this;
|
|
123
59
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
*/
|
|
128
|
-
closeChannel(reason) {
|
|
129
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").destroy(reason);
|
|
60
|
+
removePresence(userId = __classPrivateFieldGet(this, _EventResponse_event, "f").sender) {
|
|
61
|
+
__classPrivateFieldGet(this, _EventResponse_engine, "f").removePresence(userId);
|
|
62
|
+
return this;
|
|
130
63
|
}
|
|
131
64
|
}
|
|
132
65
|
exports.EventResponse = EventResponse;
|
|
133
|
-
_EventResponse_event = new WeakMap(), _EventResponse_engine = new WeakMap(), _EventResponse_requestId = new WeakMap(), _EventResponse_instances = new WeakSet(),
|
|
134
|
-
if (assigns) {
|
|
135
|
-
__classPrivateFieldGet(this, _EventResponse_engine, "f").updateAssigns(__classPrivateFieldGet(this, _EventResponse_event, "f").sender, assigns);
|
|
136
|
-
}
|
|
137
|
-
}, _EventResponse_sendMessage = function _EventResponse_sendMessage(recipient, event, payload) {
|
|
66
|
+
_EventResponse_event = new WeakMap(), _EventResponse_engine = new WeakMap(), _EventResponse_requestId = new WeakMap(), _EventResponse_instances = new WeakSet(), _EventResponse_sendMessage = function _EventResponse_sendMessage(recipient, event, payload) {
|
|
138
67
|
__classPrivateFieldGet(this, _EventResponse_engine, "f").sendMessage(__classPrivateFieldGet(this, _EventResponse_event, "f").sender, recipient, pondsocket_common_1.ServerActions.BROADCAST, event, payload, __classPrivateFieldGet(this, _EventResponse_requestId, "f"));
|
|
139
68
|
};
|
|
@@ -10,11 +10,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _JoinResponse_instances, _JoinResponse_user, _JoinResponse_engine, _JoinResponse_newAssigns, _JoinResponse_executed, _JoinResponse_accepted,
|
|
13
|
+
var _JoinResponse_instances, _JoinResponse_user, _JoinResponse_engine, _JoinResponse_newAssigns, _JoinResponse_executed, _JoinResponse_accepted, _JoinResponse_sendMessage, _JoinResponse_directMessage, _JoinResponse_performChecks;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.JoinResponse = void 0;
|
|
16
16
|
const pondsocket_common_1 = require("@eleven-am/pondsocket-common");
|
|
17
|
-
const
|
|
17
|
+
const httpError_1 = require("../errors/httpError");
|
|
18
18
|
class JoinResponse {
|
|
19
19
|
constructor(user, engine) {
|
|
20
20
|
_JoinResponse_instances.add(this);
|
|
@@ -29,41 +29,14 @@ class JoinResponse {
|
|
|
29
29
|
__classPrivateFieldSet(this, _JoinResponse_accepted, false, "f");
|
|
30
30
|
__classPrivateFieldSet(this, _JoinResponse_newAssigns, Object.assign({}, user.assigns), "f");
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
33
|
-
* @desc Whether the server has responded to the request
|
|
34
|
-
*/
|
|
35
|
-
get hasResponded() {
|
|
36
|
-
return __classPrivateFieldGet(this, _JoinResponse_executed, "f");
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* @desc Assigns data to the client
|
|
40
|
-
* @param assigns - the data to assign
|
|
41
|
-
*/
|
|
42
|
-
assign(assigns) {
|
|
43
|
-
if (__classPrivateFieldGet(this, _JoinResponse_accepted, "f")) {
|
|
44
|
-
__classPrivateFieldGet(this, _JoinResponse_engine, "f").updateAssigns(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, assigns);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
__classPrivateFieldSet(this, _JoinResponse_newAssigns, Object.assign(Object.assign({}, __classPrivateFieldGet(this, _JoinResponse_newAssigns, "f")), assigns), "f");
|
|
48
|
-
}
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @desc Accepts the join request to the channel
|
|
53
|
-
*/
|
|
54
32
|
accept() {
|
|
55
33
|
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_performChecks).call(this);
|
|
56
34
|
const onMessage = __classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_directMessage).bind(this);
|
|
57
|
-
const
|
|
58
|
-
__classPrivateFieldGet(this, _JoinResponse_user, "f").subscriptions.
|
|
35
|
+
const subscription = __classPrivateFieldGet(this, _JoinResponse_engine, "f").addUser(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, __classPrivateFieldGet(this, _JoinResponse_newAssigns, "f"), onMessage);
|
|
36
|
+
__classPrivateFieldGet(this, _JoinResponse_user, "f").subscriptions.add(subscription);
|
|
59
37
|
__classPrivateFieldSet(this, _JoinResponse_accepted, true, "f");
|
|
60
38
|
return this;
|
|
61
39
|
}
|
|
62
|
-
/**
|
|
63
|
-
* @desc Rejects the request and optionally assigns data to the client
|
|
64
|
-
* @param message - the error message
|
|
65
|
-
* @param errorCode - the error code
|
|
66
|
-
*/
|
|
67
40
|
decline(message, errorCode) {
|
|
68
41
|
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_performChecks).call(this);
|
|
69
42
|
const errorMessage = {
|
|
@@ -79,11 +52,15 @@ class JoinResponse {
|
|
|
79
52
|
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_directMessage).call(this, errorMessage);
|
|
80
53
|
return this;
|
|
81
54
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
55
|
+
assign(assigns) {
|
|
56
|
+
if (__classPrivateFieldGet(this, _JoinResponse_accepted, "f")) {
|
|
57
|
+
void __classPrivateFieldGet(this, _JoinResponse_engine, "f").updateAssigns(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, assigns);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
__classPrivateFieldSet(this, _JoinResponse_newAssigns, Object.assign(Object.assign({}, __classPrivateFieldGet(this, _JoinResponse_newAssigns, "f")), assigns), "f");
|
|
61
|
+
}
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
87
64
|
reply(event, payload) {
|
|
88
65
|
const message = {
|
|
89
66
|
action: pondsocket_common_1.ServerActions.SYSTEM,
|
|
@@ -95,70 +72,34 @@ class JoinResponse {
|
|
|
95
72
|
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_directMessage).call(this, message);
|
|
96
73
|
return this;
|
|
97
74
|
}
|
|
98
|
-
/**
|
|
99
|
-
* @desc Sends a message to all clients in the channel
|
|
100
|
-
* @param event - the event to send
|
|
101
|
-
* @param payload - the payload to send
|
|
102
|
-
*/
|
|
103
|
-
broadcast(event, payload) {
|
|
104
|
-
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_sendMessage).call(this, pondsocket_common_1.ChannelReceiver.ALL_USERS, event, payload);
|
|
105
|
-
return this;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* @desc Sends a message to all clients in the channel except the client making the request
|
|
109
|
-
* @param event - the event to send
|
|
110
|
-
* @param payload - the payload to send
|
|
111
|
-
*/
|
|
112
|
-
broadcastFrom(event, payload) {
|
|
113
|
-
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_sendMessage).call(this, pondsocket_common_1.ChannelReceiver.ALL_EXCEPT_SENDER, event, payload);
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @desc Sends a message to a set of clients in the channel
|
|
118
|
-
* @param event - the event to send
|
|
119
|
-
* @param payload - the payload to send
|
|
120
|
-
* @param userIds - the ids of the clients to send the message to
|
|
121
|
-
*/
|
|
122
75
|
broadcastTo(event, payload, userIds) {
|
|
123
76
|
const ids = Array.isArray(userIds) ? userIds : [userIds];
|
|
124
77
|
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_sendMessage).call(this, ids, event, payload);
|
|
125
78
|
return this;
|
|
126
79
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
* @param presence - the initial presence data
|
|
130
|
-
*/
|
|
131
|
-
trackPresence(presence) {
|
|
132
|
-
__classPrivateFieldGet(this, _JoinResponse_engine, "f").presenceEngine.trackPresence(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, presence);
|
|
80
|
+
broadcast(event, payload) {
|
|
81
|
+
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_sendMessage).call(this, pondsocket_common_1.ChannelReceiver.ALL_USERS, event, payload);
|
|
133
82
|
return this;
|
|
134
83
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
* @param channel - the channel to subscribe to
|
|
138
|
-
*/
|
|
139
|
-
subscribeTo(channel) {
|
|
140
|
-
__classPrivateFieldGet(this, _JoinResponse_engine, "f").subscribeTo(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, channel);
|
|
84
|
+
broadcastFrom(event, payload) {
|
|
85
|
+
__classPrivateFieldGet(this, _JoinResponse_instances, "m", _JoinResponse_sendMessage).call(this, pondsocket_common_1.ChannelReceiver.ALL_EXCEPT_SENDER, event, payload);
|
|
141
86
|
return this;
|
|
142
87
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
* @param channel - the channel to unsubscribe from
|
|
146
|
-
*/
|
|
147
|
-
unsubscribeFrom(channel) {
|
|
148
|
-
__classPrivateFieldGet(this, _JoinResponse_engine, "f").unsubscribeFrom(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, channel);
|
|
88
|
+
trackPresence(presence) {
|
|
89
|
+
__classPrivateFieldGet(this, _JoinResponse_engine, "f").trackPresence(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, presence);
|
|
149
90
|
return this;
|
|
150
91
|
}
|
|
151
92
|
}
|
|
152
93
|
exports.JoinResponse = JoinResponse;
|
|
153
|
-
_JoinResponse_user = new WeakMap(), _JoinResponse_engine = new WeakMap(), _JoinResponse_newAssigns = new WeakMap(), _JoinResponse_executed = new WeakMap(), _JoinResponse_accepted = new WeakMap(), _JoinResponse_instances = new WeakSet(),
|
|
94
|
+
_JoinResponse_user = new WeakMap(), _JoinResponse_engine = new WeakMap(), _JoinResponse_newAssigns = new WeakMap(), _JoinResponse_executed = new WeakMap(), _JoinResponse_accepted = new WeakMap(), _JoinResponse_instances = new WeakSet(), _JoinResponse_sendMessage = function _JoinResponse_sendMessage(recipient, event, payload) {
|
|
95
|
+
__classPrivateFieldGet(this, _JoinResponse_engine, "f").sendMessage(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, recipient, pondsocket_common_1.ServerActions.BROADCAST, event, payload, __classPrivateFieldGet(this, _JoinResponse_user, "f").requestId);
|
|
96
|
+
}, _JoinResponse_directMessage = function _JoinResponse_directMessage(event) {
|
|
97
|
+
__classPrivateFieldGet(this, _JoinResponse_engine, "f").parent.parent.sendMessage(__classPrivateFieldGet(this, _JoinResponse_user, "f").socket, event);
|
|
98
|
+
}, _JoinResponse_performChecks = function _JoinResponse_performChecks() {
|
|
154
99
|
if (__classPrivateFieldGet(this, _JoinResponse_executed, "f")) {
|
|
155
100
|
const message = `Request to join channel ${__classPrivateFieldGet(this, _JoinResponse_engine, "f").name} rejected: Request already executed`;
|
|
156
101
|
const code = 403;
|
|
157
|
-
throw new
|
|
102
|
+
throw new httpError_1.HttpError(code, message);
|
|
158
103
|
}
|
|
159
104
|
__classPrivateFieldSet(this, _JoinResponse_executed, true, "f");
|
|
160
|
-
}, _JoinResponse_sendMessage = function _JoinResponse_sendMessage(recipient, event, payload) {
|
|
161
|
-
__classPrivateFieldGet(this, _JoinResponse_engine, "f").sendMessage(__classPrivateFieldGet(this, _JoinResponse_user, "f").clientId, recipient, pondsocket_common_1.ServerActions.BROADCAST, event, payload, __classPrivateFieldGet(this, _JoinResponse_user, "f").requestId);
|
|
162
|
-
}, _JoinResponse_directMessage = function _JoinResponse_directMessage(event) {
|
|
163
|
-
__classPrivateFieldGet(this, _JoinResponse_engine, "f").parent.parent.sendMessage(__classPrivateFieldGet(this, _JoinResponse_user, "f").socket, event);
|
|
164
105
|
};
|