mirror of
https://github.com/JasonYANG170/IOTConnect-Web.git
synced 2024-11-23 20:26:28 +00:00
21573 lines
741 KiB
JavaScript
21573 lines
741 KiB
JavaScript
"use strict";
|
|
var mqtt = (() => {
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __esm = (fn, res) => function __init() {
|
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
};
|
|
var __commonJS = (cb, mod) => function __require() {
|
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
};
|
|
var __export = (target, all) => {
|
|
for (var name2 in all)
|
|
__defProp(target, name2, { get: all[name2], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// node_modules/esbuild-plugin-polyfill-node/polyfills/navigator.js
|
|
var navigator;
|
|
var init_navigator = __esm({
|
|
"node_modules/esbuild-plugin-polyfill-node/polyfills/navigator.js"() {
|
|
navigator = {
|
|
deviceMemory: 8,
|
|
// Highest allowed value
|
|
hardwareConcurrency: 8,
|
|
// Fairly common default
|
|
language: "en-US"
|
|
// Most common default
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/process.js
|
|
var process_exports = {};
|
|
__export(process_exports, {
|
|
_debugEnd: () => _debugEnd,
|
|
_debugProcess: () => _debugProcess,
|
|
_events: () => _events,
|
|
_eventsCount: () => _eventsCount,
|
|
_exiting: () => _exiting,
|
|
_fatalExceptions: () => _fatalExceptions,
|
|
_getActiveHandles: () => _getActiveHandles,
|
|
_getActiveRequests: () => _getActiveRequests,
|
|
_kill: () => _kill,
|
|
_linkedBinding: () => _linkedBinding,
|
|
_maxListeners: () => _maxListeners,
|
|
_preload_modules: () => _preload_modules,
|
|
_rawDebug: () => _rawDebug,
|
|
_startProfilerIdleNotifier: () => _startProfilerIdleNotifier,
|
|
_stopProfilerIdleNotifier: () => _stopProfilerIdleNotifier,
|
|
_tickCallback: () => _tickCallback,
|
|
abort: () => abort,
|
|
addListener: () => addListener,
|
|
allowedNodeEnvironmentFlags: () => allowedNodeEnvironmentFlags,
|
|
arch: () => arch,
|
|
argv: () => argv,
|
|
argv0: () => argv0,
|
|
assert: () => assert,
|
|
binding: () => binding,
|
|
chdir: () => chdir,
|
|
config: () => config,
|
|
cpuUsage: () => cpuUsage,
|
|
cwd: () => cwd,
|
|
debugPort: () => debugPort,
|
|
default: () => process,
|
|
dlopen: () => dlopen,
|
|
domain: () => domain,
|
|
emit: () => emit,
|
|
emitWarning: () => emitWarning,
|
|
env: () => env,
|
|
execArgv: () => execArgv,
|
|
execPath: () => execPath,
|
|
exit: () => exit,
|
|
features: () => features,
|
|
hasUncaughtExceptionCaptureCallback: () => hasUncaughtExceptionCaptureCallback,
|
|
hrtime: () => hrtime,
|
|
kill: () => kill,
|
|
listeners: () => listeners,
|
|
memoryUsage: () => memoryUsage,
|
|
moduleLoadList: () => moduleLoadList,
|
|
nextTick: () => nextTick,
|
|
off: () => off,
|
|
on: () => on,
|
|
once: () => once,
|
|
openStdin: () => openStdin,
|
|
pid: () => pid,
|
|
platform: () => platform,
|
|
ppid: () => ppid,
|
|
prependListener: () => prependListener,
|
|
prependOnceListener: () => prependOnceListener,
|
|
reallyExit: () => reallyExit,
|
|
release: () => release,
|
|
removeAllListeners: () => removeAllListeners,
|
|
removeListener: () => removeListener,
|
|
resourceUsage: () => resourceUsage,
|
|
setSourceMapsEnabled: () => setSourceMapsEnabled,
|
|
setUncaughtExceptionCaptureCallback: () => setUncaughtExceptionCaptureCallback,
|
|
stderr: () => stderr,
|
|
stdin: () => stdin,
|
|
stdout: () => stdout,
|
|
title: () => title,
|
|
umask: () => umask,
|
|
uptime: () => uptime,
|
|
version: () => version,
|
|
versions: () => versions
|
|
});
|
|
function unimplemented(name2) {
|
|
throw new Error("Node.js process " + name2 + " is not supported by JSPM core outside of Node.js");
|
|
}
|
|
function cleanUpNextTick() {
|
|
if (!draining || !currentQueue)
|
|
return;
|
|
draining = false;
|
|
if (currentQueue.length) {
|
|
queue = currentQueue.concat(queue);
|
|
} else {
|
|
queueIndex = -1;
|
|
}
|
|
if (queue.length)
|
|
drainQueue();
|
|
}
|
|
function drainQueue() {
|
|
if (draining)
|
|
return;
|
|
var timeout = setTimeout(cleanUpNextTick, 0);
|
|
draining = true;
|
|
var len = queue.length;
|
|
while (len) {
|
|
currentQueue = queue;
|
|
queue = [];
|
|
while (++queueIndex < len) {
|
|
if (currentQueue)
|
|
currentQueue[queueIndex].run();
|
|
}
|
|
queueIndex = -1;
|
|
len = queue.length;
|
|
}
|
|
currentQueue = null;
|
|
draining = false;
|
|
clearTimeout(timeout);
|
|
}
|
|
function nextTick(fun) {
|
|
var args = new Array(arguments.length - 1);
|
|
if (arguments.length > 1) {
|
|
for (var i6 = 1; i6 < arguments.length; i6++)
|
|
args[i6 - 1] = arguments[i6];
|
|
}
|
|
queue.push(new Item(fun, args));
|
|
if (queue.length === 1 && !draining)
|
|
setTimeout(drainQueue, 0);
|
|
}
|
|
function Item(fun, array) {
|
|
this.fun = fun;
|
|
this.array = array;
|
|
}
|
|
function noop() {
|
|
}
|
|
function _linkedBinding(name2) {
|
|
unimplemented("_linkedBinding");
|
|
}
|
|
function dlopen(name2) {
|
|
unimplemented("dlopen");
|
|
}
|
|
function _getActiveRequests() {
|
|
return [];
|
|
}
|
|
function _getActiveHandles() {
|
|
return [];
|
|
}
|
|
function assert(condition, message) {
|
|
if (!condition)
|
|
throw new Error(message || "assertion error");
|
|
}
|
|
function hasUncaughtExceptionCaptureCallback() {
|
|
return false;
|
|
}
|
|
function uptime() {
|
|
return _performance.now() / 1e3;
|
|
}
|
|
function hrtime(previousTimestamp) {
|
|
var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);
|
|
var clocktime = _performance.now() * 1e-3;
|
|
var seconds = Math.floor(clocktime) + baseNow;
|
|
var nanoseconds = Math.floor(clocktime % 1 * 1e9);
|
|
if (previousTimestamp) {
|
|
seconds = seconds - previousTimestamp[0];
|
|
nanoseconds = nanoseconds - previousTimestamp[1];
|
|
if (nanoseconds < 0) {
|
|
seconds--;
|
|
nanoseconds += nanoPerSec;
|
|
}
|
|
}
|
|
return [seconds, nanoseconds];
|
|
}
|
|
function on() {
|
|
return process;
|
|
}
|
|
function listeners(name2) {
|
|
return [];
|
|
}
|
|
var queue, draining, currentQueue, queueIndex, title, arch, platform, env, argv, execArgv, version, versions, emitWarning, binding, umask, cwd, chdir, release, _rawDebug, moduleLoadList, domain, _exiting, config, reallyExit, _kill, cpuUsage, resourceUsage, memoryUsage, kill, exit, openStdin, allowedNodeEnvironmentFlags, features, _fatalExceptions, setUncaughtExceptionCaptureCallback, _tickCallback, _debugProcess, _debugEnd, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, stdout, stderr, stdin, abort, pid, ppid, execPath, debugPort, argv0, _preload_modules, setSourceMapsEnabled, _performance, nowOffset, nanoPerSec, _maxListeners, _events, _eventsCount, addListener, once, off, removeListener, removeAllListeners, emit, prependListener, prependOnceListener, process;
|
|
var init_process = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/process.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
queue = [];
|
|
draining = false;
|
|
queueIndex = -1;
|
|
Item.prototype.run = function() {
|
|
this.fun.apply(null, this.array);
|
|
};
|
|
title = "browser";
|
|
arch = "x64";
|
|
platform = "browser";
|
|
env = {
|
|
PATH: "/usr/bin",
|
|
LANG: navigator.language + ".UTF-8",
|
|
PWD: "/",
|
|
HOME: "/home",
|
|
TMP: "/tmp"
|
|
};
|
|
argv = ["/usr/bin/node"];
|
|
execArgv = [];
|
|
version = "v16.8.0";
|
|
versions = {};
|
|
emitWarning = function(message, type) {
|
|
console.warn((type ? type + ": " : "") + message);
|
|
};
|
|
binding = function(name2) {
|
|
unimplemented("binding");
|
|
};
|
|
umask = function(mask) {
|
|
return 0;
|
|
};
|
|
cwd = function() {
|
|
return "/";
|
|
};
|
|
chdir = function(dir) {
|
|
};
|
|
release = {
|
|
name: "node",
|
|
sourceUrl: "",
|
|
headersUrl: "",
|
|
libUrl: ""
|
|
};
|
|
_rawDebug = noop;
|
|
moduleLoadList = [];
|
|
domain = {};
|
|
_exiting = false;
|
|
config = {};
|
|
reallyExit = noop;
|
|
_kill = noop;
|
|
cpuUsage = function() {
|
|
return {};
|
|
};
|
|
resourceUsage = cpuUsage;
|
|
memoryUsage = cpuUsage;
|
|
kill = noop;
|
|
exit = noop;
|
|
openStdin = noop;
|
|
allowedNodeEnvironmentFlags = {};
|
|
features = {
|
|
inspector: false,
|
|
debug: false,
|
|
uv: false,
|
|
ipv6: false,
|
|
tls_alpn: false,
|
|
tls_sni: false,
|
|
tls_ocsp: false,
|
|
tls: false,
|
|
cached_builtins: true
|
|
};
|
|
_fatalExceptions = noop;
|
|
setUncaughtExceptionCaptureCallback = noop;
|
|
_tickCallback = noop;
|
|
_debugProcess = noop;
|
|
_debugEnd = noop;
|
|
_startProfilerIdleNotifier = noop;
|
|
_stopProfilerIdleNotifier = noop;
|
|
stdout = void 0;
|
|
stderr = void 0;
|
|
stdin = void 0;
|
|
abort = noop;
|
|
pid = 2;
|
|
ppid = 1;
|
|
execPath = "/bin/usr/node";
|
|
debugPort = 9229;
|
|
argv0 = "node";
|
|
_preload_modules = [];
|
|
setSourceMapsEnabled = noop;
|
|
_performance = {
|
|
now: typeof performance !== "undefined" ? performance.now.bind(performance) : void 0,
|
|
timing: typeof performance !== "undefined" ? performance.timing : void 0
|
|
};
|
|
if (_performance.now === void 0) {
|
|
nowOffset = Date.now();
|
|
if (_performance.timing && _performance.timing.navigationStart) {
|
|
nowOffset = _performance.timing.navigationStart;
|
|
}
|
|
_performance.now = () => Date.now() - nowOffset;
|
|
}
|
|
nanoPerSec = 1e9;
|
|
hrtime.bigint = function(time) {
|
|
var diff = hrtime(time);
|
|
if (typeof BigInt === "undefined") {
|
|
return diff[0] * nanoPerSec + diff[1];
|
|
}
|
|
return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);
|
|
};
|
|
_maxListeners = 10;
|
|
_events = {};
|
|
_eventsCount = 0;
|
|
addListener = on;
|
|
once = on;
|
|
off = on;
|
|
removeListener = on;
|
|
removeAllListeners = on;
|
|
emit = noop;
|
|
prependListener = on;
|
|
prependOnceListener = on;
|
|
process = {
|
|
version,
|
|
versions,
|
|
arch,
|
|
platform,
|
|
release,
|
|
_rawDebug,
|
|
moduleLoadList,
|
|
binding,
|
|
_linkedBinding,
|
|
_events,
|
|
_eventsCount,
|
|
_maxListeners,
|
|
on,
|
|
addListener,
|
|
once,
|
|
off,
|
|
removeListener,
|
|
removeAllListeners,
|
|
emit,
|
|
prependListener,
|
|
prependOnceListener,
|
|
listeners,
|
|
domain,
|
|
_exiting,
|
|
config,
|
|
dlopen,
|
|
uptime,
|
|
_getActiveRequests,
|
|
_getActiveHandles,
|
|
reallyExit,
|
|
_kill,
|
|
cpuUsage,
|
|
resourceUsage,
|
|
memoryUsage,
|
|
kill,
|
|
exit,
|
|
openStdin,
|
|
allowedNodeEnvironmentFlags,
|
|
assert,
|
|
features,
|
|
_fatalExceptions,
|
|
setUncaughtExceptionCaptureCallback,
|
|
hasUncaughtExceptionCaptureCallback,
|
|
emitWarning,
|
|
nextTick,
|
|
_tickCallback,
|
|
_debugProcess,
|
|
_debugEnd,
|
|
_startProfilerIdleNotifier,
|
|
_stopProfilerIdleNotifier,
|
|
stdout,
|
|
stdin,
|
|
stderr,
|
|
abort,
|
|
umask,
|
|
chdir,
|
|
cwd,
|
|
env,
|
|
title,
|
|
argv,
|
|
execArgv,
|
|
pid,
|
|
ppid,
|
|
execPath,
|
|
debugPort,
|
|
hrtime,
|
|
argv0,
|
|
_preload_modules,
|
|
setSourceMapsEnabled
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/esbuild-plugin-polyfill-node/polyfills/process.js
|
|
var init_process2 = __esm({
|
|
"node_modules/esbuild-plugin-polyfill-node/polyfills/process.js"() {
|
|
init_process();
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/buffer.js
|
|
var buffer_exports = {};
|
|
__export(buffer_exports, {
|
|
Buffer: () => Buffer2,
|
|
INSPECT_MAX_BYTES: () => INSPECT_MAX_BYTES,
|
|
default: () => exports,
|
|
kMaxLength: () => kMaxLength
|
|
});
|
|
function dew$2() {
|
|
if (_dewExec$2)
|
|
return exports$3;
|
|
_dewExec$2 = true;
|
|
exports$3.byteLength = byteLength;
|
|
exports$3.toByteArray = toByteArray;
|
|
exports$3.fromByteArray = fromByteArray;
|
|
var lookup = [];
|
|
var revLookup = [];
|
|
var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
|
|
var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
for (var i6 = 0, len = code.length; i6 < len; ++i6) {
|
|
lookup[i6] = code[i6];
|
|
revLookup[code.charCodeAt(i6)] = i6;
|
|
}
|
|
revLookup["-".charCodeAt(0)] = 62;
|
|
revLookup["_".charCodeAt(0)] = 63;
|
|
function getLens(b64) {
|
|
var len2 = b64.length;
|
|
if (len2 % 4 > 0) {
|
|
throw new Error("Invalid string. Length must be a multiple of 4");
|
|
}
|
|
var validLen = b64.indexOf("=");
|
|
if (validLen === -1)
|
|
validLen = len2;
|
|
var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;
|
|
return [validLen, placeHoldersLen];
|
|
}
|
|
function byteLength(b64) {
|
|
var lens = getLens(b64);
|
|
var validLen = lens[0];
|
|
var placeHoldersLen = lens[1];
|
|
return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
|
|
}
|
|
function _byteLength(b64, validLen, placeHoldersLen) {
|
|
return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
|
|
}
|
|
function toByteArray(b64) {
|
|
var tmp;
|
|
var lens = getLens(b64);
|
|
var validLen = lens[0];
|
|
var placeHoldersLen = lens[1];
|
|
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
|
|
var curByte = 0;
|
|
var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;
|
|
var i7;
|
|
for (i7 = 0; i7 < len2; i7 += 4) {
|
|
tmp = revLookup[b64.charCodeAt(i7)] << 18 | revLookup[b64.charCodeAt(i7 + 1)] << 12 | revLookup[b64.charCodeAt(i7 + 2)] << 6 | revLookup[b64.charCodeAt(i7 + 3)];
|
|
arr[curByte++] = tmp >> 16 & 255;
|
|
arr[curByte++] = tmp >> 8 & 255;
|
|
arr[curByte++] = tmp & 255;
|
|
}
|
|
if (placeHoldersLen === 2) {
|
|
tmp = revLookup[b64.charCodeAt(i7)] << 2 | revLookup[b64.charCodeAt(i7 + 1)] >> 4;
|
|
arr[curByte++] = tmp & 255;
|
|
}
|
|
if (placeHoldersLen === 1) {
|
|
tmp = revLookup[b64.charCodeAt(i7)] << 10 | revLookup[b64.charCodeAt(i7 + 1)] << 4 | revLookup[b64.charCodeAt(i7 + 2)] >> 2;
|
|
arr[curByte++] = tmp >> 8 & 255;
|
|
arr[curByte++] = tmp & 255;
|
|
}
|
|
return arr;
|
|
}
|
|
function tripletToBase64(num) {
|
|
return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
|
|
}
|
|
function encodeChunk(uint8, start, end) {
|
|
var tmp;
|
|
var output = [];
|
|
for (var i7 = start; i7 < end; i7 += 3) {
|
|
tmp = (uint8[i7] << 16 & 16711680) + (uint8[i7 + 1] << 8 & 65280) + (uint8[i7 + 2] & 255);
|
|
output.push(tripletToBase64(tmp));
|
|
}
|
|
return output.join("");
|
|
}
|
|
function fromByteArray(uint8) {
|
|
var tmp;
|
|
var len2 = uint8.length;
|
|
var extraBytes = len2 % 3;
|
|
var parts = [];
|
|
var maxChunkLength = 16383;
|
|
for (var i7 = 0, len22 = len2 - extraBytes; i7 < len22; i7 += maxChunkLength) {
|
|
parts.push(encodeChunk(uint8, i7, i7 + maxChunkLength > len22 ? len22 : i7 + maxChunkLength));
|
|
}
|
|
if (extraBytes === 1) {
|
|
tmp = uint8[len2 - 1];
|
|
parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==");
|
|
} else if (extraBytes === 2) {
|
|
tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];
|
|
parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=");
|
|
}
|
|
return parts.join("");
|
|
}
|
|
return exports$3;
|
|
}
|
|
function dew$1() {
|
|
if (_dewExec$1)
|
|
return exports$2;
|
|
_dewExec$1 = true;
|
|
exports$2.read = function(buffer, offset, isLE, mLen, nBytes) {
|
|
var e7, m4;
|
|
var eLen = nBytes * 8 - mLen - 1;
|
|
var eMax = (1 << eLen) - 1;
|
|
var eBias = eMax >> 1;
|
|
var nBits = -7;
|
|
var i6 = isLE ? nBytes - 1 : 0;
|
|
var d4 = isLE ? -1 : 1;
|
|
var s5 = buffer[offset + i6];
|
|
i6 += d4;
|
|
e7 = s5 & (1 << -nBits) - 1;
|
|
s5 >>= -nBits;
|
|
nBits += eLen;
|
|
for (; nBits > 0; e7 = e7 * 256 + buffer[offset + i6], i6 += d4, nBits -= 8) {
|
|
}
|
|
m4 = e7 & (1 << -nBits) - 1;
|
|
e7 >>= -nBits;
|
|
nBits += mLen;
|
|
for (; nBits > 0; m4 = m4 * 256 + buffer[offset + i6], i6 += d4, nBits -= 8) {
|
|
}
|
|
if (e7 === 0) {
|
|
e7 = 1 - eBias;
|
|
} else if (e7 === eMax) {
|
|
return m4 ? NaN : (s5 ? -1 : 1) * Infinity;
|
|
} else {
|
|
m4 = m4 + Math.pow(2, mLen);
|
|
e7 = e7 - eBias;
|
|
}
|
|
return (s5 ? -1 : 1) * m4 * Math.pow(2, e7 - mLen);
|
|
};
|
|
exports$2.write = function(buffer, value, offset, isLE, mLen, nBytes) {
|
|
var e7, m4, c6;
|
|
var eLen = nBytes * 8 - mLen - 1;
|
|
var eMax = (1 << eLen) - 1;
|
|
var eBias = eMax >> 1;
|
|
var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
|
|
var i6 = isLE ? 0 : nBytes - 1;
|
|
var d4 = isLE ? 1 : -1;
|
|
var s5 = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
|
|
value = Math.abs(value);
|
|
if (isNaN(value) || value === Infinity) {
|
|
m4 = isNaN(value) ? 1 : 0;
|
|
e7 = eMax;
|
|
} else {
|
|
e7 = Math.floor(Math.log(value) / Math.LN2);
|
|
if (value * (c6 = Math.pow(2, -e7)) < 1) {
|
|
e7--;
|
|
c6 *= 2;
|
|
}
|
|
if (e7 + eBias >= 1) {
|
|
value += rt / c6;
|
|
} else {
|
|
value += rt * Math.pow(2, 1 - eBias);
|
|
}
|
|
if (value * c6 >= 2) {
|
|
e7++;
|
|
c6 /= 2;
|
|
}
|
|
if (e7 + eBias >= eMax) {
|
|
m4 = 0;
|
|
e7 = eMax;
|
|
} else if (e7 + eBias >= 1) {
|
|
m4 = (value * c6 - 1) * Math.pow(2, mLen);
|
|
e7 = e7 + eBias;
|
|
} else {
|
|
m4 = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
|
e7 = 0;
|
|
}
|
|
}
|
|
for (; mLen >= 8; buffer[offset + i6] = m4 & 255, i6 += d4, m4 /= 256, mLen -= 8) {
|
|
}
|
|
e7 = e7 << mLen | m4;
|
|
eLen += mLen;
|
|
for (; eLen > 0; buffer[offset + i6] = e7 & 255, i6 += d4, e7 /= 256, eLen -= 8) {
|
|
}
|
|
buffer[offset + i6 - d4] |= s5 * 128;
|
|
};
|
|
return exports$2;
|
|
}
|
|
function dew() {
|
|
if (_dewExec)
|
|
return exports$1;
|
|
_dewExec = true;
|
|
const base64 = dew$2();
|
|
const ieee754 = dew$1();
|
|
const customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null;
|
|
exports$1.Buffer = Buffer3;
|
|
exports$1.SlowBuffer = SlowBuffer;
|
|
exports$1.INSPECT_MAX_BYTES = 50;
|
|
const K_MAX_LENGTH = 2147483647;
|
|
exports$1.kMaxLength = K_MAX_LENGTH;
|
|
Buffer3.TYPED_ARRAY_SUPPORT = typedArraySupport();
|
|
if (!Buffer3.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") {
|
|
console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");
|
|
}
|
|
function typedArraySupport() {
|
|
try {
|
|
const arr = new Uint8Array(1);
|
|
const proto = {
|
|
foo: function() {
|
|
return 42;
|
|
}
|
|
};
|
|
Object.setPrototypeOf(proto, Uint8Array.prototype);
|
|
Object.setPrototypeOf(arr, proto);
|
|
return arr.foo() === 42;
|
|
} catch (e7) {
|
|
return false;
|
|
}
|
|
}
|
|
Object.defineProperty(Buffer3.prototype, "parent", {
|
|
enumerable: true,
|
|
get: function() {
|
|
if (!Buffer3.isBuffer(this))
|
|
return void 0;
|
|
return this.buffer;
|
|
}
|
|
});
|
|
Object.defineProperty(Buffer3.prototype, "offset", {
|
|
enumerable: true,
|
|
get: function() {
|
|
if (!Buffer3.isBuffer(this))
|
|
return void 0;
|
|
return this.byteOffset;
|
|
}
|
|
});
|
|
function createBuffer(length) {
|
|
if (length > K_MAX_LENGTH) {
|
|
throw new RangeError('The value "' + length + '" is invalid for option "size"');
|
|
}
|
|
const buf = new Uint8Array(length);
|
|
Object.setPrototypeOf(buf, Buffer3.prototype);
|
|
return buf;
|
|
}
|
|
function Buffer3(arg, encodingOrOffset, length) {
|
|
if (typeof arg === "number") {
|
|
if (typeof encodingOrOffset === "string") {
|
|
throw new TypeError('The "string" argument must be of type string. Received type number');
|
|
}
|
|
return allocUnsafe(arg);
|
|
}
|
|
return from(arg, encodingOrOffset, length);
|
|
}
|
|
Buffer3.poolSize = 8192;
|
|
function from(value, encodingOrOffset, length) {
|
|
if (typeof value === "string") {
|
|
return fromString(value, encodingOrOffset);
|
|
}
|
|
if (ArrayBuffer.isView(value)) {
|
|
return fromArrayView(value);
|
|
}
|
|
if (value == null) {
|
|
throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value);
|
|
}
|
|
if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {
|
|
return fromArrayBuffer(value, encodingOrOffset, length);
|
|
}
|
|
if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {
|
|
return fromArrayBuffer(value, encodingOrOffset, length);
|
|
}
|
|
if (typeof value === "number") {
|
|
throw new TypeError('The "value" argument must not be of type number. Received type number');
|
|
}
|
|
const valueOf = value.valueOf && value.valueOf();
|
|
if (valueOf != null && valueOf !== value) {
|
|
return Buffer3.from(valueOf, encodingOrOffset, length);
|
|
}
|
|
const b3 = fromObject(value);
|
|
if (b3)
|
|
return b3;
|
|
if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") {
|
|
return Buffer3.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length);
|
|
}
|
|
throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value);
|
|
}
|
|
Buffer3.from = function(value, encodingOrOffset, length) {
|
|
return from(value, encodingOrOffset, length);
|
|
};
|
|
Object.setPrototypeOf(Buffer3.prototype, Uint8Array.prototype);
|
|
Object.setPrototypeOf(Buffer3, Uint8Array);
|
|
function assertSize(size) {
|
|
if (typeof size !== "number") {
|
|
throw new TypeError('"size" argument must be of type number');
|
|
} else if (size < 0) {
|
|
throw new RangeError('The value "' + size + '" is invalid for option "size"');
|
|
}
|
|
}
|
|
function alloc(size, fill, encoding) {
|
|
assertSize(size);
|
|
if (size <= 0) {
|
|
return createBuffer(size);
|
|
}
|
|
if (fill !== void 0) {
|
|
return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);
|
|
}
|
|
return createBuffer(size);
|
|
}
|
|
Buffer3.alloc = function(size, fill, encoding) {
|
|
return alloc(size, fill, encoding);
|
|
};
|
|
function allocUnsafe(size) {
|
|
assertSize(size);
|
|
return createBuffer(size < 0 ? 0 : checked(size) | 0);
|
|
}
|
|
Buffer3.allocUnsafe = function(size) {
|
|
return allocUnsafe(size);
|
|
};
|
|
Buffer3.allocUnsafeSlow = function(size) {
|
|
return allocUnsafe(size);
|
|
};
|
|
function fromString(string, encoding) {
|
|
if (typeof encoding !== "string" || encoding === "") {
|
|
encoding = "utf8";
|
|
}
|
|
if (!Buffer3.isEncoding(encoding)) {
|
|
throw new TypeError("Unknown encoding: " + encoding);
|
|
}
|
|
const length = byteLength(string, encoding) | 0;
|
|
let buf = createBuffer(length);
|
|
const actual = buf.write(string, encoding);
|
|
if (actual !== length) {
|
|
buf = buf.slice(0, actual);
|
|
}
|
|
return buf;
|
|
}
|
|
function fromArrayLike(array) {
|
|
const length = array.length < 0 ? 0 : checked(array.length) | 0;
|
|
const buf = createBuffer(length);
|
|
for (let i6 = 0; i6 < length; i6 += 1) {
|
|
buf[i6] = array[i6] & 255;
|
|
}
|
|
return buf;
|
|
}
|
|
function fromArrayView(arrayView) {
|
|
if (isInstance(arrayView, Uint8Array)) {
|
|
const copy = new Uint8Array(arrayView);
|
|
return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);
|
|
}
|
|
return fromArrayLike(arrayView);
|
|
}
|
|
function fromArrayBuffer(array, byteOffset, length) {
|
|
if (byteOffset < 0 || array.byteLength < byteOffset) {
|
|
throw new RangeError('"offset" is outside of buffer bounds');
|
|
}
|
|
if (array.byteLength < byteOffset + (length || 0)) {
|
|
throw new RangeError('"length" is outside of buffer bounds');
|
|
}
|
|
let buf;
|
|
if (byteOffset === void 0 && length === void 0) {
|
|
buf = new Uint8Array(array);
|
|
} else if (length === void 0) {
|
|
buf = new Uint8Array(array, byteOffset);
|
|
} else {
|
|
buf = new Uint8Array(array, byteOffset, length);
|
|
}
|
|
Object.setPrototypeOf(buf, Buffer3.prototype);
|
|
return buf;
|
|
}
|
|
function fromObject(obj) {
|
|
if (Buffer3.isBuffer(obj)) {
|
|
const len = checked(obj.length) | 0;
|
|
const buf = createBuffer(len);
|
|
if (buf.length === 0) {
|
|
return buf;
|
|
}
|
|
obj.copy(buf, 0, 0, len);
|
|
return buf;
|
|
}
|
|
if (obj.length !== void 0) {
|
|
if (typeof obj.length !== "number" || numberIsNaN(obj.length)) {
|
|
return createBuffer(0);
|
|
}
|
|
return fromArrayLike(obj);
|
|
}
|
|
if (obj.type === "Buffer" && Array.isArray(obj.data)) {
|
|
return fromArrayLike(obj.data);
|
|
}
|
|
}
|
|
function checked(length) {
|
|
if (length >= K_MAX_LENGTH) {
|
|
throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes");
|
|
}
|
|
return length | 0;
|
|
}
|
|
function SlowBuffer(length) {
|
|
if (+length != length) {
|
|
length = 0;
|
|
}
|
|
return Buffer3.alloc(+length);
|
|
}
|
|
Buffer3.isBuffer = function isBuffer(b3) {
|
|
return b3 != null && b3._isBuffer === true && b3 !== Buffer3.prototype;
|
|
};
|
|
Buffer3.compare = function compare(a6, b3) {
|
|
if (isInstance(a6, Uint8Array))
|
|
a6 = Buffer3.from(a6, a6.offset, a6.byteLength);
|
|
if (isInstance(b3, Uint8Array))
|
|
b3 = Buffer3.from(b3, b3.offset, b3.byteLength);
|
|
if (!Buffer3.isBuffer(a6) || !Buffer3.isBuffer(b3)) {
|
|
throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
|
|
}
|
|
if (a6 === b3)
|
|
return 0;
|
|
let x2 = a6.length;
|
|
let y4 = b3.length;
|
|
for (let i6 = 0, len = Math.min(x2, y4); i6 < len; ++i6) {
|
|
if (a6[i6] !== b3[i6]) {
|
|
x2 = a6[i6];
|
|
y4 = b3[i6];
|
|
break;
|
|
}
|
|
}
|
|
if (x2 < y4)
|
|
return -1;
|
|
if (y4 < x2)
|
|
return 1;
|
|
return 0;
|
|
};
|
|
Buffer3.isEncoding = function isEncoding(encoding) {
|
|
switch (String(encoding).toLowerCase()) {
|
|
case "hex":
|
|
case "utf8":
|
|
case "utf-8":
|
|
case "ascii":
|
|
case "latin1":
|
|
case "binary":
|
|
case "base64":
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
};
|
|
Buffer3.concat = function concat(list, length) {
|
|
if (!Array.isArray(list)) {
|
|
throw new TypeError('"list" argument must be an Array of Buffers');
|
|
}
|
|
if (list.length === 0) {
|
|
return Buffer3.alloc(0);
|
|
}
|
|
let i6;
|
|
if (length === void 0) {
|
|
length = 0;
|
|
for (i6 = 0; i6 < list.length; ++i6) {
|
|
length += list[i6].length;
|
|
}
|
|
}
|
|
const buffer = Buffer3.allocUnsafe(length);
|
|
let pos = 0;
|
|
for (i6 = 0; i6 < list.length; ++i6) {
|
|
let buf = list[i6];
|
|
if (isInstance(buf, Uint8Array)) {
|
|
if (pos + buf.length > buffer.length) {
|
|
if (!Buffer3.isBuffer(buf))
|
|
buf = Buffer3.from(buf);
|
|
buf.copy(buffer, pos);
|
|
} else {
|
|
Uint8Array.prototype.set.call(buffer, buf, pos);
|
|
}
|
|
} else if (!Buffer3.isBuffer(buf)) {
|
|
throw new TypeError('"list" argument must be an Array of Buffers');
|
|
} else {
|
|
buf.copy(buffer, pos);
|
|
}
|
|
pos += buf.length;
|
|
}
|
|
return buffer;
|
|
};
|
|
function byteLength(string, encoding) {
|
|
if (Buffer3.isBuffer(string)) {
|
|
return string.length;
|
|
}
|
|
if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
|
|
return string.byteLength;
|
|
}
|
|
if (typeof string !== "string") {
|
|
throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string);
|
|
}
|
|
const len = string.length;
|
|
const mustMatch = arguments.length > 2 && arguments[2] === true;
|
|
if (!mustMatch && len === 0)
|
|
return 0;
|
|
let loweredCase = false;
|
|
for (; ; ) {
|
|
switch (encoding) {
|
|
case "ascii":
|
|
case "latin1":
|
|
case "binary":
|
|
return len;
|
|
case "utf8":
|
|
case "utf-8":
|
|
return utf8ToBytes(string).length;
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return len * 2;
|
|
case "hex":
|
|
return len >>> 1;
|
|
case "base64":
|
|
return base64ToBytes(string).length;
|
|
default:
|
|
if (loweredCase) {
|
|
return mustMatch ? -1 : utf8ToBytes(string).length;
|
|
}
|
|
encoding = ("" + encoding).toLowerCase();
|
|
loweredCase = true;
|
|
}
|
|
}
|
|
}
|
|
Buffer3.byteLength = byteLength;
|
|
function slowToString(encoding, start, end) {
|
|
let loweredCase = false;
|
|
if (start === void 0 || start < 0) {
|
|
start = 0;
|
|
}
|
|
if (start > this.length) {
|
|
return "";
|
|
}
|
|
if (end === void 0 || end > this.length) {
|
|
end = this.length;
|
|
}
|
|
if (end <= 0) {
|
|
return "";
|
|
}
|
|
end >>>= 0;
|
|
start >>>= 0;
|
|
if (end <= start) {
|
|
return "";
|
|
}
|
|
if (!encoding)
|
|
encoding = "utf8";
|
|
while (true) {
|
|
switch (encoding) {
|
|
case "hex":
|
|
return hexSlice(this, start, end);
|
|
case "utf8":
|
|
case "utf-8":
|
|
return utf8Slice(this, start, end);
|
|
case "ascii":
|
|
return asciiSlice(this, start, end);
|
|
case "latin1":
|
|
case "binary":
|
|
return latin1Slice(this, start, end);
|
|
case "base64":
|
|
return base64Slice(this, start, end);
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return utf16leSlice(this, start, end);
|
|
default:
|
|
if (loweredCase)
|
|
throw new TypeError("Unknown encoding: " + encoding);
|
|
encoding = (encoding + "").toLowerCase();
|
|
loweredCase = true;
|
|
}
|
|
}
|
|
}
|
|
Buffer3.prototype._isBuffer = true;
|
|
function swap(b3, n7, m4) {
|
|
const i6 = b3[n7];
|
|
b3[n7] = b3[m4];
|
|
b3[m4] = i6;
|
|
}
|
|
Buffer3.prototype.swap16 = function swap16() {
|
|
const len = this.length;
|
|
if (len % 2 !== 0) {
|
|
throw new RangeError("Buffer size must be a multiple of 16-bits");
|
|
}
|
|
for (let i6 = 0; i6 < len; i6 += 2) {
|
|
swap(this, i6, i6 + 1);
|
|
}
|
|
return this;
|
|
};
|
|
Buffer3.prototype.swap32 = function swap32() {
|
|
const len = this.length;
|
|
if (len % 4 !== 0) {
|
|
throw new RangeError("Buffer size must be a multiple of 32-bits");
|
|
}
|
|
for (let i6 = 0; i6 < len; i6 += 4) {
|
|
swap(this, i6, i6 + 3);
|
|
swap(this, i6 + 1, i6 + 2);
|
|
}
|
|
return this;
|
|
};
|
|
Buffer3.prototype.swap64 = function swap64() {
|
|
const len = this.length;
|
|
if (len % 8 !== 0) {
|
|
throw new RangeError("Buffer size must be a multiple of 64-bits");
|
|
}
|
|
for (let i6 = 0; i6 < len; i6 += 8) {
|
|
swap(this, i6, i6 + 7);
|
|
swap(this, i6 + 1, i6 + 6);
|
|
swap(this, i6 + 2, i6 + 5);
|
|
swap(this, i6 + 3, i6 + 4);
|
|
}
|
|
return this;
|
|
};
|
|
Buffer3.prototype.toString = function toString() {
|
|
const length = this.length;
|
|
if (length === 0)
|
|
return "";
|
|
if (arguments.length === 0)
|
|
return utf8Slice(this, 0, length);
|
|
return slowToString.apply(this, arguments);
|
|
};
|
|
Buffer3.prototype.toLocaleString = Buffer3.prototype.toString;
|
|
Buffer3.prototype.equals = function equals(b3) {
|
|
if (!Buffer3.isBuffer(b3))
|
|
throw new TypeError("Argument must be a Buffer");
|
|
if (this === b3)
|
|
return true;
|
|
return Buffer3.compare(this, b3) === 0;
|
|
};
|
|
Buffer3.prototype.inspect = function inspect() {
|
|
let str = "";
|
|
const max = exports$1.INSPECT_MAX_BYTES;
|
|
str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim();
|
|
if (this.length > max)
|
|
str += " ... ";
|
|
return "<Buffer " + str + ">";
|
|
};
|
|
if (customInspectSymbol) {
|
|
Buffer3.prototype[customInspectSymbol] = Buffer3.prototype.inspect;
|
|
}
|
|
Buffer3.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
|
|
if (isInstance(target, Uint8Array)) {
|
|
target = Buffer3.from(target, target.offset, target.byteLength);
|
|
}
|
|
if (!Buffer3.isBuffer(target)) {
|
|
throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target);
|
|
}
|
|
if (start === void 0) {
|
|
start = 0;
|
|
}
|
|
if (end === void 0) {
|
|
end = target ? target.length : 0;
|
|
}
|
|
if (thisStart === void 0) {
|
|
thisStart = 0;
|
|
}
|
|
if (thisEnd === void 0) {
|
|
thisEnd = this.length;
|
|
}
|
|
if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
|
|
throw new RangeError("out of range index");
|
|
}
|
|
if (thisStart >= thisEnd && start >= end) {
|
|
return 0;
|
|
}
|
|
if (thisStart >= thisEnd) {
|
|
return -1;
|
|
}
|
|
if (start >= end) {
|
|
return 1;
|
|
}
|
|
start >>>= 0;
|
|
end >>>= 0;
|
|
thisStart >>>= 0;
|
|
thisEnd >>>= 0;
|
|
if (this === target)
|
|
return 0;
|
|
let x2 = thisEnd - thisStart;
|
|
let y4 = end - start;
|
|
const len = Math.min(x2, y4);
|
|
const thisCopy = this.slice(thisStart, thisEnd);
|
|
const targetCopy = target.slice(start, end);
|
|
for (let i6 = 0; i6 < len; ++i6) {
|
|
if (thisCopy[i6] !== targetCopy[i6]) {
|
|
x2 = thisCopy[i6];
|
|
y4 = targetCopy[i6];
|
|
break;
|
|
}
|
|
}
|
|
if (x2 < y4)
|
|
return -1;
|
|
if (y4 < x2)
|
|
return 1;
|
|
return 0;
|
|
};
|
|
function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
|
|
if (buffer.length === 0)
|
|
return -1;
|
|
if (typeof byteOffset === "string") {
|
|
encoding = byteOffset;
|
|
byteOffset = 0;
|
|
} else if (byteOffset > 2147483647) {
|
|
byteOffset = 2147483647;
|
|
} else if (byteOffset < -2147483648) {
|
|
byteOffset = -2147483648;
|
|
}
|
|
byteOffset = +byteOffset;
|
|
if (numberIsNaN(byteOffset)) {
|
|
byteOffset = dir ? 0 : buffer.length - 1;
|
|
}
|
|
if (byteOffset < 0)
|
|
byteOffset = buffer.length + byteOffset;
|
|
if (byteOffset >= buffer.length) {
|
|
if (dir)
|
|
return -1;
|
|
else
|
|
byteOffset = buffer.length - 1;
|
|
} else if (byteOffset < 0) {
|
|
if (dir)
|
|
byteOffset = 0;
|
|
else
|
|
return -1;
|
|
}
|
|
if (typeof val === "string") {
|
|
val = Buffer3.from(val, encoding);
|
|
}
|
|
if (Buffer3.isBuffer(val)) {
|
|
if (val.length === 0) {
|
|
return -1;
|
|
}
|
|
return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
|
|
} else if (typeof val === "number") {
|
|
val = val & 255;
|
|
if (typeof Uint8Array.prototype.indexOf === "function") {
|
|
if (dir) {
|
|
return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
|
|
} else {
|
|
return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
|
|
}
|
|
}
|
|
return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
|
|
}
|
|
throw new TypeError("val must be string, number or Buffer");
|
|
}
|
|
function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
|
|
let indexSize = 1;
|
|
let arrLength = arr.length;
|
|
let valLength = val.length;
|
|
if (encoding !== void 0) {
|
|
encoding = String(encoding).toLowerCase();
|
|
if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") {
|
|
if (arr.length < 2 || val.length < 2) {
|
|
return -1;
|
|
}
|
|
indexSize = 2;
|
|
arrLength /= 2;
|
|
valLength /= 2;
|
|
byteOffset /= 2;
|
|
}
|
|
}
|
|
function read(buf, i7) {
|
|
if (indexSize === 1) {
|
|
return buf[i7];
|
|
} else {
|
|
return buf.readUInt16BE(i7 * indexSize);
|
|
}
|
|
}
|
|
let i6;
|
|
if (dir) {
|
|
let foundIndex = -1;
|
|
for (i6 = byteOffset; i6 < arrLength; i6++) {
|
|
if (read(arr, i6) === read(val, foundIndex === -1 ? 0 : i6 - foundIndex)) {
|
|
if (foundIndex === -1)
|
|
foundIndex = i6;
|
|
if (i6 - foundIndex + 1 === valLength)
|
|
return foundIndex * indexSize;
|
|
} else {
|
|
if (foundIndex !== -1)
|
|
i6 -= i6 - foundIndex;
|
|
foundIndex = -1;
|
|
}
|
|
}
|
|
} else {
|
|
if (byteOffset + valLength > arrLength)
|
|
byteOffset = arrLength - valLength;
|
|
for (i6 = byteOffset; i6 >= 0; i6--) {
|
|
let found = true;
|
|
for (let j2 = 0; j2 < valLength; j2++) {
|
|
if (read(arr, i6 + j2) !== read(val, j2)) {
|
|
found = false;
|
|
break;
|
|
}
|
|
}
|
|
if (found)
|
|
return i6;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
Buffer3.prototype.includes = function includes(val, byteOffset, encoding) {
|
|
return this.indexOf(val, byteOffset, encoding) !== -1;
|
|
};
|
|
Buffer3.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
|
|
return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
|
|
};
|
|
Buffer3.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
|
|
return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
|
|
};
|
|
function hexWrite(buf, string, offset, length) {
|
|
offset = Number(offset) || 0;
|
|
const remaining = buf.length - offset;
|
|
if (!length) {
|
|
length = remaining;
|
|
} else {
|
|
length = Number(length);
|
|
if (length > remaining) {
|
|
length = remaining;
|
|
}
|
|
}
|
|
const strLen = string.length;
|
|
if (length > strLen / 2) {
|
|
length = strLen / 2;
|
|
}
|
|
let i6;
|
|
for (i6 = 0; i6 < length; ++i6) {
|
|
const parsed = parseInt(string.substr(i6 * 2, 2), 16);
|
|
if (numberIsNaN(parsed))
|
|
return i6;
|
|
buf[offset + i6] = parsed;
|
|
}
|
|
return i6;
|
|
}
|
|
function utf8Write(buf, string, offset, length) {
|
|
return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
|
|
}
|
|
function asciiWrite(buf, string, offset, length) {
|
|
return blitBuffer(asciiToBytes(string), buf, offset, length);
|
|
}
|
|
function base64Write(buf, string, offset, length) {
|
|
return blitBuffer(base64ToBytes(string), buf, offset, length);
|
|
}
|
|
function ucs2Write(buf, string, offset, length) {
|
|
return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
|
|
}
|
|
Buffer3.prototype.write = function write(string, offset, length, encoding) {
|
|
if (offset === void 0) {
|
|
encoding = "utf8";
|
|
length = this.length;
|
|
offset = 0;
|
|
} else if (length === void 0 && typeof offset === "string") {
|
|
encoding = offset;
|
|
length = this.length;
|
|
offset = 0;
|
|
} else if (isFinite(offset)) {
|
|
offset = offset >>> 0;
|
|
if (isFinite(length)) {
|
|
length = length >>> 0;
|
|
if (encoding === void 0)
|
|
encoding = "utf8";
|
|
} else {
|
|
encoding = length;
|
|
length = void 0;
|
|
}
|
|
} else {
|
|
throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
|
|
}
|
|
const remaining = this.length - offset;
|
|
if (length === void 0 || length > remaining)
|
|
length = remaining;
|
|
if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
|
|
throw new RangeError("Attempt to write outside buffer bounds");
|
|
}
|
|
if (!encoding)
|
|
encoding = "utf8";
|
|
let loweredCase = false;
|
|
for (; ; ) {
|
|
switch (encoding) {
|
|
case "hex":
|
|
return hexWrite(this, string, offset, length);
|
|
case "utf8":
|
|
case "utf-8":
|
|
return utf8Write(this, string, offset, length);
|
|
case "ascii":
|
|
case "latin1":
|
|
case "binary":
|
|
return asciiWrite(this, string, offset, length);
|
|
case "base64":
|
|
return base64Write(this, string, offset, length);
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return ucs2Write(this, string, offset, length);
|
|
default:
|
|
if (loweredCase)
|
|
throw new TypeError("Unknown encoding: " + encoding);
|
|
encoding = ("" + encoding).toLowerCase();
|
|
loweredCase = true;
|
|
}
|
|
}
|
|
};
|
|
Buffer3.prototype.toJSON = function toJSON() {
|
|
return {
|
|
type: "Buffer",
|
|
data: Array.prototype.slice.call(this._arr || this, 0)
|
|
};
|
|
};
|
|
function base64Slice(buf, start, end) {
|
|
if (start === 0 && end === buf.length) {
|
|
return base64.fromByteArray(buf);
|
|
} else {
|
|
return base64.fromByteArray(buf.slice(start, end));
|
|
}
|
|
}
|
|
function utf8Slice(buf, start, end) {
|
|
end = Math.min(buf.length, end);
|
|
const res = [];
|
|
let i6 = start;
|
|
while (i6 < end) {
|
|
const firstByte = buf[i6];
|
|
let codePoint = null;
|
|
let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;
|
|
if (i6 + bytesPerSequence <= end) {
|
|
let secondByte, thirdByte, fourthByte, tempCodePoint;
|
|
switch (bytesPerSequence) {
|
|
case 1:
|
|
if (firstByte < 128) {
|
|
codePoint = firstByte;
|
|
}
|
|
break;
|
|
case 2:
|
|
secondByte = buf[i6 + 1];
|
|
if ((secondByte & 192) === 128) {
|
|
tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;
|
|
if (tempCodePoint > 127) {
|
|
codePoint = tempCodePoint;
|
|
}
|
|
}
|
|
break;
|
|
case 3:
|
|
secondByte = buf[i6 + 1];
|
|
thirdByte = buf[i6 + 2];
|
|
if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {
|
|
tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;
|
|
if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {
|
|
codePoint = tempCodePoint;
|
|
}
|
|
}
|
|
break;
|
|
case 4:
|
|
secondByte = buf[i6 + 1];
|
|
thirdByte = buf[i6 + 2];
|
|
fourthByte = buf[i6 + 3];
|
|
if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {
|
|
tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;
|
|
if (tempCodePoint > 65535 && tempCodePoint < 1114112) {
|
|
codePoint = tempCodePoint;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (codePoint === null) {
|
|
codePoint = 65533;
|
|
bytesPerSequence = 1;
|
|
} else if (codePoint > 65535) {
|
|
codePoint -= 65536;
|
|
res.push(codePoint >>> 10 & 1023 | 55296);
|
|
codePoint = 56320 | codePoint & 1023;
|
|
}
|
|
res.push(codePoint);
|
|
i6 += bytesPerSequence;
|
|
}
|
|
return decodeCodePointsArray(res);
|
|
}
|
|
const MAX_ARGUMENTS_LENGTH = 4096;
|
|
function decodeCodePointsArray(codePoints) {
|
|
const len = codePoints.length;
|
|
if (len <= MAX_ARGUMENTS_LENGTH) {
|
|
return String.fromCharCode.apply(String, codePoints);
|
|
}
|
|
let res = "";
|
|
let i6 = 0;
|
|
while (i6 < len) {
|
|
res += String.fromCharCode.apply(String, codePoints.slice(i6, i6 += MAX_ARGUMENTS_LENGTH));
|
|
}
|
|
return res;
|
|
}
|
|
function asciiSlice(buf, start, end) {
|
|
let ret = "";
|
|
end = Math.min(buf.length, end);
|
|
for (let i6 = start; i6 < end; ++i6) {
|
|
ret += String.fromCharCode(buf[i6] & 127);
|
|
}
|
|
return ret;
|
|
}
|
|
function latin1Slice(buf, start, end) {
|
|
let ret = "";
|
|
end = Math.min(buf.length, end);
|
|
for (let i6 = start; i6 < end; ++i6) {
|
|
ret += String.fromCharCode(buf[i6]);
|
|
}
|
|
return ret;
|
|
}
|
|
function hexSlice(buf, start, end) {
|
|
const len = buf.length;
|
|
if (!start || start < 0)
|
|
start = 0;
|
|
if (!end || end < 0 || end > len)
|
|
end = len;
|
|
let out = "";
|
|
for (let i6 = start; i6 < end; ++i6) {
|
|
out += hexSliceLookupTable[buf[i6]];
|
|
}
|
|
return out;
|
|
}
|
|
function utf16leSlice(buf, start, end) {
|
|
const bytes = buf.slice(start, end);
|
|
let res = "";
|
|
for (let i6 = 0; i6 < bytes.length - 1; i6 += 2) {
|
|
res += String.fromCharCode(bytes[i6] + bytes[i6 + 1] * 256);
|
|
}
|
|
return res;
|
|
}
|
|
Buffer3.prototype.slice = function slice(start, end) {
|
|
const len = this.length;
|
|
start = ~~start;
|
|
end = end === void 0 ? len : ~~end;
|
|
if (start < 0) {
|
|
start += len;
|
|
if (start < 0)
|
|
start = 0;
|
|
} else if (start > len) {
|
|
start = len;
|
|
}
|
|
if (end < 0) {
|
|
end += len;
|
|
if (end < 0)
|
|
end = 0;
|
|
} else if (end > len) {
|
|
end = len;
|
|
}
|
|
if (end < start)
|
|
end = start;
|
|
const newBuf = this.subarray(start, end);
|
|
Object.setPrototypeOf(newBuf, Buffer3.prototype);
|
|
return newBuf;
|
|
};
|
|
function checkOffset(offset, ext, length) {
|
|
if (offset % 1 !== 0 || offset < 0)
|
|
throw new RangeError("offset is not uint");
|
|
if (offset + ext > length)
|
|
throw new RangeError("Trying to access beyond buffer length");
|
|
}
|
|
Buffer3.prototype.readUintLE = Buffer3.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {
|
|
offset = offset >>> 0;
|
|
byteLength2 = byteLength2 >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, byteLength2, this.length);
|
|
let val = this[offset];
|
|
let mul = 1;
|
|
let i6 = 0;
|
|
while (++i6 < byteLength2 && (mul *= 256)) {
|
|
val += this[offset + i6] * mul;
|
|
}
|
|
return val;
|
|
};
|
|
Buffer3.prototype.readUintBE = Buffer3.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {
|
|
offset = offset >>> 0;
|
|
byteLength2 = byteLength2 >>> 0;
|
|
if (!noAssert) {
|
|
checkOffset(offset, byteLength2, this.length);
|
|
}
|
|
let val = this[offset + --byteLength2];
|
|
let mul = 1;
|
|
while (byteLength2 > 0 && (mul *= 256)) {
|
|
val += this[offset + --byteLength2] * mul;
|
|
}
|
|
return val;
|
|
};
|
|
Buffer3.prototype.readUint8 = Buffer3.prototype.readUInt8 = function readUInt8(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 1, this.length);
|
|
return this[offset];
|
|
};
|
|
Buffer3.prototype.readUint16LE = Buffer3.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 2, this.length);
|
|
return this[offset] | this[offset + 1] << 8;
|
|
};
|
|
Buffer3.prototype.readUint16BE = Buffer3.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 2, this.length);
|
|
return this[offset] << 8 | this[offset + 1];
|
|
};
|
|
Buffer3.prototype.readUint32LE = Buffer3.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 4, this.length);
|
|
return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;
|
|
};
|
|
Buffer3.prototype.readUint32BE = Buffer3.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 4, this.length);
|
|
return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
|
|
};
|
|
Buffer3.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {
|
|
offset = offset >>> 0;
|
|
validateNumber(offset, "offset");
|
|
const first = this[offset];
|
|
const last = this[offset + 7];
|
|
if (first === void 0 || last === void 0) {
|
|
boundsError(offset, this.length - 8);
|
|
}
|
|
const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;
|
|
const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;
|
|
return BigInt(lo) + (BigInt(hi) << BigInt(32));
|
|
});
|
|
Buffer3.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {
|
|
offset = offset >>> 0;
|
|
validateNumber(offset, "offset");
|
|
const first = this[offset];
|
|
const last = this[offset + 7];
|
|
if (first === void 0 || last === void 0) {
|
|
boundsError(offset, this.length - 8);
|
|
}
|
|
const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];
|
|
const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;
|
|
return (BigInt(hi) << BigInt(32)) + BigInt(lo);
|
|
});
|
|
Buffer3.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {
|
|
offset = offset >>> 0;
|
|
byteLength2 = byteLength2 >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, byteLength2, this.length);
|
|
let val = this[offset];
|
|
let mul = 1;
|
|
let i6 = 0;
|
|
while (++i6 < byteLength2 && (mul *= 256)) {
|
|
val += this[offset + i6] * mul;
|
|
}
|
|
mul *= 128;
|
|
if (val >= mul)
|
|
val -= Math.pow(2, 8 * byteLength2);
|
|
return val;
|
|
};
|
|
Buffer3.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {
|
|
offset = offset >>> 0;
|
|
byteLength2 = byteLength2 >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, byteLength2, this.length);
|
|
let i6 = byteLength2;
|
|
let mul = 1;
|
|
let val = this[offset + --i6];
|
|
while (i6 > 0 && (mul *= 256)) {
|
|
val += this[offset + --i6] * mul;
|
|
}
|
|
mul *= 128;
|
|
if (val >= mul)
|
|
val -= Math.pow(2, 8 * byteLength2);
|
|
return val;
|
|
};
|
|
Buffer3.prototype.readInt8 = function readInt8(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 1, this.length);
|
|
if (!(this[offset] & 128))
|
|
return this[offset];
|
|
return (255 - this[offset] + 1) * -1;
|
|
};
|
|
Buffer3.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 2, this.length);
|
|
const val = this[offset] | this[offset + 1] << 8;
|
|
return val & 32768 ? val | 4294901760 : val;
|
|
};
|
|
Buffer3.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 2, this.length);
|
|
const val = this[offset + 1] | this[offset] << 8;
|
|
return val & 32768 ? val | 4294901760 : val;
|
|
};
|
|
Buffer3.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 4, this.length);
|
|
return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
|
|
};
|
|
Buffer3.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 4, this.length);
|
|
return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
|
|
};
|
|
Buffer3.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {
|
|
offset = offset >>> 0;
|
|
validateNumber(offset, "offset");
|
|
const first = this[offset];
|
|
const last = this[offset + 7];
|
|
if (first === void 0 || last === void 0) {
|
|
boundsError(offset, this.length - 8);
|
|
}
|
|
const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24);
|
|
return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);
|
|
});
|
|
Buffer3.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {
|
|
offset = offset >>> 0;
|
|
validateNumber(offset, "offset");
|
|
const first = this[offset];
|
|
const last = this[offset + 7];
|
|
if (first === void 0 || last === void 0) {
|
|
boundsError(offset, this.length - 8);
|
|
}
|
|
const val = (first << 24) + // Overflow
|
|
this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];
|
|
return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);
|
|
});
|
|
Buffer3.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 4, this.length);
|
|
return ieee754.read(this, offset, true, 23, 4);
|
|
};
|
|
Buffer3.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 4, this.length);
|
|
return ieee754.read(this, offset, false, 23, 4);
|
|
};
|
|
Buffer3.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 8, this.length);
|
|
return ieee754.read(this, offset, true, 52, 8);
|
|
};
|
|
Buffer3.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkOffset(offset, 8, this.length);
|
|
return ieee754.read(this, offset, false, 52, 8);
|
|
};
|
|
function checkInt(buf, value, offset, ext, max, min) {
|
|
if (!Buffer3.isBuffer(buf))
|
|
throw new TypeError('"buffer" argument must be a Buffer instance');
|
|
if (value > max || value < min)
|
|
throw new RangeError('"value" argument is out of bounds');
|
|
if (offset + ext > buf.length)
|
|
throw new RangeError("Index out of range");
|
|
}
|
|
Buffer3.prototype.writeUintLE = Buffer3.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
byteLength2 = byteLength2 >>> 0;
|
|
if (!noAssert) {
|
|
const maxBytes = Math.pow(2, 8 * byteLength2) - 1;
|
|
checkInt(this, value, offset, byteLength2, maxBytes, 0);
|
|
}
|
|
let mul = 1;
|
|
let i6 = 0;
|
|
this[offset] = value & 255;
|
|
while (++i6 < byteLength2 && (mul *= 256)) {
|
|
this[offset + i6] = value / mul & 255;
|
|
}
|
|
return offset + byteLength2;
|
|
};
|
|
Buffer3.prototype.writeUintBE = Buffer3.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
byteLength2 = byteLength2 >>> 0;
|
|
if (!noAssert) {
|
|
const maxBytes = Math.pow(2, 8 * byteLength2) - 1;
|
|
checkInt(this, value, offset, byteLength2, maxBytes, 0);
|
|
}
|
|
let i6 = byteLength2 - 1;
|
|
let mul = 1;
|
|
this[offset + i6] = value & 255;
|
|
while (--i6 >= 0 && (mul *= 256)) {
|
|
this[offset + i6] = value / mul & 255;
|
|
}
|
|
return offset + byteLength2;
|
|
};
|
|
Buffer3.prototype.writeUint8 = Buffer3.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 1, 255, 0);
|
|
this[offset] = value & 255;
|
|
return offset + 1;
|
|
};
|
|
Buffer3.prototype.writeUint16LE = Buffer3.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 2, 65535, 0);
|
|
this[offset] = value & 255;
|
|
this[offset + 1] = value >>> 8;
|
|
return offset + 2;
|
|
};
|
|
Buffer3.prototype.writeUint16BE = Buffer3.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 2, 65535, 0);
|
|
this[offset] = value >>> 8;
|
|
this[offset + 1] = value & 255;
|
|
return offset + 2;
|
|
};
|
|
Buffer3.prototype.writeUint32LE = Buffer3.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 4, 4294967295, 0);
|
|
this[offset + 3] = value >>> 24;
|
|
this[offset + 2] = value >>> 16;
|
|
this[offset + 1] = value >>> 8;
|
|
this[offset] = value & 255;
|
|
return offset + 4;
|
|
};
|
|
Buffer3.prototype.writeUint32BE = Buffer3.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 4, 4294967295, 0);
|
|
this[offset] = value >>> 24;
|
|
this[offset + 1] = value >>> 16;
|
|
this[offset + 2] = value >>> 8;
|
|
this[offset + 3] = value & 255;
|
|
return offset + 4;
|
|
};
|
|
function wrtBigUInt64LE(buf, value, offset, min, max) {
|
|
checkIntBI(value, min, max, buf, offset, 7);
|
|
let lo = Number(value & BigInt(4294967295));
|
|
buf[offset++] = lo;
|
|
lo = lo >> 8;
|
|
buf[offset++] = lo;
|
|
lo = lo >> 8;
|
|
buf[offset++] = lo;
|
|
lo = lo >> 8;
|
|
buf[offset++] = lo;
|
|
let hi = Number(value >> BigInt(32) & BigInt(4294967295));
|
|
buf[offset++] = hi;
|
|
hi = hi >> 8;
|
|
buf[offset++] = hi;
|
|
hi = hi >> 8;
|
|
buf[offset++] = hi;
|
|
hi = hi >> 8;
|
|
buf[offset++] = hi;
|
|
return offset;
|
|
}
|
|
function wrtBigUInt64BE(buf, value, offset, min, max) {
|
|
checkIntBI(value, min, max, buf, offset, 7);
|
|
let lo = Number(value & BigInt(4294967295));
|
|
buf[offset + 7] = lo;
|
|
lo = lo >> 8;
|
|
buf[offset + 6] = lo;
|
|
lo = lo >> 8;
|
|
buf[offset + 5] = lo;
|
|
lo = lo >> 8;
|
|
buf[offset + 4] = lo;
|
|
let hi = Number(value >> BigInt(32) & BigInt(4294967295));
|
|
buf[offset + 3] = hi;
|
|
hi = hi >> 8;
|
|
buf[offset + 2] = hi;
|
|
hi = hi >> 8;
|
|
buf[offset + 1] = hi;
|
|
hi = hi >> 8;
|
|
buf[offset] = hi;
|
|
return offset + 8;
|
|
}
|
|
Buffer3.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {
|
|
return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff"));
|
|
});
|
|
Buffer3.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {
|
|
return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff"));
|
|
});
|
|
Buffer3.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert) {
|
|
const limit = Math.pow(2, 8 * byteLength2 - 1);
|
|
checkInt(this, value, offset, byteLength2, limit - 1, -limit);
|
|
}
|
|
let i6 = 0;
|
|
let mul = 1;
|
|
let sub = 0;
|
|
this[offset] = value & 255;
|
|
while (++i6 < byteLength2 && (mul *= 256)) {
|
|
if (value < 0 && sub === 0 && this[offset + i6 - 1] !== 0) {
|
|
sub = 1;
|
|
}
|
|
this[offset + i6] = (value / mul >> 0) - sub & 255;
|
|
}
|
|
return offset + byteLength2;
|
|
};
|
|
Buffer3.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert) {
|
|
const limit = Math.pow(2, 8 * byteLength2 - 1);
|
|
checkInt(this, value, offset, byteLength2, limit - 1, -limit);
|
|
}
|
|
let i6 = byteLength2 - 1;
|
|
let mul = 1;
|
|
let sub = 0;
|
|
this[offset + i6] = value & 255;
|
|
while (--i6 >= 0 && (mul *= 256)) {
|
|
if (value < 0 && sub === 0 && this[offset + i6 + 1] !== 0) {
|
|
sub = 1;
|
|
}
|
|
this[offset + i6] = (value / mul >> 0) - sub & 255;
|
|
}
|
|
return offset + byteLength2;
|
|
};
|
|
Buffer3.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 1, 127, -128);
|
|
if (value < 0)
|
|
value = 255 + value + 1;
|
|
this[offset] = value & 255;
|
|
return offset + 1;
|
|
};
|
|
Buffer3.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 2, 32767, -32768);
|
|
this[offset] = value & 255;
|
|
this[offset + 1] = value >>> 8;
|
|
return offset + 2;
|
|
};
|
|
Buffer3.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 2, 32767, -32768);
|
|
this[offset] = value >>> 8;
|
|
this[offset + 1] = value & 255;
|
|
return offset + 2;
|
|
};
|
|
Buffer3.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 4, 2147483647, -2147483648);
|
|
this[offset] = value & 255;
|
|
this[offset + 1] = value >>> 8;
|
|
this[offset + 2] = value >>> 16;
|
|
this[offset + 3] = value >>> 24;
|
|
return offset + 4;
|
|
};
|
|
Buffer3.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert)
|
|
checkInt(this, value, offset, 4, 2147483647, -2147483648);
|
|
if (value < 0)
|
|
value = 4294967295 + value + 1;
|
|
this[offset] = value >>> 24;
|
|
this[offset + 1] = value >>> 16;
|
|
this[offset + 2] = value >>> 8;
|
|
this[offset + 3] = value & 255;
|
|
return offset + 4;
|
|
};
|
|
Buffer3.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {
|
|
return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
|
|
});
|
|
Buffer3.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {
|
|
return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
|
|
});
|
|
function checkIEEE754(buf, value, offset, ext, max, min) {
|
|
if (offset + ext > buf.length)
|
|
throw new RangeError("Index out of range");
|
|
if (offset < 0)
|
|
throw new RangeError("Index out of range");
|
|
}
|
|
function writeFloat(buf, value, offset, littleEndian, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert) {
|
|
checkIEEE754(buf, value, offset, 4);
|
|
}
|
|
ieee754.write(buf, value, offset, littleEndian, 23, 4);
|
|
return offset + 4;
|
|
}
|
|
Buffer3.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
|
|
return writeFloat(this, value, offset, true, noAssert);
|
|
};
|
|
Buffer3.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
|
|
return writeFloat(this, value, offset, false, noAssert);
|
|
};
|
|
function writeDouble(buf, value, offset, littleEndian, noAssert) {
|
|
value = +value;
|
|
offset = offset >>> 0;
|
|
if (!noAssert) {
|
|
checkIEEE754(buf, value, offset, 8);
|
|
}
|
|
ieee754.write(buf, value, offset, littleEndian, 52, 8);
|
|
return offset + 8;
|
|
}
|
|
Buffer3.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
|
|
return writeDouble(this, value, offset, true, noAssert);
|
|
};
|
|
Buffer3.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
|
|
return writeDouble(this, value, offset, false, noAssert);
|
|
};
|
|
Buffer3.prototype.copy = function copy(target, targetStart, start, end) {
|
|
if (!Buffer3.isBuffer(target))
|
|
throw new TypeError("argument should be a Buffer");
|
|
if (!start)
|
|
start = 0;
|
|
if (!end && end !== 0)
|
|
end = this.length;
|
|
if (targetStart >= target.length)
|
|
targetStart = target.length;
|
|
if (!targetStart)
|
|
targetStart = 0;
|
|
if (end > 0 && end < start)
|
|
end = start;
|
|
if (end === start)
|
|
return 0;
|
|
if (target.length === 0 || this.length === 0)
|
|
return 0;
|
|
if (targetStart < 0) {
|
|
throw new RangeError("targetStart out of bounds");
|
|
}
|
|
if (start < 0 || start >= this.length)
|
|
throw new RangeError("Index out of range");
|
|
if (end < 0)
|
|
throw new RangeError("sourceEnd out of bounds");
|
|
if (end > this.length)
|
|
end = this.length;
|
|
if (target.length - targetStart < end - start) {
|
|
end = target.length - targetStart + start;
|
|
}
|
|
const len = end - start;
|
|
if (this === target && typeof Uint8Array.prototype.copyWithin === "function") {
|
|
this.copyWithin(targetStart, start, end);
|
|
} else {
|
|
Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);
|
|
}
|
|
return len;
|
|
};
|
|
Buffer3.prototype.fill = function fill(val, start, end, encoding) {
|
|
if (typeof val === "string") {
|
|
if (typeof start === "string") {
|
|
encoding = start;
|
|
start = 0;
|
|
end = this.length;
|
|
} else if (typeof end === "string") {
|
|
encoding = end;
|
|
end = this.length;
|
|
}
|
|
if (encoding !== void 0 && typeof encoding !== "string") {
|
|
throw new TypeError("encoding must be a string");
|
|
}
|
|
if (typeof encoding === "string" && !Buffer3.isEncoding(encoding)) {
|
|
throw new TypeError("Unknown encoding: " + encoding);
|
|
}
|
|
if (val.length === 1) {
|
|
const code = val.charCodeAt(0);
|
|
if (encoding === "utf8" && code < 128 || encoding === "latin1") {
|
|
val = code;
|
|
}
|
|
}
|
|
} else if (typeof val === "number") {
|
|
val = val & 255;
|
|
} else if (typeof val === "boolean") {
|
|
val = Number(val);
|
|
}
|
|
if (start < 0 || this.length < start || this.length < end) {
|
|
throw new RangeError("Out of range index");
|
|
}
|
|
if (end <= start) {
|
|
return this;
|
|
}
|
|
start = start >>> 0;
|
|
end = end === void 0 ? this.length : end >>> 0;
|
|
if (!val)
|
|
val = 0;
|
|
let i6;
|
|
if (typeof val === "number") {
|
|
for (i6 = start; i6 < end; ++i6) {
|
|
this[i6] = val;
|
|
}
|
|
} else {
|
|
const bytes = Buffer3.isBuffer(val) ? val : Buffer3.from(val, encoding);
|
|
const len = bytes.length;
|
|
if (len === 0) {
|
|
throw new TypeError('The value "' + val + '" is invalid for argument "value"');
|
|
}
|
|
for (i6 = 0; i6 < end - start; ++i6) {
|
|
this[i6 + start] = bytes[i6 % len];
|
|
}
|
|
}
|
|
return this;
|
|
};
|
|
const errors = {};
|
|
function E2(sym, getMessage, Base) {
|
|
errors[sym] = class NodeError extends Base {
|
|
constructor() {
|
|
super();
|
|
Object.defineProperty(this, "message", {
|
|
value: getMessage.apply(this, arguments),
|
|
writable: true,
|
|
configurable: true
|
|
});
|
|
this.name = `${this.name} [${sym}]`;
|
|
this.stack;
|
|
delete this.name;
|
|
}
|
|
get code() {
|
|
return sym;
|
|
}
|
|
set code(value) {
|
|
Object.defineProperty(this, "code", {
|
|
configurable: true,
|
|
enumerable: true,
|
|
value,
|
|
writable: true
|
|
});
|
|
}
|
|
toString() {
|
|
return `${this.name} [${sym}]: ${this.message}`;
|
|
}
|
|
};
|
|
}
|
|
E2("ERR_BUFFER_OUT_OF_BOUNDS", function(name2) {
|
|
if (name2) {
|
|
return `${name2} is outside of buffer bounds`;
|
|
}
|
|
return "Attempt to access memory outside buffer bounds";
|
|
}, RangeError);
|
|
E2("ERR_INVALID_ARG_TYPE", function(name2, actual) {
|
|
return `The "${name2}" argument must be of type number. Received type ${typeof actual}`;
|
|
}, TypeError);
|
|
E2("ERR_OUT_OF_RANGE", function(str, range, input) {
|
|
let msg = `The value of "${str}" is out of range.`;
|
|
let received = input;
|
|
if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {
|
|
received = addNumericalSeparator(String(input));
|
|
} else if (typeof input === "bigint") {
|
|
received = String(input);
|
|
if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {
|
|
received = addNumericalSeparator(received);
|
|
}
|
|
received += "n";
|
|
}
|
|
msg += ` It must be ${range}. Received ${received}`;
|
|
return msg;
|
|
}, RangeError);
|
|
function addNumericalSeparator(val) {
|
|
let res = "";
|
|
let i6 = val.length;
|
|
const start = val[0] === "-" ? 1 : 0;
|
|
for (; i6 >= start + 4; i6 -= 3) {
|
|
res = `_${val.slice(i6 - 3, i6)}${res}`;
|
|
}
|
|
return `${val.slice(0, i6)}${res}`;
|
|
}
|
|
function checkBounds(buf, offset, byteLength2) {
|
|
validateNumber(offset, "offset");
|
|
if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) {
|
|
boundsError(offset, buf.length - (byteLength2 + 1));
|
|
}
|
|
}
|
|
function checkIntBI(value, min, max, buf, offset, byteLength2) {
|
|
if (value > max || value < min) {
|
|
const n7 = typeof min === "bigint" ? "n" : "";
|
|
let range;
|
|
if (byteLength2 > 3) {
|
|
if (min === 0 || min === BigInt(0)) {
|
|
range = `>= 0${n7} and < 2${n7} ** ${(byteLength2 + 1) * 8}${n7}`;
|
|
} else {
|
|
range = `>= -(2${n7} ** ${(byteLength2 + 1) * 8 - 1}${n7}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n7}`;
|
|
}
|
|
} else {
|
|
range = `>= ${min}${n7} and <= ${max}${n7}`;
|
|
}
|
|
throw new errors.ERR_OUT_OF_RANGE("value", range, value);
|
|
}
|
|
checkBounds(buf, offset, byteLength2);
|
|
}
|
|
function validateNumber(value, name2) {
|
|
if (typeof value !== "number") {
|
|
throw new errors.ERR_INVALID_ARG_TYPE(name2, "number", value);
|
|
}
|
|
}
|
|
function boundsError(value, length, type) {
|
|
if (Math.floor(value) !== value) {
|
|
validateNumber(value, type);
|
|
throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value);
|
|
}
|
|
if (length < 0) {
|
|
throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();
|
|
}
|
|
throw new errors.ERR_OUT_OF_RANGE(type || "offset", `>= ${type ? 1 : 0} and <= ${length}`, value);
|
|
}
|
|
const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;
|
|
function base64clean(str) {
|
|
str = str.split("=")[0];
|
|
str = str.trim().replace(INVALID_BASE64_RE, "");
|
|
if (str.length < 2)
|
|
return "";
|
|
while (str.length % 4 !== 0) {
|
|
str = str + "=";
|
|
}
|
|
return str;
|
|
}
|
|
function utf8ToBytes(string, units) {
|
|
units = units || Infinity;
|
|
let codePoint;
|
|
const length = string.length;
|
|
let leadSurrogate = null;
|
|
const bytes = [];
|
|
for (let i6 = 0; i6 < length; ++i6) {
|
|
codePoint = string.charCodeAt(i6);
|
|
if (codePoint > 55295 && codePoint < 57344) {
|
|
if (!leadSurrogate) {
|
|
if (codePoint > 56319) {
|
|
if ((units -= 3) > -1)
|
|
bytes.push(239, 191, 189);
|
|
continue;
|
|
} else if (i6 + 1 === length) {
|
|
if ((units -= 3) > -1)
|
|
bytes.push(239, 191, 189);
|
|
continue;
|
|
}
|
|
leadSurrogate = codePoint;
|
|
continue;
|
|
}
|
|
if (codePoint < 56320) {
|
|
if ((units -= 3) > -1)
|
|
bytes.push(239, 191, 189);
|
|
leadSurrogate = codePoint;
|
|
continue;
|
|
}
|
|
codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;
|
|
} else if (leadSurrogate) {
|
|
if ((units -= 3) > -1)
|
|
bytes.push(239, 191, 189);
|
|
}
|
|
leadSurrogate = null;
|
|
if (codePoint < 128) {
|
|
if ((units -= 1) < 0)
|
|
break;
|
|
bytes.push(codePoint);
|
|
} else if (codePoint < 2048) {
|
|
if ((units -= 2) < 0)
|
|
break;
|
|
bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);
|
|
} else if (codePoint < 65536) {
|
|
if ((units -= 3) < 0)
|
|
break;
|
|
bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);
|
|
} else if (codePoint < 1114112) {
|
|
if ((units -= 4) < 0)
|
|
break;
|
|
bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);
|
|
} else {
|
|
throw new Error("Invalid code point");
|
|
}
|
|
}
|
|
return bytes;
|
|
}
|
|
function asciiToBytes(str) {
|
|
const byteArray = [];
|
|
for (let i6 = 0; i6 < str.length; ++i6) {
|
|
byteArray.push(str.charCodeAt(i6) & 255);
|
|
}
|
|
return byteArray;
|
|
}
|
|
function utf16leToBytes(str, units) {
|
|
let c6, hi, lo;
|
|
const byteArray = [];
|
|
for (let i6 = 0; i6 < str.length; ++i6) {
|
|
if ((units -= 2) < 0)
|
|
break;
|
|
c6 = str.charCodeAt(i6);
|
|
hi = c6 >> 8;
|
|
lo = c6 % 256;
|
|
byteArray.push(lo);
|
|
byteArray.push(hi);
|
|
}
|
|
return byteArray;
|
|
}
|
|
function base64ToBytes(str) {
|
|
return base64.toByteArray(base64clean(str));
|
|
}
|
|
function blitBuffer(src, dst, offset, length) {
|
|
let i6;
|
|
for (i6 = 0; i6 < length; ++i6) {
|
|
if (i6 + offset >= dst.length || i6 >= src.length)
|
|
break;
|
|
dst[i6 + offset] = src[i6];
|
|
}
|
|
return i6;
|
|
}
|
|
function isInstance(obj, type) {
|
|
return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;
|
|
}
|
|
function numberIsNaN(obj) {
|
|
return obj !== obj;
|
|
}
|
|
const hexSliceLookupTable = function() {
|
|
const alphabet = "0123456789abcdef";
|
|
const table = new Array(256);
|
|
for (let i6 = 0; i6 < 16; ++i6) {
|
|
const i16 = i6 * 16;
|
|
for (let j2 = 0; j2 < 16; ++j2) {
|
|
table[i16 + j2] = alphabet[i6] + alphabet[j2];
|
|
}
|
|
}
|
|
return table;
|
|
}();
|
|
function defineBigIntMethod(fn) {
|
|
return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn;
|
|
}
|
|
function BufferBigIntNotDefined() {
|
|
throw new Error("BigInt not supported");
|
|
}
|
|
return exports$1;
|
|
}
|
|
var exports$3, _dewExec$2, exports$2, _dewExec$1, exports$1, _dewExec, exports, Buffer2, INSPECT_MAX_BYTES, kMaxLength;
|
|
var init_buffer = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/buffer.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
exports$3 = {};
|
|
_dewExec$2 = false;
|
|
exports$2 = {};
|
|
_dewExec$1 = false;
|
|
exports$1 = {};
|
|
_dewExec = false;
|
|
exports = dew();
|
|
exports["Buffer"];
|
|
exports["SlowBuffer"];
|
|
exports["INSPECT_MAX_BYTES"];
|
|
exports["kMaxLength"];
|
|
Buffer2 = exports.Buffer;
|
|
INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;
|
|
kMaxLength = exports.kMaxLength;
|
|
}
|
|
});
|
|
|
|
// node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js
|
|
var init_buffer2 = __esm({
|
|
"node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js"() {
|
|
init_buffer();
|
|
}
|
|
});
|
|
|
|
// build/lib/topic-alias-recv.js
|
|
var require_topic_alias_recv = __commonJS({
|
|
"build/lib/topic-alias-recv.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var TopicAliasRecv = class {
|
|
constructor(max) {
|
|
this.aliasToTopic = {};
|
|
this.max = max;
|
|
}
|
|
put(topic, alias) {
|
|
if (alias === 0 || alias > this.max) {
|
|
return false;
|
|
}
|
|
this.aliasToTopic[alias] = topic;
|
|
this.length = Object.keys(this.aliasToTopic).length;
|
|
return true;
|
|
}
|
|
getTopicByAlias(alias) {
|
|
return this.aliasToTopic[alias];
|
|
}
|
|
clear() {
|
|
this.aliasToTopic = {};
|
|
}
|
|
};
|
|
exports5.default = TopicAliasRecv;
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/ours/primordials.js
|
|
var require_primordials = __commonJS({
|
|
"node_modules/readable-stream/lib/ours/primordials.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
module.exports = {
|
|
ArrayIsArray(self2) {
|
|
return Array.isArray(self2);
|
|
},
|
|
ArrayPrototypeIncludes(self2, el) {
|
|
return self2.includes(el);
|
|
},
|
|
ArrayPrototypeIndexOf(self2, el) {
|
|
return self2.indexOf(el);
|
|
},
|
|
ArrayPrototypeJoin(self2, sep) {
|
|
return self2.join(sep);
|
|
},
|
|
ArrayPrototypeMap(self2, fn) {
|
|
return self2.map(fn);
|
|
},
|
|
ArrayPrototypePop(self2, el) {
|
|
return self2.pop(el);
|
|
},
|
|
ArrayPrototypePush(self2, el) {
|
|
return self2.push(el);
|
|
},
|
|
ArrayPrototypeSlice(self2, start, end) {
|
|
return self2.slice(start, end);
|
|
},
|
|
Error,
|
|
FunctionPrototypeCall(fn, thisArgs, ...args) {
|
|
return fn.call(thisArgs, ...args);
|
|
},
|
|
FunctionPrototypeSymbolHasInstance(self2, instance) {
|
|
return Function.prototype[Symbol.hasInstance].call(self2, instance);
|
|
},
|
|
MathFloor: Math.floor,
|
|
Number,
|
|
NumberIsInteger: Number.isInteger,
|
|
NumberIsNaN: Number.isNaN,
|
|
NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,
|
|
NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,
|
|
NumberParseInt: Number.parseInt,
|
|
ObjectDefineProperties(self2, props) {
|
|
return Object.defineProperties(self2, props);
|
|
},
|
|
ObjectDefineProperty(self2, name2, prop) {
|
|
return Object.defineProperty(self2, name2, prop);
|
|
},
|
|
ObjectGetOwnPropertyDescriptor(self2, name2) {
|
|
return Object.getOwnPropertyDescriptor(self2, name2);
|
|
},
|
|
ObjectKeys(obj) {
|
|
return Object.keys(obj);
|
|
},
|
|
ObjectSetPrototypeOf(target, proto) {
|
|
return Object.setPrototypeOf(target, proto);
|
|
},
|
|
Promise,
|
|
PromisePrototypeCatch(self2, fn) {
|
|
return self2.catch(fn);
|
|
},
|
|
PromisePrototypeThen(self2, thenFn, catchFn) {
|
|
return self2.then(thenFn, catchFn);
|
|
},
|
|
PromiseReject(err) {
|
|
return Promise.reject(err);
|
|
},
|
|
ReflectApply: Reflect.apply,
|
|
RegExpPrototypeTest(self2, value) {
|
|
return self2.test(value);
|
|
},
|
|
SafeSet: Set,
|
|
String,
|
|
StringPrototypeSlice(self2, start, end) {
|
|
return self2.slice(start, end);
|
|
},
|
|
StringPrototypeToLowerCase(self2) {
|
|
return self2.toLowerCase();
|
|
},
|
|
StringPrototypeToUpperCase(self2) {
|
|
return self2.toUpperCase();
|
|
},
|
|
StringPrototypeTrim(self2) {
|
|
return self2.trim();
|
|
},
|
|
Symbol,
|
|
SymbolFor: Symbol.for,
|
|
SymbolAsyncIterator: Symbol.asyncIterator,
|
|
SymbolHasInstance: Symbol.hasInstance,
|
|
SymbolIterator: Symbol.iterator,
|
|
TypedArrayPrototypeSet(self2, buf, len) {
|
|
return self2.set(buf, len);
|
|
},
|
|
Uint8Array
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/ours/util.js
|
|
var require_util = __commonJS({
|
|
"node_modules/readable-stream/lib/ours/util.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var bufferModule = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var AsyncFunction = Object.getPrototypeOf(async function() {
|
|
}).constructor;
|
|
var Blob2 = globalThis.Blob || bufferModule.Blob;
|
|
var isBlob = typeof Blob2 !== "undefined" ? function isBlob2(b3) {
|
|
return b3 instanceof Blob2;
|
|
} : function isBlob2(b3) {
|
|
return false;
|
|
};
|
|
var AggregateError = class extends Error {
|
|
constructor(errors) {
|
|
if (!Array.isArray(errors)) {
|
|
throw new TypeError(`Expected input to be an Array, got ${typeof errors}`);
|
|
}
|
|
let message = "";
|
|
for (let i6 = 0; i6 < errors.length; i6++) {
|
|
message += ` ${errors[i6].stack}
|
|
`;
|
|
}
|
|
super(message);
|
|
this.name = "AggregateError";
|
|
this.errors = errors;
|
|
}
|
|
};
|
|
module.exports = {
|
|
AggregateError,
|
|
kEmptyObject: Object.freeze({}),
|
|
once(callback) {
|
|
let called = false;
|
|
return function(...args) {
|
|
if (called) {
|
|
return;
|
|
}
|
|
called = true;
|
|
callback.apply(this, args);
|
|
};
|
|
},
|
|
createDeferredPromise: function() {
|
|
let resolve2;
|
|
let reject;
|
|
const promise = new Promise((res, rej) => {
|
|
resolve2 = res;
|
|
reject = rej;
|
|
});
|
|
return {
|
|
promise,
|
|
resolve: resolve2,
|
|
reject
|
|
};
|
|
},
|
|
promisify(fn) {
|
|
return new Promise((resolve2, reject) => {
|
|
fn((err, ...args) => {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
return resolve2(...args);
|
|
});
|
|
});
|
|
},
|
|
debuglog() {
|
|
return function() {
|
|
};
|
|
},
|
|
format(format2, ...args) {
|
|
return format2.replace(/%([sdifj])/g, function(...[_unused, type]) {
|
|
const replacement = args.shift();
|
|
if (type === "f") {
|
|
return replacement.toFixed(6);
|
|
} else if (type === "j") {
|
|
return JSON.stringify(replacement);
|
|
} else if (type === "s" && typeof replacement === "object") {
|
|
const ctor = replacement.constructor !== Object ? replacement.constructor.name : "";
|
|
return `${ctor} {}`.trim();
|
|
} else {
|
|
return replacement.toString();
|
|
}
|
|
});
|
|
},
|
|
inspect(value) {
|
|
switch (typeof value) {
|
|
case "string":
|
|
if (value.includes("'")) {
|
|
if (!value.includes('"')) {
|
|
return `"${value}"`;
|
|
} else if (!value.includes("`") && !value.includes("${")) {
|
|
return `\`${value}\``;
|
|
}
|
|
}
|
|
return `'${value}'`;
|
|
case "number":
|
|
if (isNaN(value)) {
|
|
return "NaN";
|
|
} else if (Object.is(value, -0)) {
|
|
return String(value);
|
|
}
|
|
return value;
|
|
case "bigint":
|
|
return `${String(value)}n`;
|
|
case "boolean":
|
|
case "undefined":
|
|
return String(value);
|
|
case "object":
|
|
return "{}";
|
|
}
|
|
},
|
|
types: {
|
|
isAsyncFunction(fn) {
|
|
return fn instanceof AsyncFunction;
|
|
},
|
|
isArrayBufferView(arr) {
|
|
return ArrayBuffer.isView(arr);
|
|
}
|
|
},
|
|
isBlob
|
|
};
|
|
module.exports.promisify.custom = Symbol.for("nodejs.util.promisify.custom");
|
|
}
|
|
});
|
|
|
|
// node_modules/abort-controller/browser.js
|
|
var require_browser = __commonJS({
|
|
"node_modules/abort-controller/browser.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { AbortController, AbortSignal } = typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : (
|
|
/* otherwise */
|
|
void 0
|
|
);
|
|
module.exports = AbortController;
|
|
module.exports.AbortSignal = AbortSignal;
|
|
module.exports.default = AbortController;
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/ours/errors.js
|
|
var require_errors = __commonJS({
|
|
"node_modules/readable-stream/lib/ours/errors.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { format: format2, inspect, AggregateError: CustomAggregateError } = require_util();
|
|
var AggregateError = globalThis.AggregateError || CustomAggregateError;
|
|
var kIsNodeError = Symbol("kIsNodeError");
|
|
var kTypes = [
|
|
"string",
|
|
"function",
|
|
"number",
|
|
"object",
|
|
// Accept 'Function' and 'Object' as alternative to the lower cased version.
|
|
"Function",
|
|
"Object",
|
|
"boolean",
|
|
"bigint",
|
|
"symbol"
|
|
];
|
|
var classRegExp = /^([A-Z][a-z0-9]*)+$/;
|
|
var nodeInternalPrefix = "__node_internal_";
|
|
var codes = {};
|
|
function assert2(value, message) {
|
|
if (!value) {
|
|
throw new codes.ERR_INTERNAL_ASSERTION(message);
|
|
}
|
|
}
|
|
function addNumericalSeparator(val) {
|
|
let res = "";
|
|
let i6 = val.length;
|
|
const start = val[0] === "-" ? 1 : 0;
|
|
for (; i6 >= start + 4; i6 -= 3) {
|
|
res = `_${val.slice(i6 - 3, i6)}${res}`;
|
|
}
|
|
return `${val.slice(0, i6)}${res}`;
|
|
}
|
|
function getMessage(key, msg, args) {
|
|
if (typeof msg === "function") {
|
|
assert2(
|
|
msg.length <= args.length,
|
|
// Default options do not count.
|
|
`Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`
|
|
);
|
|
return msg(...args);
|
|
}
|
|
const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length;
|
|
assert2(
|
|
expectedLength === args.length,
|
|
`Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`
|
|
);
|
|
if (args.length === 0) {
|
|
return msg;
|
|
}
|
|
return format2(msg, ...args);
|
|
}
|
|
function E2(code, message, Base) {
|
|
if (!Base) {
|
|
Base = Error;
|
|
}
|
|
class NodeError extends Base {
|
|
constructor(...args) {
|
|
super(getMessage(code, message, args));
|
|
}
|
|
toString() {
|
|
return `${this.name} [${code}]: ${this.message}`;
|
|
}
|
|
}
|
|
Object.defineProperties(NodeError.prototype, {
|
|
name: {
|
|
value: Base.name,
|
|
writable: true,
|
|
enumerable: false,
|
|
configurable: true
|
|
},
|
|
toString: {
|
|
value() {
|
|
return `${this.name} [${code}]: ${this.message}`;
|
|
},
|
|
writable: true,
|
|
enumerable: false,
|
|
configurable: true
|
|
}
|
|
});
|
|
NodeError.prototype.code = code;
|
|
NodeError.prototype[kIsNodeError] = true;
|
|
codes[code] = NodeError;
|
|
}
|
|
function hideStackFrames(fn) {
|
|
const hidden = nodeInternalPrefix + fn.name;
|
|
Object.defineProperty(fn, "name", {
|
|
value: hidden
|
|
});
|
|
return fn;
|
|
}
|
|
function aggregateTwoErrors(innerError, outerError) {
|
|
if (innerError && outerError && innerError !== outerError) {
|
|
if (Array.isArray(outerError.errors)) {
|
|
outerError.errors.push(innerError);
|
|
return outerError;
|
|
}
|
|
const err = new AggregateError([outerError, innerError], outerError.message);
|
|
err.code = outerError.code;
|
|
return err;
|
|
}
|
|
return innerError || outerError;
|
|
}
|
|
var AbortError = class extends Error {
|
|
constructor(message = "The operation was aborted", options = void 0) {
|
|
if (options !== void 0 && typeof options !== "object") {
|
|
throw new codes.ERR_INVALID_ARG_TYPE("options", "Object", options);
|
|
}
|
|
super(message, options);
|
|
this.code = "ABORT_ERR";
|
|
this.name = "AbortError";
|
|
}
|
|
};
|
|
E2("ERR_ASSERTION", "%s", Error);
|
|
E2(
|
|
"ERR_INVALID_ARG_TYPE",
|
|
(name2, expected, actual) => {
|
|
assert2(typeof name2 === "string", "'name' must be a string");
|
|
if (!Array.isArray(expected)) {
|
|
expected = [expected];
|
|
}
|
|
let msg = "The ";
|
|
if (name2.endsWith(" argument")) {
|
|
msg += `${name2} `;
|
|
} else {
|
|
msg += `"${name2}" ${name2.includes(".") ? "property" : "argument"} `;
|
|
}
|
|
msg += "must be ";
|
|
const types = [];
|
|
const instances = [];
|
|
const other = [];
|
|
for (const value of expected) {
|
|
assert2(typeof value === "string", "All expected entries have to be of type string");
|
|
if (kTypes.includes(value)) {
|
|
types.push(value.toLowerCase());
|
|
} else if (classRegExp.test(value)) {
|
|
instances.push(value);
|
|
} else {
|
|
assert2(value !== "object", 'The value "object" should be written as "Object"');
|
|
other.push(value);
|
|
}
|
|
}
|
|
if (instances.length > 0) {
|
|
const pos = types.indexOf("object");
|
|
if (pos !== -1) {
|
|
types.splice(types, pos, 1);
|
|
instances.push("Object");
|
|
}
|
|
}
|
|
if (types.length > 0) {
|
|
switch (types.length) {
|
|
case 1:
|
|
msg += `of type ${types[0]}`;
|
|
break;
|
|
case 2:
|
|
msg += `one of type ${types[0]} or ${types[1]}`;
|
|
break;
|
|
default: {
|
|
const last = types.pop();
|
|
msg += `one of type ${types.join(", ")}, or ${last}`;
|
|
}
|
|
}
|
|
if (instances.length > 0 || other.length > 0) {
|
|
msg += " or ";
|
|
}
|
|
}
|
|
if (instances.length > 0) {
|
|
switch (instances.length) {
|
|
case 1:
|
|
msg += `an instance of ${instances[0]}`;
|
|
break;
|
|
case 2:
|
|
msg += `an instance of ${instances[0]} or ${instances[1]}`;
|
|
break;
|
|
default: {
|
|
const last = instances.pop();
|
|
msg += `an instance of ${instances.join(", ")}, or ${last}`;
|
|
}
|
|
}
|
|
if (other.length > 0) {
|
|
msg += " or ";
|
|
}
|
|
}
|
|
switch (other.length) {
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
if (other[0].toLowerCase() !== other[0]) {
|
|
msg += "an ";
|
|
}
|
|
msg += `${other[0]}`;
|
|
break;
|
|
case 2:
|
|
msg += `one of ${other[0]} or ${other[1]}`;
|
|
break;
|
|
default: {
|
|
const last = other.pop();
|
|
msg += `one of ${other.join(", ")}, or ${last}`;
|
|
}
|
|
}
|
|
if (actual == null) {
|
|
msg += `. Received ${actual}`;
|
|
} else if (typeof actual === "function" && actual.name) {
|
|
msg += `. Received function ${actual.name}`;
|
|
} else if (typeof actual === "object") {
|
|
var _actual$constructor;
|
|
if ((_actual$constructor = actual.constructor) !== null && _actual$constructor !== void 0 && _actual$constructor.name) {
|
|
msg += `. Received an instance of ${actual.constructor.name}`;
|
|
} else {
|
|
const inspected = inspect(actual, {
|
|
depth: -1
|
|
});
|
|
msg += `. Received ${inspected}`;
|
|
}
|
|
} else {
|
|
let inspected = inspect(actual, {
|
|
colors: false
|
|
});
|
|
if (inspected.length > 25) {
|
|
inspected = `${inspected.slice(0, 25)}...`;
|
|
}
|
|
msg += `. Received type ${typeof actual} (${inspected})`;
|
|
}
|
|
return msg;
|
|
},
|
|
TypeError
|
|
);
|
|
E2(
|
|
"ERR_INVALID_ARG_VALUE",
|
|
(name2, value, reason = "is invalid") => {
|
|
let inspected = inspect(value);
|
|
if (inspected.length > 128) {
|
|
inspected = inspected.slice(0, 128) + "...";
|
|
}
|
|
const type = name2.includes(".") ? "property" : "argument";
|
|
return `The ${type} '${name2}' ${reason}. Received ${inspected}`;
|
|
},
|
|
TypeError
|
|
);
|
|
E2(
|
|
"ERR_INVALID_RETURN_VALUE",
|
|
(input, name2, value) => {
|
|
var _value$constructor;
|
|
const type = value !== null && value !== void 0 && (_value$constructor = value.constructor) !== null && _value$constructor !== void 0 && _value$constructor.name ? `instance of ${value.constructor.name}` : `type ${typeof value}`;
|
|
return `Expected ${input} to be returned from the "${name2}" function but got ${type}.`;
|
|
},
|
|
TypeError
|
|
);
|
|
E2(
|
|
"ERR_MISSING_ARGS",
|
|
(...args) => {
|
|
assert2(args.length > 0, "At least one arg needs to be specified");
|
|
let msg;
|
|
const len = args.length;
|
|
args = (Array.isArray(args) ? args : [args]).map((a6) => `"${a6}"`).join(" or ");
|
|
switch (len) {
|
|
case 1:
|
|
msg += `The ${args[0]} argument`;
|
|
break;
|
|
case 2:
|
|
msg += `The ${args[0]} and ${args[1]} arguments`;
|
|
break;
|
|
default:
|
|
{
|
|
const last = args.pop();
|
|
msg += `The ${args.join(", ")}, and ${last} arguments`;
|
|
}
|
|
break;
|
|
}
|
|
return `${msg} must be specified`;
|
|
},
|
|
TypeError
|
|
);
|
|
E2(
|
|
"ERR_OUT_OF_RANGE",
|
|
(str, range, input) => {
|
|
assert2(range, 'Missing "range" argument');
|
|
let received;
|
|
if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {
|
|
received = addNumericalSeparator(String(input));
|
|
} else if (typeof input === "bigint") {
|
|
received = String(input);
|
|
if (input > 2n ** 32n || input < -(2n ** 32n)) {
|
|
received = addNumericalSeparator(received);
|
|
}
|
|
received += "n";
|
|
} else {
|
|
received = inspect(input);
|
|
}
|
|
return `The value of "${str}" is out of range. It must be ${range}. Received ${received}`;
|
|
},
|
|
RangeError
|
|
);
|
|
E2("ERR_MULTIPLE_CALLBACK", "Callback called multiple times", Error);
|
|
E2("ERR_METHOD_NOT_IMPLEMENTED", "The %s method is not implemented", Error);
|
|
E2("ERR_STREAM_ALREADY_FINISHED", "Cannot call %s after a stream was finished", Error);
|
|
E2("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable", Error);
|
|
E2("ERR_STREAM_DESTROYED", "Cannot call %s after a stream was destroyed", Error);
|
|
E2("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError);
|
|
E2("ERR_STREAM_PREMATURE_CLOSE", "Premature close", Error);
|
|
E2("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF", Error);
|
|
E2("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event", Error);
|
|
E2("ERR_STREAM_WRITE_AFTER_END", "write after end", Error);
|
|
E2("ERR_UNKNOWN_ENCODING", "Unknown encoding: %s", TypeError);
|
|
module.exports = {
|
|
AbortError,
|
|
aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),
|
|
hideStackFrames,
|
|
codes
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/validators.js
|
|
var require_validators = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/validators.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var {
|
|
ArrayIsArray,
|
|
ArrayPrototypeIncludes,
|
|
ArrayPrototypeJoin,
|
|
ArrayPrototypeMap,
|
|
NumberIsInteger,
|
|
NumberIsNaN,
|
|
NumberMAX_SAFE_INTEGER,
|
|
NumberMIN_SAFE_INTEGER,
|
|
NumberParseInt,
|
|
ObjectPrototypeHasOwnProperty,
|
|
RegExpPrototypeExec,
|
|
String: String2,
|
|
StringPrototypeToUpperCase,
|
|
StringPrototypeTrim
|
|
} = require_primordials();
|
|
var {
|
|
hideStackFrames,
|
|
codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }
|
|
} = require_errors();
|
|
var { normalizeEncoding } = require_util();
|
|
var { isAsyncFunction, isArrayBufferView } = require_util().types;
|
|
var signals = {};
|
|
function isInt32(value) {
|
|
return value === (value | 0);
|
|
}
|
|
function isUint32(value) {
|
|
return value === value >>> 0;
|
|
}
|
|
var octalReg = /^[0-7]+$/;
|
|
var modeDesc = "must be a 32-bit unsigned integer or an octal string";
|
|
function parseFileMode(value, name2, def) {
|
|
if (typeof value === "undefined") {
|
|
value = def;
|
|
}
|
|
if (typeof value === "string") {
|
|
if (RegExpPrototypeExec(octalReg, value) === null) {
|
|
throw new ERR_INVALID_ARG_VALUE(name2, value, modeDesc);
|
|
}
|
|
value = NumberParseInt(value, 8);
|
|
}
|
|
validateUint32(value, name2);
|
|
return value;
|
|
}
|
|
var validateInteger = hideStackFrames((value, name2, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {
|
|
if (typeof value !== "number")
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "number", value);
|
|
if (!NumberIsInteger(value))
|
|
throw new ERR_OUT_OF_RANGE(name2, "an integer", value);
|
|
if (value < min || value > max)
|
|
throw new ERR_OUT_OF_RANGE(name2, `>= ${min} && <= ${max}`, value);
|
|
});
|
|
var validateInt32 = hideStackFrames((value, name2, min = -2147483648, max = 2147483647) => {
|
|
if (typeof value !== "number") {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "number", value);
|
|
}
|
|
if (!NumberIsInteger(value)) {
|
|
throw new ERR_OUT_OF_RANGE(name2, "an integer", value);
|
|
}
|
|
if (value < min || value > max) {
|
|
throw new ERR_OUT_OF_RANGE(name2, `>= ${min} && <= ${max}`, value);
|
|
}
|
|
});
|
|
var validateUint32 = hideStackFrames((value, name2, positive = false) => {
|
|
if (typeof value !== "number") {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "number", value);
|
|
}
|
|
if (!NumberIsInteger(value)) {
|
|
throw new ERR_OUT_OF_RANGE(name2, "an integer", value);
|
|
}
|
|
const min = positive ? 1 : 0;
|
|
const max = 4294967295;
|
|
if (value < min || value > max) {
|
|
throw new ERR_OUT_OF_RANGE(name2, `>= ${min} && <= ${max}`, value);
|
|
}
|
|
});
|
|
function validateString(value, name2) {
|
|
if (typeof value !== "string")
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "string", value);
|
|
}
|
|
function validateNumber(value, name2, min = void 0, max) {
|
|
if (typeof value !== "number")
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "number", value);
|
|
if (min != null && value < min || max != null && value > max || (min != null || max != null) && NumberIsNaN(value)) {
|
|
throw new ERR_OUT_OF_RANGE(
|
|
name2,
|
|
`${min != null ? `>= ${min}` : ""}${min != null && max != null ? " && " : ""}${max != null ? `<= ${max}` : ""}`,
|
|
value
|
|
);
|
|
}
|
|
}
|
|
var validateOneOf = hideStackFrames((value, name2, oneOf) => {
|
|
if (!ArrayPrototypeIncludes(oneOf, value)) {
|
|
const allowed = ArrayPrototypeJoin(
|
|
ArrayPrototypeMap(oneOf, (v4) => typeof v4 === "string" ? `'${v4}'` : String2(v4)),
|
|
", "
|
|
);
|
|
const reason = "must be one of: " + allowed;
|
|
throw new ERR_INVALID_ARG_VALUE(name2, value, reason);
|
|
}
|
|
});
|
|
function validateBoolean(value, name2) {
|
|
if (typeof value !== "boolean")
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "boolean", value);
|
|
}
|
|
function getOwnPropertyValueOrDefault(options, key, defaultValue) {
|
|
return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key];
|
|
}
|
|
var validateObject = hideStackFrames((value, name2, options = null) => {
|
|
const allowArray = getOwnPropertyValueOrDefault(options, "allowArray", false);
|
|
const allowFunction = getOwnPropertyValueOrDefault(options, "allowFunction", false);
|
|
const nullable = getOwnPropertyValueOrDefault(options, "nullable", false);
|
|
if (!nullable && value === null || !allowArray && ArrayIsArray(value) || typeof value !== "object" && (!allowFunction || typeof value !== "function")) {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "Object", value);
|
|
}
|
|
});
|
|
var validateDictionary = hideStackFrames((value, name2) => {
|
|
if (value != null && typeof value !== "object" && typeof value !== "function") {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "a dictionary", value);
|
|
}
|
|
});
|
|
var validateArray = hideStackFrames((value, name2, minLength = 0) => {
|
|
if (!ArrayIsArray(value)) {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "Array", value);
|
|
}
|
|
if (value.length < minLength) {
|
|
const reason = `must be longer than ${minLength}`;
|
|
throw new ERR_INVALID_ARG_VALUE(name2, value, reason);
|
|
}
|
|
});
|
|
function validateStringArray(value, name2) {
|
|
validateArray(value, name2);
|
|
for (let i6 = 0; i6 < value.length; i6++) {
|
|
validateString(value[i6], `${name2}[${i6}]`);
|
|
}
|
|
}
|
|
function validateBooleanArray(value, name2) {
|
|
validateArray(value, name2);
|
|
for (let i6 = 0; i6 < value.length; i6++) {
|
|
validateBoolean(value[i6], `${name2}[${i6}]`);
|
|
}
|
|
}
|
|
function validateSignalName(signal, name2 = "signal") {
|
|
validateString(signal, name2);
|
|
if (signals[signal] === void 0) {
|
|
if (signals[StringPrototypeToUpperCase(signal)] !== void 0) {
|
|
throw new ERR_UNKNOWN_SIGNAL(signal + " (signals must use all capital letters)");
|
|
}
|
|
throw new ERR_UNKNOWN_SIGNAL(signal);
|
|
}
|
|
}
|
|
var validateBuffer = hideStackFrames((buffer, name2 = "buffer") => {
|
|
if (!isArrayBufferView(buffer)) {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, ["Buffer", "TypedArray", "DataView"], buffer);
|
|
}
|
|
});
|
|
function validateEncoding(data, encoding) {
|
|
const normalizedEncoding = normalizeEncoding(encoding);
|
|
const length = data.length;
|
|
if (normalizedEncoding === "hex" && length % 2 !== 0) {
|
|
throw new ERR_INVALID_ARG_VALUE("encoding", encoding, `is invalid for data of length ${length}`);
|
|
}
|
|
}
|
|
function validatePort(port, name2 = "Port", allowZero = true) {
|
|
if (typeof port !== "number" && typeof port !== "string" || typeof port === "string" && StringPrototypeTrim(port).length === 0 || +port !== +port >>> 0 || port > 65535 || port === 0 && !allowZero) {
|
|
throw new ERR_SOCKET_BAD_PORT(name2, port, allowZero);
|
|
}
|
|
return port | 0;
|
|
}
|
|
var validateAbortSignal = hideStackFrames((signal, name2) => {
|
|
if (signal !== void 0 && (signal === null || typeof signal !== "object" || !("aborted" in signal))) {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "AbortSignal", signal);
|
|
}
|
|
});
|
|
var validateFunction = hideStackFrames((value, name2) => {
|
|
if (typeof value !== "function")
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "Function", value);
|
|
});
|
|
var validatePlainFunction = hideStackFrames((value, name2) => {
|
|
if (typeof value !== "function" || isAsyncFunction(value))
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "Function", value);
|
|
});
|
|
var validateUndefined = hideStackFrames((value, name2) => {
|
|
if (value !== void 0)
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "undefined", value);
|
|
});
|
|
function validateUnion(value, name2, union) {
|
|
if (!ArrayPrototypeIncludes(union, value)) {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, `('${ArrayPrototypeJoin(union, "|")}')`, value);
|
|
}
|
|
}
|
|
var linkValueRegExp = /^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;
|
|
function validateLinkHeaderFormat(value, name2) {
|
|
if (typeof value === "undefined" || !RegExpPrototypeExec(linkValueRegExp, value)) {
|
|
throw new ERR_INVALID_ARG_VALUE(
|
|
name2,
|
|
value,
|
|
'must be an array or string of format "</styles.css>; rel=preload; as=style"'
|
|
);
|
|
}
|
|
}
|
|
function validateLinkHeaderValue(hints) {
|
|
if (typeof hints === "string") {
|
|
validateLinkHeaderFormat(hints, "hints");
|
|
return hints;
|
|
} else if (ArrayIsArray(hints)) {
|
|
const hintsLength = hints.length;
|
|
let result = "";
|
|
if (hintsLength === 0) {
|
|
return result;
|
|
}
|
|
for (let i6 = 0; i6 < hintsLength; i6++) {
|
|
const link = hints[i6];
|
|
validateLinkHeaderFormat(link, "hints");
|
|
result += link;
|
|
if (i6 !== hintsLength - 1) {
|
|
result += ", ";
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
throw new ERR_INVALID_ARG_VALUE(
|
|
"hints",
|
|
hints,
|
|
'must be an array or string of format "</styles.css>; rel=preload; as=style"'
|
|
);
|
|
}
|
|
module.exports = {
|
|
isInt32,
|
|
isUint32,
|
|
parseFileMode,
|
|
validateArray,
|
|
validateStringArray,
|
|
validateBooleanArray,
|
|
validateBoolean,
|
|
validateBuffer,
|
|
validateDictionary,
|
|
validateEncoding,
|
|
validateFunction,
|
|
validateInt32,
|
|
validateInteger,
|
|
validateNumber,
|
|
validateObject,
|
|
validateOneOf,
|
|
validatePlainFunction,
|
|
validatePort,
|
|
validateSignalName,
|
|
validateString,
|
|
validateUint32,
|
|
validateUndefined,
|
|
validateUnion,
|
|
validateAbortSignal,
|
|
validateLinkHeaderValue
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/process/browser.js
|
|
var require_browser2 = __commonJS({
|
|
"node_modules/process/browser.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = module.exports = {};
|
|
var cachedSetTimeout;
|
|
var cachedClearTimeout;
|
|
function defaultSetTimout() {
|
|
throw new Error("setTimeout has not been defined");
|
|
}
|
|
function defaultClearTimeout() {
|
|
throw new Error("clearTimeout has not been defined");
|
|
}
|
|
(function() {
|
|
try {
|
|
if (typeof setTimeout === "function") {
|
|
cachedSetTimeout = setTimeout;
|
|
} else {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
} catch (e7) {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
try {
|
|
if (typeof clearTimeout === "function") {
|
|
cachedClearTimeout = clearTimeout;
|
|
} else {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
} catch (e7) {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
})();
|
|
function runTimeout(fun) {
|
|
if (cachedSetTimeout === setTimeout) {
|
|
return setTimeout(fun, 0);
|
|
}
|
|
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
|
cachedSetTimeout = setTimeout;
|
|
return setTimeout(fun, 0);
|
|
}
|
|
try {
|
|
return cachedSetTimeout(fun, 0);
|
|
} catch (e7) {
|
|
try {
|
|
return cachedSetTimeout.call(null, fun, 0);
|
|
} catch (e8) {
|
|
return cachedSetTimeout.call(this, fun, 0);
|
|
}
|
|
}
|
|
}
|
|
function runClearTimeout(marker) {
|
|
if (cachedClearTimeout === clearTimeout) {
|
|
return clearTimeout(marker);
|
|
}
|
|
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
|
cachedClearTimeout = clearTimeout;
|
|
return clearTimeout(marker);
|
|
}
|
|
try {
|
|
return cachedClearTimeout(marker);
|
|
} catch (e7) {
|
|
try {
|
|
return cachedClearTimeout.call(null, marker);
|
|
} catch (e8) {
|
|
return cachedClearTimeout.call(this, marker);
|
|
}
|
|
}
|
|
}
|
|
var queue2 = [];
|
|
var draining2 = false;
|
|
var currentQueue2;
|
|
var queueIndex2 = -1;
|
|
function cleanUpNextTick2() {
|
|
if (!draining2 || !currentQueue2) {
|
|
return;
|
|
}
|
|
draining2 = false;
|
|
if (currentQueue2.length) {
|
|
queue2 = currentQueue2.concat(queue2);
|
|
} else {
|
|
queueIndex2 = -1;
|
|
}
|
|
if (queue2.length) {
|
|
drainQueue2();
|
|
}
|
|
}
|
|
function drainQueue2() {
|
|
if (draining2) {
|
|
return;
|
|
}
|
|
var timeout = runTimeout(cleanUpNextTick2);
|
|
draining2 = true;
|
|
var len = queue2.length;
|
|
while (len) {
|
|
currentQueue2 = queue2;
|
|
queue2 = [];
|
|
while (++queueIndex2 < len) {
|
|
if (currentQueue2) {
|
|
currentQueue2[queueIndex2].run();
|
|
}
|
|
}
|
|
queueIndex2 = -1;
|
|
len = queue2.length;
|
|
}
|
|
currentQueue2 = null;
|
|
draining2 = false;
|
|
runClearTimeout(timeout);
|
|
}
|
|
process3.nextTick = function(fun) {
|
|
var args = new Array(arguments.length - 1);
|
|
if (arguments.length > 1) {
|
|
for (var i6 = 1; i6 < arguments.length; i6++) {
|
|
args[i6 - 1] = arguments[i6];
|
|
}
|
|
}
|
|
queue2.push(new Item2(fun, args));
|
|
if (queue2.length === 1 && !draining2) {
|
|
runTimeout(drainQueue2);
|
|
}
|
|
};
|
|
function Item2(fun, array) {
|
|
this.fun = fun;
|
|
this.array = array;
|
|
}
|
|
Item2.prototype.run = function() {
|
|
this.fun.apply(null, this.array);
|
|
};
|
|
process3.title = "browser";
|
|
process3.browser = true;
|
|
process3.env = {};
|
|
process3.argv = [];
|
|
process3.version = "";
|
|
process3.versions = {};
|
|
function noop2() {
|
|
}
|
|
process3.on = noop2;
|
|
process3.addListener = noop2;
|
|
process3.once = noop2;
|
|
process3.off = noop2;
|
|
process3.removeListener = noop2;
|
|
process3.removeAllListeners = noop2;
|
|
process3.emit = noop2;
|
|
process3.prependListener = noop2;
|
|
process3.prependOnceListener = noop2;
|
|
process3.listeners = function(name2) {
|
|
return [];
|
|
};
|
|
process3.binding = function(name2) {
|
|
throw new Error("process.binding is not supported");
|
|
};
|
|
process3.cwd = function() {
|
|
return "/";
|
|
};
|
|
process3.chdir = function(dir) {
|
|
throw new Error("process.chdir is not supported");
|
|
};
|
|
process3.umask = function() {
|
|
return 0;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/utils.js
|
|
var require_utils = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/utils.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { Symbol: Symbol2, SymbolAsyncIterator, SymbolIterator, SymbolFor } = require_primordials();
|
|
var kDestroyed = Symbol2("kDestroyed");
|
|
var kIsErrored = Symbol2("kIsErrored");
|
|
var kIsReadable = Symbol2("kIsReadable");
|
|
var kIsDisturbed = Symbol2("kIsDisturbed");
|
|
var kIsClosedPromise = SymbolFor("nodejs.webstream.isClosedPromise");
|
|
var kControllerErrorFunction = SymbolFor("nodejs.webstream.controllerErrorFunction");
|
|
function isReadableNodeStream(obj, strict = false) {
|
|
var _obj$_readableState;
|
|
return !!(obj && typeof obj.pipe === "function" && typeof obj.on === "function" && (!strict || typeof obj.pause === "function" && typeof obj.resume === "function") && (!obj._writableState || ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === void 0 ? void 0 : _obj$_readableState.readable) !== false) && // Duplex
|
|
(!obj._writableState || obj._readableState));
|
|
}
|
|
function isWritableNodeStream(obj) {
|
|
var _obj$_writableState;
|
|
return !!(obj && typeof obj.write === "function" && typeof obj.on === "function" && (!obj._readableState || ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === void 0 ? void 0 : _obj$_writableState.writable) !== false));
|
|
}
|
|
function isDuplexNodeStream(obj) {
|
|
return !!(obj && typeof obj.pipe === "function" && obj._readableState && typeof obj.on === "function" && typeof obj.write === "function");
|
|
}
|
|
function isNodeStream(obj) {
|
|
return obj && (obj._readableState || obj._writableState || typeof obj.write === "function" && typeof obj.on === "function" || typeof obj.pipe === "function" && typeof obj.on === "function");
|
|
}
|
|
function isReadableStream(obj) {
|
|
return !!(obj && !isNodeStream(obj) && typeof obj.pipeThrough === "function" && typeof obj.getReader === "function" && typeof obj.cancel === "function");
|
|
}
|
|
function isWritableStream(obj) {
|
|
return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === "function" && typeof obj.abort === "function");
|
|
}
|
|
function isTransformStream(obj) {
|
|
return !!(obj && !isNodeStream(obj) && typeof obj.readable === "object" && typeof obj.writable === "object");
|
|
}
|
|
function isWebStream(obj) {
|
|
return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj);
|
|
}
|
|
function isIterable(obj, isAsync) {
|
|
if (obj == null)
|
|
return false;
|
|
if (isAsync === true)
|
|
return typeof obj[SymbolAsyncIterator] === "function";
|
|
if (isAsync === false)
|
|
return typeof obj[SymbolIterator] === "function";
|
|
return typeof obj[SymbolAsyncIterator] === "function" || typeof obj[SymbolIterator] === "function";
|
|
}
|
|
function isDestroyed(stream) {
|
|
if (!isNodeStream(stream))
|
|
return null;
|
|
const wState = stream._writableState;
|
|
const rState = stream._readableState;
|
|
const state = wState || rState;
|
|
return !!(stream.destroyed || stream[kDestroyed] || state !== null && state !== void 0 && state.destroyed);
|
|
}
|
|
function isWritableEnded(stream) {
|
|
if (!isWritableNodeStream(stream))
|
|
return null;
|
|
if (stream.writableEnded === true)
|
|
return true;
|
|
const wState = stream._writableState;
|
|
if (wState !== null && wState !== void 0 && wState.errored)
|
|
return false;
|
|
if (typeof (wState === null || wState === void 0 ? void 0 : wState.ended) !== "boolean")
|
|
return null;
|
|
return wState.ended;
|
|
}
|
|
function isWritableFinished(stream, strict) {
|
|
if (!isWritableNodeStream(stream))
|
|
return null;
|
|
if (stream.writableFinished === true)
|
|
return true;
|
|
const wState = stream._writableState;
|
|
if (wState !== null && wState !== void 0 && wState.errored)
|
|
return false;
|
|
if (typeof (wState === null || wState === void 0 ? void 0 : wState.finished) !== "boolean")
|
|
return null;
|
|
return !!(wState.finished || strict === false && wState.ended === true && wState.length === 0);
|
|
}
|
|
function isReadableEnded(stream) {
|
|
if (!isReadableNodeStream(stream))
|
|
return null;
|
|
if (stream.readableEnded === true)
|
|
return true;
|
|
const rState = stream._readableState;
|
|
if (!rState || rState.errored)
|
|
return false;
|
|
if (typeof (rState === null || rState === void 0 ? void 0 : rState.ended) !== "boolean")
|
|
return null;
|
|
return rState.ended;
|
|
}
|
|
function isReadableFinished(stream, strict) {
|
|
if (!isReadableNodeStream(stream))
|
|
return null;
|
|
const rState = stream._readableState;
|
|
if (rState !== null && rState !== void 0 && rState.errored)
|
|
return false;
|
|
if (typeof (rState === null || rState === void 0 ? void 0 : rState.endEmitted) !== "boolean")
|
|
return null;
|
|
return !!(rState.endEmitted || strict === false && rState.ended === true && rState.length === 0);
|
|
}
|
|
function isReadable(stream) {
|
|
if (stream && stream[kIsReadable] != null)
|
|
return stream[kIsReadable];
|
|
if (typeof (stream === null || stream === void 0 ? void 0 : stream.readable) !== "boolean")
|
|
return null;
|
|
if (isDestroyed(stream))
|
|
return false;
|
|
return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream);
|
|
}
|
|
function isWritable(stream) {
|
|
if (typeof (stream === null || stream === void 0 ? void 0 : stream.writable) !== "boolean")
|
|
return null;
|
|
if (isDestroyed(stream))
|
|
return false;
|
|
return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream);
|
|
}
|
|
function isFinished(stream, opts) {
|
|
if (!isNodeStream(stream)) {
|
|
return null;
|
|
}
|
|
if (isDestroyed(stream)) {
|
|
return true;
|
|
}
|
|
if ((opts === null || opts === void 0 ? void 0 : opts.readable) !== false && isReadable(stream)) {
|
|
return false;
|
|
}
|
|
if ((opts === null || opts === void 0 ? void 0 : opts.writable) !== false && isWritable(stream)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
function isWritableErrored(stream) {
|
|
var _stream$_writableStat, _stream$_writableStat2;
|
|
if (!isNodeStream(stream)) {
|
|
return null;
|
|
}
|
|
if (stream.writableErrored) {
|
|
return stream.writableErrored;
|
|
}
|
|
return (_stream$_writableStat = (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === void 0 ? void 0 : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== void 0 ? _stream$_writableStat : null;
|
|
}
|
|
function isReadableErrored(stream) {
|
|
var _stream$_readableStat, _stream$_readableStat2;
|
|
if (!isNodeStream(stream)) {
|
|
return null;
|
|
}
|
|
if (stream.readableErrored) {
|
|
return stream.readableErrored;
|
|
}
|
|
return (_stream$_readableStat = (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === void 0 ? void 0 : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== void 0 ? _stream$_readableStat : null;
|
|
}
|
|
function isClosed(stream) {
|
|
if (!isNodeStream(stream)) {
|
|
return null;
|
|
}
|
|
if (typeof stream.closed === "boolean") {
|
|
return stream.closed;
|
|
}
|
|
const wState = stream._writableState;
|
|
const rState = stream._readableState;
|
|
if (typeof (wState === null || wState === void 0 ? void 0 : wState.closed) === "boolean" || typeof (rState === null || rState === void 0 ? void 0 : rState.closed) === "boolean") {
|
|
return (wState === null || wState === void 0 ? void 0 : wState.closed) || (rState === null || rState === void 0 ? void 0 : rState.closed);
|
|
}
|
|
if (typeof stream._closed === "boolean" && isOutgoingMessage(stream)) {
|
|
return stream._closed;
|
|
}
|
|
return null;
|
|
}
|
|
function isOutgoingMessage(stream) {
|
|
return typeof stream._closed === "boolean" && typeof stream._defaultKeepAlive === "boolean" && typeof stream._removedConnection === "boolean" && typeof stream._removedContLen === "boolean";
|
|
}
|
|
function isServerResponse(stream) {
|
|
return typeof stream._sent100 === "boolean" && isOutgoingMessage(stream);
|
|
}
|
|
function isServerRequest(stream) {
|
|
var _stream$req;
|
|
return typeof stream._consuming === "boolean" && typeof stream._dumped === "boolean" && ((_stream$req = stream.req) === null || _stream$req === void 0 ? void 0 : _stream$req.upgradeOrConnect) === void 0;
|
|
}
|
|
function willEmitClose(stream) {
|
|
if (!isNodeStream(stream))
|
|
return null;
|
|
const wState = stream._writableState;
|
|
const rState = stream._readableState;
|
|
const state = wState || rState;
|
|
return !state && isServerResponse(stream) || !!(state && state.autoDestroy && state.emitClose && state.closed === false);
|
|
}
|
|
function isDisturbed(stream) {
|
|
var _stream$kIsDisturbed;
|
|
return !!(stream && ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== void 0 ? _stream$kIsDisturbed : stream.readableDidRead || stream.readableAborted));
|
|
}
|
|
function isErrored(stream) {
|
|
var _ref, _ref2, _ref3, _ref4, _ref5, _stream$kIsErrored, _stream$_readableStat3, _stream$_writableStat3, _stream$_readableStat4, _stream$_writableStat4;
|
|
return !!(stream && ((_ref = (_ref2 = (_ref3 = (_ref4 = (_ref5 = (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== void 0 ? _stream$kIsErrored : stream.readableErrored) !== null && _ref5 !== void 0 ? _ref5 : stream.writableErrored) !== null && _ref4 !== void 0 ? _ref4 : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === void 0 ? void 0 : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== void 0 ? _ref3 : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === void 0 ? void 0 : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== void 0 ? _ref2 : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === void 0 ? void 0 : _stream$_readableStat4.errored) !== null && _ref !== void 0 ? _ref : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === void 0 ? void 0 : _stream$_writableStat4.errored));
|
|
}
|
|
module.exports = {
|
|
kDestroyed,
|
|
isDisturbed,
|
|
kIsDisturbed,
|
|
isErrored,
|
|
kIsErrored,
|
|
isReadable,
|
|
kIsReadable,
|
|
kIsClosedPromise,
|
|
kControllerErrorFunction,
|
|
isClosed,
|
|
isDestroyed,
|
|
isDuplexNodeStream,
|
|
isFinished,
|
|
isIterable,
|
|
isReadableNodeStream,
|
|
isReadableStream,
|
|
isReadableEnded,
|
|
isReadableFinished,
|
|
isReadableErrored,
|
|
isNodeStream,
|
|
isWebStream,
|
|
isWritable,
|
|
isWritableNodeStream,
|
|
isWritableStream,
|
|
isWritableEnded,
|
|
isWritableFinished,
|
|
isWritableErrored,
|
|
isServerRequest,
|
|
isServerResponse,
|
|
willEmitClose,
|
|
isTransformStream
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/end-of-stream.js
|
|
var require_end_of_stream = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var { AbortError, codes } = require_errors();
|
|
var { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes;
|
|
var { kEmptyObject, once: once3 } = require_util();
|
|
var { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require_validators();
|
|
var { Promise: Promise2, PromisePrototypeThen } = require_primordials();
|
|
var {
|
|
isClosed,
|
|
isReadable,
|
|
isReadableNodeStream,
|
|
isReadableStream,
|
|
isReadableFinished,
|
|
isReadableErrored,
|
|
isWritable,
|
|
isWritableNodeStream,
|
|
isWritableStream,
|
|
isWritableFinished,
|
|
isWritableErrored,
|
|
isNodeStream,
|
|
willEmitClose: _willEmitClose,
|
|
kIsClosedPromise
|
|
} = require_utils();
|
|
function isRequest(stream) {
|
|
return stream.setHeader && typeof stream.abort === "function";
|
|
}
|
|
var nop = () => {
|
|
};
|
|
function eos(stream, options, callback) {
|
|
var _options$readable, _options$writable;
|
|
if (arguments.length === 2) {
|
|
callback = options;
|
|
options = kEmptyObject;
|
|
} else if (options == null) {
|
|
options = kEmptyObject;
|
|
} else {
|
|
validateObject(options, "options");
|
|
}
|
|
validateFunction(callback, "callback");
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
callback = once3(callback);
|
|
if (isReadableStream(stream) || isWritableStream(stream)) {
|
|
return eosWeb(stream, options, callback);
|
|
}
|
|
if (!isNodeStream(stream)) {
|
|
throw new ERR_INVALID_ARG_TYPE("stream", ["ReadableStream", "WritableStream", "Stream"], stream);
|
|
}
|
|
const readable = (_options$readable = options.readable) !== null && _options$readable !== void 0 ? _options$readable : isReadableNodeStream(stream);
|
|
const writable = (_options$writable = options.writable) !== null && _options$writable !== void 0 ? _options$writable : isWritableNodeStream(stream);
|
|
const wState = stream._writableState;
|
|
const rState = stream._readableState;
|
|
const onlegacyfinish = () => {
|
|
if (!stream.writable) {
|
|
onfinish();
|
|
}
|
|
};
|
|
let willEmitClose = _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable;
|
|
let writableFinished = isWritableFinished(stream, false);
|
|
const onfinish = () => {
|
|
writableFinished = true;
|
|
if (stream.destroyed) {
|
|
willEmitClose = false;
|
|
}
|
|
if (willEmitClose && (!stream.readable || readable)) {
|
|
return;
|
|
}
|
|
if (!readable || readableFinished) {
|
|
callback.call(stream);
|
|
}
|
|
};
|
|
let readableFinished = isReadableFinished(stream, false);
|
|
const onend = () => {
|
|
readableFinished = true;
|
|
if (stream.destroyed) {
|
|
willEmitClose = false;
|
|
}
|
|
if (willEmitClose && (!stream.writable || writable)) {
|
|
return;
|
|
}
|
|
if (!writable || writableFinished) {
|
|
callback.call(stream);
|
|
}
|
|
};
|
|
const onerror = (err) => {
|
|
callback.call(stream, err);
|
|
};
|
|
let closed = isClosed(stream);
|
|
const onclose = () => {
|
|
closed = true;
|
|
const errored = isWritableErrored(stream) || isReadableErrored(stream);
|
|
if (errored && typeof errored !== "boolean") {
|
|
return callback.call(stream, errored);
|
|
}
|
|
if (readable && !readableFinished && isReadableNodeStream(stream, true)) {
|
|
if (!isReadableFinished(stream, false))
|
|
return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE());
|
|
}
|
|
if (writable && !writableFinished) {
|
|
if (!isWritableFinished(stream, false))
|
|
return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE());
|
|
}
|
|
callback.call(stream);
|
|
};
|
|
const onclosed = () => {
|
|
closed = true;
|
|
const errored = isWritableErrored(stream) || isReadableErrored(stream);
|
|
if (errored && typeof errored !== "boolean") {
|
|
return callback.call(stream, errored);
|
|
}
|
|
callback.call(stream);
|
|
};
|
|
const onrequest = () => {
|
|
stream.req.on("finish", onfinish);
|
|
};
|
|
if (isRequest(stream)) {
|
|
stream.on("complete", onfinish);
|
|
if (!willEmitClose) {
|
|
stream.on("abort", onclose);
|
|
}
|
|
if (stream.req) {
|
|
onrequest();
|
|
} else {
|
|
stream.on("request", onrequest);
|
|
}
|
|
} else if (writable && !wState) {
|
|
stream.on("end", onlegacyfinish);
|
|
stream.on("close", onlegacyfinish);
|
|
}
|
|
if (!willEmitClose && typeof stream.aborted === "boolean") {
|
|
stream.on("aborted", onclose);
|
|
}
|
|
stream.on("end", onend);
|
|
stream.on("finish", onfinish);
|
|
if (options.error !== false) {
|
|
stream.on("error", onerror);
|
|
}
|
|
stream.on("close", onclose);
|
|
if (closed) {
|
|
process3.nextTick(onclose);
|
|
} else if (wState !== null && wState !== void 0 && wState.errorEmitted || rState !== null && rState !== void 0 && rState.errorEmitted) {
|
|
if (!willEmitClose) {
|
|
process3.nextTick(onclosed);
|
|
}
|
|
} else if (!readable && (!willEmitClose || isReadable(stream)) && (writableFinished || isWritable(stream) === false)) {
|
|
process3.nextTick(onclosed);
|
|
} else if (!writable && (!willEmitClose || isWritable(stream)) && (readableFinished || isReadable(stream) === false)) {
|
|
process3.nextTick(onclosed);
|
|
} else if (rState && stream.req && stream.aborted) {
|
|
process3.nextTick(onclosed);
|
|
}
|
|
const cleanup = () => {
|
|
callback = nop;
|
|
stream.removeListener("aborted", onclose);
|
|
stream.removeListener("complete", onfinish);
|
|
stream.removeListener("abort", onclose);
|
|
stream.removeListener("request", onrequest);
|
|
if (stream.req)
|
|
stream.req.removeListener("finish", onfinish);
|
|
stream.removeListener("end", onlegacyfinish);
|
|
stream.removeListener("close", onlegacyfinish);
|
|
stream.removeListener("finish", onfinish);
|
|
stream.removeListener("end", onend);
|
|
stream.removeListener("error", onerror);
|
|
stream.removeListener("close", onclose);
|
|
};
|
|
if (options.signal && !closed) {
|
|
const abort2 = () => {
|
|
const endCallback = callback;
|
|
cleanup();
|
|
endCallback.call(
|
|
stream,
|
|
new AbortError(void 0, {
|
|
cause: options.signal.reason
|
|
})
|
|
);
|
|
};
|
|
if (options.signal.aborted) {
|
|
process3.nextTick(abort2);
|
|
} else {
|
|
const originalCallback = callback;
|
|
callback = once3((...args) => {
|
|
options.signal.removeEventListener("abort", abort2);
|
|
originalCallback.apply(stream, args);
|
|
});
|
|
options.signal.addEventListener("abort", abort2);
|
|
}
|
|
}
|
|
return cleanup;
|
|
}
|
|
function eosWeb(stream, options, callback) {
|
|
let isAborted = false;
|
|
let abort2 = nop;
|
|
if (options.signal) {
|
|
abort2 = () => {
|
|
isAborted = true;
|
|
callback.call(
|
|
stream,
|
|
new AbortError(void 0, {
|
|
cause: options.signal.reason
|
|
})
|
|
);
|
|
};
|
|
if (options.signal.aborted) {
|
|
process3.nextTick(abort2);
|
|
} else {
|
|
const originalCallback = callback;
|
|
callback = once3((...args) => {
|
|
options.signal.removeEventListener("abort", abort2);
|
|
originalCallback.apply(stream, args);
|
|
});
|
|
options.signal.addEventListener("abort", abort2);
|
|
}
|
|
}
|
|
const resolverFn = (...args) => {
|
|
if (!isAborted) {
|
|
process3.nextTick(() => callback.apply(stream, args));
|
|
}
|
|
};
|
|
PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn);
|
|
return nop;
|
|
}
|
|
function finished(stream, opts) {
|
|
var _opts;
|
|
let autoCleanup = false;
|
|
if (opts === null) {
|
|
opts = kEmptyObject;
|
|
}
|
|
if ((_opts = opts) !== null && _opts !== void 0 && _opts.cleanup) {
|
|
validateBoolean(opts.cleanup, "cleanup");
|
|
autoCleanup = opts.cleanup;
|
|
}
|
|
return new Promise2((resolve2, reject) => {
|
|
const cleanup = eos(stream, opts, (err) => {
|
|
if (autoCleanup) {
|
|
cleanup();
|
|
}
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve2();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
module.exports = eos;
|
|
module.exports.finished = finished;
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/destroy.js
|
|
var require_destroy = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/destroy.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var {
|
|
aggregateTwoErrors,
|
|
codes: { ERR_MULTIPLE_CALLBACK },
|
|
AbortError
|
|
} = require_errors();
|
|
var { Symbol: Symbol2 } = require_primordials();
|
|
var { kDestroyed, isDestroyed, isFinished, isServerRequest } = require_utils();
|
|
var kDestroy = Symbol2("kDestroy");
|
|
var kConstruct = Symbol2("kConstruct");
|
|
function checkError(err, w2, r7) {
|
|
if (err) {
|
|
err.stack;
|
|
if (w2 && !w2.errored) {
|
|
w2.errored = err;
|
|
}
|
|
if (r7 && !r7.errored) {
|
|
r7.errored = err;
|
|
}
|
|
}
|
|
}
|
|
function destroy(err, cb) {
|
|
const r7 = this._readableState;
|
|
const w2 = this._writableState;
|
|
const s5 = w2 || r7;
|
|
if (w2 !== null && w2 !== void 0 && w2.destroyed || r7 !== null && r7 !== void 0 && r7.destroyed) {
|
|
if (typeof cb === "function") {
|
|
cb();
|
|
}
|
|
return this;
|
|
}
|
|
checkError(err, w2, r7);
|
|
if (w2) {
|
|
w2.destroyed = true;
|
|
}
|
|
if (r7) {
|
|
r7.destroyed = true;
|
|
}
|
|
if (!s5.constructed) {
|
|
this.once(kDestroy, function(er) {
|
|
_destroy(this, aggregateTwoErrors(er, err), cb);
|
|
});
|
|
} else {
|
|
_destroy(this, err, cb);
|
|
}
|
|
return this;
|
|
}
|
|
function _destroy(self2, err, cb) {
|
|
let called = false;
|
|
function onDestroy(err2) {
|
|
if (called) {
|
|
return;
|
|
}
|
|
called = true;
|
|
const r7 = self2._readableState;
|
|
const w2 = self2._writableState;
|
|
checkError(err2, w2, r7);
|
|
if (w2) {
|
|
w2.closed = true;
|
|
}
|
|
if (r7) {
|
|
r7.closed = true;
|
|
}
|
|
if (typeof cb === "function") {
|
|
cb(err2);
|
|
}
|
|
if (err2) {
|
|
process3.nextTick(emitErrorCloseNT, self2, err2);
|
|
} else {
|
|
process3.nextTick(emitCloseNT, self2);
|
|
}
|
|
}
|
|
try {
|
|
self2._destroy(err || null, onDestroy);
|
|
} catch (err2) {
|
|
onDestroy(err2);
|
|
}
|
|
}
|
|
function emitErrorCloseNT(self2, err) {
|
|
emitErrorNT(self2, err);
|
|
emitCloseNT(self2);
|
|
}
|
|
function emitCloseNT(self2) {
|
|
const r7 = self2._readableState;
|
|
const w2 = self2._writableState;
|
|
if (w2) {
|
|
w2.closeEmitted = true;
|
|
}
|
|
if (r7) {
|
|
r7.closeEmitted = true;
|
|
}
|
|
if (w2 !== null && w2 !== void 0 && w2.emitClose || r7 !== null && r7 !== void 0 && r7.emitClose) {
|
|
self2.emit("close");
|
|
}
|
|
}
|
|
function emitErrorNT(self2, err) {
|
|
const r7 = self2._readableState;
|
|
const w2 = self2._writableState;
|
|
if (w2 !== null && w2 !== void 0 && w2.errorEmitted || r7 !== null && r7 !== void 0 && r7.errorEmitted) {
|
|
return;
|
|
}
|
|
if (w2) {
|
|
w2.errorEmitted = true;
|
|
}
|
|
if (r7) {
|
|
r7.errorEmitted = true;
|
|
}
|
|
self2.emit("error", err);
|
|
}
|
|
function undestroy() {
|
|
const r7 = this._readableState;
|
|
const w2 = this._writableState;
|
|
if (r7) {
|
|
r7.constructed = true;
|
|
r7.closed = false;
|
|
r7.closeEmitted = false;
|
|
r7.destroyed = false;
|
|
r7.errored = null;
|
|
r7.errorEmitted = false;
|
|
r7.reading = false;
|
|
r7.ended = r7.readable === false;
|
|
r7.endEmitted = r7.readable === false;
|
|
}
|
|
if (w2) {
|
|
w2.constructed = true;
|
|
w2.destroyed = false;
|
|
w2.closed = false;
|
|
w2.closeEmitted = false;
|
|
w2.errored = null;
|
|
w2.errorEmitted = false;
|
|
w2.finalCalled = false;
|
|
w2.prefinished = false;
|
|
w2.ended = w2.writable === false;
|
|
w2.ending = w2.writable === false;
|
|
w2.finished = w2.writable === false;
|
|
}
|
|
}
|
|
function errorOrDestroy(stream, err, sync) {
|
|
const r7 = stream._readableState;
|
|
const w2 = stream._writableState;
|
|
if (w2 !== null && w2 !== void 0 && w2.destroyed || r7 !== null && r7 !== void 0 && r7.destroyed) {
|
|
return this;
|
|
}
|
|
if (r7 !== null && r7 !== void 0 && r7.autoDestroy || w2 !== null && w2 !== void 0 && w2.autoDestroy)
|
|
stream.destroy(err);
|
|
else if (err) {
|
|
err.stack;
|
|
if (w2 && !w2.errored) {
|
|
w2.errored = err;
|
|
}
|
|
if (r7 && !r7.errored) {
|
|
r7.errored = err;
|
|
}
|
|
if (sync) {
|
|
process3.nextTick(emitErrorNT, stream, err);
|
|
} else {
|
|
emitErrorNT(stream, err);
|
|
}
|
|
}
|
|
}
|
|
function construct(stream, cb) {
|
|
if (typeof stream._construct !== "function") {
|
|
return;
|
|
}
|
|
const r7 = stream._readableState;
|
|
const w2 = stream._writableState;
|
|
if (r7) {
|
|
r7.constructed = false;
|
|
}
|
|
if (w2) {
|
|
w2.constructed = false;
|
|
}
|
|
stream.once(kConstruct, cb);
|
|
if (stream.listenerCount(kConstruct) > 1) {
|
|
return;
|
|
}
|
|
process3.nextTick(constructNT, stream);
|
|
}
|
|
function constructNT(stream) {
|
|
let called = false;
|
|
function onConstruct(err) {
|
|
if (called) {
|
|
errorOrDestroy(stream, err !== null && err !== void 0 ? err : new ERR_MULTIPLE_CALLBACK());
|
|
return;
|
|
}
|
|
called = true;
|
|
const r7 = stream._readableState;
|
|
const w2 = stream._writableState;
|
|
const s5 = w2 || r7;
|
|
if (r7) {
|
|
r7.constructed = true;
|
|
}
|
|
if (w2) {
|
|
w2.constructed = true;
|
|
}
|
|
if (s5.destroyed) {
|
|
stream.emit(kDestroy, err);
|
|
} else if (err) {
|
|
errorOrDestroy(stream, err, true);
|
|
} else {
|
|
process3.nextTick(emitConstructNT, stream);
|
|
}
|
|
}
|
|
try {
|
|
stream._construct((err) => {
|
|
process3.nextTick(onConstruct, err);
|
|
});
|
|
} catch (err) {
|
|
process3.nextTick(onConstruct, err);
|
|
}
|
|
}
|
|
function emitConstructNT(stream) {
|
|
stream.emit(kConstruct);
|
|
}
|
|
function isRequest(stream) {
|
|
return (stream === null || stream === void 0 ? void 0 : stream.setHeader) && typeof stream.abort === "function";
|
|
}
|
|
function emitCloseLegacy(stream) {
|
|
stream.emit("close");
|
|
}
|
|
function emitErrorCloseLegacy(stream, err) {
|
|
stream.emit("error", err);
|
|
process3.nextTick(emitCloseLegacy, stream);
|
|
}
|
|
function destroyer(stream, err) {
|
|
if (!stream || isDestroyed(stream)) {
|
|
return;
|
|
}
|
|
if (!err && !isFinished(stream)) {
|
|
err = new AbortError();
|
|
}
|
|
if (isServerRequest(stream)) {
|
|
stream.socket = null;
|
|
stream.destroy(err);
|
|
} else if (isRequest(stream)) {
|
|
stream.abort();
|
|
} else if (isRequest(stream.req)) {
|
|
stream.req.abort();
|
|
} else if (typeof stream.destroy === "function") {
|
|
stream.destroy(err);
|
|
} else if (typeof stream.close === "function") {
|
|
stream.close();
|
|
} else if (err) {
|
|
process3.nextTick(emitErrorCloseLegacy, stream, err);
|
|
} else {
|
|
process3.nextTick(emitCloseLegacy, stream);
|
|
}
|
|
if (!stream.destroyed) {
|
|
stream[kDestroyed] = true;
|
|
}
|
|
}
|
|
module.exports = {
|
|
construct,
|
|
destroyer,
|
|
destroy,
|
|
undestroy,
|
|
errorOrDestroy
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-4bd36a8f.js
|
|
function o() {
|
|
o.init.call(this);
|
|
}
|
|
function u(e7) {
|
|
if ("function" != typeof e7)
|
|
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e7);
|
|
}
|
|
function f(e7) {
|
|
return void 0 === e7._maxListeners ? o.defaultMaxListeners : e7._maxListeners;
|
|
}
|
|
function v(e7, t6, n7, r7) {
|
|
var i6, o7, s5, v4;
|
|
if (u(n7), void 0 === (o7 = e7._events) ? (o7 = e7._events = /* @__PURE__ */ Object.create(null), e7._eventsCount = 0) : (void 0 !== o7.newListener && (e7.emit("newListener", t6, n7.listener ? n7.listener : n7), o7 = e7._events), s5 = o7[t6]), void 0 === s5)
|
|
s5 = o7[t6] = n7, ++e7._eventsCount;
|
|
else if ("function" == typeof s5 ? s5 = o7[t6] = r7 ? [n7, s5] : [s5, n7] : r7 ? s5.unshift(n7) : s5.push(n7), (i6 = f(e7)) > 0 && s5.length > i6 && !s5.warned) {
|
|
s5.warned = true;
|
|
var a6 = new Error("Possible EventEmitter memory leak detected. " + s5.length + " " + String(t6) + " listeners added. Use emitter.setMaxListeners() to increase limit");
|
|
a6.name = "MaxListenersExceededWarning", a6.emitter = e7, a6.type = t6, a6.count = s5.length, v4 = a6, console && console.warn && console.warn(v4);
|
|
}
|
|
return e7;
|
|
}
|
|
function a() {
|
|
if (!this.fired)
|
|
return this.target.removeListener(this.type, this.wrapFn), this.fired = true, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
|
|
}
|
|
function l(e7, t6, n7) {
|
|
var r7 = { fired: false, wrapFn: void 0, target: e7, type: t6, listener: n7 }, i6 = a.bind(r7);
|
|
return i6.listener = n7, r7.wrapFn = i6, i6;
|
|
}
|
|
function h(e7, t6, n7) {
|
|
var r7 = e7._events;
|
|
if (void 0 === r7)
|
|
return [];
|
|
var i6 = r7[t6];
|
|
return void 0 === i6 ? [] : "function" == typeof i6 ? n7 ? [i6.listener || i6] : [i6] : n7 ? function(e8) {
|
|
for (var t7 = new Array(e8.length), n8 = 0; n8 < t7.length; ++n8)
|
|
t7[n8] = e8[n8].listener || e8[n8];
|
|
return t7;
|
|
}(i6) : c(i6, i6.length);
|
|
}
|
|
function p(e7) {
|
|
var t6 = this._events;
|
|
if (void 0 !== t6) {
|
|
var n7 = t6[e7];
|
|
if ("function" == typeof n7)
|
|
return 1;
|
|
if (void 0 !== n7)
|
|
return n7.length;
|
|
}
|
|
return 0;
|
|
}
|
|
function c(e7, t6) {
|
|
for (var n7 = new Array(t6), r7 = 0; r7 < t6; ++r7)
|
|
n7[r7] = e7[r7];
|
|
return n7;
|
|
}
|
|
var e, t, n, r, i, s, y;
|
|
var init_chunk_4bd36a8f = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-4bd36a8f.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
n = "object" == typeof Reflect ? Reflect : null;
|
|
r = n && "function" == typeof n.apply ? n.apply : function(e7, t6, n7) {
|
|
return Function.prototype.apply.call(e7, t6, n7);
|
|
};
|
|
t = n && "function" == typeof n.ownKeys ? n.ownKeys : Object.getOwnPropertySymbols ? function(e7) {
|
|
return Object.getOwnPropertyNames(e7).concat(Object.getOwnPropertySymbols(e7));
|
|
} : function(e7) {
|
|
return Object.getOwnPropertyNames(e7);
|
|
};
|
|
i = Number.isNaN || function(e7) {
|
|
return e7 != e7;
|
|
};
|
|
e = o, o.EventEmitter = o, o.prototype._events = void 0, o.prototype._eventsCount = 0, o.prototype._maxListeners = void 0;
|
|
s = 10;
|
|
Object.defineProperty(o, "defaultMaxListeners", { enumerable: true, get: function() {
|
|
return s;
|
|
}, set: function(e7) {
|
|
if ("number" != typeof e7 || e7 < 0 || i(e7))
|
|
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e7 + ".");
|
|
s = e7;
|
|
} }), o.init = function() {
|
|
void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
|
|
}, o.prototype.setMaxListeners = function(e7) {
|
|
if ("number" != typeof e7 || e7 < 0 || i(e7))
|
|
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e7 + ".");
|
|
return this._maxListeners = e7, this;
|
|
}, o.prototype.getMaxListeners = function() {
|
|
return f(this);
|
|
}, o.prototype.emit = function(e7) {
|
|
for (var t6 = [], n7 = 1; n7 < arguments.length; n7++)
|
|
t6.push(arguments[n7]);
|
|
var i6 = "error" === e7, o7 = this._events;
|
|
if (void 0 !== o7)
|
|
i6 = i6 && void 0 === o7.error;
|
|
else if (!i6)
|
|
return false;
|
|
if (i6) {
|
|
var s5;
|
|
if (t6.length > 0 && (s5 = t6[0]), s5 instanceof Error)
|
|
throw s5;
|
|
var u6 = new Error("Unhandled error." + (s5 ? " (" + s5.message + ")" : ""));
|
|
throw u6.context = s5, u6;
|
|
}
|
|
var f6 = o7[e7];
|
|
if (void 0 === f6)
|
|
return false;
|
|
if ("function" == typeof f6)
|
|
r(f6, this, t6);
|
|
else {
|
|
var v4 = f6.length, a6 = c(f6, v4);
|
|
for (n7 = 0; n7 < v4; ++n7)
|
|
r(a6[n7], this, t6);
|
|
}
|
|
return true;
|
|
}, o.prototype.addListener = function(e7, t6) {
|
|
return v(this, e7, t6, false);
|
|
}, o.prototype.on = o.prototype.addListener, o.prototype.prependListener = function(e7, t6) {
|
|
return v(this, e7, t6, true);
|
|
}, o.prototype.once = function(e7, t6) {
|
|
return u(t6), this.on(e7, l(this, e7, t6)), this;
|
|
}, o.prototype.prependOnceListener = function(e7, t6) {
|
|
return u(t6), this.prependListener(e7, l(this, e7, t6)), this;
|
|
}, o.prototype.removeListener = function(e7, t6) {
|
|
var n7, r7, i6, o7, s5;
|
|
if (u(t6), void 0 === (r7 = this._events))
|
|
return this;
|
|
if (void 0 === (n7 = r7[e7]))
|
|
return this;
|
|
if (n7 === t6 || n7.listener === t6)
|
|
0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete r7[e7], r7.removeListener && this.emit("removeListener", e7, n7.listener || t6));
|
|
else if ("function" != typeof n7) {
|
|
for (i6 = -1, o7 = n7.length - 1; o7 >= 0; o7--)
|
|
if (n7[o7] === t6 || n7[o7].listener === t6) {
|
|
s5 = n7[o7].listener, i6 = o7;
|
|
break;
|
|
}
|
|
if (i6 < 0)
|
|
return this;
|
|
0 === i6 ? n7.shift() : !function(e8, t7) {
|
|
for (; t7 + 1 < e8.length; t7++)
|
|
e8[t7] = e8[t7 + 1];
|
|
e8.pop();
|
|
}(n7, i6), 1 === n7.length && (r7[e7] = n7[0]), void 0 !== r7.removeListener && this.emit("removeListener", e7, s5 || t6);
|
|
}
|
|
return this;
|
|
}, o.prototype.off = o.prototype.removeListener, o.prototype.removeAllListeners = function(e7) {
|
|
var t6, n7, r7;
|
|
if (void 0 === (n7 = this._events))
|
|
return this;
|
|
if (void 0 === n7.removeListener)
|
|
return 0 === arguments.length ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : void 0 !== n7[e7] && (0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : delete n7[e7]), this;
|
|
if (0 === arguments.length) {
|
|
var i6, o7 = Object.keys(n7);
|
|
for (r7 = 0; r7 < o7.length; ++r7)
|
|
"removeListener" !== (i6 = o7[r7]) && this.removeAllListeners(i6);
|
|
return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;
|
|
}
|
|
if ("function" == typeof (t6 = n7[e7]))
|
|
this.removeListener(e7, t6);
|
|
else if (void 0 !== t6)
|
|
for (r7 = t6.length - 1; r7 >= 0; r7--)
|
|
this.removeListener(e7, t6[r7]);
|
|
return this;
|
|
}, o.prototype.listeners = function(e7) {
|
|
return h(this, e7, true);
|
|
}, o.prototype.rawListeners = function(e7) {
|
|
return h(this, e7, false);
|
|
}, o.listenerCount = function(e7, t6) {
|
|
return "function" == typeof e7.listenerCount ? e7.listenerCount(t6) : p.call(e7, t6);
|
|
}, o.prototype.listenerCount = p, o.prototype.eventNames = function() {
|
|
return this._eventsCount > 0 ? t(this._events) : [];
|
|
};
|
|
y = e;
|
|
y.EventEmitter;
|
|
y.defaultMaxListeners;
|
|
y.init;
|
|
y.listenerCount;
|
|
y.EventEmitter;
|
|
y.defaultMaxListeners;
|
|
y.init;
|
|
y.listenerCount;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/events.js
|
|
var events_exports = {};
|
|
__export(events_exports, {
|
|
EventEmitter: () => EventEmitter,
|
|
default: () => y,
|
|
defaultMaxListeners: () => defaultMaxListeners,
|
|
init: () => init,
|
|
listenerCount: () => listenerCount,
|
|
on: () => on2,
|
|
once: () => once2
|
|
});
|
|
var EventEmitter, defaultMaxListeners, init, listenerCount, on2, once2;
|
|
var init_events = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/events.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
init_chunk_4bd36a8f();
|
|
init_chunk_4bd36a8f();
|
|
y.once = function(emitter, event) {
|
|
return new Promise((resolve2, reject) => {
|
|
function eventListener(...args) {
|
|
if (errorListener !== void 0) {
|
|
emitter.removeListener("error", errorListener);
|
|
}
|
|
resolve2(args);
|
|
}
|
|
let errorListener;
|
|
if (event !== "error") {
|
|
errorListener = (err) => {
|
|
emitter.removeListener(name, eventListener);
|
|
reject(err);
|
|
};
|
|
emitter.once("error", errorListener);
|
|
}
|
|
emitter.once(event, eventListener);
|
|
});
|
|
};
|
|
y.on = function(emitter, event) {
|
|
const unconsumedEventValues = [];
|
|
const unconsumedPromises = [];
|
|
let error = null;
|
|
let finished = false;
|
|
const iterator = {
|
|
async next() {
|
|
const value = unconsumedEventValues.shift();
|
|
if (value) {
|
|
return createIterResult(value, false);
|
|
}
|
|
if (error) {
|
|
const p6 = Promise.reject(error);
|
|
error = null;
|
|
return p6;
|
|
}
|
|
if (finished) {
|
|
return createIterResult(void 0, true);
|
|
}
|
|
return new Promise((resolve2, reject) => unconsumedPromises.push({ resolve: resolve2, reject }));
|
|
},
|
|
async return() {
|
|
emitter.removeListener(event, eventHandler);
|
|
emitter.removeListener("error", errorHandler);
|
|
finished = true;
|
|
for (const promise of unconsumedPromises) {
|
|
promise.resolve(createIterResult(void 0, true));
|
|
}
|
|
return createIterResult(void 0, true);
|
|
},
|
|
throw(err) {
|
|
error = err;
|
|
emitter.removeListener(event, eventHandler);
|
|
emitter.removeListener("error", errorHandler);
|
|
},
|
|
[Symbol.asyncIterator]() {
|
|
return this;
|
|
}
|
|
};
|
|
emitter.on(event, eventHandler);
|
|
emitter.on("error", errorHandler);
|
|
return iterator;
|
|
function eventHandler(...args) {
|
|
const promise = unconsumedPromises.shift();
|
|
if (promise) {
|
|
promise.resolve(createIterResult(args, false));
|
|
} else {
|
|
unconsumedEventValues.push(args);
|
|
}
|
|
}
|
|
function errorHandler(err) {
|
|
finished = true;
|
|
const toError = unconsumedPromises.shift();
|
|
if (toError) {
|
|
toError.reject(err);
|
|
} else {
|
|
error = err;
|
|
}
|
|
iterator.return();
|
|
}
|
|
};
|
|
({
|
|
EventEmitter,
|
|
defaultMaxListeners,
|
|
init,
|
|
listenerCount,
|
|
on: on2,
|
|
once: once2
|
|
} = y);
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/legacy.js
|
|
var require_legacy = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/legacy.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { ArrayIsArray, ObjectSetPrototypeOf } = require_primordials();
|
|
var { EventEmitter: EE } = (init_events(), __toCommonJS(events_exports));
|
|
function Stream(opts) {
|
|
EE.call(this, opts);
|
|
}
|
|
ObjectSetPrototypeOf(Stream.prototype, EE.prototype);
|
|
ObjectSetPrototypeOf(Stream, EE);
|
|
Stream.prototype.pipe = function(dest, options) {
|
|
const source = this;
|
|
function ondata(chunk) {
|
|
if (dest.writable && dest.write(chunk) === false && source.pause) {
|
|
source.pause();
|
|
}
|
|
}
|
|
source.on("data", ondata);
|
|
function ondrain() {
|
|
if (source.readable && source.resume) {
|
|
source.resume();
|
|
}
|
|
}
|
|
dest.on("drain", ondrain);
|
|
if (!dest._isStdio && (!options || options.end !== false)) {
|
|
source.on("end", onend);
|
|
source.on("close", onclose);
|
|
}
|
|
let didOnEnd = false;
|
|
function onend() {
|
|
if (didOnEnd)
|
|
return;
|
|
didOnEnd = true;
|
|
dest.end();
|
|
}
|
|
function onclose() {
|
|
if (didOnEnd)
|
|
return;
|
|
didOnEnd = true;
|
|
if (typeof dest.destroy === "function")
|
|
dest.destroy();
|
|
}
|
|
function onerror(er) {
|
|
cleanup();
|
|
if (EE.listenerCount(this, "error") === 0) {
|
|
this.emit("error", er);
|
|
}
|
|
}
|
|
prependListener2(source, "error", onerror);
|
|
prependListener2(dest, "error", onerror);
|
|
function cleanup() {
|
|
source.removeListener("data", ondata);
|
|
dest.removeListener("drain", ondrain);
|
|
source.removeListener("end", onend);
|
|
source.removeListener("close", onclose);
|
|
source.removeListener("error", onerror);
|
|
dest.removeListener("error", onerror);
|
|
source.removeListener("end", cleanup);
|
|
source.removeListener("close", cleanup);
|
|
dest.removeListener("close", cleanup);
|
|
}
|
|
source.on("end", cleanup);
|
|
source.on("close", cleanup);
|
|
dest.on("close", cleanup);
|
|
dest.emit("pipe", source);
|
|
return dest;
|
|
};
|
|
function prependListener2(emitter, event, fn) {
|
|
if (typeof emitter.prependListener === "function")
|
|
return emitter.prependListener(event, fn);
|
|
if (!emitter._events || !emitter._events[event])
|
|
emitter.on(event, fn);
|
|
else if (ArrayIsArray(emitter._events[event]))
|
|
emitter._events[event].unshift(fn);
|
|
else
|
|
emitter._events[event] = [fn, emitter._events[event]];
|
|
}
|
|
module.exports = {
|
|
Stream,
|
|
prependListener: prependListener2
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/add-abort-signal.js
|
|
var require_add_abort_signal = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/add-abort-signal.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { AbortError, codes } = require_errors();
|
|
var { isNodeStream, isWebStream, kControllerErrorFunction } = require_utils();
|
|
var eos = require_end_of_stream();
|
|
var { ERR_INVALID_ARG_TYPE } = codes;
|
|
var validateAbortSignal = (signal, name2) => {
|
|
if (typeof signal !== "object" || !("aborted" in signal)) {
|
|
throw new ERR_INVALID_ARG_TYPE(name2, "AbortSignal", signal);
|
|
}
|
|
};
|
|
module.exports.addAbortSignal = function addAbortSignal(signal, stream) {
|
|
validateAbortSignal(signal, "signal");
|
|
if (!isNodeStream(stream) && !isWebStream(stream)) {
|
|
throw new ERR_INVALID_ARG_TYPE("stream", ["ReadableStream", "WritableStream", "Stream"], stream);
|
|
}
|
|
return module.exports.addAbortSignalNoValidate(signal, stream);
|
|
};
|
|
module.exports.addAbortSignalNoValidate = function(signal, stream) {
|
|
if (typeof signal !== "object" || !("aborted" in signal)) {
|
|
return stream;
|
|
}
|
|
const onAbort = isNodeStream(stream) ? () => {
|
|
stream.destroy(
|
|
new AbortError(void 0, {
|
|
cause: signal.reason
|
|
})
|
|
);
|
|
} : () => {
|
|
stream[kControllerErrorFunction](
|
|
new AbortError(void 0, {
|
|
cause: signal.reason
|
|
})
|
|
);
|
|
};
|
|
if (signal.aborted) {
|
|
onAbort();
|
|
} else {
|
|
signal.addEventListener("abort", onAbort);
|
|
eos(stream, () => signal.removeEventListener("abort", onAbort));
|
|
}
|
|
return stream;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/buffer_list.js
|
|
var require_buffer_list = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array: Uint8Array2 } = require_primordials();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var { inspect } = require_util();
|
|
module.exports = class BufferList {
|
|
constructor() {
|
|
this.head = null;
|
|
this.tail = null;
|
|
this.length = 0;
|
|
}
|
|
push(v4) {
|
|
const entry = {
|
|
data: v4,
|
|
next: null
|
|
};
|
|
if (this.length > 0)
|
|
this.tail.next = entry;
|
|
else
|
|
this.head = entry;
|
|
this.tail = entry;
|
|
++this.length;
|
|
}
|
|
unshift(v4) {
|
|
const entry = {
|
|
data: v4,
|
|
next: this.head
|
|
};
|
|
if (this.length === 0)
|
|
this.tail = entry;
|
|
this.head = entry;
|
|
++this.length;
|
|
}
|
|
shift() {
|
|
if (this.length === 0)
|
|
return;
|
|
const ret = this.head.data;
|
|
if (this.length === 1)
|
|
this.head = this.tail = null;
|
|
else
|
|
this.head = this.head.next;
|
|
--this.length;
|
|
return ret;
|
|
}
|
|
clear() {
|
|
this.head = this.tail = null;
|
|
this.length = 0;
|
|
}
|
|
join(s5) {
|
|
if (this.length === 0)
|
|
return "";
|
|
let p6 = this.head;
|
|
let ret = "" + p6.data;
|
|
while ((p6 = p6.next) !== null)
|
|
ret += s5 + p6.data;
|
|
return ret;
|
|
}
|
|
concat(n7) {
|
|
if (this.length === 0)
|
|
return Buffer3.alloc(0);
|
|
const ret = Buffer3.allocUnsafe(n7 >>> 0);
|
|
let p6 = this.head;
|
|
let i6 = 0;
|
|
while (p6) {
|
|
TypedArrayPrototypeSet(ret, p6.data, i6);
|
|
i6 += p6.data.length;
|
|
p6 = p6.next;
|
|
}
|
|
return ret;
|
|
}
|
|
// Consumes a specified amount of bytes or characters from the buffered data.
|
|
consume(n7, hasStrings) {
|
|
const data = this.head.data;
|
|
if (n7 < data.length) {
|
|
const slice = data.slice(0, n7);
|
|
this.head.data = data.slice(n7);
|
|
return slice;
|
|
}
|
|
if (n7 === data.length) {
|
|
return this.shift();
|
|
}
|
|
return hasStrings ? this._getString(n7) : this._getBuffer(n7);
|
|
}
|
|
first() {
|
|
return this.head.data;
|
|
}
|
|
*[SymbolIterator]() {
|
|
for (let p6 = this.head; p6; p6 = p6.next) {
|
|
yield p6.data;
|
|
}
|
|
}
|
|
// Consumes a specified amount of characters from the buffered data.
|
|
_getString(n7) {
|
|
let ret = "";
|
|
let p6 = this.head;
|
|
let c6 = 0;
|
|
do {
|
|
const str = p6.data;
|
|
if (n7 > str.length) {
|
|
ret += str;
|
|
n7 -= str.length;
|
|
} else {
|
|
if (n7 === str.length) {
|
|
ret += str;
|
|
++c6;
|
|
if (p6.next)
|
|
this.head = p6.next;
|
|
else
|
|
this.head = this.tail = null;
|
|
} else {
|
|
ret += StringPrototypeSlice(str, 0, n7);
|
|
this.head = p6;
|
|
p6.data = StringPrototypeSlice(str, n7);
|
|
}
|
|
break;
|
|
}
|
|
++c6;
|
|
} while ((p6 = p6.next) !== null);
|
|
this.length -= c6;
|
|
return ret;
|
|
}
|
|
// Consumes a specified amount of bytes from the buffered data.
|
|
_getBuffer(n7) {
|
|
const ret = Buffer3.allocUnsafe(n7);
|
|
const retLen = n7;
|
|
let p6 = this.head;
|
|
let c6 = 0;
|
|
do {
|
|
const buf = p6.data;
|
|
if (n7 > buf.length) {
|
|
TypedArrayPrototypeSet(ret, buf, retLen - n7);
|
|
n7 -= buf.length;
|
|
} else {
|
|
if (n7 === buf.length) {
|
|
TypedArrayPrototypeSet(ret, buf, retLen - n7);
|
|
++c6;
|
|
if (p6.next)
|
|
this.head = p6.next;
|
|
else
|
|
this.head = this.tail = null;
|
|
} else {
|
|
TypedArrayPrototypeSet(ret, new Uint8Array2(buf.buffer, buf.byteOffset, n7), retLen - n7);
|
|
this.head = p6;
|
|
p6.data = buf.slice(n7);
|
|
}
|
|
break;
|
|
}
|
|
++c6;
|
|
} while ((p6 = p6.next) !== null);
|
|
this.length -= c6;
|
|
return ret;
|
|
}
|
|
// Make sure the linked list only shows the minimal necessary information.
|
|
[Symbol.for("nodejs.util.inspect.custom")](_2, options) {
|
|
return inspect(this, {
|
|
...options,
|
|
// Only inspect one level.
|
|
depth: 0,
|
|
// It should not recurse.
|
|
customInspect: false
|
|
});
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/state.js
|
|
var require_state = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/state.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { MathFloor, NumberIsInteger } = require_primordials();
|
|
var { ERR_INVALID_ARG_VALUE } = require_errors().codes;
|
|
function highWaterMarkFrom(options, isDuplex, duplexKey) {
|
|
return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
|
|
}
|
|
function getDefaultHighWaterMark(objectMode) {
|
|
return objectMode ? 16 : 16 * 1024;
|
|
}
|
|
function getHighWaterMark(state, options, duplexKey, isDuplex) {
|
|
const hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
|
|
if (hwm != null) {
|
|
if (!NumberIsInteger(hwm) || hwm < 0) {
|
|
const name2 = isDuplex ? `options.${duplexKey}` : "options.highWaterMark";
|
|
throw new ERR_INVALID_ARG_VALUE(name2, hwm);
|
|
}
|
|
return MathFloor(hwm);
|
|
}
|
|
return getDefaultHighWaterMark(state.objectMode);
|
|
}
|
|
module.exports = {
|
|
getHighWaterMark,
|
|
getDefaultHighWaterMark
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-4ccc3a29.js
|
|
function u$2(r7) {
|
|
var t6 = r7.length;
|
|
if (t6 % 4 > 0)
|
|
throw new Error("Invalid string. Length must be a multiple of 4");
|
|
var e7 = r7.indexOf("=");
|
|
return -1 === e7 && (e7 = t6), [e7, e7 === t6 ? 0 : 4 - e7 % 4];
|
|
}
|
|
function c$1(r7, e7, n7) {
|
|
for (var o7, a6, h6 = [], u6 = e7; u6 < n7; u6 += 3)
|
|
o7 = (r7[u6] << 16 & 16711680) + (r7[u6 + 1] << 8 & 65280) + (255 & r7[u6 + 2]), h6.push(t$1[(a6 = o7) >> 18 & 63] + t$1[a6 >> 12 & 63] + t$1[a6 >> 6 & 63] + t$1[63 & a6]);
|
|
return h6.join("");
|
|
}
|
|
function f$2(t6) {
|
|
if (t6 > 2147483647)
|
|
throw new RangeError('The value "' + t6 + '" is invalid for option "size"');
|
|
var r7 = new Uint8Array(t6);
|
|
return Object.setPrototypeOf(r7, u$1$1.prototype), r7;
|
|
}
|
|
function u$1$1(t6, r7, e7) {
|
|
if ("number" == typeof t6) {
|
|
if ("string" == typeof r7)
|
|
throw new TypeError('The "string" argument must be of type string. Received type number');
|
|
return a$2(t6);
|
|
}
|
|
return s$1(t6, r7, e7);
|
|
}
|
|
function s$1(t6, r7, e7) {
|
|
if ("string" == typeof t6)
|
|
return function(t7, r8) {
|
|
"string" == typeof r8 && "" !== r8 || (r8 = "utf8");
|
|
if (!u$1$1.isEncoding(r8))
|
|
throw new TypeError("Unknown encoding: " + r8);
|
|
var e8 = 0 | y2(t7, r8), n8 = f$2(e8), i7 = n8.write(t7, r8);
|
|
i7 !== e8 && (n8 = n8.slice(0, i7));
|
|
return n8;
|
|
}(t6, r7);
|
|
if (ArrayBuffer.isView(t6))
|
|
return p2(t6);
|
|
if (null == t6)
|
|
throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t6);
|
|
if (F(t6, ArrayBuffer) || t6 && F(t6.buffer, ArrayBuffer))
|
|
return c$1$1(t6, r7, e7);
|
|
if ("undefined" != typeof SharedArrayBuffer && (F(t6, SharedArrayBuffer) || t6 && F(t6.buffer, SharedArrayBuffer)))
|
|
return c$1$1(t6, r7, e7);
|
|
if ("number" == typeof t6)
|
|
throw new TypeError('The "value" argument must not be of type number. Received type number');
|
|
var n7 = t6.valueOf && t6.valueOf();
|
|
if (null != n7 && n7 !== t6)
|
|
return u$1$1.from(n7, r7, e7);
|
|
var i6 = function(t7) {
|
|
if (u$1$1.isBuffer(t7)) {
|
|
var r8 = 0 | l$1(t7.length), e8 = f$2(r8);
|
|
return 0 === e8.length || t7.copy(e8, 0, 0, r8), e8;
|
|
}
|
|
if (void 0 !== t7.length)
|
|
return "number" != typeof t7.length || N(t7.length) ? f$2(0) : p2(t7);
|
|
if ("Buffer" === t7.type && Array.isArray(t7.data))
|
|
return p2(t7.data);
|
|
}(t6);
|
|
if (i6)
|
|
return i6;
|
|
if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof t6[Symbol.toPrimitive])
|
|
return u$1$1.from(t6[Symbol.toPrimitive]("string"), r7, e7);
|
|
throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t6);
|
|
}
|
|
function h$1$1(t6) {
|
|
if ("number" != typeof t6)
|
|
throw new TypeError('"size" argument must be of type number');
|
|
if (t6 < 0)
|
|
throw new RangeError('The value "' + t6 + '" is invalid for option "size"');
|
|
}
|
|
function a$2(t6) {
|
|
return h$1$1(t6), f$2(t6 < 0 ? 0 : 0 | l$1(t6));
|
|
}
|
|
function p2(t6) {
|
|
for (var r7 = t6.length < 0 ? 0 : 0 | l$1(t6.length), e7 = f$2(r7), n7 = 0; n7 < r7; n7 += 1)
|
|
e7[n7] = 255 & t6[n7];
|
|
return e7;
|
|
}
|
|
function c$1$1(t6, r7, e7) {
|
|
if (r7 < 0 || t6.byteLength < r7)
|
|
throw new RangeError('"offset" is outside of buffer bounds');
|
|
if (t6.byteLength < r7 + (e7 || 0))
|
|
throw new RangeError('"length" is outside of buffer bounds');
|
|
var n7;
|
|
return n7 = void 0 === r7 && void 0 === e7 ? new Uint8Array(t6) : void 0 === e7 ? new Uint8Array(t6, r7) : new Uint8Array(t6, r7, e7), Object.setPrototypeOf(n7, u$1$1.prototype), n7;
|
|
}
|
|
function l$1(t6) {
|
|
if (t6 >= 2147483647)
|
|
throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + 2147483647 .toString(16) + " bytes");
|
|
return 0 | t6;
|
|
}
|
|
function y2(t6, r7) {
|
|
if (u$1$1.isBuffer(t6))
|
|
return t6.length;
|
|
if (ArrayBuffer.isView(t6) || F(t6, ArrayBuffer))
|
|
return t6.byteLength;
|
|
if ("string" != typeof t6)
|
|
throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t6);
|
|
var e7 = t6.length, n7 = arguments.length > 2 && true === arguments[2];
|
|
if (!n7 && 0 === e7)
|
|
return 0;
|
|
for (var i6 = false; ; )
|
|
switch (r7) {
|
|
case "ascii":
|
|
case "latin1":
|
|
case "binary":
|
|
return e7;
|
|
case "utf8":
|
|
case "utf-8":
|
|
return _(t6).length;
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return 2 * e7;
|
|
case "hex":
|
|
return e7 >>> 1;
|
|
case "base64":
|
|
return z(t6).length;
|
|
default:
|
|
if (i6)
|
|
return n7 ? -1 : _(t6).length;
|
|
r7 = ("" + r7).toLowerCase(), i6 = true;
|
|
}
|
|
}
|
|
function g(t6, r7, e7) {
|
|
var n7 = false;
|
|
if ((void 0 === r7 || r7 < 0) && (r7 = 0), r7 > this.length)
|
|
return "";
|
|
if ((void 0 === e7 || e7 > this.length) && (e7 = this.length), e7 <= 0)
|
|
return "";
|
|
if ((e7 >>>= 0) <= (r7 >>>= 0))
|
|
return "";
|
|
for (t6 || (t6 = "utf8"); ; )
|
|
switch (t6) {
|
|
case "hex":
|
|
return O(this, r7, e7);
|
|
case "utf8":
|
|
case "utf-8":
|
|
return I(this, r7, e7);
|
|
case "ascii":
|
|
return S(this, r7, e7);
|
|
case "latin1":
|
|
case "binary":
|
|
return R(this, r7, e7);
|
|
case "base64":
|
|
return T(this, r7, e7);
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return L(this, r7, e7);
|
|
default:
|
|
if (n7)
|
|
throw new TypeError("Unknown encoding: " + t6);
|
|
t6 = (t6 + "").toLowerCase(), n7 = true;
|
|
}
|
|
}
|
|
function w(t6, r7, e7) {
|
|
var n7 = t6[r7];
|
|
t6[r7] = t6[e7], t6[e7] = n7;
|
|
}
|
|
function d(t6, r7, e7, n7, i6) {
|
|
if (0 === t6.length)
|
|
return -1;
|
|
if ("string" == typeof e7 ? (n7 = e7, e7 = 0) : e7 > 2147483647 ? e7 = 2147483647 : e7 < -2147483648 && (e7 = -2147483648), N(e7 = +e7) && (e7 = i6 ? 0 : t6.length - 1), e7 < 0 && (e7 = t6.length + e7), e7 >= t6.length) {
|
|
if (i6)
|
|
return -1;
|
|
e7 = t6.length - 1;
|
|
} else if (e7 < 0) {
|
|
if (!i6)
|
|
return -1;
|
|
e7 = 0;
|
|
}
|
|
if ("string" == typeof r7 && (r7 = u$1$1.from(r7, n7)), u$1$1.isBuffer(r7))
|
|
return 0 === r7.length ? -1 : v2(t6, r7, e7, n7, i6);
|
|
if ("number" == typeof r7)
|
|
return r7 &= 255, "function" == typeof Uint8Array.prototype.indexOf ? i6 ? Uint8Array.prototype.indexOf.call(t6, r7, e7) : Uint8Array.prototype.lastIndexOf.call(t6, r7, e7) : v2(t6, [r7], e7, n7, i6);
|
|
throw new TypeError("val must be string, number or Buffer");
|
|
}
|
|
function v2(t6, r7, e7, n7, i6) {
|
|
var o7, f6 = 1, u6 = t6.length, s5 = r7.length;
|
|
if (void 0 !== n7 && ("ucs2" === (n7 = String(n7).toLowerCase()) || "ucs-2" === n7 || "utf16le" === n7 || "utf-16le" === n7)) {
|
|
if (t6.length < 2 || r7.length < 2)
|
|
return -1;
|
|
f6 = 2, u6 /= 2, s5 /= 2, e7 /= 2;
|
|
}
|
|
function h6(t7, r8) {
|
|
return 1 === f6 ? t7[r8] : t7.readUInt16BE(r8 * f6);
|
|
}
|
|
if (i6) {
|
|
var a6 = -1;
|
|
for (o7 = e7; o7 < u6; o7++)
|
|
if (h6(t6, o7) === h6(r7, -1 === a6 ? 0 : o7 - a6)) {
|
|
if (-1 === a6 && (a6 = o7), o7 - a6 + 1 === s5)
|
|
return a6 * f6;
|
|
} else
|
|
-1 !== a6 && (o7 -= o7 - a6), a6 = -1;
|
|
} else
|
|
for (e7 + s5 > u6 && (e7 = u6 - s5), o7 = e7; o7 >= 0; o7--) {
|
|
for (var p6 = true, c6 = 0; c6 < s5; c6++)
|
|
if (h6(t6, o7 + c6) !== h6(r7, c6)) {
|
|
p6 = false;
|
|
break;
|
|
}
|
|
if (p6)
|
|
return o7;
|
|
}
|
|
return -1;
|
|
}
|
|
function b(t6, r7, e7, n7) {
|
|
e7 = Number(e7) || 0;
|
|
var i6 = t6.length - e7;
|
|
n7 ? (n7 = Number(n7)) > i6 && (n7 = i6) : n7 = i6;
|
|
var o7 = r7.length;
|
|
n7 > o7 / 2 && (n7 = o7 / 2);
|
|
for (var f6 = 0; f6 < n7; ++f6) {
|
|
var u6 = parseInt(r7.substr(2 * f6, 2), 16);
|
|
if (N(u6))
|
|
return f6;
|
|
t6[e7 + f6] = u6;
|
|
}
|
|
return f6;
|
|
}
|
|
function m(t6, r7, e7, n7) {
|
|
return D(_(r7, t6.length - e7), t6, e7, n7);
|
|
}
|
|
function E(t6, r7, e7, n7) {
|
|
return D(function(t7) {
|
|
for (var r8 = [], e8 = 0; e8 < t7.length; ++e8)
|
|
r8.push(255 & t7.charCodeAt(e8));
|
|
return r8;
|
|
}(r7), t6, e7, n7);
|
|
}
|
|
function B(t6, r7, e7, n7) {
|
|
return E(t6, r7, e7, n7);
|
|
}
|
|
function A(t6, r7, e7, n7) {
|
|
return D(z(r7), t6, e7, n7);
|
|
}
|
|
function U(t6, r7, e7, n7) {
|
|
return D(function(t7, r8) {
|
|
for (var e8, n8, i6, o7 = [], f6 = 0; f6 < t7.length && !((r8 -= 2) < 0); ++f6)
|
|
e8 = t7.charCodeAt(f6), n8 = e8 >> 8, i6 = e8 % 256, o7.push(i6), o7.push(n8);
|
|
return o7;
|
|
}(r7, t6.length - e7), t6, e7, n7);
|
|
}
|
|
function T(t6, r7, e7) {
|
|
return 0 === r7 && e7 === t6.length ? n$1$1.fromByteArray(t6) : n$1$1.fromByteArray(t6.slice(r7, e7));
|
|
}
|
|
function I(t6, r7, e7) {
|
|
e7 = Math.min(t6.length, e7);
|
|
for (var n7 = [], i6 = r7; i6 < e7; ) {
|
|
var o7, f6, u6, s5, h6 = t6[i6], a6 = null, p6 = h6 > 239 ? 4 : h6 > 223 ? 3 : h6 > 191 ? 2 : 1;
|
|
if (i6 + p6 <= e7)
|
|
switch (p6) {
|
|
case 1:
|
|
h6 < 128 && (a6 = h6);
|
|
break;
|
|
case 2:
|
|
128 == (192 & (o7 = t6[i6 + 1])) && (s5 = (31 & h6) << 6 | 63 & o7) > 127 && (a6 = s5);
|
|
break;
|
|
case 3:
|
|
o7 = t6[i6 + 1], f6 = t6[i6 + 2], 128 == (192 & o7) && 128 == (192 & f6) && (s5 = (15 & h6) << 12 | (63 & o7) << 6 | 63 & f6) > 2047 && (s5 < 55296 || s5 > 57343) && (a6 = s5);
|
|
break;
|
|
case 4:
|
|
o7 = t6[i6 + 1], f6 = t6[i6 + 2], u6 = t6[i6 + 3], 128 == (192 & o7) && 128 == (192 & f6) && 128 == (192 & u6) && (s5 = (15 & h6) << 18 | (63 & o7) << 12 | (63 & f6) << 6 | 63 & u6) > 65535 && s5 < 1114112 && (a6 = s5);
|
|
}
|
|
null === a6 ? (a6 = 65533, p6 = 1) : a6 > 65535 && (a6 -= 65536, n7.push(a6 >>> 10 & 1023 | 55296), a6 = 56320 | 1023 & a6), n7.push(a6), i6 += p6;
|
|
}
|
|
return function(t7) {
|
|
var r8 = t7.length;
|
|
if (r8 <= 4096)
|
|
return String.fromCharCode.apply(String, t7);
|
|
var e8 = "", n8 = 0;
|
|
for (; n8 < r8; )
|
|
e8 += String.fromCharCode.apply(String, t7.slice(n8, n8 += 4096));
|
|
return e8;
|
|
}(n7);
|
|
}
|
|
function S(t6, r7, e7) {
|
|
var n7 = "";
|
|
e7 = Math.min(t6.length, e7);
|
|
for (var i6 = r7; i6 < e7; ++i6)
|
|
n7 += String.fromCharCode(127 & t6[i6]);
|
|
return n7;
|
|
}
|
|
function R(t6, r7, e7) {
|
|
var n7 = "";
|
|
e7 = Math.min(t6.length, e7);
|
|
for (var i6 = r7; i6 < e7; ++i6)
|
|
n7 += String.fromCharCode(t6[i6]);
|
|
return n7;
|
|
}
|
|
function O(t6, r7, e7) {
|
|
var n7 = t6.length;
|
|
(!r7 || r7 < 0) && (r7 = 0), (!e7 || e7 < 0 || e7 > n7) && (e7 = n7);
|
|
for (var i6 = "", o7 = r7; o7 < e7; ++o7)
|
|
i6 += Y[t6[o7]];
|
|
return i6;
|
|
}
|
|
function L(t6, r7, e7) {
|
|
for (var n7 = t6.slice(r7, e7), i6 = "", o7 = 0; o7 < n7.length; o7 += 2)
|
|
i6 += String.fromCharCode(n7[o7] + 256 * n7[o7 + 1]);
|
|
return i6;
|
|
}
|
|
function x(t6, r7, e7) {
|
|
if (t6 % 1 != 0 || t6 < 0)
|
|
throw new RangeError("offset is not uint");
|
|
if (t6 + r7 > e7)
|
|
throw new RangeError("Trying to access beyond buffer length");
|
|
}
|
|
function C(t6, r7, e7, n7, i6, o7) {
|
|
if (!u$1$1.isBuffer(t6))
|
|
throw new TypeError('"buffer" argument must be a Buffer instance');
|
|
if (r7 > i6 || r7 < o7)
|
|
throw new RangeError('"value" argument is out of bounds');
|
|
if (e7 + n7 > t6.length)
|
|
throw new RangeError("Index out of range");
|
|
}
|
|
function P(t6, r7, e7, n7, i6, o7) {
|
|
if (e7 + n7 > t6.length)
|
|
throw new RangeError("Index out of range");
|
|
if (e7 < 0)
|
|
throw new RangeError("Index out of range");
|
|
}
|
|
function k(t6, r7, e7, n7, o7) {
|
|
return r7 = +r7, e7 >>>= 0, o7 || P(t6, 0, e7, 4), i$1.write(t6, r7, e7, n7, 23, 4), e7 + 4;
|
|
}
|
|
function M(t6, r7, e7, n7, o7) {
|
|
return r7 = +r7, e7 >>>= 0, o7 || P(t6, 0, e7, 8), i$1.write(t6, r7, e7, n7, 52, 8), e7 + 8;
|
|
}
|
|
function _(t6, r7) {
|
|
var e7;
|
|
r7 = r7 || 1 / 0;
|
|
for (var n7 = t6.length, i6 = null, o7 = [], f6 = 0; f6 < n7; ++f6) {
|
|
if ((e7 = t6.charCodeAt(f6)) > 55295 && e7 < 57344) {
|
|
if (!i6) {
|
|
if (e7 > 56319) {
|
|
(r7 -= 3) > -1 && o7.push(239, 191, 189);
|
|
continue;
|
|
}
|
|
if (f6 + 1 === n7) {
|
|
(r7 -= 3) > -1 && o7.push(239, 191, 189);
|
|
continue;
|
|
}
|
|
i6 = e7;
|
|
continue;
|
|
}
|
|
if (e7 < 56320) {
|
|
(r7 -= 3) > -1 && o7.push(239, 191, 189), i6 = e7;
|
|
continue;
|
|
}
|
|
e7 = 65536 + (i6 - 55296 << 10 | e7 - 56320);
|
|
} else
|
|
i6 && (r7 -= 3) > -1 && o7.push(239, 191, 189);
|
|
if (i6 = null, e7 < 128) {
|
|
if ((r7 -= 1) < 0)
|
|
break;
|
|
o7.push(e7);
|
|
} else if (e7 < 2048) {
|
|
if ((r7 -= 2) < 0)
|
|
break;
|
|
o7.push(e7 >> 6 | 192, 63 & e7 | 128);
|
|
} else if (e7 < 65536) {
|
|
if ((r7 -= 3) < 0)
|
|
break;
|
|
o7.push(e7 >> 12 | 224, e7 >> 6 & 63 | 128, 63 & e7 | 128);
|
|
} else {
|
|
if (!(e7 < 1114112))
|
|
throw new Error("Invalid code point");
|
|
if ((r7 -= 4) < 0)
|
|
break;
|
|
o7.push(e7 >> 18 | 240, e7 >> 12 & 63 | 128, e7 >> 6 & 63 | 128, 63 & e7 | 128);
|
|
}
|
|
}
|
|
return o7;
|
|
}
|
|
function z(t6) {
|
|
return n$1$1.toByteArray(function(t7) {
|
|
if ((t7 = (t7 = t7.split("=")[0]).trim().replace(j, "")).length < 2)
|
|
return "";
|
|
for (; t7.length % 4 != 0; )
|
|
t7 += "=";
|
|
return t7;
|
|
}(t6));
|
|
}
|
|
function D(t6, r7, e7, n7) {
|
|
for (var i6 = 0; i6 < n7 && !(i6 + e7 >= r7.length || i6 >= t6.length); ++i6)
|
|
r7[i6 + e7] = t6[i6];
|
|
return i6;
|
|
}
|
|
function F(t6, r7) {
|
|
return t6 instanceof r7 || null != t6 && null != t6.constructor && null != t6.constructor.name && t6.constructor.name === r7.name;
|
|
}
|
|
function N(t6) {
|
|
return t6 != t6;
|
|
}
|
|
function t2(r7, e7) {
|
|
for (var n7 in r7)
|
|
e7[n7] = r7[n7];
|
|
}
|
|
function f2(r7, e7, n7) {
|
|
return o2(r7, e7, n7);
|
|
}
|
|
function a2(t6) {
|
|
var e7;
|
|
switch (this.encoding = function(t7) {
|
|
var e8 = function(t8) {
|
|
if (!t8)
|
|
return "utf8";
|
|
for (var e9; ; )
|
|
switch (t8) {
|
|
case "utf8":
|
|
case "utf-8":
|
|
return "utf8";
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return "utf16le";
|
|
case "latin1":
|
|
case "binary":
|
|
return "latin1";
|
|
case "base64":
|
|
case "ascii":
|
|
case "hex":
|
|
return t8;
|
|
default:
|
|
if (e9)
|
|
return;
|
|
t8 = ("" + t8).toLowerCase(), e9 = true;
|
|
}
|
|
}(t7);
|
|
if ("string" != typeof e8 && (s2.isEncoding === i2 || !i2(t7)))
|
|
throw new Error("Unknown encoding: " + t7);
|
|
return e8 || t7;
|
|
}(t6), this.encoding) {
|
|
case "utf16le":
|
|
this.text = h2, this.end = l2, e7 = 4;
|
|
break;
|
|
case "utf8":
|
|
this.fillLast = n$1, e7 = 4;
|
|
break;
|
|
case "base64":
|
|
this.text = u$1, this.end = o$1, e7 = 3;
|
|
break;
|
|
default:
|
|
return this.write = f$1, this.end = c2, void 0;
|
|
}
|
|
this.lastNeed = 0, this.lastTotal = 0, this.lastChar = s2.allocUnsafe(e7);
|
|
}
|
|
function r2(t6) {
|
|
return t6 <= 127 ? 0 : t6 >> 5 == 6 ? 2 : t6 >> 4 == 14 ? 3 : t6 >> 3 == 30 ? 4 : t6 >> 6 == 2 ? -1 : -2;
|
|
}
|
|
function n$1(t6) {
|
|
var e7 = this.lastTotal - this.lastNeed, s5 = function(t7, e8, s6) {
|
|
if (128 != (192 & e8[0]))
|
|
return t7.lastNeed = 0, "\uFFFD";
|
|
if (t7.lastNeed > 1 && e8.length > 1) {
|
|
if (128 != (192 & e8[1]))
|
|
return t7.lastNeed = 1, "\uFFFD";
|
|
if (t7.lastNeed > 2 && e8.length > 2 && 128 != (192 & e8[2]))
|
|
return t7.lastNeed = 2, "\uFFFD";
|
|
}
|
|
}(this, t6);
|
|
return void 0 !== s5 ? s5 : this.lastNeed <= t6.length ? (t6.copy(this.lastChar, e7, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal)) : (t6.copy(this.lastChar, e7, 0, t6.length), this.lastNeed -= t6.length, void 0);
|
|
}
|
|
function h2(t6, e7) {
|
|
if ((t6.length - e7) % 2 == 0) {
|
|
var s5 = t6.toString("utf16le", e7);
|
|
if (s5) {
|
|
var i6 = s5.charCodeAt(s5.length - 1);
|
|
if (i6 >= 55296 && i6 <= 56319)
|
|
return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = t6[t6.length - 2], this.lastChar[1] = t6[t6.length - 1], s5.slice(0, -1);
|
|
}
|
|
return s5;
|
|
}
|
|
return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = t6[t6.length - 1], t6.toString("utf16le", e7, t6.length - 1);
|
|
}
|
|
function l2(t6) {
|
|
var e7 = t6 && t6.length ? this.write(t6) : "";
|
|
if (this.lastNeed) {
|
|
var s5 = this.lastTotal - this.lastNeed;
|
|
return e7 + this.lastChar.toString("utf16le", 0, s5);
|
|
}
|
|
return e7;
|
|
}
|
|
function u$1(t6, e7) {
|
|
var s5 = (t6.length - e7) % 3;
|
|
return 0 === s5 ? t6.toString("base64", e7) : (this.lastNeed = 3 - s5, this.lastTotal = 3, 1 === s5 ? this.lastChar[0] = t6[t6.length - 1] : (this.lastChar[0] = t6[t6.length - 2], this.lastChar[1] = t6[t6.length - 1]), t6.toString("base64", e7, t6.length - s5));
|
|
}
|
|
function o$1(t6) {
|
|
var e7 = t6 && t6.length ? this.write(t6) : "";
|
|
return this.lastNeed ? e7 + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : e7;
|
|
}
|
|
function f$1(t6) {
|
|
return t6.toString(this.encoding);
|
|
}
|
|
function c2(t6) {
|
|
return t6 && t6.length ? this.write(t6) : "";
|
|
}
|
|
var r$1, t$1, e$2, n$2, o$2, a$1, h$1, a$1$1, e$1$1, n$1$1, i$1, o$1$1, j, Y, e2, n2, o2, u2, e$1, s2, i2;
|
|
var init_chunk_4ccc3a29 = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-4ccc3a29.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
for (r$1 = { byteLength: function(r7) {
|
|
var t6 = u$2(r7), e7 = t6[0], n7 = t6[1];
|
|
return 3 * (e7 + n7) / 4 - n7;
|
|
}, toByteArray: function(r7) {
|
|
var t6, o7, a6 = u$2(r7), h6 = a6[0], c6 = a6[1], d4 = new n$2(function(r8, t7, e7) {
|
|
return 3 * (t7 + e7) / 4 - e7;
|
|
}(0, h6, c6)), f6 = 0, A2 = c6 > 0 ? h6 - 4 : h6;
|
|
for (o7 = 0; o7 < A2; o7 += 4)
|
|
t6 = e$2[r7.charCodeAt(o7)] << 18 | e$2[r7.charCodeAt(o7 + 1)] << 12 | e$2[r7.charCodeAt(o7 + 2)] << 6 | e$2[r7.charCodeAt(o7 + 3)], d4[f6++] = t6 >> 16 & 255, d4[f6++] = t6 >> 8 & 255, d4[f6++] = 255 & t6;
|
|
2 === c6 && (t6 = e$2[r7.charCodeAt(o7)] << 2 | e$2[r7.charCodeAt(o7 + 1)] >> 4, d4[f6++] = 255 & t6);
|
|
1 === c6 && (t6 = e$2[r7.charCodeAt(o7)] << 10 | e$2[r7.charCodeAt(o7 + 1)] << 4 | e$2[r7.charCodeAt(o7 + 2)] >> 2, d4[f6++] = t6 >> 8 & 255, d4[f6++] = 255 & t6);
|
|
return d4;
|
|
}, fromByteArray: function(r7) {
|
|
for (var e7, n7 = r7.length, o7 = n7 % 3, a6 = [], h6 = 0, u6 = n7 - o7; h6 < u6; h6 += 16383)
|
|
a6.push(c$1(r7, h6, h6 + 16383 > u6 ? u6 : h6 + 16383));
|
|
1 === o7 ? (e7 = r7[n7 - 1], a6.push(t$1[e7 >> 2] + t$1[e7 << 4 & 63] + "==")) : 2 === o7 && (e7 = (r7[n7 - 2] << 8) + r7[n7 - 1], a6.push(t$1[e7 >> 10] + t$1[e7 >> 4 & 63] + t$1[e7 << 2 & 63] + "="));
|
|
return a6.join("");
|
|
} }, t$1 = [], e$2 = [], n$2 = "undefined" != typeof Uint8Array ? Uint8Array : Array, o$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", a$1 = 0, h$1 = o$2.length; a$1 < h$1; ++a$1)
|
|
t$1[a$1] = o$2[a$1], e$2[o$2.charCodeAt(a$1)] = a$1;
|
|
e$2["-".charCodeAt(0)] = 62, e$2["_".charCodeAt(0)] = 63;
|
|
a$1$1 = { read: function(a6, t6, o7, r7, h6) {
|
|
var M2, f6, p6 = 8 * h6 - r7 - 1, w2 = (1 << p6) - 1, e7 = w2 >> 1, i6 = -7, N2 = o7 ? h6 - 1 : 0, n7 = o7 ? -1 : 1, u6 = a6[t6 + N2];
|
|
for (N2 += n7, M2 = u6 & (1 << -i6) - 1, u6 >>= -i6, i6 += p6; i6 > 0; M2 = 256 * M2 + a6[t6 + N2], N2 += n7, i6 -= 8)
|
|
;
|
|
for (f6 = M2 & (1 << -i6) - 1, M2 >>= -i6, i6 += r7; i6 > 0; f6 = 256 * f6 + a6[t6 + N2], N2 += n7, i6 -= 8)
|
|
;
|
|
if (0 === M2)
|
|
M2 = 1 - e7;
|
|
else {
|
|
if (M2 === w2)
|
|
return f6 ? NaN : 1 / 0 * (u6 ? -1 : 1);
|
|
f6 += Math.pow(2, r7), M2 -= e7;
|
|
}
|
|
return (u6 ? -1 : 1) * f6 * Math.pow(2, M2 - r7);
|
|
}, write: function(a6, t6, o7, r7, h6, M2) {
|
|
var f6, p6, w2, e7 = 8 * M2 - h6 - 1, i6 = (1 << e7) - 1, N2 = i6 >> 1, n7 = 23 === h6 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, u6 = r7 ? 0 : M2 - 1, l6 = r7 ? 1 : -1, s5 = t6 < 0 || 0 === t6 && 1 / t6 < 0 ? 1 : 0;
|
|
for (t6 = Math.abs(t6), isNaN(t6) || t6 === 1 / 0 ? (p6 = isNaN(t6) ? 1 : 0, f6 = i6) : (f6 = Math.floor(Math.log(t6) / Math.LN2), t6 * (w2 = Math.pow(2, -f6)) < 1 && (f6--, w2 *= 2), (t6 += f6 + N2 >= 1 ? n7 / w2 : n7 * Math.pow(2, 1 - N2)) * w2 >= 2 && (f6++, w2 /= 2), f6 + N2 >= i6 ? (p6 = 0, f6 = i6) : f6 + N2 >= 1 ? (p6 = (t6 * w2 - 1) * Math.pow(2, h6), f6 += N2) : (p6 = t6 * Math.pow(2, N2 - 1) * Math.pow(2, h6), f6 = 0)); h6 >= 8; a6[o7 + u6] = 255 & p6, u6 += l6, p6 /= 256, h6 -= 8)
|
|
;
|
|
for (f6 = f6 << h6 | p6, e7 += h6; e7 > 0; a6[o7 + u6] = 255 & f6, u6 += l6, f6 /= 256, e7 -= 8)
|
|
;
|
|
a6[o7 + u6 - l6] |= 128 * s5;
|
|
} };
|
|
e$1$1 = {};
|
|
n$1$1 = r$1;
|
|
i$1 = a$1$1;
|
|
o$1$1 = "function" == typeof Symbol && "function" == typeof Symbol.for ? Symbol.for("nodejs.util.inspect.custom") : null;
|
|
e$1$1.Buffer = u$1$1, e$1$1.SlowBuffer = function(t6) {
|
|
+t6 != t6 && (t6 = 0);
|
|
return u$1$1.alloc(+t6);
|
|
}, e$1$1.INSPECT_MAX_BYTES = 50;
|
|
e$1$1.kMaxLength = 2147483647, u$1$1.TYPED_ARRAY_SUPPORT = function() {
|
|
try {
|
|
var t6 = new Uint8Array(1), r7 = { foo: function() {
|
|
return 42;
|
|
} };
|
|
return Object.setPrototypeOf(r7, Uint8Array.prototype), Object.setPrototypeOf(t6, r7), 42 === t6.foo();
|
|
} catch (t7) {
|
|
return false;
|
|
}
|
|
}(), u$1$1.TYPED_ARRAY_SUPPORT || "undefined" == typeof console || "function" != typeof console.error || console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."), Object.defineProperty(u$1$1.prototype, "parent", { enumerable: true, get: function() {
|
|
if (u$1$1.isBuffer(this))
|
|
return this.buffer;
|
|
} }), Object.defineProperty(u$1$1.prototype, "offset", { enumerable: true, get: function() {
|
|
if (u$1$1.isBuffer(this))
|
|
return this.byteOffset;
|
|
} }), u$1$1.poolSize = 8192, u$1$1.from = function(t6, r7, e7) {
|
|
return s$1(t6, r7, e7);
|
|
}, Object.setPrototypeOf(u$1$1.prototype, Uint8Array.prototype), Object.setPrototypeOf(u$1$1, Uint8Array), u$1$1.alloc = function(t6, r7, e7) {
|
|
return function(t7, r8, e8) {
|
|
return h$1$1(t7), t7 <= 0 ? f$2(t7) : void 0 !== r8 ? "string" == typeof e8 ? f$2(t7).fill(r8, e8) : f$2(t7).fill(r8) : f$2(t7);
|
|
}(t6, r7, e7);
|
|
}, u$1$1.allocUnsafe = function(t6) {
|
|
return a$2(t6);
|
|
}, u$1$1.allocUnsafeSlow = function(t6) {
|
|
return a$2(t6);
|
|
}, u$1$1.isBuffer = function(t6) {
|
|
return null != t6 && true === t6._isBuffer && t6 !== u$1$1.prototype;
|
|
}, u$1$1.compare = function(t6, r7) {
|
|
if (F(t6, Uint8Array) && (t6 = u$1$1.from(t6, t6.offset, t6.byteLength)), F(r7, Uint8Array) && (r7 = u$1$1.from(r7, r7.offset, r7.byteLength)), !u$1$1.isBuffer(t6) || !u$1$1.isBuffer(r7))
|
|
throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
|
|
if (t6 === r7)
|
|
return 0;
|
|
for (var e7 = t6.length, n7 = r7.length, i6 = 0, o7 = Math.min(e7, n7); i6 < o7; ++i6)
|
|
if (t6[i6] !== r7[i6]) {
|
|
e7 = t6[i6], n7 = r7[i6];
|
|
break;
|
|
}
|
|
return e7 < n7 ? -1 : n7 < e7 ? 1 : 0;
|
|
}, u$1$1.isEncoding = function(t6) {
|
|
switch (String(t6).toLowerCase()) {
|
|
case "hex":
|
|
case "utf8":
|
|
case "utf-8":
|
|
case "ascii":
|
|
case "latin1":
|
|
case "binary":
|
|
case "base64":
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}, u$1$1.concat = function(t6, r7) {
|
|
if (!Array.isArray(t6))
|
|
throw new TypeError('"list" argument must be an Array of Buffers');
|
|
if (0 === t6.length)
|
|
return u$1$1.alloc(0);
|
|
var e7;
|
|
if (void 0 === r7)
|
|
for (r7 = 0, e7 = 0; e7 < t6.length; ++e7)
|
|
r7 += t6[e7].length;
|
|
var n7 = u$1$1.allocUnsafe(r7), i6 = 0;
|
|
for (e7 = 0; e7 < t6.length; ++e7) {
|
|
var o7 = t6[e7];
|
|
if (F(o7, Uint8Array) && (o7 = u$1$1.from(o7)), !u$1$1.isBuffer(o7))
|
|
throw new TypeError('"list" argument must be an Array of Buffers');
|
|
o7.copy(n7, i6), i6 += o7.length;
|
|
}
|
|
return n7;
|
|
}, u$1$1.byteLength = y2, u$1$1.prototype._isBuffer = true, u$1$1.prototype.swap16 = function() {
|
|
var t6 = this.length;
|
|
if (t6 % 2 != 0)
|
|
throw new RangeError("Buffer size must be a multiple of 16-bits");
|
|
for (var r7 = 0; r7 < t6; r7 += 2)
|
|
w(this, r7, r7 + 1);
|
|
return this;
|
|
}, u$1$1.prototype.swap32 = function() {
|
|
var t6 = this.length;
|
|
if (t6 % 4 != 0)
|
|
throw new RangeError("Buffer size must be a multiple of 32-bits");
|
|
for (var r7 = 0; r7 < t6; r7 += 4)
|
|
w(this, r7, r7 + 3), w(this, r7 + 1, r7 + 2);
|
|
return this;
|
|
}, u$1$1.prototype.swap64 = function() {
|
|
var t6 = this.length;
|
|
if (t6 % 8 != 0)
|
|
throw new RangeError("Buffer size must be a multiple of 64-bits");
|
|
for (var r7 = 0; r7 < t6; r7 += 8)
|
|
w(this, r7, r7 + 7), w(this, r7 + 1, r7 + 6), w(this, r7 + 2, r7 + 5), w(this, r7 + 3, r7 + 4);
|
|
return this;
|
|
}, u$1$1.prototype.toString = function() {
|
|
var t6 = this.length;
|
|
return 0 === t6 ? "" : 0 === arguments.length ? I(this, 0, t6) : g.apply(this, arguments);
|
|
}, u$1$1.prototype.toLocaleString = u$1$1.prototype.toString, u$1$1.prototype.equals = function(t6) {
|
|
if (!u$1$1.isBuffer(t6))
|
|
throw new TypeError("Argument must be a Buffer");
|
|
return this === t6 || 0 === u$1$1.compare(this, t6);
|
|
}, u$1$1.prototype.inspect = function() {
|
|
var t6 = "", r7 = e$1$1.INSPECT_MAX_BYTES;
|
|
return t6 = this.toString("hex", 0, r7).replace(/(.{2})/g, "$1 ").trim(), this.length > r7 && (t6 += " ... "), "<Buffer " + t6 + ">";
|
|
}, o$1$1 && (u$1$1.prototype[o$1$1] = u$1$1.prototype.inspect), u$1$1.prototype.compare = function(t6, r7, e7, n7, i6) {
|
|
if (F(t6, Uint8Array) && (t6 = u$1$1.from(t6, t6.offset, t6.byteLength)), !u$1$1.isBuffer(t6))
|
|
throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t6);
|
|
if (void 0 === r7 && (r7 = 0), void 0 === e7 && (e7 = t6 ? t6.length : 0), void 0 === n7 && (n7 = 0), void 0 === i6 && (i6 = this.length), r7 < 0 || e7 > t6.length || n7 < 0 || i6 > this.length)
|
|
throw new RangeError("out of range index");
|
|
if (n7 >= i6 && r7 >= e7)
|
|
return 0;
|
|
if (n7 >= i6)
|
|
return -1;
|
|
if (r7 >= e7)
|
|
return 1;
|
|
if (this === t6)
|
|
return 0;
|
|
for (var o7 = (i6 >>>= 0) - (n7 >>>= 0), f6 = (e7 >>>= 0) - (r7 >>>= 0), s5 = Math.min(o7, f6), h6 = this.slice(n7, i6), a6 = t6.slice(r7, e7), p6 = 0; p6 < s5; ++p6)
|
|
if (h6[p6] !== a6[p6]) {
|
|
o7 = h6[p6], f6 = a6[p6];
|
|
break;
|
|
}
|
|
return o7 < f6 ? -1 : f6 < o7 ? 1 : 0;
|
|
}, u$1$1.prototype.includes = function(t6, r7, e7) {
|
|
return -1 !== this.indexOf(t6, r7, e7);
|
|
}, u$1$1.prototype.indexOf = function(t6, r7, e7) {
|
|
return d(this, t6, r7, e7, true);
|
|
}, u$1$1.prototype.lastIndexOf = function(t6, r7, e7) {
|
|
return d(this, t6, r7, e7, false);
|
|
}, u$1$1.prototype.write = function(t6, r7, e7, n7) {
|
|
if (void 0 === r7)
|
|
n7 = "utf8", e7 = this.length, r7 = 0;
|
|
else if (void 0 === e7 && "string" == typeof r7)
|
|
n7 = r7, e7 = this.length, r7 = 0;
|
|
else {
|
|
if (!isFinite(r7))
|
|
throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
|
|
r7 >>>= 0, isFinite(e7) ? (e7 >>>= 0, void 0 === n7 && (n7 = "utf8")) : (n7 = e7, e7 = void 0);
|
|
}
|
|
var i6 = this.length - r7;
|
|
if ((void 0 === e7 || e7 > i6) && (e7 = i6), t6.length > 0 && (e7 < 0 || r7 < 0) || r7 > this.length)
|
|
throw new RangeError("Attempt to write outside buffer bounds");
|
|
n7 || (n7 = "utf8");
|
|
for (var o7 = false; ; )
|
|
switch (n7) {
|
|
case "hex":
|
|
return b(this, t6, r7, e7);
|
|
case "utf8":
|
|
case "utf-8":
|
|
return m(this, t6, r7, e7);
|
|
case "ascii":
|
|
return E(this, t6, r7, e7);
|
|
case "latin1":
|
|
case "binary":
|
|
return B(this, t6, r7, e7);
|
|
case "base64":
|
|
return A(this, t6, r7, e7);
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
return U(this, t6, r7, e7);
|
|
default:
|
|
if (o7)
|
|
throw new TypeError("Unknown encoding: " + n7);
|
|
n7 = ("" + n7).toLowerCase(), o7 = true;
|
|
}
|
|
}, u$1$1.prototype.toJSON = function() {
|
|
return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) };
|
|
};
|
|
u$1$1.prototype.slice = function(t6, r7) {
|
|
var e7 = this.length;
|
|
(t6 = ~~t6) < 0 ? (t6 += e7) < 0 && (t6 = 0) : t6 > e7 && (t6 = e7), (r7 = void 0 === r7 ? e7 : ~~r7) < 0 ? (r7 += e7) < 0 && (r7 = 0) : r7 > e7 && (r7 = e7), r7 < t6 && (r7 = t6);
|
|
var n7 = this.subarray(t6, r7);
|
|
return Object.setPrototypeOf(n7, u$1$1.prototype), n7;
|
|
}, u$1$1.prototype.readUIntLE = function(t6, r7, e7) {
|
|
t6 >>>= 0, r7 >>>= 0, e7 || x(t6, r7, this.length);
|
|
for (var n7 = this[t6], i6 = 1, o7 = 0; ++o7 < r7 && (i6 *= 256); )
|
|
n7 += this[t6 + o7] * i6;
|
|
return n7;
|
|
}, u$1$1.prototype.readUIntBE = function(t6, r7, e7) {
|
|
t6 >>>= 0, r7 >>>= 0, e7 || x(t6, r7, this.length);
|
|
for (var n7 = this[t6 + --r7], i6 = 1; r7 > 0 && (i6 *= 256); )
|
|
n7 += this[t6 + --r7] * i6;
|
|
return n7;
|
|
}, u$1$1.prototype.readUInt8 = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 1, this.length), this[t6];
|
|
}, u$1$1.prototype.readUInt16LE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 2, this.length), this[t6] | this[t6 + 1] << 8;
|
|
}, u$1$1.prototype.readUInt16BE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 2, this.length), this[t6] << 8 | this[t6 + 1];
|
|
}, u$1$1.prototype.readUInt32LE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 4, this.length), (this[t6] | this[t6 + 1] << 8 | this[t6 + 2] << 16) + 16777216 * this[t6 + 3];
|
|
}, u$1$1.prototype.readUInt32BE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 4, this.length), 16777216 * this[t6] + (this[t6 + 1] << 16 | this[t6 + 2] << 8 | this[t6 + 3]);
|
|
}, u$1$1.prototype.readIntLE = function(t6, r7, e7) {
|
|
t6 >>>= 0, r7 >>>= 0, e7 || x(t6, r7, this.length);
|
|
for (var n7 = this[t6], i6 = 1, o7 = 0; ++o7 < r7 && (i6 *= 256); )
|
|
n7 += this[t6 + o7] * i6;
|
|
return n7 >= (i6 *= 128) && (n7 -= Math.pow(2, 8 * r7)), n7;
|
|
}, u$1$1.prototype.readIntBE = function(t6, r7, e7) {
|
|
t6 >>>= 0, r7 >>>= 0, e7 || x(t6, r7, this.length);
|
|
for (var n7 = r7, i6 = 1, o7 = this[t6 + --n7]; n7 > 0 && (i6 *= 256); )
|
|
o7 += this[t6 + --n7] * i6;
|
|
return o7 >= (i6 *= 128) && (o7 -= Math.pow(2, 8 * r7)), o7;
|
|
}, u$1$1.prototype.readInt8 = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 1, this.length), 128 & this[t6] ? -1 * (255 - this[t6] + 1) : this[t6];
|
|
}, u$1$1.prototype.readInt16LE = function(t6, r7) {
|
|
t6 >>>= 0, r7 || x(t6, 2, this.length);
|
|
var e7 = this[t6] | this[t6 + 1] << 8;
|
|
return 32768 & e7 ? 4294901760 | e7 : e7;
|
|
}, u$1$1.prototype.readInt16BE = function(t6, r7) {
|
|
t6 >>>= 0, r7 || x(t6, 2, this.length);
|
|
var e7 = this[t6 + 1] | this[t6] << 8;
|
|
return 32768 & e7 ? 4294901760 | e7 : e7;
|
|
}, u$1$1.prototype.readInt32LE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 4, this.length), this[t6] | this[t6 + 1] << 8 | this[t6 + 2] << 16 | this[t6 + 3] << 24;
|
|
}, u$1$1.prototype.readInt32BE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 4, this.length), this[t6] << 24 | this[t6 + 1] << 16 | this[t6 + 2] << 8 | this[t6 + 3];
|
|
}, u$1$1.prototype.readFloatLE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 4, this.length), i$1.read(this, t6, true, 23, 4);
|
|
}, u$1$1.prototype.readFloatBE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 4, this.length), i$1.read(this, t6, false, 23, 4);
|
|
}, u$1$1.prototype.readDoubleLE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 8, this.length), i$1.read(this, t6, true, 52, 8);
|
|
}, u$1$1.prototype.readDoubleBE = function(t6, r7) {
|
|
return t6 >>>= 0, r7 || x(t6, 8, this.length), i$1.read(this, t6, false, 52, 8);
|
|
}, u$1$1.prototype.writeUIntLE = function(t6, r7, e7, n7) {
|
|
(t6 = +t6, r7 >>>= 0, e7 >>>= 0, n7) || C(this, t6, r7, e7, Math.pow(2, 8 * e7) - 1, 0);
|
|
var i6 = 1, o7 = 0;
|
|
for (this[r7] = 255 & t6; ++o7 < e7 && (i6 *= 256); )
|
|
this[r7 + o7] = t6 / i6 & 255;
|
|
return r7 + e7;
|
|
}, u$1$1.prototype.writeUIntBE = function(t6, r7, e7, n7) {
|
|
(t6 = +t6, r7 >>>= 0, e7 >>>= 0, n7) || C(this, t6, r7, e7, Math.pow(2, 8 * e7) - 1, 0);
|
|
var i6 = e7 - 1, o7 = 1;
|
|
for (this[r7 + i6] = 255 & t6; --i6 >= 0 && (o7 *= 256); )
|
|
this[r7 + i6] = t6 / o7 & 255;
|
|
return r7 + e7;
|
|
}, u$1$1.prototype.writeUInt8 = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 1, 255, 0), this[r7] = 255 & t6, r7 + 1;
|
|
}, u$1$1.prototype.writeUInt16LE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 2, 65535, 0), this[r7] = 255 & t6, this[r7 + 1] = t6 >>> 8, r7 + 2;
|
|
}, u$1$1.prototype.writeUInt16BE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 2, 65535, 0), this[r7] = t6 >>> 8, this[r7 + 1] = 255 & t6, r7 + 2;
|
|
}, u$1$1.prototype.writeUInt32LE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 4, 4294967295, 0), this[r7 + 3] = t6 >>> 24, this[r7 + 2] = t6 >>> 16, this[r7 + 1] = t6 >>> 8, this[r7] = 255 & t6, r7 + 4;
|
|
}, u$1$1.prototype.writeUInt32BE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 4, 4294967295, 0), this[r7] = t6 >>> 24, this[r7 + 1] = t6 >>> 16, this[r7 + 2] = t6 >>> 8, this[r7 + 3] = 255 & t6, r7 + 4;
|
|
}, u$1$1.prototype.writeIntLE = function(t6, r7, e7, n7) {
|
|
if (t6 = +t6, r7 >>>= 0, !n7) {
|
|
var i6 = Math.pow(2, 8 * e7 - 1);
|
|
C(this, t6, r7, e7, i6 - 1, -i6);
|
|
}
|
|
var o7 = 0, f6 = 1, u6 = 0;
|
|
for (this[r7] = 255 & t6; ++o7 < e7 && (f6 *= 256); )
|
|
t6 < 0 && 0 === u6 && 0 !== this[r7 + o7 - 1] && (u6 = 1), this[r7 + o7] = (t6 / f6 >> 0) - u6 & 255;
|
|
return r7 + e7;
|
|
}, u$1$1.prototype.writeIntBE = function(t6, r7, e7, n7) {
|
|
if (t6 = +t6, r7 >>>= 0, !n7) {
|
|
var i6 = Math.pow(2, 8 * e7 - 1);
|
|
C(this, t6, r7, e7, i6 - 1, -i6);
|
|
}
|
|
var o7 = e7 - 1, f6 = 1, u6 = 0;
|
|
for (this[r7 + o7] = 255 & t6; --o7 >= 0 && (f6 *= 256); )
|
|
t6 < 0 && 0 === u6 && 0 !== this[r7 + o7 + 1] && (u6 = 1), this[r7 + o7] = (t6 / f6 >> 0) - u6 & 255;
|
|
return r7 + e7;
|
|
}, u$1$1.prototype.writeInt8 = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 1, 127, -128), t6 < 0 && (t6 = 255 + t6 + 1), this[r7] = 255 & t6, r7 + 1;
|
|
}, u$1$1.prototype.writeInt16LE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 2, 32767, -32768), this[r7] = 255 & t6, this[r7 + 1] = t6 >>> 8, r7 + 2;
|
|
}, u$1$1.prototype.writeInt16BE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 2, 32767, -32768), this[r7] = t6 >>> 8, this[r7 + 1] = 255 & t6, r7 + 2;
|
|
}, u$1$1.prototype.writeInt32LE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 4, 2147483647, -2147483648), this[r7] = 255 & t6, this[r7 + 1] = t6 >>> 8, this[r7 + 2] = t6 >>> 16, this[r7 + 3] = t6 >>> 24, r7 + 4;
|
|
}, u$1$1.prototype.writeInt32BE = function(t6, r7, e7) {
|
|
return t6 = +t6, r7 >>>= 0, e7 || C(this, t6, r7, 4, 2147483647, -2147483648), t6 < 0 && (t6 = 4294967295 + t6 + 1), this[r7] = t6 >>> 24, this[r7 + 1] = t6 >>> 16, this[r7 + 2] = t6 >>> 8, this[r7 + 3] = 255 & t6, r7 + 4;
|
|
}, u$1$1.prototype.writeFloatLE = function(t6, r7, e7) {
|
|
return k(this, t6, r7, true, e7);
|
|
}, u$1$1.prototype.writeFloatBE = function(t6, r7, e7) {
|
|
return k(this, t6, r7, false, e7);
|
|
}, u$1$1.prototype.writeDoubleLE = function(t6, r7, e7) {
|
|
return M(this, t6, r7, true, e7);
|
|
}, u$1$1.prototype.writeDoubleBE = function(t6, r7, e7) {
|
|
return M(this, t6, r7, false, e7);
|
|
}, u$1$1.prototype.copy = function(t6, r7, e7, n7) {
|
|
if (!u$1$1.isBuffer(t6))
|
|
throw new TypeError("argument should be a Buffer");
|
|
if (e7 || (e7 = 0), n7 || 0 === n7 || (n7 = this.length), r7 >= t6.length && (r7 = t6.length), r7 || (r7 = 0), n7 > 0 && n7 < e7 && (n7 = e7), n7 === e7)
|
|
return 0;
|
|
if (0 === t6.length || 0 === this.length)
|
|
return 0;
|
|
if (r7 < 0)
|
|
throw new RangeError("targetStart out of bounds");
|
|
if (e7 < 0 || e7 >= this.length)
|
|
throw new RangeError("Index out of range");
|
|
if (n7 < 0)
|
|
throw new RangeError("sourceEnd out of bounds");
|
|
n7 > this.length && (n7 = this.length), t6.length - r7 < n7 - e7 && (n7 = t6.length - r7 + e7);
|
|
var i6 = n7 - e7;
|
|
if (this === t6 && "function" == typeof Uint8Array.prototype.copyWithin)
|
|
this.copyWithin(r7, e7, n7);
|
|
else if (this === t6 && e7 < r7 && r7 < n7)
|
|
for (var o7 = i6 - 1; o7 >= 0; --o7)
|
|
t6[o7 + r7] = this[o7 + e7];
|
|
else
|
|
Uint8Array.prototype.set.call(t6, this.subarray(e7, n7), r7);
|
|
return i6;
|
|
}, u$1$1.prototype.fill = function(t6, r7, e7, n7) {
|
|
if ("string" == typeof t6) {
|
|
if ("string" == typeof r7 ? (n7 = r7, r7 = 0, e7 = this.length) : "string" == typeof e7 && (n7 = e7, e7 = this.length), void 0 !== n7 && "string" != typeof n7)
|
|
throw new TypeError("encoding must be a string");
|
|
if ("string" == typeof n7 && !u$1$1.isEncoding(n7))
|
|
throw new TypeError("Unknown encoding: " + n7);
|
|
if (1 === t6.length) {
|
|
var i6 = t6.charCodeAt(0);
|
|
("utf8" === n7 && i6 < 128 || "latin1" === n7) && (t6 = i6);
|
|
}
|
|
} else
|
|
"number" == typeof t6 ? t6 &= 255 : "boolean" == typeof t6 && (t6 = Number(t6));
|
|
if (r7 < 0 || this.length < r7 || this.length < e7)
|
|
throw new RangeError("Out of range index");
|
|
if (e7 <= r7)
|
|
return this;
|
|
var o7;
|
|
if (r7 >>>= 0, e7 = void 0 === e7 ? this.length : e7 >>> 0, t6 || (t6 = 0), "number" == typeof t6)
|
|
for (o7 = r7; o7 < e7; ++o7)
|
|
this[o7] = t6;
|
|
else {
|
|
var f6 = u$1$1.isBuffer(t6) ? t6 : u$1$1.from(t6, n7), s5 = f6.length;
|
|
if (0 === s5)
|
|
throw new TypeError('The value "' + t6 + '" is invalid for argument "value"');
|
|
for (o7 = 0; o7 < e7 - r7; ++o7)
|
|
this[o7 + r7] = f6[o7 % s5];
|
|
}
|
|
return this;
|
|
};
|
|
j = /[^+/0-9A-Za-z-_]/g;
|
|
Y = function() {
|
|
for (var t6 = new Array(256), r7 = 0; r7 < 16; ++r7)
|
|
for (var e7 = 16 * r7, n7 = 0; n7 < 16; ++n7)
|
|
t6[e7 + n7] = "0123456789abcdef"[r7] + "0123456789abcdef"[n7];
|
|
return t6;
|
|
}();
|
|
e$1$1.Buffer;
|
|
e$1$1.INSPECT_MAX_BYTES;
|
|
e$1$1.kMaxLength;
|
|
e2 = {};
|
|
n2 = e$1$1;
|
|
o2 = n2.Buffer;
|
|
o2.from && o2.alloc && o2.allocUnsafe && o2.allocUnsafeSlow ? e2 = n2 : (t2(n2, e2), e2.Buffer = f2), f2.prototype = Object.create(o2.prototype), t2(o2, f2), f2.from = function(r7, e7, n7) {
|
|
if ("number" == typeof r7)
|
|
throw new TypeError("Argument must not be a number");
|
|
return o2(r7, e7, n7);
|
|
}, f2.alloc = function(r7, e7, n7) {
|
|
if ("number" != typeof r7)
|
|
throw new TypeError("Argument must be a number");
|
|
var t6 = o2(r7);
|
|
return void 0 !== e7 ? "string" == typeof n7 ? t6.fill(e7, n7) : t6.fill(e7) : t6.fill(0), t6;
|
|
}, f2.allocUnsafe = function(r7) {
|
|
if ("number" != typeof r7)
|
|
throw new TypeError("Argument must be a number");
|
|
return o2(r7);
|
|
}, f2.allocUnsafeSlow = function(r7) {
|
|
if ("number" != typeof r7)
|
|
throw new TypeError("Argument must be a number");
|
|
return n2.SlowBuffer(r7);
|
|
};
|
|
u2 = e2;
|
|
e$1 = {};
|
|
s2 = u2.Buffer;
|
|
i2 = s2.isEncoding || function(t6) {
|
|
switch ((t6 = "" + t6) && t6.toLowerCase()) {
|
|
case "hex":
|
|
case "utf8":
|
|
case "utf-8":
|
|
case "ascii":
|
|
case "binary":
|
|
case "base64":
|
|
case "ucs2":
|
|
case "ucs-2":
|
|
case "utf16le":
|
|
case "utf-16le":
|
|
case "raw":
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
};
|
|
e$1.StringDecoder = a2, a2.prototype.write = function(t6) {
|
|
if (0 === t6.length)
|
|
return "";
|
|
var e7, s5;
|
|
if (this.lastNeed) {
|
|
if (void 0 === (e7 = this.fillLast(t6)))
|
|
return "";
|
|
s5 = this.lastNeed, this.lastNeed = 0;
|
|
} else
|
|
s5 = 0;
|
|
return s5 < t6.length ? e7 ? e7 + this.text(t6, s5) : this.text(t6, s5) : e7 || "";
|
|
}, a2.prototype.end = function(t6) {
|
|
var e7 = t6 && t6.length ? this.write(t6) : "";
|
|
return this.lastNeed ? e7 + "\uFFFD" : e7;
|
|
}, a2.prototype.text = function(t6, e7) {
|
|
var s5 = function(t7, e8, s6) {
|
|
var i7 = e8.length - 1;
|
|
if (i7 < s6)
|
|
return 0;
|
|
var a6 = r2(e8[i7]);
|
|
if (a6 >= 0)
|
|
return a6 > 0 && (t7.lastNeed = a6 - 1), a6;
|
|
if (--i7 < s6 || -2 === a6)
|
|
return 0;
|
|
if ((a6 = r2(e8[i7])) >= 0)
|
|
return a6 > 0 && (t7.lastNeed = a6 - 2), a6;
|
|
if (--i7 < s6 || -2 === a6)
|
|
return 0;
|
|
if ((a6 = r2(e8[i7])) >= 0)
|
|
return a6 > 0 && (2 === a6 ? a6 = 0 : t7.lastNeed = a6 - 3), a6;
|
|
return 0;
|
|
}(this, t6, e7);
|
|
if (!this.lastNeed)
|
|
return t6.toString("utf8", e7);
|
|
this.lastTotal = s5;
|
|
var i6 = t6.length - (s5 - this.lastNeed);
|
|
return t6.copy(this.lastChar, 0, i6), t6.toString("utf8", e7, i6);
|
|
}, a2.prototype.fillLast = function(t6) {
|
|
if (this.lastNeed <= t6.length)
|
|
return t6.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal);
|
|
t6.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, t6.length), this.lastNeed -= t6.length;
|
|
};
|
|
e$1.StringDecoder;
|
|
e$1.StringDecoder;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/string_decoder.js
|
|
var string_decoder_exports = {};
|
|
__export(string_decoder_exports, {
|
|
StringDecoder: () => StringDecoder,
|
|
default: () => e$1
|
|
});
|
|
var StringDecoder;
|
|
var init_string_decoder = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/string_decoder.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
init_chunk_4ccc3a29();
|
|
init_chunk_4ccc3a29();
|
|
StringDecoder = e$1.StringDecoder;
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/from.js
|
|
var require_from = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/from.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require_primordials();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require_errors().codes;
|
|
function from(Readable, iterable, opts) {
|
|
let iterator;
|
|
if (typeof iterable === "string" || iterable instanceof Buffer3) {
|
|
return new Readable({
|
|
objectMode: true,
|
|
...opts,
|
|
read() {
|
|
this.push(iterable);
|
|
this.push(null);
|
|
}
|
|
});
|
|
}
|
|
let isAsync;
|
|
if (iterable && iterable[SymbolAsyncIterator]) {
|
|
isAsync = true;
|
|
iterator = iterable[SymbolAsyncIterator]();
|
|
} else if (iterable && iterable[SymbolIterator]) {
|
|
isAsync = false;
|
|
iterator = iterable[SymbolIterator]();
|
|
} else {
|
|
throw new ERR_INVALID_ARG_TYPE("iterable", ["Iterable"], iterable);
|
|
}
|
|
const readable = new Readable({
|
|
objectMode: true,
|
|
highWaterMark: 1,
|
|
// TODO(ronag): What options should be allowed?
|
|
...opts
|
|
});
|
|
let reading = false;
|
|
readable._read = function() {
|
|
if (!reading) {
|
|
reading = true;
|
|
next();
|
|
}
|
|
};
|
|
readable._destroy = function(error, cb) {
|
|
PromisePrototypeThen(
|
|
close(error),
|
|
() => process3.nextTick(cb, error),
|
|
// nextTick is here in case cb throws
|
|
(e7) => process3.nextTick(cb, e7 || error)
|
|
);
|
|
};
|
|
async function close(error) {
|
|
const hadError = error !== void 0 && error !== null;
|
|
const hasThrow = typeof iterator.throw === "function";
|
|
if (hadError && hasThrow) {
|
|
const { value, done } = await iterator.throw(error);
|
|
await value;
|
|
if (done) {
|
|
return;
|
|
}
|
|
}
|
|
if (typeof iterator.return === "function") {
|
|
const { value } = await iterator.return();
|
|
await value;
|
|
}
|
|
}
|
|
async function next() {
|
|
for (; ; ) {
|
|
try {
|
|
const { value, done } = isAsync ? await iterator.next() : iterator.next();
|
|
if (done) {
|
|
readable.push(null);
|
|
} else {
|
|
const res = value && typeof value.then === "function" ? await value : value;
|
|
if (res === null) {
|
|
reading = false;
|
|
throw new ERR_STREAM_NULL_VALUES();
|
|
} else if (readable.push(res)) {
|
|
continue;
|
|
} else {
|
|
reading = false;
|
|
}
|
|
}
|
|
} catch (err) {
|
|
readable.destroy(err);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return readable;
|
|
}
|
|
module.exports = from;
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/readable.js
|
|
var require_readable = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/readable.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var {
|
|
ArrayPrototypeIndexOf,
|
|
NumberIsInteger,
|
|
NumberIsNaN,
|
|
NumberParseInt,
|
|
ObjectDefineProperties,
|
|
ObjectKeys,
|
|
ObjectSetPrototypeOf,
|
|
Promise: Promise2,
|
|
SafeSet,
|
|
SymbolAsyncIterator,
|
|
Symbol: Symbol2
|
|
} = require_primordials();
|
|
module.exports = Readable;
|
|
Readable.ReadableState = ReadableState;
|
|
var { EventEmitter: EE } = (init_events(), __toCommonJS(events_exports));
|
|
var { Stream, prependListener: prependListener2 } = require_legacy();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var { addAbortSignal } = require_add_abort_signal();
|
|
var eos = require_end_of_stream();
|
|
var debug = require_util().debuglog("stream", (fn) => {
|
|
debug = fn;
|
|
});
|
|
var BufferList = require_buffer_list();
|
|
var destroyImpl = require_destroy();
|
|
var { getHighWaterMark, getDefaultHighWaterMark } = require_state();
|
|
var {
|
|
aggregateTwoErrors,
|
|
codes: {
|
|
ERR_INVALID_ARG_TYPE,
|
|
ERR_METHOD_NOT_IMPLEMENTED,
|
|
ERR_OUT_OF_RANGE,
|
|
ERR_STREAM_PUSH_AFTER_EOF,
|
|
ERR_STREAM_UNSHIFT_AFTER_END_EVENT
|
|
}
|
|
} = require_errors();
|
|
var { validateObject } = require_validators();
|
|
var kPaused = Symbol2("kPaused");
|
|
var { StringDecoder: StringDecoder2 } = (init_string_decoder(), __toCommonJS(string_decoder_exports));
|
|
var from = require_from();
|
|
ObjectSetPrototypeOf(Readable.prototype, Stream.prototype);
|
|
ObjectSetPrototypeOf(Readable, Stream);
|
|
var nop = () => {
|
|
};
|
|
var { errorOrDestroy } = destroyImpl;
|
|
function ReadableState(options, stream, isDuplex) {
|
|
if (typeof isDuplex !== "boolean")
|
|
isDuplex = stream instanceof require_duplex();
|
|
this.objectMode = !!(options && options.objectMode);
|
|
if (isDuplex)
|
|
this.objectMode = this.objectMode || !!(options && options.readableObjectMode);
|
|
this.highWaterMark = options ? getHighWaterMark(this, options, "readableHighWaterMark", isDuplex) : getDefaultHighWaterMark(false);
|
|
this.buffer = new BufferList();
|
|
this.length = 0;
|
|
this.pipes = [];
|
|
this.flowing = null;
|
|
this.ended = false;
|
|
this.endEmitted = false;
|
|
this.reading = false;
|
|
this.constructed = true;
|
|
this.sync = true;
|
|
this.needReadable = false;
|
|
this.emittedReadable = false;
|
|
this.readableListening = false;
|
|
this.resumeScheduled = false;
|
|
this[kPaused] = null;
|
|
this.errorEmitted = false;
|
|
this.emitClose = !options || options.emitClose !== false;
|
|
this.autoDestroy = !options || options.autoDestroy !== false;
|
|
this.destroyed = false;
|
|
this.errored = null;
|
|
this.closed = false;
|
|
this.closeEmitted = false;
|
|
this.defaultEncoding = options && options.defaultEncoding || "utf8";
|
|
this.awaitDrainWriters = null;
|
|
this.multiAwaitDrain = false;
|
|
this.readingMore = false;
|
|
this.dataEmitted = false;
|
|
this.decoder = null;
|
|
this.encoding = null;
|
|
if (options && options.encoding) {
|
|
this.decoder = new StringDecoder2(options.encoding);
|
|
this.encoding = options.encoding;
|
|
}
|
|
}
|
|
function Readable(options) {
|
|
if (!(this instanceof Readable))
|
|
return new Readable(options);
|
|
const isDuplex = this instanceof require_duplex();
|
|
this._readableState = new ReadableState(options, this, isDuplex);
|
|
if (options) {
|
|
if (typeof options.read === "function")
|
|
this._read = options.read;
|
|
if (typeof options.destroy === "function")
|
|
this._destroy = options.destroy;
|
|
if (typeof options.construct === "function")
|
|
this._construct = options.construct;
|
|
if (options.signal && !isDuplex)
|
|
addAbortSignal(options.signal, this);
|
|
}
|
|
Stream.call(this, options);
|
|
destroyImpl.construct(this, () => {
|
|
if (this._readableState.needReadable) {
|
|
maybeReadMore(this, this._readableState);
|
|
}
|
|
});
|
|
}
|
|
Readable.prototype.destroy = destroyImpl.destroy;
|
|
Readable.prototype._undestroy = destroyImpl.undestroy;
|
|
Readable.prototype._destroy = function(err, cb) {
|
|
cb(err);
|
|
};
|
|
Readable.prototype[EE.captureRejectionSymbol] = function(err) {
|
|
this.destroy(err);
|
|
};
|
|
Readable.prototype.push = function(chunk, encoding) {
|
|
return readableAddChunk(this, chunk, encoding, false);
|
|
};
|
|
Readable.prototype.unshift = function(chunk, encoding) {
|
|
return readableAddChunk(this, chunk, encoding, true);
|
|
};
|
|
function readableAddChunk(stream, chunk, encoding, addToFront) {
|
|
debug("readableAddChunk", chunk);
|
|
const state = stream._readableState;
|
|
let err;
|
|
if (!state.objectMode) {
|
|
if (typeof chunk === "string") {
|
|
encoding = encoding || state.defaultEncoding;
|
|
if (state.encoding !== encoding) {
|
|
if (addToFront && state.encoding) {
|
|
chunk = Buffer3.from(chunk, encoding).toString(state.encoding);
|
|
} else {
|
|
chunk = Buffer3.from(chunk, encoding);
|
|
encoding = "";
|
|
}
|
|
}
|
|
} else if (chunk instanceof Buffer3) {
|
|
encoding = "";
|
|
} else if (Stream._isUint8Array(chunk)) {
|
|
chunk = Stream._uint8ArrayToBuffer(chunk);
|
|
encoding = "";
|
|
} else if (chunk != null) {
|
|
err = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk);
|
|
}
|
|
}
|
|
if (err) {
|
|
errorOrDestroy(stream, err);
|
|
} else if (chunk === null) {
|
|
state.reading = false;
|
|
onEofChunk(stream, state);
|
|
} else if (state.objectMode || chunk && chunk.length > 0) {
|
|
if (addToFront) {
|
|
if (state.endEmitted)
|
|
errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());
|
|
else if (state.destroyed || state.errored)
|
|
return false;
|
|
else
|
|
addChunk(stream, state, chunk, true);
|
|
} else if (state.ended) {
|
|
errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
|
|
} else if (state.destroyed || state.errored) {
|
|
return false;
|
|
} else {
|
|
state.reading = false;
|
|
if (state.decoder && !encoding) {
|
|
chunk = state.decoder.write(chunk);
|
|
if (state.objectMode || chunk.length !== 0)
|
|
addChunk(stream, state, chunk, false);
|
|
else
|
|
maybeReadMore(stream, state);
|
|
} else {
|
|
addChunk(stream, state, chunk, false);
|
|
}
|
|
}
|
|
} else if (!addToFront) {
|
|
state.reading = false;
|
|
maybeReadMore(stream, state);
|
|
}
|
|
return !state.ended && (state.length < state.highWaterMark || state.length === 0);
|
|
}
|
|
function addChunk(stream, state, chunk, addToFront) {
|
|
if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount("data") > 0) {
|
|
if (state.multiAwaitDrain) {
|
|
state.awaitDrainWriters.clear();
|
|
} else {
|
|
state.awaitDrainWriters = null;
|
|
}
|
|
state.dataEmitted = true;
|
|
stream.emit("data", chunk);
|
|
} else {
|
|
state.length += state.objectMode ? 1 : chunk.length;
|
|
if (addToFront)
|
|
state.buffer.unshift(chunk);
|
|
else
|
|
state.buffer.push(chunk);
|
|
if (state.needReadable)
|
|
emitReadable(stream);
|
|
}
|
|
maybeReadMore(stream, state);
|
|
}
|
|
Readable.prototype.isPaused = function() {
|
|
const state = this._readableState;
|
|
return state[kPaused] === true || state.flowing === false;
|
|
};
|
|
Readable.prototype.setEncoding = function(enc) {
|
|
const decoder = new StringDecoder2(enc);
|
|
this._readableState.decoder = decoder;
|
|
this._readableState.encoding = this._readableState.decoder.encoding;
|
|
const buffer = this._readableState.buffer;
|
|
let content = "";
|
|
for (const data of buffer) {
|
|
content += decoder.write(data);
|
|
}
|
|
buffer.clear();
|
|
if (content !== "")
|
|
buffer.push(content);
|
|
this._readableState.length = content.length;
|
|
return this;
|
|
};
|
|
var MAX_HWM = 1073741824;
|
|
function computeNewHighWaterMark(n7) {
|
|
if (n7 > MAX_HWM) {
|
|
throw new ERR_OUT_OF_RANGE("size", "<= 1GiB", n7);
|
|
} else {
|
|
n7--;
|
|
n7 |= n7 >>> 1;
|
|
n7 |= n7 >>> 2;
|
|
n7 |= n7 >>> 4;
|
|
n7 |= n7 >>> 8;
|
|
n7 |= n7 >>> 16;
|
|
n7++;
|
|
}
|
|
return n7;
|
|
}
|
|
function howMuchToRead(n7, state) {
|
|
if (n7 <= 0 || state.length === 0 && state.ended)
|
|
return 0;
|
|
if (state.objectMode)
|
|
return 1;
|
|
if (NumberIsNaN(n7)) {
|
|
if (state.flowing && state.length)
|
|
return state.buffer.first().length;
|
|
return state.length;
|
|
}
|
|
if (n7 <= state.length)
|
|
return n7;
|
|
return state.ended ? state.length : 0;
|
|
}
|
|
Readable.prototype.read = function(n7) {
|
|
debug("read", n7);
|
|
if (n7 === void 0) {
|
|
n7 = NaN;
|
|
} else if (!NumberIsInteger(n7)) {
|
|
n7 = NumberParseInt(n7, 10);
|
|
}
|
|
const state = this._readableState;
|
|
const nOrig = n7;
|
|
if (n7 > state.highWaterMark)
|
|
state.highWaterMark = computeNewHighWaterMark(n7);
|
|
if (n7 !== 0)
|
|
state.emittedReadable = false;
|
|
if (n7 === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
|
|
debug("read: emitReadable", state.length, state.ended);
|
|
if (state.length === 0 && state.ended)
|
|
endReadable(this);
|
|
else
|
|
emitReadable(this);
|
|
return null;
|
|
}
|
|
n7 = howMuchToRead(n7, state);
|
|
if (n7 === 0 && state.ended) {
|
|
if (state.length === 0)
|
|
endReadable(this);
|
|
return null;
|
|
}
|
|
let doRead = state.needReadable;
|
|
debug("need readable", doRead);
|
|
if (state.length === 0 || state.length - n7 < state.highWaterMark) {
|
|
doRead = true;
|
|
debug("length less than watermark", doRead);
|
|
}
|
|
if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {
|
|
doRead = false;
|
|
debug("reading, ended or constructing", doRead);
|
|
} else if (doRead) {
|
|
debug("do read");
|
|
state.reading = true;
|
|
state.sync = true;
|
|
if (state.length === 0)
|
|
state.needReadable = true;
|
|
try {
|
|
this._read(state.highWaterMark);
|
|
} catch (err) {
|
|
errorOrDestroy(this, err);
|
|
}
|
|
state.sync = false;
|
|
if (!state.reading)
|
|
n7 = howMuchToRead(nOrig, state);
|
|
}
|
|
let ret;
|
|
if (n7 > 0)
|
|
ret = fromList(n7, state);
|
|
else
|
|
ret = null;
|
|
if (ret === null) {
|
|
state.needReadable = state.length <= state.highWaterMark;
|
|
n7 = 0;
|
|
} else {
|
|
state.length -= n7;
|
|
if (state.multiAwaitDrain) {
|
|
state.awaitDrainWriters.clear();
|
|
} else {
|
|
state.awaitDrainWriters = null;
|
|
}
|
|
}
|
|
if (state.length === 0) {
|
|
if (!state.ended)
|
|
state.needReadable = true;
|
|
if (nOrig !== n7 && state.ended)
|
|
endReadable(this);
|
|
}
|
|
if (ret !== null && !state.errorEmitted && !state.closeEmitted) {
|
|
state.dataEmitted = true;
|
|
this.emit("data", ret);
|
|
}
|
|
return ret;
|
|
};
|
|
function onEofChunk(stream, state) {
|
|
debug("onEofChunk");
|
|
if (state.ended)
|
|
return;
|
|
if (state.decoder) {
|
|
const chunk = state.decoder.end();
|
|
if (chunk && chunk.length) {
|
|
state.buffer.push(chunk);
|
|
state.length += state.objectMode ? 1 : chunk.length;
|
|
}
|
|
}
|
|
state.ended = true;
|
|
if (state.sync) {
|
|
emitReadable(stream);
|
|
} else {
|
|
state.needReadable = false;
|
|
state.emittedReadable = true;
|
|
emitReadable_(stream);
|
|
}
|
|
}
|
|
function emitReadable(stream) {
|
|
const state = stream._readableState;
|
|
debug("emitReadable", state.needReadable, state.emittedReadable);
|
|
state.needReadable = false;
|
|
if (!state.emittedReadable) {
|
|
debug("emitReadable", state.flowing);
|
|
state.emittedReadable = true;
|
|
process3.nextTick(emitReadable_, stream);
|
|
}
|
|
}
|
|
function emitReadable_(stream) {
|
|
const state = stream._readableState;
|
|
debug("emitReadable_", state.destroyed, state.length, state.ended);
|
|
if (!state.destroyed && !state.errored && (state.length || state.ended)) {
|
|
stream.emit("readable");
|
|
state.emittedReadable = false;
|
|
}
|
|
state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
|
|
flow(stream);
|
|
}
|
|
function maybeReadMore(stream, state) {
|
|
if (!state.readingMore && state.constructed) {
|
|
state.readingMore = true;
|
|
process3.nextTick(maybeReadMore_, stream, state);
|
|
}
|
|
}
|
|
function maybeReadMore_(stream, state) {
|
|
while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
|
|
const len = state.length;
|
|
debug("maybeReadMore read 0");
|
|
stream.read(0);
|
|
if (len === state.length)
|
|
break;
|
|
}
|
|
state.readingMore = false;
|
|
}
|
|
Readable.prototype._read = function(n7) {
|
|
throw new ERR_METHOD_NOT_IMPLEMENTED("_read()");
|
|
};
|
|
Readable.prototype.pipe = function(dest, pipeOpts) {
|
|
const src = this;
|
|
const state = this._readableState;
|
|
if (state.pipes.length === 1) {
|
|
if (!state.multiAwaitDrain) {
|
|
state.multiAwaitDrain = true;
|
|
state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : []);
|
|
}
|
|
}
|
|
state.pipes.push(dest);
|
|
debug("pipe count=%d opts=%j", state.pipes.length, pipeOpts);
|
|
const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process3.stdout && dest !== process3.stderr;
|
|
const endFn = doEnd ? onend : unpipe;
|
|
if (state.endEmitted)
|
|
process3.nextTick(endFn);
|
|
else
|
|
src.once("end", endFn);
|
|
dest.on("unpipe", onunpipe);
|
|
function onunpipe(readable, unpipeInfo) {
|
|
debug("onunpipe");
|
|
if (readable === src) {
|
|
if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
|
|
unpipeInfo.hasUnpiped = true;
|
|
cleanup();
|
|
}
|
|
}
|
|
}
|
|
function onend() {
|
|
debug("onend");
|
|
dest.end();
|
|
}
|
|
let ondrain;
|
|
let cleanedUp = false;
|
|
function cleanup() {
|
|
debug("cleanup");
|
|
dest.removeListener("close", onclose);
|
|
dest.removeListener("finish", onfinish);
|
|
if (ondrain) {
|
|
dest.removeListener("drain", ondrain);
|
|
}
|
|
dest.removeListener("error", onerror);
|
|
dest.removeListener("unpipe", onunpipe);
|
|
src.removeListener("end", onend);
|
|
src.removeListener("end", unpipe);
|
|
src.removeListener("data", ondata);
|
|
cleanedUp = true;
|
|
if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain))
|
|
ondrain();
|
|
}
|
|
function pause() {
|
|
if (!cleanedUp) {
|
|
if (state.pipes.length === 1 && state.pipes[0] === dest) {
|
|
debug("false write response, pause", 0);
|
|
state.awaitDrainWriters = dest;
|
|
state.multiAwaitDrain = false;
|
|
} else if (state.pipes.length > 1 && state.pipes.includes(dest)) {
|
|
debug("false write response, pause", state.awaitDrainWriters.size);
|
|
state.awaitDrainWriters.add(dest);
|
|
}
|
|
src.pause();
|
|
}
|
|
if (!ondrain) {
|
|
ondrain = pipeOnDrain(src, dest);
|
|
dest.on("drain", ondrain);
|
|
}
|
|
}
|
|
src.on("data", ondata);
|
|
function ondata(chunk) {
|
|
debug("ondata");
|
|
const ret = dest.write(chunk);
|
|
debug("dest.write", ret);
|
|
if (ret === false) {
|
|
pause();
|
|
}
|
|
}
|
|
function onerror(er) {
|
|
debug("onerror", er);
|
|
unpipe();
|
|
dest.removeListener("error", onerror);
|
|
if (dest.listenerCount("error") === 0) {
|
|
const s5 = dest._writableState || dest._readableState;
|
|
if (s5 && !s5.errorEmitted) {
|
|
errorOrDestroy(dest, er);
|
|
} else {
|
|
dest.emit("error", er);
|
|
}
|
|
}
|
|
}
|
|
prependListener2(dest, "error", onerror);
|
|
function onclose() {
|
|
dest.removeListener("finish", onfinish);
|
|
unpipe();
|
|
}
|
|
dest.once("close", onclose);
|
|
function onfinish() {
|
|
debug("onfinish");
|
|
dest.removeListener("close", onclose);
|
|
unpipe();
|
|
}
|
|
dest.once("finish", onfinish);
|
|
function unpipe() {
|
|
debug("unpipe");
|
|
src.unpipe(dest);
|
|
}
|
|
dest.emit("pipe", src);
|
|
if (dest.writableNeedDrain === true) {
|
|
if (state.flowing) {
|
|
pause();
|
|
}
|
|
} else if (!state.flowing) {
|
|
debug("pipe resume");
|
|
src.resume();
|
|
}
|
|
return dest;
|
|
};
|
|
function pipeOnDrain(src, dest) {
|
|
return function pipeOnDrainFunctionResult() {
|
|
const state = src._readableState;
|
|
if (state.awaitDrainWriters === dest) {
|
|
debug("pipeOnDrain", 1);
|
|
state.awaitDrainWriters = null;
|
|
} else if (state.multiAwaitDrain) {
|
|
debug("pipeOnDrain", state.awaitDrainWriters.size);
|
|
state.awaitDrainWriters.delete(dest);
|
|
}
|
|
if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount("data")) {
|
|
src.resume();
|
|
}
|
|
};
|
|
}
|
|
Readable.prototype.unpipe = function(dest) {
|
|
const state = this._readableState;
|
|
const unpipeInfo = {
|
|
hasUnpiped: false
|
|
};
|
|
if (state.pipes.length === 0)
|
|
return this;
|
|
if (!dest) {
|
|
const dests = state.pipes;
|
|
state.pipes = [];
|
|
this.pause();
|
|
for (let i6 = 0; i6 < dests.length; i6++)
|
|
dests[i6].emit("unpipe", this, {
|
|
hasUnpiped: false
|
|
});
|
|
return this;
|
|
}
|
|
const index = ArrayPrototypeIndexOf(state.pipes, dest);
|
|
if (index === -1)
|
|
return this;
|
|
state.pipes.splice(index, 1);
|
|
if (state.pipes.length === 0)
|
|
this.pause();
|
|
dest.emit("unpipe", this, unpipeInfo);
|
|
return this;
|
|
};
|
|
Readable.prototype.on = function(ev, fn) {
|
|
const res = Stream.prototype.on.call(this, ev, fn);
|
|
const state = this._readableState;
|
|
if (ev === "data") {
|
|
state.readableListening = this.listenerCount("readable") > 0;
|
|
if (state.flowing !== false)
|
|
this.resume();
|
|
} else if (ev === "readable") {
|
|
if (!state.endEmitted && !state.readableListening) {
|
|
state.readableListening = state.needReadable = true;
|
|
state.flowing = false;
|
|
state.emittedReadable = false;
|
|
debug("on readable", state.length, state.reading);
|
|
if (state.length) {
|
|
emitReadable(this);
|
|
} else if (!state.reading) {
|
|
process3.nextTick(nReadingNextTick, this);
|
|
}
|
|
}
|
|
}
|
|
return res;
|
|
};
|
|
Readable.prototype.addListener = Readable.prototype.on;
|
|
Readable.prototype.removeListener = function(ev, fn) {
|
|
const res = Stream.prototype.removeListener.call(this, ev, fn);
|
|
if (ev === "readable") {
|
|
process3.nextTick(updateReadableListening, this);
|
|
}
|
|
return res;
|
|
};
|
|
Readable.prototype.off = Readable.prototype.removeListener;
|
|
Readable.prototype.removeAllListeners = function(ev) {
|
|
const res = Stream.prototype.removeAllListeners.apply(this, arguments);
|
|
if (ev === "readable" || ev === void 0) {
|
|
process3.nextTick(updateReadableListening, this);
|
|
}
|
|
return res;
|
|
};
|
|
function updateReadableListening(self2) {
|
|
const state = self2._readableState;
|
|
state.readableListening = self2.listenerCount("readable") > 0;
|
|
if (state.resumeScheduled && state[kPaused] === false) {
|
|
state.flowing = true;
|
|
} else if (self2.listenerCount("data") > 0) {
|
|
self2.resume();
|
|
} else if (!state.readableListening) {
|
|
state.flowing = null;
|
|
}
|
|
}
|
|
function nReadingNextTick(self2) {
|
|
debug("readable nexttick read 0");
|
|
self2.read(0);
|
|
}
|
|
Readable.prototype.resume = function() {
|
|
const state = this._readableState;
|
|
if (!state.flowing) {
|
|
debug("resume");
|
|
state.flowing = !state.readableListening;
|
|
resume(this, state);
|
|
}
|
|
state[kPaused] = false;
|
|
return this;
|
|
};
|
|
function resume(stream, state) {
|
|
if (!state.resumeScheduled) {
|
|
state.resumeScheduled = true;
|
|
process3.nextTick(resume_, stream, state);
|
|
}
|
|
}
|
|
function resume_(stream, state) {
|
|
debug("resume", state.reading);
|
|
if (!state.reading) {
|
|
stream.read(0);
|
|
}
|
|
state.resumeScheduled = false;
|
|
stream.emit("resume");
|
|
flow(stream);
|
|
if (state.flowing && !state.reading)
|
|
stream.read(0);
|
|
}
|
|
Readable.prototype.pause = function() {
|
|
debug("call pause flowing=%j", this._readableState.flowing);
|
|
if (this._readableState.flowing !== false) {
|
|
debug("pause");
|
|
this._readableState.flowing = false;
|
|
this.emit("pause");
|
|
}
|
|
this._readableState[kPaused] = true;
|
|
return this;
|
|
};
|
|
function flow(stream) {
|
|
const state = stream._readableState;
|
|
debug("flow", state.flowing);
|
|
while (state.flowing && stream.read() !== null)
|
|
;
|
|
}
|
|
Readable.prototype.wrap = function(stream) {
|
|
let paused = false;
|
|
stream.on("data", (chunk) => {
|
|
if (!this.push(chunk) && stream.pause) {
|
|
paused = true;
|
|
stream.pause();
|
|
}
|
|
});
|
|
stream.on("end", () => {
|
|
this.push(null);
|
|
});
|
|
stream.on("error", (err) => {
|
|
errorOrDestroy(this, err);
|
|
});
|
|
stream.on("close", () => {
|
|
this.destroy();
|
|
});
|
|
stream.on("destroy", () => {
|
|
this.destroy();
|
|
});
|
|
this._read = () => {
|
|
if (paused && stream.resume) {
|
|
paused = false;
|
|
stream.resume();
|
|
}
|
|
};
|
|
const streamKeys = ObjectKeys(stream);
|
|
for (let j2 = 1; j2 < streamKeys.length; j2++) {
|
|
const i6 = streamKeys[j2];
|
|
if (this[i6] === void 0 && typeof stream[i6] === "function") {
|
|
this[i6] = stream[i6].bind(stream);
|
|
}
|
|
}
|
|
return this;
|
|
};
|
|
Readable.prototype[SymbolAsyncIterator] = function() {
|
|
return streamToAsyncIterator(this);
|
|
};
|
|
Readable.prototype.iterator = function(options) {
|
|
if (options !== void 0) {
|
|
validateObject(options, "options");
|
|
}
|
|
return streamToAsyncIterator(this, options);
|
|
};
|
|
function streamToAsyncIterator(stream, options) {
|
|
if (typeof stream.read !== "function") {
|
|
stream = Readable.wrap(stream, {
|
|
objectMode: true
|
|
});
|
|
}
|
|
const iter = createAsyncIterator(stream, options);
|
|
iter.stream = stream;
|
|
return iter;
|
|
}
|
|
async function* createAsyncIterator(stream, options) {
|
|
let callback = nop;
|
|
function next(resolve2) {
|
|
if (this === stream) {
|
|
callback();
|
|
callback = nop;
|
|
} else {
|
|
callback = resolve2;
|
|
}
|
|
}
|
|
stream.on("readable", next);
|
|
let error;
|
|
const cleanup = eos(
|
|
stream,
|
|
{
|
|
writable: false
|
|
},
|
|
(err) => {
|
|
error = err ? aggregateTwoErrors(error, err) : null;
|
|
callback();
|
|
callback = nop;
|
|
}
|
|
);
|
|
try {
|
|
while (true) {
|
|
const chunk = stream.destroyed ? null : stream.read();
|
|
if (chunk !== null) {
|
|
yield chunk;
|
|
} else if (error) {
|
|
throw error;
|
|
} else if (error === null) {
|
|
return;
|
|
} else {
|
|
await new Promise2(next);
|
|
}
|
|
}
|
|
} catch (err) {
|
|
error = aggregateTwoErrors(error, err);
|
|
throw error;
|
|
} finally {
|
|
if ((error || (options === null || options === void 0 ? void 0 : options.destroyOnReturn) !== false) && (error === void 0 || stream._readableState.autoDestroy)) {
|
|
destroyImpl.destroyer(stream, null);
|
|
} else {
|
|
stream.off("readable", next);
|
|
cleanup();
|
|
}
|
|
}
|
|
}
|
|
ObjectDefineProperties(Readable.prototype, {
|
|
readable: {
|
|
__proto__: null,
|
|
get() {
|
|
const r7 = this._readableState;
|
|
return !!r7 && r7.readable !== false && !r7.destroyed && !r7.errorEmitted && !r7.endEmitted;
|
|
},
|
|
set(val) {
|
|
if (this._readableState) {
|
|
this._readableState.readable = !!val;
|
|
}
|
|
}
|
|
},
|
|
readableDidRead: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get: function() {
|
|
return this._readableState.dataEmitted;
|
|
}
|
|
},
|
|
readableAborted: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get: function() {
|
|
return !!(this._readableState.readable !== false && (this._readableState.destroyed || this._readableState.errored) && !this._readableState.endEmitted);
|
|
}
|
|
},
|
|
readableHighWaterMark: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get: function() {
|
|
return this._readableState.highWaterMark;
|
|
}
|
|
},
|
|
readableBuffer: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get: function() {
|
|
return this._readableState && this._readableState.buffer;
|
|
}
|
|
},
|
|
readableFlowing: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get: function() {
|
|
return this._readableState.flowing;
|
|
},
|
|
set: function(state) {
|
|
if (this._readableState) {
|
|
this._readableState.flowing = state;
|
|
}
|
|
}
|
|
},
|
|
readableLength: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._readableState.length;
|
|
}
|
|
},
|
|
readableObjectMode: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._readableState ? this._readableState.objectMode : false;
|
|
}
|
|
},
|
|
readableEncoding: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._readableState ? this._readableState.encoding : null;
|
|
}
|
|
},
|
|
errored: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._readableState ? this._readableState.errored : null;
|
|
}
|
|
},
|
|
closed: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._readableState ? this._readableState.closed : false;
|
|
}
|
|
},
|
|
destroyed: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._readableState ? this._readableState.destroyed : false;
|
|
},
|
|
set(value) {
|
|
if (!this._readableState) {
|
|
return;
|
|
}
|
|
this._readableState.destroyed = value;
|
|
}
|
|
},
|
|
readableEnded: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._readableState ? this._readableState.endEmitted : false;
|
|
}
|
|
}
|
|
});
|
|
ObjectDefineProperties(ReadableState.prototype, {
|
|
// Legacy getter for `pipesCount`.
|
|
pipesCount: {
|
|
__proto__: null,
|
|
get() {
|
|
return this.pipes.length;
|
|
}
|
|
},
|
|
// Legacy property for `paused`.
|
|
paused: {
|
|
__proto__: null,
|
|
get() {
|
|
return this[kPaused] !== false;
|
|
},
|
|
set(value) {
|
|
this[kPaused] = !!value;
|
|
}
|
|
}
|
|
});
|
|
Readable._fromList = fromList;
|
|
function fromList(n7, state) {
|
|
if (state.length === 0)
|
|
return null;
|
|
let ret;
|
|
if (state.objectMode)
|
|
ret = state.buffer.shift();
|
|
else if (!n7 || n7 >= state.length) {
|
|
if (state.decoder)
|
|
ret = state.buffer.join("");
|
|
else if (state.buffer.length === 1)
|
|
ret = state.buffer.first();
|
|
else
|
|
ret = state.buffer.concat(state.length);
|
|
state.buffer.clear();
|
|
} else {
|
|
ret = state.buffer.consume(n7, state.decoder);
|
|
}
|
|
return ret;
|
|
}
|
|
function endReadable(stream) {
|
|
const state = stream._readableState;
|
|
debug("endReadable", state.endEmitted);
|
|
if (!state.endEmitted) {
|
|
state.ended = true;
|
|
process3.nextTick(endReadableNT, state, stream);
|
|
}
|
|
}
|
|
function endReadableNT(state, stream) {
|
|
debug("endReadableNT", state.endEmitted, state.length);
|
|
if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {
|
|
state.endEmitted = true;
|
|
stream.emit("end");
|
|
if (stream.writable && stream.allowHalfOpen === false) {
|
|
process3.nextTick(endWritableNT, stream);
|
|
} else if (state.autoDestroy) {
|
|
const wState = stream._writableState;
|
|
const autoDestroy = !wState || wState.autoDestroy && // We don't expect the writable to ever 'finish'
|
|
// if writable is explicitly set to false.
|
|
(wState.finished || wState.writable === false);
|
|
if (autoDestroy) {
|
|
stream.destroy();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function endWritableNT(stream) {
|
|
const writable = stream.writable && !stream.writableEnded && !stream.destroyed;
|
|
if (writable) {
|
|
stream.end();
|
|
}
|
|
}
|
|
Readable.from = function(iterable, opts) {
|
|
return from(Readable, iterable, opts);
|
|
};
|
|
var webStreamsAdapters;
|
|
function lazyWebStreams() {
|
|
if (webStreamsAdapters === void 0)
|
|
webStreamsAdapters = {};
|
|
return webStreamsAdapters;
|
|
}
|
|
Readable.fromWeb = function(readableStream, options) {
|
|
return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options);
|
|
};
|
|
Readable.toWeb = function(streamReadable, options) {
|
|
return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options);
|
|
};
|
|
Readable.wrap = function(src, options) {
|
|
var _ref, _src$readableObjectMo;
|
|
return new Readable({
|
|
objectMode: (_ref = (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== void 0 ? _src$readableObjectMo : src.objectMode) !== null && _ref !== void 0 ? _ref : true,
|
|
...options,
|
|
destroy(err, callback) {
|
|
destroyImpl.destroyer(src, err);
|
|
callback(err);
|
|
}
|
|
}).wrap(src);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/writable.js
|
|
var require_writable = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/writable.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var {
|
|
ArrayPrototypeSlice,
|
|
Error: Error2,
|
|
FunctionPrototypeSymbolHasInstance,
|
|
ObjectDefineProperty,
|
|
ObjectDefineProperties,
|
|
ObjectSetPrototypeOf,
|
|
StringPrototypeToLowerCase,
|
|
Symbol: Symbol2,
|
|
SymbolHasInstance
|
|
} = require_primordials();
|
|
module.exports = Writable;
|
|
Writable.WritableState = WritableState;
|
|
var { EventEmitter: EE } = (init_events(), __toCommonJS(events_exports));
|
|
var Stream = require_legacy().Stream;
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var destroyImpl = require_destroy();
|
|
var { addAbortSignal } = require_add_abort_signal();
|
|
var { getHighWaterMark, getDefaultHighWaterMark } = require_state();
|
|
var {
|
|
ERR_INVALID_ARG_TYPE,
|
|
ERR_METHOD_NOT_IMPLEMENTED,
|
|
ERR_MULTIPLE_CALLBACK,
|
|
ERR_STREAM_CANNOT_PIPE,
|
|
ERR_STREAM_DESTROYED,
|
|
ERR_STREAM_ALREADY_FINISHED,
|
|
ERR_STREAM_NULL_VALUES,
|
|
ERR_STREAM_WRITE_AFTER_END,
|
|
ERR_UNKNOWN_ENCODING
|
|
} = require_errors().codes;
|
|
var { errorOrDestroy } = destroyImpl;
|
|
ObjectSetPrototypeOf(Writable.prototype, Stream.prototype);
|
|
ObjectSetPrototypeOf(Writable, Stream);
|
|
function nop() {
|
|
}
|
|
var kOnFinished = Symbol2("kOnFinished");
|
|
function WritableState(options, stream, isDuplex) {
|
|
if (typeof isDuplex !== "boolean")
|
|
isDuplex = stream instanceof require_duplex();
|
|
this.objectMode = !!(options && options.objectMode);
|
|
if (isDuplex)
|
|
this.objectMode = this.objectMode || !!(options && options.writableObjectMode);
|
|
this.highWaterMark = options ? getHighWaterMark(this, options, "writableHighWaterMark", isDuplex) : getDefaultHighWaterMark(false);
|
|
this.finalCalled = false;
|
|
this.needDrain = false;
|
|
this.ending = false;
|
|
this.ended = false;
|
|
this.finished = false;
|
|
this.destroyed = false;
|
|
const noDecode = !!(options && options.decodeStrings === false);
|
|
this.decodeStrings = !noDecode;
|
|
this.defaultEncoding = options && options.defaultEncoding || "utf8";
|
|
this.length = 0;
|
|
this.writing = false;
|
|
this.corked = 0;
|
|
this.sync = true;
|
|
this.bufferProcessing = false;
|
|
this.onwrite = onwrite.bind(void 0, stream);
|
|
this.writecb = null;
|
|
this.writelen = 0;
|
|
this.afterWriteTickInfo = null;
|
|
resetBuffer(this);
|
|
this.pendingcb = 0;
|
|
this.constructed = true;
|
|
this.prefinished = false;
|
|
this.errorEmitted = false;
|
|
this.emitClose = !options || options.emitClose !== false;
|
|
this.autoDestroy = !options || options.autoDestroy !== false;
|
|
this.errored = null;
|
|
this.closed = false;
|
|
this.closeEmitted = false;
|
|
this[kOnFinished] = [];
|
|
}
|
|
function resetBuffer(state) {
|
|
state.buffered = [];
|
|
state.bufferedIndex = 0;
|
|
state.allBuffers = true;
|
|
state.allNoop = true;
|
|
}
|
|
WritableState.prototype.getBuffer = function getBuffer() {
|
|
return ArrayPrototypeSlice(this.buffered, this.bufferedIndex);
|
|
};
|
|
ObjectDefineProperty(WritableState.prototype, "bufferedRequestCount", {
|
|
__proto__: null,
|
|
get() {
|
|
return this.buffered.length - this.bufferedIndex;
|
|
}
|
|
});
|
|
function Writable(options) {
|
|
const isDuplex = this instanceof require_duplex();
|
|
if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this))
|
|
return new Writable(options);
|
|
this._writableState = new WritableState(options, this, isDuplex);
|
|
if (options) {
|
|
if (typeof options.write === "function")
|
|
this._write = options.write;
|
|
if (typeof options.writev === "function")
|
|
this._writev = options.writev;
|
|
if (typeof options.destroy === "function")
|
|
this._destroy = options.destroy;
|
|
if (typeof options.final === "function")
|
|
this._final = options.final;
|
|
if (typeof options.construct === "function")
|
|
this._construct = options.construct;
|
|
if (options.signal)
|
|
addAbortSignal(options.signal, this);
|
|
}
|
|
Stream.call(this, options);
|
|
destroyImpl.construct(this, () => {
|
|
const state = this._writableState;
|
|
if (!state.writing) {
|
|
clearBuffer(this, state);
|
|
}
|
|
finishMaybe(this, state);
|
|
});
|
|
}
|
|
ObjectDefineProperty(Writable, SymbolHasInstance, {
|
|
__proto__: null,
|
|
value: function(object) {
|
|
if (FunctionPrototypeSymbolHasInstance(this, object))
|
|
return true;
|
|
if (this !== Writable)
|
|
return false;
|
|
return object && object._writableState instanceof WritableState;
|
|
}
|
|
});
|
|
Writable.prototype.pipe = function() {
|
|
errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());
|
|
};
|
|
function _write(stream, chunk, encoding, cb) {
|
|
const state = stream._writableState;
|
|
if (typeof encoding === "function") {
|
|
cb = encoding;
|
|
encoding = state.defaultEncoding;
|
|
} else {
|
|
if (!encoding)
|
|
encoding = state.defaultEncoding;
|
|
else if (encoding !== "buffer" && !Buffer3.isEncoding(encoding))
|
|
throw new ERR_UNKNOWN_ENCODING(encoding);
|
|
if (typeof cb !== "function")
|
|
cb = nop;
|
|
}
|
|
if (chunk === null) {
|
|
throw new ERR_STREAM_NULL_VALUES();
|
|
} else if (!state.objectMode) {
|
|
if (typeof chunk === "string") {
|
|
if (state.decodeStrings !== false) {
|
|
chunk = Buffer3.from(chunk, encoding);
|
|
encoding = "buffer";
|
|
}
|
|
} else if (chunk instanceof Buffer3) {
|
|
encoding = "buffer";
|
|
} else if (Stream._isUint8Array(chunk)) {
|
|
chunk = Stream._uint8ArrayToBuffer(chunk);
|
|
encoding = "buffer";
|
|
} else {
|
|
throw new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk);
|
|
}
|
|
}
|
|
let err;
|
|
if (state.ending) {
|
|
err = new ERR_STREAM_WRITE_AFTER_END();
|
|
} else if (state.destroyed) {
|
|
err = new ERR_STREAM_DESTROYED("write");
|
|
}
|
|
if (err) {
|
|
process3.nextTick(cb, err);
|
|
errorOrDestroy(stream, err, true);
|
|
return err;
|
|
}
|
|
state.pendingcb++;
|
|
return writeOrBuffer(stream, state, chunk, encoding, cb);
|
|
}
|
|
Writable.prototype.write = function(chunk, encoding, cb) {
|
|
return _write(this, chunk, encoding, cb) === true;
|
|
};
|
|
Writable.prototype.cork = function() {
|
|
this._writableState.corked++;
|
|
};
|
|
Writable.prototype.uncork = function() {
|
|
const state = this._writableState;
|
|
if (state.corked) {
|
|
state.corked--;
|
|
if (!state.writing)
|
|
clearBuffer(this, state);
|
|
}
|
|
};
|
|
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
|
|
if (typeof encoding === "string")
|
|
encoding = StringPrototypeToLowerCase(encoding);
|
|
if (!Buffer3.isEncoding(encoding))
|
|
throw new ERR_UNKNOWN_ENCODING(encoding);
|
|
this._writableState.defaultEncoding = encoding;
|
|
return this;
|
|
};
|
|
function writeOrBuffer(stream, state, chunk, encoding, callback) {
|
|
const len = state.objectMode ? 1 : chunk.length;
|
|
state.length += len;
|
|
const ret = state.length < state.highWaterMark;
|
|
if (!ret)
|
|
state.needDrain = true;
|
|
if (state.writing || state.corked || state.errored || !state.constructed) {
|
|
state.buffered.push({
|
|
chunk,
|
|
encoding,
|
|
callback
|
|
});
|
|
if (state.allBuffers && encoding !== "buffer") {
|
|
state.allBuffers = false;
|
|
}
|
|
if (state.allNoop && callback !== nop) {
|
|
state.allNoop = false;
|
|
}
|
|
} else {
|
|
state.writelen = len;
|
|
state.writecb = callback;
|
|
state.writing = true;
|
|
state.sync = true;
|
|
stream._write(chunk, encoding, state.onwrite);
|
|
state.sync = false;
|
|
}
|
|
return ret && !state.errored && !state.destroyed;
|
|
}
|
|
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
|
|
state.writelen = len;
|
|
state.writecb = cb;
|
|
state.writing = true;
|
|
state.sync = true;
|
|
if (state.destroyed)
|
|
state.onwrite(new ERR_STREAM_DESTROYED("write"));
|
|
else if (writev)
|
|
stream._writev(chunk, state.onwrite);
|
|
else
|
|
stream._write(chunk, encoding, state.onwrite);
|
|
state.sync = false;
|
|
}
|
|
function onwriteError(stream, state, er, cb) {
|
|
--state.pendingcb;
|
|
cb(er);
|
|
errorBuffer(state);
|
|
errorOrDestroy(stream, er);
|
|
}
|
|
function onwrite(stream, er) {
|
|
const state = stream._writableState;
|
|
const sync = state.sync;
|
|
const cb = state.writecb;
|
|
if (typeof cb !== "function") {
|
|
errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK());
|
|
return;
|
|
}
|
|
state.writing = false;
|
|
state.writecb = null;
|
|
state.length -= state.writelen;
|
|
state.writelen = 0;
|
|
if (er) {
|
|
er.stack;
|
|
if (!state.errored) {
|
|
state.errored = er;
|
|
}
|
|
if (stream._readableState && !stream._readableState.errored) {
|
|
stream._readableState.errored = er;
|
|
}
|
|
if (sync) {
|
|
process3.nextTick(onwriteError, stream, state, er, cb);
|
|
} else {
|
|
onwriteError(stream, state, er, cb);
|
|
}
|
|
} else {
|
|
if (state.buffered.length > state.bufferedIndex) {
|
|
clearBuffer(stream, state);
|
|
}
|
|
if (sync) {
|
|
if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {
|
|
state.afterWriteTickInfo.count++;
|
|
} else {
|
|
state.afterWriteTickInfo = {
|
|
count: 1,
|
|
cb,
|
|
stream,
|
|
state
|
|
};
|
|
process3.nextTick(afterWriteTick, state.afterWriteTickInfo);
|
|
}
|
|
} else {
|
|
afterWrite(stream, state, 1, cb);
|
|
}
|
|
}
|
|
}
|
|
function afterWriteTick({ stream, state, count, cb }) {
|
|
state.afterWriteTickInfo = null;
|
|
return afterWrite(stream, state, count, cb);
|
|
}
|
|
function afterWrite(stream, state, count, cb) {
|
|
const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain;
|
|
if (needDrain) {
|
|
state.needDrain = false;
|
|
stream.emit("drain");
|
|
}
|
|
while (count-- > 0) {
|
|
state.pendingcb--;
|
|
cb();
|
|
}
|
|
if (state.destroyed) {
|
|
errorBuffer(state);
|
|
}
|
|
finishMaybe(stream, state);
|
|
}
|
|
function errorBuffer(state) {
|
|
if (state.writing) {
|
|
return;
|
|
}
|
|
for (let n7 = state.bufferedIndex; n7 < state.buffered.length; ++n7) {
|
|
var _state$errored;
|
|
const { chunk, callback } = state.buffered[n7];
|
|
const len = state.objectMode ? 1 : chunk.length;
|
|
state.length -= len;
|
|
callback(
|
|
(_state$errored = state.errored) !== null && _state$errored !== void 0 ? _state$errored : new ERR_STREAM_DESTROYED("write")
|
|
);
|
|
}
|
|
const onfinishCallbacks = state[kOnFinished].splice(0);
|
|
for (let i6 = 0; i6 < onfinishCallbacks.length; i6++) {
|
|
var _state$errored2;
|
|
onfinishCallbacks[i6](
|
|
(_state$errored2 = state.errored) !== null && _state$errored2 !== void 0 ? _state$errored2 : new ERR_STREAM_DESTROYED("end")
|
|
);
|
|
}
|
|
resetBuffer(state);
|
|
}
|
|
function clearBuffer(stream, state) {
|
|
if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {
|
|
return;
|
|
}
|
|
const { buffered, bufferedIndex, objectMode } = state;
|
|
const bufferedLength = buffered.length - bufferedIndex;
|
|
if (!bufferedLength) {
|
|
return;
|
|
}
|
|
let i6 = bufferedIndex;
|
|
state.bufferProcessing = true;
|
|
if (bufferedLength > 1 && stream._writev) {
|
|
state.pendingcb -= bufferedLength - 1;
|
|
const callback = state.allNoop ? nop : (err) => {
|
|
for (let n7 = i6; n7 < buffered.length; ++n7) {
|
|
buffered[n7].callback(err);
|
|
}
|
|
};
|
|
const chunks = state.allNoop && i6 === 0 ? buffered : ArrayPrototypeSlice(buffered, i6);
|
|
chunks.allBuffers = state.allBuffers;
|
|
doWrite(stream, state, true, state.length, chunks, "", callback);
|
|
resetBuffer(state);
|
|
} else {
|
|
do {
|
|
const { chunk, encoding, callback } = buffered[i6];
|
|
buffered[i6++] = null;
|
|
const len = objectMode ? 1 : chunk.length;
|
|
doWrite(stream, state, false, len, chunk, encoding, callback);
|
|
} while (i6 < buffered.length && !state.writing);
|
|
if (i6 === buffered.length) {
|
|
resetBuffer(state);
|
|
} else if (i6 > 256) {
|
|
buffered.splice(0, i6);
|
|
state.bufferedIndex = 0;
|
|
} else {
|
|
state.bufferedIndex = i6;
|
|
}
|
|
}
|
|
state.bufferProcessing = false;
|
|
}
|
|
Writable.prototype._write = function(chunk, encoding, cb) {
|
|
if (this._writev) {
|
|
this._writev(
|
|
[
|
|
{
|
|
chunk,
|
|
encoding
|
|
}
|
|
],
|
|
cb
|
|
);
|
|
} else {
|
|
throw new ERR_METHOD_NOT_IMPLEMENTED("_write()");
|
|
}
|
|
};
|
|
Writable.prototype._writev = null;
|
|
Writable.prototype.end = function(chunk, encoding, cb) {
|
|
const state = this._writableState;
|
|
if (typeof chunk === "function") {
|
|
cb = chunk;
|
|
chunk = null;
|
|
encoding = null;
|
|
} else if (typeof encoding === "function") {
|
|
cb = encoding;
|
|
encoding = null;
|
|
}
|
|
let err;
|
|
if (chunk !== null && chunk !== void 0) {
|
|
const ret = _write(this, chunk, encoding);
|
|
if (ret instanceof Error2) {
|
|
err = ret;
|
|
}
|
|
}
|
|
if (state.corked) {
|
|
state.corked = 1;
|
|
this.uncork();
|
|
}
|
|
if (err) {
|
|
} else if (!state.errored && !state.ending) {
|
|
state.ending = true;
|
|
finishMaybe(this, state, true);
|
|
state.ended = true;
|
|
} else if (state.finished) {
|
|
err = new ERR_STREAM_ALREADY_FINISHED("end");
|
|
} else if (state.destroyed) {
|
|
err = new ERR_STREAM_DESTROYED("end");
|
|
}
|
|
if (typeof cb === "function") {
|
|
if (err || state.finished) {
|
|
process3.nextTick(cb, err);
|
|
} else {
|
|
state[kOnFinished].push(cb);
|
|
}
|
|
}
|
|
return this;
|
|
};
|
|
function needFinish(state) {
|
|
return state.ending && !state.destroyed && state.constructed && state.length === 0 && !state.errored && state.buffered.length === 0 && !state.finished && !state.writing && !state.errorEmitted && !state.closeEmitted;
|
|
}
|
|
function callFinal(stream, state) {
|
|
let called = false;
|
|
function onFinish(err) {
|
|
if (called) {
|
|
errorOrDestroy(stream, err !== null && err !== void 0 ? err : ERR_MULTIPLE_CALLBACK());
|
|
return;
|
|
}
|
|
called = true;
|
|
state.pendingcb--;
|
|
if (err) {
|
|
const onfinishCallbacks = state[kOnFinished].splice(0);
|
|
for (let i6 = 0; i6 < onfinishCallbacks.length; i6++) {
|
|
onfinishCallbacks[i6](err);
|
|
}
|
|
errorOrDestroy(stream, err, state.sync);
|
|
} else if (needFinish(state)) {
|
|
state.prefinished = true;
|
|
stream.emit("prefinish");
|
|
state.pendingcb++;
|
|
process3.nextTick(finish, stream, state);
|
|
}
|
|
}
|
|
state.sync = true;
|
|
state.pendingcb++;
|
|
try {
|
|
stream._final(onFinish);
|
|
} catch (err) {
|
|
onFinish(err);
|
|
}
|
|
state.sync = false;
|
|
}
|
|
function prefinish(stream, state) {
|
|
if (!state.prefinished && !state.finalCalled) {
|
|
if (typeof stream._final === "function" && !state.destroyed) {
|
|
state.finalCalled = true;
|
|
callFinal(stream, state);
|
|
} else {
|
|
state.prefinished = true;
|
|
stream.emit("prefinish");
|
|
}
|
|
}
|
|
}
|
|
function finishMaybe(stream, state, sync) {
|
|
if (needFinish(state)) {
|
|
prefinish(stream, state);
|
|
if (state.pendingcb === 0) {
|
|
if (sync) {
|
|
state.pendingcb++;
|
|
process3.nextTick(
|
|
(stream2, state2) => {
|
|
if (needFinish(state2)) {
|
|
finish(stream2, state2);
|
|
} else {
|
|
state2.pendingcb--;
|
|
}
|
|
},
|
|
stream,
|
|
state
|
|
);
|
|
} else if (needFinish(state)) {
|
|
state.pendingcb++;
|
|
finish(stream, state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function finish(stream, state) {
|
|
state.pendingcb--;
|
|
state.finished = true;
|
|
const onfinishCallbacks = state[kOnFinished].splice(0);
|
|
for (let i6 = 0; i6 < onfinishCallbacks.length; i6++) {
|
|
onfinishCallbacks[i6]();
|
|
}
|
|
stream.emit("finish");
|
|
if (state.autoDestroy) {
|
|
const rState = stream._readableState;
|
|
const autoDestroy = !rState || rState.autoDestroy && // We don't expect the readable to ever 'end'
|
|
// if readable is explicitly set to false.
|
|
(rState.endEmitted || rState.readable === false);
|
|
if (autoDestroy) {
|
|
stream.destroy();
|
|
}
|
|
}
|
|
}
|
|
ObjectDefineProperties(Writable.prototype, {
|
|
closed: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState ? this._writableState.closed : false;
|
|
}
|
|
},
|
|
destroyed: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState ? this._writableState.destroyed : false;
|
|
},
|
|
set(value) {
|
|
if (this._writableState) {
|
|
this._writableState.destroyed = value;
|
|
}
|
|
}
|
|
},
|
|
writable: {
|
|
__proto__: null,
|
|
get() {
|
|
const w2 = this._writableState;
|
|
return !!w2 && w2.writable !== false && !w2.destroyed && !w2.errored && !w2.ending && !w2.ended;
|
|
},
|
|
set(val) {
|
|
if (this._writableState) {
|
|
this._writableState.writable = !!val;
|
|
}
|
|
}
|
|
},
|
|
writableFinished: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState ? this._writableState.finished : false;
|
|
}
|
|
},
|
|
writableObjectMode: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState ? this._writableState.objectMode : false;
|
|
}
|
|
},
|
|
writableBuffer: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState && this._writableState.getBuffer();
|
|
}
|
|
},
|
|
writableEnded: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState ? this._writableState.ending : false;
|
|
}
|
|
},
|
|
writableNeedDrain: {
|
|
__proto__: null,
|
|
get() {
|
|
const wState = this._writableState;
|
|
if (!wState)
|
|
return false;
|
|
return !wState.destroyed && !wState.ending && wState.needDrain;
|
|
}
|
|
},
|
|
writableHighWaterMark: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState && this._writableState.highWaterMark;
|
|
}
|
|
},
|
|
writableCorked: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState ? this._writableState.corked : 0;
|
|
}
|
|
},
|
|
writableLength: {
|
|
__proto__: null,
|
|
get() {
|
|
return this._writableState && this._writableState.length;
|
|
}
|
|
},
|
|
errored: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get() {
|
|
return this._writableState ? this._writableState.errored : null;
|
|
}
|
|
},
|
|
writableAborted: {
|
|
__proto__: null,
|
|
enumerable: false,
|
|
get: function() {
|
|
return !!(this._writableState.writable !== false && (this._writableState.destroyed || this._writableState.errored) && !this._writableState.finished);
|
|
}
|
|
}
|
|
});
|
|
var destroy = destroyImpl.destroy;
|
|
Writable.prototype.destroy = function(err, cb) {
|
|
const state = this._writableState;
|
|
if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {
|
|
process3.nextTick(errorBuffer, state);
|
|
}
|
|
destroy.call(this, err, cb);
|
|
return this;
|
|
};
|
|
Writable.prototype._undestroy = destroyImpl.undestroy;
|
|
Writable.prototype._destroy = function(err, cb) {
|
|
cb(err);
|
|
};
|
|
Writable.prototype[EE.captureRejectionSymbol] = function(err) {
|
|
this.destroy(err);
|
|
};
|
|
var webStreamsAdapters;
|
|
function lazyWebStreams() {
|
|
if (webStreamsAdapters === void 0)
|
|
webStreamsAdapters = {};
|
|
return webStreamsAdapters;
|
|
}
|
|
Writable.fromWeb = function(writableStream, options) {
|
|
return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options);
|
|
};
|
|
Writable.toWeb = function(streamWritable) {
|
|
return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/duplexify.js
|
|
var require_duplexify = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/duplexify.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var bufferModule = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var {
|
|
isReadable,
|
|
isWritable,
|
|
isIterable,
|
|
isNodeStream,
|
|
isReadableNodeStream,
|
|
isWritableNodeStream,
|
|
isDuplexNodeStream
|
|
} = require_utils();
|
|
var eos = require_end_of_stream();
|
|
var {
|
|
AbortError,
|
|
codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }
|
|
} = require_errors();
|
|
var { destroyer } = require_destroy();
|
|
var Duplex = require_duplex();
|
|
var Readable = require_readable();
|
|
var { createDeferredPromise } = require_util();
|
|
var from = require_from();
|
|
var Blob2 = globalThis.Blob || bufferModule.Blob;
|
|
var isBlob = typeof Blob2 !== "undefined" ? function isBlob2(b3) {
|
|
return b3 instanceof Blob2;
|
|
} : function isBlob2(b3) {
|
|
return false;
|
|
};
|
|
var AbortController = globalThis.AbortController || require_browser().AbortController;
|
|
var { FunctionPrototypeCall } = require_primordials();
|
|
var Duplexify = class extends Duplex {
|
|
constructor(options) {
|
|
super(options);
|
|
if ((options === null || options === void 0 ? void 0 : options.readable) === false) {
|
|
this._readableState.readable = false;
|
|
this._readableState.ended = true;
|
|
this._readableState.endEmitted = true;
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.writable) === false) {
|
|
this._writableState.writable = false;
|
|
this._writableState.ending = true;
|
|
this._writableState.ended = true;
|
|
this._writableState.finished = true;
|
|
}
|
|
}
|
|
};
|
|
module.exports = function duplexify(body, name2) {
|
|
if (isDuplexNodeStream(body)) {
|
|
return body;
|
|
}
|
|
if (isReadableNodeStream(body)) {
|
|
return _duplexify({
|
|
readable: body
|
|
});
|
|
}
|
|
if (isWritableNodeStream(body)) {
|
|
return _duplexify({
|
|
writable: body
|
|
});
|
|
}
|
|
if (isNodeStream(body)) {
|
|
return _duplexify({
|
|
writable: false,
|
|
readable: false
|
|
});
|
|
}
|
|
if (typeof body === "function") {
|
|
const { value, write, final, destroy } = fromAsyncGen(body);
|
|
if (isIterable(value)) {
|
|
return from(Duplexify, value, {
|
|
// TODO (ronag): highWaterMark?
|
|
objectMode: true,
|
|
write,
|
|
final,
|
|
destroy
|
|
});
|
|
}
|
|
const then2 = value === null || value === void 0 ? void 0 : value.then;
|
|
if (typeof then2 === "function") {
|
|
let d4;
|
|
const promise = FunctionPrototypeCall(
|
|
then2,
|
|
value,
|
|
(val) => {
|
|
if (val != null) {
|
|
throw new ERR_INVALID_RETURN_VALUE("nully", "body", val);
|
|
}
|
|
},
|
|
(err) => {
|
|
destroyer(d4, err);
|
|
}
|
|
);
|
|
return d4 = new Duplexify({
|
|
// TODO (ronag): highWaterMark?
|
|
objectMode: true,
|
|
readable: false,
|
|
write,
|
|
final(cb) {
|
|
final(async () => {
|
|
try {
|
|
await promise;
|
|
process3.nextTick(cb, null);
|
|
} catch (err) {
|
|
process3.nextTick(cb, err);
|
|
}
|
|
});
|
|
},
|
|
destroy
|
|
});
|
|
}
|
|
throw new ERR_INVALID_RETURN_VALUE("Iterable, AsyncIterable or AsyncFunction", name2, value);
|
|
}
|
|
if (isBlob(body)) {
|
|
return duplexify(body.arrayBuffer());
|
|
}
|
|
if (isIterable(body)) {
|
|
return from(Duplexify, body, {
|
|
// TODO (ronag): highWaterMark?
|
|
objectMode: true,
|
|
writable: false
|
|
});
|
|
}
|
|
if (typeof (body === null || body === void 0 ? void 0 : body.writable) === "object" || typeof (body === null || body === void 0 ? void 0 : body.readable) === "object") {
|
|
const readable = body !== null && body !== void 0 && body.readable ? isReadableNodeStream(body === null || body === void 0 ? void 0 : body.readable) ? body === null || body === void 0 ? void 0 : body.readable : duplexify(body.readable) : void 0;
|
|
const writable = body !== null && body !== void 0 && body.writable ? isWritableNodeStream(body === null || body === void 0 ? void 0 : body.writable) ? body === null || body === void 0 ? void 0 : body.writable : duplexify(body.writable) : void 0;
|
|
return _duplexify({
|
|
readable,
|
|
writable
|
|
});
|
|
}
|
|
const then = body === null || body === void 0 ? void 0 : body.then;
|
|
if (typeof then === "function") {
|
|
let d4;
|
|
FunctionPrototypeCall(
|
|
then,
|
|
body,
|
|
(val) => {
|
|
if (val != null) {
|
|
d4.push(val);
|
|
}
|
|
d4.push(null);
|
|
},
|
|
(err) => {
|
|
destroyer(d4, err);
|
|
}
|
|
);
|
|
return d4 = new Duplexify({
|
|
objectMode: true,
|
|
writable: false,
|
|
read() {
|
|
}
|
|
});
|
|
}
|
|
throw new ERR_INVALID_ARG_TYPE(
|
|
name2,
|
|
[
|
|
"Blob",
|
|
"ReadableStream",
|
|
"WritableStream",
|
|
"Stream",
|
|
"Iterable",
|
|
"AsyncIterable",
|
|
"Function",
|
|
"{ readable, writable } pair",
|
|
"Promise"
|
|
],
|
|
body
|
|
);
|
|
};
|
|
function fromAsyncGen(fn) {
|
|
let { promise, resolve: resolve2 } = createDeferredPromise();
|
|
const ac = new AbortController();
|
|
const signal = ac.signal;
|
|
const value = fn(
|
|
async function* () {
|
|
while (true) {
|
|
const _promise = promise;
|
|
promise = null;
|
|
const { chunk, done, cb } = await _promise;
|
|
process3.nextTick(cb);
|
|
if (done)
|
|
return;
|
|
if (signal.aborted)
|
|
throw new AbortError(void 0, {
|
|
cause: signal.reason
|
|
});
|
|
({ promise, resolve: resolve2 } = createDeferredPromise());
|
|
yield chunk;
|
|
}
|
|
}(),
|
|
{
|
|
signal
|
|
}
|
|
);
|
|
return {
|
|
value,
|
|
write(chunk, encoding, cb) {
|
|
const _resolve = resolve2;
|
|
resolve2 = null;
|
|
_resolve({
|
|
chunk,
|
|
done: false,
|
|
cb
|
|
});
|
|
},
|
|
final(cb) {
|
|
const _resolve = resolve2;
|
|
resolve2 = null;
|
|
_resolve({
|
|
done: true,
|
|
cb
|
|
});
|
|
},
|
|
destroy(err, cb) {
|
|
ac.abort();
|
|
cb(err);
|
|
}
|
|
};
|
|
}
|
|
function _duplexify(pair) {
|
|
const r7 = pair.readable && typeof pair.readable.read !== "function" ? Readable.wrap(pair.readable) : pair.readable;
|
|
const w2 = pair.writable;
|
|
let readable = !!isReadable(r7);
|
|
let writable = !!isWritable(w2);
|
|
let ondrain;
|
|
let onfinish;
|
|
let onreadable;
|
|
let onclose;
|
|
let d4;
|
|
function onfinished(err) {
|
|
const cb = onclose;
|
|
onclose = null;
|
|
if (cb) {
|
|
cb(err);
|
|
} else if (err) {
|
|
d4.destroy(err);
|
|
}
|
|
}
|
|
d4 = new Duplexify({
|
|
// TODO (ronag): highWaterMark?
|
|
readableObjectMode: !!(r7 !== null && r7 !== void 0 && r7.readableObjectMode),
|
|
writableObjectMode: !!(w2 !== null && w2 !== void 0 && w2.writableObjectMode),
|
|
readable,
|
|
writable
|
|
});
|
|
if (writable) {
|
|
eos(w2, (err) => {
|
|
writable = false;
|
|
if (err) {
|
|
destroyer(r7, err);
|
|
}
|
|
onfinished(err);
|
|
});
|
|
d4._write = function(chunk, encoding, callback) {
|
|
if (w2.write(chunk, encoding)) {
|
|
callback();
|
|
} else {
|
|
ondrain = callback;
|
|
}
|
|
};
|
|
d4._final = function(callback) {
|
|
w2.end();
|
|
onfinish = callback;
|
|
};
|
|
w2.on("drain", function() {
|
|
if (ondrain) {
|
|
const cb = ondrain;
|
|
ondrain = null;
|
|
cb();
|
|
}
|
|
});
|
|
w2.on("finish", function() {
|
|
if (onfinish) {
|
|
const cb = onfinish;
|
|
onfinish = null;
|
|
cb();
|
|
}
|
|
});
|
|
}
|
|
if (readable) {
|
|
eos(r7, (err) => {
|
|
readable = false;
|
|
if (err) {
|
|
destroyer(r7, err);
|
|
}
|
|
onfinished(err);
|
|
});
|
|
r7.on("readable", function() {
|
|
if (onreadable) {
|
|
const cb = onreadable;
|
|
onreadable = null;
|
|
cb();
|
|
}
|
|
});
|
|
r7.on("end", function() {
|
|
d4.push(null);
|
|
});
|
|
d4._read = function() {
|
|
while (true) {
|
|
const buf = r7.read();
|
|
if (buf === null) {
|
|
onreadable = d4._read;
|
|
return;
|
|
}
|
|
if (!d4.push(buf)) {
|
|
return;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
d4._destroy = function(err, callback) {
|
|
if (!err && onclose !== null) {
|
|
err = new AbortError();
|
|
}
|
|
onreadable = null;
|
|
ondrain = null;
|
|
onfinish = null;
|
|
if (onclose === null) {
|
|
callback(err);
|
|
} else {
|
|
onclose = callback;
|
|
destroyer(w2, err);
|
|
destroyer(r7, err);
|
|
}
|
|
};
|
|
return d4;
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/duplex.js
|
|
var require_duplex = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/duplex.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var {
|
|
ObjectDefineProperties,
|
|
ObjectGetOwnPropertyDescriptor,
|
|
ObjectKeys,
|
|
ObjectSetPrototypeOf
|
|
} = require_primordials();
|
|
module.exports = Duplex;
|
|
var Readable = require_readable();
|
|
var Writable = require_writable();
|
|
ObjectSetPrototypeOf(Duplex.prototype, Readable.prototype);
|
|
ObjectSetPrototypeOf(Duplex, Readable);
|
|
{
|
|
const keys = ObjectKeys(Writable.prototype);
|
|
for (let i6 = 0; i6 < keys.length; i6++) {
|
|
const method = keys[i6];
|
|
if (!Duplex.prototype[method])
|
|
Duplex.prototype[method] = Writable.prototype[method];
|
|
}
|
|
}
|
|
function Duplex(options) {
|
|
if (!(this instanceof Duplex))
|
|
return new Duplex(options);
|
|
Readable.call(this, options);
|
|
Writable.call(this, options);
|
|
if (options) {
|
|
this.allowHalfOpen = options.allowHalfOpen !== false;
|
|
if (options.readable === false) {
|
|
this._readableState.readable = false;
|
|
this._readableState.ended = true;
|
|
this._readableState.endEmitted = true;
|
|
}
|
|
if (options.writable === false) {
|
|
this._writableState.writable = false;
|
|
this._writableState.ending = true;
|
|
this._writableState.ended = true;
|
|
this._writableState.finished = true;
|
|
}
|
|
} else {
|
|
this.allowHalfOpen = true;
|
|
}
|
|
}
|
|
ObjectDefineProperties(Duplex.prototype, {
|
|
writable: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writable")
|
|
},
|
|
writableHighWaterMark: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableHighWaterMark")
|
|
},
|
|
writableObjectMode: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableObjectMode")
|
|
},
|
|
writableBuffer: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableBuffer")
|
|
},
|
|
writableLength: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableLength")
|
|
},
|
|
writableFinished: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableFinished")
|
|
},
|
|
writableCorked: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableCorked")
|
|
},
|
|
writableEnded: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableEnded")
|
|
},
|
|
writableNeedDrain: {
|
|
__proto__: null,
|
|
...ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableNeedDrain")
|
|
},
|
|
destroyed: {
|
|
__proto__: null,
|
|
get() {
|
|
if (this._readableState === void 0 || this._writableState === void 0) {
|
|
return false;
|
|
}
|
|
return this._readableState.destroyed && this._writableState.destroyed;
|
|
},
|
|
set(value) {
|
|
if (this._readableState && this._writableState) {
|
|
this._readableState.destroyed = value;
|
|
this._writableState.destroyed = value;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
var webStreamsAdapters;
|
|
function lazyWebStreams() {
|
|
if (webStreamsAdapters === void 0)
|
|
webStreamsAdapters = {};
|
|
return webStreamsAdapters;
|
|
}
|
|
Duplex.fromWeb = function(pair, options) {
|
|
return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options);
|
|
};
|
|
Duplex.toWeb = function(duplex) {
|
|
return lazyWebStreams().newReadableWritablePairFromDuplex(duplex);
|
|
};
|
|
var duplexify;
|
|
Duplex.from = function(body) {
|
|
if (!duplexify) {
|
|
duplexify = require_duplexify();
|
|
}
|
|
return duplexify(body, "body");
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/transform.js
|
|
var require_transform = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/transform.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { ObjectSetPrototypeOf, Symbol: Symbol2 } = require_primordials();
|
|
module.exports = Transform;
|
|
var { ERR_METHOD_NOT_IMPLEMENTED } = require_errors().codes;
|
|
var Duplex = require_duplex();
|
|
var { getHighWaterMark } = require_state();
|
|
ObjectSetPrototypeOf(Transform.prototype, Duplex.prototype);
|
|
ObjectSetPrototypeOf(Transform, Duplex);
|
|
var kCallback = Symbol2("kCallback");
|
|
function Transform(options) {
|
|
if (!(this instanceof Transform))
|
|
return new Transform(options);
|
|
const readableHighWaterMark = options ? getHighWaterMark(this, options, "readableHighWaterMark", true) : null;
|
|
if (readableHighWaterMark === 0) {
|
|
options = {
|
|
...options,
|
|
highWaterMark: null,
|
|
readableHighWaterMark,
|
|
// TODO (ronag): 0 is not optimal since we have
|
|
// a "bug" where we check needDrain before calling _write and not after.
|
|
// Refs: https://github.com/nodejs/node/pull/32887
|
|
// Refs: https://github.com/nodejs/node/pull/35941
|
|
writableHighWaterMark: options.writableHighWaterMark || 0
|
|
};
|
|
}
|
|
Duplex.call(this, options);
|
|
this._readableState.sync = false;
|
|
this[kCallback] = null;
|
|
if (options) {
|
|
if (typeof options.transform === "function")
|
|
this._transform = options.transform;
|
|
if (typeof options.flush === "function")
|
|
this._flush = options.flush;
|
|
}
|
|
this.on("prefinish", prefinish);
|
|
}
|
|
function final(cb) {
|
|
if (typeof this._flush === "function" && !this.destroyed) {
|
|
this._flush((er, data) => {
|
|
if (er) {
|
|
if (cb) {
|
|
cb(er);
|
|
} else {
|
|
this.destroy(er);
|
|
}
|
|
return;
|
|
}
|
|
if (data != null) {
|
|
this.push(data);
|
|
}
|
|
this.push(null);
|
|
if (cb) {
|
|
cb();
|
|
}
|
|
});
|
|
} else {
|
|
this.push(null);
|
|
if (cb) {
|
|
cb();
|
|
}
|
|
}
|
|
}
|
|
function prefinish() {
|
|
if (this._final !== final) {
|
|
final.call(this);
|
|
}
|
|
}
|
|
Transform.prototype._final = final;
|
|
Transform.prototype._transform = function(chunk, encoding, callback) {
|
|
throw new ERR_METHOD_NOT_IMPLEMENTED("_transform()");
|
|
};
|
|
Transform.prototype._write = function(chunk, encoding, callback) {
|
|
const rState = this._readableState;
|
|
const wState = this._writableState;
|
|
const length = rState.length;
|
|
this._transform(chunk, encoding, (err, val) => {
|
|
if (err) {
|
|
callback(err);
|
|
return;
|
|
}
|
|
if (val != null) {
|
|
this.push(val);
|
|
}
|
|
if (wState.ended || // Backwards compat.
|
|
length === rState.length || // Backwards compat.
|
|
rState.length < rState.highWaterMark) {
|
|
callback();
|
|
} else {
|
|
this[kCallback] = callback;
|
|
}
|
|
});
|
|
};
|
|
Transform.prototype._read = function() {
|
|
if (this[kCallback]) {
|
|
const callback = this[kCallback];
|
|
this[kCallback] = null;
|
|
callback();
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/passthrough.js
|
|
var require_passthrough = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/passthrough.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { ObjectSetPrototypeOf } = require_primordials();
|
|
module.exports = PassThrough;
|
|
var Transform = require_transform();
|
|
ObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype);
|
|
ObjectSetPrototypeOf(PassThrough, Transform);
|
|
function PassThrough(options) {
|
|
if (!(this instanceof PassThrough))
|
|
return new PassThrough(options);
|
|
Transform.call(this, options);
|
|
}
|
|
PassThrough.prototype._transform = function(chunk, encoding, cb) {
|
|
cb(null, chunk);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/pipeline.js
|
|
var require_pipeline = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var process3 = require_browser2();
|
|
var { ArrayIsArray, Promise: Promise2, SymbolAsyncIterator } = require_primordials();
|
|
var eos = require_end_of_stream();
|
|
var { once: once3 } = require_util();
|
|
var destroyImpl = require_destroy();
|
|
var Duplex = require_duplex();
|
|
var {
|
|
aggregateTwoErrors,
|
|
codes: {
|
|
ERR_INVALID_ARG_TYPE,
|
|
ERR_INVALID_RETURN_VALUE,
|
|
ERR_MISSING_ARGS,
|
|
ERR_STREAM_DESTROYED,
|
|
ERR_STREAM_PREMATURE_CLOSE
|
|
},
|
|
AbortError
|
|
} = require_errors();
|
|
var { validateFunction, validateAbortSignal } = require_validators();
|
|
var {
|
|
isIterable,
|
|
isReadable,
|
|
isReadableNodeStream,
|
|
isNodeStream,
|
|
isTransformStream,
|
|
isWebStream,
|
|
isReadableStream,
|
|
isReadableEnded
|
|
} = require_utils();
|
|
var AbortController = globalThis.AbortController || require_browser().AbortController;
|
|
var PassThrough;
|
|
var Readable;
|
|
function destroyer(stream, reading, writing) {
|
|
let finished = false;
|
|
stream.on("close", () => {
|
|
finished = true;
|
|
});
|
|
const cleanup = eos(
|
|
stream,
|
|
{
|
|
readable: reading,
|
|
writable: writing
|
|
},
|
|
(err) => {
|
|
finished = !err;
|
|
}
|
|
);
|
|
return {
|
|
destroy: (err) => {
|
|
if (finished)
|
|
return;
|
|
finished = true;
|
|
destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED("pipe"));
|
|
},
|
|
cleanup
|
|
};
|
|
}
|
|
function popCallback(streams) {
|
|
validateFunction(streams[streams.length - 1], "streams[stream.length - 1]");
|
|
return streams.pop();
|
|
}
|
|
function makeAsyncIterable(val) {
|
|
if (isIterable(val)) {
|
|
return val;
|
|
} else if (isReadableNodeStream(val)) {
|
|
return fromReadable(val);
|
|
}
|
|
throw new ERR_INVALID_ARG_TYPE("val", ["Readable", "Iterable", "AsyncIterable"], val);
|
|
}
|
|
async function* fromReadable(val) {
|
|
if (!Readable) {
|
|
Readable = require_readable();
|
|
}
|
|
yield* Readable.prototype[SymbolAsyncIterator].call(val);
|
|
}
|
|
async function pumpToNode(iterable, writable, finish, { end }) {
|
|
let error;
|
|
let onresolve = null;
|
|
const resume = (err) => {
|
|
if (err) {
|
|
error = err;
|
|
}
|
|
if (onresolve) {
|
|
const callback = onresolve;
|
|
onresolve = null;
|
|
callback();
|
|
}
|
|
};
|
|
const wait = () => new Promise2((resolve2, reject) => {
|
|
if (error) {
|
|
reject(error);
|
|
} else {
|
|
onresolve = () => {
|
|
if (error) {
|
|
reject(error);
|
|
} else {
|
|
resolve2();
|
|
}
|
|
};
|
|
}
|
|
});
|
|
writable.on("drain", resume);
|
|
const cleanup = eos(
|
|
writable,
|
|
{
|
|
readable: false
|
|
},
|
|
resume
|
|
);
|
|
try {
|
|
if (writable.writableNeedDrain) {
|
|
await wait();
|
|
}
|
|
for await (const chunk of iterable) {
|
|
if (!writable.write(chunk)) {
|
|
await wait();
|
|
}
|
|
}
|
|
if (end) {
|
|
writable.end();
|
|
}
|
|
await wait();
|
|
finish();
|
|
} catch (err) {
|
|
finish(error !== err ? aggregateTwoErrors(error, err) : err);
|
|
} finally {
|
|
cleanup();
|
|
writable.off("drain", resume);
|
|
}
|
|
}
|
|
async function pumpToWeb(readable, writable, finish, { end }) {
|
|
if (isTransformStream(writable)) {
|
|
writable = writable.writable;
|
|
}
|
|
const writer = writable.getWriter();
|
|
try {
|
|
for await (const chunk of readable) {
|
|
await writer.ready;
|
|
writer.write(chunk).catch(() => {
|
|
});
|
|
}
|
|
await writer.ready;
|
|
if (end) {
|
|
await writer.close();
|
|
}
|
|
finish();
|
|
} catch (err) {
|
|
try {
|
|
await writer.abort(err);
|
|
finish(err);
|
|
} catch (err2) {
|
|
finish(err2);
|
|
}
|
|
}
|
|
}
|
|
function pipeline(...streams) {
|
|
return pipelineImpl(streams, once3(popCallback(streams)));
|
|
}
|
|
function pipelineImpl(streams, callback, opts) {
|
|
if (streams.length === 1 && ArrayIsArray(streams[0])) {
|
|
streams = streams[0];
|
|
}
|
|
if (streams.length < 2) {
|
|
throw new ERR_MISSING_ARGS("streams");
|
|
}
|
|
const ac = new AbortController();
|
|
const signal = ac.signal;
|
|
const outerSignal = opts === null || opts === void 0 ? void 0 : opts.signal;
|
|
const lastStreamCleanup = [];
|
|
validateAbortSignal(outerSignal, "options.signal");
|
|
function abort2() {
|
|
finishImpl(new AbortError());
|
|
}
|
|
outerSignal === null || outerSignal === void 0 ? void 0 : outerSignal.addEventListener("abort", abort2);
|
|
let error;
|
|
let value;
|
|
const destroys = [];
|
|
let finishCount = 0;
|
|
function finish(err) {
|
|
finishImpl(err, --finishCount === 0);
|
|
}
|
|
function finishImpl(err, final) {
|
|
if (err && (!error || error.code === "ERR_STREAM_PREMATURE_CLOSE")) {
|
|
error = err;
|
|
}
|
|
if (!error && !final) {
|
|
return;
|
|
}
|
|
while (destroys.length) {
|
|
destroys.shift()(error);
|
|
}
|
|
outerSignal === null || outerSignal === void 0 ? void 0 : outerSignal.removeEventListener("abort", abort2);
|
|
ac.abort();
|
|
if (final) {
|
|
if (!error) {
|
|
lastStreamCleanup.forEach((fn) => fn());
|
|
}
|
|
process3.nextTick(callback, error, value);
|
|
}
|
|
}
|
|
let ret;
|
|
for (let i6 = 0; i6 < streams.length; i6++) {
|
|
const stream = streams[i6];
|
|
const reading = i6 < streams.length - 1;
|
|
const writing = i6 > 0;
|
|
const end = reading || (opts === null || opts === void 0 ? void 0 : opts.end) !== false;
|
|
const isLastStream = i6 === streams.length - 1;
|
|
if (isNodeStream(stream)) {
|
|
let onError2 = function(err) {
|
|
if (err && err.name !== "AbortError" && err.code !== "ERR_STREAM_PREMATURE_CLOSE") {
|
|
finish(err);
|
|
}
|
|
};
|
|
var onError = onError2;
|
|
if (end) {
|
|
const { destroy, cleanup } = destroyer(stream, reading, writing);
|
|
destroys.push(destroy);
|
|
if (isReadable(stream) && isLastStream) {
|
|
lastStreamCleanup.push(cleanup);
|
|
}
|
|
}
|
|
stream.on("error", onError2);
|
|
if (isReadable(stream) && isLastStream) {
|
|
lastStreamCleanup.push(() => {
|
|
stream.removeListener("error", onError2);
|
|
});
|
|
}
|
|
}
|
|
if (i6 === 0) {
|
|
if (typeof stream === "function") {
|
|
ret = stream({
|
|
signal
|
|
});
|
|
if (!isIterable(ret)) {
|
|
throw new ERR_INVALID_RETURN_VALUE("Iterable, AsyncIterable or Stream", "source", ret);
|
|
}
|
|
} else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {
|
|
ret = stream;
|
|
} else {
|
|
ret = Duplex.from(stream);
|
|
}
|
|
} else if (typeof stream === "function") {
|
|
if (isTransformStream(ret)) {
|
|
var _ret;
|
|
ret = makeAsyncIterable((_ret = ret) === null || _ret === void 0 ? void 0 : _ret.readable);
|
|
} else {
|
|
ret = makeAsyncIterable(ret);
|
|
}
|
|
ret = stream(ret, {
|
|
signal
|
|
});
|
|
if (reading) {
|
|
if (!isIterable(ret, true)) {
|
|
throw new ERR_INVALID_RETURN_VALUE("AsyncIterable", `transform[${i6 - 1}]`, ret);
|
|
}
|
|
} else {
|
|
var _ret2;
|
|
if (!PassThrough) {
|
|
PassThrough = require_passthrough();
|
|
}
|
|
const pt = new PassThrough({
|
|
objectMode: true
|
|
});
|
|
const then = (_ret2 = ret) === null || _ret2 === void 0 ? void 0 : _ret2.then;
|
|
if (typeof then === "function") {
|
|
finishCount++;
|
|
then.call(
|
|
ret,
|
|
(val) => {
|
|
value = val;
|
|
if (val != null) {
|
|
pt.write(val);
|
|
}
|
|
if (end) {
|
|
pt.end();
|
|
}
|
|
process3.nextTick(finish);
|
|
},
|
|
(err) => {
|
|
pt.destroy(err);
|
|
process3.nextTick(finish, err);
|
|
}
|
|
);
|
|
} else if (isIterable(ret, true)) {
|
|
finishCount++;
|
|
pumpToNode(ret, pt, finish, {
|
|
end
|
|
});
|
|
} else if (isReadableStream(ret) || isTransformStream(ret)) {
|
|
const toRead = ret.readable || ret;
|
|
finishCount++;
|
|
pumpToNode(toRead, pt, finish, {
|
|
end
|
|
});
|
|
} else {
|
|
throw new ERR_INVALID_RETURN_VALUE("AsyncIterable or Promise", "destination", ret);
|
|
}
|
|
ret = pt;
|
|
const { destroy, cleanup } = destroyer(ret, false, true);
|
|
destroys.push(destroy);
|
|
if (isLastStream) {
|
|
lastStreamCleanup.push(cleanup);
|
|
}
|
|
}
|
|
} else if (isNodeStream(stream)) {
|
|
if (isReadableNodeStream(ret)) {
|
|
finishCount += 2;
|
|
const cleanup = pipe(ret, stream, finish, {
|
|
end
|
|
});
|
|
if (isReadable(stream) && isLastStream) {
|
|
lastStreamCleanup.push(cleanup);
|
|
}
|
|
} else if (isTransformStream(ret) || isReadableStream(ret)) {
|
|
const toRead = ret.readable || ret;
|
|
finishCount++;
|
|
pumpToNode(toRead, stream, finish, {
|
|
end
|
|
});
|
|
} else if (isIterable(ret)) {
|
|
finishCount++;
|
|
pumpToNode(ret, stream, finish, {
|
|
end
|
|
});
|
|
} else {
|
|
throw new ERR_INVALID_ARG_TYPE(
|
|
"val",
|
|
["Readable", "Iterable", "AsyncIterable", "ReadableStream", "TransformStream"],
|
|
ret
|
|
);
|
|
}
|
|
ret = stream;
|
|
} else if (isWebStream(stream)) {
|
|
if (isReadableNodeStream(ret)) {
|
|
finishCount++;
|
|
pumpToWeb(makeAsyncIterable(ret), stream, finish, {
|
|
end
|
|
});
|
|
} else if (isReadableStream(ret) || isIterable(ret)) {
|
|
finishCount++;
|
|
pumpToWeb(ret, stream, finish, {
|
|
end
|
|
});
|
|
} else if (isTransformStream(ret)) {
|
|
finishCount++;
|
|
pumpToWeb(ret.readable, stream, finish, {
|
|
end
|
|
});
|
|
} else {
|
|
throw new ERR_INVALID_ARG_TYPE(
|
|
"val",
|
|
["Readable", "Iterable", "AsyncIterable", "ReadableStream", "TransformStream"],
|
|
ret
|
|
);
|
|
}
|
|
ret = stream;
|
|
} else {
|
|
ret = Duplex.from(stream);
|
|
}
|
|
}
|
|
if (signal !== null && signal !== void 0 && signal.aborted || outerSignal !== null && outerSignal !== void 0 && outerSignal.aborted) {
|
|
process3.nextTick(abort2);
|
|
}
|
|
return ret;
|
|
}
|
|
function pipe(src, dst, finish, { end }) {
|
|
let ended = false;
|
|
dst.on("close", () => {
|
|
if (!ended) {
|
|
finish(new ERR_STREAM_PREMATURE_CLOSE());
|
|
}
|
|
});
|
|
src.pipe(dst, {
|
|
end: false
|
|
});
|
|
if (end) {
|
|
let endFn2 = function() {
|
|
ended = true;
|
|
dst.end();
|
|
};
|
|
var endFn = endFn2;
|
|
if (isReadableEnded(src)) {
|
|
process3.nextTick(endFn2);
|
|
} else {
|
|
src.once("end", endFn2);
|
|
}
|
|
} else {
|
|
finish();
|
|
}
|
|
eos(
|
|
src,
|
|
{
|
|
readable: true,
|
|
writable: false
|
|
},
|
|
(err) => {
|
|
const rState = src._readableState;
|
|
if (err && err.code === "ERR_STREAM_PREMATURE_CLOSE" && rState && rState.ended && !rState.errored && !rState.errorEmitted) {
|
|
src.once("end", finish).once("error", finish);
|
|
} else {
|
|
finish(err);
|
|
}
|
|
}
|
|
);
|
|
return eos(
|
|
dst,
|
|
{
|
|
readable: false,
|
|
writable: true
|
|
},
|
|
finish
|
|
);
|
|
}
|
|
module.exports = {
|
|
pipelineImpl,
|
|
pipeline
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/compose.js
|
|
var require_compose = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/compose.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { pipeline } = require_pipeline();
|
|
var Duplex = require_duplex();
|
|
var { destroyer } = require_destroy();
|
|
var {
|
|
isNodeStream,
|
|
isReadable,
|
|
isWritable,
|
|
isWebStream,
|
|
isTransformStream,
|
|
isWritableStream,
|
|
isReadableStream
|
|
} = require_utils();
|
|
var {
|
|
AbortError,
|
|
codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }
|
|
} = require_errors();
|
|
var eos = require_end_of_stream();
|
|
module.exports = function compose(...streams) {
|
|
if (streams.length === 0) {
|
|
throw new ERR_MISSING_ARGS("streams");
|
|
}
|
|
if (streams.length === 1) {
|
|
return Duplex.from(streams[0]);
|
|
}
|
|
const orgStreams = [...streams];
|
|
if (typeof streams[0] === "function") {
|
|
streams[0] = Duplex.from(streams[0]);
|
|
}
|
|
if (typeof streams[streams.length - 1] === "function") {
|
|
const idx = streams.length - 1;
|
|
streams[idx] = Duplex.from(streams[idx]);
|
|
}
|
|
for (let n7 = 0; n7 < streams.length; ++n7) {
|
|
if (!isNodeStream(streams[n7]) && !isWebStream(streams[n7])) {
|
|
continue;
|
|
}
|
|
if (n7 < streams.length - 1 && !(isReadable(streams[n7]) || isReadableStream(streams[n7]) || isTransformStream(streams[n7]))) {
|
|
throw new ERR_INVALID_ARG_VALUE(`streams[${n7}]`, orgStreams[n7], "must be readable");
|
|
}
|
|
if (n7 > 0 && !(isWritable(streams[n7]) || isWritableStream(streams[n7]) || isTransformStream(streams[n7]))) {
|
|
throw new ERR_INVALID_ARG_VALUE(`streams[${n7}]`, orgStreams[n7], "must be writable");
|
|
}
|
|
}
|
|
let ondrain;
|
|
let onfinish;
|
|
let onreadable;
|
|
let onclose;
|
|
let d4;
|
|
function onfinished(err) {
|
|
const cb = onclose;
|
|
onclose = null;
|
|
if (cb) {
|
|
cb(err);
|
|
} else if (err) {
|
|
d4.destroy(err);
|
|
} else if (!readable && !writable) {
|
|
d4.destroy();
|
|
}
|
|
}
|
|
const head = streams[0];
|
|
const tail = pipeline(streams, onfinished);
|
|
const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head));
|
|
const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail));
|
|
d4 = new Duplex({
|
|
// TODO (ronag): highWaterMark?
|
|
writableObjectMode: !!(head !== null && head !== void 0 && head.writableObjectMode),
|
|
readableObjectMode: !!(tail !== null && tail !== void 0 && tail.writableObjectMode),
|
|
writable,
|
|
readable
|
|
});
|
|
if (writable) {
|
|
if (isNodeStream(head)) {
|
|
d4._write = function(chunk, encoding, callback) {
|
|
if (head.write(chunk, encoding)) {
|
|
callback();
|
|
} else {
|
|
ondrain = callback;
|
|
}
|
|
};
|
|
d4._final = function(callback) {
|
|
head.end();
|
|
onfinish = callback;
|
|
};
|
|
head.on("drain", function() {
|
|
if (ondrain) {
|
|
const cb = ondrain;
|
|
ondrain = null;
|
|
cb();
|
|
}
|
|
});
|
|
} else if (isWebStream(head)) {
|
|
const writable2 = isTransformStream(head) ? head.writable : head;
|
|
const writer = writable2.getWriter();
|
|
d4._write = async function(chunk, encoding, callback) {
|
|
try {
|
|
await writer.ready;
|
|
writer.write(chunk).catch(() => {
|
|
});
|
|
callback();
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
d4._final = async function(callback) {
|
|
try {
|
|
await writer.ready;
|
|
writer.close().catch(() => {
|
|
});
|
|
onfinish = callback;
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
}
|
|
const toRead = isTransformStream(tail) ? tail.readable : tail;
|
|
eos(toRead, () => {
|
|
if (onfinish) {
|
|
const cb = onfinish;
|
|
onfinish = null;
|
|
cb();
|
|
}
|
|
});
|
|
}
|
|
if (readable) {
|
|
if (isNodeStream(tail)) {
|
|
tail.on("readable", function() {
|
|
if (onreadable) {
|
|
const cb = onreadable;
|
|
onreadable = null;
|
|
cb();
|
|
}
|
|
});
|
|
tail.on("end", function() {
|
|
d4.push(null);
|
|
});
|
|
d4._read = function() {
|
|
while (true) {
|
|
const buf = tail.read();
|
|
if (buf === null) {
|
|
onreadable = d4._read;
|
|
return;
|
|
}
|
|
if (!d4.push(buf)) {
|
|
return;
|
|
}
|
|
}
|
|
};
|
|
} else if (isWebStream(tail)) {
|
|
const readable2 = isTransformStream(tail) ? tail.readable : tail;
|
|
const reader = readable2.getReader();
|
|
d4._read = async function() {
|
|
while (true) {
|
|
try {
|
|
const { value, done } = await reader.read();
|
|
if (!d4.push(value)) {
|
|
return;
|
|
}
|
|
if (done) {
|
|
d4.push(null);
|
|
return;
|
|
}
|
|
} catch {
|
|
return;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
d4._destroy = function(err, callback) {
|
|
if (!err && onclose !== null) {
|
|
err = new AbortError();
|
|
}
|
|
onreadable = null;
|
|
ondrain = null;
|
|
onfinish = null;
|
|
if (onclose === null) {
|
|
callback(err);
|
|
} else {
|
|
onclose = callback;
|
|
if (isNodeStream(tail)) {
|
|
destroyer(tail, err);
|
|
}
|
|
}
|
|
};
|
|
return d4;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/internal/streams/operators.js
|
|
var require_operators = __commonJS({
|
|
"node_modules/readable-stream/lib/internal/streams/operators.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var AbortController = globalThis.AbortController || require_browser().AbortController;
|
|
var {
|
|
codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },
|
|
AbortError
|
|
} = require_errors();
|
|
var { validateAbortSignal, validateInteger, validateObject } = require_validators();
|
|
var kWeakHandler = require_primordials().Symbol("kWeak");
|
|
var { finished } = require_end_of_stream();
|
|
var staticCompose = require_compose();
|
|
var { addAbortSignalNoValidate } = require_add_abort_signal();
|
|
var { isWritable, isNodeStream } = require_utils();
|
|
var {
|
|
ArrayPrototypePush,
|
|
MathFloor,
|
|
Number: Number2,
|
|
NumberIsNaN,
|
|
Promise: Promise2,
|
|
PromiseReject,
|
|
PromisePrototypeThen,
|
|
Symbol: Symbol2
|
|
} = require_primordials();
|
|
var kEmpty = Symbol2("kEmpty");
|
|
var kEof = Symbol2("kEof");
|
|
function compose(stream, options) {
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
if (isNodeStream(stream) && !isWritable(stream)) {
|
|
throw new ERR_INVALID_ARG_VALUE("stream", stream, "must be writable");
|
|
}
|
|
const composedStream = staticCompose(this, stream);
|
|
if (options !== null && options !== void 0 && options.signal) {
|
|
addAbortSignalNoValidate(options.signal, composedStream);
|
|
}
|
|
return composedStream;
|
|
}
|
|
function map(fn, options) {
|
|
if (typeof fn !== "function") {
|
|
throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn);
|
|
}
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
let concurrency = 1;
|
|
if ((options === null || options === void 0 ? void 0 : options.concurrency) != null) {
|
|
concurrency = MathFloor(options.concurrency);
|
|
}
|
|
validateInteger(concurrency, "concurrency", 1);
|
|
return async function* map2() {
|
|
var _options$signal, _options$signal2;
|
|
const ac = new AbortController();
|
|
const stream = this;
|
|
const queue2 = [];
|
|
const signal = ac.signal;
|
|
const signalOpt = {
|
|
signal
|
|
};
|
|
const abort2 = () => ac.abort();
|
|
if (options !== null && options !== void 0 && (_options$signal = options.signal) !== null && _options$signal !== void 0 && _options$signal.aborted) {
|
|
abort2();
|
|
}
|
|
options === null || options === void 0 ? void 0 : (_options$signal2 = options.signal) === null || _options$signal2 === void 0 ? void 0 : _options$signal2.addEventListener("abort", abort2);
|
|
let next;
|
|
let resume;
|
|
let done = false;
|
|
function onDone() {
|
|
done = true;
|
|
}
|
|
async function pump() {
|
|
try {
|
|
for await (let val of stream) {
|
|
var _val;
|
|
if (done) {
|
|
return;
|
|
}
|
|
if (signal.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
try {
|
|
val = fn(val, signalOpt);
|
|
} catch (err) {
|
|
val = PromiseReject(err);
|
|
}
|
|
if (val === kEmpty) {
|
|
continue;
|
|
}
|
|
if (typeof ((_val = val) === null || _val === void 0 ? void 0 : _val.catch) === "function") {
|
|
val.catch(onDone);
|
|
}
|
|
queue2.push(val);
|
|
if (next) {
|
|
next();
|
|
next = null;
|
|
}
|
|
if (!done && queue2.length && queue2.length >= concurrency) {
|
|
await new Promise2((resolve2) => {
|
|
resume = resolve2;
|
|
});
|
|
}
|
|
}
|
|
queue2.push(kEof);
|
|
} catch (err) {
|
|
const val = PromiseReject(err);
|
|
PromisePrototypeThen(val, void 0, onDone);
|
|
queue2.push(val);
|
|
} finally {
|
|
var _options$signal3;
|
|
done = true;
|
|
if (next) {
|
|
next();
|
|
next = null;
|
|
}
|
|
options === null || options === void 0 ? void 0 : (_options$signal3 = options.signal) === null || _options$signal3 === void 0 ? void 0 : _options$signal3.removeEventListener("abort", abort2);
|
|
}
|
|
}
|
|
pump();
|
|
try {
|
|
while (true) {
|
|
while (queue2.length > 0) {
|
|
const val = await queue2[0];
|
|
if (val === kEof) {
|
|
return;
|
|
}
|
|
if (signal.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
if (val !== kEmpty) {
|
|
yield val;
|
|
}
|
|
queue2.shift();
|
|
if (resume) {
|
|
resume();
|
|
resume = null;
|
|
}
|
|
}
|
|
await new Promise2((resolve2) => {
|
|
next = resolve2;
|
|
});
|
|
}
|
|
} finally {
|
|
ac.abort();
|
|
done = true;
|
|
if (resume) {
|
|
resume();
|
|
resume = null;
|
|
}
|
|
}
|
|
}.call(this);
|
|
}
|
|
function asIndexedPairs(options = void 0) {
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
return async function* asIndexedPairs2() {
|
|
let index = 0;
|
|
for await (const val of this) {
|
|
var _options$signal4;
|
|
if (options !== null && options !== void 0 && (_options$signal4 = options.signal) !== null && _options$signal4 !== void 0 && _options$signal4.aborted) {
|
|
throw new AbortError({
|
|
cause: options.signal.reason
|
|
});
|
|
}
|
|
yield [index++, val];
|
|
}
|
|
}.call(this);
|
|
}
|
|
async function some(fn, options = void 0) {
|
|
for await (const unused of filter.call(this, fn, options)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
async function every(fn, options = void 0) {
|
|
if (typeof fn !== "function") {
|
|
throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn);
|
|
}
|
|
return !await some.call(
|
|
this,
|
|
async (...args) => {
|
|
return !await fn(...args);
|
|
},
|
|
options
|
|
);
|
|
}
|
|
async function find(fn, options) {
|
|
for await (const result of filter.call(this, fn, options)) {
|
|
return result;
|
|
}
|
|
return void 0;
|
|
}
|
|
async function forEach(fn, options) {
|
|
if (typeof fn !== "function") {
|
|
throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn);
|
|
}
|
|
async function forEachFn(value, options2) {
|
|
await fn(value, options2);
|
|
return kEmpty;
|
|
}
|
|
for await (const unused of map.call(this, forEachFn, options))
|
|
;
|
|
}
|
|
function filter(fn, options) {
|
|
if (typeof fn !== "function") {
|
|
throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn);
|
|
}
|
|
async function filterFn(value, options2) {
|
|
if (await fn(value, options2)) {
|
|
return value;
|
|
}
|
|
return kEmpty;
|
|
}
|
|
return map.call(this, filterFn, options);
|
|
}
|
|
var ReduceAwareErrMissingArgs = class extends ERR_MISSING_ARGS {
|
|
constructor() {
|
|
super("reduce");
|
|
this.message = "Reduce of an empty stream requires an initial value";
|
|
}
|
|
};
|
|
async function reduce(reducer, initialValue, options) {
|
|
var _options$signal5;
|
|
if (typeof reducer !== "function") {
|
|
throw new ERR_INVALID_ARG_TYPE("reducer", ["Function", "AsyncFunction"], reducer);
|
|
}
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
let hasInitialValue = arguments.length > 1;
|
|
if (options !== null && options !== void 0 && (_options$signal5 = options.signal) !== null && _options$signal5 !== void 0 && _options$signal5.aborted) {
|
|
const err = new AbortError(void 0, {
|
|
cause: options.signal.reason
|
|
});
|
|
this.once("error", () => {
|
|
});
|
|
await finished(this.destroy(err));
|
|
throw err;
|
|
}
|
|
const ac = new AbortController();
|
|
const signal = ac.signal;
|
|
if (options !== null && options !== void 0 && options.signal) {
|
|
const opts = {
|
|
once: true,
|
|
[kWeakHandler]: this
|
|
};
|
|
options.signal.addEventListener("abort", () => ac.abort(), opts);
|
|
}
|
|
let gotAnyItemFromStream = false;
|
|
try {
|
|
for await (const value of this) {
|
|
var _options$signal6;
|
|
gotAnyItemFromStream = true;
|
|
if (options !== null && options !== void 0 && (_options$signal6 = options.signal) !== null && _options$signal6 !== void 0 && _options$signal6.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
if (!hasInitialValue) {
|
|
initialValue = value;
|
|
hasInitialValue = true;
|
|
} else {
|
|
initialValue = await reducer(initialValue, value, {
|
|
signal
|
|
});
|
|
}
|
|
}
|
|
if (!gotAnyItemFromStream && !hasInitialValue) {
|
|
throw new ReduceAwareErrMissingArgs();
|
|
}
|
|
} finally {
|
|
ac.abort();
|
|
}
|
|
return initialValue;
|
|
}
|
|
async function toArray(options) {
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
const result = [];
|
|
for await (const val of this) {
|
|
var _options$signal7;
|
|
if (options !== null && options !== void 0 && (_options$signal7 = options.signal) !== null && _options$signal7 !== void 0 && _options$signal7.aborted) {
|
|
throw new AbortError(void 0, {
|
|
cause: options.signal.reason
|
|
});
|
|
}
|
|
ArrayPrototypePush(result, val);
|
|
}
|
|
return result;
|
|
}
|
|
function flatMap(fn, options) {
|
|
const values = map.call(this, fn, options);
|
|
return async function* flatMap2() {
|
|
for await (const val of values) {
|
|
yield* val;
|
|
}
|
|
}.call(this);
|
|
}
|
|
function toIntegerOrInfinity(number) {
|
|
number = Number2(number);
|
|
if (NumberIsNaN(number)) {
|
|
return 0;
|
|
}
|
|
if (number < 0) {
|
|
throw new ERR_OUT_OF_RANGE("number", ">= 0", number);
|
|
}
|
|
return number;
|
|
}
|
|
function drop(number, options = void 0) {
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
number = toIntegerOrInfinity(number);
|
|
return async function* drop2() {
|
|
var _options$signal8;
|
|
if (options !== null && options !== void 0 && (_options$signal8 = options.signal) !== null && _options$signal8 !== void 0 && _options$signal8.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
for await (const val of this) {
|
|
var _options$signal9;
|
|
if (options !== null && options !== void 0 && (_options$signal9 = options.signal) !== null && _options$signal9 !== void 0 && _options$signal9.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
if (number-- <= 0) {
|
|
yield val;
|
|
}
|
|
}
|
|
}.call(this);
|
|
}
|
|
function take(number, options = void 0) {
|
|
if (options != null) {
|
|
validateObject(options, "options");
|
|
}
|
|
if ((options === null || options === void 0 ? void 0 : options.signal) != null) {
|
|
validateAbortSignal(options.signal, "options.signal");
|
|
}
|
|
number = toIntegerOrInfinity(number);
|
|
return async function* take2() {
|
|
var _options$signal10;
|
|
if (options !== null && options !== void 0 && (_options$signal10 = options.signal) !== null && _options$signal10 !== void 0 && _options$signal10.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
for await (const val of this) {
|
|
var _options$signal11;
|
|
if (options !== null && options !== void 0 && (_options$signal11 = options.signal) !== null && _options$signal11 !== void 0 && _options$signal11.aborted) {
|
|
throw new AbortError();
|
|
}
|
|
if (number-- > 0) {
|
|
yield val;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
}.call(this);
|
|
}
|
|
module.exports.streamReturningOperators = {
|
|
asIndexedPairs,
|
|
drop,
|
|
filter,
|
|
flatMap,
|
|
map,
|
|
take,
|
|
compose
|
|
};
|
|
module.exports.promiseReturningOperators = {
|
|
every,
|
|
forEach,
|
|
reduce,
|
|
toArray,
|
|
some,
|
|
find
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/stream/promises.js
|
|
var require_promises = __commonJS({
|
|
"node_modules/readable-stream/lib/stream/promises.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { ArrayPrototypePop, Promise: Promise2 } = require_primordials();
|
|
var { isIterable, isNodeStream, isWebStream } = require_utils();
|
|
var { pipelineImpl: pl } = require_pipeline();
|
|
var { finished } = require_end_of_stream();
|
|
require_stream();
|
|
function pipeline(...streams) {
|
|
return new Promise2((resolve2, reject) => {
|
|
let signal;
|
|
let end;
|
|
const lastArg = streams[streams.length - 1];
|
|
if (lastArg && typeof lastArg === "object" && !isNodeStream(lastArg) && !isIterable(lastArg) && !isWebStream(lastArg)) {
|
|
const options = ArrayPrototypePop(streams);
|
|
signal = options.signal;
|
|
end = options.end;
|
|
}
|
|
pl(
|
|
streams,
|
|
(err, value) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve2(value);
|
|
}
|
|
},
|
|
{
|
|
signal,
|
|
end
|
|
}
|
|
);
|
|
});
|
|
}
|
|
module.exports = {
|
|
finished,
|
|
pipeline
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/stream.js
|
|
var require_stream = __commonJS({
|
|
"node_modules/readable-stream/lib/stream.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var { ObjectDefineProperty, ObjectKeys, ReflectApply } = require_primordials();
|
|
var {
|
|
promisify: { custom: customPromisify }
|
|
} = require_util();
|
|
var { streamReturningOperators, promiseReturningOperators } = require_operators();
|
|
var {
|
|
codes: { ERR_ILLEGAL_CONSTRUCTOR }
|
|
} = require_errors();
|
|
var compose = require_compose();
|
|
var { pipeline } = require_pipeline();
|
|
var { destroyer } = require_destroy();
|
|
var eos = require_end_of_stream();
|
|
var promises = require_promises();
|
|
var utils = require_utils();
|
|
var Stream = module.exports = require_legacy().Stream;
|
|
Stream.isDisturbed = utils.isDisturbed;
|
|
Stream.isErrored = utils.isErrored;
|
|
Stream.isReadable = utils.isReadable;
|
|
Stream.Readable = require_readable();
|
|
for (const key of ObjectKeys(streamReturningOperators)) {
|
|
let fn2 = function(...args) {
|
|
if (new.target) {
|
|
throw ERR_ILLEGAL_CONSTRUCTOR();
|
|
}
|
|
return Stream.Readable.from(ReflectApply(op, this, args));
|
|
};
|
|
fn = fn2;
|
|
const op = streamReturningOperators[key];
|
|
ObjectDefineProperty(fn2, "name", {
|
|
__proto__: null,
|
|
value: op.name
|
|
});
|
|
ObjectDefineProperty(fn2, "length", {
|
|
__proto__: null,
|
|
value: op.length
|
|
});
|
|
ObjectDefineProperty(Stream.Readable.prototype, key, {
|
|
__proto__: null,
|
|
value: fn2,
|
|
enumerable: false,
|
|
configurable: true,
|
|
writable: true
|
|
});
|
|
}
|
|
var fn;
|
|
for (const key of ObjectKeys(promiseReturningOperators)) {
|
|
let fn2 = function(...args) {
|
|
if (new.target) {
|
|
throw ERR_ILLEGAL_CONSTRUCTOR();
|
|
}
|
|
return ReflectApply(op, this, args);
|
|
};
|
|
fn = fn2;
|
|
const op = promiseReturningOperators[key];
|
|
ObjectDefineProperty(fn2, "name", {
|
|
__proto__: null,
|
|
value: op.name
|
|
});
|
|
ObjectDefineProperty(fn2, "length", {
|
|
__proto__: null,
|
|
value: op.length
|
|
});
|
|
ObjectDefineProperty(Stream.Readable.prototype, key, {
|
|
__proto__: null,
|
|
value: fn2,
|
|
enumerable: false,
|
|
configurable: true,
|
|
writable: true
|
|
});
|
|
}
|
|
var fn;
|
|
Stream.Writable = require_writable();
|
|
Stream.Duplex = require_duplex();
|
|
Stream.Transform = require_transform();
|
|
Stream.PassThrough = require_passthrough();
|
|
Stream.pipeline = pipeline;
|
|
var { addAbortSignal } = require_add_abort_signal();
|
|
Stream.addAbortSignal = addAbortSignal;
|
|
Stream.finished = eos;
|
|
Stream.destroy = destroyer;
|
|
Stream.compose = compose;
|
|
ObjectDefineProperty(Stream, "promises", {
|
|
__proto__: null,
|
|
configurable: true,
|
|
enumerable: true,
|
|
get() {
|
|
return promises;
|
|
}
|
|
});
|
|
ObjectDefineProperty(pipeline, customPromisify, {
|
|
__proto__: null,
|
|
enumerable: true,
|
|
get() {
|
|
return promises.pipeline;
|
|
}
|
|
});
|
|
ObjectDefineProperty(eos, customPromisify, {
|
|
__proto__: null,
|
|
enumerable: true,
|
|
get() {
|
|
return promises.finished;
|
|
}
|
|
});
|
|
Stream.Stream = Stream;
|
|
Stream._isUint8Array = function isUint8Array(value) {
|
|
return value instanceof Uint8Array;
|
|
};
|
|
Stream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {
|
|
return Buffer3.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/readable-stream/lib/ours/browser.js
|
|
var require_browser3 = __commonJS({
|
|
"node_modules/readable-stream/lib/ours/browser.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var CustomStream = require_stream();
|
|
var promises = require_promises();
|
|
var originalDestroy = CustomStream.Readable.destroy;
|
|
module.exports = CustomStream.Readable;
|
|
module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer;
|
|
module.exports._isUint8Array = CustomStream._isUint8Array;
|
|
module.exports.isDisturbed = CustomStream.isDisturbed;
|
|
module.exports.isErrored = CustomStream.isErrored;
|
|
module.exports.isReadable = CustomStream.isReadable;
|
|
module.exports.Readable = CustomStream.Readable;
|
|
module.exports.Writable = CustomStream.Writable;
|
|
module.exports.Duplex = CustomStream.Duplex;
|
|
module.exports.Transform = CustomStream.Transform;
|
|
module.exports.PassThrough = CustomStream.PassThrough;
|
|
module.exports.addAbortSignal = CustomStream.addAbortSignal;
|
|
module.exports.finished = CustomStream.finished;
|
|
module.exports.destroy = CustomStream.destroy;
|
|
module.exports.destroy = originalDestroy;
|
|
module.exports.pipeline = CustomStream.pipeline;
|
|
module.exports.compose = CustomStream.compose;
|
|
Object.defineProperty(CustomStream, "promises", {
|
|
configurable: true,
|
|
enumerable: true,
|
|
get() {
|
|
return promises;
|
|
}
|
|
});
|
|
module.exports.Stream = CustomStream.Stream;
|
|
module.exports.default = module.exports;
|
|
}
|
|
});
|
|
|
|
// node_modules/inherits/inherits_browser.js
|
|
var require_inherits_browser = __commonJS({
|
|
"node_modules/inherits/inherits_browser.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
if (typeof Object.create === "function") {
|
|
module.exports = function inherits(ctor, superCtor) {
|
|
if (superCtor) {
|
|
ctor.super_ = superCtor;
|
|
ctor.prototype = Object.create(superCtor.prototype, {
|
|
constructor: {
|
|
value: ctor,
|
|
enumerable: false,
|
|
writable: true,
|
|
configurable: true
|
|
}
|
|
});
|
|
}
|
|
};
|
|
} else {
|
|
module.exports = function inherits(ctor, superCtor) {
|
|
if (superCtor) {
|
|
ctor.super_ = superCtor;
|
|
var TempCtor = function() {
|
|
};
|
|
TempCtor.prototype = superCtor.prototype;
|
|
ctor.prototype = new TempCtor();
|
|
ctor.prototype.constructor = ctor;
|
|
}
|
|
};
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/node_modules/bl/BufferList.js
|
|
var require_BufferList = __commonJS({
|
|
"node_modules/mqtt-packet/node_modules/bl/BufferList.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var symbol = Symbol.for("BufferList");
|
|
function BufferList(buf) {
|
|
if (!(this instanceof BufferList)) {
|
|
return new BufferList(buf);
|
|
}
|
|
BufferList._init.call(this, buf);
|
|
}
|
|
BufferList._init = function _init(buf) {
|
|
Object.defineProperty(this, symbol, { value: true });
|
|
this._bufs = [];
|
|
this.length = 0;
|
|
if (buf) {
|
|
this.append(buf);
|
|
}
|
|
};
|
|
BufferList.prototype._new = function _new(buf) {
|
|
return new BufferList(buf);
|
|
};
|
|
BufferList.prototype._offset = function _offset(offset) {
|
|
if (offset === 0) {
|
|
return [0, 0];
|
|
}
|
|
let tot = 0;
|
|
for (let i6 = 0; i6 < this._bufs.length; i6++) {
|
|
const _t = tot + this._bufs[i6].length;
|
|
if (offset < _t || i6 === this._bufs.length - 1) {
|
|
return [i6, offset - tot];
|
|
}
|
|
tot = _t;
|
|
}
|
|
};
|
|
BufferList.prototype._reverseOffset = function(blOffset) {
|
|
const bufferId = blOffset[0];
|
|
let offset = blOffset[1];
|
|
for (let i6 = 0; i6 < bufferId; i6++) {
|
|
offset += this._bufs[i6].length;
|
|
}
|
|
return offset;
|
|
};
|
|
BufferList.prototype.get = function get(index) {
|
|
if (index > this.length || index < 0) {
|
|
return void 0;
|
|
}
|
|
const offset = this._offset(index);
|
|
return this._bufs[offset[0]][offset[1]];
|
|
};
|
|
BufferList.prototype.slice = function slice(start, end) {
|
|
if (typeof start === "number" && start < 0) {
|
|
start += this.length;
|
|
}
|
|
if (typeof end === "number" && end < 0) {
|
|
end += this.length;
|
|
}
|
|
return this.copy(null, 0, start, end);
|
|
};
|
|
BufferList.prototype.copy = function copy(dst, dstStart, srcStart, srcEnd) {
|
|
if (typeof srcStart !== "number" || srcStart < 0) {
|
|
srcStart = 0;
|
|
}
|
|
if (typeof srcEnd !== "number" || srcEnd > this.length) {
|
|
srcEnd = this.length;
|
|
}
|
|
if (srcStart >= this.length) {
|
|
return dst || Buffer3.alloc(0);
|
|
}
|
|
if (srcEnd <= 0) {
|
|
return dst || Buffer3.alloc(0);
|
|
}
|
|
const copy2 = !!dst;
|
|
const off2 = this._offset(srcStart);
|
|
const len = srcEnd - srcStart;
|
|
let bytes = len;
|
|
let bufoff = copy2 && dstStart || 0;
|
|
let start = off2[1];
|
|
if (srcStart === 0 && srcEnd === this.length) {
|
|
if (!copy2) {
|
|
return this._bufs.length === 1 ? this._bufs[0] : Buffer3.concat(this._bufs, this.length);
|
|
}
|
|
for (let i6 = 0; i6 < this._bufs.length; i6++) {
|
|
this._bufs[i6].copy(dst, bufoff);
|
|
bufoff += this._bufs[i6].length;
|
|
}
|
|
return dst;
|
|
}
|
|
if (bytes <= this._bufs[off2[0]].length - start) {
|
|
return copy2 ? this._bufs[off2[0]].copy(dst, dstStart, start, start + bytes) : this._bufs[off2[0]].slice(start, start + bytes);
|
|
}
|
|
if (!copy2) {
|
|
dst = Buffer3.allocUnsafe(len);
|
|
}
|
|
for (let i6 = off2[0]; i6 < this._bufs.length; i6++) {
|
|
const l6 = this._bufs[i6].length - start;
|
|
if (bytes > l6) {
|
|
this._bufs[i6].copy(dst, bufoff, start);
|
|
bufoff += l6;
|
|
} else {
|
|
this._bufs[i6].copy(dst, bufoff, start, start + bytes);
|
|
bufoff += l6;
|
|
break;
|
|
}
|
|
bytes -= l6;
|
|
if (start) {
|
|
start = 0;
|
|
}
|
|
}
|
|
if (dst.length > bufoff)
|
|
return dst.slice(0, bufoff);
|
|
return dst;
|
|
};
|
|
BufferList.prototype.shallowSlice = function shallowSlice(start, end) {
|
|
start = start || 0;
|
|
end = typeof end !== "number" ? this.length : end;
|
|
if (start < 0) {
|
|
start += this.length;
|
|
}
|
|
if (end < 0) {
|
|
end += this.length;
|
|
}
|
|
if (start === end) {
|
|
return this._new();
|
|
}
|
|
const startOffset = this._offset(start);
|
|
const endOffset = this._offset(end);
|
|
const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1);
|
|
if (endOffset[1] === 0) {
|
|
buffers.pop();
|
|
} else {
|
|
buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]);
|
|
}
|
|
if (startOffset[1] !== 0) {
|
|
buffers[0] = buffers[0].slice(startOffset[1]);
|
|
}
|
|
return this._new(buffers);
|
|
};
|
|
BufferList.prototype.toString = function toString(encoding, start, end) {
|
|
return this.slice(start, end).toString(encoding);
|
|
};
|
|
BufferList.prototype.consume = function consume(bytes) {
|
|
bytes = Math.trunc(bytes);
|
|
if (Number.isNaN(bytes) || bytes <= 0)
|
|
return this;
|
|
while (this._bufs.length) {
|
|
if (bytes >= this._bufs[0].length) {
|
|
bytes -= this._bufs[0].length;
|
|
this.length -= this._bufs[0].length;
|
|
this._bufs.shift();
|
|
} else {
|
|
this._bufs[0] = this._bufs[0].slice(bytes);
|
|
this.length -= bytes;
|
|
break;
|
|
}
|
|
}
|
|
return this;
|
|
};
|
|
BufferList.prototype.duplicate = function duplicate() {
|
|
const copy = this._new();
|
|
for (let i6 = 0; i6 < this._bufs.length; i6++) {
|
|
copy.append(this._bufs[i6]);
|
|
}
|
|
return copy;
|
|
};
|
|
BufferList.prototype.append = function append(buf) {
|
|
if (buf == null) {
|
|
return this;
|
|
}
|
|
if (buf.buffer) {
|
|
this._appendBuffer(Buffer3.from(buf.buffer, buf.byteOffset, buf.byteLength));
|
|
} else if (Array.isArray(buf)) {
|
|
for (let i6 = 0; i6 < buf.length; i6++) {
|
|
this.append(buf[i6]);
|
|
}
|
|
} else if (this._isBufferList(buf)) {
|
|
for (let i6 = 0; i6 < buf._bufs.length; i6++) {
|
|
this.append(buf._bufs[i6]);
|
|
}
|
|
} else {
|
|
if (typeof buf === "number") {
|
|
buf = buf.toString();
|
|
}
|
|
this._appendBuffer(Buffer3.from(buf));
|
|
}
|
|
return this;
|
|
};
|
|
BufferList.prototype._appendBuffer = function appendBuffer(buf) {
|
|
this._bufs.push(buf);
|
|
this.length += buf.length;
|
|
};
|
|
BufferList.prototype.indexOf = function(search, offset, encoding) {
|
|
if (encoding === void 0 && typeof offset === "string") {
|
|
encoding = offset;
|
|
offset = void 0;
|
|
}
|
|
if (typeof search === "function" || Array.isArray(search)) {
|
|
throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');
|
|
} else if (typeof search === "number") {
|
|
search = Buffer3.from([search]);
|
|
} else if (typeof search === "string") {
|
|
search = Buffer3.from(search, encoding);
|
|
} else if (this._isBufferList(search)) {
|
|
search = search.slice();
|
|
} else if (Array.isArray(search.buffer)) {
|
|
search = Buffer3.from(search.buffer, search.byteOffset, search.byteLength);
|
|
} else if (!Buffer3.isBuffer(search)) {
|
|
search = Buffer3.from(search);
|
|
}
|
|
offset = Number(offset || 0);
|
|
if (isNaN(offset)) {
|
|
offset = 0;
|
|
}
|
|
if (offset < 0) {
|
|
offset = this.length + offset;
|
|
}
|
|
if (offset < 0) {
|
|
offset = 0;
|
|
}
|
|
if (search.length === 0) {
|
|
return offset > this.length ? this.length : offset;
|
|
}
|
|
const blOffset = this._offset(offset);
|
|
let blIndex = blOffset[0];
|
|
let buffOffset = blOffset[1];
|
|
for (; blIndex < this._bufs.length; blIndex++) {
|
|
const buff = this._bufs[blIndex];
|
|
while (buffOffset < buff.length) {
|
|
const availableWindow = buff.length - buffOffset;
|
|
if (availableWindow >= search.length) {
|
|
const nativeSearchResult = buff.indexOf(search, buffOffset);
|
|
if (nativeSearchResult !== -1) {
|
|
return this._reverseOffset([blIndex, nativeSearchResult]);
|
|
}
|
|
buffOffset = buff.length - search.length + 1;
|
|
} else {
|
|
const revOffset = this._reverseOffset([blIndex, buffOffset]);
|
|
if (this._match(revOffset, search)) {
|
|
return revOffset;
|
|
}
|
|
buffOffset++;
|
|
}
|
|
}
|
|
buffOffset = 0;
|
|
}
|
|
return -1;
|
|
};
|
|
BufferList.prototype._match = function(offset, search) {
|
|
if (this.length - offset < search.length) {
|
|
return false;
|
|
}
|
|
for (let searchOffset = 0; searchOffset < search.length; searchOffset++) {
|
|
if (this.get(offset + searchOffset) !== search[searchOffset]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
};
|
|
(function() {
|
|
const methods = {
|
|
readDoubleBE: 8,
|
|
readDoubleLE: 8,
|
|
readFloatBE: 4,
|
|
readFloatLE: 4,
|
|
readBigInt64BE: 8,
|
|
readBigInt64LE: 8,
|
|
readBigUInt64BE: 8,
|
|
readBigUInt64LE: 8,
|
|
readInt32BE: 4,
|
|
readInt32LE: 4,
|
|
readUInt32BE: 4,
|
|
readUInt32LE: 4,
|
|
readInt16BE: 2,
|
|
readInt16LE: 2,
|
|
readUInt16BE: 2,
|
|
readUInt16LE: 2,
|
|
readInt8: 1,
|
|
readUInt8: 1,
|
|
readIntBE: null,
|
|
readIntLE: null,
|
|
readUIntBE: null,
|
|
readUIntLE: null
|
|
};
|
|
for (const m4 in methods) {
|
|
(function(m5) {
|
|
if (methods[m5] === null) {
|
|
BufferList.prototype[m5] = function(offset, byteLength) {
|
|
return this.slice(offset, offset + byteLength)[m5](0, byteLength);
|
|
};
|
|
} else {
|
|
BufferList.prototype[m5] = function(offset = 0) {
|
|
return this.slice(offset, offset + methods[m5])[m5](0);
|
|
};
|
|
}
|
|
})(m4);
|
|
}
|
|
})();
|
|
BufferList.prototype._isBufferList = function _isBufferList(b3) {
|
|
return b3 instanceof BufferList || BufferList.isBufferList(b3);
|
|
};
|
|
BufferList.isBufferList = function isBufferList(b3) {
|
|
return b3 != null && b3[symbol];
|
|
};
|
|
module.exports = BufferList;
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/node_modules/bl/bl.js
|
|
var require_bl = __commonJS({
|
|
"node_modules/mqtt-packet/node_modules/bl/bl.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var DuplexStream = require_browser3().Duplex;
|
|
var inherits = require_inherits_browser();
|
|
var BufferList = require_BufferList();
|
|
function BufferListStream(callback) {
|
|
if (!(this instanceof BufferListStream)) {
|
|
return new BufferListStream(callback);
|
|
}
|
|
if (typeof callback === "function") {
|
|
this._callback = callback;
|
|
const piper = function piper2(err) {
|
|
if (this._callback) {
|
|
this._callback(err);
|
|
this._callback = null;
|
|
}
|
|
}.bind(this);
|
|
this.on("pipe", function onPipe(src) {
|
|
src.on("error", piper);
|
|
});
|
|
this.on("unpipe", function onUnpipe(src) {
|
|
src.removeListener("error", piper);
|
|
});
|
|
callback = null;
|
|
}
|
|
BufferList._init.call(this, callback);
|
|
DuplexStream.call(this);
|
|
}
|
|
inherits(BufferListStream, DuplexStream);
|
|
Object.assign(BufferListStream.prototype, BufferList.prototype);
|
|
BufferListStream.prototype._new = function _new(callback) {
|
|
return new BufferListStream(callback);
|
|
};
|
|
BufferListStream.prototype._write = function _write(buf, encoding, callback) {
|
|
this._appendBuffer(buf);
|
|
if (typeof callback === "function") {
|
|
callback();
|
|
}
|
|
};
|
|
BufferListStream.prototype._read = function _read(size) {
|
|
if (!this.length) {
|
|
return this.push(null);
|
|
}
|
|
size = Math.min(size, this.length);
|
|
this.push(this.slice(0, size));
|
|
this.consume(size);
|
|
};
|
|
BufferListStream.prototype.end = function end(chunk) {
|
|
DuplexStream.prototype.end.call(this, chunk);
|
|
if (this._callback) {
|
|
this._callback(null, this.slice());
|
|
this._callback = null;
|
|
}
|
|
};
|
|
BufferListStream.prototype._destroy = function _destroy(err, cb) {
|
|
this._bufs.length = 0;
|
|
this.length = 0;
|
|
cb(err);
|
|
};
|
|
BufferListStream.prototype._isBufferList = function _isBufferList(b3) {
|
|
return b3 instanceof BufferListStream || b3 instanceof BufferList || BufferListStream.isBufferList(b3);
|
|
};
|
|
BufferListStream.isBufferList = BufferList.isBufferList;
|
|
module.exports = BufferListStream;
|
|
module.exports.BufferListStream = BufferListStream;
|
|
module.exports.BufferList = BufferList;
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/packet.js
|
|
var require_packet = __commonJS({
|
|
"node_modules/mqtt-packet/packet.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var Packet = class {
|
|
constructor() {
|
|
this.cmd = null;
|
|
this.retain = false;
|
|
this.qos = 0;
|
|
this.dup = false;
|
|
this.length = -1;
|
|
this.topic = null;
|
|
this.payload = null;
|
|
}
|
|
};
|
|
module.exports = Packet;
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/constants.js
|
|
var require_constants = __commonJS({
|
|
"node_modules/mqtt-packet/constants.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var protocol = module.exports;
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
protocol.types = {
|
|
0: "reserved",
|
|
1: "connect",
|
|
2: "connack",
|
|
3: "publish",
|
|
4: "puback",
|
|
5: "pubrec",
|
|
6: "pubrel",
|
|
7: "pubcomp",
|
|
8: "subscribe",
|
|
9: "suback",
|
|
10: "unsubscribe",
|
|
11: "unsuback",
|
|
12: "pingreq",
|
|
13: "pingresp",
|
|
14: "disconnect",
|
|
15: "auth"
|
|
};
|
|
protocol.requiredHeaderFlags = {
|
|
1: 0,
|
|
// 'connect'
|
|
2: 0,
|
|
// 'connack'
|
|
4: 0,
|
|
// 'puback'
|
|
5: 0,
|
|
// 'pubrec'
|
|
6: 2,
|
|
// 'pubrel'
|
|
7: 0,
|
|
// 'pubcomp'
|
|
8: 2,
|
|
// 'subscribe'
|
|
9: 0,
|
|
// 'suback'
|
|
10: 2,
|
|
// 'unsubscribe'
|
|
11: 0,
|
|
// 'unsuback'
|
|
12: 0,
|
|
// 'pingreq'
|
|
13: 0,
|
|
// 'pingresp'
|
|
14: 0,
|
|
// 'disconnect'
|
|
15: 0
|
|
// 'auth'
|
|
};
|
|
protocol.requiredHeaderFlagsErrors = {};
|
|
for (const k2 in protocol.requiredHeaderFlags) {
|
|
const v4 = protocol.requiredHeaderFlags[k2];
|
|
protocol.requiredHeaderFlagsErrors[k2] = "Invalid header flag bits, must be 0x" + v4.toString(16) + " for " + protocol.types[k2] + " packet";
|
|
}
|
|
protocol.codes = {};
|
|
for (const k2 in protocol.types) {
|
|
const v4 = protocol.types[k2];
|
|
protocol.codes[v4] = k2;
|
|
}
|
|
protocol.CMD_SHIFT = 4;
|
|
protocol.CMD_MASK = 240;
|
|
protocol.DUP_MASK = 8;
|
|
protocol.QOS_MASK = 3;
|
|
protocol.QOS_SHIFT = 1;
|
|
protocol.RETAIN_MASK = 1;
|
|
protocol.VARBYTEINT_MASK = 127;
|
|
protocol.VARBYTEINT_FIN_MASK = 128;
|
|
protocol.VARBYTEINT_MAX = 268435455;
|
|
protocol.SESSIONPRESENT_MASK = 1;
|
|
protocol.SESSIONPRESENT_HEADER = Buffer3.from([protocol.SESSIONPRESENT_MASK]);
|
|
protocol.CONNACK_HEADER = Buffer3.from([protocol.codes.connack << protocol.CMD_SHIFT]);
|
|
protocol.USERNAME_MASK = 128;
|
|
protocol.PASSWORD_MASK = 64;
|
|
protocol.WILL_RETAIN_MASK = 32;
|
|
protocol.WILL_QOS_MASK = 24;
|
|
protocol.WILL_QOS_SHIFT = 3;
|
|
protocol.WILL_FLAG_MASK = 4;
|
|
protocol.CLEAN_SESSION_MASK = 2;
|
|
protocol.CONNECT_HEADER = Buffer3.from([protocol.codes.connect << protocol.CMD_SHIFT]);
|
|
protocol.properties = {
|
|
sessionExpiryInterval: 17,
|
|
willDelayInterval: 24,
|
|
receiveMaximum: 33,
|
|
maximumPacketSize: 39,
|
|
topicAliasMaximum: 34,
|
|
requestResponseInformation: 25,
|
|
requestProblemInformation: 23,
|
|
userProperties: 38,
|
|
authenticationMethod: 21,
|
|
authenticationData: 22,
|
|
payloadFormatIndicator: 1,
|
|
messageExpiryInterval: 2,
|
|
contentType: 3,
|
|
responseTopic: 8,
|
|
correlationData: 9,
|
|
maximumQoS: 36,
|
|
retainAvailable: 37,
|
|
assignedClientIdentifier: 18,
|
|
reasonString: 31,
|
|
wildcardSubscriptionAvailable: 40,
|
|
subscriptionIdentifiersAvailable: 41,
|
|
sharedSubscriptionAvailable: 42,
|
|
serverKeepAlive: 19,
|
|
responseInformation: 26,
|
|
serverReference: 28,
|
|
topicAlias: 35,
|
|
subscriptionIdentifier: 11
|
|
};
|
|
protocol.propertiesCodes = {};
|
|
for (const prop in protocol.properties) {
|
|
const id = protocol.properties[prop];
|
|
protocol.propertiesCodes[id] = prop;
|
|
}
|
|
protocol.propertiesTypes = {
|
|
sessionExpiryInterval: "int32",
|
|
willDelayInterval: "int32",
|
|
receiveMaximum: "int16",
|
|
maximumPacketSize: "int32",
|
|
topicAliasMaximum: "int16",
|
|
requestResponseInformation: "byte",
|
|
requestProblemInformation: "byte",
|
|
userProperties: "pair",
|
|
authenticationMethod: "string",
|
|
authenticationData: "binary",
|
|
payloadFormatIndicator: "byte",
|
|
messageExpiryInterval: "int32",
|
|
contentType: "string",
|
|
responseTopic: "string",
|
|
correlationData: "binary",
|
|
maximumQoS: "int8",
|
|
retainAvailable: "byte",
|
|
assignedClientIdentifier: "string",
|
|
reasonString: "string",
|
|
wildcardSubscriptionAvailable: "byte",
|
|
subscriptionIdentifiersAvailable: "byte",
|
|
sharedSubscriptionAvailable: "byte",
|
|
serverKeepAlive: "int16",
|
|
responseInformation: "string",
|
|
serverReference: "string",
|
|
topicAlias: "int16",
|
|
subscriptionIdentifier: "var"
|
|
};
|
|
function genHeader(type) {
|
|
return [0, 1, 2].map((qos) => {
|
|
return [0, 1].map((dup) => {
|
|
return [0, 1].map((retain) => {
|
|
const buf = Buffer3.alloc(1);
|
|
buf.writeUInt8(
|
|
protocol.codes[type] << protocol.CMD_SHIFT | (dup ? protocol.DUP_MASK : 0) | qos << protocol.QOS_SHIFT | retain,
|
|
0,
|
|
true
|
|
);
|
|
return buf;
|
|
});
|
|
});
|
|
});
|
|
}
|
|
protocol.PUBLISH_HEADER = genHeader("publish");
|
|
protocol.SUBSCRIBE_HEADER = genHeader("subscribe");
|
|
protocol.SUBSCRIBE_OPTIONS_QOS_MASK = 3;
|
|
protocol.SUBSCRIBE_OPTIONS_NL_MASK = 1;
|
|
protocol.SUBSCRIBE_OPTIONS_NL_SHIFT = 2;
|
|
protocol.SUBSCRIBE_OPTIONS_RAP_MASK = 1;
|
|
protocol.SUBSCRIBE_OPTIONS_RAP_SHIFT = 3;
|
|
protocol.SUBSCRIBE_OPTIONS_RH_MASK = 3;
|
|
protocol.SUBSCRIBE_OPTIONS_RH_SHIFT = 4;
|
|
protocol.SUBSCRIBE_OPTIONS_RH = [0, 16, 32];
|
|
protocol.SUBSCRIBE_OPTIONS_NL = 4;
|
|
protocol.SUBSCRIBE_OPTIONS_RAP = 8;
|
|
protocol.SUBSCRIBE_OPTIONS_QOS = [0, 1, 2];
|
|
protocol.UNSUBSCRIBE_HEADER = genHeader("unsubscribe");
|
|
protocol.ACKS = {
|
|
unsuback: genHeader("unsuback"),
|
|
puback: genHeader("puback"),
|
|
pubcomp: genHeader("pubcomp"),
|
|
pubrel: genHeader("pubrel"),
|
|
pubrec: genHeader("pubrec")
|
|
};
|
|
protocol.SUBACK_HEADER = Buffer3.from([protocol.codes.suback << protocol.CMD_SHIFT]);
|
|
protocol.VERSION3 = Buffer3.from([3]);
|
|
protocol.VERSION4 = Buffer3.from([4]);
|
|
protocol.VERSION5 = Buffer3.from([5]);
|
|
protocol.VERSION131 = Buffer3.from([131]);
|
|
protocol.VERSION132 = Buffer3.from([132]);
|
|
protocol.QOS = [0, 1, 2].map((qos) => {
|
|
return Buffer3.from([qos]);
|
|
});
|
|
protocol.EMPTY = {
|
|
pingreq: Buffer3.from([protocol.codes.pingreq << 4, 0]),
|
|
pingresp: Buffer3.from([protocol.codes.pingresp << 4, 0]),
|
|
disconnect: Buffer3.from([protocol.codes.disconnect << 4, 0])
|
|
};
|
|
protocol.MQTT5_PUBACK_PUBREC_CODES = {
|
|
0: "Success",
|
|
16: "No matching subscribers",
|
|
128: "Unspecified error",
|
|
131: "Implementation specific error",
|
|
135: "Not authorized",
|
|
144: "Topic Name invalid",
|
|
145: "Packet identifier in use",
|
|
151: "Quota exceeded",
|
|
153: "Payload format invalid"
|
|
};
|
|
protocol.MQTT5_PUBREL_PUBCOMP_CODES = {
|
|
0: "Success",
|
|
146: "Packet Identifier not found"
|
|
};
|
|
protocol.MQTT5_SUBACK_CODES = {
|
|
0: "Granted QoS 0",
|
|
1: "Granted QoS 1",
|
|
2: "Granted QoS 2",
|
|
128: "Unspecified error",
|
|
131: "Implementation specific error",
|
|
135: "Not authorized",
|
|
143: "Topic Filter invalid",
|
|
145: "Packet Identifier in use",
|
|
151: "Quota exceeded",
|
|
158: "Shared Subscriptions not supported",
|
|
161: "Subscription Identifiers not supported",
|
|
162: "Wildcard Subscriptions not supported"
|
|
};
|
|
protocol.MQTT5_UNSUBACK_CODES = {
|
|
0: "Success",
|
|
17: "No subscription existed",
|
|
128: "Unspecified error",
|
|
131: "Implementation specific error",
|
|
135: "Not authorized",
|
|
143: "Topic Filter invalid",
|
|
145: "Packet Identifier in use"
|
|
};
|
|
protocol.MQTT5_DISCONNECT_CODES = {
|
|
0: "Normal disconnection",
|
|
4: "Disconnect with Will Message",
|
|
128: "Unspecified error",
|
|
129: "Malformed Packet",
|
|
130: "Protocol Error",
|
|
131: "Implementation specific error",
|
|
135: "Not authorized",
|
|
137: "Server busy",
|
|
139: "Server shutting down",
|
|
141: "Keep Alive timeout",
|
|
142: "Session taken over",
|
|
143: "Topic Filter invalid",
|
|
144: "Topic Name invalid",
|
|
147: "Receive Maximum exceeded",
|
|
148: "Topic Alias invalid",
|
|
149: "Packet too large",
|
|
150: "Message rate too high",
|
|
151: "Quota exceeded",
|
|
152: "Administrative action",
|
|
153: "Payload format invalid",
|
|
154: "Retain not supported",
|
|
155: "QoS not supported",
|
|
156: "Use another server",
|
|
157: "Server moved",
|
|
158: "Shared Subscriptions not supported",
|
|
159: "Connection rate exceeded",
|
|
160: "Maximum connect time",
|
|
161: "Subscription Identifiers not supported",
|
|
162: "Wildcard Subscriptions not supported"
|
|
};
|
|
protocol.MQTT5_AUTH_CODES = {
|
|
0: "Success",
|
|
24: "Continue authentication",
|
|
25: "Re-authenticate"
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/ms/index.js
|
|
var require_ms = __commonJS({
|
|
"node_modules/ms/index.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var s5 = 1e3;
|
|
var m4 = s5 * 60;
|
|
var h6 = m4 * 60;
|
|
var d4 = h6 * 24;
|
|
var w2 = d4 * 7;
|
|
var y4 = d4 * 365.25;
|
|
module.exports = function(val, options) {
|
|
options = options || {};
|
|
var type = typeof val;
|
|
if (type === "string" && val.length > 0) {
|
|
return parse2(val);
|
|
} else if (type === "number" && isFinite(val)) {
|
|
return options.long ? fmtLong(val) : fmtShort(val);
|
|
}
|
|
throw new Error(
|
|
"val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
|
|
);
|
|
};
|
|
function parse2(str) {
|
|
str = String(str);
|
|
if (str.length > 100) {
|
|
return;
|
|
}
|
|
var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
|
|
str
|
|
);
|
|
if (!match) {
|
|
return;
|
|
}
|
|
var n7 = parseFloat(match[1]);
|
|
var type = (match[2] || "ms").toLowerCase();
|
|
switch (type) {
|
|
case "years":
|
|
case "year":
|
|
case "yrs":
|
|
case "yr":
|
|
case "y":
|
|
return n7 * y4;
|
|
case "weeks":
|
|
case "week":
|
|
case "w":
|
|
return n7 * w2;
|
|
case "days":
|
|
case "day":
|
|
case "d":
|
|
return n7 * d4;
|
|
case "hours":
|
|
case "hour":
|
|
case "hrs":
|
|
case "hr":
|
|
case "h":
|
|
return n7 * h6;
|
|
case "minutes":
|
|
case "minute":
|
|
case "mins":
|
|
case "min":
|
|
case "m":
|
|
return n7 * m4;
|
|
case "seconds":
|
|
case "second":
|
|
case "secs":
|
|
case "sec":
|
|
case "s":
|
|
return n7 * s5;
|
|
case "milliseconds":
|
|
case "millisecond":
|
|
case "msecs":
|
|
case "msec":
|
|
case "ms":
|
|
return n7;
|
|
default:
|
|
return void 0;
|
|
}
|
|
}
|
|
function fmtShort(ms) {
|
|
var msAbs = Math.abs(ms);
|
|
if (msAbs >= d4) {
|
|
return Math.round(ms / d4) + "d";
|
|
}
|
|
if (msAbs >= h6) {
|
|
return Math.round(ms / h6) + "h";
|
|
}
|
|
if (msAbs >= m4) {
|
|
return Math.round(ms / m4) + "m";
|
|
}
|
|
if (msAbs >= s5) {
|
|
return Math.round(ms / s5) + "s";
|
|
}
|
|
return ms + "ms";
|
|
}
|
|
function fmtLong(ms) {
|
|
var msAbs = Math.abs(ms);
|
|
if (msAbs >= d4) {
|
|
return plural(ms, msAbs, d4, "day");
|
|
}
|
|
if (msAbs >= h6) {
|
|
return plural(ms, msAbs, h6, "hour");
|
|
}
|
|
if (msAbs >= m4) {
|
|
return plural(ms, msAbs, m4, "minute");
|
|
}
|
|
if (msAbs >= s5) {
|
|
return plural(ms, msAbs, s5, "second");
|
|
}
|
|
return ms + " ms";
|
|
}
|
|
function plural(ms, msAbs, n7, name2) {
|
|
var isPlural = msAbs >= n7 * 1.5;
|
|
return Math.round(ms / n7) + " " + name2 + (isPlural ? "s" : "");
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/debug/src/common.js
|
|
var require_common = __commonJS({
|
|
"node_modules/debug/src/common.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
function setup(env2) {
|
|
createDebug.debug = createDebug;
|
|
createDebug.default = createDebug;
|
|
createDebug.coerce = coerce;
|
|
createDebug.disable = disable;
|
|
createDebug.enable = enable;
|
|
createDebug.enabled = enabled;
|
|
createDebug.humanize = require_ms();
|
|
createDebug.destroy = destroy;
|
|
Object.keys(env2).forEach((key) => {
|
|
createDebug[key] = env2[key];
|
|
});
|
|
createDebug.names = [];
|
|
createDebug.skips = [];
|
|
createDebug.formatters = {};
|
|
function selectColor(namespace) {
|
|
let hash = 0;
|
|
for (let i6 = 0; i6 < namespace.length; i6++) {
|
|
hash = (hash << 5) - hash + namespace.charCodeAt(i6);
|
|
hash |= 0;
|
|
}
|
|
return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
|
|
}
|
|
createDebug.selectColor = selectColor;
|
|
function createDebug(namespace) {
|
|
let prevTime;
|
|
let enableOverride = null;
|
|
let namespacesCache;
|
|
let enabledCache;
|
|
function debug(...args) {
|
|
if (!debug.enabled) {
|
|
return;
|
|
}
|
|
const self2 = debug;
|
|
const curr = Number(/* @__PURE__ */ new Date());
|
|
const ms = curr - (prevTime || curr);
|
|
self2.diff = ms;
|
|
self2.prev = prevTime;
|
|
self2.curr = curr;
|
|
prevTime = curr;
|
|
args[0] = createDebug.coerce(args[0]);
|
|
if (typeof args[0] !== "string") {
|
|
args.unshift("%O");
|
|
}
|
|
let index = 0;
|
|
args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format2) => {
|
|
if (match === "%%") {
|
|
return "%";
|
|
}
|
|
index++;
|
|
const formatter = createDebug.formatters[format2];
|
|
if (typeof formatter === "function") {
|
|
const val = args[index];
|
|
match = formatter.call(self2, val);
|
|
args.splice(index, 1);
|
|
index--;
|
|
}
|
|
return match;
|
|
});
|
|
createDebug.formatArgs.call(self2, args);
|
|
const logFn = self2.log || createDebug.log;
|
|
logFn.apply(self2, args);
|
|
}
|
|
debug.namespace = namespace;
|
|
debug.useColors = createDebug.useColors();
|
|
debug.color = createDebug.selectColor(namespace);
|
|
debug.extend = extend;
|
|
debug.destroy = createDebug.destroy;
|
|
Object.defineProperty(debug, "enabled", {
|
|
enumerable: true,
|
|
configurable: false,
|
|
get: () => {
|
|
if (enableOverride !== null) {
|
|
return enableOverride;
|
|
}
|
|
if (namespacesCache !== createDebug.namespaces) {
|
|
namespacesCache = createDebug.namespaces;
|
|
enabledCache = createDebug.enabled(namespace);
|
|
}
|
|
return enabledCache;
|
|
},
|
|
set: (v4) => {
|
|
enableOverride = v4;
|
|
}
|
|
});
|
|
if (typeof createDebug.init === "function") {
|
|
createDebug.init(debug);
|
|
}
|
|
return debug;
|
|
}
|
|
function extend(namespace, delimiter) {
|
|
const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
|
|
newDebug.log = this.log;
|
|
return newDebug;
|
|
}
|
|
function enable(namespaces) {
|
|
createDebug.save(namespaces);
|
|
createDebug.namespaces = namespaces;
|
|
createDebug.names = [];
|
|
createDebug.skips = [];
|
|
let i6;
|
|
const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
|
|
const len = split.length;
|
|
for (i6 = 0; i6 < len; i6++) {
|
|
if (!split[i6]) {
|
|
continue;
|
|
}
|
|
namespaces = split[i6].replace(/\*/g, ".*?");
|
|
if (namespaces[0] === "-") {
|
|
createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$"));
|
|
} else {
|
|
createDebug.names.push(new RegExp("^" + namespaces + "$"));
|
|
}
|
|
}
|
|
}
|
|
function disable() {
|
|
const namespaces = [
|
|
...createDebug.names.map(toNamespace),
|
|
...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
|
|
].join(",");
|
|
createDebug.enable("");
|
|
return namespaces;
|
|
}
|
|
function enabled(name2) {
|
|
if (name2[name2.length - 1] === "*") {
|
|
return true;
|
|
}
|
|
let i6;
|
|
let len;
|
|
for (i6 = 0, len = createDebug.skips.length; i6 < len; i6++) {
|
|
if (createDebug.skips[i6].test(name2)) {
|
|
return false;
|
|
}
|
|
}
|
|
for (i6 = 0, len = createDebug.names.length; i6 < len; i6++) {
|
|
if (createDebug.names[i6].test(name2)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
function toNamespace(regexp) {
|
|
return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
|
|
}
|
|
function coerce(val) {
|
|
if (val instanceof Error) {
|
|
return val.stack || val.message;
|
|
}
|
|
return val;
|
|
}
|
|
function destroy() {
|
|
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
|
}
|
|
createDebug.enable(createDebug.load());
|
|
return createDebug;
|
|
}
|
|
module.exports = setup;
|
|
}
|
|
});
|
|
|
|
// node_modules/debug/src/browser.js
|
|
var require_browser4 = __commonJS({
|
|
"node_modules/debug/src/browser.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
exports5.formatArgs = formatArgs;
|
|
exports5.save = save;
|
|
exports5.load = load;
|
|
exports5.useColors = useColors;
|
|
exports5.storage = localstorage();
|
|
exports5.destroy = (() => {
|
|
let warned = false;
|
|
return () => {
|
|
if (!warned) {
|
|
warned = true;
|
|
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
|
}
|
|
};
|
|
})();
|
|
exports5.colors = [
|
|
"#0000CC",
|
|
"#0000FF",
|
|
"#0033CC",
|
|
"#0033FF",
|
|
"#0066CC",
|
|
"#0066FF",
|
|
"#0099CC",
|
|
"#0099FF",
|
|
"#00CC00",
|
|
"#00CC33",
|
|
"#00CC66",
|
|
"#00CC99",
|
|
"#00CCCC",
|
|
"#00CCFF",
|
|
"#3300CC",
|
|
"#3300FF",
|
|
"#3333CC",
|
|
"#3333FF",
|
|
"#3366CC",
|
|
"#3366FF",
|
|
"#3399CC",
|
|
"#3399FF",
|
|
"#33CC00",
|
|
"#33CC33",
|
|
"#33CC66",
|
|
"#33CC99",
|
|
"#33CCCC",
|
|
"#33CCFF",
|
|
"#6600CC",
|
|
"#6600FF",
|
|
"#6633CC",
|
|
"#6633FF",
|
|
"#66CC00",
|
|
"#66CC33",
|
|
"#9900CC",
|
|
"#9900FF",
|
|
"#9933CC",
|
|
"#9933FF",
|
|
"#99CC00",
|
|
"#99CC33",
|
|
"#CC0000",
|
|
"#CC0033",
|
|
"#CC0066",
|
|
"#CC0099",
|
|
"#CC00CC",
|
|
"#CC00FF",
|
|
"#CC3300",
|
|
"#CC3333",
|
|
"#CC3366",
|
|
"#CC3399",
|
|
"#CC33CC",
|
|
"#CC33FF",
|
|
"#CC6600",
|
|
"#CC6633",
|
|
"#CC9900",
|
|
"#CC9933",
|
|
"#CCCC00",
|
|
"#CCCC33",
|
|
"#FF0000",
|
|
"#FF0033",
|
|
"#FF0066",
|
|
"#FF0099",
|
|
"#FF00CC",
|
|
"#FF00FF",
|
|
"#FF3300",
|
|
"#FF3333",
|
|
"#FF3366",
|
|
"#FF3399",
|
|
"#FF33CC",
|
|
"#FF33FF",
|
|
"#FF6600",
|
|
"#FF6633",
|
|
"#FF9900",
|
|
"#FF9933",
|
|
"#FFCC00",
|
|
"#FFCC33"
|
|
];
|
|
function useColors() {
|
|
if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
|
|
return true;
|
|
}
|
|
if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
|
|
return false;
|
|
}
|
|
return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
|
|
typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
|
|
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
|
|
typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
|
|
typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
|
|
}
|
|
function formatArgs(args) {
|
|
args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff);
|
|
if (!this.useColors) {
|
|
return;
|
|
}
|
|
const c6 = "color: " + this.color;
|
|
args.splice(1, 0, c6, "color: inherit");
|
|
let index = 0;
|
|
let lastC = 0;
|
|
args[0].replace(/%[a-zA-Z%]/g, (match) => {
|
|
if (match === "%%") {
|
|
return;
|
|
}
|
|
index++;
|
|
if (match === "%c") {
|
|
lastC = index;
|
|
}
|
|
});
|
|
args.splice(lastC, 0, c6);
|
|
}
|
|
exports5.log = console.debug || console.log || (() => {
|
|
});
|
|
function save(namespaces) {
|
|
try {
|
|
if (namespaces) {
|
|
exports5.storage.setItem("debug", namespaces);
|
|
} else {
|
|
exports5.storage.removeItem("debug");
|
|
}
|
|
} catch (error) {
|
|
}
|
|
}
|
|
function load() {
|
|
let r7;
|
|
try {
|
|
r7 = exports5.storage.getItem("debug");
|
|
} catch (error) {
|
|
}
|
|
if (!r7 && typeof process_exports !== "undefined" && "env" in process_exports) {
|
|
r7 = process_exports.env.DEBUG;
|
|
}
|
|
return r7;
|
|
}
|
|
function localstorage() {
|
|
try {
|
|
return localStorage;
|
|
} catch (error) {
|
|
}
|
|
}
|
|
module.exports = require_common()(exports5);
|
|
var { formatters } = module.exports;
|
|
formatters.j = function(v4) {
|
|
try {
|
|
return JSON.stringify(v4);
|
|
} catch (error) {
|
|
return "[UnexpectedJSONParseError]: " + error.message;
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/parser.js
|
|
var require_parser = __commonJS({
|
|
"node_modules/mqtt-packet/parser.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var bl = require_bl();
|
|
var { EventEmitter: EventEmitter2 } = (init_events(), __toCommonJS(events_exports));
|
|
var Packet = require_packet();
|
|
var constants = require_constants();
|
|
var debug = require_browser4()("mqtt-packet:parser");
|
|
var Parser = class _Parser extends EventEmitter2 {
|
|
constructor() {
|
|
super();
|
|
this.parser = this.constructor.parser;
|
|
}
|
|
static parser(opt) {
|
|
if (!(this instanceof _Parser))
|
|
return new _Parser().parser(opt);
|
|
this.settings = opt || {};
|
|
this._states = [
|
|
"_parseHeader",
|
|
"_parseLength",
|
|
"_parsePayload",
|
|
"_newPacket"
|
|
];
|
|
this._resetState();
|
|
return this;
|
|
}
|
|
_resetState() {
|
|
debug("_resetState: resetting packet, error, _list, and _stateCounter");
|
|
this.packet = new Packet();
|
|
this.error = null;
|
|
this._list = bl();
|
|
this._stateCounter = 0;
|
|
}
|
|
parse(buf) {
|
|
if (this.error)
|
|
this._resetState();
|
|
this._list.append(buf);
|
|
debug("parse: current state: %s", this._states[this._stateCounter]);
|
|
while ((this.packet.length !== -1 || this._list.length > 0) && this[this._states[this._stateCounter]]() && !this.error) {
|
|
this._stateCounter++;
|
|
debug("parse: state complete. _stateCounter is now: %d", this._stateCounter);
|
|
debug("parse: packet.length: %d, buffer list length: %d", this.packet.length, this._list.length);
|
|
if (this._stateCounter >= this._states.length)
|
|
this._stateCounter = 0;
|
|
}
|
|
debug("parse: exited while loop. packet: %d, buffer list length: %d", this.packet.length, this._list.length);
|
|
return this._list.length;
|
|
}
|
|
_parseHeader() {
|
|
const zero = this._list.readUInt8(0);
|
|
const cmdIndex = zero >> constants.CMD_SHIFT;
|
|
this.packet.cmd = constants.types[cmdIndex];
|
|
const headerFlags = zero & 15;
|
|
const requiredHeaderFlags = constants.requiredHeaderFlags[cmdIndex];
|
|
if (requiredHeaderFlags != null && headerFlags !== requiredHeaderFlags) {
|
|
return this._emitError(new Error(constants.requiredHeaderFlagsErrors[cmdIndex]));
|
|
}
|
|
this.packet.retain = (zero & constants.RETAIN_MASK) !== 0;
|
|
this.packet.qos = zero >> constants.QOS_SHIFT & constants.QOS_MASK;
|
|
if (this.packet.qos > 2) {
|
|
return this._emitError(new Error("Packet must not have both QoS bits set to 1"));
|
|
}
|
|
this.packet.dup = (zero & constants.DUP_MASK) !== 0;
|
|
debug("_parseHeader: packet: %o", this.packet);
|
|
this._list.consume(1);
|
|
return true;
|
|
}
|
|
_parseLength() {
|
|
const result = this._parseVarByteNum(true);
|
|
if (result) {
|
|
this.packet.length = result.value;
|
|
this._list.consume(result.bytes);
|
|
}
|
|
debug("_parseLength %d", result.value);
|
|
return !!result;
|
|
}
|
|
_parsePayload() {
|
|
debug("_parsePayload: payload %O", this._list);
|
|
let result = false;
|
|
if (this.packet.length === 0 || this._list.length >= this.packet.length) {
|
|
this._pos = 0;
|
|
switch (this.packet.cmd) {
|
|
case "connect":
|
|
this._parseConnect();
|
|
break;
|
|
case "connack":
|
|
this._parseConnack();
|
|
break;
|
|
case "publish":
|
|
this._parsePublish();
|
|
break;
|
|
case "puback":
|
|
case "pubrec":
|
|
case "pubrel":
|
|
case "pubcomp":
|
|
this._parseConfirmation();
|
|
break;
|
|
case "subscribe":
|
|
this._parseSubscribe();
|
|
break;
|
|
case "suback":
|
|
this._parseSuback();
|
|
break;
|
|
case "unsubscribe":
|
|
this._parseUnsubscribe();
|
|
break;
|
|
case "unsuback":
|
|
this._parseUnsuback();
|
|
break;
|
|
case "pingreq":
|
|
case "pingresp":
|
|
break;
|
|
case "disconnect":
|
|
this._parseDisconnect();
|
|
break;
|
|
case "auth":
|
|
this._parseAuth();
|
|
break;
|
|
default:
|
|
this._emitError(new Error("Not supported"));
|
|
}
|
|
result = true;
|
|
}
|
|
debug("_parsePayload complete result: %s", result);
|
|
return result;
|
|
}
|
|
_parseConnect() {
|
|
debug("_parseConnect");
|
|
let topic;
|
|
let payload;
|
|
let password;
|
|
let username;
|
|
const flags = {};
|
|
const packet = this.packet;
|
|
const protocolId = this._parseString();
|
|
if (protocolId === null)
|
|
return this._emitError(new Error("Cannot parse protocolId"));
|
|
if (protocolId !== "MQTT" && protocolId !== "MQIsdp") {
|
|
return this._emitError(new Error("Invalid protocolId"));
|
|
}
|
|
packet.protocolId = protocolId;
|
|
if (this._pos >= this._list.length)
|
|
return this._emitError(new Error("Packet too short"));
|
|
packet.protocolVersion = this._list.readUInt8(this._pos);
|
|
if (packet.protocolVersion >= 128) {
|
|
packet.bridgeMode = true;
|
|
packet.protocolVersion = packet.protocolVersion - 128;
|
|
}
|
|
if (packet.protocolVersion !== 3 && packet.protocolVersion !== 4 && packet.protocolVersion !== 5) {
|
|
return this._emitError(new Error("Invalid protocol version"));
|
|
}
|
|
this._pos++;
|
|
if (this._pos >= this._list.length) {
|
|
return this._emitError(new Error("Packet too short"));
|
|
}
|
|
if (this._list.readUInt8(this._pos) & 1) {
|
|
return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));
|
|
}
|
|
flags.username = this._list.readUInt8(this._pos) & constants.USERNAME_MASK;
|
|
flags.password = this._list.readUInt8(this._pos) & constants.PASSWORD_MASK;
|
|
flags.will = this._list.readUInt8(this._pos) & constants.WILL_FLAG_MASK;
|
|
const willRetain = !!(this._list.readUInt8(this._pos) & constants.WILL_RETAIN_MASK);
|
|
const willQos = (this._list.readUInt8(this._pos) & constants.WILL_QOS_MASK) >> constants.WILL_QOS_SHIFT;
|
|
if (flags.will) {
|
|
packet.will = {};
|
|
packet.will.retain = willRetain;
|
|
packet.will.qos = willQos;
|
|
} else {
|
|
if (willRetain) {
|
|
return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));
|
|
}
|
|
if (willQos) {
|
|
return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"));
|
|
}
|
|
}
|
|
packet.clean = (this._list.readUInt8(this._pos) & constants.CLEAN_SESSION_MASK) !== 0;
|
|
this._pos++;
|
|
packet.keepalive = this._parseNum();
|
|
if (packet.keepalive === -1)
|
|
return this._emitError(new Error("Packet too short"));
|
|
if (packet.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
const clientId = this._parseString();
|
|
if (clientId === null)
|
|
return this._emitError(new Error("Packet too short"));
|
|
packet.clientId = clientId;
|
|
debug("_parseConnect: packet.clientId: %s", packet.clientId);
|
|
if (flags.will) {
|
|
if (packet.protocolVersion === 5) {
|
|
const willProperties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(willProperties).length) {
|
|
packet.will.properties = willProperties;
|
|
}
|
|
}
|
|
topic = this._parseString();
|
|
if (topic === null)
|
|
return this._emitError(new Error("Cannot parse will topic"));
|
|
packet.will.topic = topic;
|
|
debug("_parseConnect: packet.will.topic: %s", packet.will.topic);
|
|
payload = this._parseBuffer();
|
|
if (payload === null)
|
|
return this._emitError(new Error("Cannot parse will payload"));
|
|
packet.will.payload = payload;
|
|
debug("_parseConnect: packet.will.paylaod: %s", packet.will.payload);
|
|
}
|
|
if (flags.username) {
|
|
username = this._parseString();
|
|
if (username === null)
|
|
return this._emitError(new Error("Cannot parse username"));
|
|
packet.username = username;
|
|
debug("_parseConnect: packet.username: %s", packet.username);
|
|
}
|
|
if (flags.password) {
|
|
password = this._parseBuffer();
|
|
if (password === null)
|
|
return this._emitError(new Error("Cannot parse password"));
|
|
packet.password = password;
|
|
}
|
|
this.settings = packet;
|
|
debug("_parseConnect: complete");
|
|
return packet;
|
|
}
|
|
_parseConnack() {
|
|
debug("_parseConnack");
|
|
const packet = this.packet;
|
|
if (this._list.length < 1)
|
|
return null;
|
|
const flags = this._list.readUInt8(this._pos++);
|
|
if (flags > 1) {
|
|
return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));
|
|
}
|
|
packet.sessionPresent = !!(flags & constants.SESSIONPRESENT_MASK);
|
|
if (this.settings.protocolVersion === 5) {
|
|
if (this._list.length >= 2) {
|
|
packet.reasonCode = this._list.readUInt8(this._pos++);
|
|
} else {
|
|
packet.reasonCode = 0;
|
|
}
|
|
} else {
|
|
if (this._list.length < 2)
|
|
return null;
|
|
packet.returnCode = this._list.readUInt8(this._pos++);
|
|
}
|
|
if (packet.returnCode === -1 || packet.reasonCode === -1)
|
|
return this._emitError(new Error("Cannot parse return code"));
|
|
if (this.settings.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
debug("_parseConnack: complete");
|
|
}
|
|
_parsePublish() {
|
|
debug("_parsePublish");
|
|
const packet = this.packet;
|
|
packet.topic = this._parseString();
|
|
if (packet.topic === null)
|
|
return this._emitError(new Error("Cannot parse topic"));
|
|
if (packet.qos > 0) {
|
|
if (!this._parseMessageId()) {
|
|
return;
|
|
}
|
|
}
|
|
if (this.settings.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
packet.payload = this._list.slice(this._pos, packet.length);
|
|
debug("_parsePublish: payload from buffer list: %o", packet.payload);
|
|
}
|
|
_parseSubscribe() {
|
|
debug("_parseSubscribe");
|
|
const packet = this.packet;
|
|
let topic;
|
|
let options;
|
|
let qos;
|
|
let rh;
|
|
let rap;
|
|
let nl;
|
|
let subscription;
|
|
packet.subscriptions = [];
|
|
if (!this._parseMessageId()) {
|
|
return;
|
|
}
|
|
if (this.settings.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
if (packet.length <= 0) {
|
|
return this._emitError(new Error("Malformed subscribe, no payload specified"));
|
|
}
|
|
while (this._pos < packet.length) {
|
|
topic = this._parseString();
|
|
if (topic === null)
|
|
return this._emitError(new Error("Cannot parse topic"));
|
|
if (this._pos >= packet.length)
|
|
return this._emitError(new Error("Malformed Subscribe Payload"));
|
|
options = this._parseByte();
|
|
if (this.settings.protocolVersion === 5) {
|
|
if (options & 192) {
|
|
return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"));
|
|
}
|
|
} else {
|
|
if (options & 252) {
|
|
return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));
|
|
}
|
|
}
|
|
qos = options & constants.SUBSCRIBE_OPTIONS_QOS_MASK;
|
|
if (qos > 2) {
|
|
return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));
|
|
}
|
|
nl = (options >> constants.SUBSCRIBE_OPTIONS_NL_SHIFT & constants.SUBSCRIBE_OPTIONS_NL_MASK) !== 0;
|
|
rap = (options >> constants.SUBSCRIBE_OPTIONS_RAP_SHIFT & constants.SUBSCRIBE_OPTIONS_RAP_MASK) !== 0;
|
|
rh = options >> constants.SUBSCRIBE_OPTIONS_RH_SHIFT & constants.SUBSCRIBE_OPTIONS_RH_MASK;
|
|
if (rh > 2) {
|
|
return this._emitError(new Error("Invalid retain handling, must be <= 2"));
|
|
}
|
|
subscription = { topic, qos };
|
|
if (this.settings.protocolVersion === 5) {
|
|
subscription.nl = nl;
|
|
subscription.rap = rap;
|
|
subscription.rh = rh;
|
|
} else if (this.settings.bridgeMode) {
|
|
subscription.rh = 0;
|
|
subscription.rap = true;
|
|
subscription.nl = true;
|
|
}
|
|
debug("_parseSubscribe: push subscription `%s` to subscription", subscription);
|
|
packet.subscriptions.push(subscription);
|
|
}
|
|
}
|
|
_parseSuback() {
|
|
debug("_parseSuback");
|
|
const packet = this.packet;
|
|
this.packet.granted = [];
|
|
if (!this._parseMessageId()) {
|
|
return;
|
|
}
|
|
if (this.settings.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
if (packet.length <= 0) {
|
|
return this._emitError(new Error("Malformed suback, no payload specified"));
|
|
}
|
|
while (this._pos < this.packet.length) {
|
|
const code = this._list.readUInt8(this._pos++);
|
|
if (this.settings.protocolVersion === 5) {
|
|
if (!constants.MQTT5_SUBACK_CODES[code]) {
|
|
return this._emitError(new Error("Invalid suback code"));
|
|
}
|
|
} else {
|
|
if (code > 2 && code !== 128) {
|
|
return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));
|
|
}
|
|
}
|
|
this.packet.granted.push(code);
|
|
}
|
|
}
|
|
_parseUnsubscribe() {
|
|
debug("_parseUnsubscribe");
|
|
const packet = this.packet;
|
|
packet.unsubscriptions = [];
|
|
if (!this._parseMessageId()) {
|
|
return;
|
|
}
|
|
if (this.settings.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
if (packet.length <= 0) {
|
|
return this._emitError(new Error("Malformed unsubscribe, no payload specified"));
|
|
}
|
|
while (this._pos < packet.length) {
|
|
const topic = this._parseString();
|
|
if (topic === null)
|
|
return this._emitError(new Error("Cannot parse topic"));
|
|
debug("_parseUnsubscribe: push topic `%s` to unsubscriptions", topic);
|
|
packet.unsubscriptions.push(topic);
|
|
}
|
|
}
|
|
_parseUnsuback() {
|
|
debug("_parseUnsuback");
|
|
const packet = this.packet;
|
|
if (!this._parseMessageId())
|
|
return this._emitError(new Error("Cannot parse messageId"));
|
|
if ((this.settings.protocolVersion === 3 || this.settings.protocolVersion === 4) && packet.length !== 2) {
|
|
return this._emitError(new Error("Malformed unsuback, payload length must be 2"));
|
|
}
|
|
if (packet.length <= 0) {
|
|
return this._emitError(new Error("Malformed unsuback, no payload specified"));
|
|
}
|
|
if (this.settings.protocolVersion === 5) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
packet.granted = [];
|
|
while (this._pos < this.packet.length) {
|
|
const code = this._list.readUInt8(this._pos++);
|
|
if (!constants.MQTT5_UNSUBACK_CODES[code]) {
|
|
return this._emitError(new Error("Invalid unsuback code"));
|
|
}
|
|
this.packet.granted.push(code);
|
|
}
|
|
}
|
|
}
|
|
// parse packets like puback, pubrec, pubrel, pubcomp
|
|
_parseConfirmation() {
|
|
debug("_parseConfirmation: packet.cmd: `%s`", this.packet.cmd);
|
|
const packet = this.packet;
|
|
this._parseMessageId();
|
|
if (this.settings.protocolVersion === 5) {
|
|
if (packet.length > 2) {
|
|
packet.reasonCode = this._parseByte();
|
|
switch (this.packet.cmd) {
|
|
case "puback":
|
|
case "pubrec":
|
|
if (!constants.MQTT5_PUBACK_PUBREC_CODES[packet.reasonCode]) {
|
|
return this._emitError(new Error("Invalid " + this.packet.cmd + " reason code"));
|
|
}
|
|
break;
|
|
case "pubrel":
|
|
case "pubcomp":
|
|
if (!constants.MQTT5_PUBREL_PUBCOMP_CODES[packet.reasonCode]) {
|
|
return this._emitError(new Error("Invalid " + this.packet.cmd + " reason code"));
|
|
}
|
|
break;
|
|
}
|
|
debug("_parseConfirmation: packet.reasonCode `%d`", packet.reasonCode);
|
|
} else {
|
|
packet.reasonCode = 0;
|
|
}
|
|
if (packet.length > 3) {
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
// parse disconnect packet
|
|
_parseDisconnect() {
|
|
const packet = this.packet;
|
|
debug("_parseDisconnect");
|
|
if (this.settings.protocolVersion === 5) {
|
|
if (this._list.length > 0) {
|
|
packet.reasonCode = this._parseByte();
|
|
if (!constants.MQTT5_DISCONNECT_CODES[packet.reasonCode]) {
|
|
this._emitError(new Error("Invalid disconnect reason code"));
|
|
}
|
|
} else {
|
|
packet.reasonCode = 0;
|
|
}
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
}
|
|
debug("_parseDisconnect result: true");
|
|
return true;
|
|
}
|
|
// parse auth packet
|
|
_parseAuth() {
|
|
debug("_parseAuth");
|
|
const packet = this.packet;
|
|
if (this.settings.protocolVersion !== 5) {
|
|
return this._emitError(new Error("Not supported auth packet for this version MQTT"));
|
|
}
|
|
packet.reasonCode = this._parseByte();
|
|
if (!constants.MQTT5_AUTH_CODES[packet.reasonCode]) {
|
|
return this._emitError(new Error("Invalid auth reason code"));
|
|
}
|
|
const properties = this._parseProperties();
|
|
if (Object.getOwnPropertyNames(properties).length) {
|
|
packet.properties = properties;
|
|
}
|
|
debug("_parseAuth: result: true");
|
|
return true;
|
|
}
|
|
_parseMessageId() {
|
|
const packet = this.packet;
|
|
packet.messageId = this._parseNum();
|
|
if (packet.messageId === null) {
|
|
this._emitError(new Error("Cannot parse messageId"));
|
|
return false;
|
|
}
|
|
debug("_parseMessageId: packet.messageId %d", packet.messageId);
|
|
return true;
|
|
}
|
|
_parseString(maybeBuffer) {
|
|
const length = this._parseNum();
|
|
const end = length + this._pos;
|
|
if (length === -1 || end > this._list.length || end > this.packet.length)
|
|
return null;
|
|
const result = this._list.toString("utf8", this._pos, end);
|
|
this._pos += length;
|
|
debug("_parseString: result: %s", result);
|
|
return result;
|
|
}
|
|
_parseStringPair() {
|
|
debug("_parseStringPair");
|
|
return {
|
|
name: this._parseString(),
|
|
value: this._parseString()
|
|
};
|
|
}
|
|
_parseBuffer() {
|
|
const length = this._parseNum();
|
|
const end = length + this._pos;
|
|
if (length === -1 || end > this._list.length || end > this.packet.length)
|
|
return null;
|
|
const result = this._list.slice(this._pos, end);
|
|
this._pos += length;
|
|
debug("_parseBuffer: result: %o", result);
|
|
return result;
|
|
}
|
|
_parseNum() {
|
|
if (this._list.length - this._pos < 2)
|
|
return -1;
|
|
const result = this._list.readUInt16BE(this._pos);
|
|
this._pos += 2;
|
|
debug("_parseNum: result: %s", result);
|
|
return result;
|
|
}
|
|
_parse4ByteNum() {
|
|
if (this._list.length - this._pos < 4)
|
|
return -1;
|
|
const result = this._list.readUInt32BE(this._pos);
|
|
this._pos += 4;
|
|
debug("_parse4ByteNum: result: %s", result);
|
|
return result;
|
|
}
|
|
_parseVarByteNum(fullInfoFlag) {
|
|
debug("_parseVarByteNum");
|
|
const maxBytes = 4;
|
|
let bytes = 0;
|
|
let mul = 1;
|
|
let value = 0;
|
|
let result = false;
|
|
let current;
|
|
const padding = this._pos ? this._pos : 0;
|
|
while (bytes < maxBytes && padding + bytes < this._list.length) {
|
|
current = this._list.readUInt8(padding + bytes++);
|
|
value += mul * (current & constants.VARBYTEINT_MASK);
|
|
mul *= 128;
|
|
if ((current & constants.VARBYTEINT_FIN_MASK) === 0) {
|
|
result = true;
|
|
break;
|
|
}
|
|
if (this._list.length <= bytes) {
|
|
break;
|
|
}
|
|
}
|
|
if (!result && bytes === maxBytes && this._list.length >= bytes) {
|
|
this._emitError(new Error("Invalid variable byte integer"));
|
|
}
|
|
if (padding) {
|
|
this._pos += bytes;
|
|
}
|
|
if (result) {
|
|
if (fullInfoFlag) {
|
|
result = { bytes, value };
|
|
} else {
|
|
result = value;
|
|
}
|
|
} else {
|
|
result = false;
|
|
}
|
|
debug("_parseVarByteNum: result: %o", result);
|
|
return result;
|
|
}
|
|
_parseByte() {
|
|
let result;
|
|
if (this._pos < this._list.length) {
|
|
result = this._list.readUInt8(this._pos);
|
|
this._pos++;
|
|
}
|
|
debug("_parseByte: result: %o", result);
|
|
return result;
|
|
}
|
|
_parseByType(type) {
|
|
debug("_parseByType: type: %s", type);
|
|
switch (type) {
|
|
case "byte": {
|
|
return this._parseByte() !== 0;
|
|
}
|
|
case "int8": {
|
|
return this._parseByte();
|
|
}
|
|
case "int16": {
|
|
return this._parseNum();
|
|
}
|
|
case "int32": {
|
|
return this._parse4ByteNum();
|
|
}
|
|
case "var": {
|
|
return this._parseVarByteNum();
|
|
}
|
|
case "string": {
|
|
return this._parseString();
|
|
}
|
|
case "pair": {
|
|
return this._parseStringPair();
|
|
}
|
|
case "binary": {
|
|
return this._parseBuffer();
|
|
}
|
|
}
|
|
}
|
|
_parseProperties() {
|
|
debug("_parseProperties");
|
|
const length = this._parseVarByteNum();
|
|
const start = this._pos;
|
|
const end = start + length;
|
|
const result = {};
|
|
while (this._pos < end) {
|
|
const type = this._parseByte();
|
|
if (!type) {
|
|
this._emitError(new Error("Cannot parse property code type"));
|
|
return false;
|
|
}
|
|
const name2 = constants.propertiesCodes[type];
|
|
if (!name2) {
|
|
this._emitError(new Error("Unknown property"));
|
|
return false;
|
|
}
|
|
if (name2 === "userProperties") {
|
|
if (!result[name2]) {
|
|
result[name2] = /* @__PURE__ */ Object.create(null);
|
|
}
|
|
const currentUserProperty = this._parseByType(constants.propertiesTypes[name2]);
|
|
if (result[name2][currentUserProperty.name]) {
|
|
if (Array.isArray(result[name2][currentUserProperty.name])) {
|
|
result[name2][currentUserProperty.name].push(currentUserProperty.value);
|
|
} else {
|
|
const currentValue = result[name2][currentUserProperty.name];
|
|
result[name2][currentUserProperty.name] = [currentValue];
|
|
result[name2][currentUserProperty.name].push(currentUserProperty.value);
|
|
}
|
|
} else {
|
|
result[name2][currentUserProperty.name] = currentUserProperty.value;
|
|
}
|
|
continue;
|
|
}
|
|
if (result[name2]) {
|
|
if (Array.isArray(result[name2])) {
|
|
result[name2].push(this._parseByType(constants.propertiesTypes[name2]));
|
|
} else {
|
|
result[name2] = [result[name2]];
|
|
result[name2].push(this._parseByType(constants.propertiesTypes[name2]));
|
|
}
|
|
} else {
|
|
result[name2] = this._parseByType(constants.propertiesTypes[name2]);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
_newPacket() {
|
|
debug("_newPacket");
|
|
if (this.packet) {
|
|
this._list.consume(this.packet.length);
|
|
debug("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d", this.packet.cmd, this.packet.payload, this.packet.length);
|
|
this.emit("packet", this.packet);
|
|
}
|
|
debug("_newPacket: new packet");
|
|
this.packet = new Packet();
|
|
this._pos = 0;
|
|
return true;
|
|
}
|
|
_emitError(err) {
|
|
debug("_emitError", err);
|
|
this.error = err;
|
|
this.emit("error", err);
|
|
}
|
|
};
|
|
module.exports = Parser;
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/numbers.js
|
|
var require_numbers = __commonJS({
|
|
"node_modules/mqtt-packet/numbers.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var max = 65536;
|
|
var cache = {};
|
|
var SubOk = Buffer3.isBuffer(Buffer3.from([1, 2]).subarray(0, 1));
|
|
function generateBuffer(i6) {
|
|
const buffer = Buffer3.allocUnsafe(2);
|
|
buffer.writeUInt8(i6 >> 8, 0);
|
|
buffer.writeUInt8(i6 & 255, 0 + 1);
|
|
return buffer;
|
|
}
|
|
function generateCache() {
|
|
for (let i6 = 0; i6 < max; i6++) {
|
|
cache[i6] = generateBuffer(i6);
|
|
}
|
|
}
|
|
function genBufVariableByteInt(num) {
|
|
const maxLength = 4;
|
|
let digit = 0;
|
|
let pos = 0;
|
|
const buffer = Buffer3.allocUnsafe(maxLength);
|
|
do {
|
|
digit = num % 128 | 0;
|
|
num = num / 128 | 0;
|
|
if (num > 0)
|
|
digit = digit | 128;
|
|
buffer.writeUInt8(digit, pos++);
|
|
} while (num > 0 && pos < maxLength);
|
|
if (num > 0) {
|
|
pos = 0;
|
|
}
|
|
return SubOk ? buffer.subarray(0, pos) : buffer.slice(0, pos);
|
|
}
|
|
function generate4ByteBuffer(num) {
|
|
const buffer = Buffer3.allocUnsafe(4);
|
|
buffer.writeUInt32BE(num, 0);
|
|
return buffer;
|
|
}
|
|
module.exports = {
|
|
cache,
|
|
generateCache,
|
|
generateNumber: generateBuffer,
|
|
genBufVariableByteInt,
|
|
generate4ByteBuffer
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/process-nextick-args/index.js
|
|
var require_process_nextick_args = __commonJS({
|
|
"node_modules/process-nextick-args/index.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
if (typeof process_exports === "undefined" || !process_exports.version || process_exports.version.indexOf("v0.") === 0 || process_exports.version.indexOf("v1.") === 0 && process_exports.version.indexOf("v1.8.") !== 0) {
|
|
module.exports = { nextTick: nextTick2 };
|
|
} else {
|
|
module.exports = process_exports;
|
|
}
|
|
function nextTick2(fn, arg1, arg2, arg3) {
|
|
if (typeof fn !== "function") {
|
|
throw new TypeError('"callback" argument must be a function');
|
|
}
|
|
var len = arguments.length;
|
|
var args, i6;
|
|
switch (len) {
|
|
case 0:
|
|
case 1:
|
|
return process_exports.nextTick(fn);
|
|
case 2:
|
|
return process_exports.nextTick(function afterTickOne() {
|
|
fn.call(null, arg1);
|
|
});
|
|
case 3:
|
|
return process_exports.nextTick(function afterTickTwo() {
|
|
fn.call(null, arg1, arg2);
|
|
});
|
|
case 4:
|
|
return process_exports.nextTick(function afterTickThree() {
|
|
fn.call(null, arg1, arg2, arg3);
|
|
});
|
|
default:
|
|
args = new Array(len - 1);
|
|
i6 = 0;
|
|
while (i6 < args.length) {
|
|
args[i6++] = arguments[i6];
|
|
}
|
|
return process_exports.nextTick(function afterTick() {
|
|
fn.apply(null, args);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/writeToStream.js
|
|
var require_writeToStream = __commonJS({
|
|
"node_modules/mqtt-packet/writeToStream.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var protocol = require_constants();
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var empty = Buffer3.allocUnsafe(0);
|
|
var zeroBuf = Buffer3.from([0]);
|
|
var numbers = require_numbers();
|
|
var nextTick2 = require_process_nextick_args().nextTick;
|
|
var debug = require_browser4()("mqtt-packet:writeToStream");
|
|
var numCache = numbers.cache;
|
|
var generateNumber = numbers.generateNumber;
|
|
var generateCache = numbers.generateCache;
|
|
var genBufVariableByteInt = numbers.genBufVariableByteInt;
|
|
var generate4ByteBuffer = numbers.generate4ByteBuffer;
|
|
var writeNumber = writeNumberCached;
|
|
var toGenerate = true;
|
|
function generate(packet, stream, opts) {
|
|
debug("generate called");
|
|
if (stream.cork) {
|
|
stream.cork();
|
|
nextTick2(uncork, stream);
|
|
}
|
|
if (toGenerate) {
|
|
toGenerate = false;
|
|
generateCache();
|
|
}
|
|
debug("generate: packet.cmd: %s", packet.cmd);
|
|
switch (packet.cmd) {
|
|
case "connect":
|
|
return connect(packet, stream, opts);
|
|
case "connack":
|
|
return connack(packet, stream, opts);
|
|
case "publish":
|
|
return publish(packet, stream, opts);
|
|
case "puback":
|
|
case "pubrec":
|
|
case "pubrel":
|
|
case "pubcomp":
|
|
return confirmation(packet, stream, opts);
|
|
case "subscribe":
|
|
return subscribe(packet, stream, opts);
|
|
case "suback":
|
|
return suback(packet, stream, opts);
|
|
case "unsubscribe":
|
|
return unsubscribe(packet, stream, opts);
|
|
case "unsuback":
|
|
return unsuback(packet, stream, opts);
|
|
case "pingreq":
|
|
case "pingresp":
|
|
return emptyPacket(packet, stream, opts);
|
|
case "disconnect":
|
|
return disconnect(packet, stream, opts);
|
|
case "auth":
|
|
return auth(packet, stream, opts);
|
|
default:
|
|
stream.destroy(new Error("Unknown command"));
|
|
return false;
|
|
}
|
|
}
|
|
Object.defineProperty(generate, "cacheNumbers", {
|
|
get() {
|
|
return writeNumber === writeNumberCached;
|
|
},
|
|
set(value) {
|
|
if (value) {
|
|
if (!numCache || Object.keys(numCache).length === 0)
|
|
toGenerate = true;
|
|
writeNumber = writeNumberCached;
|
|
} else {
|
|
toGenerate = false;
|
|
writeNumber = writeNumberGenerated;
|
|
}
|
|
}
|
|
});
|
|
function uncork(stream) {
|
|
stream.uncork();
|
|
}
|
|
function connect(packet, stream, opts) {
|
|
const settings = packet || {};
|
|
const protocolId = settings.protocolId || "MQTT";
|
|
let protocolVersion = settings.protocolVersion || 4;
|
|
const will = settings.will;
|
|
let clean = settings.clean;
|
|
const keepalive = settings.keepalive || 0;
|
|
const clientId = settings.clientId || "";
|
|
const username = settings.username;
|
|
const password = settings.password;
|
|
const properties = settings.properties;
|
|
if (clean === void 0)
|
|
clean = true;
|
|
let length = 0;
|
|
if (!protocolId || typeof protocolId !== "string" && !Buffer3.isBuffer(protocolId)) {
|
|
stream.destroy(new Error("Invalid protocolId"));
|
|
return false;
|
|
} else
|
|
length += protocolId.length + 2;
|
|
if (protocolVersion !== 3 && protocolVersion !== 4 && protocolVersion !== 5) {
|
|
stream.destroy(new Error("Invalid protocol version"));
|
|
return false;
|
|
} else
|
|
length += 1;
|
|
if ((typeof clientId === "string" || Buffer3.isBuffer(clientId)) && (clientId || protocolVersion >= 4) && (clientId || clean)) {
|
|
length += Buffer3.byteLength(clientId) + 2;
|
|
} else {
|
|
if (protocolVersion < 4) {
|
|
stream.destroy(new Error("clientId must be supplied before 3.1.1"));
|
|
return false;
|
|
}
|
|
if (clean * 1 === 0) {
|
|
stream.destroy(new Error("clientId must be given if cleanSession set to 0"));
|
|
return false;
|
|
}
|
|
}
|
|
if (typeof keepalive !== "number" || keepalive < 0 || keepalive > 65535 || keepalive % 1 !== 0) {
|
|
stream.destroy(new Error("Invalid keepalive"));
|
|
return false;
|
|
} else
|
|
length += 2;
|
|
length += 1;
|
|
let propertiesData;
|
|
let willProperties;
|
|
if (protocolVersion === 5) {
|
|
propertiesData = getProperties(stream, properties);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
if (will) {
|
|
if (typeof will !== "object") {
|
|
stream.destroy(new Error("Invalid will"));
|
|
return false;
|
|
}
|
|
if (!will.topic || typeof will.topic !== "string") {
|
|
stream.destroy(new Error("Invalid will topic"));
|
|
return false;
|
|
} else {
|
|
length += Buffer3.byteLength(will.topic) + 2;
|
|
}
|
|
length += 2;
|
|
if (will.payload) {
|
|
if (will.payload.length >= 0) {
|
|
if (typeof will.payload === "string") {
|
|
length += Buffer3.byteLength(will.payload);
|
|
} else {
|
|
length += will.payload.length;
|
|
}
|
|
} else {
|
|
stream.destroy(new Error("Invalid will payload"));
|
|
return false;
|
|
}
|
|
}
|
|
willProperties = {};
|
|
if (protocolVersion === 5) {
|
|
willProperties = getProperties(stream, will.properties);
|
|
if (!willProperties) {
|
|
return false;
|
|
}
|
|
length += willProperties.length;
|
|
}
|
|
}
|
|
let providedUsername = false;
|
|
if (username != null) {
|
|
if (isStringOrBuffer(username)) {
|
|
providedUsername = true;
|
|
length += Buffer3.byteLength(username) + 2;
|
|
} else {
|
|
stream.destroy(new Error("Invalid username"));
|
|
return false;
|
|
}
|
|
}
|
|
if (password != null) {
|
|
if (!providedUsername) {
|
|
stream.destroy(new Error("Username is required to use password"));
|
|
return false;
|
|
}
|
|
if (isStringOrBuffer(password)) {
|
|
length += byteLength(password) + 2;
|
|
} else {
|
|
stream.destroy(new Error("Invalid password"));
|
|
return false;
|
|
}
|
|
}
|
|
stream.write(protocol.CONNECT_HEADER);
|
|
writeVarByteInt(stream, length);
|
|
writeStringOrBuffer(stream, protocolId);
|
|
if (settings.bridgeMode) {
|
|
protocolVersion += 128;
|
|
}
|
|
stream.write(
|
|
protocolVersion === 131 ? protocol.VERSION131 : protocolVersion === 132 ? protocol.VERSION132 : protocolVersion === 4 ? protocol.VERSION4 : protocolVersion === 5 ? protocol.VERSION5 : protocol.VERSION3
|
|
);
|
|
let flags = 0;
|
|
flags |= username != null ? protocol.USERNAME_MASK : 0;
|
|
flags |= password != null ? protocol.PASSWORD_MASK : 0;
|
|
flags |= will && will.retain ? protocol.WILL_RETAIN_MASK : 0;
|
|
flags |= will && will.qos ? will.qos << protocol.WILL_QOS_SHIFT : 0;
|
|
flags |= will ? protocol.WILL_FLAG_MASK : 0;
|
|
flags |= clean ? protocol.CLEAN_SESSION_MASK : 0;
|
|
stream.write(Buffer3.from([flags]));
|
|
writeNumber(stream, keepalive);
|
|
if (protocolVersion === 5) {
|
|
propertiesData.write();
|
|
}
|
|
writeStringOrBuffer(stream, clientId);
|
|
if (will) {
|
|
if (protocolVersion === 5) {
|
|
willProperties.write();
|
|
}
|
|
writeString(stream, will.topic);
|
|
writeStringOrBuffer(stream, will.payload);
|
|
}
|
|
if (username != null) {
|
|
writeStringOrBuffer(stream, username);
|
|
}
|
|
if (password != null) {
|
|
writeStringOrBuffer(stream, password);
|
|
}
|
|
return true;
|
|
}
|
|
function connack(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const rc = version2 === 5 ? settings.reasonCode : settings.returnCode;
|
|
const properties = settings.properties;
|
|
let length = 2;
|
|
if (typeof rc !== "number") {
|
|
stream.destroy(new Error("Invalid return code"));
|
|
return false;
|
|
}
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getProperties(stream, properties);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
stream.write(protocol.CONNACK_HEADER);
|
|
writeVarByteInt(stream, length);
|
|
stream.write(settings.sessionPresent ? protocol.SESSIONPRESENT_HEADER : zeroBuf);
|
|
stream.write(Buffer3.from([rc]));
|
|
if (propertiesData != null) {
|
|
propertiesData.write();
|
|
}
|
|
return true;
|
|
}
|
|
function publish(packet, stream, opts) {
|
|
debug("publish: packet: %o", packet);
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const qos = settings.qos || 0;
|
|
const retain = settings.retain ? protocol.RETAIN_MASK : 0;
|
|
const topic = settings.topic;
|
|
const payload = settings.payload || empty;
|
|
const id = settings.messageId;
|
|
const properties = settings.properties;
|
|
let length = 0;
|
|
if (typeof topic === "string")
|
|
length += Buffer3.byteLength(topic) + 2;
|
|
else if (Buffer3.isBuffer(topic))
|
|
length += topic.length + 2;
|
|
else {
|
|
stream.destroy(new Error("Invalid topic"));
|
|
return false;
|
|
}
|
|
if (!Buffer3.isBuffer(payload))
|
|
length += Buffer3.byteLength(payload);
|
|
else
|
|
length += payload.length;
|
|
if (qos && typeof id !== "number") {
|
|
stream.destroy(new Error("Invalid messageId"));
|
|
return false;
|
|
} else if (qos)
|
|
length += 2;
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getProperties(stream, properties);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
stream.write(protocol.PUBLISH_HEADER[qos][settings.dup ? 1 : 0][retain ? 1 : 0]);
|
|
writeVarByteInt(stream, length);
|
|
writeNumber(stream, byteLength(topic));
|
|
stream.write(topic);
|
|
if (qos > 0)
|
|
writeNumber(stream, id);
|
|
if (propertiesData != null) {
|
|
propertiesData.write();
|
|
}
|
|
debug("publish: payload: %o", payload);
|
|
return stream.write(payload);
|
|
}
|
|
function confirmation(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const type = settings.cmd || "puback";
|
|
const id = settings.messageId;
|
|
const dup = settings.dup && type === "pubrel" ? protocol.DUP_MASK : 0;
|
|
let qos = 0;
|
|
const reasonCode = settings.reasonCode;
|
|
const properties = settings.properties;
|
|
let length = version2 === 5 ? 3 : 2;
|
|
if (type === "pubrel")
|
|
qos = 1;
|
|
if (typeof id !== "number") {
|
|
stream.destroy(new Error("Invalid messageId"));
|
|
return false;
|
|
}
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
if (typeof properties === "object") {
|
|
propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
}
|
|
stream.write(protocol.ACKS[type][qos][dup][0]);
|
|
if (length === 3)
|
|
length += reasonCode !== 0 ? 1 : -1;
|
|
writeVarByteInt(stream, length);
|
|
writeNumber(stream, id);
|
|
if (version2 === 5 && length !== 2) {
|
|
stream.write(Buffer3.from([reasonCode]));
|
|
}
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
} else {
|
|
if (length === 4) {
|
|
stream.write(Buffer3.from([0]));
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
function subscribe(packet, stream, opts) {
|
|
debug("subscribe: packet: ");
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const dup = settings.dup ? protocol.DUP_MASK : 0;
|
|
const id = settings.messageId;
|
|
const subs = settings.subscriptions;
|
|
const properties = settings.properties;
|
|
let length = 0;
|
|
if (typeof id !== "number") {
|
|
stream.destroy(new Error("Invalid messageId"));
|
|
return false;
|
|
} else
|
|
length += 2;
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getProperties(stream, properties);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
if (typeof subs === "object" && subs.length) {
|
|
for (let i6 = 0; i6 < subs.length; i6 += 1) {
|
|
const itopic = subs[i6].topic;
|
|
const iqos = subs[i6].qos;
|
|
if (typeof itopic !== "string") {
|
|
stream.destroy(new Error("Invalid subscriptions - invalid topic"));
|
|
return false;
|
|
}
|
|
if (typeof iqos !== "number") {
|
|
stream.destroy(new Error("Invalid subscriptions - invalid qos"));
|
|
return false;
|
|
}
|
|
if (version2 === 5) {
|
|
const nl = subs[i6].nl || false;
|
|
if (typeof nl !== "boolean") {
|
|
stream.destroy(new Error("Invalid subscriptions - invalid No Local"));
|
|
return false;
|
|
}
|
|
const rap = subs[i6].rap || false;
|
|
if (typeof rap !== "boolean") {
|
|
stream.destroy(new Error("Invalid subscriptions - invalid Retain as Published"));
|
|
return false;
|
|
}
|
|
const rh = subs[i6].rh || 0;
|
|
if (typeof rh !== "number" || rh > 2) {
|
|
stream.destroy(new Error("Invalid subscriptions - invalid Retain Handling"));
|
|
return false;
|
|
}
|
|
}
|
|
length += Buffer3.byteLength(itopic) + 2 + 1;
|
|
}
|
|
} else {
|
|
stream.destroy(new Error("Invalid subscriptions"));
|
|
return false;
|
|
}
|
|
debug("subscribe: writing to stream: %o", protocol.SUBSCRIBE_HEADER);
|
|
stream.write(protocol.SUBSCRIBE_HEADER[1][dup ? 1 : 0][0]);
|
|
writeVarByteInt(stream, length);
|
|
writeNumber(stream, id);
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
}
|
|
let result = true;
|
|
for (const sub of subs) {
|
|
const jtopic = sub.topic;
|
|
const jqos = sub.qos;
|
|
const jnl = +sub.nl;
|
|
const jrap = +sub.rap;
|
|
const jrh = sub.rh;
|
|
let joptions;
|
|
writeString(stream, jtopic);
|
|
joptions = protocol.SUBSCRIBE_OPTIONS_QOS[jqos];
|
|
if (version2 === 5) {
|
|
joptions |= jnl ? protocol.SUBSCRIBE_OPTIONS_NL : 0;
|
|
joptions |= jrap ? protocol.SUBSCRIBE_OPTIONS_RAP : 0;
|
|
joptions |= jrh ? protocol.SUBSCRIBE_OPTIONS_RH[jrh] : 0;
|
|
}
|
|
result = stream.write(Buffer3.from([joptions]));
|
|
}
|
|
return result;
|
|
}
|
|
function suback(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const id = settings.messageId;
|
|
const granted = settings.granted;
|
|
const properties = settings.properties;
|
|
let length = 0;
|
|
if (typeof id !== "number") {
|
|
stream.destroy(new Error("Invalid messageId"));
|
|
return false;
|
|
} else
|
|
length += 2;
|
|
if (typeof granted === "object" && granted.length) {
|
|
for (let i6 = 0; i6 < granted.length; i6 += 1) {
|
|
if (typeof granted[i6] !== "number") {
|
|
stream.destroy(new Error("Invalid qos vector"));
|
|
return false;
|
|
}
|
|
length += 1;
|
|
}
|
|
} else {
|
|
stream.destroy(new Error("Invalid qos vector"));
|
|
return false;
|
|
}
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
stream.write(protocol.SUBACK_HEADER);
|
|
writeVarByteInt(stream, length);
|
|
writeNumber(stream, id);
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
}
|
|
return stream.write(Buffer3.from(granted));
|
|
}
|
|
function unsubscribe(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const id = settings.messageId;
|
|
const dup = settings.dup ? protocol.DUP_MASK : 0;
|
|
const unsubs = settings.unsubscriptions;
|
|
const properties = settings.properties;
|
|
let length = 0;
|
|
if (typeof id !== "number") {
|
|
stream.destroy(new Error("Invalid messageId"));
|
|
return false;
|
|
} else {
|
|
length += 2;
|
|
}
|
|
if (typeof unsubs === "object" && unsubs.length) {
|
|
for (let i6 = 0; i6 < unsubs.length; i6 += 1) {
|
|
if (typeof unsubs[i6] !== "string") {
|
|
stream.destroy(new Error("Invalid unsubscriptions"));
|
|
return false;
|
|
}
|
|
length += Buffer3.byteLength(unsubs[i6]) + 2;
|
|
}
|
|
} else {
|
|
stream.destroy(new Error("Invalid unsubscriptions"));
|
|
return false;
|
|
}
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getProperties(stream, properties);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
stream.write(protocol.UNSUBSCRIBE_HEADER[1][dup ? 1 : 0][0]);
|
|
writeVarByteInt(stream, length);
|
|
writeNumber(stream, id);
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
}
|
|
let result = true;
|
|
for (let j2 = 0; j2 < unsubs.length; j2++) {
|
|
result = writeString(stream, unsubs[j2]);
|
|
}
|
|
return result;
|
|
}
|
|
function unsuback(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const id = settings.messageId;
|
|
const dup = settings.dup ? protocol.DUP_MASK : 0;
|
|
const granted = settings.granted;
|
|
const properties = settings.properties;
|
|
const type = settings.cmd;
|
|
const qos = 0;
|
|
let length = 2;
|
|
if (typeof id !== "number") {
|
|
stream.destroy(new Error("Invalid messageId"));
|
|
return false;
|
|
}
|
|
if (version2 === 5) {
|
|
if (typeof granted === "object" && granted.length) {
|
|
for (let i6 = 0; i6 < granted.length; i6 += 1) {
|
|
if (typeof granted[i6] !== "number") {
|
|
stream.destroy(new Error("Invalid qos vector"));
|
|
return false;
|
|
}
|
|
length += 1;
|
|
}
|
|
} else {
|
|
stream.destroy(new Error("Invalid qos vector"));
|
|
return false;
|
|
}
|
|
}
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
stream.write(protocol.ACKS[type][qos][dup][0]);
|
|
writeVarByteInt(stream, length);
|
|
writeNumber(stream, id);
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
}
|
|
if (version2 === 5) {
|
|
stream.write(Buffer3.from(granted));
|
|
}
|
|
return true;
|
|
}
|
|
function emptyPacket(packet, stream, opts) {
|
|
return stream.write(protocol.EMPTY[packet.cmd]);
|
|
}
|
|
function disconnect(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const reasonCode = settings.reasonCode;
|
|
const properties = settings.properties;
|
|
let length = version2 === 5 ? 1 : 0;
|
|
let propertiesData = null;
|
|
if (version2 === 5) {
|
|
propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
}
|
|
stream.write(Buffer3.from([protocol.codes.disconnect << 4]));
|
|
writeVarByteInt(stream, length);
|
|
if (version2 === 5) {
|
|
stream.write(Buffer3.from([reasonCode]));
|
|
}
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
}
|
|
return true;
|
|
}
|
|
function auth(packet, stream, opts) {
|
|
const version2 = opts ? opts.protocolVersion : 4;
|
|
const settings = packet || {};
|
|
const reasonCode = settings.reasonCode;
|
|
const properties = settings.properties;
|
|
let length = version2 === 5 ? 1 : 0;
|
|
if (version2 !== 5)
|
|
stream.destroy(new Error("Invalid mqtt version for auth packet"));
|
|
const propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
|
|
if (!propertiesData) {
|
|
return false;
|
|
}
|
|
length += propertiesData.length;
|
|
stream.write(Buffer3.from([protocol.codes.auth << 4]));
|
|
writeVarByteInt(stream, length);
|
|
stream.write(Buffer3.from([reasonCode]));
|
|
if (propertiesData !== null) {
|
|
propertiesData.write();
|
|
}
|
|
return true;
|
|
}
|
|
var varByteIntCache = {};
|
|
function writeVarByteInt(stream, num) {
|
|
if (num > protocol.VARBYTEINT_MAX) {
|
|
stream.destroy(new Error(`Invalid variable byte integer: ${num}`));
|
|
return false;
|
|
}
|
|
let buffer = varByteIntCache[num];
|
|
if (!buffer) {
|
|
buffer = genBufVariableByteInt(num);
|
|
if (num < 16384)
|
|
varByteIntCache[num] = buffer;
|
|
}
|
|
debug("writeVarByteInt: writing to stream: %o", buffer);
|
|
return stream.write(buffer);
|
|
}
|
|
function writeString(stream, string) {
|
|
const strlen = Buffer3.byteLength(string);
|
|
writeNumber(stream, strlen);
|
|
debug("writeString: %s", string);
|
|
return stream.write(string, "utf8");
|
|
}
|
|
function writeStringPair(stream, name2, value) {
|
|
writeString(stream, name2);
|
|
writeString(stream, value);
|
|
}
|
|
function writeNumberCached(stream, number) {
|
|
debug("writeNumberCached: number: %d", number);
|
|
debug("writeNumberCached: %o", numCache[number]);
|
|
return stream.write(numCache[number]);
|
|
}
|
|
function writeNumberGenerated(stream, number) {
|
|
const generatedNumber = generateNumber(number);
|
|
debug("writeNumberGenerated: %o", generatedNumber);
|
|
return stream.write(generatedNumber);
|
|
}
|
|
function write4ByteNumber(stream, number) {
|
|
const generated4ByteBuffer = generate4ByteBuffer(number);
|
|
debug("write4ByteNumber: %o", generated4ByteBuffer);
|
|
return stream.write(generated4ByteBuffer);
|
|
}
|
|
function writeStringOrBuffer(stream, toWrite) {
|
|
if (typeof toWrite === "string") {
|
|
writeString(stream, toWrite);
|
|
} else if (toWrite) {
|
|
writeNumber(stream, toWrite.length);
|
|
stream.write(toWrite);
|
|
} else
|
|
writeNumber(stream, 0);
|
|
}
|
|
function getProperties(stream, properties) {
|
|
if (typeof properties !== "object" || properties.length != null) {
|
|
return {
|
|
length: 1,
|
|
write() {
|
|
writeProperties(stream, {}, 0);
|
|
}
|
|
};
|
|
}
|
|
let propertiesLength = 0;
|
|
function getLengthProperty(name2, value) {
|
|
const type = protocol.propertiesTypes[name2];
|
|
let length = 0;
|
|
switch (type) {
|
|
case "byte": {
|
|
if (typeof value !== "boolean") {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + 1;
|
|
break;
|
|
}
|
|
case "int8": {
|
|
if (typeof value !== "number" || value < 0 || value > 255) {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + 1;
|
|
break;
|
|
}
|
|
case "binary": {
|
|
if (value && value === null) {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + Buffer3.byteLength(value) + 2;
|
|
break;
|
|
}
|
|
case "int16": {
|
|
if (typeof value !== "number" || value < 0 || value > 65535) {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + 2;
|
|
break;
|
|
}
|
|
case "int32": {
|
|
if (typeof value !== "number" || value < 0 || value > 4294967295) {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + 4;
|
|
break;
|
|
}
|
|
case "var": {
|
|
if (typeof value !== "number" || value < 0 || value > 268435455) {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + Buffer3.byteLength(genBufVariableByteInt(value));
|
|
break;
|
|
}
|
|
case "string": {
|
|
if (typeof value !== "string") {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += 1 + 2 + Buffer3.byteLength(value.toString());
|
|
break;
|
|
}
|
|
case "pair": {
|
|
if (typeof value !== "object") {
|
|
stream.destroy(new Error(`Invalid ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
length += Object.getOwnPropertyNames(value).reduce((result, name3) => {
|
|
const currentValue = value[name3];
|
|
if (Array.isArray(currentValue)) {
|
|
result += currentValue.reduce((currentLength, value2) => {
|
|
currentLength += 1 + 2 + Buffer3.byteLength(name3.toString()) + 2 + Buffer3.byteLength(value2.toString());
|
|
return currentLength;
|
|
}, 0);
|
|
} else {
|
|
result += 1 + 2 + Buffer3.byteLength(name3.toString()) + 2 + Buffer3.byteLength(value[name3].toString());
|
|
}
|
|
return result;
|
|
}, 0);
|
|
break;
|
|
}
|
|
default: {
|
|
stream.destroy(new Error(`Invalid property ${name2}: ${value}`));
|
|
return false;
|
|
}
|
|
}
|
|
return length;
|
|
}
|
|
if (properties) {
|
|
for (const propName in properties) {
|
|
let propLength = 0;
|
|
let propValueLength = 0;
|
|
const propValue = properties[propName];
|
|
if (Array.isArray(propValue)) {
|
|
for (let valueIndex = 0; valueIndex < propValue.length; valueIndex++) {
|
|
propValueLength = getLengthProperty(propName, propValue[valueIndex]);
|
|
if (!propValueLength) {
|
|
return false;
|
|
}
|
|
propLength += propValueLength;
|
|
}
|
|
} else {
|
|
propValueLength = getLengthProperty(propName, propValue);
|
|
if (!propValueLength) {
|
|
return false;
|
|
}
|
|
propLength = propValueLength;
|
|
}
|
|
if (!propLength)
|
|
return false;
|
|
propertiesLength += propLength;
|
|
}
|
|
}
|
|
const propertiesLengthLength = Buffer3.byteLength(genBufVariableByteInt(propertiesLength));
|
|
return {
|
|
length: propertiesLengthLength + propertiesLength,
|
|
write() {
|
|
writeProperties(stream, properties, propertiesLength);
|
|
}
|
|
};
|
|
}
|
|
function getPropertiesByMaximumPacketSize(stream, properties, opts, length) {
|
|
const mayEmptyProps = ["reasonString", "userProperties"];
|
|
const maximumPacketSize = opts && opts.properties && opts.properties.maximumPacketSize ? opts.properties.maximumPacketSize : 0;
|
|
let propertiesData = getProperties(stream, properties);
|
|
if (maximumPacketSize) {
|
|
while (length + propertiesData.length > maximumPacketSize) {
|
|
const currentMayEmptyProp = mayEmptyProps.shift();
|
|
if (currentMayEmptyProp && properties[currentMayEmptyProp]) {
|
|
delete properties[currentMayEmptyProp];
|
|
propertiesData = getProperties(stream, properties);
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return propertiesData;
|
|
}
|
|
function writeProperty(stream, propName, value) {
|
|
const type = protocol.propertiesTypes[propName];
|
|
switch (type) {
|
|
case "byte": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
stream.write(Buffer3.from([+value]));
|
|
break;
|
|
}
|
|
case "int8": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
stream.write(Buffer3.from([value]));
|
|
break;
|
|
}
|
|
case "binary": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
writeStringOrBuffer(stream, value);
|
|
break;
|
|
}
|
|
case "int16": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
writeNumber(stream, value);
|
|
break;
|
|
}
|
|
case "int32": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
write4ByteNumber(stream, value);
|
|
break;
|
|
}
|
|
case "var": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
writeVarByteInt(stream, value);
|
|
break;
|
|
}
|
|
case "string": {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
writeString(stream, value);
|
|
break;
|
|
}
|
|
case "pair": {
|
|
Object.getOwnPropertyNames(value).forEach((name2) => {
|
|
const currentValue = value[name2];
|
|
if (Array.isArray(currentValue)) {
|
|
currentValue.forEach((value2) => {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
writeStringPair(stream, name2.toString(), value2.toString());
|
|
});
|
|
} else {
|
|
stream.write(Buffer3.from([protocol.properties[propName]]));
|
|
writeStringPair(stream, name2.toString(), currentValue.toString());
|
|
}
|
|
});
|
|
break;
|
|
}
|
|
default: {
|
|
stream.destroy(new Error(`Invalid property ${propName} value: ${value}`));
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
function writeProperties(stream, properties, propertiesLength) {
|
|
writeVarByteInt(stream, propertiesLength);
|
|
for (const propName in properties) {
|
|
if (Object.prototype.hasOwnProperty.call(properties, propName) && properties[propName] !== null) {
|
|
const value = properties[propName];
|
|
if (Array.isArray(value)) {
|
|
for (let valueIndex = 0; valueIndex < value.length; valueIndex++) {
|
|
writeProperty(stream, propName, value[valueIndex]);
|
|
}
|
|
} else {
|
|
writeProperty(stream, propName, value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function byteLength(bufOrString) {
|
|
if (!bufOrString)
|
|
return 0;
|
|
else if (bufOrString instanceof Buffer3)
|
|
return bufOrString.length;
|
|
else
|
|
return Buffer3.byteLength(bufOrString);
|
|
}
|
|
function isStringOrBuffer(field) {
|
|
return typeof field === "string" || field instanceof Buffer3;
|
|
}
|
|
module.exports = generate;
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/generate.js
|
|
var require_generate = __commonJS({
|
|
"node_modules/mqtt-packet/generate.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var writeToStream = require_writeToStream();
|
|
var { EventEmitter: EventEmitter2 } = (init_events(), __toCommonJS(events_exports));
|
|
var { Buffer: Buffer3 } = (init_buffer(), __toCommonJS(buffer_exports));
|
|
function generate(packet, opts) {
|
|
const stream = new Accumulator();
|
|
writeToStream(packet, stream, opts);
|
|
return stream.concat();
|
|
}
|
|
var Accumulator = class extends EventEmitter2 {
|
|
constructor() {
|
|
super();
|
|
this._array = new Array(20);
|
|
this._i = 0;
|
|
}
|
|
write(chunk) {
|
|
this._array[this._i++] = chunk;
|
|
return true;
|
|
}
|
|
concat() {
|
|
let length = 0;
|
|
const lengths = new Array(this._array.length);
|
|
const list = this._array;
|
|
let pos = 0;
|
|
let i6;
|
|
for (i6 = 0; i6 < list.length && list[i6] !== void 0; i6++) {
|
|
if (typeof list[i6] !== "string")
|
|
lengths[i6] = list[i6].length;
|
|
else
|
|
lengths[i6] = Buffer3.byteLength(list[i6]);
|
|
length += lengths[i6];
|
|
}
|
|
const result = Buffer3.allocUnsafe(length);
|
|
for (i6 = 0; i6 < list.length && list[i6] !== void 0; i6++) {
|
|
if (typeof list[i6] !== "string") {
|
|
list[i6].copy(result, pos);
|
|
pos += lengths[i6];
|
|
} else {
|
|
result.write(list[i6], pos);
|
|
pos += lengths[i6];
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
destroy(err) {
|
|
if (err)
|
|
this.emit("error", err);
|
|
}
|
|
};
|
|
module.exports = generate;
|
|
}
|
|
});
|
|
|
|
// node_modules/mqtt-packet/mqtt.js
|
|
var require_mqtt = __commonJS({
|
|
"node_modules/mqtt-packet/mqtt.js"(exports5) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
exports5.parser = require_parser().parser;
|
|
exports5.generate = require_generate();
|
|
exports5.writeToStream = require_writeToStream();
|
|
}
|
|
});
|
|
|
|
// build/lib/default-message-id-provider.js
|
|
var require_default_message_id_provider = __commonJS({
|
|
"build/lib/default-message-id-provider.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var DefaultMessageIdProvider = class {
|
|
constructor() {
|
|
this.nextId = Math.max(1, Math.floor(Math.random() * 65535));
|
|
}
|
|
allocate() {
|
|
const id = this.nextId++;
|
|
if (this.nextId === 65536) {
|
|
this.nextId = 1;
|
|
}
|
|
return id;
|
|
}
|
|
getLastAllocated() {
|
|
return this.nextId === 1 ? 65535 : this.nextId - 1;
|
|
}
|
|
register(messageId) {
|
|
return true;
|
|
}
|
|
deallocate(messageId) {
|
|
}
|
|
clear() {
|
|
}
|
|
};
|
|
exports5.default = DefaultMessageIdProvider;
|
|
}
|
|
});
|
|
|
|
// node_modules/rfdc/index.js
|
|
var require_rfdc = __commonJS({
|
|
"node_modules/rfdc/index.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
module.exports = rfdc;
|
|
function copyBuffer(cur) {
|
|
if (cur instanceof Buffer2) {
|
|
return Buffer2.from(cur);
|
|
}
|
|
return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);
|
|
}
|
|
function rfdc(opts) {
|
|
opts = opts || {};
|
|
if (opts.circles)
|
|
return rfdcCircles(opts);
|
|
return opts.proto ? cloneProto : clone;
|
|
function cloneArray(a6, fn) {
|
|
var keys = Object.keys(a6);
|
|
var a22 = new Array(keys.length);
|
|
for (var i6 = 0; i6 < keys.length; i6++) {
|
|
var k2 = keys[i6];
|
|
var cur = a6[k2];
|
|
if (typeof cur !== "object" || cur === null) {
|
|
a22[k2] = cur;
|
|
} else if (cur instanceof Date) {
|
|
a22[k2] = new Date(cur);
|
|
} else if (ArrayBuffer.isView(cur)) {
|
|
a22[k2] = copyBuffer(cur);
|
|
} else {
|
|
a22[k2] = fn(cur);
|
|
}
|
|
}
|
|
return a22;
|
|
}
|
|
function clone(o7) {
|
|
if (typeof o7 !== "object" || o7 === null)
|
|
return o7;
|
|
if (o7 instanceof Date)
|
|
return new Date(o7);
|
|
if (Array.isArray(o7))
|
|
return cloneArray(o7, clone);
|
|
if (o7 instanceof Map)
|
|
return new Map(cloneArray(Array.from(o7), clone));
|
|
if (o7 instanceof Set)
|
|
return new Set(cloneArray(Array.from(o7), clone));
|
|
var o22 = {};
|
|
for (var k2 in o7) {
|
|
if (Object.hasOwnProperty.call(o7, k2) === false)
|
|
continue;
|
|
var cur = o7[k2];
|
|
if (typeof cur !== "object" || cur === null) {
|
|
o22[k2] = cur;
|
|
} else if (cur instanceof Date) {
|
|
o22[k2] = new Date(cur);
|
|
} else if (cur instanceof Map) {
|
|
o22[k2] = new Map(cloneArray(Array.from(cur), clone));
|
|
} else if (cur instanceof Set) {
|
|
o22[k2] = new Set(cloneArray(Array.from(cur), clone));
|
|
} else if (ArrayBuffer.isView(cur)) {
|
|
o22[k2] = copyBuffer(cur);
|
|
} else {
|
|
o22[k2] = clone(cur);
|
|
}
|
|
}
|
|
return o22;
|
|
}
|
|
function cloneProto(o7) {
|
|
if (typeof o7 !== "object" || o7 === null)
|
|
return o7;
|
|
if (o7 instanceof Date)
|
|
return new Date(o7);
|
|
if (Array.isArray(o7))
|
|
return cloneArray(o7, cloneProto);
|
|
if (o7 instanceof Map)
|
|
return new Map(cloneArray(Array.from(o7), cloneProto));
|
|
if (o7 instanceof Set)
|
|
return new Set(cloneArray(Array.from(o7), cloneProto));
|
|
var o22 = {};
|
|
for (var k2 in o7) {
|
|
var cur = o7[k2];
|
|
if (typeof cur !== "object" || cur === null) {
|
|
o22[k2] = cur;
|
|
} else if (cur instanceof Date) {
|
|
o22[k2] = new Date(cur);
|
|
} else if (cur instanceof Map) {
|
|
o22[k2] = new Map(cloneArray(Array.from(cur), cloneProto));
|
|
} else if (cur instanceof Set) {
|
|
o22[k2] = new Set(cloneArray(Array.from(cur), cloneProto));
|
|
} else if (ArrayBuffer.isView(cur)) {
|
|
o22[k2] = copyBuffer(cur);
|
|
} else {
|
|
o22[k2] = cloneProto(cur);
|
|
}
|
|
}
|
|
return o22;
|
|
}
|
|
}
|
|
function rfdcCircles(opts) {
|
|
var refs = [];
|
|
var refsNew = [];
|
|
return opts.proto ? cloneProto : clone;
|
|
function cloneArray(a6, fn) {
|
|
var keys = Object.keys(a6);
|
|
var a22 = new Array(keys.length);
|
|
for (var i6 = 0; i6 < keys.length; i6++) {
|
|
var k2 = keys[i6];
|
|
var cur = a6[k2];
|
|
if (typeof cur !== "object" || cur === null) {
|
|
a22[k2] = cur;
|
|
} else if (cur instanceof Date) {
|
|
a22[k2] = new Date(cur);
|
|
} else if (ArrayBuffer.isView(cur)) {
|
|
a22[k2] = copyBuffer(cur);
|
|
} else {
|
|
var index = refs.indexOf(cur);
|
|
if (index !== -1) {
|
|
a22[k2] = refsNew[index];
|
|
} else {
|
|
a22[k2] = fn(cur);
|
|
}
|
|
}
|
|
}
|
|
return a22;
|
|
}
|
|
function clone(o7) {
|
|
if (typeof o7 !== "object" || o7 === null)
|
|
return o7;
|
|
if (o7 instanceof Date)
|
|
return new Date(o7);
|
|
if (Array.isArray(o7))
|
|
return cloneArray(o7, clone);
|
|
if (o7 instanceof Map)
|
|
return new Map(cloneArray(Array.from(o7), clone));
|
|
if (o7 instanceof Set)
|
|
return new Set(cloneArray(Array.from(o7), clone));
|
|
var o22 = {};
|
|
refs.push(o7);
|
|
refsNew.push(o22);
|
|
for (var k2 in o7) {
|
|
if (Object.hasOwnProperty.call(o7, k2) === false)
|
|
continue;
|
|
var cur = o7[k2];
|
|
if (typeof cur !== "object" || cur === null) {
|
|
o22[k2] = cur;
|
|
} else if (cur instanceof Date) {
|
|
o22[k2] = new Date(cur);
|
|
} else if (cur instanceof Map) {
|
|
o22[k2] = new Map(cloneArray(Array.from(cur), clone));
|
|
} else if (cur instanceof Set) {
|
|
o22[k2] = new Set(cloneArray(Array.from(cur), clone));
|
|
} else if (ArrayBuffer.isView(cur)) {
|
|
o22[k2] = copyBuffer(cur);
|
|
} else {
|
|
var i6 = refs.indexOf(cur);
|
|
if (i6 !== -1) {
|
|
o22[k2] = refsNew[i6];
|
|
} else {
|
|
o22[k2] = clone(cur);
|
|
}
|
|
}
|
|
}
|
|
refs.pop();
|
|
refsNew.pop();
|
|
return o22;
|
|
}
|
|
function cloneProto(o7) {
|
|
if (typeof o7 !== "object" || o7 === null)
|
|
return o7;
|
|
if (o7 instanceof Date)
|
|
return new Date(o7);
|
|
if (Array.isArray(o7))
|
|
return cloneArray(o7, cloneProto);
|
|
if (o7 instanceof Map)
|
|
return new Map(cloneArray(Array.from(o7), cloneProto));
|
|
if (o7 instanceof Set)
|
|
return new Set(cloneArray(Array.from(o7), cloneProto));
|
|
var o22 = {};
|
|
refs.push(o7);
|
|
refsNew.push(o22);
|
|
for (var k2 in o7) {
|
|
var cur = o7[k2];
|
|
if (typeof cur !== "object" || cur === null) {
|
|
o22[k2] = cur;
|
|
} else if (cur instanceof Date) {
|
|
o22[k2] = new Date(cur);
|
|
} else if (cur instanceof Map) {
|
|
o22[k2] = new Map(cloneArray(Array.from(cur), cloneProto));
|
|
} else if (cur instanceof Set) {
|
|
o22[k2] = new Set(cloneArray(Array.from(cur), cloneProto));
|
|
} else if (ArrayBuffer.isView(cur)) {
|
|
o22[k2] = copyBuffer(cur);
|
|
} else {
|
|
var i6 = refs.indexOf(cur);
|
|
if (i6 !== -1) {
|
|
o22[k2] = refsNew[i6];
|
|
} else {
|
|
o22[k2] = cloneProto(cur);
|
|
}
|
|
}
|
|
}
|
|
refs.pop();
|
|
refsNew.pop();
|
|
return o22;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/rfdc/default.js
|
|
var require_default = __commonJS({
|
|
"node_modules/rfdc/default.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
module.exports = require_rfdc()();
|
|
}
|
|
});
|
|
|
|
// build/lib/validations.js
|
|
var require_validations = __commonJS({
|
|
"build/lib/validations.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.validateTopics = exports5.validateTopic = void 0;
|
|
function validateTopic(topic) {
|
|
const parts = topic.split("/");
|
|
for (let i6 = 0; i6 < parts.length; i6++) {
|
|
if (parts[i6] === "+") {
|
|
continue;
|
|
}
|
|
if (parts[i6] === "#") {
|
|
return i6 === parts.length - 1;
|
|
}
|
|
if (parts[i6].indexOf("+") !== -1 || parts[i6].indexOf("#") !== -1) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
exports5.validateTopic = validateTopic;
|
|
function validateTopics(topics) {
|
|
if (topics.length === 0) {
|
|
return "empty_topic_list";
|
|
}
|
|
for (let i6 = 0; i6 < topics.length; i6++) {
|
|
if (!validateTopic(topics[i6])) {
|
|
return topics[i6];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
exports5.validateTopics = validateTopics;
|
|
}
|
|
});
|
|
|
|
// build/lib/store.js
|
|
var require_store = __commonJS({
|
|
"build/lib/store.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var readable_stream_1 = require_browser3();
|
|
var streamsOpts = { objectMode: true };
|
|
var defaultStoreOptions = {
|
|
clean: true
|
|
};
|
|
var Store = class {
|
|
constructor(options) {
|
|
this.options = options || {};
|
|
this.options = Object.assign(Object.assign({}, defaultStoreOptions), options);
|
|
this._inflights = /* @__PURE__ */ new Map();
|
|
}
|
|
put(packet, cb) {
|
|
this._inflights.set(packet.messageId, packet);
|
|
if (cb) {
|
|
cb();
|
|
}
|
|
return this;
|
|
}
|
|
createStream() {
|
|
const stream = new readable_stream_1.Readable(streamsOpts);
|
|
const values = [];
|
|
let destroyed = false;
|
|
let i6 = 0;
|
|
this._inflights.forEach((value, key) => {
|
|
values.push(value);
|
|
});
|
|
stream._read = () => {
|
|
if (!destroyed && i6 < values.length) {
|
|
stream.push(values[i6++]);
|
|
} else {
|
|
stream.push(null);
|
|
}
|
|
};
|
|
stream.destroy = (err) => {
|
|
if (destroyed) {
|
|
return;
|
|
}
|
|
destroyed = true;
|
|
setTimeout(() => {
|
|
stream.emit("close");
|
|
}, 0);
|
|
return stream;
|
|
};
|
|
return stream;
|
|
}
|
|
del(packet, cb) {
|
|
const toDelete = this._inflights.get(packet.messageId);
|
|
if (toDelete) {
|
|
this._inflights.delete(packet.messageId);
|
|
cb(null, toDelete);
|
|
} else if (cb) {
|
|
cb(new Error("missing packet"));
|
|
}
|
|
return this;
|
|
}
|
|
get(packet, cb) {
|
|
const storedPacket = this._inflights.get(packet.messageId);
|
|
if (storedPacket) {
|
|
cb(null, storedPacket);
|
|
} else if (cb) {
|
|
cb(new Error("missing packet"));
|
|
}
|
|
return this;
|
|
}
|
|
close(cb) {
|
|
if (this.options.clean) {
|
|
this._inflights = null;
|
|
}
|
|
if (cb) {
|
|
cb();
|
|
}
|
|
}
|
|
};
|
|
exports5.default = Store;
|
|
}
|
|
});
|
|
|
|
// build/lib/handlers/publish.js
|
|
var require_publish = __commonJS({
|
|
"build/lib/handlers/publish.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var validReasonCodes = [0, 16, 128, 131, 135, 144, 145, 151, 153];
|
|
var handlePublish = (client, packet, done) => {
|
|
client.log("handlePublish: packet %o", packet);
|
|
done = typeof done !== "undefined" ? done : client.noop;
|
|
let topic = packet.topic.toString();
|
|
const message = packet.payload;
|
|
const { qos } = packet;
|
|
const { messageId } = packet;
|
|
const { options } = client;
|
|
if (client.options.protocolVersion === 5) {
|
|
let alias;
|
|
if (packet.properties) {
|
|
alias = packet.properties.topicAlias;
|
|
}
|
|
if (typeof alias !== "undefined") {
|
|
if (topic.length === 0) {
|
|
if (alias > 0 && alias <= 65535) {
|
|
const gotTopic = client["topicAliasRecv"].getTopicByAlias(alias);
|
|
if (gotTopic) {
|
|
topic = gotTopic;
|
|
client.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d", topic, alias);
|
|
} else {
|
|
client.log("handlePublish :: unregistered topic alias. alias: %d", alias);
|
|
client.emit("error", new Error("Received unregistered Topic Alias"));
|
|
return;
|
|
}
|
|
} else {
|
|
client.log("handlePublish :: topic alias out of range. alias: %d", alias);
|
|
client.emit("error", new Error("Received Topic Alias is out of range"));
|
|
return;
|
|
}
|
|
} else if (client["topicAliasRecv"].put(topic, alias)) {
|
|
client.log("handlePublish :: registered topic: %s - alias: %d", topic, alias);
|
|
} else {
|
|
client.log("handlePublish :: topic alias out of range. alias: %d", alias);
|
|
client.emit("error", new Error("Received Topic Alias is out of range"));
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
client.log("handlePublish: qos %d", qos);
|
|
switch (qos) {
|
|
case 2: {
|
|
options.customHandleAcks(topic, message, packet, (error, code) => {
|
|
if (typeof error === "number") {
|
|
code = error;
|
|
error = null;
|
|
}
|
|
if (error) {
|
|
return client.emit("error", error);
|
|
}
|
|
if (validReasonCodes.indexOf(code) === -1) {
|
|
return client.emit("error", new Error("Wrong reason code for pubrec"));
|
|
}
|
|
if (code) {
|
|
client["_sendPacket"]({ cmd: "pubrec", messageId, reasonCode: code }, done);
|
|
} else {
|
|
client.incomingStore.put(packet, () => {
|
|
client["_sendPacket"]({ cmd: "pubrec", messageId }, done);
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
}
|
|
case 1: {
|
|
options.customHandleAcks(topic, message, packet, (error, code) => {
|
|
if (typeof error === "number") {
|
|
code = error;
|
|
error = null;
|
|
}
|
|
if (error) {
|
|
return client.emit("error", error);
|
|
}
|
|
if (validReasonCodes.indexOf(code) === -1) {
|
|
return client.emit("error", new Error("Wrong reason code for puback"));
|
|
}
|
|
if (!code) {
|
|
client.emit("message", topic, message, packet);
|
|
}
|
|
client.handleMessage(packet, (err) => {
|
|
if (err) {
|
|
return done && done(err);
|
|
}
|
|
client["_sendPacket"]({ cmd: "puback", messageId, reasonCode: code }, done);
|
|
});
|
|
});
|
|
break;
|
|
}
|
|
case 0:
|
|
client.emit("message", topic, message, packet);
|
|
client.handleMessage(packet, done);
|
|
break;
|
|
default:
|
|
client.log("handlePublish: unknown QoS. Doing nothing.");
|
|
break;
|
|
}
|
|
};
|
|
exports5.default = handlePublish;
|
|
}
|
|
});
|
|
|
|
// build/lib/shared.js
|
|
var require_shared = __commonJS({
|
|
"build/lib/shared.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.nextTick = exports5.applyMixin = exports5.ErrorWithReasonCode = void 0;
|
|
var ErrorWithReasonCode = class _ErrorWithReasonCode extends Error {
|
|
constructor(message, code) {
|
|
super(message);
|
|
this.code = code;
|
|
Object.setPrototypeOf(this, _ErrorWithReasonCode.prototype);
|
|
Object.getPrototypeOf(this).name = "ErrorWithReasonCode";
|
|
}
|
|
};
|
|
exports5.ErrorWithReasonCode = ErrorWithReasonCode;
|
|
function applyMixin(target, mixin, includeConstructor = false) {
|
|
var _a;
|
|
const inheritanceChain = [mixin];
|
|
while (true) {
|
|
const current = inheritanceChain[0];
|
|
const base = Object.getPrototypeOf(current);
|
|
if (base === null || base === void 0 ? void 0 : base.prototype) {
|
|
inheritanceChain.unshift(base);
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
for (const ctor of inheritanceChain) {
|
|
for (const prop of Object.getOwnPropertyNames(ctor.prototype)) {
|
|
if (includeConstructor || prop !== "constructor") {
|
|
Object.defineProperty(target.prototype, prop, (_a = Object.getOwnPropertyDescriptor(ctor.prototype, prop)) !== null && _a !== void 0 ? _a : /* @__PURE__ */ Object.create(null));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
exports5.applyMixin = applyMixin;
|
|
exports5.nextTick = process_exports ? process_exports.nextTick : (callback) => {
|
|
setTimeout(callback, 0);
|
|
};
|
|
}
|
|
});
|
|
|
|
// build/lib/handlers/ack.js
|
|
var require_ack = __commonJS({
|
|
"build/lib/handlers/ack.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.ReasonCodes = void 0;
|
|
exports5.ReasonCodes = {
|
|
0: "",
|
|
1: "Unacceptable protocol version",
|
|
2: "Identifier rejected",
|
|
3: "Server unavailable",
|
|
4: "Bad username or password",
|
|
5: "Not authorized",
|
|
16: "No matching subscribers",
|
|
17: "No subscription existed",
|
|
128: "Unspecified error",
|
|
129: "Malformed Packet",
|
|
130: "Protocol Error",
|
|
131: "Implementation specific error",
|
|
132: "Unsupported Protocol Version",
|
|
133: "Client Identifier not valid",
|
|
134: "Bad User Name or Password",
|
|
135: "Not authorized",
|
|
136: "Server unavailable",
|
|
137: "Server busy",
|
|
138: "Banned",
|
|
139: "Server shutting down",
|
|
140: "Bad authentication method",
|
|
141: "Keep Alive timeout",
|
|
142: "Session taken over",
|
|
143: "Topic Filter invalid",
|
|
144: "Topic Name invalid",
|
|
145: "Packet identifier in use",
|
|
146: "Packet Identifier not found",
|
|
147: "Receive Maximum exceeded",
|
|
148: "Topic Alias invalid",
|
|
149: "Packet too large",
|
|
150: "Message rate too high",
|
|
151: "Quota exceeded",
|
|
152: "Administrative action",
|
|
153: "Payload format invalid",
|
|
154: "Retain not supported",
|
|
155: "QoS not supported",
|
|
156: "Use another server",
|
|
157: "Server moved",
|
|
158: "Shared Subscriptions not supported",
|
|
159: "Connection rate exceeded",
|
|
160: "Maximum connect time",
|
|
161: "Subscription Identifiers not supported",
|
|
162: "Wildcard Subscriptions not supported"
|
|
};
|
|
var handleAck = (client, packet) => {
|
|
const { messageId } = packet;
|
|
const type = packet.cmd;
|
|
let response = null;
|
|
const cb = client.outgoing[messageId] ? client.outgoing[messageId].cb : null;
|
|
let err;
|
|
if (!cb) {
|
|
client.log("_handleAck :: Server sent an ack in error. Ignoring.");
|
|
return;
|
|
}
|
|
client.log("_handleAck :: packet type", type);
|
|
switch (type) {
|
|
case "pubcomp":
|
|
case "puback": {
|
|
const pubackRC = packet.reasonCode;
|
|
if (pubackRC && pubackRC > 0 && pubackRC !== 16) {
|
|
err = new Error(`Publish error: ${exports5.ReasonCodes[pubackRC]}`);
|
|
err.code = pubackRC;
|
|
client["_removeOutgoingAndStoreMessage"](messageId, () => {
|
|
cb(err, packet);
|
|
});
|
|
} else {
|
|
client["_removeOutgoingAndStoreMessage"](messageId, cb);
|
|
}
|
|
break;
|
|
}
|
|
case "pubrec": {
|
|
response = {
|
|
cmd: "pubrel",
|
|
qos: 2,
|
|
messageId
|
|
};
|
|
const pubrecRC = packet.reasonCode;
|
|
if (pubrecRC && pubrecRC > 0 && pubrecRC !== 16) {
|
|
err = new Error(`Publish error: ${exports5.ReasonCodes[pubrecRC]}`);
|
|
err.code = pubrecRC;
|
|
client["_removeOutgoingAndStoreMessage"](messageId, () => {
|
|
cb(err, packet);
|
|
});
|
|
} else {
|
|
client["_sendPacket"](response);
|
|
}
|
|
break;
|
|
}
|
|
case "suback": {
|
|
delete client.outgoing[messageId];
|
|
client.messageIdProvider.deallocate(messageId);
|
|
const granted = packet.granted;
|
|
for (let grantedI = 0; grantedI < granted.length; grantedI++) {
|
|
if ((granted[grantedI] & 128) !== 0) {
|
|
const topics = client.messageIdToTopic[messageId];
|
|
if (topics) {
|
|
topics.forEach((topic) => {
|
|
delete client["_resubscribeTopics"][topic];
|
|
});
|
|
}
|
|
}
|
|
}
|
|
delete client.messageIdToTopic[messageId];
|
|
client["_invokeStoreProcessingQueue"]();
|
|
cb(null, packet);
|
|
break;
|
|
}
|
|
case "unsuback": {
|
|
delete client.outgoing[messageId];
|
|
client.messageIdProvider.deallocate(messageId);
|
|
client["_invokeStoreProcessingQueue"]();
|
|
cb(null);
|
|
break;
|
|
}
|
|
default:
|
|
client.emit("error", new Error("unrecognized packet type"));
|
|
}
|
|
if (client.disconnecting && Object.keys(client.outgoing).length === 0) {
|
|
client.emit("outgoingEmpty");
|
|
}
|
|
};
|
|
exports5.default = handleAck;
|
|
}
|
|
});
|
|
|
|
// build/lib/handlers/auth.js
|
|
var require_auth = __commonJS({
|
|
"build/lib/handlers/auth.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var shared_1 = require_shared();
|
|
var ack_1 = require_ack();
|
|
var handleAuth = (client, packet) => {
|
|
const { options } = client;
|
|
const version2 = options.protocolVersion;
|
|
const rc = version2 === 5 ? packet.reasonCode : packet.returnCode;
|
|
if (version2 !== 5) {
|
|
const err = new shared_1.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${version2}`, rc);
|
|
client.emit("error", err);
|
|
return;
|
|
}
|
|
client.handleAuth(packet, (err, packet2) => {
|
|
if (err) {
|
|
client.emit("error", err);
|
|
return;
|
|
}
|
|
if (rc === 24) {
|
|
client.reconnecting = false;
|
|
client["_sendPacket"](packet2);
|
|
} else {
|
|
const error = new shared_1.ErrorWithReasonCode(`Connection refused: ${ack_1.ReasonCodes[rc]}`, rc);
|
|
client.emit("error", error);
|
|
}
|
|
});
|
|
};
|
|
exports5.default = handleAuth;
|
|
}
|
|
});
|
|
|
|
// node_modules/lru-cache/dist/cjs/index.js
|
|
var require_cjs = __commonJS({
|
|
"node_modules/lru-cache/dist/cjs/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.LRUCache = void 0;
|
|
var perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date;
|
|
var warned = /* @__PURE__ */ new Set();
|
|
var PROCESS = typeof process_exports === "object" && !!process_exports ? process_exports : {};
|
|
var emitWarning2 = (msg, type, code, fn) => {
|
|
typeof PROCESS.emitWarning === "function" ? PROCESS.emitWarning(msg, type, code, fn) : console.error(`[${code}] ${type}: ${msg}`);
|
|
};
|
|
var AC = globalThis.AbortController;
|
|
var AS = globalThis.AbortSignal;
|
|
if (typeof AC === "undefined") {
|
|
AS = class AbortSignal {
|
|
onabort;
|
|
_onabort = [];
|
|
reason;
|
|
aborted = false;
|
|
addEventListener(_2, fn) {
|
|
this._onabort.push(fn);
|
|
}
|
|
};
|
|
AC = class AbortController {
|
|
constructor() {
|
|
warnACPolyfill();
|
|
}
|
|
signal = new AS();
|
|
abort(reason) {
|
|
if (this.signal.aborted)
|
|
return;
|
|
this.signal.reason = reason;
|
|
this.signal.aborted = true;
|
|
for (const fn of this.signal._onabort) {
|
|
fn(reason);
|
|
}
|
|
this.signal.onabort?.(reason);
|
|
}
|
|
};
|
|
let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== "1";
|
|
const warnACPolyfill = () => {
|
|
if (!printACPolyfillWarning)
|
|
return;
|
|
printACPolyfillWarning = false;
|
|
emitWarning2("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.", "NO_ABORT_CONTROLLER", "ENOTSUP", warnACPolyfill);
|
|
};
|
|
}
|
|
var shouldWarn = (code) => !warned.has(code);
|
|
var TYPE = Symbol("type");
|
|
var isPosInt = (n7) => n7 && n7 === Math.floor(n7) && n7 > 0 && isFinite(n7);
|
|
var getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null;
|
|
var ZeroArray = class extends Array {
|
|
constructor(size) {
|
|
super(size);
|
|
this.fill(0);
|
|
}
|
|
};
|
|
var Stack = class _Stack {
|
|
heap;
|
|
length;
|
|
// private constructor
|
|
static #constructing = false;
|
|
static create(max) {
|
|
const HeapCls = getUintArray(max);
|
|
if (!HeapCls)
|
|
return [];
|
|
_Stack.#constructing = true;
|
|
const s5 = new _Stack(max, HeapCls);
|
|
_Stack.#constructing = false;
|
|
return s5;
|
|
}
|
|
constructor(max, HeapCls) {
|
|
if (!_Stack.#constructing) {
|
|
throw new TypeError("instantiate Stack using Stack.create(n)");
|
|
}
|
|
this.heap = new HeapCls(max);
|
|
this.length = 0;
|
|
}
|
|
push(n7) {
|
|
this.heap[this.length++] = n7;
|
|
}
|
|
pop() {
|
|
return this.heap[--this.length];
|
|
}
|
|
};
|
|
var LRUCache = class _LRUCache {
|
|
// properties coming in from the options of these, only max and maxSize
|
|
// really *need* to be protected. The rest can be modified, as they just
|
|
// set defaults for various methods.
|
|
#max;
|
|
#maxSize;
|
|
#dispose;
|
|
#disposeAfter;
|
|
#fetchMethod;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.ttl}
|
|
*/
|
|
ttl;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.ttlResolution}
|
|
*/
|
|
ttlResolution;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.ttlAutopurge}
|
|
*/
|
|
ttlAutopurge;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.updateAgeOnGet}
|
|
*/
|
|
updateAgeOnGet;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.updateAgeOnHas}
|
|
*/
|
|
updateAgeOnHas;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.allowStale}
|
|
*/
|
|
allowStale;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.noDisposeOnSet}
|
|
*/
|
|
noDisposeOnSet;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.noUpdateTTL}
|
|
*/
|
|
noUpdateTTL;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.maxEntrySize}
|
|
*/
|
|
maxEntrySize;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.sizeCalculation}
|
|
*/
|
|
sizeCalculation;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
|
|
*/
|
|
noDeleteOnFetchRejection;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
|
|
*/
|
|
noDeleteOnStaleGet;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
|
|
*/
|
|
allowStaleOnFetchAbort;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
|
|
*/
|
|
allowStaleOnFetchRejection;
|
|
/**
|
|
* {@link LRUCache.OptionsBase.ignoreFetchAbort}
|
|
*/
|
|
ignoreFetchAbort;
|
|
// computed properties
|
|
#size;
|
|
#calculatedSize;
|
|
#keyMap;
|
|
#keyList;
|
|
#valList;
|
|
#next;
|
|
#prev;
|
|
#head;
|
|
#tail;
|
|
#free;
|
|
#disposed;
|
|
#sizes;
|
|
#starts;
|
|
#ttls;
|
|
#hasDispose;
|
|
#hasFetchMethod;
|
|
#hasDisposeAfter;
|
|
/**
|
|
* Do not call this method unless you need to inspect the
|
|
* inner workings of the cache. If anything returned by this
|
|
* object is modified in any way, strange breakage may occur.
|
|
*
|
|
* These fields are private for a reason!
|
|
*
|
|
* @internal
|
|
*/
|
|
static unsafeExposeInternals(c6) {
|
|
return {
|
|
// properties
|
|
starts: c6.#starts,
|
|
ttls: c6.#ttls,
|
|
sizes: c6.#sizes,
|
|
keyMap: c6.#keyMap,
|
|
keyList: c6.#keyList,
|
|
valList: c6.#valList,
|
|
next: c6.#next,
|
|
prev: c6.#prev,
|
|
get head() {
|
|
return c6.#head;
|
|
},
|
|
get tail() {
|
|
return c6.#tail;
|
|
},
|
|
free: c6.#free,
|
|
// methods
|
|
isBackgroundFetch: (p6) => c6.#isBackgroundFetch(p6),
|
|
backgroundFetch: (k2, index, options, context) => c6.#backgroundFetch(k2, index, options, context),
|
|
moveToTail: (index) => c6.#moveToTail(index),
|
|
indexes: (options) => c6.#indexes(options),
|
|
rindexes: (options) => c6.#rindexes(options),
|
|
isStale: (index) => c6.#isStale(index)
|
|
};
|
|
}
|
|
// Protected read-only members
|
|
/**
|
|
* {@link LRUCache.OptionsBase.max} (read-only)
|
|
*/
|
|
get max() {
|
|
return this.#max;
|
|
}
|
|
/**
|
|
* {@link LRUCache.OptionsBase.maxSize} (read-only)
|
|
*/
|
|
get maxSize() {
|
|
return this.#maxSize;
|
|
}
|
|
/**
|
|
* The total computed size of items in the cache (read-only)
|
|
*/
|
|
get calculatedSize() {
|
|
return this.#calculatedSize;
|
|
}
|
|
/**
|
|
* The number of items stored in the cache (read-only)
|
|
*/
|
|
get size() {
|
|
return this.#size;
|
|
}
|
|
/**
|
|
* {@link LRUCache.OptionsBase.fetchMethod} (read-only)
|
|
*/
|
|
get fetchMethod() {
|
|
return this.#fetchMethod;
|
|
}
|
|
/**
|
|
* {@link LRUCache.OptionsBase.dispose} (read-only)
|
|
*/
|
|
get dispose() {
|
|
return this.#dispose;
|
|
}
|
|
/**
|
|
* {@link LRUCache.OptionsBase.disposeAfter} (read-only)
|
|
*/
|
|
get disposeAfter() {
|
|
return this.#disposeAfter;
|
|
}
|
|
constructor(options) {
|
|
const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options;
|
|
if (max !== 0 && !isPosInt(max)) {
|
|
throw new TypeError("max option must be a nonnegative integer");
|
|
}
|
|
const UintArray = max ? getUintArray(max) : Array;
|
|
if (!UintArray) {
|
|
throw new Error("invalid max value: " + max);
|
|
}
|
|
this.#max = max;
|
|
this.#maxSize = maxSize;
|
|
this.maxEntrySize = maxEntrySize || this.#maxSize;
|
|
this.sizeCalculation = sizeCalculation;
|
|
if (this.sizeCalculation) {
|
|
if (!this.#maxSize && !this.maxEntrySize) {
|
|
throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");
|
|
}
|
|
if (typeof this.sizeCalculation !== "function") {
|
|
throw new TypeError("sizeCalculation set to non-function");
|
|
}
|
|
}
|
|
if (fetchMethod !== void 0 && typeof fetchMethod !== "function") {
|
|
throw new TypeError("fetchMethod must be a function if specified");
|
|
}
|
|
this.#fetchMethod = fetchMethod;
|
|
this.#hasFetchMethod = !!fetchMethod;
|
|
this.#keyMap = /* @__PURE__ */ new Map();
|
|
this.#keyList = new Array(max).fill(void 0);
|
|
this.#valList = new Array(max).fill(void 0);
|
|
this.#next = new UintArray(max);
|
|
this.#prev = new UintArray(max);
|
|
this.#head = 0;
|
|
this.#tail = 0;
|
|
this.#free = Stack.create(max);
|
|
this.#size = 0;
|
|
this.#calculatedSize = 0;
|
|
if (typeof dispose === "function") {
|
|
this.#dispose = dispose;
|
|
}
|
|
if (typeof disposeAfter === "function") {
|
|
this.#disposeAfter = disposeAfter;
|
|
this.#disposed = [];
|
|
} else {
|
|
this.#disposeAfter = void 0;
|
|
this.#disposed = void 0;
|
|
}
|
|
this.#hasDispose = !!this.#dispose;
|
|
this.#hasDisposeAfter = !!this.#disposeAfter;
|
|
this.noDisposeOnSet = !!noDisposeOnSet;
|
|
this.noUpdateTTL = !!noUpdateTTL;
|
|
this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
|
|
this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
|
|
this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
|
|
this.ignoreFetchAbort = !!ignoreFetchAbort;
|
|
if (this.maxEntrySize !== 0) {
|
|
if (this.#maxSize !== 0) {
|
|
if (!isPosInt(this.#maxSize)) {
|
|
throw new TypeError("maxSize must be a positive integer if specified");
|
|
}
|
|
}
|
|
if (!isPosInt(this.maxEntrySize)) {
|
|
throw new TypeError("maxEntrySize must be a positive integer if specified");
|
|
}
|
|
this.#initializeSizeTracking();
|
|
}
|
|
this.allowStale = !!allowStale;
|
|
this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
|
|
this.updateAgeOnGet = !!updateAgeOnGet;
|
|
this.updateAgeOnHas = !!updateAgeOnHas;
|
|
this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1;
|
|
this.ttlAutopurge = !!ttlAutopurge;
|
|
this.ttl = ttl || 0;
|
|
if (this.ttl) {
|
|
if (!isPosInt(this.ttl)) {
|
|
throw new TypeError("ttl must be a positive integer if specified");
|
|
}
|
|
this.#initializeTTLTracking();
|
|
}
|
|
if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {
|
|
throw new TypeError("At least one of max, maxSize, or ttl is required");
|
|
}
|
|
if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {
|
|
const code = "LRU_CACHE_UNBOUNDED";
|
|
if (shouldWarn(code)) {
|
|
warned.add(code);
|
|
const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.";
|
|
emitWarning2(msg, "UnboundedCacheWarning", code, _LRUCache);
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Return the remaining TTL time for a given entry key
|
|
*/
|
|
getRemainingTTL(key) {
|
|
return this.#keyMap.has(key) ? Infinity : 0;
|
|
}
|
|
#initializeTTLTracking() {
|
|
const ttls = new ZeroArray(this.#max);
|
|
const starts = new ZeroArray(this.#max);
|
|
this.#ttls = ttls;
|
|
this.#starts = starts;
|
|
this.#setItemTTL = (index, ttl, start = perf.now()) => {
|
|
starts[index] = ttl !== 0 ? start : 0;
|
|
ttls[index] = ttl;
|
|
if (ttl !== 0 && this.ttlAutopurge) {
|
|
const t6 = setTimeout(() => {
|
|
if (this.#isStale(index)) {
|
|
this.delete(this.#keyList[index]);
|
|
}
|
|
}, ttl + 1);
|
|
if (t6.unref) {
|
|
t6.unref();
|
|
}
|
|
}
|
|
};
|
|
this.#updateItemAge = (index) => {
|
|
starts[index] = ttls[index] !== 0 ? perf.now() : 0;
|
|
};
|
|
this.#statusTTL = (status, index) => {
|
|
if (ttls[index]) {
|
|
const ttl = ttls[index];
|
|
const start = starts[index];
|
|
status.ttl = ttl;
|
|
status.start = start;
|
|
status.now = cachedNow || getNow();
|
|
const age = status.now - start;
|
|
status.remainingTTL = ttl - age;
|
|
}
|
|
};
|
|
let cachedNow = 0;
|
|
const getNow = () => {
|
|
const n7 = perf.now();
|
|
if (this.ttlResolution > 0) {
|
|
cachedNow = n7;
|
|
const t6 = setTimeout(() => cachedNow = 0, this.ttlResolution);
|
|
if (t6.unref) {
|
|
t6.unref();
|
|
}
|
|
}
|
|
return n7;
|
|
};
|
|
this.getRemainingTTL = (key) => {
|
|
const index = this.#keyMap.get(key);
|
|
if (index === void 0) {
|
|
return 0;
|
|
}
|
|
const ttl = ttls[index];
|
|
const start = starts[index];
|
|
if (ttl === 0 || start === 0) {
|
|
return Infinity;
|
|
}
|
|
const age = (cachedNow || getNow()) - start;
|
|
return ttl - age;
|
|
};
|
|
this.#isStale = (index) => {
|
|
return ttls[index] !== 0 && starts[index] !== 0 && (cachedNow || getNow()) - starts[index] > ttls[index];
|
|
};
|
|
}
|
|
// conditionally set private methods related to TTL
|
|
#updateItemAge = () => {
|
|
};
|
|
#statusTTL = () => {
|
|
};
|
|
#setItemTTL = () => {
|
|
};
|
|
/* c8 ignore stop */
|
|
#isStale = () => false;
|
|
#initializeSizeTracking() {
|
|
const sizes = new ZeroArray(this.#max);
|
|
this.#calculatedSize = 0;
|
|
this.#sizes = sizes;
|
|
this.#removeItemSize = (index) => {
|
|
this.#calculatedSize -= sizes[index];
|
|
sizes[index] = 0;
|
|
};
|
|
this.#requireSize = (k2, v4, size, sizeCalculation) => {
|
|
if (this.#isBackgroundFetch(v4)) {
|
|
return 0;
|
|
}
|
|
if (!isPosInt(size)) {
|
|
if (sizeCalculation) {
|
|
if (typeof sizeCalculation !== "function") {
|
|
throw new TypeError("sizeCalculation must be a function");
|
|
}
|
|
size = sizeCalculation(v4, k2);
|
|
if (!isPosInt(size)) {
|
|
throw new TypeError("sizeCalculation return invalid (expect positive integer)");
|
|
}
|
|
} else {
|
|
throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");
|
|
}
|
|
}
|
|
return size;
|
|
};
|
|
this.#addItemSize = (index, size, status) => {
|
|
sizes[index] = size;
|
|
if (this.#maxSize) {
|
|
const maxSize = this.#maxSize - sizes[index];
|
|
while (this.#calculatedSize > maxSize) {
|
|
this.#evict(true);
|
|
}
|
|
}
|
|
this.#calculatedSize += sizes[index];
|
|
if (status) {
|
|
status.entrySize = size;
|
|
status.totalCalculatedSize = this.#calculatedSize;
|
|
}
|
|
};
|
|
}
|
|
#removeItemSize = (_i) => {
|
|
};
|
|
#addItemSize = (_i, _s, _st) => {
|
|
};
|
|
#requireSize = (_k, _v, size, sizeCalculation) => {
|
|
if (size || sizeCalculation) {
|
|
throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");
|
|
}
|
|
return 0;
|
|
};
|
|
*#indexes({ allowStale = this.allowStale } = {}) {
|
|
if (this.#size) {
|
|
for (let i6 = this.#tail; true; ) {
|
|
if (!this.#isValidIndex(i6)) {
|
|
break;
|
|
}
|
|
if (allowStale || !this.#isStale(i6)) {
|
|
yield i6;
|
|
}
|
|
if (i6 === this.#head) {
|
|
break;
|
|
} else {
|
|
i6 = this.#prev[i6];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
*#rindexes({ allowStale = this.allowStale } = {}) {
|
|
if (this.#size) {
|
|
for (let i6 = this.#head; true; ) {
|
|
if (!this.#isValidIndex(i6)) {
|
|
break;
|
|
}
|
|
if (allowStale || !this.#isStale(i6)) {
|
|
yield i6;
|
|
}
|
|
if (i6 === this.#tail) {
|
|
break;
|
|
} else {
|
|
i6 = this.#next[i6];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#isValidIndex(index) {
|
|
return index !== void 0 && this.#keyMap.get(this.#keyList[index]) === index;
|
|
}
|
|
/**
|
|
* Return a generator yielding `[key, value]` pairs,
|
|
* in order from most recently used to least recently used.
|
|
*/
|
|
*entries() {
|
|
for (const i6 of this.#indexes()) {
|
|
if (this.#valList[i6] !== void 0 && this.#keyList[i6] !== void 0 && !this.#isBackgroundFetch(this.#valList[i6])) {
|
|
yield [this.#keyList[i6], this.#valList[i6]];
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Inverse order version of {@link LRUCache.entries}
|
|
*
|
|
* Return a generator yielding `[key, value]` pairs,
|
|
* in order from least recently used to most recently used.
|
|
*/
|
|
*rentries() {
|
|
for (const i6 of this.#rindexes()) {
|
|
if (this.#valList[i6] !== void 0 && this.#keyList[i6] !== void 0 && !this.#isBackgroundFetch(this.#valList[i6])) {
|
|
yield [this.#keyList[i6], this.#valList[i6]];
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Return a generator yielding the keys in the cache,
|
|
* in order from most recently used to least recently used.
|
|
*/
|
|
*keys() {
|
|
for (const i6 of this.#indexes()) {
|
|
const k2 = this.#keyList[i6];
|
|
if (k2 !== void 0 && !this.#isBackgroundFetch(this.#valList[i6])) {
|
|
yield k2;
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Inverse order version of {@link LRUCache.keys}
|
|
*
|
|
* Return a generator yielding the keys in the cache,
|
|
* in order from least recently used to most recently used.
|
|
*/
|
|
*rkeys() {
|
|
for (const i6 of this.#rindexes()) {
|
|
const k2 = this.#keyList[i6];
|
|
if (k2 !== void 0 && !this.#isBackgroundFetch(this.#valList[i6])) {
|
|
yield k2;
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Return a generator yielding the values in the cache,
|
|
* in order from most recently used to least recently used.
|
|
*/
|
|
*values() {
|
|
for (const i6 of this.#indexes()) {
|
|
const v4 = this.#valList[i6];
|
|
if (v4 !== void 0 && !this.#isBackgroundFetch(this.#valList[i6])) {
|
|
yield this.#valList[i6];
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Inverse order version of {@link LRUCache.values}
|
|
*
|
|
* Return a generator yielding the values in the cache,
|
|
* in order from least recently used to most recently used.
|
|
*/
|
|
*rvalues() {
|
|
for (const i6 of this.#rindexes()) {
|
|
const v4 = this.#valList[i6];
|
|
if (v4 !== void 0 && !this.#isBackgroundFetch(this.#valList[i6])) {
|
|
yield this.#valList[i6];
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Iterating over the cache itself yields the same results as
|
|
* {@link LRUCache.entries}
|
|
*/
|
|
[Symbol.iterator]() {
|
|
return this.entries();
|
|
}
|
|
/**
|
|
* Find a value for which the supplied fn method returns a truthy value,
|
|
* similar to Array.find(). fn is called as fn(value, key, cache).
|
|
*/
|
|
find(fn, getOptions = {}) {
|
|
for (const i6 of this.#indexes()) {
|
|
const v4 = this.#valList[i6];
|
|
const value = this.#isBackgroundFetch(v4) ? v4.__staleWhileFetching : v4;
|
|
if (value === void 0)
|
|
continue;
|
|
if (fn(value, this.#keyList[i6], this)) {
|
|
return this.get(this.#keyList[i6], getOptions);
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Call the supplied function on each item in the cache, in order from
|
|
* most recently used to least recently used. fn is called as
|
|
* fn(value, key, cache). Does not update age or recenty of use.
|
|
* Does not iterate over stale values.
|
|
*/
|
|
forEach(fn, thisp = this) {
|
|
for (const i6 of this.#indexes()) {
|
|
const v4 = this.#valList[i6];
|
|
const value = this.#isBackgroundFetch(v4) ? v4.__staleWhileFetching : v4;
|
|
if (value === void 0)
|
|
continue;
|
|
fn.call(thisp, value, this.#keyList[i6], this);
|
|
}
|
|
}
|
|
/**
|
|
* The same as {@link LRUCache.forEach} but items are iterated over in
|
|
* reverse order. (ie, less recently used items are iterated over first.)
|
|
*/
|
|
rforEach(fn, thisp = this) {
|
|
for (const i6 of this.#rindexes()) {
|
|
const v4 = this.#valList[i6];
|
|
const value = this.#isBackgroundFetch(v4) ? v4.__staleWhileFetching : v4;
|
|
if (value === void 0)
|
|
continue;
|
|
fn.call(thisp, value, this.#keyList[i6], this);
|
|
}
|
|
}
|
|
/**
|
|
* Delete any stale entries. Returns true if anything was removed,
|
|
* false otherwise.
|
|
*/
|
|
purgeStale() {
|
|
let deleted = false;
|
|
for (const i6 of this.#rindexes({ allowStale: true })) {
|
|
if (this.#isStale(i6)) {
|
|
this.delete(this.#keyList[i6]);
|
|
deleted = true;
|
|
}
|
|
}
|
|
return deleted;
|
|
}
|
|
/**
|
|
* Return an array of [key, {@link LRUCache.Entry}] tuples which can be
|
|
* passed to cache.load()
|
|
*/
|
|
dump() {
|
|
const arr = [];
|
|
for (const i6 of this.#indexes({ allowStale: true })) {
|
|
const key = this.#keyList[i6];
|
|
const v4 = this.#valList[i6];
|
|
const value = this.#isBackgroundFetch(v4) ? v4.__staleWhileFetching : v4;
|
|
if (value === void 0 || key === void 0)
|
|
continue;
|
|
const entry = { value };
|
|
if (this.#ttls && this.#starts) {
|
|
entry.ttl = this.#ttls[i6];
|
|
const age = perf.now() - this.#starts[i6];
|
|
entry.start = Math.floor(Date.now() - age);
|
|
}
|
|
if (this.#sizes) {
|
|
entry.size = this.#sizes[i6];
|
|
}
|
|
arr.unshift([key, entry]);
|
|
}
|
|
return arr;
|
|
}
|
|
/**
|
|
* Reset the cache and load in the items in entries in the order listed.
|
|
* Note that the shape of the resulting cache may be different if the
|
|
* same options are not used in both caches.
|
|
*/
|
|
load(arr) {
|
|
this.clear();
|
|
for (const [key, entry] of arr) {
|
|
if (entry.start) {
|
|
const age = Date.now() - entry.start;
|
|
entry.start = perf.now() - age;
|
|
}
|
|
this.set(key, entry.value, entry);
|
|
}
|
|
}
|
|
/**
|
|
* Add a value to the cache.
|
|
*
|
|
* Note: if `undefined` is specified as a value, this is an alias for
|
|
* {@link LRUCache#delete}
|
|
*/
|
|
set(k2, v4, setOptions = {}) {
|
|
if (v4 === void 0) {
|
|
this.delete(k2);
|
|
return this;
|
|
}
|
|
const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status } = setOptions;
|
|
let { noUpdateTTL = this.noUpdateTTL } = setOptions;
|
|
const size = this.#requireSize(k2, v4, setOptions.size || 0, sizeCalculation);
|
|
if (this.maxEntrySize && size > this.maxEntrySize) {
|
|
if (status) {
|
|
status.set = "miss";
|
|
status.maxEntrySizeExceeded = true;
|
|
}
|
|
this.delete(k2);
|
|
return this;
|
|
}
|
|
let index = this.#size === 0 ? void 0 : this.#keyMap.get(k2);
|
|
if (index === void 0) {
|
|
index = this.#size === 0 ? this.#tail : this.#free.length !== 0 ? this.#free.pop() : this.#size === this.#max ? this.#evict(false) : this.#size;
|
|
this.#keyList[index] = k2;
|
|
this.#valList[index] = v4;
|
|
this.#keyMap.set(k2, index);
|
|
this.#next[this.#tail] = index;
|
|
this.#prev[index] = this.#tail;
|
|
this.#tail = index;
|
|
this.#size++;
|
|
this.#addItemSize(index, size, status);
|
|
if (status)
|
|
status.set = "add";
|
|
noUpdateTTL = false;
|
|
} else {
|
|
this.#moveToTail(index);
|
|
const oldVal = this.#valList[index];
|
|
if (v4 !== oldVal) {
|
|
if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {
|
|
oldVal.__abortController.abort(new Error("replaced"));
|
|
const { __staleWhileFetching: s5 } = oldVal;
|
|
if (s5 !== void 0 && !noDisposeOnSet) {
|
|
if (this.#hasDispose) {
|
|
this.#dispose?.(s5, k2, "set");
|
|
}
|
|
if (this.#hasDisposeAfter) {
|
|
this.#disposed?.push([s5, k2, "set"]);
|
|
}
|
|
}
|
|
} else if (!noDisposeOnSet) {
|
|
if (this.#hasDispose) {
|
|
this.#dispose?.(oldVal, k2, "set");
|
|
}
|
|
if (this.#hasDisposeAfter) {
|
|
this.#disposed?.push([oldVal, k2, "set"]);
|
|
}
|
|
}
|
|
this.#removeItemSize(index);
|
|
this.#addItemSize(index, size, status);
|
|
this.#valList[index] = v4;
|
|
if (status) {
|
|
status.set = "replace";
|
|
const oldValue = oldVal && this.#isBackgroundFetch(oldVal) ? oldVal.__staleWhileFetching : oldVal;
|
|
if (oldValue !== void 0)
|
|
status.oldValue = oldValue;
|
|
}
|
|
} else if (status) {
|
|
status.set = "update";
|
|
}
|
|
}
|
|
if (ttl !== 0 && !this.#ttls) {
|
|
this.#initializeTTLTracking();
|
|
}
|
|
if (this.#ttls) {
|
|
if (!noUpdateTTL) {
|
|
this.#setItemTTL(index, ttl, start);
|
|
}
|
|
if (status)
|
|
this.#statusTTL(status, index);
|
|
}
|
|
if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {
|
|
const dt = this.#disposed;
|
|
let task;
|
|
while (task = dt?.shift()) {
|
|
this.#disposeAfter?.(...task);
|
|
}
|
|
}
|
|
return this;
|
|
}
|
|
/**
|
|
* Evict the least recently used item, returning its value or
|
|
* `undefined` if cache is empty.
|
|
*/
|
|
pop() {
|
|
try {
|
|
while (this.#size) {
|
|
const val = this.#valList[this.#head];
|
|
this.#evict(true);
|
|
if (this.#isBackgroundFetch(val)) {
|
|
if (val.__staleWhileFetching) {
|
|
return val.__staleWhileFetching;
|
|
}
|
|
} else if (val !== void 0) {
|
|
return val;
|
|
}
|
|
}
|
|
} finally {
|
|
if (this.#hasDisposeAfter && this.#disposed) {
|
|
const dt = this.#disposed;
|
|
let task;
|
|
while (task = dt?.shift()) {
|
|
this.#disposeAfter?.(...task);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#evict(free) {
|
|
const head = this.#head;
|
|
const k2 = this.#keyList[head];
|
|
const v4 = this.#valList[head];
|
|
if (this.#hasFetchMethod && this.#isBackgroundFetch(v4)) {
|
|
v4.__abortController.abort(new Error("evicted"));
|
|
} else if (this.#hasDispose || this.#hasDisposeAfter) {
|
|
if (this.#hasDispose) {
|
|
this.#dispose?.(v4, k2, "evict");
|
|
}
|
|
if (this.#hasDisposeAfter) {
|
|
this.#disposed?.push([v4, k2, "evict"]);
|
|
}
|
|
}
|
|
this.#removeItemSize(head);
|
|
if (free) {
|
|
this.#keyList[head] = void 0;
|
|
this.#valList[head] = void 0;
|
|
this.#free.push(head);
|
|
}
|
|
if (this.#size === 1) {
|
|
this.#head = this.#tail = 0;
|
|
this.#free.length = 0;
|
|
} else {
|
|
this.#head = this.#next[head];
|
|
}
|
|
this.#keyMap.delete(k2);
|
|
this.#size--;
|
|
return head;
|
|
}
|
|
/**
|
|
* Check if a key is in the cache, without updating the recency of use.
|
|
* Will return false if the item is stale, even though it is technically
|
|
* in the cache.
|
|
*
|
|
* Will not update item age unless
|
|
* {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
|
|
*/
|
|
has(k2, hasOptions = {}) {
|
|
const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
|
|
const index = this.#keyMap.get(k2);
|
|
if (index !== void 0) {
|
|
const v4 = this.#valList[index];
|
|
if (this.#isBackgroundFetch(v4) && v4.__staleWhileFetching === void 0) {
|
|
return false;
|
|
}
|
|
if (!this.#isStale(index)) {
|
|
if (updateAgeOnHas) {
|
|
this.#updateItemAge(index);
|
|
}
|
|
if (status) {
|
|
status.has = "hit";
|
|
this.#statusTTL(status, index);
|
|
}
|
|
return true;
|
|
} else if (status) {
|
|
status.has = "stale";
|
|
this.#statusTTL(status, index);
|
|
}
|
|
} else if (status) {
|
|
status.has = "miss";
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Like {@link LRUCache#get} but doesn't update recency or delete stale
|
|
* items.
|
|
*
|
|
* Returns `undefined` if the item is stale, unless
|
|
* {@link LRUCache.OptionsBase.allowStale} is set.
|
|
*/
|
|
peek(k2, peekOptions = {}) {
|
|
const { allowStale = this.allowStale } = peekOptions;
|
|
const index = this.#keyMap.get(k2);
|
|
if (index !== void 0 && (allowStale || !this.#isStale(index))) {
|
|
const v4 = this.#valList[index];
|
|
return this.#isBackgroundFetch(v4) ? v4.__staleWhileFetching : v4;
|
|
}
|
|
}
|
|
#backgroundFetch(k2, index, options, context) {
|
|
const v4 = index === void 0 ? void 0 : this.#valList[index];
|
|
if (this.#isBackgroundFetch(v4)) {
|
|
return v4;
|
|
}
|
|
const ac = new AC();
|
|
const { signal } = options;
|
|
signal?.addEventListener("abort", () => ac.abort(signal.reason), {
|
|
signal: ac.signal
|
|
});
|
|
const fetchOpts = {
|
|
signal: ac.signal,
|
|
options,
|
|
context
|
|
};
|
|
const cb = (v5, updateCache = false) => {
|
|
const { aborted } = ac.signal;
|
|
const ignoreAbort = options.ignoreFetchAbort && v5 !== void 0;
|
|
if (options.status) {
|
|
if (aborted && !updateCache) {
|
|
options.status.fetchAborted = true;
|
|
options.status.fetchError = ac.signal.reason;
|
|
if (ignoreAbort)
|
|
options.status.fetchAbortIgnored = true;
|
|
} else {
|
|
options.status.fetchResolved = true;
|
|
}
|
|
}
|
|
if (aborted && !ignoreAbort && !updateCache) {
|
|
return fetchFail(ac.signal.reason);
|
|
}
|
|
const bf2 = p6;
|
|
if (this.#valList[index] === p6) {
|
|
if (v5 === void 0) {
|
|
if (bf2.__staleWhileFetching) {
|
|
this.#valList[index] = bf2.__staleWhileFetching;
|
|
} else {
|
|
this.delete(k2);
|
|
}
|
|
} else {
|
|
if (options.status)
|
|
options.status.fetchUpdated = true;
|
|
this.set(k2, v5, fetchOpts.options);
|
|
}
|
|
}
|
|
return v5;
|
|
};
|
|
const eb = (er) => {
|
|
if (options.status) {
|
|
options.status.fetchRejected = true;
|
|
options.status.fetchError = er;
|
|
}
|
|
return fetchFail(er);
|
|
};
|
|
const fetchFail = (er) => {
|
|
const { aborted } = ac.signal;
|
|
const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
|
|
const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
|
|
const noDelete = allowStale || options.noDeleteOnFetchRejection;
|
|
const bf2 = p6;
|
|
if (this.#valList[index] === p6) {
|
|
const del = !noDelete || bf2.__staleWhileFetching === void 0;
|
|
if (del) {
|
|
this.delete(k2);
|
|
} else if (!allowStaleAborted) {
|
|
this.#valList[index] = bf2.__staleWhileFetching;
|
|
}
|
|
}
|
|
if (allowStale) {
|
|
if (options.status && bf2.__staleWhileFetching !== void 0) {
|
|
options.status.returnedStale = true;
|
|
}
|
|
return bf2.__staleWhileFetching;
|
|
} else if (bf2.__returned === bf2) {
|
|
throw er;
|
|
}
|
|
};
|
|
const pcall = (res, rej) => {
|
|
const fmp = this.#fetchMethod?.(k2, v4, fetchOpts);
|
|
if (fmp && fmp instanceof Promise) {
|
|
fmp.then((v5) => res(v5 === void 0 ? void 0 : v5), rej);
|
|
}
|
|
ac.signal.addEventListener("abort", () => {
|
|
if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {
|
|
res(void 0);
|
|
if (options.allowStaleOnFetchAbort) {
|
|
res = (v5) => cb(v5, true);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
if (options.status)
|
|
options.status.fetchDispatched = true;
|
|
const p6 = new Promise(pcall).then(cb, eb);
|
|
const bf = Object.assign(p6, {
|
|
__abortController: ac,
|
|
__staleWhileFetching: v4,
|
|
__returned: void 0
|
|
});
|
|
if (index === void 0) {
|
|
this.set(k2, bf, { ...fetchOpts.options, status: void 0 });
|
|
index = this.#keyMap.get(k2);
|
|
} else {
|
|
this.#valList[index] = bf;
|
|
}
|
|
return bf;
|
|
}
|
|
#isBackgroundFetch(p6) {
|
|
if (!this.#hasFetchMethod)
|
|
return false;
|
|
const b3 = p6;
|
|
return !!b3 && b3 instanceof Promise && b3.hasOwnProperty("__staleWhileFetching") && b3.__abortController instanceof AC;
|
|
}
|
|
async fetch(k2, fetchOptions = {}) {
|
|
const {
|
|
// get options
|
|
allowStale = this.allowStale,
|
|
updateAgeOnGet = this.updateAgeOnGet,
|
|
noDeleteOnStaleGet = this.noDeleteOnStaleGet,
|
|
// set options
|
|
ttl = this.ttl,
|
|
noDisposeOnSet = this.noDisposeOnSet,
|
|
size = 0,
|
|
sizeCalculation = this.sizeCalculation,
|
|
noUpdateTTL = this.noUpdateTTL,
|
|
// fetch exclusive options
|
|
noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,
|
|
allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,
|
|
ignoreFetchAbort = this.ignoreFetchAbort,
|
|
allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,
|
|
context,
|
|
forceRefresh = false,
|
|
status,
|
|
signal
|
|
} = fetchOptions;
|
|
if (!this.#hasFetchMethod) {
|
|
if (status)
|
|
status.fetch = "get";
|
|
return this.get(k2, {
|
|
allowStale,
|
|
updateAgeOnGet,
|
|
noDeleteOnStaleGet,
|
|
status
|
|
});
|
|
}
|
|
const options = {
|
|
allowStale,
|
|
updateAgeOnGet,
|
|
noDeleteOnStaleGet,
|
|
ttl,
|
|
noDisposeOnSet,
|
|
size,
|
|
sizeCalculation,
|
|
noUpdateTTL,
|
|
noDeleteOnFetchRejection,
|
|
allowStaleOnFetchRejection,
|
|
allowStaleOnFetchAbort,
|
|
ignoreFetchAbort,
|
|
status,
|
|
signal
|
|
};
|
|
let index = this.#keyMap.get(k2);
|
|
if (index === void 0) {
|
|
if (status)
|
|
status.fetch = "miss";
|
|
const p6 = this.#backgroundFetch(k2, index, options, context);
|
|
return p6.__returned = p6;
|
|
} else {
|
|
const v4 = this.#valList[index];
|
|
if (this.#isBackgroundFetch(v4)) {
|
|
const stale = allowStale && v4.__staleWhileFetching !== void 0;
|
|
if (status) {
|
|
status.fetch = "inflight";
|
|
if (stale)
|
|
status.returnedStale = true;
|
|
}
|
|
return stale ? v4.__staleWhileFetching : v4.__returned = v4;
|
|
}
|
|
const isStale = this.#isStale(index);
|
|
if (!forceRefresh && !isStale) {
|
|
if (status)
|
|
status.fetch = "hit";
|
|
this.#moveToTail(index);
|
|
if (updateAgeOnGet) {
|
|
this.#updateItemAge(index);
|
|
}
|
|
if (status)
|
|
this.#statusTTL(status, index);
|
|
return v4;
|
|
}
|
|
const p6 = this.#backgroundFetch(k2, index, options, context);
|
|
const hasStale = p6.__staleWhileFetching !== void 0;
|
|
const staleVal = hasStale && allowStale;
|
|
if (status) {
|
|
status.fetch = isStale ? "stale" : "refresh";
|
|
if (staleVal && isStale)
|
|
status.returnedStale = true;
|
|
}
|
|
return staleVal ? p6.__staleWhileFetching : p6.__returned = p6;
|
|
}
|
|
}
|
|
/**
|
|
* Return a value from the cache. Will update the recency of the cache
|
|
* entry found.
|
|
*
|
|
* If the key is not found, get() will return `undefined`.
|
|
*/
|
|
get(k2, getOptions = {}) {
|
|
const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status } = getOptions;
|
|
const index = this.#keyMap.get(k2);
|
|
if (index !== void 0) {
|
|
const value = this.#valList[index];
|
|
const fetching = this.#isBackgroundFetch(value);
|
|
if (status)
|
|
this.#statusTTL(status, index);
|
|
if (this.#isStale(index)) {
|
|
if (status)
|
|
status.get = "stale";
|
|
if (!fetching) {
|
|
if (!noDeleteOnStaleGet) {
|
|
this.delete(k2);
|
|
}
|
|
if (status && allowStale)
|
|
status.returnedStale = true;
|
|
return allowStale ? value : void 0;
|
|
} else {
|
|
if (status && allowStale && value.__staleWhileFetching !== void 0) {
|
|
status.returnedStale = true;
|
|
}
|
|
return allowStale ? value.__staleWhileFetching : void 0;
|
|
}
|
|
} else {
|
|
if (status)
|
|
status.get = "hit";
|
|
if (fetching) {
|
|
return value.__staleWhileFetching;
|
|
}
|
|
this.#moveToTail(index);
|
|
if (updateAgeOnGet) {
|
|
this.#updateItemAge(index);
|
|
}
|
|
return value;
|
|
}
|
|
} else if (status) {
|
|
status.get = "miss";
|
|
}
|
|
}
|
|
#connect(p6, n7) {
|
|
this.#prev[n7] = p6;
|
|
this.#next[p6] = n7;
|
|
}
|
|
#moveToTail(index) {
|
|
if (index !== this.#tail) {
|
|
if (index === this.#head) {
|
|
this.#head = this.#next[index];
|
|
} else {
|
|
this.#connect(this.#prev[index], this.#next[index]);
|
|
}
|
|
this.#connect(this.#tail, index);
|
|
this.#tail = index;
|
|
}
|
|
}
|
|
/**
|
|
* Deletes a key out of the cache.
|
|
* Returns true if the key was deleted, false otherwise.
|
|
*/
|
|
delete(k2) {
|
|
let deleted = false;
|
|
if (this.#size !== 0) {
|
|
const index = this.#keyMap.get(k2);
|
|
if (index !== void 0) {
|
|
deleted = true;
|
|
if (this.#size === 1) {
|
|
this.clear();
|
|
} else {
|
|
this.#removeItemSize(index);
|
|
const v4 = this.#valList[index];
|
|
if (this.#isBackgroundFetch(v4)) {
|
|
v4.__abortController.abort(new Error("deleted"));
|
|
} else if (this.#hasDispose || this.#hasDisposeAfter) {
|
|
if (this.#hasDispose) {
|
|
this.#dispose?.(v4, k2, "delete");
|
|
}
|
|
if (this.#hasDisposeAfter) {
|
|
this.#disposed?.push([v4, k2, "delete"]);
|
|
}
|
|
}
|
|
this.#keyMap.delete(k2);
|
|
this.#keyList[index] = void 0;
|
|
this.#valList[index] = void 0;
|
|
if (index === this.#tail) {
|
|
this.#tail = this.#prev[index];
|
|
} else if (index === this.#head) {
|
|
this.#head = this.#next[index];
|
|
} else {
|
|
this.#next[this.#prev[index]] = this.#next[index];
|
|
this.#prev[this.#next[index]] = this.#prev[index];
|
|
}
|
|
this.#size--;
|
|
this.#free.push(index);
|
|
}
|
|
}
|
|
}
|
|
if (this.#hasDisposeAfter && this.#disposed?.length) {
|
|
const dt = this.#disposed;
|
|
let task;
|
|
while (task = dt?.shift()) {
|
|
this.#disposeAfter?.(...task);
|
|
}
|
|
}
|
|
return deleted;
|
|
}
|
|
/**
|
|
* Clear the cache entirely, throwing away all values.
|
|
*/
|
|
clear() {
|
|
for (const index of this.#rindexes({ allowStale: true })) {
|
|
const v4 = this.#valList[index];
|
|
if (this.#isBackgroundFetch(v4)) {
|
|
v4.__abortController.abort(new Error("deleted"));
|
|
} else {
|
|
const k2 = this.#keyList[index];
|
|
if (this.#hasDispose) {
|
|
this.#dispose?.(v4, k2, "delete");
|
|
}
|
|
if (this.#hasDisposeAfter) {
|
|
this.#disposed?.push([v4, k2, "delete"]);
|
|
}
|
|
}
|
|
}
|
|
this.#keyMap.clear();
|
|
this.#valList.fill(void 0);
|
|
this.#keyList.fill(void 0);
|
|
if (this.#ttls && this.#starts) {
|
|
this.#ttls.fill(0);
|
|
this.#starts.fill(0);
|
|
}
|
|
if (this.#sizes) {
|
|
this.#sizes.fill(0);
|
|
}
|
|
this.#head = 0;
|
|
this.#tail = 0;
|
|
this.#free.length = 0;
|
|
this.#calculatedSize = 0;
|
|
this.#size = 0;
|
|
if (this.#hasDisposeAfter && this.#disposed) {
|
|
const dt = this.#disposed;
|
|
let task;
|
|
while (task = dt?.shift()) {
|
|
this.#disposeAfter?.(...task);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
exports5.LRUCache = LRUCache;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/ContainerBase/index.js
|
|
var require_ContainerBase = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/ContainerBase/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.ContainerIterator = exports5.Container = exports5.Base = void 0;
|
|
var ContainerIterator = class {
|
|
constructor(t6 = 0) {
|
|
this.iteratorType = t6;
|
|
}
|
|
equals(t6) {
|
|
return this.o === t6.o;
|
|
}
|
|
};
|
|
exports5.ContainerIterator = ContainerIterator;
|
|
var Base = class {
|
|
constructor() {
|
|
this.i = 0;
|
|
}
|
|
get length() {
|
|
return this.i;
|
|
}
|
|
size() {
|
|
return this.i;
|
|
}
|
|
empty() {
|
|
return this.i === 0;
|
|
}
|
|
};
|
|
exports5.Base = Base;
|
|
var Container = class extends Base {
|
|
};
|
|
exports5.Container = Container;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/OtherContainer/Stack.js
|
|
var require_Stack = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/OtherContainer/Stack.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var Stack = class extends _ContainerBase.Base {
|
|
constructor(t6 = []) {
|
|
super();
|
|
this.S = [];
|
|
const s5 = this;
|
|
t6.forEach(function(t7) {
|
|
s5.push(t7);
|
|
});
|
|
}
|
|
clear() {
|
|
this.i = 0;
|
|
this.S = [];
|
|
}
|
|
push(t6) {
|
|
this.S.push(t6);
|
|
this.i += 1;
|
|
return this.i;
|
|
}
|
|
pop() {
|
|
if (this.i === 0)
|
|
return;
|
|
this.i -= 1;
|
|
return this.S.pop();
|
|
}
|
|
top() {
|
|
return this.S[this.i - 1];
|
|
}
|
|
};
|
|
var _default = Stack;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/OtherContainer/Queue.js
|
|
var require_Queue = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/OtherContainer/Queue.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var Queue = class extends _ContainerBase.Base {
|
|
constructor(t6 = []) {
|
|
super();
|
|
this.j = 0;
|
|
this.q = [];
|
|
const s5 = this;
|
|
t6.forEach(function(t7) {
|
|
s5.push(t7);
|
|
});
|
|
}
|
|
clear() {
|
|
this.q = [];
|
|
this.i = this.j = 0;
|
|
}
|
|
push(t6) {
|
|
const s5 = this.q.length;
|
|
if (this.j / s5 > 0.5 && this.j + this.i >= s5 && s5 > 4096) {
|
|
const s6 = this.i;
|
|
for (let t7 = 0; t7 < s6; ++t7) {
|
|
this.q[t7] = this.q[this.j + t7];
|
|
}
|
|
this.j = 0;
|
|
this.q[this.i] = t6;
|
|
} else
|
|
this.q[this.j + this.i] = t6;
|
|
return ++this.i;
|
|
}
|
|
pop() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = this.q[this.j++];
|
|
this.i -= 1;
|
|
return t6;
|
|
}
|
|
front() {
|
|
if (this.i === 0)
|
|
return;
|
|
return this.q[this.j];
|
|
}
|
|
};
|
|
var _default = Queue;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/OtherContainer/PriorityQueue.js
|
|
var require_PriorityQueue = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/OtherContainer/PriorityQueue.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var PriorityQueue = class extends _ContainerBase.Base {
|
|
constructor(t6 = [], s5 = function(t7, s6) {
|
|
if (t7 > s6)
|
|
return -1;
|
|
if (t7 < s6)
|
|
return 1;
|
|
return 0;
|
|
}, i6 = true) {
|
|
super();
|
|
this.v = s5;
|
|
if (Array.isArray(t6)) {
|
|
this.C = i6 ? [...t6] : t6;
|
|
} else {
|
|
this.C = [];
|
|
const s6 = this;
|
|
t6.forEach(function(t7) {
|
|
s6.C.push(t7);
|
|
});
|
|
}
|
|
this.i = this.C.length;
|
|
const e7 = this.i >> 1;
|
|
for (let t7 = this.i - 1 >> 1; t7 >= 0; --t7) {
|
|
this.k(t7, e7);
|
|
}
|
|
}
|
|
m(t6) {
|
|
const s5 = this.C[t6];
|
|
while (t6 > 0) {
|
|
const i6 = t6 - 1 >> 1;
|
|
const e7 = this.C[i6];
|
|
if (this.v(e7, s5) <= 0)
|
|
break;
|
|
this.C[t6] = e7;
|
|
t6 = i6;
|
|
}
|
|
this.C[t6] = s5;
|
|
}
|
|
k(t6, s5) {
|
|
const i6 = this.C[t6];
|
|
while (t6 < s5) {
|
|
let s6 = t6 << 1 | 1;
|
|
const e7 = s6 + 1;
|
|
let h6 = this.C[s6];
|
|
if (e7 < this.i && this.v(h6, this.C[e7]) > 0) {
|
|
s6 = e7;
|
|
h6 = this.C[e7];
|
|
}
|
|
if (this.v(h6, i6) >= 0)
|
|
break;
|
|
this.C[t6] = h6;
|
|
t6 = s6;
|
|
}
|
|
this.C[t6] = i6;
|
|
}
|
|
clear() {
|
|
this.i = 0;
|
|
this.C.length = 0;
|
|
}
|
|
push(t6) {
|
|
this.C.push(t6);
|
|
this.m(this.i);
|
|
this.i += 1;
|
|
}
|
|
pop() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = this.C[0];
|
|
const s5 = this.C.pop();
|
|
this.i -= 1;
|
|
if (this.i) {
|
|
this.C[0] = s5;
|
|
this.k(0, this.i >> 1);
|
|
}
|
|
return t6;
|
|
}
|
|
top() {
|
|
return this.C[0];
|
|
}
|
|
find(t6) {
|
|
return this.C.indexOf(t6) >= 0;
|
|
}
|
|
remove(t6) {
|
|
const s5 = this.C.indexOf(t6);
|
|
if (s5 < 0)
|
|
return false;
|
|
if (s5 === 0) {
|
|
this.pop();
|
|
} else if (s5 === this.i - 1) {
|
|
this.C.pop();
|
|
this.i -= 1;
|
|
} else {
|
|
this.C.splice(s5, 1, this.C.pop());
|
|
this.i -= 1;
|
|
this.m(s5);
|
|
this.k(s5, this.i >> 1);
|
|
}
|
|
return true;
|
|
}
|
|
updateItem(t6) {
|
|
const s5 = this.C.indexOf(t6);
|
|
if (s5 < 0)
|
|
return false;
|
|
this.m(s5);
|
|
this.k(s5, this.i >> 1);
|
|
return true;
|
|
}
|
|
toArray() {
|
|
return [...this.C];
|
|
}
|
|
};
|
|
var _default = PriorityQueue;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Base/index.js
|
|
var require_Base = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Base/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var SequentialContainer = class extends _ContainerBase.Container {
|
|
};
|
|
var _default = SequentialContainer;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/utils/throwError.js
|
|
var require_throwError = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/utils/throwError.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.throwIteratorAccessError = throwIteratorAccessError;
|
|
function throwIteratorAccessError() {
|
|
throw new RangeError("Iterator access denied!");
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Base/RandomIterator.js
|
|
var require_RandomIterator = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Base/RandomIterator.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.RandomIterator = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var _throwError = require_throwError();
|
|
var RandomIterator = class extends _ContainerBase.ContainerIterator {
|
|
constructor(t6, r7) {
|
|
super(r7);
|
|
this.o = t6;
|
|
if (this.iteratorType === 0) {
|
|
this.pre = function() {
|
|
if (this.o === 0) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o -= 1;
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.container.size()) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o += 1;
|
|
return this;
|
|
};
|
|
} else {
|
|
this.pre = function() {
|
|
if (this.o === this.container.size() - 1) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o += 1;
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === -1) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o -= 1;
|
|
return this;
|
|
};
|
|
}
|
|
}
|
|
get pointer() {
|
|
return this.container.getElementByPos(this.o);
|
|
}
|
|
set pointer(t6) {
|
|
this.container.setElementByPos(this.o, t6);
|
|
}
|
|
};
|
|
exports5.RandomIterator = RandomIterator;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Vector.js
|
|
var require_Vector = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Vector.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = _interopRequireDefault(require_Base());
|
|
var _RandomIterator = require_RandomIterator();
|
|
function _interopRequireDefault(t6) {
|
|
return t6 && t6.t ? t6 : {
|
|
default: t6
|
|
};
|
|
}
|
|
var VectorIterator = class _VectorIterator extends _RandomIterator.RandomIterator {
|
|
constructor(t6, r7, e7) {
|
|
super(t6, e7);
|
|
this.container = r7;
|
|
}
|
|
copy() {
|
|
return new _VectorIterator(this.o, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var Vector = class extends _Base.default {
|
|
constructor(t6 = [], r7 = true) {
|
|
super();
|
|
if (Array.isArray(t6)) {
|
|
this.J = r7 ? [...t6] : t6;
|
|
this.i = t6.length;
|
|
} else {
|
|
this.J = [];
|
|
const r8 = this;
|
|
t6.forEach(function(t7) {
|
|
r8.pushBack(t7);
|
|
});
|
|
}
|
|
}
|
|
clear() {
|
|
this.i = 0;
|
|
this.J.length = 0;
|
|
}
|
|
begin() {
|
|
return new VectorIterator(0, this);
|
|
}
|
|
end() {
|
|
return new VectorIterator(this.i, this);
|
|
}
|
|
rBegin() {
|
|
return new VectorIterator(this.i - 1, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new VectorIterator(-1, this, 1);
|
|
}
|
|
front() {
|
|
return this.J[0];
|
|
}
|
|
back() {
|
|
return this.J[this.i - 1];
|
|
}
|
|
getElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
return this.J[t6];
|
|
}
|
|
eraseElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
this.J.splice(t6, 1);
|
|
this.i -= 1;
|
|
return this.i;
|
|
}
|
|
eraseElementByValue(t6) {
|
|
let r7 = 0;
|
|
for (let e7 = 0; e7 < this.i; ++e7) {
|
|
if (this.J[e7] !== t6) {
|
|
this.J[r7++] = this.J[e7];
|
|
}
|
|
}
|
|
this.i = this.J.length = r7;
|
|
return this.i;
|
|
}
|
|
eraseElementByIterator(t6) {
|
|
const r7 = t6.o;
|
|
t6 = t6.next();
|
|
this.eraseElementByPos(r7);
|
|
return t6;
|
|
}
|
|
pushBack(t6) {
|
|
this.J.push(t6);
|
|
this.i += 1;
|
|
return this.i;
|
|
}
|
|
popBack() {
|
|
if (this.i === 0)
|
|
return;
|
|
this.i -= 1;
|
|
return this.J.pop();
|
|
}
|
|
setElementByPos(t6, r7) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
this.J[t6] = r7;
|
|
}
|
|
insert(t6, r7, e7 = 1) {
|
|
if (t6 < 0 || t6 > this.i) {
|
|
throw new RangeError();
|
|
}
|
|
this.J.splice(t6, 0, ...new Array(e7).fill(r7));
|
|
this.i += e7;
|
|
return this.i;
|
|
}
|
|
find(t6) {
|
|
for (let r7 = 0; r7 < this.i; ++r7) {
|
|
if (this.J[r7] === t6) {
|
|
return new VectorIterator(r7, this);
|
|
}
|
|
}
|
|
return this.end();
|
|
}
|
|
reverse() {
|
|
this.J.reverse();
|
|
}
|
|
unique() {
|
|
let t6 = 1;
|
|
for (let r7 = 1; r7 < this.i; ++r7) {
|
|
if (this.J[r7] !== this.J[r7 - 1]) {
|
|
this.J[t6++] = this.J[r7];
|
|
}
|
|
}
|
|
this.i = this.J.length = t6;
|
|
return this.i;
|
|
}
|
|
sort(t6) {
|
|
this.J.sort(t6);
|
|
}
|
|
forEach(t6) {
|
|
for (let r7 = 0; r7 < this.i; ++r7) {
|
|
t6(this.J[r7], r7, this);
|
|
}
|
|
}
|
|
[Symbol.iterator]() {
|
|
return function* () {
|
|
yield* this.J;
|
|
}.bind(this)();
|
|
}
|
|
};
|
|
var _default = Vector;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/SequentialContainer/LinkList.js
|
|
var require_LinkList = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/SequentialContainer/LinkList.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = _interopRequireDefault(require_Base());
|
|
var _ContainerBase = require_ContainerBase();
|
|
var _throwError = require_throwError();
|
|
function _interopRequireDefault(t6) {
|
|
return t6 && t6.t ? t6 : {
|
|
default: t6
|
|
};
|
|
}
|
|
var LinkListIterator = class _LinkListIterator extends _ContainerBase.ContainerIterator {
|
|
constructor(t6, i6, s5, r7) {
|
|
super(r7);
|
|
this.o = t6;
|
|
this.h = i6;
|
|
this.container = s5;
|
|
if (this.iteratorType === 0) {
|
|
this.pre = function() {
|
|
if (this.o.L === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.L;
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.B;
|
|
return this;
|
|
};
|
|
} else {
|
|
this.pre = function() {
|
|
if (this.o.B === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.B;
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.L;
|
|
return this;
|
|
};
|
|
}
|
|
}
|
|
get pointer() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
return this.o.l;
|
|
}
|
|
set pointer(t6) {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o.l = t6;
|
|
}
|
|
copy() {
|
|
return new _LinkListIterator(this.o, this.h, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var LinkList = class extends _Base.default {
|
|
constructor(t6 = []) {
|
|
super();
|
|
this.h = {};
|
|
this.p = this._ = this.h.L = this.h.B = this.h;
|
|
const i6 = this;
|
|
t6.forEach(function(t7) {
|
|
i6.pushBack(t7);
|
|
});
|
|
}
|
|
V(t6) {
|
|
const { L: i6, B: s5 } = t6;
|
|
i6.B = s5;
|
|
s5.L = i6;
|
|
if (t6 === this.p) {
|
|
this.p = s5;
|
|
}
|
|
if (t6 === this._) {
|
|
this._ = i6;
|
|
}
|
|
this.i -= 1;
|
|
}
|
|
G(t6, i6) {
|
|
const s5 = i6.B;
|
|
const r7 = {
|
|
l: t6,
|
|
L: i6,
|
|
B: s5
|
|
};
|
|
i6.B = r7;
|
|
s5.L = r7;
|
|
if (i6 === this.h) {
|
|
this.p = r7;
|
|
}
|
|
if (s5 === this.h) {
|
|
this._ = r7;
|
|
}
|
|
this.i += 1;
|
|
}
|
|
clear() {
|
|
this.i = 0;
|
|
this.p = this._ = this.h.L = this.h.B = this.h;
|
|
}
|
|
begin() {
|
|
return new LinkListIterator(this.p, this.h, this);
|
|
}
|
|
end() {
|
|
return new LinkListIterator(this.h, this.h, this);
|
|
}
|
|
rBegin() {
|
|
return new LinkListIterator(this._, this.h, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new LinkListIterator(this.h, this.h, this, 1);
|
|
}
|
|
front() {
|
|
return this.p.l;
|
|
}
|
|
back() {
|
|
return this._.l;
|
|
}
|
|
getElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let i6 = this.p;
|
|
while (t6--) {
|
|
i6 = i6.B;
|
|
}
|
|
return i6.l;
|
|
}
|
|
eraseElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let i6 = this.p;
|
|
while (t6--) {
|
|
i6 = i6.B;
|
|
}
|
|
this.V(i6);
|
|
return this.i;
|
|
}
|
|
eraseElementByValue(t6) {
|
|
let i6 = this.p;
|
|
while (i6 !== this.h) {
|
|
if (i6.l === t6) {
|
|
this.V(i6);
|
|
}
|
|
i6 = i6.B;
|
|
}
|
|
return this.i;
|
|
}
|
|
eraseElementByIterator(t6) {
|
|
const i6 = t6.o;
|
|
if (i6 === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
t6 = t6.next();
|
|
this.V(i6);
|
|
return t6;
|
|
}
|
|
pushBack(t6) {
|
|
this.G(t6, this._);
|
|
return this.i;
|
|
}
|
|
popBack() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = this._.l;
|
|
this.V(this._);
|
|
return t6;
|
|
}
|
|
pushFront(t6) {
|
|
this.G(t6, this.h);
|
|
return this.i;
|
|
}
|
|
popFront() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = this.p.l;
|
|
this.V(this.p);
|
|
return t6;
|
|
}
|
|
setElementByPos(t6, i6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let s5 = this.p;
|
|
while (t6--) {
|
|
s5 = s5.B;
|
|
}
|
|
s5.l = i6;
|
|
}
|
|
insert(t6, i6, s5 = 1) {
|
|
if (t6 < 0 || t6 > this.i) {
|
|
throw new RangeError();
|
|
}
|
|
if (s5 <= 0)
|
|
return this.i;
|
|
if (t6 === 0) {
|
|
while (s5--)
|
|
this.pushFront(i6);
|
|
} else if (t6 === this.i) {
|
|
while (s5--)
|
|
this.pushBack(i6);
|
|
} else {
|
|
let r7 = this.p;
|
|
for (let i7 = 1; i7 < t6; ++i7) {
|
|
r7 = r7.B;
|
|
}
|
|
const e7 = r7.B;
|
|
this.i += s5;
|
|
while (s5--) {
|
|
r7.B = {
|
|
l: i6,
|
|
L: r7
|
|
};
|
|
r7.B.L = r7;
|
|
r7 = r7.B;
|
|
}
|
|
r7.B = e7;
|
|
e7.L = r7;
|
|
}
|
|
return this.i;
|
|
}
|
|
find(t6) {
|
|
let i6 = this.p;
|
|
while (i6 !== this.h) {
|
|
if (i6.l === t6) {
|
|
return new LinkListIterator(i6, this.h, this);
|
|
}
|
|
i6 = i6.B;
|
|
}
|
|
return this.end();
|
|
}
|
|
reverse() {
|
|
if (this.i <= 1)
|
|
return;
|
|
let t6 = this.p;
|
|
let i6 = this._;
|
|
let s5 = 0;
|
|
while (s5 << 1 < this.i) {
|
|
const r7 = t6.l;
|
|
t6.l = i6.l;
|
|
i6.l = r7;
|
|
t6 = t6.B;
|
|
i6 = i6.L;
|
|
s5 += 1;
|
|
}
|
|
}
|
|
unique() {
|
|
if (this.i <= 1) {
|
|
return this.i;
|
|
}
|
|
let t6 = this.p;
|
|
while (t6 !== this.h) {
|
|
let i6 = t6;
|
|
while (i6.B !== this.h && i6.l === i6.B.l) {
|
|
i6 = i6.B;
|
|
this.i -= 1;
|
|
}
|
|
t6.B = i6.B;
|
|
t6.B.L = t6;
|
|
t6 = t6.B;
|
|
}
|
|
return this.i;
|
|
}
|
|
sort(t6) {
|
|
if (this.i <= 1)
|
|
return;
|
|
const i6 = [];
|
|
this.forEach(function(t7) {
|
|
i6.push(t7);
|
|
});
|
|
i6.sort(t6);
|
|
let s5 = this.p;
|
|
i6.forEach(function(t7) {
|
|
s5.l = t7;
|
|
s5 = s5.B;
|
|
});
|
|
}
|
|
merge(t6) {
|
|
const i6 = this;
|
|
if (this.i === 0) {
|
|
t6.forEach(function(t7) {
|
|
i6.pushBack(t7);
|
|
});
|
|
} else {
|
|
let s5 = this.p;
|
|
t6.forEach(function(t7) {
|
|
while (s5 !== i6.h && s5.l <= t7) {
|
|
s5 = s5.B;
|
|
}
|
|
i6.G(t7, s5.L);
|
|
});
|
|
}
|
|
return this.i;
|
|
}
|
|
forEach(t6) {
|
|
let i6 = this.p;
|
|
let s5 = 0;
|
|
while (i6 !== this.h) {
|
|
t6(i6.l, s5++, this);
|
|
i6 = i6.B;
|
|
}
|
|
}
|
|
[Symbol.iterator]() {
|
|
return function* () {
|
|
if (this.i === 0)
|
|
return;
|
|
let t6 = this.p;
|
|
while (t6 !== this.h) {
|
|
yield t6.l;
|
|
t6 = t6.B;
|
|
}
|
|
}.bind(this)();
|
|
}
|
|
};
|
|
var _default = LinkList;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Deque.js
|
|
var require_Deque = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Deque.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = _interopRequireDefault(require_Base());
|
|
var _RandomIterator = require_RandomIterator();
|
|
function _interopRequireDefault(t6) {
|
|
return t6 && t6.t ? t6 : {
|
|
default: t6
|
|
};
|
|
}
|
|
var DequeIterator = class _DequeIterator extends _RandomIterator.RandomIterator {
|
|
constructor(t6, i6, s5) {
|
|
super(t6, s5);
|
|
this.container = i6;
|
|
}
|
|
copy() {
|
|
return new _DequeIterator(this.o, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var Deque = class extends _Base.default {
|
|
constructor(t6 = [], i6 = 1 << 12) {
|
|
super();
|
|
this.j = 0;
|
|
this.D = 0;
|
|
this.R = 0;
|
|
this.N = 0;
|
|
this.P = 0;
|
|
this.A = [];
|
|
const s5 = (() => {
|
|
if (typeof t6.length === "number")
|
|
return t6.length;
|
|
if (typeof t6.size === "number")
|
|
return t6.size;
|
|
if (typeof t6.size === "function")
|
|
return t6.size();
|
|
throw new TypeError("Cannot get the length or size of the container");
|
|
})();
|
|
this.F = i6;
|
|
this.P = Math.max(Math.ceil(s5 / this.F), 1);
|
|
for (let t7 = 0; t7 < this.P; ++t7) {
|
|
this.A.push(new Array(this.F));
|
|
}
|
|
const h6 = Math.ceil(s5 / this.F);
|
|
this.j = this.R = (this.P >> 1) - (h6 >> 1);
|
|
this.D = this.N = this.F - s5 % this.F >> 1;
|
|
const e7 = this;
|
|
t6.forEach(function(t7) {
|
|
e7.pushBack(t7);
|
|
});
|
|
}
|
|
T() {
|
|
const t6 = [];
|
|
const i6 = Math.max(this.P >> 1, 1);
|
|
for (let s5 = 0; s5 < i6; ++s5) {
|
|
t6[s5] = new Array(this.F);
|
|
}
|
|
for (let i7 = this.j; i7 < this.P; ++i7) {
|
|
t6[t6.length] = this.A[i7];
|
|
}
|
|
for (let i7 = 0; i7 < this.R; ++i7) {
|
|
t6[t6.length] = this.A[i7];
|
|
}
|
|
t6[t6.length] = [...this.A[this.R]];
|
|
this.j = i6;
|
|
this.R = t6.length - 1;
|
|
for (let s5 = 0; s5 < i6; ++s5) {
|
|
t6[t6.length] = new Array(this.F);
|
|
}
|
|
this.A = t6;
|
|
this.P = t6.length;
|
|
}
|
|
O(t6) {
|
|
const i6 = this.D + t6 + 1;
|
|
const s5 = i6 % this.F;
|
|
let h6 = s5 - 1;
|
|
let e7 = this.j + (i6 - s5) / this.F;
|
|
if (s5 === 0)
|
|
e7 -= 1;
|
|
e7 %= this.P;
|
|
if (h6 < 0)
|
|
h6 += this.F;
|
|
return {
|
|
curNodeBucketIndex: e7,
|
|
curNodePointerIndex: h6
|
|
};
|
|
}
|
|
clear() {
|
|
this.A = [new Array(this.F)];
|
|
this.P = 1;
|
|
this.j = this.R = this.i = 0;
|
|
this.D = this.N = this.F >> 1;
|
|
}
|
|
begin() {
|
|
return new DequeIterator(0, this);
|
|
}
|
|
end() {
|
|
return new DequeIterator(this.i, this);
|
|
}
|
|
rBegin() {
|
|
return new DequeIterator(this.i - 1, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new DequeIterator(-1, this, 1);
|
|
}
|
|
front() {
|
|
if (this.i === 0)
|
|
return;
|
|
return this.A[this.j][this.D];
|
|
}
|
|
back() {
|
|
if (this.i === 0)
|
|
return;
|
|
return this.A[this.R][this.N];
|
|
}
|
|
pushBack(t6) {
|
|
if (this.i) {
|
|
if (this.N < this.F - 1) {
|
|
this.N += 1;
|
|
} else if (this.R < this.P - 1) {
|
|
this.R += 1;
|
|
this.N = 0;
|
|
} else {
|
|
this.R = 0;
|
|
this.N = 0;
|
|
}
|
|
if (this.R === this.j && this.N === this.D)
|
|
this.T();
|
|
}
|
|
this.i += 1;
|
|
this.A[this.R][this.N] = t6;
|
|
return this.i;
|
|
}
|
|
popBack() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = this.A[this.R][this.N];
|
|
if (this.i !== 1) {
|
|
if (this.N > 0) {
|
|
this.N -= 1;
|
|
} else if (this.R > 0) {
|
|
this.R -= 1;
|
|
this.N = this.F - 1;
|
|
} else {
|
|
this.R = this.P - 1;
|
|
this.N = this.F - 1;
|
|
}
|
|
}
|
|
this.i -= 1;
|
|
return t6;
|
|
}
|
|
pushFront(t6) {
|
|
if (this.i) {
|
|
if (this.D > 0) {
|
|
this.D -= 1;
|
|
} else if (this.j > 0) {
|
|
this.j -= 1;
|
|
this.D = this.F - 1;
|
|
} else {
|
|
this.j = this.P - 1;
|
|
this.D = this.F - 1;
|
|
}
|
|
if (this.j === this.R && this.D === this.N)
|
|
this.T();
|
|
}
|
|
this.i += 1;
|
|
this.A[this.j][this.D] = t6;
|
|
return this.i;
|
|
}
|
|
popFront() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = this.A[this.j][this.D];
|
|
if (this.i !== 1) {
|
|
if (this.D < this.F - 1) {
|
|
this.D += 1;
|
|
} else if (this.j < this.P - 1) {
|
|
this.j += 1;
|
|
this.D = 0;
|
|
} else {
|
|
this.j = 0;
|
|
this.D = 0;
|
|
}
|
|
}
|
|
this.i -= 1;
|
|
return t6;
|
|
}
|
|
getElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
const { curNodeBucketIndex: i6, curNodePointerIndex: s5 } = this.O(t6);
|
|
return this.A[i6][s5];
|
|
}
|
|
setElementByPos(t6, i6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
const { curNodeBucketIndex: s5, curNodePointerIndex: h6 } = this.O(t6);
|
|
this.A[s5][h6] = i6;
|
|
}
|
|
insert(t6, i6, s5 = 1) {
|
|
if (t6 < 0 || t6 > this.i) {
|
|
throw new RangeError();
|
|
}
|
|
if (t6 === 0) {
|
|
while (s5--)
|
|
this.pushFront(i6);
|
|
} else if (t6 === this.i) {
|
|
while (s5--)
|
|
this.pushBack(i6);
|
|
} else {
|
|
const h6 = [];
|
|
for (let i7 = t6; i7 < this.i; ++i7) {
|
|
h6.push(this.getElementByPos(i7));
|
|
}
|
|
this.cut(t6 - 1);
|
|
for (let t7 = 0; t7 < s5; ++t7)
|
|
this.pushBack(i6);
|
|
for (let t7 = 0; t7 < h6.length; ++t7)
|
|
this.pushBack(h6[t7]);
|
|
}
|
|
return this.i;
|
|
}
|
|
cut(t6) {
|
|
if (t6 < 0) {
|
|
this.clear();
|
|
return 0;
|
|
}
|
|
const { curNodeBucketIndex: i6, curNodePointerIndex: s5 } = this.O(t6);
|
|
this.R = i6;
|
|
this.N = s5;
|
|
this.i = t6 + 1;
|
|
return this.i;
|
|
}
|
|
eraseElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
if (t6 === 0)
|
|
this.popFront();
|
|
else if (t6 === this.i - 1)
|
|
this.popBack();
|
|
else {
|
|
const i6 = [];
|
|
for (let s6 = t6 + 1; s6 < this.i; ++s6) {
|
|
i6.push(this.getElementByPos(s6));
|
|
}
|
|
this.cut(t6);
|
|
this.popBack();
|
|
const s5 = this;
|
|
i6.forEach(function(t7) {
|
|
s5.pushBack(t7);
|
|
});
|
|
}
|
|
return this.i;
|
|
}
|
|
eraseElementByValue(t6) {
|
|
if (this.i === 0)
|
|
return 0;
|
|
const i6 = [];
|
|
for (let s6 = 0; s6 < this.i; ++s6) {
|
|
const h6 = this.getElementByPos(s6);
|
|
if (h6 !== t6)
|
|
i6.push(h6);
|
|
}
|
|
const s5 = i6.length;
|
|
for (let t7 = 0; t7 < s5; ++t7)
|
|
this.setElementByPos(t7, i6[t7]);
|
|
return this.cut(s5 - 1);
|
|
}
|
|
eraseElementByIterator(t6) {
|
|
const i6 = t6.o;
|
|
this.eraseElementByPos(i6);
|
|
t6 = t6.next();
|
|
return t6;
|
|
}
|
|
find(t6) {
|
|
for (let i6 = 0; i6 < this.i; ++i6) {
|
|
if (this.getElementByPos(i6) === t6) {
|
|
return new DequeIterator(i6, this);
|
|
}
|
|
}
|
|
return this.end();
|
|
}
|
|
reverse() {
|
|
let t6 = 0;
|
|
let i6 = this.i - 1;
|
|
while (t6 < i6) {
|
|
const s5 = this.getElementByPos(t6);
|
|
this.setElementByPos(t6, this.getElementByPos(i6));
|
|
this.setElementByPos(i6, s5);
|
|
t6 += 1;
|
|
i6 -= 1;
|
|
}
|
|
}
|
|
unique() {
|
|
if (this.i <= 1) {
|
|
return this.i;
|
|
}
|
|
let t6 = 1;
|
|
let i6 = this.getElementByPos(0);
|
|
for (let s5 = 1; s5 < this.i; ++s5) {
|
|
const h6 = this.getElementByPos(s5);
|
|
if (h6 !== i6) {
|
|
i6 = h6;
|
|
this.setElementByPos(t6++, h6);
|
|
}
|
|
}
|
|
while (this.i > t6)
|
|
this.popBack();
|
|
return this.i;
|
|
}
|
|
sort(t6) {
|
|
const i6 = [];
|
|
for (let t7 = 0; t7 < this.i; ++t7) {
|
|
i6.push(this.getElementByPos(t7));
|
|
}
|
|
i6.sort(t6);
|
|
for (let t7 = 0; t7 < this.i; ++t7)
|
|
this.setElementByPos(t7, i6[t7]);
|
|
}
|
|
shrinkToFit() {
|
|
if (this.i === 0)
|
|
return;
|
|
const t6 = [];
|
|
this.forEach(function(i6) {
|
|
t6.push(i6);
|
|
});
|
|
this.P = Math.max(Math.ceil(this.i / this.F), 1);
|
|
this.i = this.j = this.R = this.D = this.N = 0;
|
|
this.A = [];
|
|
for (let t7 = 0; t7 < this.P; ++t7) {
|
|
this.A.push(new Array(this.F));
|
|
}
|
|
for (let i6 = 0; i6 < t6.length; ++i6)
|
|
this.pushBack(t6[i6]);
|
|
}
|
|
forEach(t6) {
|
|
for (let i6 = 0; i6 < this.i; ++i6) {
|
|
t6(this.getElementByPos(i6), i6, this);
|
|
}
|
|
}
|
|
[Symbol.iterator]() {
|
|
return function* () {
|
|
for (let t6 = 0; t6 < this.i; ++t6) {
|
|
yield this.getElementByPos(t6);
|
|
}
|
|
}.bind(this)();
|
|
}
|
|
};
|
|
var _default = Deque;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeNode.js
|
|
var require_TreeNode = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeNode.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.TreeNodeEnableIndex = exports5.TreeNode = void 0;
|
|
var TreeNode = class {
|
|
constructor(e7, t6) {
|
|
this.ee = 1;
|
|
this.u = void 0;
|
|
this.l = void 0;
|
|
this.U = void 0;
|
|
this.W = void 0;
|
|
this.tt = void 0;
|
|
this.u = e7;
|
|
this.l = t6;
|
|
}
|
|
L() {
|
|
let e7 = this;
|
|
if (e7.ee === 1 && e7.tt.tt === e7) {
|
|
e7 = e7.W;
|
|
} else if (e7.U) {
|
|
e7 = e7.U;
|
|
while (e7.W) {
|
|
e7 = e7.W;
|
|
}
|
|
} else {
|
|
let t6 = e7.tt;
|
|
while (t6.U === e7) {
|
|
e7 = t6;
|
|
t6 = e7.tt;
|
|
}
|
|
e7 = t6;
|
|
}
|
|
return e7;
|
|
}
|
|
B() {
|
|
let e7 = this;
|
|
if (e7.W) {
|
|
e7 = e7.W;
|
|
while (e7.U) {
|
|
e7 = e7.U;
|
|
}
|
|
return e7;
|
|
} else {
|
|
let t6 = e7.tt;
|
|
while (t6.W === e7) {
|
|
e7 = t6;
|
|
t6 = e7.tt;
|
|
}
|
|
if (e7.W !== t6) {
|
|
return t6;
|
|
} else
|
|
return e7;
|
|
}
|
|
}
|
|
te() {
|
|
const e7 = this.tt;
|
|
const t6 = this.W;
|
|
const s5 = t6.U;
|
|
if (e7.tt === this)
|
|
e7.tt = t6;
|
|
else if (e7.U === this)
|
|
e7.U = t6;
|
|
else
|
|
e7.W = t6;
|
|
t6.tt = e7;
|
|
t6.U = this;
|
|
this.tt = t6;
|
|
this.W = s5;
|
|
if (s5)
|
|
s5.tt = this;
|
|
return t6;
|
|
}
|
|
se() {
|
|
const e7 = this.tt;
|
|
const t6 = this.U;
|
|
const s5 = t6.W;
|
|
if (e7.tt === this)
|
|
e7.tt = t6;
|
|
else if (e7.U === this)
|
|
e7.U = t6;
|
|
else
|
|
e7.W = t6;
|
|
t6.tt = e7;
|
|
t6.W = this;
|
|
this.tt = t6;
|
|
this.U = s5;
|
|
if (s5)
|
|
s5.tt = this;
|
|
return t6;
|
|
}
|
|
};
|
|
exports5.TreeNode = TreeNode;
|
|
var TreeNodeEnableIndex = class extends TreeNode {
|
|
constructor() {
|
|
super(...arguments);
|
|
this.rt = 1;
|
|
}
|
|
te() {
|
|
const e7 = super.te();
|
|
this.ie();
|
|
e7.ie();
|
|
return e7;
|
|
}
|
|
se() {
|
|
const e7 = super.se();
|
|
this.ie();
|
|
e7.ie();
|
|
return e7;
|
|
}
|
|
ie() {
|
|
this.rt = 1;
|
|
if (this.U) {
|
|
this.rt += this.U.rt;
|
|
}
|
|
if (this.W) {
|
|
this.rt += this.W.rt;
|
|
}
|
|
}
|
|
};
|
|
exports5.TreeNodeEnableIndex = TreeNodeEnableIndex;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/index.js
|
|
var require_Base2 = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _TreeNode = require_TreeNode();
|
|
var _ContainerBase = require_ContainerBase();
|
|
var _throwError = require_throwError();
|
|
var TreeContainer = class extends _ContainerBase.Container {
|
|
constructor(e7 = function(e8, t7) {
|
|
if (e8 < t7)
|
|
return -1;
|
|
if (e8 > t7)
|
|
return 1;
|
|
return 0;
|
|
}, t6 = false) {
|
|
super();
|
|
this.Y = void 0;
|
|
this.v = e7;
|
|
if (t6) {
|
|
this.re = _TreeNode.TreeNodeEnableIndex;
|
|
this.M = function(e8, t7, i6) {
|
|
const s5 = this.ne(e8, t7, i6);
|
|
if (s5) {
|
|
let e9 = s5.tt;
|
|
while (e9 !== this.h) {
|
|
e9.rt += 1;
|
|
e9 = e9.tt;
|
|
}
|
|
const t8 = this.he(s5);
|
|
if (t8) {
|
|
const { parentNode: e10, grandParent: i7, curNode: s6 } = t8;
|
|
e10.ie();
|
|
i7.ie();
|
|
s6.ie();
|
|
}
|
|
}
|
|
return this.i;
|
|
};
|
|
this.V = function(e8) {
|
|
let t7 = this.fe(e8);
|
|
while (t7 !== this.h) {
|
|
t7.rt -= 1;
|
|
t7 = t7.tt;
|
|
}
|
|
};
|
|
} else {
|
|
this.re = _TreeNode.TreeNode;
|
|
this.M = function(e8, t7, i6) {
|
|
const s5 = this.ne(e8, t7, i6);
|
|
if (s5)
|
|
this.he(s5);
|
|
return this.i;
|
|
};
|
|
this.V = this.fe;
|
|
}
|
|
this.h = new this.re();
|
|
}
|
|
X(e7, t6) {
|
|
let i6 = this.h;
|
|
while (e7) {
|
|
const s5 = this.v(e7.u, t6);
|
|
if (s5 < 0) {
|
|
e7 = e7.W;
|
|
} else if (s5 > 0) {
|
|
i6 = e7;
|
|
e7 = e7.U;
|
|
} else
|
|
return e7;
|
|
}
|
|
return i6;
|
|
}
|
|
Z(e7, t6) {
|
|
let i6 = this.h;
|
|
while (e7) {
|
|
const s5 = this.v(e7.u, t6);
|
|
if (s5 <= 0) {
|
|
e7 = e7.W;
|
|
} else {
|
|
i6 = e7;
|
|
e7 = e7.U;
|
|
}
|
|
}
|
|
return i6;
|
|
}
|
|
$(e7, t6) {
|
|
let i6 = this.h;
|
|
while (e7) {
|
|
const s5 = this.v(e7.u, t6);
|
|
if (s5 < 0) {
|
|
i6 = e7;
|
|
e7 = e7.W;
|
|
} else if (s5 > 0) {
|
|
e7 = e7.U;
|
|
} else
|
|
return e7;
|
|
}
|
|
return i6;
|
|
}
|
|
rr(e7, t6) {
|
|
let i6 = this.h;
|
|
while (e7) {
|
|
const s5 = this.v(e7.u, t6);
|
|
if (s5 < 0) {
|
|
i6 = e7;
|
|
e7 = e7.W;
|
|
} else {
|
|
e7 = e7.U;
|
|
}
|
|
}
|
|
return i6;
|
|
}
|
|
ue(e7) {
|
|
while (true) {
|
|
const t6 = e7.tt;
|
|
if (t6 === this.h)
|
|
return;
|
|
if (e7.ee === 1) {
|
|
e7.ee = 0;
|
|
return;
|
|
}
|
|
if (e7 === t6.U) {
|
|
const i6 = t6.W;
|
|
if (i6.ee === 1) {
|
|
i6.ee = 0;
|
|
t6.ee = 1;
|
|
if (t6 === this.Y) {
|
|
this.Y = t6.te();
|
|
} else
|
|
t6.te();
|
|
} else {
|
|
if (i6.W && i6.W.ee === 1) {
|
|
i6.ee = t6.ee;
|
|
t6.ee = 0;
|
|
i6.W.ee = 0;
|
|
if (t6 === this.Y) {
|
|
this.Y = t6.te();
|
|
} else
|
|
t6.te();
|
|
return;
|
|
} else if (i6.U && i6.U.ee === 1) {
|
|
i6.ee = 1;
|
|
i6.U.ee = 0;
|
|
i6.se();
|
|
} else {
|
|
i6.ee = 1;
|
|
e7 = t6;
|
|
}
|
|
}
|
|
} else {
|
|
const i6 = t6.U;
|
|
if (i6.ee === 1) {
|
|
i6.ee = 0;
|
|
t6.ee = 1;
|
|
if (t6 === this.Y) {
|
|
this.Y = t6.se();
|
|
} else
|
|
t6.se();
|
|
} else {
|
|
if (i6.U && i6.U.ee === 1) {
|
|
i6.ee = t6.ee;
|
|
t6.ee = 0;
|
|
i6.U.ee = 0;
|
|
if (t6 === this.Y) {
|
|
this.Y = t6.se();
|
|
} else
|
|
t6.se();
|
|
return;
|
|
} else if (i6.W && i6.W.ee === 1) {
|
|
i6.ee = 1;
|
|
i6.W.ee = 0;
|
|
i6.te();
|
|
} else {
|
|
i6.ee = 1;
|
|
e7 = t6;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
fe(e7) {
|
|
if (this.i === 1) {
|
|
this.clear();
|
|
return this.h;
|
|
}
|
|
let t6 = e7;
|
|
while (t6.U || t6.W) {
|
|
if (t6.W) {
|
|
t6 = t6.W;
|
|
while (t6.U)
|
|
t6 = t6.U;
|
|
} else {
|
|
t6 = t6.U;
|
|
}
|
|
[e7.u, t6.u] = [t6.u, e7.u];
|
|
[e7.l, t6.l] = [t6.l, e7.l];
|
|
e7 = t6;
|
|
}
|
|
if (this.h.U === t6) {
|
|
this.h.U = t6.tt;
|
|
} else if (this.h.W === t6) {
|
|
this.h.W = t6.tt;
|
|
}
|
|
this.ue(t6);
|
|
const i6 = t6.tt;
|
|
if (t6 === i6.U) {
|
|
i6.U = void 0;
|
|
} else
|
|
i6.W = void 0;
|
|
this.i -= 1;
|
|
this.Y.ee = 0;
|
|
return i6;
|
|
}
|
|
oe(e7, t6) {
|
|
if (e7 === void 0)
|
|
return false;
|
|
const i6 = this.oe(e7.U, t6);
|
|
if (i6)
|
|
return true;
|
|
if (t6(e7))
|
|
return true;
|
|
return this.oe(e7.W, t6);
|
|
}
|
|
he(e7) {
|
|
while (true) {
|
|
const t6 = e7.tt;
|
|
if (t6.ee === 0)
|
|
return;
|
|
const i6 = t6.tt;
|
|
if (t6 === i6.U) {
|
|
const s5 = i6.W;
|
|
if (s5 && s5.ee === 1) {
|
|
s5.ee = t6.ee = 0;
|
|
if (i6 === this.Y)
|
|
return;
|
|
i6.ee = 1;
|
|
e7 = i6;
|
|
continue;
|
|
} else if (e7 === t6.W) {
|
|
e7.ee = 0;
|
|
if (e7.U)
|
|
e7.U.tt = t6;
|
|
if (e7.W)
|
|
e7.W.tt = i6;
|
|
t6.W = e7.U;
|
|
i6.U = e7.W;
|
|
e7.U = t6;
|
|
e7.W = i6;
|
|
if (i6 === this.Y) {
|
|
this.Y = e7;
|
|
this.h.tt = e7;
|
|
} else {
|
|
const t7 = i6.tt;
|
|
if (t7.U === i6) {
|
|
t7.U = e7;
|
|
} else
|
|
t7.W = e7;
|
|
}
|
|
e7.tt = i6.tt;
|
|
t6.tt = e7;
|
|
i6.tt = e7;
|
|
i6.ee = 1;
|
|
return {
|
|
parentNode: t6,
|
|
grandParent: i6,
|
|
curNode: e7
|
|
};
|
|
} else {
|
|
t6.ee = 0;
|
|
if (i6 === this.Y) {
|
|
this.Y = i6.se();
|
|
} else
|
|
i6.se();
|
|
i6.ee = 1;
|
|
}
|
|
} else {
|
|
const s5 = i6.U;
|
|
if (s5 && s5.ee === 1) {
|
|
s5.ee = t6.ee = 0;
|
|
if (i6 === this.Y)
|
|
return;
|
|
i6.ee = 1;
|
|
e7 = i6;
|
|
continue;
|
|
} else if (e7 === t6.U) {
|
|
e7.ee = 0;
|
|
if (e7.U)
|
|
e7.U.tt = i6;
|
|
if (e7.W)
|
|
e7.W.tt = t6;
|
|
i6.W = e7.U;
|
|
t6.U = e7.W;
|
|
e7.U = i6;
|
|
e7.W = t6;
|
|
if (i6 === this.Y) {
|
|
this.Y = e7;
|
|
this.h.tt = e7;
|
|
} else {
|
|
const t7 = i6.tt;
|
|
if (t7.U === i6) {
|
|
t7.U = e7;
|
|
} else
|
|
t7.W = e7;
|
|
}
|
|
e7.tt = i6.tt;
|
|
t6.tt = e7;
|
|
i6.tt = e7;
|
|
i6.ee = 1;
|
|
return {
|
|
parentNode: t6,
|
|
grandParent: i6,
|
|
curNode: e7
|
|
};
|
|
} else {
|
|
t6.ee = 0;
|
|
if (i6 === this.Y) {
|
|
this.Y = i6.te();
|
|
} else
|
|
i6.te();
|
|
i6.ee = 1;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
ne(e7, t6, i6) {
|
|
if (this.Y === void 0) {
|
|
this.i += 1;
|
|
this.Y = new this.re(e7, t6);
|
|
this.Y.ee = 0;
|
|
this.Y.tt = this.h;
|
|
this.h.tt = this.Y;
|
|
this.h.U = this.Y;
|
|
this.h.W = this.Y;
|
|
return;
|
|
}
|
|
let s5;
|
|
const r7 = this.h.U;
|
|
const n7 = this.v(r7.u, e7);
|
|
if (n7 === 0) {
|
|
r7.l = t6;
|
|
return;
|
|
} else if (n7 > 0) {
|
|
r7.U = new this.re(e7, t6);
|
|
r7.U.tt = r7;
|
|
s5 = r7.U;
|
|
this.h.U = s5;
|
|
} else {
|
|
const r8 = this.h.W;
|
|
const n8 = this.v(r8.u, e7);
|
|
if (n8 === 0) {
|
|
r8.l = t6;
|
|
return;
|
|
} else if (n8 < 0) {
|
|
r8.W = new this.re(e7, t6);
|
|
r8.W.tt = r8;
|
|
s5 = r8.W;
|
|
this.h.W = s5;
|
|
} else {
|
|
if (i6 !== void 0) {
|
|
const r9 = i6.o;
|
|
if (r9 !== this.h) {
|
|
const i7 = this.v(r9.u, e7);
|
|
if (i7 === 0) {
|
|
r9.l = t6;
|
|
return;
|
|
} else if (i7 > 0) {
|
|
const i8 = r9.L();
|
|
const n9 = this.v(i8.u, e7);
|
|
if (n9 === 0) {
|
|
i8.l = t6;
|
|
return;
|
|
} else if (n9 < 0) {
|
|
s5 = new this.re(e7, t6);
|
|
if (i8.W === void 0) {
|
|
i8.W = s5;
|
|
s5.tt = i8;
|
|
} else {
|
|
r9.U = s5;
|
|
s5.tt = r9;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (s5 === void 0) {
|
|
s5 = this.Y;
|
|
while (true) {
|
|
const i7 = this.v(s5.u, e7);
|
|
if (i7 > 0) {
|
|
if (s5.U === void 0) {
|
|
s5.U = new this.re(e7, t6);
|
|
s5.U.tt = s5;
|
|
s5 = s5.U;
|
|
break;
|
|
}
|
|
s5 = s5.U;
|
|
} else if (i7 < 0) {
|
|
if (s5.W === void 0) {
|
|
s5.W = new this.re(e7, t6);
|
|
s5.W.tt = s5;
|
|
s5 = s5.W;
|
|
break;
|
|
}
|
|
s5 = s5.W;
|
|
} else {
|
|
s5.l = t6;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.i += 1;
|
|
return s5;
|
|
}
|
|
I(e7, t6) {
|
|
while (e7) {
|
|
const i6 = this.v(e7.u, t6);
|
|
if (i6 < 0) {
|
|
e7 = e7.W;
|
|
} else if (i6 > 0) {
|
|
e7 = e7.U;
|
|
} else
|
|
return e7;
|
|
}
|
|
return e7 || this.h;
|
|
}
|
|
clear() {
|
|
this.i = 0;
|
|
this.Y = void 0;
|
|
this.h.tt = void 0;
|
|
this.h.U = this.h.W = void 0;
|
|
}
|
|
updateKeyByIterator(e7, t6) {
|
|
const i6 = e7.o;
|
|
if (i6 === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
if (this.i === 1) {
|
|
i6.u = t6;
|
|
return true;
|
|
}
|
|
if (i6 === this.h.U) {
|
|
if (this.v(i6.B().u, t6) > 0) {
|
|
i6.u = t6;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
if (i6 === this.h.W) {
|
|
if (this.v(i6.L().u, t6) < 0) {
|
|
i6.u = t6;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
const s5 = i6.L().u;
|
|
if (this.v(s5, t6) >= 0)
|
|
return false;
|
|
const r7 = i6.B().u;
|
|
if (this.v(r7, t6) <= 0)
|
|
return false;
|
|
i6.u = t6;
|
|
return true;
|
|
}
|
|
eraseElementByPos(e7) {
|
|
if (e7 < 0 || e7 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let t6 = 0;
|
|
const i6 = this;
|
|
this.oe(this.Y, function(s5) {
|
|
if (e7 === t6) {
|
|
i6.V(s5);
|
|
return true;
|
|
}
|
|
t6 += 1;
|
|
return false;
|
|
});
|
|
return this.i;
|
|
}
|
|
eraseElementByKey(e7) {
|
|
if (this.i === 0)
|
|
return false;
|
|
const t6 = this.I(this.Y, e7);
|
|
if (t6 === this.h)
|
|
return false;
|
|
this.V(t6);
|
|
return true;
|
|
}
|
|
eraseElementByIterator(e7) {
|
|
const t6 = e7.o;
|
|
if (t6 === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
const i6 = t6.W === void 0;
|
|
const s5 = e7.iteratorType === 0;
|
|
if (s5) {
|
|
if (i6)
|
|
e7.next();
|
|
} else {
|
|
if (!i6 || t6.U === void 0)
|
|
e7.next();
|
|
}
|
|
this.V(t6);
|
|
return e7;
|
|
}
|
|
forEach(e7) {
|
|
let t6 = 0;
|
|
for (const i6 of this)
|
|
e7(i6, t6++, this);
|
|
}
|
|
getElementByPos(e7) {
|
|
if (e7 < 0 || e7 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let t6;
|
|
let i6 = 0;
|
|
for (const s5 of this) {
|
|
if (i6 === e7) {
|
|
t6 = s5;
|
|
break;
|
|
}
|
|
i6 += 1;
|
|
}
|
|
return t6;
|
|
}
|
|
getHeight() {
|
|
if (this.i === 0)
|
|
return 0;
|
|
const traversal = function(e7) {
|
|
if (!e7)
|
|
return 0;
|
|
return Math.max(traversal(e7.U), traversal(e7.W)) + 1;
|
|
};
|
|
return traversal(this.Y);
|
|
}
|
|
};
|
|
var _default = TreeContainer;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeIterator.js
|
|
var require_TreeIterator = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeIterator.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var _throwError = require_throwError();
|
|
var TreeIterator = class extends _ContainerBase.ContainerIterator {
|
|
constructor(t6, r7, i6) {
|
|
super(i6);
|
|
this.o = t6;
|
|
this.h = r7;
|
|
if (this.iteratorType === 0) {
|
|
this.pre = function() {
|
|
if (this.o === this.h.U) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.L();
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.B();
|
|
return this;
|
|
};
|
|
} else {
|
|
this.pre = function() {
|
|
if (this.o === this.h.W) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.B();
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.L();
|
|
return this;
|
|
};
|
|
}
|
|
}
|
|
get index() {
|
|
let t6 = this.o;
|
|
const r7 = this.h.tt;
|
|
if (t6 === this.h) {
|
|
if (r7) {
|
|
return r7.rt - 1;
|
|
}
|
|
return 0;
|
|
}
|
|
let i6 = 0;
|
|
if (t6.U) {
|
|
i6 += t6.U.rt;
|
|
}
|
|
while (t6 !== r7) {
|
|
const r8 = t6.tt;
|
|
if (t6 === r8.W) {
|
|
i6 += 1;
|
|
if (r8.U) {
|
|
i6 += r8.U.rt;
|
|
}
|
|
}
|
|
t6 = r8;
|
|
}
|
|
return i6;
|
|
}
|
|
};
|
|
var _default = TreeIterator;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedSet.js
|
|
var require_OrderedSet = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedSet.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = _interopRequireDefault(require_Base2());
|
|
var _TreeIterator = _interopRequireDefault(require_TreeIterator());
|
|
var _throwError = require_throwError();
|
|
function _interopRequireDefault(e7) {
|
|
return e7 && e7.t ? e7 : {
|
|
default: e7
|
|
};
|
|
}
|
|
var OrderedSetIterator = class _OrderedSetIterator extends _TreeIterator.default {
|
|
constructor(e7, t6, r7, i6) {
|
|
super(e7, t6, i6);
|
|
this.container = r7;
|
|
}
|
|
get pointer() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
return this.o.u;
|
|
}
|
|
copy() {
|
|
return new _OrderedSetIterator(this.o, this.h, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var OrderedSet = class extends _Base.default {
|
|
constructor(e7 = [], t6, r7) {
|
|
super(t6, r7);
|
|
const i6 = this;
|
|
e7.forEach(function(e8) {
|
|
i6.insert(e8);
|
|
});
|
|
}
|
|
*K(e7) {
|
|
if (e7 === void 0)
|
|
return;
|
|
yield* this.K(e7.U);
|
|
yield e7.u;
|
|
yield* this.K(e7.W);
|
|
}
|
|
begin() {
|
|
return new OrderedSetIterator(this.h.U || this.h, this.h, this);
|
|
}
|
|
end() {
|
|
return new OrderedSetIterator(this.h, this.h, this);
|
|
}
|
|
rBegin() {
|
|
return new OrderedSetIterator(this.h.W || this.h, this.h, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new OrderedSetIterator(this.h, this.h, this, 1);
|
|
}
|
|
front() {
|
|
return this.h.U ? this.h.U.u : void 0;
|
|
}
|
|
back() {
|
|
return this.h.W ? this.h.W.u : void 0;
|
|
}
|
|
insert(e7, t6) {
|
|
return this.M(e7, void 0, t6);
|
|
}
|
|
find(e7) {
|
|
const t6 = this.I(this.Y, e7);
|
|
return new OrderedSetIterator(t6, this.h, this);
|
|
}
|
|
lowerBound(e7) {
|
|
const t6 = this.X(this.Y, e7);
|
|
return new OrderedSetIterator(t6, this.h, this);
|
|
}
|
|
upperBound(e7) {
|
|
const t6 = this.Z(this.Y, e7);
|
|
return new OrderedSetIterator(t6, this.h, this);
|
|
}
|
|
reverseLowerBound(e7) {
|
|
const t6 = this.$(this.Y, e7);
|
|
return new OrderedSetIterator(t6, this.h, this);
|
|
}
|
|
reverseUpperBound(e7) {
|
|
const t6 = this.rr(this.Y, e7);
|
|
return new OrderedSetIterator(t6, this.h, this);
|
|
}
|
|
union(e7) {
|
|
const t6 = this;
|
|
e7.forEach(function(e8) {
|
|
t6.insert(e8);
|
|
});
|
|
return this.i;
|
|
}
|
|
[Symbol.iterator]() {
|
|
return this.K(this.Y);
|
|
}
|
|
};
|
|
var _default = OrderedSet;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedMap.js
|
|
var require_OrderedMap = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedMap.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = _interopRequireDefault(require_Base2());
|
|
var _TreeIterator = _interopRequireDefault(require_TreeIterator());
|
|
var _throwError = require_throwError();
|
|
function _interopRequireDefault(r7) {
|
|
return r7 && r7.t ? r7 : {
|
|
default: r7
|
|
};
|
|
}
|
|
var OrderedMapIterator = class _OrderedMapIterator extends _TreeIterator.default {
|
|
constructor(r7, t6, e7, s5) {
|
|
super(r7, t6, s5);
|
|
this.container = e7;
|
|
}
|
|
get pointer() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
const r7 = this;
|
|
return new Proxy([], {
|
|
get(t6, e7) {
|
|
if (e7 === "0")
|
|
return r7.o.u;
|
|
else if (e7 === "1")
|
|
return r7.o.l;
|
|
},
|
|
set(t6, e7, s5) {
|
|
if (e7 !== "1") {
|
|
throw new TypeError("props must be 1");
|
|
}
|
|
r7.o.l = s5;
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
copy() {
|
|
return new _OrderedMapIterator(this.o, this.h, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var OrderedMap = class extends _Base.default {
|
|
constructor(r7 = [], t6, e7) {
|
|
super(t6, e7);
|
|
const s5 = this;
|
|
r7.forEach(function(r8) {
|
|
s5.setElement(r8[0], r8[1]);
|
|
});
|
|
}
|
|
*K(r7) {
|
|
if (r7 === void 0)
|
|
return;
|
|
yield* this.K(r7.U);
|
|
yield [r7.u, r7.l];
|
|
yield* this.K(r7.W);
|
|
}
|
|
begin() {
|
|
return new OrderedMapIterator(this.h.U || this.h, this.h, this);
|
|
}
|
|
end() {
|
|
return new OrderedMapIterator(this.h, this.h, this);
|
|
}
|
|
rBegin() {
|
|
return new OrderedMapIterator(this.h.W || this.h, this.h, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new OrderedMapIterator(this.h, this.h, this, 1);
|
|
}
|
|
front() {
|
|
if (this.i === 0)
|
|
return;
|
|
const r7 = this.h.U;
|
|
return [r7.u, r7.l];
|
|
}
|
|
back() {
|
|
if (this.i === 0)
|
|
return;
|
|
const r7 = this.h.W;
|
|
return [r7.u, r7.l];
|
|
}
|
|
lowerBound(r7) {
|
|
const t6 = this.X(this.Y, r7);
|
|
return new OrderedMapIterator(t6, this.h, this);
|
|
}
|
|
upperBound(r7) {
|
|
const t6 = this.Z(this.Y, r7);
|
|
return new OrderedMapIterator(t6, this.h, this);
|
|
}
|
|
reverseLowerBound(r7) {
|
|
const t6 = this.$(this.Y, r7);
|
|
return new OrderedMapIterator(t6, this.h, this);
|
|
}
|
|
reverseUpperBound(r7) {
|
|
const t6 = this.rr(this.Y, r7);
|
|
return new OrderedMapIterator(t6, this.h, this);
|
|
}
|
|
setElement(r7, t6, e7) {
|
|
return this.M(r7, t6, e7);
|
|
}
|
|
find(r7) {
|
|
const t6 = this.I(this.Y, r7);
|
|
return new OrderedMapIterator(t6, this.h, this);
|
|
}
|
|
getElementByKey(r7) {
|
|
const t6 = this.I(this.Y, r7);
|
|
return t6.l;
|
|
}
|
|
union(r7) {
|
|
const t6 = this;
|
|
r7.forEach(function(r8) {
|
|
t6.setElement(r8[0], r8[1]);
|
|
});
|
|
return this.i;
|
|
}
|
|
[Symbol.iterator]() {
|
|
return this.K(this.Y);
|
|
}
|
|
};
|
|
var _default = OrderedMap;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/utils/checkObject.js
|
|
var require_checkObject = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/utils/checkObject.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = checkObject;
|
|
function checkObject(e7) {
|
|
const t6 = typeof e7;
|
|
return t6 === "object" && e7 !== null || t6 === "function";
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/HashContainer/Base/index.js
|
|
var require_Base3 = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/HashContainer/Base/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.HashContainerIterator = exports5.HashContainer = void 0;
|
|
var _ContainerBase = require_ContainerBase();
|
|
var _checkObject = _interopRequireDefault(require_checkObject());
|
|
var _throwError = require_throwError();
|
|
function _interopRequireDefault(t6) {
|
|
return t6 && t6.t ? t6 : {
|
|
default: t6
|
|
};
|
|
}
|
|
var HashContainerIterator = class extends _ContainerBase.ContainerIterator {
|
|
constructor(t6, e7, i6) {
|
|
super(i6);
|
|
this.o = t6;
|
|
this.h = e7;
|
|
if (this.iteratorType === 0) {
|
|
this.pre = function() {
|
|
if (this.o.L === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.L;
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.B;
|
|
return this;
|
|
};
|
|
} else {
|
|
this.pre = function() {
|
|
if (this.o.B === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.B;
|
|
return this;
|
|
};
|
|
this.next = function() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.o = this.o.L;
|
|
return this;
|
|
};
|
|
}
|
|
}
|
|
};
|
|
exports5.HashContainerIterator = HashContainerIterator;
|
|
var HashContainer = class extends _ContainerBase.Container {
|
|
constructor() {
|
|
super();
|
|
this.H = [];
|
|
this.g = {};
|
|
this.HASH_TAG = Symbol("@@HASH_TAG");
|
|
Object.setPrototypeOf(this.g, null);
|
|
this.h = {};
|
|
this.h.L = this.h.B = this.p = this._ = this.h;
|
|
}
|
|
V(t6) {
|
|
const { L: e7, B: i6 } = t6;
|
|
e7.B = i6;
|
|
i6.L = e7;
|
|
if (t6 === this.p) {
|
|
this.p = i6;
|
|
}
|
|
if (t6 === this._) {
|
|
this._ = e7;
|
|
}
|
|
this.i -= 1;
|
|
}
|
|
M(t6, e7, i6) {
|
|
if (i6 === void 0)
|
|
i6 = (0, _checkObject.default)(t6);
|
|
let s5;
|
|
if (i6) {
|
|
const i7 = t6[this.HASH_TAG];
|
|
if (i7 !== void 0) {
|
|
this.H[i7].l = e7;
|
|
return this.i;
|
|
}
|
|
Object.defineProperty(t6, this.HASH_TAG, {
|
|
value: this.H.length,
|
|
configurable: true
|
|
});
|
|
s5 = {
|
|
u: t6,
|
|
l: e7,
|
|
L: this._,
|
|
B: this.h
|
|
};
|
|
this.H.push(s5);
|
|
} else {
|
|
const i7 = this.g[t6];
|
|
if (i7) {
|
|
i7.l = e7;
|
|
return this.i;
|
|
}
|
|
s5 = {
|
|
u: t6,
|
|
l: e7,
|
|
L: this._,
|
|
B: this.h
|
|
};
|
|
this.g[t6] = s5;
|
|
}
|
|
if (this.i === 0) {
|
|
this.p = s5;
|
|
this.h.B = s5;
|
|
} else {
|
|
this._.B = s5;
|
|
}
|
|
this._ = s5;
|
|
this.h.L = s5;
|
|
return ++this.i;
|
|
}
|
|
I(t6, e7) {
|
|
if (e7 === void 0)
|
|
e7 = (0, _checkObject.default)(t6);
|
|
if (e7) {
|
|
const e8 = t6[this.HASH_TAG];
|
|
if (e8 === void 0)
|
|
return this.h;
|
|
return this.H[e8];
|
|
} else {
|
|
return this.g[t6] || this.h;
|
|
}
|
|
}
|
|
clear() {
|
|
const t6 = this.HASH_TAG;
|
|
this.H.forEach(function(e7) {
|
|
delete e7.u[t6];
|
|
});
|
|
this.H = [];
|
|
this.g = {};
|
|
Object.setPrototypeOf(this.g, null);
|
|
this.i = 0;
|
|
this.p = this._ = this.h.L = this.h.B = this.h;
|
|
}
|
|
eraseElementByKey(t6, e7) {
|
|
let i6;
|
|
if (e7 === void 0)
|
|
e7 = (0, _checkObject.default)(t6);
|
|
if (e7) {
|
|
const e8 = t6[this.HASH_TAG];
|
|
if (e8 === void 0)
|
|
return false;
|
|
delete t6[this.HASH_TAG];
|
|
i6 = this.H[e8];
|
|
delete this.H[e8];
|
|
} else {
|
|
i6 = this.g[t6];
|
|
if (i6 === void 0)
|
|
return false;
|
|
delete this.g[t6];
|
|
}
|
|
this.V(i6);
|
|
return true;
|
|
}
|
|
eraseElementByIterator(t6) {
|
|
const e7 = t6.o;
|
|
if (e7 === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
this.V(e7);
|
|
return t6.next();
|
|
}
|
|
eraseElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let e7 = this.p;
|
|
while (t6--) {
|
|
e7 = e7.B;
|
|
}
|
|
this.V(e7);
|
|
return this.i;
|
|
}
|
|
};
|
|
exports5.HashContainer = HashContainer;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/HashContainer/HashSet.js
|
|
var require_HashSet = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/HashContainer/HashSet.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = require_Base3();
|
|
var _throwError = require_throwError();
|
|
var HashSetIterator = class _HashSetIterator extends _Base.HashContainerIterator {
|
|
constructor(t6, e7, r7, s5) {
|
|
super(t6, e7, s5);
|
|
this.container = r7;
|
|
}
|
|
get pointer() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
return this.o.u;
|
|
}
|
|
copy() {
|
|
return new _HashSetIterator(this.o, this.h, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var HashSet = class extends _Base.HashContainer {
|
|
constructor(t6 = []) {
|
|
super();
|
|
const e7 = this;
|
|
t6.forEach(function(t7) {
|
|
e7.insert(t7);
|
|
});
|
|
}
|
|
begin() {
|
|
return new HashSetIterator(this.p, this.h, this);
|
|
}
|
|
end() {
|
|
return new HashSetIterator(this.h, this.h, this);
|
|
}
|
|
rBegin() {
|
|
return new HashSetIterator(this._, this.h, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new HashSetIterator(this.h, this.h, this, 1);
|
|
}
|
|
front() {
|
|
return this.p.u;
|
|
}
|
|
back() {
|
|
return this._.u;
|
|
}
|
|
insert(t6, e7) {
|
|
return this.M(t6, void 0, e7);
|
|
}
|
|
getElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let e7 = this.p;
|
|
while (t6--) {
|
|
e7 = e7.B;
|
|
}
|
|
return e7.u;
|
|
}
|
|
find(t6, e7) {
|
|
const r7 = this.I(t6, e7);
|
|
return new HashSetIterator(r7, this.h, this);
|
|
}
|
|
forEach(t6) {
|
|
let e7 = 0;
|
|
let r7 = this.p;
|
|
while (r7 !== this.h) {
|
|
t6(r7.u, e7++, this);
|
|
r7 = r7.B;
|
|
}
|
|
}
|
|
[Symbol.iterator]() {
|
|
return function* () {
|
|
let t6 = this.p;
|
|
while (t6 !== this.h) {
|
|
yield t6.u;
|
|
t6 = t6.B;
|
|
}
|
|
}.bind(this)();
|
|
}
|
|
};
|
|
var _default = HashSet;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/container/HashContainer/HashMap.js
|
|
var require_HashMap = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/container/HashContainer/HashMap.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
exports5.default = void 0;
|
|
var _Base = require_Base3();
|
|
var _checkObject = _interopRequireDefault(require_checkObject());
|
|
var _throwError = require_throwError();
|
|
function _interopRequireDefault(t6) {
|
|
return t6 && t6.t ? t6 : {
|
|
default: t6
|
|
};
|
|
}
|
|
var HashMapIterator = class _HashMapIterator extends _Base.HashContainerIterator {
|
|
constructor(t6, e7, r7, s5) {
|
|
super(t6, e7, s5);
|
|
this.container = r7;
|
|
}
|
|
get pointer() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
const t6 = this;
|
|
return new Proxy([], {
|
|
get(e7, r7) {
|
|
if (r7 === "0")
|
|
return t6.o.u;
|
|
else if (r7 === "1")
|
|
return t6.o.l;
|
|
},
|
|
set(e7, r7, s5) {
|
|
if (r7 !== "1") {
|
|
throw new TypeError("props must be 1");
|
|
}
|
|
t6.o.l = s5;
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
copy() {
|
|
return new _HashMapIterator(this.o, this.h, this.container, this.iteratorType);
|
|
}
|
|
};
|
|
var HashMap = class extends _Base.HashContainer {
|
|
constructor(t6 = []) {
|
|
super();
|
|
const e7 = this;
|
|
t6.forEach(function(t7) {
|
|
e7.setElement(t7[0], t7[1]);
|
|
});
|
|
}
|
|
begin() {
|
|
return new HashMapIterator(this.p, this.h, this);
|
|
}
|
|
end() {
|
|
return new HashMapIterator(this.h, this.h, this);
|
|
}
|
|
rBegin() {
|
|
return new HashMapIterator(this._, this.h, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new HashMapIterator(this.h, this.h, this, 1);
|
|
}
|
|
front() {
|
|
if (this.i === 0)
|
|
return;
|
|
return [this.p.u, this.p.l];
|
|
}
|
|
back() {
|
|
if (this.i === 0)
|
|
return;
|
|
return [this._.u, this._.l];
|
|
}
|
|
setElement(t6, e7, r7) {
|
|
return this.M(t6, e7, r7);
|
|
}
|
|
getElementByKey(t6, e7) {
|
|
if (e7 === void 0)
|
|
e7 = (0, _checkObject.default)(t6);
|
|
if (e7) {
|
|
const e8 = t6[this.HASH_TAG];
|
|
return e8 !== void 0 ? this.H[e8].l : void 0;
|
|
}
|
|
const r7 = this.g[t6];
|
|
return r7 ? r7.l : void 0;
|
|
}
|
|
getElementByPos(t6) {
|
|
if (t6 < 0 || t6 > this.i - 1) {
|
|
throw new RangeError();
|
|
}
|
|
let e7 = this.p;
|
|
while (t6--) {
|
|
e7 = e7.B;
|
|
}
|
|
return [e7.u, e7.l];
|
|
}
|
|
find(t6, e7) {
|
|
const r7 = this.I(t6, e7);
|
|
return new HashMapIterator(r7, this.h, this);
|
|
}
|
|
forEach(t6) {
|
|
let e7 = 0;
|
|
let r7 = this.p;
|
|
while (r7 !== this.h) {
|
|
t6([r7.u, r7.l], e7++, this);
|
|
r7 = r7.B;
|
|
}
|
|
}
|
|
[Symbol.iterator]() {
|
|
return function* () {
|
|
let t6 = this.p;
|
|
while (t6 !== this.h) {
|
|
yield [t6.u, t6.l];
|
|
t6 = t6.B;
|
|
}
|
|
}.bind(this)();
|
|
}
|
|
};
|
|
var _default = HashMap;
|
|
exports5.default = _default;
|
|
}
|
|
});
|
|
|
|
// node_modules/js-sdsl/dist/cjs/index.js
|
|
var require_cjs2 = __commonJS({
|
|
"node_modules/js-sdsl/dist/cjs/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "t", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports5, "Deque", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _Deque.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "HashMap", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _HashMap.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "HashSet", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _HashSet.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "LinkList", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _LinkList.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "OrderedMap", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _OrderedMap.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "OrderedSet", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _OrderedSet.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "PriorityQueue", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _PriorityQueue.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "Queue", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _Queue.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "Stack", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _Stack.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports5, "Vector", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return _Vector.default;
|
|
}
|
|
});
|
|
var _Stack = _interopRequireDefault(require_Stack());
|
|
var _Queue = _interopRequireDefault(require_Queue());
|
|
var _PriorityQueue = _interopRequireDefault(require_PriorityQueue());
|
|
var _Vector = _interopRequireDefault(require_Vector());
|
|
var _LinkList = _interopRequireDefault(require_LinkList());
|
|
var _Deque = _interopRequireDefault(require_Deque());
|
|
var _OrderedSet = _interopRequireDefault(require_OrderedSet());
|
|
var _OrderedMap = _interopRequireDefault(require_OrderedMap());
|
|
var _HashSet = _interopRequireDefault(require_HashSet());
|
|
var _HashMap = _interopRequireDefault(require_HashMap());
|
|
function _interopRequireDefault(e7) {
|
|
return e7 && e7.t ? e7 : {
|
|
default: e7
|
|
};
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/number-allocator/lib/number-allocator.js
|
|
var require_number_allocator = __commonJS({
|
|
"node_modules/number-allocator/lib/number-allocator.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var SortedSet = require_cjs2().OrderedSet;
|
|
var debugTrace = require_browser4()("number-allocator:trace");
|
|
var debugError = require_browser4()("number-allocator:error");
|
|
function Interval(low, high) {
|
|
this.low = low;
|
|
this.high = high;
|
|
}
|
|
Interval.prototype.equals = function(other) {
|
|
return this.low === other.low && this.high === other.high;
|
|
};
|
|
Interval.prototype.compare = function(other) {
|
|
if (this.low < other.low && this.high < other.low)
|
|
return -1;
|
|
if (other.low < this.low && other.high < this.low)
|
|
return 1;
|
|
return 0;
|
|
};
|
|
function NumberAllocator(min, max) {
|
|
if (!(this instanceof NumberAllocator)) {
|
|
return new NumberAllocator(min, max);
|
|
}
|
|
this.min = min;
|
|
this.max = max;
|
|
this.ss = new SortedSet(
|
|
[],
|
|
(lhs, rhs) => {
|
|
return lhs.compare(rhs);
|
|
}
|
|
);
|
|
debugTrace("Create");
|
|
this.clear();
|
|
}
|
|
NumberAllocator.prototype.firstVacant = function() {
|
|
if (this.ss.size() === 0)
|
|
return null;
|
|
return this.ss.front().low;
|
|
};
|
|
NumberAllocator.prototype.alloc = function() {
|
|
if (this.ss.size() === 0) {
|
|
debugTrace("alloc():empty");
|
|
return null;
|
|
}
|
|
const it = this.ss.begin();
|
|
const low = it.pointer.low;
|
|
const high = it.pointer.high;
|
|
const num = low;
|
|
if (num + 1 <= high) {
|
|
this.ss.updateKeyByIterator(it, new Interval(low + 1, high));
|
|
} else {
|
|
this.ss.eraseElementByPos(0);
|
|
}
|
|
debugTrace("alloc():" + num);
|
|
return num;
|
|
};
|
|
NumberAllocator.prototype.use = function(num) {
|
|
const key = new Interval(num, num);
|
|
const it = this.ss.lowerBound(key);
|
|
if (!it.equals(this.ss.end())) {
|
|
const low = it.pointer.low;
|
|
const high = it.pointer.high;
|
|
if (it.pointer.equals(key)) {
|
|
this.ss.eraseElementByIterator(it);
|
|
debugTrace("use():" + num);
|
|
return true;
|
|
}
|
|
if (low > num)
|
|
return false;
|
|
if (low === num) {
|
|
this.ss.updateKeyByIterator(it, new Interval(low + 1, high));
|
|
debugTrace("use():" + num);
|
|
return true;
|
|
}
|
|
if (high === num) {
|
|
this.ss.updateKeyByIterator(it, new Interval(low, high - 1));
|
|
debugTrace("use():" + num);
|
|
return true;
|
|
}
|
|
this.ss.updateKeyByIterator(it, new Interval(num + 1, high));
|
|
this.ss.insert(new Interval(low, num - 1));
|
|
debugTrace("use():" + num);
|
|
return true;
|
|
}
|
|
debugTrace("use():failed");
|
|
return false;
|
|
};
|
|
NumberAllocator.prototype.free = function(num) {
|
|
if (num < this.min || num > this.max) {
|
|
debugError("free():" + num + " is out of range");
|
|
return;
|
|
}
|
|
const key = new Interval(num, num);
|
|
const it = this.ss.upperBound(key);
|
|
if (it.equals(this.ss.end())) {
|
|
if (it.equals(this.ss.begin())) {
|
|
this.ss.insert(key);
|
|
return;
|
|
}
|
|
it.pre();
|
|
const low = it.pointer.high;
|
|
const high = it.pointer.high;
|
|
if (high + 1 === num) {
|
|
this.ss.updateKeyByIterator(it, new Interval(low, num));
|
|
} else {
|
|
this.ss.insert(key);
|
|
}
|
|
} else {
|
|
if (it.equals(this.ss.begin())) {
|
|
if (num + 1 === it.pointer.low) {
|
|
const high = it.pointer.high;
|
|
this.ss.updateKeyByIterator(it, new Interval(num, high));
|
|
} else {
|
|
this.ss.insert(key);
|
|
}
|
|
} else {
|
|
const rLow = it.pointer.low;
|
|
const rHigh = it.pointer.high;
|
|
it.pre();
|
|
const lLow = it.pointer.low;
|
|
const lHigh = it.pointer.high;
|
|
if (lHigh + 1 === num) {
|
|
if (num + 1 === rLow) {
|
|
this.ss.eraseElementByIterator(it);
|
|
this.ss.updateKeyByIterator(it, new Interval(lLow, rHigh));
|
|
} else {
|
|
this.ss.updateKeyByIterator(it, new Interval(lLow, num));
|
|
}
|
|
} else {
|
|
if (num + 1 === rLow) {
|
|
this.ss.eraseElementByIterator(it.next());
|
|
this.ss.insert(new Interval(num, rHigh));
|
|
} else {
|
|
this.ss.insert(key);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
debugTrace("free():" + num);
|
|
};
|
|
NumberAllocator.prototype.clear = function() {
|
|
debugTrace("clear()");
|
|
this.ss.clear();
|
|
this.ss.insert(new Interval(this.min, this.max));
|
|
};
|
|
NumberAllocator.prototype.intervalCount = function() {
|
|
return this.ss.size();
|
|
};
|
|
NumberAllocator.prototype.dump = function() {
|
|
console.log("length:" + this.ss.size());
|
|
for (const element of this.ss) {
|
|
console.log(element);
|
|
}
|
|
};
|
|
module.exports = NumberAllocator;
|
|
}
|
|
});
|
|
|
|
// node_modules/number-allocator/index.js
|
|
var require_number_allocator2 = __commonJS({
|
|
"node_modules/number-allocator/index.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var NumberAllocator = require_number_allocator();
|
|
module.exports.NumberAllocator = NumberAllocator;
|
|
}
|
|
});
|
|
|
|
// build/lib/topic-alias-send.js
|
|
var require_topic_alias_send = __commonJS({
|
|
"build/lib/topic-alias-send.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var lru_cache_1 = require_cjs();
|
|
var number_allocator_1 = require_number_allocator2();
|
|
var TopicAliasSend = class {
|
|
constructor(max) {
|
|
if (max > 0) {
|
|
this.aliasToTopic = new lru_cache_1.LRUCache({ max });
|
|
this.topicToAlias = {};
|
|
this.numberAllocator = new number_allocator_1.NumberAllocator(1, max);
|
|
this.max = max;
|
|
this.length = 0;
|
|
}
|
|
}
|
|
put(topic, alias) {
|
|
if (alias === 0 || alias > this.max) {
|
|
return false;
|
|
}
|
|
const entry = this.aliasToTopic.get(alias);
|
|
if (entry) {
|
|
delete this.topicToAlias[entry];
|
|
}
|
|
this.aliasToTopic.set(alias, topic);
|
|
this.topicToAlias[topic] = alias;
|
|
this.numberAllocator.use(alias);
|
|
this.length = this.aliasToTopic.size;
|
|
return true;
|
|
}
|
|
getTopicByAlias(alias) {
|
|
return this.aliasToTopic.get(alias);
|
|
}
|
|
getAliasByTopic(topic) {
|
|
const alias = this.topicToAlias[topic];
|
|
if (typeof alias !== "undefined") {
|
|
this.aliasToTopic.get(alias);
|
|
}
|
|
return alias;
|
|
}
|
|
clear() {
|
|
this.aliasToTopic.clear();
|
|
this.topicToAlias = {};
|
|
this.numberAllocator.clear();
|
|
this.length = 0;
|
|
}
|
|
getLruAlias() {
|
|
const alias = this.numberAllocator.firstVacant();
|
|
if (alias)
|
|
return alias;
|
|
return [...this.aliasToTopic.keys()][this.aliasToTopic.size - 1];
|
|
}
|
|
};
|
|
exports5.default = TopicAliasSend;
|
|
}
|
|
});
|
|
|
|
// build/lib/handlers/connack.js
|
|
var require_connack = __commonJS({
|
|
"build/lib/handlers/connack.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var ack_1 = require_ack();
|
|
var topic_alias_send_1 = __importDefault(require_topic_alias_send());
|
|
var shared_1 = require_shared();
|
|
var handleConnack = (client, packet) => {
|
|
client.log("_handleConnack");
|
|
const { options } = client;
|
|
const version2 = options.protocolVersion;
|
|
const rc = version2 === 5 ? packet.reasonCode : packet.returnCode;
|
|
clearTimeout(client["connackTimer"]);
|
|
delete client["topicAliasSend"];
|
|
if (packet.properties) {
|
|
if (packet.properties.topicAliasMaximum) {
|
|
if (packet.properties.topicAliasMaximum > 65535) {
|
|
client.emit("error", new Error("topicAliasMaximum from broker is out of range"));
|
|
return;
|
|
}
|
|
if (packet.properties.topicAliasMaximum > 0) {
|
|
client["topicAliasSend"] = new topic_alias_send_1.default(packet.properties.topicAliasMaximum);
|
|
}
|
|
}
|
|
if (packet.properties.serverKeepAlive && options.keepalive) {
|
|
options.keepalive = packet.properties.serverKeepAlive;
|
|
client["_shiftPingInterval"]();
|
|
}
|
|
if (packet.properties.maximumPacketSize) {
|
|
if (!options.properties) {
|
|
options.properties = {};
|
|
}
|
|
options.properties.maximumPacketSize = packet.properties.maximumPacketSize;
|
|
}
|
|
}
|
|
if (rc === 0) {
|
|
client.reconnecting = false;
|
|
client["_onConnect"](packet);
|
|
} else if (rc > 0) {
|
|
const err = new shared_1.ErrorWithReasonCode(`Connection refused: ${ack_1.ReasonCodes[rc]}`, rc);
|
|
client.emit("error", err);
|
|
}
|
|
};
|
|
exports5.default = handleConnack;
|
|
}
|
|
});
|
|
|
|
// build/lib/handlers/pubrel.js
|
|
var require_pubrel = __commonJS({
|
|
"build/lib/handlers/pubrel.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var handlePubrel = (client, packet, done) => {
|
|
client.log("handling pubrel packet");
|
|
const callback = typeof done !== "undefined" ? done : client.noop;
|
|
const { messageId } = packet;
|
|
const comp = { cmd: "pubcomp", messageId };
|
|
client.incomingStore.get(packet, (err, pub) => {
|
|
if (!err) {
|
|
client.emit("message", pub.topic, pub.payload, pub);
|
|
client.handleMessage(pub, (err2) => {
|
|
if (err2) {
|
|
return callback(err2);
|
|
}
|
|
client.incomingStore.del(pub, client.noop);
|
|
client["_sendPacket"](comp, callback);
|
|
});
|
|
} else {
|
|
client["_sendPacket"](comp, callback);
|
|
}
|
|
});
|
|
};
|
|
exports5.default = handlePubrel;
|
|
}
|
|
});
|
|
|
|
// build/lib/handlers/index.js
|
|
var require_handlers = __commonJS({
|
|
"build/lib/handlers/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var publish_1 = __importDefault(require_publish());
|
|
var auth_1 = __importDefault(require_auth());
|
|
var connack_1 = __importDefault(require_connack());
|
|
var ack_1 = __importDefault(require_ack());
|
|
var pubrel_1 = __importDefault(require_pubrel());
|
|
var handle = (client, packet, done) => {
|
|
const { options } = client;
|
|
if (options.protocolVersion === 5 && options.properties && options.properties.maximumPacketSize && options.properties.maximumPacketSize < packet.length) {
|
|
client.emit("error", new Error(`exceeding packets size ${packet.cmd}`));
|
|
client.end({
|
|
reasonCode: 149,
|
|
properties: { reasonString: "Maximum packet size was exceeded" }
|
|
});
|
|
return client;
|
|
}
|
|
client.log("_handlePacket :: emitting packetreceive");
|
|
client.emit("packetreceive", packet);
|
|
switch (packet.cmd) {
|
|
case "publish":
|
|
(0, publish_1.default)(client, packet, done);
|
|
break;
|
|
case "puback":
|
|
case "pubrec":
|
|
case "pubcomp":
|
|
case "suback":
|
|
case "unsuback":
|
|
(0, ack_1.default)(client, packet);
|
|
done();
|
|
break;
|
|
case "pubrel":
|
|
(0, pubrel_1.default)(client, packet, done);
|
|
break;
|
|
case "connack":
|
|
(0, connack_1.default)(client, packet);
|
|
done();
|
|
break;
|
|
case "auth":
|
|
(0, auth_1.default)(client, packet);
|
|
done();
|
|
break;
|
|
case "pingresp":
|
|
client.pingResp = true;
|
|
done();
|
|
break;
|
|
case "disconnect":
|
|
client.emit("disconnect", packet);
|
|
done();
|
|
break;
|
|
default:
|
|
client.log("_handlePacket :: unknown command");
|
|
done();
|
|
break;
|
|
}
|
|
};
|
|
exports5.default = handle;
|
|
}
|
|
});
|
|
|
|
// build/lib/TypedEmitter.js
|
|
var require_TypedEmitter = __commonJS({
|
|
"build/lib/TypedEmitter.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.TypedEventEmitter = void 0;
|
|
var events_1 = __importDefault((init_events(), __toCommonJS(events_exports)));
|
|
var shared_1 = require_shared();
|
|
var TypedEventEmitter = class {
|
|
};
|
|
exports5.TypedEventEmitter = TypedEventEmitter;
|
|
(0, shared_1.applyMixin)(TypedEventEmitter, events_1.default);
|
|
}
|
|
});
|
|
|
|
// build/lib/is-browser.js
|
|
var require_is_browser = __commonJS({
|
|
"build/lib/is-browser.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.isWebWorker = void 0;
|
|
var isStandardBrowserEnv = () => typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
var isWebWorkerEnv = () => {
|
|
var _a, _b;
|
|
return Boolean(typeof self === "object" && ((_b = (_a = self === null || self === void 0 ? void 0 : self.constructor) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.includes("WorkerGlobalScope")));
|
|
};
|
|
var isReactNativeEnv = () => typeof navigator !== "undefined" && navigator.product === "ReactNative";
|
|
var isBrowser = isStandardBrowserEnv() || isWebWorkerEnv() || isReactNativeEnv();
|
|
exports5.isWebWorker = isWebWorkerEnv();
|
|
exports5.default = isBrowser;
|
|
}
|
|
});
|
|
|
|
// node_modules/fast-unique-numbers/build/es5/bundle.js
|
|
var require_bundle = __commonJS({
|
|
"node_modules/fast-unique-numbers/build/es5/bundle.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
(function(global2, factory) {
|
|
typeof exports5 === "object" && typeof module !== "undefined" ? factory(exports5) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.fastUniqueNumbers = {}));
|
|
})(exports5, function(exports6) {
|
|
"use strict";
|
|
var createAddUniqueNumber = function createAddUniqueNumber2(generateUniqueNumber2) {
|
|
return function(set) {
|
|
var number = generateUniqueNumber2(set);
|
|
set.add(number);
|
|
return number;
|
|
};
|
|
};
|
|
var createCache = function createCache2(lastNumberWeakMap) {
|
|
return function(collection, nextNumber) {
|
|
lastNumberWeakMap.set(collection, nextNumber);
|
|
return nextNumber;
|
|
};
|
|
};
|
|
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER === void 0 ? 9007199254740991 : Number.MAX_SAFE_INTEGER;
|
|
var TWO_TO_THE_POWER_OF_TWENTY_NINE = 536870912;
|
|
var TWO_TO_THE_POWER_OF_THIRTY = TWO_TO_THE_POWER_OF_TWENTY_NINE * 2;
|
|
var createGenerateUniqueNumber = function createGenerateUniqueNumber2(cache2, lastNumberWeakMap) {
|
|
return function(collection) {
|
|
var lastNumber = lastNumberWeakMap.get(collection);
|
|
var nextNumber = lastNumber === void 0 ? collection.size : lastNumber < TWO_TO_THE_POWER_OF_THIRTY ? lastNumber + 1 : 0;
|
|
if (!collection.has(nextNumber)) {
|
|
return cache2(collection, nextNumber);
|
|
}
|
|
if (collection.size < TWO_TO_THE_POWER_OF_TWENTY_NINE) {
|
|
while (collection.has(nextNumber)) {
|
|
nextNumber = Math.floor(Math.random() * TWO_TO_THE_POWER_OF_THIRTY);
|
|
}
|
|
return cache2(collection, nextNumber);
|
|
}
|
|
if (collection.size > MAX_SAFE_INTEGER) {
|
|
throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");
|
|
}
|
|
while (collection.has(nextNumber)) {
|
|
nextNumber = Math.floor(Math.random() * MAX_SAFE_INTEGER);
|
|
}
|
|
return cache2(collection, nextNumber);
|
|
};
|
|
};
|
|
var LAST_NUMBER_WEAK_MAP = /* @__PURE__ */ new WeakMap();
|
|
var cache = createCache(LAST_NUMBER_WEAK_MAP);
|
|
var generateUniqueNumber = createGenerateUniqueNumber(cache, LAST_NUMBER_WEAK_MAP);
|
|
var addUniqueNumber = createAddUniqueNumber(generateUniqueNumber);
|
|
exports6.addUniqueNumber = addUniqueNumber;
|
|
exports6.generateUniqueNumber = generateUniqueNumber;
|
|
});
|
|
}
|
|
});
|
|
|
|
// node_modules/worker-timers-broker/build/es5/bundle.js
|
|
var require_bundle2 = __commonJS({
|
|
"node_modules/worker-timers-broker/build/es5/bundle.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
(function(global2, factory) {
|
|
typeof exports5 === "object" && typeof module !== "undefined" ? factory(exports5, require_bundle()) : typeof define === "function" && define.amd ? define(["exports", "fast-unique-numbers"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.workerTimersBroker = {}, global2.fastUniqueNumbers));
|
|
})(exports5, function(exports6, fastUniqueNumbers) {
|
|
"use strict";
|
|
var isCallNotification = function isCallNotification2(message) {
|
|
return message.method !== void 0 && message.method === "call";
|
|
};
|
|
var isClearResponse = function isClearResponse2(message) {
|
|
return message.error === null && typeof message.id === "number";
|
|
};
|
|
var load = function load2(url) {
|
|
var scheduledIntervalFunctions = /* @__PURE__ */ new Map([[0, function() {
|
|
}]]);
|
|
var scheduledTimeoutFunctions = /* @__PURE__ */ new Map([[0, function() {
|
|
}]]);
|
|
var unrespondedRequests = /* @__PURE__ */ new Map();
|
|
var worker = new Worker(url);
|
|
worker.addEventListener("message", function(_ref) {
|
|
var data = _ref.data;
|
|
if (isCallNotification(data)) {
|
|
var _data$params = data.params, timerId = _data$params.timerId, timerType = _data$params.timerType;
|
|
if (timerType === "interval") {
|
|
var idOrFunc = scheduledIntervalFunctions.get(timerId);
|
|
if (typeof idOrFunc === "number") {
|
|
var timerIdAndTimerType = unrespondedRequests.get(idOrFunc);
|
|
if (timerIdAndTimerType === void 0 || timerIdAndTimerType.timerId !== timerId || timerIdAndTimerType.timerType !== timerType) {
|
|
throw new Error("The timer is in an undefined state.");
|
|
}
|
|
} else if (typeof idOrFunc !== "undefined") {
|
|
idOrFunc();
|
|
} else {
|
|
throw new Error("The timer is in an undefined state.");
|
|
}
|
|
} else if (timerType === "timeout") {
|
|
var _idOrFunc = scheduledTimeoutFunctions.get(timerId);
|
|
if (typeof _idOrFunc === "number") {
|
|
var _timerIdAndTimerType = unrespondedRequests.get(_idOrFunc);
|
|
if (_timerIdAndTimerType === void 0 || _timerIdAndTimerType.timerId !== timerId || _timerIdAndTimerType.timerType !== timerType) {
|
|
throw new Error("The timer is in an undefined state.");
|
|
}
|
|
} else if (typeof _idOrFunc !== "undefined") {
|
|
_idOrFunc();
|
|
scheduledTimeoutFunctions["delete"](timerId);
|
|
} else {
|
|
throw new Error("The timer is in an undefined state.");
|
|
}
|
|
}
|
|
} else if (isClearResponse(data)) {
|
|
var id = data.id;
|
|
var _timerIdAndTimerType2 = unrespondedRequests.get(id);
|
|
if (_timerIdAndTimerType2 === void 0) {
|
|
throw new Error("The timer is in an undefined state.");
|
|
}
|
|
var _timerId = _timerIdAndTimerType2.timerId, _timerType = _timerIdAndTimerType2.timerType;
|
|
unrespondedRequests["delete"](id);
|
|
if (_timerType === "interval") {
|
|
scheduledIntervalFunctions["delete"](_timerId);
|
|
} else {
|
|
scheduledTimeoutFunctions["delete"](_timerId);
|
|
}
|
|
} else {
|
|
var message = data.error.message;
|
|
throw new Error(message);
|
|
}
|
|
});
|
|
var clearInterval2 = function clearInterval3(timerId) {
|
|
var id = fastUniqueNumbers.generateUniqueNumber(unrespondedRequests);
|
|
unrespondedRequests.set(id, {
|
|
timerId,
|
|
timerType: "interval"
|
|
});
|
|
scheduledIntervalFunctions.set(timerId, id);
|
|
worker.postMessage({
|
|
id,
|
|
method: "clear",
|
|
params: {
|
|
timerId,
|
|
timerType: "interval"
|
|
}
|
|
});
|
|
};
|
|
var clearTimeout2 = function clearTimeout3(timerId) {
|
|
var id = fastUniqueNumbers.generateUniqueNumber(unrespondedRequests);
|
|
unrespondedRequests.set(id, {
|
|
timerId,
|
|
timerType: "timeout"
|
|
});
|
|
scheduledTimeoutFunctions.set(timerId, id);
|
|
worker.postMessage({
|
|
id,
|
|
method: "clear",
|
|
params: {
|
|
timerId,
|
|
timerType: "timeout"
|
|
}
|
|
});
|
|
};
|
|
var setInterval2 = function setInterval3(func) {
|
|
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
var timerId = fastUniqueNumbers.generateUniqueNumber(scheduledIntervalFunctions);
|
|
scheduledIntervalFunctions.set(timerId, function() {
|
|
func();
|
|
if (typeof scheduledIntervalFunctions.get(timerId) === "function") {
|
|
worker.postMessage({
|
|
id: null,
|
|
method: "set",
|
|
params: {
|
|
delay,
|
|
now: performance.now(),
|
|
timerId,
|
|
timerType: "interval"
|
|
}
|
|
});
|
|
}
|
|
});
|
|
worker.postMessage({
|
|
id: null,
|
|
method: "set",
|
|
params: {
|
|
delay,
|
|
now: performance.now(),
|
|
timerId,
|
|
timerType: "interval"
|
|
}
|
|
});
|
|
return timerId;
|
|
};
|
|
var setTimeout2 = function setTimeout3(func) {
|
|
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
var timerId = fastUniqueNumbers.generateUniqueNumber(scheduledTimeoutFunctions);
|
|
scheduledTimeoutFunctions.set(timerId, func);
|
|
worker.postMessage({
|
|
id: null,
|
|
method: "set",
|
|
params: {
|
|
delay,
|
|
now: performance.now(),
|
|
timerId,
|
|
timerType: "timeout"
|
|
}
|
|
});
|
|
return timerId;
|
|
};
|
|
return {
|
|
clearInterval: clearInterval2,
|
|
clearTimeout: clearTimeout2,
|
|
setInterval: setInterval2,
|
|
setTimeout: setTimeout2
|
|
};
|
|
};
|
|
exports6.load = load;
|
|
});
|
|
}
|
|
});
|
|
|
|
// node_modules/worker-timers/build/es5/bundle.js
|
|
var require_bundle3 = __commonJS({
|
|
"node_modules/worker-timers/build/es5/bundle.js"(exports5, module) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
(function(global2, factory) {
|
|
typeof exports5 === "object" && typeof module !== "undefined" ? factory(exports5, require_bundle2()) : typeof define === "function" && define.amd ? define(["exports", "worker-timers-broker"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.workerTimers = {}, global2.workerTimersBroker));
|
|
})(exports5, function(exports6, workerTimersBroker) {
|
|
"use strict";
|
|
var createLoadOrReturnBroker = function createLoadOrReturnBroker2(loadBroker, worker2) {
|
|
var broker = null;
|
|
return function() {
|
|
if (broker !== null) {
|
|
return broker;
|
|
}
|
|
var blob = new Blob([worker2], {
|
|
type: "application/javascript; charset=utf-8"
|
|
});
|
|
var url = URL.createObjectURL(blob);
|
|
broker = loadBroker(url);
|
|
setTimeout(function() {
|
|
return URL.revokeObjectURL(url);
|
|
});
|
|
return broker;
|
|
};
|
|
};
|
|
var worker = `(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`;
|
|
var loadOrReturnBroker = createLoadOrReturnBroker(workerTimersBroker.load, worker);
|
|
var clearInterval2 = function clearInterval3(timerId) {
|
|
return loadOrReturnBroker().clearInterval(timerId);
|
|
};
|
|
var clearTimeout2 = function clearTimeout3(timerId) {
|
|
return loadOrReturnBroker().clearTimeout(timerId);
|
|
};
|
|
var setInterval2 = function setInterval3() {
|
|
var _loadOrReturnBroker;
|
|
return (_loadOrReturnBroker = loadOrReturnBroker()).setInterval.apply(_loadOrReturnBroker, arguments);
|
|
};
|
|
var setTimeout$1 = function setTimeout2() {
|
|
var _loadOrReturnBroker2;
|
|
return (_loadOrReturnBroker2 = loadOrReturnBroker()).setTimeout.apply(_loadOrReturnBroker2, arguments);
|
|
};
|
|
exports6.clearInterval = clearInterval2;
|
|
exports6.clearTimeout = clearTimeout2;
|
|
exports6.setInterval = setInterval2;
|
|
exports6.setTimeout = setTimeout$1;
|
|
});
|
|
}
|
|
});
|
|
|
|
// build/lib/timers.js
|
|
var require_timers = __commonJS({
|
|
"build/lib/timers.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __createBinding = exports5 && exports5.__createBinding || (Object.create ? function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
var desc = Object.getOwnPropertyDescriptor(m4, k2);
|
|
if (!desc || ("get" in desc ? !m4.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() {
|
|
return m4[k2];
|
|
} };
|
|
}
|
|
Object.defineProperty(o7, k22, desc);
|
|
} : function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
o7[k22] = m4[k2];
|
|
});
|
|
var __setModuleDefault = exports5 && exports5.__setModuleDefault || (Object.create ? function(o7, v4) {
|
|
Object.defineProperty(o7, "default", { enumerable: true, value: v4 });
|
|
} : function(o7, v4) {
|
|
o7["default"] = v4;
|
|
});
|
|
var __importStar = exports5 && exports5.__importStar || function(mod) {
|
|
if (mod && mod.__esModule)
|
|
return mod;
|
|
var result = {};
|
|
if (mod != null) {
|
|
for (var k2 in mod)
|
|
if (k2 !== "default" && Object.prototype.hasOwnProperty.call(mod, k2))
|
|
__createBinding(result, mod, k2);
|
|
}
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var is_browser_1 = __importStar(require_is_browser());
|
|
var worker_timers_1 = require_bundle3();
|
|
var timers = {
|
|
set: is_browser_1.default && !is_browser_1.isWebWorker ? worker_timers_1.setTimeout : (func, time) => setTimeout(func, time),
|
|
clear: is_browser_1.default && !is_browser_1.isWebWorker ? worker_timers_1.clearTimeout : (timer) => clearTimeout(timer)
|
|
};
|
|
exports5.default = timers;
|
|
}
|
|
});
|
|
|
|
// build/lib/PingTimer.js
|
|
var require_PingTimer = __commonJS({
|
|
"build/lib/PingTimer.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var timers_1 = __importDefault(require_timers());
|
|
var PingTimer = class {
|
|
constructor(keepalive, checkPing) {
|
|
this.keepalive = keepalive * 1e3;
|
|
this.checkPing = checkPing;
|
|
this.reschedule();
|
|
}
|
|
clear() {
|
|
if (this.timer) {
|
|
timers_1.default.clear(this.timer);
|
|
this.timer = null;
|
|
}
|
|
}
|
|
reschedule() {
|
|
this.clear();
|
|
this.timer = timers_1.default.set(() => {
|
|
this.checkPing();
|
|
if (this.timer) {
|
|
this.reschedule();
|
|
}
|
|
}, this.keepalive);
|
|
}
|
|
};
|
|
exports5.default = PingTimer;
|
|
}
|
|
});
|
|
|
|
// build/lib/client.js
|
|
var require_client = __commonJS({
|
|
"build/lib/client.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __createBinding = exports5 && exports5.__createBinding || (Object.create ? function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
var desc = Object.getOwnPropertyDescriptor(m4, k2);
|
|
if (!desc || ("get" in desc ? !m4.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() {
|
|
return m4[k2];
|
|
} };
|
|
}
|
|
Object.defineProperty(o7, k22, desc);
|
|
} : function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
o7[k22] = m4[k2];
|
|
});
|
|
var __setModuleDefault = exports5 && exports5.__setModuleDefault || (Object.create ? function(o7, v4) {
|
|
Object.defineProperty(o7, "default", { enumerable: true, value: v4 });
|
|
} : function(o7, v4) {
|
|
o7["default"] = v4;
|
|
});
|
|
var __importStar = exports5 && exports5.__importStar || function(mod) {
|
|
if (mod && mod.__esModule)
|
|
return mod;
|
|
var result = {};
|
|
if (mod != null) {
|
|
for (var k2 in mod)
|
|
if (k2 !== "default" && Object.prototype.hasOwnProperty.call(mod, k2))
|
|
__createBinding(result, mod, k2);
|
|
}
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var topic_alias_recv_1 = __importDefault(require_topic_alias_recv());
|
|
var mqtt_packet_1 = __importDefault(require_mqtt());
|
|
var default_message_id_provider_1 = __importDefault(require_default_message_id_provider());
|
|
var readable_stream_1 = require_browser3();
|
|
var default_1 = __importDefault(require_default());
|
|
var validations = __importStar(require_validations());
|
|
var debug_1 = __importDefault(require_browser4());
|
|
var store_1 = __importDefault(require_store());
|
|
var handlers_1 = __importDefault(require_handlers());
|
|
var shared_1 = require_shared();
|
|
var TypedEmitter_1 = require_TypedEmitter();
|
|
var PingTimer_1 = __importDefault(require_PingTimer());
|
|
var is_browser_1 = __importStar(require_is_browser());
|
|
var setImmediate = globalThis.setImmediate || ((...args) => {
|
|
const callback = args.shift();
|
|
(0, shared_1.nextTick)(() => {
|
|
callback(...args);
|
|
});
|
|
});
|
|
var defaultConnectOptions = {
|
|
keepalive: 60,
|
|
reschedulePings: true,
|
|
protocolId: "MQTT",
|
|
protocolVersion: 4,
|
|
reconnectPeriod: 1e3,
|
|
connectTimeout: 30 * 1e3,
|
|
clean: true,
|
|
resubscribe: true,
|
|
writeCache: true
|
|
};
|
|
var MqttClient = class _MqttClient extends TypedEmitter_1.TypedEventEmitter {
|
|
static defaultId() {
|
|
return `mqttjs_${Math.random().toString(16).substr(2, 8)}`;
|
|
}
|
|
constructor(streamBuilder, options) {
|
|
super();
|
|
this.options = options || {};
|
|
for (const k2 in defaultConnectOptions) {
|
|
if (typeof this.options[k2] === "undefined") {
|
|
this.options[k2] = defaultConnectOptions[k2];
|
|
} else {
|
|
this.options[k2] = options[k2];
|
|
}
|
|
}
|
|
this.log = this.options.log || (0, debug_1.default)("mqttjs:client");
|
|
this.noop = this._noop.bind(this);
|
|
this.log("MqttClient :: version:", "5.4.0");
|
|
if (is_browser_1.isWebWorker) {
|
|
this.log("MqttClient :: environment", "webworker");
|
|
} else {
|
|
this.log("MqttClient :: environment", is_browser_1.default ? "browser" : "node");
|
|
}
|
|
this.log("MqttClient :: options.protocol", options.protocol);
|
|
this.log("MqttClient :: options.protocolVersion", options.protocolVersion);
|
|
this.log("MqttClient :: options.username", options.username);
|
|
this.log("MqttClient :: options.keepalive", options.keepalive);
|
|
this.log("MqttClient :: options.reconnectPeriod", options.reconnectPeriod);
|
|
this.log("MqttClient :: options.rejectUnauthorized", options.rejectUnauthorized);
|
|
this.log("MqttClient :: options.properties.topicAliasMaximum", options.properties ? options.properties.topicAliasMaximum : void 0);
|
|
this.options.clientId = typeof options.clientId === "string" ? options.clientId : _MqttClient.defaultId();
|
|
this.log("MqttClient :: clientId", this.options.clientId);
|
|
this.options.customHandleAcks = options.protocolVersion === 5 && options.customHandleAcks ? options.customHandleAcks : (...args) => {
|
|
args[3](null, 0);
|
|
};
|
|
if (!this.options.writeCache) {
|
|
mqtt_packet_1.default.writeToStream.cacheNumbers = false;
|
|
}
|
|
this.streamBuilder = streamBuilder;
|
|
this.messageIdProvider = typeof this.options.messageIdProvider === "undefined" ? new default_message_id_provider_1.default() : this.options.messageIdProvider;
|
|
this.outgoingStore = options.outgoingStore || new store_1.default();
|
|
this.incomingStore = options.incomingStore || new store_1.default();
|
|
this.queueQoSZero = options.queueQoSZero === void 0 ? true : options.queueQoSZero;
|
|
this._resubscribeTopics = {};
|
|
this.messageIdToTopic = {};
|
|
this.pingTimer = null;
|
|
this.connected = false;
|
|
this.disconnecting = false;
|
|
this.reconnecting = false;
|
|
this.queue = [];
|
|
this.connackTimer = null;
|
|
this.reconnectTimer = null;
|
|
this._storeProcessing = false;
|
|
this._packetIdsDuringStoreProcessing = {};
|
|
this._storeProcessingQueue = [];
|
|
this.outgoing = {};
|
|
this._firstConnection = true;
|
|
if (options.properties && options.properties.topicAliasMaximum > 0) {
|
|
if (options.properties.topicAliasMaximum > 65535) {
|
|
this.log("MqttClient :: options.properties.topicAliasMaximum is out of range");
|
|
} else {
|
|
this.topicAliasRecv = new topic_alias_recv_1.default(options.properties.topicAliasMaximum);
|
|
}
|
|
}
|
|
this.on("connect", () => {
|
|
const { queue: queue2 } = this;
|
|
const deliver = () => {
|
|
const entry = queue2.shift();
|
|
this.log("deliver :: entry %o", entry);
|
|
let packet = null;
|
|
if (!entry) {
|
|
this._resubscribe();
|
|
return;
|
|
}
|
|
packet = entry.packet;
|
|
this.log("deliver :: call _sendPacket for %o", packet);
|
|
let send = true;
|
|
if (packet.messageId && packet.messageId !== 0) {
|
|
if (!this.messageIdProvider.register(packet.messageId)) {
|
|
send = false;
|
|
}
|
|
}
|
|
if (send) {
|
|
this._sendPacket(packet, (err) => {
|
|
if (entry.cb) {
|
|
entry.cb(err);
|
|
}
|
|
deliver();
|
|
});
|
|
} else {
|
|
this.log("messageId: %d has already used. The message is skipped and removed.", packet.messageId);
|
|
deliver();
|
|
}
|
|
};
|
|
this.log("connect :: sending queued packets");
|
|
deliver();
|
|
});
|
|
this.on("close", () => {
|
|
this.log("close :: connected set to `false`");
|
|
this.connected = false;
|
|
this.log("close :: clearing connackTimer");
|
|
clearTimeout(this.connackTimer);
|
|
this.log("close :: clearing ping timer");
|
|
if (this.pingTimer) {
|
|
this.pingTimer.clear();
|
|
this.pingTimer = null;
|
|
}
|
|
if (this.topicAliasRecv) {
|
|
this.topicAliasRecv.clear();
|
|
}
|
|
this.log("close :: calling _setupReconnect");
|
|
this._setupReconnect();
|
|
});
|
|
if (!this.options.manualConnect) {
|
|
this.log("MqttClient :: setting up stream");
|
|
this.connect();
|
|
}
|
|
}
|
|
handleAuth(packet, callback) {
|
|
callback();
|
|
}
|
|
handleMessage(packet, callback) {
|
|
callback();
|
|
}
|
|
_nextId() {
|
|
return this.messageIdProvider.allocate();
|
|
}
|
|
getLastMessageId() {
|
|
return this.messageIdProvider.getLastAllocated();
|
|
}
|
|
connect() {
|
|
var _a;
|
|
const writable = new readable_stream_1.Writable();
|
|
const parser = mqtt_packet_1.default.parser(this.options);
|
|
let completeParse = null;
|
|
const packets = [];
|
|
this.log("connect :: calling method to clear reconnect");
|
|
this._clearReconnect();
|
|
this.log("connect :: using streamBuilder provided to client to create stream");
|
|
this.stream = this.streamBuilder(this);
|
|
parser.on("packet", (packet) => {
|
|
this.log("parser :: on packet push to packets array.");
|
|
packets.push(packet);
|
|
});
|
|
const work = () => {
|
|
this.log("work :: getting next packet in queue");
|
|
const packet = packets.shift();
|
|
if (packet) {
|
|
this.log("work :: packet pulled from queue");
|
|
(0, handlers_1.default)(this, packet, nextTickWork);
|
|
} else {
|
|
this.log("work :: no packets in queue");
|
|
const done = completeParse;
|
|
completeParse = null;
|
|
this.log("work :: done flag is %s", !!done);
|
|
if (done)
|
|
done();
|
|
}
|
|
};
|
|
const nextTickWork = () => {
|
|
if (packets.length) {
|
|
(0, shared_1.nextTick)(work);
|
|
} else {
|
|
const done = completeParse;
|
|
completeParse = null;
|
|
done();
|
|
}
|
|
};
|
|
writable._write = (buf, enc, done) => {
|
|
completeParse = done;
|
|
this.log("writable stream :: parsing buffer");
|
|
parser.parse(buf);
|
|
work();
|
|
};
|
|
const streamErrorHandler = (error) => {
|
|
this.log("streamErrorHandler :: error", error.message);
|
|
if (error.code) {
|
|
this.log("streamErrorHandler :: emitting error");
|
|
this.emit("error", error);
|
|
} else {
|
|
this.noop(error);
|
|
}
|
|
};
|
|
this.log("connect :: pipe stream to writable stream");
|
|
this.stream.pipe(writable);
|
|
this.stream.on("error", streamErrorHandler);
|
|
this.stream.on("close", () => {
|
|
this.log("(%s)stream :: on close", this.options.clientId);
|
|
this._flushVolatile();
|
|
this.log("stream: emit close to MqttClient");
|
|
this.emit("close");
|
|
});
|
|
this.log("connect: sending packet `connect`");
|
|
const connectPacket = {
|
|
cmd: "connect",
|
|
protocolId: this.options.protocolId,
|
|
protocolVersion: this.options.protocolVersion,
|
|
clean: this.options.clean,
|
|
clientId: this.options.clientId,
|
|
keepalive: this.options.keepalive,
|
|
username: this.options.username,
|
|
password: this.options.password,
|
|
properties: this.options.properties
|
|
};
|
|
if (this.options.will) {
|
|
connectPacket.will = Object.assign(Object.assign({}, this.options.will), { payload: (_a = this.options.will) === null || _a === void 0 ? void 0 : _a.payload });
|
|
}
|
|
if (this.topicAliasRecv) {
|
|
if (!connectPacket.properties) {
|
|
connectPacket.properties = {};
|
|
}
|
|
if (this.topicAliasRecv) {
|
|
connectPacket.properties.topicAliasMaximum = this.topicAliasRecv.max;
|
|
}
|
|
}
|
|
this._writePacket(connectPacket);
|
|
parser.on("error", this.emit.bind(this, "error"));
|
|
if (this.options.properties) {
|
|
if (!this.options.properties.authenticationMethod && this.options.properties.authenticationData) {
|
|
this.end(() => this.emit("error", new Error("Packet has no Authentication Method")));
|
|
return this;
|
|
}
|
|
if (this.options.properties.authenticationMethod && this.options.authPacket && typeof this.options.authPacket === "object") {
|
|
const authPacket = Object.assign({ cmd: "auth", reasonCode: 0 }, this.options.authPacket);
|
|
this._writePacket(authPacket);
|
|
}
|
|
}
|
|
this.stream.setMaxListeners(1e3);
|
|
clearTimeout(this.connackTimer);
|
|
this.connackTimer = setTimeout(() => {
|
|
this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`");
|
|
this.emit("error", new Error("connack timeout"));
|
|
this._cleanUp(true);
|
|
}, this.options.connectTimeout);
|
|
return this;
|
|
}
|
|
publish(topic, message, opts, callback) {
|
|
this.log("publish :: message `%s` to topic `%s`", message, topic);
|
|
const { options } = this;
|
|
if (typeof opts === "function") {
|
|
callback = opts;
|
|
opts = null;
|
|
}
|
|
opts = opts || {};
|
|
const defaultOpts = {
|
|
qos: 0,
|
|
retain: false,
|
|
dup: false
|
|
};
|
|
opts = Object.assign(Object.assign({}, defaultOpts), opts);
|
|
const { qos, retain, dup, properties, cbStorePut } = opts;
|
|
if (this._checkDisconnecting(callback)) {
|
|
return this;
|
|
}
|
|
const publishProc = () => {
|
|
let messageId = 0;
|
|
if (qos === 1 || qos === 2) {
|
|
messageId = this._nextId();
|
|
if (messageId === null) {
|
|
this.log("No messageId left");
|
|
return false;
|
|
}
|
|
}
|
|
const packet = {
|
|
cmd: "publish",
|
|
topic,
|
|
payload: message,
|
|
qos,
|
|
retain,
|
|
messageId,
|
|
dup
|
|
};
|
|
if (options.protocolVersion === 5) {
|
|
packet.properties = properties;
|
|
}
|
|
this.log("publish :: qos", qos);
|
|
switch (qos) {
|
|
case 1:
|
|
case 2:
|
|
this.outgoing[packet.messageId] = {
|
|
volatile: false,
|
|
cb: callback || this.noop
|
|
};
|
|
this.log("MqttClient:publish: packet cmd: %s", packet.cmd);
|
|
this._sendPacket(packet, void 0, cbStorePut);
|
|
break;
|
|
default:
|
|
this.log("MqttClient:publish: packet cmd: %s", packet.cmd);
|
|
this._sendPacket(packet, callback, cbStorePut);
|
|
break;
|
|
}
|
|
return true;
|
|
};
|
|
if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !publishProc()) {
|
|
this._storeProcessingQueue.push({
|
|
invoke: publishProc,
|
|
cbStorePut: opts.cbStorePut,
|
|
callback
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
publishAsync(topic, message, opts) {
|
|
return new Promise((resolve2, reject) => {
|
|
this.publish(topic, message, opts, (err, packet) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve2(packet);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
subscribe(topicObject, opts, callback) {
|
|
const version2 = this.options.protocolVersion;
|
|
if (typeof opts === "function") {
|
|
callback = opts;
|
|
}
|
|
callback = callback || this.noop;
|
|
let resubscribe = false;
|
|
let topicsList = [];
|
|
if (typeof topicObject === "string") {
|
|
topicObject = [topicObject];
|
|
topicsList = topicObject;
|
|
} else if (Array.isArray(topicObject)) {
|
|
topicsList = topicObject;
|
|
} else if (typeof topicObject === "object") {
|
|
resubscribe = topicObject.resubscribe;
|
|
delete topicObject.resubscribe;
|
|
topicsList = Object.keys(topicObject);
|
|
}
|
|
const invalidTopic = validations.validateTopics(topicsList);
|
|
if (invalidTopic !== null) {
|
|
setImmediate(callback, new Error(`Invalid topic ${invalidTopic}`));
|
|
return this;
|
|
}
|
|
if (this._checkDisconnecting(callback)) {
|
|
this.log("subscribe: discconecting true");
|
|
return this;
|
|
}
|
|
const defaultOpts = {
|
|
qos: 0
|
|
};
|
|
if (version2 === 5) {
|
|
defaultOpts.nl = false;
|
|
defaultOpts.rap = false;
|
|
defaultOpts.rh = 0;
|
|
}
|
|
opts = Object.assign(Object.assign({}, defaultOpts), opts);
|
|
const properties = opts.properties;
|
|
const subs = [];
|
|
const parseSub = (topic, subOptions) => {
|
|
subOptions = subOptions || opts;
|
|
if (!Object.prototype.hasOwnProperty.call(this._resubscribeTopics, topic) || this._resubscribeTopics[topic].qos < subOptions.qos || resubscribe) {
|
|
const currentOpts = {
|
|
topic,
|
|
qos: subOptions.qos
|
|
};
|
|
if (version2 === 5) {
|
|
currentOpts.nl = subOptions.nl;
|
|
currentOpts.rap = subOptions.rap;
|
|
currentOpts.rh = subOptions.rh;
|
|
currentOpts.properties = properties;
|
|
}
|
|
this.log("subscribe: pushing topic `%s` and qos `%s` to subs list", currentOpts.topic, currentOpts.qos);
|
|
subs.push(currentOpts);
|
|
}
|
|
};
|
|
if (Array.isArray(topicObject)) {
|
|
topicObject.forEach((topic) => {
|
|
this.log("subscribe: array topic %s", topic);
|
|
parseSub(topic);
|
|
});
|
|
} else {
|
|
Object.keys(topicObject).forEach((topic) => {
|
|
this.log("subscribe: object topic %s, %o", topic, topicObject[topic]);
|
|
parseSub(topic, topicObject[topic]);
|
|
});
|
|
}
|
|
if (!subs.length) {
|
|
callback(null, []);
|
|
return this;
|
|
}
|
|
const subscribeProc = () => {
|
|
const messageId = this._nextId();
|
|
if (messageId === null) {
|
|
this.log("No messageId left");
|
|
return false;
|
|
}
|
|
const packet = {
|
|
cmd: "subscribe",
|
|
subscriptions: subs,
|
|
messageId
|
|
};
|
|
if (properties) {
|
|
packet.properties = properties;
|
|
}
|
|
if (this.options.resubscribe) {
|
|
this.log("subscribe :: resubscribe true");
|
|
const topics = [];
|
|
subs.forEach((sub) => {
|
|
if (this.options.reconnectPeriod > 0) {
|
|
const topic = { qos: sub.qos };
|
|
if (version2 === 5) {
|
|
topic.nl = sub.nl || false;
|
|
topic.rap = sub.rap || false;
|
|
topic.rh = sub.rh || 0;
|
|
topic.properties = sub.properties;
|
|
}
|
|
this._resubscribeTopics[sub.topic] = topic;
|
|
topics.push(sub.topic);
|
|
}
|
|
});
|
|
this.messageIdToTopic[packet.messageId] = topics;
|
|
}
|
|
this.outgoing[packet.messageId] = {
|
|
volatile: true,
|
|
cb(err, packet2) {
|
|
if (!err) {
|
|
const { granted } = packet2;
|
|
for (let i6 = 0; i6 < granted.length; i6 += 1) {
|
|
subs[i6].qos = granted[i6];
|
|
}
|
|
}
|
|
callback(err, subs);
|
|
}
|
|
};
|
|
this.log("subscribe :: call _sendPacket");
|
|
this._sendPacket(packet);
|
|
return true;
|
|
};
|
|
if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !subscribeProc()) {
|
|
this._storeProcessingQueue.push({
|
|
invoke: subscribeProc,
|
|
callback
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
subscribeAsync(topicObject, opts) {
|
|
return new Promise((resolve2, reject) => {
|
|
this.subscribe(topicObject, opts, (err, granted) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve2(granted);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
unsubscribe(topic, opts, callback) {
|
|
if (typeof topic === "string") {
|
|
topic = [topic];
|
|
}
|
|
if (typeof opts === "function") {
|
|
callback = opts;
|
|
}
|
|
callback = callback || this.noop;
|
|
const invalidTopic = validations.validateTopics(topic);
|
|
if (invalidTopic !== null) {
|
|
setImmediate(callback, new Error(`Invalid topic ${invalidTopic}`));
|
|
return this;
|
|
}
|
|
if (this._checkDisconnecting(callback)) {
|
|
return this;
|
|
}
|
|
const unsubscribeProc = () => {
|
|
const messageId = this._nextId();
|
|
if (messageId === null) {
|
|
this.log("No messageId left");
|
|
return false;
|
|
}
|
|
const packet = {
|
|
cmd: "unsubscribe",
|
|
messageId,
|
|
unsubscriptions: []
|
|
};
|
|
if (typeof topic === "string") {
|
|
packet.unsubscriptions = [topic];
|
|
} else if (Array.isArray(topic)) {
|
|
packet.unsubscriptions = topic;
|
|
}
|
|
if (this.options.resubscribe) {
|
|
packet.unsubscriptions.forEach((topic2) => {
|
|
delete this._resubscribeTopics[topic2];
|
|
});
|
|
}
|
|
if (typeof opts === "object" && opts.properties) {
|
|
packet.properties = opts.properties;
|
|
}
|
|
this.outgoing[packet.messageId] = {
|
|
volatile: true,
|
|
cb: callback
|
|
};
|
|
this.log("unsubscribe: call _sendPacket");
|
|
this._sendPacket(packet);
|
|
return true;
|
|
};
|
|
if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !unsubscribeProc()) {
|
|
this._storeProcessingQueue.push({
|
|
invoke: unsubscribeProc,
|
|
callback
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
unsubscribeAsync(topic, opts) {
|
|
return new Promise((resolve2, reject) => {
|
|
this.unsubscribe(topic, opts, (err, packet) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve2(packet);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
end(force, opts, cb) {
|
|
this.log("end :: (%s)", this.options.clientId);
|
|
if (force == null || typeof force !== "boolean") {
|
|
cb = cb || opts;
|
|
opts = force;
|
|
force = false;
|
|
}
|
|
if (typeof opts !== "object") {
|
|
cb = cb || opts;
|
|
opts = null;
|
|
}
|
|
this.log("end :: cb? %s", !!cb);
|
|
if (!cb || typeof cb !== "function") {
|
|
cb = this.noop;
|
|
}
|
|
const closeStores = () => {
|
|
this.log("end :: closeStores: closing incoming and outgoing stores");
|
|
this.disconnected = true;
|
|
this.incomingStore.close((e1) => {
|
|
this.outgoingStore.close((e22) => {
|
|
this.log("end :: closeStores: emitting end");
|
|
this.emit("end");
|
|
if (cb) {
|
|
const err = e1 || e22;
|
|
this.log("end :: closeStores: invoking callback with args");
|
|
cb(err);
|
|
}
|
|
});
|
|
});
|
|
if (this._deferredReconnect) {
|
|
this._deferredReconnect();
|
|
}
|
|
};
|
|
const finish = () => {
|
|
this.log("end :: (%s) :: finish :: calling _cleanUp with force %s", this.options.clientId, force);
|
|
this._cleanUp(force, () => {
|
|
this.log("end :: finish :: calling process.nextTick on closeStores");
|
|
(0, shared_1.nextTick)(closeStores);
|
|
}, opts);
|
|
};
|
|
if (this.disconnecting) {
|
|
cb();
|
|
return this;
|
|
}
|
|
this._clearReconnect();
|
|
this.disconnecting = true;
|
|
if (!force && Object.keys(this.outgoing).length > 0) {
|
|
this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty", this.options.clientId);
|
|
this.once("outgoingEmpty", setTimeout.bind(null, finish, 10));
|
|
} else {
|
|
this.log("end :: (%s) :: immediately calling finish", this.options.clientId);
|
|
finish();
|
|
}
|
|
return this;
|
|
}
|
|
endAsync(force, opts) {
|
|
return new Promise((resolve2, reject) => {
|
|
this.end(force, opts, (err) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve2();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
removeOutgoingMessage(messageId) {
|
|
if (this.outgoing[messageId]) {
|
|
const { cb } = this.outgoing[messageId];
|
|
this._removeOutgoingAndStoreMessage(messageId, () => {
|
|
cb(new Error("Message removed"));
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
reconnect(opts) {
|
|
this.log("client reconnect");
|
|
const f6 = () => {
|
|
if (opts) {
|
|
this.options.incomingStore = opts.incomingStore;
|
|
this.options.outgoingStore = opts.outgoingStore;
|
|
} else {
|
|
this.options.incomingStore = null;
|
|
this.options.outgoingStore = null;
|
|
}
|
|
this.incomingStore = this.options.incomingStore || new store_1.default();
|
|
this.outgoingStore = this.options.outgoingStore || new store_1.default();
|
|
this.disconnecting = false;
|
|
this.disconnected = false;
|
|
this._deferredReconnect = null;
|
|
this._reconnect();
|
|
};
|
|
if (this.disconnecting && !this.disconnected) {
|
|
this._deferredReconnect = f6;
|
|
} else {
|
|
f6();
|
|
}
|
|
return this;
|
|
}
|
|
_flushVolatile() {
|
|
if (this.outgoing) {
|
|
this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function");
|
|
Object.keys(this.outgoing).forEach((messageId) => {
|
|
if (this.outgoing[messageId].volatile && typeof this.outgoing[messageId].cb === "function") {
|
|
this.outgoing[messageId].cb(new Error("Connection closed"));
|
|
delete this.outgoing[messageId];
|
|
}
|
|
});
|
|
}
|
|
}
|
|
_flush() {
|
|
if (this.outgoing) {
|
|
this.log("_flush: queue exists? %b", !!this.outgoing);
|
|
Object.keys(this.outgoing).forEach((messageId) => {
|
|
if (typeof this.outgoing[messageId].cb === "function") {
|
|
this.outgoing[messageId].cb(new Error("Connection closed"));
|
|
delete this.outgoing[messageId];
|
|
}
|
|
});
|
|
}
|
|
}
|
|
_removeTopicAliasAndRecoverTopicName(packet) {
|
|
let alias;
|
|
if (packet.properties) {
|
|
alias = packet.properties.topicAlias;
|
|
}
|
|
let topic = packet.topic.toString();
|
|
this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o", alias, topic);
|
|
if (topic.length === 0) {
|
|
if (typeof alias === "undefined") {
|
|
return new Error("Unregistered Topic Alias");
|
|
}
|
|
topic = this.topicAliasSend.getTopicByAlias(alias);
|
|
if (typeof topic === "undefined") {
|
|
return new Error("Unregistered Topic Alias");
|
|
}
|
|
packet.topic = topic;
|
|
}
|
|
if (alias) {
|
|
delete packet.properties.topicAlias;
|
|
}
|
|
}
|
|
_checkDisconnecting(callback) {
|
|
if (this.disconnecting) {
|
|
if (callback && callback !== this.noop) {
|
|
callback(new Error("client disconnecting"));
|
|
} else {
|
|
this.emit("error", new Error("client disconnecting"));
|
|
}
|
|
}
|
|
return this.disconnecting;
|
|
}
|
|
_reconnect() {
|
|
this.log("_reconnect: emitting reconnect to client");
|
|
this.emit("reconnect");
|
|
if (this.connected) {
|
|
this.end(() => {
|
|
this.connect();
|
|
});
|
|
this.log("client already connected. disconnecting first.");
|
|
} else {
|
|
this.log("_reconnect: calling connect");
|
|
this.connect();
|
|
}
|
|
}
|
|
_setupReconnect() {
|
|
if (!this.disconnecting && !this.reconnectTimer && this.options.reconnectPeriod > 0) {
|
|
if (!this.reconnecting) {
|
|
this.log("_setupReconnect :: emit `offline` state");
|
|
this.emit("offline");
|
|
this.log("_setupReconnect :: set `reconnecting` to `true`");
|
|
this.reconnecting = true;
|
|
}
|
|
this.log("_setupReconnect :: setting reconnectTimer for %d ms", this.options.reconnectPeriod);
|
|
this.reconnectTimer = setInterval(() => {
|
|
this.log("reconnectTimer :: reconnect triggered!");
|
|
this._reconnect();
|
|
}, this.options.reconnectPeriod);
|
|
} else {
|
|
this.log("_setupReconnect :: doing nothing...");
|
|
}
|
|
}
|
|
_clearReconnect() {
|
|
this.log("_clearReconnect : clearing reconnect timer");
|
|
if (this.reconnectTimer) {
|
|
clearInterval(this.reconnectTimer);
|
|
this.reconnectTimer = null;
|
|
}
|
|
}
|
|
_cleanUp(forced, done, opts = {}) {
|
|
if (done) {
|
|
this.log("_cleanUp :: done callback provided for on stream close");
|
|
this.stream.on("close", done);
|
|
}
|
|
this.log("_cleanUp :: forced? %s", forced);
|
|
if (forced) {
|
|
if (this.options.reconnectPeriod === 0 && this.options.clean) {
|
|
this._flush();
|
|
}
|
|
this.log("_cleanUp :: (%s) :: destroying stream", this.options.clientId);
|
|
this.stream.destroy();
|
|
} else {
|
|
const packet = Object.assign({ cmd: "disconnect" }, opts);
|
|
this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet", this.options.clientId);
|
|
this._sendPacket(packet, () => {
|
|
this.log("_cleanUp :: (%s) :: destroying stream", this.options.clientId);
|
|
setImmediate(() => {
|
|
this.stream.end(() => {
|
|
this.log("_cleanUp :: (%s) :: stream destroyed", this.options.clientId);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
if (!this.disconnecting && !this.reconnecting) {
|
|
this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect.");
|
|
this._clearReconnect();
|
|
this._setupReconnect();
|
|
}
|
|
if (this.pingTimer) {
|
|
this.log("_cleanUp :: clearing pingTimer");
|
|
this.pingTimer.clear();
|
|
this.pingTimer = null;
|
|
}
|
|
if (done && !this.connected) {
|
|
this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener", this.options.clientId);
|
|
this.stream.removeListener("close", done);
|
|
done();
|
|
}
|
|
}
|
|
_storeAndSend(packet, cb, cbStorePut) {
|
|
this.log("storeAndSend :: store packet with cmd %s to outgoingStore", packet.cmd);
|
|
let storePacket = packet;
|
|
let err;
|
|
if (storePacket.cmd === "publish") {
|
|
storePacket = (0, default_1.default)(packet);
|
|
err = this._removeTopicAliasAndRecoverTopicName(storePacket);
|
|
if (err) {
|
|
return cb && cb(err);
|
|
}
|
|
}
|
|
this.outgoingStore.put(storePacket, (err2) => {
|
|
if (err2) {
|
|
return cb && cb(err2);
|
|
}
|
|
cbStorePut();
|
|
this._writePacket(packet, cb);
|
|
});
|
|
}
|
|
_applyTopicAlias(packet) {
|
|
if (this.options.protocolVersion === 5) {
|
|
if (packet.cmd === "publish") {
|
|
let alias;
|
|
if (packet.properties) {
|
|
alias = packet.properties.topicAlias;
|
|
}
|
|
const topic = packet.topic.toString();
|
|
if (this.topicAliasSend) {
|
|
if (alias) {
|
|
if (topic.length !== 0) {
|
|
this.log("applyTopicAlias :: register topic: %s - alias: %d", topic, alias);
|
|
if (!this.topicAliasSend.put(topic, alias)) {
|
|
this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d", topic, alias);
|
|
return new Error("Sending Topic Alias out of range");
|
|
}
|
|
}
|
|
} else if (topic.length !== 0) {
|
|
if (this.options.autoAssignTopicAlias) {
|
|
alias = this.topicAliasSend.getAliasByTopic(topic);
|
|
if (alias) {
|
|
packet.topic = "";
|
|
packet.properties = Object.assign(Object.assign({}, packet.properties), { topicAlias: alias });
|
|
this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d", topic, alias);
|
|
} else {
|
|
alias = this.topicAliasSend.getLruAlias();
|
|
this.topicAliasSend.put(topic, alias);
|
|
packet.properties = Object.assign(Object.assign({}, packet.properties), { topicAlias: alias });
|
|
this.log("applyTopicAlias :: auto assign topic: %s - alias: %d", topic, alias);
|
|
}
|
|
} else if (this.options.autoUseTopicAlias) {
|
|
alias = this.topicAliasSend.getAliasByTopic(topic);
|
|
if (alias) {
|
|
packet.topic = "";
|
|
packet.properties = Object.assign(Object.assign({}, packet.properties), { topicAlias: alias });
|
|
this.log("applyTopicAlias :: auto use topic: %s - alias: %d", topic, alias);
|
|
}
|
|
}
|
|
}
|
|
} else if (alias) {
|
|
this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d", topic, alias);
|
|
return new Error("Sending Topic Alias out of range");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_noop(err) {
|
|
this.log("noop ::", err);
|
|
}
|
|
_writePacket(packet, cb) {
|
|
this.log("_writePacket :: packet: %O", packet);
|
|
this.log("_writePacket :: emitting `packetsend`");
|
|
this.emit("packetsend", packet);
|
|
this._shiftPingInterval();
|
|
this.log("_writePacket :: writing to stream");
|
|
const result = mqtt_packet_1.default.writeToStream(packet, this.stream, this.options);
|
|
this.log("_writePacket :: writeToStream result %s", result);
|
|
if (!result && cb && cb !== this.noop) {
|
|
this.log("_writePacket :: handle events on `drain` once through callback.");
|
|
this.stream.once("drain", cb);
|
|
} else if (cb) {
|
|
this.log("_writePacket :: invoking cb");
|
|
cb();
|
|
}
|
|
}
|
|
_sendPacket(packet, cb, cbStorePut, noStore) {
|
|
this.log("_sendPacket :: (%s) :: start", this.options.clientId);
|
|
cbStorePut = cbStorePut || this.noop;
|
|
cb = cb || this.noop;
|
|
const err = this._applyTopicAlias(packet);
|
|
if (err) {
|
|
cb(err);
|
|
return;
|
|
}
|
|
if (!this.connected) {
|
|
if (packet.cmd === "auth") {
|
|
this._writePacket(packet, cb);
|
|
return;
|
|
}
|
|
this.log("_sendPacket :: client not connected. Storing packet offline.");
|
|
this._storePacket(packet, cb, cbStorePut);
|
|
return;
|
|
}
|
|
if (noStore) {
|
|
this._writePacket(packet, cb);
|
|
return;
|
|
}
|
|
switch (packet.cmd) {
|
|
case "publish":
|
|
break;
|
|
case "pubrel":
|
|
this._storeAndSend(packet, cb, cbStorePut);
|
|
return;
|
|
default:
|
|
this._writePacket(packet, cb);
|
|
return;
|
|
}
|
|
switch (packet.qos) {
|
|
case 2:
|
|
case 1:
|
|
this._storeAndSend(packet, cb, cbStorePut);
|
|
break;
|
|
case 0:
|
|
default:
|
|
this._writePacket(packet, cb);
|
|
break;
|
|
}
|
|
this.log("_sendPacket :: (%s) :: end", this.options.clientId);
|
|
}
|
|
_storePacket(packet, cb, cbStorePut) {
|
|
this.log("_storePacket :: packet: %o", packet);
|
|
this.log("_storePacket :: cb? %s", !!cb);
|
|
cbStorePut = cbStorePut || this.noop;
|
|
let storePacket = packet;
|
|
if (storePacket.cmd === "publish") {
|
|
storePacket = (0, default_1.default)(packet);
|
|
const err = this._removeTopicAliasAndRecoverTopicName(storePacket);
|
|
if (err) {
|
|
return cb && cb(err);
|
|
}
|
|
}
|
|
const qos = storePacket.qos || 0;
|
|
if (qos === 0 && this.queueQoSZero || storePacket.cmd !== "publish") {
|
|
this.queue.push({ packet: storePacket, cb });
|
|
} else if (qos > 0) {
|
|
cb = this.outgoing[storePacket.messageId] ? this.outgoing[storePacket.messageId].cb : null;
|
|
this.outgoingStore.put(storePacket, (err) => {
|
|
if (err) {
|
|
return cb && cb(err);
|
|
}
|
|
cbStorePut();
|
|
});
|
|
} else if (cb) {
|
|
cb(new Error("No connection to broker"));
|
|
}
|
|
}
|
|
_setupPingTimer() {
|
|
this.log("_setupPingTimer :: keepalive %d (seconds)", this.options.keepalive);
|
|
if (!this.pingTimer && this.options.keepalive) {
|
|
this.pingResp = true;
|
|
this.pingTimer = new PingTimer_1.default(this.options.keepalive, () => {
|
|
this._checkPing();
|
|
});
|
|
}
|
|
}
|
|
_shiftPingInterval() {
|
|
if (this.pingTimer && this.options.keepalive && this.options.reschedulePings) {
|
|
this.pingTimer.reschedule();
|
|
}
|
|
}
|
|
_checkPing() {
|
|
this.log("_checkPing :: checking ping...");
|
|
if (this.pingResp) {
|
|
this.log("_checkPing :: ping response received. Clearing flag and sending `pingreq`");
|
|
this.pingResp = false;
|
|
this._sendPacket({ cmd: "pingreq" });
|
|
} else {
|
|
this.emit("error", new Error("Keepalive timeout"));
|
|
this.log("_checkPing :: calling _cleanUp with force true");
|
|
this._cleanUp(true);
|
|
}
|
|
}
|
|
_resubscribe() {
|
|
this.log("_resubscribe");
|
|
const _resubscribeTopicsKeys = Object.keys(this._resubscribeTopics);
|
|
if (!this._firstConnection && (this.options.clean || this.options.protocolVersion >= 4 && !this.connackPacket.sessionPresent) && _resubscribeTopicsKeys.length > 0) {
|
|
if (this.options.resubscribe) {
|
|
if (this.options.protocolVersion === 5) {
|
|
this.log("_resubscribe: protocolVersion 5");
|
|
for (let topicI = 0; topicI < _resubscribeTopicsKeys.length; topicI++) {
|
|
const resubscribeTopic = {};
|
|
resubscribeTopic[_resubscribeTopicsKeys[topicI]] = this._resubscribeTopics[_resubscribeTopicsKeys[topicI]];
|
|
resubscribeTopic.resubscribe = true;
|
|
this.subscribe(resubscribeTopic, {
|
|
properties: resubscribeTopic[_resubscribeTopicsKeys[topicI]].properties
|
|
});
|
|
}
|
|
} else {
|
|
this._resubscribeTopics.resubscribe = true;
|
|
this.subscribe(this._resubscribeTopics);
|
|
}
|
|
} else {
|
|
this._resubscribeTopics = {};
|
|
}
|
|
}
|
|
this._firstConnection = false;
|
|
}
|
|
_onConnect(packet) {
|
|
if (this.disconnected) {
|
|
this.emit("connect", packet);
|
|
return;
|
|
}
|
|
this.connackPacket = packet;
|
|
this.messageIdProvider.clear();
|
|
this._setupPingTimer();
|
|
this.connected = true;
|
|
const startStreamProcess = () => {
|
|
let outStore = this.outgoingStore.createStream();
|
|
const remove = () => {
|
|
outStore.destroy();
|
|
outStore = null;
|
|
this._flushStoreProcessingQueue();
|
|
clearStoreProcessing();
|
|
};
|
|
const clearStoreProcessing = () => {
|
|
this._storeProcessing = false;
|
|
this._packetIdsDuringStoreProcessing = {};
|
|
};
|
|
this.once("close", remove);
|
|
outStore.on("error", (err) => {
|
|
clearStoreProcessing();
|
|
this._flushStoreProcessingQueue();
|
|
this.removeListener("close", remove);
|
|
this.emit("error", err);
|
|
});
|
|
const storeDeliver = () => {
|
|
if (!outStore) {
|
|
return;
|
|
}
|
|
const packet2 = outStore.read(1);
|
|
let cb;
|
|
if (!packet2) {
|
|
outStore.once("readable", storeDeliver);
|
|
return;
|
|
}
|
|
this._storeProcessing = true;
|
|
if (this._packetIdsDuringStoreProcessing[packet2.messageId]) {
|
|
storeDeliver();
|
|
return;
|
|
}
|
|
if (!this.disconnecting && !this.reconnectTimer) {
|
|
cb = this.outgoing[packet2.messageId] ? this.outgoing[packet2.messageId].cb : null;
|
|
this.outgoing[packet2.messageId] = {
|
|
volatile: false,
|
|
cb(err, status) {
|
|
if (cb) {
|
|
cb(err, status);
|
|
}
|
|
storeDeliver();
|
|
}
|
|
};
|
|
this._packetIdsDuringStoreProcessing[packet2.messageId] = true;
|
|
if (this.messageIdProvider.register(packet2.messageId)) {
|
|
this._sendPacket(packet2, void 0, void 0, true);
|
|
} else {
|
|
this.log("messageId: %d has already used.", packet2.messageId);
|
|
}
|
|
} else if (outStore.destroy) {
|
|
outStore.destroy();
|
|
}
|
|
};
|
|
outStore.on("end", () => {
|
|
let allProcessed = true;
|
|
for (const id in this._packetIdsDuringStoreProcessing) {
|
|
if (!this._packetIdsDuringStoreProcessing[id]) {
|
|
allProcessed = false;
|
|
break;
|
|
}
|
|
}
|
|
this.removeListener("close", remove);
|
|
if (allProcessed) {
|
|
clearStoreProcessing();
|
|
this._invokeAllStoreProcessingQueue();
|
|
this.emit("connect", packet);
|
|
} else {
|
|
startStreamProcess();
|
|
}
|
|
});
|
|
storeDeliver();
|
|
};
|
|
startStreamProcess();
|
|
}
|
|
_invokeStoreProcessingQueue() {
|
|
if (!this._storeProcessing && this._storeProcessingQueue.length > 0) {
|
|
const f6 = this._storeProcessingQueue[0];
|
|
if (f6 && f6.invoke()) {
|
|
this._storeProcessingQueue.shift();
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
_invokeAllStoreProcessingQueue() {
|
|
while (this._invokeStoreProcessingQueue()) {
|
|
}
|
|
}
|
|
_flushStoreProcessingQueue() {
|
|
for (const f6 of this._storeProcessingQueue) {
|
|
if (f6.cbStorePut)
|
|
f6.cbStorePut(new Error("Connection closed"));
|
|
if (f6.callback)
|
|
f6.callback(new Error("Connection closed"));
|
|
}
|
|
this._storeProcessingQueue.splice(0);
|
|
}
|
|
_removeOutgoingAndStoreMessage(messageId, cb) {
|
|
delete this.outgoing[messageId];
|
|
this.outgoingStore.del({ messageId }, (err, packet) => {
|
|
cb(err, packet);
|
|
this.messageIdProvider.deallocate(messageId);
|
|
this._invokeStoreProcessingQueue();
|
|
});
|
|
}
|
|
};
|
|
exports5.default = MqttClient;
|
|
}
|
|
});
|
|
|
|
// build/lib/unique-message-id-provider.js
|
|
var require_unique_message_id_provider = __commonJS({
|
|
"build/lib/unique-message-id-provider.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var number_allocator_1 = require_number_allocator2();
|
|
var UniqueMessageIdProvider = class {
|
|
constructor() {
|
|
this.numberAllocator = new number_allocator_1.NumberAllocator(1, 65535);
|
|
}
|
|
allocate() {
|
|
this.lastId = this.numberAllocator.alloc();
|
|
return this.lastId;
|
|
}
|
|
getLastAllocated() {
|
|
return this.lastId;
|
|
}
|
|
register(messageId) {
|
|
return this.numberAllocator.use(messageId);
|
|
}
|
|
deallocate(messageId) {
|
|
this.numberAllocator.free(messageId);
|
|
}
|
|
clear() {
|
|
this.numberAllocator.clear();
|
|
}
|
|
};
|
|
exports5.default = UniqueMessageIdProvider;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-924bb2e1.js
|
|
function i3(t6) {
|
|
throw new RangeError(r3[t6]);
|
|
}
|
|
function f3(t6, o7) {
|
|
const n7 = t6.split("@");
|
|
let r7 = "";
|
|
n7.length > 1 && (r7 = n7[0] + "@", t6 = n7[1]);
|
|
const c6 = function(t7, o8) {
|
|
const n8 = [];
|
|
let e7 = t7.length;
|
|
for (; e7--; )
|
|
n8[e7] = o8(t7[e7]);
|
|
return n8;
|
|
}((t6 = t6.replace(e3, ".")).split("."), o7).join(".");
|
|
return r7 + c6;
|
|
}
|
|
function l3(t6) {
|
|
const o7 = [];
|
|
let n7 = 0;
|
|
const e7 = t6.length;
|
|
for (; n7 < e7; ) {
|
|
const r7 = t6.charCodeAt(n7++);
|
|
if (r7 >= 55296 && r7 <= 56319 && n7 < e7) {
|
|
const e8 = t6.charCodeAt(n7++);
|
|
56320 == (64512 & e8) ? o7.push(((1023 & r7) << 10) + (1023 & e8) + 65536) : (o7.push(r7), n7--);
|
|
} else
|
|
o7.push(r7);
|
|
}
|
|
return o7;
|
|
}
|
|
var t3, o3, n3, e3, r3, c3, s3, u3, a3, d2, h3, p3;
|
|
var init_chunk_924bb2e1 = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-924bb2e1.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
t3 = 2147483647;
|
|
o3 = /^xn--/;
|
|
n3 = /[^\0-\x7E]/;
|
|
e3 = /[\x2E\u3002\uFF0E\uFF61]/g;
|
|
r3 = { overflow: "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" };
|
|
c3 = Math.floor;
|
|
s3 = String.fromCharCode;
|
|
u3 = function(t6, o7) {
|
|
return t6 + 22 + 75 * (t6 < 26) - ((0 != o7) << 5);
|
|
};
|
|
a3 = function(t6, o7, n7) {
|
|
let e7 = 0;
|
|
for (t6 = n7 ? c3(t6 / 700) : t6 >> 1, t6 += c3(t6 / o7); t6 > 455; e7 += 36)
|
|
t6 = c3(t6 / 35);
|
|
return c3(e7 + 36 * t6 / (t6 + 38));
|
|
};
|
|
d2 = function(o7) {
|
|
const n7 = [], e7 = o7.length;
|
|
let r7 = 0, s5 = 128, f6 = 72, l6 = o7.lastIndexOf("-");
|
|
l6 < 0 && (l6 = 0);
|
|
for (let t6 = 0; t6 < l6; ++t6)
|
|
o7.charCodeAt(t6) >= 128 && i3("not-basic"), n7.push(o7.charCodeAt(t6));
|
|
for (let d4 = l6 > 0 ? l6 + 1 : 0; d4 < e7; ) {
|
|
let l7 = r7;
|
|
for (let n8 = 1, s6 = 36; ; s6 += 36) {
|
|
d4 >= e7 && i3("invalid-input");
|
|
const l8 = (u6 = o7.charCodeAt(d4++)) - 48 < 10 ? u6 - 22 : u6 - 65 < 26 ? u6 - 65 : u6 - 97 < 26 ? u6 - 97 : 36;
|
|
(l8 >= 36 || l8 > c3((t3 - r7) / n8)) && i3("overflow"), r7 += l8 * n8;
|
|
const a6 = s6 <= f6 ? 1 : s6 >= f6 + 26 ? 26 : s6 - f6;
|
|
if (l8 < a6)
|
|
break;
|
|
const h7 = 36 - a6;
|
|
n8 > c3(t3 / h7) && i3("overflow"), n8 *= h7;
|
|
}
|
|
const h6 = n7.length + 1;
|
|
f6 = a3(r7 - l7, h6, 0 == l7), c3(r7 / h6) > t3 - s5 && i3("overflow"), s5 += c3(r7 / h6), r7 %= h6, n7.splice(r7++, 0, s5);
|
|
}
|
|
var u6;
|
|
return String.fromCodePoint(...n7);
|
|
};
|
|
h3 = function(o7) {
|
|
const n7 = [];
|
|
let e7 = (o7 = l3(o7)).length, r7 = 128, f6 = 0, d4 = 72;
|
|
for (const t6 of o7)
|
|
t6 < 128 && n7.push(s3(t6));
|
|
let h6 = n7.length, p6 = h6;
|
|
for (h6 && n7.push("-"); p6 < e7; ) {
|
|
let e8 = t3;
|
|
for (const t6 of o7)
|
|
t6 >= r7 && t6 < e8 && (e8 = t6);
|
|
const l6 = p6 + 1;
|
|
e8 - r7 > c3((t3 - f6) / l6) && i3("overflow"), f6 += (e8 - r7) * l6, r7 = e8;
|
|
for (const e9 of o7)
|
|
if (e9 < r7 && ++f6 > t3 && i3("overflow"), e9 == r7) {
|
|
let t6 = f6;
|
|
for (let o8 = 36; ; o8 += 36) {
|
|
const e10 = o8 <= d4 ? 1 : o8 >= d4 + 26 ? 26 : o8 - d4;
|
|
if (t6 < e10)
|
|
break;
|
|
const r8 = t6 - e10, i6 = 36 - e10;
|
|
n7.push(s3(u3(e10 + r8 % i6, 0))), t6 = c3(r8 / i6);
|
|
}
|
|
n7.push(s3(u3(t6, 0))), d4 = a3(f6, l6, p6 == h6), f6 = 0, ++p6;
|
|
}
|
|
++f6, ++r7;
|
|
}
|
|
return n7.join("");
|
|
};
|
|
p3 = { version: "2.1.0", ucs2: { decode: l3, encode: (t6) => String.fromCodePoint(...t6) }, decode: d2, encode: h3, toASCII: function(t6) {
|
|
return f3(t6, function(t7) {
|
|
return n3.test(t7) ? "xn--" + h3(t7) : t7;
|
|
});
|
|
}, toUnicode: function(t6) {
|
|
return f3(t6, function(t7) {
|
|
return o3.test(t7) ? d2(t7.slice(4).toLowerCase()) : t7;
|
|
});
|
|
} };
|
|
p3.decode;
|
|
p3.encode;
|
|
p3.toASCII;
|
|
p3.toUnicode;
|
|
p3.ucs2;
|
|
p3.version;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-b04e620d.js
|
|
function e4(e7, n7) {
|
|
return Object.prototype.hasOwnProperty.call(e7, n7);
|
|
}
|
|
var n4, r4, t4, o4;
|
|
var init_chunk_b04e620d = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-b04e620d.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
n4 = function(n7, r7, t6, o7) {
|
|
r7 = r7 || "&", t6 = t6 || "=";
|
|
var a6 = {};
|
|
if ("string" != typeof n7 || 0 === n7.length)
|
|
return a6;
|
|
var u6 = /\+/g;
|
|
n7 = n7.split(r7);
|
|
var c6 = 1e3;
|
|
o7 && "number" == typeof o7.maxKeys && (c6 = o7.maxKeys);
|
|
var i6 = n7.length;
|
|
c6 > 0 && i6 > c6 && (i6 = c6);
|
|
for (var s5 = 0; s5 < i6; ++s5) {
|
|
var p6, f6, d4, y4, m4 = n7[s5].replace(u6, "%20"), l6 = m4.indexOf(t6);
|
|
l6 >= 0 ? (p6 = m4.substr(0, l6), f6 = m4.substr(l6 + 1)) : (p6 = m4, f6 = ""), d4 = decodeURIComponent(p6), y4 = decodeURIComponent(f6), e4(a6, d4) ? Array.isArray(a6[d4]) ? a6[d4].push(y4) : a6[d4] = [a6[d4], y4] : a6[d4] = y4;
|
|
}
|
|
return a6;
|
|
};
|
|
r4 = function(e7) {
|
|
switch (typeof e7) {
|
|
case "string":
|
|
return e7;
|
|
case "boolean":
|
|
return e7 ? "true" : "false";
|
|
case "number":
|
|
return isFinite(e7) ? e7 : "";
|
|
default:
|
|
return "";
|
|
}
|
|
};
|
|
t4 = function(e7, n7, t6, o7) {
|
|
return n7 = n7 || "&", t6 = t6 || "=", null === e7 && (e7 = void 0), "object" == typeof e7 ? Object.keys(e7).map(function(o8) {
|
|
var a6 = encodeURIComponent(r4(o8)) + t6;
|
|
return Array.isArray(e7[o8]) ? e7[o8].map(function(e8) {
|
|
return a6 + encodeURIComponent(r4(e8));
|
|
}).join(n7) : a6 + encodeURIComponent(r4(e7[o8]));
|
|
}).join(n7) : o7 ? encodeURIComponent(r4(o7)) + t6 + encodeURIComponent(r4(e7)) : "";
|
|
};
|
|
o4 = {};
|
|
o4.decode = o4.parse = n4, o4.encode = o4.stringify = t4;
|
|
o4.decode;
|
|
o4.encode;
|
|
o4.parse;
|
|
o4.stringify;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-5decc758.js
|
|
function i4() {
|
|
throw new Error("setTimeout has not been defined");
|
|
}
|
|
function u4() {
|
|
throw new Error("clearTimeout has not been defined");
|
|
}
|
|
function c4(e7) {
|
|
if (t5 === setTimeout)
|
|
return setTimeout(e7, 0);
|
|
if ((t5 === i4 || !t5) && setTimeout)
|
|
return t5 = setTimeout, setTimeout(e7, 0);
|
|
try {
|
|
return t5(e7, 0);
|
|
} catch (n7) {
|
|
try {
|
|
return t5.call(null, e7, 0);
|
|
} catch (n8) {
|
|
return t5.call(this || r5, e7, 0);
|
|
}
|
|
}
|
|
}
|
|
function h4() {
|
|
f4 && l4 && (f4 = false, l4.length ? s4 = l4.concat(s4) : a4 = -1, s4.length && d3());
|
|
}
|
|
function d3() {
|
|
if (!f4) {
|
|
var e7 = c4(h4);
|
|
f4 = true;
|
|
for (var t6 = s4.length; t6; ) {
|
|
for (l4 = s4, s4 = []; ++a4 < t6; )
|
|
l4 && l4[a4].run();
|
|
a4 = -1, t6 = s4.length;
|
|
}
|
|
l4 = null, f4 = false, function(e8) {
|
|
if (n5 === clearTimeout)
|
|
return clearTimeout(e8);
|
|
if ((n5 === u4 || !n5) && clearTimeout)
|
|
return n5 = clearTimeout, clearTimeout(e8);
|
|
try {
|
|
n5(e8);
|
|
} catch (t7) {
|
|
try {
|
|
return n5.call(null, e8);
|
|
} catch (t8) {
|
|
return n5.call(this || r5, e8);
|
|
}
|
|
}
|
|
}(e7);
|
|
}
|
|
}
|
|
function m2(e7, t6) {
|
|
(this || r5).fun = e7, (this || r5).array = t6;
|
|
}
|
|
function p4() {
|
|
}
|
|
var e5, t5, n5, r5, o5, l4, s4, f4, a4, T2;
|
|
var init_chunk_5decc758 = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-5decc758.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
r5 = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : global;
|
|
o5 = e5 = {};
|
|
!function() {
|
|
try {
|
|
t5 = "function" == typeof setTimeout ? setTimeout : i4;
|
|
} catch (e7) {
|
|
t5 = i4;
|
|
}
|
|
try {
|
|
n5 = "function" == typeof clearTimeout ? clearTimeout : u4;
|
|
} catch (e7) {
|
|
n5 = u4;
|
|
}
|
|
}();
|
|
s4 = [];
|
|
f4 = false;
|
|
a4 = -1;
|
|
o5.nextTick = function(e7) {
|
|
var t6 = new Array(arguments.length - 1);
|
|
if (arguments.length > 1)
|
|
for (var n7 = 1; n7 < arguments.length; n7++)
|
|
t6[n7 - 1] = arguments[n7];
|
|
s4.push(new m2(e7, t6)), 1 !== s4.length || f4 || c4(d3);
|
|
}, m2.prototype.run = function() {
|
|
(this || r5).fun.apply(null, (this || r5).array);
|
|
}, o5.title = "browser", o5.browser = true, o5.env = {}, o5.argv = [], o5.version = "", o5.versions = {}, o5.on = p4, o5.addListener = p4, o5.once = p4, o5.off = p4, o5.removeListener = p4, o5.removeAllListeners = p4, o5.emit = p4, o5.prependListener = p4, o5.prependOnceListener = p4, o5.listeners = function(e7) {
|
|
return [];
|
|
}, o5.binding = function(e7) {
|
|
throw new Error("process.binding is not supported");
|
|
}, o5.cwd = function() {
|
|
return "/";
|
|
}, o5.chdir = function(e7) {
|
|
throw new Error("process.chdir is not supported");
|
|
}, o5.umask = function() {
|
|
return 0;
|
|
};
|
|
T2 = e5;
|
|
T2.addListener;
|
|
T2.argv;
|
|
T2.binding;
|
|
T2.browser;
|
|
T2.chdir;
|
|
T2.cwd;
|
|
T2.emit;
|
|
T2.env;
|
|
T2.listeners;
|
|
T2.nextTick;
|
|
T2.off;
|
|
T2.on;
|
|
T2.once;
|
|
T2.prependListener;
|
|
T2.prependOnceListener;
|
|
T2.removeAllListeners;
|
|
T2.removeListener;
|
|
T2.title;
|
|
T2.umask;
|
|
T2.version;
|
|
T2.versions;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-2eac56ff.js
|
|
function dew2() {
|
|
if (_dewExec2)
|
|
return exports2;
|
|
_dewExec2 = true;
|
|
var process3 = exports2 = {};
|
|
var cachedSetTimeout;
|
|
var cachedClearTimeout;
|
|
function defaultSetTimout() {
|
|
throw new Error("setTimeout has not been defined");
|
|
}
|
|
function defaultClearTimeout() {
|
|
throw new Error("clearTimeout has not been defined");
|
|
}
|
|
(function() {
|
|
try {
|
|
if (typeof setTimeout === "function") {
|
|
cachedSetTimeout = setTimeout;
|
|
} else {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
} catch (e7) {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
try {
|
|
if (typeof clearTimeout === "function") {
|
|
cachedClearTimeout = clearTimeout;
|
|
} else {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
} catch (e7) {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
})();
|
|
function runTimeout(fun) {
|
|
if (cachedSetTimeout === setTimeout) {
|
|
return setTimeout(fun, 0);
|
|
}
|
|
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
|
cachedSetTimeout = setTimeout;
|
|
return setTimeout(fun, 0);
|
|
}
|
|
try {
|
|
return cachedSetTimeout(fun, 0);
|
|
} catch (e7) {
|
|
try {
|
|
return cachedSetTimeout.call(null, fun, 0);
|
|
} catch (e8) {
|
|
return cachedSetTimeout.call(this || _global, fun, 0);
|
|
}
|
|
}
|
|
}
|
|
function runClearTimeout(marker) {
|
|
if (cachedClearTimeout === clearTimeout) {
|
|
return clearTimeout(marker);
|
|
}
|
|
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
|
cachedClearTimeout = clearTimeout;
|
|
return clearTimeout(marker);
|
|
}
|
|
try {
|
|
return cachedClearTimeout(marker);
|
|
} catch (e7) {
|
|
try {
|
|
return cachedClearTimeout.call(null, marker);
|
|
} catch (e8) {
|
|
return cachedClearTimeout.call(this || _global, marker);
|
|
}
|
|
}
|
|
}
|
|
var queue2 = [];
|
|
var draining2 = false;
|
|
var currentQueue2;
|
|
var queueIndex2 = -1;
|
|
function cleanUpNextTick2() {
|
|
if (!draining2 || !currentQueue2) {
|
|
return;
|
|
}
|
|
draining2 = false;
|
|
if (currentQueue2.length) {
|
|
queue2 = currentQueue2.concat(queue2);
|
|
} else {
|
|
queueIndex2 = -1;
|
|
}
|
|
if (queue2.length) {
|
|
drainQueue2();
|
|
}
|
|
}
|
|
function drainQueue2() {
|
|
if (draining2) {
|
|
return;
|
|
}
|
|
var timeout = runTimeout(cleanUpNextTick2);
|
|
draining2 = true;
|
|
var len = queue2.length;
|
|
while (len) {
|
|
currentQueue2 = queue2;
|
|
queue2 = [];
|
|
while (++queueIndex2 < len) {
|
|
if (currentQueue2) {
|
|
currentQueue2[queueIndex2].run();
|
|
}
|
|
}
|
|
queueIndex2 = -1;
|
|
len = queue2.length;
|
|
}
|
|
currentQueue2 = null;
|
|
draining2 = false;
|
|
runClearTimeout(timeout);
|
|
}
|
|
process3.nextTick = function(fun) {
|
|
var args = new Array(arguments.length - 1);
|
|
if (arguments.length > 1) {
|
|
for (var i6 = 1; i6 < arguments.length; i6++) {
|
|
args[i6 - 1] = arguments[i6];
|
|
}
|
|
}
|
|
queue2.push(new Item2(fun, args));
|
|
if (queue2.length === 1 && !draining2) {
|
|
runTimeout(drainQueue2);
|
|
}
|
|
};
|
|
function Item2(fun, array) {
|
|
(this || _global).fun = fun;
|
|
(this || _global).array = array;
|
|
}
|
|
Item2.prototype.run = function() {
|
|
(this || _global).fun.apply(null, (this || _global).array);
|
|
};
|
|
process3.title = "browser";
|
|
process3.browser = true;
|
|
process3.env = {};
|
|
process3.argv = [];
|
|
process3.version = "";
|
|
process3.versions = {};
|
|
function noop2() {
|
|
}
|
|
process3.on = noop2;
|
|
process3.addListener = noop2;
|
|
process3.once = noop2;
|
|
process3.off = noop2;
|
|
process3.removeListener = noop2;
|
|
process3.removeAllListeners = noop2;
|
|
process3.emit = noop2;
|
|
process3.prependListener = noop2;
|
|
process3.prependOnceListener = noop2;
|
|
process3.listeners = function(name2) {
|
|
return [];
|
|
};
|
|
process3.binding = function(name2) {
|
|
throw new Error("process.binding is not supported");
|
|
};
|
|
process3.cwd = function() {
|
|
return "/";
|
|
};
|
|
process3.chdir = function(dir) {
|
|
throw new Error("process.chdir is not supported");
|
|
};
|
|
process3.umask = function() {
|
|
return 0;
|
|
};
|
|
return exports2;
|
|
}
|
|
var exports2, _dewExec2, _global, process2;
|
|
var init_chunk_2eac56ff = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-2eac56ff.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
exports2 = {};
|
|
_dewExec2 = false;
|
|
_global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : global;
|
|
process2 = dew2();
|
|
process2.platform = "browser";
|
|
process2.addListener;
|
|
process2.argv;
|
|
process2.binding;
|
|
process2.browser;
|
|
process2.chdir;
|
|
process2.cwd;
|
|
process2.emit;
|
|
process2.env;
|
|
process2.listeners;
|
|
process2.nextTick;
|
|
process2.off;
|
|
process2.on;
|
|
process2.once;
|
|
process2.prependListener;
|
|
process2.prependOnceListener;
|
|
process2.removeAllListeners;
|
|
process2.removeListener;
|
|
process2.title;
|
|
process2.umask;
|
|
process2.version;
|
|
process2.versions;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/chunk-23dbec7b.js
|
|
function dew3() {
|
|
if (_dewExec3)
|
|
return exports$12;
|
|
_dewExec3 = true;
|
|
var process$1 = process2;
|
|
function assertPath(path2) {
|
|
if (typeof path2 !== "string") {
|
|
throw new TypeError("Path must be a string. Received " + JSON.stringify(path2));
|
|
}
|
|
}
|
|
function normalizeStringPosix(path2, allowAboveRoot) {
|
|
var res = "";
|
|
var lastSegmentLength = 0;
|
|
var lastSlash = -1;
|
|
var dots = 0;
|
|
var code;
|
|
for (var i6 = 0; i6 <= path2.length; ++i6) {
|
|
if (i6 < path2.length)
|
|
code = path2.charCodeAt(i6);
|
|
else if (code === 47)
|
|
break;
|
|
else
|
|
code = 47;
|
|
if (code === 47) {
|
|
if (lastSlash === i6 - 1 || dots === 1)
|
|
;
|
|
else if (lastSlash !== i6 - 1 && dots === 2) {
|
|
if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {
|
|
if (res.length > 2) {
|
|
var lastSlashIndex = res.lastIndexOf("/");
|
|
if (lastSlashIndex !== res.length - 1) {
|
|
if (lastSlashIndex === -1) {
|
|
res = "";
|
|
lastSegmentLength = 0;
|
|
} else {
|
|
res = res.slice(0, lastSlashIndex);
|
|
lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
|
|
}
|
|
lastSlash = i6;
|
|
dots = 0;
|
|
continue;
|
|
}
|
|
} else if (res.length === 2 || res.length === 1) {
|
|
res = "";
|
|
lastSegmentLength = 0;
|
|
lastSlash = i6;
|
|
dots = 0;
|
|
continue;
|
|
}
|
|
}
|
|
if (allowAboveRoot) {
|
|
if (res.length > 0)
|
|
res += "/..";
|
|
else
|
|
res = "..";
|
|
lastSegmentLength = 2;
|
|
}
|
|
} else {
|
|
if (res.length > 0)
|
|
res += "/" + path2.slice(lastSlash + 1, i6);
|
|
else
|
|
res = path2.slice(lastSlash + 1, i6);
|
|
lastSegmentLength = i6 - lastSlash - 1;
|
|
}
|
|
lastSlash = i6;
|
|
dots = 0;
|
|
} else if (code === 46 && dots !== -1) {
|
|
++dots;
|
|
} else {
|
|
dots = -1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
function _format(sep, pathObject) {
|
|
var dir = pathObject.dir || pathObject.root;
|
|
var base = pathObject.base || (pathObject.name || "") + (pathObject.ext || "");
|
|
if (!dir) {
|
|
return base;
|
|
}
|
|
if (dir === pathObject.root) {
|
|
return dir + base;
|
|
}
|
|
return dir + sep + base;
|
|
}
|
|
var posix = {
|
|
// path.resolve([from ...], to)
|
|
resolve: function resolve2() {
|
|
var resolvedPath = "";
|
|
var resolvedAbsolute = false;
|
|
var cwd2;
|
|
for (var i6 = arguments.length - 1; i6 >= -1 && !resolvedAbsolute; i6--) {
|
|
var path2;
|
|
if (i6 >= 0)
|
|
path2 = arguments[i6];
|
|
else {
|
|
if (cwd2 === void 0)
|
|
cwd2 = process$1.cwd();
|
|
path2 = cwd2;
|
|
}
|
|
assertPath(path2);
|
|
if (path2.length === 0) {
|
|
continue;
|
|
}
|
|
resolvedPath = path2 + "/" + resolvedPath;
|
|
resolvedAbsolute = path2.charCodeAt(0) === 47;
|
|
}
|
|
resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
|
|
if (resolvedAbsolute) {
|
|
if (resolvedPath.length > 0)
|
|
return "/" + resolvedPath;
|
|
else
|
|
return "/";
|
|
} else if (resolvedPath.length > 0) {
|
|
return resolvedPath;
|
|
} else {
|
|
return ".";
|
|
}
|
|
},
|
|
normalize: function normalize(path2) {
|
|
assertPath(path2);
|
|
if (path2.length === 0)
|
|
return ".";
|
|
var isAbsolute = path2.charCodeAt(0) === 47;
|
|
var trailingSeparator = path2.charCodeAt(path2.length - 1) === 47;
|
|
path2 = normalizeStringPosix(path2, !isAbsolute);
|
|
if (path2.length === 0 && !isAbsolute)
|
|
path2 = ".";
|
|
if (path2.length > 0 && trailingSeparator)
|
|
path2 += "/";
|
|
if (isAbsolute)
|
|
return "/" + path2;
|
|
return path2;
|
|
},
|
|
isAbsolute: function isAbsolute(path2) {
|
|
assertPath(path2);
|
|
return path2.length > 0 && path2.charCodeAt(0) === 47;
|
|
},
|
|
join: function join() {
|
|
if (arguments.length === 0)
|
|
return ".";
|
|
var joined;
|
|
for (var i6 = 0; i6 < arguments.length; ++i6) {
|
|
var arg = arguments[i6];
|
|
assertPath(arg);
|
|
if (arg.length > 0) {
|
|
if (joined === void 0)
|
|
joined = arg;
|
|
else
|
|
joined += "/" + arg;
|
|
}
|
|
}
|
|
if (joined === void 0)
|
|
return ".";
|
|
return posix.normalize(joined);
|
|
},
|
|
relative: function relative(from, to) {
|
|
assertPath(from);
|
|
assertPath(to);
|
|
if (from === to)
|
|
return "";
|
|
from = posix.resolve(from);
|
|
to = posix.resolve(to);
|
|
if (from === to)
|
|
return "";
|
|
var fromStart = 1;
|
|
for (; fromStart < from.length; ++fromStart) {
|
|
if (from.charCodeAt(fromStart) !== 47)
|
|
break;
|
|
}
|
|
var fromEnd = from.length;
|
|
var fromLen = fromEnd - fromStart;
|
|
var toStart = 1;
|
|
for (; toStart < to.length; ++toStart) {
|
|
if (to.charCodeAt(toStart) !== 47)
|
|
break;
|
|
}
|
|
var toEnd = to.length;
|
|
var toLen = toEnd - toStart;
|
|
var length = fromLen < toLen ? fromLen : toLen;
|
|
var lastCommonSep = -1;
|
|
var i6 = 0;
|
|
for (; i6 <= length; ++i6) {
|
|
if (i6 === length) {
|
|
if (toLen > length) {
|
|
if (to.charCodeAt(toStart + i6) === 47) {
|
|
return to.slice(toStart + i6 + 1);
|
|
} else if (i6 === 0) {
|
|
return to.slice(toStart + i6);
|
|
}
|
|
} else if (fromLen > length) {
|
|
if (from.charCodeAt(fromStart + i6) === 47) {
|
|
lastCommonSep = i6;
|
|
} else if (i6 === 0) {
|
|
lastCommonSep = 0;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
var fromCode = from.charCodeAt(fromStart + i6);
|
|
var toCode = to.charCodeAt(toStart + i6);
|
|
if (fromCode !== toCode)
|
|
break;
|
|
else if (fromCode === 47)
|
|
lastCommonSep = i6;
|
|
}
|
|
var out = "";
|
|
for (i6 = fromStart + lastCommonSep + 1; i6 <= fromEnd; ++i6) {
|
|
if (i6 === fromEnd || from.charCodeAt(i6) === 47) {
|
|
if (out.length === 0)
|
|
out += "..";
|
|
else
|
|
out += "/..";
|
|
}
|
|
}
|
|
if (out.length > 0)
|
|
return out + to.slice(toStart + lastCommonSep);
|
|
else {
|
|
toStart += lastCommonSep;
|
|
if (to.charCodeAt(toStart) === 47)
|
|
++toStart;
|
|
return to.slice(toStart);
|
|
}
|
|
},
|
|
_makeLong: function _makeLong(path2) {
|
|
return path2;
|
|
},
|
|
dirname: function dirname(path2) {
|
|
assertPath(path2);
|
|
if (path2.length === 0)
|
|
return ".";
|
|
var code = path2.charCodeAt(0);
|
|
var hasRoot = code === 47;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
for (var i6 = path2.length - 1; i6 >= 1; --i6) {
|
|
code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
end = i6;
|
|
break;
|
|
}
|
|
} else {
|
|
matchedSlash = false;
|
|
}
|
|
}
|
|
if (end === -1)
|
|
return hasRoot ? "/" : ".";
|
|
if (hasRoot && end === 1)
|
|
return "//";
|
|
return path2.slice(0, end);
|
|
},
|
|
basename: function basename(path2, ext) {
|
|
if (ext !== void 0 && typeof ext !== "string")
|
|
throw new TypeError('"ext" argument must be a string');
|
|
assertPath(path2);
|
|
var start = 0;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
var i6;
|
|
if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {
|
|
if (ext.length === path2.length && ext === path2)
|
|
return "";
|
|
var extIdx = ext.length - 1;
|
|
var firstNonSlashEnd = -1;
|
|
for (i6 = path2.length - 1; i6 >= 0; --i6) {
|
|
var code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
start = i6 + 1;
|
|
break;
|
|
}
|
|
} else {
|
|
if (firstNonSlashEnd === -1) {
|
|
matchedSlash = false;
|
|
firstNonSlashEnd = i6 + 1;
|
|
}
|
|
if (extIdx >= 0) {
|
|
if (code === ext.charCodeAt(extIdx)) {
|
|
if (--extIdx === -1) {
|
|
end = i6;
|
|
}
|
|
} else {
|
|
extIdx = -1;
|
|
end = firstNonSlashEnd;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (start === end)
|
|
end = firstNonSlashEnd;
|
|
else if (end === -1)
|
|
end = path2.length;
|
|
return path2.slice(start, end);
|
|
} else {
|
|
for (i6 = path2.length - 1; i6 >= 0; --i6) {
|
|
if (path2.charCodeAt(i6) === 47) {
|
|
if (!matchedSlash) {
|
|
start = i6 + 1;
|
|
break;
|
|
}
|
|
} else if (end === -1) {
|
|
matchedSlash = false;
|
|
end = i6 + 1;
|
|
}
|
|
}
|
|
if (end === -1)
|
|
return "";
|
|
return path2.slice(start, end);
|
|
}
|
|
},
|
|
extname: function extname(path2) {
|
|
assertPath(path2);
|
|
var startDot = -1;
|
|
var startPart = 0;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
var preDotState = 0;
|
|
for (var i6 = path2.length - 1; i6 >= 0; --i6) {
|
|
var code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
startPart = i6 + 1;
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
if (end === -1) {
|
|
matchedSlash = false;
|
|
end = i6 + 1;
|
|
}
|
|
if (code === 46) {
|
|
if (startDot === -1)
|
|
startDot = i6;
|
|
else if (preDotState !== 1)
|
|
preDotState = 1;
|
|
} else if (startDot !== -1) {
|
|
preDotState = -1;
|
|
}
|
|
}
|
|
if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
|
|
preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
|
|
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
|
return "";
|
|
}
|
|
return path2.slice(startDot, end);
|
|
},
|
|
format: function format2(pathObject) {
|
|
if (pathObject === null || typeof pathObject !== "object") {
|
|
throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject);
|
|
}
|
|
return _format("/", pathObject);
|
|
},
|
|
parse: function parse2(path2) {
|
|
assertPath(path2);
|
|
var ret = {
|
|
root: "",
|
|
dir: "",
|
|
base: "",
|
|
ext: "",
|
|
name: ""
|
|
};
|
|
if (path2.length === 0)
|
|
return ret;
|
|
var code = path2.charCodeAt(0);
|
|
var isAbsolute = code === 47;
|
|
var start;
|
|
if (isAbsolute) {
|
|
ret.root = "/";
|
|
start = 1;
|
|
} else {
|
|
start = 0;
|
|
}
|
|
var startDot = -1;
|
|
var startPart = 0;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
var i6 = path2.length - 1;
|
|
var preDotState = 0;
|
|
for (; i6 >= start; --i6) {
|
|
code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
startPart = i6 + 1;
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
if (end === -1) {
|
|
matchedSlash = false;
|
|
end = i6 + 1;
|
|
}
|
|
if (code === 46) {
|
|
if (startDot === -1)
|
|
startDot = i6;
|
|
else if (preDotState !== 1)
|
|
preDotState = 1;
|
|
} else if (startDot !== -1) {
|
|
preDotState = -1;
|
|
}
|
|
}
|
|
if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
|
|
preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
|
|
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
|
if (end !== -1) {
|
|
if (startPart === 0 && isAbsolute)
|
|
ret.base = ret.name = path2.slice(1, end);
|
|
else
|
|
ret.base = ret.name = path2.slice(startPart, end);
|
|
}
|
|
} else {
|
|
if (startPart === 0 && isAbsolute) {
|
|
ret.name = path2.slice(1, startDot);
|
|
ret.base = path2.slice(1, end);
|
|
} else {
|
|
ret.name = path2.slice(startPart, startDot);
|
|
ret.base = path2.slice(startPart, end);
|
|
}
|
|
ret.ext = path2.slice(startDot, end);
|
|
}
|
|
if (startPart > 0)
|
|
ret.dir = path2.slice(0, startPart - 1);
|
|
else if (isAbsolute)
|
|
ret.dir = "/";
|
|
return ret;
|
|
},
|
|
sep: "/",
|
|
delimiter: ":",
|
|
win32: null,
|
|
posix: null
|
|
};
|
|
posix.posix = posix;
|
|
exports$12 = posix;
|
|
return exports$12;
|
|
}
|
|
var exports$12, _dewExec3, exports3;
|
|
var init_chunk_23dbec7b = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/chunk-23dbec7b.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
init_chunk_2eac56ff();
|
|
exports$12 = {};
|
|
_dewExec3 = false;
|
|
exports3 = dew3();
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/url.js
|
|
var url_exports = {};
|
|
__export(url_exports, {
|
|
URL: () => _URL,
|
|
Url: () => Url,
|
|
default: () => h5,
|
|
fileURLToPath: () => fileURLToPath,
|
|
format: () => format,
|
|
parse: () => parse,
|
|
pathToFileURL: () => pathToFileURL,
|
|
resolve: () => resolve,
|
|
resolveObject: () => resolveObject
|
|
});
|
|
function r6() {
|
|
this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null;
|
|
}
|
|
function O2(t6, s5, h6) {
|
|
if (t6 && a5.isObject(t6) && t6 instanceof r6)
|
|
return t6;
|
|
var e7 = new r6();
|
|
return e7.parse(t6, s5, h6), e7;
|
|
}
|
|
function dew4() {
|
|
if (_dewExec4)
|
|
return exports4;
|
|
_dewExec4 = true;
|
|
var process3 = T2;
|
|
function assertPath(path2) {
|
|
if (typeof path2 !== "string") {
|
|
throw new TypeError("Path must be a string. Received " + JSON.stringify(path2));
|
|
}
|
|
}
|
|
function normalizeStringPosix(path2, allowAboveRoot) {
|
|
var res = "";
|
|
var lastSegmentLength = 0;
|
|
var lastSlash = -1;
|
|
var dots = 0;
|
|
var code;
|
|
for (var i6 = 0; i6 <= path2.length; ++i6) {
|
|
if (i6 < path2.length)
|
|
code = path2.charCodeAt(i6);
|
|
else if (code === 47)
|
|
break;
|
|
else
|
|
code = 47;
|
|
if (code === 47) {
|
|
if (lastSlash === i6 - 1 || dots === 1)
|
|
;
|
|
else if (lastSlash !== i6 - 1 && dots === 2) {
|
|
if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {
|
|
if (res.length > 2) {
|
|
var lastSlashIndex = res.lastIndexOf("/");
|
|
if (lastSlashIndex !== res.length - 1) {
|
|
if (lastSlashIndex === -1) {
|
|
res = "";
|
|
lastSegmentLength = 0;
|
|
} else {
|
|
res = res.slice(0, lastSlashIndex);
|
|
lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
|
|
}
|
|
lastSlash = i6;
|
|
dots = 0;
|
|
continue;
|
|
}
|
|
} else if (res.length === 2 || res.length === 1) {
|
|
res = "";
|
|
lastSegmentLength = 0;
|
|
lastSlash = i6;
|
|
dots = 0;
|
|
continue;
|
|
}
|
|
}
|
|
if (allowAboveRoot) {
|
|
if (res.length > 0)
|
|
res += "/..";
|
|
else
|
|
res = "..";
|
|
lastSegmentLength = 2;
|
|
}
|
|
} else {
|
|
if (res.length > 0)
|
|
res += "/" + path2.slice(lastSlash + 1, i6);
|
|
else
|
|
res = path2.slice(lastSlash + 1, i6);
|
|
lastSegmentLength = i6 - lastSlash - 1;
|
|
}
|
|
lastSlash = i6;
|
|
dots = 0;
|
|
} else if (code === 46 && dots !== -1) {
|
|
++dots;
|
|
} else {
|
|
dots = -1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
function _format(sep, pathObject) {
|
|
var dir = pathObject.dir || pathObject.root;
|
|
var base = pathObject.base || (pathObject.name || "") + (pathObject.ext || "");
|
|
if (!dir) {
|
|
return base;
|
|
}
|
|
if (dir === pathObject.root) {
|
|
return dir + base;
|
|
}
|
|
return dir + sep + base;
|
|
}
|
|
var posix = {
|
|
// path.resolve([from ...], to)
|
|
resolve: function resolve2() {
|
|
var resolvedPath = "";
|
|
var resolvedAbsolute = false;
|
|
var cwd2;
|
|
for (var i6 = arguments.length - 1; i6 >= -1 && !resolvedAbsolute; i6--) {
|
|
var path2;
|
|
if (i6 >= 0)
|
|
path2 = arguments[i6];
|
|
else {
|
|
if (cwd2 === void 0)
|
|
cwd2 = process3.cwd();
|
|
path2 = cwd2;
|
|
}
|
|
assertPath(path2);
|
|
if (path2.length === 0) {
|
|
continue;
|
|
}
|
|
resolvedPath = path2 + "/" + resolvedPath;
|
|
resolvedAbsolute = path2.charCodeAt(0) === 47;
|
|
}
|
|
resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
|
|
if (resolvedAbsolute) {
|
|
if (resolvedPath.length > 0)
|
|
return "/" + resolvedPath;
|
|
else
|
|
return "/";
|
|
} else if (resolvedPath.length > 0) {
|
|
return resolvedPath;
|
|
} else {
|
|
return ".";
|
|
}
|
|
},
|
|
normalize: function normalize(path2) {
|
|
assertPath(path2);
|
|
if (path2.length === 0)
|
|
return ".";
|
|
var isAbsolute = path2.charCodeAt(0) === 47;
|
|
var trailingSeparator = path2.charCodeAt(path2.length - 1) === 47;
|
|
path2 = normalizeStringPosix(path2, !isAbsolute);
|
|
if (path2.length === 0 && !isAbsolute)
|
|
path2 = ".";
|
|
if (path2.length > 0 && trailingSeparator)
|
|
path2 += "/";
|
|
if (isAbsolute)
|
|
return "/" + path2;
|
|
return path2;
|
|
},
|
|
isAbsolute: function isAbsolute(path2) {
|
|
assertPath(path2);
|
|
return path2.length > 0 && path2.charCodeAt(0) === 47;
|
|
},
|
|
join: function join() {
|
|
if (arguments.length === 0)
|
|
return ".";
|
|
var joined;
|
|
for (var i6 = 0; i6 < arguments.length; ++i6) {
|
|
var arg = arguments[i6];
|
|
assertPath(arg);
|
|
if (arg.length > 0) {
|
|
if (joined === void 0)
|
|
joined = arg;
|
|
else
|
|
joined += "/" + arg;
|
|
}
|
|
}
|
|
if (joined === void 0)
|
|
return ".";
|
|
return posix.normalize(joined);
|
|
},
|
|
relative: function relative(from, to) {
|
|
assertPath(from);
|
|
assertPath(to);
|
|
if (from === to)
|
|
return "";
|
|
from = posix.resolve(from);
|
|
to = posix.resolve(to);
|
|
if (from === to)
|
|
return "";
|
|
var fromStart = 1;
|
|
for (; fromStart < from.length; ++fromStart) {
|
|
if (from.charCodeAt(fromStart) !== 47)
|
|
break;
|
|
}
|
|
var fromEnd = from.length;
|
|
var fromLen = fromEnd - fromStart;
|
|
var toStart = 1;
|
|
for (; toStart < to.length; ++toStart) {
|
|
if (to.charCodeAt(toStart) !== 47)
|
|
break;
|
|
}
|
|
var toEnd = to.length;
|
|
var toLen = toEnd - toStart;
|
|
var length = fromLen < toLen ? fromLen : toLen;
|
|
var lastCommonSep = -1;
|
|
var i6 = 0;
|
|
for (; i6 <= length; ++i6) {
|
|
if (i6 === length) {
|
|
if (toLen > length) {
|
|
if (to.charCodeAt(toStart + i6) === 47) {
|
|
return to.slice(toStart + i6 + 1);
|
|
} else if (i6 === 0) {
|
|
return to.slice(toStart + i6);
|
|
}
|
|
} else if (fromLen > length) {
|
|
if (from.charCodeAt(fromStart + i6) === 47) {
|
|
lastCommonSep = i6;
|
|
} else if (i6 === 0) {
|
|
lastCommonSep = 0;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
var fromCode = from.charCodeAt(fromStart + i6);
|
|
var toCode = to.charCodeAt(toStart + i6);
|
|
if (fromCode !== toCode)
|
|
break;
|
|
else if (fromCode === 47)
|
|
lastCommonSep = i6;
|
|
}
|
|
var out = "";
|
|
for (i6 = fromStart + lastCommonSep + 1; i6 <= fromEnd; ++i6) {
|
|
if (i6 === fromEnd || from.charCodeAt(i6) === 47) {
|
|
if (out.length === 0)
|
|
out += "..";
|
|
else
|
|
out += "/..";
|
|
}
|
|
}
|
|
if (out.length > 0)
|
|
return out + to.slice(toStart + lastCommonSep);
|
|
else {
|
|
toStart += lastCommonSep;
|
|
if (to.charCodeAt(toStart) === 47)
|
|
++toStart;
|
|
return to.slice(toStart);
|
|
}
|
|
},
|
|
_makeLong: function _makeLong(path2) {
|
|
return path2;
|
|
},
|
|
dirname: function dirname(path2) {
|
|
assertPath(path2);
|
|
if (path2.length === 0)
|
|
return ".";
|
|
var code = path2.charCodeAt(0);
|
|
var hasRoot = code === 47;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
for (var i6 = path2.length - 1; i6 >= 1; --i6) {
|
|
code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
end = i6;
|
|
break;
|
|
}
|
|
} else {
|
|
matchedSlash = false;
|
|
}
|
|
}
|
|
if (end === -1)
|
|
return hasRoot ? "/" : ".";
|
|
if (hasRoot && end === 1)
|
|
return "//";
|
|
return path2.slice(0, end);
|
|
},
|
|
basename: function basename(path2, ext) {
|
|
if (ext !== void 0 && typeof ext !== "string")
|
|
throw new TypeError('"ext" argument must be a string');
|
|
assertPath(path2);
|
|
var start = 0;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
var i6;
|
|
if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {
|
|
if (ext.length === path2.length && ext === path2)
|
|
return "";
|
|
var extIdx = ext.length - 1;
|
|
var firstNonSlashEnd = -1;
|
|
for (i6 = path2.length - 1; i6 >= 0; --i6) {
|
|
var code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
start = i6 + 1;
|
|
break;
|
|
}
|
|
} else {
|
|
if (firstNonSlashEnd === -1) {
|
|
matchedSlash = false;
|
|
firstNonSlashEnd = i6 + 1;
|
|
}
|
|
if (extIdx >= 0) {
|
|
if (code === ext.charCodeAt(extIdx)) {
|
|
if (--extIdx === -1) {
|
|
end = i6;
|
|
}
|
|
} else {
|
|
extIdx = -1;
|
|
end = firstNonSlashEnd;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (start === end)
|
|
end = firstNonSlashEnd;
|
|
else if (end === -1)
|
|
end = path2.length;
|
|
return path2.slice(start, end);
|
|
} else {
|
|
for (i6 = path2.length - 1; i6 >= 0; --i6) {
|
|
if (path2.charCodeAt(i6) === 47) {
|
|
if (!matchedSlash) {
|
|
start = i6 + 1;
|
|
break;
|
|
}
|
|
} else if (end === -1) {
|
|
matchedSlash = false;
|
|
end = i6 + 1;
|
|
}
|
|
}
|
|
if (end === -1)
|
|
return "";
|
|
return path2.slice(start, end);
|
|
}
|
|
},
|
|
extname: function extname(path2) {
|
|
assertPath(path2);
|
|
var startDot = -1;
|
|
var startPart = 0;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
var preDotState = 0;
|
|
for (var i6 = path2.length - 1; i6 >= 0; --i6) {
|
|
var code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
startPart = i6 + 1;
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
if (end === -1) {
|
|
matchedSlash = false;
|
|
end = i6 + 1;
|
|
}
|
|
if (code === 46) {
|
|
if (startDot === -1)
|
|
startDot = i6;
|
|
else if (preDotState !== 1)
|
|
preDotState = 1;
|
|
} else if (startDot !== -1) {
|
|
preDotState = -1;
|
|
}
|
|
}
|
|
if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
|
|
preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
|
|
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
|
return "";
|
|
}
|
|
return path2.slice(startDot, end);
|
|
},
|
|
format: function format2(pathObject) {
|
|
if (pathObject === null || typeof pathObject !== "object") {
|
|
throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject);
|
|
}
|
|
return _format("/", pathObject);
|
|
},
|
|
parse: function parse2(path2) {
|
|
assertPath(path2);
|
|
var ret = {
|
|
root: "",
|
|
dir: "",
|
|
base: "",
|
|
ext: "",
|
|
name: ""
|
|
};
|
|
if (path2.length === 0)
|
|
return ret;
|
|
var code = path2.charCodeAt(0);
|
|
var isAbsolute = code === 47;
|
|
var start;
|
|
if (isAbsolute) {
|
|
ret.root = "/";
|
|
start = 1;
|
|
} else {
|
|
start = 0;
|
|
}
|
|
var startDot = -1;
|
|
var startPart = 0;
|
|
var end = -1;
|
|
var matchedSlash = true;
|
|
var i6 = path2.length - 1;
|
|
var preDotState = 0;
|
|
for (; i6 >= start; --i6) {
|
|
code = path2.charCodeAt(i6);
|
|
if (code === 47) {
|
|
if (!matchedSlash) {
|
|
startPart = i6 + 1;
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
if (end === -1) {
|
|
matchedSlash = false;
|
|
end = i6 + 1;
|
|
}
|
|
if (code === 46) {
|
|
if (startDot === -1)
|
|
startDot = i6;
|
|
else if (preDotState !== 1)
|
|
preDotState = 1;
|
|
} else if (startDot !== -1) {
|
|
preDotState = -1;
|
|
}
|
|
}
|
|
if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
|
|
preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
|
|
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
|
if (end !== -1) {
|
|
if (startPart === 0 && isAbsolute)
|
|
ret.base = ret.name = path2.slice(1, end);
|
|
else
|
|
ret.base = ret.name = path2.slice(startPart, end);
|
|
}
|
|
} else {
|
|
if (startPart === 0 && isAbsolute) {
|
|
ret.name = path2.slice(1, startDot);
|
|
ret.base = path2.slice(1, end);
|
|
} else {
|
|
ret.name = path2.slice(startPart, startDot);
|
|
ret.base = path2.slice(startPart, end);
|
|
}
|
|
ret.ext = path2.slice(startDot, end);
|
|
}
|
|
if (startPart > 0)
|
|
ret.dir = path2.slice(0, startPart - 1);
|
|
else if (isAbsolute)
|
|
ret.dir = "/";
|
|
return ret;
|
|
},
|
|
sep: "/",
|
|
delimiter: ":",
|
|
win32: null,
|
|
posix: null
|
|
};
|
|
posix.posix = posix;
|
|
exports4 = posix;
|
|
return exports4;
|
|
}
|
|
function fileURLToPath$1(path2) {
|
|
if (typeof path2 === "string")
|
|
path2 = new URL(path2);
|
|
else if (!(path2 instanceof URL)) {
|
|
throw new Deno.errors.InvalidData(
|
|
"invalid argument path , must be a string or URL"
|
|
);
|
|
}
|
|
if (path2.protocol !== "file:") {
|
|
throw new Deno.errors.InvalidData("invalid url scheme");
|
|
}
|
|
return isWindows$1 ? getPathFromURLWin$1(path2) : getPathFromURLPosix$1(path2);
|
|
}
|
|
function getPathFromURLWin$1(url) {
|
|
const hostname = url.hostname;
|
|
let pathname = url.pathname;
|
|
for (let n7 = 0; n7 < pathname.length; n7++) {
|
|
if (pathname[n7] === "%") {
|
|
const third = pathname.codePointAt(n7 + 2) || 32;
|
|
if (pathname[n7 + 1] === "2" && third === 102 || // 2f 2F /
|
|
pathname[n7 + 1] === "5" && third === 99) {
|
|
throw new Deno.errors.InvalidData(
|
|
"must not include encoded \\ or / characters"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
pathname = pathname.replace(forwardSlashRegEx$1, "\\");
|
|
pathname = decodeURIComponent(pathname);
|
|
if (hostname !== "") {
|
|
return `\\\\${hostname}${pathname}`;
|
|
} else {
|
|
const letter = pathname.codePointAt(1) | 32;
|
|
const sep = pathname[2];
|
|
if (letter < CHAR_LOWERCASE_A$1 || letter > CHAR_LOWERCASE_Z$1 || // a..z A..Z
|
|
sep !== ":") {
|
|
throw new Deno.errors.InvalidData("file url path must be absolute");
|
|
}
|
|
return pathname.slice(1);
|
|
}
|
|
}
|
|
function getPathFromURLPosix$1(url) {
|
|
if (url.hostname !== "") {
|
|
throw new Deno.errors.InvalidData("invalid file url hostname");
|
|
}
|
|
const pathname = url.pathname;
|
|
for (let n7 = 0; n7 < pathname.length; n7++) {
|
|
if (pathname[n7] === "%") {
|
|
const third = pathname.codePointAt(n7 + 2) || 32;
|
|
if (pathname[n7 + 1] === "2" && third === 102) {
|
|
throw new Deno.errors.InvalidData(
|
|
"must not include encoded / characters"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
return decodeURIComponent(pathname);
|
|
}
|
|
function pathToFileURL$1(filepath) {
|
|
let resolved = path.resolve(filepath);
|
|
const filePathLast = filepath.charCodeAt(filepath.length - 1);
|
|
if ((filePathLast === CHAR_FORWARD_SLASH$1 || isWindows$1 && filePathLast === CHAR_BACKWARD_SLASH$1) && resolved[resolved.length - 1] !== path.sep) {
|
|
resolved += "/";
|
|
}
|
|
const outURL = new URL("file://");
|
|
if (resolved.includes("%"))
|
|
resolved = resolved.replace(percentRegEx$1, "%25");
|
|
if (!isWindows$1 && resolved.includes("\\")) {
|
|
resolved = resolved.replace(backslashRegEx$1, "%5C");
|
|
}
|
|
if (resolved.includes("\n"))
|
|
resolved = resolved.replace(newlineRegEx$1, "%0A");
|
|
if (resolved.includes("\r")) {
|
|
resolved = resolved.replace(carriageReturnRegEx$1, "%0D");
|
|
}
|
|
if (resolved.includes(" "))
|
|
resolved = resolved.replace(tabRegEx$1, "%09");
|
|
outURL.pathname = resolved;
|
|
return outURL;
|
|
}
|
|
function fileURLToPath(path2) {
|
|
if (typeof path2 === "string")
|
|
path2 = new URL(path2);
|
|
else if (!(path2 instanceof URL)) {
|
|
throw new Deno.errors.InvalidData(
|
|
"invalid argument path , must be a string or URL"
|
|
);
|
|
}
|
|
if (path2.protocol !== "file:") {
|
|
throw new Deno.errors.InvalidData("invalid url scheme");
|
|
}
|
|
return isWindows ? getPathFromURLWin(path2) : getPathFromURLPosix(path2);
|
|
}
|
|
function getPathFromURLWin(url) {
|
|
const hostname = url.hostname;
|
|
let pathname = url.pathname;
|
|
for (let n7 = 0; n7 < pathname.length; n7++) {
|
|
if (pathname[n7] === "%") {
|
|
const third = pathname.codePointAt(n7 + 2) || 32;
|
|
if (pathname[n7 + 1] === "2" && third === 102 || // 2f 2F /
|
|
pathname[n7 + 1] === "5" && third === 99) {
|
|
throw new Deno.errors.InvalidData(
|
|
"must not include encoded \\ or / characters"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
pathname = pathname.replace(forwardSlashRegEx, "\\");
|
|
pathname = decodeURIComponent(pathname);
|
|
if (hostname !== "") {
|
|
return `\\\\${hostname}${pathname}`;
|
|
} else {
|
|
const letter = pathname.codePointAt(1) | 32;
|
|
const sep = pathname[2];
|
|
if (letter < CHAR_LOWERCASE_A || letter > CHAR_LOWERCASE_Z || // a..z A..Z
|
|
sep !== ":") {
|
|
throw new Deno.errors.InvalidData("file url path must be absolute");
|
|
}
|
|
return pathname.slice(1);
|
|
}
|
|
}
|
|
function getPathFromURLPosix(url) {
|
|
if (url.hostname !== "") {
|
|
throw new Deno.errors.InvalidData("invalid file url hostname");
|
|
}
|
|
const pathname = url.pathname;
|
|
for (let n7 = 0; n7 < pathname.length; n7++) {
|
|
if (pathname[n7] === "%") {
|
|
const third = pathname.codePointAt(n7 + 2) || 32;
|
|
if (pathname[n7 + 1] === "2" && third === 102) {
|
|
throw new Deno.errors.InvalidData(
|
|
"must not include encoded / characters"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
return decodeURIComponent(pathname);
|
|
}
|
|
function pathToFileURL(filepath) {
|
|
let resolved = exports3.resolve(filepath);
|
|
const filePathLast = filepath.charCodeAt(filepath.length - 1);
|
|
if ((filePathLast === CHAR_FORWARD_SLASH || isWindows && filePathLast === CHAR_BACKWARD_SLASH) && resolved[resolved.length - 1] !== exports3.sep) {
|
|
resolved += "/";
|
|
}
|
|
const outURL = new URL("file://");
|
|
if (resolved.includes("%"))
|
|
resolved = resolved.replace(percentRegEx, "%25");
|
|
if (!isWindows && resolved.includes("\\")) {
|
|
resolved = resolved.replace(backslashRegEx, "%5C");
|
|
}
|
|
if (resolved.includes("\n"))
|
|
resolved = resolved.replace(newlineRegEx, "%0A");
|
|
if (resolved.includes("\r")) {
|
|
resolved = resolved.replace(carriageReturnRegEx, "%0D");
|
|
}
|
|
if (resolved.includes(" "))
|
|
resolved = resolved.replace(tabRegEx, "%09");
|
|
outURL.pathname = resolved;
|
|
return outURL;
|
|
}
|
|
var h5, e6, a5, o6, n6, i5, l5, p5, c5, u5, f5, m3, v3, g2, y3, b2, exports4, _dewExec4, path, processPlatform$1, CHAR_BACKWARD_SLASH$1, CHAR_FORWARD_SLASH$1, CHAR_LOWERCASE_A$1, CHAR_LOWERCASE_Z$1, isWindows$1, forwardSlashRegEx$1, percentRegEx$1, backslashRegEx$1, newlineRegEx$1, carriageReturnRegEx$1, tabRegEx$1, processPlatform, Url, format, resolve, resolveObject, parse, _URL, CHAR_BACKWARD_SLASH, CHAR_FORWARD_SLASH, CHAR_LOWERCASE_A, CHAR_LOWERCASE_Z, isWindows, forwardSlashRegEx, percentRegEx, backslashRegEx, newlineRegEx, carriageReturnRegEx, tabRegEx;
|
|
var init_url = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/url.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
init_chunk_924bb2e1();
|
|
init_chunk_b04e620d();
|
|
init_chunk_5decc758();
|
|
init_chunk_23dbec7b();
|
|
init_chunk_2eac56ff();
|
|
h5 = {};
|
|
e6 = p3;
|
|
a5 = { isString: function(t6) {
|
|
return "string" == typeof t6;
|
|
}, isObject: function(t6) {
|
|
return "object" == typeof t6 && null !== t6;
|
|
}, isNull: function(t6) {
|
|
return null === t6;
|
|
}, isNullOrUndefined: function(t6) {
|
|
return null == t6;
|
|
} };
|
|
h5.parse = O2, h5.resolve = function(t6, s5) {
|
|
return O2(t6, false, true).resolve(s5);
|
|
}, h5.resolveObject = function(t6, s5) {
|
|
return t6 ? O2(t6, false, true).resolveObject(s5) : s5;
|
|
}, h5.format = function(t6) {
|
|
a5.isString(t6) && (t6 = O2(t6));
|
|
return t6 instanceof r6 ? t6.format() : r6.prototype.format.call(t6);
|
|
}, h5.Url = r6;
|
|
o6 = /^([a-z0-9.+-]+:)/i;
|
|
n6 = /:[0-9]*$/;
|
|
i5 = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/;
|
|
l5 = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r", "\n", " "]);
|
|
p5 = ["'"].concat(l5);
|
|
c5 = ["%", "/", "?", ";", "#"].concat(p5);
|
|
u5 = ["/", "?", "#"];
|
|
f5 = /^[+a-z0-9A-Z_-]{0,63}$/;
|
|
m3 = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;
|
|
v3 = { javascript: true, "javascript:": true };
|
|
g2 = { javascript: true, "javascript:": true };
|
|
y3 = { http: true, https: true, ftp: true, gopher: true, file: true, "http:": true, "https:": true, "ftp:": true, "gopher:": true, "file:": true };
|
|
b2 = o4;
|
|
r6.prototype.parse = function(t6, s5, h6) {
|
|
if (!a5.isString(t6))
|
|
throw new TypeError("Parameter 'url' must be a string, not " + typeof t6);
|
|
var r7 = t6.indexOf("?"), n7 = -1 !== r7 && r7 < t6.indexOf("#") ? "?" : "#", l6 = t6.split(n7);
|
|
l6[0] = l6[0].replace(/\\/g, "/");
|
|
var O3 = t6 = l6.join(n7);
|
|
if (O3 = O3.trim(), !h6 && 1 === t6.split("#").length) {
|
|
var d4 = i5.exec(O3);
|
|
if (d4)
|
|
return this.path = O3, this.href = O3, this.pathname = d4[1], d4[2] ? (this.search = d4[2], this.query = s5 ? b2.parse(this.search.substr(1)) : this.search.substr(1)) : s5 && (this.search = "", this.query = {}), this;
|
|
}
|
|
var j2 = o6.exec(O3);
|
|
if (j2) {
|
|
var q = (j2 = j2[0]).toLowerCase();
|
|
this.protocol = q, O3 = O3.substr(j2.length);
|
|
}
|
|
if (h6 || j2 || O3.match(/^\/\/[^@\/]+@[^@\/]+/)) {
|
|
var x2 = "//" === O3.substr(0, 2);
|
|
!x2 || j2 && g2[j2] || (O3 = O3.substr(2), this.slashes = true);
|
|
}
|
|
if (!g2[j2] && (x2 || j2 && !y3[j2])) {
|
|
for (var A2, C2, I2 = -1, w2 = 0; w2 < u5.length; w2++) {
|
|
-1 !== (N2 = O3.indexOf(u5[w2])) && (-1 === I2 || N2 < I2) && (I2 = N2);
|
|
}
|
|
-1 !== (C2 = -1 === I2 ? O3.lastIndexOf("@") : O3.lastIndexOf("@", I2)) && (A2 = O3.slice(0, C2), O3 = O3.slice(C2 + 1), this.auth = decodeURIComponent(A2)), I2 = -1;
|
|
for (w2 = 0; w2 < c5.length; w2++) {
|
|
var N2;
|
|
-1 !== (N2 = O3.indexOf(c5[w2])) && (-1 === I2 || N2 < I2) && (I2 = N2);
|
|
}
|
|
-1 === I2 && (I2 = O3.length), this.host = O3.slice(0, I2), O3 = O3.slice(I2), this.parseHost(), this.hostname = this.hostname || "";
|
|
var U2 = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
|
|
if (!U2)
|
|
for (var k2 = this.hostname.split(/\./), S2 = (w2 = 0, k2.length); w2 < S2; w2++) {
|
|
var R2 = k2[w2];
|
|
if (R2 && !R2.match(f5)) {
|
|
for (var $ = "", z2 = 0, H = R2.length; z2 < H; z2++)
|
|
R2.charCodeAt(z2) > 127 ? $ += "x" : $ += R2[z2];
|
|
if (!$.match(f5)) {
|
|
var L2 = k2.slice(0, w2), Z = k2.slice(w2 + 1), _2 = R2.match(m3);
|
|
_2 && (L2.push(_2[1]), Z.unshift(_2[2])), Z.length && (O3 = "/" + Z.join(".") + O3), this.hostname = L2.join(".");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), U2 || (this.hostname = e6.toASCII(this.hostname));
|
|
var E2 = this.port ? ":" + this.port : "", P2 = this.hostname || "";
|
|
this.host = P2 + E2, this.href += this.host, U2 && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== O3[0] && (O3 = "/" + O3));
|
|
}
|
|
if (!v3[q])
|
|
for (w2 = 0, S2 = p5.length; w2 < S2; w2++) {
|
|
var T3 = p5[w2];
|
|
if (-1 !== O3.indexOf(T3)) {
|
|
var B2 = encodeURIComponent(T3);
|
|
B2 === T3 && (B2 = escape(T3)), O3 = O3.split(T3).join(B2);
|
|
}
|
|
}
|
|
var D2 = O3.indexOf("#");
|
|
-1 !== D2 && (this.hash = O3.substr(D2), O3 = O3.slice(0, D2));
|
|
var F2 = O3.indexOf("?");
|
|
if (-1 !== F2 ? (this.search = O3.substr(F2), this.query = O3.substr(F2 + 1), s5 && (this.query = b2.parse(this.query)), O3 = O3.slice(0, F2)) : s5 && (this.search = "", this.query = {}), O3 && (this.pathname = O3), y3[q] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
|
|
E2 = this.pathname || "";
|
|
var G = this.search || "";
|
|
this.path = E2 + G;
|
|
}
|
|
return this.href = this.format(), this;
|
|
}, r6.prototype.format = function() {
|
|
var t6 = this.auth || "";
|
|
t6 && (t6 = (t6 = encodeURIComponent(t6)).replace(/%3A/i, ":"), t6 += "@");
|
|
var s5 = this.protocol || "", h6 = this.pathname || "", e7 = this.hash || "", r7 = false, o7 = "";
|
|
this.host ? r7 = t6 + this.host : this.hostname && (r7 = t6 + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (r7 += ":" + this.port)), this.query && a5.isObject(this.query) && Object.keys(this.query).length && (o7 = b2.stringify(this.query));
|
|
var n7 = this.search || o7 && "?" + o7 || "";
|
|
return s5 && ":" !== s5.substr(-1) && (s5 += ":"), this.slashes || (!s5 || y3[s5]) && false !== r7 ? (r7 = "//" + (r7 || ""), h6 && "/" !== h6.charAt(0) && (h6 = "/" + h6)) : r7 || (r7 = ""), e7 && "#" !== e7.charAt(0) && (e7 = "#" + e7), n7 && "?" !== n7.charAt(0) && (n7 = "?" + n7), s5 + r7 + (h6 = h6.replace(/[?#]/g, function(t7) {
|
|
return encodeURIComponent(t7);
|
|
})) + (n7 = n7.replace("#", "%23")) + e7;
|
|
}, r6.prototype.resolve = function(t6) {
|
|
return this.resolveObject(O2(t6, false, true)).format();
|
|
}, r6.prototype.resolveObject = function(t6) {
|
|
if (a5.isString(t6)) {
|
|
var s5 = new r6();
|
|
s5.parse(t6, false, true), t6 = s5;
|
|
}
|
|
for (var h6 = new r6(), e7 = Object.keys(this), o7 = 0; o7 < e7.length; o7++) {
|
|
var n7 = e7[o7];
|
|
h6[n7] = this[n7];
|
|
}
|
|
if (h6.hash = t6.hash, "" === t6.href)
|
|
return h6.href = h6.format(), h6;
|
|
if (t6.slashes && !t6.protocol) {
|
|
for (var i6 = Object.keys(t6), l6 = 0; l6 < i6.length; l6++) {
|
|
var p6 = i6[l6];
|
|
"protocol" !== p6 && (h6[p6] = t6[p6]);
|
|
}
|
|
return y3[h6.protocol] && h6.hostname && !h6.pathname && (h6.path = h6.pathname = "/"), h6.href = h6.format(), h6;
|
|
}
|
|
if (t6.protocol && t6.protocol !== h6.protocol) {
|
|
if (!y3[t6.protocol]) {
|
|
for (var c6 = Object.keys(t6), u6 = 0; u6 < c6.length; u6++) {
|
|
var f6 = c6[u6];
|
|
h6[f6] = t6[f6];
|
|
}
|
|
return h6.href = h6.format(), h6;
|
|
}
|
|
if (h6.protocol = t6.protocol, t6.host || g2[t6.protocol])
|
|
h6.pathname = t6.pathname;
|
|
else {
|
|
for (var m4 = (t6.pathname || "").split("/"); m4.length && !(t6.host = m4.shift()); )
|
|
;
|
|
t6.host || (t6.host = ""), t6.hostname || (t6.hostname = ""), "" !== m4[0] && m4.unshift(""), m4.length < 2 && m4.unshift(""), h6.pathname = m4.join("/");
|
|
}
|
|
if (h6.search = t6.search, h6.query = t6.query, h6.host = t6.host || "", h6.auth = t6.auth, h6.hostname = t6.hostname || t6.host, h6.port = t6.port, h6.pathname || h6.search) {
|
|
var v4 = h6.pathname || "", b3 = h6.search || "";
|
|
h6.path = v4 + b3;
|
|
}
|
|
return h6.slashes = h6.slashes || t6.slashes, h6.href = h6.format(), h6;
|
|
}
|
|
var O3 = h6.pathname && "/" === h6.pathname.charAt(0), d4 = t6.host || t6.pathname && "/" === t6.pathname.charAt(0), j2 = d4 || O3 || h6.host && t6.pathname, q = j2, x2 = h6.pathname && h6.pathname.split("/") || [], A2 = (m4 = t6.pathname && t6.pathname.split("/") || [], h6.protocol && !y3[h6.protocol]);
|
|
if (A2 && (h6.hostname = "", h6.port = null, h6.host && ("" === x2[0] ? x2[0] = h6.host : x2.unshift(h6.host)), h6.host = "", t6.protocol && (t6.hostname = null, t6.port = null, t6.host && ("" === m4[0] ? m4[0] = t6.host : m4.unshift(t6.host)), t6.host = null), j2 = j2 && ("" === m4[0] || "" === x2[0])), d4)
|
|
h6.host = t6.host || "" === t6.host ? t6.host : h6.host, h6.hostname = t6.hostname || "" === t6.hostname ? t6.hostname : h6.hostname, h6.search = t6.search, h6.query = t6.query, x2 = m4;
|
|
else if (m4.length)
|
|
x2 || (x2 = []), x2.pop(), x2 = x2.concat(m4), h6.search = t6.search, h6.query = t6.query;
|
|
else if (!a5.isNullOrUndefined(t6.search)) {
|
|
if (A2)
|
|
h6.hostname = h6.host = x2.shift(), (U2 = !!(h6.host && h6.host.indexOf("@") > 0) && h6.host.split("@")) && (h6.auth = U2.shift(), h6.host = h6.hostname = U2.shift());
|
|
return h6.search = t6.search, h6.query = t6.query, a5.isNull(h6.pathname) && a5.isNull(h6.search) || (h6.path = (h6.pathname ? h6.pathname : "") + (h6.search ? h6.search : "")), h6.href = h6.format(), h6;
|
|
}
|
|
if (!x2.length)
|
|
return h6.pathname = null, h6.search ? h6.path = "/" + h6.search : h6.path = null, h6.href = h6.format(), h6;
|
|
for (var C2 = x2.slice(-1)[0], I2 = (h6.host || t6.host || x2.length > 1) && ("." === C2 || ".." === C2) || "" === C2, w2 = 0, N2 = x2.length; N2 >= 0; N2--)
|
|
"." === (C2 = x2[N2]) ? x2.splice(N2, 1) : ".." === C2 ? (x2.splice(N2, 1), w2++) : w2 && (x2.splice(N2, 1), w2--);
|
|
if (!j2 && !q)
|
|
for (; w2--; w2)
|
|
x2.unshift("..");
|
|
!j2 || "" === x2[0] || x2[0] && "/" === x2[0].charAt(0) || x2.unshift(""), I2 && "/" !== x2.join("/").substr(-1) && x2.push("");
|
|
var U2, k2 = "" === x2[0] || x2[0] && "/" === x2[0].charAt(0);
|
|
A2 && (h6.hostname = h6.host = k2 ? "" : x2.length ? x2.shift() : "", (U2 = !!(h6.host && h6.host.indexOf("@") > 0) && h6.host.split("@")) && (h6.auth = U2.shift(), h6.host = h6.hostname = U2.shift()));
|
|
return (j2 = j2 || h6.host && x2.length) && !k2 && x2.unshift(""), x2.length ? h6.pathname = x2.join("/") : (h6.pathname = null, h6.path = null), a5.isNull(h6.pathname) && a5.isNull(h6.search) || (h6.path = (h6.pathname ? h6.pathname : "") + (h6.search ? h6.search : "")), h6.auth = t6.auth || h6.auth, h6.slashes = h6.slashes || t6.slashes, h6.href = h6.format(), h6;
|
|
}, r6.prototype.parseHost = function() {
|
|
var t6 = this.host, s5 = n6.exec(t6);
|
|
s5 && (":" !== (s5 = s5[0]) && (this.port = s5.substr(1)), t6 = t6.substr(0, t6.length - s5.length)), t6 && (this.hostname = t6);
|
|
};
|
|
h5.Url;
|
|
h5.format;
|
|
h5.resolve;
|
|
h5.resolveObject;
|
|
exports4 = {};
|
|
_dewExec4 = false;
|
|
path = dew4();
|
|
processPlatform$1 = typeof Deno !== "undefined" ? Deno.build.os === "windows" ? "win32" : Deno.build.os : void 0;
|
|
h5.URL = typeof URL !== "undefined" ? URL : null;
|
|
h5.pathToFileURL = pathToFileURL$1;
|
|
h5.fileURLToPath = fileURLToPath$1;
|
|
h5.Url;
|
|
h5.format;
|
|
h5.resolve;
|
|
h5.resolveObject;
|
|
h5.URL;
|
|
CHAR_BACKWARD_SLASH$1 = 92;
|
|
CHAR_FORWARD_SLASH$1 = 47;
|
|
CHAR_LOWERCASE_A$1 = 97;
|
|
CHAR_LOWERCASE_Z$1 = 122;
|
|
isWindows$1 = processPlatform$1 === "win32";
|
|
forwardSlashRegEx$1 = /\//g;
|
|
percentRegEx$1 = /%/g;
|
|
backslashRegEx$1 = /\\/g;
|
|
newlineRegEx$1 = /\n/g;
|
|
carriageReturnRegEx$1 = /\r/g;
|
|
tabRegEx$1 = /\t/g;
|
|
processPlatform = typeof Deno !== "undefined" ? Deno.build.os === "windows" ? "win32" : Deno.build.os : void 0;
|
|
h5.URL = typeof URL !== "undefined" ? URL : null;
|
|
h5.pathToFileURL = pathToFileURL;
|
|
h5.fileURLToPath = fileURLToPath;
|
|
Url = h5.Url;
|
|
format = h5.format;
|
|
resolve = h5.resolve;
|
|
resolveObject = h5.resolveObject;
|
|
parse = h5.parse;
|
|
_URL = h5.URL;
|
|
CHAR_BACKWARD_SLASH = 92;
|
|
CHAR_FORWARD_SLASH = 47;
|
|
CHAR_LOWERCASE_A = 97;
|
|
CHAR_LOWERCASE_Z = 122;
|
|
isWindows = processPlatform === "win32";
|
|
forwardSlashRegEx = /\//g;
|
|
percentRegEx = /%/g;
|
|
backslashRegEx = /\\/g;
|
|
newlineRegEx = /\n/g;
|
|
carriageReturnRegEx = /\r/g;
|
|
tabRegEx = /\t/g;
|
|
}
|
|
});
|
|
|
|
// node_modules/@jspm/core/nodelibs/browser/net.js
|
|
var net_exports = {};
|
|
__export(net_exports, {
|
|
Server: () => unimplemented2,
|
|
Socket: () => unimplemented2,
|
|
Stream: () => unimplemented2,
|
|
_createServerHandle: () => unimplemented2,
|
|
_normalizeArgs: () => unimplemented2,
|
|
_setSimultaneousAccepts: () => unimplemented2,
|
|
connect: () => unimplemented2,
|
|
createConnection: () => unimplemented2,
|
|
createServer: () => unimplemented2,
|
|
default: () => net,
|
|
isIP: () => unimplemented2,
|
|
isIPv4: () => unimplemented2,
|
|
isIPv6: () => unimplemented2
|
|
});
|
|
function unimplemented2() {
|
|
throw new Error("Node.js net module is not supported by JSPM core outside of Node.js");
|
|
}
|
|
var net;
|
|
var init_net = __esm({
|
|
"node_modules/@jspm/core/nodelibs/browser/net.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
net = {
|
|
_createServerHandle: unimplemented2,
|
|
_normalizeArgs: unimplemented2,
|
|
_setSimultaneousAccepts: unimplemented2,
|
|
connect: unimplemented2,
|
|
createConnection: unimplemented2,
|
|
createServer: unimplemented2,
|
|
isIP: unimplemented2,
|
|
isIPv4: unimplemented2,
|
|
isIPv6: unimplemented2,
|
|
Server: unimplemented2,
|
|
Socket: unimplemented2,
|
|
Stream: unimplemented2
|
|
};
|
|
}
|
|
});
|
|
|
|
// build/lib/connect/tcp.js
|
|
var require_tcp = __commonJS({
|
|
"build/lib/connect/tcp.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var net_1 = __importDefault((init_net(), __toCommonJS(net_exports)));
|
|
var debug_1 = __importDefault(require_browser4());
|
|
var debug = (0, debug_1.default)("mqttjs:tcp");
|
|
var buildStream = (client, opts) => {
|
|
opts.port = opts.port || 1883;
|
|
opts.hostname = opts.hostname || opts.host || "localhost";
|
|
const { port } = opts;
|
|
const host = opts.hostname;
|
|
debug("port %d and host %s", port, host);
|
|
return net_1.default.createConnection(port, host);
|
|
};
|
|
exports5.default = buildStream;
|
|
}
|
|
});
|
|
|
|
// node_modules/esbuild-plugin-polyfill-node/polyfills/empty.js
|
|
var empty_exports = {};
|
|
__export(empty_exports, {
|
|
default: () => empty_default
|
|
});
|
|
var empty_default;
|
|
var init_empty = __esm({
|
|
"node_modules/esbuild-plugin-polyfill-node/polyfills/empty.js"() {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
empty_default = {};
|
|
}
|
|
});
|
|
|
|
// build/lib/connect/tls.js
|
|
var require_tls = __commonJS({
|
|
"build/lib/connect/tls.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var tls_1 = __importDefault((init_empty(), __toCommonJS(empty_exports)));
|
|
var net_1 = __importDefault((init_net(), __toCommonJS(net_exports)));
|
|
var debug_1 = __importDefault(require_browser4());
|
|
var debug = (0, debug_1.default)("mqttjs:tls");
|
|
var buildStream = (client, opts) => {
|
|
opts.port = opts.port || 8883;
|
|
opts.host = opts.hostname || opts.host || "localhost";
|
|
if (net_1.default.isIP(opts.host) === 0) {
|
|
opts.servername = opts.host;
|
|
}
|
|
opts.rejectUnauthorized = opts.rejectUnauthorized !== false;
|
|
delete opts.path;
|
|
debug("port %d host %s rejectUnauthorized %b", opts.port, opts.host, opts.rejectUnauthorized);
|
|
const connection = tls_1.default.connect(opts);
|
|
connection.on("secureConnect", () => {
|
|
if (opts.rejectUnauthorized && !connection.authorized) {
|
|
connection.emit("error", new Error("TLS not authorized"));
|
|
} else {
|
|
connection.removeListener("error", handleTLSerrors);
|
|
}
|
|
});
|
|
function handleTLSerrors(err) {
|
|
if (opts.rejectUnauthorized) {
|
|
client.emit("error", err);
|
|
}
|
|
connection.end();
|
|
}
|
|
connection.on("error", handleTLSerrors);
|
|
return connection;
|
|
};
|
|
exports5.default = buildStream;
|
|
}
|
|
});
|
|
|
|
// build/lib/BufferedDuplex.js
|
|
var require_BufferedDuplex = __commonJS({
|
|
"build/lib/BufferedDuplex.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.BufferedDuplex = exports5.writev = void 0;
|
|
var readable_stream_1 = require_browser3();
|
|
function writev(chunks, cb) {
|
|
const buffers = new Array(chunks.length);
|
|
for (let i6 = 0; i6 < chunks.length; i6++) {
|
|
if (typeof chunks[i6].chunk === "string") {
|
|
buffers[i6] = Buffer2.from(chunks[i6].chunk, "utf8");
|
|
} else {
|
|
buffers[i6] = chunks[i6].chunk;
|
|
}
|
|
}
|
|
this._write(Buffer2.concat(buffers), "binary", cb);
|
|
}
|
|
exports5.writev = writev;
|
|
var BufferedDuplex = class extends readable_stream_1.Duplex {
|
|
constructor(opts, proxy, socket) {
|
|
super({
|
|
objectMode: true
|
|
});
|
|
this.proxy = proxy;
|
|
this.socket = socket;
|
|
this.writeQueue = [];
|
|
if (!opts.objectMode) {
|
|
this._writev = writev.bind(this);
|
|
}
|
|
this.isSocketOpen = false;
|
|
this.proxy.on("data", (chunk) => {
|
|
this.push(chunk);
|
|
});
|
|
}
|
|
_read(size) {
|
|
this.proxy.read(size);
|
|
}
|
|
_write(chunk, encoding, cb) {
|
|
if (!this.isSocketOpen) {
|
|
this.writeQueue.push({ chunk, encoding, cb });
|
|
} else {
|
|
this.writeToProxy(chunk, encoding, cb);
|
|
}
|
|
}
|
|
_final(callback) {
|
|
this.writeQueue = [];
|
|
this.proxy.end(callback);
|
|
}
|
|
socketReady() {
|
|
this.emit("connect");
|
|
this.isSocketOpen = true;
|
|
this.processWriteQueue();
|
|
}
|
|
writeToProxy(chunk, encoding, cb) {
|
|
if (this.proxy.write(chunk, encoding) === false) {
|
|
this.proxy.once("drain", cb);
|
|
} else {
|
|
cb();
|
|
}
|
|
}
|
|
processWriteQueue() {
|
|
while (this.writeQueue.length > 0) {
|
|
const { chunk, encoding, cb } = this.writeQueue.shift();
|
|
this.writeToProxy(chunk, encoding, cb);
|
|
}
|
|
}
|
|
};
|
|
exports5.BufferedDuplex = BufferedDuplex;
|
|
}
|
|
});
|
|
|
|
// build/lib/connect/wx.js
|
|
var require_wx = __commonJS({
|
|
"build/lib/connect/wx.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var buffer_1 = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var readable_stream_1 = require_browser3();
|
|
var BufferedDuplex_1 = require_BufferedDuplex();
|
|
var socketTask;
|
|
var proxy;
|
|
var stream;
|
|
function buildProxy() {
|
|
const _proxy = new readable_stream_1.Transform();
|
|
_proxy._write = (chunk, encoding, next) => {
|
|
socketTask.send({
|
|
data: chunk.buffer,
|
|
success() {
|
|
next();
|
|
},
|
|
fail(errMsg) {
|
|
next(new Error(errMsg));
|
|
}
|
|
});
|
|
};
|
|
_proxy._flush = (done) => {
|
|
socketTask.close({
|
|
success() {
|
|
done();
|
|
}
|
|
});
|
|
};
|
|
return _proxy;
|
|
}
|
|
function setDefaultOpts(opts) {
|
|
if (!opts.hostname) {
|
|
opts.hostname = "localhost";
|
|
}
|
|
if (!opts.path) {
|
|
opts.path = "/";
|
|
}
|
|
if (!opts.wsOptions) {
|
|
opts.wsOptions = {};
|
|
}
|
|
}
|
|
function buildUrl(opts, client) {
|
|
const protocol = opts.protocol === "wxs" ? "wss" : "ws";
|
|
let url = `${protocol}://${opts.hostname}${opts.path}`;
|
|
if (opts.port && opts.port !== 80 && opts.port !== 443) {
|
|
url = `${protocol}://${opts.hostname}:${opts.port}${opts.path}`;
|
|
}
|
|
if (typeof opts.transformWsUrl === "function") {
|
|
url = opts.transformWsUrl(url, opts, client);
|
|
}
|
|
return url;
|
|
}
|
|
function bindEventHandler() {
|
|
socketTask.onOpen(() => {
|
|
stream.socketReady();
|
|
});
|
|
socketTask.onMessage((res) => {
|
|
let { data } = res;
|
|
if (data instanceof ArrayBuffer)
|
|
data = buffer_1.Buffer.from(data);
|
|
else
|
|
data = buffer_1.Buffer.from(data, "utf8");
|
|
proxy.push(data);
|
|
});
|
|
socketTask.onClose(() => {
|
|
stream.emit("close");
|
|
stream.end();
|
|
stream.destroy();
|
|
});
|
|
socketTask.onError((error) => {
|
|
const err = new Error(error.errMsg);
|
|
stream.destroy(err);
|
|
});
|
|
}
|
|
var buildStream = (client, opts) => {
|
|
opts.hostname = opts.hostname || opts.host;
|
|
if (!opts.hostname) {
|
|
throw new Error("Could not determine host. Specify host manually.");
|
|
}
|
|
const websocketSubProtocol = opts.protocolId === "MQIsdp" && opts.protocolVersion === 3 ? "mqttv3.1" : "mqtt";
|
|
setDefaultOpts(opts);
|
|
const url = buildUrl(opts, client);
|
|
socketTask = wx.connectSocket({
|
|
url,
|
|
protocols: [websocketSubProtocol]
|
|
});
|
|
proxy = buildProxy();
|
|
stream = new BufferedDuplex_1.BufferedDuplex(opts, proxy, socketTask);
|
|
stream._destroy = (err, cb) => {
|
|
socketTask.close({
|
|
success() {
|
|
if (cb)
|
|
cb(err);
|
|
}
|
|
});
|
|
};
|
|
const destroyRef = stream.destroy;
|
|
stream.destroy = (err, cb) => {
|
|
stream.destroy = destroyRef;
|
|
setTimeout(() => {
|
|
socketTask.close({
|
|
fail() {
|
|
stream._destroy(err, cb);
|
|
}
|
|
});
|
|
}, 0);
|
|
return stream;
|
|
};
|
|
bindEventHandler();
|
|
return stream;
|
|
};
|
|
exports5.default = buildStream;
|
|
}
|
|
});
|
|
|
|
// build/lib/connect/ali.js
|
|
var require_ali = __commonJS({
|
|
"build/lib/connect/ali.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var buffer_1 = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var readable_stream_1 = require_browser3();
|
|
var BufferedDuplex_1 = require_BufferedDuplex();
|
|
var my;
|
|
var proxy;
|
|
var stream;
|
|
var isInitialized = false;
|
|
function buildProxy() {
|
|
const _proxy = new readable_stream_1.Transform();
|
|
_proxy._write = (chunk, encoding, next) => {
|
|
my.sendSocketMessage({
|
|
data: chunk.buffer,
|
|
success() {
|
|
next();
|
|
},
|
|
fail() {
|
|
next(new Error());
|
|
}
|
|
});
|
|
};
|
|
_proxy._flush = (done) => {
|
|
my.closeSocket({
|
|
success() {
|
|
done();
|
|
}
|
|
});
|
|
};
|
|
return _proxy;
|
|
}
|
|
function setDefaultOpts(opts) {
|
|
if (!opts.hostname) {
|
|
opts.hostname = "localhost";
|
|
}
|
|
if (!opts.path) {
|
|
opts.path = "/";
|
|
}
|
|
if (!opts.wsOptions) {
|
|
opts.wsOptions = {};
|
|
}
|
|
}
|
|
function buildUrl(opts, client) {
|
|
const protocol = opts.protocol === "alis" ? "wss" : "ws";
|
|
let url = `${protocol}://${opts.hostname}${opts.path}`;
|
|
if (opts.port && opts.port !== 80 && opts.port !== 443) {
|
|
url = `${protocol}://${opts.hostname}:${opts.port}${opts.path}`;
|
|
}
|
|
if (typeof opts.transformWsUrl === "function") {
|
|
url = opts.transformWsUrl(url, opts, client);
|
|
}
|
|
return url;
|
|
}
|
|
function bindEventHandler() {
|
|
if (isInitialized)
|
|
return;
|
|
isInitialized = true;
|
|
my.onSocketOpen(() => {
|
|
stream.socketReady();
|
|
});
|
|
my.onSocketMessage((res) => {
|
|
if (typeof res.data === "string") {
|
|
const buffer = buffer_1.Buffer.from(res.data, "base64");
|
|
proxy.push(buffer);
|
|
} else {
|
|
const reader = new FileReader();
|
|
reader.addEventListener("load", () => {
|
|
let data = reader.result;
|
|
if (data instanceof ArrayBuffer)
|
|
data = buffer_1.Buffer.from(data);
|
|
else
|
|
data = buffer_1.Buffer.from(data, "utf8");
|
|
proxy.push(data);
|
|
});
|
|
reader.readAsArrayBuffer(res.data);
|
|
}
|
|
});
|
|
my.onSocketClose(() => {
|
|
stream.end();
|
|
stream.destroy();
|
|
});
|
|
my.onSocketError((err) => {
|
|
stream.destroy(err);
|
|
});
|
|
}
|
|
var buildStream = (client, opts) => {
|
|
opts.hostname = opts.hostname || opts.host;
|
|
if (!opts.hostname) {
|
|
throw new Error("Could not determine host. Specify host manually.");
|
|
}
|
|
const websocketSubProtocol = opts.protocolId === "MQIsdp" && opts.protocolVersion === 3 ? "mqttv3.1" : "mqtt";
|
|
setDefaultOpts(opts);
|
|
const url = buildUrl(opts, client);
|
|
my = opts.my;
|
|
my.connectSocket({
|
|
url,
|
|
protocols: websocketSubProtocol
|
|
});
|
|
proxy = buildProxy();
|
|
stream = new BufferedDuplex_1.BufferedDuplex(opts, proxy, my);
|
|
bindEventHandler();
|
|
return stream;
|
|
};
|
|
exports5.default = buildStream;
|
|
}
|
|
});
|
|
|
|
// node_modules/ws/browser.js
|
|
var require_browser5 = __commonJS({
|
|
"node_modules/ws/browser.js"(exports5, module) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
module.exports = function() {
|
|
throw new Error(
|
|
"ws does not work in the browser. Browser clients must use the native WebSocket object"
|
|
);
|
|
};
|
|
}
|
|
});
|
|
|
|
// build/lib/connect/ws.js
|
|
var require_ws = __commonJS({
|
|
"build/lib/connect/ws.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var buffer_1 = (init_buffer(), __toCommonJS(buffer_exports));
|
|
var ws_1 = __importDefault(require_browser5());
|
|
var debug_1 = __importDefault(require_browser4());
|
|
var readable_stream_1 = require_browser3();
|
|
var is_browser_1 = __importDefault(require_is_browser());
|
|
var BufferedDuplex_1 = require_BufferedDuplex();
|
|
var debug = (0, debug_1.default)("mqttjs:ws");
|
|
var WSS_OPTIONS = [
|
|
"rejectUnauthorized",
|
|
"ca",
|
|
"cert",
|
|
"key",
|
|
"pfx",
|
|
"passphrase"
|
|
];
|
|
function buildUrl(opts, client) {
|
|
let url = `${opts.protocol}://${opts.hostname}:${opts.port}${opts.path}`;
|
|
if (typeof opts.transformWsUrl === "function") {
|
|
url = opts.transformWsUrl(url, opts, client);
|
|
}
|
|
return url;
|
|
}
|
|
function setDefaultOpts(opts) {
|
|
const options = opts;
|
|
if (!opts.hostname) {
|
|
options.hostname = "localhost";
|
|
}
|
|
if (!opts.port) {
|
|
if (opts.protocol === "wss") {
|
|
options.port = 443;
|
|
} else {
|
|
options.port = 80;
|
|
}
|
|
}
|
|
if (!opts.path) {
|
|
options.path = "/";
|
|
}
|
|
if (!opts.wsOptions) {
|
|
options.wsOptions = {};
|
|
}
|
|
if (!is_browser_1.default && opts.protocol === "wss") {
|
|
WSS_OPTIONS.forEach((prop) => {
|
|
if (Object.prototype.hasOwnProperty.call(opts, prop) && !Object.prototype.hasOwnProperty.call(opts.wsOptions, prop)) {
|
|
options.wsOptions[prop] = opts[prop];
|
|
}
|
|
});
|
|
}
|
|
return options;
|
|
}
|
|
function setDefaultBrowserOpts(opts) {
|
|
const options = setDefaultOpts(opts);
|
|
if (!options.hostname) {
|
|
options.hostname = options.host;
|
|
}
|
|
if (!options.hostname) {
|
|
if (typeof document === "undefined") {
|
|
throw new Error("Could not determine host. Specify host manually.");
|
|
}
|
|
const parsed = new URL(document.URL);
|
|
options.hostname = parsed.hostname;
|
|
if (!options.port) {
|
|
options.port = Number(parsed.port);
|
|
}
|
|
}
|
|
if (options.objectMode === void 0) {
|
|
options.objectMode = !(options.binary === true || options.binary === void 0);
|
|
}
|
|
return options;
|
|
}
|
|
function createWebSocket(client, url, opts) {
|
|
debug("createWebSocket");
|
|
debug(`protocol: ${opts.protocolId} ${opts.protocolVersion}`);
|
|
const websocketSubProtocol = opts.protocolId === "MQIsdp" && opts.protocolVersion === 3 ? "mqttv3.1" : "mqtt";
|
|
debug(`creating new Websocket for url: ${url} and protocol: ${websocketSubProtocol}`);
|
|
let socket;
|
|
if (opts.createWebsocket) {
|
|
socket = opts.createWebsocket(url, [websocketSubProtocol], opts);
|
|
} else {
|
|
socket = new ws_1.default(url, [websocketSubProtocol], opts.wsOptions);
|
|
}
|
|
return socket;
|
|
}
|
|
function createBrowserWebSocket(client, opts) {
|
|
const websocketSubProtocol = opts.protocolId === "MQIsdp" && opts.protocolVersion === 3 ? "mqttv3.1" : "mqtt";
|
|
const url = buildUrl(opts, client);
|
|
let socket;
|
|
if (opts.createWebsocket) {
|
|
socket = opts.createWebsocket(url, [websocketSubProtocol], opts);
|
|
} else {
|
|
socket = new WebSocket(url, [websocketSubProtocol]);
|
|
}
|
|
socket.binaryType = "arraybuffer";
|
|
return socket;
|
|
}
|
|
var streamBuilder = (client, opts) => {
|
|
debug("streamBuilder");
|
|
const options = setDefaultOpts(opts);
|
|
const url = buildUrl(options, client);
|
|
const socket = createWebSocket(client, url, options);
|
|
const webSocketStream = ws_1.default.createWebSocketStream(socket, options.wsOptions);
|
|
webSocketStream["url"] = url;
|
|
socket.on("close", () => {
|
|
webSocketStream.destroy();
|
|
});
|
|
return webSocketStream;
|
|
};
|
|
var browserStreamBuilder = (client, opts) => {
|
|
debug("browserStreamBuilder");
|
|
let stream;
|
|
const options = setDefaultBrowserOpts(opts);
|
|
const bufferSize = options.browserBufferSize || 1024 * 512;
|
|
const bufferTimeout = opts.browserBufferTimeout || 1e3;
|
|
const coerceToBuffer = !opts.objectMode;
|
|
const socket = createBrowserWebSocket(client, opts);
|
|
const proxy = buildProxy(opts, socketWriteBrowser, socketEndBrowser);
|
|
if (!opts.objectMode) {
|
|
proxy._writev = BufferedDuplex_1.writev.bind(proxy);
|
|
}
|
|
proxy.on("close", () => {
|
|
socket.close();
|
|
});
|
|
const eventListenerSupport = typeof socket.addEventListener !== "undefined";
|
|
if (socket.readyState === socket.OPEN) {
|
|
stream = proxy;
|
|
stream.socket = socket;
|
|
} else {
|
|
stream = new BufferedDuplex_1.BufferedDuplex(opts, proxy, socket);
|
|
if (eventListenerSupport) {
|
|
socket.addEventListener("open", onOpen);
|
|
} else {
|
|
socket.onopen = onOpen;
|
|
}
|
|
}
|
|
if (eventListenerSupport) {
|
|
socket.addEventListener("close", onClose);
|
|
socket.addEventListener("error", onError);
|
|
socket.addEventListener("message", onMessage);
|
|
} else {
|
|
socket.onclose = onClose;
|
|
socket.onerror = onError;
|
|
socket.onmessage = onMessage;
|
|
}
|
|
function buildProxy(pOptions, socketWrite, socketEnd) {
|
|
const _proxy = new readable_stream_1.Transform({
|
|
objectMode: pOptions.objectMode
|
|
});
|
|
_proxy._write = socketWrite;
|
|
_proxy._flush = socketEnd;
|
|
return _proxy;
|
|
}
|
|
function onOpen() {
|
|
debug("WebSocket onOpen");
|
|
if (stream instanceof BufferedDuplex_1.BufferedDuplex) {
|
|
stream.socketReady();
|
|
}
|
|
}
|
|
function onClose(event) {
|
|
debug("WebSocket onClose", event);
|
|
stream.end();
|
|
stream.destroy();
|
|
}
|
|
function onError(err) {
|
|
debug("WebSocket onError", err);
|
|
const error = new Error("WebSocket error");
|
|
error["event"] = err;
|
|
stream.destroy(error);
|
|
}
|
|
function onMessage(event) {
|
|
let { data } = event;
|
|
if (data instanceof ArrayBuffer)
|
|
data = buffer_1.Buffer.from(data);
|
|
else
|
|
data = buffer_1.Buffer.from(data, "utf8");
|
|
proxy.push(data);
|
|
}
|
|
function socketWriteBrowser(chunk, enc, next) {
|
|
if (socket.bufferedAmount > bufferSize) {
|
|
setTimeout(socketWriteBrowser, bufferTimeout, chunk, enc, next);
|
|
return;
|
|
}
|
|
if (coerceToBuffer && typeof chunk === "string") {
|
|
chunk = buffer_1.Buffer.from(chunk, "utf8");
|
|
}
|
|
try {
|
|
socket.send(chunk);
|
|
} catch (err) {
|
|
return next(err);
|
|
}
|
|
next();
|
|
}
|
|
function socketEndBrowser(done) {
|
|
socket.close();
|
|
done();
|
|
}
|
|
return stream;
|
|
};
|
|
exports5.default = is_browser_1.default ? browserStreamBuilder : streamBuilder;
|
|
}
|
|
});
|
|
|
|
// build/lib/connect/index.js
|
|
var require_connect = __commonJS({
|
|
"build/lib/connect/index.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.connectAsync = void 0;
|
|
var debug_1 = __importDefault(require_browser4());
|
|
var url_1 = __importDefault((init_url(), __toCommonJS(url_exports)));
|
|
var client_1 = __importDefault(require_client());
|
|
var is_browser_1 = __importDefault(require_is_browser());
|
|
var debug = (0, debug_1.default)("mqttjs");
|
|
var protocols = {};
|
|
if (!is_browser_1.default) {
|
|
protocols.mqtt = require_tcp().default;
|
|
protocols.tcp = require_tcp().default;
|
|
protocols.ssl = require_tls().default;
|
|
protocols.tls = protocols.ssl;
|
|
protocols.mqtts = require_tls().default;
|
|
} else {
|
|
protocols.wx = require_wx().default;
|
|
protocols.wxs = require_wx().default;
|
|
protocols.ali = require_ali().default;
|
|
protocols.alis = require_ali().default;
|
|
}
|
|
protocols.ws = require_ws().default;
|
|
protocols.wss = require_ws().default;
|
|
function parseAuthOptions(opts) {
|
|
let matches;
|
|
if (opts.auth) {
|
|
matches = opts.auth.match(/^(.+):(.+)$/);
|
|
if (matches) {
|
|
opts.username = matches[1];
|
|
opts.password = matches[2];
|
|
} else {
|
|
opts.username = opts.auth;
|
|
}
|
|
}
|
|
}
|
|
function connect(brokerUrl, opts) {
|
|
debug("connecting to an MQTT broker...");
|
|
if (typeof brokerUrl === "object" && !opts) {
|
|
opts = brokerUrl;
|
|
brokerUrl = "";
|
|
}
|
|
opts = opts || {};
|
|
if (brokerUrl && typeof brokerUrl === "string") {
|
|
const parsed = url_1.default.parse(brokerUrl, true);
|
|
if (parsed.port != null) {
|
|
parsed.port = Number(parsed.port);
|
|
}
|
|
opts = Object.assign(Object.assign({}, parsed), opts);
|
|
if (opts.protocol === null) {
|
|
throw new Error("Missing protocol");
|
|
}
|
|
opts.protocol = opts.protocol.replace(/:$/, "");
|
|
}
|
|
parseAuthOptions(opts);
|
|
if (opts.query && typeof opts.query.clientId === "string") {
|
|
opts.clientId = opts.query.clientId;
|
|
}
|
|
if (opts.cert && opts.key) {
|
|
if (opts.protocol) {
|
|
if (["mqtts", "wss", "wxs", "alis"].indexOf(opts.protocol) === -1) {
|
|
switch (opts.protocol) {
|
|
case "mqtt":
|
|
opts.protocol = "mqtts";
|
|
break;
|
|
case "ws":
|
|
opts.protocol = "wss";
|
|
break;
|
|
case "wx":
|
|
opts.protocol = "wxs";
|
|
break;
|
|
case "ali":
|
|
opts.protocol = "alis";
|
|
break;
|
|
default:
|
|
throw new Error(`Unknown protocol for secure connection: "${opts.protocol}"!`);
|
|
}
|
|
}
|
|
} else {
|
|
throw new Error("Missing secure protocol key");
|
|
}
|
|
}
|
|
if (!protocols[opts.protocol]) {
|
|
const isSecure = ["mqtts", "wss"].indexOf(opts.protocol) !== -1;
|
|
opts.protocol = [
|
|
"mqtt",
|
|
"mqtts",
|
|
"ws",
|
|
"wss",
|
|
"wx",
|
|
"wxs",
|
|
"ali",
|
|
"alis"
|
|
].filter((key, index) => {
|
|
if (isSecure && index % 2 === 0) {
|
|
return false;
|
|
}
|
|
return typeof protocols[key] === "function";
|
|
})[0];
|
|
}
|
|
if (opts.clean === false && !opts.clientId) {
|
|
throw new Error("Missing clientId for unclean clients");
|
|
}
|
|
if (opts.protocol) {
|
|
opts.defaultProtocol = opts.protocol;
|
|
}
|
|
function wrapper(client2) {
|
|
if (opts.servers) {
|
|
if (!client2._reconnectCount || client2._reconnectCount === opts.servers.length) {
|
|
client2._reconnectCount = 0;
|
|
}
|
|
opts.host = opts.servers[client2._reconnectCount].host;
|
|
opts.port = opts.servers[client2._reconnectCount].port;
|
|
opts.protocol = !opts.servers[client2._reconnectCount].protocol ? opts.defaultProtocol : opts.servers[client2._reconnectCount].protocol;
|
|
opts.hostname = opts.host;
|
|
client2._reconnectCount++;
|
|
}
|
|
debug("calling streambuilder for", opts.protocol);
|
|
return protocols[opts.protocol](client2, opts);
|
|
}
|
|
const client = new client_1.default(wrapper, opts);
|
|
client.on("error", () => {
|
|
});
|
|
return client;
|
|
}
|
|
function connectAsync(brokerUrl, opts, allowRetries = true) {
|
|
return new Promise((resolve2, reject) => {
|
|
const client = connect(brokerUrl, opts);
|
|
const promiseResolutionListeners = {
|
|
connect: (connack) => {
|
|
removePromiseResolutionListeners();
|
|
resolve2(client);
|
|
},
|
|
end: () => {
|
|
removePromiseResolutionListeners();
|
|
resolve2(client);
|
|
},
|
|
error: (err) => {
|
|
removePromiseResolutionListeners();
|
|
client.end();
|
|
reject(err);
|
|
}
|
|
};
|
|
if (allowRetries === false) {
|
|
promiseResolutionListeners.close = () => {
|
|
promiseResolutionListeners.error(new Error("Couldn't connect to server"));
|
|
};
|
|
}
|
|
function removePromiseResolutionListeners() {
|
|
Object.keys(promiseResolutionListeners).forEach((eventName) => {
|
|
client.off(eventName, promiseResolutionListeners[eventName]);
|
|
});
|
|
}
|
|
Object.keys(promiseResolutionListeners).forEach((eventName) => {
|
|
client.on(eventName, promiseResolutionListeners[eventName]);
|
|
});
|
|
});
|
|
}
|
|
exports5.connectAsync = connectAsync;
|
|
exports5.default = connect;
|
|
}
|
|
});
|
|
|
|
// build/mqtt.js
|
|
var require_mqtt2 = __commonJS({
|
|
"build/mqtt.js"(exports5) {
|
|
"use strict";
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __createBinding = exports5 && exports5.__createBinding || (Object.create ? function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
var desc = Object.getOwnPropertyDescriptor(m4, k2);
|
|
if (!desc || ("get" in desc ? !m4.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() {
|
|
return m4[k2];
|
|
} };
|
|
}
|
|
Object.defineProperty(o7, k22, desc);
|
|
} : function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
o7[k22] = m4[k2];
|
|
});
|
|
var __setModuleDefault = exports5 && exports5.__setModuleDefault || (Object.create ? function(o7, v4) {
|
|
Object.defineProperty(o7, "default", { enumerable: true, value: v4 });
|
|
} : function(o7, v4) {
|
|
o7["default"] = v4;
|
|
});
|
|
var __importStar = exports5 && exports5.__importStar || function(mod) {
|
|
if (mod && mod.__esModule)
|
|
return mod;
|
|
var result = {};
|
|
if (mod != null) {
|
|
for (var k2 in mod)
|
|
if (k2 !== "default" && Object.prototype.hasOwnProperty.call(mod, k2))
|
|
__createBinding(result, mod, k2);
|
|
}
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
var __exportStar = exports5 && exports5.__exportStar || function(m4, exports6) {
|
|
for (var p6 in m4)
|
|
if (p6 !== "default" && !Object.prototype.hasOwnProperty.call(exports6, p6))
|
|
__createBinding(exports6, m4, p6);
|
|
};
|
|
var __importDefault = exports5 && exports5.__importDefault || function(mod) {
|
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
exports5.ReasonCodes = exports5.PingTimer = exports5.UniqueMessageIdProvider = exports5.DefaultMessageIdProvider = exports5.Store = exports5.MqttClient = exports5.connectAsync = exports5.connect = exports5.Client = void 0;
|
|
var client_1 = __importDefault(require_client());
|
|
exports5.MqttClient = client_1.default;
|
|
var default_message_id_provider_1 = __importDefault(require_default_message_id_provider());
|
|
exports5.DefaultMessageIdProvider = default_message_id_provider_1.default;
|
|
var unique_message_id_provider_1 = __importDefault(require_unique_message_id_provider());
|
|
exports5.UniqueMessageIdProvider = unique_message_id_provider_1.default;
|
|
var store_1 = __importDefault(require_store());
|
|
exports5.Store = store_1.default;
|
|
var connect_1 = __importStar(require_connect());
|
|
exports5.connect = connect_1.default;
|
|
Object.defineProperty(exports5, "connectAsync", { enumerable: true, get: function() {
|
|
return connect_1.connectAsync;
|
|
} });
|
|
var PingTimer_1 = __importDefault(require_PingTimer());
|
|
exports5.PingTimer = PingTimer_1.default;
|
|
exports5.Client = client_1.default;
|
|
__exportStar(require_client(), exports5);
|
|
__exportStar(require_shared(), exports5);
|
|
var ack_1 = require_ack();
|
|
Object.defineProperty(exports5, "ReasonCodes", { enumerable: true, get: function() {
|
|
return ack_1.ReasonCodes;
|
|
} });
|
|
}
|
|
});
|
|
|
|
// build/index.js
|
|
var require_build = __commonJS({
|
|
"build/index.js"(exports5) {
|
|
init_buffer2();
|
|
init_process2();
|
|
init_navigator();
|
|
var __createBinding = exports5 && exports5.__createBinding || (Object.create ? function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
var desc = Object.getOwnPropertyDescriptor(m4, k2);
|
|
if (!desc || ("get" in desc ? !m4.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() {
|
|
return m4[k2];
|
|
} };
|
|
}
|
|
Object.defineProperty(o7, k22, desc);
|
|
} : function(o7, m4, k2, k22) {
|
|
if (k22 === void 0)
|
|
k22 = k2;
|
|
o7[k22] = m4[k2];
|
|
});
|
|
var __setModuleDefault = exports5 && exports5.__setModuleDefault || (Object.create ? function(o7, v4) {
|
|
Object.defineProperty(o7, "default", { enumerable: true, value: v4 });
|
|
} : function(o7, v4) {
|
|
o7["default"] = v4;
|
|
});
|
|
var __importStar = exports5 && exports5.__importStar || function(mod) {
|
|
if (mod && mod.__esModule)
|
|
return mod;
|
|
var result = {};
|
|
if (mod != null) {
|
|
for (var k2 in mod)
|
|
if (k2 !== "default" && Object.prototype.hasOwnProperty.call(mod, k2))
|
|
__createBinding(result, mod, k2);
|
|
}
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
var __exportStar = exports5 && exports5.__exportStar || function(m4, exports6) {
|
|
for (var p6 in m4)
|
|
if (p6 !== "default" && !Object.prototype.hasOwnProperty.call(exports6, p6))
|
|
__createBinding(exports6, m4, p6);
|
|
};
|
|
Object.defineProperty(exports5, "__esModule", { value: true });
|
|
var mqtt = __importStar(require_mqtt2());
|
|
exports5.default = mqtt;
|
|
__exportStar(require_mqtt2(), exports5);
|
|
}
|
|
});
|
|
return require_build();
|
|
})();
|
|
/*! Bundled license information:
|
|
|
|
@jspm/core/nodelibs/browser/buffer.js:
|
|
(*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
|
*/
|