@cimo/websocket 1.0.11 → 1.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.
package/README.md CHANGED
@@ -18,30 +18,42 @@ Websocket API (server and client) fast and secure.
18
18
 
19
19
  ```
20
20
  ...
21
+
21
22
  import { CwsServerMessage } from "@cimo/websocket";
22
23
 
23
24
  // Source
24
- import * as ControllerRun from "../controller/Run";
25
+ import * as ControllerTest from "../controller/Test";
26
+
25
27
  ...
28
+
26
29
  CwsServerMessage.create(server);
27
- CwsServerMessage.readOutput("run", (data) => {
28
- ControllerRun.websocket(data);
30
+
31
+ CwsServerMessage.receiveOutput("test", (socket, data) => {
32
+ ControllerTest.websocket(socket, data);
29
33
  });
30
- ...
31
34
 
35
+ ...
32
36
  ```
33
37
 
34
- - ControllerRun.ts
38
+ - ControllerTest.ts
35
39
 
36
40
  ```
37
41
  ...
38
- import { CwsServerInterface } from "@cimo/websocket";
42
+
43
+ import { CwsServerInterface, CwsServerMessage } from "@cimo/websocket";
44
+
39
45
  ...
40
- export const websocket = (data: CwsServerInterface.Imessage) => {
41
- console.log("run", data);
46
+
47
+ export const websocket = (socket: CwsServerInterface.Isocket, data: CwsServerInterface.Imessage) => {
48
+ const tag = data.tag;
49
+ const message = data.message;
50
+
51
+ if (tag === "cws_test_o") {
52
+ CwsServerMessage.sendInput(socket, "test", message);
53
+ }
42
54
  };
43
- ...
44
55
 
56
+ ...
45
57
  ```
46
58
 
47
59
  ## Client
