Socket
Socket
Sign inDemoInstall

@trufflesuite/uws-js-unofficial

Package Overview
Dependencies
Maintainers
9
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@trufflesuite/uws-js-unofficial - npm Package Compare versions

Comparing version 18.14.0-unofficial.10 to 18.14.0-unofficial.11

63

dist/websocket.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebSocket = void 0;
const TOO_BIG_MESSAGE = Buffer.from("Received too big message", "utf8");
/**
* Converts a buffer to an `ArrayBuffer`.
*
* @param {Buffer} buf The buffer to convert
* @return {ArrayBuffer} Converted buffer
* @public
*/
function toArrayBuffer(buf) {
if (buf.byteLength === buf.buffer.byteLength) {
return buf.buffer;
}
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
}
const NODE_VERSION = parseInt(process.versions.node, 10);
class WebSocket {
constructor(internalWs) {
this.internalWs = internalWs;
// `nodebuffer` is already the default, but I just wanted to be explicit
// here because when `nodebuffer` is the binaryType the `message` event's
// data type is guaranteed to be a `Buffer`. We don't need to check for
// different types of data.
// I mention all this because if `arraybuffer` or `fragment` is used for the
// binaryType the `"message"` event's `data` may end up being
// `ArrayBuffer | Buffer`, or `Buffer[] | Buffer`, respectively.
internalWs.binaryType = "nodebuffer";
}

@@ -19,3 +42,12 @@ initialize(behavior) {

this.internalWs._closeCode = 1006;
this.internalWs._closeMessage = "Received too big message";
this.internalWs._closeMessage = TOO_BIG_MESSAGE;
// node 14 and up automatically destroy the socket after an error occurs
// but versions before that they don't. We need to do our own cleanup
// here, otherwise errors (like "Max payload size exceeded") won't
// immediately close the websocket connection.
// See https://github.com/websockets/ws/issues/1940#issuecomment-907432872
// for more information
if (NODE_VERSION < 14) {
this.internalWs.terminate();
}
}

@@ -26,22 +58,5 @@ else {

});
this.internalWs.on("message", (message) => {
this.internalWs.on("message", (message, isBinary) => {
if (typeof behavior.message === "function") {
if (typeof message === "string") {
const buf = new ArrayBuffer(message.length);
const bufView = new Uint8Array(buf);
for (let i = 0; i < message.length; i++) {
bufView[i] = message.charCodeAt(i);
}
behavior.message(this, buf, false);
}
else if (Buffer.isBuffer(message)) {
const buf = (new Uint8Array(message)).buffer;
behavior.message(this, buf, true);
}
else if (Array.isArray(message)) {
// array of buffers. do nothing?
}
else {
behavior.message(this, message, true);
}
behavior.message(this, toArrayBuffer(message), isBinary);
}

@@ -53,7 +68,3 @@ });

if (typeof behavior.close === "function") {
const buf = new ArrayBuffer(reason.length);
const bufView = new Uint8Array(buf);
for (let i = 0; i < reason.length; i++) {
bufView[i] = reason.charCodeAt(i);
}
const buf = reason ? toArrayBuffer(reason) : new ArrayBuffer(0);
behavior.close(this, code, buf);

@@ -136,2 +147,2 @@ }

exports.WebSocket = WebSocket;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhbGxiYWNrL3dlYnNvY2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxNQUFhLFNBQVM7SUFHcEIsWUFBWSxVQUE2QjtRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQTJCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVyQyxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLHFFQUFxRTtZQUNyRSx5RUFBeUU7WUFDekUsWUFBWTtZQUNaLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSywyQkFBMkIsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFVBQWtCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFVBQWtCLENBQUMsYUFBYSxHQUFHLDBCQUEwQixDQUFDO2FBQ3JFO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hDLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtnQkFDMUMsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7b0JBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhbGxiYWNrL3dlYnNvY2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXhFOzs7Ozs7R0FNRztBQUNILFNBQVMsYUFBYSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQzVDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztLQUNuQjtJQUVELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXpELE1BQWEsU0FBUztJQUdwQixZQUFZLFVBQTZCO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsdUVBQXVFO1FBQ3ZFLDJCQUEyQjtRQUMzQiw0RUFBNEU7UUFDNUUsNkRBQTZEO1FBQzdELGdFQUFnRTtRQUNoRSxVQUFVLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztJQUN2QyxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQTJCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVyQyxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLHFFQUFxRTtZQUNyRSx5RUFBeUU7WUFDekUsWUFBWTtZQUNaLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSywyQkFBMkIsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFVBQWtCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFVBQWtCLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztnQkFFekQsd0VBQXdFO2dCQUN4RSxxRUFBcUU7Z0JBQ3JFLGtFQUFrRTtnQkFDbEUsOENBQThDO2dCQUM5QywwRUFBMEU7Z0JBQzFFLHVCQUF1QjtnQkFDdkIsSUFBSSxZQUFZLEdBQUcsRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUM3QjthQUNGO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQWUsRUFBRSxRQUFpQixFQUFFLEVBQUU7WUFDbkUsSUFBSSxPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUMxQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDMUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDJDQUEyQztRQUMzQyx1REFBdUQ7UUFFdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQWMsRUFBRSxFQUFFO1lBQ25ELElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtnQkFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDakM7WUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxtQkFBbUI7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQXlCLEVBQUUsUUFBaUIsRUFBRSxRQUFlO1FBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM1QixNQUFNLEVBQUUsUUFBUTtZQUNoQixRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVksRUFBRSxZQUE4QjtRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsbUJBQW1CO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxPQUF5QjtRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLFNBQVMsQ0FBQyxLQUF1QjtRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLFdBQVcsQ0FBQyxLQUF1QjtRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLGNBQWM7UUFDWixPQUFPO0lBQ1QsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxtQ0FBbUM7SUFDbkMsT0FBTyxDQUFDLEtBQXVCLEVBQUUsT0FBeUIsRUFBRSxRQUFpQixFQUFFLFFBQWlCO1FBQzlGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFjO1FBQ2pCLEVBQUUsRUFBRSxDQUFDO0lBQ1AsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxtQ0FBbUM7SUFDbkMsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBbEpELDhCQWtKQyJ9
{
"name": "@trufflesuite/uws-js-unofficial",
"version": "18.14.0-unofficial.10",
"version": "18.14.0-unofficial.11",
"description": "Simple, secure, & standards compliant web server for the most demanding of applications.",

@@ -38,3 +38,3 @@ "main": "src/uws.js",

"devDependencies": {
"@types/ws": "^7.4.1",
"@types/ws": "^7.4.7",
"electron-rebuild": "^2.3.5",

@@ -45,3 +45,3 @@ "node-gyp": "^7.1.2",

"dependencies": {
"ws": "^7.4.4"
"ws": "^8.2.0"
},

@@ -48,0 +48,0 @@ "optionalDependencies": {

import {
RecognizedString,
WebSocket as uWsWebSocket,
WebSocketBehavior
WebSocketBehavior,
} from "../../docs/index";
import InternalWebSocket from "ws";
const TOO_BIG_MESSAGE = Buffer.from("Received too big message", "utf8");
/**
* Converts a buffer to an `ArrayBuffer`.
*
* @param {Buffer} buf The buffer to convert
* @return {ArrayBuffer} Converted buffer
* @public
*/
function toArrayBuffer(buf: Buffer) {
if (buf.byteLength === buf.buffer.byteLength) {
return buf.buffer;
}
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
}
const NODE_VERSION = parseInt(process.versions.node, 10);
export class WebSocket implements uWsWebSocket {

@@ -13,2 +32,10 @@ private internalWs: InternalWebSocket;

this.internalWs = internalWs;
// `nodebuffer` is already the default, but I just wanted to be explicit
// here because when `nodebuffer` is the binaryType the `message` event's
// data type is guaranteed to be a `Buffer`. We don't need to check for
// different types of data.
// I mention all this because if `arraybuffer` or `fragment` is used for the
// binaryType the `"message"` event's `data` may end up being
// `ArrayBuffer | Buffer`, or `Buffer[] | Buffer`, respectively.
internalWs.binaryType = "nodebuffer";
}

@@ -29,3 +56,13 @@

(this.internalWs as any)._closeCode = 1006;
(this.internalWs as any)._closeMessage = "Received too big message";
(this.internalWs as any)._closeMessage = TOO_BIG_MESSAGE;
// node 14 and up automatically destroy the socket after an error occurs
// but versions before that they don't. We need to do our own cleanup
// here, otherwise errors (like "Max payload size exceeded") won't
// immediately close the websocket connection.
// See https://github.com/websockets/ws/issues/1940#issuecomment-907432872
// for more information
if (NODE_VERSION < 14) {
this.internalWs.terminate();
}
} else {

@@ -36,19 +73,5 @@ throw error;

this.internalWs.on("message", (message) => {
this.internalWs.on("message", (message: Buffer, isBinary: boolean) => {
if (typeof behavior.message === "function") {
if (typeof message === "string") {
const buf = new ArrayBuffer(message.length);
const bufView = new Uint8Array(buf);
for (let i = 0; i < message.length; i++) {
bufView[i] = message.charCodeAt(i);
}
behavior.message(this, buf, false);
} else if (Buffer.isBuffer(message)) {
const buf = (new Uint8Array(message)).buffer;
behavior.message(this, buf, true);
} else if (Array.isArray(message)) {
// array of buffers. do nothing?
} else {
behavior.message(this, message, true);
}
behavior.message(this, toArrayBuffer(message), isBinary);
}

@@ -60,9 +83,5 @@ });

this.internalWs.on("close", (code, reason) => {
this.internalWs.on("close", (code, reason: Buffer) => {
if (typeof behavior.close === "function") {
const buf = new ArrayBuffer(reason.length);
const bufView = new Uint8Array(buf);
for (let i = 0; i < reason.length; i++) {
bufView[i] = reason.charCodeAt(i);
}
const buf = reason ? toArrayBuffer(reason) : new ArrayBuffer(0);
behavior.close(this, code, buf);

@@ -69,0 +88,0 @@ }

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc