@xbrowser/cli 1.4.5 → 1.4.6
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/{browser-V3VHXQQF.js → browser-2OK26HBS.js} +2 -2
- package/dist/{browser-5CM4GUZU.js → browser-SOML2EWR.js} +1 -1
- package/dist/{browser-2OALOLR2.js → browser-ZTTS2SVT.js} +2 -2
- package/dist/{cdp-driver-ACRHJMS3.js → cdp-driver-67B5EI4C.js} +8 -14
- package/dist/{cdp-driver-VRXHK6P6.js → cdp-driver-UGO45HXR.js} +1 -1
- package/dist/{chunk-IDJ5NILK.js → chunk-2RHJEYWU.js} +8 -14
- package/dist/{chunk-Z6GGTJL5.js → chunk-LYVU6SD3.js} +1 -1
- package/dist/{chunk-SMRIC22G.js → chunk-NQSFETTQ.js} +1 -1
- package/dist/{chunk-NW3WE5JK.js → chunk-RGS6ECTH.js} +8 -14
- package/dist/cli.js +24 -6
- package/dist/daemon-main.js +7 -7
- package/dist/index.js +25 -7
- package/dist/{session-replayer-F4ORJMCL.js → session-replayer-YIGRIIDD.js} +1 -1
- package/package.json +1 -1
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
saveSessionDiskMeta,
|
|
21
21
|
setActivePage,
|
|
22
22
|
touchSession
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-NQSFETTQ.js";
|
|
24
|
+
import "./chunk-2RHJEYWU.js";
|
|
25
25
|
import "./chunk-TNEN6VQ2.js";
|
|
26
26
|
import "./chunk-GDKLH7ZY.js";
|
|
27
27
|
import "./chunk-KFQGP6VL.js";
|
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
saveSessionDiskMeta,
|
|
21
21
|
setActivePage,
|
|
22
22
|
touchSession
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-LYVU6SD3.js";
|
|
24
|
+
import "./chunk-2RHJEYWU.js";
|
|
25
25
|
import "./chunk-TNEN6VQ2.js";
|
|
26
26
|
import "./chunk-GDKLH7ZY.js";
|
|
27
27
|
import "./chunk-ABXMBNQ6.js";
|
|
@@ -1165,23 +1165,17 @@ var XBPageImpl = class _XBPageImpl {
|
|
|
1165
1165
|
headers: () => headers
|
|
1166
1166
|
};
|
|
1167
1167
|
}
|
|
1168
|
-
async goBack(
|
|
1168
|
+
async goBack(_opts = {}) {
|
|
1169
|
+
const prevUrl = await this.evaluate("location.href").catch(() => "");
|
|
1169
1170
|
await this.evaluate("() => history.back()");
|
|
1170
|
-
await this.
|
|
1171
|
-
|
|
1172
|
-
try {
|
|
1173
|
-
this._url = await this.evaluate("location.href");
|
|
1174
|
-
} catch {
|
|
1175
|
-
}
|
|
1171
|
+
await this.waitForTimeout(2e3);
|
|
1172
|
+
this._url = await this.evaluate("location.href").catch(() => prevUrl);
|
|
1176
1173
|
}
|
|
1177
|
-
async goForward(
|
|
1174
|
+
async goForward(_opts = {}) {
|
|
1175
|
+
const prevUrl = await this.evaluate("location.href").catch(() => "");
|
|
1178
1176
|
await this.evaluate("() => history.forward()");
|
|
1179
|
-
await this.
|
|
1180
|
-
|
|
1181
|
-
try {
|
|
1182
|
-
this._url = await this.evaluate("location.href");
|
|
1183
|
-
} catch {
|
|
1184
|
-
}
|
|
1177
|
+
await this.waitForTimeout(2e3);
|
|
1178
|
+
this._url = await this.evaluate("location.href").catch(() => prevUrl);
|
|
1185
1179
|
}
|
|
1186
1180
|
async reload(opts = {}) {
|
|
1187
1181
|
this._loadState = { loadFired: false, domContentFired: false, networkIdle: false };
|
|
@@ -1164,23 +1164,17 @@ var XBPageImpl = class _XBPageImpl {
|
|
|
1164
1164
|
headers: () => headers
|
|
1165
1165
|
};
|
|
1166
1166
|
}
|
|
1167
|
-
async goBack(
|
|
1167
|
+
async goBack(_opts = {}) {
|
|
1168
|
+
const prevUrl = await this.evaluate("location.href").catch(() => "");
|
|
1168
1169
|
await this.evaluate("() => history.back()");
|
|
1169
|
-
await this.
|
|
1170
|
-
|
|
1171
|
-
try {
|
|
1172
|
-
this._url = await this.evaluate("location.href");
|
|
1173
|
-
} catch {
|
|
1174
|
-
}
|
|
1170
|
+
await this.waitForTimeout(2e3);
|
|
1171
|
+
this._url = await this.evaluate("location.href").catch(() => prevUrl);
|
|
1175
1172
|
}
|
|
1176
|
-
async goForward(
|
|
1173
|
+
async goForward(_opts = {}) {
|
|
1174
|
+
const prevUrl = await this.evaluate("location.href").catch(() => "");
|
|
1177
1175
|
await this.evaluate("() => history.forward()");
|
|
1178
|
-
await this.
|
|
1179
|
-
|
|
1180
|
-
try {
|
|
1181
|
-
this._url = await this.evaluate("location.href");
|
|
1182
|
-
} catch {
|
|
1183
|
-
}
|
|
1176
|
+
await this.waitForTimeout(2e3);
|
|
1177
|
+
this._url = await this.evaluate("location.href").catch(() => prevUrl);
|
|
1184
1178
|
}
|
|
1185
1179
|
async reload(opts = {}) {
|
|
1186
1180
|
this._loadState = { loadFired: false, domContentFired: false, networkIdle: false };
|
|
@@ -1170,23 +1170,17 @@ var XBPageImpl = class _XBPageImpl {
|
|
|
1170
1170
|
headers: () => headers
|
|
1171
1171
|
};
|
|
1172
1172
|
}
|
|
1173
|
-
async goBack(
|
|
1173
|
+
async goBack(_opts = {}) {
|
|
1174
|
+
const prevUrl = await this.evaluate("location.href").catch(() => "");
|
|
1174
1175
|
await this.evaluate("() => history.back()");
|
|
1175
|
-
await this.
|
|
1176
|
-
|
|
1177
|
-
try {
|
|
1178
|
-
this._url = await this.evaluate("location.href");
|
|
1179
|
-
} catch {
|
|
1180
|
-
}
|
|
1176
|
+
await this.waitForTimeout(2e3);
|
|
1177
|
+
this._url = await this.evaluate("location.href").catch(() => prevUrl);
|
|
1181
1178
|
}
|
|
1182
|
-
async goForward(
|
|
1179
|
+
async goForward(_opts = {}) {
|
|
1180
|
+
const prevUrl = await this.evaluate("location.href").catch(() => "");
|
|
1183
1181
|
await this.evaluate("() => history.forward()");
|
|
1184
|
-
await this.
|
|
1185
|
-
|
|
1186
|
-
try {
|
|
1187
|
-
this._url = await this.evaluate("location.href");
|
|
1188
|
-
} catch {
|
|
1189
|
-
}
|
|
1182
|
+
await this.waitForTimeout(2e3);
|
|
1183
|
+
this._url = await this.evaluate("location.href").catch(() => prevUrl);
|
|
1190
1184
|
}
|
|
1191
1185
|
async reload(opts = {}) {
|
|
1192
1186
|
this._loadState = { loadFired: false, domContentFired: false, networkIdle: false };
|
package/dist/cli.js
CHANGED
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
resolveLaunchOpts,
|
|
26
26
|
saveSessionDiskMeta,
|
|
27
27
|
setActivePage
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-RGS6ECTH.js";
|
|
29
29
|
import "./chunk-TNEN6VQ2.js";
|
|
30
30
|
import {
|
|
31
31
|
forwardCommandLog,
|
|
@@ -5466,12 +5466,12 @@ registerCommandDefinition("health", []);
|
|
|
5466
5466
|
registerCommandDefinition("scrape", ["url"]);
|
|
5467
5467
|
registerCommandDefinition("structure", []);
|
|
5468
5468
|
registerCommandDefinition("get-cookies", []);
|
|
5469
|
-
registerCommandDefinition("set-cookie", []);
|
|
5469
|
+
registerCommandDefinition("set-cookie", ["name", "value"]);
|
|
5470
5470
|
registerCommandDefinition("clear-cookies", []);
|
|
5471
5471
|
registerCommandDefinition("get-local-storage", []);
|
|
5472
|
-
registerCommandDefinition("set-local-storage", []);
|
|
5472
|
+
registerCommandDefinition("set-local-storage", ["key", "value"]);
|
|
5473
5473
|
registerCommandDefinition("clear-local-storage", []);
|
|
5474
|
-
registerCommandDefinition("set-viewport", []);
|
|
5474
|
+
registerCommandDefinition("set-viewport", ["width", "height"]);
|
|
5475
5475
|
registerCommandDefinition("frames", []);
|
|
5476
5476
|
registerCommandDefinition("frame", ["selector"]);
|
|
5477
5477
|
registerCommandDefinition("actions", ["url"]);
|
|
@@ -7083,7 +7083,7 @@ async function executeCommand(commandName, params, sessionName = "default", extr
|
|
|
7083
7083
|
}
|
|
7084
7084
|
let targetPageOverride = null;
|
|
7085
7085
|
if (_target && extraOpts?.cdpEndpoint) {
|
|
7086
|
-
const { findTargetPage } = await import("./browser-
|
|
7086
|
+
const { findTargetPage } = await import("./browser-SOML2EWR.js");
|
|
7087
7087
|
targetPageOverride = await findTargetPage(extraOpts.cdpEndpoint, _target);
|
|
7088
7088
|
if (!targetPageOverride) {
|
|
7089
7089
|
return errorResult(`Target "${_target}" not found. Use 'xbrowser targets --cdp ${extraOpts.cdpEndpoint}' to list available pages.`);
|
|
@@ -10040,6 +10040,24 @@ async function handleBrowserCommand(command, args, options, sessionName, mode, c
|
|
|
10040
10040
|
timeout: args[0] ? Number(args[0]) : options.timeout ? Number(options.timeout) : 1e3
|
|
10041
10041
|
};
|
|
10042
10042
|
break;
|
|
10043
|
+
case "set-cookie":
|
|
10044
|
+
cmdName = "set-cookie";
|
|
10045
|
+
params = {
|
|
10046
|
+
name: options.name || args[0],
|
|
10047
|
+
value: (options.value || options.v) ?? args[1],
|
|
10048
|
+
domain: options.domain,
|
|
10049
|
+
path: options.path,
|
|
10050
|
+
httpOnly: options.httpOnly ? Boolean(options.httpOnly) : void 0,
|
|
10051
|
+
secure: options.secure ? Boolean(options.secure) : void 0
|
|
10052
|
+
};
|
|
10053
|
+
break;
|
|
10054
|
+
case "set-local-storage":
|
|
10055
|
+
cmdName = "set-local-storage";
|
|
10056
|
+
params = {
|
|
10057
|
+
key: options.key || args[0],
|
|
10058
|
+
value: (options.value || options.v) ?? args[1]
|
|
10059
|
+
};
|
|
10060
|
+
break;
|
|
10043
10061
|
default:
|
|
10044
10062
|
cmdName = command;
|
|
10045
10063
|
params = { ...options };
|
|
@@ -13039,7 +13057,7 @@ async function main() {
|
|
|
13039
13057
|
const command = process.argv[2];
|
|
13040
13058
|
const isLongRunning = command === "preview" || command === "serve";
|
|
13041
13059
|
if (!isLongRunning) {
|
|
13042
|
-
const { ensureProcessCanExit } = await import("./browser-
|
|
13060
|
+
const { ensureProcessCanExit } = await import("./browser-SOML2EWR.js");
|
|
13043
13061
|
await ensureProcessCanExit().catch(() => {
|
|
13044
13062
|
});
|
|
13045
13063
|
process.exit(exitCode);
|
package/dist/daemon-main.js
CHANGED
|
@@ -21,8 +21,8 @@ import {
|
|
|
21
21
|
resolveLaunchOpts,
|
|
22
22
|
saveSessionDiskMeta,
|
|
23
23
|
setActivePage
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
} from "./chunk-NQSFETTQ.js";
|
|
25
|
+
import "./chunk-2RHJEYWU.js";
|
|
26
26
|
import "./chunk-TNEN6VQ2.js";
|
|
27
27
|
import {
|
|
28
28
|
getPluginLoader
|
|
@@ -5427,12 +5427,12 @@ registerCommandDefinition("health", []);
|
|
|
5427
5427
|
registerCommandDefinition("scrape", ["url"]);
|
|
5428
5428
|
registerCommandDefinition("structure", []);
|
|
5429
5429
|
registerCommandDefinition("get-cookies", []);
|
|
5430
|
-
registerCommandDefinition("set-cookie", []);
|
|
5430
|
+
registerCommandDefinition("set-cookie", ["name", "value"]);
|
|
5431
5431
|
registerCommandDefinition("clear-cookies", []);
|
|
5432
5432
|
registerCommandDefinition("get-local-storage", []);
|
|
5433
|
-
registerCommandDefinition("set-local-storage", []);
|
|
5433
|
+
registerCommandDefinition("set-local-storage", ["key", "value"]);
|
|
5434
5434
|
registerCommandDefinition("clear-local-storage", []);
|
|
5435
|
-
registerCommandDefinition("set-viewport", []);
|
|
5435
|
+
registerCommandDefinition("set-viewport", ["width", "height"]);
|
|
5436
5436
|
registerCommandDefinition("frames", []);
|
|
5437
5437
|
registerCommandDefinition("frame", ["selector"]);
|
|
5438
5438
|
registerCommandDefinition("actions", ["url"]);
|
|
@@ -6614,7 +6614,7 @@ async function executeCommand(commandName, params, sessionName = "default", extr
|
|
|
6614
6614
|
}
|
|
6615
6615
|
let targetPageOverride = null;
|
|
6616
6616
|
if (_target && extraOpts?.cdpEndpoint) {
|
|
6617
|
-
const { findTargetPage } = await import("./browser-
|
|
6617
|
+
const { findTargetPage } = await import("./browser-2OK26HBS.js");
|
|
6618
6618
|
targetPageOverride = await findTargetPage(extraOpts.cdpEndpoint, _target);
|
|
6619
6619
|
if (!targetPageOverride) {
|
|
6620
6620
|
return errorResult(`Target "${_target}" not found. Use 'xbrowser targets --cdp ${extraOpts.cdpEndpoint}' to list available pages.`);
|
|
@@ -8330,7 +8330,7 @@ function createRPCHandler() {
|
|
|
8330
8330
|
const isNewFormat = Array.isArray(parsed.actions);
|
|
8331
8331
|
if (isNewFormat) {
|
|
8332
8332
|
try {
|
|
8333
|
-
const { SessionReplayer } = await import("./session-replayer-
|
|
8333
|
+
const { SessionReplayer } = await import("./session-replayer-YIGRIIDD.js");
|
|
8334
8334
|
const replayer = new SessionReplayer({
|
|
8335
8335
|
page: session.page,
|
|
8336
8336
|
stepDelay: slowMo * 500,
|
package/dist/index.js
CHANGED
|
@@ -81,8 +81,8 @@ import {
|
|
|
81
81
|
resolveLaunchOpts,
|
|
82
82
|
saveSessionDiskMeta,
|
|
83
83
|
setActivePage
|
|
84
|
-
} from "./chunk-
|
|
85
|
-
import "./chunk-
|
|
84
|
+
} from "./chunk-LYVU6SD3.js";
|
|
85
|
+
import "./chunk-2RHJEYWU.js";
|
|
86
86
|
import "./chunk-TNEN6VQ2.js";
|
|
87
87
|
import {
|
|
88
88
|
errMsg
|
|
@@ -5783,12 +5783,12 @@ registerCommandDefinition("health", []);
|
|
|
5783
5783
|
registerCommandDefinition("scrape", ["url"]);
|
|
5784
5784
|
registerCommandDefinition("structure", []);
|
|
5785
5785
|
registerCommandDefinition("get-cookies", []);
|
|
5786
|
-
registerCommandDefinition("set-cookie", []);
|
|
5786
|
+
registerCommandDefinition("set-cookie", ["name", "value"]);
|
|
5787
5787
|
registerCommandDefinition("clear-cookies", []);
|
|
5788
5788
|
registerCommandDefinition("get-local-storage", []);
|
|
5789
|
-
registerCommandDefinition("set-local-storage", []);
|
|
5789
|
+
registerCommandDefinition("set-local-storage", ["key", "value"]);
|
|
5790
5790
|
registerCommandDefinition("clear-local-storage", []);
|
|
5791
|
-
registerCommandDefinition("set-viewport", []);
|
|
5791
|
+
registerCommandDefinition("set-viewport", ["width", "height"]);
|
|
5792
5792
|
registerCommandDefinition("frames", []);
|
|
5793
5793
|
registerCommandDefinition("frame", ["selector"]);
|
|
5794
5794
|
registerCommandDefinition("actions", ["url"]);
|
|
@@ -7403,7 +7403,7 @@ async function executeCommand(commandName, params, sessionName = "default", extr
|
|
|
7403
7403
|
}
|
|
7404
7404
|
let targetPageOverride = null;
|
|
7405
7405
|
if (_target && extraOpts?.cdpEndpoint) {
|
|
7406
|
-
const { findTargetPage } = await import("./browser-
|
|
7406
|
+
const { findTargetPage } = await import("./browser-ZTTS2SVT.js");
|
|
7407
7407
|
targetPageOverride = await findTargetPage(extraOpts.cdpEndpoint, _target);
|
|
7408
7408
|
if (!targetPageOverride) {
|
|
7409
7409
|
return errorResult(`Target "${_target}" not found. Use 'xbrowser targets --cdp ${extraOpts.cdpEndpoint}' to list available pages.`);
|
|
@@ -10380,6 +10380,24 @@ async function handleBrowserCommand(command, args, options, sessionName, mode, c
|
|
|
10380
10380
|
timeout: args[0] ? Number(args[0]) : options.timeout ? Number(options.timeout) : 1e3
|
|
10381
10381
|
};
|
|
10382
10382
|
break;
|
|
10383
|
+
case "set-cookie":
|
|
10384
|
+
cmdName = "set-cookie";
|
|
10385
|
+
params = {
|
|
10386
|
+
name: options.name || args[0],
|
|
10387
|
+
value: (options.value || options.v) ?? args[1],
|
|
10388
|
+
domain: options.domain,
|
|
10389
|
+
path: options.path,
|
|
10390
|
+
httpOnly: options.httpOnly ? Boolean(options.httpOnly) : void 0,
|
|
10391
|
+
secure: options.secure ? Boolean(options.secure) : void 0
|
|
10392
|
+
};
|
|
10393
|
+
break;
|
|
10394
|
+
case "set-local-storage":
|
|
10395
|
+
cmdName = "set-local-storage";
|
|
10396
|
+
params = {
|
|
10397
|
+
key: options.key || args[0],
|
|
10398
|
+
value: (options.value || options.v) ?? args[1]
|
|
10399
|
+
};
|
|
10400
|
+
break;
|
|
10383
10401
|
default:
|
|
10384
10402
|
cmdName = command;
|
|
10385
10403
|
params = { ...options };
|
|
@@ -16166,7 +16184,7 @@ var DataCollector = class {
|
|
|
16166
16184
|
return results;
|
|
16167
16185
|
}
|
|
16168
16186
|
async createBrowserContext() {
|
|
16169
|
-
const { launch } = await import("./cdp-driver-
|
|
16187
|
+
const { launch } = await import("./cdp-driver-UGO45HXR.js");
|
|
16170
16188
|
const { browser } = await launch({
|
|
16171
16189
|
headless: true,
|
|
16172
16190
|
args: ["--no-sandbox", "--disable-setuid-sandbox"]
|
|
@@ -31,7 +31,7 @@ var SessionReplayer = class {
|
|
|
31
31
|
if (this.opts.page) {
|
|
32
32
|
this.page = this.opts.page;
|
|
33
33
|
} else if (this.opts.cdpUrl) {
|
|
34
|
-
const { launch } = await import("./cdp-driver-
|
|
34
|
+
const { launch } = await import("./cdp-driver-UGO45HXR.js");
|
|
35
35
|
const { browser } = await launch({ cdpEndpoint: this.opts.cdpUrl });
|
|
36
36
|
let contexts = browser.contexts();
|
|
37
37
|
for (let i = 0; i < 10 && contexts.length === 0; i++) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xbrowser/cli",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.6",
|
|
4
4
|
"description": "Browser automation CLI for web scraping, headless browsing, SEO analysis, and AI agent workflows. A command-line alternative to Playwright, Puppeteer, and Selenium.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|