@cimo/websocket 1.0.12 → 1.0.14

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
@@ -1,6 +1,6 @@
1
1
  # Websocket
2
2
 
3
- Websocket API (server and client) fast and secure.
3
+ Websocket API (server/client). Light, fast and secure.
4
4
 
5
5
  ## Publish
6
6
 
@@ -22,29 +22,35 @@ Websocket API (server and client) fast and secure.
22
22
  import { CwsServerMessage } from "@cimo/websocket";
23
23
 
24
24
  // Source
25
- import * as ControllerRun from "../controller/Run";
25
+ import * as ControllerTest from "../controller/Test";
26
26
 
27
27
  ...
28
28
 
29
29
  CwsServerMessage.create(server);
30
- CwsServerMessage.readOutput("run", (data) => {
31
- ControllerRun.websocket(data);
30
+
31
+ CwsServerMessage.receiveOutput("test", (socket, data) => {
32
+ ControllerTest.websocket(socket, data);
32
33
  });
33
34
 
34
35
  ...
35
36
  ```
36
37
 
37
- - ControllerRun.ts
38
+ - ControllerTest.ts
38
39
 
39
40
  ```
40
41
  ...
41
42
 
42
- import { CwsServerInterface } from "@cimo/websocket";
43
+ import { CwsServerInterface, CwsServerMessage } from "@cimo/websocket";
43
44
 
44
45
  ...
45
46
 
46
- export const websocket = (data: CwsServerInterface.Imessage) => {
47
- console.log("run", data);
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
+ }
48
54
  };
49
55
 
50
56
  ...
@@ -61,20 +67,20 @@ import * as CwsClient from "@cimo/websocket/dist/client/Message";
61
67
 
62
68
  ...
63
69
 
64
- CwsClient.connection("localhost:1002");
70
+ CwsClient.connection(window.location.host);
65
71
 
66
- CwsClient.readMessage("broadcast", () => {
67
- // global event
72
+ CwsClient.receiveMessage("broadcast", (data) => {
73
+ // Global event
68
74
  });
69
75
 
70
- CwsClient.readMessage("run", () => {
71
- // run event
76
+ CwsClient.receiveMessage("test", (data) => {
77
+ // Test event
72
78
  });
73
79
 
74
80
  ...
75
81
 
76
82
  elementButton.addEventListener("click", (event) => {
77
- CwsClient.sendMessage("run", { test: 1 });
83
+ CwsClient.sendMessage("test", { value: 1 });
78
84
  });
79
85
 
80
86
  ...
@@ -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;
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
5
  export declare const connection: (address?: string) => void;
@@ -1,31 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connection = exports.readMessageOff = exports.readMessage = exports.sendMessage = void 0;
4
- let websocket;
3
+ exports.connection = exports.receiveMessageOff = exports.receiveMessage = exports.sendMessage = void 0;
4
+ let websocket = null;
5
5
  let timeoutReconnect;
6
- let serverAddress;
6
+ let serverAddress = "";
7
7
  const messageHandleList = new Map();
8
8
  const sendMessage = (tagValue, messageValue) => {
9
- const dataStructure = {
10
- date: new Date().toISOString(),
11
- tag: `cws_${tagValue}_o`,
12
- message: messageValue
13
- };
14
- 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
+ }
15
17
  };
16
18
  exports.sendMessage = sendMessage;
17
- const readMessage = (tag, callback) => {
18
- messageHandleList.set(`cws_${tag}_i`, (message) => {
19
- callback(message);
19
+ const receiveMessage = (tag, callback) => {
20
+ messageHandleList.set(`cws_${tag}_i`, (data) => {
21
+ callback(data);
20
22
  });
21
23
  };
22
- exports.readMessage = readMessage;
23
- const readMessageOff = (tag) => {
24
+ exports.receiveMessage = receiveMessage;
25
+ const receiveMessageOff = (tag) => {
24
26
  if (messageHandleList.has(`cws_${tag}_i`)) {
25
27
  messageHandleList.delete(`cws_${tag}_i`);
26
28
  }
27
29
  };
28
- exports.readMessageOff = readMessageOff;
30
+ exports.receiveMessageOff = receiveMessageOff;
29
31
  const connection = (address) => {
30
32
  serverAddress = address ? address : serverAddress;
31
33
  websocket = new WebSocket(`wss://${serverAddress}`);
@@ -44,15 +46,20 @@ const messageHandle = (event) => {
44
46
  }
45
47
  };
46
48
  const eventOpen = () => {
49
+ console.log("@cimo/websocket - Message.ts - eventOpen():", "Connected.");
47
50
  clearTimeout(timeoutReconnect);
48
51
  };
49
52
  const eventMessage = (event) => {
50
53
  messageHandle(event);
51
54
  };
52
55
  const eventClose = () => {
53
- websocket.removeEventListener("open", eventOpen);
54
- websocket.removeEventListener("message", eventMessage);
55
- websocket.removeEventListener("close", eventClose);
56
- 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
+ }
57
64
  };
58
65
  //# sourceMappingURL=Message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/client/Message.ts"],"names":[],"mappings":";;;AAGA,IAAI,SAAoB,CAAC;AACzB,IAAI,gBAA8B,CAAC;AACnC,IAAI,aAAqB,CAAC;AAE1B,MAAM,iBAAiB,GAAuD,IAAI,GAAG,EAAE,CAAC;AAEjF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,YAA8C,EAAE,EAAE;IAC5F,MAAM,aAAa,GAAG;QAClB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,GAAG,EAAE,OAAO,QAAQ,IAAI;QACxB,OAAO,EAAE,YAAY;KACxB,CAAC;IAEF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEK,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,QAAwC,EAAE,EAAE;IACjF,iBAAiB,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;QAC9C,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEK,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;IAC1C,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;QACvC,iBAAiB,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;KAC5C;AACL,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEK,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC3C,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IAElD,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;IAEpD,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC,CAAC;AARW,QAAA,UAAU,cAQrB;AAEF,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAc,CAAuB,CAAC;IAEpE,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,iBAAiB,EAAE;QACjD,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,CAAC;YAEnB,OAAO;SACV;KACJ;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAmB,EAAE,EAAE;IACzC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE;IACpB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvD,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEnD,gBAAgB,GAAG,UAAU,CAAC,kBAAU,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC"}
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) => 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,38 +23,32 @@ 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
28
  const WEBSOCKET_MAGIC_STRING_KEY = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
29
29
  const SEVEN_BITS_INTEGER_MARKER = 125;
30
30
  const SIXTEEN_BITS_INTEGER_MARKER = 126;
31
- const MAXIMUM_SIXTEEN_BITS_INTEGER = 2 ** 16;
31
+ const THIRTYTWO_BITS_INTEGER_MARKER = 127;
32
32
  const MASK_KEY_BYTES_LENGTH = 4;
33
- const OPCODE_TEXT = 0x01;
34
- const FIRST_BIT = 128;
35
33
  const socketList = [];
36
34
  const messageHandleList = new Map();
37
- const readOutput = (tag, callback) => {
38
- messageHandleList.set(`cws_${tag}_o`, (message) => {
39
- callback(message);
35
+ const receiveOutput = (tag, callback) => {
36
+ messageHandleList.set(`cws_${tag}_o`, (socket, data) => {
37
+ callback(socket, data);
40
38
  });
41
39
  };
42
- exports.readOutput = readOutput;
43
- const readOutputOff = (tag) => {
40
+ exports.receiveOutput = receiveOutput;
41
+ const receiveOutputOff = (tag) => {
44
42
  if (messageHandleList.has(`cws_${tag}_o`)) {
45
43
  messageHandleList.delete(`cws_${tag}_o`);
46
44
  }
47
45
  };
48
- exports.readOutputOff = readOutputOff;
46
+ exports.receiveOutputOff = receiveOutputOff;
49
47
  const sendInput = (socket, tagValue, messageValue) => {
50
48
  if (tagValue) {
51
- const tagValueSplit = tagValue.split("_");
52
- tagValueSplit.shift();
53
- tagValueSplit.pop();
54
- const tagValueJoin = tagValueSplit.join("_");
55
49
  const dataStructure = {
56
50
  date: new Date().toISOString(),
57
- tag: `cws_${tagValueJoin}_i`,
51
+ tag: `cws_${tagValue}_i`,
58
52
  message: messageValue
59
53
  };
60
54
  const result = prepareMessage(JSON.stringify(dataStructure));
@@ -66,7 +60,7 @@ const sendInputBroadcast = (socket, tag, message, excludeSender = true) => {
66
60
  for (const client of socketList) {
67
61
  if (client && !client.destroyed) {
68
62
  if ((excludeSender && client !== socket) || !excludeSender) {
69
- (0, exports.sendInput)(client, `cws_${tag}_i`, message);
63
+ (0, exports.sendInput)(client, tag, message);
70
64
  }
71
65
  }
72
66
  }
@@ -76,26 +70,17 @@ const create = (server) => {
76
70
  server.on("upgrade", onServerUpgrade);
77
71
  };
78
72
  exports.create = create;
79
- const messageHandle = (data) => {
80
- for (const [tag, eventHandler] of messageHandleList) {
81
- if (data.tag === tag) {
82
- eventHandler(data);
83
- return;
84
- }
85
- }
86
- };
87
73
  const prepareMessage = (data) => {
88
74
  const message = Buffer.from(data);
89
75
  const messageSize = message.length;
90
76
  let dataBuffer;
91
- const firstByte = 0x80 | OPCODE_TEXT;
77
+ const firstByte = 0x80 | 0x01;
92
78
  if (messageSize <= SEVEN_BITS_INTEGER_MARKER) {
93
79
  const bytes = [firstByte];
94
80
  dataBuffer = Buffer.from(bytes.concat(messageSize));
95
81
  }
96
- else if (messageSize <= MAXIMUM_SIXTEEN_BITS_INTEGER) {
97
- const offsetFourBytes = 4;
98
- const target = Buffer.allocUnsafe(offsetFourBytes);
82
+ else if (messageSize <= 2 ** 16) {
83
+ const target = Buffer.allocUnsafe(4);
99
84
  target[0] = firstByte;
100
85
  target[1] = SIXTEEN_BITS_INTEGER_MARKER | 0x0;
101
86
  target.writeUint16BE(messageSize, 2);
@@ -113,54 +98,58 @@ const prepareMessage = (data) => {
113
98
  }
114
99
  return result;
115
100
  };
116
- const unmask = (encodedBuffer, maskKey) => {
117
- const finalBuffer = Buffer.from(encodedBuffer);
118
- for (let index = 0; index < encodedBuffer.length; index++) {
119
- 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
+ }
120
107
  }
121
- return finalBuffer;
122
108
  };
123
109
  const onSocketEnd = (socket) => {
124
110
  (0, exports.sendInputBroadcast)(socket, "broadcast", `Client ${socket.remoteAddress || ""} disconnected.`);
125
111
  const index = socketList.indexOf(socket);
126
- if (index !== -1) {
112
+ if (index > -1) {
127
113
  socketList.splice(index, 1);
128
114
  }
129
115
  socket.destroy();
130
116
  };
131
- const onSocketReadable = (socket) => {
132
- socket.read(1);
133
- const socketRead = socket.read(1);
134
- if (socketRead !== null) {
135
- const [markerAndPayloadLength] = socketRead;
136
- const lengthIndicatorInBits = markerAndPayloadLength - FIRST_BIT;
137
- let messageLength = 0;
138
- if (lengthIndicatorInBits <= SEVEN_BITS_INTEGER_MARKER) {
139
- messageLength = lengthIndicatorInBits;
140
- }
141
- else if (lengthIndicatorInBits === SIXTEEN_BITS_INTEGER_MARKER) {
142
- const socketRead = socket.read(2);
143
- messageLength = socketRead.readUint16BE(0);
144
- }
145
- else {
146
- 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];
147
136
  }
148
- const maskKey = socket.read(MASK_KEY_BYTES_LENGTH);
149
- const encoded = socket.read(messageLength);
150
- const decoded = unmask(encoded, maskKey).toString("utf8");
151
- let data = {};
152
- if (/^[\],:{}\s]*$/.test(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
153
142
  .replace(/\\["\\/bfnrtu]/g, "@")
154
143
  .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\\-]?\d+)?/g, "]")
155
144
  .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
156
- data = JSON.parse(decoded);
145
+ data = JSON.parse(payloadOutput);
157
146
  }
158
- messageHandle(data);
159
147
  }
148
+ messageHandle(socket, data);
160
149
  };
161
150
  const onServerUpgrade = (request, socket) => {
162
151
  if (request.headers["upgrade"] !== "websocket") {
163
- socket.destroy();
152
+ socket.end("HTTP/1.1 400 Bad Request");
164
153
  return;
165
154
  }
166
155
  const { "sec-websocket-key": webClientSocketKey } = request.headers;
@@ -175,13 +164,12 @@ const onServerUpgrade = (request, socket) => {
175
164
  }
176
165
  });
177
166
  socketList.push(socket);
178
- socket.on("readable", () => onSocketReadable(socket));
179
- socket.on("end", () => onSocketEnd(socket));
167
+ socket.on("data", (buffer) => {
168
+ onSocketData(socket, buffer);
169
+ });
170
+ socket.on("end", () => {
171
+ onSocketEnd(socket);
172
+ });
180
173
  (0, exports.sendInputBroadcast)(socket, "broadcast", `Client ${socket.remoteAddress || ""} connected.`);
181
174
  };
182
- for (const event of ["uncaughtException", "unhandledRejection"]) {
183
- process.on(event, (error) => {
184
- console.log("@cimo/websocket - Helper.ts - keepProcess()", `Event: ${event} - Error: ${error.stack?.toString() || error.toString()}`);
185
- });
186
- }
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,7 +1,7 @@
1
1
  {
2
2
  "name": "@cimo/websocket",
3
- "version": "1.0.12",
4
- "description": "Websocket API (server and client) fast and secure.",
3
+ "version": "1.0.14",
4
+ "description": "Websocket API (server/client). Light, fast and secure.",
5
5
  "author": "cimo",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -11,7 +11,7 @@
11
11
  "scripts": {
12
12
  "preinstall": "([ ! -f package-lock.json ] && npm install --package-lock-only --ignore-scripts --no-audit); npx npm-force-resolutions",
13
13
  "check": "eslint . --fix",
14
- "remove_dist": "node -e \"const fs = require('fs');try {fs.rmdirSync('./dist/',{recursive: true})} catch{};process.exit(0);\"",
14
+ "remove_dist": "node -e \"const fs = require('fs'); try{ fs.rmdirSync('./dist/', { recursive: true }) } catch{}; process.exit(0);\"",
15
15
  "build": "npm run check && npm run remove_dist && tsc --build tsconfig.build_server.json && tsc --build tsconfig.build_client.json",
16
16
  "pack": "npm run build && npm pack"
17
17
  },