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.
Files changed (43) hide show
  1. package/LICENSE +190 -209
  2. package/README.md +11 -11
  3. package/dist/index.d.ts +0 -0
  4. package/dist/index.js +1 -1
  5. package/dist/version.d.ts +5 -3
  6. package/dist/version.js +8 -5
  7. package/dist/ws/Connection.d.ts +44 -0
  8. package/dist/ws/Connection.js +17 -0
  9. package/dist/ws/client/core/ClientCore.d.ts +9 -17
  10. package/dist/ws/client/core/ClientCore.js +122 -159
  11. package/dist/ws/client/node/ClientNode.d.ts +0 -0
  12. package/dist/ws/client/node/ClientNode.js +8 -25
  13. package/dist/ws/packets/PacketProcessors.d.ts +11 -7
  14. package/dist/ws/packets/PacketProcessors.js +218 -177
  15. package/dist/ws/packets/PacketType.d.ts +20 -16
  16. package/dist/ws/packets/PacketType.js +21 -17
  17. package/dist/ws/packets/Packets.d.ts +8 -10
  18. package/dist/ws/packets/Packets.js +186 -161
  19. package/dist/ws/server/SonicWSConnection.d.ts +7 -21
  20. package/dist/ws/server/SonicWSConnection.js +117 -148
  21. package/dist/ws/server/SonicWSServer.d.ts +0 -0
  22. package/dist/ws/server/SonicWSServer.js +79 -98
  23. package/dist/ws/util/ArrayUtil.d.ts +0 -0
  24. package/dist/ws/util/ArrayUtil.js +3 -3
  25. package/dist/ws/util/BufferUtil.d.ts +3 -0
  26. package/dist/ws/util/BufferUtil.js +19 -3
  27. package/dist/ws/util/StringUtil.d.ts +6 -0
  28. package/dist/ws/util/StringUtil.js +66 -0
  29. package/dist/ws/util/enums/EnumHandler.d.ts +2 -3
  30. package/dist/ws/util/enums/EnumHandler.js +17 -17
  31. package/dist/ws/util/enums/EnumType.d.ts +1 -1
  32. package/dist/ws/util/enums/EnumType.js +28 -24
  33. package/dist/ws/util/packets/BatchHelper.d.ts +9 -5
  34. package/dist/ws/util/packets/BatchHelper.js +50 -39
  35. package/dist/ws/util/packets/CompressionUtil.d.ts +22 -15
  36. package/dist/ws/util/packets/CompressionUtil.js +179 -141
  37. package/dist/ws/util/packets/PacketHolder.d.ts +1 -6
  38. package/dist/ws/util/packets/PacketHolder.js +43 -41
  39. package/dist/ws/util/packets/PacketUtils.d.ts +2 -6
  40. package/dist/ws/util/packets/PacketUtils.js +71 -70
  41. package/dist/ws/util/packets/RateHandler.d.ts +0 -0
  42. package/dist/ws/util/packets/RateHandler.js +24 -26
  43. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright 2025 Lily (cutelittlelily)
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
- var PacketHolder_1 = require("../../util/packets/PacketHolder");
56
- var CompressionUtil_1 = require("../../util/packets/CompressionUtil");
57
- var PacketUtils_1 = require("../../util/packets/PacketUtils");
58
- var version_1 = require("../../../version");
59
- var Packets_1 = require("../../packets/Packets");
60
- var BatchHelper_1 = require("../../util/packets/BatchHelper");
61
- var BufferUtil_1 = require("../../util/BufferUtil");
62
- // throttle at 90% of rate limit to avoid spikes and kicks
63
- var THRESHOLD_MULT = 0.90;
64
- var SonicWSCore = /** @class */ (function () {
65
- function SonicWSCore(ws, bufferHandler) {
66
- var _this = this;
67
- this.clientPackets = new PacketHolder_1.PacketHolder();
68
- this.serverPackets = new PacketHolder_1.PacketHolder();
69
- this.pastKeys = false;
70
- this.readyListeners = [];
71
- this.timers = [];
72
- this.id = -1;
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.keyHandler = function (event) { return _this.serverKeyHandler(event); };
83
- this.socket.addEventListener('message', this.keyHandler); // lambda to persist 'this'
84
- this.socket.addEventListener('close', function (event) {
85
- _this.listeners.close.forEach(function (listener) { return listener(event); });
86
- _this.timers.forEach(clearTimeout);
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
- SonicWSCore.prototype.serverKeyHandler = function (event) {
91
- var _this = this;
92
- var data = event.data.toString();
93
- if (!data.startsWith("SWS")) {
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
- var version = data.charCodeAt(3);
69
+ const version = data[3];
98
70
  if (version != version_1.VERSION) {
99
71
  this.socket.close(1000);
100
- throw new Error("Version mismatch: ".concat(version > version_1.VERSION ? "client" : "server", " is outdated (server: ").concat(version, ", client: ").concat(version_1.VERSION, ")"));
72
+ throw new Error(`Version mismatch: ${version > version_1.VERSION ? "client" : "server"} is outdated (server: ${version}, client: ${version_1.VERSION})`);
101
73
  }
102
- var _a = data.substring(4).split(CompressionUtil_1.NULL), ckData = _a[0], skData = _a[1], uData = _a[2];
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(function (tag) { return _this.preListen[tag].forEach(function (listener) {
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 (key == null)
110
- return console.error(new Error("The server does not send the packet with tag \"".concat(tag, "\"!")));
111
- _this.listen(tag, listener);
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(function (l) { return l(); });
90
+ this.readyListeners.forEach(l => l());
116
91
  this.readyListeners = null; // clear
117
- this.socket.removeEventListener('message', this.keyHandler);
118
- this.socket.addEventListener('message', function (event) { return _this.messageHandler(event); }); // lambda to persist 'this'
119
- this.keyHandler = null;
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
- SonicWSCore.prototype.listenPacket = function (data, code) {
126
- (0, PacketUtils_1.listenPacket)(data, this.listeners.event[code], this.invalidPacket);
127
- };
128
- SonicWSCore.prototype.messageHandler = function (event) {
129
- return __awaiter(this, void 0, void 0, function () {
130
- var data, key, value, packet, batchData;
131
- var _this = this;
132
- return __generator(this, function (_a) {
133
- switch (_a.label) {
134
- case 0: return [4 /*yield*/, this.bufferHandler(event)];
135
- case 1:
136
- data = _a.sent();
137
- this.listeners.message.forEach(function (listener) { return listener(data); });
138
- if (data.length < 1)
139
- return [2 /*return*/];
140
- key = data[0];
141
- value = data.slice(1);
142
- if (key == null)
143
- return [2 /*return*/];
144
- packet = this.serverPackets.getPacket(this.serverPackets.getTag(key));
145
- if (packet.dataBatching == 0) {
146
- this.listenPacket(packet.listen(value, null), key);
147
- return [2 /*return*/];
148
- }
149
- batchData = BatchHelper_1.BatchHelper.unravelBatch(packet, value, null);
150
- if (typeof batchData == 'string')
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
- SonicWSCore.prototype.raw_onmessage = function (listener) {
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
- SonicWSCore.prototype.send = function (tag) {
187
- var values = [];
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(packet, code, data);
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
- SonicWSCore.prototype.on_ready = function (listener) {
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
- SonicWSCore.prototype.on_close = function (listener) {
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
- SonicWSCore.prototype.on = function (tag, listener) {
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
- * Sets a timeout that will automatically end when the socket closes
230
- * @param call The function to call
231
- * @param time The time between now and the call (ms)
232
- */
233
- SonicWSCore.prototype.setTimeout = function (call, time) {
234
- var timeout = setTimeout(call, time);
235
- this.timers.push(timeout);
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
- * Sets an interval that will automatically end when the socket closes
240
- * @param call The function to call
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
- return SonicWSCore;
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 (cutelittlelily)
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
- var ws_1 = __importDefault(require("ws"));
38
- var ClientCore_1 = require("../core/ClientCore");
22
+ const ws_1 = __importDefault(require("ws"));
23
+ const ClientCore_1 = require("../core/ClientCore");
39
24
  /** Class to connect to a SonicWS server */
40
- var SonicWS = /** @class */ (function (_super) {
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
- function SonicWS(url, options) {
48
- var ws = new ws_1.default.WebSocket(url, options);
49
- return _super.call(this, ws, function (val) { return Promise.resolve(new Uint8Array(val.data)); }) || this;
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
- return SonicWS;
52
- }(ClientCore_1.SonicWSCore));
35
+ }
53
36
  exports.SonicWS = SonicWS;
@@ -1,9 +1,13 @@
1
- import { EnumValue } from "../util/enums/EnumType";
1
+ import { EnumPackage } from "../util/enums/EnumType";
2
2
  import { Packet } from "./Packets";
3
3
  import { PacketType } from "./PacketType";
4
- export declare const PacketValidityProcessors: Record<PacketType, (data: Uint8Array, dataCap: number, dataMin: number, packet: Packet, index: number) => boolean>;
5
- export declare const PacketReceiveProcessors: Record<PacketType, (data: Uint8Array, cap: number, packet: Packet, index: number) => Uint8Array | string | number | number[] | string[] | EnumValue[]>;
6
- export declare const PacketSendProcessors: Record<PacketType, (...data: any) => number[]>;
7
- export declare function createObjSendProcessor(types: PacketType[], packetDelimitSize: number): (data: any[]) => number[];
8
- export declare function createObjReceiveProcessor(types: PacketType[], packetDelimitSize: number): (data: Uint8Array, dataCaps: number[], packet: Packet) => any;
9
- export declare function createObjValidator(types: PacketType[], packetDelimitSize: number): (data: Uint8Array, dataCaps: number[], dataMins: number[], packet: Packet) => boolean;
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;