@eleven-am/pondsocket 0.1.214 → 0.1.216
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/distributor.d.ts +13 -0
- package/abstracts/distributor.js +148 -56
- package/abstracts/middleware.d.ts +22 -0
- package/abstracts/middleware.js +8 -1
- package/abstracts/types.d.ts +65 -0
- package/abstracts/types.js +0 -14
- package/contexts/baseContext.d.ts +20 -0
- package/contexts/baseContext.js +17 -25
- package/contexts/connectionContext.d.ts +66 -0
- package/contexts/connectionContext.js +1 -0
- package/contexts/eventContext.d.ts +15 -0
- package/contexts/eventContext.js +5 -49
- package/contexts/joinContext.d.ts +17 -0
- package/contexts/joinContext.js +14 -55
- package/contexts/outgoingContext.d.ts +28 -0
- package/contexts/outgoingContext.js +3 -0
- package/engines/channelEngine.d.ts +26 -0
- package/engines/channelEngine.js +243 -192
- package/engines/endpointEngine.d.ts +34 -0
- package/engines/endpointEngine.js +23 -7
- package/engines/lobbyEngine.d.ts +54 -0
- package/engines/lobbyEngine.js +1 -1
- package/engines/presenceEngine.d.ts +15 -0
- package/engines/presenceEngine.js +6 -59
- package/errors/httpError.d.ts +6 -0
- package/errors/httpError.js +2 -0
- package/index.d.ts +14 -5
- package/index.js +37 -3
- package/matcher/matcher.d.ts +2 -0
- package/matcher/matcher.js +5 -5
- package/package.json +44 -21
- package/server/server.d.ts +21 -0
- package/server/server.js +55 -12
- package/types.d.ts +59 -622
- package/types.js +19 -0
- package/wrappers/channel.d.ts +54 -0
- package/wrappers/endpoint.d.ts +10 -0
- package/wrappers/pondChannel.d.ts +15 -0
package/server/server.js
CHANGED
|
@@ -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 _PondSocket_instances, _PondSocket_server, _PondSocket_exclusiveServer, _PondSocket_socketServer, _PondSocket_backend, _PondSocket_middleware, _PondSocket_handleUpgrade, _PondSocket_manageHeartbeat, _PondSocket_init, _PondSocket_getCookies;
|
|
13
|
+
var _PondSocket_instances, _PondSocket_server, _PondSocket_exclusiveServer, _PondSocket_socketServer, _PondSocket_backend, _PondSocket_middleware, _PondSocket_maxMessageSize, _PondSocket_heartbeatMs, _PondSocket_heartbeatTimer, _PondSocket_backendReady, _PondSocket_handleUpgrade, _PondSocket_manageHeartbeat, _PondSocket_init, _PondSocket_getCookies;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.PondSocket = void 0;
|
|
16
16
|
const http_1 = require("http");
|
|
@@ -22,17 +22,23 @@ const endpointEngine_1 = require("../engines/endpointEngine");
|
|
|
22
22
|
const matcher_1 = require("../matcher/matcher");
|
|
23
23
|
const endpoint_1 = require("../wrappers/endpoint");
|
|
24
24
|
class PondSocket {
|
|
25
|
-
constructor({ server, socketServer, exclusiveServer = true, distributedBackend, } = {}) {
|
|
25
|
+
constructor({ server, socketServer, exclusiveServer = true, distributedBackend, maxMessageSize = 1024 * 1024, heartbeatInterval = 30000, } = {}) {
|
|
26
26
|
_PondSocket_instances.add(this);
|
|
27
27
|
_PondSocket_server.set(this, void 0);
|
|
28
28
|
_PondSocket_exclusiveServer.set(this, void 0);
|
|
29
29
|
_PondSocket_socketServer.set(this, void 0);
|
|
30
30
|
_PondSocket_backend.set(this, void 0);
|
|
31
31
|
_PondSocket_middleware.set(this, void 0);
|
|
32
|
+
_PondSocket_maxMessageSize.set(this, void 0);
|
|
33
|
+
_PondSocket_heartbeatMs.set(this, void 0);
|
|
34
|
+
_PondSocket_heartbeatTimer.set(this, null);
|
|
35
|
+
_PondSocket_backendReady.set(this, null);
|
|
32
36
|
__classPrivateFieldSet(this, _PondSocket_middleware, new middleware_1.Middleware(), "f");
|
|
33
37
|
__classPrivateFieldSet(this, _PondSocket_exclusiveServer, exclusiveServer, "f");
|
|
34
38
|
__classPrivateFieldSet(this, _PondSocket_server, server !== null && server !== void 0 ? server : new http_1.Server(), "f");
|
|
35
39
|
__classPrivateFieldSet(this, _PondSocket_backend, distributedBackend !== null && distributedBackend !== void 0 ? distributedBackend : null, "f");
|
|
40
|
+
__classPrivateFieldSet(this, _PondSocket_maxMessageSize, maxMessageSize, "f");
|
|
41
|
+
__classPrivateFieldSet(this, _PondSocket_heartbeatMs, heartbeatInterval, "f");
|
|
36
42
|
__classPrivateFieldSet(this, _PondSocket_socketServer, socketServer !== null && socketServer !== void 0 ? socketServer : new ws_1.WebSocketServer({ noServer: true }), "f");
|
|
37
43
|
__classPrivateFieldGet(this, _PondSocket_instances, "m", _PondSocket_init).call(this);
|
|
38
44
|
}
|
|
@@ -45,14 +51,36 @@ class PondSocket {
|
|
|
45
51
|
/**
|
|
46
52
|
* Close the server
|
|
47
53
|
*/
|
|
48
|
-
close(callback) {
|
|
54
|
+
close(callback, timeout = 5000) {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
if (__classPrivateFieldGet(this, _PondSocket_heartbeatTimer, "f")) {
|
|
57
|
+
clearInterval(__classPrivateFieldGet(this, _PondSocket_heartbeatTimer, "f"));
|
|
58
|
+
__classPrivateFieldSet(this, _PondSocket_heartbeatTimer, null, "f");
|
|
59
|
+
}
|
|
60
|
+
__classPrivateFieldGet(this, _PondSocket_socketServer, "f").clients.forEach((socket) => {
|
|
61
|
+
if (socket.readyState === ws_1.WebSocket.OPEN) {
|
|
62
|
+
socket.close(1001, 'Server shutting down');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const forceClose = setTimeout(() => {
|
|
66
|
+
__classPrivateFieldGet(this, _PondSocket_socketServer, "f").clients.forEach((socket) => {
|
|
67
|
+
if (socket.readyState !== ws_1.WebSocket.CLOSED) {
|
|
68
|
+
socket.terminate();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
__classPrivateFieldGet(this, _PondSocket_socketServer, "f").close();
|
|
72
|
+
}, timeout);
|
|
73
|
+
__classPrivateFieldGet(this, _PondSocket_socketServer, "f").close(() => {
|
|
74
|
+
clearTimeout(forceClose);
|
|
75
|
+
});
|
|
76
|
+
__classPrivateFieldSet(this, _PondSocket_backendReady, (_b = (_a = __classPrivateFieldGet(this, _PondSocket_backendReady, "f")) === null || _a === void 0 ? void 0 : _a.catch(() => { }).then(() => { var _a; return (_a = __classPrivateFieldGet(this, _PondSocket_backend, "f")) === null || _a === void 0 ? void 0 : _a.cleanup(); }).catch(() => { })) !== null && _b !== void 0 ? _b : null, "f");
|
|
49
77
|
return __classPrivateFieldGet(this, _PondSocket_server, "f").close(callback);
|
|
50
78
|
}
|
|
51
79
|
/**
|
|
52
80
|
* Create a new endpoint
|
|
53
81
|
*/
|
|
54
82
|
createEndpoint(path, handler) {
|
|
55
|
-
const endpoint = new endpointEngine_1.EndpointEngine(String(path), __classPrivateFieldGet(this, _PondSocket_backend, "f"));
|
|
83
|
+
const endpoint = new endpointEngine_1.EndpointEngine(String(path), __classPrivateFieldGet(this, _PondSocket_backend, "f"), __classPrivateFieldGet(this, _PondSocket_maxMessageSize, "f"));
|
|
56
84
|
__classPrivateFieldGet(this, _PondSocket_middleware, "f").use((req, params, next) => {
|
|
57
85
|
const event = (0, matcher_1.parseAddress)(path, req.address);
|
|
58
86
|
if (!event) {
|
|
@@ -71,8 +99,8 @@ class PondSocket {
|
|
|
71
99
|
}
|
|
72
100
|
}
|
|
73
101
|
exports.PondSocket = PondSocket;
|
|
74
|
-
_PondSocket_server = new WeakMap(), _PondSocket_exclusiveServer = new WeakMap(), _PondSocket_socketServer = new WeakMap(), _PondSocket_backend = new WeakMap(), _PondSocket_middleware = new WeakMap(), _PondSocket_instances = new WeakSet(), _PondSocket_handleUpgrade = function _PondSocket_handleUpgrade(req, socket, head) {
|
|
75
|
-
const clientId =
|
|
102
|
+
_PondSocket_server = new WeakMap(), _PondSocket_exclusiveServer = new WeakMap(), _PondSocket_socketServer = new WeakMap(), _PondSocket_backend = new WeakMap(), _PondSocket_middleware = new WeakMap(), _PondSocket_maxMessageSize = new WeakMap(), _PondSocket_heartbeatMs = new WeakMap(), _PondSocket_heartbeatTimer = new WeakMap(), _PondSocket_backendReady = new WeakMap(), _PondSocket_instances = new WeakSet(), _PondSocket_handleUpgrade = function _PondSocket_handleUpgrade(req, socket, head) {
|
|
103
|
+
const clientId = (0, pondsocket_common_1.uuid)();
|
|
76
104
|
const request = {
|
|
77
105
|
id: clientId,
|
|
78
106
|
headers: req.headers,
|
|
@@ -110,15 +138,25 @@ _PondSocket_server = new WeakMap(), _PondSocket_exclusiveServer = new WeakMap(),
|
|
|
110
138
|
socket.isAlive = false;
|
|
111
139
|
socket.ping();
|
|
112
140
|
});
|
|
113
|
-
},
|
|
141
|
+
}, __classPrivateFieldGet(this, _PondSocket_heartbeatMs, "f"));
|
|
114
142
|
}, _PondSocket_init = function _PondSocket_init() {
|
|
115
|
-
|
|
143
|
+
var _a, _b;
|
|
144
|
+
__classPrivateFieldSet(this, _PondSocket_heartbeatTimer, __classPrivateFieldGet(this, _PondSocket_instances, "m", _PondSocket_manageHeartbeat).call(this), "f");
|
|
145
|
+
__classPrivateFieldSet(this, _PondSocket_backendReady, (_b = (_a = __classPrivateFieldGet(this, _PondSocket_backend, "f")) === null || _a === void 0 ? void 0 : _a.initialize().catch((error) => {
|
|
146
|
+
__classPrivateFieldGet(this, _PondSocket_server, "f").emit('error', error);
|
|
147
|
+
})) !== null && _b !== void 0 ? _b : null, "f");
|
|
116
148
|
__classPrivateFieldGet(this, _PondSocket_server, "f").on('error', (error) => {
|
|
117
|
-
|
|
149
|
+
if (__classPrivateFieldGet(this, _PondSocket_heartbeatTimer, "f")) {
|
|
150
|
+
clearInterval(__classPrivateFieldGet(this, _PondSocket_heartbeatTimer, "f"));
|
|
151
|
+
__classPrivateFieldSet(this, _PondSocket_heartbeatTimer, null, "f");
|
|
152
|
+
}
|
|
118
153
|
throw new Error(error.message);
|
|
119
154
|
});
|
|
120
155
|
__classPrivateFieldGet(this, _PondSocket_server, "f").on('close', () => {
|
|
121
|
-
|
|
156
|
+
if (__classPrivateFieldGet(this, _PondSocket_heartbeatTimer, "f")) {
|
|
157
|
+
clearInterval(__classPrivateFieldGet(this, _PondSocket_heartbeatTimer, "f"));
|
|
158
|
+
__classPrivateFieldSet(this, _PondSocket_heartbeatTimer, null, "f");
|
|
159
|
+
}
|
|
122
160
|
});
|
|
123
161
|
__classPrivateFieldGet(this, _PondSocket_server, "f").on('upgrade', __classPrivateFieldGet(this, _PondSocket_instances, "m", _PondSocket_handleUpgrade).bind(this));
|
|
124
162
|
}, _PondSocket_getCookies = function _PondSocket_getCookies(headers) {
|
|
@@ -128,8 +166,13 @@ _PondSocket_server = new WeakMap(), _PondSocket_exclusiveServer = new WeakMap(),
|
|
|
128
166
|
}
|
|
129
167
|
return cookieHeader.split(';')
|
|
130
168
|
.reduce((cookies, cookie) => {
|
|
131
|
-
const
|
|
132
|
-
|
|
169
|
+
const trimmed = cookie.trim();
|
|
170
|
+
const eqIndex = trimmed.indexOf('=');
|
|
171
|
+
if (eqIndex === -1) {
|
|
172
|
+
return cookies;
|
|
173
|
+
}
|
|
174
|
+
const name = trimmed.slice(0, eqIndex);
|
|
175
|
+
const value = trimmed.slice(eqIndex + 1);
|
|
133
176
|
cookies[name] = decodeURIComponent(value);
|
|
134
177
|
return cookies;
|
|
135
178
|
}, {});
|