chore: Update dist

This commit is contained in:
GitHub Actions
2026-03-16 21:02:01 +00:00
parent 2ab6fc87e4
commit 2bb9df827e
3 changed files with 223 additions and 29 deletions
+1 -1
View File
@@ -2893,7 +2893,7 @@ SOFTWARE.
The following npm package may be included in this product: The following npm package may be included in this product:
- undici@6.23.0 - undici@6.24.0
This package contains the following license: This package contains the following license:
Generated Vendored
+111 -14
View File
@@ -935,6 +935,21 @@ var require_errors = __commonJS({
} }
[kSecureProxyConnectionError] = true; [kSecureProxyConnectionError] = true;
}; };
var kMessageSizeExceededError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");
var MessageSizeExceededError = class extends UndiciError {
constructor(message) {
super(message);
this.name = "MessageSizeExceededError";
this.message = message || "Max decompressed message size exceeded";
this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED";
}
static [Symbol.hasInstance](instance) {
return instance && instance[kMessageSizeExceededError] === true;
}
get [kMessageSizeExceededError]() {
return true;
}
};
module2.exports = { module2.exports = {
AbortError, AbortError,
HTTPParserError, HTTPParserError,
@@ -958,7 +973,8 @@ var require_errors = __commonJS({
ResponseExceededMaxSizeError, ResponseExceededMaxSizeError,
RequestRetryError, RequestRetryError,
ResponseError, ResponseError,
SecureProxyConnectionError SecureProxyConnectionError,
MessageSizeExceededError
}; };
} }
}); });
@@ -1968,6 +1984,9 @@ var require_request = __commonJS({
if (upgrade && typeof upgrade !== "string") { if (upgrade && typeof upgrade !== "string") {
throw new InvalidArgumentError("upgrade must be a string"); throw new InvalidArgumentError("upgrade must be a string");
} }
if (upgrade && !isValidHeaderValue(upgrade)) {
throw new InvalidArgumentError("invalid upgrade header");
}
if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
throw new InvalidArgumentError("invalid headersTimeout"); throw new InvalidArgumentError("invalid headersTimeout");
} }
@@ -2200,12 +2219,18 @@ var require_request = __commonJS({
} else { } else {
val = `${val}`; val = `${val}`;
} }
if (request.host === null && headerName === "host") { if (headerName === "host") {
if (request.host !== null) {
throw new InvalidArgumentError("duplicate host header");
}
if (typeof val !== "string") { if (typeof val !== "string") {
throw new InvalidArgumentError("invalid host header"); throw new InvalidArgumentError("invalid host header");
} }
request.host = val; request.host = val;
} else if (request.contentLength === null && headerName === "content-length") { } else if (headerName === "content-length") {
if (request.contentLength !== null) {
throw new InvalidArgumentError("duplicate content-length header");
}
request.contentLength = parseInt(val, 10); request.contentLength = parseInt(val, 10);
if (!Number.isFinite(request.contentLength)) { if (!Number.isFinite(request.contentLength)) {
throw new InvalidArgumentError("invalid content-length header"); throw new InvalidArgumentError("invalid content-length header");
@@ -16977,13 +17002,17 @@ var require_util7 = __commonJS({
return extensionList; return extensionList;
} }
function isValidClientWindowBits(value) { function isValidClientWindowBits(value) {
if (value.length === 0) {
return false;
}
for (let i = 0; i < value.length; i++) { for (let i = 0; i < value.length; i++) {
const byte = value.charCodeAt(i); const byte = value.charCodeAt(i);
if (byte < 48 || byte > 57) { if (byte < 48 || byte > 57) {
return false; return false;
} }
} }
return true; const num = Number.parseInt(value, 10);
return num >= 8 && num <= 15;
} }
var hasIntl = typeof process.versions.icu === "string"; var hasIntl = typeof process.versions.icu === "string";
var fatalDecoder = hasIntl ? new TextDecoder("utf-8", { fatal: true }) : void 0; var fatalDecoder = hasIntl ? new TextDecoder("utf-8", { fatal: true }) : void 0;
@@ -17282,18 +17311,35 @@ var require_permessage_deflate = __commonJS({
"use strict"; "use strict";
var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require("node:zlib"); var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require("node:zlib");
var { isValidClientWindowBits } = require_util7(); var { isValidClientWindowBits } = require_util7();
var { MessageSizeExceededError } = require_errors();
var tail = Buffer.from([0, 0, 255, 255]); var tail = Buffer.from([0, 0, 255, 255]);
var kBuffer = /* @__PURE__ */ Symbol("kBuffer"); var kBuffer = /* @__PURE__ */ Symbol("kBuffer");
var kLength = /* @__PURE__ */ Symbol("kLength"); var kLength = /* @__PURE__ */ Symbol("kLength");
var kDefaultMaxDecompressedSize = 4 * 1024 * 1024;
var PerMessageDeflate = class { var PerMessageDeflate = class {
/** @type {import('node:zlib').InflateRaw} */ /** @type {import('node:zlib').InflateRaw} */
#inflate; #inflate;
#options = {}; #options = {};
constructor(extensions) { /** @type {number} */
#maxDecompressedSize;
/** @type {boolean} */
#aborted = false;
/** @type {Function|null} */
#currentCallback = null;
/**
* @param {Map<string, string>} extensions
* @param {{ maxDecompressedMessageSize?: number }} [options]
*/
constructor(extensions, options = {}) {
this.#options.serverNoContextTakeover = extensions.has("server_no_context_takeover"); this.#options.serverNoContextTakeover = extensions.has("server_no_context_takeover");
this.#options.serverMaxWindowBits = extensions.get("server_max_window_bits"); this.#options.serverMaxWindowBits = extensions.get("server_max_window_bits");
this.#maxDecompressedSize = options.maxDecompressedMessageSize ?? kDefaultMaxDecompressedSize;
} }
decompress(chunk, fin, callback) { decompress(chunk, fin, callback) {
if (this.#aborted) {
callback(new MessageSizeExceededError());
return;
}
if (!this.#inflate) { if (!this.#inflate) {
let windowBits = Z_DEFAULT_WINDOWBITS; let windowBits = Z_DEFAULT_WINDOWBITS;
if (this.#options.serverMaxWindowBits) { if (this.#options.serverMaxWindowBits) {
@@ -17303,26 +17349,51 @@ var require_permessage_deflate = __commonJS({
} }
windowBits = Number.parseInt(this.#options.serverMaxWindowBits); windowBits = Number.parseInt(this.#options.serverMaxWindowBits);
} }
this.#inflate = createInflateRaw({ windowBits }); try {
this.#inflate = createInflateRaw({ windowBits });
} catch (err) {
callback(err);
return;
}
this.#inflate[kBuffer] = []; this.#inflate[kBuffer] = [];
this.#inflate[kLength] = 0; this.#inflate[kLength] = 0;
this.#inflate.on("data", (data) => { this.#inflate.on("data", (data) => {
this.#inflate[kBuffer].push(data); if (this.#aborted) {
return;
}
this.#inflate[kLength] += data.length; this.#inflate[kLength] += data.length;
if (this.#inflate[kLength] > this.#maxDecompressedSize) {
this.#aborted = true;
this.#inflate.removeAllListeners();
this.#inflate.destroy();
this.#inflate = null;
if (this.#currentCallback) {
const cb = this.#currentCallback;
this.#currentCallback = null;
cb(new MessageSizeExceededError());
}
return;
}
this.#inflate[kBuffer].push(data);
}); });
this.#inflate.on("error", (err) => { this.#inflate.on("error", (err) => {
this.#inflate = null; this.#inflate = null;
callback(err); callback(err);
}); });
} }
this.#currentCallback = callback;
this.#inflate.write(chunk); this.#inflate.write(chunk);
if (fin) { if (fin) {
this.#inflate.write(tail); this.#inflate.write(tail);
} }
this.#inflate.flush(() => { this.#inflate.flush(() => {
if (this.#aborted || !this.#inflate) {
return;
}
const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]); const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]);
this.#inflate[kBuffer].length = 0; this.#inflate[kBuffer].length = 0;
this.#inflate[kLength] = 0; this.#inflate[kLength] = 0;
this.#currentCallback = null;
callback(null, full); callback(null, full);
}); });
} }
@@ -17362,12 +17433,20 @@ var require_receiver = __commonJS({
#fragments = []; #fragments = [];
/** @type {Map<string, PerMessageDeflate>} */ /** @type {Map<string, PerMessageDeflate>} */
#extensions; #extensions;
constructor(ws, extensions) { /** @type {{ maxDecompressedMessageSize?: number }} */
#options;
/**
* @param {import('./websocket').WebSocket} ws
* @param {Map<string, string>|null} extensions
* @param {{ maxDecompressedMessageSize?: number }} [options]
*/
constructor(ws, extensions, options = {}) {
super(); super();
this.ws = ws; this.ws = ws;
this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions; this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions;
this.#options = options;
if (this.#extensions.has("permessage-deflate")) { if (this.#extensions.has("permessage-deflate")) {
this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions)); this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions, options));
} }
} }
/** /**
@@ -17465,12 +17544,12 @@ var require_receiver = __commonJS({
} }
const buffer = this.consume(8); const buffer = this.consume(8);
const upper = buffer.readUInt32BE(0); const upper = buffer.readUInt32BE(0);
if (upper > 2 ** 31 - 1) { const lower = buffer.readUInt32BE(4);
if (upper !== 0 || lower > 2 ** 31 - 1) {
failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes.");
return; return;
} }
const lower = buffer.readUInt32BE(4); this.#info.payloadLength = lower;
this.#info.payloadLength = (upper << 8) + lower;
this.#state = parserStates.READ_DATA; this.#state = parserStates.READ_DATA;
} else if (this.#state === parserStates.READ_DATA) { } else if (this.#state === parserStates.READ_DATA) {
if (this.#byteOffset < this.#info.payloadLength) { if (this.#byteOffset < this.#info.payloadLength) {
@@ -17492,7 +17571,7 @@ var require_receiver = __commonJS({
} else { } else {
this.#extensions.get("permessage-deflate").decompress(body, this.#info.fin, (error, data) => { this.#extensions.get("permessage-deflate").decompress(body, this.#info.fin, (error, data) => {
if (error) { if (error) {
closeWebSocketConnection(this.ws, 1007, error.message, error.message.length); failWebsocketConnection(this.ws, error.message);
return; return;
} }
this.#fragments.push(data); this.#fragments.push(data);
@@ -17761,6 +17840,8 @@ var require_websocket = __commonJS({
#extensions = ""; #extensions = "";
/** @type {SendQueue} */ /** @type {SendQueue} */
#sendQueue; #sendQueue;
/** @type {{ maxDecompressedMessageSize?: number }} */
#options;
/** /**
* @param {string} url * @param {string} url
* @param {string|string[]} protocols * @param {string|string[]} protocols
@@ -17804,6 +17885,9 @@ var require_websocket = __commonJS({
throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError");
} }
this[kWebSocketURL] = new URL(urlRecord.href); this[kWebSocketURL] = new URL(urlRecord.href);
this.#options = {
maxDecompressedMessageSize: options.maxDecompressedMessageSize
};
const client = environmentSettingsObject.settingsObject; const client = environmentSettingsObject.settingsObject;
this[kController] = establishWebSocketConnection( this[kController] = establishWebSocketConnection(
urlRecord, urlRecord,
@@ -17987,7 +18071,7 @@ var require_websocket = __commonJS({
*/ */
#onConnectionEstablished(response, parsedExtensions) { #onConnectionEstablished(response, parsedExtensions) {
this[kResponse] = response; this[kResponse] = response;
const parser = new ByteParser(this, parsedExtensions); const parser = new ByteParser(this, parsedExtensions, this.#options);
parser.on("drain", onParserDrain); parser.on("drain", onParserDrain);
parser.on("error", onParserError.bind(this)); parser.on("error", onParserError.bind(this));
response.socket.ws = this; response.socket.ws = this;
@@ -18062,6 +18146,19 @@ var require_websocket = __commonJS({
{ {
key: "headers", key: "headers",
converter: webidl.nullableConverter(webidl.converters.HeadersInit) converter: webidl.nullableConverter(webidl.converters.HeadersInit)
},
{
key: "maxDecompressedMessageSize",
converter: webidl.nullableConverter((V) => {
V = webidl.converters["unsigned long long"](V);
if (V <= 0) {
throw webidl.errors.exception({
header: "WebSocket constructor",
message: "maxDecompressedMessageSize must be greater than 0"
});
}
return V;
})
} }
]); ]);
webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"] = function(V) { webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"] = function(V) {
Generated Vendored
+111 -14
View File
@@ -938,6 +938,21 @@ var require_errors = __commonJS({
} }
[kSecureProxyConnectionError] = true; [kSecureProxyConnectionError] = true;
}; };
var kMessageSizeExceededError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");
var MessageSizeExceededError = class extends UndiciError {
constructor(message) {
super(message);
this.name = "MessageSizeExceededError";
this.message = message || "Max decompressed message size exceeded";
this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED";
}
static [Symbol.hasInstance](instance) {
return instance && instance[kMessageSizeExceededError] === true;
}
get [kMessageSizeExceededError]() {
return true;
}
};
module2.exports = { module2.exports = {
AbortError, AbortError,
HTTPParserError, HTTPParserError,
@@ -961,7 +976,8 @@ var require_errors = __commonJS({
ResponseExceededMaxSizeError, ResponseExceededMaxSizeError,
RequestRetryError, RequestRetryError,
ResponseError, ResponseError,
SecureProxyConnectionError SecureProxyConnectionError,
MessageSizeExceededError
}; };
} }
}); });
@@ -1971,6 +1987,9 @@ var require_request = __commonJS({
if (upgrade && typeof upgrade !== "string") { if (upgrade && typeof upgrade !== "string") {
throw new InvalidArgumentError("upgrade must be a string"); throw new InvalidArgumentError("upgrade must be a string");
} }
if (upgrade && !isValidHeaderValue(upgrade)) {
throw new InvalidArgumentError("invalid upgrade header");
}
if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
throw new InvalidArgumentError("invalid headersTimeout"); throw new InvalidArgumentError("invalid headersTimeout");
} }
@@ -2203,12 +2222,18 @@ var require_request = __commonJS({
} else { } else {
val = `${val}`; val = `${val}`;
} }
if (request.host === null && headerName === "host") { if (headerName === "host") {
if (request.host !== null) {
throw new InvalidArgumentError("duplicate host header");
}
if (typeof val !== "string") { if (typeof val !== "string") {
throw new InvalidArgumentError("invalid host header"); throw new InvalidArgumentError("invalid host header");
} }
request.host = val; request.host = val;
} else if (request.contentLength === null && headerName === "content-length") { } else if (headerName === "content-length") {
if (request.contentLength !== null) {
throw new InvalidArgumentError("duplicate content-length header");
}
request.contentLength = parseInt(val, 10); request.contentLength = parseInt(val, 10);
if (!Number.isFinite(request.contentLength)) { if (!Number.isFinite(request.contentLength)) {
throw new InvalidArgumentError("invalid content-length header"); throw new InvalidArgumentError("invalid content-length header");
@@ -16980,13 +17005,17 @@ var require_util7 = __commonJS({
return extensionList; return extensionList;
} }
function isValidClientWindowBits(value) { function isValidClientWindowBits(value) {
if (value.length === 0) {
return false;
}
for (let i5 = 0; i5 < value.length; i5++) { for (let i5 = 0; i5 < value.length; i5++) {
const byte = value.charCodeAt(i5); const byte = value.charCodeAt(i5);
if (byte < 48 || byte > 57) { if (byte < 48 || byte > 57) {
return false; return false;
} }
} }
return true; const num = Number.parseInt(value, 10);
return num >= 8 && num <= 15;
} }
var hasIntl = typeof process.versions.icu === "string"; var hasIntl = typeof process.versions.icu === "string";
var fatalDecoder = hasIntl ? new TextDecoder("utf-8", { fatal: true }) : void 0; var fatalDecoder = hasIntl ? new TextDecoder("utf-8", { fatal: true }) : void 0;
@@ -17285,18 +17314,35 @@ var require_permessage_deflate = __commonJS({
"use strict"; "use strict";
var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require("node:zlib"); var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require("node:zlib");
var { isValidClientWindowBits } = require_util7(); var { isValidClientWindowBits } = require_util7();
var { MessageSizeExceededError } = require_errors();
var tail = Buffer.from([0, 0, 255, 255]); var tail = Buffer.from([0, 0, 255, 255]);
var kBuffer = /* @__PURE__ */ Symbol("kBuffer"); var kBuffer = /* @__PURE__ */ Symbol("kBuffer");
var kLength = /* @__PURE__ */ Symbol("kLength"); var kLength = /* @__PURE__ */ Symbol("kLength");
var kDefaultMaxDecompressedSize = 4 * 1024 * 1024;
var PerMessageDeflate = class { var PerMessageDeflate = class {
/** @type {import('node:zlib').InflateRaw} */ /** @type {import('node:zlib').InflateRaw} */
#inflate; #inflate;
#options = {}; #options = {};
constructor(extensions) { /** @type {number} */
#maxDecompressedSize;
/** @type {boolean} */
#aborted = false;
/** @type {Function|null} */
#currentCallback = null;
/**
* @param {Map<string, string>} extensions
* @param {{ maxDecompressedMessageSize?: number }} [options]
*/
constructor(extensions, options = {}) {
this.#options.serverNoContextTakeover = extensions.has("server_no_context_takeover"); this.#options.serverNoContextTakeover = extensions.has("server_no_context_takeover");
this.#options.serverMaxWindowBits = extensions.get("server_max_window_bits"); this.#options.serverMaxWindowBits = extensions.get("server_max_window_bits");
this.#maxDecompressedSize = options.maxDecompressedMessageSize ?? kDefaultMaxDecompressedSize;
} }
decompress(chunk, fin, callback) { decompress(chunk, fin, callback) {
if (this.#aborted) {
callback(new MessageSizeExceededError());
return;
}
if (!this.#inflate) { if (!this.#inflate) {
let windowBits = Z_DEFAULT_WINDOWBITS; let windowBits = Z_DEFAULT_WINDOWBITS;
if (this.#options.serverMaxWindowBits) { if (this.#options.serverMaxWindowBits) {
@@ -17306,26 +17352,51 @@ var require_permessage_deflate = __commonJS({
} }
windowBits = Number.parseInt(this.#options.serverMaxWindowBits); windowBits = Number.parseInt(this.#options.serverMaxWindowBits);
} }
this.#inflate = createInflateRaw({ windowBits }); try {
this.#inflate = createInflateRaw({ windowBits });
} catch (err) {
callback(err);
return;
}
this.#inflate[kBuffer] = []; this.#inflate[kBuffer] = [];
this.#inflate[kLength] = 0; this.#inflate[kLength] = 0;
this.#inflate.on("data", (data2) => { this.#inflate.on("data", (data2) => {
this.#inflate[kBuffer].push(data2); if (this.#aborted) {
return;
}
this.#inflate[kLength] += data2.length; this.#inflate[kLength] += data2.length;
if (this.#inflate[kLength] > this.#maxDecompressedSize) {
this.#aborted = true;
this.#inflate.removeAllListeners();
this.#inflate.destroy();
this.#inflate = null;
if (this.#currentCallback) {
const cb = this.#currentCallback;
this.#currentCallback = null;
cb(new MessageSizeExceededError());
}
return;
}
this.#inflate[kBuffer].push(data2);
}); });
this.#inflate.on("error", (err) => { this.#inflate.on("error", (err) => {
this.#inflate = null; this.#inflate = null;
callback(err); callback(err);
}); });
} }
this.#currentCallback = callback;
this.#inflate.write(chunk); this.#inflate.write(chunk);
if (fin) { if (fin) {
this.#inflate.write(tail); this.#inflate.write(tail);
} }
this.#inflate.flush(() => { this.#inflate.flush(() => {
if (this.#aborted || !this.#inflate) {
return;
}
const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]); const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]);
this.#inflate[kBuffer].length = 0; this.#inflate[kBuffer].length = 0;
this.#inflate[kLength] = 0; this.#inflate[kLength] = 0;
this.#currentCallback = null;
callback(null, full); callback(null, full);
}); });
} }
@@ -17365,12 +17436,20 @@ var require_receiver = __commonJS({
#fragments = []; #fragments = [];
/** @type {Map<string, PerMessageDeflate>} */ /** @type {Map<string, PerMessageDeflate>} */
#extensions; #extensions;
constructor(ws, extensions) { /** @type {{ maxDecompressedMessageSize?: number }} */
#options;
/**
* @param {import('./websocket').WebSocket} ws
* @param {Map<string, string>|null} extensions
* @param {{ maxDecompressedMessageSize?: number }} [options]
*/
constructor(ws, extensions, options = {}) {
super(); super();
this.ws = ws; this.ws = ws;
this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions; this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions;
this.#options = options;
if (this.#extensions.has("permessage-deflate")) { if (this.#extensions.has("permessage-deflate")) {
this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions)); this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions, options));
} }
} }
/** /**
@@ -17468,12 +17547,12 @@ var require_receiver = __commonJS({
} }
const buffer = this.consume(8); const buffer = this.consume(8);
const upper = buffer.readUInt32BE(0); const upper = buffer.readUInt32BE(0);
if (upper > 2 ** 31 - 1) { const lower = buffer.readUInt32BE(4);
if (upper !== 0 || lower > 2 ** 31 - 1) {
failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes.");
return; return;
} }
const lower = buffer.readUInt32BE(4); this.#info.payloadLength = lower;
this.#info.payloadLength = (upper << 8) + lower;
this.#state = parserStates.READ_DATA; this.#state = parserStates.READ_DATA;
} else if (this.#state === parserStates.READ_DATA) { } else if (this.#state === parserStates.READ_DATA) {
if (this.#byteOffset < this.#info.payloadLength) { if (this.#byteOffset < this.#info.payloadLength) {
@@ -17495,7 +17574,7 @@ var require_receiver = __commonJS({
} else { } else {
this.#extensions.get("permessage-deflate").decompress(body, this.#info.fin, (error2, data2) => { this.#extensions.get("permessage-deflate").decompress(body, this.#info.fin, (error2, data2) => {
if (error2) { if (error2) {
closeWebSocketConnection(this.ws, 1007, error2.message, error2.message.length); failWebsocketConnection(this.ws, error2.message);
return; return;
} }
this.#fragments.push(data2); this.#fragments.push(data2);
@@ -17764,6 +17843,8 @@ var require_websocket = __commonJS({
#extensions = ""; #extensions = "";
/** @type {SendQueue} */ /** @type {SendQueue} */
#sendQueue; #sendQueue;
/** @type {{ maxDecompressedMessageSize?: number }} */
#options;
/** /**
* @param {string} url * @param {string} url
* @param {string|string[]} protocols * @param {string|string[]} protocols
@@ -17807,6 +17888,9 @@ var require_websocket = __commonJS({
throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError");
} }
this[kWebSocketURL] = new URL(urlRecord.href); this[kWebSocketURL] = new URL(urlRecord.href);
this.#options = {
maxDecompressedMessageSize: options.maxDecompressedMessageSize
};
const client = environmentSettingsObject.settingsObject; const client = environmentSettingsObject.settingsObject;
this[kController] = establishWebSocketConnection( this[kController] = establishWebSocketConnection(
urlRecord, urlRecord,
@@ -17990,7 +18074,7 @@ var require_websocket = __commonJS({
*/ */
#onConnectionEstablished(response, parsedExtensions) { #onConnectionEstablished(response, parsedExtensions) {
this[kResponse] = response; this[kResponse] = response;
const parser = new ByteParser(this, parsedExtensions); const parser = new ByteParser(this, parsedExtensions, this.#options);
parser.on("drain", onParserDrain); parser.on("drain", onParserDrain);
parser.on("error", onParserError.bind(this)); parser.on("error", onParserError.bind(this));
response.socket.ws = this; response.socket.ws = this;
@@ -18065,6 +18149,19 @@ var require_websocket = __commonJS({
{ {
key: "headers", key: "headers",
converter: webidl.nullableConverter(webidl.converters.HeadersInit) converter: webidl.nullableConverter(webidl.converters.HeadersInit)
},
{
key: "maxDecompressedMessageSize",
converter: webidl.nullableConverter((V) => {
V = webidl.converters["unsigned long long"](V);
if (V <= 0) {
throw webidl.errors.exception({
header: "WebSocket constructor",
message: "maxDecompressedMessageSize must be greater than 0"
});
}
return V;
})
} }
]); ]);
webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"] = function(V) { webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"] = function(V) {