@nocoo/bat 3.0.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bat.js +700 -490
- package/package.json +1 -1
package/dist/bat.js
CHANGED
|
@@ -19,32 +19,31 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
19
19
|
return cached;
|
|
20
20
|
}
|
|
21
21
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
22
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
const to = isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
23
|
+
if (mod && typeof mod === "object" || typeof mod === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(mod))
|
|
25
|
+
if (!__hasOwnProp.call(to, key))
|
|
26
|
+
__defProp(to, key, {
|
|
27
|
+
get: __accessProp.bind(mod, key),
|
|
28
|
+
enumerable: true
|
|
29
|
+
});
|
|
30
|
+
}
|
|
29
31
|
if (canCache)
|
|
30
32
|
cache.set(mod, to);
|
|
31
33
|
return to;
|
|
32
34
|
};
|
|
33
35
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
set: __exportSetter.bind(all, name)
|
|
45
|
-
});
|
|
36
|
+
var __esm = (fn, res, err) => () => {
|
|
37
|
+
if (fn)
|
|
38
|
+
try {
|
|
39
|
+
res = fn(fn = 0);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
err = [e];
|
|
42
|
+
}
|
|
43
|
+
if (err)
|
|
44
|
+
throw err[0];
|
|
45
|
+
return res;
|
|
46
46
|
};
|
|
47
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
48
47
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
49
48
|
|
|
50
49
|
// ../../node_modules/.bun/citty@0.2.2/node_modules/citty/dist/_chunks/libs/scule.mjs
|
|
@@ -596,7 +595,7 @@ var init_dist = __esm(() => {
|
|
|
596
595
|
});
|
|
597
596
|
|
|
598
597
|
// ../../node_modules/.bun/picocolors@1.1.1/node_modules/picocolors/picocolors.js
|
|
599
|
-
var require_picocolors = __commonJS((exports, module)
|
|
598
|
+
var require_picocolors = __commonJS(function(exports, module) {
|
|
600
599
|
var p = process || {};
|
|
601
600
|
var argv = p.argv || [];
|
|
602
601
|
var env = p.env || {};
|
|
@@ -1499,11 +1498,6 @@ var init_consola_DXBYu_KD = __esm(() => {
|
|
|
1499
1498
|
});
|
|
1500
1499
|
|
|
1501
1500
|
// ../../node_modules/.bun/consola@3.4.2/node_modules/consola/dist/chunks/prompt.mjs
|
|
1502
|
-
var exports_prompt = {};
|
|
1503
|
-
__export(exports_prompt, {
|
|
1504
|
-
prompt: () => prompt,
|
|
1505
|
-
kCancel: () => kCancel
|
|
1506
|
-
});
|
|
1507
1501
|
import g, { stdin, stdout } from "node:process";
|
|
1508
1502
|
import f from "node:readline";
|
|
1509
1503
|
import { WriteStream } from "node:tty";
|
|
@@ -1574,13 +1568,13 @@ function requirePicocolors() {
|
|
|
1574
1568
|
if (hasRequiredPicocolors)
|
|
1575
1569
|
return picocolors.exports;
|
|
1576
1570
|
hasRequiredPicocolors = 1;
|
|
1577
|
-
let p = process || {},
|
|
1578
|
-
let
|
|
1571
|
+
let p = process || {}, argv = p.argv || [], env = p.env || {};
|
|
1572
|
+
let isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || (p.stdout || {}).isTTY && env.TERM !== "dumb" || !!env.CI);
|
|
1579
1573
|
let formatter = (open, close, replace = open) => (input) => {
|
|
1580
1574
|
let string = "" + input, index = string.indexOf(close, open.length);
|
|
1581
|
-
return ~index ? open +
|
|
1575
|
+
return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
|
|
1582
1576
|
};
|
|
1583
|
-
let
|
|
1577
|
+
let replaceClose = (string, close, replace, index) => {
|
|
1584
1578
|
let result = "", cursor = 0;
|
|
1585
1579
|
do {
|
|
1586
1580
|
result += string.substring(cursor, index) + replace;
|
|
@@ -1589,7 +1583,7 @@ function requirePicocolors() {
|
|
|
1589
1583
|
} while (~index);
|
|
1590
1584
|
return result + string.substring(cursor);
|
|
1591
1585
|
};
|
|
1592
|
-
let
|
|
1586
|
+
let createColors = (enabled = isColorSupported) => {
|
|
1593
1587
|
let f2 = enabled ? formatter : () => String;
|
|
1594
1588
|
return {
|
|
1595
1589
|
isColorSupported: enabled,
|
|
@@ -1636,8 +1630,8 @@ function requirePicocolors() {
|
|
|
1636
1630
|
bgWhiteBright: f2("\x1B[107m", "\x1B[49m")
|
|
1637
1631
|
};
|
|
1638
1632
|
};
|
|
1639
|
-
picocolors.exports =
|
|
1640
|
-
picocolors.exports.createColors =
|
|
1633
|
+
picocolors.exports = createColors();
|
|
1634
|
+
picocolors.exports.createColors = createColors;
|
|
1641
1635
|
return picocolors.exports;
|
|
1642
1636
|
}
|
|
1643
1637
|
function J({ onlyFirst: t = false } = {}) {
|
|
@@ -1657,7 +1651,7 @@ function A$1(t, u = {}) {
|
|
|
1657
1651
|
return 0;
|
|
1658
1652
|
t = t.replace(FD(), " ");
|
|
1659
1653
|
const F = u.ambiguousIsNarrow ? 1 : 2;
|
|
1660
|
-
let
|
|
1654
|
+
let e = 0;
|
|
1661
1655
|
for (const s of t) {
|
|
1662
1656
|
const i = s.codePointAt(0);
|
|
1663
1657
|
if (i <= 31 || i >= 127 && i <= 159 || i >= 768 && i <= 879)
|
|
@@ -1665,56 +1659,56 @@ function A$1(t, u = {}) {
|
|
|
1665
1659
|
switch (DD.eastAsianWidth(s)) {
|
|
1666
1660
|
case "F":
|
|
1667
1661
|
case "W":
|
|
1668
|
-
|
|
1662
|
+
e += 2;
|
|
1669
1663
|
break;
|
|
1670
1664
|
case "A":
|
|
1671
|
-
|
|
1665
|
+
e += F;
|
|
1672
1666
|
break;
|
|
1673
1667
|
default:
|
|
1674
|
-
|
|
1668
|
+
e += 1;
|
|
1675
1669
|
}
|
|
1676
1670
|
}
|
|
1677
|
-
return
|
|
1671
|
+
return e;
|
|
1678
1672
|
}
|
|
1679
1673
|
function sD() {
|
|
1680
1674
|
const t = new Map;
|
|
1681
1675
|
for (const [u, F] of Object.entries(r)) {
|
|
1682
|
-
for (const [
|
|
1683
|
-
r[
|
|
1676
|
+
for (const [e, s] of Object.entries(F))
|
|
1677
|
+
r[e] = { open: `\x1B[${s[0]}m`, close: `\x1B[${s[1]}m` }, F[e] = r[e], t.set(s[0], s[1]);
|
|
1684
1678
|
Object.defineProperty(r, u, { value: F, enumerable: false });
|
|
1685
1679
|
}
|
|
1686
|
-
return Object.defineProperty(r, "codes", { value: t, enumerable: false }), r.color.close = "\x1B[39m", r.bgColor.close = "\x1B[49m", r.color.ansi = L$1(), r.color.ansi256 = N(), r.color.ansi16m = I(), r.bgColor.ansi = L$1(m), r.bgColor.ansi256 = N(m), r.bgColor.ansi16m = I(m), Object.defineProperties(r, { rgbToAnsi256: { value: (u, F,
|
|
1680
|
+
return Object.defineProperty(r, "codes", { value: t, enumerable: false }), r.color.close = "\x1B[39m", r.bgColor.close = "\x1B[49m", r.color.ansi = L$1(), r.color.ansi256 = N(), r.color.ansi16m = I(), r.bgColor.ansi = L$1(m), r.bgColor.ansi256 = N(m), r.bgColor.ansi16m = I(m), Object.defineProperties(r, { rgbToAnsi256: { value: (u, F, e) => u === F && F === e ? u < 8 ? 16 : u > 248 ? 231 : Math.round((u - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(u / 255 * 5) + 6 * Math.round(F / 255 * 5) + Math.round(e / 255 * 5), enumerable: false }, hexToRgb: { value: (u) => {
|
|
1687
1681
|
const F = /[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));
|
|
1688
1682
|
if (!F)
|
|
1689
1683
|
return [0, 0, 0];
|
|
1690
|
-
let [
|
|
1691
|
-
|
|
1692
|
-
const s = Number.parseInt(
|
|
1684
|
+
let [e] = F;
|
|
1685
|
+
e.length === 3 && (e = [...e].map((i) => i + i).join(""));
|
|
1686
|
+
const s = Number.parseInt(e, 16);
|
|
1693
1687
|
return [s >> 16 & 255, s >> 8 & 255, s & 255];
|
|
1694
1688
|
}, enumerable: false }, hexToAnsi256: { value: (u) => r.rgbToAnsi256(...r.hexToRgb(u)), enumerable: false }, ansi256ToAnsi: { value: (u) => {
|
|
1695
1689
|
if (u < 8)
|
|
1696
1690
|
return 30 + u;
|
|
1697
1691
|
if (u < 16)
|
|
1698
1692
|
return 90 + (u - 8);
|
|
1699
|
-
let F,
|
|
1693
|
+
let F, e, s;
|
|
1700
1694
|
if (u >= 232)
|
|
1701
|
-
F = ((u - 232) * 10 + 8) / 255,
|
|
1695
|
+
F = ((u - 232) * 10 + 8) / 255, e = F, s = F;
|
|
1702
1696
|
else {
|
|
1703
1697
|
u -= 16;
|
|
1704
1698
|
const C = u % 36;
|
|
1705
|
-
F = Math.floor(u / 36) / 5,
|
|
1699
|
+
F = Math.floor(u / 36) / 5, e = Math.floor(C / 6) / 5, s = C % 6 / 5;
|
|
1706
1700
|
}
|
|
1707
|
-
const i = Math.max(F,
|
|
1701
|
+
const i = Math.max(F, e, s) * 2;
|
|
1708
1702
|
if (i === 0)
|
|
1709
1703
|
return 30;
|
|
1710
|
-
let D = 30 + (Math.round(s) << 2 | Math.round(
|
|
1704
|
+
let D = 30 + (Math.round(s) << 2 | Math.round(e) << 1 | Math.round(F));
|
|
1711
1705
|
return i === 2 && (D += 60), D;
|
|
1712
|
-
}, enumerable: false }, rgbToAnsi: { value: (u, F,
|
|
1706
|
+
}, enumerable: false }, rgbToAnsi: { value: (u, F, e) => r.ansi256ToAnsi(r.rgbToAnsi256(u, F, e)), enumerable: false }, hexToAnsi: { value: (u) => r.ansi256ToAnsi(r.hexToAnsi256(u)), enumerable: false } }), r;
|
|
1713
1707
|
}
|
|
1714
1708
|
function G(t, u, F) {
|
|
1715
1709
|
return String(t).normalize().replace(/\r\n/g, `
|
|
1716
1710
|
`).split(`
|
|
1717
|
-
`).map((
|
|
1711
|
+
`).map((e) => oD(e, u, F)).join(`
|
|
1718
1712
|
`);
|
|
1719
1713
|
}
|
|
1720
1714
|
function k$1(t, u) {
|
|
@@ -1729,10 +1723,10 @@ function lD(t, u) {
|
|
|
1729
1723
|
if (t === u)
|
|
1730
1724
|
return;
|
|
1731
1725
|
const F = t.split(`
|
|
1732
|
-
`),
|
|
1726
|
+
`), e = u.split(`
|
|
1733
1727
|
`), s = [];
|
|
1734
|
-
for (let i = 0;i < Math.max(F.length,
|
|
1735
|
-
F[i] !==
|
|
1728
|
+
for (let i = 0;i < Math.max(F.length, e.length); i++)
|
|
1729
|
+
F[i] !== e[i] && s.push(i);
|
|
1736
1730
|
return s;
|
|
1737
1731
|
}
|
|
1738
1732
|
function d$1(t, u) {
|
|
@@ -1743,15 +1737,15 @@ function d$1(t, u) {
|
|
|
1743
1737
|
class x {
|
|
1744
1738
|
constructor(u, F = true) {
|
|
1745
1739
|
h(this, "input"), h(this, "output"), h(this, "_abortSignal"), h(this, "rl"), h(this, "opts"), h(this, "_render"), h(this, "_track", false), h(this, "_prevFrame", ""), h(this, "_subscribers", new Map), h(this, "_cursor", 0), h(this, "state", "initial"), h(this, "error", ""), h(this, "value");
|
|
1746
|
-
const { input:
|
|
1747
|
-
this.opts = C, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = i.bind(this), this._track = F, this._abortSignal = D, this.input =
|
|
1740
|
+
const { input: e = stdin, output: s = stdout, render: i, signal: D, ...C } = u;
|
|
1741
|
+
this.opts = C, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = i.bind(this), this._track = F, this._abortSignal = D, this.input = e, this.output = s;
|
|
1748
1742
|
}
|
|
1749
1743
|
unsubscribe() {
|
|
1750
1744
|
this._subscribers.clear();
|
|
1751
1745
|
}
|
|
1752
1746
|
setSubscriber(u, F) {
|
|
1753
|
-
const
|
|
1754
|
-
|
|
1747
|
+
const e = this._subscribers.get(u) ?? [];
|
|
1748
|
+
e.push(F), this._subscribers.set(u, e);
|
|
1755
1749
|
}
|
|
1756
1750
|
on(u, F) {
|
|
1757
1751
|
this.setSubscriber(u, { cb: F });
|
|
@@ -1760,9 +1754,9 @@ class x {
|
|
|
1760
1754
|
this.setSubscriber(u, { cb: F, once: true });
|
|
1761
1755
|
}
|
|
1762
1756
|
emit(u, ...F) {
|
|
1763
|
-
const
|
|
1764
|
-
for (const i of
|
|
1765
|
-
i.cb(...F), i.once && s.push(() =>
|
|
1757
|
+
const e = this._subscribers.get(u) ?? [], s = [];
|
|
1758
|
+
for (const i of e)
|
|
1759
|
+
i.cb(...F), i.once && s.push(() => e.splice(e.indexOf(i), 1));
|
|
1766
1760
|
for (const i of s)
|
|
1767
1761
|
i();
|
|
1768
1762
|
}
|
|
@@ -1775,10 +1769,10 @@ class x {
|
|
|
1775
1769
|
this.state = "cancel", this.close();
|
|
1776
1770
|
}, { once: true });
|
|
1777
1771
|
}
|
|
1778
|
-
const
|
|
1779
|
-
|
|
1772
|
+
const e = new WriteStream(0);
|
|
1773
|
+
e._write = (s, i, D) => {
|
|
1780
1774
|
this._track && (this.value = this.rl?.line.replace(/\t/g, ""), this._cursor = this.rl?.cursor ?? 0, this.emit("value", this.value)), D();
|
|
1781
|
-
}, this.input.pipe(
|
|
1775
|
+
}, this.input.pipe(e), this.rl = f.createInterface({ input: this.input, output: e, tabSize: 2, prompt: "", escapeCodeTimeout: 50 }), f.emitKeypressEvents(this.input, this.rl), this.rl.prompt(), this.opts.initialValue !== undefined && this._track && this.rl.write(this.opts.initialValue), this.input.on("keypress", this.onKeypress), d$1(this.input, true), this.output.on("resize", this.render), this.render(), this.once("submit", () => {
|
|
1782
1776
|
this.output.write(srcExports.cursor.show), this.output.off("resize", this.render), d$1(this.input, false), u(this.value);
|
|
1783
1777
|
}), this.once("cancel", () => {
|
|
1784
1778
|
this.output.write(srcExports.cursor.show), this.output.off("resize", this.render), d$1(this.input, false), u(S);
|
|
@@ -1788,8 +1782,8 @@ class x {
|
|
|
1788
1782
|
onKeypress(u, F) {
|
|
1789
1783
|
if (this.state === "error" && (this.state = "active"), F?.name && (!this._track && c.aliases.has(F.name) && this.emit("cursor", c.aliases.get(F.name)), c.actions.has(F.name) && this.emit("cursor", F.name)), u && (u.toLowerCase() === "y" || u.toLowerCase() === "n") && this.emit("confirm", u.toLowerCase() === "y"), u === "\t" && this.opts.placeholder && (this.value || (this.rl?.write(this.opts.placeholder), this.emit("value", this.opts.placeholder))), u && this.emit("key", u.toLowerCase()), F?.name === "return") {
|
|
1790
1784
|
if (this.opts.validate) {
|
|
1791
|
-
const
|
|
1792
|
-
|
|
1785
|
+
const e = this.opts.validate(this.value);
|
|
1786
|
+
e && (this.error = e instanceof Error ? e.message : e, this.state = "error", this.rl?.write(this.value));
|
|
1793
1787
|
}
|
|
1794
1788
|
this.state !== "error" && (this.state = "submit");
|
|
1795
1789
|
}
|
|
@@ -1812,18 +1806,18 @@ class x {
|
|
|
1812
1806
|
else {
|
|
1813
1807
|
const F = lD(this._prevFrame, u);
|
|
1814
1808
|
if (this.restoreCursor(), F && F?.length === 1) {
|
|
1815
|
-
const
|
|
1816
|
-
this.output.write(srcExports.cursor.move(0,
|
|
1809
|
+
const e = F[0];
|
|
1810
|
+
this.output.write(srcExports.cursor.move(0, e)), this.output.write(srcExports.erase.lines(1));
|
|
1817
1811
|
const s = u.split(`
|
|
1818
1812
|
`);
|
|
1819
|
-
this.output.write(s[
|
|
1813
|
+
this.output.write(s[e]), this._prevFrame = u, this.output.write(srcExports.cursor.move(0, s.length - e - 1));
|
|
1820
1814
|
return;
|
|
1821
1815
|
}
|
|
1822
1816
|
if (F && F?.length > 1) {
|
|
1823
|
-
const
|
|
1824
|
-
this.output.write(srcExports.cursor.move(0,
|
|
1817
|
+
const e = F[0];
|
|
1818
|
+
this.output.write(srcExports.cursor.move(0, e)), this.output.write(srcExports.erase.down());
|
|
1825
1819
|
const s = u.split(`
|
|
1826
|
-
`).slice(
|
|
1820
|
+
`).slice(e);
|
|
1827
1821
|
this.output.write(s.join(`
|
|
1828
1822
|
`)), this._prevFrame = u;
|
|
1829
1823
|
return;
|
|
@@ -1883,14 +1877,14 @@ async function prompt(message, opts = {}) {
|
|
|
1883
1877
|
if (opts.type === "select") {
|
|
1884
1878
|
return await ve({
|
|
1885
1879
|
message,
|
|
1886
|
-
options: opts.options.map((
|
|
1880
|
+
options: opts.options.map((o) => typeof o === "string" ? { value: o, label: o } : o),
|
|
1887
1881
|
initialValue: opts.initial
|
|
1888
1882
|
}).then(handleCancel);
|
|
1889
1883
|
}
|
|
1890
1884
|
if (opts.type === "multiselect") {
|
|
1891
1885
|
return await fe({
|
|
1892
1886
|
message,
|
|
1893
|
-
options: opts.options.map((
|
|
1887
|
+
options: opts.options.map((o) => typeof o === "string" ? { value: o, label: o } : o),
|
|
1894
1888
|
required: opts.required,
|
|
1895
1889
|
initialValues: opts.initial
|
|
1896
1890
|
}).then(handleCancel);
|
|
@@ -1899,16 +1893,16 @@ async function prompt(message, opts = {}) {
|
|
|
1899
1893
|
}
|
|
1900
1894
|
var src, hasRequiredSrc, srcExports, picocolors, hasRequiredPicocolors, picocolorsExports, e, Q, P$1, X, DD, uD = function() {
|
|
1901
1895
|
return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
|
|
1902
|
-
}, FD, m = 10, L$1 = (t = 0) => (u) => `\x1B[${u + t}m`, N = (t = 0) => (u) => `\x1B[${38 + t};5;${u}m`, I = (t = 0) => (u, F,
|
|
1903
|
-
const
|
|
1896
|
+
}, FD, m = 10, L$1 = (t = 0) => (u) => `\x1B[${u + t}m`, N = (t = 0) => (u) => `\x1B[${38 + t};5;${u}m`, I = (t = 0) => (u, F, e) => `\x1B[${38 + t};2;${u};${F};${e}m`, r, tD, eD, iD, v, CD = 39, w$1 = "\x07", W$1 = "[", rD = "]", R = "m", y, V$1 = (t) => `${v.values().next().value}${W$1}${t}${R}`, z = (t) => `${v.values().next().value}${y}${t}${w$1}`, ED = (t) => t.split(" ").map((u) => A$1(u)), _ = (t, u, F) => {
|
|
1897
|
+
const e = [...u];
|
|
1904
1898
|
let s = false, i = false, D = A$1(T$1(t[t.length - 1]));
|
|
1905
|
-
for (const [C, o] of
|
|
1899
|
+
for (const [C, o] of e.entries()) {
|
|
1906
1900
|
const E = A$1(o);
|
|
1907
|
-
if (D + E <= F ? t[t.length - 1] += o : (t.push(o), D = 0), v.has(o) && (s = true, i =
|
|
1901
|
+
if (D + E <= F ? t[t.length - 1] += o : (t.push(o), D = 0), v.has(o) && (s = true, i = e.slice(C + 1).join("").startsWith(y)), s) {
|
|
1908
1902
|
i ? o === w$1 && (s = false, i = false) : o === R && (s = false);
|
|
1909
1903
|
continue;
|
|
1910
1904
|
}
|
|
1911
|
-
D += E, D === F && C <
|
|
1905
|
+
D += E, D === F && C < e.length - 1 && (t.push(""), D = 0);
|
|
1912
1906
|
}
|
|
1913
1907
|
!D && t[t.length - 1].length > 0 && t.length > 1 && (t[t.length - 2] += t.pop());
|
|
1914
1908
|
}, nD = (t) => {
|
|
@@ -1920,7 +1914,7 @@ var src, hasRequiredSrc, srcExports, picocolors, hasRequiredPicocolors, picocolo
|
|
|
1920
1914
|
}, oD = (t, u, F = {}) => {
|
|
1921
1915
|
if (F.trim !== false && t.trim() === "")
|
|
1922
1916
|
return "";
|
|
1923
|
-
let
|
|
1917
|
+
let e = "", s, i;
|
|
1924
1918
|
const D = ED(t);
|
|
1925
1919
|
let C = [""];
|
|
1926
1920
|
for (const [E, a] of t.split(" ").entries()) {
|
|
@@ -1948,7 +1942,7 @@ var src, hasRequiredSrc, srcExports, picocolors, hasRequiredPicocolors, picocolo
|
|
|
1948
1942
|
const o = [...C.join(`
|
|
1949
1943
|
`)];
|
|
1950
1944
|
for (const [E, a] of o.entries()) {
|
|
1951
|
-
if (
|
|
1945
|
+
if (e += a, v.has(a)) {
|
|
1952
1946
|
const { groups: B } = new RegExp(`(?:\\${W$1}(?<code>\\d+)m|\\${y}(?<uri>.*)${w$1})`).exec(o.slice(E).join("")) || { groups: {} };
|
|
1953
1947
|
if (B.code !== undefined) {
|
|
1954
1948
|
const p = Number.parseFloat(B.code);
|
|
@@ -1958,10 +1952,10 @@ var src, hasRequiredSrc, srcExports, picocolors, hasRequiredPicocolors, picocolo
|
|
|
1958
1952
|
}
|
|
1959
1953
|
const n = iD.codes.get(Number(s));
|
|
1960
1954
|
o[E + 1] === `
|
|
1961
|
-
` ? (i && (
|
|
1962
|
-
` && (s && n && (
|
|
1955
|
+
` ? (i && (e += z("")), s && n && (e += V$1(n))) : a === `
|
|
1956
|
+
` && (s && n && (e += V$1(s)), i && (e += z(i)));
|
|
1963
1957
|
}
|
|
1964
|
-
return
|
|
1958
|
+
return e;
|
|
1965
1959
|
}, aD, c, S, AD, pD = (t, u, F) => (u in t) ? AD(t, u, { enumerable: true, configurable: true, writable: true, value: F }) : t[u] = F, h = (t, u, F) => (pD(t, typeof u != "symbol" ? u + "" : u, F), F), fD, bD, mD = (t, u, F) => (u in t) ? bD(t, u, { enumerable: true, configurable: true, writable: true, value: F }) : t[u] = F, Y = (t, u, F) => (mD(t, typeof u != "symbol" ? u + "" : u, F), F), wD, SD, $D = (t, u, F) => (u in t) ? SD(t, u, { enumerable: true, configurable: true, writable: true, value: F }) : t[u] = F, q = (t, u, F) => ($D(t, typeof u != "symbol" ? u + "" : u, F), F), jD, PD, V, u = (t, n) => V ? t : n, le, L, W, C, o, d, k, P, A, T, F, w = (t) => {
|
|
1966
1960
|
switch (t) {
|
|
1967
1961
|
case "initial":
|
|
@@ -1975,22 +1969,22 @@ var src, hasRequiredSrc, srcExports, picocolors, hasRequiredPicocolors, picocolo
|
|
|
1975
1969
|
return e.green(C);
|
|
1976
1970
|
}
|
|
1977
1971
|
}, B = (t) => {
|
|
1978
|
-
const { cursor: n, options: s, style:
|
|
1972
|
+
const { cursor: n, options: s, style: r } = t, i = t.maxItems ?? Number.POSITIVE_INFINITY, a = Math.max(process.stdout.rows - 4, 0), c = Math.min(a, Math.max(i, 5));
|
|
1979
1973
|
let l = 0;
|
|
1980
|
-
n >= l +
|
|
1981
|
-
const $ =
|
|
1982
|
-
return s.slice(l, l +
|
|
1983
|
-
const j =
|
|
1984
|
-
return j || E ? e.dim("...") :
|
|
1974
|
+
n >= l + c - 3 ? l = Math.max(Math.min(n - c + 3, s.length - c), 0) : n < l + 2 && (l = Math.max(n - 2, 0));
|
|
1975
|
+
const $ = c < s.length && l > 0, p = c < s.length && l + c < s.length;
|
|
1976
|
+
return s.slice(l, l + c).map((M, v, x) => {
|
|
1977
|
+
const j = v === 0 && $, E = v === x.length - 1 && p;
|
|
1978
|
+
return j || E ? e.dim("...") : r(M, v + l === n);
|
|
1985
1979
|
});
|
|
1986
1980
|
}, he = (t) => new PD({ validate: t.validate, placeholder: t.placeholder, defaultValue: t.defaultValue, initialValue: t.initialValue, render() {
|
|
1987
1981
|
const n = `${e.gray(o)}
|
|
1988
1982
|
${w(this.state)} ${t.message}
|
|
1989
|
-
`, s = t.placeholder ? e.inverse(t.placeholder[0]) + e.dim(t.placeholder.slice(1)) : e.inverse(e.hidden("_")),
|
|
1983
|
+
`, s = t.placeholder ? e.inverse(t.placeholder[0]) + e.dim(t.placeholder.slice(1)) : e.inverse(e.hidden("_")), r = this.value ? this.valueWithCursor : s;
|
|
1990
1984
|
switch (this.state) {
|
|
1991
1985
|
case "error":
|
|
1992
1986
|
return `${n.trim()}
|
|
1993
|
-
${e.yellow(o)} ${
|
|
1987
|
+
${e.yellow(o)} ${r}
|
|
1994
1988
|
${e.yellow(d)} ${e.yellow(this.error)}
|
|
1995
1989
|
`;
|
|
1996
1990
|
case "submit":
|
|
@@ -1999,32 +1993,32 @@ ${e.yellow(d)} ${e.yellow(this.error)}
|
|
|
1999
1993
|
return `${n}${e.gray(o)} ${e.strikethrough(e.dim(this.value ?? ""))}${this.value?.trim() ? `
|
|
2000
1994
|
${e.gray(o)}` : ""}`;
|
|
2001
1995
|
default:
|
|
2002
|
-
return `${n}${e.cyan(o)} ${
|
|
1996
|
+
return `${n}${e.cyan(o)} ${r}
|
|
2003
1997
|
${e.cyan(d)}
|
|
2004
1998
|
`;
|
|
2005
1999
|
}
|
|
2006
2000
|
} }).prompt(), ye = (t) => {
|
|
2007
2001
|
const n = t.active ?? "Yes", s = t.inactive ?? "No";
|
|
2008
2002
|
return new fD({ active: n, inactive: s, initialValue: t.initialValue ?? true, render() {
|
|
2009
|
-
const
|
|
2003
|
+
const r = `${e.gray(o)}
|
|
2010
2004
|
${w(this.state)} ${t.message}
|
|
2011
2005
|
`, i = this.value ? n : s;
|
|
2012
2006
|
switch (this.state) {
|
|
2013
2007
|
case "submit":
|
|
2014
|
-
return `${
|
|
2008
|
+
return `${r}${e.gray(o)} ${e.dim(i)}`;
|
|
2015
2009
|
case "cancel":
|
|
2016
|
-
return `${
|
|
2010
|
+
return `${r}${e.gray(o)} ${e.strikethrough(e.dim(i))}
|
|
2017
2011
|
${e.gray(o)}`;
|
|
2018
2012
|
default:
|
|
2019
|
-
return `${
|
|
2013
|
+
return `${r}${e.cyan(o)} ${this.value ? `${e.green(k)} ${n}` : `${e.dim(P)} ${e.dim(n)}`} ${e.dim("/")} ${this.value ? `${e.dim(P)} ${e.dim(s)}` : `${e.green(k)} ${s}`}
|
|
2020
2014
|
${e.cyan(d)}
|
|
2021
2015
|
`;
|
|
2022
2016
|
}
|
|
2023
2017
|
} }).prompt();
|
|
2024
2018
|
}, ve = (t) => {
|
|
2025
|
-
const n = (s,
|
|
2019
|
+
const n = (s, r) => {
|
|
2026
2020
|
const i = s.label ?? String(s.value);
|
|
2027
|
-
switch (
|
|
2021
|
+
switch (r) {
|
|
2028
2022
|
case "selected":
|
|
2029
2023
|
return `${e.dim(i)}`;
|
|
2030
2024
|
case "active":
|
|
@@ -2046,16 +2040,16 @@ ${w(this.state)} ${t.message}
|
|
|
2046
2040
|
return `${s}${e.gray(o)} ${n(this.options[this.cursor], "cancelled")}
|
|
2047
2041
|
${e.gray(o)}`;
|
|
2048
2042
|
default:
|
|
2049
|
-
return `${s}${e.cyan(o)} ${B({ cursor: this.cursor, options: this.options, maxItems: t.maxItems, style: (
|
|
2043
|
+
return `${s}${e.cyan(o)} ${B({ cursor: this.cursor, options: this.options, maxItems: t.maxItems, style: (r, i) => n(r, i ? "active" : "inactive") }).join(`
|
|
2050
2044
|
${e.cyan(o)} `)}
|
|
2051
2045
|
${e.cyan(d)}
|
|
2052
2046
|
`;
|
|
2053
2047
|
}
|
|
2054
2048
|
} }).prompt();
|
|
2055
2049
|
}, fe = (t) => {
|
|
2056
|
-
const n = (s,
|
|
2050
|
+
const n = (s, r) => {
|
|
2057
2051
|
const i = s.label ?? String(s.value);
|
|
2058
|
-
return
|
|
2052
|
+
return r === "active" ? `${e.cyan(A)} ${i} ${s.hint ? e.dim(`(${s.hint})`) : ""}` : r === "selected" ? `${e.green(T)} ${e.dim(i)}` : r === "cancelled" ? `${e.strikethrough(e.dim(i))}` : r === "active-selected" ? `${e.green(T)} ${i} ${s.hint ? e.dim(`(${s.hint})`) : ""}` : r === "submitted" ? `${e.dim(i)}` : `${e.dim(F)} ${e.dim(i)}`;
|
|
2059
2053
|
};
|
|
2060
2054
|
return new wD({ options: t.options, initialValues: t.initialValues, required: t.required ?? true, cursorAt: t.cursorAt, validate(s) {
|
|
2061
2055
|
if (this.required && s.length === 0)
|
|
@@ -2064,9 +2058,9 @@ ${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(" space ")))} to select, ${e
|
|
|
2064
2058
|
}, render() {
|
|
2065
2059
|
const s = `${e.gray(o)}
|
|
2066
2060
|
${w(this.state)} ${t.message}
|
|
2067
|
-
`,
|
|
2068
|
-
const
|
|
2069
|
-
return a &&
|
|
2061
|
+
`, r = (i, a) => {
|
|
2062
|
+
const c = this.value.includes(i.value);
|
|
2063
|
+
return a && c ? n(i, "active-selected") : c ? n(i, "selected") : n(i, a ? "active" : "inactive");
|
|
2070
2064
|
};
|
|
2071
2065
|
switch (this.state) {
|
|
2072
2066
|
case "submit":
|
|
@@ -2078,15 +2072,15 @@ ${e.gray(o)}` : ""}`;
|
|
|
2078
2072
|
}
|
|
2079
2073
|
case "error": {
|
|
2080
2074
|
const i = this.error.split(`
|
|
2081
|
-
`).map((a,
|
|
2075
|
+
`).map((a, c) => c === 0 ? `${e.yellow(d)} ${e.yellow(a)}` : ` ${a}`).join(`
|
|
2082
2076
|
`);
|
|
2083
|
-
return `${s + e.yellow(o)} ${B({ options: this.options, cursor: this.cursor, maxItems: t.maxItems, style:
|
|
2077
|
+
return `${s + e.yellow(o)} ${B({ options: this.options, cursor: this.cursor, maxItems: t.maxItems, style: r }).join(`
|
|
2084
2078
|
${e.yellow(o)} `)}
|
|
2085
2079
|
${i}
|
|
2086
2080
|
`;
|
|
2087
2081
|
}
|
|
2088
2082
|
default:
|
|
2089
|
-
return `${s}${e.cyan(o)} ${B({ options: this.options, cursor: this.cursor, maxItems: t.maxItems, style:
|
|
2083
|
+
return `${s}${e.cyan(o)} ${B({ options: this.options, cursor: this.cursor, maxItems: t.maxItems, style: r }).join(`
|
|
2090
2084
|
${e.cyan(o)} `)}
|
|
2091
2085
|
${e.cyan(d)}
|
|
2092
2086
|
`;
|
|
@@ -2102,23 +2096,23 @@ var init_prompt = __esm(() => {
|
|
|
2102
2096
|
P$1 = { exports: {} };
|
|
2103
2097
|
(function(t) {
|
|
2104
2098
|
var u = {};
|
|
2105
|
-
t.exports = u, u.eastAsianWidth = function(
|
|
2106
|
-
var s =
|
|
2099
|
+
t.exports = u, u.eastAsianWidth = function(e) {
|
|
2100
|
+
var s = e.charCodeAt(0), i = e.length == 2 ? e.charCodeAt(1) : 0, D = s;
|
|
2107
2101
|
return 55296 <= s && s <= 56319 && 56320 <= i && i <= 57343 && (s &= 1023, i &= 1023, D = s << 10 | i, D += 65536), D == 12288 || 65281 <= D && D <= 65376 || 65504 <= D && D <= 65510 ? "F" : D == 8361 || 65377 <= D && D <= 65470 || 65474 <= D && D <= 65479 || 65482 <= D && D <= 65487 || 65490 <= D && D <= 65495 || 65498 <= D && D <= 65500 || 65512 <= D && D <= 65518 ? "H" : 4352 <= D && D <= 4447 || 4515 <= D && D <= 4519 || 4602 <= D && D <= 4607 || 9001 <= D && D <= 9002 || 11904 <= D && D <= 11929 || 11931 <= D && D <= 12019 || 12032 <= D && D <= 12245 || 12272 <= D && D <= 12283 || 12289 <= D && D <= 12350 || 12353 <= D && D <= 12438 || 12441 <= D && D <= 12543 || 12549 <= D && D <= 12589 || 12593 <= D && D <= 12686 || 12688 <= D && D <= 12730 || 12736 <= D && D <= 12771 || 12784 <= D && D <= 12830 || 12832 <= D && D <= 12871 || 12880 <= D && D <= 13054 || 13056 <= D && D <= 19903 || 19968 <= D && D <= 42124 || 42128 <= D && D <= 42182 || 43360 <= D && D <= 43388 || 44032 <= D && D <= 55203 || 55216 <= D && D <= 55238 || 55243 <= D && D <= 55291 || 63744 <= D && D <= 64255 || 65040 <= D && D <= 65049 || 65072 <= D && D <= 65106 || 65108 <= D && D <= 65126 || 65128 <= D && D <= 65131 || 110592 <= D && D <= 110593 || 127488 <= D && D <= 127490 || 127504 <= D && D <= 127546 || 127552 <= D && D <= 127560 || 127568 <= D && D <= 127569 || 131072 <= D && D <= 194367 || 177984 <= D && D <= 196605 || 196608 <= D && D <= 262141 ? "W" : 32 <= D && D <= 126 || 162 <= D && D <= 163 || 165 <= D && D <= 166 || D == 172 || D == 175 || 10214 <= D && D <= 10221 || 10629 <= D && D <= 10630 ? "Na" : D == 161 || D == 164 || 167 <= D && D <= 168 || D == 170 || 173 <= D && D <= 174 || 176 <= D && D <= 180 || 182 <= D && D <= 186 || 188 <= D && D <= 191 || D == 198 || D == 208 || 215 <= D && D <= 216 || 222 <= D && D <= 225 || D == 230 || 232 <= D && D <= 234 || 236 <= D && D <= 237 || D == 240 || 242 <= D && D <= 243 || 247 <= D && D <= 250 || D == 252 || D == 254 || D == 257 || D == 273 || D == 275 || D == 283 || 294 <= D && D <= 295 || D == 299 || 305 <= D && D <= 307 || D == 312 || 319 <= D && D <= 322 || D == 324 || 328 <= D && D <= 331 || D == 333 || 338 <= D && D <= 339 || 358 <= D && D <= 359 || D == 363 || D == 462 || D == 464 || D == 466 || D == 468 || D == 470 || D == 472 || D == 474 || D == 476 || D == 593 || D == 609 || D == 708 || D == 711 || 713 <= D && D <= 715 || D == 717 || D == 720 || 728 <= D && D <= 731 || D == 733 || D == 735 || 768 <= D && D <= 879 || 913 <= D && D <= 929 || 931 <= D && D <= 937 || 945 <= D && D <= 961 || 963 <= D && D <= 969 || D == 1025 || 1040 <= D && D <= 1103 || D == 1105 || D == 8208 || 8211 <= D && D <= 8214 || 8216 <= D && D <= 8217 || 8220 <= D && D <= 8221 || 8224 <= D && D <= 8226 || 8228 <= D && D <= 8231 || D == 8240 || 8242 <= D && D <= 8243 || D == 8245 || D == 8251 || D == 8254 || D == 8308 || D == 8319 || 8321 <= D && D <= 8324 || D == 8364 || D == 8451 || D == 8453 || D == 8457 || D == 8467 || D == 8470 || 8481 <= D && D <= 8482 || D == 8486 || D == 8491 || 8531 <= D && D <= 8532 || 8539 <= D && D <= 8542 || 8544 <= D && D <= 8555 || 8560 <= D && D <= 8569 || D == 8585 || 8592 <= D && D <= 8601 || 8632 <= D && D <= 8633 || D == 8658 || D == 8660 || D == 8679 || D == 8704 || 8706 <= D && D <= 8707 || 8711 <= D && D <= 8712 || D == 8715 || D == 8719 || D == 8721 || D == 8725 || D == 8730 || 8733 <= D && D <= 8736 || D == 8739 || D == 8741 || 8743 <= D && D <= 8748 || D == 8750 || 8756 <= D && D <= 8759 || 8764 <= D && D <= 8765 || D == 8776 || D == 8780 || D == 8786 || 8800 <= D && D <= 8801 || 8804 <= D && D <= 8807 || 8810 <= D && D <= 8811 || 8814 <= D && D <= 8815 || 8834 <= D && D <= 8835 || 8838 <= D && D <= 8839 || D == 8853 || D == 8857 || D == 8869 || D == 8895 || D == 8978 || 9312 <= D && D <= 9449 || 9451 <= D && D <= 9547 || 9552 <= D && D <= 9587 || 9600 <= D && D <= 9615 || 9618 <= D && D <= 9621 || 9632 <= D && D <= 9633 || 9635 <= D && D <= 9641 || 9650 <= D && D <= 9651 || 9654 <= D && D <= 9655 || 9660 <= D && D <= 9661 || 9664 <= D && D <= 9665 || 9670 <= D && D <= 9672 || D == 9675 || 9678 <= D && D <= 9681 || 9698 <= D && D <= 9701 || D == 9711 || 9733 <= D && D <= 9734 || D == 9737 || 9742 <= D && D <= 9743 || 9748 <= D && D <= 9749 || D == 9756 || D == 9758 || D == 9792 || D == 9794 || 9824 <= D && D <= 9825 || 9827 <= D && D <= 9829 || 9831 <= D && D <= 9834 || 9836 <= D && D <= 9837 || D == 9839 || 9886 <= D && D <= 9887 || 9918 <= D && D <= 9919 || 9924 <= D && D <= 9933 || 9935 <= D && D <= 9953 || D == 9955 || 9960 <= D && D <= 9983 || D == 10045 || D == 10071 || 10102 <= D && D <= 10111 || 11093 <= D && D <= 11097 || 12872 <= D && D <= 12879 || 57344 <= D && D <= 63743 || 65024 <= D && D <= 65039 || D == 65533 || 127232 <= D && D <= 127242 || 127248 <= D && D <= 127277 || 127280 <= D && D <= 127337 || 127344 <= D && D <= 127386 || 917760 <= D && D <= 917999 || 983040 <= D && D <= 1048573 || 1048576 <= D && D <= 1114109 ? "A" : "N";
|
|
2108
|
-
}, u.characterLength = function(
|
|
2109
|
-
var s = this.eastAsianWidth(
|
|
2102
|
+
}, u.characterLength = function(e) {
|
|
2103
|
+
var s = this.eastAsianWidth(e);
|
|
2110
2104
|
return s == "F" || s == "W" || s == "A" ? 2 : 1;
|
|
2111
2105
|
};
|
|
2112
|
-
function F(
|
|
2113
|
-
return
|
|
2106
|
+
function F(e) {
|
|
2107
|
+
return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
|
|
2114
2108
|
}
|
|
2115
|
-
u.length = function(
|
|
2116
|
-
for (var s = F(
|
|
2109
|
+
u.length = function(e) {
|
|
2110
|
+
for (var s = F(e), i = 0, D = 0;D < s.length; D++)
|
|
2117
2111
|
i = i + this.characterLength(s[D]);
|
|
2118
2112
|
return i;
|
|
2119
|
-
}, u.slice = function(
|
|
2120
|
-
textLen = u.length(
|
|
2121
|
-
for (var D = "", C = 0, o = F(
|
|
2113
|
+
}, u.slice = function(e, s, i) {
|
|
2114
|
+
textLen = u.length(e), s = s || 0, i = i || 1, s < 0 && (s = textLen + s), i < 0 && (i = textLen + i);
|
|
2115
|
+
for (var D = "", C = 0, o = F(e), E = 0;E < o.length; E++) {
|
|
2122
2116
|
var a = o[E], n = u.length(a);
|
|
2123
2117
|
if (C >= s - (n == 2 ? 1 : 0))
|
|
2124
2118
|
if (C + n <= i)
|
|
@@ -2258,20 +2252,20 @@ var init_prompt = __esm(() => {
|
|
|
2258
2252
|
import g$1 from "node:process";
|
|
2259
2253
|
function b() {
|
|
2260
2254
|
if (globalThis.process?.env)
|
|
2261
|
-
for (const
|
|
2262
|
-
const s =
|
|
2255
|
+
for (const e of f2) {
|
|
2256
|
+
const s = e[1] || e[0];
|
|
2263
2257
|
if (globalThis.process?.env[s])
|
|
2264
|
-
return { name:
|
|
2258
|
+
return { name: e[0].toLowerCase(), ...e[2] };
|
|
2265
2259
|
}
|
|
2266
2260
|
return globalThis.process?.env?.SHELL === "/bin/jsh" && globalThis.process?.versions?.webcontainer ? { name: "stackblitz", ci: false } : { name: "", ci: false };
|
|
2267
2261
|
}
|
|
2268
|
-
function n(
|
|
2269
|
-
return
|
|
2262
|
+
function n(e) {
|
|
2263
|
+
return e ? e !== "false" : false;
|
|
2270
2264
|
}
|
|
2271
2265
|
function G2() {
|
|
2272
|
-
const
|
|
2273
|
-
if (
|
|
2274
|
-
return { name:
|
|
2266
|
+
const e = F2.find((s) => s[0]);
|
|
2267
|
+
if (e)
|
|
2268
|
+
return { name: e[1] };
|
|
2275
2269
|
}
|
|
2276
2270
|
function ansiRegex2({ onlyFirst = false } = {}) {
|
|
2277
2271
|
const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
|
|
@@ -2287,14 +2281,14 @@ function stripAnsi2(string) {
|
|
|
2287
2281
|
}
|
|
2288
2282
|
return string.replace(regex, "");
|
|
2289
2283
|
}
|
|
2290
|
-
function isAmbiguous(
|
|
2291
|
-
return
|
|
2284
|
+
function isAmbiguous(x) {
|
|
2285
|
+
return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
|
|
2292
2286
|
}
|
|
2293
|
-
function isFullWidth(
|
|
2294
|
-
return
|
|
2287
|
+
function isFullWidth(x) {
|
|
2288
|
+
return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
|
|
2295
2289
|
}
|
|
2296
|
-
function isWide(
|
|
2297
|
-
return
|
|
2290
|
+
function isWide(x) {
|
|
2291
|
+
return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
|
|
2298
2292
|
}
|
|
2299
2293
|
function validate(codePoint) {
|
|
2300
2294
|
if (!Number.isSafeInteger(codePoint)) {
|
|
@@ -2353,12 +2347,12 @@ function stringWidth$1(string, options = {}) {
|
|
|
2353
2347
|
return width;
|
|
2354
2348
|
}
|
|
2355
2349
|
function isUnicodeSupported() {
|
|
2356
|
-
const { env
|
|
2357
|
-
const { TERM, TERM_PROGRAM } =
|
|
2350
|
+
const { env } = g$1;
|
|
2351
|
+
const { TERM, TERM_PROGRAM } = env;
|
|
2358
2352
|
if (g$1.platform !== "win32") {
|
|
2359
2353
|
return TERM !== "linux";
|
|
2360
2354
|
}
|
|
2361
|
-
return Boolean(
|
|
2355
|
+
return Boolean(env.WT_SESSION) || Boolean(env.TERMINUS_SUBLIME) || env.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
|
|
2362
2356
|
}
|
|
2363
2357
|
function stringWidth(str) {
|
|
2364
2358
|
const hasICU = typeof Intl === "object";
|
|
@@ -2368,7 +2362,7 @@ function stringWidth(str) {
|
|
|
2368
2362
|
return stringWidth$1(str);
|
|
2369
2363
|
}
|
|
2370
2364
|
function characterFormat(str) {
|
|
2371
|
-
return str.replace(/`([^`]+)`/gm, (
|
|
2365
|
+
return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\s+_([^_]+)_\s+/gm, (_, m) => ` ${colors.underline(m)} `);
|
|
2372
2366
|
}
|
|
2373
2367
|
function getColor2(color = "white") {
|
|
2374
2368
|
return colors[color] || colors.white;
|
|
@@ -2386,7 +2380,7 @@ function createConsola2(options = {}) {
|
|
|
2386
2380
|
defaults: { level },
|
|
2387
2381
|
stdout: process.stdout,
|
|
2388
2382
|
stderr: process.stderr,
|
|
2389
|
-
prompt: (...args) => Promise.resolve().then(() => (init_prompt(),
|
|
2383
|
+
prompt: (...args) => Promise.resolve().then(() => (init_prompt(), {})).then((m) => prompt(...args)),
|
|
2390
2384
|
reporters: options.reporters || [
|
|
2391
2385
|
options.fancy ?? !(T2 || R2) ? new FancyReporter : new BasicReporter
|
|
2392
2386
|
],
|
|
@@ -2403,31 +2397,31 @@ function _getDefaultLogLevel() {
|
|
|
2403
2397
|
}
|
|
2404
2398
|
return LogLevels.info;
|
|
2405
2399
|
}
|
|
2406
|
-
var r2, i = (
|
|
2400
|
+
var r2, i = (e) => globalThis.process?.env || import.meta.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (e ? r2 : globalThis), o2, t, f2, l, I2, T2, a, g2, R2, A2, C2, y2, _2, c2, O2, D, L2, S2, u2, N2, F2, P2, regex, emojiRegex = () => {
|
|
2407
2401
|
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
|
2408
|
-
}, segmenter, defaultIgnorableCodePointRegex, TYPE_COLOR_MAP, LEVEL_COLOR_MAP, unicode, s = (
|
|
2402
|
+
}, segmenter, defaultIgnorableCodePointRegex, TYPE_COLOR_MAP, LEVEL_COLOR_MAP, unicode, s = (c, fallback) => unicode ? c : fallback, TYPE_ICONS, FancyReporter, consola;
|
|
2409
2403
|
var init_dist2 = __esm(() => {
|
|
2410
2404
|
init_core();
|
|
2411
2405
|
init_core();
|
|
2412
2406
|
init_consola_DRwqZj3T();
|
|
2413
2407
|
init_consola_DXBYu_KD();
|
|
2414
2408
|
r2 = Object.create(null);
|
|
2415
|
-
o2 = new Proxy(r2, { get(
|
|
2409
|
+
o2 = new Proxy(r2, { get(e, s) {
|
|
2416
2410
|
return i()[s] ?? r2[s];
|
|
2417
|
-
}, has(
|
|
2411
|
+
}, has(e, s) {
|
|
2418
2412
|
const E = i();
|
|
2419
2413
|
return s in E || s in r2;
|
|
2420
|
-
}, set(
|
|
2421
|
-
const
|
|
2422
|
-
return
|
|
2423
|
-
}, deleteProperty(
|
|
2414
|
+
}, set(e, s, E) {
|
|
2415
|
+
const B = i(true);
|
|
2416
|
+
return B[s] = E, true;
|
|
2417
|
+
}, deleteProperty(e, s) {
|
|
2424
2418
|
if (!s)
|
|
2425
2419
|
return false;
|
|
2426
2420
|
const E = i(true);
|
|
2427
2421
|
return delete E[s], true;
|
|
2428
2422
|
}, ownKeys() {
|
|
2429
|
-
const
|
|
2430
|
-
return Object.keys(
|
|
2423
|
+
const e = i(true);
|
|
2424
|
+
return Object.keys(e);
|
|
2431
2425
|
} });
|
|
2432
2426
|
t = typeof process < "u" && process.env && "development" || "";
|
|
2433
2427
|
f2 = [["APPVEYOR"], ["AWS_AMPLIFY", "AWS_APP_ID", { ci: true }], ["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"], ["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"], ["APPCIRCLE", "AC_APPCIRCLE"], ["BAMBOO", "bamboo_planKey"], ["BITBUCKET", "BITBUCKET_COMMIT"], ["BITRISE", "BITRISE_IO"], ["BUDDY", "BUDDY_WORKSPACE_ID"], ["BUILDKITE"], ["CIRCLE", "CIRCLECI"], ["CIRRUS", "CIRRUS_CI"], ["CLOUDFLARE_PAGES", "CF_PAGES", { ci: true }], ["CODEBUILD", "CODEBUILD_BUILD_ARN"], ["CODEFRESH", "CF_BUILD_ID"], ["DRONE"], ["DRONE", "DRONE_BUILD_EVENT"], ["DSARI"], ["GITHUB_ACTIONS"], ["GITLAB", "GITLAB_CI"], ["GITLAB", "CI_MERGE_REQUEST_ID"], ["GOCD", "GO_PIPELINE_LABEL"], ["LAYERCI"], ["HUDSON", "HUDSON_URL"], ["JENKINS", "JENKINS_URL"], ["MAGNUM"], ["NETLIFY"], ["NETLIFY", "NETLIFY_LOCAL", { ci: false }], ["NEVERCODE"], ["RENDER"], ["SAIL", "SAILCI"], ["SEMAPHORE"], ["SCREWDRIVER"], ["SHIPPABLE"], ["SOLANO", "TDDIUM"], ["STRIDER"], ["TEAMCITY", "TEAMCITY_VERSION"], ["TRAVIS"], ["VERCEL", "NOW_BUILDER"], ["VERCEL", "VERCEL", { ci: false }], ["VERCEL", "VERCEL_ENV", { ci: false }], ["APPCENTER", "APPCENTER_BUILD_ID"], ["CODESANDBOX", "CODESANDBOX_SSE", { ci: false }], ["CODESANDBOX", "CODESANDBOX_HOST", { ci: false }], ["STACKBLITZ"], ["STORMKIT"], ["CLEAVR"], ["ZEABUR"], ["CODESPHERE", "CODESPHERE_APP_ID", { ci: true }], ["RAILWAY", "RAILWAY_PROJECT_ID"], ["RAILWAY", "RAILWAY_SERVICE_ID"], ["DENO-DEPLOY", "DENO_DEPLOYMENT_ID"], ["FIREBASE_APP_HOSTING", "FIREBASE_APP_HOSTING", { ci: true }]];
|
|
@@ -2445,11 +2439,11 @@ var init_dist2 = __esm(() => {
|
|
|
2445
2439
|
Number(C2?.split(".")[0]);
|
|
2446
2440
|
y2 = globalThis.process || Object.create(null);
|
|
2447
2441
|
_2 = { versions: {} };
|
|
2448
|
-
new Proxy(y2, { get(
|
|
2442
|
+
new Proxy(y2, { get(e, s) {
|
|
2449
2443
|
if (s === "env")
|
|
2450
2444
|
return o2;
|
|
2451
|
-
if (s in
|
|
2452
|
-
return
|
|
2445
|
+
if (s in e)
|
|
2446
|
+
return e[s];
|
|
2453
2447
|
if (s in _2)
|
|
2454
2448
|
return _2[s];
|
|
2455
2449
|
} });
|
|
@@ -2495,7 +2489,7 @@ var init_dist2 = __esm(() => {
|
|
|
2495
2489
|
formatStack(stack, message, opts) {
|
|
2496
2490
|
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
2497
2491
|
return `
|
|
2498
|
-
${indent}` + parseStack(stack, message).map((line) => " " + line.replace(/^at +/, (
|
|
2492
|
+
${indent}` + parseStack(stack, message).map((line) => " " + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\((.+)\)/, (_, m) => `(${colors.cyan(m)})`)).join(`
|
|
2499
2493
|
${indent}`);
|
|
2500
2494
|
}
|
|
2501
2495
|
formatType(logObj, isBadge, opts) {
|
|
@@ -2559,7 +2553,7 @@ function defaultGenerateNonce() {
|
|
|
2559
2553
|
}
|
|
2560
2554
|
function performLogin(deps) {
|
|
2561
2555
|
return new Promise((resolve) => {
|
|
2562
|
-
const { openBrowser
|
|
2556
|
+
const { openBrowser, onSaveToken, apiUrl, timeoutMs, log, tokenParam = "api_key", loginPath = "/api/auth/cli", generateNonce = defaultGenerateNonce, accentColor = "#c9a227", extraParams = {} } = deps;
|
|
2563
2557
|
const expectedState = generateNonce();
|
|
2564
2558
|
const server = http.createServer((req, res) => {
|
|
2565
2559
|
const url = new URL(req.url ?? "/", "http://localhost");
|
|
@@ -2636,7 +2630,7 @@ function performLogin(deps) {
|
|
|
2636
2630
|
loginUrlObj.searchParams.set(key, value);
|
|
2637
2631
|
}
|
|
2638
2632
|
const loginUrl = loginUrlObj.toString();
|
|
2639
|
-
|
|
2633
|
+
openBrowser(loginUrl).catch(() => {
|
|
2640
2634
|
if (log) {
|
|
2641
2635
|
log(`Could not open browser. Open this URL manually:
|
|
2642
2636
|
${loginUrl}`);
|
|
@@ -3099,7 +3093,7 @@ var init_connect = () => {};
|
|
|
3099
3093
|
var init_settings = () => {};
|
|
3100
3094
|
|
|
3101
3095
|
// ../shared/dist/version.js
|
|
3102
|
-
var BAT_VERSION = "3.0
|
|
3096
|
+
var BAT_VERSION = "3.2.0";
|
|
3103
3097
|
|
|
3104
3098
|
// ../shared/dist/workstations.js
|
|
3105
3099
|
function fail(error) {
|
|
@@ -3211,6 +3205,9 @@ function ipFamily(input) {
|
|
|
3211
3205
|
}
|
|
3212
3206
|
return null;
|
|
3213
3207
|
}
|
|
3208
|
+
function isPkceS256Challenge(input) {
|
|
3209
|
+
return PKCE_CHALLENGE_PATTERN.test(input);
|
|
3210
|
+
}
|
|
3214
3211
|
function isPkceCodeVerifier(input) {
|
|
3215
3212
|
return PKCE_VERIFIER_PATTERN.test(input);
|
|
3216
3213
|
}
|
|
@@ -3671,7 +3668,65 @@ function validateWorkstationLoginExchange(input) {
|
|
|
3671
3668
|
}
|
|
3672
3669
|
};
|
|
3673
3670
|
}
|
|
3674
|
-
|
|
3671
|
+
function normalizePairingCode(input) {
|
|
3672
|
+
const compact = input.replace(/[\s-]/g, "").toUpperCase();
|
|
3673
|
+
if (compact.length !== WORKSTATION_PAIRING_LENGTH) {
|
|
3674
|
+
return null;
|
|
3675
|
+
}
|
|
3676
|
+
for (const character of compact) {
|
|
3677
|
+
if (!WORKSTATION_PAIRING_ALPHABET.includes(character)) {
|
|
3678
|
+
return null;
|
|
3679
|
+
}
|
|
3680
|
+
}
|
|
3681
|
+
return compact;
|
|
3682
|
+
}
|
|
3683
|
+
function formatPairingCode(code) {
|
|
3684
|
+
const normalized = normalizePairingCode(code);
|
|
3685
|
+
if (normalized === null) {
|
|
3686
|
+
return code;
|
|
3687
|
+
}
|
|
3688
|
+
return `${normalized.slice(0, 4)}-${normalized.slice(4)}`;
|
|
3689
|
+
}
|
|
3690
|
+
function isPairingCode(input) {
|
|
3691
|
+
return normalizePairingCode(input) !== null;
|
|
3692
|
+
}
|
|
3693
|
+
function validateWorkstationName(input) {
|
|
3694
|
+
const name = readString("name", input, WORKSTATION_NAME_MAX_LENGTH);
|
|
3695
|
+
if (!name.ok) {
|
|
3696
|
+
return name;
|
|
3697
|
+
}
|
|
3698
|
+
if (name.value.trim() === "") {
|
|
3699
|
+
return fail("name must not be blank");
|
|
3700
|
+
}
|
|
3701
|
+
return { ok: true, value: name.value.trim() };
|
|
3702
|
+
}
|
|
3703
|
+
function validateWorkstationPairStart(input) {
|
|
3704
|
+
const root = readObject("pair", input, PAIR_START_KEYS);
|
|
3705
|
+
if (!root.ok) {
|
|
3706
|
+
return root;
|
|
3707
|
+
}
|
|
3708
|
+
const installationId = readUuid("installation_id", root.value.installation_id);
|
|
3709
|
+
if (!installationId.ok) {
|
|
3710
|
+
return installationId;
|
|
3711
|
+
}
|
|
3712
|
+
const name = validateWorkstationName(root.value.name);
|
|
3713
|
+
if (!name.ok) {
|
|
3714
|
+
return name;
|
|
3715
|
+
}
|
|
3716
|
+
const challenge = root.value.code_challenge;
|
|
3717
|
+
if (typeof challenge !== "string" || !isPkceS256Challenge(challenge)) {
|
|
3718
|
+
return fail("code_challenge must be a 43 character base64url S256 digest");
|
|
3719
|
+
}
|
|
3720
|
+
return {
|
|
3721
|
+
ok: true,
|
|
3722
|
+
value: {
|
|
3723
|
+
installation_id: installationId.value,
|
|
3724
|
+
name: name.value,
|
|
3725
|
+
code_challenge: challenge
|
|
3726
|
+
}
|
|
3727
|
+
};
|
|
3728
|
+
}
|
|
3729
|
+
var WORKSTATION_INTERVAL_SECONDS = 600, WORKSTATION_PING_COUNT = 3, WORKSTATION_MAX_TARGETS = 100, WORKSTATION_BODY_MAX_BYTES = 65536, WORKSTATION_REPORT_SKEW_SECONDS = 300, WORKSTATION_MAX_RUN_MS = 120000, WORKSTATION_STALE_AFTER_SECONDS, WORKSTATION_NAME_MAX_LENGTH = 64, WORKSTATION_PAIRING_TTL_SECONDS = 300, WORKSTATION_PAIRING_ALPHABET = "ABCDEFGHJKMNPQRSTVWXYZ23456789", WORKSTATION_PAIRING_LENGTH = 8, WORKSTATION_LIMITS, WORKSTATION_CONNECTIVITY_STATUSES, UUID_PATTERN, IPV4_PATTERN, PKCE_CHALLENGE_PATTERN, PKCE_VERIFIER_PATTERN, WORKSTATION_TOKEN_PATTERN, IPV6_CHARS, REPORT_KEYS, CPU_KEYS, MEM_KEYS, DISK_KEYS, NETWORK_KEYS, INTERFACE_KEYS, ADDRESS_KEYS, CONNECTIVITY_KEYS, TARGET_KEYS, TARGETS_RESPONSE_KEYS, LOGIN_EXCHANGE_KEYS, PAIR_START_KEYS;
|
|
3675
3730
|
var init_workstations = __esm(() => {
|
|
3676
3731
|
WORKSTATION_STALE_AFTER_SECONDS = WORKSTATION_INTERVAL_SECONDS * 3;
|
|
3677
3732
|
WORKSTATION_LIMITS = {
|
|
@@ -3707,6 +3762,7 @@ var init_workstations = __esm(() => {
|
|
|
3707
3762
|
];
|
|
3708
3763
|
UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
3709
3764
|
IPV4_PATTERN = /^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/;
|
|
3765
|
+
PKCE_CHALLENGE_PATTERN = /^[A-Za-z0-9_-]{43}$/;
|
|
3710
3766
|
PKCE_VERIFIER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;
|
|
3711
3767
|
WORKSTATION_TOKEN_PATTERN = /^batw_[A-Za-z0-9_-]{43}$/;
|
|
3712
3768
|
IPV6_CHARS = /^[0-9a-f:.]+$/i;
|
|
@@ -3746,6 +3802,7 @@ var init_workstations = __esm(() => {
|
|
|
3746
3802
|
TARGET_KEYS = ["server_id", "name", "address", "family"];
|
|
3747
3803
|
TARGETS_RESPONSE_KEYS = ["data", "interval_seconds", "ping_count"];
|
|
3748
3804
|
LOGIN_EXCHANGE_KEYS = ["code", "code_verifier", "installation_id"];
|
|
3805
|
+
PAIR_START_KEYS = ["installation_id", "name", "code_challenge"];
|
|
3749
3806
|
});
|
|
3750
3807
|
|
|
3751
3808
|
// ../shared/dist/index.js
|
|
@@ -3812,15 +3869,15 @@ class HttpClient {
|
|
|
3812
3869
|
controller.abort();
|
|
3813
3870
|
}, this.timeoutMs);
|
|
3814
3871
|
try {
|
|
3815
|
-
const
|
|
3872
|
+
const init = {
|
|
3816
3873
|
method,
|
|
3817
3874
|
headers,
|
|
3818
3875
|
signal: controller.signal
|
|
3819
3876
|
};
|
|
3820
3877
|
if (body !== undefined) {
|
|
3821
|
-
|
|
3878
|
+
init.body = JSON.stringify(body);
|
|
3822
3879
|
}
|
|
3823
|
-
const res = await fetch(url,
|
|
3880
|
+
const res = await fetch(url, init);
|
|
3824
3881
|
if (!res.ok) {
|
|
3825
3882
|
let message = `HTTP ${res.status}`;
|
|
3826
3883
|
try {
|
|
@@ -4029,7 +4086,7 @@ function isRetryable(err) {
|
|
|
4029
4086
|
}
|
|
4030
4087
|
async function uploadReport(workerUrl, token, report, deps = {}) {
|
|
4031
4088
|
const attempts = deps.attempts ?? UPLOAD_ATTEMPTS;
|
|
4032
|
-
const sleep = deps.sleep ?? ((ms) => new Promise((
|
|
4089
|
+
const sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
4033
4090
|
const body = JSON.stringify(report);
|
|
4034
4091
|
const client = new HttpClient(workerUrl, token, deps.timeoutMs ?? REQUEST_TIMEOUT_MS, deps.signal);
|
|
4035
4092
|
let lastError;
|
|
@@ -4064,6 +4121,54 @@ async function revokeWorkstationKey(workerUrl, token, options = {}) {
|
|
|
4064
4121
|
throw err;
|
|
4065
4122
|
}
|
|
4066
4123
|
}
|
|
4124
|
+
async function startPairing(origins, input, options = {}) {
|
|
4125
|
+
const validated = validateWorkstationPairStart(input);
|
|
4126
|
+
if (!validated.ok) {
|
|
4127
|
+
throw new Error(`invalid pairing request: ${validated.error}`);
|
|
4128
|
+
}
|
|
4129
|
+
const client = new HttpClient(origins.machine, undefined, options.timeoutMs ?? REQUEST_TIMEOUT_MS, options.signal);
|
|
4130
|
+
const raw = await client.post("/api/workstation-auth/pair", validated.value);
|
|
4131
|
+
if (typeof raw !== "object" || raw === null) {
|
|
4132
|
+
throw new Error("pairing start returned no object");
|
|
4133
|
+
}
|
|
4134
|
+
const record = raw;
|
|
4135
|
+
if (typeof record.pairing_code !== "string" || !isPairingCode(record.pairing_code)) {
|
|
4136
|
+
throw new Error("pairing start returned no valid pairing_code");
|
|
4137
|
+
}
|
|
4138
|
+
if (typeof record.code !== "string" || record.code.length < 32) {
|
|
4139
|
+
throw new Error("pairing start returned no valid exchange code");
|
|
4140
|
+
}
|
|
4141
|
+
if (typeof record.expires_at !== "number" || !Number.isFinite(record.expires_at)) {
|
|
4142
|
+
throw new Error("pairing start returned no expiry");
|
|
4143
|
+
}
|
|
4144
|
+
return {
|
|
4145
|
+
pairing_code: record.pairing_code,
|
|
4146
|
+
code: record.code,
|
|
4147
|
+
name: typeof record.name === "string" ? record.name : "",
|
|
4148
|
+
expires_at: record.expires_at
|
|
4149
|
+
};
|
|
4150
|
+
}
|
|
4151
|
+
async function pairingStatus(origins, pairingCode, options = {}) {
|
|
4152
|
+
const normalized = normalizePairingCode(pairingCode);
|
|
4153
|
+
if (normalized === null) {
|
|
4154
|
+
throw new Error("invalid pairing code");
|
|
4155
|
+
}
|
|
4156
|
+
const client = new HttpClient(origins.machine, undefined, options.timeoutMs ?? REQUEST_TIMEOUT_MS, options.signal);
|
|
4157
|
+
const raw = await client.get(`/api/workstation-auth/pair/${normalized}`);
|
|
4158
|
+
if (typeof raw !== "object" || raw === null) {
|
|
4159
|
+
throw new Error("pairing status returned no object");
|
|
4160
|
+
}
|
|
4161
|
+
const record = raw;
|
|
4162
|
+
const status = record.status;
|
|
4163
|
+
if (status !== "pending" && status !== "approved" && status !== "expired") {
|
|
4164
|
+
throw new Error("pairing status returned an unknown state");
|
|
4165
|
+
}
|
|
4166
|
+
return {
|
|
4167
|
+
status,
|
|
4168
|
+
name: typeof record.name === "string" ? record.name : "",
|
|
4169
|
+
expires_at: typeof record.expires_at === "number" ? record.expires_at : 0
|
|
4170
|
+
};
|
|
4171
|
+
}
|
|
4067
4172
|
var REQUEST_TIMEOUT_MS = 30000, UPLOAD_ATTEMPTS = 3, RETRY_BASE_MS = 500;
|
|
4068
4173
|
var init_api2 = __esm(() => {
|
|
4069
4174
|
init_dist4();
|
|
@@ -4267,33 +4372,33 @@ function buildPlan(context, backend) {
|
|
|
4267
4372
|
return { backend, files: [], register: [], unregister: [], finalize: [] };
|
|
4268
4373
|
}
|
|
4269
4374
|
}
|
|
4270
|
-
function resolveBackend(requested,
|
|
4375
|
+
function resolveBackend(requested, platform, hasSystemd) {
|
|
4271
4376
|
if (requested !== undefined) {
|
|
4272
4377
|
if (!SCHEDULER_BACKENDS.includes(requested)) {
|
|
4273
4378
|
throw new Error(`unknown --backend "${requested}" — use one of: ${SCHEDULER_BACKENDS.join(", ")}`);
|
|
4274
4379
|
}
|
|
4275
4380
|
const backend = requested;
|
|
4276
|
-
if (backend === "launchd" &&
|
|
4381
|
+
if (backend === "launchd" && platform !== "darwin") {
|
|
4277
4382
|
throw new Error("--backend launchd is only available on macOS");
|
|
4278
4383
|
}
|
|
4279
|
-
if (backend === "windows" &&
|
|
4384
|
+
if (backend === "windows" && platform !== "win32") {
|
|
4280
4385
|
throw new Error("--backend windows is only available on Windows");
|
|
4281
4386
|
}
|
|
4282
|
-
if (backend === "systemd" &&
|
|
4387
|
+
if (backend === "systemd" && platform !== "linux") {
|
|
4283
4388
|
throw new Error("--backend systemd is only available on Linux");
|
|
4284
4389
|
}
|
|
4285
|
-
if (backend === "cron" &&
|
|
4390
|
+
if (backend === "cron" && platform === "win32") {
|
|
4286
4391
|
throw new Error("--backend cron is not available on Windows");
|
|
4287
4392
|
}
|
|
4288
4393
|
return backend;
|
|
4289
4394
|
}
|
|
4290
|
-
if (
|
|
4395
|
+
if (platform === "darwin") {
|
|
4291
4396
|
return "launchd";
|
|
4292
4397
|
}
|
|
4293
|
-
if (
|
|
4398
|
+
if (platform === "win32") {
|
|
4294
4399
|
return "windows";
|
|
4295
4400
|
}
|
|
4296
|
-
if (
|
|
4401
|
+
if (platform === "linux") {
|
|
4297
4402
|
if (!hasSystemd) {
|
|
4298
4403
|
throw new Error("systemd --user was not found; pass --backend cron to schedule with crontab");
|
|
4299
4404
|
}
|
|
@@ -4346,14 +4451,14 @@ function getWorkstationPaths(home = homedir4()) {
|
|
|
4346
4451
|
logPath: join5(dir, "probe.log")
|
|
4347
4452
|
};
|
|
4348
4453
|
}
|
|
4349
|
-
function ensureDirectory(paths,
|
|
4454
|
+
function ensureDirectory(paths, platform) {
|
|
4350
4455
|
mkdirSync3(paths.dir, { recursive: true, mode: 448 });
|
|
4351
|
-
if (
|
|
4456
|
+
if (platform !== "win32") {
|
|
4352
4457
|
chmodSync(paths.dir, 448);
|
|
4353
4458
|
}
|
|
4354
4459
|
}
|
|
4355
|
-
function enforcePrivateFile(path,
|
|
4356
|
-
if (
|
|
4460
|
+
function enforcePrivateFile(path, platform = process.platform) {
|
|
4461
|
+
if (platform === "win32") {
|
|
4357
4462
|
return;
|
|
4358
4463
|
}
|
|
4359
4464
|
chmodSync(path, 384);
|
|
@@ -4400,19 +4505,19 @@ async function ensureInstallationId(paths, deps = {}) {
|
|
|
4400
4505
|
if (existing) {
|
|
4401
4506
|
return existing;
|
|
4402
4507
|
}
|
|
4403
|
-
const
|
|
4404
|
-
ensureDirectory(paths,
|
|
4508
|
+
const platform = deps.platform ?? process.platform;
|
|
4509
|
+
ensureDirectory(paths, platform);
|
|
4405
4510
|
if (deps.acl) {
|
|
4406
4511
|
await deps.acl(paths.dir);
|
|
4407
4512
|
}
|
|
4408
4513
|
const id = randomUUID3();
|
|
4409
4514
|
writeAtomic(paths.installationPath, `${JSON.stringify({ installation_id: id }, null, 2)}
|
|
4410
4515
|
`);
|
|
4411
|
-
enforcePrivateFile(paths.installationPath,
|
|
4516
|
+
enforcePrivateFile(paths.installationPath, platform);
|
|
4412
4517
|
return id;
|
|
4413
4518
|
}
|
|
4414
|
-
function isLoopbackHost(
|
|
4415
|
-
return ["127.0.0.1", "localhost", "[::1]", "::1"].includes(
|
|
4519
|
+
function isLoopbackHost(hostname) {
|
|
4520
|
+
return ["127.0.0.1", "localhost", "[::1]", "::1"].includes(hostname);
|
|
4416
4521
|
}
|
|
4417
4522
|
function isAcceptableWorkerUrl(input) {
|
|
4418
4523
|
let url;
|
|
@@ -4461,14 +4566,14 @@ function readCredential(paths, deps = {}) {
|
|
|
4461
4566
|
return { workstation_id: workstationId, worker_url: workerUrl, token };
|
|
4462
4567
|
}
|
|
4463
4568
|
async function writeCredential(paths, credential, deps = {}) {
|
|
4464
|
-
const
|
|
4465
|
-
ensureDirectory(paths,
|
|
4569
|
+
const platform = deps.platform ?? process.platform;
|
|
4570
|
+
ensureDirectory(paths, platform);
|
|
4466
4571
|
if (deps.acl) {
|
|
4467
4572
|
await deps.acl(paths.dir);
|
|
4468
4573
|
}
|
|
4469
4574
|
writeAtomic(paths.credentialPath, `${JSON.stringify(credential, null, 2)}
|
|
4470
4575
|
`);
|
|
4471
|
-
enforcePrivateFile(paths.credentialPath,
|
|
4576
|
+
enforcePrivateFile(paths.credentialPath, platform);
|
|
4472
4577
|
}
|
|
4473
4578
|
function deleteCredential(paths) {
|
|
4474
4579
|
if (!existsSync6(paths.credentialPath)) {
|
|
@@ -4512,6 +4617,89 @@ var init_store = __esm(() => {
|
|
|
4512
4617
|
init_plan();
|
|
4513
4618
|
});
|
|
4514
4619
|
|
|
4620
|
+
// src/workstation/headless.ts
|
|
4621
|
+
async function performHeadlessLogin(deps) {
|
|
4622
|
+
const now = deps.now ?? (() => Math.floor(Date.now() / 1000));
|
|
4623
|
+
const sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
4624
|
+
const installationId = await ensureInstallationId(deps.paths, deps.store);
|
|
4625
|
+
const pkce = generatePkce();
|
|
4626
|
+
let start;
|
|
4627
|
+
try {
|
|
4628
|
+
start = await (deps.start ?? startPairing)(deps.origins, {
|
|
4629
|
+
installation_id: installationId,
|
|
4630
|
+
name: deps.name,
|
|
4631
|
+
code_challenge: pkce.challenge
|
|
4632
|
+
});
|
|
4633
|
+
} catch (err) {
|
|
4634
|
+
error(`Pairing failed: ${err.message}`);
|
|
4635
|
+
return null;
|
|
4636
|
+
}
|
|
4637
|
+
(deps.announce ?? defaultAnnounce)({
|
|
4638
|
+
code: formatPairingCode(start.pairing_code),
|
|
4639
|
+
url: `${deps.origins.dashboard}/workstations`,
|
|
4640
|
+
name: start.name,
|
|
4641
|
+
expiresAt: start.expires_at
|
|
4642
|
+
});
|
|
4643
|
+
const deadline = Math.min(start.expires_at, now() + WORKSTATION_PAIRING_TTL_SECONDS);
|
|
4644
|
+
for (;; ) {
|
|
4645
|
+
if (deps.signal?.aborted) {
|
|
4646
|
+
error("Pairing cancelled");
|
|
4647
|
+
return null;
|
|
4648
|
+
}
|
|
4649
|
+
if (now() >= deadline) {
|
|
4650
|
+
error("Pairing code expired before it was approved");
|
|
4651
|
+
return null;
|
|
4652
|
+
}
|
|
4653
|
+
await sleep(PAIRING_POLL_MS);
|
|
4654
|
+
let status;
|
|
4655
|
+
try {
|
|
4656
|
+
status = await (deps.status ?? pairingStatus)(deps.origins, start.pairing_code, {
|
|
4657
|
+
...deps.signal ? { signal: deps.signal } : {}
|
|
4658
|
+
});
|
|
4659
|
+
} catch (err) {
|
|
4660
|
+
error(`Pairing status failed: ${err.message}`);
|
|
4661
|
+
return null;
|
|
4662
|
+
}
|
|
4663
|
+
if (status.status === "expired") {
|
|
4664
|
+
error("Pairing code expired before it was approved");
|
|
4665
|
+
return null;
|
|
4666
|
+
}
|
|
4667
|
+
if (status.status === "approved") {
|
|
4668
|
+
break;
|
|
4669
|
+
}
|
|
4670
|
+
}
|
|
4671
|
+
let credential;
|
|
4672
|
+
try {
|
|
4673
|
+
credential = await (deps.exchange ?? exchangeLogin)(deps.origins, {
|
|
4674
|
+
code: start.code,
|
|
4675
|
+
code_verifier: pkce.verifier,
|
|
4676
|
+
installation_id: installationId
|
|
4677
|
+
});
|
|
4678
|
+
} catch (err) {
|
|
4679
|
+
error(`Login exchange failed: ${err.message}`);
|
|
4680
|
+
return null;
|
|
4681
|
+
}
|
|
4682
|
+
await writeCredential(deps.paths, credential, deps.store);
|
|
4683
|
+
return { installationId, credential };
|
|
4684
|
+
}
|
|
4685
|
+
function defaultAnnounce(text) {
|
|
4686
|
+
info(`Pairing code: ${text.code}`);
|
|
4687
|
+
info(` name: ${text.name}`);
|
|
4688
|
+
info(` approve at: ${text.url} → "Pair a workstation"`);
|
|
4689
|
+
info(` expires: ${new Date(text.expiresAt * 1000).toLocaleTimeString()}`);
|
|
4690
|
+
info("");
|
|
4691
|
+
info("Waiting for approval...");
|
|
4692
|
+
success("(leave this terminal open)");
|
|
4693
|
+
}
|
|
4694
|
+
var PAIRING_POLL_MS = 5000;
|
|
4695
|
+
var init_headless = __esm(() => {
|
|
4696
|
+
init_dist4();
|
|
4697
|
+
init_output();
|
|
4698
|
+
init_api2();
|
|
4699
|
+
init_login2();
|
|
4700
|
+
init_store();
|
|
4701
|
+
});
|
|
4702
|
+
|
|
4515
4703
|
// src/workstation/login.ts
|
|
4516
4704
|
import { createHash, randomBytes as randomBytes2 } from "node:crypto";
|
|
4517
4705
|
import { hostname as osHostname } from "node:os";
|
|
@@ -4571,8 +4759,18 @@ async function performWorkstationLogin(deps) {
|
|
|
4571
4759
|
async function runWorkstationLogin(deps) {
|
|
4572
4760
|
info(`Dashboard: ${deps.origins.dashboard}`);
|
|
4573
4761
|
info(`Ingest: ${deps.origins.machine}`);
|
|
4574
|
-
|
|
4575
|
-
|
|
4762
|
+
if (deps.headless === undefined) {
|
|
4763
|
+
info("Opening browser for workstation authorization...");
|
|
4764
|
+
} else {
|
|
4765
|
+
info(`Headless pairing for "${deps.headless.name}" — no browser on this machine.`);
|
|
4766
|
+
}
|
|
4767
|
+
const outcome = deps.headless === undefined ? await performWorkstationLogin(deps) : await performHeadlessLogin({
|
|
4768
|
+
paths: deps.paths,
|
|
4769
|
+
origins: deps.origins,
|
|
4770
|
+
name: deps.headless.name,
|
|
4771
|
+
...deps.store ? { store: deps.store } : {},
|
|
4772
|
+
...deps.headless.announce ? { announce: deps.headless.announce } : {}
|
|
4773
|
+
});
|
|
4576
4774
|
if (!outcome) {
|
|
4577
4775
|
return { exitCode: 1 };
|
|
4578
4776
|
}
|
|
@@ -4599,6 +4797,7 @@ var init_login2 = __esm(() => {
|
|
|
4599
4797
|
init_dist3();
|
|
4600
4798
|
init_output();
|
|
4601
4799
|
init_api2();
|
|
4800
|
+
init_headless();
|
|
4602
4801
|
init_store();
|
|
4603
4802
|
});
|
|
4604
4803
|
|
|
@@ -4624,7 +4823,7 @@ var MAX_CAPTURE_BYTES, runCommand2 = (command, args, options) => new Promise((re
|
|
|
4624
4823
|
});
|
|
4625
4824
|
return;
|
|
4626
4825
|
}
|
|
4627
|
-
let
|
|
4826
|
+
let stdout = "";
|
|
4628
4827
|
let stderr = "";
|
|
4629
4828
|
let settled = false;
|
|
4630
4829
|
let timedOut = false;
|
|
@@ -4666,7 +4865,7 @@ var MAX_CAPTURE_BYTES, runCommand2 = (command, args, options) => new Promise((re
|
|
|
4666
4865
|
finish({
|
|
4667
4866
|
code: null,
|
|
4668
4867
|
signal: null,
|
|
4669
|
-
stdout
|
|
4868
|
+
stdout,
|
|
4670
4869
|
stderr,
|
|
4671
4870
|
timedOut,
|
|
4672
4871
|
aborted,
|
|
@@ -4674,8 +4873,8 @@ var MAX_CAPTURE_BYTES, runCommand2 = (command, args, options) => new Promise((re
|
|
|
4674
4873
|
});
|
|
4675
4874
|
});
|
|
4676
4875
|
child.stdout?.on("data", (chunk) => {
|
|
4677
|
-
if (
|
|
4678
|
-
|
|
4876
|
+
if (stdout.length < MAX_CAPTURE_BYTES) {
|
|
4877
|
+
stdout += chunk.toString("utf-8");
|
|
4679
4878
|
}
|
|
4680
4879
|
});
|
|
4681
4880
|
child.stderr?.on("data", (chunk) => {
|
|
@@ -4684,7 +4883,7 @@ var MAX_CAPTURE_BYTES, runCommand2 = (command, args, options) => new Promise((re
|
|
|
4684
4883
|
}
|
|
4685
4884
|
});
|
|
4686
4885
|
child.on("close", (code, signal) => {
|
|
4687
|
-
finish({ code, signal, stdout
|
|
4886
|
+
finish({ code, signal, stdout, stderr, timedOut, aborted });
|
|
4688
4887
|
});
|
|
4689
4888
|
if (options.input !== undefined) {
|
|
4690
4889
|
child.stdin?.on("error", () => {});
|
|
@@ -4698,8 +4897,8 @@ var init_exec = __esm(() => {
|
|
|
4698
4897
|
});
|
|
4699
4898
|
|
|
4700
4899
|
// src/commands/workstation/login.ts
|
|
4701
|
-
function storeDepsFor(
|
|
4702
|
-
if (
|
|
4900
|
+
function storeDepsFor(platform, exec = runCommand2) {
|
|
4901
|
+
if (platform !== "win32") {
|
|
4703
4902
|
return;
|
|
4704
4903
|
}
|
|
4705
4904
|
return { acl: (dir) => restrictWindowsAcl(dir, exec) };
|
|
@@ -4709,10 +4908,15 @@ async function runLoginCommand(deps = {}) {
|
|
|
4709
4908
|
const paths = getWorkstationPaths();
|
|
4710
4909
|
const origins = resolveOrigins(deps.loopbackUrl);
|
|
4711
4910
|
const store = storeDepsFor(process.platform);
|
|
4911
|
+
if (deps.headless === true && (deps.name ?? "").trim() === "") {
|
|
4912
|
+
error("Headless login needs --name so the workstation is identifiable before approval.");
|
|
4913
|
+
return 1;
|
|
4914
|
+
}
|
|
4712
4915
|
const { exitCode, report } = await runWorkstationLogin({
|
|
4713
4916
|
paths,
|
|
4714
4917
|
origins,
|
|
4715
|
-
...store ? { store } : {}
|
|
4918
|
+
...store ? { store } : {},
|
|
4919
|
+
...deps.headless === true ? { headless: { name: (deps.name ?? "").trim() } } : {}
|
|
4716
4920
|
});
|
|
4717
4921
|
if (exitCode !== 0 || !report) {
|
|
4718
4922
|
return exitCode;
|
|
@@ -4740,11 +4944,21 @@ var init_login3 = __esm(() => {
|
|
|
4740
4944
|
"loopback-url": {
|
|
4741
4945
|
type: "string",
|
|
4742
4946
|
description: "Loopback Worker origin for local acceptance (never production)"
|
|
4947
|
+
},
|
|
4948
|
+
headless: {
|
|
4949
|
+
type: "boolean",
|
|
4950
|
+
description: "Print a five minute pairing code instead of opening a browser"
|
|
4951
|
+
},
|
|
4952
|
+
name: {
|
|
4953
|
+
type: "string",
|
|
4954
|
+
description: "Display name claimed by a headless pairing"
|
|
4743
4955
|
}
|
|
4744
4956
|
},
|
|
4745
4957
|
async run({ args }) {
|
|
4746
4958
|
process.exitCode = await runLoginCommand({
|
|
4747
|
-
...args["loopback-url"] ? { loopbackUrl: args["loopback-url"] } : {}
|
|
4959
|
+
...args["loopback-url"] ? { loopbackUrl: args["loopback-url"] } : {},
|
|
4960
|
+
...args.headless ? { headless: true } : {},
|
|
4961
|
+
...typeof args.name === "string" ? { name: args.name } : {}
|
|
4748
4962
|
});
|
|
4749
4963
|
}
|
|
4750
4964
|
});
|
|
@@ -4842,11 +5056,11 @@ function createDeadline(totalMs, now = monotonicNow) {
|
|
|
4842
5056
|
}
|
|
4843
5057
|
|
|
4844
5058
|
// ../../node_modules/.bun/graceful-fs@4.2.11/node_modules/graceful-fs/polyfills.js
|
|
4845
|
-
var require_polyfills = __commonJS((exports, module)
|
|
5059
|
+
var require_polyfills = __commonJS(function(exports, module) {
|
|
4846
5060
|
var constants = __require("constants");
|
|
4847
5061
|
var origCwd = process.cwd;
|
|
4848
5062
|
var cwd = null;
|
|
4849
|
-
var
|
|
5063
|
+
var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform;
|
|
4850
5064
|
process.cwd = function() {
|
|
4851
5065
|
if (!cwd)
|
|
4852
5066
|
cwd = origCwd.call(process);
|
|
@@ -4857,9 +5071,9 @@ var require_polyfills = __commonJS((exports, module) => {
|
|
|
4857
5071
|
} catch (er) {}
|
|
4858
5072
|
if (typeof process.chdir === "function") {
|
|
4859
5073
|
chdir = process.chdir;
|
|
4860
|
-
process.chdir = function(
|
|
5074
|
+
process.chdir = function(d) {
|
|
4861
5075
|
cwd = null;
|
|
4862
|
-
chdir.call(process,
|
|
5076
|
+
chdir.call(process, d);
|
|
4863
5077
|
};
|
|
4864
5078
|
if (Object.setPrototypeOf)
|
|
4865
5079
|
Object.setPrototypeOf(process.chdir, chdir);
|
|
@@ -4905,7 +5119,7 @@ var require_polyfills = __commonJS((exports, module) => {
|
|
|
4905
5119
|
};
|
|
4906
5120
|
fs.lchownSync = function() {};
|
|
4907
5121
|
}
|
|
4908
|
-
if (
|
|
5122
|
+
if (platform === "win32") {
|
|
4909
5123
|
fs.rename = typeof fs.rename !== "function" ? fs.rename : function(fs$rename) {
|
|
4910
5124
|
function rename(from, to, cb) {
|
|
4911
5125
|
var start = Date.now();
|
|
@@ -4938,7 +5152,7 @@ var require_polyfills = __commonJS((exports, module) => {
|
|
|
4938
5152
|
var callback;
|
|
4939
5153
|
if (callback_ && typeof callback_ === "function") {
|
|
4940
5154
|
var eagCounter = 0;
|
|
4941
|
-
callback = function(er,
|
|
5155
|
+
callback = function(er, _, __) {
|
|
4942
5156
|
if (er && er.code === "EAGAIN" && eagCounter < 10) {
|
|
4943
5157
|
eagCounter++;
|
|
4944
5158
|
return fs$read.call(fs, fd, buffer, offset, length, position, callback);
|
|
@@ -4968,82 +5182,82 @@ var require_polyfills = __commonJS((exports, module) => {
|
|
|
4968
5182
|
}
|
|
4969
5183
|
};
|
|
4970
5184
|
}(fs.readSync);
|
|
4971
|
-
function patchLchmod(
|
|
4972
|
-
|
|
4973
|
-
|
|
5185
|
+
function patchLchmod(fs) {
|
|
5186
|
+
fs.lchmod = function(path, mode, callback) {
|
|
5187
|
+
fs.open(path, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) {
|
|
4974
5188
|
if (err) {
|
|
4975
5189
|
if (callback)
|
|
4976
5190
|
callback(err);
|
|
4977
5191
|
return;
|
|
4978
5192
|
}
|
|
4979
|
-
|
|
4980
|
-
|
|
5193
|
+
fs.fchmod(fd, mode, function(err) {
|
|
5194
|
+
fs.close(fd, function(err2) {
|
|
4981
5195
|
if (callback)
|
|
4982
|
-
callback(
|
|
5196
|
+
callback(err || err2);
|
|
4983
5197
|
});
|
|
4984
5198
|
});
|
|
4985
5199
|
});
|
|
4986
5200
|
};
|
|
4987
|
-
|
|
4988
|
-
var fd =
|
|
5201
|
+
fs.lchmodSync = function(path, mode) {
|
|
5202
|
+
var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode);
|
|
4989
5203
|
var threw = true;
|
|
4990
5204
|
var ret;
|
|
4991
5205
|
try {
|
|
4992
|
-
ret =
|
|
5206
|
+
ret = fs.fchmodSync(fd, mode);
|
|
4993
5207
|
threw = false;
|
|
4994
5208
|
} finally {
|
|
4995
5209
|
if (threw) {
|
|
4996
5210
|
try {
|
|
4997
|
-
|
|
5211
|
+
fs.closeSync(fd);
|
|
4998
5212
|
} catch (er) {}
|
|
4999
5213
|
} else {
|
|
5000
|
-
|
|
5214
|
+
fs.closeSync(fd);
|
|
5001
5215
|
}
|
|
5002
5216
|
}
|
|
5003
5217
|
return ret;
|
|
5004
5218
|
};
|
|
5005
5219
|
}
|
|
5006
|
-
function patchLutimes(
|
|
5007
|
-
if (constants.hasOwnProperty("O_SYMLINK") &&
|
|
5008
|
-
|
|
5009
|
-
|
|
5220
|
+
function patchLutimes(fs) {
|
|
5221
|
+
if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) {
|
|
5222
|
+
fs.lutimes = function(path, at, mt, cb) {
|
|
5223
|
+
fs.open(path, constants.O_SYMLINK, function(er, fd) {
|
|
5010
5224
|
if (er) {
|
|
5011
5225
|
if (cb)
|
|
5012
5226
|
cb(er);
|
|
5013
5227
|
return;
|
|
5014
5228
|
}
|
|
5015
|
-
|
|
5016
|
-
|
|
5229
|
+
fs.futimes(fd, at, mt, function(er) {
|
|
5230
|
+
fs.close(fd, function(er2) {
|
|
5017
5231
|
if (cb)
|
|
5018
|
-
cb(
|
|
5232
|
+
cb(er || er2);
|
|
5019
5233
|
});
|
|
5020
5234
|
});
|
|
5021
5235
|
});
|
|
5022
5236
|
};
|
|
5023
|
-
|
|
5024
|
-
var fd =
|
|
5237
|
+
fs.lutimesSync = function(path, at, mt) {
|
|
5238
|
+
var fd = fs.openSync(path, constants.O_SYMLINK);
|
|
5025
5239
|
var ret;
|
|
5026
5240
|
var threw = true;
|
|
5027
5241
|
try {
|
|
5028
|
-
ret =
|
|
5242
|
+
ret = fs.futimesSync(fd, at, mt);
|
|
5029
5243
|
threw = false;
|
|
5030
5244
|
} finally {
|
|
5031
5245
|
if (threw) {
|
|
5032
5246
|
try {
|
|
5033
|
-
|
|
5247
|
+
fs.closeSync(fd);
|
|
5034
5248
|
} catch (er) {}
|
|
5035
5249
|
} else {
|
|
5036
|
-
|
|
5250
|
+
fs.closeSync(fd);
|
|
5037
5251
|
}
|
|
5038
5252
|
}
|
|
5039
5253
|
return ret;
|
|
5040
5254
|
};
|
|
5041
|
-
} else if (
|
|
5042
|
-
|
|
5255
|
+
} else if (fs.futimes) {
|
|
5256
|
+
fs.lutimes = function(_a, _b, _c, cb) {
|
|
5043
5257
|
if (cb)
|
|
5044
5258
|
process.nextTick(cb);
|
|
5045
5259
|
};
|
|
5046
|
-
|
|
5260
|
+
fs.lutimesSync = function() {};
|
|
5047
5261
|
}
|
|
5048
5262
|
}
|
|
5049
5263
|
function chmodFix(orig) {
|
|
@@ -5145,13 +5359,13 @@ var require_polyfills = __commonJS((exports, module) => {
|
|
|
5145
5359
|
});
|
|
5146
5360
|
|
|
5147
5361
|
// ../../node_modules/.bun/graceful-fs@4.2.11/node_modules/graceful-fs/legacy-streams.js
|
|
5148
|
-
var require_legacy_streams = __commonJS((exports, module)
|
|
5362
|
+
var require_legacy_streams = __commonJS(function(exports, module) {
|
|
5149
5363
|
var Stream = __require("stream").Stream;
|
|
5150
5364
|
module.exports = legacy;
|
|
5151
5365
|
function legacy(fs) {
|
|
5152
5366
|
return {
|
|
5153
5367
|
ReadStream,
|
|
5154
|
-
WriteStream
|
|
5368
|
+
WriteStream
|
|
5155
5369
|
};
|
|
5156
5370
|
function ReadStream(path, options) {
|
|
5157
5371
|
if (!(this instanceof ReadStream))
|
|
@@ -5204,9 +5418,9 @@ var require_legacy_streams = __commonJS((exports, module) => {
|
|
|
5204
5418
|
self._read();
|
|
5205
5419
|
});
|
|
5206
5420
|
}
|
|
5207
|
-
function
|
|
5208
|
-
if (!(this instanceof
|
|
5209
|
-
return new
|
|
5421
|
+
function WriteStream(path, options) {
|
|
5422
|
+
if (!(this instanceof WriteStream))
|
|
5423
|
+
return new WriteStream(path, options);
|
|
5210
5424
|
Stream.call(this);
|
|
5211
5425
|
this.path = path;
|
|
5212
5426
|
this.fd = null;
|
|
@@ -5242,7 +5456,7 @@ var require_legacy_streams = __commonJS((exports, module) => {
|
|
|
5242
5456
|
});
|
|
5243
5457
|
|
|
5244
5458
|
// ../../node_modules/.bun/graceful-fs@4.2.11/node_modules/graceful-fs/clone.js
|
|
5245
|
-
var require_clone = __commonJS((exports, module)
|
|
5459
|
+
var require_clone = __commonJS(function(exports, module) {
|
|
5246
5460
|
module.exports = clone;
|
|
5247
5461
|
var getPrototypeOf = Object.getPrototypeOf || function(obj) {
|
|
5248
5462
|
return obj.__proto__;
|
|
@@ -5262,7 +5476,7 @@ var require_clone = __commonJS((exports, module) => {
|
|
|
5262
5476
|
});
|
|
5263
5477
|
|
|
5264
5478
|
// ../../node_modules/.bun/graceful-fs@4.2.11/node_modules/graceful-fs/graceful-fs.js
|
|
5265
|
-
var require_graceful_fs = __commonJS((exports, module)
|
|
5479
|
+
var require_graceful_fs = __commonJS(function(exports, module) {
|
|
5266
5480
|
var fs = __require("fs");
|
|
5267
5481
|
var polyfills = require_polyfills();
|
|
5268
5482
|
var legacy = require_legacy_streams();
|
|
@@ -5278,10 +5492,10 @@ var require_graceful_fs = __commonJS((exports, module) => {
|
|
|
5278
5492
|
previousSymbol = "___graceful-fs.previous";
|
|
5279
5493
|
}
|
|
5280
5494
|
function noop() {}
|
|
5281
|
-
function publishQueue(context,
|
|
5495
|
+
function publishQueue(context, queue) {
|
|
5282
5496
|
Object.defineProperty(context, gracefulQueue, {
|
|
5283
5497
|
get: function() {
|
|
5284
|
-
return
|
|
5498
|
+
return queue;
|
|
5285
5499
|
}
|
|
5286
5500
|
});
|
|
5287
5501
|
}
|
|
@@ -5290,14 +5504,14 @@ var require_graceful_fs = __commonJS((exports, module) => {
|
|
|
5290
5504
|
debug = util.debuglog("gfs4");
|
|
5291
5505
|
else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
|
|
5292
5506
|
debug = function() {
|
|
5293
|
-
var
|
|
5294
|
-
|
|
5507
|
+
var m = util.format.apply(util, arguments);
|
|
5508
|
+
m = "GFS4: " + m.split(/\n/).join(`
|
|
5295
5509
|
GFS4: `);
|
|
5296
|
-
console.error(
|
|
5510
|
+
console.error(m);
|
|
5297
5511
|
};
|
|
5298
5512
|
if (!fs[gracefulQueue]) {
|
|
5299
|
-
|
|
5300
|
-
publishQueue(fs,
|
|
5513
|
+
queue = global[gracefulQueue] || [];
|
|
5514
|
+
publishQueue(fs, queue);
|
|
5301
5515
|
fs.close = function(fs$close) {
|
|
5302
5516
|
function close(fd, cb) {
|
|
5303
5517
|
return fs$close.call(fs, fd, function(err) {
|
|
@@ -5330,7 +5544,7 @@ GFS4: `);
|
|
|
5330
5544
|
});
|
|
5331
5545
|
}
|
|
5332
5546
|
}
|
|
5333
|
-
var
|
|
5547
|
+
var queue;
|
|
5334
5548
|
if (!global[gracefulQueue]) {
|
|
5335
5549
|
publishQueue(global, fs[gracefulQueue]);
|
|
5336
5550
|
}
|
|
@@ -5339,101 +5553,101 @@ GFS4: `);
|
|
|
5339
5553
|
module.exports = patch(fs);
|
|
5340
5554
|
fs.__patched = true;
|
|
5341
5555
|
}
|
|
5342
|
-
function patch(
|
|
5343
|
-
polyfills(
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
var fs$readFile =
|
|
5348
|
-
|
|
5349
|
-
function
|
|
5556
|
+
function patch(fs) {
|
|
5557
|
+
polyfills(fs);
|
|
5558
|
+
fs.gracefulify = patch;
|
|
5559
|
+
fs.createReadStream = createReadStream;
|
|
5560
|
+
fs.createWriteStream = createWriteStream;
|
|
5561
|
+
var fs$readFile = fs.readFile;
|
|
5562
|
+
fs.readFile = readFile;
|
|
5563
|
+
function readFile(path, options, cb) {
|
|
5350
5564
|
if (typeof options === "function")
|
|
5351
5565
|
cb = options, options = null;
|
|
5352
5566
|
return go$readFile(path, options, cb);
|
|
5353
|
-
function go$readFile(
|
|
5354
|
-
return fs$readFile(
|
|
5567
|
+
function go$readFile(path, options, cb, startTime) {
|
|
5568
|
+
return fs$readFile(path, options, function(err) {
|
|
5355
5569
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
|
5356
|
-
enqueue([go$readFile, [
|
|
5570
|
+
enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]);
|
|
5357
5571
|
else {
|
|
5358
|
-
if (typeof
|
|
5359
|
-
|
|
5572
|
+
if (typeof cb === "function")
|
|
5573
|
+
cb.apply(this, arguments);
|
|
5360
5574
|
}
|
|
5361
5575
|
});
|
|
5362
5576
|
}
|
|
5363
5577
|
}
|
|
5364
|
-
var fs$writeFile =
|
|
5365
|
-
|
|
5366
|
-
function
|
|
5578
|
+
var fs$writeFile = fs.writeFile;
|
|
5579
|
+
fs.writeFile = writeFile;
|
|
5580
|
+
function writeFile(path, data, options, cb) {
|
|
5367
5581
|
if (typeof options === "function")
|
|
5368
5582
|
cb = options, options = null;
|
|
5369
5583
|
return go$writeFile(path, data, options, cb);
|
|
5370
|
-
function go$writeFile(
|
|
5371
|
-
return fs$writeFile(
|
|
5584
|
+
function go$writeFile(path, data, options, cb, startTime) {
|
|
5585
|
+
return fs$writeFile(path, data, options, function(err) {
|
|
5372
5586
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
|
5373
|
-
enqueue([go$writeFile, [
|
|
5587
|
+
enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]);
|
|
5374
5588
|
else {
|
|
5375
|
-
if (typeof
|
|
5376
|
-
|
|
5589
|
+
if (typeof cb === "function")
|
|
5590
|
+
cb.apply(this, arguments);
|
|
5377
5591
|
}
|
|
5378
5592
|
});
|
|
5379
5593
|
}
|
|
5380
5594
|
}
|
|
5381
|
-
var fs$appendFile =
|
|
5595
|
+
var fs$appendFile = fs.appendFile;
|
|
5382
5596
|
if (fs$appendFile)
|
|
5383
|
-
|
|
5597
|
+
fs.appendFile = appendFile;
|
|
5384
5598
|
function appendFile(path, data, options, cb) {
|
|
5385
5599
|
if (typeof options === "function")
|
|
5386
5600
|
cb = options, options = null;
|
|
5387
5601
|
return go$appendFile(path, data, options, cb);
|
|
5388
|
-
function go$appendFile(
|
|
5389
|
-
return fs$appendFile(
|
|
5602
|
+
function go$appendFile(path, data, options, cb, startTime) {
|
|
5603
|
+
return fs$appendFile(path, data, options, function(err) {
|
|
5390
5604
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
|
5391
|
-
enqueue([go$appendFile, [
|
|
5605
|
+
enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]);
|
|
5392
5606
|
else {
|
|
5393
|
-
if (typeof
|
|
5394
|
-
|
|
5607
|
+
if (typeof cb === "function")
|
|
5608
|
+
cb.apply(this, arguments);
|
|
5395
5609
|
}
|
|
5396
5610
|
});
|
|
5397
5611
|
}
|
|
5398
5612
|
}
|
|
5399
|
-
var fs$copyFile =
|
|
5613
|
+
var fs$copyFile = fs.copyFile;
|
|
5400
5614
|
if (fs$copyFile)
|
|
5401
|
-
|
|
5402
|
-
function copyFile(
|
|
5615
|
+
fs.copyFile = copyFile;
|
|
5616
|
+
function copyFile(src, dest, flags, cb) {
|
|
5403
5617
|
if (typeof flags === "function") {
|
|
5404
5618
|
cb = flags;
|
|
5405
5619
|
flags = 0;
|
|
5406
5620
|
}
|
|
5407
|
-
return go$copyFile(
|
|
5408
|
-
function go$copyFile(
|
|
5409
|
-
return fs$copyFile(
|
|
5621
|
+
return go$copyFile(src, dest, flags, cb);
|
|
5622
|
+
function go$copyFile(src, dest, flags, cb, startTime) {
|
|
5623
|
+
return fs$copyFile(src, dest, flags, function(err) {
|
|
5410
5624
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
|
5411
|
-
enqueue([go$copyFile, [
|
|
5625
|
+
enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]);
|
|
5412
5626
|
else {
|
|
5413
|
-
if (typeof
|
|
5414
|
-
|
|
5627
|
+
if (typeof cb === "function")
|
|
5628
|
+
cb.apply(this, arguments);
|
|
5415
5629
|
}
|
|
5416
5630
|
});
|
|
5417
5631
|
}
|
|
5418
5632
|
}
|
|
5419
|
-
var fs$readdir =
|
|
5420
|
-
|
|
5633
|
+
var fs$readdir = fs.readdir;
|
|
5634
|
+
fs.readdir = readdir;
|
|
5421
5635
|
var noReaddirOptionVersions = /^v[0-5]\./;
|
|
5422
5636
|
function readdir(path, options, cb) {
|
|
5423
5637
|
if (typeof options === "function")
|
|
5424
5638
|
cb = options, options = null;
|
|
5425
|
-
var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$
|
|
5426
|
-
return fs$readdir(
|
|
5427
|
-
} : function go$
|
|
5428
|
-
return fs$readdir(
|
|
5639
|
+
var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir(path, options, cb, startTime) {
|
|
5640
|
+
return fs$readdir(path, fs$readdirCallback(path, options, cb, startTime));
|
|
5641
|
+
} : function go$readdir(path, options, cb, startTime) {
|
|
5642
|
+
return fs$readdir(path, options, fs$readdirCallback(path, options, cb, startTime));
|
|
5429
5643
|
};
|
|
5430
5644
|
return go$readdir(path, options, cb);
|
|
5431
|
-
function fs$readdirCallback(
|
|
5645
|
+
function fs$readdirCallback(path, options, cb, startTime) {
|
|
5432
5646
|
return function(err, files) {
|
|
5433
5647
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
|
5434
5648
|
enqueue([
|
|
5435
5649
|
go$readdir,
|
|
5436
|
-
[
|
|
5650
|
+
[path, options, cb],
|
|
5437
5651
|
err,
|
|
5438
5652
|
startTime || Date.now(),
|
|
5439
5653
|
Date.now()
|
|
@@ -5441,28 +5655,28 @@ GFS4: `);
|
|
|
5441
5655
|
else {
|
|
5442
5656
|
if (files && files.sort)
|
|
5443
5657
|
files.sort();
|
|
5444
|
-
if (typeof
|
|
5445
|
-
|
|
5658
|
+
if (typeof cb === "function")
|
|
5659
|
+
cb.call(this, err, files);
|
|
5446
5660
|
}
|
|
5447
5661
|
};
|
|
5448
5662
|
}
|
|
5449
5663
|
}
|
|
5450
5664
|
if (process.version.substr(0, 4) === "v0.8") {
|
|
5451
|
-
var legStreams = legacy(
|
|
5665
|
+
var legStreams = legacy(fs);
|
|
5452
5666
|
ReadStream = legStreams.ReadStream;
|
|
5453
|
-
|
|
5667
|
+
WriteStream = legStreams.WriteStream;
|
|
5454
5668
|
}
|
|
5455
|
-
var fs$ReadStream =
|
|
5669
|
+
var fs$ReadStream = fs.ReadStream;
|
|
5456
5670
|
if (fs$ReadStream) {
|
|
5457
5671
|
ReadStream.prototype = Object.create(fs$ReadStream.prototype);
|
|
5458
5672
|
ReadStream.prototype.open = ReadStream$open;
|
|
5459
5673
|
}
|
|
5460
|
-
var fs$WriteStream =
|
|
5674
|
+
var fs$WriteStream = fs.WriteStream;
|
|
5461
5675
|
if (fs$WriteStream) {
|
|
5462
|
-
|
|
5463
|
-
|
|
5676
|
+
WriteStream.prototype = Object.create(fs$WriteStream.prototype);
|
|
5677
|
+
WriteStream.prototype.open = WriteStream$open;
|
|
5464
5678
|
}
|
|
5465
|
-
Object.defineProperty(
|
|
5679
|
+
Object.defineProperty(fs, "ReadStream", {
|
|
5466
5680
|
get: function() {
|
|
5467
5681
|
return ReadStream;
|
|
5468
5682
|
},
|
|
@@ -5472,18 +5686,18 @@ GFS4: `);
|
|
|
5472
5686
|
enumerable: true,
|
|
5473
5687
|
configurable: true
|
|
5474
5688
|
});
|
|
5475
|
-
Object.defineProperty(
|
|
5689
|
+
Object.defineProperty(fs, "WriteStream", {
|
|
5476
5690
|
get: function() {
|
|
5477
|
-
return
|
|
5691
|
+
return WriteStream;
|
|
5478
5692
|
},
|
|
5479
5693
|
set: function(val) {
|
|
5480
|
-
|
|
5694
|
+
WriteStream = val;
|
|
5481
5695
|
},
|
|
5482
5696
|
enumerable: true,
|
|
5483
5697
|
configurable: true
|
|
5484
5698
|
});
|
|
5485
5699
|
var FileReadStream = ReadStream;
|
|
5486
|
-
Object.defineProperty(
|
|
5700
|
+
Object.defineProperty(fs, "FileReadStream", {
|
|
5487
5701
|
get: function() {
|
|
5488
5702
|
return FileReadStream;
|
|
5489
5703
|
},
|
|
@@ -5493,8 +5707,8 @@ GFS4: `);
|
|
|
5493
5707
|
enumerable: true,
|
|
5494
5708
|
configurable: true
|
|
5495
5709
|
});
|
|
5496
|
-
var FileWriteStream =
|
|
5497
|
-
Object.defineProperty(
|
|
5710
|
+
var FileWriteStream = WriteStream;
|
|
5711
|
+
Object.defineProperty(fs, "FileWriteStream", {
|
|
5498
5712
|
get: function() {
|
|
5499
5713
|
return FileWriteStream;
|
|
5500
5714
|
},
|
|
@@ -5524,11 +5738,11 @@ GFS4: `);
|
|
|
5524
5738
|
}
|
|
5525
5739
|
});
|
|
5526
5740
|
}
|
|
5527
|
-
function
|
|
5528
|
-
if (this instanceof
|
|
5741
|
+
function WriteStream(path, options) {
|
|
5742
|
+
if (this instanceof WriteStream)
|
|
5529
5743
|
return fs$WriteStream.apply(this, arguments), this;
|
|
5530
5744
|
else
|
|
5531
|
-
return
|
|
5745
|
+
return WriteStream.apply(Object.create(WriteStream.prototype), arguments);
|
|
5532
5746
|
}
|
|
5533
5747
|
function WriteStream$open() {
|
|
5534
5748
|
var that = this;
|
|
@@ -5543,29 +5757,29 @@ GFS4: `);
|
|
|
5543
5757
|
});
|
|
5544
5758
|
}
|
|
5545
5759
|
function createReadStream(path, options) {
|
|
5546
|
-
return new
|
|
5760
|
+
return new fs.ReadStream(path, options);
|
|
5547
5761
|
}
|
|
5548
5762
|
function createWriteStream(path, options) {
|
|
5549
|
-
return new
|
|
5763
|
+
return new fs.WriteStream(path, options);
|
|
5550
5764
|
}
|
|
5551
|
-
var fs$open =
|
|
5552
|
-
|
|
5765
|
+
var fs$open = fs.open;
|
|
5766
|
+
fs.open = open;
|
|
5553
5767
|
function open(path, flags, mode, cb) {
|
|
5554
5768
|
if (typeof mode === "function")
|
|
5555
5769
|
cb = mode, mode = null;
|
|
5556
5770
|
return go$open(path, flags, mode, cb);
|
|
5557
|
-
function go$open(
|
|
5558
|
-
return fs$open(
|
|
5771
|
+
function go$open(path, flags, mode, cb, startTime) {
|
|
5772
|
+
return fs$open(path, flags, mode, function(err, fd) {
|
|
5559
5773
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
|
5560
|
-
enqueue([go$open, [
|
|
5774
|
+
enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]);
|
|
5561
5775
|
else {
|
|
5562
|
-
if (typeof
|
|
5563
|
-
|
|
5776
|
+
if (typeof cb === "function")
|
|
5777
|
+
cb.apply(this, arguments);
|
|
5564
5778
|
}
|
|
5565
5779
|
});
|
|
5566
5780
|
}
|
|
5567
5781
|
}
|
|
5568
|
-
return
|
|
5782
|
+
return fs;
|
|
5569
5783
|
}
|
|
5570
5784
|
function enqueue(elem) {
|
|
5571
5785
|
debug("ENQUEUE", elem[0].name, elem[1]);
|
|
@@ -5575,10 +5789,10 @@ GFS4: `);
|
|
|
5575
5789
|
var retryTimer;
|
|
5576
5790
|
function resetQueue() {
|
|
5577
5791
|
var now = Date.now();
|
|
5578
|
-
for (var
|
|
5579
|
-
if (fs[gracefulQueue][
|
|
5580
|
-
fs[gracefulQueue][
|
|
5581
|
-
fs[gracefulQueue][
|
|
5792
|
+
for (var i = 0;i < fs[gracefulQueue].length; ++i) {
|
|
5793
|
+
if (fs[gracefulQueue][i].length > 2) {
|
|
5794
|
+
fs[gracefulQueue][i][3] = now;
|
|
5795
|
+
fs[gracefulQueue][i][4] = now;
|
|
5582
5796
|
}
|
|
5583
5797
|
}
|
|
5584
5798
|
retry();
|
|
@@ -5620,7 +5834,7 @@ GFS4: `);
|
|
|
5620
5834
|
});
|
|
5621
5835
|
|
|
5622
5836
|
// ../../node_modules/.bun/retry@0.12.0/node_modules/retry/lib/retry_operation.js
|
|
5623
|
-
var require_retry_operation = __commonJS((exports, module)
|
|
5837
|
+
var require_retry_operation = __commonJS(function(exports, module) {
|
|
5624
5838
|
function RetryOperation(timeouts, options) {
|
|
5625
5839
|
if (typeof options === "boolean") {
|
|
5626
5840
|
options = { forever: options };
|
|
@@ -5734,13 +5948,13 @@ var require_retry_operation = __commonJS((exports, module) => {
|
|
|
5734
5948
|
var counts = {};
|
|
5735
5949
|
var mainError = null;
|
|
5736
5950
|
var mainErrorCount = 0;
|
|
5737
|
-
for (var
|
|
5738
|
-
var
|
|
5739
|
-
var message =
|
|
5951
|
+
for (var i = 0;i < this._errors.length; i++) {
|
|
5952
|
+
var error = this._errors[i];
|
|
5953
|
+
var message = error.message;
|
|
5740
5954
|
var count = (counts[message] || 0) + 1;
|
|
5741
5955
|
counts[message] = count;
|
|
5742
5956
|
if (count >= mainErrorCount) {
|
|
5743
|
-
mainError =
|
|
5957
|
+
mainError = error;
|
|
5744
5958
|
mainErrorCount = count;
|
|
5745
5959
|
}
|
|
5746
5960
|
}
|
|
@@ -5749,7 +5963,7 @@ var require_retry_operation = __commonJS((exports, module) => {
|
|
|
5749
5963
|
});
|
|
5750
5964
|
|
|
5751
5965
|
// ../../node_modules/.bun/retry@0.12.0/node_modules/retry/lib/retry.js
|
|
5752
|
-
var require_retry = __commonJS((exports)
|
|
5966
|
+
var require_retry = __commonJS(function(exports) {
|
|
5753
5967
|
var RetryOperation = require_retry_operation();
|
|
5754
5968
|
exports.operation = function(options) {
|
|
5755
5969
|
var timeouts = exports.timeouts(options);
|
|
@@ -5777,14 +5991,14 @@ var require_retry = __commonJS((exports) => {
|
|
|
5777
5991
|
throw new Error("minTimeout is greater than maxTimeout");
|
|
5778
5992
|
}
|
|
5779
5993
|
var timeouts = [];
|
|
5780
|
-
for (var
|
|
5781
|
-
timeouts.push(this.createTimeout(
|
|
5994
|
+
for (var i = 0;i < opts.retries; i++) {
|
|
5995
|
+
timeouts.push(this.createTimeout(i, opts));
|
|
5782
5996
|
}
|
|
5783
5997
|
if (options && options.forever && !timeouts.length) {
|
|
5784
|
-
timeouts.push(this.createTimeout(
|
|
5998
|
+
timeouts.push(this.createTimeout(i, opts));
|
|
5785
5999
|
}
|
|
5786
|
-
timeouts.sort(function(
|
|
5787
|
-
return
|
|
6000
|
+
timeouts.sort(function(a, b) {
|
|
6001
|
+
return a - b;
|
|
5788
6002
|
});
|
|
5789
6003
|
return timeouts;
|
|
5790
6004
|
};
|
|
@@ -5807,10 +6021,10 @@ var require_retry = __commonJS((exports) => {
|
|
|
5807
6021
|
}
|
|
5808
6022
|
}
|
|
5809
6023
|
}
|
|
5810
|
-
for (var
|
|
5811
|
-
var method = methods[
|
|
6024
|
+
for (var i = 0;i < methods.length; i++) {
|
|
6025
|
+
var method = methods[i];
|
|
5812
6026
|
var original = obj[method];
|
|
5813
|
-
obj[method] = function retryWrapper(
|
|
6027
|
+
obj[method] = function retryWrapper(original) {
|
|
5814
6028
|
var op = exports.operation(options);
|
|
5815
6029
|
var args = Array.prototype.slice.call(arguments, 1);
|
|
5816
6030
|
var callback = args.pop();
|
|
@@ -5824,7 +6038,7 @@ var require_retry = __commonJS((exports) => {
|
|
|
5824
6038
|
callback.apply(this, arguments);
|
|
5825
6039
|
});
|
|
5826
6040
|
op.attempt(function() {
|
|
5827
|
-
|
|
6041
|
+
original.apply(obj, args);
|
|
5828
6042
|
});
|
|
5829
6043
|
}.bind(obj, original);
|
|
5830
6044
|
obj[method].options = options;
|
|
@@ -5833,7 +6047,7 @@ var require_retry = __commonJS((exports) => {
|
|
|
5833
6047
|
});
|
|
5834
6048
|
|
|
5835
6049
|
// ../../node_modules/.bun/signal-exit@3.0.7/node_modules/signal-exit/signals.js
|
|
5836
|
-
var require_signals = __commonJS((exports, module)
|
|
6050
|
+
var require_signals = __commonJS(function(exports, module) {
|
|
5837
6051
|
module.exports = [
|
|
5838
6052
|
"SIGABRT",
|
|
5839
6053
|
"SIGALRM",
|
|
@@ -5850,10 +6064,10 @@ var require_signals = __commonJS((exports, module) => {
|
|
|
5850
6064
|
});
|
|
5851
6065
|
|
|
5852
6066
|
// ../../node_modules/.bun/signal-exit@3.0.7/node_modules/signal-exit/index.js
|
|
5853
|
-
var require_signal_exit = __commonJS((exports, module)
|
|
6067
|
+
var require_signal_exit = __commonJS(function(exports, module) {
|
|
5854
6068
|
var process2 = global.process;
|
|
5855
|
-
var processOk = function(
|
|
5856
|
-
return
|
|
6069
|
+
var processOk = function(process2) {
|
|
6070
|
+
return process2 && typeof process2 === "object" && typeof process2.removeListener === "function" && typeof process2.emit === "function" && typeof process2.reallyExit === "function" && typeof process2.listeners === "function" && typeof process2.kill === "function" && typeof process2.pid === "number" && typeof process2.on === "function";
|
|
5857
6071
|
};
|
|
5858
6072
|
if (!processOk(process2)) {
|
|
5859
6073
|
module.exports = function() {
|
|
@@ -5899,7 +6113,7 @@ var require_signal_exit = __commonJS((exports, module) => {
|
|
|
5899
6113
|
emitter.on(ev, cb);
|
|
5900
6114
|
return remove;
|
|
5901
6115
|
};
|
|
5902
|
-
unload = function
|
|
6116
|
+
unload = function unload() {
|
|
5903
6117
|
if (!loaded || !processOk(global.process)) {
|
|
5904
6118
|
return;
|
|
5905
6119
|
}
|
|
@@ -5914,7 +6128,7 @@ var require_signal_exit = __commonJS((exports, module) => {
|
|
|
5914
6128
|
emitter.count -= 1;
|
|
5915
6129
|
};
|
|
5916
6130
|
module.exports.unload = unload;
|
|
5917
|
-
emit = function
|
|
6131
|
+
emit = function emit(event, code, signal) {
|
|
5918
6132
|
if (emitter.emitted[event]) {
|
|
5919
6133
|
return;
|
|
5920
6134
|
}
|
|
@@ -5943,7 +6157,7 @@ var require_signal_exit = __commonJS((exports, module) => {
|
|
|
5943
6157
|
return signals;
|
|
5944
6158
|
};
|
|
5945
6159
|
loaded = false;
|
|
5946
|
-
load = function
|
|
6160
|
+
load = function load() {
|
|
5947
6161
|
if (loaded || !processOk(global.process)) {
|
|
5948
6162
|
return;
|
|
5949
6163
|
}
|
|
@@ -5962,7 +6176,7 @@ var require_signal_exit = __commonJS((exports, module) => {
|
|
|
5962
6176
|
};
|
|
5963
6177
|
module.exports.load = load;
|
|
5964
6178
|
originalProcessReallyExit = process2.reallyExit;
|
|
5965
|
-
processReallyExit = function
|
|
6179
|
+
processReallyExit = function processReallyExit(code) {
|
|
5966
6180
|
if (!processOk(global.process)) {
|
|
5967
6181
|
return;
|
|
5968
6182
|
}
|
|
@@ -5972,7 +6186,7 @@ var require_signal_exit = __commonJS((exports, module) => {
|
|
|
5972
6186
|
originalProcessReallyExit.call(process2, process2.exitCode);
|
|
5973
6187
|
};
|
|
5974
6188
|
originalProcessEmit = process2.emit;
|
|
5975
|
-
processEmit = function
|
|
6189
|
+
processEmit = function processEmit(ev, arg) {
|
|
5976
6190
|
if (ev === "exit" && processOk(global.process)) {
|
|
5977
6191
|
if (arg !== undefined) {
|
|
5978
6192
|
process2.exitCode = arg;
|
|
@@ -6003,7 +6217,7 @@ var require_signal_exit = __commonJS((exports, module) => {
|
|
|
6003
6217
|
});
|
|
6004
6218
|
|
|
6005
6219
|
// ../../node_modules/.bun/proper-lockfile@4.1.2/node_modules/proper-lockfile/lib/mtime-precision.js
|
|
6006
|
-
var require_mtime_precision = __commonJS((exports, module)
|
|
6220
|
+
var require_mtime_precision = __commonJS(function(exports, module) {
|
|
6007
6221
|
var cacheSymbol = Symbol();
|
|
6008
6222
|
function probe(file, fs, callback) {
|
|
6009
6223
|
const cachedPrecision = fs[cacheSymbol];
|
|
@@ -6020,9 +6234,9 @@ var require_mtime_precision = __commonJS((exports, module) => {
|
|
|
6020
6234
|
if (err) {
|
|
6021
6235
|
return callback(err);
|
|
6022
6236
|
}
|
|
6023
|
-
fs.stat(file, (
|
|
6024
|
-
if (
|
|
6025
|
-
return callback(
|
|
6237
|
+
fs.stat(file, (err, stat) => {
|
|
6238
|
+
if (err) {
|
|
6239
|
+
return callback(err);
|
|
6026
6240
|
}
|
|
6027
6241
|
const precision = stat.mtime.getTime() % 1000 === 0 ? "s" : "ms";
|
|
6028
6242
|
Object.defineProperty(fs, cacheSymbol, { value: precision });
|
|
@@ -6042,7 +6256,7 @@ var require_mtime_precision = __commonJS((exports, module) => {
|
|
|
6042
6256
|
});
|
|
6043
6257
|
|
|
6044
6258
|
// ../../node_modules/.bun/proper-lockfile@4.1.2/node_modules/proper-lockfile/lib/lockfile.js
|
|
6045
|
-
var require_lockfile = __commonJS((exports, module)
|
|
6259
|
+
var require_lockfile = __commonJS(function(exports, module) {
|
|
6046
6260
|
var path = __require("path");
|
|
6047
6261
|
var fs = require_graceful_fs();
|
|
6048
6262
|
var retry = require_retry();
|
|
@@ -6062,12 +6276,12 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6062
6276
|
const lockfilePath = getLockFile(file, options);
|
|
6063
6277
|
options.fs.mkdir(lockfilePath, (err) => {
|
|
6064
6278
|
if (!err) {
|
|
6065
|
-
return mtimePrecision.probe(lockfilePath, options.fs, (
|
|
6066
|
-
if (
|
|
6279
|
+
return mtimePrecision.probe(lockfilePath, options.fs, (err, mtime, mtimePrecision) => {
|
|
6280
|
+
if (err) {
|
|
6067
6281
|
options.fs.rmdir(lockfilePath, () => {});
|
|
6068
|
-
return callback(
|
|
6282
|
+
return callback(err);
|
|
6069
6283
|
}
|
|
6070
|
-
callback(null, mtime,
|
|
6284
|
+
callback(null, mtime, mtimePrecision);
|
|
6071
6285
|
});
|
|
6072
6286
|
}
|
|
6073
6287
|
if (err.code !== "EEXIST") {
|
|
@@ -6076,19 +6290,19 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6076
6290
|
if (options.stale <= 0) {
|
|
6077
6291
|
return callback(Object.assign(new Error("Lock file is already being held"), { code: "ELOCKED", file }));
|
|
6078
6292
|
}
|
|
6079
|
-
options.fs.stat(lockfilePath, (
|
|
6080
|
-
if (
|
|
6081
|
-
if (
|
|
6293
|
+
options.fs.stat(lockfilePath, (err, stat) => {
|
|
6294
|
+
if (err) {
|
|
6295
|
+
if (err.code === "ENOENT") {
|
|
6082
6296
|
return acquireLock(file, { ...options, stale: 0 }, callback);
|
|
6083
6297
|
}
|
|
6084
|
-
return callback(
|
|
6298
|
+
return callback(err);
|
|
6085
6299
|
}
|
|
6086
6300
|
if (!isLockStale(stat, options)) {
|
|
6087
6301
|
return callback(Object.assign(new Error("Lock file is already being held"), { code: "ELOCKED", file }));
|
|
6088
6302
|
}
|
|
6089
|
-
removeLock(file, options, (
|
|
6090
|
-
if (
|
|
6091
|
-
return callback(
|
|
6303
|
+
removeLock(file, options, (err) => {
|
|
6304
|
+
if (err) {
|
|
6305
|
+
return callback(err);
|
|
6092
6306
|
}
|
|
6093
6307
|
acquireLock(file, { ...options, stale: 0 }, callback);
|
|
6094
6308
|
});
|
|
@@ -6107,59 +6321,59 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6107
6321
|
});
|
|
6108
6322
|
}
|
|
6109
6323
|
function updateLock(file, options) {
|
|
6110
|
-
const
|
|
6111
|
-
if (
|
|
6324
|
+
const lock = locks[file];
|
|
6325
|
+
if (lock.updateTimeout) {
|
|
6112
6326
|
return;
|
|
6113
6327
|
}
|
|
6114
|
-
|
|
6115
|
-
|
|
6116
|
-
|
|
6117
|
-
options.fs.stat(
|
|
6118
|
-
const isOverThreshold =
|
|
6328
|
+
lock.updateDelay = lock.updateDelay || options.update;
|
|
6329
|
+
lock.updateTimeout = setTimeout(() => {
|
|
6330
|
+
lock.updateTimeout = null;
|
|
6331
|
+
options.fs.stat(lock.lockfilePath, (err, stat) => {
|
|
6332
|
+
const isOverThreshold = lock.lastUpdate + options.stale < Date.now();
|
|
6119
6333
|
if (err) {
|
|
6120
6334
|
if (err.code === "ENOENT" || isOverThreshold) {
|
|
6121
|
-
return setLockAsCompromised(file,
|
|
6335
|
+
return setLockAsCompromised(file, lock, Object.assign(err, { code: "ECOMPROMISED" }));
|
|
6122
6336
|
}
|
|
6123
|
-
|
|
6337
|
+
lock.updateDelay = 1000;
|
|
6124
6338
|
return updateLock(file, options);
|
|
6125
6339
|
}
|
|
6126
|
-
const isMtimeOurs =
|
|
6340
|
+
const isMtimeOurs = lock.mtime.getTime() === stat.mtime.getTime();
|
|
6127
6341
|
if (!isMtimeOurs) {
|
|
6128
|
-
return setLockAsCompromised(file,
|
|
6342
|
+
return setLockAsCompromised(file, lock, Object.assign(new Error("Unable to update lock within the stale threshold"), { code: "ECOMPROMISED" }));
|
|
6129
6343
|
}
|
|
6130
|
-
const mtime = mtimePrecision.getMtime(
|
|
6131
|
-
options.fs.utimes(
|
|
6132
|
-
const
|
|
6133
|
-
if (
|
|
6344
|
+
const mtime = mtimePrecision.getMtime(lock.mtimePrecision);
|
|
6345
|
+
options.fs.utimes(lock.lockfilePath, mtime, mtime, (err) => {
|
|
6346
|
+
const isOverThreshold = lock.lastUpdate + options.stale < Date.now();
|
|
6347
|
+
if (lock.released) {
|
|
6134
6348
|
return;
|
|
6135
6349
|
}
|
|
6136
|
-
if (
|
|
6137
|
-
if (
|
|
6138
|
-
return setLockAsCompromised(file,
|
|
6350
|
+
if (err) {
|
|
6351
|
+
if (err.code === "ENOENT" || isOverThreshold) {
|
|
6352
|
+
return setLockAsCompromised(file, lock, Object.assign(err, { code: "ECOMPROMISED" }));
|
|
6139
6353
|
}
|
|
6140
|
-
|
|
6354
|
+
lock.updateDelay = 1000;
|
|
6141
6355
|
return updateLock(file, options);
|
|
6142
6356
|
}
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6357
|
+
lock.mtime = mtime;
|
|
6358
|
+
lock.lastUpdate = Date.now();
|
|
6359
|
+
lock.updateDelay = null;
|
|
6146
6360
|
updateLock(file, options);
|
|
6147
6361
|
});
|
|
6148
6362
|
});
|
|
6149
|
-
},
|
|
6150
|
-
if (
|
|
6151
|
-
|
|
6363
|
+
}, lock.updateDelay);
|
|
6364
|
+
if (lock.updateTimeout.unref) {
|
|
6365
|
+
lock.updateTimeout.unref();
|
|
6152
6366
|
}
|
|
6153
6367
|
}
|
|
6154
|
-
function setLockAsCompromised(file,
|
|
6155
|
-
|
|
6156
|
-
if (
|
|
6157
|
-
clearTimeout(
|
|
6368
|
+
function setLockAsCompromised(file, lock, err) {
|
|
6369
|
+
lock.released = true;
|
|
6370
|
+
if (lock.updateTimeout) {
|
|
6371
|
+
clearTimeout(lock.updateTimeout);
|
|
6158
6372
|
}
|
|
6159
|
-
if (locks[file] ===
|
|
6373
|
+
if (locks[file] === lock) {
|
|
6160
6374
|
delete locks[file];
|
|
6161
6375
|
}
|
|
6162
|
-
|
|
6376
|
+
lock.options.onCompromised(err);
|
|
6163
6377
|
}
|
|
6164
6378
|
function lock(file, options, callback) {
|
|
6165
6379
|
options = {
|
|
@@ -6178,32 +6392,32 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6178
6392
|
options.stale = Math.max(options.stale || 0, 2000);
|
|
6179
6393
|
options.update = options.update == null ? options.stale / 2 : options.update || 0;
|
|
6180
6394
|
options.update = Math.max(Math.min(options.update, options.stale / 2), 1000);
|
|
6181
|
-
resolveCanonicalPath(file, options, (err,
|
|
6395
|
+
resolveCanonicalPath(file, options, (err, file) => {
|
|
6182
6396
|
if (err) {
|
|
6183
6397
|
return callback(err);
|
|
6184
6398
|
}
|
|
6185
|
-
const
|
|
6186
|
-
|
|
6187
|
-
acquireLock(
|
|
6188
|
-
if (
|
|
6399
|
+
const operation2 = retry.operation(options.retries);
|
|
6400
|
+
operation2.attempt(() => {
|
|
6401
|
+
acquireLock(file, options, (err, mtime, mtimePrecision) => {
|
|
6402
|
+
if (operation2.retry(err)) {
|
|
6189
6403
|
return;
|
|
6190
6404
|
}
|
|
6191
|
-
if (
|
|
6192
|
-
return callback(
|
|
6405
|
+
if (err) {
|
|
6406
|
+
return callback(operation2.mainError());
|
|
6193
6407
|
}
|
|
6194
|
-
const
|
|
6195
|
-
lockfilePath: getLockFile(
|
|
6408
|
+
const lock = locks[file] = {
|
|
6409
|
+
lockfilePath: getLockFile(file, options),
|
|
6196
6410
|
mtime,
|
|
6197
|
-
mtimePrecision
|
|
6411
|
+
mtimePrecision,
|
|
6198
6412
|
options,
|
|
6199
6413
|
lastUpdate: Date.now()
|
|
6200
6414
|
};
|
|
6201
|
-
updateLock(
|
|
6415
|
+
updateLock(file, options);
|
|
6202
6416
|
callback(null, (releasedCallback) => {
|
|
6203
|
-
if (
|
|
6417
|
+
if (lock.released) {
|
|
6204
6418
|
return releasedCallback && releasedCallback(Object.assign(new Error("Lock is already released"), { code: "ERELEASED" }));
|
|
6205
6419
|
}
|
|
6206
|
-
unlock(
|
|
6420
|
+
unlock(file, { ...options, realpath: false }, releasedCallback);
|
|
6207
6421
|
});
|
|
6208
6422
|
});
|
|
6209
6423
|
});
|
|
@@ -6215,18 +6429,18 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6215
6429
|
realpath: true,
|
|
6216
6430
|
...options
|
|
6217
6431
|
};
|
|
6218
|
-
resolveCanonicalPath(file, options, (err,
|
|
6432
|
+
resolveCanonicalPath(file, options, (err, file) => {
|
|
6219
6433
|
if (err) {
|
|
6220
6434
|
return callback(err);
|
|
6221
6435
|
}
|
|
6222
|
-
const
|
|
6223
|
-
if (!
|
|
6436
|
+
const lock = locks[file];
|
|
6437
|
+
if (!lock) {
|
|
6224
6438
|
return callback(Object.assign(new Error("Lock is not acquired/owned by you"), { code: "ENOTACQUIRED" }));
|
|
6225
6439
|
}
|
|
6226
|
-
|
|
6227
|
-
|
|
6228
|
-
delete locks[
|
|
6229
|
-
removeLock(
|
|
6440
|
+
lock.updateTimeout && clearTimeout(lock.updateTimeout);
|
|
6441
|
+
lock.released = true;
|
|
6442
|
+
delete locks[file];
|
|
6443
|
+
removeLock(file, options, callback);
|
|
6230
6444
|
});
|
|
6231
6445
|
}
|
|
6232
6446
|
function check(file, options, callback) {
|
|
@@ -6237,13 +6451,13 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6237
6451
|
...options
|
|
6238
6452
|
};
|
|
6239
6453
|
options.stale = Math.max(options.stale || 0, 2000);
|
|
6240
|
-
resolveCanonicalPath(file, options, (err,
|
|
6454
|
+
resolveCanonicalPath(file, options, (err, file) => {
|
|
6241
6455
|
if (err) {
|
|
6242
6456
|
return callback(err);
|
|
6243
6457
|
}
|
|
6244
|
-
options.fs.stat(getLockFile(
|
|
6245
|
-
if (
|
|
6246
|
-
return
|
|
6458
|
+
options.fs.stat(getLockFile(file, options), (err, stat) => {
|
|
6459
|
+
if (err) {
|
|
6460
|
+
return err.code === "ENOENT" ? callback(null, false) : callback(err);
|
|
6247
6461
|
}
|
|
6248
6462
|
return callback(null, !isLockStale(stat, options));
|
|
6249
6463
|
});
|
|
@@ -6257,7 +6471,7 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6257
6471
|
const options = locks[file].options;
|
|
6258
6472
|
try {
|
|
6259
6473
|
options.fs.rmdirSync(getLockFile(file, options));
|
|
6260
|
-
} catch (
|
|
6474
|
+
} catch (e) {}
|
|
6261
6475
|
}
|
|
6262
6476
|
});
|
|
6263
6477
|
exports.lock = lock;
|
|
@@ -6267,17 +6481,17 @@ var require_lockfile = __commonJS((exports, module) => {
|
|
|
6267
6481
|
});
|
|
6268
6482
|
|
|
6269
6483
|
// ../../node_modules/.bun/proper-lockfile@4.1.2/node_modules/proper-lockfile/lib/adapter.js
|
|
6270
|
-
var require_adapter = __commonJS((exports, module)
|
|
6484
|
+
var require_adapter = __commonJS(function(exports, module) {
|
|
6271
6485
|
var fs = require_graceful_fs();
|
|
6272
|
-
function createSyncFs(
|
|
6486
|
+
function createSyncFs(fs) {
|
|
6273
6487
|
const methods = ["mkdir", "realpath", "stat", "rmdir", "utimes"];
|
|
6274
|
-
const newFs = { ...
|
|
6488
|
+
const newFs = { ...fs };
|
|
6275
6489
|
methods.forEach((method) => {
|
|
6276
6490
|
newFs[method] = (...args) => {
|
|
6277
6491
|
const callback = args.pop();
|
|
6278
6492
|
let ret;
|
|
6279
6493
|
try {
|
|
6280
|
-
ret =
|
|
6494
|
+
ret = fs[`${method}Sync`](...args);
|
|
6281
6495
|
} catch (err) {
|
|
6282
6496
|
return callback(err);
|
|
6283
6497
|
}
|
|
@@ -6329,7 +6543,7 @@ var require_adapter = __commonJS((exports, module) => {
|
|
|
6329
6543
|
});
|
|
6330
6544
|
|
|
6331
6545
|
// ../../node_modules/.bun/proper-lockfile@4.1.2/node_modules/proper-lockfile/index.js
|
|
6332
|
-
var require_proper_lockfile = __commonJS((exports, module)
|
|
6546
|
+
var require_proper_lockfile = __commonJS(function(exports, module) {
|
|
6333
6547
|
var lockfile = require_lockfile();
|
|
6334
6548
|
var { toPromise, toSync, toSyncOptions } = require_adapter();
|
|
6335
6549
|
async function lock(file, options) {
|
|
@@ -6397,9 +6611,9 @@ var init_lock = __esm(() => {
|
|
|
6397
6611
|
});
|
|
6398
6612
|
|
|
6399
6613
|
// src/workstation/probe/ping.ts
|
|
6400
|
-
function buildUnixPingPlan(
|
|
6614
|
+
function buildUnixPingPlan(platform, family, address, timeoutMs = PING_TIMEOUT_MS) {
|
|
6401
6615
|
if (family === 6) {
|
|
6402
|
-
if (
|
|
6616
|
+
if (platform === "darwin") {
|
|
6403
6617
|
return {
|
|
6404
6618
|
command: "ping6",
|
|
6405
6619
|
args: ["-n", "-c", "3", address],
|
|
@@ -6420,7 +6634,7 @@ function buildUnixPingPlan(platform2, family, address, timeoutMs = PING_TIMEOUT_
|
|
|
6420
6634
|
env: BASE_ENV
|
|
6421
6635
|
};
|
|
6422
6636
|
}
|
|
6423
|
-
if (
|
|
6637
|
+
if (platform === "darwin") {
|
|
6424
6638
|
return {
|
|
6425
6639
|
command: "ping",
|
|
6426
6640
|
args: ["-n", "-c", "3", "-W", String(timeoutMs), address],
|
|
@@ -6440,8 +6654,8 @@ function buildWindowsPingPlan(address) {
|
|
|
6440
6654
|
env: { BAT_PING_ADDRESS: address }
|
|
6441
6655
|
};
|
|
6442
6656
|
}
|
|
6443
|
-
function sequenceBase(
|
|
6444
|
-
return
|
|
6657
|
+
function sequenceBase(platform) {
|
|
6658
|
+
return platform === "darwin" ? 0 : 1;
|
|
6445
6659
|
}
|
|
6446
6660
|
function parseUnixPingOutput(output, base = sequenceBase("linux")) {
|
|
6447
6661
|
const slots = [null, null, null];
|
|
@@ -6484,10 +6698,10 @@ function parseWindowsPingOutput(output) {
|
|
|
6484
6698
|
}
|
|
6485
6699
|
const record = parsed;
|
|
6486
6700
|
const rawError = record.error;
|
|
6487
|
-
const
|
|
6701
|
+
const error = typeof rawError === "string" && rawError.length > 0 ? rawError : null;
|
|
6488
6702
|
const rtts = record.rtts;
|
|
6489
6703
|
if (!Array.isArray(rtts) || rtts.length !== WORKSTATION_PING_COUNT) {
|
|
6490
|
-
return { rtts: [], error
|
|
6704
|
+
return { rtts: [], error };
|
|
6491
6705
|
}
|
|
6492
6706
|
return {
|
|
6493
6707
|
rtts: rtts.map((entry) => {
|
|
@@ -6496,7 +6710,7 @@ function parseWindowsPingOutput(output) {
|
|
|
6496
6710
|
}
|
|
6497
6711
|
return typeof entry === "number" && Number.isFinite(entry) && entry >= 0 ? entry : null;
|
|
6498
6712
|
}),
|
|
6499
|
-
error
|
|
6713
|
+
error
|
|
6500
6714
|
};
|
|
6501
6715
|
}
|
|
6502
6716
|
function classifyConnectivity(received, output, localFailure) {
|
|
@@ -6523,9 +6737,9 @@ function firstLineMatching(output, pattern) {
|
|
|
6523
6737
|
return line ?? output.trim();
|
|
6524
6738
|
}
|
|
6525
6739
|
async function pingTarget(target, deps) {
|
|
6526
|
-
const
|
|
6740
|
+
const platform = deps.platform ?? process.platform;
|
|
6527
6741
|
const timeoutMs = deps.timeoutMs ?? PING_TIMEOUT_MS;
|
|
6528
|
-
const plan =
|
|
6742
|
+
const plan = platform === "win32" ? buildWindowsPingPlan(target.address) : buildUnixPingPlan(platform, target.family, target.address, timeoutMs);
|
|
6529
6743
|
const childTimeout = deps.childTimeoutMs ?? Math.min(CHILD_TIMEOUT_MS, Math.max(2000, timeoutMs * WORKSTATION_PING_COUNT + 2000));
|
|
6530
6744
|
const result = await deps.exec(plan.command, plan.args, {
|
|
6531
6745
|
timeoutMs: childTimeout,
|
|
@@ -6535,7 +6749,7 @@ async function pingTarget(target, deps) {
|
|
|
6535
6749
|
let rtts;
|
|
6536
6750
|
let localFailure = false;
|
|
6537
6751
|
let failureDetail;
|
|
6538
|
-
if (
|
|
6752
|
+
if (platform === "win32") {
|
|
6539
6753
|
const parsed = parseWindowsPingOutput(result.stdout);
|
|
6540
6754
|
rtts = parsed.rtts;
|
|
6541
6755
|
if (parsed.error) {
|
|
@@ -6546,7 +6760,7 @@ async function pingTarget(target, deps) {
|
|
|
6546
6760
|
failureDetail = "unreadable ping result";
|
|
6547
6761
|
}
|
|
6548
6762
|
} else {
|
|
6549
|
-
rtts = parseUnixPingOutput(result.stdout, sequenceBase(
|
|
6763
|
+
rtts = parseUnixPingOutput(result.stdout, sequenceBase(platform));
|
|
6550
6764
|
}
|
|
6551
6765
|
const combined = `${result.stdout}${result.stderr}`;
|
|
6552
6766
|
const permissionFailure = /operation not permitted|permission denied|not permitted|must be root|socket:/i.test(combined);
|
|
@@ -6563,7 +6777,7 @@ async function pingTarget(target, deps) {
|
|
|
6563
6777
|
const answered = countAnswered(rtts);
|
|
6564
6778
|
const unreachable = /unreachable|no route to host/i.test(combined);
|
|
6565
6779
|
if (answered === 0 && !unreachable && !result.timedOut) {
|
|
6566
|
-
localFailure =
|
|
6780
|
+
localFailure = platform === "darwin" ? !(result.code === 2 && /packet loss/i.test(combined)) : result.code !== null && result.code >= 2;
|
|
6567
6781
|
}
|
|
6568
6782
|
}
|
|
6569
6783
|
const received = countAnswered(rtts);
|
|
@@ -6711,14 +6925,14 @@ function parseMemAvailableKb(text) {
|
|
|
6711
6925
|
async function collectMemory(deps = {}) {
|
|
6712
6926
|
const total = Math.max(1, Math.floor(deps.total ?? totalmem()));
|
|
6713
6927
|
let available = deps.free ? deps.free() : freemem();
|
|
6714
|
-
const
|
|
6715
|
-
if (
|
|
6928
|
+
const platform = deps.platform ?? osPlatform();
|
|
6929
|
+
if (platform === "linux") {
|
|
6716
6930
|
try {
|
|
6717
|
-
const
|
|
6931
|
+
const readFile = deps.readFile ?? ((path, options) => fsp.readFile(path, {
|
|
6718
6932
|
encoding: "utf-8",
|
|
6719
6933
|
...options?.signal ? { signal: options.signal } : {}
|
|
6720
6934
|
}));
|
|
6721
|
-
const text = await
|
|
6935
|
+
const text = await readFile("/proc/meminfo", deps.signal ? { signal: deps.signal } : undefined);
|
|
6722
6936
|
const parsed = parseMemAvailableKb(text);
|
|
6723
6937
|
if (parsed !== null) {
|
|
6724
6938
|
available = parsed;
|
|
@@ -6733,9 +6947,9 @@ async function collectMemory(deps = {}) {
|
|
|
6733
6947
|
used_pct: Math.min(100, Math.max(0, usedPct))
|
|
6734
6948
|
};
|
|
6735
6949
|
}
|
|
6736
|
-
function diskMounts(
|
|
6737
|
-
if (
|
|
6738
|
-
return [`${
|
|
6950
|
+
function diskMounts(platform, env) {
|
|
6951
|
+
if (platform === "win32") {
|
|
6952
|
+
return [`${env.SystemDrive ?? "C:"}\\`];
|
|
6739
6953
|
}
|
|
6740
6954
|
return ["/"];
|
|
6741
6955
|
}
|
|
@@ -6755,7 +6969,7 @@ function diskFromStats(mount, stats) {
|
|
|
6755
6969
|
};
|
|
6756
6970
|
}
|
|
6757
6971
|
async function collectDisks(deps = {}) {
|
|
6758
|
-
const
|
|
6972
|
+
const platform = deps.platform ?? osPlatform();
|
|
6759
6973
|
const statfs = deps.statfs ?? ((path) => statfsInChild(path, {
|
|
6760
6974
|
exec: deps.exec ?? runCommand2,
|
|
6761
6975
|
...deps.nodePath ? { nodePath: deps.nodePath } : {},
|
|
@@ -6764,7 +6978,7 @@ async function collectDisks(deps = {}) {
|
|
|
6764
6978
|
}));
|
|
6765
6979
|
const disk = [];
|
|
6766
6980
|
const errors = [];
|
|
6767
|
-
for (const mount of diskMounts(
|
|
6981
|
+
for (const mount of diskMounts(platform, deps.env ?? process.env)) {
|
|
6768
6982
|
try {
|
|
6769
6983
|
const stats = await statfs(mount, deps.signal ? { signal: deps.signal } : undefined);
|
|
6770
6984
|
const entry = diskFromStats(mount, stats);
|
|
@@ -6779,11 +6993,11 @@ async function collectDisks(deps = {}) {
|
|
|
6779
6993
|
}
|
|
6780
6994
|
return { disk, errors: errors.map((line) => truncateText(line, WORKSTATION_LIMITS.errorText)) };
|
|
6781
6995
|
}
|
|
6782
|
-
function familyOf(
|
|
6783
|
-
if (
|
|
6996
|
+
function familyOf(info) {
|
|
6997
|
+
if (info.family === "IPv4" || info.family === 4) {
|
|
6784
6998
|
return 4;
|
|
6785
6999
|
}
|
|
6786
|
-
if (
|
|
7000
|
+
if (info.family === "IPv6" || info.family === 6) {
|
|
6787
7001
|
return 6;
|
|
6788
7002
|
}
|
|
6789
7003
|
return null;
|
|
@@ -6794,17 +7008,17 @@ function collectNetwork(interfaces = networkInterfaces()) {
|
|
|
6794
7008
|
const entries = interfaces[name] ?? [];
|
|
6795
7009
|
const addresses = [];
|
|
6796
7010
|
const seen = new Set;
|
|
6797
|
-
for (const
|
|
6798
|
-
const family = familyOf(
|
|
7011
|
+
for (const info of entries) {
|
|
7012
|
+
const family = familyOf(info);
|
|
6799
7013
|
if (!family) {
|
|
6800
7014
|
continue;
|
|
6801
7015
|
}
|
|
6802
|
-
const address =
|
|
7016
|
+
const address = info.address.split("%")[0] ?? "";
|
|
6803
7017
|
if (ipFamily(address) !== family || seen.has(address)) {
|
|
6804
7018
|
continue;
|
|
6805
7019
|
}
|
|
6806
7020
|
seen.add(address);
|
|
6807
|
-
addresses.push({ address, family, internal:
|
|
7021
|
+
addresses.push({ address, family, internal: info.internal });
|
|
6808
7022
|
if (addresses.length >= WORKSTATION_LIMITS.addressesPerInterface) {
|
|
6809
7023
|
break;
|
|
6810
7024
|
}
|
|
@@ -7000,8 +7214,8 @@ async function runWorkstationProbe(deps) {
|
|
|
7000
7214
|
const collector = deps.collector ?? defaultCollector();
|
|
7001
7215
|
const exec = deps.exec ?? runCommand2;
|
|
7002
7216
|
const functions = resolveProbeFunctions(deps);
|
|
7003
|
-
const
|
|
7004
|
-
const credential = deps.credential === undefined ? readCredential(deps.paths, { platform
|
|
7217
|
+
const platform = deps.platform ?? process.platform;
|
|
7218
|
+
const credential = deps.credential === undefined ? readCredential(deps.paths, { platform }) : deps.credential;
|
|
7005
7219
|
if (!credential) {
|
|
7006
7220
|
output.error("Not logged in — run 'bat workstation login' first.");
|
|
7007
7221
|
return { exitCode: 1 };
|
|
@@ -7045,7 +7259,7 @@ async function runWorkstationProbe(deps) {
|
|
|
7045
7259
|
deadline,
|
|
7046
7260
|
signal,
|
|
7047
7261
|
exec,
|
|
7048
|
-
platform
|
|
7262
|
+
platform,
|
|
7049
7263
|
ping: functions.ping,
|
|
7050
7264
|
errors
|
|
7051
7265
|
});
|
|
@@ -7307,10 +7521,10 @@ function restoreFiles(files) {
|
|
|
7307
7521
|
writeFileSync5(file.path, file.content, { mode: 420 });
|
|
7308
7522
|
}
|
|
7309
7523
|
}
|
|
7310
|
-
function parseWindowsTaskSnapshot(
|
|
7524
|
+
function parseWindowsTaskSnapshot(stdout) {
|
|
7311
7525
|
let parsed;
|
|
7312
7526
|
try {
|
|
7313
|
-
parsed = JSON.parse(
|
|
7527
|
+
parsed = JSON.parse(stdout.trim());
|
|
7314
7528
|
} catch {
|
|
7315
7529
|
throw new Error("task query returned invalid JSON");
|
|
7316
7530
|
}
|
|
@@ -7430,18 +7644,18 @@ async function installSchedule(context, options) {
|
|
|
7430
7644
|
}
|
|
7431
7645
|
async function removeSchedule(context, backend, exec) {
|
|
7432
7646
|
if (backend === "cron") {
|
|
7433
|
-
const
|
|
7647
|
+
const removed = await removeCron(exec);
|
|
7434
7648
|
return {
|
|
7435
7649
|
backend,
|
|
7436
7650
|
removed: [],
|
|
7437
|
-
warnings:
|
|
7651
|
+
warnings: removed ? [] : ["no workstation cron block found"]
|
|
7438
7652
|
};
|
|
7439
7653
|
}
|
|
7440
7654
|
if (backend === "windows") {
|
|
7441
|
-
const
|
|
7655
|
+
const warnings = [];
|
|
7442
7656
|
const existing = await snapshotWindowsTask(exec);
|
|
7443
7657
|
if (existing === null) {
|
|
7444
|
-
|
|
7658
|
+
warnings.push("no workstation task found");
|
|
7445
7659
|
} else {
|
|
7446
7660
|
const result = await exec("schtasks", ["/Delete", "/TN", WINDOWS_TASK, "/F"], {
|
|
7447
7661
|
timeoutMs: 15000
|
|
@@ -7453,7 +7667,7 @@ async function removeSchedule(context, backend, exec) {
|
|
|
7453
7667
|
throw new Error(`schtasks /Delete failed: ${failureDetail(result)}`);
|
|
7454
7668
|
}
|
|
7455
7669
|
}
|
|
7456
|
-
return { backend, removed: [], warnings
|
|
7670
|
+
return { backend, removed: [], warnings };
|
|
7457
7671
|
}
|
|
7458
7672
|
const plan = buildPlan(context, backend);
|
|
7459
7673
|
const warnings = [];
|
|
@@ -7525,13 +7739,13 @@ async function runSetupCommand(deps = {}) {
|
|
|
7525
7739
|
warn("No workstation schedule is recorded for this machine.");
|
|
7526
7740
|
return 0;
|
|
7527
7741
|
}
|
|
7528
|
-
const
|
|
7742
|
+
const result = await removeSchedule(context, backendOf(record.backend), exec);
|
|
7529
7743
|
deleteScheduleRecord(paths);
|
|
7530
|
-
for (const warning of
|
|
7744
|
+
for (const warning of result.warnings) {
|
|
7531
7745
|
warn(warning);
|
|
7532
7746
|
}
|
|
7533
|
-
success(`Workstation schedule removed (${
|
|
7534
|
-
for (const path of
|
|
7747
|
+
success(`Workstation schedule removed (${result.backend}).`);
|
|
7748
|
+
for (const path of result.removed) {
|
|
7535
7749
|
info(` removed: ${path}`);
|
|
7536
7750
|
}
|
|
7537
7751
|
return 0;
|
|
@@ -7680,10 +7894,6 @@ var init_status = __esm(() => {
|
|
|
7680
7894
|
});
|
|
7681
7895
|
|
|
7682
7896
|
// src/commands/workstation/index.ts
|
|
7683
|
-
var exports_workstation = {};
|
|
7684
|
-
__export(exports_workstation, {
|
|
7685
|
-
default: () => workstation_default
|
|
7686
|
-
});
|
|
7687
7897
|
var workstation_default;
|
|
7688
7898
|
var init_workstation = __esm(() => {
|
|
7689
7899
|
init_dist3();
|
|
@@ -7913,7 +8123,7 @@ init_http();
|
|
|
7913
8123
|
init_output();
|
|
7914
8124
|
var HEARTBEAT_STATUSES = new Set(["running", "stopped"]);
|
|
7915
8125
|
function parseAgents(raw) {
|
|
7916
|
-
const entries = raw.split(",").map((
|
|
8126
|
+
const entries = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
7917
8127
|
if (entries.length === 0) {
|
|
7918
8128
|
return { ok: false, error: "No agents specified" };
|
|
7919
8129
|
}
|
|
@@ -8032,13 +8242,13 @@ async function runAgentList(manager) {
|
|
|
8032
8242
|
return 0;
|
|
8033
8243
|
}
|
|
8034
8244
|
info(`${agents.length} agent(s):`);
|
|
8035
|
-
table(["ID", "MATCH_KEY", "NICKNAME", "STATUS", "LAST SEEN", "SRC_KEY"], agents.map((
|
|
8036
|
-
|
|
8037
|
-
truncate(
|
|
8038
|
-
|
|
8039
|
-
|
|
8040
|
-
formatTime(
|
|
8041
|
-
|
|
8245
|
+
table(["ID", "MATCH_KEY", "NICKNAME", "STATUS", "LAST SEEN", "SRC_KEY"], agents.map((a) => [
|
|
8246
|
+
a.id,
|
|
8247
|
+
truncate(a.match_key, 30),
|
|
8248
|
+
a.nickname ?? "—",
|
|
8249
|
+
a.status,
|
|
8250
|
+
formatTime(a.last_seen_at),
|
|
8251
|
+
a.source_key_short
|
|
8042
8252
|
]));
|
|
8043
8253
|
return 0;
|
|
8044
8254
|
} catch (err) {
|
|
@@ -8075,7 +8285,7 @@ function parseTagIds(raw) {
|
|
|
8075
8285
|
if (raw.trim() === "") {
|
|
8076
8286
|
return { ok: true, ids: [] };
|
|
8077
8287
|
}
|
|
8078
|
-
const parts = raw.split(",").map((
|
|
8288
|
+
const parts = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
8079
8289
|
const ids = [];
|
|
8080
8290
|
const seen = new Set;
|
|
8081
8291
|
for (const part of parts) {
|
|
@@ -8131,7 +8341,7 @@ async function runAgentTags(manager, agentId, opts) {
|
|
|
8131
8341
|
success(`Tags set on ${agent.id}: [${ids.join(", ")}]`);
|
|
8132
8342
|
}
|
|
8133
8343
|
if (agent.tags.length > 0) {
|
|
8134
|
-
info(` tags: ${agent.tags.map((
|
|
8344
|
+
info(` tags: ${agent.tags.map((t) => t.name).join(", ")}`);
|
|
8135
8345
|
}
|
|
8136
8346
|
return 0;
|
|
8137
8347
|
} catch (err) {
|
|
@@ -8605,13 +8815,13 @@ async function runAssetList(manager) {
|
|
|
8605
8815
|
return 0;
|
|
8606
8816
|
}
|
|
8607
8817
|
info(`${assets.length} asset(s):`);
|
|
8608
|
-
table(["ID", "TYPE", "NAME", "PROVIDER", "STATUS", "HOST"], assets.map((
|
|
8609
|
-
|
|
8610
|
-
|
|
8611
|
-
truncate(
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
|
|
8818
|
+
table(["ID", "TYPE", "NAME", "PROVIDER", "STATUS", "HOST"], assets.map((a) => [
|
|
8819
|
+
a.id,
|
|
8820
|
+
a.type,
|
|
8821
|
+
truncate(a.name, 30),
|
|
8822
|
+
a.provider ?? "—",
|
|
8823
|
+
a.status,
|
|
8824
|
+
a.hostname ?? "—"
|
|
8615
8825
|
]));
|
|
8616
8826
|
return 0;
|
|
8617
8827
|
} catch (err) {
|
|
@@ -8648,7 +8858,7 @@ function parseTagIds2(raw) {
|
|
|
8648
8858
|
if (raw.trim() === "") {
|
|
8649
8859
|
return { ok: true, ids: [] };
|
|
8650
8860
|
}
|
|
8651
|
-
const parts = raw.split(",").map((
|
|
8861
|
+
const parts = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
8652
8862
|
const ids = [];
|
|
8653
8863
|
const seen = new Set;
|
|
8654
8864
|
for (const part of parts) {
|
|
@@ -8704,7 +8914,7 @@ async function runAssetTags(manager, assetId, opts) {
|
|
|
8704
8914
|
success(`Tags set on ${asset.id}: [${ids.join(", ")}]`);
|
|
8705
8915
|
}
|
|
8706
8916
|
if (asset.tags.length > 0) {
|
|
8707
|
-
info(` tags: ${asset.tags.map((
|
|
8917
|
+
info(` tags: ${asset.tags.map((t) => t.name).join(", ")}`);
|
|
8708
8918
|
}
|
|
8709
8919
|
return 0;
|
|
8710
8920
|
} catch (err) {
|
|
@@ -9134,12 +9344,12 @@ async function runBindingList(manager) {
|
|
|
9134
9344
|
return 0;
|
|
9135
9345
|
}
|
|
9136
9346
|
info(`${bindings.length} binding(s):`);
|
|
9137
|
-
table(["AGENT_ID", "AGENT", "ASSET_ID", "ASSET", "TYPE"], bindings.map((
|
|
9138
|
-
|
|
9139
|
-
|
|
9140
|
-
|
|
9141
|
-
|
|
9142
|
-
|
|
9347
|
+
table(["AGENT_ID", "AGENT", "ASSET_ID", "ASSET", "TYPE"], bindings.map((b) => [
|
|
9348
|
+
b.agent_id,
|
|
9349
|
+
b.agent_nickname ?? "—",
|
|
9350
|
+
b.asset_id,
|
|
9351
|
+
b.asset_name,
|
|
9352
|
+
b.asset_type
|
|
9143
9353
|
]));
|
|
9144
9354
|
return 0;
|
|
9145
9355
|
} catch (err) {
|
|
@@ -9311,7 +9521,7 @@ function isProcessRunning(pid) {
|
|
|
9311
9521
|
// src/commands/service/run.ts
|
|
9312
9522
|
var HEARTBEAT_STATUSES2 = new Set(["running", "stopped"]);
|
|
9313
9523
|
function parseAgentsArg(raw) {
|
|
9314
|
-
const entries = raw.split(",").map((
|
|
9524
|
+
const entries = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
9315
9525
|
if (entries.length === 0) {
|
|
9316
9526
|
return { ok: false, error: "No agents specified" };
|
|
9317
9527
|
}
|
|
@@ -9724,7 +9934,7 @@ var main = defineCommand({
|
|
|
9724
9934
|
asset: asset_default,
|
|
9725
9935
|
binding: binding_default,
|
|
9726
9936
|
service: service_default,
|
|
9727
|
-
workstation: () => Promise.resolve().then(() => (init_workstation(),
|
|
9937
|
+
workstation: () => Promise.resolve().then(() => (init_workstation(), {})).then((module) => workstation_default)
|
|
9728
9938
|
}
|
|
9729
9939
|
});
|
|
9730
9940
|
|