sonic-ws 1.0.0-rc.8 → 1.0.3
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/LICENSE +190 -209
- package/README.md +11 -11
- package/dist/index.d.ts +0 -0
- package/dist/index.js +1 -1
- package/dist/version.d.ts +5 -3
- package/dist/version.js +8 -5
- package/dist/ws/Connection.d.ts +44 -0
- package/dist/ws/Connection.js +17 -0
- package/dist/ws/client/core/ClientCore.d.ts +9 -17
- package/dist/ws/client/core/ClientCore.js +122 -159
- package/dist/ws/client/node/ClientNode.d.ts +0 -0
- package/dist/ws/client/node/ClientNode.js +8 -25
- package/dist/ws/packets/PacketProcessors.d.ts +11 -7
- package/dist/ws/packets/PacketProcessors.js +218 -177
- package/dist/ws/packets/PacketType.d.ts +20 -16
- package/dist/ws/packets/PacketType.js +21 -17
- package/dist/ws/packets/Packets.d.ts +8 -10
- package/dist/ws/packets/Packets.js +186 -161
- package/dist/ws/server/SonicWSConnection.d.ts +7 -21
- package/dist/ws/server/SonicWSConnection.js +117 -148
- package/dist/ws/server/SonicWSServer.d.ts +0 -0
- package/dist/ws/server/SonicWSServer.js +79 -98
- package/dist/ws/util/ArrayUtil.d.ts +0 -0
- package/dist/ws/util/ArrayUtil.js +3 -3
- package/dist/ws/util/BufferUtil.d.ts +3 -0
- package/dist/ws/util/BufferUtil.js +19 -3
- package/dist/ws/util/StringUtil.d.ts +6 -0
- package/dist/ws/util/StringUtil.js +66 -0
- package/dist/ws/util/enums/EnumHandler.d.ts +2 -3
- package/dist/ws/util/enums/EnumHandler.js +17 -17
- package/dist/ws/util/enums/EnumType.d.ts +1 -1
- package/dist/ws/util/enums/EnumType.js +28 -24
- package/dist/ws/util/packets/BatchHelper.d.ts +9 -5
- package/dist/ws/util/packets/BatchHelper.js +50 -39
- package/dist/ws/util/packets/CompressionUtil.d.ts +22 -15
- package/dist/ws/util/packets/CompressionUtil.js +179 -141
- package/dist/ws/util/packets/PacketHolder.d.ts +1 -6
- package/dist/ws/util/packets/PacketHolder.js +43 -41
- package/dist/ws/util/packets/PacketUtils.d.ts +2 -6
- package/dist/ws/util/packets/PacketUtils.js +71 -70
- package/dist/ws/util/packets/RateHandler.d.ts +0 -0
- package/dist/ws/util/packets/RateHandler.js +24 -26
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright 2025 Lily (
|
|
3
|
+
* Copyright 2025 Lily (liwybloc)
|
|
4
4
|
*
|
|
5
5
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
* you may not use this file except in compliance with the License.
|
|
@@ -14,62 +14,29 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
28
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
-
function step(op) {
|
|
31
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
-
switch (op[0]) {
|
|
36
|
-
case 0: case 1: t = op; break;
|
|
37
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
-
default:
|
|
41
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
-
if (t[2]) _.ops.pop();
|
|
46
|
-
_.trys.pop(); continue;
|
|
47
|
-
}
|
|
48
|
-
op = body.call(thisArg, _);
|
|
49
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
18
|
exports.SonicWSCore = void 0;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
19
|
+
const PacketHolder_1 = require("../../util/packets/PacketHolder");
|
|
20
|
+
const CompressionUtil_1 = require("../../util/packets/CompressionUtil");
|
|
21
|
+
const PacketUtils_1 = require("../../util/packets/PacketUtils");
|
|
22
|
+
const version_1 = require("../../../version");
|
|
23
|
+
const Packets_1 = require("../../packets/Packets");
|
|
24
|
+
const BatchHelper_1 = require("../../util/packets/BatchHelper");
|
|
25
|
+
const BufferUtil_1 = require("../../util/BufferUtil");
|
|
26
|
+
class SonicWSCore {
|
|
27
|
+
/** Raw 'ws' library connection / webjs WebSocket class */
|
|
28
|
+
socket;
|
|
29
|
+
listeners;
|
|
30
|
+
preListen;
|
|
31
|
+
clientPackets = new PacketHolder_1.PacketHolder();
|
|
32
|
+
serverPackets = new PacketHolder_1.PacketHolder();
|
|
33
|
+
pastKeys = false;
|
|
34
|
+
readyListeners = [];
|
|
35
|
+
batcher;
|
|
36
|
+
bufferHandler;
|
|
37
|
+
id = -1;
|
|
38
|
+
_timers = {};
|
|
39
|
+
constructor(ws, bufferHandler) {
|
|
73
40
|
this.socket = ws;
|
|
74
41
|
this.listeners = {
|
|
75
42
|
message: [],
|
|
@@ -79,144 +46,131 @@ var SonicWSCore = /** @class */ (function () {
|
|
|
79
46
|
this.preListen = {};
|
|
80
47
|
this.batcher = new BatchHelper_1.BatchHelper();
|
|
81
48
|
this.invalidPacket = this.invalidPacket.bind(this);
|
|
82
|
-
this.
|
|
83
|
-
this.
|
|
84
|
-
this.socket.addEventListener('
|
|
85
|
-
|
|
86
|
-
|
|
49
|
+
this.serverKeyHandler = this.serverKeyHandler.bind(this);
|
|
50
|
+
this.messageHandler = this.messageHandler.bind(this);
|
|
51
|
+
this.socket.addEventListener('message', this.serverKeyHandler);
|
|
52
|
+
this.socket.addEventListener('close', (event) => {
|
|
53
|
+
this.listeners.close.forEach(listener => listener(event));
|
|
54
|
+
Object.values(this._timers).forEach(clearTimeout);
|
|
87
55
|
});
|
|
88
56
|
this.bufferHandler = bufferHandler;
|
|
89
57
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (
|
|
58
|
+
reading = false;
|
|
59
|
+
async serverKeyHandler(event) {
|
|
60
|
+
// stupid asynchronous bullshit
|
|
61
|
+
if (this.reading)
|
|
62
|
+
return this.messageHandler(event);
|
|
63
|
+
this.reading = true;
|
|
64
|
+
const data = await this.bufferHandler(event);
|
|
65
|
+
if (data.length < 3 || (0, BufferUtil_1.as8String)(data.slice(0, 3)) != version_1.SERVER_SUFFIX) {
|
|
94
66
|
this.socket.close(1000);
|
|
95
67
|
throw new Error("The server requested is not a Sonic WS server.");
|
|
96
68
|
}
|
|
97
|
-
|
|
69
|
+
const version = data[3];
|
|
98
70
|
if (version != version_1.VERSION) {
|
|
99
71
|
this.socket.close(1000);
|
|
100
|
-
throw new Error(
|
|
72
|
+
throw new Error(`Version mismatch: ${version > version_1.VERSION ? "client" : "server"} is outdated (server: ${version}, client: ${version_1.VERSION})`);
|
|
101
73
|
}
|
|
102
|
-
|
|
74
|
+
const [ckOff, id] = (0, CompressionUtil_1.readVarInt)(data, 4);
|
|
75
|
+
this.id = id;
|
|
76
|
+
const [valuesOff, ckLength] = (0, CompressionUtil_1.readVarInt)(data, ckOff);
|
|
77
|
+
const ckData = data.slice(valuesOff, valuesOff + ckLength);
|
|
103
78
|
this.clientPackets.holdPackets(Packets_1.Packet.deserializeAll(ckData, true));
|
|
79
|
+
const skData = data.slice(valuesOff + ckLength, data.length);
|
|
104
80
|
this.serverPackets.holdPackets(Packets_1.Packet.deserializeAll(skData, true));
|
|
105
81
|
this.batcher.registerSendPackets(this.clientPackets, this);
|
|
106
|
-
Object.keys(this.preListen).forEach(
|
|
107
|
-
var key = _this.serverPackets.getKey(tag);
|
|
82
|
+
Object.keys(this.preListen).forEach(tag => this.preListen[tag].forEach(listener => {
|
|
108
83
|
// print the error to console without halting execution
|
|
109
|
-
if (
|
|
110
|
-
return console.error(new Error(
|
|
111
|
-
|
|
112
|
-
})
|
|
84
|
+
if (!this.serverPackets.hasTag(tag))
|
|
85
|
+
return console.error(new Error(`The server does not send the packet with tag "${tag}"!`));
|
|
86
|
+
this.listen(tag, listener);
|
|
87
|
+
}));
|
|
113
88
|
this.preListen = null; // clear
|
|
114
89
|
this.pastKeys = true;
|
|
115
|
-
this.readyListeners.forEach(
|
|
90
|
+
this.readyListeners.forEach(l => l());
|
|
116
91
|
this.readyListeners = null; // clear
|
|
117
|
-
this.socket.removeEventListener('message', this.
|
|
118
|
-
this.socket.addEventListener('message',
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
SonicWSCore.prototype.invalidPacket = function (listened) {
|
|
92
|
+
this.socket.removeEventListener('message', this.serverKeyHandler);
|
|
93
|
+
this.socket.addEventListener('message', this.messageHandler);
|
|
94
|
+
}
|
|
95
|
+
invalidPacket(listened) {
|
|
122
96
|
console.log(listened);
|
|
123
97
|
throw new Error("An error occured with data from the server!! This is probably my fault.. make an issue at https://github.com/cutelittlelily/sonic-ws");
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return [2 /*return*/, this.invalidPacket(batchData)];
|
|
152
|
-
batchData.forEach(function (data) { return _this.listenPacket(data, key); });
|
|
153
|
-
return [2 /*return*/];
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
};
|
|
158
|
-
SonicWSCore.prototype.listen = function (key, listener) {
|
|
159
|
-
var skey = this.serverPackets.getKey(key);
|
|
160
|
-
if (!skey) {
|
|
98
|
+
}
|
|
99
|
+
listenPacket(data, code) {
|
|
100
|
+
const listeners = this.listeners.event[code];
|
|
101
|
+
if (!listeners)
|
|
102
|
+
return console.warn("Warn: No listener for packet " + this.serverPackets.getTag(code));
|
|
103
|
+
(0, PacketUtils_1.listenPacket)(data, listeners, this.invalidPacket);
|
|
104
|
+
}
|
|
105
|
+
async messageHandler(event) {
|
|
106
|
+
const data = await this.bufferHandler(event);
|
|
107
|
+
this.listeners.message.forEach(listener => listener(data));
|
|
108
|
+
if (data.length < 1)
|
|
109
|
+
return;
|
|
110
|
+
const key = data[0];
|
|
111
|
+
const value = data.slice(1);
|
|
112
|
+
const packet = this.serverPackets.getPacket(this.serverPackets.getTag(key));
|
|
113
|
+
if (packet.dataBatching == 0) {
|
|
114
|
+
this.listenPacket(packet.listen(value, null), key);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const batchData = BatchHelper_1.BatchHelper.unravelBatch(packet, value, null);
|
|
118
|
+
if (typeof batchData == 'string')
|
|
119
|
+
return this.invalidPacket(batchData);
|
|
120
|
+
batchData.forEach(data => this.listenPacket(data, key));
|
|
121
|
+
}
|
|
122
|
+
listen(key, listener) {
|
|
123
|
+
const skey = this.serverPackets.getKey(key);
|
|
124
|
+
if (skey == null) {
|
|
161
125
|
console.log("Key is not available on server: " + key);
|
|
162
126
|
return;
|
|
163
127
|
}
|
|
164
128
|
if (!this.listeners.event[skey])
|
|
165
129
|
this.listeners.event[skey] = [];
|
|
166
130
|
this.listeners.event[skey].push(listener);
|
|
167
|
-
}
|
|
131
|
+
}
|
|
168
132
|
/**
|
|
169
133
|
* Listens for all messages rawly
|
|
170
134
|
* @param listener Callback for when data is received
|
|
171
135
|
*/
|
|
172
|
-
|
|
136
|
+
raw_onmessage(listener) {
|
|
173
137
|
this.listeners.message.push(listener);
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Sends raw data
|
|
177
|
-
*/
|
|
178
|
-
SonicWSCore.prototype.raw_send = function (data) {
|
|
179
|
-
this.socket.send(data);
|
|
180
|
-
};
|
|
138
|
+
}
|
|
181
139
|
/**
|
|
182
140
|
* Sends a packet to the server
|
|
183
141
|
* @param tag The tag of the packet
|
|
184
142
|
* @param values The values to send
|
|
185
143
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
189
|
-
values[_i - 1] = arguments[_i];
|
|
190
|
-
}
|
|
191
|
-
var _a = (0, PacketUtils_1.processPacket)(this.clientPackets, tag, values), code = _a[0], data = _a[1], packet = _a[2];
|
|
144
|
+
send(tag, ...values) {
|
|
145
|
+
const [code, data, packet] = (0, PacketUtils_1.processPacket)(this.clientPackets, tag, values);
|
|
192
146
|
if (packet.dataBatching == 0)
|
|
193
147
|
this.raw_send((0, BufferUtil_1.toPacketBuffer)(code, data));
|
|
194
148
|
else
|
|
195
|
-
this.batcher.batchPacket(
|
|
196
|
-
}
|
|
149
|
+
this.batcher.batchPacket(code, data);
|
|
150
|
+
}
|
|
197
151
|
/**
|
|
198
152
|
* Listens for when the client connects
|
|
199
153
|
* @param listener Callback on connection
|
|
200
154
|
*/
|
|
201
|
-
|
|
155
|
+
on_ready(listener) {
|
|
202
156
|
if (this.pastKeys)
|
|
203
157
|
listener();
|
|
204
158
|
else
|
|
205
159
|
this.readyListeners.push(listener);
|
|
206
|
-
}
|
|
160
|
+
}
|
|
207
161
|
/**
|
|
208
162
|
* Listens for when the client closes
|
|
209
163
|
* @param listener Callback on close with close event
|
|
210
164
|
*/
|
|
211
|
-
|
|
165
|
+
on_close(listener) {
|
|
212
166
|
this.listeners.close.push(listener);
|
|
213
|
-
}
|
|
167
|
+
}
|
|
214
168
|
/**
|
|
215
169
|
* Listens to a packet from the server
|
|
216
170
|
* @param tag The tag to listen for
|
|
217
171
|
* @param listener The callback with the values
|
|
218
172
|
*/
|
|
219
|
-
|
|
173
|
+
on(tag, listener) {
|
|
220
174
|
if (this.socket.readyState !== WebSocket.OPEN) {
|
|
221
175
|
if (!this.preListen[tag])
|
|
222
176
|
this.preListen[tag] = [];
|
|
@@ -224,27 +178,36 @@ var SonicWSCore = /** @class */ (function () {
|
|
|
224
178
|
return;
|
|
225
179
|
}
|
|
226
180
|
this.listen(tag, listener);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
181
|
+
}
|
|
182
|
+
/* JSDocs in Connection.ts class */
|
|
183
|
+
raw_send(data) {
|
|
184
|
+
this.socket.send(data);
|
|
185
|
+
}
|
|
186
|
+
setTimeout(call, time) {
|
|
187
|
+
const timeout = setTimeout(() => {
|
|
188
|
+
call();
|
|
189
|
+
this.clearTimeout(timeout);
|
|
190
|
+
}, time);
|
|
191
|
+
this.setTimer(timeout);
|
|
236
192
|
return timeout;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
* @param time The time between calls (ms)
|
|
242
|
-
*/
|
|
243
|
-
SonicWSCore.prototype.setInterval = function (call, time) {
|
|
244
|
-
var interval = setInterval(call, time);
|
|
245
|
-
this.timers.push(interval);
|
|
193
|
+
}
|
|
194
|
+
setInterval(call, time) {
|
|
195
|
+
const interval = setInterval(call, time);
|
|
196
|
+
this.setTimer(interval);
|
|
246
197
|
return interval;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
198
|
+
}
|
|
199
|
+
setTimer(id) {
|
|
200
|
+
this._timers[id] = id;
|
|
201
|
+
}
|
|
202
|
+
clearTimeout(id) {
|
|
203
|
+
clearTimeout(id);
|
|
204
|
+
delete this._timers[id];
|
|
205
|
+
}
|
|
206
|
+
clearInterval(id) {
|
|
207
|
+
this.clearTimeout(id);
|
|
208
|
+
}
|
|
209
|
+
close(code, reason) {
|
|
210
|
+
this.socket.close(code, reason);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
250
213
|
exports.SonicWSCore = SonicWSCore;
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright 2025 Lily (
|
|
3
|
+
* Copyright 2025 Lily (liwybloc)
|
|
4
4
|
*
|
|
5
5
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
* you may not use this file except in compliance with the License.
|
|
@@ -14,40 +14,23 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
var __extends = (this && this.__extends) || (function () {
|
|
18
|
-
var extendStatics = function (d, b) {
|
|
19
|
-
extendStatics = Object.setPrototypeOf ||
|
|
20
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
21
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
22
|
-
return extendStatics(d, b);
|
|
23
|
-
};
|
|
24
|
-
return function (d, b) {
|
|
25
|
-
if (typeof b !== "function" && b !== null)
|
|
26
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
27
|
-
extendStatics(d, b);
|
|
28
|
-
function __() { this.constructor = d; }
|
|
29
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
30
|
-
};
|
|
31
|
-
})();
|
|
32
17
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
34
19
|
};
|
|
35
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
21
|
exports.SonicWS = void 0;
|
|
37
|
-
|
|
38
|
-
|
|
22
|
+
const ws_1 = __importDefault(require("ws"));
|
|
23
|
+
const ClientCore_1 = require("../core/ClientCore");
|
|
39
24
|
/** Class to connect to a SonicWS server */
|
|
40
|
-
|
|
41
|
-
__extends(SonicWS, _super);
|
|
25
|
+
class SonicWS extends ClientCore_1.SonicWSCore {
|
|
42
26
|
/**
|
|
43
27
|
* Creates a connection to the url
|
|
44
28
|
* @param url The url to connect to
|
|
45
29
|
* @param options The websocket options
|
|
46
30
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
31
|
+
constructor(url, options) {
|
|
32
|
+
const ws = new ws_1.default.WebSocket(url, options);
|
|
33
|
+
super(ws, (val) => Promise.resolve(new Uint8Array(val.data)));
|
|
50
34
|
}
|
|
51
|
-
|
|
52
|
-
}(ClientCore_1.SonicWSCore));
|
|
35
|
+
}
|
|
53
36
|
exports.SonicWS = SonicWS;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnumPackage } from "../util/enums/EnumType";
|
|
2
2
|
import { Packet } from "./Packets";
|
|
3
3
|
import { PacketType } from "./PacketType";
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function
|
|
9
|
-
|
|
4
|
+
export type PacketTypeValidator = (data: Uint8Array, index: number) => false | any;
|
|
5
|
+
export type PacketReceiveProcessor = (data: Uint8Array, validationResult: any, index: number) => any;
|
|
6
|
+
export type PacketSendProcessor = (...data: any) => number[];
|
|
7
|
+
export declare function createValidator(type: PacketType, dataCap: number, dataMin: number, packet: Packet): PacketTypeValidator;
|
|
8
|
+
export declare function createReceiveProcessor(type: PacketType, enumData: EnumPackage[], cap: number): PacketReceiveProcessor;
|
|
9
|
+
/** Creates a function that processes a packet type */
|
|
10
|
+
export declare function createSendProcessor(type: PacketType): PacketSendProcessor;
|
|
11
|
+
export declare function createObjSendProcessor(packet: Packet): PacketSendProcessor;
|
|
12
|
+
export declare function createObjReceiveProcessor(packet: Packet): PacketReceiveProcessor;
|
|
13
|
+
export declare function createObjValidator(packet: Packet): PacketTypeValidator;
|