fix eslint errors
This commit is contained in:
parent
d6cb7d51ce
commit
ef7e79f99f
@ -1,2 +1 @@
|
|||||||
src/
|
|
||||||
dist/
|
dist/
|
@ -31,6 +31,7 @@
|
|||||||
"requireLast": true
|
"requireLast": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"@typescript-eslint/explicit-function-return-type": "off"
|
||||||
}
|
}
|
||||||
}
|
}
|
21
dist/src/index.js
vendored
21
dist/src/index.js
vendored
@ -1,4 +1,15 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __rest = (this && this.__rest) || function (s, e) {
|
||||||
|
var t = {};
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||||||
|
t[p] = s[p];
|
||||||
|
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||||||
|
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||||
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||||||
|
t[p[i]] = s[p[i]];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
@ -26,14 +37,14 @@ function ExpressPeerServer(server, options) {
|
|||||||
exports.ExpressPeerServer = ExpressPeerServer;
|
exports.ExpressPeerServer = ExpressPeerServer;
|
||||||
function PeerServer(options = {}, callback) {
|
function PeerServer(options = {}, callback) {
|
||||||
const app = express_1.default();
|
const app = express_1.default();
|
||||||
const newOptions = Object.assign(Object.assign({}, config_1.default), options);
|
let newOptions = Object.assign(Object.assign({}, config_1.default), options);
|
||||||
const port = newOptions.port;
|
const port = newOptions.port;
|
||||||
const host = newOptions.host;
|
const host = newOptions.host;
|
||||||
let server;
|
let server;
|
||||||
if (newOptions.ssl && newOptions.ssl.key && newOptions.ssl.cert) {
|
const { ssl } = newOptions, restOptions = __rest(newOptions, ["ssl"]);
|
||||||
server = https_1.default.createServer(options.ssl, app);
|
if (ssl && ssl.key && ssl.cert) {
|
||||||
// @ts-ignore
|
server = https_1.default.createServer(ssl, app);
|
||||||
delete newOptions.ssl;
|
newOptions = restOptions;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
server = http_1.default.createServer(app);
|
server = http_1.default.createServer(app);
|
||||||
|
2
dist/src/instance.js
vendored
2
dist/src/instance.js
vendored
@ -35,7 +35,7 @@ exports.createInstance = ({ app, server, options }) => {
|
|||||||
const messageQueue = realm.getMessageQueueById(client.getId());
|
const messageQueue = realm.getMessageQueueById(client.getId());
|
||||||
if (messageQueue) {
|
if (messageQueue) {
|
||||||
let message;
|
let message;
|
||||||
while (message = messageQueue.readMessage()) {
|
while ((message = messageQueue.readMessage())) {
|
||||||
messageHandler.handle(client, message);
|
messageHandler.handle(client, message);
|
||||||
}
|
}
|
||||||
realm.clearMessageQueue(client.getId());
|
realm.clearMessageQueue(client.getId());
|
||||||
|
3
dist/src/models/realm.js
vendored
3
dist/src/models/realm.js
vendored
@ -33,10 +33,11 @@ class Realm {
|
|||||||
return this.messageQueues.get(id);
|
return this.messageQueues.get(id);
|
||||||
}
|
}
|
||||||
addMessageToQueue(id, message) {
|
addMessageToQueue(id, message) {
|
||||||
|
var _a;
|
||||||
if (!this.getMessageQueueById(id)) {
|
if (!this.getMessageQueueById(id)) {
|
||||||
this.messageQueues.set(id, new messageQueue_1.MessageQueue());
|
this.messageQueues.set(id, new messageQueue_1.MessageQueue());
|
||||||
}
|
}
|
||||||
this.getMessageQueueById(id).addMessage(message);
|
(_a = this.getMessageQueueById(id)) === null || _a === void 0 ? void 0 : _a.addMessage(message);
|
||||||
}
|
}
|
||||||
clearMessageQueue(id) {
|
clearMessageQueue(id) {
|
||||||
this.messageQueues.delete(id);
|
this.messageQueues.delete(id);
|
||||||
|
@ -32,6 +32,8 @@ class CheckBrokenConnections {
|
|||||||
const { alive_timeout: aliveTimeout } = this.config;
|
const { alive_timeout: aliveTimeout } = this.config;
|
||||||
for (const clientId of clientsIds) {
|
for (const clientId of clientsIds) {
|
||||||
const client = this.realm.getClientById(clientId);
|
const client = this.realm.getClientById(clientId);
|
||||||
|
if (!client)
|
||||||
|
continue;
|
||||||
const timeSinceLastPing = now - client.getLastPing();
|
const timeSinceLastPing = now - client.getLastPing();
|
||||||
if (timeSinceLastPing < aliveTimeout)
|
if (timeSinceLastPing < aliveTimeout)
|
||||||
continue;
|
continue;
|
||||||
|
2
dist/src/services/messagesExpire/index.js
vendored
2
dist/src/services/messagesExpire/index.js
vendored
@ -32,6 +32,8 @@ class MessagesExpire {
|
|||||||
const seen = {};
|
const seen = {};
|
||||||
for (const destinationClientId of destinationClientsIds) {
|
for (const destinationClientId of destinationClientsIds) {
|
||||||
const messageQueue = this.realm.getMessageQueueById(destinationClientId);
|
const messageQueue = this.realm.getMessageQueueById(destinationClientId);
|
||||||
|
if (!messageQueue)
|
||||||
|
continue;
|
||||||
const lastReadDiff = now - messageQueue.getLastReadAt();
|
const lastReadDiff = now - messageQueue.getLastReadAt();
|
||||||
if (lastReadDiff < maxDiff)
|
if (lastReadDiff < maxDiff)
|
||||||
continue;
|
continue;
|
||||||
|
3
dist/src/services/webSocketServer/index.js
vendored
3
dist/src/services/webSocketServer/index.js
vendored
@ -22,7 +22,8 @@ class WebSocketServer extends events_1.default {
|
|||||||
this.socketServer.on("error", (error) => this._onSocketError(error));
|
this.socketServer.on("error", (error) => this._onSocketError(error));
|
||||||
}
|
}
|
||||||
_onSocketConnection(socket, req) {
|
_onSocketConnection(socket, req) {
|
||||||
const { query = {} } = url_1.default.parse(req.url, true);
|
var _a;
|
||||||
|
const { query = {} } = url_1.default.parse((_a = req.url) !== null && _a !== void 0 ? _a : '', true);
|
||||||
const { id, token, key } = query;
|
const { id, token, key } = query;
|
||||||
if (!id || !token || !key) {
|
if (!id || !token || !key) {
|
||||||
return this._sendErrorAndClose(socket, enums_1.Errors.INVALID_WS_PARAMETERS);
|
return this._sendErrorAndClose(socket, enums_1.Errors.INVALID_WS_PARAMETERS);
|
||||||
|
@ -3,7 +3,7 @@ import { IMessageHandler } from "../../../messageHandler";
|
|||||||
import { IMessage } from "../../../models/message";
|
import { IMessage } from "../../../models/message";
|
||||||
import { IRealm } from "../../../models/realm";
|
import { IRealm } from "../../../models/realm";
|
||||||
|
|
||||||
export default ({ realm, messageHandler }: { realm: IRealm, messageHandler: IMessageHandler; }): express.Router => {
|
export default ({ realm, messageHandler }: { realm: IRealm; messageHandler: IMessageHandler; }): express.Router => {
|
||||||
const app = express.Router();
|
const app = express.Router();
|
||||||
|
|
||||||
const handle = (req: express.Request, res: express.Response, next: express.NextFunction): any => {
|
const handle = (req: express.Request, res: express.Response, next: express.NextFunction): any => {
|
||||||
|
@ -3,7 +3,7 @@ import { IConfig } from "../../../config";
|
|||||||
import { IRealm } from "../../../models/realm";
|
import { IRealm } from "../../../models/realm";
|
||||||
|
|
||||||
export default ({ config, realm }: {
|
export default ({ config, realm }: {
|
||||||
config: IConfig, realm: IRealm
|
config: IConfig; realm: IRealm;
|
||||||
}): express.Router => {
|
}): express.Router => {
|
||||||
const app = express.Router();
|
const app = express.Router();
|
||||||
|
|
||||||
|
12
src/index.ts
12
src/index.ts
@ -37,7 +37,7 @@ function ExpressPeerServer(server: Server, options?: IConfig) {
|
|||||||
function PeerServer(options: Optional<IConfig> = {}, callback?: (server: Server) => void) {
|
function PeerServer(options: Optional<IConfig> = {}, callback?: (server: Server) => void) {
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
const newOptions: IConfig = {
|
let newOptions: IConfig = {
|
||||||
...defaultConfig,
|
...defaultConfig,
|
||||||
...options
|
...options
|
||||||
};
|
};
|
||||||
@ -47,10 +47,12 @@ function PeerServer(options: Optional<IConfig> = {}, callback?: (server: Server)
|
|||||||
|
|
||||||
let server: Server;
|
let server: Server;
|
||||||
|
|
||||||
if (newOptions.ssl && newOptions.ssl.key && newOptions.ssl.cert) {
|
const { ssl, ...restOptions } = newOptions;
|
||||||
server = https.createServer(options.ssl!, app);
|
|
||||||
// @ts-ignore
|
if (ssl && ssl.key && ssl.cert) {
|
||||||
delete newOptions.ssl;
|
server = https.createServer(ssl, app);
|
||||||
|
|
||||||
|
newOptions = restOptions;
|
||||||
} else {
|
} else {
|
||||||
server = http.createServer(app);
|
server = http.createServer(app);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import express from "express";
|
import express from "express";
|
||||||
import { Server } from "net";
|
import { Server } from "net";
|
||||||
import path from 'path';
|
import path from "path";
|
||||||
import { IClient } from "./models/client";
|
import { IClient } from "./models/client";
|
||||||
import { IMessage } from "./models/message";
|
import { IMessage } from "./models/message";
|
||||||
import { Realm } from "./models/realm";
|
import { Realm } from "./models/realm";
|
||||||
@ -13,8 +13,8 @@ import { Api } from "./api";
|
|||||||
import { IConfig } from "./config";
|
import { IConfig } from "./config";
|
||||||
|
|
||||||
export const createInstance = ({ app, server, options }: {
|
export const createInstance = ({ app, server, options }: {
|
||||||
app: express.Application,
|
app: express.Application;
|
||||||
server: Server,
|
server: Server;
|
||||||
options: IConfig;
|
options: IConfig;
|
||||||
}): void => {
|
}): void => {
|
||||||
const config = options;
|
const config = options;
|
||||||
@ -48,7 +48,7 @@ export const createInstance = ({ app, server, options }: {
|
|||||||
if (messageQueue) {
|
if (messageQueue) {
|
||||||
let message: IMessage | undefined;
|
let message: IMessage | undefined;
|
||||||
|
|
||||||
while (message = messageQueue.readMessage()) {
|
while ((message = messageQueue.readMessage())) {
|
||||||
messageHandler.handle(client, message);
|
messageHandler.handle(client, message);
|
||||||
}
|
}
|
||||||
realm.clearMessageQueue(client.getId());
|
realm.clearMessageQueue(client.getId());
|
||||||
|
@ -13,7 +13,7 @@ export interface IClient {
|
|||||||
|
|
||||||
setLastPing(lastPing: number): void;
|
setLastPing(lastPing: number): void;
|
||||||
|
|
||||||
send(data: any): void;
|
send<T>(data: T): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Client implements IClient {
|
export class Client implements IClient {
|
||||||
@ -22,7 +22,7 @@ export class Client implements IClient {
|
|||||||
private socket: MyWebSocket | null = null;
|
private socket: MyWebSocket | null = null;
|
||||||
private lastPing: number = new Date().getTime();
|
private lastPing: number = new Date().getTime();
|
||||||
|
|
||||||
constructor({ id, token }: { id: string, token: string; }) {
|
constructor({ id, token }: { id: string; token: string; }) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.token = token;
|
this.token = token;
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@ export class Client implements IClient {
|
|||||||
this.lastPing = lastPing;
|
this.lastPing = lastPing;
|
||||||
}
|
}
|
||||||
|
|
||||||
public send(data: any): void {
|
public send<T>(data: T): void {
|
||||||
this.socket?.send(JSON.stringify(data));
|
this.socket?.send(JSON.stringify(data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ export class MessageQueue implements IMessageQueue {
|
|||||||
public readMessage(): IMessage | undefined {
|
public readMessage(): IMessage | undefined {
|
||||||
if (this.messages.length > 0) {
|
if (this.messages.length > 0) {
|
||||||
this.lastReadAt = new Date().getTime();
|
this.lastReadAt = new Date().getTime();
|
||||||
return this.messages.shift()!;
|
return this.messages.shift();
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@ -62,7 +62,7 @@ export class Realm implements IRealm {
|
|||||||
this.messageQueues.set(id, new MessageQueue());
|
this.messageQueues.set(id, new MessageQueue());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.getMessageQueueById(id)!.addMessage(message);
|
this.getMessageQueueById(id)?.addMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public clearMessageQueue(id: string): void {
|
public clearMessageQueue(id: string): void {
|
||||||
@ -70,7 +70,6 @@ export class Realm implements IRealm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public generateClientId(generateClientId?: () => string): string {
|
public generateClientId(generateClientId?: () => string): string {
|
||||||
|
|
||||||
const generateId = generateClientId ? generateClientId : uuidv4;
|
const generateId = generateClientId ? generateClientId : uuidv4;
|
||||||
|
|
||||||
let clientId = generateId();
|
let clientId = generateId();
|
||||||
|
@ -15,9 +15,9 @@ export class CheckBrokenConnections {
|
|||||||
private readonly onClose?: (client: IClient) => void;
|
private readonly onClose?: (client: IClient) => void;
|
||||||
|
|
||||||
constructor({ realm, config, checkInterval = DEFAULT_CHECK_INTERVAL, onClose }: {
|
constructor({ realm, config, checkInterval = DEFAULT_CHECK_INTERVAL, onClose }: {
|
||||||
realm: IRealm,
|
realm: IRealm;
|
||||||
config: CustomConfig,
|
config: CustomConfig;
|
||||||
checkInterval?: number,
|
checkInterval?: number;
|
||||||
onClose?: (client: IClient) => void;
|
onClose?: (client: IClient) => void;
|
||||||
}) {
|
}) {
|
||||||
this.realm = realm;
|
this.realm = realm;
|
||||||
@ -54,7 +54,10 @@ export class CheckBrokenConnections {
|
|||||||
const { alive_timeout: aliveTimeout } = this.config;
|
const { alive_timeout: aliveTimeout } = this.config;
|
||||||
|
|
||||||
for (const clientId of clientsIds) {
|
for (const clientId of clientsIds) {
|
||||||
const client = this.realm.getClientById(clientId)!;
|
const client = this.realm.getClientById(clientId);
|
||||||
|
|
||||||
|
if (!client) continue;
|
||||||
|
|
||||||
const timeSinceLastPing = now - client.getLastPing();
|
const timeSinceLastPing = now - client.getLastPing();
|
||||||
|
|
||||||
if (timeSinceLastPing < aliveTimeout) continue;
|
if (timeSinceLastPing < aliveTimeout) continue;
|
||||||
|
@ -58,7 +58,10 @@ export class MessagesExpire implements IMessagesExpire {
|
|||||||
const seen: Record<string, boolean> = {};
|
const seen: Record<string, boolean> = {};
|
||||||
|
|
||||||
for (const destinationClientId of destinationClientsIds) {
|
for (const destinationClientId of destinationClientsIds) {
|
||||||
const messageQueue = this.realm.getMessageQueueById(destinationClientId)!;
|
const messageQueue = this.realm.getMessageQueueById(destinationClientId);
|
||||||
|
|
||||||
|
if (!messageQueue) continue;
|
||||||
|
|
||||||
const lastReadDiff = now - messageQueue.getLastReadAt();
|
const lastReadDiff = now - messageQueue.getLastReadAt();
|
||||||
|
|
||||||
if (lastReadDiff < maxDiff) continue;
|
if (lastReadDiff < maxDiff) continue;
|
||||||
|
@ -29,7 +29,7 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer {
|
|||||||
private readonly config: CustomConfig;
|
private readonly config: CustomConfig;
|
||||||
public readonly socketServer: WebSocketLib.Server;
|
public readonly socketServer: WebSocketLib.Server;
|
||||||
|
|
||||||
constructor({ server, realm, config }: { server: any, realm: IRealm, config: CustomConfig; }) {
|
constructor({ server, realm, config }: { server: any; realm: IRealm; config: CustomConfig; }) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.setMaxListeners(0);
|
this.setMaxListeners(0);
|
||||||
@ -47,7 +47,7 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _onSocketConnection(socket: MyWebSocket, req: IncomingMessage): void {
|
private _onSocketConnection(socket: MyWebSocket, req: IncomingMessage): void {
|
||||||
const { query = {} } = url.parse(req.url!, true);
|
const { query = {} } = url.parse(req.url ?? '', true);
|
||||||
|
|
||||||
const { id, token, key }: IAuthParams = query;
|
const { id, token, key }: IAuthParams = query;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user