@eleven-am/pondsocket 0.1.194 → 0.1.196

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eleven-am/pondsocket",
3
- "version": "0.1.194",
3
+ "version": "0.1.196",
4
4
  "description": "PondSocket is a fast simple socket server",
5
5
  "keywords": [
6
6
  "socket",
@@ -35,36 +35,35 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@eleven-am/pondsocket-common": "^0.0.26",
38
- "ioredis": "^5.5.0",
38
+ "ioredis": "^5.6.1",
39
39
  "ws": "^8.18.1"
40
40
  },
41
41
  "devDependencies": {
42
- "@eslint/compat": "^1.2.7",
43
- "@eslint/eslintrc": "^3.3.0",
44
- "@eslint/js": "^9.21.0",
45
- "@stylistic/eslint-plugin-ts": "^4.0.1",
42
+ "@eslint/compat": "^1.2.8",
43
+ "@eslint/eslintrc": "^3.3.1",
44
+ "@eslint/js": "^9.25.1",
45
+ "@stylistic/eslint-plugin-ts": "^4.2.0",
46
46
  "@types/jest": "^29.5.14",
47
- "@types/node": "^22.13.5",
48
- "@types/ws": "^8.5.14",
49
- "@typescript-eslint/eslint-plugin": "^8.24.1",
50
- "@typescript-eslint/parser": "^8.24.1",
51
- "eslint": "^9.21.0",
52
- "eslint-config-prettier": "^10.0.1",
47
+ "@types/node": "^22.15.3",
48
+ "@types/ws": "^8.18.1",
49
+ "@typescript-eslint/eslint-plugin": "^8.31.0",
50
+ "@typescript-eslint/parser": "^8.31.0",
51
+ "eslint": "^9.25.1",
52
+ "eslint-config-prettier": "^10.1.2",
53
53
  "eslint-import-resolver-node": "^0.3.9",
54
- "eslint-plugin-file-progress": "^3.0.1",
54
+ "eslint-plugin-file-progress": "^3.0.2",
55
55
  "eslint-plugin-import": "^2.31.0",
56
- "eslint-plugin-prettier": "^5.2.3",
56
+ "eslint-plugin-prettier": "^5.2.6",
57
57
  "globals": "^16.0.0",
58
58
  "jest": "^29.7.0",
59
- "nodemon": "^3.1.9",
60
- "prettier": "^3.5.2",
59
+ "prettier": "^3.5.3",
61
60
  "source-map-support": "^0.5.21",
62
- "supertest": "^7.0.0",
63
- "ts-jest": "^29.2.6",
61
+ "supertest": "^7.1.0",
62
+ "ts-jest": "^29.3.2",
64
63
  "ts-loader": "^9.5.2",
65
64
  "ts-node": "^10.9.2",
66
65
  "tsconfig-paths": "^4.2.0",
67
- "typescript": "^5.7.3"
66
+ "typescript": "^5.8.3"
68
67
  },