@@ -50,21 +62,26 @@ export const websocket = (data: CwsServerInterface.Imessage) => {
50
62
 
51
63
  ```
52
64
  ...
65
+
53
66
  import * as CwsClient from "@cimo/websocket/dist/client/Message";
67
+
54
68
  ...
55
- CwsClient.connection("localhost:1002");
56
69
 
57
- CwsClient.readMessage("broadcast", () => {
58
- // global event
70
+ CwsClient.connection(window.location.host);
71
+
72
+ CwsClient.receiveMessage("broadcast", (data) => {
73
+ // Global event
59
74
  });
60
75
 
61
- CwsClient.readMessage("run", () => {
62
- // run event
76
+ CwsClient.receiveMessage("test", (data) => {
77
+ // Test event
63
78
  });
79
+
64
80
  ...
81
+
65
82
  elementButton.addEventListener("click", (event) => {
66
- CwsClient.sendMessage("run", { test: 1 });
83
+ CwsClient.sendMessage("test", { value: 1 });
67
84
  });
68
- ...
69
85
 
86
+ ...
70
87
  ```
@@ -1,11 +1,8 @@
1
- export interface IcircularReplacer {
2
- (key: string, value: string): string | null;
3
- }
4
1
  export interface Imessage {
5
2
  date: string;
6
3
  tag: string;
7
4
  message: string;
8
5
  }
9
- export interface IcallbackReadMessage {
6
+ export interface IcallbackReceiveMessage {
10
7
  (data: Imessage): void;
11
8
  }
@@ -1,5 +1,5 @@
1
1
  import * as Interface from "./Interface";
2
- export declare const sendMessage: (tagValue: string, messageValue: Record<string, unknown> | string) => void;
3
- export declare const readMessage: (tag: string, callback: Interface.IcallbackReadMessage) => void;
4
- export declare const readMessageOff: (tag: string) => void;
5
- export declare const connection: (address?: string, debug?: boolean) => void;
2
+ export declare const sendMessage: (tagValue: string, messageValue: string | Record<string, unknown>) => void;
3
+ export declare const receiveMessage: (tag: string, callback: Interface.IcallbackReceiveMessage) => void;
4
+ export declare const receiveMessageOff: (tag: string) => void;
5
+ export declare const connection: (address?: string) => void;
@@ -1,64 +1,35 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.connection = exports.readMessageOff = exports.readMessage = exports.sendMessage = void 0;
27
- const Helper = __importStar(require("./Helper"));
28
- let websocket;
3
+ exports.connection = exports.receiveMessageOff = exports.receiveMessage = exports.sendMessage = void 0;
4
+ let websocket = null;
29
5
  let timeoutReconnect;
30
- let serverAddress;
31
- let clientDebug;
6
+ let serverAddress = "";
32
7
  const messageHandleList = new Map();
33
8
  const sendMessage = (tagValue, messageValue) => {
34
- const dataStructure = {
35
- date: new Date().toISOString(),
36
- tag: `cws_${tagValue}_o`,
37
- message: messageValue
38
- };
39
- Helper.writeLog(`@cimo/websocket - Message.ts - sendMessage()`, `dataStructure: ${Helper.objectOutput(dataStructure)}`);
40
- websocket.send(JSON.stringify(dataStructure));
9
+ if (websocket) {
10
+ const dataStructure = {
11
+ date: new Date().toISOString(),
12
+ tag: `cws_${tagValue}_o`,
13
+ message: messageValue
14
+ };
15
+ websocket.send(JSON.stringify(dataStructure));
16
+ }
41
17
  };
42
18
  exports.sendMessage = sendMessage;
43
- const readMessage = (tag, callback) => {
44
- messageHandleList.set(`cws_${tag}_i`, (message) => {
45
- Helper.writeLog(`@cimo/websocket - Message.ts - readMessage()`, `tag: cws_${tag}_i - message: ${Helper.objectOutput(message)}`);
46
- callback(message);
19
+ const receiveMessage = (tag, callback) => {
20
+ messageHandleList.set(`cws_${tag}_i`, (data) => {
21
+ callback(data);
47
22
  });
48
23
  };
49
- exports.readMessage = readMessage;
50
- const readMessageOff = (tag) => {
24
+ exports.receiveMessage = receiveMessage;
25
+ const receiveMessageOff = (tag) => {
51
26
  if (messageHandleList.has(`cws_${tag}_i`)) {
52
27
  messageHandleList.delete(`cws_${tag}_i`);
53
- Helper.writeLog(`@cimo/websocket - Message.ts - readMessageOff()`, `messageHandleList: ${Helper.objectOutput(messageHandleList)}`);
54
28
  }
55
29
  };
56
- exports.readMessageOff = readMessageOff;
57
- const connection = (address, debug) => {
30
+ exports.receiveMessageOff = receiveMessageOff;
31
+ const connection = (address) => {
58
32
  serverAddress = address ? address : serverAddress;
59
- clientDebug = debug ? debug : clientDebug;
60
- Helper.setDebug(clientDebug);
61
- Helper.writeLog("@cimo/websocket - Message.ts - connection()", "Try to connect...");
62
33
  websocket = new WebSocket(`wss://${serverAddress}`);
63
34
  websocket.addEventListener("open", eventOpen);
64
35
  websocket.addEventListener("message", eventMessage);
@@ -75,16 +46,20 @@ const messageHandle = (event) => {
75
46
  }
76
47
  };
77
48
  const eventOpen = () => {
78
- Helper.writeLog("@cimo/websocket - Message.ts - eventOpen()", "Connected.");
49
+ console.log("@cimo/websocket - Message.ts - eventOpen():", "Connected.");
79
50
  clearTimeout(timeoutReconnect);
80
51
  };
81
52
  const eventMessage = (event) => {
82
53
  messageHandle(event);
83
54
  };
84
55
  const eventClose = () => {
85
- websocket.removeEventListener("open", eventOpen);
86
- websocket.removeEventListener("message", eventMessage);
87
- websocket.removeEventListener("close", eventClose);
88
- timeoutReconnect = setTimeout(exports.connection, 1000);
56
+ if (websocket) {
57
+ console.log("@cimo/websocket - Message.ts - eventClose():", "Try to reconnect...");
58
+ websocket.removeEventListener("open", eventOpen);
59
+ websocket.removeEventListener("message", eventMessage);
60
+ websocket.removeEventListener("close", eventClose);
61
+ websocket = null;
62
+ timeoutReconnect = setTimeout(exports.connection, 1000);
63
+ }
89
64
  };
90
65
  //# sourceMappingURL=Message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/client/Message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/client/Message.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
- export interface IcircularReplacer {
2
- (key: string, value: string): string | null;
3
- }
1
+ /// <reference types="node" />
2
+ import { Socket } from "net";
3
+ import { Server } from "https";
4
+ export { Socket as Isocket };
5
+ export { Server as HttpsServer };
4
6
  export interface Imessage {
5
7
  date: string;
6
8
  tag: string;
7
9
  message: string;
8
10
  }
9
- export interface IcallbackReadMessage {
10
- (data: Imessage): void;
11
+ export interface IcallbackReceiveOutput {
12
+ (socket: Socket, data: Imessage): void;
11
13
  }
@@ -1,3 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpsServer = exports.Isocket = void 0;
4
+ const net_1 = require("net");
5
+ Object.defineProperty(exports, "Isocket", { enumerable: true, get: function () { return net_1.Socket; } });
6
+ const https_1 = require("https");
7
+ Object.defineProperty(exports, "HttpsServer", { enumerable: true, get: function () { return https_1.Server; } });
3
8
  //# sourceMappingURL=Interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Interface.js","sourceRoot":"","sources":["../../src/server/Interface.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Interface.js","sourceRoot":"","sources":["../../src/server/Interface.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAGV,wFAHV,YAAM,OAGW;AAF1B,iCAA+B;AAGZ,4FAHV,cAAM,OAGe"}
@@ -1,8 +1,6 @@
1
- import * as Net from "net";
2
- import * as Https from "https";
3
1
  import * as Interface from "./Interface";
4
- export declare const readOutput: (tag: string, callback: Interface.IcallbackReadMessage) => void;
5
- export declare const readOutputOff: (tag: string) => void;
6
- export declare const sendInput: (socket: Net.Socket, tagValue: string, messageValue: Record<string, unknown> | string) => void;
7
- export declare const sendInputBroadcast: (socket: Net.Socket, tag: string, message: Record<string, unknown> | string, excludeSender?: boolean) => void;
8
- export declare const create: (server: Https.Server, pathLogValue?: string) => void;
2
+ export declare const receiveOutput: (tag: string, callback: Interface.IcallbackReceiveOutput) => void;
3
+ export declare const receiveOutputOff: (tag: string) => void;
4
+ export declare const sendInput: (socket: Interface.Isocket, tagValue: string, messageValue: string | Record<string, unknown>) => void;
5
+ export declare const sendInputBroadcast: (socket: Interface.Isocket, tag: string, message: string | Record<string, unknown>, excludeSender?: boolean) => void;
6
+ export declare const create: (server: Interface.HttpsServer) => void;
@@ -23,85 +23,64 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.create = exports.sendInputBroadcast = exports.sendInput = exports.readOutputOff = exports.readOutput = void 0;
26
+ exports.create = exports.sendInputBroadcast = exports.sendInput = exports.receiveOutputOff = exports.receiveOutput = void 0;
27
27
  const Crypto = __importStar(require("crypto"));
28
- const Helper = __importStar(require("./Helper"));
29
28
  const WEBSOCKET_MAGIC_STRING_KEY = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
30
29
  const SEVEN_BITS_INTEGER_MARKER = 125;
31
30
  const SIXTEEN_BITS_INTEGER_MARKER = 126;
32
- const MAXIMUM_SIXTEEN_BITS_INTEGER = 2 ** 16;
31
+ const THIRTYTWO_BITS_INTEGER_MARKER = 127;
33
32
  const MASK_KEY_BYTES_LENGTH = 4;
34
- const OPCODE_TEXT = 0x01;
35
- const FIRST_BIT = 128;
36
33
  const socketList = [];
37
34
  const messageHandleList = new Map();
38
- const readOutput = (tag, callback) => {
39
- messageHandleList.set(`cws_${tag}_o`, (message) => {
40
- Helper.writeLog(`@cimo/websocket - Message.ts - readOutput()`, `tag: cws_${tag}_o - message: ${Helper.objectOutput(message)}`);
41
- callback(message);
35
+ const receiveOutput = (tag, callback) => {
36
+ messageHandleList.set(`cws_${tag}_o`, (socket, data) => {
37
+ callback(socket, data);
42
38
  });
43
39
  };
44
- exports.readOutput = readOutput;
45
- const readOutputOff = (tag) => {
40
+ exports.receiveOutput = receiveOutput;
41
+ const receiveOutputOff = (tag) => {
46
42
  if (messageHandleList.has(`cws_${tag}_o`)) {
47
43
  messageHandleList.delete(`cws_${tag}_o`);
48
- Helper.writeLog(`@cimo/websocket - Message.ts - readOutputOff()`, `messageHandleList: ${Helper.objectOutput(messageHandleList)}`);
49
44
  }
50
45
  };
51
- exports.readOutputOff = readOutputOff;
46
+ exports.receiveOutputOff = receiveOutputOff;
52
47
  const sendInput = (socket, tagValue, messageValue) => {
53
48
  if (tagValue) {
54
- const tagValueSplit = tagValue.split("_");
55
- tagValueSplit.shift();
56
- tagValueSplit.pop();
57
- const tagValueJoin = tagValueSplit.join("_");
58
49
  const dataStructure = {
59
50
  date: new Date().toISOString(),
60
- tag: `cws_${tagValueJoin}_i`,
51
+ tag: `cws_${tagValue}_i`,
61
52
  message: messageValue
62
53
  };
63
- Helper.writeLog(`@cimo/websocket - Message.ts - sendInput()`, `dataStructure: ${Helper.objectOutput(dataStructure)}`);
64
54
  const result = prepareMessage(JSON.stringify(dataStructure));
65
55
  socket.write(result);
66
56
  }
67
57
  };
68
58
  exports.sendInput = sendInput;
69
59
  const sendInputBroadcast = (socket, tag, message, excludeSender = true) => {
70
- Helper.writeLog("@cimo/websocket - Message.ts - sendInputBroadcast()", `tag: ${tag} - message: ${Helper.objectOutput(message)}`);
71
60
  for (const client of socketList) {
72
61
  if (client && !client.destroyed) {
73
62
  if ((excludeSender && client !== socket) || !excludeSender) {
74
- (0, exports.sendInput)(client, `cws_${tag}_i`, message);
63
+ (0, exports.sendInput)(client, tag, message);
75
64
  }
76
65
  }
77
66
  }
78
67
  };
79
68
  exports.sendInputBroadcast = sendInputBroadcast;
80
- const create = (server, pathLogValue) => {
81
- Helper.setPathLog(pathLogValue);
69
+ const create = (server) => {
82
70
  server.on("upgrade", onServerUpgrade);
83
71
  };
84
72
  exports.create = create;
85
- const messageHandle = (data) => {
86
- for (const [tag, eventHandler] of messageHandleList) {
87
- if (data.tag === tag) {
88
- eventHandler(data);
89
- return;
90
- }
91
- }
92
- };
93
73
  const prepareMessage = (data) => {
94
74
  const message = Buffer.from(data);
95
75
  const messageSize = message.length;
96
76
  let dataBuffer;
97
- const firstByte = 0x80 | OPCODE_TEXT;
77
+ const firstByte = 0x80 | 0x01;
98
78
  if (messageSize <= SEVEN_BITS_INTEGER_MARKER) {
99
79
  const bytes = [firstByte];
100
80
  dataBuffer = Buffer.from(bytes.concat(messageSize));
101
81
  }
102
- else if (messageSize <= MAXIMUM_SIXTEEN_BITS_INTEGER) {
103
- const offsetFourBytes = 4;
104
- const target = Buffer.allocUnsafe(offsetFourBytes);
82
+ else if (messageSize <= 2 ** 16) {
83
+ const target = Buffer.allocUnsafe(4);
105
84
  target[0] = firstByte;
106
85
  target[1] = SIXTEEN_BITS_INTEGER_MARKER | 0x0;
107
86
  target.writeUint16BE(messageSize, 2);
@@ -119,52 +98,58 @@ const prepareMessage = (data) => {
119
98
  }
120
99
  return result;
121
100
  };
122
- const unmask = (encodedBuffer, maskKey) => {
123
- const finalBuffer = Buffer.from(encodedBuffer);
124
- for (let index = 0; index < encodedBuffer.length; index++) {
125
- finalBuffer[index] = encodedBuffer[index] ^ maskKey[index % MASK_KEY_BYTES_LENGTH];
101
+ const messageHandle = (socket, data) => {
102
+ for (const [tag, eventHandler] of messageHandleList) {
103
+ if (data.tag === tag) {
104
+ eventHandler(socket, data);
105
+ return;
106
+ }
126
107
  }
127
- return finalBuffer;
128
108
  };
129
109
  const onSocketEnd = (socket) => {
130
110
  (0, exports.sendInputBroadcast)(socket, "broadcast", `Client ${socket.remoteAddress || ""} disconnected.`);
131
111
  const index = socketList.indexOf(socket);
132
- if (index !== -1) {
112
+ if (index > -1) {
133
113
  socketList.splice(index, 1);
134
114
  }
135
115
  socket.destroy();
136
116
  };
137
- const onSocketReadable = (socket) => {
138
- socket.read(1);
139
- const socketRead = socket.read(1);
140
- if (socketRead !== null) {
141
- const [markerAndPayloadLength] = socketRead;
142
- const lengthIndicatorInBits = markerAndPayloadLength - FIRST_BIT;
143
- let messageLength = 0;
144
- if (lengthIndicatorInBits <= SEVEN_BITS_INTEGER_MARKER) {
145
- messageLength = lengthIndicatorInBits;
146
- }
147
- else if (lengthIndicatorInBits === SIXTEEN_BITS_INTEGER_MARKER) {
148
- const socketRead = socket.read(2);
149
- messageLength = socketRead.readUint16BE(0);
150
- }
151
- else {
152
- throw new Error("@cimo/websocket - Message.ts - onSocketReadable - Error: Message too long.");
117
+ const onSocketData = (socket, buffer) => {
118
+ let data = {};
119
+ let payloadLength = buffer[1] & 0x7f;
120
+ let payloadOffset = 2;
121
+ const opcode = buffer[0] & 0x0f;
122
+ const isMasked = (buffer[1] & 0x80) !== 0;
123
+ if (payloadLength === SIXTEEN_BITS_INTEGER_MARKER) {
124
+ payloadLength = buffer.readUInt16BE(2);
125
+ payloadOffset = 4;
126
+ }
127
+ else if (payloadLength === THIRTYTWO_BITS_INTEGER_MARKER) {
128
+ payloadLength = buffer.readUInt32BE(2);
129
+ payloadOffset = 10;
130
+ }
131
+ if (isMasked) {
132
+ const maskingKey = buffer.slice(payloadOffset, payloadOffset + MASK_KEY_BYTES_LENGTH);
133
+ payloadOffset += MASK_KEY_BYTES_LENGTH;
134
+ for (let i = 0; i < payloadLength; i++) {
135
+ buffer[payloadOffset + i] ^= maskingKey[i % MASK_KEY_BYTES_LENGTH];
153
136
  }
154
- const maskKey = socket.read(MASK_KEY_BYTES_LENGTH);
155
- const encoded = socket.read(messageLength);
156
- const decoded = unmask(encoded, maskKey).toString("utf8");
157
- let data = {};
158
- const checkJsonResult = Helper.checkJson(decoded);
159
- if (checkJsonResult) {
160
- data = JSON.parse(decoded);
137
+ }
138
+ const payloadData = buffer.slice(payloadOffset, payloadOffset + payloadLength);
139
+ if (opcode === 0x01) {
140
+ const payloadOutput = payloadData.toString("utf-8");
141
+ if (/^[\],:{}\s]*$/.test(payloadOutput
142
+ .replace(/\\["\\/bfnrtu]/g, "@")
143
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\\-]?\d+)?/g, "]")
144
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
145
+ data = JSON.parse(payloadOutput);
161
146
  }
162
- messageHandle(data);
163
147
  }
148
+ messageHandle(socket, data);
164
149
  };
165
150
  const onServerUpgrade = (request, socket) => {
166
151
  if (request.headers["upgrade"] !== "websocket") {
167
- socket.destroy();
152
+ socket.end("HTTP/1.1 400 Bad Request");
168
153
  return;
169
154
  }
170
155
  const { "sec-websocket-key": webClientSocketKey } = request.headers;
@@ -175,13 +160,16 @@ const onServerUpgrade = (request, socket) => {
175
160
  .join("");
176
161
  socket.write(header, (error) => {
177
162
  if (error) {
178
- throw new Error(`@cimo/websocket - Message.ts - onServerUpgrade - Error: ${Helper.objectOutput(error)}`);
163
+ throw new Error(`@cimo/websocket - Message.ts - onServerUpgrade - Error: ${error.toString()}`);
179
164
  }
180
165
  });
181
166
  socketList.push(socket);
182
- socket.on("readable", () => onSocketReadable(socket));
183
- socket.on("end", () => onSocketEnd(socket));
167
+ socket.on("data", (buffer) => {
168
+ onSocketData(socket, buffer);
169
+ });
170
+ socket.on("end", () => {
171
+ onSocketEnd(socket);
172
+ });
184
173
  (0, exports.sendInputBroadcast)(socket, "broadcast", `Client ${socket.remoteAddress || ""} connected.`);
185
174
  };
186
- Helper.keepProcess();
187
175
  //# sourceMappingURL=Message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/server/Message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/server/Message.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cimo/websocket",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Websocket API (server and client) fast and secure.",
5
5
  "author": "cimo",
6
6
  "license": "MIT",
@@ -1,3 +0,0 @@
1
- export declare const setDebug: (value: boolean | undefined) => void;
2
- export declare const writeLog: (tag: string, value: string | boolean) => void;
3
- export declare const objectOutput: (obj: unknown) => string;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.objectOutput = exports.writeLog = exports.setDebug = void 0;
4
- let debug = undefined;
5
- const setDebug = (value) => {
6
- debug = value;
7
- };
8
- exports.setDebug = setDebug;
9
- const writeLog = (tag, value) => {
10
- if (debug) {
11
- console.log(`WriteLog => ${tag}: `, value);
12
- }
13
- };
14
- exports.writeLog = writeLog;
15
- const objectOutput = (obj) => {
16
- return JSON.stringify(obj, circularReplacer(), 2);
17
- };
18
- exports.objectOutput = objectOutput;
19
- const circularReplacer = () => {
20
- const seen = new WeakSet();
21
- return (_key, value) => {
22
- if (value !== null && typeof value === "object") {
23
- if (seen.has(value)) {
24
- return null;
25
- }
26
- seen.add(value);
27
- }
28
- return value;
29
- };
30
- };
31
- //# sourceMappingURL=Helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Helper.js","sourceRoot":"","sources":["../../src/client/Helper.ts"],"names":[],"mappings":";;;AAGA,IAAI,KAAK,GAAwB,SAAS,CAAC;AAEpC,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAE,EAAE;IACnD,KAAK,GAAG,KAAK,CAAC;AAClB,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEK,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAuB,EAAQ,EAAE;IACnE,IAAI,KAAK,EAAE;QAEP,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;KAC9C;AACL,CAAC,CAAC;AALW,QAAA,QAAQ,YAKnB;AAEK,MAAM,YAAY,GAAG,CAAC,GAAY,EAAU,EAAE;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF,MAAM,gBAAgB,GAAG,GAAgC,EAAE;IACvD,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAE3B,OAAO,CAAC,IAAY,EAAE,KAAa,EAAiB,EAAE;QAClD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACjB,OAAO,IAAI,CAAC;aACf;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare const setPathLog: (value: string | undefined) => void;
2
- export declare const writeLog: (tag: string, value: string | boolean) => void;
3
- export declare const objectOutput: (obj: unknown) => string;
4
- export declare const checkJson: (json: string) => boolean;
5
- export declare const keepProcess: () => void;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.keepProcess = exports.checkJson = exports.objectOutput = exports.writeLog = exports.setPathLog = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- let pathLog = undefined;
9
- const setPathLog = (value) => {
10
- pathLog = value;
11
- };
12
- exports.setPathLog = setPathLog;
13
- const writeLog = (tag, value) => {
14
- if (pathLog) {
15
- fs_1.default.appendFile(pathLog, `${tag}: ${value.toString()}\n`, () => {
16
- console.log(`WriteLog => ${tag}: `, value);
17
- });
18
- }
19
- };
20
- exports.writeLog = writeLog;
21
- const objectOutput = (obj) => {
22
- return JSON.stringify(obj, circularReplacer(), 2);
23
- };
24
- exports.objectOutput = objectOutput;
25
- const checkJson = (json) => {
26
- if (/^[\],:{}\s]*$/.test(json
27
- .replace(/\\["\\/bfnrtu]/g, "@")
28
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\\-]?\d+)?/g, "]")
29
- .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
30
- return true;
31
- }
32
- return false;
33
- };
34
- exports.checkJson = checkJson;
35
- const keepProcess = () => {
36
- for (const event of ["uncaughtException", "unhandledRejection"]) {
37
- process.on(event, (error) => {
38
- (0, exports.writeLog)("@cimo/websocket - Helper.ts - keepProcess()", `Event: ${event} - Message: ${(0, exports.objectOutput)(error.stack) || (0, exports.objectOutput)(error)}`);
39
- });
40
- }
41
- };
42
- exports.keepProcess = keepProcess;
43
- const circularReplacer = () => {
44
- const seen = new WeakSet();
45
- return (_key, value) => {
46
- if (value !== null && typeof value === "object") {
47
- if (seen.has(value)) {
48
- return null;
49
- }
50
- seen.add(value);
51
- }
52
- return value;
53
- };
54
- };
55
- //# sourceMappingURL=Helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Helper.js","sourceRoot":"","sources":["../../src/server/Helper.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAKpB,IAAI,OAAO,GAAuB,SAAS,CAAC;AAErC,MAAM,UAAU,GAAG,CAAC,KAAyB,EAAE,EAAE;IACpD,OAAO,GAAG,KAAK,CAAC;AACpB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEK,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAuB,EAAQ,EAAE;IACnE,IAAI,OAAO,EAAE;QACT,YAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;YAEzD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;KACN;AACL,CAAC,CAAC;AAPW,QAAA,QAAQ,YAOnB;AAEK,MAAM,YAAY,GAAG,CAAC,GAAY,EAAU,EAAE;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEK,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;IACtC,IACI,eAAe,CAAC,IAAI,CAChB,IAAI;SACC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;SAC/B,OAAO,CAAC,mEAAmE,EAAE,GAAG,CAAC;SACjF,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAC3C,EACH;QACE,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB;AAEK,MAAM,WAAW,GAAG,GAAG,EAAE;IAC5B,KAAK,MAAM,KAAK,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE;QAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE;YAC/B,IAAA,gBAAQ,EAAC,6CAA6C,EAAE,UAAU,KAAK,eAAe,IAAA,oBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAA,oBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9I,CAAC,CAAC,CAAC;KACN;AACL,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEF,MAAM,gBAAgB,GAAG,GAAgC,EAAE;IACvD,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAE3B,OAAO,CAAC,IAAY,EAAE,KAAa,EAAiB,EAAE;QAClD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACjB,OAAO,IAAI,CAAC;aACf;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;AACN,CAAC,CAAC"}