diff --git a/dist/main.js b/dist/main.js index a6ce93433..56ebf11b9 100644 --- a/dist/main.js +++ b/dist/main.js @@ -74544,32 +74544,59 @@ var require_b4a = __commonJS({ function toString(buffer, encoding, start, end) { return toBuffer(buffer).toString(encoding, start, end); } + function toHex(buffer, start, end) { + return toBuffer(buffer).toString("hex", start, end); + } function write(buffer, string, offset, length, encoding) { return toBuffer(buffer).write(string, offset, length, encoding); } + function readDoubleBE(buffer, offset) { + return toBuffer(buffer).readDoubleBE(offset); + } + function readDoubleLE(buffer, offset) { + return toBuffer(buffer).readDoubleLE(offset); + } + function readFloatBE(buffer, offset) { + return toBuffer(buffer).readFloatBE(offset); + } + function readFloatLE(buffer, offset) { + return toBuffer(buffer).readFloatLE(offset); + } + function readInt32BE(buffer, offset) { + return toBuffer(buffer).readInt32BE(offset); + } + function readInt32LE(buffer, offset) { + return toBuffer(buffer).readInt32LE(offset); + } + function readUInt32BE(buffer, offset) { + return toBuffer(buffer).readUInt32BE(offset); + } + function readUInt32LE(buffer, offset) { + return toBuffer(buffer).readUInt32LE(offset); + } + function writeDoubleBE(buffer, value, offset) { + return toBuffer(buffer).writeDoubleBE(value, offset); + } function writeDoubleLE(buffer, value, offset) { return toBuffer(buffer).writeDoubleLE(value, offset); } + function writeFloatBE(buffer, value, offset) { + return toBuffer(buffer).writeFloatBE(value, offset); + } function writeFloatLE(buffer, value, offset) { return toBuffer(buffer).writeFloatLE(value, offset); } - function writeUInt32LE(buffer, value, offset) { - return toBuffer(buffer).writeUInt32LE(value, offset); + function writeInt32BE(buffer, value, offset) { + return toBuffer(buffer).writeInt32BE(value, offset); } function writeInt32LE(buffer, value, offset) { return toBuffer(buffer).writeInt32LE(value, offset); } - function readDoubleLE(buffer, offset) { - return toBuffer(buffer).readDoubleLE(offset); - } - function readFloatLE(buffer, offset) { - return toBuffer(buffer).readFloatLE(offset); - } - function readUInt32LE(buffer, offset) { - return toBuffer(buffer).readUInt32LE(offset); + function writeUInt32BE(buffer, value, offset) { + return toBuffer(buffer).writeUInt32BE(value, offset); } - function readInt32LE(buffer, offset) { - return toBuffer(buffer).readInt32LE(offset); + function writeUInt32LE(buffer, value, offset) { + return toBuffer(buffer).writeUInt32LE(value, offset); } module2.exports = { isBuffer, @@ -74592,15 +74619,24 @@ var require_b4a = __commonJS({ swap64, toBuffer, toString, + toHex, write, - writeDoubleLE, - writeFloatLE, - writeUInt32LE, - writeInt32LE, + readDoubleBE, readDoubleLE, + readFloatBE, readFloatLE, + readInt32BE, + readInt32LE, + readUInt32BE, readUInt32LE, - readInt32LE + writeDoubleBE, + writeDoubleLE, + writeFloatBE, + writeFloatLE, + writeInt32BE, + writeInt32LE, + writeUInt32BE, + writeUInt32LE }; } }); @@ -74835,14 +74871,55 @@ var require_text_decoder = __commonJS({ } }); +// node_modules/streamx/lib/errors.js +var require_errors4 = __commonJS({ + "node_modules/streamx/lib/errors.js"(exports2, module2) { + module2.exports = class StreamError extends Error { + constructor(msg, code, fn = StreamError) { + super(msg); + this.code = code; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, fn); + } + } + static isStreamDestroyed(err) { + return err && err.code === "STREAM_DESTROYED"; + } + static isPrematureClose(err) { + return err && err.code === "PREMATURE_CLOSE"; + } + static isAborted(err) { + return err && err.code === "ABORTED"; + } + static isBadArgument(err) { + return err && err.code === "BAD_ARGUMENT"; + } + get name() { + return "StreamError"; + } + static STREAM_DESTROYED() { + return new StreamError("Stream was destroyed", "STREAM_DESTROYED", StreamError.STREAM_DESTROYED); + } + static PREMATURE_CLOSE(msg = "Premature close") { + return new StreamError(msg, "PREMATURE_CLOSE", StreamError.PREMATURE_CLOSE); + } + static ABORTED() { + return new StreamError("Stream aborted", "ABORTED", StreamError.ABORTED); + } + static BAD_ARGUMENT(msg = "Bad argument") { + return new StreamError(msg, "BAD_ARGUMENT", StreamError.BAD_ARGUMENT); + } + }; + } +}); + // node_modules/streamx/index.js var require_streamx = __commonJS({ "node_modules/streamx/index.js"(exports2, module2) { var { EventEmitter } = require_default(); - var STREAM_DESTROYED = new Error("Stream was destroyed"); - var PREMATURE_CLOSE = new Error("Premature close"); var FIFO = require_fast_fifo(); var TextDecoder2 = require_text_decoder(); + var StreamError = require_errors4(); var qmt = typeof queueMicrotask === "undefined" ? (fn) => global.process.nextTick(fn) : queueMicrotask; var MAX = (1 << 29) - 1; var OPENING = 1; @@ -74945,6 +75022,9 @@ var require_streamx = __commonJS({ this.afterWrite = afterWrite.bind(this); this.afterUpdateNextTick = updateWriteNT.bind(this); } + get ending() { + return (this.stream._duplexState & WRITE_FINISHING) !== 0; + } get ended() { return (this.stream._duplexState & WRITE_DONE) !== 0; } @@ -74967,8 +75047,11 @@ var require_streamx = __commonJS({ return data; } end(data) { - if (typeof data === "function") this.stream.once("finish", data); - else if (data !== void 0 && data !== null) this.push(data); + if (typeof data === "function") { + this.stream.once("finish", data); + } else if (data !== void 0 && data !== null) { + this.push(data); + } this.stream._duplexState = (this.stream._duplexState | WRITE_FINISHING) & WRITE_NON_PRIMARY; } autoBatch(data, cb) { @@ -75019,8 +75102,11 @@ var require_streamx = __commonJS({ return true; } updateCallback() { - if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) this.update(); - else this.updateNextTick(); + if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) { + this.update(); + } else { + this.updateNextTick(); + } } updateNextTick() { if ((this.stream._duplexState & WRITE_NEXT_TICK) !== 0) return; @@ -75043,11 +75129,14 @@ var require_streamx = __commonJS({ this.afterRead = afterRead.bind(this); this.afterUpdateNextTick = updateReadNT.bind(this); } + get ending() { + return (this.stream._duplexState & READ_ENDING) !== 0; + } get ended() { return (this.stream._duplexState & READ_DONE) !== 0; } pipe(pipeTo, cb) { - if (this.pipeTo !== null) throw new Error("Can only pipe to one destination"); + if (this.pipeTo !== null) throw StreamError.BAD_ARGUMENT("Can only pipe to one destination"); if (typeof cb !== "function") cb = null; this.stream._duplexState |= READ_PIPE_DRAINED; this.pipeTo = pipeTo; @@ -75090,7 +75179,9 @@ var require_streamx = __commonJS({ shift() { const data = this.queue.shift(); this.buffered -= this.byteLength(data); - if (this.buffered === 0) this.stream._duplexState &= READ_NOT_QUEUED; + if (this.buffered === 0) { + this.stream._duplexState &= READ_NOT_QUEUED; + } return data; } unshift(data) { @@ -75107,8 +75198,12 @@ var require_streamx = __commonJS({ const stream2 = this.stream; if ((stream2._duplexState & READ_STATUS) === READ_QUEUED) { const data = this.shift(); - if (this.pipeTo !== null && this.pipeTo.write(data) === false) stream2._duplexState &= READ_PIPE_NOT_DRAINED; - if ((stream2._duplexState & READ_EMIT_DATA) !== 0) stream2.emit("data", data); + if (this.pipeTo !== null && this.pipeTo.write(data) === false) { + stream2._duplexState &= READ_PIPE_NOT_DRAINED; + } + if ((stream2._duplexState & READ_EMIT_DATA) !== 0) { + stream2.emit("data", data); + } return data; } if (this.readAhead === false) { @@ -75121,8 +75216,12 @@ var require_streamx = __commonJS({ const stream2 = this.stream; while ((stream2._duplexState & READ_STATUS) === READ_QUEUED && (stream2._duplexState & READ_FLOWING) !== 0) { const data = this.shift(); - if (this.pipeTo !== null && this.pipeTo.write(data) === false) stream2._duplexState &= READ_PIPE_NOT_DRAINED; - if ((stream2._duplexState & READ_EMIT_DATA) !== 0) stream2.emit("data", data); + if (this.pipeTo !== null && this.pipeTo.write(data) === false) { + stream2._duplexState &= READ_PIPE_NOT_DRAINED; + } + if ((stream2._duplexState & READ_EMIT_DATA) !== 0) { + stream2.emit("data", data); + } } } update() { @@ -75139,7 +75238,9 @@ var require_streamx = __commonJS({ stream2._duplexState |= READ_EMITTED_READABLE; stream2.emit("readable"); } - if ((stream2._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary(); + if ((stream2._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) { + this.updateNonPrimary(); + } } while (this.continueUpdate() === true); stream2._duplexState &= READ_NOT_UPDATING; } @@ -75148,8 +75249,12 @@ var require_streamx = __commonJS({ if ((stream2._duplexState & READ_ENDING_STATUS) === READ_ENDING) { stream2._duplexState = (stream2._duplexState | READ_DONE) & READ_NOT_ENDING; stream2.emit("end"); - if ((stream2._duplexState & AUTO_DESTROY) === DONE) stream2._duplexState |= DESTROYING; - if (this.pipeTo !== null) this.pipeTo.end(); + if ((stream2._duplexState & AUTO_DESTROY) === DONE) { + stream2._duplexState |= DESTROYING; + } + if (this.pipeTo !== null) { + this.pipeTo.end(); + } } if ((stream2._duplexState & DESTROY_STATUS) === DESTROYING) { if ((stream2._duplexState & ACTIVE_OR_TICKING) === 0) { @@ -75169,8 +75274,11 @@ var require_streamx = __commonJS({ return true; } updateCallback() { - if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) this.update(); - else this.updateNextTick(); + if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) { + this.update(); + } else { + this.updateNextTick(); + } } updateNextTickIfOpen() { if ((this.stream._duplexState & READ_NEXT_TICK_OR_OPENING) !== 0) return; @@ -75207,7 +75315,7 @@ var require_streamx = __commonJS({ this.to = null; if (this.from !== null) { if ((this.from._duplexState & READ_DONE) === 0 || !this.pipeToFinished) { - this.from.destroy(this.error || new Error("Writable stream closed prematurely")); + this.from.destroy(this.error || StreamError.PREMATURE_CLOSE("Writable stream closed")); } return; } @@ -75216,7 +75324,7 @@ var require_streamx = __commonJS({ this.from = null; if (this.to !== null) { if ((stream2._duplexState & READ_DONE) === 0) { - this.to.destroy(this.error || new Error("Readable stream closed before ending")); + this.to.destroy(this.error || StreamError.PREMATURE_CLOSE("Readable stream closed")); } return; } @@ -75240,21 +75348,30 @@ var require_streamx = __commonJS({ stream2._duplexState |= DESTROYING; } stream2._duplexState &= WRITE_NOT_FINISHING; - if ((stream2._duplexState & WRITE_UPDATING) === 0) this.update(); - else this.updateNextTick(); + if ((stream2._duplexState & WRITE_UPDATING) === 0) { + this.update(); + } else { + this.updateNextTick(); + } } function afterDestroy(err) { const stream2 = this.stream; - if (!err && this.error !== STREAM_DESTROYED) err = this.error; + if (!err && !StreamError.isStreamDestroyed(this.error)) err = this.error; if (err) stream2.emit("error", err); stream2._duplexState |= DESTROYED; stream2.emit("close"); const rs = stream2._readableState; const ws = stream2._writableState; - if (rs !== null && rs.pipeline !== null) rs.pipeline.done(stream2, err); + if (rs !== null && rs.pipeline !== null) { + rs.pipeline.done(stream2, err); + } if (ws !== null) { - while (ws.drains !== null && ws.drains.length > 0) ws.drains.shift().resolve(false); - if (ws.pipeline !== null) ws.pipeline.done(stream2, err); + while (ws.drains !== null && ws.drains.length > 0) { + ws.drains.shift().resolve(false); + } + if (ws.pipeline !== null) { + ws.pipeline.done(stream2, err); + } } } function afterWrite(err) { @@ -75273,7 +75390,9 @@ var require_streamx = __commonJS({ function afterRead(err) { if (err) this.stream.destroy(err); this.stream._duplexState &= READ_NOT_ACTIVE; - if (this.readAhead === false && (this.stream._duplexState & READ_RESUMED) === 0) this.stream._duplexState &= READ_NO_READ_AHEAD; + if (this.readAhead === false && (this.stream._duplexState & READ_RESUMED) === 0) { + this.stream._duplexState &= READ_NO_READ_AHEAD; + } this.updateCallback(); } function updateReadNT() { @@ -75300,8 +75419,12 @@ var require_streamx = __commonJS({ const stream2 = this.stream; if (err) stream2.destroy(err); if ((stream2._duplexState & DESTROYING) === 0) { - if ((stream2._duplexState & READ_PRIMARY_STATUS) === 0) stream2._duplexState |= READ_PRIMARY; - if ((stream2._duplexState & WRITE_PRIMARY_STATUS) === 0) stream2._duplexState |= WRITE_PRIMARY; + if ((stream2._duplexState & READ_PRIMARY_STATUS) === 0) { + stream2._duplexState |= READ_PRIMARY; + } + if ((stream2._duplexState & WRITE_PRIMARY_STATUS) === 0) { + stream2._duplexState |= WRITE_PRIMARY; + } stream2.emit("open"); } stream2._duplexState &= NOT_ACTIVE; @@ -75344,9 +75467,7 @@ var require_streamx = __commonJS({ if (opts.open) this._open = opts.open; if (opts.destroy) this._destroy = opts.destroy; if (opts.predestroy) this._predestroy = opts.predestroy; - if (opts.signal) { - opts.signal.addEventListener("abort", abort.bind(this)); - } + if (opts.signal) opts.signal.addEventListener("abort", abort.bind(this)); } this.on("newListener", newListener); } @@ -75372,7 +75493,7 @@ var require_streamx = __commonJS({ } destroy(err) { if ((this._duplexState & DESTROY_STATUS) === 0) { - if (!err) err = STREAM_DESTROYED; + if (!err) err = StreamError.STREAM_DESTROYED(); this._duplexState = (this._duplexState | DESTROYING) & NON_PRIMARY; if (this._readableState !== null) { this._readableState.highWaterMark = 0; @@ -75385,8 +75506,12 @@ var require_streamx = __commonJS({ this._duplexState |= PREDESTROYING; this._predestroy(); this._duplexState &= NOT_PREDESTROYING; - if (this._readableState !== null) this._readableState.updateNextTick(); - if (this._writableState !== null) this._writableState.updateNextTick(); + if (this._readableState !== null) { + this._readableState.updateNextTick(); + } + if (this._writableState !== null) { + this._writableState.updateNextTick(); + } } } }; @@ -75402,6 +75527,15 @@ var require_streamx = __commonJS({ if (opts.encoding) this.setEncoding(opts.encoding); } } + static deferred(fn, opts) { + const out = new PassThrough(opts); + fn().then((src) => { + if (src === null) return out.end(); + if (out.destroying) return; + pipeline(src, out, noop3); + }).catch((err) => out.destroy(err)); + return out; + } setEncoding(encoding) { const dec = new TextDecoder2(encoding); const map = this._readableState.map || echo; @@ -75519,9 +75653,13 @@ var require_streamx = __commonJS({ } function ondata(data) { if (promiseReject === null) return; - if (error2) promiseReject(error2); - else if (data === null && (stream2._duplexState & READ_DONE) === 0) promiseReject(STREAM_DESTROYED); - else promiseResolve({ value: data, done: data === null }); + if (error2) { + promiseReject(error2); + } else if (data === null && (stream2._duplexState & READ_DONE) === 0) { + promiseReject(StreamError.STREAM_DESTROYED()); + } else { + promiseResolve({ value: data, done: data === null }); + } promiseReject = promiseResolve = null; } function destroy(err) { @@ -75690,7 +75828,7 @@ var require_streamx = __commonJS({ function pipeline(stream2, ...streams) { const all = Array.isArray(stream2) ? [...stream2, ...streams] : [stream2, ...streams]; const done = all.length && typeof all[all.length - 1] === "function" ? all.pop() : null; - if (all.length < 2) throw new Error("Pipeline requires at least 2 streams"); + if (all.length < 2) throw StreamError.BAD_ARGUMENT("Pipeline requires at least 2 streams"); let src = all[0]; let dest = null; let error2 = null; @@ -75715,7 +75853,7 @@ var require_streamx = __commonJS({ if (!autoDestroy) done(error2); }); if (autoDestroy) { - dest.on("close", () => done(error2 || (fin ? null : PREMATURE_CLOSE))); + dest.on("close", () => done(error2 || (fin ? null : StreamError.PREMATURE_CLOSE()))); } } return dest; @@ -75723,8 +75861,12 @@ var require_streamx = __commonJS({ s.on("error", onerror2); s.on("close", onclose); function onclose() { - if (rd && s._readableState && !s._readableState.ended) return onerror2(PREMATURE_CLOSE); - if (wr && s._writableState && !s._writableState.ended) return onerror2(PREMATURE_CLOSE); + if (rd && s._readableState && !s._readableState.ended) { + return onerror2(StreamError.PREMATURE_CLOSE()); + } + if (wr && s._writableState && !s._writableState.ended) { + return onerror2(StreamError.PREMATURE_CLOSE()); + } } } function onerror(err) { @@ -75744,21 +75886,27 @@ var require_streamx = __commonJS({ function isStreamx(stream2) { return typeof stream2._duplexState === "number" && isStream(stream2); } + function isEnding(stream2) { + return !!stream2._readableState && stream2._readableState.ending; + } function isEnded(stream2) { return !!stream2._readableState && stream2._readableState.ended; } + function isFinishing(stream2) { + return !!stream2._writableState && stream2._writableState.ending; + } function isFinished(stream2) { return !!stream2._writableState && stream2._writableState.ended; } function getStreamError(stream2, opts = {}) { const err = stream2._readableState && stream2._readableState.error || stream2._writableState && stream2._writableState.error; - return !opts.all && err === STREAM_DESTROYED ? null : err; + return !opts.all && StreamError.isStreamDestroyed(err) ? null : err; } function isReadStreamx(stream2) { return isStreamx(stream2) && stream2.readable; } function isDisturbed(stream2) { - return (stream2._duplexState & OPENING) !== OPENING || (stream2._duplexState & ACTIVE_OR_TICKING) !== 0; + return (stream2._duplexState & OPENING) !== OPENING || (stream2._duplexState & DESTROYING) === DESTROYING || (stream2._duplexState & ACTIVE_OR_TICKING) !== 0; } function isTypedArray(data) { return typeof data === "object" && data !== null && typeof data.byteLength === "number"; @@ -75769,7 +75917,7 @@ var require_streamx = __commonJS({ function noop3() { } function abort() { - this.destroy(new Error("Stream aborted.")); + this.destroy(StreamError.ABORTED()); } function isWritev(s) { return s._writev !== Writable2.prototype._writev && s._writev !== Duplex.prototype._writev; @@ -75779,7 +75927,9 @@ var require_streamx = __commonJS({ pipelinePromise, isStream, isStreamx, + isEnding, isEnded, + isFinishing, isFinished, isDisturbed, getStreamError, @@ -78338,10 +78488,18 @@ var require_cipherModes = __commonJS({ return false; } var len = output.length(); + if (len === 0) { + return true; + } var count = output.at(len - 1); - if (count > this.blockSize << 2) { + if (count === 0 || count > this.blockSize || count > len) { return false; } + for (var i = 2; i <= count; ++i) { + if (output.at(len - i) !== count) { + return false; + } + } output.truncate(count); return true; }; @@ -78403,10 +78561,18 @@ var require_cipherModes = __commonJS({ return false; } var len = output.length(); + if (len === 0) { + return true; + } var count = output.at(len - 1); - if (count > this.blockSize << 2) { + if (count === 0 || count > this.blockSize || count > len) { return false; } + for (var i = 2; i <= count; ++i) { + if (output.at(len - i) !== count) { + return false; + } + } output.truncate(count); return true; }; @@ -78664,11 +78830,14 @@ var require_cipherModes = __commonJS({ } else { additionalData = forge.util.createBuffer(); } - if ("tagLength" in options) { - this._tagLength = options.tagLength; + if (options.tagLength !== void 0 && options.tagLength !== null) { + this._tagLength = Number(options.tagLength); } else { this._tagLength = 128; } + if ([128, 120, 112, 104, 96, 64, 32].indexOf(this._tagLength) === -1) { + throw new Error("Invalid tag length."); + } this._tag = null; if (options.decrypt) { this._tag = forge.util.createBuffer(options.tag).getBytes(); @@ -79619,7 +79788,10 @@ var require_asn1 = __commonJS({ var subOptions = { // enforce strict mode to avoid parsing ASN.1 from plain data strict: true, - decodeBitStrings: true + // only decode one level of BIT STRINGs, nested decoding has + // quadratic cost due to copies for change detection + decodeBitStrings: false, + maxDepth: options.maxDepth }; var composed = _fromDer(bytes, remaining, depth + 1, subOptions); var used = start - bytes.length(); @@ -79723,12 +79895,16 @@ var require_asn1 = __commonJS({ asn1.oidToDer = function(oid) { var values = oid.split("."); var bytes = forge.util.createBuffer(); - bytes.putByte(40 * parseInt(values[0], 10) + parseInt(values[1], 10)); + var first = parseInt(values[0], 10); + var second = parseInt(values[1], 10); + if (!(first >= 0 && first <= 2 && second >= 0) || first < 2 && second > 39) { + throw new Error("Invalid OID; the first two arcs are out of range."); + } var last, valueBytes, value, b; - for (var i = 2; i < values.length; ++i) { + for (var i = 1; i < values.length; ++i) { last = true; valueBytes = []; - value = parseInt(values[i], 10); + value = i === 1 ? 40 * first + second : parseInt(values[i], 10); if (value > 4294967295) { throw new Error("OID value too large; max is 32-bits."); } @@ -79752,9 +79928,9 @@ var require_asn1 = __commonJS({ if (typeof bytes === "string") { bytes = forge.util.createBuffer(bytes); } - var b = bytes.getByte(); - oid = Math.floor(b / 40) + "." + b % 40; + var b; var value = 0; + var first = true; while (bytes.length() > 0) { if (value > 70368744177663) { throw new Error("OID value too large; max is 53-bits."); @@ -79764,7 +79940,13 @@ var require_asn1 = __commonJS({ if (b & 128) { value += b & 127; } else { - oid += "." + (value + b); + value += b; + if (first) { + oid = value < 80 ? Math.floor(value / 40) + "." + value % 40 : "2." + (value - 80); + first = false; + } else { + oid += "." + value; + } value = 0; } } @@ -80600,12 +80782,13 @@ var require_pem = __commonJS({ }; pem.decode = function(str) { var rval = []; - var rMessage = /\s*-----BEGIN ([A-Z0-9- ]+)-----\r?\n?([\x21-\x7e\s]+?(?:\r?\n\r?\n))?([:A-Za-z0-9+\/=\s]+?)-----END \1-----/g; - var rHeader = /([\x21-\x7e]+):\s*([\x21-\x7e\s^:]+)/; + str = String(str); + var messages = _pemMessageScanner(str); + var rHeader = /(?:^|[^\x21-\x7e])([\x21-\x7e]+):\s*([\x21-\x7e\s^:]+)/; var rCRLF = /\r?\n/; var match; while (true) { - match = rMessage.exec(str); + match = messages.next(); if (!match) { break; } @@ -80628,7 +80811,7 @@ var require_pem = __commonJS({ var lines = match[2].split(rCRLF); var li = 0; while (match && li < lines.length) { - var line = lines[li].replace(/\s+$/, ""); + var line = rtrim(lines[li]); for (var nl = li + 1; nl < lines.length; ++nl) { var next = lines[nl]; if (!/\s/.test(next[0])) { @@ -80706,6 +80889,140 @@ var require_pem = __commonJS({ function ltrim(str) { return str.replace(/^\s+/, ""); } + function rtrim(str) { + var end = str.length; + while (end > 0 && /\s/.test(str.charAt(end - 1))) { + --end; + } + return str.substring(0, end); + } + function _pemMessageScanner(str) { + var rBody = /[:A-Za-z0-9+\/=\s]/; + var rNotBody = /[^:A-Za-z0-9+\/=\s]/g; + var rNotHeader = /[^\x21-\x7e\s]/g; + var rLabel = /[A-Z0-9- ]/; + function indexOfRegex(regex, i) { + regex.lastIndex = i; + var match = regex.exec(str); + return match ? match.index : str.length; + } + function labelAt(i) { + for (var j = i; j < str.length && rLabel.test(str.charAt(j)); ++j) { + if (j > i && str.substr(j, 5) === "-----") { + return str.substring(i, j); + } + } + return null; + } + function blankLineEnd(i) { + if (str.charAt(i) === "\r") { + ++i; + } + if (str.charAt(i) !== "\n") { + return -1; + } + if (str.charAt(++i) === "\r") { + ++i; + } + return str.charAt(i) === "\n" ? i + 1 : -1; + } + function firstBlankLine(start2, end2) { + for (var i = start2; i < end2; ++i) { + var v = blankLineEnd(i); + if (v !== -1 && v < end2) { + return i; + } + } + return -1; + } + var ends = {}; + for (var end = str.indexOf("-----END "); end !== -1; end = str.indexOf("-----END ", end + 1)) { + var endLabel = labelAt(end + 9); + var start = end; + while (start > 0 && rBody.test(str.charAt(start - 1))) { + --start; + } + var blank = firstBlankLine(start, end); + if (endLabel !== null && blank !== -1) { + var key = "$" + endLabel; + (ends[key] = ends[key] || []).push({ end, blank }); + } + } + var pos = 0; + var headerEnd = -1; + return { + next: function() { + var begin; + while ((begin = str.indexOf("-----BEGIN ", pos)) !== -1) { + pos = begin + 1; + var label = labelAt(begin + 11); + if (label === null) { + continue; + } + var q = begin + 16 + label.length; + var bodyEnd = indexOfRegex(rNotBody, q); + var bodyEndOk = str.substr(bodyEnd, 9) === "-----END " && labelAt(bodyEnd + 9) === label; + if (q > headerEnd) { + headerEnd = indexOfRegex(rNotHeader, q); + } + var later = null; + var list = ends["$" + label]; + if (list) { + var lo = 0; + var hi = list.length; + while (lo < hi) { + var mid = lo + hi >> 1; + if (list[mid].end > bodyEnd) { + hi = mid; + } else { + lo = mid + 1; + } + } + later = list[lo] || null; + } + var starts = []; + if (str.charAt(q) === "\r") { + if (str.charAt(q + 1) === "\n") { + starts.push(q + 2); + } + starts.push(q + 1); + } else if (str.charAt(q) === "\n") { + starts.push(q + 1); + } + starts.push(q); + for (var i = 0; i < starts.length; ++i) { + var t = starts[i]; + var blank2 = bodyEndOk ? firstBlankLine(t + 1, bodyEnd) : -1; + var end2 = bodyEnd; + if (blank2 === -1 && later) { + blank2 = later.blank; + end2 = later.end; + } + if (blank2 !== -1 && blank2 <= headerEnd) { + var v = blankLineEnd(blank2); + pos = end2 + 14 + label.length; + return [ + str.substring(begin, pos), + label, + str.substring(t, v), + str.substring(v, end2) + ]; + } + if (bodyEndOk && t < bodyEnd) { + pos = bodyEnd + 14 + label.length; + return [ + str.substring(begin, pos), + label, + void 0, + str.substring(t, bodyEnd) + ]; + } + } + } + return null; + } + }; + } } }); @@ -83143,7 +83460,7 @@ var require_jsbn = __commonJS({ return r; } function bnModInverse(m) { - if (this.signum() == 0) { + if (this.signum() <= 0 || m.signum() <= 0) { return BigInteger.ZERO; } var ac = m.isEven(); @@ -84022,6 +84339,41 @@ var require_rsa = __commonJS({ capture: "digest" }] }; + var _encodeDigestInfo = function(oid, digest, withParameters) { + var digestAlgorithm = [asn1.create( + asn1.Class.UNIVERSAL, + asn1.Type.OID, + false, + asn1.oidToDer(oid).getBytes() + )]; + if (withParameters) { + digestAlgorithm.push(asn1.create( + asn1.Class.UNIVERSAL, + asn1.Type.NULL, + false, + "" + )); + } + return asn1.toDer(asn1.create( + asn1.Class.UNIVERSAL, + asn1.Type.SEQUENCE, + true, + [ + asn1.create( + asn1.Class.UNIVERSAL, + asn1.Type.SEQUENCE, + true, + digestAlgorithm + ), + asn1.create( + asn1.Class.UNIVERSAL, + asn1.Type.OCTETSTRING, + false, + digest + ) + ] + )).getBytes(); + }; var emsaPkcs1v15encode = function(md2) { var oid; if (md2.algorithm in pki2.oids) { @@ -84525,6 +84877,13 @@ var require_rsa = __commonJS({ ); } } + var withParameters = _encodeDigestInfo(oid, capture.digest, true); + var withoutParameters = _encodeDigestInfo(oid, capture.digest, false); + if (d2.substring(0, withParameters.length) !== withParameters && d2.substring(0, withoutParameters.length) !== withoutParameters) { + throw new Error( + "ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value." + ); + } return digest2 === capture.digest; } }; @@ -85485,6 +85844,9 @@ var require_pbe = __commonJS({ }; pki2.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md2) { var j, l; + if (!(iter >= 1)) { + throw new Error("PKCS#12 key derivation iteration count must be >= 1."); + } if (typeof md2 === "undefined" || md2 === null) { if (!("sha1" in forge.md)) { throw new Error('"sha1" hash algorithm unavailable.'); @@ -86770,6 +87132,7 @@ var require_x509 = __commonJS({ }; var _verifySignature = function(options) { var cert = options.certificate; + var publicKey = options.publicKey || cert.publicKey; var scheme; switch (cert.signatureOid) { case oids.sha1WithRSAEncryption: @@ -86807,7 +87170,7 @@ var require_x509 = __commonJS({ ); break; } - return cert.publicKey.verify( + return publicKey.verify( options.md.digest().getBytes(), options.signature, scheme @@ -87027,7 +87390,8 @@ var require_x509 = __commonJS({ } if (md2 !== null) { rval = _verifySignature({ - certificate: cert, + certificate: child, + publicKey: cert.publicKey, md: md2, signature: child.signature }); @@ -88262,10 +88626,7 @@ var require_x509 = __commonJS({ } } if (parent) { - var parents = parent; - if (!forge.util.isArray(parents)) { - parents = [parents]; - } + var parents = forge.util.isArray(parent) ? parent.slice() : [parent]; var verified = false; while (!verified && parents.length > 0) { parent = parents.shift(); @@ -88310,7 +88671,7 @@ var require_x509 = __commonJS({ } } if (error2 === null && (!first || chain.length === 0 && (!parent || selfSigned))) { - var bcExt = cert.getExtension("basicConstraints"); + var bcExt = cert.getExtension({ id: "2.5.29.19" }); var keyUsageExt = cert.getExtension("keyUsage"); if (keyUsageExt !== null) { if (!keyUsageExt.keyCertSign || bcExt === null) { @@ -88332,7 +88693,7 @@ var require_x509 = __commonJS({ error: pki2.certificateError.bad_certificate }; } - if (error2 === null && keyUsageExt !== null && "pathLenConstraint" in bcExt) { + if (error2 === null && bcExt !== null && "pathLenConstraint" in bcExt) { var pathLen = depth - 1; if (pathLen > bcExt.pathLenConstraint) { error2 = { @@ -88716,6 +89077,9 @@ var require_pkcs12 = __commonJS({ } var macSalt = new forge.util.ByteBuffer(capture.macSalt); var macIterations = "macIterations" in capture ? parseInt(forge.util.bytesToHex(capture.macIterations), 16) : 1; + if (!(macIterations >= 1)) { + throw new Error("PKCS#12 MAC iteration count must be >= 1."); + } var macKey = p12.generateKey( password, macSalt, @@ -89977,7 +90341,7 @@ var require_tls = __commonJS({ } }); } - if (c.serverCertificate === null) { + if (c.session.serverCertificate === null) { var error2 = { message: "No server certificate provided. Not enough security.", send: true, @@ -90001,8 +90365,8 @@ var require_tls = __commonJS({ error2.alert.description = ret; } } - return c.error(c, error2); } + return c.error(c, error2); } if (c.session.certificateRequest !== null) { record = tls.createRecord(c, { @@ -90258,7 +90622,7 @@ var require_tls = __commonJS({ var length = b.getInt16(); var payload = b.getBytes(length); if (type === tls.HeartbeatMessageType.heartbeat_request) { - if (c.handshaking || length > payload.length) { + if (c.handshakes === 0 || c.handshaking || length > payload.length) { return c.process(); } tls.queue(c, tls.createRecord(c, { @@ -91173,6 +91537,7 @@ var require_tls = __commonJS({ description: tls.Alert.Description.unexpected_message } }); + return rval; } } c2.record.ready = true; @@ -91237,24 +91602,48 @@ var require_tls = __commonJS({ tls.flush(c); } }; + var _processing = false; + var _processNext = false; + var _processRecord = function(c2) { + var rval = 0; + if (!c2.fail) { + if (c2.record !== null && c2.record.ready && c2.record.fragment.isEmpty()) { + c2.record = null; + } + if (c2.record === null) { + rval = _readRecordHeader(c2); + } + if (!c2.fail && c2.record !== null && !c2.record.ready) { + rval = _readRecord(c2); + } + if (!c2.fail && c2.record !== null && c2.record.ready) { + _update(c2, c2.record); + } + } + return rval; + }; c.process = function(data) { var rval = 0; if (data) { c.input.putBytes(data); } - if (!c.fail) { - if (c.record !== null && c.record.ready && c.record.fragment.isEmpty()) { - c.record = null; - } - if (c.record === null) { - rval = _readRecordHeader(c); - } - if (!c.fail && c.record !== null && !c.record.ready) { - rval = _readRecord(c); - } - if (!c.fail && c.record !== null && c.record.ready) { - _update(c, c.record); + if (_processing && typeof data === "undefined") { + _processNext = true; + return rval; + } + var processing = _processing; + var processNext = _processNext; + _processing = true; + _processNext = false; + try { + rval = _processRecord(c); + while (_processNext) { + _processNext = false; + _processRecord(c); } + } finally { + _processing = processing; + _processNext = processNext; } return rval; }; diff --git a/package-lock.json b/package-lock.json index 00b6e1795..07469f358 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,8 @@ "@octokit/webhooks-types": "^7.6.1", "commander": "^15.0.0", "dockerode": "^5.0.1", - "node-forge": "^1.4.0", - "tar-stream": "^3.2.0" + "node-forge": "^1.4.2", + "tar-stream": "^3.2.2" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -24,7 +24,7 @@ "@types/jest": "^30.0.0", "@types/node": "^26.6.2", "@types/node-forge": "^1.3.14", - "@types/tar-stream": "^3.1.4", + "@types/tar-stream": "^3.1.5", "@typescript-eslint/eslint-plugin": "^8.70.1", "@typescript-eslint/parser": "^8.65.0", "esbuild": "^0.28.2", @@ -3000,10 +3000,11 @@ "dev": true }, "node_modules/@types/tar-stream": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.4.tgz", - "integrity": "sha512-921gW0+g29mCJX0fRvqeHzBlE/XclDaAG0Ousy1LCghsOhvaKacDeRGEVzQP9IPfKn8Vysy7FEXAIxycpc/CMg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.5.tgz", + "integrity": "sha512-zCUA6CSDw0t2cpQiZixpyzfubpeuVZmBr5wztvuCG4bhy7reX/9wGXdZxEzz2CjMFLQ32UPR/01jzUUSRJeCeQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4511,9 +4512,18 @@ } }, "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.9.0.tgz", + "integrity": "sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } }, "node_modules/babel-jest": { "version": "30.5.2", @@ -4620,9 +4630,10 @@ "dev": true }, "node_modules/bare-events": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", - "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.2.tgz", + "integrity": "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==", + "license": "Apache-2.0", "peerDependencies": { "bare-abort-controller": "*" }, @@ -4633,9 +4644,10 @@ } }, "node_modules/bare-fs": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz", - "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.8.4.tgz", + "integrity": "sha512-MPC2eyrpbk3A873sK4y6rk+Iv4o2enxTjHZ8zH3HO0mjrpm5XjnguY2XmfidIsDV6vnjpbMBKUAJpV0ISD2SsQ==", + "license": "Apache-2.0", "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", @@ -4644,7 +4656,7 @@ "fast-fifo": "^1.3.2" }, "engines": { - "bare": ">=1.16.0" + "bare": ">=1.28.0" }, "peerDependencies": { "bare-buffer": "*" @@ -4655,35 +4667,31 @@ } } }, - "node_modules/bare-os": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.0.tgz", - "integrity": "sha512-Dc9/SlwfxkXIGYhvMQNUtKaXCaGkZYGcd1vuNUUADVqzu4/vQfvnMkYYOUnt2VwQ2AqKr/8qAVFRtwETljgeFg==", - "engines": { - "bare": ">=1.14.0" - } - }, "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dependencies": { - "bare-os": "^3.0.1" - } + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.1.2.tgz", + "integrity": "sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==", + "license": "Apache-2.0" }, "node_modules/bare-stream": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.1.tgz", - "integrity": "sha512-bSeR8RfvbRwDpD7HWZvn8M3uYNDrk7m9DQjYOFkENZlXW8Ju/MPaqUPQq5LqJ3kyjEm07siTaAQ7wBKCU59oHg==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.4.tgz", + "integrity": "sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==", + "license": "Apache-2.0", "dependencies": { - "streamx": "^2.21.0", + "b4a": "^1.8.1", + "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { + "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, "bare-buffer": { "optional": true }, @@ -4693,9 +4701,10 @@ } }, "node_modules/bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.5.5.tgz", + "integrity": "sha512-iM9qJCruvpt2rPaLsrumVDru9pogI7PHziHIa9kTNRFt8C8HuSa+kI9kFezK+NvHEFnnz71rKGZ1EAilq/3V/Q==", + "license": "Apache-2.0", "dependencies": { "bare-path": "^3.0.0" } @@ -6534,6 +6543,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", "dependencies": { "bare-events": "^2.7.0" } @@ -6706,7 +6716,8 @@ "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -9185,9 +9196,10 @@ } }, "node_modules/node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.2.tgz", + "integrity": "sha512-rRtAR5XLJ8gCKd9du4qrKAsgCG1ObGP4gLeNJMa4vYSeq4bmBMOJk5IHkrviBV0q7uoAJlVd8HEQYQSVUb4FGQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -10481,9 +10493,10 @@ } }, "node_modules/streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.1.tgz", + "integrity": "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==", + "license": "MIT", "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", @@ -10771,20 +10784,22 @@ } }, "node_modules/tar-stream": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz", - "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.2.tgz", + "integrity": "sha512-+8NeqHRjQWH9nYlwo2gamAMImZCVzI4UoEgDpWorBt9OEfppiZn+uSkskzQKPWIZyji/C8fpWO7u69G0DX0tbg==", + "license": "MIT", "dependencies": { - "b4a": "^1.6.4", - "bare-fs": "^4.5.5", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" + "b4a": "^1.9.0", + "bare-fs": "^4.8.2", + "fast-fifo": "^1.3.2", + "streamx": "^2.28.1" } }, "node_modules/teex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", "dependencies": { "streamx": "^2.12.5" } @@ -10926,6 +10941,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" } @@ -13847,9 +13863,9 @@ "dev": true }, "@types/tar-stream": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.4.tgz", - "integrity": "sha512-921gW0+g29mCJX0fRvqeHzBlE/XclDaAG0Ousy1LCghsOhvaKacDeRGEVzQP9IPfKn8Vysy7FEXAIxycpc/CMg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.5.tgz", + "integrity": "sha512-zCUA6CSDw0t2cpQiZixpyzfubpeuVZmBr5wztvuCG4bhy7reX/9wGXdZxEzz2CjMFLQ32UPR/01jzUUSRJeCeQ==", "dev": true, "requires": { "@types/node": "*" @@ -14714,9 +14730,10 @@ "dev": true }, "b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.9.0.tgz", + "integrity": "sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==", + "requires": {} }, "babel-jest": { "version": "30.5.2", @@ -14795,15 +14812,15 @@ "dev": true }, "bare-events": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", - "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.2.tgz", + "integrity": "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==", "requires": {} }, "bare-fs": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz", - "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.8.4.tgz", + "integrity": "sha512-MPC2eyrpbk3A873sK4y6rk+Iv4o2enxTjHZ8zH3HO0mjrpm5XjnguY2XmfidIsDV6vnjpbMBKUAJpV0ISD2SsQ==", "requires": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", @@ -14812,32 +14829,25 @@ "fast-fifo": "^1.3.2" } }, - "bare-os": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.0.tgz", - "integrity": "sha512-Dc9/SlwfxkXIGYhvMQNUtKaXCaGkZYGcd1vuNUUADVqzu4/vQfvnMkYYOUnt2VwQ2AqKr/8qAVFRtwETljgeFg==" - }, "bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "requires": { - "bare-os": "^3.0.1" - } + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.1.2.tgz", + "integrity": "sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==" }, "bare-stream": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.1.tgz", - "integrity": "sha512-bSeR8RfvbRwDpD7HWZvn8M3uYNDrk7m9DQjYOFkENZlXW8Ju/MPaqUPQq5LqJ3kyjEm07siTaAQ7wBKCU59oHg==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.4.tgz", + "integrity": "sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==", "requires": { - "streamx": "^2.21.0", + "b4a": "^1.8.1", + "streamx": "^2.25.0", "teex": "^1.0.1" } }, "bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.5.5.tgz", + "integrity": "sha512-iM9qJCruvpt2rPaLsrumVDru9pogI7PHziHIa9kTNRFt8C8HuSa+kI9kFezK+NvHEFnnz71rKGZ1EAilq/3V/Q==", "requires": { "bare-path": "^3.0.0" } @@ -17984,9 +17994,9 @@ } }, "node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.2.tgz", + "integrity": "sha512-rRtAR5XLJ8gCKd9du4qrKAsgCG1ObGP4gLeNJMa4vYSeq4bmBMOJk5IHkrviBV0q7uoAJlVd8HEQYQSVUb4FGQ==" }, "node-int64": { "version": "0.4.0", @@ -18919,9 +18929,9 @@ } }, "streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.1.tgz", + "integrity": "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==", "requires": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", @@ -19120,14 +19130,14 @@ } }, "tar-stream": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz", - "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.2.tgz", + "integrity": "sha512-+8NeqHRjQWH9nYlwo2gamAMImZCVzI4UoEgDpWorBt9OEfppiZn+uSkskzQKPWIZyji/C8fpWO7u69G0DX0tbg==", "requires": { - "b4a": "^1.6.4", - "bare-fs": "^4.5.5", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" + "b4a": "^1.9.0", + "bare-fs": "^4.8.2", + "fast-fifo": "^1.3.2", + "streamx": "^2.28.1" } }, "teex": { diff --git a/package.json b/package.json index c74a02bac..397181580 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "@octokit/webhooks-types": "^7.6.1", "commander": "^15.0.0", "dockerode": "^5.0.1", - "node-forge": "^1.4.0", - "tar-stream": "^3.2.0" + "node-forge": "^1.4.2", + "tar-stream": "^3.2.2" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -46,7 +46,7 @@ "@types/jest": "^30.0.0", "@types/node": "^26.6.2", "@types/node-forge": "^1.3.14", - "@types/tar-stream": "^3.1.4", + "@types/tar-stream": "^3.1.5", "@typescript-eslint/eslint-plugin": "^8.70.1", "@typescript-eslint/parser": "^8.65.0", "esbuild": "^0.28.2",