69
68
  "jest": {
70
69
  "moduleFileExtensions": [
package/server/server.js CHANGED
@@ -19,7 +19,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
19
19
  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");
20
20
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
21
  };
22
- var _PondSocket_instances, _PondSocket_server, _PondSocket_socketServer, _PondSocket_redisClient, _PondSocket_middleware, _PondSocket_manageHeartbeat, _PondSocket_init, _PondSocket_getCookies;
22
+ var _PondSocket_instances, _PondSocket_exclusiveServer, _PondSocket_server, _PondSocket_socketServer, _PondSocket_redisClient, _PondSocket_middleware, _PondSocket_manageHeartbeat, _PondSocket_init, _PondSocket_handleUpgrade, _PondSocket_getCookies;
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.PondSocket = void 0;
25
25
  const http_1 = require("http");
@@ -32,13 +32,15 @@ const matcher_1 = require("../matcher/matcher");
32
32
  const connectionResponse_1 = require("../responses/connectionResponse");
33
33
  const endpoint_1 = require("../wrappers/endpoint");
34
34
  class PondSocket {
35
- constructor({ server, socketServer, redisOptions } = {}) {
35
+ constructor({ server, socketServer, redisOptions, exclusiveServer = true } = {}) {
36
36
  _PondSocket_instances.add(this);
37
+ _PondSocket_exclusiveServer.set(this, void 0);
37
38
  _PondSocket_server.set(this, void 0);
38
39
  _PondSocket_socketServer.set(this, void 0);
39
40
  _PondSocket_redisClient.set(this, void 0);
40
41
  _PondSocket_middleware.set(this, void 0);
41
42
  __classPrivateFieldSet(this, _PondSocket_middleware, new middleware_1.Middleware(), "f");
43
+ __classPrivateFieldSet(this, _PondSocket_exclusiveServer, exclusiveServer, "f");
42
44
  __classPrivateFieldSet(this, _PondSocket_server, server !== null && server !== void 0 ? server : new http_1.Server(), "f");
43
45
  __classPrivateFieldSet(this, _PondSocket_redisClient, redisOptions ? new redisClient_1.RedisClient(redisOptions) : null, "f");
44
46
  __classPrivateFieldSet(this, _PondSocket_socketServer, socketServer !== null && socketServer !== void 0 ? socketServer : new ws_1.WebSocketServer({ noServer: true }), "f");
@@ -77,7 +79,7 @@ class PondSocket {
77
79
  }
78
80
  }
79
81
  exports.PondSocket = PondSocket;
80
- _PondSocket_server = new WeakMap(), _PondSocket_socketServer = new WeakMap(), _PondSocket_redisClient = new WeakMap(), _PondSocket_middleware = new WeakMap(), _PondSocket_instances = new WeakSet(), _PondSocket_manageHeartbeat = function _PondSocket_manageHeartbeat() {
82
+ _PondSocket_exclusiveServer = new WeakMap(), _PondSocket_server = new WeakMap(), _PondSocket_socketServer = new WeakMap(), _PondSocket_redisClient = new WeakMap(), _PondSocket_middleware = new WeakMap(), _PondSocket_instances = new WeakSet(), _PondSocket_manageHeartbeat = function _PondSocket_manageHeartbeat() {
81
83
  __classPrivateFieldGet(this, _PondSocket_socketServer, "f").on('connection', (socket) => {
82
84
  socket.on('pong', () => {
83
85
  socket.isAlive = true;
@@ -106,24 +108,32 @@ _PondSocket_server = new WeakMap(), _PondSocket_socketServer = new WeakMap(), _P
106
108
  yield ((_a = __classPrivateFieldGet(this, _PondSocket_redisClient, "f")) === null || _a === void 0 ? void 0 : _a.shutdown());
107
109
  }));
108
110
  __classPrivateFieldGet(this, _PondSocket_server, "f").on('upgrade', (req, socket, head) => {
109
- const clientId = req.headers['sec-websocket-key'];
110
- const request = {
111
- id: clientId,
112
- headers: req.headers,
113
- address: req.url || '',
114
- };
115
- const params = {
116
- head,
117
- socket,
118
- request: req,
119
- requestId: (0, pondsocket_common_1.uuid)(),
120
- };
121
- __classPrivateFieldGet(this, _PondSocket_middleware, "f").run(request, params, (error) => {
111
+ __classPrivateFieldGet(this, _PondSocket_instances, "m", _PondSocket_handleUpgrade).call(this, req, socket, head);
112
+ });
113
+ }, _PondSocket_handleUpgrade = function _PondSocket_handleUpgrade(req, socket, head) {
114
+ const clientId = req.headers['sec-websocket-key'];
115
+ const request = {
116
+ id: clientId,
117
+ headers: req.headers,
118
+ address: req.url || '',
119
+ };
120
+ const params = {
121
+ head,
122
+ socket,
123
+ request: req,
124
+ requestId: (0, pondsocket_common_1.uuid)(),
125
+ };
126
+ __classPrivateFieldGet(this, _PondSocket_middleware, "f").run(request, params, (error) => {
127
+ if (error) {
122
128
  const code = (error === null || error === void 0 ? void 0 : error.statusCode) || 400;
123
129
  const message = (error === null || error === void 0 ? void 0 : error.message) || 'Unauthorized connection';
124
130
  socket.write(`HTTP/1.1 ${code} ${message}\r\n\r\n`);
125
131
  socket.destroy();
126
- });
132
+ }
133
+ else if (__classPrivateFieldGet(this, _PondSocket_exclusiveServer, "f")) {
134
+ socket.write('HTTP/1.1 404 Not Found\r\n\r\n');
135
+ socket.destroy();
136
+ }
127
137
  });
128
138
  }, _PondSocket_getCookies = function _PondSocket_getCookies(headers) {
129
139
  const cookieHeader = headers.cookie;
package/types.d.ts CHANGED
@@ -37,6 +37,7 @@ export type RequestHandler<Request, Response> = (request: Request, response: Res
37
37
 
38
38
  export interface PondSocketOptions {
39
39
  server?: Server;
40
+ exclusiveServer?: boolean;
40
41
  redisOptions?: RedisOptions;
41
42
  socketServer?: WebSocketServer;
42
43
  }