v1.2.2 - Fix network error on background, auto-retry streaming with reconnect

This commit is contained in:
admin
2026-05-19 15:50:45 +04:00
Unverified
parent 2e327317e4
commit 1026259a20
3831 changed files with 384316 additions and 39 deletions

78
node_modules/find-free-ports/index.js generated vendored Normal file
View File

@@ -0,0 +1,78 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.findFreePorts = findFreePorts;
exports.isFreePort = isFreePort;
var _os = _interopRequireDefault(require("os"));
var _net = _interopRequireDefault(require("net"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const MIN_PORT = 1025;
const MAX_PORT = 65535;
const DEFAULT_JOB_COUNT = _os.default.cpus().length;
function clamp(value, min, max) {
if (value < min) return min;
if (value > max) return max;
return value;
}
async function findFreePorts(count = 1, {
endPort = MAX_PORT,
startPort = MIN_PORT,
jobCount = DEFAULT_JOB_COUNT,
isFree = isFreePort
} = {}) {
if (count > endPort - startPort) {
throw new Error(`Could not find free ports: the range of allowed ports is not large enough for the requested amount of ports to find.`);
}
const portInterval = Math.ceil((endPort - startPort) / jobCount);
const ports = [];
const jobPromises = [];
for (let i = 0; i < jobCount; i++) {
jobPromises.push(scanRange(startPort + portInterval * i, Math.min(endPort, startPort + portInterval * (i + 1))));
}
await Promise.all(jobPromises);
if (ports.length < count) {
throw new Error(`Could not find free ports: there were not enough ports available.`);
}
return ports;
async function scanRange(startPort, endPort) {
for (let port = startPort; port < endPort; port++) {
if (ports.length >= count) {
break;
}
if (await isFree(port)) {
if (ports.length >= count) {
break;
}
ports.push(port);
}
}
}
}
function isFreePort(port) {
return new Promise((accept, reject) => {
const sock = _net.default.createConnection(port);
sock.once('connect', () => {
sock.end();
accept(false);
});
sock.once('error', e => {
sock.destroy();
if (e.code === 'ECONNREFUSED') {
accept(true);
} else {
reject(e);
}
});
});
}
var _default = findFreePorts;
exports.default = _default;
if (typeof module.exports !== 'undefined') {
module.exports = findFreePorts;
findFreePorts.findFreePorts = findFreePorts;
findFreePorts.isFreePort = isFreePort;
}
//# sourceMappingURL=index.js.map