/*! Stencil Dev Server Process v4.38.0 | MIT Licensed | https://stenciljs.com */ "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; 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 name in all) __defProp(target, name, { get: all[name], 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // node_modules/is-wsl/node_modules/is-docker/index.js var require_is_docker = __commonJS({ "node_modules/is-wsl/node_modules/is-docker/index.js"(exports2, module2) { "use strict"; var fs7 = require("fs"); var isDocker2; function hasDockerEnv2() { try { fs7.statSync("/.dockerenv"); return true; } catch (_) { return false; } } function hasDockerCGroup2() { try { return fs7.readFileSync("/proc/self/cgroup", "utf8").includes("docker"); } catch (_) { return false; } } module2.exports = () => { if (isDocker2 === void 0) { isDocker2 = hasDockerEnv2() || hasDockerCGroup2(); } return isDocker2; }; } }); // node_modules/is-wsl/index.js var require_is_wsl = __commonJS({ "node_modules/is-wsl/index.js"(exports2, module2) { "use strict"; var os3 = require("os"); var fs7 = require("fs"); var isDocker2 = require_is_docker(); var isWsl2 = () => { if (process.platform !== "linux") { return false; } if (os3.release().toLowerCase().includes("microsoft")) { if (isDocker2()) { return false; } return true; } try { return fs7.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft") ? !isDocker2() : false; } catch (_) { return false; } }; if (process.env.__IS_WSL_TEST__) { module2.exports = isWsl2; } else { module2.exports = isWsl2(); } } }); // node_modules/big-integer/BigInteger.js var require_BigInteger = __commonJS({ "node_modules/big-integer/BigInteger.js"(exports2, module2) { var bigInt = function(undefined2) { "use strict"; var BASE = 1e7, LOG_BASE = 7, MAX_INT = 9007199254740992, MAX_INT_ARR = smallToArray(MAX_INT), DEFAULT_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz"; var supportsNativeBigInt = typeof BigInt === "function"; function Integer(v, radix, alphabet, caseSensitive) { if (typeof v === "undefined") return Integer[0]; if (typeof radix !== "undefined") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive); return parseValue(v); } function BigInteger(value, sign) { this.value = value; this.sign = sign; this.isSmall = false; } BigInteger.prototype = Object.create(Integer.prototype); function SmallInteger(value) { this.value = value; this.sign = value < 0; this.isSmall = true; } SmallInteger.prototype = Object.create(Integer.prototype); function NativeBigInt(value) { this.value = value; } NativeBigInt.prototype = Object.create(Integer.prototype); function isPrecise(n) { return -MAX_INT < n && n < MAX_INT; } function smallToArray(n) { if (n < 1e7) return [n]; if (n < 1e14) return [n % 1e7, Math.floor(n / 1e7)]; return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)]; } function arrayToSmall(arr) { trim(arr); var length = arr.length; if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) { switch (length) { case 0: return 0; case 1: return arr[0]; case 2: return arr[0] + arr[1] * BASE; default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE; } } return arr; } function trim(v) { var i2 = v.length; while (v[--i2] === 0) ; v.length = i2 + 1; } function createArray(length) { var x = new Array(length); var i2 = -1; while (++i2 < length) { x[i2] = 0; } return x; } function truncate(n) { if (n > 0) return Math.floor(n); return Math.ceil(n); } function add(a, b) { var l_a = a.length, l_b = b.length, r = new Array(l_a), carry = 0, base = BASE, sum, i2; for (i2 = 0; i2 < l_b; i2++) { sum = a[i2] + b[i2] + carry; carry = sum >= base ? 1 : 0; r[i2] = sum - carry * base; } while (i2 < l_a) { sum = a[i2] + carry; carry = sum === base ? 1 : 0; r[i2++] = sum - carry * base; } if (carry > 0) r.push(carry); return r; } function addAny(a, b) { if (a.length >= b.length) return add(a, b); return add(b, a); } function addSmall(a, carry) { var l = a.length, r = new Array(l), base = BASE, sum, i2; for (i2 = 0; i2 < l; i2++) { sum = a[i2] - base + carry; carry = Math.floor(sum / base); r[i2] = sum - carry * base; carry += 1; } while (carry > 0) { r[i2++] = carry % base; carry = Math.floor(carry / base); } return r; } BigInteger.prototype.add = function(v) { var n = parseValue(v); if (this.sign !== n.sign) { return this.subtract(n.negate()); } var a = this.value, b = n.value; if (n.isSmall) { return new BigInteger(addSmall(a, Math.abs(b)), this.sign); } return new BigInteger(addAny(a, b), this.sign); }; BigInteger.prototype.plus = BigInteger.prototype.add; SmallInteger.prototype.add = function(v) { var n = parseValue(v); var a = this.value; if (a < 0 !== n.sign) { return this.subtract(n.negate()); } var b = n.value; if (n.isSmall) { if (isPrecise(a + b)) return new SmallInteger(a + b); b = smallToArray(Math.abs(b)); } return new BigInteger(addSmall(b, Math.abs(a)), a < 0); }; SmallInteger.prototype.plus = SmallInteger.prototype.add; NativeBigInt.prototype.add = function(v) { return new NativeBigInt(this.value + parseValue(v).value); }; NativeBigInt.prototype.plus = NativeBigInt.prototype.add; function subtract(a, b) { var a_l = a.length, b_l = b.length, r = new Array(a_l), borrow = 0, base = BASE, i2, difference; for (i2 = 0; i2 < b_l; i2++) { difference = a[i2] - borrow - b[i2]; if (difference < 0) { difference += base; borrow = 1; } else borrow = 0; r[i2] = difference; } for (i2 = b_l; i2 < a_l; i2++) { difference = a[i2] - borrow; if (difference < 0) difference += base; else { r[i2++] = difference; break; } r[i2] = difference; } for (; i2 < a_l; i2++) { r[i2] = a[i2]; } trim(r); return r; } function subtractAny(a, b, sign) { var value; if (compareAbs(a, b) >= 0) { value = subtract(a, b); } else { value = subtract(b, a); sign = !sign; } value = arrayToSmall(value); if (typeof value === "number") { if (sign) value = -value; return new SmallInteger(value); } return new BigInteger(value, sign); } function subtractSmall(a, b, sign) { var l = a.length, r = new Array(l), carry = -b, base = BASE, i2, difference; for (i2 = 0; i2 < l; i2++) { difference = a[i2] + carry; carry = Math.floor(difference / base); difference %= base; r[i2] = difference < 0 ? difference + base : difference; } r = arrayToSmall(r); if (typeof r === "number") { if (sign) r = -r; return new SmallInteger(r); } return new BigInteger(r, sign); } BigInteger.prototype.subtract = function(v) { var n = parseValue(v); if (this.sign !== n.sign) { return this.add(n.negate()); } var a = this.value, b = n.value; if (n.isSmall) return subtractSmall(a, Math.abs(b), this.sign); return subtractAny(a, b, this.sign); }; BigInteger.prototype.minus = BigInteger.prototype.subtract; SmallInteger.prototype.subtract = function(v) { var n = parseValue(v); var a = this.value; if (a < 0 !== n.sign) { return this.add(n.negate()); } var b = n.value; if (n.isSmall) { return new SmallInteger(a - b); } return subtractSmall(b, Math.abs(a), a >= 0); }; SmallInteger.prototype.minus = SmallInteger.prototype.subtract; NativeBigInt.prototype.subtract = function(v) { return new NativeBigInt(this.value - parseValue(v).value); }; NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; BigInteger.prototype.negate = function() { return new BigInteger(this.value, !this.sign); }; SmallInteger.prototype.negate = function() { var sign = this.sign; var small = new SmallInteger(-this.value); small.sign = !sign; return small; }; NativeBigInt.prototype.negate = function() { return new NativeBigInt(-this.value); }; BigInteger.prototype.abs = function() { return new BigInteger(this.value, false); }; SmallInteger.prototype.abs = function() { return new SmallInteger(Math.abs(this.value)); }; NativeBigInt.prototype.abs = function() { return new NativeBigInt(this.value >= 0 ? this.value : -this.value); }; function multiplyLong(a, b) { var a_l = a.length, b_l = b.length, l = a_l + b_l, r = createArray(l), base = BASE, product, carry, i2, a_i, b_j; for (i2 = 0; i2 < a_l; ++i2) { a_i = a[i2]; for (var j = 0; j < b_l; ++j) { b_j = b[j]; product = a_i * b_j + r[i2 + j]; carry = Math.floor(product / base); r[i2 + j] = product - carry * base; r[i2 + j + 1] += carry; } } trim(r); return r; } function multiplySmall(a, b) { var l = a.length, r = new Array(l), base = BASE, carry = 0, product, i2; for (i2 = 0; i2 < l; i2++) { product = a[i2] * b + carry; carry = Math.floor(product / base); r[i2] = product - carry * base; } while (carry > 0) { r[i2++] = carry % base; carry = Math.floor(carry / base); } return r; } function shiftLeft(x, n) { var r = []; while (n-- > 0) r.push(0); return r.concat(x); } function multiplyKaratsuba(x, y) { var n = Math.max(x.length, y.length); if (n <= 30) return multiplyLong(x, y); n = Math.ceil(n / 2); var b = x.slice(n), a = x.slice(0, n), d = y.slice(n), c = y.slice(0, n); var ac = multiplyKaratsuba(a, c), bd = multiplyKaratsuba(b, d), abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d)); var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n)); trim(product); return product; } function useKaratsuba(l1, l2) { return -0.012 * l1 - 0.012 * l2 + 15e-6 * l1 * l2 > 0; } BigInteger.prototype.multiply = function(v) { var n = parseValue(v), a = this.value, b = n.value, sign = this.sign !== n.sign, abs; if (n.isSmall) { if (b === 0) return Integer[0]; if (b === 1) return this; if (b === -1) return this.negate(); abs = Math.abs(b); if (abs < BASE) { return new BigInteger(multiplySmall(a, abs), sign); } b = smallToArray(abs); } if (useKaratsuba(a.length, b.length)) return new BigInteger(multiplyKaratsuba(a, b), sign); return new BigInteger(multiplyLong(a, b), sign); }; BigInteger.prototype.times = BigInteger.prototype.multiply; function multiplySmallAndArray(a, b, sign) { if (a < BASE) { return new BigInteger(multiplySmall(b, a), sign); } return new BigInteger(multiplyLong(b, smallToArray(a)), sign); } SmallInteger.prototype._multiplyBySmall = function(a) { if (isPrecise(a.value * this.value)) { return new SmallInteger(a.value * this.value); } return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign); }; BigInteger.prototype._multiplyBySmall = function(a) { if (a.value === 0) return Integer[0]; if (a.value === 1) return this; if (a.value === -1) return this.negate(); return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign); }; SmallInteger.prototype.multiply = function(v) { return parseValue(v)._multiplyBySmall(this); }; SmallInteger.prototype.times = SmallInteger.prototype.multiply; NativeBigInt.prototype.multiply = function(v) { return new NativeBigInt(this.value * parseValue(v).value); }; NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; function square(a) { var l = a.length, r = createArray(l + l), base = BASE, product, carry, i2, a_i, a_j; for (i2 = 0; i2 < l; i2++) { a_i = a[i2]; carry = 0 - a_i * a_i; for (var j = i2; j < l; j++) { a_j = a[j]; product = 2 * (a_i * a_j) + r[i2 + j] + carry; carry = Math.floor(product / base); r[i2 + j] = product - carry * base; } r[i2 + l] = carry; } trim(r); return r; } BigInteger.prototype.square = function() { return new BigInteger(square(this.value), false); }; SmallInteger.prototype.square = function() { var value = this.value * this.value; if (isPrecise(value)) return new SmallInteger(value); return new BigInteger(square(smallToArray(Math.abs(this.value))), false); }; NativeBigInt.prototype.square = function(v) { return new NativeBigInt(this.value * this.value); }; function divMod1(a, b) { var a_l = a.length, b_l = b.length, base = BASE, result = createArray(b.length), divisorMostSignificantDigit = b[b_l - 1], lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)), remainder = multiplySmall(a, lambda), divisor = multiplySmall(b, lambda), quotientDigit, shift, carry, borrow, i2, l, q; if (remainder.length <= a_l) remainder.push(0); divisor.push(0); divisorMostSignificantDigit = divisor[b_l - 1]; for (shift = a_l - b_l; shift >= 0; shift--) { quotientDigit = base - 1; if (remainder[shift + b_l] !== divisorMostSignificantDigit) { quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit); } carry = 0; borrow = 0; l = divisor.length; for (i2 = 0; i2 < l; i2++) { carry += quotientDigit * divisor[i2]; q = Math.floor(carry / base); borrow += remainder[shift + i2] - (carry - q * base); carry = q; if (borrow < 0) { remainder[shift + i2] = borrow + base; borrow = -1; } else { remainder[shift + i2] = borrow; borrow = 0; } } while (borrow !== 0) { quotientDigit -= 1; carry = 0; for (i2 = 0; i2 < l; i2++) { carry += remainder[shift + i2] - base + divisor[i2]; if (carry < 0) { remainder[shift + i2] = carry + base; carry = 0; } else { remainder[shift + i2] = carry; carry = 1; } } borrow += carry; } result[shift] = quotientDigit; } remainder = divModSmall(remainder, lambda)[0]; return [arrayToSmall(result), arrayToSmall(remainder)]; } function divMod2(a, b) { var a_l = a.length, b_l = b.length, result = [], part = [], base = BASE, guess, xlen, highx, highy, check; while (a_l) { part.unshift(a[--a_l]); trim(part); if (compareAbs(part, b) < 0) { result.push(0); continue; } xlen = part.length; highx = part[xlen - 1] * base + part[xlen - 2]; highy = b[b_l - 1] * base + b[b_l - 2]; if (xlen > b_l) { highx = (highx + 1) * base; } guess = Math.ceil(highx / highy); do { check = multiplySmall(b, guess); if (compareAbs(check, part) <= 0) break; guess--; } while (guess); result.push(guess); part = subtract(part, check); } result.reverse(); return [arrayToSmall(result), arrayToSmall(part)]; } function divModSmall(value, lambda) { var length = value.length, quotient = createArray(length), base = BASE, i2, q, remainder, divisor; remainder = 0; for (i2 = length - 1; i2 >= 0; --i2) { divisor = remainder * base + value[i2]; q = truncate(divisor / lambda); remainder = divisor - q * lambda; quotient[i2] = q | 0; } return [quotient, remainder | 0]; } function divModAny(self, v) { var value, n = parseValue(v); if (supportsNativeBigInt) { return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)]; } var a = self.value, b = n.value; var quotient; if (b === 0) throw new Error("Cannot divide by zero"); if (self.isSmall) { if (n.isSmall) { return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)]; } return [Integer[0], self]; } if (n.isSmall) { if (b === 1) return [self, Integer[0]]; if (b == -1) return [self.negate(), Integer[0]]; var abs = Math.abs(b); if (abs < BASE) { value = divModSmall(a, abs); quotient = arrayToSmall(value[0]); var remainder = value[1]; if (self.sign) remainder = -remainder; if (typeof quotient === "number") { if (self.sign !== n.sign) quotient = -quotient; return [new SmallInteger(quotient), new SmallInteger(remainder)]; } return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)]; } b = smallToArray(abs); } var comparison = compareAbs(a, b); if (comparison === -1) return [Integer[0], self]; if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]]; if (a.length + b.length <= 200) value = divMod1(a, b); else value = divMod2(a, b); quotient = value[0]; var qSign = self.sign !== n.sign, mod = value[1], mSign = self.sign; if (typeof quotient === "number") { if (qSign) quotient = -quotient; quotient = new SmallInteger(quotient); } else quotient = new BigInteger(quotient, qSign); if (typeof mod === "number") { if (mSign) mod = -mod; mod = new SmallInteger(mod); } else mod = new BigInteger(mod, mSign); return [quotient, mod]; } BigInteger.prototype.divmod = function(v) { var result = divModAny(this, v); return { quotient: result[0], remainder: result[1] }; }; NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod; BigInteger.prototype.divide = function(v) { return divModAny(this, v)[0]; }; NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function(v) { return new NativeBigInt(this.value / parseValue(v).value); }; SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide; BigInteger.prototype.mod = function(v) { return divModAny(this, v)[1]; }; NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function(v) { return new NativeBigInt(this.value % parseValue(v).value); }; SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod; BigInteger.prototype.pow = function(v) { var n = parseValue(v), a = this.value, b = n.value, value, x, y; if (b === 0) return Integer[1]; if (a === 0) return Integer[0]; if (a === 1) return Integer[1]; if (a === -1) return n.isEven() ? Integer[1] : Integer[-1]; if (n.sign) { return Integer[0]; } if (!n.isSmall) throw new Error("The exponent " + n.toString() + " is too large."); if (this.isSmall) { if (isPrecise(value = Math.pow(a, b))) return new SmallInteger(truncate(value)); } x = this; y = Integer[1]; while (true) { if (b & true) { y = y.times(x); --b; } if (b === 0) break; b /= 2; x = x.square(); } return y; }; SmallInteger.prototype.pow = BigInteger.prototype.pow; NativeBigInt.prototype.pow = function(v) { var n = parseValue(v); var a = this.value, b = n.value; var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2); if (b === _0) return Integer[1]; if (a === _0) return Integer[0]; if (a === _1) return Integer[1]; if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1]; if (n.isNegative()) return new NativeBigInt(_0); var x = this; var y = Integer[1]; while (true) { if ((b & _1) === _1) { y = y.times(x); --b; } if (b === _0) break; b /= _2; x = x.square(); } return y; }; BigInteger.prototype.modPow = function(exp, mod) { exp = parseValue(exp); mod = parseValue(mod); if (mod.isZero()) throw new Error("Cannot take modPow with modulus 0"); var r = Integer[1], base = this.mod(mod); if (exp.isNegative()) { exp = exp.multiply(Integer[-1]); base = base.modInv(mod); } while (exp.isPositive()) { if (base.isZero()) return Integer[0]; if (exp.isOdd()) r = r.multiply(base).mod(mod); exp = exp.divide(2); base = base.square().mod(mod); } return r; }; NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow; function compareAbs(a, b) { if (a.length !== b.length) { return a.length > b.length ? 1 : -1; } for (var i2 = a.length - 1; i2 >= 0; i2--) { if (a[i2] !== b[i2]) return a[i2] > b[i2] ? 1 : -1; } return 0; } BigInteger.prototype.compareAbs = function(v) { var n = parseValue(v), a = this.value, b = n.value; if (n.isSmall) return 1; return compareAbs(a, b); }; SmallInteger.prototype.compareAbs = function(v) { var n = parseValue(v), a = Math.abs(this.value), b = n.value; if (n.isSmall) { b = Math.abs(b); return a === b ? 0 : a > b ? 1 : -1; } return -1; }; NativeBigInt.prototype.compareAbs = function(v) { var a = this.value; var b = parseValue(v).value; a = a >= 0 ? a : -a; b = b >= 0 ? b : -b; return a === b ? 0 : a > b ? 1 : -1; }; BigInteger.prototype.compare = function(v) { if (v === Infinity) { return -1; } if (v === -Infinity) { return 1; } var n = parseValue(v), a = this.value, b = n.value; if (this.sign !== n.sign) { return n.sign ? 1 : -1; } if (n.isSmall) { return this.sign ? -1 : 1; } return compareAbs(a, b) * (this.sign ? -1 : 1); }; BigInteger.prototype.compareTo = BigInteger.prototype.compare; SmallInteger.prototype.compare = function(v) { if (v === Infinity) { return -1; } if (v === -Infinity) { return 1; } var n = parseValue(v), a = this.value, b = n.value; if (n.isSmall) { return a == b ? 0 : a > b ? 1 : -1; } if (a < 0 !== n.sign) { return a < 0 ? -1 : 1; } return a < 0 ? 1 : -1; }; SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; NativeBigInt.prototype.compare = function(v) { if (v === Infinity) { return -1; } if (v === -Infinity) { return 1; } var a = this.value; var b = parseValue(v).value; return a === b ? 0 : a > b ? 1 : -1; }; NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; BigInteger.prototype.equals = function(v) { return this.compare(v) === 0; }; NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals; BigInteger.prototype.notEquals = function(v) { return this.compare(v) !== 0; }; NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals; BigInteger.prototype.greater = function(v) { return this.compare(v) > 0; }; NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater; BigInteger.prototype.lesser = function(v) { return this.compare(v) < 0; }; NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser; BigInteger.prototype.greaterOrEquals = function(v) { return this.compare(v) >= 0; }; NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals; BigInteger.prototype.lesserOrEquals = function(v) { return this.compare(v) <= 0; }; NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals; BigInteger.prototype.isEven = function() { return (this.value[0] & 1) === 0; }; SmallInteger.prototype.isEven = function() { return (this.value & 1) === 0; }; NativeBigInt.prototype.isEven = function() { return (this.value & BigInt(1)) === BigInt(0); }; BigInteger.prototype.isOdd = function() { return (this.value[0] & 1) === 1; }; SmallInteger.prototype.isOdd = function() { return (this.value & 1) === 1; }; NativeBigInt.prototype.isOdd = function() { return (this.value & BigInt(1)) === BigInt(1); }; BigInteger.prototype.isPositive = function() { return !this.sign; }; SmallInteger.prototype.isPositive = function() { return this.value > 0; }; NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive; BigInteger.prototype.isNegative = function() { return this.sign; }; SmallInteger.prototype.isNegative = function() { return this.value < 0; }; NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative; BigInteger.prototype.isUnit = function() { return false; }; SmallInteger.prototype.isUnit = function() { return Math.abs(this.value) === 1; }; NativeBigInt.prototype.isUnit = function() { return this.abs().value === BigInt(1); }; BigInteger.prototype.isZero = function() { return false; }; SmallInteger.prototype.isZero = function() { return this.value === 0; }; NativeBigInt.prototype.isZero = function() { return this.value === BigInt(0); }; BigInteger.prototype.isDivisibleBy = function(v) { var n = parseValue(v); if (n.isZero()) return false; if (n.isUnit()) return true; if (n.compareAbs(2) === 0) return this.isEven(); return this.mod(n).isZero(); }; NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy; function isBasicPrime(v) { var n = v.abs(); if (n.isUnit()) return false; if (n.equals(2) || n.equals(3) || n.equals(5)) return true; if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false; if (n.lesser(49)) return true; } function millerRabinTest(n, a) { var nPrev = n.prev(), b = nPrev, r = 0, d, t, i2, x; while (b.isEven()) b = b.divide(2), r++; next: for (i2 = 0; i2 < a.length; i2++) { if (n.lesser(a[i2])) continue; x = bigInt(a[i2]).modPow(b, n); if (x.isUnit() || x.equals(nPrev)) continue; for (d = r - 1; d != 0; d--) { x = x.square().mod(n); if (x.isUnit()) return false; if (x.equals(nPrev)) continue next; } return false; } return true; } BigInteger.prototype.isPrime = function(strict) { var isPrime = isBasicPrime(this); if (isPrime !== undefined2) return isPrime; var n = this.abs(); var bits = n.bitLength(); if (bits <= 64) return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]); var logN = Math.log(2) * bits.toJSNumber(); var t = Math.ceil(strict === true ? 2 * Math.pow(logN, 2) : logN); for (var a = [], i2 = 0; i2 < t; i2++) { a.push(bigInt(i2 + 2)); } return millerRabinTest(n, a); }; NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime; BigInteger.prototype.isProbablePrime = function(iterations, rng) { var isPrime = isBasicPrime(this); if (isPrime !== undefined2) return isPrime; var n = this.abs(); var t = iterations === undefined2 ? 5 : iterations; for (var a = [], i2 = 0; i2 < t; i2++) { a.push(bigInt.randBetween(2, n.minus(2), rng)); } return millerRabinTest(n, a); }; NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime; BigInteger.prototype.modInv = function(n) { var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR; while (!newR.isZero()) { q = r.divide(newR); lastT = t; lastR = r; t = newT; r = newR; newT = lastT.subtract(q.multiply(newT)); newR = lastR.subtract(q.multiply(newR)); } if (!r.isUnit()) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime"); if (t.compare(0) === -1) { t = t.add(n); } if (this.isNegative()) { return t.negate(); } return t; }; NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv; BigInteger.prototype.next = function() { var value = this.value; if (this.sign) { return subtractSmall(value, 1, this.sign); } return new BigInteger(addSmall(value, 1), this.sign); }; SmallInteger.prototype.next = function() { var value = this.value; if (value + 1 < MAX_INT) return new SmallInteger(value + 1); return new BigInteger(MAX_INT_ARR, false); }; NativeBigInt.prototype.next = function() { return new NativeBigInt(this.value + BigInt(1)); }; BigInteger.prototype.prev = function() { var value = this.value; if (this.sign) { return new BigInteger(addSmall(value, 1), true); } return subtractSmall(value, 1, this.sign); }; SmallInteger.prototype.prev = function() { var value = this.value; if (value - 1 > -MAX_INT) return new SmallInteger(value - 1); return new BigInteger(MAX_INT_ARR, true); }; NativeBigInt.prototype.prev = function() { return new NativeBigInt(this.value - BigInt(1)); }; var powersOfTwo = [1]; while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1]; function shift_isSmall(n) { return Math.abs(n) <= BASE; } BigInteger.prototype.shiftLeft = function(v) { var n = parseValue(v).toJSNumber(); if (!shift_isSmall(n)) { throw new Error(String(n) + " is too large for shifting."); } if (n < 0) return this.shiftRight(-n); var result = this; if (result.isZero()) return result; while (n >= powers2Length) { result = result.multiply(highestPower2); n -= powers2Length - 1; } return result.multiply(powersOfTwo[n]); }; NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft; BigInteger.prototype.shiftRight = function(v) { var remQuo; var n = parseValue(v).toJSNumber(); if (!shift_isSmall(n)) { throw new Error(String(n) + " is too large for shifting."); } if (n < 0) return this.shiftLeft(-n); var result = this; while (n >= powers2Length) { if (result.isZero() || result.isNegative() && result.isUnit()) return result; remQuo = divModAny(result, highestPower2); result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; n -= powers2Length - 1; } remQuo = divModAny(result, powersOfTwo[n]); return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; }; NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight; function bitwise(x, y, fn) { y = parseValue(y); var xSign = x.isNegative(), ySign = y.isNegative(); var xRem = xSign ? x.not() : x, yRem = ySign ? y.not() : y; var xDigit = 0, yDigit = 0; var xDivMod = null, yDivMod = null; var result = []; while (!xRem.isZero() || !yRem.isZero()) { xDivMod = divModAny(xRem, highestPower2); xDigit = xDivMod[1].toJSNumber(); if (xSign) { xDigit = highestPower2 - 1 - xDigit; } yDivMod = divModAny(yRem, highestPower2); yDigit = yDivMod[1].toJSNumber(); if (ySign) { yDigit = highestPower2 - 1 - yDigit; } xRem = xDivMod[0]; yRem = yDivMod[0]; result.push(fn(xDigit, yDigit)); } var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0); for (var i2 = result.length - 1; i2 >= 0; i2 -= 1) { sum = sum.multiply(highestPower2).add(bigInt(result[i2])); } return sum; } BigInteger.prototype.not = function() { return this.negate().prev(); }; NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not; BigInteger.prototype.and = function(n) { return bitwise(this, n, function(a, b) { return a & b; }); }; NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and; BigInteger.prototype.or = function(n) { return bitwise(this, n, function(a, b) { return a | b; }); }; NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or; BigInteger.prototype.xor = function(n) { return bitwise(this, n, function(a, b) { return a ^ b; }); }; NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor; var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I; function roughLOB(n) { var v = n.value, x = typeof v === "number" ? v | LOBMASK_I : typeof v === "bigint" ? v | BigInt(LOBMASK_I) : v[0] + v[1] * BASE | LOBMASK_BI; return x & -x; } function integerLogarithm(value, base) { if (base.compareTo(value) <= 0) { var tmp = integerLogarithm(value, base.square(base)); var p = tmp.p; var e = tmp.e; var t = p.multiply(base); return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p, e: e * 2 }; } return { p: bigInt(1), e: 0 }; } BigInteger.prototype.bitLength = function() { var n = this; if (n.compareTo(bigInt(0)) < 0) { n = n.negate().subtract(bigInt(1)); } if (n.compareTo(bigInt(0)) === 0) { return bigInt(0); } return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1)); }; NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength; function max(a, b) { a = parseValue(a); b = parseValue(b); return a.greater(b) ? a : b; } function min(a, b) { a = parseValue(a); b = parseValue(b); return a.lesser(b) ? a : b; } function gcd(a, b) { a = parseValue(a).abs(); b = parseValue(b).abs(); if (a.equals(b)) return a; if (a.isZero()) return b; if (b.isZero()) return a; var c = Integer[1], d, t; while (a.isEven() && b.isEven()) { d = min(roughLOB(a), roughLOB(b)); a = a.divide(d); b = b.divide(d); c = c.multiply(d); } while (a.isEven()) { a = a.divide(roughLOB(a)); } do { while (b.isEven()) { b = b.divide(roughLOB(b)); } if (a.greater(b)) { t = b; b = a; a = t; } b = b.subtract(a); } while (!b.isZero()); return c.isUnit() ? a : a.multiply(c); } function lcm(a, b) { a = parseValue(a).abs(); b = parseValue(b).abs(); return a.divide(gcd(a, b)).multiply(b); } function randBetween(a, b, rng) { a = parseValue(a); b = parseValue(b); var usedRNG = rng || Math.random; var low = min(a, b), high = max(a, b); var range = high.subtract(low).add(1); if (range.isSmall) return low.add(Math.floor(usedRNG() * range)); var digits = toBase(range, BASE).value; var result = [], restricted = true; for (var i2 = 0; i2 < digits.length; i2++) { var top = restricted ? digits[i2] + (i2 + 1 < digits.length ? digits[i2 + 1] / BASE : 0) : BASE; var digit = truncate(usedRNG() * top); result.push(digit); if (digit < digits[i2]) restricted = false; } return low.add(Integer.fromArray(result, BASE, false)); } var parseBase = function(text, base, alphabet, caseSensitive) { alphabet = alphabet || DEFAULT_ALPHABET; text = String(text); if (!caseSensitive) { text = text.toLowerCase(); alphabet = alphabet.toLowerCase(); } var length = text.length; var i2; var absBase = Math.abs(base); var alphabetValues = {}; for (i2 = 0; i2 < alphabet.length; i2++) { alphabetValues[alphabet[i2]] = i2; } for (i2 = 0; i2 < length; i2++) { var c = text[i2]; if (c === "-") continue; if (c in alphabetValues) { if (alphabetValues[c] >= absBase) { if (c === "1" && absBase === 1) continue; throw new Error(c + " is not a valid digit in base " + base + "."); } } } base = parseValue(base); var digits = []; var isNegative = text[0] === "-"; for (i2 = isNegative ? 1 : 0; i2 < text.length; i2++) { var c = text[i2]; if (c in alphabetValues) digits.push(parseValue(alphabetValues[c])); else if (c === "<") { var start = i2; do { i2++; } while (text[i2] !== ">" && i2 < text.length); digits.push(parseValue(text.slice(start + 1, i2))); } else throw new Error(c + " is not a valid character"); } return parseBaseFromArray(digits, base, isNegative); }; function parseBaseFromArray(digits, base, isNegative) { var val = Integer[0], pow = Integer[1], i2; for (i2 = digits.length - 1; i2 >= 0; i2--) { val = val.add(digits[i2].times(pow)); pow = pow.times(base); } return isNegative ? val.negate() : val; } function stringify(digit, alphabet) { alphabet = alphabet || DEFAULT_ALPHABET; if (digit < alphabet.length) { return alphabet[digit]; } return "<" + digit + ">"; } function toBase(n, base) { base = bigInt(base); if (base.isZero()) { if (n.isZero()) return { value: [0], isNegative: false }; throw new Error("Cannot convert nonzero numbers to base 0."); } if (base.equals(-1)) { if (n.isZero()) return { value: [0], isNegative: false }; if (n.isNegative()) return { value: [].concat.apply( [], Array.apply(null, Array(-n.toJSNumber())).map(Array.prototype.valueOf, [1, 0]) ), isNegative: false }; var arr = Array.apply(null, Array(n.toJSNumber() - 1)).map(Array.prototype.valueOf, [0, 1]); arr.unshift([1]); return { value: [].concat.apply([], arr), isNegative: false }; } var neg = false; if (n.isNegative() && base.isPositive()) { neg = true; n = n.abs(); } if (base.isUnit()) { if (n.isZero()) return { value: [0], isNegative: false }; return { value: Array.apply(null, Array(n.toJSNumber())).map(Number.prototype.valueOf, 1), isNegative: neg }; } var out = []; var left = n, divmod; while (left.isNegative() || left.compareAbs(base) >= 0) { divmod = left.divmod(base); left = divmod.quotient; var digit = divmod.remainder; if (digit.isNegative()) { digit = base.minus(digit).abs(); left = left.next(); } out.push(digit.toJSNumber()); } out.push(left.toJSNumber()); return { value: out.reverse(), isNegative: neg }; } function toBaseString(n, base, alphabet) { var arr = toBase(n, base); return (arr.isNegative ? "-" : "") + arr.value.map(function(x) { return stringify(x, alphabet); }).join(""); } BigInteger.prototype.toArray = function(radix) { return toBase(this, radix); }; SmallInteger.prototype.toArray = function(radix) { return toBase(this, radix); }; NativeBigInt.prototype.toArray = function(radix) { return toBase(this, radix); }; BigInteger.prototype.toString = function(radix, alphabet) { if (radix === undefined2) radix = 10; if (radix !== 10 || alphabet) return toBaseString(this, radix, alphabet); var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit; while (--l >= 0) { digit = String(v[l]); str += zeros.slice(digit.length) + digit; } var sign = this.sign ? "-" : ""; return sign + str; }; SmallInteger.prototype.toString = function(radix, alphabet) { if (radix === undefined2) radix = 10; if (radix != 10 || alphabet) return toBaseString(this, radix, alphabet); return String(this.value); }; NativeBigInt.prototype.toString = SmallInteger.prototype.toString; NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function() { return this.toString(); }; BigInteger.prototype.valueOf = function() { return parseInt(this.toString(), 10); }; BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; SmallInteger.prototype.valueOf = function() { return this.value; }; SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function() { return parseInt(this.toString(), 10); }; function parseStringValue(v) { if (isPrecise(+v)) { var x = +v; if (x === truncate(x)) return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x); throw new Error("Invalid integer: " + v); } var sign = v[0] === "-"; if (sign) v = v.slice(1); var split = v.split(/e/i); if (split.length > 2) throw new Error("Invalid integer: " + split.join("e")); if (split.length === 2) { var exp = split[1]; if (exp[0] === "+") exp = exp.slice(1); exp = +exp; if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent."); var text = split[0]; var decimalPlace = text.indexOf("."); if (decimalPlace >= 0) { exp -= text.length - decimalPlace - 1; text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1); } if (exp < 0) throw new Error("Cannot include negative exponent part for integers"); text += new Array(exp + 1).join("0"); v = text; } var isValid = /^([0-9][0-9]*)$/.test(v); if (!isValid) throw new Error("Invalid integer: " + v); if (supportsNativeBigInt) { return new NativeBigInt(BigInt(sign ? "-" + v : v)); } var r = [], max2 = v.length, l = LOG_BASE, min2 = max2 - l; while (max2 > 0) { r.push(+v.slice(min2, max2)); min2 -= l; if (min2 < 0) min2 = 0; max2 -= l; } trim(r); return new BigInteger(r, sign); } function parseNumberValue(v) { if (supportsNativeBigInt) { return new NativeBigInt(BigInt(v)); } if (isPrecise(v)) { if (v !== truncate(v)) throw new Error(v + " is not an integer."); return new SmallInteger(v); } return parseStringValue(v.toString()); } function parseValue(v) { if (typeof v === "number") { return parseNumberValue(v); } if (typeof v === "string") { return parseStringValue(v); } if (typeof v === "bigint") { return new NativeBigInt(v); } return v; } for (var i = 0; i < 1e3; i++) { Integer[i] = parseValue(i); if (i > 0) Integer[-i] = parseValue(-i); } Integer.one = Integer[1]; Integer.zero = Integer[0]; Integer.minusOne = Integer[-1]; Integer.max = max; Integer.min = min; Integer.gcd = gcd; Integer.lcm = lcm; Integer.isInstance = function(x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; }; Integer.randBetween = randBetween; Integer.fromArray = function(digits, base, isNegative) { return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative); }; return Integer; }(); if (typeof module2 !== "undefined" && module2.hasOwnProperty("exports")) { module2.exports = bigInt; } if (typeof define === "function" && define.amd) { define(function() { return bigInt; }); } } }); // node_modules/bplist-parser/bplistParser.js var require_bplistParser = __commonJS({ "node_modules/bplist-parser/bplistParser.js"(exports2) { "use strict"; var fs7 = require("fs"); var bigInt = require_BigInteger(); var debug = false; exports2.maxObjectSize = 100 * 1e3 * 1e3; exports2.maxObjectCount = 32768; var EPOCH = 9783072e5; var UID = exports2.UID = function(id) { this.UID = id; }; var parseFile = exports2.parseFile = function(fileNameOrBuffer, callback) { return new Promise(function(resolve, reject) { function tryParseBuffer(buffer) { let err2 = null; let result; try { result = parseBuffer(buffer); resolve(result); } catch (ex) { err2 = ex; reject(err2); } finally { if (callback) callback(err2, result); } } if (Buffer.isBuffer(fileNameOrBuffer)) { return tryParseBuffer(fileNameOrBuffer); } fs7.readFile(fileNameOrBuffer, function(err2, data) { if (err2) { reject(err2); return callback(err2); } tryParseBuffer(data); }); }); }; var parseBuffer = exports2.parseBuffer = function(buffer) { const header = buffer.slice(0, "bplist".length).toString("utf8"); if (header !== "bplist") { throw new Error("Invalid binary plist. Expected 'bplist' at offset 0."); } const trailer = buffer.slice(buffer.length - 32, buffer.length); const offsetSize = trailer.readUInt8(6); if (debug) { console.log("offsetSize: " + offsetSize); } const objectRefSize = trailer.readUInt8(7); if (debug) { console.log("objectRefSize: " + objectRefSize); } const numObjects = readUInt64BE(trailer, 8); if (debug) { console.log("numObjects: " + numObjects); } const topObject = readUInt64BE(trailer, 16); if (debug) { console.log("topObject: " + topObject); } const offsetTableOffset = readUInt64BE(trailer, 24); if (debug) { console.log("offsetTableOffset: " + offsetTableOffset); } if (numObjects > exports2.maxObjectCount) { throw new Error("maxObjectCount exceeded"); } const offsetTable = []; for (let i = 0; i < numObjects; i++) { const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize); offsetTable[i] = readUInt(offsetBytes, 0); if (debug) { console.log("Offset for Object #" + i + " is " + offsetTable[i] + " [" + offsetTable[i].toString(16) + "]"); } } function parseObject(tableOffset) { const offset = offsetTable[tableOffset]; const type = buffer[offset]; const objType = (type & 240) >> 4; const objInfo = type & 15; switch (objType) { case 0: return parseSimple(); case 1: return parseInteger(); case 8: return parseUID(); case 2: return parseReal(); case 3: return parseDate(); case 4: return parseData2(); case 5: return parsePlistString(); case 6: return parsePlistString(true); case 10: return parseArray(); case 13: return parseDictionary(); default: throw new Error("Unhandled type 0x" + objType.toString(16)); } function parseSimple() { switch (objInfo) { case 0: return null; case 8: return false; case 9: return true; case 15: return null; default: throw new Error("Unhandled simple type 0x" + objType.toString(16)); } } function bufferToHexString(buffer2) { let str = ""; let i; for (i = 0; i < buffer2.length; i++) { if (buffer2[i] != 0) { break; } } for (; i < buffer2.length; i++) { const part = "00" + buffer2[i].toString(16); str += part.substr(part.length - 2); } return str; } function parseInteger() { const length = Math.pow(2, objInfo); if (objInfo == 4) { const data = buffer.slice(offset + 1, offset + 1 + length); const str = bufferToHexString(data); return bigInt(str, 16); } if (objInfo == 3) { return buffer.readInt32BE(offset + 1); } if (length < exports2.maxObjectSize) { return readUInt(buffer.slice(offset + 1, offset + 1 + length)); } throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports2.maxObjectSize + " are available."); } function parseUID() { const length = objInfo + 1; if (length < exports2.maxObjectSize) { return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length))); } throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports2.maxObjectSize + " are available."); } function parseReal() { const length = Math.pow(2, objInfo); if (length < exports2.maxObjectSize) { const realBuffer = buffer.slice(offset + 1, offset + 1 + length); if (length === 4) { return realBuffer.readFloatBE(0); } if (length === 8) { return realBuffer.readDoubleBE(0); } } else { throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports2.maxObjectSize + " are available."); } } function parseDate() { if (objInfo != 3) { console.error("Unknown date type :" + objInfo + ". Parsing anyway..."); } const dateBuffer = buffer.slice(offset + 1, offset + 9); return new Date(EPOCH + 1e3 * dateBuffer.readDoubleBE(0)); } function parseData2() { let dataoffset = 1; let length = objInfo; if (objInfo == 15) { const int_type = buffer[offset + 1]; const intType = (int_type & 240) / 16; if (intType != 1) { console.error("0x4: UNEXPECTED LENGTH-INT TYPE! " + intType); } const intInfo = int_type & 15; const intLength = Math.pow(2, intInfo); dataoffset = 2 + intLength; if (intLength < 3) { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } else { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } } if (length < exports2.maxObjectSize) { return buffer.slice(offset + dataoffset, offset + dataoffset + length); } throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports2.maxObjectSize + " are available."); } function parsePlistString(isUtf16) { isUtf16 = isUtf16 || 0; let enc = "utf8"; let length = objInfo; let stroffset = 1; if (objInfo == 15) { const int_type = buffer[offset + 1]; const intType = (int_type & 240) / 16; if (intType != 1) { console.err("UNEXPECTED LENGTH-INT TYPE! " + intType); } const intInfo = int_type & 15; const intLength = Math.pow(2, intInfo); stroffset = 2 + intLength; if (intLength < 3) { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } else { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } } length *= isUtf16 + 1; if (length < exports2.maxObjectSize) { let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length)); if (isUtf16) { plistString = swapBytes(plistString); enc = "ucs2"; } return plistString.toString(enc); } throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports2.maxObjectSize + " are available."); } function parseArray() { let length = objInfo; let arrayoffset = 1; if (objInfo == 15) { const int_type = buffer[offset + 1]; const intType = (int_type & 240) / 16; if (intType != 1) { console.error("0xa: UNEXPECTED LENGTH-INT TYPE! " + intType); } const intInfo = int_type & 15; const intLength = Math.pow(2, intInfo); arrayoffset = 2 + intLength; if (intLength < 3) { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } else { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } } if (length * objectRefSize > exports2.maxObjectSize) { throw new Error("To little heap space available!"); } const array = []; for (let i = 0; i < length; i++) { const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize)); array[i] = parseObject(objRef); } return array; } function parseDictionary() { let length = objInfo; let dictoffset = 1; if (objInfo == 15) { const int_type = buffer[offset + 1]; const intType = (int_type & 240) / 16; if (intType != 1) { console.error("0xD: UNEXPECTED LENGTH-INT TYPE! " + intType); } const intInfo = int_type & 15; const intLength = Math.pow(2, intInfo); dictoffset = 2 + intLength; if (intLength < 3) { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } else { length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); } } if (length * 2 * objectRefSize > exports2.maxObjectSize) { throw new Error("To little heap space available!"); } if (debug) { console.log("Parsing dictionary #" + tableOffset); } const dict = {}; for (let i = 0; i < length; i++) { const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize)); const valRef = readUInt(buffer.slice(offset + dictoffset + length * objectRefSize + i * objectRefSize, offset + dictoffset + length * objectRefSize + (i + 1) * objectRefSize)); const key = parseObject(keyRef); const val = parseObject(valRef); if (debug) { console.log(" DICT #" + tableOffset + ": Mapped " + key + " to " + val); } dict[key] = val; } return dict; } } return [parseObject(topObject)]; }; function readUInt(buffer, start) { start = start || 0; let l = 0; for (let i = start; i < buffer.length; i++) { l <<= 8; l |= buffer[i] & 255; } return l; } function readUInt64BE(buffer, start) { const data = buffer.slice(start, start + 8); return data.readUInt32BE(4, 8); } function swapBytes(buffer) { const len = buffer.length; for (let i = 0; i < len; i += 2) { const a = buffer[i]; buffer[i] = buffer[i + 1]; buffer[i + 1] = a; } return buffer; } } }); // node_modules/untildify/index.js var require_untildify = __commonJS({ "node_modules/untildify/index.js"(exports2, module2) { "use strict"; var os3 = require("os"); var homeDirectory = os3.homedir(); module2.exports = (pathWithTilde) => { if (typeof pathWithTilde !== "string") { throw new TypeError(`Expected a string, got ${typeof pathWithTilde}`); } return homeDirectory ? pathWithTilde.replace(/^~(?=$|\/|\\)/, homeDirectory) : pathWithTilde; }; } }); // node_modules/isexe/windows.js var require_windows = __commonJS({ "node_modules/isexe/windows.js"(exports2, module2) { module2.exports = isexe; isexe.sync = sync; var fs7 = require("fs"); function checkPathExt(path11, options) { var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT; if (!pathext) { return true; } pathext = pathext.split(";"); if (pathext.indexOf("") !== -1) { return true; } for (var i = 0; i < pathext.length; i++) { var p = pathext[i].toLowerCase(); if (p && path11.substr(-p.length).toLowerCase() === p) { return true; } } return false; } function checkStat(stat, path11, options) { if (!stat.isSymbolicLink() && !stat.isFile()) { return false; } return checkPathExt(path11, options); } function isexe(path11, options, cb) { fs7.stat(path11, function(er, stat) { cb(er, er ? false : checkStat(stat, path11, options)); }); } function sync(path11, options) { return checkStat(fs7.statSync(path11), path11, options); } } }); // node_modules/isexe/mode.js var require_mode = __commonJS({ "node_modules/isexe/mode.js"(exports2, module2) { module2.exports = isexe; isexe.sync = sync; var fs7 = require("fs"); function isexe(path11, options, cb) { fs7.stat(path11, function(er, stat) { cb(er, er ? false : checkStat(stat, options)); }); } function sync(path11, options) { return checkStat(fs7.statSync(path11), options); } function checkStat(stat, options) { return stat.isFile() && checkMode(stat, options); } function checkMode(stat, options) { var mod = stat.mode; var uid = stat.uid; var gid = stat.gid; var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid(); var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid(); var u = parseInt("100", 8); var g = parseInt("010", 8); var o = parseInt("001", 8); var ug = u | g; var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0; return ret; } } }); // node_modules/isexe/index.js var require_isexe = __commonJS({ "node_modules/isexe/index.js"(exports2, module2) { var fs7 = require("fs"); var core; if (process.platform === "win32" || global.TESTING_WINDOWS) { core = require_windows(); } else { core = require_mode(); } module2.exports = isexe; isexe.sync = sync; function isexe(path11, options, cb) { if (typeof options === "function") { cb = options; options = {}; } if (!cb) { if (typeof Promise !== "function") { throw new TypeError("callback not provided"); } return new Promise(function(resolve, reject) { isexe(path11, options || {}, function(er, is) { if (er) { reject(er); } else { resolve(is); } }); }); } core(path11, options || {}, function(er, is) { if (er) { if (er.code === "EACCES" || options && options.ignoreErrors) { er = null; is = false; } } cb(er, is); }); } function sync(path11, options) { try { return core.sync(path11, options || {}); } catch (er) { if (options && options.ignoreErrors || er.code === "EACCES") { return false; } else { throw er; } } } } }); // node_modules/which/which.js var require_which = __commonJS({ "node_modules/which/which.js"(exports2, module2) { var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys"; var path11 = require("path"); var COLON = isWindows ? ";" : ":"; var isexe = require_isexe(); var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" }); var getPathInfo = (cmd, opt) => { const colon = opt.colon || COLON; const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [""] : [ // windows always checks the cwd first ...isWindows ? [process.cwd()] : [], ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ "").split(colon) ]; const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : ""; const pathExt = isWindows ? pathExtExe.split(colon) : [""]; if (isWindows) { if (cmd.indexOf(".") !== -1 && pathExt[0] !== "") pathExt.unshift(""); } return { pathEnv, pathExt, pathExtExe }; }; var which = (cmd, opt, cb) => { if (typeof opt === "function") { cb = opt; opt = {}; } if (!opt) opt = {}; const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); const found = []; const step = (i) => new Promise((resolve, reject) => { if (i === pathEnv.length) return opt.all && found.length ? resolve(found) : reject(getNotFoundError(cmd)); const ppRaw = pathEnv[i]; const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; const pCmd = path11.join(pathPart, cmd); const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; resolve(subStep(p, i, 0)); }); const subStep = (p, i, ii) => new Promise((resolve, reject) => { if (ii === pathExt.length) return resolve(step(i + 1)); const ext = pathExt[ii]; isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { if (!er && is) { if (opt.all) found.push(p + ext); else return resolve(p + ext); } return resolve(subStep(p, i, ii + 1)); }); }); return cb ? step(0).then((res) => cb(null, res), cb) : step(0); }; var whichSync = (cmd, opt) => { opt = opt || {}; const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); const found = []; for (let i = 0; i < pathEnv.length; i++) { const ppRaw = pathEnv[i]; const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; const pCmd = path11.join(pathPart, cmd); const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; for (let j = 0; j < pathExt.length; j++) { const cur = p + pathExt[j]; try { const is = isexe.sync(cur, { pathExt: pathExtExe }); if (is) { if (opt.all) found.push(cur); else return cur; } } catch (ex) { } } } if (opt.all && found.length) return found; if (opt.nothrow) return null; throw getNotFoundError(cmd); }; module2.exports = which; which.sync = whichSync; } }); // node_modules/path-key/index.js var require_path_key = __commonJS({ "node_modules/path-key/index.js"(exports2, module2) { "use strict"; var pathKey2 = (options = {}) => { const environment = options.env || process.env; const platform2 = options.platform || process.platform; if (platform2 !== "win32") { return "PATH"; } return Object.keys(environment).reverse().find((key) => key.toUpperCase() === "PATH") || "Path"; }; module2.exports = pathKey2; module2.exports.default = pathKey2; } }); // node_modules/cross-spawn/lib/util/resolveCommand.js var require_resolveCommand = __commonJS({ "node_modules/cross-spawn/lib/util/resolveCommand.js"(exports2, module2) { "use strict"; var path11 = require("path"); var which = require_which(); var getPathKey = require_path_key(); function resolveCommandAttempt(parsed, withoutPathExt) { const env = parsed.options.env || process.env; const cwd = process.cwd(); const hasCustomCwd = parsed.options.cwd != null; const shouldSwitchCwd = hasCustomCwd && process.chdir !== void 0 && !process.chdir.disabled; if (shouldSwitchCwd) { try { process.chdir(parsed.options.cwd); } catch (err2) { } } let resolved; try { resolved = which.sync(parsed.command, { path: env[getPathKey({ env })], pathExt: withoutPathExt ? path11.delimiter : void 0 }); } catch (e) { } finally { if (shouldSwitchCwd) { process.chdir(cwd); } } if (resolved) { resolved = path11.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved); } return resolved; } function resolveCommand(parsed) { return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); } module2.exports = resolveCommand; } }); // node_modules/cross-spawn/lib/util/escape.js var require_escape = __commonJS({ "node_modules/cross-spawn/lib/util/escape.js"(exports2, module2) { "use strict"; var metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; function escapeCommand(arg) { arg = arg.replace(metaCharsRegExp, "^$1"); return arg; } function escapeArgument(arg, doubleEscapeMetaChars) { arg = `${arg}`; arg = arg.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"'); arg = arg.replace(/(?=(\\+?)?)\1$/, "$1$1"); arg = `"${arg}"`; arg = arg.replace(metaCharsRegExp, "^$1"); if (doubleEscapeMetaChars) { arg = arg.replace(metaCharsRegExp, "^$1"); } return arg; } module2.exports.command = escapeCommand; module2.exports.argument = escapeArgument; } }); // node_modules/shebang-regex/index.js var require_shebang_regex = __commonJS({ "node_modules/shebang-regex/index.js"(exports2, module2) { "use strict"; module2.exports = /^#!(.*)/; } }); // node_modules/shebang-command/index.js var require_shebang_command = __commonJS({ "node_modules/shebang-command/index.js"(exports2, module2) { "use strict"; var shebangRegex = require_shebang_regex(); module2.exports = (string = "") => { const match = string.match(shebangRegex); if (!match) { return null; } const [path11, argument] = match[0].replace(/#! ?/, "").split(" "); const binary = path11.split("/").pop(); if (binary === "env") { return argument; } return argument ? `${binary} ${argument}` : binary; }; } }); // node_modules/cross-spawn/lib/util/readShebang.js var require_readShebang = __commonJS({ "node_modules/cross-spawn/lib/util/readShebang.js"(exports2, module2) { "use strict"; var fs7 = require("fs"); var shebangCommand = require_shebang_command(); function readShebang(command) { const size = 150; const buffer = Buffer.alloc(size); let fd; try { fd = fs7.openSync(command, "r"); fs7.readSync(fd, buffer, 0, size, 0); fs7.closeSync(fd); } catch (e) { } return shebangCommand(buffer.toString()); } module2.exports = readShebang; } }); // node_modules/cross-spawn/lib/parse.js var require_parse = __commonJS({ "node_modules/cross-spawn/lib/parse.js"(exports2, module2) { "use strict"; var path11 = require("path"); var resolveCommand = require_resolveCommand(); var escape = require_escape(); var readShebang = require_readShebang(); var isWin = process.platform === "win32"; var isExecutableRegExp = /\.(?:com|exe)$/i; var isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; function detectShebang(parsed) { parsed.file = resolveCommand(parsed); const shebang = parsed.file && readShebang(parsed.file); if (shebang) { parsed.args.unshift(parsed.file); parsed.command = shebang; return resolveCommand(parsed); } return parsed.file; } function parseNonShell(parsed) { if (!isWin) { return parsed; } const commandFile = detectShebang(parsed); const needsShell = !isExecutableRegExp.test(commandFile); if (parsed.options.forceShell || needsShell) { const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); parsed.command = path11.normalize(parsed.command); parsed.command = escape.command(parsed.command); parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); const shellCommand = [parsed.command].concat(parsed.args).join(" "); parsed.args = ["/d", "/s", "/c", `"${shellCommand}"`]; parsed.command = process.env.comspec || "cmd.exe"; parsed.options.windowsVerbatimArguments = true; } return parsed; } function parse(command, args, options) { if (args && !Array.isArray(args)) { options = args; args = null; } args = args ? args.slice(0) : []; options = Object.assign({}, options); const parsed = { command, args, options, file: void 0, original: { command, args } }; return options.shell ? parsed : parseNonShell(parsed); } module2.exports = parse; } }); // node_modules/cross-spawn/lib/enoent.js var require_enoent = __commonJS({ "node_modules/cross-spawn/lib/enoent.js"(exports2, module2) { "use strict"; var isWin = process.platform === "win32"; function notFoundError(original, syscall) { return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { code: "ENOENT", errno: "ENOENT", syscall: `${syscall} ${original.command}`, path: original.command, spawnargs: original.args }); } function hookChildProcess(cp, parsed) { if (!isWin) { return; } const originalEmit = cp.emit; cp.emit = function(name, arg1) { if (name === "exit") { const err2 = verifyENOENT(arg1, parsed); if (err2) { return originalEmit.call(cp, "error", err2); } } return originalEmit.apply(cp, arguments); }; } function verifyENOENT(status, parsed) { if (isWin && status === 1 && !parsed.file) { return notFoundError(parsed.original, "spawn"); } return null; } function verifyENOENTSync(status, parsed) { if (isWin && status === 1 && !parsed.file) { return notFoundError(parsed.original, "spawnSync"); } return null; } module2.exports = { hookChildProcess, verifyENOENT, verifyENOENTSync, notFoundError }; } }); // node_modules/cross-spawn/index.js var require_cross_spawn = __commonJS({ "node_modules/cross-spawn/index.js"(exports2, module2) { "use strict"; var cp = require("child_process"); var parse = require_parse(); var enoent = require_enoent(); function spawn(command, args, options) { const parsed = parse(command, args, options); const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); enoent.hookChildProcess(spawned, parsed); return spawned; } function spawnSync(command, args, options) { const parsed = parse(command, args, options); const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); return result; } module2.exports = spawn; module2.exports.spawn = spawn; module2.exports.sync = spawnSync; module2.exports._parse = parse; module2.exports._enoent = enoent; } }); // node_modules/run-applescript/node_modules/strip-final-newline/index.js var require_strip_final_newline = __commonJS({ "node_modules/run-applescript/node_modules/strip-final-newline/index.js"(exports2, module2) { "use strict"; module2.exports = (input) => { const LF = typeof input === "string" ? "\n" : "\n".charCodeAt(); const CR = typeof input === "string" ? "\r" : "\r".charCodeAt(); if (input[input.length - 1] === LF) { input = input.slice(0, input.length - 1); } if (input[input.length - 1] === CR) { input = input.slice(0, input.length - 1); } return input; }; } }); // node_modules/run-applescript/node_modules/npm-run-path/index.js var require_npm_run_path = __commonJS({ "node_modules/run-applescript/node_modules/npm-run-path/index.js"(exports2, module2) { "use strict"; var path11 = require("path"); var pathKey2 = require_path_key(); var npmRunPath2 = (options) => { options = { cwd: process.cwd(), path: process.env[pathKey2()], execPath: process.execPath, ...options }; let previous; let cwdPath = path11.resolve(options.cwd); const result = []; while (previous !== cwdPath) { result.push(path11.join(cwdPath, "node_modules/.bin")); previous = cwdPath; cwdPath = path11.resolve(cwdPath, ".."); } const execPathDir = path11.resolve(options.cwd, options.execPath, ".."); result.push(execPathDir); return result.concat(options.path).join(path11.delimiter); }; module2.exports = npmRunPath2; module2.exports.default = npmRunPath2; module2.exports.env = (options) => { options = { env: process.env, ...options }; const env = { ...options.env }; const path12 = pathKey2({ env }); options.path = env[path12]; env[path12] = module2.exports(options); return env; }; } }); // node_modules/run-applescript/node_modules/mimic-fn/index.js var require_mimic_fn = __commonJS({ "node_modules/run-applescript/node_modules/mimic-fn/index.js"(exports2, module2) { "use strict"; var mimicFn = (to, from) => { for (const prop of Reflect.ownKeys(from)) { Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); } return to; }; module2.exports = mimicFn; module2.exports.default = mimicFn; } }); // node_modules/run-applescript/node_modules/onetime/index.js var require_onetime = __commonJS({ "node_modules/run-applescript/node_modules/onetime/index.js"(exports2, module2) { "use strict"; var mimicFn = require_mimic_fn(); var calledFunctions2 = /* @__PURE__ */ new WeakMap(); var onetime2 = (function_, options = {}) => { if (typeof function_ !== "function") { throw new TypeError("Expected a function"); } let returnValue; let callCount = 0; const functionName = function_.displayName || function_.name || ""; const onetime3 = function(...arguments_) { calledFunctions2.set(onetime3, ++callCount); if (callCount === 1) { returnValue = function_.apply(this, arguments_); function_ = null; } else if (options.throw === true) { throw new Error(`Function \`${functionName}\` can only be called once`); } return returnValue; }; mimicFn(onetime3, function_); calledFunctions2.set(onetime3, callCount); return onetime3; }; module2.exports = onetime2; module2.exports.default = onetime2; module2.exports.callCount = (function_) => { if (!calledFunctions2.has(function_)) { throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`); } return calledFunctions2.get(function_); }; } }); // node_modules/run-applescript/node_modules/human-signals/build/src/core.js var require_core = __commonJS({ "node_modules/run-applescript/node_modules/human-signals/build/src/core.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SIGNALS = void 0; var SIGNALS2 = [ { name: "SIGHUP", number: 1, action: "terminate", description: "Terminal closed", standard: "posix" }, { name: "SIGINT", number: 2, action: "terminate", description: "User interruption with CTRL-C", standard: "ansi" }, { name: "SIGQUIT", number: 3, action: "core", description: "User interruption with CTRL-\\", standard: "posix" }, { name: "SIGILL", number: 4, action: "core", description: "Invalid machine instruction", standard: "ansi" }, { name: "SIGTRAP", number: 5, action: "core", description: "Debugger breakpoint", standard: "posix" }, { name: "SIGABRT", number: 6, action: "core", description: "Aborted", standard: "ansi" }, { name: "SIGIOT", number: 6, action: "core", description: "Aborted", standard: "bsd" }, { name: "SIGBUS", number: 7, action: "core", description: "Bus error due to misaligned, non-existing address or paging error", standard: "bsd" }, { name: "SIGEMT", number: 7, action: "terminate", description: "Command should be emulated but is not implemented", standard: "other" }, { name: "SIGFPE", number: 8, action: "core", description: "Floating point arithmetic error", standard: "ansi" }, { name: "SIGKILL", number: 9, action: "terminate", description: "Forced termination", standard: "posix", forced: true }, { name: "SIGUSR1", number: 10, action: "terminate", description: "Application-specific signal", standard: "posix" }, { name: "SIGSEGV", number: 11, action: "core", description: "Segmentation fault", standard: "ansi" }, { name: "SIGUSR2", number: 12, action: "terminate", description: "Application-specific signal", standard: "posix" }, { name: "SIGPIPE", number: 13, action: "terminate", description: "Broken pipe or socket", standard: "posix" }, { name: "SIGALRM", number: 14, action: "terminate", description: "Timeout or timer", standard: "posix" }, { name: "SIGTERM", number: 15, action: "terminate", description: "Termination", standard: "ansi" }, { name: "SIGSTKFLT", number: 16, action: "terminate", description: "Stack is empty or overflowed", standard: "other" }, { name: "SIGCHLD", number: 17, action: "ignore", description: "Child process terminated, paused or unpaused", standard: "posix" }, { name: "SIGCLD", number: 17, action: "ignore", description: "Child process terminated, paused or unpaused", standard: "other" }, { name: "SIGCONT", number: 18, action: "unpause", description: "Unpaused", standard: "posix", forced: true }, { name: "SIGSTOP", number: 19, action: "pause", description: "Paused", standard: "posix", forced: true }, { name: "SIGTSTP", number: 20, action: "pause", description: 'Paused using CTRL-Z or "suspend"', standard: "posix" }, { name: "SIGTTIN", number: 21, action: "pause", description: "Background process cannot read terminal input", standard: "posix" }, { name: "SIGBREAK", number: 21, action: "terminate", description: "User interruption with CTRL-BREAK", standard: "other" }, { name: "SIGTTOU", number: 22, action: "pause", description: "Background process cannot write to terminal output", standard: "posix" }, { name: "SIGURG", number: 23, action: "ignore", description: "Socket received out-of-band data", standard: "bsd" }, { name: "SIGXCPU", number: 24, action: "core", description: "Process timed out", standard: "bsd" }, { name: "SIGXFSZ", number: 25, action: "core", description: "File too big", standard: "bsd" }, { name: "SIGVTALRM", number: 26, action: "terminate", description: "Timeout or timer", standard: "bsd" }, { name: "SIGPROF", number: 27, action: "terminate", description: "Timeout or timer", standard: "bsd" }, { name: "SIGWINCH", number: 28, action: "ignore", description: "Terminal window size changed", standard: "bsd" }, { name: "SIGIO", number: 29, action: "terminate", description: "I/O is available", standard: "other" }, { name: "SIGPOLL", number: 29, action: "terminate", description: "Watched event", standard: "other" }, { name: "SIGINFO", number: 29, action: "ignore", description: "Request for process information", standard: "other" }, { name: "SIGPWR", number: 30, action: "terminate", description: "Device running out of power", standard: "systemv" }, { name: "SIGSYS", number: 31, action: "core", description: "Invalid system call", standard: "other" }, { name: "SIGUNUSED", number: 31, action: "terminate", description: "Invalid system call", standard: "other" } ]; exports2.SIGNALS = SIGNALS2; } }); // node_modules/run-applescript/node_modules/human-signals/build/src/realtime.js var require_realtime = __commonJS({ "node_modules/run-applescript/node_modules/human-signals/build/src/realtime.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SIGRTMAX = exports2.getRealtimeSignals = void 0; var getRealtimeSignals2 = function() { const length = SIGRTMAX2 - SIGRTMIN2 + 1; return Array.from({ length }, getRealtimeSignal2); }; exports2.getRealtimeSignals = getRealtimeSignals2; var getRealtimeSignal2 = function(value, index) { return { name: `SIGRT${index + 1}`, number: SIGRTMIN2 + index, action: "terminate", description: "Application-specific signal (realtime)", standard: "posix" }; }; var SIGRTMIN2 = 34; var SIGRTMAX2 = 64; exports2.SIGRTMAX = SIGRTMAX2; } }); // node_modules/run-applescript/node_modules/human-signals/build/src/signals.js var require_signals = __commonJS({ "node_modules/run-applescript/node_modules/human-signals/build/src/signals.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getSignals = void 0; var _os = require("os"); var _core = require_core(); var _realtime = require_realtime(); var getSignals2 = function() { const realtimeSignals = (0, _realtime.getRealtimeSignals)(); const signals = [..._core.SIGNALS, ...realtimeSignals].map(normalizeSignal2); return signals; }; exports2.getSignals = getSignals2; var normalizeSignal2 = function({ name, number: defaultNumber, description, action, forced = false, standard }) { const { signals: { [name]: constantSignal } } = _os.constants; const supported = constantSignal !== void 0; const number = supported ? constantSignal : defaultNumber; return { name, number, description, supported, action, forced, standard }; }; } }); // node_modules/run-applescript/node_modules/human-signals/build/src/main.js var require_main = __commonJS({ "node_modules/run-applescript/node_modules/human-signals/build/src/main.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.signalsByNumber = exports2.signalsByName = void 0; var _os = require("os"); var _signals = require_signals(); var _realtime = require_realtime(); var getSignalsByName2 = function() { const signals = (0, _signals.getSignals)(); return signals.reduce(getSignalByName2, {}); }; var getSignalByName2 = function(signalByNameMemo, { name, number, description, supported, action, forced, standard }) { return { ...signalByNameMemo, [name]: { name, number, description, supported, action, forced, standard } }; }; var signalsByName2 = getSignalsByName2(); exports2.signalsByName = signalsByName2; var getSignalsByNumber2 = function() { const signals = (0, _signals.getSignals)(); const length = _realtime.SIGRTMAX + 1; const signalsA = Array.from({ length }, (value, number) => getSignalByNumber2(number, signals)); return Object.assign({}, ...signalsA); }; var getSignalByNumber2 = function(number, signals) { const signal = findSignalByNumber2(number, signals); if (signal === void 0) { return {}; } const { name, description, supported, action, forced, standard } = signal; return { [number]: { name, number, description, supported, action, forced, standard } }; }; var findSignalByNumber2 = function(number, signals) { const signal = signals.find(({ name }) => _os.constants.signals[name] === number); if (signal !== void 0) { return signal; } return signals.find((signalA) => signalA.number === number); }; var signalsByNumber2 = getSignalsByNumber2(); exports2.signalsByNumber = signalsByNumber2; } }); // node_modules/run-applescript/node_modules/execa/lib/error.js var require_error = __commonJS({ "node_modules/run-applescript/node_modules/execa/lib/error.js"(exports2, module2) { "use strict"; var { signalsByName: signalsByName2 } = require_main(); var getErrorPrefix2 = ({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }) => { if (timedOut) { return `timed out after ${timeout} milliseconds`; } if (isCanceled) { return "was canceled"; } if (errorCode !== void 0) { return `failed with ${errorCode}`; } if (signal !== void 0) { return `was killed with ${signal} (${signalDescription})`; } if (exitCode !== void 0) { return `failed with exit code ${exitCode}`; } return "failed"; }; var makeError2 = ({ stdout, stderr, all, error, signal, exitCode, command, escapedCommand, timedOut, isCanceled, killed, parsed: { options: { timeout } } }) => { exitCode = exitCode === null ? void 0 : exitCode; signal = signal === null ? void 0 : signal; const signalDescription = signal === void 0 ? void 0 : signalsByName2[signal].description; const errorCode = error && error.code; const prefix = getErrorPrefix2({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }); const execaMessage = `Command ${prefix}: ${command}`; const isError = Object.prototype.toString.call(error) === "[object Error]"; const shortMessage = isError ? `${execaMessage} ${error.message}` : execaMessage; const message = [shortMessage, stderr, stdout].filter(Boolean).join("\n"); if (isError) { error.originalMessage = error.message; error.message = message; } else { error = new Error(message); } error.shortMessage = shortMessage; error.command = command; error.escapedCommand = escapedCommand; error.exitCode = exitCode; error.signal = signal; error.signalDescription = signalDescription; error.stdout = stdout; error.stderr = stderr; if (all !== void 0) { error.all = all; } if ("bufferedData" in error) { delete error.bufferedData; } error.failed = true; error.timedOut = Boolean(timedOut); error.isCanceled = isCanceled; error.killed = killed && !timedOut; return error; }; module2.exports = makeError2; } }); // node_modules/run-applescript/node_modules/execa/lib/stdio.js var require_stdio = __commonJS({ "node_modules/run-applescript/node_modules/execa/lib/stdio.js"(exports2, module2) { "use strict"; var aliases2 = ["stdin", "stdout", "stderr"]; var hasAlias2 = (options) => aliases2.some((alias) => options[alias] !== void 0); var normalizeStdio2 = (options) => { if (!options) { return; } const { stdio } = options; if (stdio === void 0) { return aliases2.map((alias) => options[alias]); } if (hasAlias2(options)) { throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases2.map((alias) => `\`${alias}\``).join(", ")}`); } if (typeof stdio === "string") { return stdio; } if (!Array.isArray(stdio)) { throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); } const length = Math.max(stdio.length, aliases2.length); return Array.from({ length }, (value, index) => stdio[index]); }; module2.exports = normalizeStdio2; module2.exports.node = (options) => { const stdio = normalizeStdio2(options); if (stdio === "ipc") { return "ipc"; } if (stdio === void 0 || typeof stdio === "string") { return [stdio, stdio, stdio, "ipc"]; } if (stdio.includes("ipc")) { return stdio; } return [...stdio, "ipc"]; }; } }); // node_modules/run-applescript/node_modules/signal-exit/signals.js var require_signals2 = __commonJS({ "node_modules/run-applescript/node_modules/signal-exit/signals.js"(exports2, module2) { module2.exports = [ "SIGABRT", "SIGALRM", "SIGHUP", "SIGINT", "SIGTERM" ]; if (process.platform !== "win32") { module2.exports.push( "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT" // should detect profiler and enable/disable accordingly. // see #21 // 'SIGPROF' ); } if (process.platform === "linux") { module2.exports.push( "SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT", "SIGUNUSED" ); } } }); // node_modules/run-applescript/node_modules/signal-exit/index.js var require_signal_exit = __commonJS({ "node_modules/run-applescript/node_modules/signal-exit/index.js"(exports2, module2) { var process8 = global.process; var processOk = function(process9) { return process9 && typeof process9 === "object" && typeof process9.removeListener === "function" && typeof process9.emit === "function" && typeof process9.reallyExit === "function" && typeof process9.listeners === "function" && typeof process9.kill === "function" && typeof process9.pid === "number" && typeof process9.on === "function"; }; if (!processOk(process8)) { module2.exports = function() { return function() { }; }; } else { assert = require("assert"); signals = require_signals2(); isWin = /^win/i.test(process8.platform); EE = require("events"); if (typeof EE !== "function") { EE = EE.EventEmitter; } if (process8.__signal_exit_emitter__) { emitter = process8.__signal_exit_emitter__; } else { emitter = process8.__signal_exit_emitter__ = new EE(); emitter.count = 0; emitter.emitted = {}; } if (!emitter.infinite) { emitter.setMaxListeners(Infinity); emitter.infinite = true; } module2.exports = function(cb, opts) { if (!processOk(global.process)) { return function() { }; } assert.equal(typeof cb, "function", "a callback must be provided for exit handler"); if (loaded === false) { load(); } var ev = "exit"; if (opts && opts.alwaysLast) { ev = "afterexit"; } var remove = function() { emitter.removeListener(ev, cb); if (emitter.listeners("exit").length === 0 && emitter.listeners("afterexit").length === 0) { unload(); } }; emitter.on(ev, cb); return remove; }; unload = function unload2() { if (!loaded || !processOk(global.process)) { return; } loaded = false; signals.forEach(function(sig) { try { process8.removeListener(sig, sigListeners[sig]); } catch (er) { } }); process8.emit = originalProcessEmit; process8.reallyExit = originalProcessReallyExit; emitter.count -= 1; }; module2.exports.unload = unload; emit = function emit2(event, code, signal) { if (emitter.emitted[event]) { return; } emitter.emitted[event] = true; emitter.emit(event, code, signal); }; sigListeners = {}; signals.forEach(function(sig) { sigListeners[sig] = function listener() { if (!processOk(global.process)) { return; } var listeners = process8.listeners(sig); if (listeners.length === emitter.count) { unload(); emit("exit", null, sig); emit("afterexit", null, sig); if (isWin && sig === "SIGHUP") { sig = "SIGINT"; } process8.kill(process8.pid, sig); } }; }); module2.exports.signals = function() { return signals; }; loaded = false; load = function load2() { if (loaded || !processOk(global.process)) { return; } loaded = true; emitter.count += 1; signals = signals.filter(function(sig) { try { process8.on(sig, sigListeners[sig]); return true; } catch (er) { return false; } }); process8.emit = processEmit; process8.reallyExit = processReallyExit; }; module2.exports.load = load; originalProcessReallyExit = process8.reallyExit; processReallyExit = function processReallyExit2(code) { if (!processOk(global.process)) { return; } process8.exitCode = code || /* istanbul ignore next */ 0; emit("exit", process8.exitCode, null); emit("afterexit", process8.exitCode, null); originalProcessReallyExit.call(process8, process8.exitCode); }; originalProcessEmit = process8.emit; processEmit = function processEmit2(ev, arg) { if (ev === "exit" && processOk(global.process)) { if (arg !== void 0) { process8.exitCode = arg; } var ret = originalProcessEmit.apply(this, arguments); emit("exit", process8.exitCode, null); emit("afterexit", process8.exitCode, null); return ret; } else { return originalProcessEmit.apply(this, arguments); } }; } var assert; var signals; var isWin; var EE; var emitter; var unload; var emit; var sigListeners; var loaded; var load; var originalProcessReallyExit; var processReallyExit; var originalProcessEmit; var processEmit; } }); // node_modules/run-applescript/node_modules/execa/lib/kill.js var require_kill = __commonJS({ "node_modules/run-applescript/node_modules/execa/lib/kill.js"(exports2, module2) { "use strict"; var os3 = require("os"); var onExit2 = require_signal_exit(); var DEFAULT_FORCE_KILL_TIMEOUT2 = 1e3 * 5; var spawnedKill2 = (kill, signal = "SIGTERM", options = {}) => { const killResult = kill(signal); setKillTimeout2(kill, signal, options, killResult); return killResult; }; var setKillTimeout2 = (kill, signal, options, killResult) => { if (!shouldForceKill2(signal, options, killResult)) { return; } const timeout = getForceKillAfterTimeout2(options); const t = setTimeout(() => { kill("SIGKILL"); }, timeout); if (t.unref) { t.unref(); } }; var shouldForceKill2 = (signal, { forceKillAfterTimeout }, killResult) => { return isSigterm2(signal) && forceKillAfterTimeout !== false && killResult; }; var isSigterm2 = (signal) => { return signal === os3.constants.signals.SIGTERM || typeof signal === "string" && signal.toUpperCase() === "SIGTERM"; }; var getForceKillAfterTimeout2 = ({ forceKillAfterTimeout = true }) => { if (forceKillAfterTimeout === true) { return DEFAULT_FORCE_KILL_TIMEOUT2; } if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); } return forceKillAfterTimeout; }; var spawnedCancel2 = (spawned, context) => { const killResult = spawned.kill(); if (killResult) { context.isCanceled = true; } }; var timeoutKill2 = (spawned, signal, reject) => { spawned.kill(signal); reject(Object.assign(new Error("Timed out"), { timedOut: true, signal })); }; var setupTimeout2 = (spawned, { timeout, killSignal = "SIGTERM" }, spawnedPromise) => { if (timeout === 0 || timeout === void 0) { return spawnedPromise; } let timeoutId; const timeoutPromise = new Promise((resolve, reject) => { timeoutId = setTimeout(() => { timeoutKill2(spawned, killSignal, reject); }, timeout); }); const safeSpawnedPromise = spawnedPromise.finally(() => { clearTimeout(timeoutId); }); return Promise.race([timeoutPromise, safeSpawnedPromise]); }; var validateTimeout2 = ({ timeout }) => { if (timeout !== void 0 && (!Number.isFinite(timeout) || timeout < 0)) { throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); } }; var setExitHandler2 = async (spawned, { cleanup, detached }, timedPromise) => { if (!cleanup || detached) { return timedPromise; } const removeExitHandler = onExit2(() => { spawned.kill(); }); return timedPromise.finally(() => { removeExitHandler(); }); }; module2.exports = { spawnedKill: spawnedKill2, spawnedCancel: spawnedCancel2, setupTimeout: setupTimeout2, validateTimeout: validateTimeout2, setExitHandler: setExitHandler2 }; } }); // node_modules/run-applescript/node_modules/is-stream/index.js var require_is_stream = __commonJS({ "node_modules/run-applescript/node_modules/is-stream/index.js"(exports2, module2) { "use strict"; var isStream2 = (stream) => stream !== null && typeof stream === "object" && typeof stream.pipe === "function"; isStream2.writable = (stream) => isStream2(stream) && stream.writable !== false && typeof stream._write === "function" && typeof stream._writableState === "object"; isStream2.readable = (stream) => isStream2(stream) && stream.readable !== false && typeof stream._read === "function" && typeof stream._readableState === "object"; isStream2.duplex = (stream) => isStream2.writable(stream) && isStream2.readable(stream); isStream2.transform = (stream) => isStream2.duplex(stream) && typeof stream._transform === "function"; module2.exports = isStream2; } }); // node_modules/run-applescript/node_modules/get-stream/buffer-stream.js var require_buffer_stream = __commonJS({ "node_modules/run-applescript/node_modules/get-stream/buffer-stream.js"(exports2, module2) { "use strict"; var { PassThrough: PassThroughStream } = require("stream"); module2.exports = (options) => { options = { ...options }; const { array } = options; let { encoding } = options; const isBuffer = encoding === "buffer"; let objectMode = false; if (array) { objectMode = !(encoding || isBuffer); } else { encoding = encoding || "utf8"; } if (isBuffer) { encoding = null; } const stream = new PassThroughStream({ objectMode }); if (encoding) { stream.setEncoding(encoding); } let length = 0; const chunks = []; stream.on("data", (chunk) => { chunks.push(chunk); if (objectMode) { length = chunks.length; } else { length += chunk.length; } }); stream.getBufferedValue = () => { if (array) { return chunks; } return isBuffer ? Buffer.concat(chunks, length) : chunks.join(""); }; stream.getBufferedLength = () => length; return stream; }; } }); // node_modules/run-applescript/node_modules/get-stream/index.js var require_get_stream = __commonJS({ "node_modules/run-applescript/node_modules/get-stream/index.js"(exports2, module2) { "use strict"; var { constants: BufferConstants } = require("buffer"); var stream = require("stream"); var { promisify } = require("util"); var bufferStream = require_buffer_stream(); var streamPipelinePromisified = promisify(stream.pipeline); var MaxBufferError = class extends Error { constructor() { super("maxBuffer exceeded"); this.name = "MaxBufferError"; } }; async function getStream2(inputStream, options) { if (!inputStream) { throw new Error("Expected a stream"); } options = { maxBuffer: Infinity, ...options }; const { maxBuffer } = options; const stream2 = bufferStream(options); await new Promise((resolve, reject) => { const rejectPromise = (error) => { if (error && stream2.getBufferedLength() <= BufferConstants.MAX_LENGTH) { error.bufferedData = stream2.getBufferedValue(); } reject(error); }; (async () => { try { await streamPipelinePromisified(inputStream, stream2); resolve(); } catch (error) { rejectPromise(error); } })(); stream2.on("data", () => { if (stream2.getBufferedLength() > maxBuffer) { rejectPromise(new MaxBufferError()); } }); }); return stream2.getBufferedValue(); } module2.exports = getStream2; module2.exports.buffer = (stream2, options) => getStream2(stream2, { ...options, encoding: "buffer" }); module2.exports.array = (stream2, options) => getStream2(stream2, { ...options, array: true }); module2.exports.MaxBufferError = MaxBufferError; } }); // node_modules/merge-stream/index.js var require_merge_stream = __commonJS({ "node_modules/merge-stream/index.js"(exports2, module2) { "use strict"; var { PassThrough } = require("stream"); module2.exports = function() { var sources = []; var output = new PassThrough({ objectMode: true }); output.setMaxListeners(0); output.add = add; output.isEmpty = isEmpty; output.on("unpipe", remove); Array.prototype.slice.call(arguments).forEach(add); return output; function add(source) { if (Array.isArray(source)) { source.forEach(add); return this; } sources.push(source); source.once("end", remove.bind(null, source)); source.once("error", output.emit.bind(output, "error")); source.pipe(output, { end: false }); return this; } function isEmpty() { return sources.length == 0; } function remove(source) { sources = sources.filter(function(it) { return it !== source; }); if (!sources.length && output.readable) { output.end(); } } }; } }); // node_modules/run-applescript/node_modules/execa/lib/stream.js var require_stream = __commonJS({ "node_modules/run-applescript/node_modules/execa/lib/stream.js"(exports2, module2) { "use strict"; var isStream2 = require_is_stream(); var getStream2 = require_get_stream(); var mergeStream2 = require_merge_stream(); var handleInput2 = (spawned, input) => { if (input === void 0 || spawned.stdin === void 0) { return; } if (isStream2(input)) { input.pipe(spawned.stdin); } else { spawned.stdin.end(input); } }; var makeAllStream2 = (spawned, { all }) => { if (!all || !spawned.stdout && !spawned.stderr) { return; } const mixed = mergeStream2(); if (spawned.stdout) { mixed.add(spawned.stdout); } if (spawned.stderr) { mixed.add(spawned.stderr); } return mixed; }; var getBufferedData2 = async (stream, streamPromise) => { if (!stream) { return; } stream.destroy(); try { return await streamPromise; } catch (error) { return error.bufferedData; } }; var getStreamPromise2 = (stream, { encoding, buffer, maxBuffer }) => { if (!stream || !buffer) { return; } if (encoding) { return getStream2(stream, { encoding, maxBuffer }); } return getStream2.buffer(stream, { maxBuffer }); }; var getSpawnedResult2 = async ({ stdout, stderr, all }, { encoding, buffer, maxBuffer }, processDone) => { const stdoutPromise = getStreamPromise2(stdout, { encoding, buffer, maxBuffer }); const stderrPromise = getStreamPromise2(stderr, { encoding, buffer, maxBuffer }); const allPromise = getStreamPromise2(all, { encoding, buffer, maxBuffer: maxBuffer * 2 }); try { return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); } catch (error) { return Promise.all([ { error, signal: error.signal, timedOut: error.timedOut }, getBufferedData2(stdout, stdoutPromise), getBufferedData2(stderr, stderrPromise), getBufferedData2(all, allPromise) ]); } }; var validateInputSync = ({ input }) => { if (isStream2(input)) { throw new TypeError("The `input` option cannot be a stream in sync mode"); } }; module2.exports = { handleInput: handleInput2, makeAllStream: makeAllStream2, getSpawnedResult: getSpawnedResult2, validateInputSync }; } }); // node_modules/run-applescript/node_modules/execa/lib/promise.js var require_promise = __commonJS({ "node_modules/run-applescript/node_modules/execa/lib/promise.js"(exports2, module2) { "use strict"; var nativePromisePrototype2 = (async () => { })().constructor.prototype; var descriptors2 = ["then", "catch", "finally"].map((property) => [ property, Reflect.getOwnPropertyDescriptor(nativePromisePrototype2, property) ]); var mergePromise2 = (spawned, promise) => { for (const [property, descriptor] of descriptors2) { const value = typeof promise === "function" ? (...args) => Reflect.apply(descriptor.value, promise(), args) : descriptor.value.bind(promise); Reflect.defineProperty(spawned, property, { ...descriptor, value }); } return spawned; }; var getSpawnedPromise2 = (spawned) => { return new Promise((resolve, reject) => { spawned.on("exit", (exitCode, signal) => { resolve({ exitCode, signal }); }); spawned.on("error", (error) => { reject(error); }); if (spawned.stdin) { spawned.stdin.on("error", (error) => { reject(error); }); } }); }; module2.exports = { mergePromise: mergePromise2, getSpawnedPromise: getSpawnedPromise2 }; } }); // node_modules/run-applescript/node_modules/execa/lib/command.js var require_command = __commonJS({ "node_modules/run-applescript/node_modules/execa/lib/command.js"(exports2, module2) { "use strict"; var normalizeArgs2 = (file, args = []) => { if (!Array.isArray(args)) { return [file]; } return [file, ...args]; }; var NO_ESCAPE_REGEXP2 = /^[\w.-]+$/; var DOUBLE_QUOTES_REGEXP2 = /"/g; var escapeArg2 = (arg) => { if (typeof arg !== "string" || NO_ESCAPE_REGEXP2.test(arg)) { return arg; } return `"${arg.replace(DOUBLE_QUOTES_REGEXP2, '\\"')}"`; }; var joinCommand2 = (file, args) => { return normalizeArgs2(file, args).join(" "); }; var getEscapedCommand2 = (file, args) => { return normalizeArgs2(file, args).map((arg) => escapeArg2(arg)).join(" "); }; var SPACES_REGEXP2 = / +/g; var parseCommand2 = (command) => { const tokens = []; for (const token of command.trim().split(SPACES_REGEXP2)) { const previousToken = tokens[tokens.length - 1]; if (previousToken && previousToken.endsWith("\\")) { tokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`; } else { tokens.push(token); } } return tokens; }; module2.exports = { joinCommand: joinCommand2, getEscapedCommand: getEscapedCommand2, parseCommand: parseCommand2 }; } }); // node_modules/run-applescript/node_modules/execa/index.js var require_execa = __commonJS({ "node_modules/run-applescript/node_modules/execa/index.js"(exports2, module2) { "use strict"; var path11 = require("path"); var childProcess3 = require("child_process"); var crossSpawn2 = require_cross_spawn(); var stripFinalNewline2 = require_strip_final_newline(); var npmRunPath2 = require_npm_run_path(); var onetime2 = require_onetime(); var makeError2 = require_error(); var normalizeStdio2 = require_stdio(); var { spawnedKill: spawnedKill2, spawnedCancel: spawnedCancel2, setupTimeout: setupTimeout2, validateTimeout: validateTimeout2, setExitHandler: setExitHandler2 } = require_kill(); var { handleInput: handleInput2, getSpawnedResult: getSpawnedResult2, makeAllStream: makeAllStream2, validateInputSync } = require_stream(); var { mergePromise: mergePromise2, getSpawnedPromise: getSpawnedPromise2 } = require_promise(); var { joinCommand: joinCommand2, parseCommand: parseCommand2, getEscapedCommand: getEscapedCommand2 } = require_command(); var DEFAULT_MAX_BUFFER2 = 1e3 * 1e3 * 100; var getEnv2 = ({ env: envOption, extendEnv, preferLocal, localDir, execPath }) => { const env = extendEnv ? { ...process.env, ...envOption } : envOption; if (preferLocal) { return npmRunPath2.env({ env, cwd: localDir, execPath }); } return env; }; var handleArguments2 = (file, args, options = {}) => { const parsed = crossSpawn2._parse(file, args, options); file = parsed.command; args = parsed.args; options = parsed.options; options = { maxBuffer: DEFAULT_MAX_BUFFER2, buffer: true, stripFinalNewline: true, extendEnv: true, preferLocal: false, localDir: options.cwd || process.cwd(), execPath: process.execPath, encoding: "utf8", reject: true, cleanup: true, all: false, windowsHide: true, ...options }; options.env = getEnv2(options); options.stdio = normalizeStdio2(options); if (process.platform === "win32" && path11.basename(file, ".exe") === "cmd") { args.unshift("/q"); } return { file, args, options, parsed }; }; var handleOutput2 = (options, value, error) => { if (typeof value !== "string" && !Buffer.isBuffer(value)) { return error === void 0 ? void 0 : ""; } if (options.stripFinalNewline) { return stripFinalNewline2(value); } return value; }; var execa3 = (file, args, options) => { const parsed = handleArguments2(file, args, options); const command = joinCommand2(file, args); const escapedCommand = getEscapedCommand2(file, args); validateTimeout2(parsed.options); let spawned; try { spawned = childProcess3.spawn(parsed.file, parsed.args, parsed.options); } catch (error) { const dummySpawned = new childProcess3.ChildProcess(); const errorPromise = Promise.reject(makeError2({ error, stdout: "", stderr: "", all: "", command, escapedCommand, parsed, timedOut: false, isCanceled: false, killed: false })); return mergePromise2(dummySpawned, errorPromise); } const spawnedPromise = getSpawnedPromise2(spawned); const timedPromise = setupTimeout2(spawned, parsed.options, spawnedPromise); const processDone = setExitHandler2(spawned, parsed.options, timedPromise); const context = { isCanceled: false }; spawned.kill = spawnedKill2.bind(null, spawned.kill.bind(spawned)); spawned.cancel = spawnedCancel2.bind(null, spawned, context); const handlePromise = async () => { const [{ error, exitCode, signal, timedOut }, stdoutResult, stderrResult, allResult] = await getSpawnedResult2(spawned, parsed.options, processDone); const stdout = handleOutput2(parsed.options, stdoutResult); const stderr = handleOutput2(parsed.options, stderrResult); const all = handleOutput2(parsed.options, allResult); if (error || exitCode !== 0 || signal !== null) { const returnedError = makeError2({ error, exitCode, signal, stdout, stderr, all, command, escapedCommand, parsed, timedOut, isCanceled: context.isCanceled, killed: spawned.killed }); if (!parsed.options.reject) { return returnedError; } throw returnedError; } return { command, escapedCommand, exitCode: 0, stdout, stderr, all, failed: false, timedOut: false, isCanceled: false, killed: false }; }; const handlePromiseOnce = onetime2(handlePromise); handleInput2(spawned, parsed.options.input); spawned.all = makeAllStream2(spawned, parsed.options); return mergePromise2(spawned, handlePromiseOnce); }; module2.exports = execa3; module2.exports.sync = (file, args, options) => { const parsed = handleArguments2(file, args, options); const command = joinCommand2(file, args); const escapedCommand = getEscapedCommand2(file, args); validateInputSync(parsed.options); let result; try { result = childProcess3.spawnSync(parsed.file, parsed.args, parsed.options); } catch (error) { throw makeError2({ error, stdout: "", stderr: "", all: "", command, escapedCommand, parsed, timedOut: false, isCanceled: false, killed: false }); } const stdout = handleOutput2(parsed.options, result.stdout, result.error); const stderr = handleOutput2(parsed.options, result.stderr, result.error); if (result.error || result.status !== 0 || result.signal !== null) { const error = makeError2({ stdout, stderr, error: result.error, signal: result.signal, exitCode: result.status, command, escapedCommand, parsed, timedOut: result.error && result.error.code === "ETIMEDOUT", isCanceled: false, killed: result.signal !== null }); if (!parsed.options.reject) { return error; } throw error; } return { command, escapedCommand, exitCode: 0, stdout, stderr, failed: false, timedOut: false, isCanceled: false, killed: false }; }; module2.exports.command = (command, options) => { const [file, ...args] = parseCommand2(command); return execa3(file, args, options); }; module2.exports.commandSync = (command, options) => { const [file, ...args] = parseCommand2(command); return execa3.sync(file, args, options); }; module2.exports.node = (scriptPath, args, options = {}) => { if (args && !Array.isArray(args) && typeof args === "object") { options = args; args = []; } const stdio = normalizeStdio2.node(options); const defaultExecArgv = process.execArgv.filter((arg) => !arg.startsWith("--inspect")); const { nodePath = process.execPath, nodeOptions = defaultExecArgv } = options; return execa3( nodePath, [ ...nodeOptions, scriptPath, ...Array.isArray(args) ? args : [] ], { ...options, stdin: void 0, stdout: void 0, stderr: void 0, stdio, shell: false } ); }; } }); // node_modules/default-browser/node_modules/signal-exit/signals.js var require_signals3 = __commonJS({ "node_modules/default-browser/node_modules/signal-exit/signals.js"(exports2, module2) { module2.exports = [ "SIGABRT", "SIGALRM", "SIGHUP", "SIGINT", "SIGTERM" ]; if (process.platform !== "win32") { module2.exports.push( "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT" // should detect profiler and enable/disable accordingly. // see #21 // 'SIGPROF' ); } if (process.platform === "linux") { module2.exports.push( "SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT", "SIGUNUSED" ); } } }); // node_modules/default-browser/node_modules/signal-exit/index.js var require_signal_exit2 = __commonJS({ "node_modules/default-browser/node_modules/signal-exit/index.js"(exports2, module2) { var process8 = global.process; var processOk = function(process9) { return process9 && typeof process9 === "object" && typeof process9.removeListener === "function" && typeof process9.emit === "function" && typeof process9.reallyExit === "function" && typeof process9.listeners === "function" && typeof process9.kill === "function" && typeof process9.pid === "number" && typeof process9.on === "function"; }; if (!processOk(process8)) { module2.exports = function() { return function() { }; }; } else { assert = require("assert"); signals = require_signals3(); isWin = /^win/i.test(process8.platform); EE = require("events"); if (typeof EE !== "function") { EE = EE.EventEmitter; } if (process8.__signal_exit_emitter__) { emitter = process8.__signal_exit_emitter__; } else { emitter = process8.__signal_exit_emitter__ = new EE(); emitter.count = 0; emitter.emitted = {}; } if (!emitter.infinite) { emitter.setMaxListeners(Infinity); emitter.infinite = true; } module2.exports = function(cb, opts) { if (!processOk(global.process)) { return function() { }; } assert.equal(typeof cb, "function", "a callback must be provided for exit handler"); if (loaded === false) { load(); } var ev = "exit"; if (opts && opts.alwaysLast) { ev = "afterexit"; } var remove = function() { emitter.removeListener(ev, cb); if (emitter.listeners("exit").length === 0 && emitter.listeners("afterexit").length === 0) { unload(); } }; emitter.on(ev, cb); return remove; }; unload = function unload2() { if (!loaded || !processOk(global.process)) { return; } loaded = false; signals.forEach(function(sig) { try { process8.removeListener(sig, sigListeners[sig]); } catch (er) { } }); process8.emit = originalProcessEmit; process8.reallyExit = originalProcessReallyExit; emitter.count -= 1; }; module2.exports.unload = unload; emit = function emit2(event, code, signal) { if (emitter.emitted[event]) { return; } emitter.emitted[event] = true; emitter.emit(event, code, signal); }; sigListeners = {}; signals.forEach(function(sig) { sigListeners[sig] = function listener() { if (!processOk(global.process)) { return; } var listeners = process8.listeners(sig); if (listeners.length === emitter.count) { unload(); emit("exit", null, sig); emit("afterexit", null, sig); if (isWin && sig === "SIGHUP") { sig = "SIGINT"; } process8.kill(process8.pid, sig); } }; }); module2.exports.signals = function() { return signals; }; loaded = false; load = function load2() { if (loaded || !processOk(global.process)) { return; } loaded = true; emitter.count += 1; signals = signals.filter(function(sig) { try { process8.on(sig, sigListeners[sig]); return true; } catch (er) { return false; } }); process8.emit = processEmit; process8.reallyExit = processReallyExit; }; module2.exports.load = load; originalProcessReallyExit = process8.reallyExit; processReallyExit = function processReallyExit2(code) { if (!processOk(global.process)) { return; } process8.exitCode = code || /* istanbul ignore next */ 0; emit("exit", process8.exitCode, null); emit("afterexit", process8.exitCode, null); originalProcessReallyExit.call(process8, process8.exitCode); }; originalProcessEmit = process8.emit; processEmit = function processEmit2(ev, arg) { if (ev === "exit" && processOk(global.process)) { if (arg !== void 0) { process8.exitCode = arg; } var ret = originalProcessEmit.apply(this, arguments); emit("exit", process8.exitCode, null); emit("afterexit", process8.exitCode, null); return ret; } else { return originalProcessEmit.apply(this, arguments); } }; } var assert; var signals; var isWin; var EE; var emitter; var unload; var emit; var sigListeners; var loaded; var load; var originalProcessReallyExit; var processReallyExit; var originalProcessEmit; var processEmit; } }); // node_modules/default-browser/node_modules/get-stream/buffer-stream.js var require_buffer_stream2 = __commonJS({ "node_modules/default-browser/node_modules/get-stream/buffer-stream.js"(exports2, module2) { "use strict"; var { PassThrough: PassThroughStream } = require("stream"); module2.exports = (options) => { options = { ...options }; const { array } = options; let { encoding } = options; const isBuffer = encoding === "buffer"; let objectMode = false; if (array) { objectMode = !(encoding || isBuffer); } else { encoding = encoding || "utf8"; } if (isBuffer) { encoding = null; } const stream = new PassThroughStream({ objectMode }); if (encoding) { stream.setEncoding(encoding); } let length = 0; const chunks = []; stream.on("data", (chunk) => { chunks.push(chunk); if (objectMode) { length = chunks.length; } else { length += chunk.length; } }); stream.getBufferedValue = () => { if (array) { return chunks; } return isBuffer ? Buffer.concat(chunks, length) : chunks.join(""); }; stream.getBufferedLength = () => length; return stream; }; } }); // node_modules/default-browser/node_modules/get-stream/index.js var require_get_stream2 = __commonJS({ "node_modules/default-browser/node_modules/get-stream/index.js"(exports2, module2) { "use strict"; var { constants: BufferConstants } = require("buffer"); var stream = require("stream"); var { promisify } = require("util"); var bufferStream = require_buffer_stream2(); var streamPipelinePromisified = promisify(stream.pipeline); var MaxBufferError = class extends Error { constructor() { super("maxBuffer exceeded"); this.name = "MaxBufferError"; } }; async function getStream2(inputStream, options) { if (!inputStream) { throw new Error("Expected a stream"); } options = { maxBuffer: Infinity, ...options }; const { maxBuffer } = options; const stream2 = bufferStream(options); await new Promise((resolve, reject) => { const rejectPromise = (error) => { if (error && stream2.getBufferedLength() <= BufferConstants.MAX_LENGTH) { error.bufferedData = stream2.getBufferedValue(); } reject(error); }; (async () => { try { await streamPipelinePromisified(inputStream, stream2); resolve(); } catch (error) { rejectPromise(error); } })(); stream2.on("data", () => { if (stream2.getBufferedLength() > maxBuffer) { rejectPromise(new MaxBufferError()); } }); }); return stream2.getBufferedValue(); } module2.exports = getStream2; module2.exports.buffer = (stream2, options) => getStream2(stream2, { ...options, encoding: "buffer" }); module2.exports.array = (stream2, options) => getStream2(stream2, { ...options, array: true }); module2.exports.MaxBufferError = MaxBufferError; } }); // node_modules/ws/lib/stream.js var require_stream2 = __commonJS({ "node_modules/ws/lib/stream.js"(exports2, module2) { "use strict"; var { Duplex } = require("stream"); function emitClose(stream) { stream.emit("close"); } function duplexOnEnd() { if (!this.destroyed && this._writableState.finished) { this.destroy(); } } function duplexOnError(err2) { this.removeListener("error", duplexOnError); this.destroy(); if (this.listenerCount("error") === 0) { this.emit("error", err2); } } function createWebSocketStream2(ws, options) { let terminateOnDestroy = true; const duplex = new Duplex({ ...options, autoDestroy: false, emitClose: false, objectMode: false, writableObjectMode: false }); ws.on("message", function message(msg, isBinary) { const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; if (!duplex.push(data)) ws.pause(); }); ws.once("error", function error(err2) { if (duplex.destroyed) return; terminateOnDestroy = false; duplex.destroy(err2); }); ws.once("close", function close() { if (duplex.destroyed) return; duplex.push(null); }); duplex._destroy = function(err2, callback) { if (ws.readyState === ws.CLOSED) { callback(err2); process.nextTick(emitClose, duplex); return; } let called = false; ws.once("error", function error(err3) { called = true; callback(err3); }); ws.once("close", function close() { if (!called) callback(err2); process.nextTick(emitClose, duplex); }); if (terminateOnDestroy) ws.terminate(); }; duplex._final = function(callback) { if (ws.readyState === ws.CONNECTING) { ws.once("open", function open2() { duplex._final(callback); }); return; } if (ws._socket === null) return; if (ws._socket._writableState.finished) { callback(); if (duplex._readableState.endEmitted) duplex.destroy(); } else { ws._socket.once("finish", function finish() { callback(); }); ws.close(); } }; duplex._read = function() { if (ws.isPaused) ws.resume(); }; duplex._write = function(chunk, encoding, callback) { if (ws.readyState === ws.CONNECTING) { ws.once("open", function open2() { duplex._write(chunk, encoding, callback); }); return; } ws.send(chunk, callback); }; duplex.on("end", duplexOnEnd); duplex.on("error", duplexOnError); return duplex; } module2.exports = createWebSocketStream2; } }); // node_modules/ws/lib/constants.js var require_constants = __commonJS({ "node_modules/ws/lib/constants.js"(exports2, module2) { "use strict"; module2.exports = { BINARY_TYPES: ["nodebuffer", "arraybuffer", "fragments"], EMPTY_BUFFER: Buffer.alloc(0), GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), kListener: Symbol("kListener"), kStatusCode: Symbol("status-code"), kWebSocket: Symbol("websocket"), NOOP: () => { } }; } }); // node_modules/ws/lib/buffer-util.js var require_buffer_util = __commonJS({ "node_modules/ws/lib/buffer-util.js"(exports2, module2) { "use strict"; var { EMPTY_BUFFER } = require_constants(); var FastBuffer = Buffer[Symbol.species]; function concat(list, totalLength) { if (list.length === 0) return EMPTY_BUFFER; if (list.length === 1) return list[0]; const target = Buffer.allocUnsafe(totalLength); let offset = 0; for (let i = 0; i < list.length; i++) { const buf = list[i]; target.set(buf, offset); offset += buf.length; } if (offset < totalLength) { return new FastBuffer(target.buffer, target.byteOffset, offset); } return target; } function _mask(source, mask, output, offset, length) { for (let i = 0; i < length; i++) { output[offset + i] = source[i] ^ mask[i & 3]; } } function _unmask(buffer, mask) { for (let i = 0; i < buffer.length; i++) { buffer[i] ^= mask[i & 3]; } } function toArrayBuffer(buf) { if (buf.length === buf.buffer.byteLength) { return buf.buffer; } return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); } function toBuffer(data) { toBuffer.readOnly = true; if (Buffer.isBuffer(data)) return data; let buf; if (data instanceof ArrayBuffer) { buf = new FastBuffer(data); } else if (ArrayBuffer.isView(data)) { buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength); } else { buf = Buffer.from(data); toBuffer.readOnly = false; } return buf; } module2.exports = { concat, mask: _mask, toArrayBuffer, toBuffer, unmask: _unmask }; if (!process.env.WS_NO_BUFFER_UTIL) { try { const bufferUtil = require("bufferutil"); module2.exports.mask = function(source, mask, output, offset, length) { if (length < 48) _mask(source, mask, output, offset, length); else bufferUtil.mask(source, mask, output, offset, length); }; module2.exports.unmask = function(buffer, mask) { if (buffer.length < 32) _unmask(buffer, mask); else bufferUtil.unmask(buffer, mask); }; } catch (e) { } } } }); // node_modules/ws/lib/limiter.js var require_limiter = __commonJS({ "node_modules/ws/lib/limiter.js"(exports2, module2) { "use strict"; var kDone = Symbol("kDone"); var kRun = Symbol("kRun"); var Limiter = class { /** * Creates a new `Limiter`. * * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed * to run concurrently */ constructor(concurrency) { this[kDone] = () => { this.pending--; this[kRun](); }; this.concurrency = concurrency || Infinity; this.jobs = []; this.pending = 0; } /** * Adds a job to the queue. * * @param {Function} job The job to run * @public */ add(job) { this.jobs.push(job); this[kRun](); } /** * Removes a job from the queue and runs it if possible. * * @private */ [kRun]() { if (this.pending === this.concurrency) return; if (this.jobs.length) { const job = this.jobs.shift(); this.pending++; job(this[kDone]); } } }; module2.exports = Limiter; } }); // node_modules/ws/lib/permessage-deflate.js var require_permessage_deflate = __commonJS({ "node_modules/ws/lib/permessage-deflate.js"(exports2, module2) { "use strict"; var zlib2 = require("zlib"); var bufferUtil = require_buffer_util(); var Limiter = require_limiter(); var { kStatusCode } = require_constants(); var FastBuffer = Buffer[Symbol.species]; var TRAILER = Buffer.from([0, 0, 255, 255]); var kPerMessageDeflate = Symbol("permessage-deflate"); var kTotalLength = Symbol("total-length"); var kCallback = Symbol("callback"); var kBuffers = Symbol("buffers"); var kError = Symbol("error"); var zlibLimiter; var PerMessageDeflate = class { /** * Creates a PerMessageDeflate instance. * * @param {Object} [options] Configuration options * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support * for, or request, a custom client window size * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ * acknowledge disabling of client context takeover * @param {Number} [options.concurrencyLimit=10] The number of concurrent * calls to zlib * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the * use of a custom server window size * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept * disabling of server context takeover * @param {Number} [options.threshold=1024] Size (in bytes) below which * messages should not be compressed if context takeover is disabled * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on * deflate * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on * inflate * @param {Boolean} [isServer=false] Create the instance in either server or * client mode * @param {Number} [maxPayload=0] The maximum allowed message length */ constructor(options, isServer, maxPayload) { this._maxPayload = maxPayload | 0; this._options = options || {}; this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; this._isServer = !!isServer; this._deflate = null; this._inflate = null; this.params = null; if (!zlibLimiter) { const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; zlibLimiter = new Limiter(concurrency); } } /** * @type {String} */ static get extensionName() { return "permessage-deflate"; } /** * Create an extension negotiation offer. * * @return {Object} Extension parameters * @public */ offer() { const params = {}; if (this._options.serverNoContextTakeover) { params.server_no_context_takeover = true; } if (this._options.clientNoContextTakeover) { params.client_no_context_takeover = true; } if (this._options.serverMaxWindowBits) { params.server_max_window_bits = this._options.serverMaxWindowBits; } if (this._options.clientMaxWindowBits) { params.client_max_window_bits = this._options.clientMaxWindowBits; } else if (this._options.clientMaxWindowBits == null) { params.client_max_window_bits = true; } return params; } /** * Accept an extension negotiation offer/response. * * @param {Array} configurations The extension negotiation offers/reponse * @return {Object} Accepted configuration * @public */ accept(configurations) { configurations = this.normalizeParams(configurations); this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); return this.params; } /** * Releases all resources used by the extension. * * @public */ cleanup() { if (this._inflate) { this._inflate.close(); this._inflate = null; } if (this._deflate) { const callback = this._deflate[kCallback]; this._deflate.close(); this._deflate = null; if (callback) { callback( new Error( "The deflate stream was closed while data was being processed" ) ); } } } /** * Accept an extension negotiation offer. * * @param {Array} offers The extension negotiation offers * @return {Object} Accepted configuration * @private */ acceptAsServer(offers) { const opts = this._options; const accepted = offers.find((params) => { if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { return false; } return true; }); if (!accepted) { throw new Error("None of the extension offers can be accepted"); } if (opts.serverNoContextTakeover) { accepted.server_no_context_takeover = true; } if (opts.clientNoContextTakeover) { accepted.client_no_context_takeover = true; } if (typeof opts.serverMaxWindowBits === "number") { accepted.server_max_window_bits = opts.serverMaxWindowBits; } if (typeof opts.clientMaxWindowBits === "number") { accepted.client_max_window_bits = opts.clientMaxWindowBits; } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { delete accepted.client_max_window_bits; } return accepted; } /** * Accept the extension negotiation response. * * @param {Array} response The extension negotiation response * @return {Object} Accepted configuration * @private */ acceptAsClient(response) { const params = response[0]; if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { throw new Error('Unexpected parameter "client_no_context_takeover"'); } if (!params.client_max_window_bits) { if (typeof this._options.clientMaxWindowBits === "number") { params.client_max_window_bits = this._options.clientMaxWindowBits; } } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { throw new Error( 'Unexpected or invalid parameter "client_max_window_bits"' ); } return params; } /** * Normalize parameters. * * @param {Array} configurations The extension negotiation offers/reponse * @return {Array} The offers/response with normalized parameters * @private */ normalizeParams(configurations) { configurations.forEach((params) => { Object.keys(params).forEach((key) => { let value = params[key]; if (value.length > 1) { throw new Error(`Parameter "${key}" must have only a single value`); } value = value[0]; if (key === "client_max_window_bits") { if (value !== true) { const num = +value; if (!Number.isInteger(num) || num < 8 || num > 15) { throw new TypeError( `Invalid value for parameter "${key}": ${value}` ); } value = num; } else if (!this._isServer) { throw new TypeError( `Invalid value for parameter "${key}": ${value}` ); } } else if (key === "server_max_window_bits") { const num = +value; if (!Number.isInteger(num) || num < 8 || num > 15) { throw new TypeError( `Invalid value for parameter "${key}": ${value}` ); } value = num; } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { if (value !== true) { throw new TypeError( `Invalid value for parameter "${key}": ${value}` ); } } else { throw new Error(`Unknown parameter "${key}"`); } params[key] = value; }); }); return configurations; } /** * Decompress data. Concurrency limited. * * @param {Buffer} data Compressed data * @param {Boolean} fin Specifies whether or not this is the last fragment * @param {Function} callback Callback * @public */ decompress(data, fin, callback) { zlibLimiter.add((done) => { this._decompress(data, fin, (err2, result) => { done(); callback(err2, result); }); }); } /** * Compress data. Concurrency limited. * * @param {(Buffer|String)} data Data to compress * @param {Boolean} fin Specifies whether or not this is the last fragment * @param {Function} callback Callback * @public */ compress(data, fin, callback) { zlibLimiter.add((done) => { this._compress(data, fin, (err2, result) => { done(); callback(err2, result); }); }); } /** * Decompress data. * * @param {Buffer} data Compressed data * @param {Boolean} fin Specifies whether or not this is the last fragment * @param {Function} callback Callback * @private */ _decompress(data, fin, callback) { const endpoint = this._isServer ? "client" : "server"; if (!this._inflate) { const key = `${endpoint}_max_window_bits`; const windowBits = typeof this.params[key] !== "number" ? zlib2.Z_DEFAULT_WINDOWBITS : this.params[key]; this._inflate = zlib2.createInflateRaw({ ...this._options.zlibInflateOptions, windowBits }); this._inflate[kPerMessageDeflate] = this; this._inflate[kTotalLength] = 0; this._inflate[kBuffers] = []; this._inflate.on("error", inflateOnError); this._inflate.on("data", inflateOnData); } this._inflate[kCallback] = callback; this._inflate.write(data); if (fin) this._inflate.write(TRAILER); this._inflate.flush(() => { const err2 = this._inflate[kError]; if (err2) { this._inflate.close(); this._inflate = null; callback(err2); return; } const data2 = bufferUtil.concat( this._inflate[kBuffers], this._inflate[kTotalLength] ); if (this._inflate._readableState.endEmitted) { this._inflate.close(); this._inflate = null; } else { this._inflate[kTotalLength] = 0; this._inflate[kBuffers] = []; if (fin && this.params[`${endpoint}_no_context_takeover`]) { this._inflate.reset(); } } callback(null, data2); }); } /** * Compress data. * * @param {(Buffer|String)} data Data to compress * @param {Boolean} fin Specifies whether or not this is the last fragment * @param {Function} callback Callback * @private */ _compress(data, fin, callback) { const endpoint = this._isServer ? "server" : "client"; if (!this._deflate) { const key = `${endpoint}_max_window_bits`; const windowBits = typeof this.params[key] !== "number" ? zlib2.Z_DEFAULT_WINDOWBITS : this.params[key]; this._deflate = zlib2.createDeflateRaw({ ...this._options.zlibDeflateOptions, windowBits }); this._deflate[kTotalLength] = 0; this._deflate[kBuffers] = []; this._deflate.on("data", deflateOnData); } this._deflate[kCallback] = callback; this._deflate.write(data); this._deflate.flush(zlib2.Z_SYNC_FLUSH, () => { if (!this._deflate) { return; } let data2 = bufferUtil.concat( this._deflate[kBuffers], this._deflate[kTotalLength] ); if (fin) { data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4); } this._deflate[kCallback] = null; this._deflate[kTotalLength] = 0; this._deflate[kBuffers] = []; if (fin && this.params[`${endpoint}_no_context_takeover`]) { this._deflate.reset(); } callback(null, data2); }); } }; module2.exports = PerMessageDeflate; function deflateOnData(chunk) { this[kBuffers].push(chunk); this[kTotalLength] += chunk.length; } function inflateOnData(chunk) { this[kTotalLength] += chunk.length; if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { this[kBuffers].push(chunk); return; } this[kError] = new RangeError("Max payload size exceeded"); this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; this[kError][kStatusCode] = 1009; this.removeListener("data", inflateOnData); this.reset(); } function inflateOnError(err2) { this[kPerMessageDeflate]._inflate = null; err2[kStatusCode] = 1007; this[kCallback](err2); } } }); // node_modules/ws/lib/validation.js var require_validation = __commonJS({ "node_modules/ws/lib/validation.js"(exports2, module2) { "use strict"; var { isUtf8 } = require("buffer"); var tokenChars = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127 ]; function isValidStatusCode(code) { return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; } function _isValidUTF8(buf) { const len = buf.length; let i = 0; while (i < len) { if ((buf[i] & 128) === 0) { i++; } else if ((buf[i] & 224) === 192) { if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { return false; } i += 2; } else if ((buf[i] & 240) === 224) { if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // Overlong buf[i] === 237 && (buf[i + 1] & 224) === 160) { return false; } i += 3; } else if ((buf[i] & 248) === 240) { if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // Overlong buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { return false; } i += 4; } else { return false; } } return true; } module2.exports = { isValidStatusCode, isValidUTF8: _isValidUTF8, tokenChars }; if (isUtf8) { module2.exports.isValidUTF8 = function(buf) { return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); }; } else if (!process.env.WS_NO_UTF_8_VALIDATE) { try { const isValidUTF8 = require("utf-8-validate"); module2.exports.isValidUTF8 = function(buf) { return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); }; } catch (e) { } } } }); // node_modules/ws/lib/receiver.js var require_receiver = __commonJS({ "node_modules/ws/lib/receiver.js"(exports2, module2) { "use strict"; var { Writable } = require("stream"); var PerMessageDeflate = require_permessage_deflate(); var { BINARY_TYPES, EMPTY_BUFFER, kStatusCode, kWebSocket } = require_constants(); var { concat, toArrayBuffer, unmask } = require_buffer_util(); var { isValidStatusCode, isValidUTF8 } = require_validation(); var FastBuffer = Buffer[Symbol.species]; var GET_INFO = 0; var GET_PAYLOAD_LENGTH_16 = 1; var GET_PAYLOAD_LENGTH_64 = 2; var GET_MASK = 3; var GET_DATA = 4; var INFLATING = 5; var DEFER_EVENT = 6; var Receiver2 = class extends Writable { /** * Creates a Receiver instance. * * @param {Object} [options] Options object * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted * multiple times in the same tick * @param {String} [options.binaryType=nodebuffer] The type for binary data * @param {Object} [options.extensions] An object containing the negotiated * extensions * @param {Boolean} [options.isServer=false] Specifies whether to operate in * client or server mode * @param {Number} [options.maxPayload=0] The maximum allowed message length * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or * not to skip UTF-8 validation for text and close messages */ constructor(options = {}) { super(); this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true; this._binaryType = options.binaryType || BINARY_TYPES[0]; this._extensions = options.extensions || {}; this._isServer = !!options.isServer; this._maxPayload = options.maxPayload | 0; this._skipUTF8Validation = !!options.skipUTF8Validation; this[kWebSocket] = void 0; this._bufferedBytes = 0; this._buffers = []; this._compressed = false; this._payloadLength = 0; this._mask = void 0; this._fragmented = 0; this._masked = false; this._fin = false; this._opcode = 0; this._totalPayloadLength = 0; this._messageLength = 0; this._fragments = []; this._errored = false; this._loop = false; this._state = GET_INFO; } /** * Implements `Writable.prototype._write()`. * * @param {Buffer} chunk The chunk of data to write * @param {String} encoding The character encoding of `chunk` * @param {Function} cb Callback * @private */ _write(chunk, encoding, cb) { if (this._opcode === 8 && this._state == GET_INFO) return cb(); this._bufferedBytes += chunk.length; this._buffers.push(chunk); this.startLoop(cb); } /** * Consumes `n` bytes from the buffered data. * * @param {Number} n The number of bytes to consume * @return {Buffer} The consumed bytes * @private */ consume(n) { this._bufferedBytes -= n; if (n === this._buffers[0].length) return this._buffers.shift(); if (n < this._buffers[0].length) { const buf = this._buffers[0]; this._buffers[0] = new FastBuffer( buf.buffer, buf.byteOffset + n, buf.length - n ); return new FastBuffer(buf.buffer, buf.byteOffset, n); } const dst = Buffer.allocUnsafe(n); do { const buf = this._buffers[0]; const offset = dst.length - n; if (n >= buf.length) { dst.set(this._buffers.shift(), offset); } else { dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); this._buffers[0] = new FastBuffer( buf.buffer, buf.byteOffset + n, buf.length - n ); } n -= buf.length; } while (n > 0); return dst; } /** * Starts the parsing loop. * * @param {Function} cb Callback * @private */ startLoop(cb) { this._loop = true; do { switch (this._state) { case GET_INFO: this.getInfo(cb); break; case GET_PAYLOAD_LENGTH_16: this.getPayloadLength16(cb); break; case GET_PAYLOAD_LENGTH_64: this.getPayloadLength64(cb); break; case GET_MASK: this.getMask(); break; case GET_DATA: this.getData(cb); break; case INFLATING: case DEFER_EVENT: this._loop = false; return; } } while (this._loop); if (!this._errored) cb(); } /** * Reads the first two bytes of a frame. * * @param {Function} cb Callback * @private */ getInfo(cb) { if (this._bufferedBytes < 2) { this._loop = false; return; } const buf = this.consume(2); if ((buf[0] & 48) !== 0) { const error = this.createError( RangeError, "RSV2 and RSV3 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_2_3" ); cb(error); return; } const compressed = (buf[0] & 64) === 64; if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { const error = this.createError( RangeError, "RSV1 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_1" ); cb(error); return; } this._fin = (buf[0] & 128) === 128; this._opcode = buf[0] & 15; this._payloadLength = buf[1] & 127; if (this._opcode === 0) { if (compressed) { const error = this.createError( RangeError, "RSV1 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_1" ); cb(error); return; } if (!this._fragmented) { const error = this.createError( RangeError, "invalid opcode 0", true, 1002, "WS_ERR_INVALID_OPCODE" ); cb(error); return; } this._opcode = this._fragmented; } else if (this._opcode === 1 || this._opcode === 2) { if (this._fragmented) { const error = this.createError( RangeError, `invalid opcode ${this._opcode}`, true, 1002, "WS_ERR_INVALID_OPCODE" ); cb(error); return; } this._compressed = compressed; } else if (this._opcode > 7 && this._opcode < 11) { if (!this._fin) { const error = this.createError( RangeError, "FIN must be set", true, 1002, "WS_ERR_EXPECTED_FIN" ); cb(error); return; } if (compressed) { const error = this.createError( RangeError, "RSV1 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_1" ); cb(error); return; } if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) { const error = this.createError( RangeError, `invalid payload length ${this._payloadLength}`, true, 1002, "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" ); cb(error); return; } } else { const error = this.createError( RangeError, `invalid opcode ${this._opcode}`, true, 1002, "WS_ERR_INVALID_OPCODE" ); cb(error); return; } if (!this._fin && !this._fragmented) this._fragmented = this._opcode; this._masked = (buf[1] & 128) === 128; if (this._isServer) { if (!this._masked) { const error = this.createError( RangeError, "MASK must be set", true, 1002, "WS_ERR_EXPECTED_MASK" ); cb(error); return; } } else if (this._masked) { const error = this.createError( RangeError, "MASK must be clear", true, 1002, "WS_ERR_UNEXPECTED_MASK" ); cb(error); return; } if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; else this.haveLength(cb); } /** * Gets extended payload length (7+16). * * @param {Function} cb Callback * @private */ getPayloadLength16(cb) { if (this._bufferedBytes < 2) { this._loop = false; return; } this._payloadLength = this.consume(2).readUInt16BE(0); this.haveLength(cb); } /** * Gets extended payload length (7+64). * * @param {Function} cb Callback * @private */ getPayloadLength64(cb) { if (this._bufferedBytes < 8) { this._loop = false; return; } const buf = this.consume(8); const num = buf.readUInt32BE(0); if (num > Math.pow(2, 53 - 32) - 1) { const error = this.createError( RangeError, "Unsupported WebSocket frame: payload length > 2^53 - 1", false, 1009, "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" ); cb(error); return; } this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); this.haveLength(cb); } /** * Payload length has been read. * * @param {Function} cb Callback * @private */ haveLength(cb) { if (this._payloadLength && this._opcode < 8) { this._totalPayloadLength += this._payloadLength; if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { const error = this.createError( RangeError, "Max payload size exceeded", false, 1009, "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" ); cb(error); return; } } if (this._masked) this._state = GET_MASK; else this._state = GET_DATA; } /** * Reads mask bytes. * * @private */ getMask() { if (this._bufferedBytes < 4) { this._loop = false; return; } this._mask = this.consume(4); this._state = GET_DATA; } /** * Reads data bytes. * * @param {Function} cb Callback * @private */ getData(cb) { let data = EMPTY_BUFFER; if (this._payloadLength) { if (this._bufferedBytes < this._payloadLength) { this._loop = false; return; } data = this.consume(this._payloadLength); if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { unmask(data, this._mask); } } if (this._opcode > 7) { this.controlMessage(data, cb); return; } if (this._compressed) { this._state = INFLATING; this.decompress(data, cb); return; } if (data.length) { this._messageLength = this._totalPayloadLength; this._fragments.push(data); } this.dataMessage(cb); } /** * Decompresses data. * * @param {Buffer} data Compressed data * @param {Function} cb Callback * @private */ decompress(data, cb) { const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; perMessageDeflate.decompress(data, this._fin, (err2, buf) => { if (err2) return cb(err2); if (buf.length) { this._messageLength += buf.length; if (this._messageLength > this._maxPayload && this._maxPayload > 0) { const error = this.createError( RangeError, "Max payload size exceeded", false, 1009, "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" ); cb(error); return; } this._fragments.push(buf); } this.dataMessage(cb); if (this._state === GET_INFO) this.startLoop(cb); }); } /** * Handles a data message. * * @param {Function} cb Callback * @private */ dataMessage(cb) { if (!this._fin) { this._state = GET_INFO; return; } const messageLength = this._messageLength; const fragments = this._fragments; this._totalPayloadLength = 0; this._messageLength = 0; this._fragmented = 0; this._fragments = []; if (this._opcode === 2) { let data; if (this._binaryType === "nodebuffer") { data = concat(fragments, messageLength); } else if (this._binaryType === "arraybuffer") { data = toArrayBuffer(concat(fragments, messageLength)); } else { data = fragments; } if (this._allowSynchronousEvents) { this.emit("message", data, true); this._state = GET_INFO; } else { this._state = DEFER_EVENT; setImmediate(() => { this.emit("message", data, true); this._state = GET_INFO; this.startLoop(cb); }); } } else { const buf = concat(fragments, messageLength); if (!this._skipUTF8Validation && !isValidUTF8(buf)) { const error = this.createError( Error, "invalid UTF-8 sequence", true, 1007, "WS_ERR_INVALID_UTF8" ); cb(error); return; } if (this._state === INFLATING || this._allowSynchronousEvents) { this.emit("message", buf, false); this._state = GET_INFO; } else { this._state = DEFER_EVENT; setImmediate(() => { this.emit("message", buf, false); this._state = GET_INFO; this.startLoop(cb); }); } } } /** * Handles a control message. * * @param {Buffer} data Data to handle * @return {(Error|RangeError|undefined)} A possible error * @private */ controlMessage(data, cb) { if (this._opcode === 8) { if (data.length === 0) { this._loop = false; this.emit("conclude", 1005, EMPTY_BUFFER); this.end(); } else { const code = data.readUInt16BE(0); if (!isValidStatusCode(code)) { const error = this.createError( RangeError, `invalid status code ${code}`, true, 1002, "WS_ERR_INVALID_CLOSE_CODE" ); cb(error); return; } const buf = new FastBuffer( data.buffer, data.byteOffset + 2, data.length - 2 ); if (!this._skipUTF8Validation && !isValidUTF8(buf)) { const error = this.createError( Error, "invalid UTF-8 sequence", true, 1007, "WS_ERR_INVALID_UTF8" ); cb(error); return; } this._loop = false; this.emit("conclude", code, buf); this.end(); } this._state = GET_INFO; return; } if (this._allowSynchronousEvents) { this.emit(this._opcode === 9 ? "ping" : "pong", data); this._state = GET_INFO; } else { this._state = DEFER_EVENT; setImmediate(() => { this.emit(this._opcode === 9 ? "ping" : "pong", data); this._state = GET_INFO; this.startLoop(cb); }); } } /** * Builds an error object. * * @param {function(new:Error|RangeError)} ErrorCtor The error constructor * @param {String} message The error message * @param {Boolean} prefix Specifies whether or not to add a default prefix to * `message` * @param {Number} statusCode The status code * @param {String} errorCode The exposed error code * @return {(Error|RangeError)} The error * @private */ createError(ErrorCtor, message, prefix, statusCode, errorCode) { this._loop = false; this._errored = true; const err2 = new ErrorCtor( prefix ? `Invalid WebSocket frame: ${message}` : message ); Error.captureStackTrace(err2, this.createError); err2.code = errorCode; err2[kStatusCode] = statusCode; return err2; } }; module2.exports = Receiver2; } }); // node_modules/ws/lib/sender.js var require_sender = __commonJS({ "node_modules/ws/lib/sender.js"(exports2, module2) { "use strict"; var { Duplex } = require("stream"); var { randomFillSync } = require("crypto"); var PerMessageDeflate = require_permessage_deflate(); var { EMPTY_BUFFER } = require_constants(); var { isValidStatusCode } = require_validation(); var { mask: applyMask, toBuffer } = require_buffer_util(); var kByteLength = Symbol("kByteLength"); var maskBuffer = Buffer.alloc(4); var RANDOM_POOL_SIZE = 8 * 1024; var randomPool; var randomPoolPointer = RANDOM_POOL_SIZE; var Sender2 = class _Sender { /** * Creates a Sender instance. * * @param {Duplex} socket The connection socket * @param {Object} [extensions] An object containing the negotiated extensions * @param {Function} [generateMask] The function used to generate the masking * key */ constructor(socket, extensions, generateMask) { this._extensions = extensions || {}; if (generateMask) { this._generateMask = generateMask; this._maskBuffer = Buffer.alloc(4); } this._socket = socket; this._firstFragment = true; this._compress = false; this._bufferedBytes = 0; this._deflating = false; this._queue = []; } /** * Frames a piece of data according to the HyBi WebSocket protocol. * * @param {(Buffer|String)} data The data to frame * @param {Object} options Options object * @param {Boolean} [options.fin=false] Specifies whether or not to set the * FIN bit * @param {Function} [options.generateMask] The function used to generate the * masking key * @param {Boolean} [options.mask=false] Specifies whether or not to mask * `data` * @param {Buffer} [options.maskBuffer] The buffer used to store the masking * key * @param {Number} options.opcode The opcode * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be * modified * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the * RSV1 bit * @return {(Buffer|String)[]} The framed data * @public */ static frame(data, options) { let mask; let merge = false; let offset = 2; let skipMasking = false; if (options.mask) { mask = options.maskBuffer || maskBuffer; if (options.generateMask) { options.generateMask(mask); } else { if (randomPoolPointer === RANDOM_POOL_SIZE) { if (randomPool === void 0) { randomPool = Buffer.alloc(RANDOM_POOL_SIZE); } randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); randomPoolPointer = 0; } mask[0] = randomPool[randomPoolPointer++]; mask[1] = randomPool[randomPoolPointer++]; mask[2] = randomPool[randomPoolPointer++]; mask[3] = randomPool[randomPoolPointer++]; } skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; offset = 6; } let dataLength; if (typeof data === "string") { if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { dataLength = options[kByteLength]; } else { data = Buffer.from(data); dataLength = data.length; } } else { dataLength = data.length; merge = options.mask && options.readOnly && !skipMasking; } let payloadLength = dataLength; if (dataLength >= 65536) { offset += 8; payloadLength = 127; } else if (dataLength > 125) { offset += 2; payloadLength = 126; } const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); target[0] = options.fin ? options.opcode | 128 : options.opcode; if (options.rsv1) target[0] |= 64; target[1] = payloadLength; if (payloadLength === 126) { target.writeUInt16BE(dataLength, 2); } else if (payloadLength === 127) { target[2] = target[3] = 0; target.writeUIntBE(dataLength, 4, 6); } if (!options.mask) return [target, data]; target[1] |= 128; target[offset - 4] = mask[0]; target[offset - 3] = mask[1]; target[offset - 2] = mask[2]; target[offset - 1] = mask[3]; if (skipMasking) return [target, data]; if (merge) { applyMask(data, mask, target, offset, dataLength); return [target]; } applyMask(data, mask, data, 0, dataLength); return [target, data]; } /** * Sends a close message to the other peer. * * @param {Number} [code] The status code component of the body * @param {(String|Buffer)} [data] The message component of the body * @param {Boolean} [mask=false] Specifies whether or not to mask the message * @param {Function} [cb] Callback * @public */ close(code, data, mask, cb) { let buf; if (code === void 0) { buf = EMPTY_BUFFER; } else if (typeof code !== "number" || !isValidStatusCode(code)) { throw new TypeError("First argument must be a valid error code number"); } else if (data === void 0 || !data.length) { buf = Buffer.allocUnsafe(2); buf.writeUInt16BE(code, 0); } else { const length = Buffer.byteLength(data); if (length > 123) { throw new RangeError("The message must not be greater than 123 bytes"); } buf = Buffer.allocUnsafe(2 + length); buf.writeUInt16BE(code, 0); if (typeof data === "string") { buf.write(data, 2); } else { buf.set(data, 2); } } const options = { [kByteLength]: buf.length, fin: true, generateMask: this._generateMask, mask, maskBuffer: this._maskBuffer, opcode: 8, readOnly: false, rsv1: false }; if (this._deflating) { this.enqueue([this.dispatch, buf, false, options, cb]); } else { this.sendFrame(_Sender.frame(buf, options), cb); } } /** * Sends a ping message to the other peer. * * @param {*} data The message to send * @param {Boolean} [mask=false] Specifies whether or not to mask `data` * @param {Function} [cb] Callback * @public */ ping(data, mask, cb) { let byteLength; let readOnly; if (typeof data === "string") { byteLength = Buffer.byteLength(data); readOnly = false; } else { data = toBuffer(data); byteLength = data.length; readOnly = toBuffer.readOnly; } if (byteLength > 125) { throw new RangeError("The data size must not be greater than 125 bytes"); } const options = { [kByteLength]: byteLength, fin: true, generateMask: this._generateMask, mask, maskBuffer: this._maskBuffer, opcode: 9, readOnly, rsv1: false }; if (this._deflating) { this.enqueue([this.dispatch, data, false, options, cb]); } else { this.sendFrame(_Sender.frame(data, options), cb); } } /** * Sends a pong message to the other peer. * * @param {*} data The message to send * @param {Boolean} [mask=false] Specifies whether or not to mask `data` * @param {Function} [cb] Callback * @public */ pong(data, mask, cb) { let byteLength; let readOnly; if (typeof data === "string") { byteLength = Buffer.byteLength(data); readOnly = false; } else { data = toBuffer(data); byteLength = data.length; readOnly = toBuffer.readOnly; } if (byteLength > 125) { throw new RangeError("The data size must not be greater than 125 bytes"); } const options = { [kByteLength]: byteLength, fin: true, generateMask: this._generateMask, mask, maskBuffer: this._maskBuffer, opcode: 10, readOnly, rsv1: false }; if (this._deflating) { this.enqueue([this.dispatch, data, false, options, cb]); } else { this.sendFrame(_Sender.frame(data, options), cb); } } /** * Sends a data message to the other peer. * * @param {*} data The message to send * @param {Object} options Options object * @param {Boolean} [options.binary=false] Specifies whether `data` is binary * or text * @param {Boolean} [options.compress=false] Specifies whether or not to * compress `data` * @param {Boolean} [options.fin=false] Specifies whether the fragment is the * last one * @param {Boolean} [options.mask=false] Specifies whether or not to mask * `data` * @param {Function} [cb] Callback * @public */ send(data, options, cb) { const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; let opcode = options.binary ? 2 : 1; let rsv1 = options.compress; let byteLength; let readOnly; if (typeof data === "string") { byteLength = Buffer.byteLength(data); readOnly = false; } else { data = toBuffer(data); byteLength = data.length; readOnly = toBuffer.readOnly; } if (this._firstFragment) { this._firstFragment = false; if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { rsv1 = byteLength >= perMessageDeflate._threshold; } this._compress = rsv1; } else { rsv1 = false; opcode = 0; } if (options.fin) this._firstFragment = true; if (perMessageDeflate) { const opts = { [kByteLength]: byteLength, fin: options.fin, generateMask: this._generateMask, mask: options.mask, maskBuffer: this._maskBuffer, opcode, readOnly, rsv1 }; if (this._deflating) { this.enqueue([this.dispatch, data, this._compress, opts, cb]); } else { this.dispatch(data, this._compress, opts, cb); } } else { this.sendFrame( _Sender.frame(data, { [kByteLength]: byteLength, fin: options.fin, generateMask: this._generateMask, mask: options.mask, maskBuffer: this._maskBuffer, opcode, readOnly, rsv1: false }), cb ); } } /** * Dispatches a message. * * @param {(Buffer|String)} data The message to send * @param {Boolean} [compress=false] Specifies whether or not to compress * `data` * @param {Object} options Options object * @param {Boolean} [options.fin=false] Specifies whether or not to set the * FIN bit * @param {Function} [options.generateMask] The function used to generate the * masking key * @param {Boolean} [options.mask=false] Specifies whether or not to mask * `data` * @param {Buffer} [options.maskBuffer] The buffer used to store the masking * key * @param {Number} options.opcode The opcode * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be * modified * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the * RSV1 bit * @param {Function} [cb] Callback * @private */ dispatch(data, compress, options, cb) { if (!compress) { this.sendFrame(_Sender.frame(data, options), cb); return; } const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; this._bufferedBytes += options[kByteLength]; this._deflating = true; perMessageDeflate.compress(data, options.fin, (_, buf) => { if (this._socket.destroyed) { const err2 = new Error( "The socket was closed while data was being compressed" ); if (typeof cb === "function") cb(err2); for (let i = 0; i < this._queue.length; i++) { const params = this._queue[i]; const callback = params[params.length - 1]; if (typeof callback === "function") callback(err2); } return; } this._bufferedBytes -= options[kByteLength]; this._deflating = false; options.readOnly = false; this.sendFrame(_Sender.frame(buf, options), cb); this.dequeue(); }); } /** * Executes queued send operations. * * @private */ dequeue() { while (!this._deflating && this._queue.length) { const params = this._queue.shift(); this._bufferedBytes -= params[3][kByteLength]; Reflect.apply(params[0], this, params.slice(1)); } } /** * Enqueues a send operation. * * @param {Array} params Send operation parameters. * @private */ enqueue(params) { this._bufferedBytes += params[3][kByteLength]; this._queue.push(params); } /** * Sends a frame. * * @param {Buffer[]} list The frame to send * @param {Function} [cb] Callback * @private */ sendFrame(list, cb) { if (list.length === 2) { this._socket.cork(); this._socket.write(list[0]); this._socket.write(list[1], cb); this._socket.uncork(); } else { this._socket.write(list[0], cb); } } }; module2.exports = Sender2; } }); // node_modules/ws/lib/event-target.js var require_event_target = __commonJS({ "node_modules/ws/lib/event-target.js"(exports2, module2) { "use strict"; var { kForOnEventAttribute, kListener } = require_constants(); var kCode = Symbol("kCode"); var kData = Symbol("kData"); var kError = Symbol("kError"); var kMessage = Symbol("kMessage"); var kReason = Symbol("kReason"); var kTarget = Symbol("kTarget"); var kType = Symbol("kType"); var kWasClean = Symbol("kWasClean"); var Event = class { /** * Create a new `Event`. * * @param {String} type The name of the event * @throws {TypeError} If the `type` argument is not specified */ constructor(type) { this[kTarget] = null; this[kType] = type; } /** * @type {*} */ get target() { return this[kTarget]; } /** * @type {String} */ get type() { return this[kType]; } }; Object.defineProperty(Event.prototype, "target", { enumerable: true }); Object.defineProperty(Event.prototype, "type", { enumerable: true }); var CloseEvent = class extends Event { /** * Create a new `CloseEvent`. * * @param {String} type The name of the event * @param {Object} [options] A dictionary object that allows for setting * attributes via object members of the same name * @param {Number} [options.code=0] The status code explaining why the * connection was closed * @param {String} [options.reason=''] A human-readable string explaining why * the connection was closed * @param {Boolean} [options.wasClean=false] Indicates whether or not the * connection was cleanly closed */ constructor(type, options = {}) { super(type); this[kCode] = options.code === void 0 ? 0 : options.code; this[kReason] = options.reason === void 0 ? "" : options.reason; this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; } /** * @type {Number} */ get code() { return this[kCode]; } /** * @type {String} */ get reason() { return this[kReason]; } /** * @type {Boolean} */ get wasClean() { return this[kWasClean]; } }; Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); var ErrorEvent = class extends Event { /** * Create a new `ErrorEvent`. * * @param {String} type The name of the event * @param {Object} [options] A dictionary object that allows for setting * attributes via object members of the same name * @param {*} [options.error=null] The error that generated this event * @param {String} [options.message=''] The error message */ constructor(type, options = {}) { super(type); this[kError] = options.error === void 0 ? null : options.error; this[kMessage] = options.message === void 0 ? "" : options.message; } /** * @type {*} */ get error() { return this[kError]; } /** * @type {String} */ get message() { return this[kMessage]; } }; Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); var MessageEvent = class extends Event { /** * Create a new `MessageEvent`. * * @param {String} type The name of the event * @param {Object} [options] A dictionary object that allows for setting * attributes via object members of the same name * @param {*} [options.data=null] The message content */ constructor(type, options = {}) { super(type); this[kData] = options.data === void 0 ? null : options.data; } /** * @type {*} */ get data() { return this[kData]; } }; Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); var EventTarget = { /** * Register an event listener. * * @param {String} type A string representing the event type to listen for * @param {(Function|Object)} handler The listener to add * @param {Object} [options] An options object specifies characteristics about * the event listener * @param {Boolean} [options.once=false] A `Boolean` indicating that the * listener should be invoked at most once after being added. If `true`, * the listener would be automatically removed when invoked. * @public */ addEventListener(type, handler, options = {}) { for (const listener of this.listeners(type)) { if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) { return; } } let wrapper; if (type === "message") { wrapper = function onMessage(data, isBinary) { const event = new MessageEvent("message", { data: isBinary ? data : data.toString() }); event[kTarget] = this; callListener(handler, this, event); }; } else if (type === "close") { wrapper = function onClose(code, message) { const event = new CloseEvent("close", { code, reason: message.toString(), wasClean: this._closeFrameReceived && this._closeFrameSent }); event[kTarget] = this; callListener(handler, this, event); }; } else if (type === "error") { wrapper = function onError(error) { const event = new ErrorEvent("error", { error, message: error.message }); event[kTarget] = this; callListener(handler, this, event); }; } else if (type === "open") { wrapper = function onOpen() { const event = new Event("open"); event[kTarget] = this; callListener(handler, this, event); }; } else { return; } wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; wrapper[kListener] = handler; if (options.once) { this.once(type, wrapper); } else { this.on(type, wrapper); } }, /** * Remove an event listener. * * @param {String} type A string representing the event type to remove * @param {(Function|Object)} handler The listener to remove * @public */ removeEventListener(type, handler) { for (const listener of this.listeners(type)) { if (listener[kListener] === handler && !listener[kForOnEventAttribute]) { this.removeListener(type, listener); break; } } } }; module2.exports = { CloseEvent, ErrorEvent, Event, EventTarget, MessageEvent }; function callListener(listener, thisArg, event) { if (typeof listener === "object" && listener.handleEvent) { listener.handleEvent.call(listener, event); } else { listener.call(thisArg, event); } } } }); // node_modules/ws/lib/extension.js var require_extension = __commonJS({ "node_modules/ws/lib/extension.js"(exports2, module2) { "use strict"; var { tokenChars } = require_validation(); function push(dest, name, elem) { if (dest[name] === void 0) dest[name] = [elem]; else dest[name].push(elem); } function parse(header) { const offers = /* @__PURE__ */ Object.create(null); let params = /* @__PURE__ */ Object.create(null); let mustUnescape = false; let isEscaping = false; let inQuotes = false; let extensionName; let paramName; let start = -1; let code = -1; let end = -1; let i = 0; for (; i < header.length; i++) { code = header.charCodeAt(i); if (extensionName === void 0) { if (end === -1 && tokenChars[code] === 1) { if (start === -1) start = i; } else if (i !== 0 && (code === 32 || code === 9)) { if (end === -1 && start !== -1) end = i; } else if (code === 59 || code === 44) { if (start === -1) { throw new SyntaxError(`Unexpected character at index ${i}`); } if (end === -1) end = i; const name = header.slice(start, end); if (code === 44) { push(offers, name, params); params = /* @__PURE__ */ Object.create(null); } else { extensionName = name; } start = end = -1; } else { throw new SyntaxError(`Unexpected character at index ${i}`); } } else if (paramName === void 0) { if (end === -1 && tokenChars[code] === 1) { if (start === -1) start = i; } else if (code === 32 || code === 9) { if (end === -1 && start !== -1) end = i; } else if (code === 59 || code === 44) { if (start === -1) { throw new SyntaxError(`Unexpected character at index ${i}`); } if (end === -1) end = i; push(params, header.slice(start, end), true); if (code === 44) { push(offers, extensionName, params); params = /* @__PURE__ */ Object.create(null); extensionName = void 0; } start = end = -1; } else if (code === 61 && start !== -1 && end === -1) { paramName = header.slice(start, i); start = end = -1; } else { throw new SyntaxError(`Unexpected character at index ${i}`); } } else { if (isEscaping) { if (tokenChars[code] !== 1) { throw new SyntaxError(`Unexpected character at index ${i}`); } if (start === -1) start = i; else if (!mustUnescape) mustUnescape = true; isEscaping = false; } else if (inQuotes) { if (tokenChars[code] === 1) { if (start === -1) start = i; } else if (code === 34 && start !== -1) { inQuotes = false; end = i; } else if (code === 92) { isEscaping = true; } else { throw new SyntaxError(`Unexpected character at index ${i}`); } } else if (code === 34 && header.charCodeAt(i - 1) === 61) { inQuotes = true; } else if (end === -1 && tokenChars[code] === 1) { if (start === -1) start = i; } else if (start !== -1 && (code === 32 || code === 9)) { if (end === -1) end = i; } else if (code === 59 || code === 44) { if (start === -1) { throw new SyntaxError(`Unexpected character at index ${i}`); } if (end === -1) end = i; let value = header.slice(start, end); if (mustUnescape) { value = value.replace(/\\/g, ""); mustUnescape = false; } push(params, paramName, value); if (code === 44) { push(offers, extensionName, params); params = /* @__PURE__ */ Object.create(null); extensionName = void 0; } paramName = void 0; start = end = -1; } else { throw new SyntaxError(`Unexpected character at index ${i}`); } } } if (start === -1 || inQuotes || code === 32 || code === 9) { throw new SyntaxError("Unexpected end of input"); } if (end === -1) end = i; const token = header.slice(start, end); if (extensionName === void 0) { push(offers, token, params); } else { if (paramName === void 0) { push(params, token, true); } else if (mustUnescape) { push(params, paramName, token.replace(/\\/g, "")); } else { push(params, paramName, token); } push(offers, extensionName, params); } return offers; } function format(extensions) { return Object.keys(extensions).map((extension) => { let configurations = extensions[extension]; if (!Array.isArray(configurations)) configurations = [configurations]; return configurations.map((params) => { return [extension].concat( Object.keys(params).map((k) => { let values = params[k]; if (!Array.isArray(values)) values = [values]; return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); }) ).join("; "); }).join(", "); }).join(", "); } module2.exports = { format, parse }; } }); // node_modules/ws/lib/websocket.js var require_websocket = __commonJS({ "node_modules/ws/lib/websocket.js"(exports2, module2) { "use strict"; var EventEmitter = require("events"); var https2 = require("https"); var http2 = require("http"); var net2 = require("net"); var tls = require("tls"); var { randomBytes, createHash } = require("crypto"); var { Duplex, Readable } = require("stream"); var { URL: URL2 } = require("url"); var PerMessageDeflate = require_permessage_deflate(); var Receiver2 = require_receiver(); var Sender2 = require_sender(); var { BINARY_TYPES, EMPTY_BUFFER, GUID, kForOnEventAttribute, kListener, kStatusCode, kWebSocket, NOOP } = require_constants(); var { EventTarget: { addEventListener, removeEventListener } } = require_event_target(); var { format, parse } = require_extension(); var { toBuffer } = require_buffer_util(); var closeTimeout = 30 * 1e3; var kAborted = Symbol("kAborted"); var protocolVersions = [8, 13]; var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; var WebSocket2 = class _WebSocket extends EventEmitter { /** * Create a new `WebSocket`. * * @param {(String|URL)} address The URL to which to connect * @param {(String|String[])} [protocols] The subprotocols * @param {Object} [options] Connection options */ constructor(address, protocols, options) { super(); this._binaryType = BINARY_TYPES[0]; this._closeCode = 1006; this._closeFrameReceived = false; this._closeFrameSent = false; this._closeMessage = EMPTY_BUFFER; this._closeTimer = null; this._extensions = {}; this._paused = false; this._protocol = ""; this._readyState = _WebSocket.CONNECTING; this._receiver = null; this._sender = null; this._socket = null; if (address !== null) { this._bufferedAmount = 0; this._isServer = false; this._redirects = 0; if (protocols === void 0) { protocols = []; } else if (!Array.isArray(protocols)) { if (typeof protocols === "object" && protocols !== null) { options = protocols; protocols = []; } else { protocols = [protocols]; } } initAsClient(this, address, protocols, options); } else { this._autoPong = options.autoPong; this._isServer = true; } } /** * This deviates from the WHATWG interface since ws doesn't support the * required default "blob" type (instead we define a custom "nodebuffer" * type). * * @type {String} */ get binaryType() { return this._binaryType; } set binaryType(type) { if (!BINARY_TYPES.includes(type)) return; this._binaryType = type; if (this._receiver) this._receiver._binaryType = type; } /** * @type {Number} */ get bufferedAmount() { if (!this._socket) return this._bufferedAmount; return this._socket._writableState.length + this._sender._bufferedBytes; } /** * @type {String} */ get extensions() { return Object.keys(this._extensions).join(); } /** * @type {Boolean} */ get isPaused() { return this._paused; } /** * @type {Function} */ /* istanbul ignore next */ get onclose() { return null; } /** * @type {Function} */ /* istanbul ignore next */ get onerror() { return null; } /** * @type {Function} */ /* istanbul ignore next */ get onopen() { return null; } /** * @type {Function} */ /* istanbul ignore next */ get onmessage() { return null; } /** * @type {String} */ get protocol() { return this._protocol; } /** * @type {Number} */ get readyState() { return this._readyState; } /** * @type {String} */ get url() { return this._url; } /** * Set up the socket and the internal resources. * * @param {Duplex} socket The network socket between the server and client * @param {Buffer} head The first packet of the upgraded stream * @param {Object} options Options object * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted * multiple times in the same tick * @param {Function} [options.generateMask] The function used to generate the * masking key * @param {Number} [options.maxPayload=0] The maximum allowed message size * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or * not to skip UTF-8 validation for text and close messages * @private */ setSocket(socket, head, options) { const receiver = new Receiver2({ allowSynchronousEvents: options.allowSynchronousEvents, binaryType: this.binaryType, extensions: this._extensions, isServer: this._isServer, maxPayload: options.maxPayload, skipUTF8Validation: options.skipUTF8Validation }); this._sender = new Sender2(socket, this._extensions, options.generateMask); this._receiver = receiver; this._socket = socket; receiver[kWebSocket] = this; socket[kWebSocket] = this; receiver.on("conclude", receiverOnConclude); receiver.on("drain", receiverOnDrain); receiver.on("error", receiverOnError); receiver.on("message", receiverOnMessage); receiver.on("ping", receiverOnPing); receiver.on("pong", receiverOnPong); if (socket.setTimeout) socket.setTimeout(0); if (socket.setNoDelay) socket.setNoDelay(); if (head.length > 0) socket.unshift(head); socket.on("close", socketOnClose); socket.on("data", socketOnData); socket.on("end", socketOnEnd); socket.on("error", socketOnError); this._readyState = _WebSocket.OPEN; this.emit("open"); } /** * Emit the `'close'` event. * * @private */ emitClose() { if (!this._socket) { this._readyState = _WebSocket.CLOSED; this.emit("close", this._closeCode, this._closeMessage); return; } if (this._extensions[PerMessageDeflate.extensionName]) { this._extensions[PerMessageDeflate.extensionName].cleanup(); } this._receiver.removeAllListeners(); this._readyState = _WebSocket.CLOSED; this.emit("close", this._closeCode, this._closeMessage); } /** * Start a closing handshake. * * +----------+ +-----------+ +----------+ * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - * | +----------+ +-----------+ +----------+ | * +----------+ +-----------+ | * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING * +----------+ +-----------+ | * | | | +---+ | * +------------------------+-->|fin| - - - - * | +---+ | +---+ * - - - - -|fin|<---------------------+ * +---+ * * @param {Number} [code] Status code explaining why the connection is closing * @param {(String|Buffer)} [data] The reason why the connection is * closing * @public */ close(code, data) { if (this.readyState === _WebSocket.CLOSED) return; if (this.readyState === _WebSocket.CONNECTING) { const msg = "WebSocket was closed before the connection was established"; abortHandshake(this, this._req, msg); return; } if (this.readyState === _WebSocket.CLOSING) { if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { this._socket.end(); } return; } this._readyState = _WebSocket.CLOSING; this._sender.close(code, data, !this._isServer, (err2) => { if (err2) return; this._closeFrameSent = true; if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { this._socket.end(); } }); this._closeTimer = setTimeout( this._socket.destroy.bind(this._socket), closeTimeout ); } /** * Pause the socket. * * @public */ pause() { if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { return; } this._paused = true; this._socket.pause(); } /** * Send a ping. * * @param {*} [data] The data to send * @param {Boolean} [mask] Indicates whether or not to mask `data` * @param {Function} [cb] Callback which is executed when the ping is sent * @public */ ping(data, mask, cb) { if (this.readyState === _WebSocket.CONNECTING) { throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); } if (typeof data === "function") { cb = data; data = mask = void 0; } else if (typeof mask === "function") { cb = mask; mask = void 0; } if (typeof data === "number") data = data.toString(); if (this.readyState !== _WebSocket.OPEN) { sendAfterClose(this, data, cb); return; } if (mask === void 0) mask = !this._isServer; this._sender.ping(data || EMPTY_BUFFER, mask, cb); } /** * Send a pong. * * @param {*} [data] The data to send * @param {Boolean} [mask] Indicates whether or not to mask `data` * @param {Function} [cb] Callback which is executed when the pong is sent * @public */ pong(data, mask, cb) { if (this.readyState === _WebSocket.CONNECTING) { throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); } if (typeof data === "function") { cb = data; data = mask = void 0; } else if (typeof mask === "function") { cb = mask; mask = void 0; } if (typeof data === "number") data = data.toString(); if (this.readyState !== _WebSocket.OPEN) { sendAfterClose(this, data, cb); return; } if (mask === void 0) mask = !this._isServer; this._sender.pong(data || EMPTY_BUFFER, mask, cb); } /** * Resume the socket. * * @public */ resume() { if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { return; } this._paused = false; if (!this._receiver._writableState.needDrain) this._socket.resume(); } /** * Send a data message. * * @param {*} data The message to send * @param {Object} [options] Options object * @param {Boolean} [options.binary] Specifies whether `data` is binary or * text * @param {Boolean} [options.compress] Specifies whether or not to compress * `data` * @param {Boolean} [options.fin=true] Specifies whether the fragment is the * last one * @param {Boolean} [options.mask] Specifies whether or not to mask `data` * @param {Function} [cb] Callback which is executed when data is written out * @public */ send(data, options, cb) { if (this.readyState === _WebSocket.CONNECTING) { throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); } if (typeof options === "function") { cb = options; options = {}; } if (typeof data === "number") data = data.toString(); if (this.readyState !== _WebSocket.OPEN) { sendAfterClose(this, data, cb); return; } const opts = { binary: typeof data !== "string", mask: !this._isServer, compress: true, fin: true, ...options }; if (!this._extensions[PerMessageDeflate.extensionName]) { opts.compress = false; } this._sender.send(data || EMPTY_BUFFER, opts, cb); } /** * Forcibly close the connection. * * @public */ terminate() { if (this.readyState === _WebSocket.CLOSED) return; if (this.readyState === _WebSocket.CONNECTING) { const msg = "WebSocket was closed before the connection was established"; abortHandshake(this, this._req, msg); return; } if (this._socket) { this._readyState = _WebSocket.CLOSING; this._socket.destroy(); } } }; Object.defineProperty(WebSocket2, "CONNECTING", { enumerable: true, value: readyStates.indexOf("CONNECTING") }); Object.defineProperty(WebSocket2.prototype, "CONNECTING", { enumerable: true, value: readyStates.indexOf("CONNECTING") }); Object.defineProperty(WebSocket2, "OPEN", { enumerable: true, value: readyStates.indexOf("OPEN") }); Object.defineProperty(WebSocket2.prototype, "OPEN", { enumerable: true, value: readyStates.indexOf("OPEN") }); Object.defineProperty(WebSocket2, "CLOSING", { enumerable: true, value: readyStates.indexOf("CLOSING") }); Object.defineProperty(WebSocket2.prototype, "CLOSING", { enumerable: true, value: readyStates.indexOf("CLOSING") }); Object.defineProperty(WebSocket2, "CLOSED", { enumerable: true, value: readyStates.indexOf("CLOSED") }); Object.defineProperty(WebSocket2.prototype, "CLOSED", { enumerable: true, value: readyStates.indexOf("CLOSED") }); [ "binaryType", "bufferedAmount", "extensions", "isPaused", "protocol", "readyState", "url" ].forEach((property) => { Object.defineProperty(WebSocket2.prototype, property, { enumerable: true }); }); ["open", "error", "close", "message"].forEach((method) => { Object.defineProperty(WebSocket2.prototype, `on${method}`, { enumerable: true, get() { for (const listener of this.listeners(method)) { if (listener[kForOnEventAttribute]) return listener[kListener]; } return null; }, set(handler) { for (const listener of this.listeners(method)) { if (listener[kForOnEventAttribute]) { this.removeListener(method, listener); break; } } if (typeof handler !== "function") return; this.addEventListener(method, handler, { [kForOnEventAttribute]: true }); } }); }); WebSocket2.prototype.addEventListener = addEventListener; WebSocket2.prototype.removeEventListener = removeEventListener; module2.exports = WebSocket2; function initAsClient(websocket, address, protocols, options) { const opts = { allowSynchronousEvents: true, autoPong: true, protocolVersion: protocolVersions[1], maxPayload: 100 * 1024 * 1024, skipUTF8Validation: false, perMessageDeflate: true, followRedirects: false, maxRedirects: 10, ...options, socketPath: void 0, hostname: void 0, protocol: void 0, timeout: void 0, method: "GET", host: void 0, path: void 0, port: void 0 }; websocket._autoPong = opts.autoPong; if (!protocolVersions.includes(opts.protocolVersion)) { throw new RangeError( `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` ); } let parsedUrl; if (address instanceof URL2) { parsedUrl = address; } else { try { parsedUrl = new URL2(address); } catch (e) { throw new SyntaxError(`Invalid URL: ${address}`); } } if (parsedUrl.protocol === "http:") { parsedUrl.protocol = "ws:"; } else if (parsedUrl.protocol === "https:") { parsedUrl.protocol = "wss:"; } websocket._url = parsedUrl.href; const isSecure = parsedUrl.protocol === "wss:"; const isIpcUrl = parsedUrl.protocol === "ws+unix:"; let invalidUrlMessage; if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"`; } else if (isIpcUrl && !parsedUrl.pathname) { invalidUrlMessage = "The URL's pathname is empty"; } else if (parsedUrl.hash) { invalidUrlMessage = "The URL contains a fragment identifier"; } if (invalidUrlMessage) { const err2 = new SyntaxError(invalidUrlMessage); if (websocket._redirects === 0) { throw err2; } else { emitErrorAndClose(websocket, err2); return; } } const defaultPort = isSecure ? 443 : 80; const key = randomBytes(16).toString("base64"); const request = isSecure ? https2.request : http2.request; const protocolSet = /* @__PURE__ */ new Set(); let perMessageDeflate; opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect); opts.defaultPort = opts.defaultPort || defaultPort; opts.port = parsedUrl.port || defaultPort; opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; opts.headers = { ...opts.headers, "Sec-WebSocket-Version": opts.protocolVersion, "Sec-WebSocket-Key": key, Connection: "Upgrade", Upgrade: "websocket" }; opts.path = parsedUrl.pathname + parsedUrl.search; opts.timeout = opts.handshakeTimeout; if (opts.perMessageDeflate) { perMessageDeflate = new PerMessageDeflate( opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, false, opts.maxPayload ); opts.headers["Sec-WebSocket-Extensions"] = format({ [PerMessageDeflate.extensionName]: perMessageDeflate.offer() }); } if (protocols.length) { for (const protocol of protocols) { if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { throw new SyntaxError( "An invalid or duplicated subprotocol was specified" ); } protocolSet.add(protocol); } opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); } if (opts.origin) { if (opts.protocolVersion < 13) { opts.headers["Sec-WebSocket-Origin"] = opts.origin; } else { opts.headers.Origin = opts.origin; } } if (parsedUrl.username || parsedUrl.password) { opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; } if (isIpcUrl) { const parts = opts.path.split(":"); opts.socketPath = parts[0]; opts.path = parts[1]; } let req; if (opts.followRedirects) { if (websocket._redirects === 0) { websocket._originalIpc = isIpcUrl; websocket._originalSecure = isSecure; websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; const headers = options && options.headers; options = { ...options, headers: {} }; if (headers) { for (const [key2, value] of Object.entries(headers)) { options.headers[key2.toLowerCase()] = value; } } } else if (websocket.listenerCount("redirect") === 0) { const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; if (!isSameHost || websocket._originalSecure && !isSecure) { delete opts.headers.authorization; delete opts.headers.cookie; if (!isSameHost) delete opts.headers.host; opts.auth = void 0; } } if (opts.auth && !options.headers.authorization) { options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); } req = websocket._req = request(opts); if (websocket._redirects) { websocket.emit("redirect", websocket.url, req); } } else { req = websocket._req = request(opts); } if (opts.timeout) { req.on("timeout", () => { abortHandshake(websocket, req, "Opening handshake has timed out"); }); } req.on("error", (err2) => { if (req === null || req[kAborted]) return; req = websocket._req = null; emitErrorAndClose(websocket, err2); }); req.on("response", (res) => { const location = res.headers.location; const statusCode = res.statusCode; if (location && opts.followRedirects && statusCode >= 300 && statusCode < 400) { if (++websocket._redirects > opts.maxRedirects) { abortHandshake(websocket, req, "Maximum redirects exceeded"); return; } req.abort(); let addr; try { addr = new URL2(location, address); } catch (e) { const err2 = new SyntaxError(`Invalid URL: ${location}`); emitErrorAndClose(websocket, err2); return; } initAsClient(websocket, addr, protocols, options); } else if (!websocket.emit("unexpected-response", req, res)) { abortHandshake( websocket, req, `Unexpected server response: ${res.statusCode}` ); } }); req.on("upgrade", (res, socket, head) => { websocket.emit("upgrade", res); if (websocket.readyState !== WebSocket2.CONNECTING) return; req = websocket._req = null; const upgrade = res.headers.upgrade; if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { abortHandshake(websocket, socket, "Invalid Upgrade header"); return; } const digest = createHash("sha1").update(key + GUID).digest("base64"); if (res.headers["sec-websocket-accept"] !== digest) { abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); return; } const serverProt = res.headers["sec-websocket-protocol"]; let protError; if (serverProt !== void 0) { if (!protocolSet.size) { protError = "Server sent a subprotocol but none was requested"; } else if (!protocolSet.has(serverProt)) { protError = "Server sent an invalid subprotocol"; } } else if (protocolSet.size) { protError = "Server sent no subprotocol"; } if (protError) { abortHandshake(websocket, socket, protError); return; } if (serverProt) websocket._protocol = serverProt; const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; if (secWebSocketExtensions !== void 0) { if (!perMessageDeflate) { const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; abortHandshake(websocket, socket, message); return; } let extensions; try { extensions = parse(secWebSocketExtensions); } catch (err2) { const message = "Invalid Sec-WebSocket-Extensions header"; abortHandshake(websocket, socket, message); return; } const extensionNames = Object.keys(extensions); if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { const message = "Server indicated an extension that was not requested"; abortHandshake(websocket, socket, message); return; } try { perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); } catch (err2) { const message = "Invalid Sec-WebSocket-Extensions header"; abortHandshake(websocket, socket, message); return; } websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; } websocket.setSocket(socket, head, { allowSynchronousEvents: opts.allowSynchronousEvents, generateMask: opts.generateMask, maxPayload: opts.maxPayload, skipUTF8Validation: opts.skipUTF8Validation }); }); if (opts.finishRequest) { opts.finishRequest(req, websocket); } else { req.end(); } } function emitErrorAndClose(websocket, err2) { websocket._readyState = WebSocket2.CLOSING; websocket.emit("error", err2); websocket.emitClose(); } function netConnect(options) { options.path = options.socketPath; return net2.connect(options); } function tlsConnect(options) { options.path = void 0; if (!options.servername && options.servername !== "") { options.servername = net2.isIP(options.host) ? "" : options.host; } return tls.connect(options); } function abortHandshake(websocket, stream, message) { websocket._readyState = WebSocket2.CLOSING; const err2 = new Error(message); Error.captureStackTrace(err2, abortHandshake); if (stream.setHeader) { stream[kAborted] = true; stream.abort(); if (stream.socket && !stream.socket.destroyed) { stream.socket.destroy(); } process.nextTick(emitErrorAndClose, websocket, err2); } else { stream.destroy(err2); stream.once("error", websocket.emit.bind(websocket, "error")); stream.once("close", websocket.emitClose.bind(websocket)); } } function sendAfterClose(websocket, data, cb) { if (data) { const length = toBuffer(data).length; if (websocket._socket) websocket._sender._bufferedBytes += length; else websocket._bufferedAmount += length; } if (cb) { const err2 = new Error( `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` ); process.nextTick(cb, err2); } } function receiverOnConclude(code, reason) { const websocket = this[kWebSocket]; websocket._closeFrameReceived = true; websocket._closeMessage = reason; websocket._closeCode = code; if (websocket._socket[kWebSocket] === void 0) return; websocket._socket.removeListener("data", socketOnData); process.nextTick(resume, websocket._socket); if (code === 1005) websocket.close(); else websocket.close(code, reason); } function receiverOnDrain() { const websocket = this[kWebSocket]; if (!websocket.isPaused) websocket._socket.resume(); } function receiverOnError(err2) { const websocket = this[kWebSocket]; if (websocket._socket[kWebSocket] !== void 0) { websocket._socket.removeListener("data", socketOnData); process.nextTick(resume, websocket._socket); websocket.close(err2[kStatusCode]); } websocket.emit("error", err2); } function receiverOnFinish() { this[kWebSocket].emitClose(); } function receiverOnMessage(data, isBinary) { this[kWebSocket].emit("message", data, isBinary); } function receiverOnPing(data) { const websocket = this[kWebSocket]; if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP); websocket.emit("ping", data); } function receiverOnPong(data) { this[kWebSocket].emit("pong", data); } function resume(stream) { stream.resume(); } function socketOnClose() { const websocket = this[kWebSocket]; this.removeListener("close", socketOnClose); this.removeListener("data", socketOnData); this.removeListener("end", socketOnEnd); websocket._readyState = WebSocket2.CLOSING; let chunk; if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && (chunk = websocket._socket.read()) !== null) { websocket._receiver.write(chunk); } websocket._receiver.end(); this[kWebSocket] = void 0; clearTimeout(websocket._closeTimer); if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { websocket.emitClose(); } else { websocket._receiver.on("error", receiverOnFinish); websocket._receiver.on("finish", receiverOnFinish); } } function socketOnData(chunk) { if (!this[kWebSocket]._receiver.write(chunk)) { this.pause(); } } function socketOnEnd() { const websocket = this[kWebSocket]; websocket._readyState = WebSocket2.CLOSING; websocket._receiver.end(); this.end(); } function socketOnError() { const websocket = this[kWebSocket]; this.removeListener("error", socketOnError); this.on("error", NOOP); if (websocket) { websocket._readyState = WebSocket2.CLOSING; this.destroy(); } } } }); // node_modules/ws/lib/subprotocol.js var require_subprotocol = __commonJS({ "node_modules/ws/lib/subprotocol.js"(exports2, module2) { "use strict"; var { tokenChars } = require_validation(); function parse(header) { const protocols = /* @__PURE__ */ new Set(); let start = -1; let end = -1; let i = 0; for (i; i < header.length; i++) { const code = header.charCodeAt(i); if (end === -1 && tokenChars[code] === 1) { if (start === -1) start = i; } else if (i !== 0 && (code === 32 || code === 9)) { if (end === -1 && start !== -1) end = i; } else if (code === 44) { if (start === -1) { throw new SyntaxError(`Unexpected character at index ${i}`); } if (end === -1) end = i; const protocol2 = header.slice(start, end); if (protocols.has(protocol2)) { throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); } protocols.add(protocol2); start = end = -1; } else { throw new SyntaxError(`Unexpected character at index ${i}`); } } if (start === -1 || end !== -1) { throw new SyntaxError("Unexpected end of input"); } const protocol = header.slice(start, i); if (protocols.has(protocol)) { throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); } protocols.add(protocol); return protocols; } module2.exports = { parse }; } }); // node_modules/ws/lib/websocket-server.js var require_websocket_server = __commonJS({ "node_modules/ws/lib/websocket-server.js"(exports2, module2) { "use strict"; var EventEmitter = require("events"); var http2 = require("http"); var { Duplex } = require("stream"); var { createHash } = require("crypto"); var extension = require_extension(); var PerMessageDeflate = require_permessage_deflate(); var subprotocol = require_subprotocol(); var WebSocket2 = require_websocket(); var { GUID, kWebSocket } = require_constants(); var keyRegex = /^[+/0-9A-Za-z]{22}==$/; var RUNNING = 0; var CLOSING = 1; var CLOSED = 2; var WebSocketServer2 = class extends EventEmitter { /** * Create a `WebSocketServer` instance. * * @param {Object} options Configuration options * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted * multiple times in the same tick * @param {Boolean} [options.autoPong=true] Specifies whether or not to * automatically send a pong in response to a ping * @param {Number} [options.backlog=511] The maximum length of the queue of * pending connections * @param {Boolean} [options.clientTracking=true] Specifies whether or not to * track clients * @param {Function} [options.handleProtocols] A hook to handle protocols * @param {String} [options.host] The hostname where to bind the server * @param {Number} [options.maxPayload=104857600] The maximum allowed message * size * @param {Boolean} [options.noServer=false] Enable no server mode * @param {String} [options.path] Accept only connections matching this path * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable * permessage-deflate * @param {Number} [options.port] The port where to bind the server * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S * server to use * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or * not to skip UTF-8 validation for text and close messages * @param {Function} [options.verifyClient] A hook to reject connections * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` * class to use. It must be the `WebSocket` class or class that extends it * @param {Function} [callback] A listener for the `listening` event */ constructor(options, callback) { super(); options = { allowSynchronousEvents: true, autoPong: true, maxPayload: 100 * 1024 * 1024, skipUTF8Validation: false, perMessageDeflate: false, handleProtocols: null, clientTracking: true, verifyClient: null, noServer: false, backlog: null, // use default (511 as implemented in net.js) server: null, host: null, path: null, port: null, WebSocket: WebSocket2, ...options }; if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { throw new TypeError( 'One and only one of the "port", "server", or "noServer" options must be specified' ); } if (options.port != null) { this._server = http2.createServer((req, res) => { const body = http2.STATUS_CODES[426]; res.writeHead(426, { "Content-Length": body.length, "Content-Type": "text/plain" }); res.end(body); }); this._server.listen( options.port, options.host, options.backlog, callback ); } else if (options.server) { this._server = options.server; } if (this._server) { const emitConnection = this.emit.bind(this, "connection"); this._removeListeners = addListeners(this._server, { listening: this.emit.bind(this, "listening"), error: this.emit.bind(this, "error"), upgrade: (req, socket, head) => { this.handleUpgrade(req, socket, head, emitConnection); } }); } if (options.perMessageDeflate === true) options.perMessageDeflate = {}; if (options.clientTracking) { this.clients = /* @__PURE__ */ new Set(); this._shouldEmitClose = false; } this.options = options; this._state = RUNNING; } /** * Returns the bound address, the address family name, and port of the server * as reported by the operating system if listening on an IP socket. * If the server is listening on a pipe or UNIX domain socket, the name is * returned as a string. * * @return {(Object|String|null)} The address of the server * @public */ address() { if (this.options.noServer) { throw new Error('The server is operating in "noServer" mode'); } if (!this._server) return null; return this._server.address(); } /** * Stop the server from accepting new connections and emit the `'close'` event * when all existing connections are closed. * * @param {Function} [cb] A one-time listener for the `'close'` event * @public */ close(cb) { if (this._state === CLOSED) { if (cb) { this.once("close", () => { cb(new Error("The server is not running")); }); } process.nextTick(emitClose, this); return; } if (cb) this.once("close", cb); if (this._state === CLOSING) return; this._state = CLOSING; if (this.options.noServer || this.options.server) { if (this._server) { this._removeListeners(); this._removeListeners = this._server = null; } if (this.clients) { if (!this.clients.size) { process.nextTick(emitClose, this); } else { this._shouldEmitClose = true; } } else { process.nextTick(emitClose, this); } } else { const server = this._server; this._removeListeners(); this._removeListeners = this._server = null; server.close(() => { emitClose(this); }); } } /** * See if a given request should be handled by this server instance. * * @param {http.IncomingMessage} req Request object to inspect * @return {Boolean} `true` if the request is valid, else `false` * @public */ shouldHandle(req) { if (this.options.path) { const index = req.url.indexOf("?"); const pathname = index !== -1 ? req.url.slice(0, index) : req.url; if (pathname !== this.options.path) return false; } return true; } /** * Handle a HTTP Upgrade request. * * @param {http.IncomingMessage} req The request object * @param {Duplex} socket The network socket between the server and client * @param {Buffer} head The first packet of the upgraded stream * @param {Function} cb Callback * @public */ handleUpgrade(req, socket, head, cb) { socket.on("error", socketOnError); const key = req.headers["sec-websocket-key"]; const upgrade = req.headers.upgrade; const version2 = +req.headers["sec-websocket-version"]; if (req.method !== "GET") { const message = "Invalid HTTP method"; abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); return; } if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { const message = "Invalid Upgrade header"; abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); return; } if (key === void 0 || !keyRegex.test(key)) { const message = "Missing or invalid Sec-WebSocket-Key header"; abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); return; } if (version2 !== 8 && version2 !== 13) { const message = "Missing or invalid Sec-WebSocket-Version header"; abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); return; } if (!this.shouldHandle(req)) { abortHandshake(socket, 400); return; } const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; let protocols = /* @__PURE__ */ new Set(); if (secWebSocketProtocol !== void 0) { try { protocols = subprotocol.parse(secWebSocketProtocol); } catch (err2) { const message = "Invalid Sec-WebSocket-Protocol header"; abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); return; } } const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; const extensions = {}; if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { const perMessageDeflate = new PerMessageDeflate( this.options.perMessageDeflate, true, this.options.maxPayload ); try { const offers = extension.parse(secWebSocketExtensions); if (offers[PerMessageDeflate.extensionName]) { perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); extensions[PerMessageDeflate.extensionName] = perMessageDeflate; } } catch (err2) { const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); return; } } if (this.options.verifyClient) { const info = { origin: req.headers[`${version2 === 8 ? "sec-websocket-origin" : "origin"}`], secure: !!(req.socket.authorized || req.socket.encrypted), req }; if (this.options.verifyClient.length === 2) { this.options.verifyClient(info, (verified, code, message, headers) => { if (!verified) { return abortHandshake(socket, code || 401, message, headers); } this.completeUpgrade( extensions, key, protocols, req, socket, head, cb ); }); return; } if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); } this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); } /** * Upgrade the connection to WebSocket. * * @param {Object} extensions The accepted extensions * @param {String} key The value of the `Sec-WebSocket-Key` header * @param {Set} protocols The subprotocols * @param {http.IncomingMessage} req The request object * @param {Duplex} socket The network socket between the server and client * @param {Buffer} head The first packet of the upgraded stream * @param {Function} cb Callback * @throws {Error} If called more than once with the same socket * @private */ completeUpgrade(extensions, key, protocols, req, socket, head, cb) { if (!socket.readable || !socket.writable) return socket.destroy(); if (socket[kWebSocket]) { throw new Error( "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" ); } if (this._state > RUNNING) return abortHandshake(socket, 503); const digest = createHash("sha1").update(key + GUID).digest("base64"); const headers = [ "HTTP/1.1 101 Switching Protocols", "Upgrade: websocket", "Connection: Upgrade", `Sec-WebSocket-Accept: ${digest}` ]; const ws = new this.options.WebSocket(null, void 0, this.options); if (protocols.size) { const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; if (protocol) { headers.push(`Sec-WebSocket-Protocol: ${protocol}`); ws._protocol = protocol; } } if (extensions[PerMessageDeflate.extensionName]) { const params = extensions[PerMessageDeflate.extensionName].params; const value = extension.format({ [PerMessageDeflate.extensionName]: [params] }); headers.push(`Sec-WebSocket-Extensions: ${value}`); ws._extensions = extensions; } this.emit("headers", headers, req); socket.write(headers.concat("\r\n").join("\r\n")); socket.removeListener("error", socketOnError); ws.setSocket(socket, head, { allowSynchronousEvents: this.options.allowSynchronousEvents, maxPayload: this.options.maxPayload, skipUTF8Validation: this.options.skipUTF8Validation }); if (this.clients) { this.clients.add(ws); ws.on("close", () => { this.clients.delete(ws); if (this._shouldEmitClose && !this.clients.size) { process.nextTick(emitClose, this); } }); } cb(ws, req); } }; module2.exports = WebSocketServer2; function addListeners(server, map2) { for (const event of Object.keys(map2)) server.on(event, map2[event]); return function removeListeners() { for (const event of Object.keys(map2)) { server.removeListener(event, map2[event]); } }; } function emitClose(server) { server._state = CLOSED; server.emit("close"); } function socketOnError() { this.destroy(); } function abortHandshake(socket, code, message, headers) { message = message || http2.STATUS_CODES[code]; headers = { Connection: "close", "Content-Type": "text/html", "Content-Length": Buffer.byteLength(message), ...headers }; socket.once("finish", socket.destroy); socket.end( `HTTP/1.1 ${code} ${http2.STATUS_CODES[code]}\r ` + Object.keys(headers).map((h2) => `${h2}: ${headers[h2]}`).join("\r\n") + "\r\n\r\n" + message ); } function abortHandshakeOrEmitwsClientError(server, req, socket, code, message) { if (server.listenerCount("wsClientError")) { const err2 = new Error(message); Error.captureStackTrace(err2, abortHandshakeOrEmitwsClientError); server.emit("wsClientError", err2, socket, req); } else { abortHandshake(socket, code, message); } } } }); // build/dev-server/server-process.js var server_process_exports = {}; __export(server_process_exports, { initServerProcess: () => initServerProcess }); module.exports = __toCommonJS(server_process_exports); var import_sys_api_node = require("../sys/node/index.js"); // src/utils/helpers.ts var noop = () => { }; var isFunction = (v) => typeof v === "function"; var isString = (v) => typeof v === "string"; // src/utils/message-utils.ts var catchError = (diagnostics, err2, msg) => { const diagnostic = { level: "error", type: "build", header: "Build Error", messageText: "build error", lines: [] }; if (isString(msg)) { diagnostic.messageText = msg.length ? msg : "UNKNOWN ERROR"; } else if (err2 != null) { if (err2.stack != null) { diagnostic.messageText = err2.stack.toString(); } else { if (err2.message != null) { diagnostic.messageText = err2.message.length ? err2.message : "UNKNOWN ERROR"; } else { diagnostic.messageText = err2.toString(); } } } if (diagnostics != null && !shouldIgnoreError(diagnostic.messageText)) { diagnostics.push(diagnostic); } return diagnostic; }; var shouldIgnoreError = (msg) => { return msg === TASK_CANCELED_MSG; }; var TASK_CANCELED_MSG = `task canceled`; // src/utils/path.ts var import_path = __toESM(require("path")); var normalizePath = (path11, relativize = true) => { if (typeof path11 !== "string") { throw new Error(`invalid path to normalize`); } path11 = normalizeSlashes(path11.trim()); const components = pathComponents(path11, getRootLength(path11)); const reducedComponents = reducePathComponents(components); const rootPart = reducedComponents[0]; const secondPart = reducedComponents[1]; const normalized = rootPart + reducedComponents.slice(1).join("/"); if (normalized === "") { return "."; } if (rootPart === "" && secondPart && path11.includes("/") && !secondPart.startsWith(".") && !secondPart.startsWith("@") && relativize) { return "./" + normalized; } return normalized; }; var normalizeSlashes = (path11) => path11.replace(backslashRegExp, "/"); var altDirectorySeparator = "\\"; var urlSchemeSeparator = "://"; var backslashRegExp = /\\/g; var reducePathComponents = (components) => { if (!Array.isArray(components) || components.length === 0) { return []; } const reduced = [components[0]]; for (let i = 1; i < components.length; i++) { const component = components[i]; if (!component) continue; if (component === ".") continue; if (component === "..") { if (reduced.length > 1) { if (reduced[reduced.length - 1] !== "..") { reduced.pop(); continue; } } else if (reduced[0]) continue; } reduced.push(component); } return reduced; }; var getRootLength = (path11) => { const rootLength = getEncodedRootLength(path11); return rootLength < 0 ? ~rootLength : rootLength; }; var getEncodedRootLength = (path11) => { if (!path11) return 0; const ch0 = path11.charCodeAt(0); if (ch0 === 47 /* slash */ || ch0 === 92 /* backslash */) { if (path11.charCodeAt(1) !== ch0) return 1; const p1 = path11.indexOf(ch0 === 47 /* slash */ ? "/" : altDirectorySeparator, 2); if (p1 < 0) return path11.length; return p1 + 1; } if (isVolumeCharacter(ch0) && path11.charCodeAt(1) === 58 /* colon */) { const ch2 = path11.charCodeAt(2); if (ch2 === 47 /* slash */ || ch2 === 92 /* backslash */) return 3; if (path11.length === 2) return 2; } const schemeEnd = path11.indexOf(urlSchemeSeparator); if (schemeEnd !== -1) { const authorityStart = schemeEnd + urlSchemeSeparator.length; const authorityEnd = path11.indexOf("/", authorityStart); if (authorityEnd !== -1) { const scheme = path11.slice(0, schemeEnd); const authority = path11.slice(authorityStart, authorityEnd); if (scheme === "file" && (authority === "" || authority === "localhost") && isVolumeCharacter(path11.charCodeAt(authorityEnd + 1))) { const volumeSeparatorEnd = getFileUrlVolumeSeparatorEnd(path11, authorityEnd + 2); if (volumeSeparatorEnd !== -1) { if (path11.charCodeAt(volumeSeparatorEnd) === 47 /* slash */) { return ~(volumeSeparatorEnd + 1); } if (volumeSeparatorEnd === path11.length) { return ~volumeSeparatorEnd; } } } return ~(authorityEnd + 1); } return ~path11.length; } return 0; }; var isVolumeCharacter = (charCode) => charCode >= 97 /* a */ && charCode <= 122 /* z */ || charCode >= 65 /* A */ && charCode <= 90 /* Z */; var getFileUrlVolumeSeparatorEnd = (url, start) => { const ch0 = url.charCodeAt(start); if (ch0 === 58 /* colon */) return start + 1; if (ch0 === 37 /* percent */ && url.charCodeAt(start + 1) === 51 /* _3 */) { const ch2 = url.charCodeAt(start + 2); if (ch2 === 97 /* a */ || ch2 === 65 /* A */) return start + 3; } return -1; }; var pathComponents = (path11, rootLength) => { const root = path11.substring(0, rootLength); const rest = path11.substring(rootLength).split("/"); const restLen = rest.length; if (restLen > 0 && !rest[restLen - 1]) { rest.pop(); } return [root, ...rest]; }; // src/utils/output-target.ts var import_path3 = require("path"); // src/utils/regular-expression.ts var escapeRegExpSpecialCharacters = (text) => { return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); }; // src/utils/result.ts var result_exports = {}; __export(result_exports, { err: () => err, map: () => map, ok: () => ok, unwrap: () => unwrap, unwrapErr: () => unwrapErr }); var ok = (value) => ({ isOk: true, isErr: false, value }); var err = (value) => ({ isOk: false, isErr: true, value }); function map(result, fn) { if (result.isOk) { const val = fn(result.value); if (val instanceof Promise) { return val.then((newVal) => ok(newVal)); } else { return ok(val); } } if (result.isErr) { const value = result.value; return err(value); } throw "should never get here"; } var unwrap = (result) => { if (result.isOk) { return result.value; } else { throw result.value; } }; var unwrapErr = (result) => { if (result.isErr) { return result.value; } else { throw result.value; } }; // src/app-data/index.ts var BUILD = { allRenderFn: false, element: true, event: true, hasRenderFn: true, hostListener: true, hostListenerTargetWindow: true, hostListenerTargetDocument: true, hostListenerTargetBody: true, hostListenerTargetParent: false, hostListenerTarget: true, member: true, method: true, mode: true, observeAttribute: true, prop: true, propMutable: true, reflect: true, scoped: true, shadowDom: true, slot: true, cssAnnotations: true, state: true, style: true, formAssociated: false, svg: true, updatable: true, vdomAttribute: true, vdomXlink: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomRef: true, vdomPropOrAttr: true, vdomRender: true, vdomStyle: true, vdomText: true, propChangeCallback: true, taskQueue: true, hotModuleReplacement: false, isDebug: false, isDev: false, isTesting: false, hydrateServerSide: false, hydrateClientSide: false, lifecycleDOMEvents: false, lazyLoad: false, profile: false, slotRelocation: true, // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior appendChildSlotFix: false, // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior cloneNodeFix: false, hydratedAttribute: false, hydratedClass: true, // TODO(STENCIL-1305): remove this option scriptDataOpts: false, // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior scopedSlotTextContentFix: false, // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field shadowDomShim: false, // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior slotChildNodesFix: false, invisiblePrehydration: true, propBoolean: true, propNumber: true, propString: true, constructableCSS: true, devTools: false, shadowDelegatesFocus: true, initializeNextTick: false, asyncLoading: true, asyncQueue: false, transformTagName: false, attachStyles: true, // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior experimentalSlotFixes: false }; // src/client/client-build.ts var Build = { isDev: BUILD.isDev ? true : false, isBrowser: true, isServer: false, isTesting: BUILD.isTesting ? true : false }; // src/client/client-log.ts var STENCIL_DEV_MODE = BUILD.isTesting ? ["STENCIL:"] : [ "%cstencil", "color: white;background:#4c47ff;font-weight: bold; font-size:10px; padding:2px 6px; border-radius: 5px" ]; // src/client/client-window.ts var win = typeof window !== "undefined" ? window : {}; var H = win.HTMLElement || class { }; var supportsShadow = BUILD.shadowDom; var supportsConstructableStylesheets = BUILD.constructableCSS ? /* @__PURE__ */ (() => { try { new CSSStyleSheet(); return typeof new CSSStyleSheet().replaceSync === "function"; } catch (e) { } return false; })() : false; // src/utils/shadow-css.ts /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license * * This file is a port of shadowCSS from `webcomponents.js` to TypeScript. * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js * https://github.com/angular/angular/blob/master/packages/compiler/src/shadow_css.ts */ var _polyfillHost = "-shadowcsshost"; var _polyfillSlotted = "-shadowcssslotted"; var _polyfillHostContext = "-shadowcsscontext"; var _parenSuffix = ")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)"; var _cssColonHostRe = new RegExp("(" + _polyfillHost + _parenSuffix, "gim"); var _cssColonHostContextRe = new RegExp("(" + _polyfillHostContext + _parenSuffix, "gim"); var _cssColonSlottedRe = new RegExp("(" + _polyfillSlotted + _parenSuffix, "gim"); var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator"; var createSupportsRuleRe = (selector) => { const safeSelector = escapeRegExpSpecialCharacters(selector); return new RegExp( // First capture group: match any context before the selector that's not inside @supports selector() // Using negative lookahead to avoid matching inside @supports selector(...) condition `(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${safeSelector}))(${safeSelector}\\b)`, "g" ); }; var _colonSlottedRe = createSupportsRuleRe("::slotted"); var _colonHostRe = createSupportsRuleRe(":host"); var _colonHostContextRe = createSupportsRuleRe(":host-context"); // src/runtime/vdom/set-accessor.ts var CAPTURE_EVENT_SUFFIX = "Capture"; var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$"); // src/runtime/mixin.ts var baseClass = BUILD.lazyLoad ? class { } : globalThis.HTMLElement || class { }; // src/utils/util.ts var lowerPathParam = (fn) => (p) => fn(p.toLowerCase()); var isDtsFile = lowerPathParam((p) => p.endsWith(".d.ts") || p.endsWith(".d.mts") || p.endsWith(".d.cts")); var isTsFile = lowerPathParam( (p) => !isDtsFile(p) && (p.endsWith(".ts") || p.endsWith(".mts") || p.endsWith(".cts")) ); var isTsxFile = lowerPathParam( (p) => p.endsWith(".tsx") || p.endsWith(".mtsx") || p.endsWith(".ctsx") ); var isJsxFile = lowerPathParam( (p) => p.endsWith(".jsx") || p.endsWith(".mjsx") || p.endsWith(".cjsx") ); var isJsFile = lowerPathParam((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); // build/dev-server/dev-server-constants.js var DEV_SERVER_URL = "/~dev-server"; var DEV_MODULE_URL = "/~dev-module"; var DEV_SERVER_INIT_URL = `${DEV_SERVER_URL}-init`; var OPEN_IN_EDITOR_URL = `${DEV_SERVER_URL}-open-in-editor`; // build/version.js var version = "4.38.0"; // build/dev-server/content-types-db.json var content_types_db_default = { "123": "application/vnd.lotus-1-2-3", "1km": "application/vnd.1000minds.decision-model+xml", "3dml": "text/vnd.in3d.3dml", "3ds": "image/x-3ds", "3g2": "video/3gpp2", "3gp": "video/3gpp", "3gpp": "video/3gpp", "3mf": "model/3mf", "7z": "application/x-7z-compressed", "aab": "application/x-authorware-bin", "aac": "audio/x-aac", "aam": "application/x-authorware-map", "aas": "application/x-authorware-seg", "abw": "application/x-abiword", "ac": "application/vnd.nokia.n-gage.ac+xml", "acc": "application/vnd.americandynamics.acc", "ace": "application/x-ace-compressed", "acu": "application/vnd.acucobol", "acutc": "application/vnd.acucorp", "adp": "audio/adpcm", "adts": "audio/aac", "aep": "application/vnd.audiograph", "afm": "application/x-font-type1", "afp": "application/vnd.ibm.modcap", "age": "application/vnd.age", "ahead": "application/vnd.ahead.space", "ai": "application/postscript", "aif": "audio/x-aiff", "aifc": "audio/x-aiff", "aiff": "audio/x-aiff", "air": "application/vnd.adobe.air-application-installer-package+zip", "ait": "application/vnd.dvb.ait", "ami": "application/vnd.amiga.ami", "aml": "application/automationml-aml+xml", "amlx": "application/automationml-amlx+zip", "amr": "audio/amr", "apk": "application/vnd.android.package-archive", "apng": "image/apng", "appcache": "text/cache-manifest", "appinstaller": "application/appinstaller", "application": "application/x-ms-application", "appx": "application/appx", "appxbundle": "application/appxbundle", "apr": "application/vnd.lotus-approach", "arc": "application/x-freearc", "arj": "application/x-arj", "asc": "application/pgp-signature", "asf": "video/x-ms-asf", "asm": "text/x-asm", "aso": "application/vnd.accpac.simply.aso", "asx": "video/x-ms-asf", "atc": "application/vnd.acucorp", "atom": "application/atom+xml", "atomcat": "application/atomcat+xml", "atomdeleted": "application/atomdeleted+xml", "atomsvc": "application/atomsvc+xml", "atx": "application/vnd.antix.game-component", "au": "audio/basic", "avci": "image/avci", "avcs": "image/avcs", "avi": "video/x-msvideo", "avif": "image/avif", "aw": "application/applixware", "azf": "application/vnd.airzip.filesecure.azf", "azs": "application/vnd.airzip.filesecure.azs", "azv": "image/vnd.airzip.accelerator.azv", "azw": "application/vnd.amazon.ebook", "b16": "image/vnd.pco.b16", "bary": "model/vnd.bary", "bat": "application/x-msdownload", "bcpio": "application/x-bcpio", "bdf": "application/x-font-bdf", "bdm": "application/vnd.syncml.dm+wbxml", "bdo": "application/vnd.nato.bindingdataobject+xml", "bdoc": "application/x-bdoc", "bed": "application/vnd.realvnc.bed", "bh2": "application/vnd.fujitsu.oasysprs", "bin": "application/octet-stream", "blb": "application/x-blorb", "blorb": "application/x-blorb", "bmi": "application/vnd.bmi", "bmml": "application/vnd.balsamiq.bmml+xml", "bmp": "image/x-ms-bmp", "book": "application/vnd.framemaker", "box": "application/vnd.previewsystems.box", "boz": "application/x-bzip2", "bpk": "application/octet-stream", "bsp": "model/vnd.valve.source.compiled-map", "btf": "image/prs.btif", "btif": "image/prs.btif", "buffer": "application/octet-stream", "bz": "application/x-bzip", "bz2": "application/x-bzip2", "c": "text/x-c", "c11amc": "application/vnd.cluetrust.cartomobile-config", "c11amz": "application/vnd.cluetrust.cartomobile-config-pkg", "c4d": "application/vnd.clonk.c4group", "c4f": "application/vnd.clonk.c4group", "c4g": "application/vnd.clonk.c4group", "c4p": "application/vnd.clonk.c4group", "c4u": "application/vnd.clonk.c4group", "cab": "application/vnd.ms-cab-compressed", "caf": "audio/x-caf", "cap": "application/vnd.tcpdump.pcap", "car": "application/vnd.curl.car", "cat": "application/vnd.ms-pki.seccat", "cb7": "application/x-cbr", "cba": "application/x-cbr", "cbr": "application/x-cbr", "cbt": "application/x-cbr", "cbz": "application/x-cbr", "cc": "text/x-c", "cco": "application/x-cocoa", "cct": "application/x-director", "ccxml": "application/ccxml+xml", "cdbcmsg": "application/vnd.contact.cmsg", "cdf": "application/x-netcdf", "cdfx": "application/cdfx+xml", "cdkey": "application/vnd.mediastation.cdkey", "cdmia": "application/cdmi-capability", "cdmic": "application/cdmi-container", "cdmid": "application/cdmi-domain", "cdmio": "application/cdmi-object", "cdmiq": "application/cdmi-queue", "cdx": "chemical/x-cdx", "cdxml": "application/vnd.chemdraw+xml", "cdy": "application/vnd.cinderella", "cer": "application/pkix-cert", "cfs": "application/x-cfs-compressed", "cgm": "image/cgm", "chat": "application/x-chat", "chm": "application/vnd.ms-htmlhelp", "chrt": "application/vnd.kde.kchart", "cif": "chemical/x-cif", "cii": "application/vnd.anser-web-certificate-issue-initiation", "cil": "application/vnd.ms-artgalry", "cjs": "application/node", "cla": "application/vnd.claymore", "class": "application/java-vm", "cld": "model/vnd.cld", "clkk": "application/vnd.crick.clicker.keyboard", "clkp": "application/vnd.crick.clicker.palette", "clkt": "application/vnd.crick.clicker.template", "clkw": "application/vnd.crick.clicker.wordbank", "clkx": "application/vnd.crick.clicker", "clp": "application/x-msclip", "cmc": "application/vnd.cosmocaller", "cmdf": "chemical/x-cmdf", "cml": "chemical/x-cml", "cmp": "application/vnd.yellowriver-custom-menu", "cmx": "image/x-cmx", "cod": "application/vnd.rim.cod", "coffee": "text/coffeescript", "com": "application/x-msdownload", "conf": "text/plain", "cpio": "application/x-cpio", "cpl": "application/cpl+xml", "cpp": "text/x-c", "cpt": "application/mac-compactpro", "crd": "application/x-mscardfile", "crl": "application/pkix-crl", "crt": "application/x-x509-ca-cert", "crx": "application/x-chrome-extension", "cryptonote": "application/vnd.rig.cryptonote", "csh": "application/x-csh", "csl": "application/vnd.citationstyles.style+xml", "csml": "chemical/x-csml", "csp": "application/vnd.commonspace", "css": "text/css", "cst": "application/x-director", "csv": "text/csv", "cu": "application/cu-seeme", "curl": "text/vnd.curl", "cwl": "application/cwl", "cww": "application/prs.cww", "cxt": "application/x-director", "cxx": "text/x-c", "dae": "model/vnd.collada+xml", "daf": "application/vnd.mobius.daf", "dart": "application/vnd.dart", "dataless": "application/vnd.fdsn.seed", "davmount": "application/davmount+xml", "dbf": "application/vnd.dbf", "dbk": "application/docbook+xml", "dcr": "application/x-director", "dcurl": "text/vnd.curl.dcurl", "dd2": "application/vnd.oma.dd2+xml", "ddd": "application/vnd.fujixerox.ddd", "ddf": "application/vnd.syncml.dmddf+xml", "dds": "image/vnd.ms-dds", "deb": "application/x-debian-package", "def": "text/plain", "deploy": "application/octet-stream", "der": "application/x-x509-ca-cert", "dfac": "application/vnd.dreamfactory", "dgc": "application/x-dgc-compressed", "dib": "image/bmp", "dic": "text/x-c", "dir": "application/x-director", "dis": "application/vnd.mobius.dis", "disposition-notification": "message/disposition-notification", "dist": "application/octet-stream", "distz": "application/octet-stream", "djv": "image/vnd.djvu", "djvu": "image/vnd.djvu", "dll": "application/x-msdownload", "dmg": "application/x-apple-diskimage", "dmp": "application/vnd.tcpdump.pcap", "dms": "application/octet-stream", "dna": "application/vnd.dna", "doc": "application/msword", "docm": "application/vnd.ms-word.document.macroenabled.12", "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "dot": "application/msword", "dotm": "application/vnd.ms-word.template.macroenabled.12", "dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", "dp": "application/vnd.osgi.dp", "dpg": "application/vnd.dpgraph", "dpx": "image/dpx", "dra": "audio/vnd.dra", "drle": "image/dicom-rle", "dsc": "text/prs.lines.tag", "dssc": "application/dssc+der", "dtb": "application/x-dtbook+xml", "dtd": "application/xml-dtd", "dts": "audio/vnd.dts", "dtshd": "audio/vnd.dts.hd", "dump": "application/octet-stream", "dvb": "video/vnd.dvb.file", "dvi": "application/x-dvi", "dwd": "application/atsc-dwd+xml", "dwf": "model/vnd.dwf", "dwg": "image/vnd.dwg", "dxf": "image/vnd.dxf", "dxp": "application/vnd.spotfire.dxp", "dxr": "application/x-director", "ear": "application/java-archive", "ecelp4800": "audio/vnd.nuera.ecelp4800", "ecelp7470": "audio/vnd.nuera.ecelp7470", "ecelp9600": "audio/vnd.nuera.ecelp9600", "ecma": "application/ecmascript", "edm": "application/vnd.novadigm.edm", "edx": "application/vnd.novadigm.edx", "efif": "application/vnd.picsel", "ei6": "application/vnd.pg.osasli", "elc": "application/octet-stream", "emf": "image/emf", "eml": "message/rfc822", "emma": "application/emma+xml", "emotionml": "application/emotionml+xml", "emz": "application/x-msmetafile", "eol": "audio/vnd.digital-winds", "eot": "application/vnd.ms-fontobject", "eps": "application/postscript", "epub": "application/epub+zip", "es3": "application/vnd.eszigno3+xml", "esa": "application/vnd.osgi.subsystem", "esf": "application/vnd.epson.esf", "et3": "application/vnd.eszigno3+xml", "etx": "text/x-setext", "eva": "application/x-eva", "evy": "application/x-envoy", "exe": "application/x-msdownload", "exi": "application/exi", "exp": "application/express", "exr": "image/aces", "ext": "application/vnd.novadigm.ext", "ez": "application/andrew-inset", "ez2": "application/vnd.ezpix-album", "ez3": "application/vnd.ezpix-package", "f": "text/x-fortran", "f4v": "video/x-f4v", "f77": "text/x-fortran", "f90": "text/x-fortran", "fbs": "image/vnd.fastbidsheet", "fcdt": "application/vnd.adobe.formscentral.fcdt", "fcs": "application/vnd.isac.fcs", "fdf": "application/vnd.fdf", "fdt": "application/fdt+xml", "fe_launch": "application/vnd.denovo.fcselayout-link", "fg5": "application/vnd.fujitsu.oasysgp", "fgd": "application/x-director", "fh": "image/x-freehand", "fh4": "image/x-freehand", "fh5": "image/x-freehand", "fh7": "image/x-freehand", "fhc": "image/x-freehand", "fig": "application/x-xfig", "fits": "image/fits", "flac": "audio/x-flac", "fli": "video/x-fli", "flo": "application/vnd.micrografx.flo", "flv": "video/x-flv", "flw": "application/vnd.kde.kivio", "flx": "text/vnd.fmi.flexstor", "fly": "text/vnd.fly", "fm": "application/vnd.framemaker", "fnc": "application/vnd.frogans.fnc", "fo": "application/vnd.software602.filler.form+xml", "for": "text/x-fortran", "fpx": "image/vnd.fpx", "frame": "application/vnd.framemaker", "fsc": "application/vnd.fsc.weblaunch", "fst": "image/vnd.fst", "ftc": "application/vnd.fluxtime.clip", "fti": "application/vnd.anser-web-funds-transfer-initiation", "fvt": "video/vnd.fvt", "fxp": "application/vnd.adobe.fxp", "fxpl": "application/vnd.adobe.fxp", "fzs": "application/vnd.fuzzysheet", "g2w": "application/vnd.geoplan", "g3": "image/g3fax", "g3w": "application/vnd.geospace", "gac": "application/vnd.groove-account", "gam": "application/x-tads", "gbr": "application/rpki-ghostbusters", "gca": "application/x-gca-compressed", "gdl": "model/vnd.gdl", "gdoc": "application/vnd.google-apps.document", "ged": "text/vnd.familysearch.gedcom", "geo": "application/vnd.dynageo", "geojson": "application/geo+json", "gex": "application/vnd.geometry-explorer", "ggb": "application/vnd.geogebra.file", "ggs": "application/vnd.geogebra.slides", "ggt": "application/vnd.geogebra.tool", "ghf": "application/vnd.groove-help", "gif": "image/gif", "gim": "application/vnd.groove-identity-message", "glb": "model/gltf-binary", "gltf": "model/gltf+json", "gml": "application/gml+xml", "gmx": "application/vnd.gmx", "gnumeric": "application/x-gnumeric", "gph": "application/vnd.flographit", "gpx": "application/gpx+xml", "gqf": "application/vnd.grafeq", "gqs": "application/vnd.grafeq", "gram": "application/srgs", "gramps": "application/x-gramps-xml", "gre": "application/vnd.geometry-explorer", "grv": "application/vnd.groove-injector", "grxml": "application/srgs+xml", "gsf": "application/x-font-ghostscript", "gsheet": "application/vnd.google-apps.spreadsheet", "gslides": "application/vnd.google-apps.presentation", "gtar": "application/x-gtar", "gtm": "application/vnd.groove-tool-message", "gtw": "model/vnd.gtw", "gv": "text/vnd.graphviz", "gxf": "application/gxf", "gxt": "application/vnd.geonext", "gz": "application/gzip", "h": "text/x-c", "h261": "video/h261", "h263": "video/h263", "h264": "video/h264", "hal": "application/vnd.hal+xml", "hbci": "application/vnd.hbci", "hbs": "text/x-handlebars-template", "hdd": "application/x-virtualbox-hdd", "hdf": "application/x-hdf", "heic": "image/heic", "heics": "image/heic-sequence", "heif": "image/heif", "heifs": "image/heif-sequence", "hej2": "image/hej2k", "held": "application/atsc-held+xml", "hh": "text/x-c", "hjson": "application/hjson", "hlp": "application/winhlp", "hpgl": "application/vnd.hp-hpgl", "hpid": "application/vnd.hp-hpid", "hps": "application/vnd.hp-hps", "hqx": "application/mac-binhex40", "hsj2": "image/hsj2", "htc": "text/x-component", "htke": "application/vnd.kenameaapp", "htm": "text/html", "html": "text/html", "hvd": "application/vnd.yamaha.hv-dic", "hvp": "application/vnd.yamaha.hv-voice", "hvs": "application/vnd.yamaha.hv-script", "i2g": "application/vnd.intergeo", "icc": "application/vnd.iccprofile", "ice": "x-conference/x-cooltalk", "icm": "application/vnd.iccprofile", "ico": "image/x-icon", "ics": "text/calendar", "ief": "image/ief", "ifb": "text/calendar", "ifm": "application/vnd.shana.informed.formdata", "iges": "model/iges", "igl": "application/vnd.igloader", "igm": "application/vnd.insors.igm", "igs": "model/iges", "igx": "application/vnd.micrografx.igx", "iif": "application/vnd.shana.informed.interchange", "img": "application/octet-stream", "imp": "application/vnd.accpac.simply.imp", "ims": "application/vnd.ms-ims", "in": "text/plain", "ini": "text/plain", "ink": "application/inkml+xml", "inkml": "application/inkml+xml", "install": "application/x-install-instructions", "iota": "application/vnd.astraea-software.iota", "ipfix": "application/ipfix", "ipk": "application/vnd.shana.informed.package", "irm": "application/vnd.ibm.rights-management", "irp": "application/vnd.irepository.package+xml", "iso": "application/x-iso9660-image", "itp": "application/vnd.shana.informed.formtemplate", "its": "application/its+xml", "ivp": "application/vnd.immervision-ivp", "ivu": "application/vnd.immervision-ivu", "jad": "text/vnd.sun.j2me.app-descriptor", "jade": "text/jade", "jam": "application/vnd.jam", "jar": "application/java-archive", "jardiff": "application/x-java-archive-diff", "java": "text/x-java-source", "jhc": "image/jphc", "jisp": "application/vnd.jisp", "jls": "image/jls", "jlt": "application/vnd.hp-jlyt", "jng": "image/x-jng", "jnlp": "application/x-java-jnlp-file", "joda": "application/vnd.joost.joda-archive", "jp2": "image/jp2", "jpe": "image/jpeg", "jpeg": "image/jpeg", "jpf": "image/jpx", "jpg": "image/jpeg", "jpg2": "image/jp2", "jpgm": "video/jpm", "jpgv": "video/jpeg", "jph": "image/jph", "jpm": "video/jpm", "jpx": "image/jpx", "js": "text/javascript", "json": "application/json", "json5": "application/json5", "jsonld": "application/ld+json", "jsonml": "application/jsonml+json", "jsx": "text/jsx", "jt": "model/jt", "jxl": "image/jxl", "jxr": "image/jxr", "jxra": "image/jxra", "jxrs": "image/jxrs", "jxs": "image/jxs", "jxsc": "image/jxsc", "jxsi": "image/jxsi", "jxss": "image/jxss", "kar": "audio/midi", "karbon": "application/vnd.kde.karbon", "kdbx": "application/x-keepass2", "key": "application/x-iwork-keynote-sffkey", "kfo": "application/vnd.kde.kformula", "kia": "application/vnd.kidspiration", "kml": "application/vnd.google-earth.kml+xml", "kmz": "application/vnd.google-earth.kmz", "kne": "application/vnd.kinar", "knp": "application/vnd.kinar", "kon": "application/vnd.kde.kontour", "kpr": "application/vnd.kde.kpresenter", "kpt": "application/vnd.kde.kpresenter", "kpxx": "application/vnd.ds-keypoint", "ksp": "application/vnd.kde.kspread", "ktr": "application/vnd.kahootz", "ktx": "image/ktx", "ktx2": "image/ktx2", "ktz": "application/vnd.kahootz", "kwd": "application/vnd.kde.kword", "kwt": "application/vnd.kde.kword", "lasxml": "application/vnd.las.las+xml", "latex": "application/x-latex", "lbd": "application/vnd.llamagraphics.life-balance.desktop", "lbe": "application/vnd.llamagraphics.life-balance.exchange+xml", "les": "application/vnd.hhe.lesson-player", "less": "text/less", "lgr": "application/lgr+xml", "lha": "application/x-lzh-compressed", "link66": "application/vnd.route66.link66+xml", "list": "text/plain", "list3820": "application/vnd.ibm.modcap", "listafp": "application/vnd.ibm.modcap", "litcoffee": "text/coffeescript", "lnk": "application/x-ms-shortcut", "log": "text/plain", "lostxml": "application/lost+xml", "lrf": "application/octet-stream", "lrm": "application/vnd.ms-lrm", "ltf": "application/vnd.frogans.ltf", "lua": "text/x-lua", "luac": "application/x-lua-bytecode", "lvp": "audio/vnd.lucent.voice", "lwp": "application/vnd.lotus-wordpro", "lzh": "application/x-lzh-compressed", "m13": "application/x-msmediaview", "m14": "application/x-msmediaview", "m1v": "video/mpeg", "m21": "application/mp21", "m2a": "audio/mpeg", "m2t": "video/mp2t", "m2ts": "video/mp2t", "m2v": "video/mpeg", "m3a": "audio/mpeg", "m3u": "audio/x-mpegurl", "m3u8": "application/vnd.apple.mpegurl", "m4a": "audio/x-m4a", "m4p": "application/mp4", "m4s": "video/iso.segment", "m4u": "video/vnd.mpegurl", "m4v": "video/x-m4v", "ma": "application/mathematica", "mads": "application/mads+xml", "maei": "application/mmt-aei+xml", "mag": "application/vnd.ecowin.chart", "maker": "application/vnd.framemaker", "man": "text/troff", "manifest": "text/cache-manifest", "map": "application/json", "mar": "application/octet-stream", "markdown": "text/markdown", "mathml": "application/mathml+xml", "mb": "application/mathematica", "mbk": "application/vnd.mobius.mbk", "mbox": "application/mbox", "mc1": "application/vnd.medcalcdata", "mcd": "application/vnd.mcd", "mcurl": "text/vnd.curl.mcurl", "md": "text/markdown", "mdb": "application/x-msaccess", "mdi": "image/vnd.ms-modi", "mdx": "text/mdx", "me": "text/troff", "mesh": "model/mesh", "meta4": "application/metalink4+xml", "metalink": "application/metalink+xml", "mets": "application/mets+xml", "mfm": "application/vnd.mfmp", "mft": "application/rpki-manifest", "mgp": "application/vnd.osgeo.mapguide.package", "mgz": "application/vnd.proteus.magazine", "mid": "audio/midi", "midi": "audio/midi", "mie": "application/x-mie", "mif": "application/vnd.mif", "mime": "message/rfc822", "mj2": "video/mj2", "mjp2": "video/mj2", "mjs": "text/javascript", "mk3d": "video/x-matroska", "mka": "audio/x-matroska", "mkd": "text/x-markdown", "mks": "video/x-matroska", "mkv": "video/x-matroska", "mlp": "application/vnd.dolby.mlp", "mmd": "application/vnd.chipnuts.karaoke-mmd", "mmf": "application/vnd.smaf", "mml": "text/mathml", "mmr": "image/vnd.fujixerox.edmics-mmr", "mng": "video/x-mng", "mny": "application/x-msmoney", "mobi": "application/x-mobipocket-ebook", "mods": "application/mods+xml", "mov": "video/quicktime", "movie": "video/x-sgi-movie", "mp2": "audio/mpeg", "mp21": "application/mp21", "mp2a": "audio/mpeg", "mp3": "audio/mpeg", "mp4": "video/mp4", "mp4a": "audio/mp4", "mp4s": "application/mp4", "mp4v": "video/mp4", "mpc": "application/vnd.mophun.certificate", "mpd": "application/dash+xml", "mpe": "video/mpeg", "mpeg": "video/mpeg", "mpf": "application/media-policy-dataset+xml", "mpg": "video/mpeg", "mpg4": "video/mp4", "mpga": "audio/mpeg", "mpkg": "application/vnd.apple.installer+xml", "mpm": "application/vnd.blueice.multipass", "mpn": "application/vnd.mophun.application", "mpp": "application/vnd.ms-project", "mpt": "application/vnd.ms-project", "mpy": "application/vnd.ibm.minipay", "mqy": "application/vnd.mobius.mqy", "mrc": "application/marc", "mrcx": "application/marcxml+xml", "ms": "text/troff", "mscml": "application/mediaservercontrol+xml", "mseed": "application/vnd.fdsn.mseed", "mseq": "application/vnd.mseq", "msf": "application/vnd.epson.msf", "msg": "application/vnd.ms-outlook", "msh": "model/mesh", "msi": "application/x-msdownload", "msix": "application/msix", "msixbundle": "application/msixbundle", "msl": "application/vnd.mobius.msl", "msm": "application/octet-stream", "msp": "application/octet-stream", "msty": "application/vnd.muvee.style", "mtl": "model/mtl", "mts": "video/mp2t", "mus": "application/vnd.musician", "musd": "application/mmt-usd+xml", "musicxml": "application/vnd.recordare.musicxml+xml", "mvb": "application/x-msmediaview", "mvt": "application/vnd.mapbox-vector-tile", "mwf": "application/vnd.mfer", "mxf": "application/mxf", "mxl": "application/vnd.recordare.musicxml", "mxmf": "audio/mobile-xmf", "mxml": "application/xv+xml", "mxs": "application/vnd.triscape.mxs", "mxu": "video/vnd.mpegurl", "n-gage": "application/vnd.nokia.n-gage.symbian.install", "n3": "text/n3", "nb": "application/mathematica", "nbp": "application/vnd.wolfram.player", "nc": "application/x-netcdf", "ncx": "application/x-dtbncx+xml", "nfo": "text/x-nfo", "ngdat": "application/vnd.nokia.n-gage.data", "nitf": "application/vnd.nitf", "nlu": "application/vnd.neurolanguage.nlu", "nml": "application/vnd.enliven", "nnd": "application/vnd.noblenet-directory", "nns": "application/vnd.noblenet-sealer", "nnw": "application/vnd.noblenet-web", "npx": "image/vnd.net-fpx", "nq": "application/n-quads", "nsc": "application/x-conference", "nsf": "application/vnd.lotus-notes", "nt": "application/n-triples", "ntf": "application/vnd.nitf", "numbers": "application/x-iwork-numbers-sffnumbers", "nzb": "application/x-nzb", "oa2": "application/vnd.fujitsu.oasys2", "oa3": "application/vnd.fujitsu.oasys3", "oas": "application/vnd.fujitsu.oasys", "obd": "application/x-msbinder", "obgx": "application/vnd.openblox.game+xml", "obj": "model/obj", "oda": "application/oda", "odb": "application/vnd.oasis.opendocument.database", "odc": "application/vnd.oasis.opendocument.chart", "odf": "application/vnd.oasis.opendocument.formula", "odft": "application/vnd.oasis.opendocument.formula-template", "odg": "application/vnd.oasis.opendocument.graphics", "odi": "application/vnd.oasis.opendocument.image", "odm": "application/vnd.oasis.opendocument.text-master", "odp": "application/vnd.oasis.opendocument.presentation", "ods": "application/vnd.oasis.opendocument.spreadsheet", "odt": "application/vnd.oasis.opendocument.text", "oga": "audio/ogg", "ogex": "model/vnd.opengex", "ogg": "audio/ogg", "ogv": "video/ogg", "ogx": "application/ogg", "omdoc": "application/omdoc+xml", "onepkg": "application/onenote", "onetmp": "application/onenote", "onetoc": "application/onenote", "onetoc2": "application/onenote", "opf": "application/oebps-package+xml", "opml": "text/x-opml", "oprc": "application/vnd.palm", "opus": "audio/ogg", "org": "text/x-org", "osf": "application/vnd.yamaha.openscoreformat", "osfpvg": "application/vnd.yamaha.openscoreformat.osfpvg+xml", "osm": "application/vnd.openstreetmap.data+xml", "otc": "application/vnd.oasis.opendocument.chart-template", "otf": "font/otf", "otg": "application/vnd.oasis.opendocument.graphics-template", "oth": "application/vnd.oasis.opendocument.text-web", "oti": "application/vnd.oasis.opendocument.image-template", "otp": "application/vnd.oasis.opendocument.presentation-template", "ots": "application/vnd.oasis.opendocument.spreadsheet-template", "ott": "application/vnd.oasis.opendocument.text-template", "ova": "application/x-virtualbox-ova", "ovf": "application/x-virtualbox-ovf", "owl": "application/rdf+xml", "oxps": "application/oxps", "oxt": "application/vnd.openofficeorg.extension", "p": "text/x-pascal", "p10": "application/pkcs10", "p12": "application/x-pkcs12", "p7b": "application/x-pkcs7-certificates", "p7c": "application/pkcs7-mime", "p7m": "application/pkcs7-mime", "p7r": "application/x-pkcs7-certreqresp", "p7s": "application/pkcs7-signature", "p8": "application/pkcs8", "pac": "application/x-ns-proxy-autoconfig", "pages": "application/x-iwork-pages-sffpages", "pas": "text/x-pascal", "paw": "application/vnd.pawaafile", "pbd": "application/vnd.powerbuilder6", "pbm": "image/x-portable-bitmap", "pcap": "application/vnd.tcpdump.pcap", "pcf": "application/x-font-pcf", "pcl": "application/vnd.hp-pcl", "pclxl": "application/vnd.hp-pclxl", "pct": "image/x-pict", "pcurl": "application/vnd.curl.pcurl", "pcx": "image/x-pcx", "pdb": "application/x-pilot", "pde": "text/x-processing", "pdf": "application/pdf", "pem": "application/x-x509-ca-cert", "pfa": "application/x-font-type1", "pfb": "application/x-font-type1", "pfm": "application/x-font-type1", "pfr": "application/font-tdpfr", "pfx": "application/x-pkcs12", "pgm": "image/x-portable-graymap", "pgn": "application/x-chess-pgn", "pgp": "application/pgp-encrypted", "php": "application/x-httpd-php", "pic": "image/x-pict", "pkg": "application/octet-stream", "pki": "application/pkixcmp", "pkipath": "application/pkix-pkipath", "pkpass": "application/vnd.apple.pkpass", "pl": "application/x-perl", "plb": "application/vnd.3gpp.pic-bw-large", "plc": "application/vnd.mobius.plc", "plf": "application/vnd.pocketlearn", "pls": "application/pls+xml", "pm": "application/x-perl", "pml": "application/vnd.ctc-posml", "png": "image/png", "pnm": "image/x-portable-anymap", "portpkg": "application/vnd.macports.portpkg", "pot": "application/vnd.ms-powerpoint", "potm": "application/vnd.ms-powerpoint.template.macroenabled.12", "potx": "application/vnd.openxmlformats-officedocument.presentationml.template", "ppam": "application/vnd.ms-powerpoint.addin.macroenabled.12", "ppd": "application/vnd.cups-ppd", "ppm": "image/x-portable-pixmap", "pps": "application/vnd.ms-powerpoint", "ppsm": "application/vnd.ms-powerpoint.slideshow.macroenabled.12", "ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "ppt": "application/vnd.ms-powerpoint", "pptm": "application/vnd.ms-powerpoint.presentation.macroenabled.12", "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "pqa": "application/vnd.palm", "prc": "model/prc", "pre": "application/vnd.lotus-freelance", "prf": "application/pics-rules", "provx": "application/provenance+xml", "ps": "application/postscript", "psb": "application/vnd.3gpp.pic-bw-small", "psd": "image/vnd.adobe.photoshop", "psf": "application/x-font-linux-psf", "pskcxml": "application/pskc+xml", "pti": "image/prs.pti", "ptid": "application/vnd.pvi.ptid1", "pub": "application/x-mspublisher", "pvb": "application/vnd.3gpp.pic-bw-var", "pwn": "application/vnd.3m.post-it-notes", "pya": "audio/vnd.ms-playready.media.pya", "pyo": "model/vnd.pytha.pyox", "pyox": "model/vnd.pytha.pyox", "pyv": "video/vnd.ms-playready.media.pyv", "qam": "application/vnd.epson.quickanime", "qbo": "application/vnd.intu.qbo", "qfx": "application/vnd.intu.qfx", "qps": "application/vnd.publishare-delta-tree", "qt": "video/quicktime", "qwd": "application/vnd.quark.quarkxpress", "qwt": "application/vnd.quark.quarkxpress", "qxb": "application/vnd.quark.quarkxpress", "qxd": "application/vnd.quark.quarkxpress", "qxl": "application/vnd.quark.quarkxpress", "qxt": "application/vnd.quark.quarkxpress", "ra": "audio/x-realaudio", "ram": "audio/x-pn-realaudio", "raml": "application/raml+yaml", "rapd": "application/route-apd+xml", "rar": "application/x-rar-compressed", "ras": "image/x-cmu-raster", "rcprofile": "application/vnd.ipunplugged.rcprofile", "rdf": "application/rdf+xml", "rdz": "application/vnd.data-vision.rdz", "relo": "application/p2p-overlay+xml", "rep": "application/vnd.businessobjects", "res": "application/x-dtbresource+xml", "rgb": "image/x-rgb", "rif": "application/reginfo+xml", "rip": "audio/vnd.rip", "ris": "application/x-research-info-systems", "rl": "application/resource-lists+xml", "rlc": "image/vnd.fujixerox.edmics-rlc", "rld": "application/resource-lists-diff+xml", "rm": "application/vnd.rn-realmedia", "rmi": "audio/midi", "rmp": "audio/x-pn-realaudio-plugin", "rms": "application/vnd.jcp.javame.midlet-rms", "rmvb": "application/vnd.rn-realmedia-vbr", "rnc": "application/relax-ng-compact-syntax", "rng": "application/xml", "roa": "application/rpki-roa", "roff": "text/troff", "rp9": "application/vnd.cloanto.rp9", "rpm": "application/x-redhat-package-manager", "rpss": "application/vnd.nokia.radio-presets", "rpst": "application/vnd.nokia.radio-preset", "rq": "application/sparql-query", "rs": "application/rls-services+xml", "rsat": "application/atsc-rsat+xml", "rsd": "application/rsd+xml", "rsheet": "application/urc-ressheet+xml", "rss": "application/rss+xml", "rtf": "text/rtf", "rtx": "text/richtext", "run": "application/x-makeself", "rusd": "application/route-usd+xml", "s": "text/x-asm", "s3m": "audio/s3m", "saf": "application/vnd.yamaha.smaf-audio", "sass": "text/x-sass", "sbml": "application/sbml+xml", "sc": "application/vnd.ibm.secure-container", "scd": "application/x-msschedule", "scm": "application/vnd.lotus-screencam", "scq": "application/scvp-cv-request", "scs": "application/scvp-cv-response", "scss": "text/x-scss", "scurl": "text/vnd.curl.scurl", "sda": "application/vnd.stardivision.draw", "sdc": "application/vnd.stardivision.calc", "sdd": "application/vnd.stardivision.impress", "sdkd": "application/vnd.solent.sdkm+xml", "sdkm": "application/vnd.solent.sdkm+xml", "sdp": "application/sdp", "sdw": "application/vnd.stardivision.writer", "sea": "application/x-sea", "see": "application/vnd.seemail", "seed": "application/vnd.fdsn.seed", "sema": "application/vnd.sema", "semd": "application/vnd.semd", "semf": "application/vnd.semf", "senmlx": "application/senml+xml", "sensmlx": "application/sensml+xml", "ser": "application/java-serialized-object", "setpay": "application/set-payment-initiation", "setreg": "application/set-registration-initiation", "sfd-hdstx": "application/vnd.hydrostatix.sof-data", "sfs": "application/vnd.spotfire.sfs", "sfv": "text/x-sfv", "sgi": "image/sgi", "sgl": "application/vnd.stardivision.writer-global", "sgm": "text/sgml", "sgml": "text/sgml", "sh": "application/x-sh", "shar": "application/x-shar", "shex": "text/shex", "shf": "application/shf+xml", "shtml": "text/html", "sid": "image/x-mrsid-image", "sieve": "application/sieve", "sig": "application/pgp-signature", "sil": "audio/silk", "silo": "model/mesh", "sis": "application/vnd.symbian.install", "sisx": "application/vnd.symbian.install", "sit": "application/x-stuffit", "sitx": "application/x-stuffitx", "siv": "application/sieve", "skd": "application/vnd.koan", "skm": "application/vnd.koan", "skp": "application/vnd.koan", "skt": "application/vnd.koan", "sldm": "application/vnd.ms-powerpoint.slide.macroenabled.12", "sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide", "slim": "text/slim", "slm": "text/slim", "sls": "application/route-s-tsid+xml", "slt": "application/vnd.epson.salt", "sm": "application/vnd.stepmania.stepchart", "smf": "application/vnd.stardivision.math", "smi": "application/smil+xml", "smil": "application/smil+xml", "smv": "video/x-smv", "smzip": "application/vnd.stepmania.package", "snd": "audio/basic", "snf": "application/x-font-snf", "so": "application/octet-stream", "spc": "application/x-pkcs7-certificates", "spdx": "text/spdx", "spf": "application/vnd.yamaha.smaf-phrase", "spl": "application/x-futuresplash", "spot": "text/vnd.in3d.spot", "spp": "application/scvp-vp-response", "spq": "application/scvp-vp-request", "spx": "audio/ogg", "sql": "application/x-sql", "src": "application/x-wais-source", "srt": "application/x-subrip", "sru": "application/sru+xml", "srx": "application/sparql-results+xml", "ssdl": "application/ssdl+xml", "sse": "application/vnd.kodak-descriptor", "ssf": "application/vnd.epson.ssf", "ssml": "application/ssml+xml", "st": "application/vnd.sailingtracker.track", "stc": "application/vnd.sun.xml.calc.template", "std": "application/vnd.sun.xml.draw.template", "stf": "application/vnd.wt.stf", "sti": "application/vnd.sun.xml.impress.template", "stk": "application/hyperstudio", "stl": "model/stl", "stpx": "model/step+xml", "stpxz": "model/step-xml+zip", "stpz": "model/step+zip", "str": "application/vnd.pg.format", "stw": "application/vnd.sun.xml.writer.template", "styl": "text/stylus", "stylus": "text/stylus", "sub": "text/vnd.dvb.subtitle", "sus": "application/vnd.sus-calendar", "susp": "application/vnd.sus-calendar", "sv4cpio": "application/x-sv4cpio", "sv4crc": "application/x-sv4crc", "svc": "application/vnd.dvb.service", "svd": "application/vnd.svd", "svg": "image/svg+xml", "svgz": "image/svg+xml", "swa": "application/x-director", "swf": "application/x-shockwave-flash", "swi": "application/vnd.aristanetworks.swi", "swidtag": "application/swid+xml", "sxc": "application/vnd.sun.xml.calc", "sxd": "application/vnd.sun.xml.draw", "sxg": "application/vnd.sun.xml.writer.global", "sxi": "application/vnd.sun.xml.impress", "sxm": "application/vnd.sun.xml.math", "sxw": "application/vnd.sun.xml.writer", "t": "text/troff", "t3": "application/x-t3vm-image", "t38": "image/t38", "taglet": "application/vnd.mynfc", "tao": "application/vnd.tao.intent-module-archive", "tap": "image/vnd.tencent.tap", "tar": "application/x-tar", "tcap": "application/vnd.3gpp2.tcap", "tcl": "application/x-tcl", "td": "application/urc-targetdesc+xml", "teacher": "application/vnd.smart.teacher", "tei": "application/tei+xml", "teicorpus": "application/tei+xml", "tex": "application/x-tex", "texi": "application/x-texinfo", "texinfo": "application/x-texinfo", "text": "text/plain", "tfi": "application/thraud+xml", "tfm": "application/x-tex-tfm", "tfx": "image/tiff-fx", "tga": "image/x-tga", "thmx": "application/vnd.ms-officetheme", "tif": "image/tiff", "tiff": "image/tiff", "tk": "application/x-tcl", "tmo": "application/vnd.tmobile-livetv", "toml": "application/toml", "torrent": "application/x-bittorrent", "tpl": "application/vnd.groove-tool-template", "tpt": "application/vnd.trid.tpt", "tr": "text/troff", "tra": "application/vnd.trueapp", "trig": "application/trig", "trm": "application/x-msterminal", "ts": "video/mp2t", "tsd": "application/timestamped-data", "tsv": "text/tab-separated-values", "ttc": "font/collection", "ttf": "font/ttf", "ttl": "text/turtle", "ttml": "application/ttml+xml", "twd": "application/vnd.simtech-mindmapper", "twds": "application/vnd.simtech-mindmapper", "txd": "application/vnd.genomatix.tuxedo", "txf": "application/vnd.mobius.txf", "txt": "text/plain", "u32": "application/x-authorware-bin", "u3d": "model/u3d", "u8dsn": "message/global-delivery-status", "u8hdr": "message/global-headers", "u8mdn": "message/global-disposition-notification", "u8msg": "message/global", "ubj": "application/ubjson", "udeb": "application/x-debian-package", "ufd": "application/vnd.ufdl", "ufdl": "application/vnd.ufdl", "ulx": "application/x-glulx", "umj": "application/vnd.umajin", "unityweb": "application/vnd.unity", "uo": "application/vnd.uoml+xml", "uoml": "application/vnd.uoml+xml", "uri": "text/uri-list", "uris": "text/uri-list", "urls": "text/uri-list", "usda": "model/vnd.usda", "usdz": "model/vnd.usdz+zip", "ustar": "application/x-ustar", "utz": "application/vnd.uiq.theme", "uu": "text/x-uuencode", "uva": "audio/vnd.dece.audio", "uvd": "application/vnd.dece.data", "uvf": "application/vnd.dece.data", "uvg": "image/vnd.dece.graphic", "uvh": "video/vnd.dece.hd", "uvi": "image/vnd.dece.graphic", "uvm": "video/vnd.dece.mobile", "uvp": "video/vnd.dece.pd", "uvs": "video/vnd.dece.sd", "uvt": "application/vnd.dece.ttml+xml", "uvu": "video/vnd.uvvu.mp4", "uvv": "video/vnd.dece.video", "uvva": "audio/vnd.dece.audio", "uvvd": "application/vnd.dece.data", "uvvf": "application/vnd.dece.data", "uvvg": "image/vnd.dece.graphic", "uvvh": "video/vnd.dece.hd", "uvvi": "image/vnd.dece.graphic", "uvvm": "video/vnd.dece.mobile", "uvvp": "video/vnd.dece.pd", "uvvs": "video/vnd.dece.sd", "uvvt": "application/vnd.dece.ttml+xml", "uvvu": "video/vnd.uvvu.mp4", "uvvv": "video/vnd.dece.video", "uvvx": "application/vnd.dece.unspecified", "uvvz": "application/vnd.dece.zip", "uvx": "application/vnd.dece.unspecified", "uvz": "application/vnd.dece.zip", "vbox": "application/x-virtualbox-vbox", "vbox-extpack": "application/x-virtualbox-vbox-extpack", "vcard": "text/vcard", "vcd": "application/x-cdlink", "vcf": "text/x-vcard", "vcg": "application/vnd.groove-vcard", "vcs": "text/x-vcalendar", "vcx": "application/vnd.vcx", "vdi": "application/x-virtualbox-vdi", "vds": "model/vnd.sap.vds", "vhd": "application/x-virtualbox-vhd", "vis": "application/vnd.visionary", "viv": "video/vnd.vivo", "vmdk": "application/x-virtualbox-vmdk", "vob": "video/x-ms-vob", "vor": "application/vnd.stardivision.writer", "vox": "application/x-authorware-bin", "vrml": "model/vrml", "vsd": "application/vnd.visio", "vsf": "application/vnd.vsf", "vss": "application/vnd.visio", "vst": "application/vnd.visio", "vsw": "application/vnd.visio", "vtf": "image/vnd.valve.source.texture", "vtt": "text/vtt", "vtu": "model/vnd.vtu", "vxml": "application/voicexml+xml", "w3d": "application/x-director", "wad": "application/x-doom", "wadl": "application/vnd.sun.wadl+xml", "war": "application/java-archive", "wasm": "application/wasm", "wav": "audio/x-wav", "wax": "audio/x-ms-wax", "wbmp": "image/vnd.wap.wbmp", "wbs": "application/vnd.criticaltools.wbs+xml", "wbxml": "application/vnd.wap.wbxml", "wcm": "application/vnd.ms-works", "wdb": "application/vnd.ms-works", "wdp": "image/vnd.ms-photo", "weba": "audio/webm", "webapp": "application/x-web-app-manifest+json", "webm": "video/webm", "webmanifest": "application/manifest+json", "webp": "image/webp", "wg": "application/vnd.pmi.widget", "wgsl": "text/wgsl", "wgt": "application/widget", "wif": "application/watcherinfo+xml", "wks": "application/vnd.ms-works", "wm": "video/x-ms-wm", "wma": "audio/x-ms-wma", "wmd": "application/x-ms-wmd", "wmf": "image/wmf", "wml": "text/vnd.wap.wml", "wmlc": "application/vnd.wap.wmlc", "wmls": "text/vnd.wap.wmlscript", "wmlsc": "application/vnd.wap.wmlscriptc", "wmv": "video/x-ms-wmv", "wmx": "video/x-ms-wmx", "wmz": "application/x-msmetafile", "woff": "font/woff", "woff2": "font/woff2", "wpd": "application/vnd.wordperfect", "wpl": "application/vnd.ms-wpl", "wps": "application/vnd.ms-works", "wqd": "application/vnd.wqd", "wri": "application/x-mswrite", "wrl": "model/vrml", "wsc": "message/vnd.wfa.wsc", "wsdl": "application/wsdl+xml", "wspolicy": "application/wspolicy+xml", "wtb": "application/vnd.webturbo", "wvx": "video/x-ms-wvx", "x32": "application/x-authorware-bin", "x3d": "model/x3d+xml", "x3db": "model/x3d+fastinfoset", "x3dbz": "model/x3d+binary", "x3dv": "model/x3d-vrml", "x3dvz": "model/x3d+vrml", "x3dz": "model/x3d+xml", "x_b": "model/vnd.parasolid.transmit.binary", "x_t": "model/vnd.parasolid.transmit.text", "xaml": "application/xaml+xml", "xap": "application/x-silverlight-app", "xar": "application/vnd.xara", "xav": "application/xcap-att+xml", "xbap": "application/x-ms-xbap", "xbd": "application/vnd.fujixerox.docuworks.binder", "xbm": "image/x-xbitmap", "xca": "application/xcap-caps+xml", "xcs": "application/calendar+xml", "xdcf": "application/vnd.gov.sk.xmldatacontainer+xml", "xdf": "application/xcap-diff+xml", "xdm": "application/vnd.syncml.dm+xml", "xdp": "application/vnd.adobe.xdp+xml", "xdssc": "application/dssc+xml", "xdw": "application/vnd.fujixerox.docuworks", "xel": "application/xcap-el+xml", "xenc": "application/xenc+xml", "xer": "application/patch-ops-error+xml", "xfdf": "application/xfdf", "xfdl": "application/vnd.xfdl", "xht": "application/xhtml+xml", "xhtm": "application/vnd.pwg-xhtml-print+xml", "xhtml": "application/xhtml+xml", "xhvml": "application/xv+xml", "xif": "image/vnd.xiff", "xla": "application/vnd.ms-excel", "xlam": "application/vnd.ms-excel.addin.macroenabled.12", "xlc": "application/vnd.ms-excel", "xlf": "application/xliff+xml", "xlm": "application/vnd.ms-excel", "xls": "application/vnd.ms-excel", "xlsb": "application/vnd.ms-excel.sheet.binary.macroenabled.12", "xlsm": "application/vnd.ms-excel.sheet.macroenabled.12", "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlt": "application/vnd.ms-excel", "xltm": "application/vnd.ms-excel.template.macroenabled.12", "xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", "xlw": "application/vnd.ms-excel", "xm": "audio/xm", "xml": "text/xml", "xns": "application/xcap-ns+xml", "xo": "application/vnd.olpc-sugar", "xop": "application/xop+xml", "xpi": "application/x-xpinstall", "xpl": "application/xproc+xml", "xpm": "image/x-xpixmap", "xpr": "application/vnd.is-xpr", "xps": "application/vnd.ms-xpsdocument", "xpw": "application/vnd.intercon.formnet", "xpx": "application/vnd.intercon.formnet", "xsd": "application/xml", "xsf": "application/prs.xsf+xml", "xsl": "application/xslt+xml", "xslt": "application/xslt+xml", "xsm": "application/vnd.syncml+xml", "xspf": "application/xspf+xml", "xul": "application/vnd.mozilla.xul+xml", "xvm": "application/xv+xml", "xvml": "application/xv+xml", "xwd": "image/x-xwindowdump", "xyz": "chemical/x-xyz", "xz": "application/x-xz", "yaml": "text/yaml", "yang": "application/yang", "yin": "application/yin+xml", "yml": "text/yaml", "ymp": "text/x-suse-ymp", "z1": "application/x-zmachine", "z2": "application/x-zmachine", "z3": "application/x-zmachine", "z4": "application/x-zmachine", "z5": "application/x-zmachine", "z6": "application/x-zmachine", "z7": "application/x-zmachine", "z8": "application/x-zmachine", "zaz": "application/vnd.zzazz.deck+xml", "zip": "application/zip", "zir": "application/vnd.zul", "zirz": "application/vnd.zul", "zmm": "application/vnd.handheld-entertainment+xml" }; // build/dev-server/dev-server-utils.js function responseHeaders(headers, httpCache = false) { headers = { ...DEFAULT_HEADERS, ...headers }; if (httpCache) { headers["cache-control"] = "max-age=3600"; delete headers["date"]; delete headers["expires"]; } return headers; } var DEFAULT_HEADERS = { "cache-control": "no-cache, no-store, must-revalidate, max-age=0", expires: "0", date: "Wed, 1 Jan 2000 00:00:00 GMT", server: "Stencil Dev Server " + version, "access-control-allow-origin": "*", "access-control-expose-headers": "*" }; function getBrowserUrl(protocol, address, port, basePath, pathname) { address = address === `0.0.0.0` ? `localhost` : address; const portSuffix = !port || port === 80 || port === 443 ? "" : ":" + port; let path11 = basePath; if (pathname.startsWith("/")) { pathname = pathname.substring(1); } path11 += pathname; protocol = protocol.replace(/\:/g, ""); return `${protocol}://${address}${portSuffix}${path11}`; } function getDevServerClientUrl(devServerConfig, host, protocol) { let address = devServerConfig.address; let port = devServerConfig.port; if (host) { address = host; port = null; } return getBrowserUrl(protocol !== null && protocol !== void 0 ? protocol : devServerConfig.protocol, address, port, devServerConfig.basePath, DEV_SERVER_URL); } function getContentType(filePath2) { const last = filePath2.replace(/^.*[/\\]/, "").toLowerCase(); const ext = last.replace(/^.*\./, "").toLowerCase(); const hasPath = last.length < filePath2.length; const hasDot = ext.length < last.length - 1; return (hasDot || !hasPath) && content_types_db_default[ext] || "application/octet-stream"; } function isHtmlFile(filePath2) { filePath2 = filePath2.toLowerCase().trim(); return filePath2.endsWith(".html") || filePath2.endsWith(".htm"); } function isCssFile(filePath2) { filePath2 = filePath2.toLowerCase().trim(); return filePath2.endsWith(".css"); } var TXT_EXT = ["css", "html", "htm", "js", "json", "svg", "xml"]; function isSimpleText(filePath2) { const ext = filePath2.toLowerCase().trim().split(".").pop(); return TXT_EXT.includes(ext); } function isExtensionLessPath(pathname) { const parts = pathname.split("/"); const lastPart = parts[parts.length - 1]; return !lastPart.includes("."); } function isSsrStaticDataPath(pathname) { const parts = pathname.split("/"); const fileName = parts[parts.length - 1].split("?")[0]; return fileName === "page.state.json"; } function getSsrStaticDataPath(req) { const parts = req.url.href.split("/"); const fileName = parts[parts.length - 1]; const fileNameParts = fileName.split("?"); parts.pop(); let ssrPath = new URL(parts.join("/")).href; if (!ssrPath.endsWith("/") && req.headers) { const h2 = new Headers(req.headers); if (h2.get("referer").endsWith("/")) { ssrPath += "/"; } } return { ssrPath, fileName: fileNameParts[0], hasQueryString: typeof fileNameParts[1] === "string" && fileNameParts[1].length > 0 }; } function isDevClient(pathname) { return pathname.startsWith(DEV_SERVER_URL); } function isDevModule(pathname) { return pathname.includes(DEV_MODULE_URL); } function isOpenInEditor(pathname) { return pathname === OPEN_IN_EDITOR_URL; } function isInitialDevServerLoad(pathname) { return pathname === DEV_SERVER_INIT_URL; } function isDevServerClient(pathname) { return pathname === DEV_SERVER_URL; } function shouldCompress(devServerConfig, req) { if (!devServerConfig.gzip) { return false; } if (req.method !== "GET") { return false; } const acceptEncoding = req.headers && req.headers["accept-encoding"]; if (typeof acceptEncoding !== "string") { return false; } if (!acceptEncoding.includes("gzip")) { return false; } return true; } // node_modules/open/index.js var import_node_process6 = __toESM(require("process"), 1); var import_node_buffer3 = require("buffer"); var import_node_path3 = __toESM(require("path"), 1); var import_node_url2 = require("url"); var import_node_child_process4 = __toESM(require("child_process"), 1); var import_promises = __toESM(require("fs/promises"), 1); var import_node_fs5 = require("fs"); var import_is_wsl = __toESM(require_is_wsl(), 1); // node_modules/define-lazy-prop/index.js function defineLazyProperty(object, propertyName, valueGetter) { const define2 = (value) => Object.defineProperty(object, propertyName, { value, enumerable: true, writable: true }); Object.defineProperty(object, propertyName, { configurable: true, enumerable: true, get() { const result = valueGetter(); define2(result); return result; }, set(value) { define2(value); } }); return object; } // node_modules/default-browser/index.js var import_node_process5 = __toESM(require("process"), 1); // node_modules/default-browser-id/index.js var import_os = __toESM(require("os"), 1); var import_fs = require("fs"); var import_bplist_parser = __toESM(require_bplistParser(), 1); var import_untildify = __toESM(require_untildify(), 1); var macOsVersion = Number(import_os.default.release().split(".")[0]); var filePath = (0, import_untildify.default)(macOsVersion >= 14 ? "~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist" : "~/Library/Preferences/com.apple.LaunchServices.plist"); async function defaultBrowserId() { if (process.platform !== "darwin") { throw new Error("macOS only"); } let bundleId = "com.apple.Safari"; let buffer; try { buffer = await import_fs.promises.readFile(filePath); } catch (error) { if (error.code === "ENOENT") { return bundleId; } throw error; } const data = import_bplist_parser.default.parseBuffer(buffer); const handlers = data && data[0].LSHandlers; if (!handlers || handlers.length === 0) { return bundleId; } for (const handler of handlers) { if (handler.LSHandlerURLScheme === "http" && handler.LSHandlerRoleAll) { bundleId = handler.LSHandlerRoleAll; break; } } return bundleId; } // node_modules/run-applescript/index.js var import_execa = __toESM(require_execa(), 1); async function runAppleScriptAsync(script) { if (process.platform !== "darwin") { throw new Error("macOS only"); } const { stdout } = await (0, import_execa.default)("osascript", ["-e", script]); return stdout; } // node_modules/bundle-name/index.js async function bundleName(bundleId) { return runAppleScriptAsync(`tell application "Finder" to set app_path to application file id "${bundleId}" as string tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`); } // node_modules/titleize/index.js function titleize(string) { if (typeof string !== "string") { throw new TypeError("Expected a string"); } return string.toLowerCase().replace(/(?:^|\s|-)\S/g, (x) => x.toUpperCase()); } // node_modules/default-browser/node_modules/execa/index.js var import_node_buffer2 = require("buffer"); var import_node_path2 = __toESM(require("path"), 1); var import_node_child_process3 = __toESM(require("child_process"), 1); var import_node_process4 = __toESM(require("process"), 1); var import_cross_spawn = __toESM(require_cross_spawn(), 1); // node_modules/default-browser/node_modules/strip-final-newline/index.js function stripFinalNewline(input) { const LF = typeof input === "string" ? "\n" : "\n".charCodeAt(); const CR = typeof input === "string" ? "\r" : "\r".charCodeAt(); if (input[input.length - 1] === LF) { input = input.slice(0, -1); } if (input[input.length - 1] === CR) { input = input.slice(0, -1); } return input; } // node_modules/npm-run-path/index.js var import_node_process = __toESM(require("process"), 1); var import_node_path = __toESM(require("path"), 1); var import_node_url = require("url"); // node_modules/npm-run-path/node_modules/path-key/index.js function pathKey(options = {}) { const { env = process.env, platform: platform2 = process.platform } = options; if (platform2 !== "win32") { return "PATH"; } return Object.keys(env).reverse().find((key) => key.toUpperCase() === "PATH") || "Path"; } // node_modules/npm-run-path/index.js var npmRunPath = ({ cwd = import_node_process.default.cwd(), path: pathOption = import_node_process.default.env[pathKey()], preferLocal = true, execPath = import_node_process.default.execPath, addExecPath = true } = {}) => { const cwdString = cwd instanceof URL ? (0, import_node_url.fileURLToPath)(cwd) : cwd; const cwdPath = import_node_path.default.resolve(cwdString); const result = []; if (preferLocal) { applyPreferLocal(result, cwdPath); } if (addExecPath) { applyExecPath(result, execPath, cwdPath); } return [...result, pathOption].join(import_node_path.default.delimiter); }; var applyPreferLocal = (result, cwdPath) => { let previous; while (previous !== cwdPath) { result.push(import_node_path.default.join(cwdPath, "node_modules/.bin")); previous = cwdPath; cwdPath = import_node_path.default.resolve(cwdPath, ".."); } }; var applyExecPath = (result, execPath, cwdPath) => { const execPathString = execPath instanceof URL ? (0, import_node_url.fileURLToPath)(execPath) : execPath; result.push(import_node_path.default.resolve(cwdPath, execPathString, "..")); }; var npmRunPathEnv = ({ env = import_node_process.default.env, ...options } = {}) => { env = { ...env }; const pathName = pathKey({ env }); options.path = env[pathName]; env[pathName] = npmRunPath(options); return env; }; // node_modules/default-browser/node_modules/mimic-fn/index.js var copyProperty = (to, from, property, ignoreNonConfigurable) => { if (property === "length" || property === "prototype") { return; } if (property === "arguments" || property === "caller") { return; } const toDescriptor = Object.getOwnPropertyDescriptor(to, property); const fromDescriptor = Object.getOwnPropertyDescriptor(from, property); if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) { return; } Object.defineProperty(to, property, fromDescriptor); }; var canCopyProperty = function(toDescriptor, fromDescriptor) { return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value); }; var changePrototype = (to, from) => { const fromPrototype = Object.getPrototypeOf(from); if (fromPrototype === Object.getPrototypeOf(to)) { return; } Object.setPrototypeOf(to, fromPrototype); }; var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/ ${fromBody}`; var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString"); var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name"); var changeToString = (to, from, name) => { const withName = name === "" ? "" : `with ${name.trim()}() `; const newToString = wrappedToString.bind(null, withName, from.toString()); Object.defineProperty(newToString, "name", toStringName); Object.defineProperty(to, "toString", { ...toStringDescriptor, value: newToString }); }; function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) { const { name } = to; for (const property of Reflect.ownKeys(from)) { copyProperty(to, from, property, ignoreNonConfigurable); } changePrototype(to, from); changeToString(to, from, name); return to; } // node_modules/default-browser/node_modules/onetime/index.js var calledFunctions = /* @__PURE__ */ new WeakMap(); var onetime = (function_, options = {}) => { if (typeof function_ !== "function") { throw new TypeError("Expected a function"); } let returnValue; let callCount = 0; const functionName = function_.displayName || function_.name || ""; const onetime2 = function(...arguments_) { calledFunctions.set(onetime2, ++callCount); if (callCount === 1) { returnValue = function_.apply(this, arguments_); function_ = null; } else if (options.throw === true) { throw new Error(`Function \`${functionName}\` can only be called once`); } return returnValue; }; mimicFunction(onetime2, function_); calledFunctions.set(onetime2, callCount); return onetime2; }; onetime.callCount = (function_) => { if (!calledFunctions.has(function_)) { throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`); } return calledFunctions.get(function_); }; var onetime_default = onetime; // node_modules/default-browser/node_modules/execa/lib/error.js var import_node_process2 = __toESM(require("process"), 1); // node_modules/default-browser/node_modules/human-signals/build/src/main.js var import_node_os2 = require("os"); // node_modules/default-browser/node_modules/human-signals/build/src/realtime.js var getRealtimeSignals = () => { const length = SIGRTMAX - SIGRTMIN + 1; return Array.from({ length }, getRealtimeSignal); }; var getRealtimeSignal = (value, index) => ({ name: `SIGRT${index + 1}`, number: SIGRTMIN + index, action: "terminate", description: "Application-specific signal (realtime)", standard: "posix" }); var SIGRTMIN = 34; var SIGRTMAX = 64; // node_modules/default-browser/node_modules/human-signals/build/src/signals.js var import_node_os = require("os"); // node_modules/default-browser/node_modules/human-signals/build/src/core.js var SIGNALS = [ { name: "SIGHUP", number: 1, action: "terminate", description: "Terminal closed", standard: "posix" }, { name: "SIGINT", number: 2, action: "terminate", description: "User interruption with CTRL-C", standard: "ansi" }, { name: "SIGQUIT", number: 3, action: "core", description: "User interruption with CTRL-\\", standard: "posix" }, { name: "SIGILL", number: 4, action: "core", description: "Invalid machine instruction", standard: "ansi" }, { name: "SIGTRAP", number: 5, action: "core", description: "Debugger breakpoint", standard: "posix" }, { name: "SIGABRT", number: 6, action: "core", description: "Aborted", standard: "ansi" }, { name: "SIGIOT", number: 6, action: "core", description: "Aborted", standard: "bsd" }, { name: "SIGBUS", number: 7, action: "core", description: "Bus error due to misaligned, non-existing address or paging error", standard: "bsd" }, { name: "SIGEMT", number: 7, action: "terminate", description: "Command should be emulated but is not implemented", standard: "other" }, { name: "SIGFPE", number: 8, action: "core", description: "Floating point arithmetic error", standard: "ansi" }, { name: "SIGKILL", number: 9, action: "terminate", description: "Forced termination", standard: "posix", forced: true }, { name: "SIGUSR1", number: 10, action: "terminate", description: "Application-specific signal", standard: "posix" }, { name: "SIGSEGV", number: 11, action: "core", description: "Segmentation fault", standard: "ansi" }, { name: "SIGUSR2", number: 12, action: "terminate", description: "Application-specific signal", standard: "posix" }, { name: "SIGPIPE", number: 13, action: "terminate", description: "Broken pipe or socket", standard: "posix" }, { name: "SIGALRM", number: 14, action: "terminate", description: "Timeout or timer", standard: "posix" }, { name: "SIGTERM", number: 15, action: "terminate", description: "Termination", standard: "ansi" }, { name: "SIGSTKFLT", number: 16, action: "terminate", description: "Stack is empty or overflowed", standard: "other" }, { name: "SIGCHLD", number: 17, action: "ignore", description: "Child process terminated, paused or unpaused", standard: "posix" }, { name: "SIGCLD", number: 17, action: "ignore", description: "Child process terminated, paused or unpaused", standard: "other" }, { name: "SIGCONT", number: 18, action: "unpause", description: "Unpaused", standard: "posix", forced: true }, { name: "SIGSTOP", number: 19, action: "pause", description: "Paused", standard: "posix", forced: true }, { name: "SIGTSTP", number: 20, action: "pause", description: 'Paused using CTRL-Z or "suspend"', standard: "posix" }, { name: "SIGTTIN", number: 21, action: "pause", description: "Background process cannot read terminal input", standard: "posix" }, { name: "SIGBREAK", number: 21, action: "terminate", description: "User interruption with CTRL-BREAK", standard: "other" }, { name: "SIGTTOU", number: 22, action: "pause", description: "Background process cannot write to terminal output", standard: "posix" }, { name: "SIGURG", number: 23, action: "ignore", description: "Socket received out-of-band data", standard: "bsd" }, { name: "SIGXCPU", number: 24, action: "core", description: "Process timed out", standard: "bsd" }, { name: "SIGXFSZ", number: 25, action: "core", description: "File too big", standard: "bsd" }, { name: "SIGVTALRM", number: 26, action: "terminate", description: "Timeout or timer", standard: "bsd" }, { name: "SIGPROF", number: 27, action: "terminate", description: "Timeout or timer", standard: "bsd" }, { name: "SIGWINCH", number: 28, action: "ignore", description: "Terminal window size changed", standard: "bsd" }, { name: "SIGIO", number: 29, action: "terminate", description: "I/O is available", standard: "other" }, { name: "SIGPOLL", number: 29, action: "terminate", description: "Watched event", standard: "other" }, { name: "SIGINFO", number: 29, action: "ignore", description: "Request for process information", standard: "other" }, { name: "SIGPWR", number: 30, action: "terminate", description: "Device running out of power", standard: "systemv" }, { name: "SIGSYS", number: 31, action: "core", description: "Invalid system call", standard: "other" }, { name: "SIGUNUSED", number: 31, action: "terminate", description: "Invalid system call", standard: "other" } ]; // node_modules/default-browser/node_modules/human-signals/build/src/signals.js var getSignals = () => { const realtimeSignals = getRealtimeSignals(); const signals = [...SIGNALS, ...realtimeSignals].map(normalizeSignal); return signals; }; var normalizeSignal = ({ name, number: defaultNumber, description, action, forced = false, standard }) => { const { signals: { [name]: constantSignal } } = import_node_os.constants; const supported = constantSignal !== void 0; const number = supported ? constantSignal : defaultNumber; return { name, number, description, supported, action, forced, standard }; }; // node_modules/default-browser/node_modules/human-signals/build/src/main.js var getSignalsByName = () => { const signals = getSignals(); return Object.fromEntries(signals.map(getSignalByName)); }; var getSignalByName = ({ name, number, description, supported, action, forced, standard }) => [name, { name, number, description, supported, action, forced, standard }]; var signalsByName = getSignalsByName(); var getSignalsByNumber = () => { const signals = getSignals(); const length = SIGRTMAX + 1; const signalsA = Array.from({ length }, (value, number) => getSignalByNumber(number, signals)); return Object.assign({}, ...signalsA); }; var getSignalByNumber = (number, signals) => { const signal = findSignalByNumber(number, signals); if (signal === void 0) { return {}; } const { name, description, supported, action, forced, standard } = signal; return { [number]: { name, number, description, supported, action, forced, standard } }; }; var findSignalByNumber = (number, signals) => { const signal = signals.find(({ name }) => import_node_os2.constants.signals[name] === number); if (signal !== void 0) { return signal; } return signals.find((signalA) => signalA.number === number); }; var signalsByNumber = getSignalsByNumber(); // node_modules/default-browser/node_modules/execa/lib/error.js var getErrorPrefix = ({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }) => { if (timedOut) { return `timed out after ${timeout} milliseconds`; } if (isCanceled) { return "was canceled"; } if (errorCode !== void 0) { return `failed with ${errorCode}`; } if (signal !== void 0) { return `was killed with ${signal} (${signalDescription})`; } if (exitCode !== void 0) { return `failed with exit code ${exitCode}`; } return "failed"; }; var makeError = ({ stdout, stderr, all, error, signal, exitCode, command, escapedCommand, timedOut, isCanceled, killed, parsed: { options: { timeout, cwd = import_node_process2.default.cwd() } } }) => { exitCode = exitCode === null ? void 0 : exitCode; signal = signal === null ? void 0 : signal; const signalDescription = signal === void 0 ? void 0 : signalsByName[signal].description; const errorCode = error && error.code; const prefix = getErrorPrefix({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }); const execaMessage = `Command ${prefix}: ${command}`; const isError = Object.prototype.toString.call(error) === "[object Error]"; const shortMessage = isError ? `${execaMessage} ${error.message}` : execaMessage; const message = [shortMessage, stderr, stdout].filter(Boolean).join("\n"); if (isError) { error.originalMessage = error.message; error.message = message; } else { error = new Error(message); } error.shortMessage = shortMessage; error.command = command; error.escapedCommand = escapedCommand; error.exitCode = exitCode; error.signal = signal; error.signalDescription = signalDescription; error.stdout = stdout; error.stderr = stderr; error.cwd = cwd; if (all !== void 0) { error.all = all; } if ("bufferedData" in error) { delete error.bufferedData; } error.failed = true; error.timedOut = Boolean(timedOut); error.isCanceled = isCanceled; error.killed = killed && !timedOut; return error; }; // node_modules/default-browser/node_modules/execa/lib/stdio.js var aliases = ["stdin", "stdout", "stderr"]; var hasAlias = (options) => aliases.some((alias) => options[alias] !== void 0); var normalizeStdio = (options) => { if (!options) { return; } const { stdio } = options; if (stdio === void 0) { return aliases.map((alias) => options[alias]); } if (hasAlias(options)) { throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map((alias) => `\`${alias}\``).join(", ")}`); } if (typeof stdio === "string") { return stdio; } if (!Array.isArray(stdio)) { throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); } const length = Math.max(stdio.length, aliases.length); return Array.from({ length }, (value, index) => stdio[index]); }; // node_modules/default-browser/node_modules/execa/lib/kill.js var import_node_os3 = __toESM(require("os"), 1); var import_signal_exit = __toESM(require_signal_exit2(), 1); var DEFAULT_FORCE_KILL_TIMEOUT = 1e3 * 5; var spawnedKill = (kill, signal = "SIGTERM", options = {}) => { const killResult = kill(signal); setKillTimeout(kill, signal, options, killResult); return killResult; }; var setKillTimeout = (kill, signal, options, killResult) => { if (!shouldForceKill(signal, options, killResult)) { return; } const timeout = getForceKillAfterTimeout(options); const t = setTimeout(() => { kill("SIGKILL"); }, timeout); if (t.unref) { t.unref(); } }; var shouldForceKill = (signal, { forceKillAfterTimeout }, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult; var isSigterm = (signal) => signal === import_node_os3.default.constants.signals.SIGTERM || typeof signal === "string" && signal.toUpperCase() === "SIGTERM"; var getForceKillAfterTimeout = ({ forceKillAfterTimeout = true }) => { if (forceKillAfterTimeout === true) { return DEFAULT_FORCE_KILL_TIMEOUT; } if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); } return forceKillAfterTimeout; }; var spawnedCancel = (spawned, context) => { const killResult = spawned.kill(); if (killResult) { context.isCanceled = true; } }; var timeoutKill = (spawned, signal, reject) => { spawned.kill(signal); reject(Object.assign(new Error("Timed out"), { timedOut: true, signal })); }; var setupTimeout = (spawned, { timeout, killSignal = "SIGTERM" }, spawnedPromise) => { if (timeout === 0 || timeout === void 0) { return spawnedPromise; } let timeoutId; const timeoutPromise = new Promise((resolve, reject) => { timeoutId = setTimeout(() => { timeoutKill(spawned, killSignal, reject); }, timeout); }); const safeSpawnedPromise = spawnedPromise.finally(() => { clearTimeout(timeoutId); }); return Promise.race([timeoutPromise, safeSpawnedPromise]); }; var validateTimeout = ({ timeout }) => { if (timeout !== void 0 && (!Number.isFinite(timeout) || timeout < 0)) { throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); } }; var setExitHandler = async (spawned, { cleanup, detached }, timedPromise) => { if (!cleanup || detached) { return timedPromise; } const removeExitHandler = (0, import_signal_exit.default)(() => { spawned.kill(); }); return timedPromise.finally(() => { removeExitHandler(); }); }; // node_modules/default-browser/node_modules/execa/lib/pipe.js var import_node_fs = require("fs"); var import_node_child_process = require("child_process"); // node_modules/default-browser/node_modules/is-stream/index.js function isStream(stream) { return stream !== null && typeof stream === "object" && typeof stream.pipe === "function"; } function isWritableStream(stream) { return isStream(stream) && stream.writable !== false && typeof stream._write === "function" && typeof stream._writableState === "object"; } // node_modules/default-browser/node_modules/execa/lib/pipe.js var isExecaChildProcess = (target) => target instanceof import_node_child_process.ChildProcess && typeof target.then === "function"; var pipeToTarget = (spawned, streamName, target) => { if (typeof target === "string") { spawned[streamName].pipe((0, import_node_fs.createWriteStream)(target)); return spawned; } if (isWritableStream(target)) { spawned[streamName].pipe(target); return spawned; } if (!isExecaChildProcess(target)) { throw new TypeError("The second argument must be a string, a stream or an Execa child process."); } if (!isWritableStream(target.stdin)) { throw new TypeError("The target child process's stdin must be available."); } spawned[streamName].pipe(target.stdin); return target; }; var addPipeMethods = (spawned) => { if (spawned.stdout !== null) { spawned.pipeStdout = pipeToTarget.bind(void 0, spawned, "stdout"); } if (spawned.stderr !== null) { spawned.pipeStderr = pipeToTarget.bind(void 0, spawned, "stderr"); } if (spawned.all !== void 0) { spawned.pipeAll = pipeToTarget.bind(void 0, spawned, "all"); } }; // node_modules/default-browser/node_modules/execa/lib/stream.js var import_node_fs2 = require("fs"); var import_get_stream = __toESM(require_get_stream2(), 1); var import_merge_stream = __toESM(require_merge_stream(), 1); var validateInputOptions = (input) => { if (input !== void 0) { throw new TypeError("The `input` and `inputFile` options cannot be both set."); } }; var getInputSync = ({ input, inputFile }) => { if (typeof inputFile !== "string") { return input; } validateInputOptions(input); return (0, import_node_fs2.readFileSync)(inputFile); }; var handleInputSync = (options) => { const input = getInputSync(options); if (isStream(input)) { throw new TypeError("The `input` option cannot be a stream in sync mode"); } return input; }; var getInput = ({ input, inputFile }) => { if (typeof inputFile !== "string") { return input; } validateInputOptions(input); return (0, import_node_fs2.createReadStream)(inputFile); }; var handleInput = (spawned, options) => { const input = getInput(options); if (input === void 0) { return; } if (isStream(input)) { input.pipe(spawned.stdin); } else { spawned.stdin.end(input); } }; var makeAllStream = (spawned, { all }) => { if (!all || !spawned.stdout && !spawned.stderr) { return; } const mixed = (0, import_merge_stream.default)(); if (spawned.stdout) { mixed.add(spawned.stdout); } if (spawned.stderr) { mixed.add(spawned.stderr); } return mixed; }; var getBufferedData = async (stream, streamPromise) => { if (!stream || streamPromise === void 0) { return; } stream.destroy(); try { return await streamPromise; } catch (error) { return error.bufferedData; } }; var getStreamPromise = (stream, { encoding, buffer, maxBuffer }) => { if (!stream || !buffer) { return; } if (encoding) { return (0, import_get_stream.default)(stream, { encoding, maxBuffer }); } return import_get_stream.default.buffer(stream, { maxBuffer }); }; var getSpawnedResult = async ({ stdout, stderr, all }, { encoding, buffer, maxBuffer }, processDone) => { const stdoutPromise = getStreamPromise(stdout, { encoding, buffer, maxBuffer }); const stderrPromise = getStreamPromise(stderr, { encoding, buffer, maxBuffer }); const allPromise = getStreamPromise(all, { encoding, buffer, maxBuffer: maxBuffer * 2 }); try { return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); } catch (error) { return Promise.all([ { error, signal: error.signal, timedOut: error.timedOut }, getBufferedData(stdout, stdoutPromise), getBufferedData(stderr, stderrPromise), getBufferedData(all, allPromise) ]); } }; // node_modules/default-browser/node_modules/execa/lib/promise.js var nativePromisePrototype = (async () => { })().constructor.prototype; var descriptors = ["then", "catch", "finally"].map((property) => [ property, Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property) ]); var mergePromise = (spawned, promise) => { for (const [property, descriptor] of descriptors) { const value = typeof promise === "function" ? (...args) => Reflect.apply(descriptor.value, promise(), args) : descriptor.value.bind(promise); Reflect.defineProperty(spawned, property, { ...descriptor, value }); } }; var getSpawnedPromise = (spawned) => new Promise((resolve, reject) => { spawned.on("exit", (exitCode, signal) => { resolve({ exitCode, signal }); }); spawned.on("error", (error) => { reject(error); }); if (spawned.stdin) { spawned.stdin.on("error", (error) => { reject(error); }); } }); // node_modules/default-browser/node_modules/execa/lib/command.js var import_node_buffer = require("buffer"); var import_node_child_process2 = require("child_process"); var normalizeArgs = (file, args = []) => { if (!Array.isArray(args)) { return [file]; } return [file, ...args]; }; var NO_ESCAPE_REGEXP = /^[\w.-]+$/; var DOUBLE_QUOTES_REGEXP = /"/g; var escapeArg = (arg) => { if (typeof arg !== "string" || NO_ESCAPE_REGEXP.test(arg)) { return arg; } return `"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\"')}"`; }; var joinCommand = (file, args) => normalizeArgs(file, args).join(" "); var getEscapedCommand = (file, args) => normalizeArgs(file, args).map((arg) => escapeArg(arg)).join(" "); var SPACES_REGEXP = / +/g; var parseExpression = (expression) => { const typeOfExpression = typeof expression; if (typeOfExpression === "string") { return expression; } if (typeOfExpression === "number") { return String(expression); } if (typeOfExpression === "object" && expression !== null && !(expression instanceof import_node_child_process2.ChildProcess) && "stdout" in expression) { const typeOfStdout = typeof expression.stdout; if (typeOfStdout === "string") { return expression.stdout; } if (import_node_buffer.Buffer.isBuffer(expression.stdout)) { return expression.stdout.toString(); } throw new TypeError(`Unexpected "${typeOfStdout}" stdout in template expression`); } throw new TypeError(`Unexpected "${typeOfExpression}" in template expression`); }; var concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0 ? [...tokens, ...nextTokens] : [ ...tokens.slice(0, -1), `${tokens[tokens.length - 1]}${nextTokens[0]}`, ...nextTokens.slice(1) ]; var parseTemplate = ({ templates, expressions, tokens, index, template }) => { const templateString = template != null ? template : templates.raw[index]; const templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean); const newTokens = concatTokens( tokens, templateTokens, templateString.startsWith(" ") ); if (index === expressions.length) { return newTokens; } const expression = expressions[index]; const expressionTokens = Array.isArray(expression) ? expression.map((expression2) => parseExpression(expression2)) : [parseExpression(expression)]; return concatTokens( newTokens, expressionTokens, templateString.endsWith(" ") ); }; var parseTemplates = (templates, expressions) => { let tokens = []; for (const [index, template] of templates.entries()) { tokens = parseTemplate({ templates, expressions, tokens, index, template }); } return tokens; }; // node_modules/default-browser/node_modules/execa/lib/verbose.js var import_node_util = require("util"); var import_node_process3 = __toESM(require("process"), 1); var verboseDefault = (0, import_node_util.debuglog)("execa").enabled; var padField = (field, padding) => String(field).padStart(padding, "0"); var getTimestamp = () => { const date = /* @__PURE__ */ new Date(); return `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`; }; var logCommand = (escapedCommand, { verbose }) => { if (!verbose) { return; } import_node_process3.default.stderr.write(`[${getTimestamp()}] ${escapedCommand} `); }; // node_modules/default-browser/node_modules/execa/index.js var DEFAULT_MAX_BUFFER = 1e3 * 1e3 * 100; var getEnv = ({ env: envOption, extendEnv, preferLocal, localDir, execPath }) => { const env = extendEnv ? { ...import_node_process4.default.env, ...envOption } : envOption; if (preferLocal) { return npmRunPathEnv({ env, cwd: localDir, execPath }); } return env; }; var handleArguments = (file, args, options = {}) => { const parsed = import_cross_spawn.default._parse(file, args, options); file = parsed.command; args = parsed.args; options = parsed.options; options = { maxBuffer: DEFAULT_MAX_BUFFER, buffer: true, stripFinalNewline: true, extendEnv: true, preferLocal: false, localDir: options.cwd || import_node_process4.default.cwd(), execPath: import_node_process4.default.execPath, encoding: "utf8", reject: true, cleanup: true, all: false, windowsHide: true, verbose: verboseDefault, ...options }; options.env = getEnv(options); options.stdio = normalizeStdio(options); if (import_node_process4.default.platform === "win32" && import_node_path2.default.basename(file, ".exe") === "cmd") { args.unshift("/q"); } return { file, args, options, parsed }; }; var handleOutput = (options, value, error) => { if (typeof value !== "string" && !import_node_buffer2.Buffer.isBuffer(value)) { return error === void 0 ? void 0 : ""; } if (options.stripFinalNewline) { return stripFinalNewline(value); } return value; }; function execa2(file, args, options) { const parsed = handleArguments(file, args, options); const command = joinCommand(file, args); const escapedCommand = getEscapedCommand(file, args); logCommand(escapedCommand, parsed.options); validateTimeout(parsed.options); let spawned; try { spawned = import_node_child_process3.default.spawn(parsed.file, parsed.args, parsed.options); } catch (error) { const dummySpawned = new import_node_child_process3.default.ChildProcess(); const errorPromise = Promise.reject(makeError({ error, stdout: "", stderr: "", all: "", command, escapedCommand, parsed, timedOut: false, isCanceled: false, killed: false })); mergePromise(dummySpawned, errorPromise); return dummySpawned; } const spawnedPromise = getSpawnedPromise(spawned); const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); const processDone = setExitHandler(spawned, parsed.options, timedPromise); const context = { isCanceled: false }; spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); spawned.cancel = spawnedCancel.bind(null, spawned, context); const handlePromise = async () => { const [{ error, exitCode, signal, timedOut }, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); const stdout = handleOutput(parsed.options, stdoutResult); const stderr = handleOutput(parsed.options, stderrResult); const all = handleOutput(parsed.options, allResult); if (error || exitCode !== 0 || signal !== null) { const returnedError = makeError({ error, exitCode, signal, stdout, stderr, all, command, escapedCommand, parsed, timedOut, isCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false), killed: spawned.killed }); if (!parsed.options.reject) { return returnedError; } throw returnedError; } return { command, escapedCommand, exitCode: 0, stdout, stderr, all, failed: false, timedOut: false, isCanceled: false, killed: false }; }; const handlePromiseOnce = onetime_default(handlePromise); handleInput(spawned, parsed.options); spawned.all = makeAllStream(spawned, parsed.options); addPipeMethods(spawned); mergePromise(spawned, handlePromiseOnce); return spawned; } function execaSync(file, args, options) { const parsed = handleArguments(file, args, options); const command = joinCommand(file, args); const escapedCommand = getEscapedCommand(file, args); logCommand(escapedCommand, parsed.options); const input = handleInputSync(parsed.options); let result; try { result = import_node_child_process3.default.spawnSync(parsed.file, parsed.args, { ...parsed.options, input }); } catch (error) { throw makeError({ error, stdout: "", stderr: "", all: "", command, escapedCommand, parsed, timedOut: false, isCanceled: false, killed: false }); } const stdout = handleOutput(parsed.options, result.stdout, result.error); const stderr = handleOutput(parsed.options, result.stderr, result.error); if (result.error || result.status !== 0 || result.signal !== null) { const error = makeError({ stdout, stderr, error: result.error, signal: result.signal, exitCode: result.status, command, escapedCommand, parsed, timedOut: result.error && result.error.code === "ETIMEDOUT", isCanceled: false, killed: result.signal !== null }); if (!parsed.options.reject) { return error; } throw error; } return { command, escapedCommand, exitCode: 0, stdout, stderr, failed: false, timedOut: false, isCanceled: false, killed: false }; } var normalizeScriptStdin = ({ input, inputFile, stdio }) => input === void 0 && inputFile === void 0 && stdio === void 0 ? { stdin: "inherit" } : {}; var normalizeScriptOptions = (options = {}) => ({ preferLocal: true, ...normalizeScriptStdin(options), ...options }); function create$(options) { function $2(templatesOrOptions, ...expressions) { if (!Array.isArray(templatesOrOptions)) { return create$({ ...options, ...templatesOrOptions }); } const [file, ...args] = parseTemplates(templatesOrOptions, expressions); return execa2(file, args, normalizeScriptOptions(options)); } $2.sync = (templates, ...expressions) => { if (!Array.isArray(templates)) { throw new TypeError("Please use $(options).sync`command` instead of $.sync(options)`command`."); } const [file, ...args] = parseTemplates(templates, expressions); return execaSync(file, args, normalizeScriptOptions(options)); }; return $2; } var $ = create$(); // node_modules/default-browser/windows.js var windowsBrowserProgIds = { AppXq0fevzme2pys62n3e0fbqa7peapykr8v: { name: "Edge", id: "com.microsoft.edge.old" }, MSEdgeDHTML: { name: "Edge", id: "com.microsoft.edge" }, // On macOS, it's "com.microsoft.edgemac" MSEdgeHTM: { name: "Edge", id: "com.microsoft.edge" }, // Newer Edge/Win10 releases "IE.HTTP": { name: "Internet Explorer", id: "com.microsoft.ie" }, FirefoxURL: { name: "Firefox", id: "org.mozilla.firefox" }, ChromeHTML: { name: "Chrome", id: "com.google.chrome" } }; var UnknownBrowserError = class extends Error { }; async function defaultBrowser(_execa = execa2) { const result = await _execa("reg", [ "QUERY", " HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice", "/v", "ProgId" ]); const match = new RegExp("ProgId\\s*REG_SZ\\s*(?\\S+)").exec(result.stdout); if (!match) { throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(result.stdout)}`); } const { id } = match.groups; const browser = windowsBrowserProgIds[id]; if (!browser) { throw new UnknownBrowserError(`Unknown browser ID: ${id}`); } return browser; } // node_modules/default-browser/index.js async function defaultBrowser2() { if (import_node_process5.default.platform === "linux") { const { stdout } = await execa2("xdg-mime", ["query", "default", "x-scheme-handler/http"]); const name = titleize(stdout.trim().replace(/.desktop$/, "").replace("-", " ")); return { name, id: stdout }; } if (import_node_process5.default.platform === "darwin") { const id = await defaultBrowserId(); const name = await bundleName(id); return { name, id }; } if (import_node_process5.default.platform === "win32") { return defaultBrowser(); } throw new Error("Only macOS, Linux, and Windows are supported"); } // node_modules/is-inside-container/index.js var import_node_fs4 = __toESM(require("fs"), 1); // node_modules/is-docker/index.js var import_node_fs3 = __toESM(require("fs"), 1); var isDockerCached; function hasDockerEnv() { try { import_node_fs3.default.statSync("/.dockerenv"); return true; } catch { return false; } } function hasDockerCGroup() { try { return import_node_fs3.default.readFileSync("/proc/self/cgroup", "utf8").includes("docker"); } catch { return false; } } function isDocker() { if (isDockerCached === void 0) { isDockerCached = hasDockerEnv() || hasDockerCGroup(); } return isDockerCached; } // node_modules/is-inside-container/index.js var cachedResult; var hasContainerEnv = () => { try { import_node_fs4.default.statSync("/run/.containerenv"); return true; } catch { return false; } }; function isInsideContainer() { if (cachedResult === void 0) { cachedResult = hasContainerEnv() || isDocker(); } return cachedResult; } // node_modules/open/index.js var import_meta = {}; var __dirname = import_node_path3.default.dirname((0, import_node_url2.fileURLToPath)(new (require("url").URL)("file:" + __filename).href)); var localXdgOpenPath = import_node_path3.default.join(__dirname, "xdg-open"); var { platform, arch } = import_node_process6.default; var getWslDrivesMountPoint = /* @__PURE__ */ (() => { const defaultMountPoint = "/mnt/"; let mountPoint; return async function() { if (mountPoint) { return mountPoint; } const configFilePath = "/etc/wsl.conf"; let isConfigFileExists = false; try { await import_promises.default.access(configFilePath, import_node_fs5.constants.F_OK); isConfigFileExists = true; } catch { } if (!isConfigFileExists) { return defaultMountPoint; } const configContent = await import_promises.default.readFile(configFilePath, { encoding: "utf8" }); const configMountPoint = new RegExp("(?.*)", "g").exec(configContent); if (!configMountPoint) { return defaultMountPoint; } mountPoint = configMountPoint.groups.mountPoint.trim(); mountPoint = mountPoint.endsWith("/") ? mountPoint : `${mountPoint}/`; return mountPoint; }; })(); var pTryEach = async (array, mapper) => { let latestError; for (const item of array) { try { return await mapper(item); } catch (error) { latestError = error; } } throw latestError; }; var baseOpen = async (options) => { var _a, _b; options = { wait: false, background: false, newInstance: false, allowNonzeroExitCode: false, ...options }; if (Array.isArray(options.app)) { return pTryEach(options.app, (singleApp) => baseOpen({ ...options, app: singleApp })); } let { name: app, arguments: appArguments = [] } = (_a = options.app) != null ? _a : {}; appArguments = [...appArguments]; if (Array.isArray(app)) { return pTryEach(app, (appName) => baseOpen({ ...options, app: { name: appName, arguments: appArguments } })); } if (app === "browser" || app === "browserPrivate") { const ids = { "com.google.chrome": "chrome", "google-chrome.desktop": "chrome", "org.mozilla.firefox": "firefox", "firefox.desktop": "firefox", "com.microsoft.msedge": "edge", "com.microsoft.edge": "edge", "microsoft-edge.desktop": "edge" }; const flags = { chrome: "--incognito", firefox: "--private-window", edge: "--inPrivate" }; const browser = await defaultBrowser2(); if (browser.id in ids) { const browserName = ids[browser.id]; if (app === "browserPrivate") { appArguments.push(flags[browserName]); } return baseOpen({ ...options, app: { name: apps[browserName], arguments: appArguments } }); } throw new Error(`${browser.name} is not supported as a default browser`); } let command; const cliArguments = []; const childProcessOptions = {}; if (platform === "darwin") { command = "open"; if (options.wait) { cliArguments.push("--wait-apps"); } if (options.background) { cliArguments.push("--background"); } if (options.newInstance) { cliArguments.push("--new"); } if (app) { cliArguments.push("-a", app); } } else if (platform === "win32" || import_is_wsl.default && !isInsideContainer() && !app) { const mountPoint = await getWslDrivesMountPoint(); command = import_is_wsl.default ? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` : `${import_node_process6.default.env.SYSTEMROOT}\\System32\\WindowsPowerShell\\v1.0\\powershell`; cliArguments.push( "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-EncodedCommand" ); if (!import_is_wsl.default) { childProcessOptions.windowsVerbatimArguments = true; } const encodedArguments = ["Start"]; if (options.wait) { encodedArguments.push("-Wait"); } if (app) { encodedArguments.push(`"\`"${app}\`""`); if (options.target) { appArguments.push(options.target); } } else if (options.target) { encodedArguments.push(`"${options.target}"`); } if (appArguments.length > 0) { appArguments = appArguments.map((arg) => `"\`"${arg}\`""`); encodedArguments.push("-ArgumentList", appArguments.join(",")); } options.target = import_node_buffer3.Buffer.from(encodedArguments.join(" "), "utf16le").toString("base64"); } else { if (app) { command = app; } else { const isBundled = !__dirname || __dirname === "/"; let exeLocalXdgOpen = false; try { await import_promises.default.access(localXdgOpenPath, import_node_fs5.constants.X_OK); exeLocalXdgOpen = true; } catch { } const useSystemXdgOpen = (_b = import_node_process6.default.versions.electron) != null ? _b : platform === "android" || isBundled || !exeLocalXdgOpen; command = useSystemXdgOpen ? "xdg-open" : localXdgOpenPath; } if (appArguments.length > 0) { cliArguments.push(...appArguments); } if (!options.wait) { childProcessOptions.stdio = "ignore"; childProcessOptions.detached = true; } } if (options.target) { cliArguments.push(options.target); } if (platform === "darwin" && appArguments.length > 0) { cliArguments.push("--args", ...appArguments); } const subprocess = import_node_child_process4.default.spawn(command, cliArguments, childProcessOptions); if (options.wait) { return new Promise((resolve, reject) => { subprocess.once("error", reject); subprocess.once("close", (exitCode) => { if (!options.allowNonzeroExitCode && exitCode > 0) { reject(new Error(`Exited with code ${exitCode}`)); return; } resolve(subprocess); }); }); } subprocess.unref(); return subprocess; }; var open = (target, options) => { if (typeof target !== "string") { throw new TypeError("Expected a `target`"); } return baseOpen({ ...options, target }); }; function detectArchBinary(binary) { if (typeof binary === "string" || Array.isArray(binary)) { return binary; } const { [arch]: archBinary } = binary; if (!archBinary) { throw new Error(`${arch} is not supported`); } return archBinary; } function detectPlatformBinary({ [platform]: platformBinary }, { wsl }) { if (wsl && import_is_wsl.default) { return detectArchBinary(wsl); } if (!platformBinary) { throw new Error(`${platform} is not supported`); } return detectArchBinary(platformBinary); } var apps = {}; defineLazyProperty(apps, "chrome", () => detectPlatformBinary({ darwin: "google chrome", win32: "chrome", linux: ["google-chrome", "google-chrome-stable", "chromium"] }, { wsl: { ia32: "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe", x64: ["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"] } })); defineLazyProperty(apps, "firefox", () => detectPlatformBinary({ darwin: "firefox", win32: "C:\\Program Files\\Mozilla Firefox\\firefox.exe", linux: "firefox" }, { wsl: "/mnt/c/Program Files/Mozilla Firefox/firefox.exe" })); defineLazyProperty(apps, "edge", () => detectPlatformBinary({ darwin: "microsoft edge", win32: "msedge", linux: ["microsoft-edge", "microsoft-edge-dev"] }, { wsl: "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" })); defineLazyProperty(apps, "browser", () => "browser"); defineLazyProperty(apps, "browserPrivate", () => "browserPrivate"); var open_default = open; // build/dev-server/open-in-browser.js async function openInBrowser(opts) { await open_default(opts.url); } // build/dev-server/server-context.js var import_graceful_fs = __toESM(require("../sys/node/graceful-fs.js")); var import_path4 = __toESM(require("path")); var import_util = __toESM(require("util")); function createServerContext(sys, sendMsg, devServerConfig, buildResultsResolves, compilerRequestResolves) { const logRequest = (req, status) => { if (devServerConfig) { sendMsg({ requestLog: { method: req.method || "?", url: req.pathname || "?", status } }); } }; const serve500 = (req, res, error, xSource) => { try { res.writeHead(500, responseHeaders({ "content-type": "text/plain; charset=utf-8", "x-source": xSource })); res.write(import_util.default.inspect(error)); res.end(); logRequest(req, 500); } catch (e) { sendMsg({ error: { message: "serve500: " + e } }); } }; const serve404 = (req, res, xSource, content = null) => { try { if (req.pathname === "/favicon.ico") { const defaultFavicon = import_path4.default.join(devServerConfig.devServerDir, "static", "favicon.ico"); res.writeHead(200, responseHeaders({ "content-type": "image/x-icon", "x-source": `favicon: ${xSource}` })); const rs = import_graceful_fs.default.createReadStream(defaultFavicon); rs.on("error", (err2) => { res.writeHead(404, responseHeaders({ "content-type": "text/plain; charset=utf-8", "x-source": `createReadStream error: ${err2}, ${xSource}` })); res.write(import_util.default.inspect(err2)); res.end(); }); rs.pipe(res); return; } if (content == null) { content = ["404 File Not Found", "Url: " + req.pathname, "File: " + req.filePath].join("\n"); } res.writeHead(404, responseHeaders({ "content-type": "text/plain; charset=utf-8", "x-source": xSource })); res.write(content); res.end(); logRequest(req, 400); } catch (e) { serve500(req, res, e, xSource); } }; const serve302 = (req, res, pathname = null) => { logRequest(req, 302); res.writeHead(302, { location: pathname || devServerConfig.basePath || "/" }); res.end(); }; const getBuildResults = () => new Promise((resolve, reject) => { if (serverCtx.isServerListening) { buildResultsResolves.push({ resolve, reject }); sendMsg({ requestBuildResults: true }); } else { reject("dev server closed"); } }); const getCompilerRequest = (compilerRequestPath) => new Promise((resolve, reject) => { if (serverCtx.isServerListening) { compilerRequestResolves.push({ path: compilerRequestPath, resolve, reject }); sendMsg({ compilerRequestPath }); } else { reject("dev server closed"); } }); const serverCtx = { connectorHtml: null, dirTemplate: null, getBuildResults, getCompilerRequest, isServerListening: false, logRequest, prerenderConfig: null, serve302, serve404, serve500, sys }; return serverCtx; } // build/dev-server/server-http.js var http = __toESM(require("http")); var https = __toESM(require("https")); var net = __toESM(require("net")); // build/dev-server/request-handler.js var import_path9 = __toESM(require("path")); // build/dev-server/serve-dev-client.js var import_path6 = __toESM(require("path")); // build/dev-server/open-in-editor-api.js var openInEditorApi = { // mocked fns so unit tests work too configure(_opts, _cb) { return null; }, editors: {} }; var open_in_editor_api_default = openInEditorApi; // build/dev-server/open-in-editor.js async function serveOpenInEditor(serverCtx, req, res) { let status = 200; const data = {}; try { const editors2 = await getEditors(); if (editors2.length > 0) { await parseData(editors2, serverCtx.sys, req, data); await openDataInEditor(data); } else { data.error = `no editors available`; } } catch (e) { data.error = e + ""; status = 500; } serverCtx.logRequest(req, status); res.writeHead(status, responseHeaders({ "content-type": "application/json; charset=utf-8" })); res.write(JSON.stringify(data, null, 2)); res.end(); } async function parseData(editors2, sys, req, data) { const qs = req.searchParams; if (!qs.has("file")) { data.error = `missing file`; return; } data.file = qs.get("file"); if (qs.has("line") && !isNaN(qs.get("line"))) { data.line = parseInt(qs.get("line"), 10); } if (typeof data.line !== "number" || data.line < 1) { data.line = 1; } if (qs.has("column") && !isNaN(qs.get("column"))) { data.column = parseInt(qs.get("column"), 10); } if (typeof data.column !== "number" || data.column < 1) { data.column = 1; } let editor = qs.get("editor"); if (typeof editor === "string") { editor = editor.trim().toLowerCase(); if (editors2.some((e) => e.id === editor)) { data.editor = editor; } else { data.error = `invalid editor: ${editor}`; return; } } else { data.editor = editors2[0].id; } const stat = await sys.stat(data.file); data.exists = stat.isFile; } async function openDataInEditor(data) { if (!data.exists || data.error) { return; } try { const opts = { editor: data.editor }; const editor = open_in_editor_api_default.configure(opts, (err2) => data.error = err2 + ""); if (data.error) { return; } data.open = `${data.file}:${data.line}:${data.column}`; await editor.open(data.open); } catch (e) { data.error = e + ""; } } var editors = null; function getEditors() { if (!editors) { editors = new Promise(async (resolve) => { const editors2 = []; try { await Promise.all(Object.keys(open_in_editor_api_default.editors).map(async (editorId) => { const isSupported = await isEditorSupported(editorId); editors2.push({ id: editorId, priority: EDITOR_PRIORITY[editorId], supported: isSupported }); })); } catch (e) { } resolve(editors2.filter((e) => e.supported).sort((a, b) => { if (a.priority < b.priority) return -1; if (a.priority > b.priority) return 1; return 0; }).map((e) => { return { id: e.id, name: EDITORS[e.id] }; })); }); } return editors; } async function isEditorSupported(editorId) { let isSupported = false; try { await open_in_editor_api_default.editors[editorId].detect(); isSupported = true; } catch (e) { } return isSupported; } var EDITORS = { atom: "Atom", code: "Code", emacs: "Emacs", idea14ce: "IDEA 14 Community Edition", phpstorm: "PhpStorm", sublime: "Sublime", webstorm: "WebStorm", vim: "Vim", visualstudio: "Visual Studio" }; var EDITOR_PRIORITY = { code: 1, atom: 2, sublime: 3, visualstudio: 4, idea14ce: 5, webstorm: 6, phpstorm: 7, vim: 8, emacs: 9 }; // build/dev-server/serve-file.js var import_buffer = require("buffer"); var import_graceful_fs2 = __toESM(require("../sys/node/graceful-fs.js")); var import_path5 = __toESM(require("path")); var zlib = __toESM(require("zlib")); async function serveFile(devServerConfig, serverCtx, req, res) { try { if (isSimpleText(req.filePath)) { let content = await serverCtx.sys.readFile(req.filePath, "utf8"); if (devServerConfig.websocket && isHtmlFile(req.filePath) && !isDevServerClient(req.pathname)) { content = appendDevServerClientScript(devServerConfig, req, content); } else if (isCssFile(req.filePath)) { content = updateStyleUrls(req.url, content); } if (shouldCompress(devServerConfig, req)) { res.writeHead(200, responseHeaders({ "content-type": getContentType(req.filePath) + "; charset=utf-8", "content-encoding": "gzip", vary: "Accept-Encoding" })); zlib.gzip(content, { level: 9 }, (_, data) => { res.end(data); }); } else { res.writeHead(200, responseHeaders({ "content-type": getContentType(req.filePath) + "; charset=utf-8", "content-length": import_buffer.Buffer.byteLength(content, "utf8") })); res.write(content); res.end(); } } else { res.writeHead(200, responseHeaders({ "content-type": getContentType(req.filePath), "content-length": req.stats.size })); import_graceful_fs2.default.createReadStream(req.filePath).pipe(res); } serverCtx.logRequest(req, 200); } catch (e) { serverCtx.serve500(req, res, e, "serveFile"); } } function updateStyleUrls(url, oldCss) { const versionId = url.searchParams.get("s-hmr"); const hmrUrls = url.searchParams.get("s-hmr-urls"); if (versionId && hmrUrls) { hmrUrls.split(",").forEach((hmrUrl) => { urlVersionIds.set(hmrUrl, versionId); }); } const reg = /url\((['"]?)(.*)\1\)/gi; let result; let newCss = oldCss; while ((result = reg.exec(oldCss)) !== null) { const oldUrl = result[2]; const parsedUrl = new URL(oldUrl, url); const fileName = import_path5.default.basename(parsedUrl.pathname); const versionId2 = urlVersionIds.get(fileName); if (!versionId2) { continue; } parsedUrl.searchParams.set("s-hmr", versionId2); newCss = newCss.replace(oldUrl, parsedUrl.pathname); } return newCss; } var urlVersionIds = /* @__PURE__ */ new Map(); function appendDevServerClientScript(devServerConfig, req, content) { var _a, _b, _c; const devServerClientUrl = getDevServerClientUrl(devServerConfig, (_b = (_a = req.headers) === null || _a === void 0 ? void 0 : _a["x-forwarded-host"]) !== null && _b !== void 0 ? _b : req.host, (_c = req.headers) === null || _c === void 0 ? void 0 : _c["x-forwarded-proto"]); const iframe = ``; return appendDevServerClientIframe(content, iframe); } function appendDevServerClientIframe(content, iframe) { if (content.includes("")) { return content.replace("", `${iframe}`); } if (content.includes("")) { return content.replace("", `${iframe}`); } return `${content}${iframe}`; } // build/dev-server/serve-dev-client.js async function serveDevClient(devServerConfig, serverCtx, req, res) { try { if (isOpenInEditor(req.pathname)) { return serveOpenInEditor(serverCtx, req, res); } if (isDevServerClient(req.pathname)) { return serveDevClientScript(devServerConfig, serverCtx, req, res); } if (isInitialDevServerLoad(req.pathname)) { req.filePath = import_path6.default.join(devServerConfig.devServerDir, "templates", "initial-load.html"); } else { const staticFile = req.pathname.replace(DEV_SERVER_URL + "/", ""); req.filePath = import_path6.default.join(devServerConfig.devServerDir, "static", staticFile); } try { req.stats = await serverCtx.sys.stat(req.filePath); if (req.stats.isFile) { return serveFile(devServerConfig, serverCtx, req, res); } return serverCtx.serve404(req, res, "serveDevClient not file"); } catch (e) { return serverCtx.serve404(req, res, `serveDevClient stats error ${e}`); } } catch (e) { return serverCtx.serve500(req, res, e, "serveDevClient"); } } async function serveDevClientScript(devServerConfig, serverCtx, req, res) { try { if (serverCtx.connectorHtml == null) { const filePath2 = import_path6.default.join(devServerConfig.devServerDir, "connector.html"); serverCtx.connectorHtml = serverCtx.sys.readFileSync(filePath2, "utf8"); if (typeof serverCtx.connectorHtml !== "string") { return serverCtx.serve404(req, res, `serveDevClientScript`); } const devClientConfig = { basePath: devServerConfig.basePath, editors: await getEditors(), reloadStrategy: devServerConfig.reloadStrategy }; serverCtx.connectorHtml = serverCtx.connectorHtml.replace("window.__DEV_CLIENT_CONFIG__", JSON.stringify(devClientConfig)); } res.writeHead(200, responseHeaders({ "content-type": "text/html; charset=utf-8" })); res.write(serverCtx.connectorHtml); res.end(); } catch (e) { return serverCtx.serve500(req, res, e, `serveDevClientScript`); } } // build/dev-server/serve-dev-node-module.js async function serveDevNodeModule(serverCtx, req, res) { try { const results = await serverCtx.getCompilerRequest(req.pathname); const headers = { "content-type": "application/javascript; charset=utf-8", "content-length": Buffer.byteLength(results.content, "utf8"), "x-dev-node-module-id": results.nodeModuleId, "x-dev-node-module-version": results.nodeModuleVersion, "x-dev-node-module-resolved-path": results.nodeResolvedPath, "x-dev-node-module-cache-path": results.cachePath, "x-dev-node-module-cache-hit": results.cacheHit }; res.writeHead(results.status, responseHeaders(headers)); res.write(results.content); res.end(); } catch (e) { serverCtx.serve500(req, res, e, `serveDevNodeModule`); } } // build/dev-server/serve-directory-index.js var import_path7 = __toESM(require("path")); async function serveDirectoryIndex(devServerConfig, serverCtx, req, res) { const indexFilePath = import_path7.default.join(req.filePath, "index.html"); req.stats = await serverCtx.sys.stat(indexFilePath); if (req.stats.isFile) { req.filePath = indexFilePath; return serveFile(devServerConfig, serverCtx, req, res); } if (!req.pathname.endsWith("/")) { return serverCtx.serve302(req, res, req.pathname + "/"); } try { const dirFilePaths = await serverCtx.sys.readDir(req.filePath); try { if (serverCtx.dirTemplate == null) { const dirTemplatePath = import_path7.default.join(devServerConfig.devServerDir, "templates", "directory-index.html"); serverCtx.dirTemplate = serverCtx.sys.readFileSync(dirTemplatePath); } const files = await getFiles(serverCtx.sys, req.url, dirFilePaths); const templateHtml = serverCtx.dirTemplate.replace("{{title}}", getTitle(req.pathname)).replace("{{nav}}", getName(req.pathname)).replace("{{files}}", files); serverCtx.logRequest(req, 200); res.writeHead(200, responseHeaders({ "content-type": "text/html; charset=utf-8", "x-directory-index": req.pathname })); res.write(templateHtml); res.end(); } catch (e) { return serverCtx.serve500(req, res, e, "serveDirectoryIndex"); } } catch (e) { return serverCtx.serve404(req, res, "serveDirectoryIndex"); } } async function getFiles(sys, baseUrl, dirItemNames) { const items = await getDirectoryItems(sys, baseUrl, dirItemNames); if (baseUrl.pathname !== "/") { items.unshift({ isDirectory: true, pathname: "../", name: ".." }); } return items.map((item) => { return `
  • ${item.name}
  • `; }).join(""); } async function getDirectoryItems(sys, baseUrl, dirFilePaths) { const items = await Promise.all(dirFilePaths.map(async (dirFilePath) => { const fileName = import_path7.default.basename(dirFilePath); const url = new URL(fileName, baseUrl); const stats = await sys.stat(dirFilePath); const item = { name: fileName, pathname: url.pathname, isDirectory: stats.isDirectory }; return item; })); return items; } function getTitle(pathName) { return pathName; } function getName(pathName) { const dirs = pathName.split("/"); dirs.pop(); let url = ""; return dirs.map((dir, index) => { url += dir + "/"; const text = index === 0 ? `~` : dir; return `${text}`; }).join("/") + "/"; } // build/dev-server/ssr-request.js var import_path8 = __toESM(require("path")); async function ssrPageRequest(devServerConfig, serverCtx, req, res) { try { let status = 500; let content = ""; const { hydrateApp, srcIndexHtml, diagnostics } = await setupHydrateApp(devServerConfig, serverCtx); if (!diagnostics.some((diagnostic) => diagnostic.level === "error")) { try { const opts = getSsrHydrateOptions(devServerConfig, serverCtx, req.url); const ssrResults = await hydrateApp.renderToString(srcIndexHtml, opts); diagnostics.push(...ssrResults.diagnostics); status = ssrResults.httpStatus; content = ssrResults.html; } catch (e) { catchError(diagnostics, e); } } if (diagnostics.some((diagnostic) => diagnostic.level === "error")) { content = getSsrErrorContent(diagnostics); status = 500; } if (devServerConfig.websocket) { content = appendDevServerClientScript(devServerConfig, req, content); } serverCtx.logRequest(req, status); res.writeHead(status, responseHeaders({ "content-type": "text/html; charset=utf-8", "content-length": Buffer.byteLength(content, "utf8") })); res.write(content); res.end(); } catch (e) { serverCtx.serve500(req, res, e, `ssrPageRequest`); } } async function ssrStaticDataRequest(devServerConfig, serverCtx, req, res) { try { const data = {}; let httpCache = false; const { hydrateApp, srcIndexHtml, diagnostics } = await setupHydrateApp(devServerConfig, serverCtx); if (!diagnostics.some((diagnostic) => diagnostic.level === "error")) { try { const { ssrPath, hasQueryString } = getSsrStaticDataPath(req); const url = new URL(ssrPath, req.url); const opts = getSsrHydrateOptions(devServerConfig, serverCtx, url); const ssrResults = await hydrateApp.renderToString(srcIndexHtml, opts); diagnostics.push(...ssrResults.diagnostics); ssrResults.staticData.forEach((s) => { if (s.type === "application/json") { data[s.id] = JSON.parse(s.content); } else { data[s.id] = s.content; } }); data.components = ssrResults.components.map((c) => c.tag).sort(); httpCache = hasQueryString; } catch (e) { catchError(diagnostics, e); } } if (diagnostics.length > 0) { data.diagnostics = diagnostics; } const status = diagnostics.some((diagnostic) => diagnostic.level === "error") ? 500 : 200; const content = JSON.stringify(data); serverCtx.logRequest(req, status); res.writeHead(status, responseHeaders({ "content-type": "application/json; charset=utf-8", "content-length": Buffer.byteLength(content, "utf8") }, httpCache && status === 200)); res.write(content); res.end(); } catch (e) { serverCtx.serve500(req, res, e, `ssrStaticDataRequest`); } } async function setupHydrateApp(devServerConfig, serverCtx) { let srcIndexHtml = null; let hydrateApp = null; const buildResults = await serverCtx.getBuildResults(); const diagnostics = []; if (serverCtx.prerenderConfig == null && isString(devServerConfig.prerenderConfig)) { const compilerPath = import_path8.default.join(devServerConfig.devServerDir, "..", "compiler", "stencil.js"); const compiler = require(compilerPath); const prerenderConfigResults = compiler.nodeRequire(devServerConfig.prerenderConfig); diagnostics.push(...prerenderConfigResults.diagnostics); if (prerenderConfigResults.module && prerenderConfigResults.module.config) { serverCtx.prerenderConfig = prerenderConfigResults.module.config; } } if (!isString(buildResults.hydrateAppFilePath)) { diagnostics.push({ messageText: `Missing hydrateAppFilePath`, level: `error`, type: `ssr`, lines: [] }); } else if (!isString(devServerConfig.srcIndexHtml)) { diagnostics.push({ messageText: `Missing srcIndexHtml`, level: `error`, type: `ssr`, lines: [] }); } else { srcIndexHtml = await serverCtx.sys.readFile(devServerConfig.srcIndexHtml); if (!isString(srcIndexHtml)) { diagnostics.push({ level: `error`, lines: [], messageText: `Unable to load src index html: ${devServerConfig.srcIndexHtml}`, type: `ssr` }); } else { const hydrateAppFilePath = import_path8.default.resolve(buildResults.hydrateAppFilePath); require.cache = {}; const Module = require("module"); Module._cache[hydrateAppFilePath] = void 0; hydrateApp = require(hydrateAppFilePath); } } return { hydrateApp, srcIndexHtml, diagnostics }; } function getSsrHydrateOptions(devServerConfig, serverCtx, url) { const opts = { url: url.href, addModulePreloads: false, approximateLineWidth: 120, inlineExternalStyleSheets: false, minifyScriptElements: false, minifyStyleElements: false, removeAttributeQuotes: false, removeBooleanAttributeQuotes: false, removeEmptyAttributes: false, removeHtmlComments: false, prettyHtml: true }; const prerenderConfig = serverCtx === null || serverCtx === void 0 ? void 0 : serverCtx.prerenderConfig; if (isFunction(prerenderConfig === null || prerenderConfig === void 0 ? void 0 : prerenderConfig.hydrateOptions)) { const userOpts = prerenderConfig.hydrateOptions(url); if (userOpts) { Object.assign(opts, userOpts); } } if (isFunction(serverCtx.sys.applyPrerenderGlobalPatch)) { const orgBeforeHydrate = opts.beforeHydrate; opts.beforeHydrate = (document2) => { const devServerBaseUrl = new URL(devServerConfig.browserUrl); const devServerHostUrl = devServerBaseUrl.origin; serverCtx.sys.applyPrerenderGlobalPatch({ devServerHostUrl, window: document2.defaultView }); if (typeof orgBeforeHydrate === "function") { return orgBeforeHydrate(document2); } }; } return opts; } function getSsrErrorContent(diagnostics) { return ` SSR Error

    SSR Dev Error

    ${diagnostics.map((diagnostic) => `

    ${diagnostic.messageText}

    `)} `; } // build/dev-server/request-handler.js function createRequestHandler(devServerConfig, serverCtx) { let userRequestHandler = null; if (typeof devServerConfig.requestListenerPath === "string") { userRequestHandler = require(devServerConfig.requestListenerPath); } return async function(incomingReq, res) { async function defaultHandler() { try { const req = normalizeHttpRequest(devServerConfig, incomingReq); if (!req.url) { return serverCtx.serve302(req, res); } if (devServerConfig.pingRoute !== null && req.pathname === devServerConfig.pingRoute) { return serverCtx.getBuildResults().then((result) => { if (!result.hasSuccessfulBuild) { return serverCtx.serve500(incomingReq, res, "Build not successful", "build error"); } res.writeHead(200, "OK"); res.write("OK"); res.end(); }).catch(() => serverCtx.serve500(incomingReq, res, "Error getting build results", "ping error")); } if (isDevClient(req.pathname) && devServerConfig.websocket) { return serveDevClient(devServerConfig, serverCtx, req, res); } if (isDevModule(req.pathname)) { return serveDevNodeModule(serverCtx, req, res); } if (!isValidUrlBasePath(devServerConfig.basePath, req.url)) { return serverCtx.serve404(req, res, `invalid basePath`, `404 File Not Found, base path: ${devServerConfig.basePath}`); } if (devServerConfig.ssr) { if (isExtensionLessPath(req.url.pathname)) { return ssrPageRequest(devServerConfig, serverCtx, req, res); } if (isSsrStaticDataPath(req.url.pathname)) { return ssrStaticDataRequest(devServerConfig, serverCtx, req, res); } } req.stats = await serverCtx.sys.stat(req.filePath); if (req.stats.isFile) { return serveFile(devServerConfig, serverCtx, req, res); } if (req.stats.isDirectory) { return serveDirectoryIndex(devServerConfig, serverCtx, req, res); } const xSource = ["notfound"]; const validHistoryApi = isValidHistoryApi(devServerConfig, req); xSource.push(`validHistoryApi: ${validHistoryApi}`); if (validHistoryApi) { try { const indexFilePath = import_path9.default.join(devServerConfig.root, devServerConfig.historyApiFallback.index); xSource.push(`indexFilePath: ${indexFilePath}`); req.stats = await serverCtx.sys.stat(indexFilePath); if (req.stats.isFile) { req.filePath = indexFilePath; return serveFile(devServerConfig, serverCtx, req, res); } } catch (e) { xSource.push(`notfound error: ${e}`); } } return serverCtx.serve404(req, res, xSource.join(", ")); } catch (e) { return serverCtx.serve500(incomingReq, res, e, `not found error`); } } if (typeof userRequestHandler === "function") { await userRequestHandler(incomingReq, res, defaultHandler); } else { await defaultHandler(); } }; } function isValidUrlBasePath(basePath, url) { let pathname = url.pathname; if (!pathname.endsWith("/")) { pathname += "/"; } if (!basePath.endsWith("/")) { basePath += "/"; } return pathname.startsWith(basePath); } function normalizeHttpRequest(devServerConfig, incomingReq) { const req = { method: (incomingReq.method || "GET").toUpperCase(), headers: incomingReq.headers, acceptHeader: incomingReq.headers && typeof incomingReq.headers.accept === "string" && incomingReq.headers.accept || "", host: incomingReq.headers && typeof incomingReq.headers.host === "string" && incomingReq.headers.host || null, url: null, searchParams: null }; const incomingUrl = (incomingReq.url || "").trim() || null; if (incomingUrl) { if (req.host) { req.url = new URL(incomingReq.url, `http://${req.host}`); } else { req.url = new URL(incomingReq.url, `http://dev.stenciljs.com`); } req.searchParams = req.url.searchParams; } if (req.url) { const parts = req.url.pathname.replace(/\\/g, "/").split("/"); req.pathname = parts.map((part) => decodeURIComponent(part)).join("/"); if (req.pathname.length > 0 && !isDevClient(req.pathname)) { req.pathname = "/" + req.pathname.substring(devServerConfig.basePath.length); } req.filePath = normalizePath(import_path9.default.normalize(import_path9.default.join(devServerConfig.root, import_path9.default.relative("/", req.pathname)))); } return req; } function isValidHistoryApi(devServerConfig, req) { if (!devServerConfig.historyApiFallback) { return false; } if (req.method !== "GET") { return false; } if (!req.acceptHeader.includes("text/html")) { return false; } if (!devServerConfig.historyApiFallback.disableDotRule && req.pathname.includes(".")) { return false; } return true; } // build/dev-server/server-http.js function createHttpServer(devServerConfig, serverCtx) { const reqHandler = createRequestHandler(devServerConfig, serverCtx); const credentials = devServerConfig.https; return credentials ? https.createServer(credentials, reqHandler) : http.createServer(reqHandler); } async function findClosestOpenPort(host, port) { async function t(portToCheck) { const isTaken = await isPortTaken(host, portToCheck); if (!isTaken) { return portToCheck; } return t(portToCheck + 1); } return t(port); } function isPortTaken(host, port) { return new Promise((resolve, reject) => { const tester = net.createServer().once("error", () => { resolve(true); }).once("listening", () => { tester.once("close", () => { resolve(false); }).close(); }).on("error", (err2) => { reject(err2); }).listen(port, host); }); } // node_modules/ws/wrapper.mjs var import_stream2 = __toESM(require_stream2(), 1); var import_receiver = __toESM(require_receiver(), 1); var import_sender = __toESM(require_sender(), 1); var import_websocket = __toESM(require_websocket(), 1); var import_websocket_server = __toESM(require_websocket_server(), 1); // build/dev-server/server-web-socket.js function createWebSocket(httpServer, onMessageFromClient) { const wsConfig = { server: httpServer }; const wsServer = new import_websocket_server.default(wsConfig); function heartbeat() { this.isAlive = true; } wsServer.on("connection", (ws) => { ws.on("message", (data) => { try { onMessageFromClient(JSON.parse(data.toString())); } catch (e) { console.error(e); } }); ws.isAlive = true; ws.on("pong", heartbeat); ws.on("error", console.error); }); const pingInterval = setInterval(() => { wsServer.clients.forEach((ws) => { if (!ws.isAlive) { return ws.close(1e3); } ws.isAlive = false; ws.ping(noop); }); }, 1e4); return { sendToBrowser: (msg) => { if (msg && wsServer && wsServer.clients) { const data = JSON.stringify(msg); wsServer.clients.forEach((ws) => { if (ws.readyState === ws.OPEN) { ws.send(data); } }); } }, close: () => { return new Promise((resolve, reject) => { clearInterval(pingInterval); wsServer.clients.forEach((ws) => { ws.close(1e3); }); wsServer.close((err2) => { if (err2) { reject(err2); } else { resolve(); } }); }); } }; } // build/dev-server/server-process.js function initServerProcess(sendMsg) { let server = null; let webSocket = null; let serverCtx = null; const buildResultsResolves = []; const compilerRequestResolves = []; const startServer = async (msg) => { const devServerConfig = msg.startServer; devServerConfig.port = await findClosestOpenPort(devServerConfig.address, devServerConfig.port); devServerConfig.browserUrl = getBrowserUrl(devServerConfig.protocol, devServerConfig.address, devServerConfig.port, devServerConfig.basePath, "/"); devServerConfig.root = normalizePath(devServerConfig.root); const sys = (0, import_sys_api_node.createNodeSys)({ process }); serverCtx = createServerContext(sys, sendMsg, devServerConfig, buildResultsResolves, compilerRequestResolves); server = createHttpServer(devServerConfig, serverCtx); webSocket = devServerConfig.websocket ? createWebSocket(server, sendMsg) : null; server.listen(devServerConfig.port, devServerConfig.address); serverCtx.isServerListening = true; if (devServerConfig.openBrowser) { const initialLoadUrl = getBrowserUrl(devServerConfig.protocol, devServerConfig.address, devServerConfig.port, devServerConfig.basePath, devServerConfig.initialLoadUrl || DEV_SERVER_INIT_URL); openInBrowser({ url: initialLoadUrl }); } sendMsg({ serverStarted: devServerConfig }); }; const closeServer = () => { const promises = []; buildResultsResolves.forEach((r) => r.reject("dev server closed")); buildResultsResolves.length = 0; compilerRequestResolves.forEach((r) => r.reject("dev server closed")); compilerRequestResolves.length = 0; if (serverCtx) { if (serverCtx.sys) { promises.push(serverCtx.sys.destroy()); } } if (webSocket) { promises.push(webSocket.close()); webSocket = null; } if (server) { promises.push(new Promise((resolve) => { server.close((err2) => { if (err2) { console.error(`close error: ${err2}`); } resolve(); }); })); } Promise.all(promises).finally(() => { sendMsg({ serverClosed: true }); }); }; const receiveMessageFromMain = (msg) => { try { if (msg) { if (msg.startServer) { startServer(msg); } else if (msg.closeServer) { closeServer(); } else if (msg.compilerRequestResults) { for (let i = compilerRequestResolves.length - 1; i >= 0; i--) { const r = compilerRequestResolves[i]; if (r.path === msg.compilerRequestResults.path) { r.resolve(msg.compilerRequestResults); compilerRequestResolves.splice(i, 1); } } } else if (serverCtx) { if (msg.buildResults && !msg.isActivelyBuilding) { buildResultsResolves.forEach((r) => r.resolve(msg.buildResults)); buildResultsResolves.length = 0; } if (webSocket) { webSocket.sendToBrowser(msg); } } } } catch (e) { let stack = null; if (e instanceof Error) { stack = e.stack; } sendMsg({ error: { message: e + "", stack } }); } }; return receiveMessageFromMain; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { initServerProcess });