unbrowse 3.5.0 → 3.5.1
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/cli.js +162 -35
- package/dist/mcp.js +5 -5
- package/dist/server.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -31,7 +31,7 @@ var __promiseAll = (args) => Promise.all(args);
|
|
|
31
31
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
32
32
|
|
|
33
33
|
// ../../src/build-info.generated.ts
|
|
34
|
-
var BUILD_RELEASE_VERSION = "3.5.
|
|
34
|
+
var BUILD_RELEASE_VERSION = "3.5.1", BUILD_GIT_SHA = "e7c750e1b8d0", BUILD_CODE_HASH = "527243268ab4", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjEiLCJnaXRfc2hhIjoiZTdjNzUwZTFiOGQwIiwiY29kZV9oYXNoIjoiNTI3MjQzMjY4YWI0IiwidHJhY2VfdmVyc2lvbiI6IjUyNzI0MzI2OGFiNEBlN2M3NTBlMWI4ZDAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE2OjM2OjUyLjgyOFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "OKjQmllM1We29ojGhYIEAOhJJG5e_UuMa3d2CwuwWj8", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
|
|
35
35
|
|
|
36
36
|
// ../../src/version.ts
|
|
37
37
|
import { createHash } from "crypto";
|
|
@@ -1468,6 +1468,131 @@ function checkWalletConfigured2() {
|
|
|
1468
1468
|
}
|
|
1469
1469
|
var init_wallet2 = () => {};
|
|
1470
1470
|
|
|
1471
|
+
// ../../src/version.ts
|
|
1472
|
+
var exports_version = {};
|
|
1473
|
+
__export(exports_version, {
|
|
1474
|
+
resolveCodeHashSourceDir: () => resolveCodeHashSourceDir2,
|
|
1475
|
+
getPackageVersionForModuleDir: () => getPackageVersionForModuleDir2,
|
|
1476
|
+
getEmbeddedReleaseVersion: () => getEmbeddedReleaseVersion2,
|
|
1477
|
+
computeCodeHashForDir: () => computeCodeHashForDir2,
|
|
1478
|
+
TRACE_VERSION: () => TRACE_VERSION2,
|
|
1479
|
+
RELEASE_MANIFEST_SIGNATURE: () => RELEASE_MANIFEST_SIGNATURE2,
|
|
1480
|
+
RELEASE_MANIFEST_BASE64: () => RELEASE_MANIFEST_BASE642,
|
|
1481
|
+
PACKAGE_VERSION: () => PACKAGE_VERSION2,
|
|
1482
|
+
GIT_SHA: () => GIT_SHA2,
|
|
1483
|
+
DEFAULT_BACKEND_URL: () => DEFAULT_BACKEND_URL2,
|
|
1484
|
+
CODE_HASH: () => CODE_HASH2
|
|
1485
|
+
});
|
|
1486
|
+
import { createHash as createHash3 } from "crypto";
|
|
1487
|
+
import { existsSync as existsSync15, readFileSync as readFileSync10, readdirSync as readdirSync4 } from "fs";
|
|
1488
|
+
import { dirname as dirname4, join as join12, parse as parse2 } from "path";
|
|
1489
|
+
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
1490
|
+
function collectTsFiles2(dir) {
|
|
1491
|
+
const results = [];
|
|
1492
|
+
for (const entry of readdirSync4(dir, { withFileTypes: true })) {
|
|
1493
|
+
const full = join12(dir, entry.name);
|
|
1494
|
+
if (entry.isDirectory() && entry.name !== "node_modules") {
|
|
1495
|
+
results.push(...collectTsFiles2(full));
|
|
1496
|
+
} else if (entry.name.endsWith(".ts")) {
|
|
1497
|
+
results.push(full);
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
return results;
|
|
1501
|
+
}
|
|
1502
|
+
function hashFiles2(srcDir, files) {
|
|
1503
|
+
const hash = createHash3("sha256");
|
|
1504
|
+
for (const file of files) {
|
|
1505
|
+
hash.update(file.slice(srcDir.length));
|
|
1506
|
+
hash.update(readFileSync10(file, "utf-8"));
|
|
1507
|
+
}
|
|
1508
|
+
return hash.digest("hex").slice(0, 12);
|
|
1509
|
+
}
|
|
1510
|
+
function resolveCodeHashSourceDir2(moduleDir) {
|
|
1511
|
+
const candidates = [
|
|
1512
|
+
moduleDir,
|
|
1513
|
+
join12(moduleDir, "runtime-src"),
|
|
1514
|
+
join12(moduleDir, "..", "runtime-src"),
|
|
1515
|
+
join12(moduleDir, "src"),
|
|
1516
|
+
join12(moduleDir, "..", "src")
|
|
1517
|
+
];
|
|
1518
|
+
for (const candidate of candidates) {
|
|
1519
|
+
try {
|
|
1520
|
+
if (!existsSync15(candidate))
|
|
1521
|
+
continue;
|
|
1522
|
+
const files = collectTsFiles2(candidate);
|
|
1523
|
+
if (files.length > 0)
|
|
1524
|
+
return candidate;
|
|
1525
|
+
} catch {}
|
|
1526
|
+
}
|
|
1527
|
+
return null;
|
|
1528
|
+
}
|
|
1529
|
+
function computeCodeHashForDir2(srcDir) {
|
|
1530
|
+
const files = collectTsFiles2(srcDir).sort();
|
|
1531
|
+
if (files.length === 0)
|
|
1532
|
+
throw new Error(`No TypeScript sources found in ${srcDir}`);
|
|
1533
|
+
return hashFiles2(srcDir, files);
|
|
1534
|
+
}
|
|
1535
|
+
function computeCodeHash2() {
|
|
1536
|
+
try {
|
|
1537
|
+
const srcDir = resolveCodeHashSourceDir2(MODULE_DIR2);
|
|
1538
|
+
if (srcDir)
|
|
1539
|
+
return computeCodeHashForDir2(srcDir);
|
|
1540
|
+
} catch {}
|
|
1541
|
+
const pkgVersion = getPackageVersion2();
|
|
1542
|
+
if (pkgVersion !== "unknown") {
|
|
1543
|
+
return createHash3("sha256").update(`package:${pkgVersion}`).digest("hex").slice(0, 12);
|
|
1544
|
+
}
|
|
1545
|
+
return "compiled";
|
|
1546
|
+
}
|
|
1547
|
+
function getGitSha2() {
|
|
1548
|
+
return BUILD_GIT_SHA?.trim() || "unknown";
|
|
1549
|
+
}
|
|
1550
|
+
function decodeBase64UrlJson2(value) {
|
|
1551
|
+
try {
|
|
1552
|
+
if (!value)
|
|
1553
|
+
return null;
|
|
1554
|
+
return JSON.parse(Buffer.from(value, "base64url").toString("utf-8"));
|
|
1555
|
+
} catch {
|
|
1556
|
+
return null;
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
function getEmbeddedReleaseVersion2() {
|
|
1560
|
+
if (BUILD_RELEASE_VERSION?.trim())
|
|
1561
|
+
return BUILD_RELEASE_VERSION.trim();
|
|
1562
|
+
const manifest = decodeBase64UrlJson2(BUILD_RELEASE_MANIFEST_BASE64?.trim() || "");
|
|
1563
|
+
return typeof manifest?.release_version === "string" && manifest.release_version.trim() ? manifest.release_version.trim() : null;
|
|
1564
|
+
}
|
|
1565
|
+
function getPackageVersionForModuleDir2(moduleDir) {
|
|
1566
|
+
let dir = moduleDir;
|
|
1567
|
+
const root = parse2(dir).root;
|
|
1568
|
+
while (true) {
|
|
1569
|
+
try {
|
|
1570
|
+
const pkg = JSON.parse(readFileSync10(join12(dir, "package.json"), "utf-8"));
|
|
1571
|
+
return typeof pkg.version === "string" ? pkg.version : "unknown";
|
|
1572
|
+
} catch {}
|
|
1573
|
+
if (dir === root)
|
|
1574
|
+
return "unknown";
|
|
1575
|
+
dir = dirname4(dir);
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
function getPackageVersion2() {
|
|
1579
|
+
const packageVersion = getPackageVersionForModuleDir2(MODULE_DIR2);
|
|
1580
|
+
if (packageVersion !== "unknown")
|
|
1581
|
+
return packageVersion;
|
|
1582
|
+
return getEmbeddedReleaseVersion2() ?? "unknown";
|
|
1583
|
+
}
|
|
1584
|
+
var MODULE_DIR2, CODE_HASH2, GIT_SHA2, PACKAGE_VERSION2, DEFAULT_BACKEND_URL2, TRACE_VERSION2, RELEASE_MANIFEST_BASE642, RELEASE_MANIFEST_SIGNATURE2;
|
|
1585
|
+
var init_version2 = __esm(() => {
|
|
1586
|
+
MODULE_DIR2 = dirname4(fileURLToPath4(import.meta.url));
|
|
1587
|
+
CODE_HASH2 = BUILD_CODE_HASH?.trim() || computeCodeHash2();
|
|
1588
|
+
GIT_SHA2 = getGitSha2();
|
|
1589
|
+
PACKAGE_VERSION2 = getPackageVersion2();
|
|
1590
|
+
DEFAULT_BACKEND_URL2 = BUILD_DEFAULT_BACKEND_URL?.trim() || "https://beta-api.unbrowse.ai";
|
|
1591
|
+
TRACE_VERSION2 = `${CODE_HASH2}@${GIT_SHA2}`;
|
|
1592
|
+
RELEASE_MANIFEST_BASE642 = BUILD_RELEASE_MANIFEST_BASE64?.trim() || "";
|
|
1593
|
+
RELEASE_MANIFEST_SIGNATURE2 = BUILD_RELEASE_MANIFEST_SIGNATURE?.trim() || "";
|
|
1594
|
+
});
|
|
1595
|
+
|
|
1471
1596
|
// ../../src/auth/agent-mail.ts
|
|
1472
1597
|
var exports_agent_mail = {};
|
|
1473
1598
|
__export(exports_agent_mail, {
|
|
@@ -1594,19 +1719,19 @@ __export(exports_browser_cookies, {
|
|
|
1594
1719
|
});
|
|
1595
1720
|
import { execFileSync as execFileSync4 } from "node:child_process";
|
|
1596
1721
|
import { createDecipheriv, pbkdf2Sync } from "node:crypto";
|
|
1597
|
-
import { copyFileSync, existsSync as
|
|
1722
|
+
import { copyFileSync, existsSync as existsSync16, mkdtempSync, readdirSync as readdirSync5, rmSync } from "node:fs";
|
|
1598
1723
|
import { tmpdir, homedir as homedir7, platform } from "node:os";
|
|
1599
|
-
import { join as
|
|
1724
|
+
import { join as join13 } from "node:path";
|
|
1600
1725
|
function getChromeUserDataDir() {
|
|
1601
1726
|
const home = homedir7();
|
|
1602
1727
|
if (platform() === "darwin") {
|
|
1603
|
-
return
|
|
1728
|
+
return join13(home, "Library", "Application Support", "Google", "Chrome");
|
|
1604
1729
|
}
|
|
1605
1730
|
if (platform() === "win32") {
|
|
1606
|
-
const appData = process.env.LOCALAPPDATA ??
|
|
1607
|
-
return
|
|
1731
|
+
const appData = process.env.LOCALAPPDATA ?? join13(home, "AppData", "Local");
|
|
1732
|
+
return join13(appData, "Google", "Chrome", "User Data");
|
|
1608
1733
|
}
|
|
1609
|
-
return
|
|
1734
|
+
return join13(home, ".config", "google-chrome");
|
|
1610
1735
|
}
|
|
1611
1736
|
function resolveChromiumCookiesPath(opts) {
|
|
1612
1737
|
if (opts?.cookieDbPath) {
|
|
@@ -1615,45 +1740,45 @@ function resolveChromiumCookiesPath(opts) {
|
|
|
1615
1740
|
const profileDir = opts?.profile || "Default";
|
|
1616
1741
|
const userDataDir = (opts?.userDataDir || getChromeUserDataDir()).replace(/^~\//, homedir7() + "/");
|
|
1617
1742
|
const candidates = [
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1743
|
+
join13(userDataDir, profileDir, "Network", "Cookies"),
|
|
1744
|
+
join13(userDataDir, profileDir, "Cookies"),
|
|
1745
|
+
join13(userDataDir, "Network", "Cookies"),
|
|
1746
|
+
join13(userDataDir, "Cookies")
|
|
1622
1747
|
];
|
|
1623
|
-
return candidates.find((candidate) =>
|
|
1748
|
+
return candidates.find((candidate) => existsSync16(candidate)) ?? candidates[0] ?? null;
|
|
1624
1749
|
}
|
|
1625
1750
|
function getFirefoxProfilesRoot() {
|
|
1626
1751
|
const home = homedir7();
|
|
1627
1752
|
if (platform() === "darwin") {
|
|
1628
|
-
return
|
|
1753
|
+
return join13(home, "Library", "Application Support", "Firefox", "Profiles");
|
|
1629
1754
|
}
|
|
1630
1755
|
if (platform() === "linux") {
|
|
1631
|
-
return
|
|
1756
|
+
return join13(home, ".mozilla", "firefox");
|
|
1632
1757
|
}
|
|
1633
1758
|
if (platform() === "win32") {
|
|
1634
1759
|
const appData = process.env.APPDATA;
|
|
1635
1760
|
if (!appData)
|
|
1636
1761
|
return null;
|
|
1637
|
-
return
|
|
1762
|
+
return join13(appData, "Mozilla", "Firefox", "Profiles");
|
|
1638
1763
|
}
|
|
1639
1764
|
return null;
|
|
1640
1765
|
}
|
|
1641
1766
|
function pickFirefoxProfile(profilesRoot, profile) {
|
|
1642
1767
|
if (profile) {
|
|
1643
|
-
const candidate2 =
|
|
1644
|
-
return
|
|
1768
|
+
const candidate2 = join13(profilesRoot, profile, "cookies.sqlite");
|
|
1769
|
+
return existsSync16(candidate2) ? candidate2 : null;
|
|
1645
1770
|
}
|
|
1646
|
-
const entries =
|
|
1771
|
+
const entries = readdirSync5(profilesRoot, { withFileTypes: true });
|
|
1647
1772
|
const defaultRelease = entries.find((e) => e.isDirectory() && e.name.includes("default-release"));
|
|
1648
1773
|
const targetDir = defaultRelease?.name ?? entries.find((e) => e.isDirectory())?.name;
|
|
1649
1774
|
if (!targetDir)
|
|
1650
1775
|
return null;
|
|
1651
|
-
const candidate =
|
|
1652
|
-
return
|
|
1776
|
+
const candidate = join13(profilesRoot, targetDir, "cookies.sqlite");
|
|
1777
|
+
return existsSync16(candidate) ? candidate : null;
|
|
1653
1778
|
}
|
|
1654
1779
|
function getFirefoxCookiesPath(profile) {
|
|
1655
1780
|
const profilesRoot = getFirefoxProfilesRoot();
|
|
1656
|
-
if (!profilesRoot || !
|
|
1781
|
+
if (!profilesRoot || !existsSync16(profilesRoot))
|
|
1657
1782
|
return null;
|
|
1658
1783
|
return pickFirefoxProfile(profilesRoot, profile);
|
|
1659
1784
|
}
|
|
@@ -1722,13 +1847,13 @@ function decodeChromiumCookieValue(rawValue, encryptedHex, opts) {
|
|
|
1722
1847
|
return decryptChromiumValue(encryptedHex, opts);
|
|
1723
1848
|
}
|
|
1724
1849
|
function withTempCopy(dbPath, fn) {
|
|
1725
|
-
const tempDir = mkdtempSync(
|
|
1726
|
-
const tempDb =
|
|
1850
|
+
const tempDir = mkdtempSync(join13(tmpdir(), "unbrowse-cookies-"));
|
|
1851
|
+
const tempDb = join13(tempDir, "cookies.db");
|
|
1727
1852
|
try {
|
|
1728
1853
|
copyFileSync(dbPath, tempDb);
|
|
1729
1854
|
for (const ext of ["-wal", "-shm"]) {
|
|
1730
1855
|
const src = dbPath + ext;
|
|
1731
|
-
if (
|
|
1856
|
+
if (existsSync16(src))
|
|
1732
1857
|
copyFileSync(src, tempDb + ext);
|
|
1733
1858
|
}
|
|
1734
1859
|
return fn(tempDb);
|
|
@@ -1773,7 +1898,7 @@ function extractFromChromium(domain, opts) {
|
|
|
1773
1898
|
const warnings = [];
|
|
1774
1899
|
const dbPath = resolveChromiumCookiesPath(opts);
|
|
1775
1900
|
const sourceLabel = opts?.browserName || "Chromium";
|
|
1776
|
-
if (!dbPath || !
|
|
1901
|
+
if (!dbPath || !existsSync16(dbPath)) {
|
|
1777
1902
|
warnings.push(`${sourceLabel} cookies DB not found${dbPath ? ` at ${dbPath}` : ""}`);
|
|
1778
1903
|
return { cookies: [], source: null, warnings };
|
|
1779
1904
|
}
|
|
@@ -1891,8 +2016,8 @@ function scanAllBrowserSessions(domain) {
|
|
|
1891
2016
|
const results = [];
|
|
1892
2017
|
const home = homedir7();
|
|
1893
2018
|
for (const browser of CHROMIUM_BROWSERS) {
|
|
1894
|
-
const userDataDir = platform() === "darwin" ?
|
|
1895
|
-
if (!
|
|
2019
|
+
const userDataDir = platform() === "darwin" ? join13(home, "Library", "Application Support", browser.macPath) : platform() === "win32" ? join13(process.env.LOCALAPPDATA ?? join13(home, "AppData", "Local"), browser.macPath, "User Data") : join13(home, ".config", browser.macPath.toLowerCase());
|
|
2020
|
+
if (!existsSync16(userDataDir))
|
|
1896
2021
|
continue;
|
|
1897
2022
|
try {
|
|
1898
2023
|
const result = extractFromChromium(domain, {
|
|
@@ -4913,7 +5038,9 @@ async function cmdEarnings(flags) {
|
|
|
4913
5038
|
die("No API key found. Run `unbrowse setup` first.");
|
|
4914
5039
|
}
|
|
4915
5040
|
try {
|
|
4916
|
-
const
|
|
5041
|
+
const { DEFAULT_BACKEND_URL: DEFAULT_BACKEND_URL3 } = await Promise.resolve().then(() => (init_version2(), exports_version));
|
|
5042
|
+
const backendUrl = process.env.UNBROWSE_BACKEND_URL || DEFAULT_BACKEND_URL3;
|
|
5043
|
+
const resp = await fetch(`${backendUrl}/v1/credits/balance`, {
|
|
4917
5044
|
headers: { Authorization: `Bearer ${apiKey}` }
|
|
4918
5045
|
});
|
|
4919
5046
|
if (!resp.ok) {
|
|
@@ -5339,7 +5466,7 @@ async function cmdLoginAuto(flags) {
|
|
|
5339
5466
|
async function cmdSessionsScan(flags) {
|
|
5340
5467
|
const domain = flags.domain;
|
|
5341
5468
|
const { scanAllBrowserSessions: scanAllBrowserSessions2, findBestBrowserSession: findBestBrowserSession2 } = await Promise.resolve().then(() => (init_browser_cookies(), exports_browser_cookies));
|
|
5342
|
-
const { execFileSync: execFileSync5, existsSync:
|
|
5469
|
+
const { execFileSync: execFileSync5, existsSync: existsSync17 } = await import("./cli-imports.js").catch(() => ({ execFileSync: __require("child_process").execFileSync, existsSync: __require("fs").existsSync }));
|
|
5343
5470
|
if (domain) {
|
|
5344
5471
|
const sessions = scanAllBrowserSessions2(domain);
|
|
5345
5472
|
if (sessions.length === 0) {
|
|
@@ -5361,13 +5488,13 @@ async function cmdSessionsScan(flags) {
|
|
|
5361
5488
|
return;
|
|
5362
5489
|
}
|
|
5363
5490
|
const home = __require("os").homedir();
|
|
5364
|
-
const { join:
|
|
5491
|
+
const { join: join14 } = __require("path");
|
|
5365
5492
|
const browsers = [
|
|
5366
|
-
{ name: "Chrome", path:
|
|
5367
|
-
{ name: "Dia", path:
|
|
5368
|
-
{ name: "Arc", path:
|
|
5369
|
-
{ name: "Brave", path:
|
|
5370
|
-
{ name: "Edge", path:
|
|
5493
|
+
{ name: "Chrome", path: join14(home, "Library/Application Support/Google/Chrome/Default/Cookies") },
|
|
5494
|
+
{ name: "Dia", path: join14(home, "Library/Application Support/Dia/User Data/Default/Cookies") },
|
|
5495
|
+
{ name: "Arc", path: join14(home, "Library/Application Support/Arc/User Data/Default/Cookies") },
|
|
5496
|
+
{ name: "Brave", path: join14(home, "Library/Application Support/BraveSoftware/Brave-Browser/Default/Cookies") },
|
|
5497
|
+
{ name: "Edge", path: join14(home, "Library/Application Support/Microsoft Edge/Default/Cookies") }
|
|
5371
5498
|
];
|
|
5372
5499
|
const allSessions = [];
|
|
5373
5500
|
for (const b of browsers) {
|
package/dist/mcp.js
CHANGED
|
@@ -225,11 +225,11 @@ import { dirname, join, parse } from "path";
|
|
|
225
225
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
226
226
|
|
|
227
227
|
// ../../src/build-info.generated.ts
|
|
228
|
-
var BUILD_RELEASE_VERSION = "3.5.
|
|
229
|
-
var BUILD_GIT_SHA = "
|
|
230
|
-
var BUILD_CODE_HASH = "
|
|
231
|
-
var BUILD_RELEASE_MANIFEST_BASE64 = "
|
|
232
|
-
var BUILD_RELEASE_MANIFEST_SIGNATURE = "
|
|
228
|
+
var BUILD_RELEASE_VERSION = "3.5.1";
|
|
229
|
+
var BUILD_GIT_SHA = "e7c750e1b8d0";
|
|
230
|
+
var BUILD_CODE_HASH = "527243268ab4";
|
|
231
|
+
var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjEiLCJnaXRfc2hhIjoiZTdjNzUwZTFiOGQwIiwiY29kZV9oYXNoIjoiNTI3MjQzMjY4YWI0IiwidHJhY2VfdmVyc2lvbiI6IjUyNzI0MzI2OGFiNEBlN2M3NTBlMWI4ZDAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE2OjM2OjUyLjgyOFoifQ";
|
|
232
|
+
var BUILD_RELEASE_MANIFEST_SIGNATURE = "OKjQmllM1We29ojGhYIEAOhJJG5e_UuMa3d2CwuwWj8";
|
|
233
233
|
var BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
|
|
234
234
|
|
|
235
235
|
// ../../src/version.ts
|
package/dist/server.js
CHANGED
|
@@ -7091,7 +7091,7 @@ var init_capture = __esm(async () => {
|
|
|
7091
7091
|
});
|
|
7092
7092
|
|
|
7093
7093
|
// ../../src/build-info.generated.ts
|
|
7094
|
-
var BUILD_RELEASE_VERSION = "3.5.
|
|
7094
|
+
var BUILD_RELEASE_VERSION = "3.5.1", BUILD_GIT_SHA = "e7c750e1b8d0", BUILD_CODE_HASH = "527243268ab4", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjEiLCJnaXRfc2hhIjoiZTdjNzUwZTFiOGQwIiwiY29kZV9oYXNoIjoiNTI3MjQzMjY4YWI0IiwidHJhY2VfdmVyc2lvbiI6IjUyNzI0MzI2OGFiNEBlN2M3NTBlMWI4ZDAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE2OjM2OjUyLjgyOFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "OKjQmllM1We29ojGhYIEAOhJJG5e_UuMa3d2CwuwWj8", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
|
|
7095
7095
|
|
|
7096
7096
|
// ../../src/version.ts
|
|
7097
7097
|
import { createHash } from "crypto";
|