:sparkles: make erlpack optional
3 files changed, 16 insertions, 5 deletions
diff --git a/src/events/Connection.ts b/src/events/Connection.ts
index 96c7c441..473c992c 100644
--- a/src/events/Connection.ts
+++ b/src/events/Connection.ts
@@ -6,6 +6,10 @@ import { setHeartbeat } from "../util/setHeartbeat";
import { Send } from "../util/Send";
import { CLOSECODES, OPCODES } from "../util/Constants";
import { createDeflate } from "zlib";
+var erlpack: any;
+try {
+ erlpack = require("erlpack");
+} catch (error) {}
// TODO: check rate limit
// TODO: specify rate limit in config
@@ -19,7 +23,10 @@ export async function Connection(this: Server, socket: WebSocket, request: Incom
const { searchParams } = new URL(`http://localhost${request.url}`);
// @ts-ignore
socket.encoding = searchParams.get("encoding") || "json";
- if (!["json", "etf"].includes(socket.encoding)) return socket.close(CLOSECODES.Decode_error);
+ if (!["json", "etf"].includes(socket.encoding)) {
+ if (socket.encoding === "etf" && erlpack) throw new Error("Erlpack is not installed: 'npm i -D erlpack'");
+ return socket.close(CLOSECODES.Decode_error);
+ }
// @ts-ignore
socket.version = Number(searchParams.get("version")) || 8;
diff --git a/src/events/Message.ts b/src/events/Message.ts
index 2d461e1d..37328b07 100644
--- a/src/events/Message.ts
+++ b/src/events/Message.ts
@@ -1,5 +1,8 @@
import WebSocket, { Data } from "../util/WebSocket";
-import erlpack from "erlpack";
+var erlpack: any;
+try {
+ erlpack = require("erlpack");
+} catch (error) {}
import OPCodeHandlers from "../opcodes";
import { Payload, CLOSECODES } from "../util/Constants";
import { instanceOf, Tuple } from "lambert-server";
diff --git a/src/util/Send.ts b/src/util/Send.ts
index b691b525..09e947a5 100644
--- a/src/util/Send.ts
+++ b/src/util/Send.ts
@@ -1,7 +1,8 @@
-import erlpack from "erlpack";
-import { promisify } from "util";
+var erlpack: any;
+try {
+ erlpack = require("erlpack");
+} catch (error) {}
import { Payload } from "../util/Constants";
-import { deflateSync } from "zlib";
import WebSocket from "./WebSocket";
|