@brightdata/cli 0.1.4 → 0.1.5

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.
Files changed (76) hide show
  1. package/README.md +354 -0
  2. package/dist/__tests__/browser/connection.test.d.ts +2 -0
  3. package/dist/__tests__/browser/connection.test.d.ts.map +1 -0
  4. package/dist/__tests__/browser/connection.test.js +168 -0
  5. package/dist/__tests__/browser/connection.test.js.map +1 -0
  6. package/dist/__tests__/browser/daemon.test.d.ts +2 -0
  7. package/dist/__tests__/browser/daemon.test.d.ts.map +1 -0
  8. package/dist/__tests__/browser/daemon.test.js +586 -0
  9. package/dist/__tests__/browser/daemon.test.js.map +1 -0
  10. package/dist/__tests__/browser/entrypoint.test.d.ts +2 -0
  11. package/dist/__tests__/browser/entrypoint.test.d.ts.map +1 -0
  12. package/dist/__tests__/browser/entrypoint.test.js +53 -0
  13. package/dist/__tests__/browser/entrypoint.test.js.map +1 -0
  14. package/dist/__tests__/browser/ipc.test.d.ts +2 -0
  15. package/dist/__tests__/browser/ipc.test.d.ts.map +1 -0
  16. package/dist/__tests__/browser/ipc.test.js +199 -0
  17. package/dist/__tests__/browser/ipc.test.js.map +1 -0
  18. package/dist/__tests__/browser/lifecycle.test.d.ts +2 -0
  19. package/dist/__tests__/browser/lifecycle.test.d.ts.map +1 -0
  20. package/dist/__tests__/browser/lifecycle.test.js +176 -0
  21. package/dist/__tests__/browser/lifecycle.test.js.map +1 -0
  22. package/dist/__tests__/browser/snapshot.test.d.ts +2 -0
  23. package/dist/__tests__/browser/snapshot.test.d.ts.map +1 -0
  24. package/dist/__tests__/browser/snapshot.test.js +202 -0
  25. package/dist/__tests__/browser/snapshot.test.js.map +1 -0
  26. package/dist/__tests__/commands/browser.test.d.ts +2 -0
  27. package/dist/__tests__/commands/browser.test.d.ts.map +1 -0
  28. package/dist/__tests__/commands/browser.test.js +431 -0
  29. package/dist/__tests__/commands/browser.test.js.map +1 -0
  30. package/dist/__tests__/utils/browser-credentials.test.d.ts +2 -0
  31. package/dist/__tests__/utils/browser-credentials.test.d.ts.map +1 -0
  32. package/dist/__tests__/utils/browser-credentials.test.js +81 -0
  33. package/dist/__tests__/utils/browser-credentials.test.js.map +1 -0
  34. package/dist/browser/connection.d.ts +24 -0
  35. package/dist/browser/connection.d.ts.map +1 -0
  36. package/dist/browser/connection.js +55 -0
  37. package/dist/browser/connection.js.map +1 -0
  38. package/dist/browser/daemon.d.ts +130 -0
  39. package/dist/browser/daemon.d.ts.map +1 -0
  40. package/dist/browser/daemon.js +645 -0
  41. package/dist/browser/daemon.js.map +1 -0
  42. package/dist/browser/entrypoint.d.ts +20 -0
  43. package/dist/browser/entrypoint.d.ts.map +1 -0
  44. package/dist/browser/entrypoint.js +46 -0
  45. package/dist/browser/entrypoint.js.map +1 -0
  46. package/dist/browser/interaction.d.ts +32 -0
  47. package/dist/browser/interaction.d.ts.map +1 -0
  48. package/dist/browser/interaction.js +215 -0
  49. package/dist/browser/interaction.js.map +1 -0
  50. package/dist/browser/ipc.d.ts +52 -0
  51. package/dist/browser/ipc.d.ts.map +1 -0
  52. package/dist/browser/ipc.js +254 -0
  53. package/dist/browser/ipc.js.map +1 -0
  54. package/dist/browser/lifecycle.d.ts +31 -0
  55. package/dist/browser/lifecycle.d.ts.map +1 -0
  56. package/dist/browser/lifecycle.js +202 -0
  57. package/dist/browser/lifecycle.js.map +1 -0
  58. package/dist/browser/screenshot.d.ts +19 -0
  59. package/dist/browser/screenshot.d.ts.map +1 -0
  60. package/dist/browser/screenshot.js +44 -0
  61. package/dist/browser/screenshot.js.map +1 -0
  62. package/dist/browser/snapshot.d.ts +48 -0
  63. package/dist/browser/snapshot.d.ts.map +1 -0
  64. package/dist/browser/snapshot.js +490 -0
  65. package/dist/browser/snapshot.js.map +1 -0
  66. package/dist/commands/browser.d.ts +62 -0
  67. package/dist/commands/browser.d.ts.map +1 -0
  68. package/dist/commands/browser.js +615 -0
  69. package/dist/commands/browser.js.map +1 -0
  70. package/dist/index.js +39 -25
  71. package/dist/index.js.map +1 -1
  72. package/dist/utils/browser-credentials.d.ts +5 -0
  73. package/dist/utils/browser-credentials.d.ts.map +1 -0
  74. package/dist/utils/browser-credentials.js +53 -0
  75. package/dist/utils/browser-credentials.js.map +1 -0
  76. package/package.json +2 -1
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.wrap_content = exports.format_snapshot_text = exports.capture_snapshot = exports.DOM_REF_ATTRIBUTE = exports.CONTENT_BOUNDARY_HEADER = exports.CONTENT_BOUNDARY_FOOTER = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const DOM_REF_ATTRIBUTE = 'data-bd-ref';
9
+ exports.DOM_REF_ATTRIBUTE = DOM_REF_ATTRIBUTE;
10
+ const CONTENT_BOUNDARY_HEADER = 'BRIGHTDATA_BROWSER_CONTENT';
11
+ exports.CONTENT_BOUNDARY_HEADER = CONTENT_BOUNDARY_HEADER;
12
+ const CONTENT_BOUNDARY_FOOTER = 'END_BRIGHTDATA_BROWSER_CONTENT';
13
+ exports.CONTENT_BOUNDARY_FOOTER = CONTENT_BOUNDARY_FOOTER;
14
+ const wrap_content = (content, origin) => {
15
+ const nonce = crypto_1.default.randomBytes(16).toString('hex');
16
+ return [
17
+ `--- ${CONTENT_BOUNDARY_HEADER} nonce=${nonce} origin=${origin} ---`,
18
+ content,
19
+ `--- ${CONTENT_BOUNDARY_FOOTER} nonce=${nonce} ---`,
20
+ ].join('\n');
21
+ };
22
+ exports.wrap_content = wrap_content;
23
+ const normalize_text = (value) => {
24
+ if (typeof value != 'string')
25
+ return undefined;
26
+ const normalized = value.replace(/\s+/g, ' ').trim();
27
+ return normalized || undefined;
28
+ };
29
+ const quote_attr_value = (value) => {
30
+ return `"${value.replace(/"/g, '\\"')}"`;
31
+ };
32
+ const clone_snapshot_node = (node, children) => ({
33
+ children,
34
+ interactive: node.interactive,
35
+ level: node.level,
36
+ name: node.name,
37
+ placeholder: node.placeholder,
38
+ ref: node.ref,
39
+ role: node.role,
40
+ value: node.value,
41
+ });
42
+ const limit_snapshot_depth = (nodes, max_depth, depth = 0) => {
43
+ if (depth > max_depth)
44
+ return [];
45
+ return nodes.map(node => clone_snapshot_node(node, depth == max_depth
46
+ ? []
47
+ : limit_snapshot_depth(node.children, max_depth, depth + 1)));
48
+ };
49
+ const filter_compact_nodes = (nodes) => {
50
+ const filtered = [];
51
+ for (const node of nodes) {
52
+ const children = filter_compact_nodes(node.children);
53
+ if (!node.interactive && children.length == 0)
54
+ continue;
55
+ filtered.push(clone_snapshot_node(node, children));
56
+ }
57
+ return filtered;
58
+ };
59
+ const flatten_interactive_nodes = (nodes) => {
60
+ const flattened = [];
61
+ const visit = (node) => {
62
+ if (node.interactive)
63
+ flattened.push(clone_snapshot_node(node, []));
64
+ for (const child of node.children)
65
+ visit(child);
66
+ };
67
+ for (const node of nodes)
68
+ visit(node);
69
+ return flattened;
70
+ };
71
+ const apply_snapshot_filters = (nodes, opts) => {
72
+ const depth_limited = opts.depth === undefined
73
+ ? nodes
74
+ : limit_snapshot_depth(nodes, opts.depth);
75
+ if (opts.interactive)
76
+ return flatten_interactive_nodes(depth_limited);
77
+ if (opts.compact)
78
+ return filter_compact_nodes(depth_limited);
79
+ return depth_limited;
80
+ };
81
+ const collect_ref_ids = (nodes) => {
82
+ const ref_ids = new Set();
83
+ const visit = (node) => {
84
+ if (node.ref)
85
+ ref_ids.add(node.ref);
86
+ for (const child of node.children)
87
+ visit(child);
88
+ };
89
+ for (const node of nodes)
90
+ visit(node);
91
+ return ref_ids;
92
+ };
93
+ const format_snapshot_line = (node, depth) => {
94
+ const indent = ' '.repeat(depth);
95
+ const role = normalize_text(node.role) ?? 'node';
96
+ const name = normalize_text(node.name);
97
+ const attrs = [];
98
+ if (node.ref)
99
+ attrs.push(`ref=${node.ref}`);
100
+ if (node.level !== undefined)
101
+ attrs.push(`level=${node.level}`);
102
+ if (node.placeholder)
103
+ attrs.push(`placeholder=${quote_attr_value(node.placeholder)}`);
104
+ if (node.value)
105
+ attrs.push(`value=${quote_attr_value(node.value)}`);
106
+ const label = name ? `${role} ${quote_attr_value(name)}` : role;
107
+ const suffix = attrs.length ? ` [${attrs.join(', ')}]` : '';
108
+ return `${indent}- ${label}${suffix}`;
109
+ };
110
+ const format_snapshot_nodes = (nodes, depth = 0) => {
111
+ const lines = [];
112
+ for (const node of nodes) {
113
+ lines.push(format_snapshot_line(node, depth));
114
+ lines.push(...format_snapshot_nodes(node.children, depth + 1));
115
+ }
116
+ return lines;
117
+ };
118
+ const format_snapshot_text = (opts) => {
119
+ const lines = [
120
+ `Page: ${normalize_text(opts.title) ?? 'Untitled'}`,
121
+ `URL: ${normalize_text(opts.url) ?? 'about:blank'}`,
122
+ '',
123
+ ];
124
+ const body = format_snapshot_nodes(opts.nodes);
125
+ if (!body.length)
126
+ body.push(opts.empty_label ?? '(empty)');
127
+ return [...lines, ...body].join('\n');
128
+ };
129
+ exports.format_snapshot_text = format_snapshot_text;
130
+ const normalize_snapshot_depth = (depth) => {
131
+ if (depth === undefined)
132
+ return undefined;
133
+ if (!Number.isInteger(depth) || depth < 0)
134
+ throw new Error('Snapshot depth must be a non-negative integer.');
135
+ return depth;
136
+ };
137
+ const normalize_snapshot_selector = (selector) => {
138
+ if (selector === undefined)
139
+ return undefined;
140
+ const normalized = selector.trim();
141
+ if (!normalized)
142
+ throw new Error('Snapshot selector cannot be empty.');
143
+ return normalized;
144
+ };
145
+ const read_page_title = async (page) => {
146
+ try {
147
+ return await page.title();
148
+ }
149
+ catch (_error) {
150
+ return 'Untitled';
151
+ }
152
+ };
153
+ const capture_snapshot = async (page, opts = {}) => {
154
+ const compact = opts.compact === true;
155
+ const depth = normalize_snapshot_depth(opts.depth);
156
+ const interactive = opts.interactive === true;
157
+ const selector = normalize_snapshot_selector(opts.selector);
158
+ const wrap = opts.wrap === true;
159
+ const payload = await page.evaluate((arg) => {
160
+ const browser_global = globalThis;
161
+ const doc = browser_global.document;
162
+ const normalize = (value) => {
163
+ return typeof value == 'string'
164
+ ? value.replace(/\s+/g, ' ').trim()
165
+ : '';
166
+ };
167
+ const to_array = (value) => {
168
+ if (value == null)
169
+ return [];
170
+ return Array.isArray(value) ? value : Array.from(value);
171
+ };
172
+ if (!doc)
173
+ return { nodes: [], refs: [] };
174
+ const explicit_role_map = new Set([
175
+ 'button',
176
+ 'checkbox',
177
+ 'combobox',
178
+ 'link',
179
+ 'menuitem',
180
+ 'option',
181
+ 'radio',
182
+ 'searchbox',
183
+ 'switch',
184
+ 'tab',
185
+ 'textbox',
186
+ ]);
187
+ const semantic_roles = new Set([
188
+ 'article',
189
+ 'banner',
190
+ 'blockquote',
191
+ 'cell',
192
+ 'code',
193
+ 'contentinfo',
194
+ 'definition',
195
+ 'form',
196
+ 'heading',
197
+ 'image',
198
+ 'list',
199
+ 'listitem',
200
+ 'main',
201
+ 'navigation',
202
+ 'paragraph',
203
+ 'region',
204
+ 'row',
205
+ 'table',
206
+ 'term',
207
+ ]);
208
+ let counter = 0;
209
+ const refs = [];
210
+ const existing_refs = typeof doc.querySelectorAll == 'function'
211
+ ? to_array(doc.querySelectorAll(`[${arg.attr_name}]`))
212
+ : [];
213
+ for (const element of existing_refs) {
214
+ element.removeAttribute?.(arg.attr_name);
215
+ }
216
+ const get_attr = (element, name) => {
217
+ return normalize(element
218
+ .getAttribute?.(name));
219
+ };
220
+ const get_direct_text = (element) => {
221
+ const child_nodes = to_array(element.childNodes);
222
+ return normalize(child_nodes
223
+ .filter(node => node.nodeType == 3)
224
+ .map(node => node.textContent ?? '')
225
+ .join(' '));
226
+ };
227
+ const is_visible = (element) => {
228
+ if (!element)
229
+ return false;
230
+ if (element
231
+ .getAttribute?.('hidden') !== null) {
232
+ return false;
233
+ }
234
+ if (get_attr(element, 'aria-hidden') == 'true')
235
+ return false;
236
+ const style = browser_global.getComputedStyle?.(element);
237
+ if (style?.display == 'none' || style?.visibility == 'hidden'
238
+ || style?.visibility == 'collapse') {
239
+ return false;
240
+ }
241
+ if (style?.opacity !== undefined && Number(style.opacity) == 0)
242
+ return false;
243
+ const rect = element.getBoundingClientRect?.();
244
+ if (rect && (rect.width ?? 0) <= 0 && (rect.height ?? 0) <= 0)
245
+ return false;
246
+ return true;
247
+ };
248
+ const get_role = (element) => {
249
+ const explicit_role = get_attr(element, 'role').split(/\s+/)[0];
250
+ if (explicit_role)
251
+ return explicit_role;
252
+ const tag = normalize(element.tagName)
253
+ .toLowerCase();
254
+ if (/^h[1-6]$/.test(tag))
255
+ return 'heading';
256
+ if (tag == 'a' && get_attr(element, 'href'))
257
+ return 'link';
258
+ if (tag == 'button')
259
+ return 'button';
260
+ if (tag == 'img')
261
+ return 'image';
262
+ if (tag == 'main')
263
+ return 'main';
264
+ if (tag == 'nav')
265
+ return 'navigation';
266
+ if (tag == 'p')
267
+ return 'paragraph';
268
+ if (tag == 'header')
269
+ return 'banner';
270
+ if (tag == 'footer')
271
+ return 'contentinfo';
272
+ if (tag == 'section')
273
+ return 'region';
274
+ if (tag == 'article')
275
+ return 'article';
276
+ if (tag == 'form')
277
+ return 'form';
278
+ if (tag == 'ul' || tag == 'ol')
279
+ return 'list';
280
+ if (tag == 'li')
281
+ return 'listitem';
282
+ if (tag == 'table')
283
+ return 'table';
284
+ if (tag == 'tr')
285
+ return 'row';
286
+ if (tag == 'td' || tag == 'th')
287
+ return 'cell';
288
+ if (tag == 'code' || tag == 'pre')
289
+ return 'code';
290
+ if (tag == 'blockquote')
291
+ return 'blockquote';
292
+ if (tag == 'input') {
293
+ const input_type = get_attr(element, 'type').toLowerCase();
294
+ if (input_type == 'checkbox')
295
+ return 'checkbox';
296
+ if (input_type == 'radio')
297
+ return 'radio';
298
+ if (input_type == 'button' || input_type == 'submit'
299
+ || input_type == 'reset') {
300
+ return 'button';
301
+ }
302
+ if (input_type == 'search')
303
+ return 'searchbox';
304
+ return 'textbox';
305
+ }
306
+ if (tag == 'textarea')
307
+ return 'textbox';
308
+ if (tag == 'select')
309
+ return 'combobox';
310
+ if (tag == 'option')
311
+ return 'option';
312
+ return tag || 'node';
313
+ };
314
+ const is_interactive = (element, role) => {
315
+ if (explicit_role_map.has(role))
316
+ return true;
317
+ const tag = normalize(element.tagName)
318
+ .toLowerCase();
319
+ if (tag == 'a' && get_attr(element, 'href'))
320
+ return true;
321
+ if (tag == 'button' || tag == 'select' || tag == 'textarea')
322
+ return true;
323
+ if (tag == 'input')
324
+ return true;
325
+ if (element
326
+ .getAttribute?.('onclick') !== null) {
327
+ return true;
328
+ }
329
+ const tabindex = get_attr(element, 'tabindex');
330
+ if (tabindex && !Number.isNaN(Number(tabindex)) && Number(tabindex) >= 0)
331
+ return true;
332
+ if (get_attr(element, 'contenteditable') == 'true')
333
+ return true;
334
+ return false;
335
+ };
336
+ const get_labelledby_text = (element) => {
337
+ const labelledby = get_attr(element, 'aria-labelledby');
338
+ if (!labelledby)
339
+ return '';
340
+ const ids = labelledby.split(/\s+/).filter(Boolean);
341
+ const parts = [];
342
+ for (const id of ids) {
343
+ const labelled = doc.getElementById?.(id);
344
+ const text = normalize(labelled?.textContent);
345
+ if (text)
346
+ parts.push(text);
347
+ }
348
+ return parts.join(' ');
349
+ };
350
+ const get_name = (element, role, interactive) => {
351
+ const labelled = get_attr(element, 'aria-label') || get_labelledby_text(element);
352
+ if (labelled)
353
+ return labelled;
354
+ const alt = get_attr(element, 'alt');
355
+ if (alt)
356
+ return alt;
357
+ const value = normalize(element.value);
358
+ if (value && (interactive || role == 'heading'))
359
+ return value;
360
+ const direct_text = get_direct_text(element);
361
+ const full_text = normalize(element.textContent);
362
+ if (interactive || role == 'heading' || role == 'link' || role == 'button')
363
+ return direct_text || full_text;
364
+ return direct_text;
365
+ };
366
+ const visit = (element) => {
367
+ if (!is_visible(element))
368
+ return null;
369
+ const children = [];
370
+ const raw_children = to_array(element.children);
371
+ for (const child of raw_children) {
372
+ const node = visit(child);
373
+ if (node)
374
+ children.push(node);
375
+ }
376
+ const role = get_role(element);
377
+ const interactive = is_interactive(element, role);
378
+ const name = normalize(get_name(element, role, interactive)) || undefined;
379
+ const placeholder = get_attr(element, 'placeholder') || undefined;
380
+ const raw_value = normalize(element.value);
381
+ const value = raw_value && raw_value != name && raw_value != placeholder
382
+ ? raw_value
383
+ : undefined;
384
+ const tag = normalize(element.tagName)
385
+ .toLowerCase();
386
+ const heading_match = tag.match(/^h([1-6])$/);
387
+ const level = heading_match ? Number(heading_match[1]) : undefined;
388
+ let ref;
389
+ if (interactive) {
390
+ ref = `e${++counter}`;
391
+ element
392
+ .setAttribute?.(arg.attr_name, ref);
393
+ refs.push({
394
+ ref,
395
+ selector: `[${arg.attr_name}="${ref}"]`,
396
+ });
397
+ }
398
+ const meaningful = interactive || children.length > 0 || !!name
399
+ || !!placeholder || !!value || semantic_roles.has(role);
400
+ if (!meaningful)
401
+ return null;
402
+ return {
403
+ children,
404
+ interactive,
405
+ level,
406
+ name,
407
+ placeholder,
408
+ ref,
409
+ role,
410
+ value,
411
+ };
412
+ };
413
+ const resolve_scope_root = () => {
414
+ const fallback_root = doc.body ?? doc.documentElement;
415
+ if (!arg.selector)
416
+ return fallback_root;
417
+ if (typeof doc.querySelector != 'function') {
418
+ throw new Error('Snapshot selector is not supported in this browser context.');
419
+ }
420
+ try {
421
+ const scoped_root = doc.querySelector(arg.selector);
422
+ if (!scoped_root) {
423
+ throw new Error(`Snapshot selector "${arg.selector}" did not match any elements.`);
424
+ }
425
+ return scoped_root;
426
+ }
427
+ catch (error) {
428
+ if (error instanceof Error
429
+ && error.message.startsWith('Snapshot selector "')) {
430
+ throw error;
431
+ }
432
+ throw new Error(`Invalid snapshot selector "${arg.selector}".`);
433
+ }
434
+ };
435
+ const root = resolve_scope_root();
436
+ if (!root)
437
+ return { nodes: [], refs };
438
+ const root_tag = normalize(root.tagName).toLowerCase();
439
+ const nodes = [];
440
+ if (root_tag == 'body' || root_tag == 'html') {
441
+ for (const child of to_array(root.children)) {
442
+ const node = visit(child);
443
+ if (node)
444
+ nodes.push(node);
445
+ }
446
+ if (!nodes.length) {
447
+ const fallback = visit(root);
448
+ if (fallback)
449
+ nodes.push(fallback);
450
+ }
451
+ }
452
+ else {
453
+ const node = visit(root);
454
+ if (node)
455
+ nodes.push(node);
456
+ }
457
+ return { nodes, refs };
458
+ }, {
459
+ attr_name: DOM_REF_ATTRIBUTE,
460
+ selector,
461
+ });
462
+ const nodes = apply_snapshot_filters(payload.nodes, {
463
+ compact,
464
+ depth,
465
+ interactive,
466
+ });
467
+ const visible_ref_ids = collect_ref_ids(nodes);
468
+ const refs = payload.refs.filter(entry => visible_ref_ids.has(entry.ref));
469
+ const title = await read_page_title(page);
470
+ const url = page.url();
471
+ const snapshot_text = format_snapshot_text({
472
+ empty_label: interactive ? '(no interactive elements)' : '(empty)',
473
+ nodes,
474
+ title,
475
+ url,
476
+ });
477
+ return {
478
+ compact,
479
+ depth,
480
+ interactive,
481
+ refs,
482
+ selector,
483
+ snapshot: wrap ? wrap_content(snapshot_text, url) : snapshot_text,
484
+ title,
485
+ url,
486
+ wrap,
487
+ };
488
+ };
489
+ exports.capture_snapshot = capture_snapshot;
490
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/browser/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { Command } from 'commander';
2
+ type Browser_cli_opts = {
3
+ all?: boolean;
4
+ append?: boolean;
5
+ apiKey?: string;
6
+ base64?: boolean;
7
+ compact?: boolean;
8
+ country?: string;
9
+ daemonDir?: string;
10
+ depth?: string;
11
+ direction?: string;
12
+ distance?: string;
13
+ fullPage?: boolean;
14
+ headed?: boolean;
15
+ idleTimeout?: string;
16
+ interactive?: boolean;
17
+ json?: boolean;
18
+ output?: string;
19
+ pretty?: boolean;
20
+ ref?: string;
21
+ selector?: string;
22
+ session?: string;
23
+ submit?: boolean;
24
+ timeout?: string;
25
+ wrap?: boolean;
26
+ zone?: string;
27
+ };
28
+ type Browser_daemon_status = {
29
+ connected?: boolean;
30
+ current_title?: string | null;
31
+ current_url?: string | null;
32
+ idle_timeout_ms?: number;
33
+ listener?: unknown;
34
+ session_name?: string;
35
+ tracked_requests?: number;
36
+ };
37
+ declare const get_browser_session_names: (opts?: Browser_cli_opts) => string[];
38
+ declare const list_browser_sessions: (opts?: Browser_cli_opts) => Promise<Browser_daemon_status[]>;
39
+ declare const handle_browser_open: (url: string, opts: Browser_cli_opts) => Promise<void>;
40
+ declare const handle_browser_back: (opts: Browser_cli_opts) => Promise<void>;
41
+ declare const handle_browser_forward: (opts: Browser_cli_opts) => Promise<void>;
42
+ declare const handle_browser_reload: (opts: Browser_cli_opts) => Promise<void>;
43
+ declare const handle_browser_snapshot: (opts: Browser_cli_opts) => Promise<void>;
44
+ declare const handle_browser_screenshot: (file_path: string | undefined, opts: Browser_cli_opts) => Promise<void>;
45
+ declare const handle_browser_fill: (ref: string, value: string, opts: Browser_cli_opts) => Promise<void>;
46
+ declare const handle_browser_get_text: (selector: string | undefined, opts: Browser_cli_opts) => Promise<void>;
47
+ declare const handle_browser_get_html: (selector: string | undefined, opts: Browser_cli_opts) => Promise<void>;
48
+ declare const handle_browser_click: (ref: string, opts: Browser_cli_opts) => Promise<void>;
49
+ declare const handle_browser_type: (ref: string, text: string, opts: Browser_cli_opts) => Promise<void>;
50
+ declare const handle_browser_select: (ref: string, value: string, opts: Browser_cli_opts) => Promise<void>;
51
+ declare const handle_browser_check: (ref: string, checked: boolean, opts: Browser_cli_opts) => Promise<void>;
52
+ declare const handle_browser_hover: (ref: string, opts: Browser_cli_opts) => Promise<void>;
53
+ declare const handle_browser_scroll: (opts: Browser_cli_opts) => Promise<void>;
54
+ declare const handle_browser_status: (opts: Browser_cli_opts) => Promise<void>;
55
+ declare const handle_browser_network: (opts: Browser_cli_opts) => Promise<void>;
56
+ declare const handle_browser_cookies: (opts: Browser_cli_opts) => Promise<void>;
57
+ declare const handle_browser_sessions: (opts?: Browser_cli_opts) => Promise<void>;
58
+ declare const handle_browser_close: (opts?: Browser_cli_opts) => Promise<void>;
59
+ declare const create_browser_command: () => Command;
60
+ declare const browser_command: Command;
61
+ export { browser_command, create_browser_command, get_browser_session_names, handle_browser_back, handle_browser_check, handle_browser_click, handle_browser_close, handle_browser_cookies, handle_browser_fill, handle_browser_forward, handle_browser_get_html, handle_browser_get_text, handle_browser_hover, handle_browser_network, handle_browser_open, handle_browser_reload, handle_browser_screenshot, handle_browser_scroll, handle_browser_select, handle_browser_sessions, handle_browser_snapshot, handle_browser_status, handle_browser_type, list_browser_sessions, };
62
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/commands/browser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAuBlC,KAAK,gBAAgB,GAAG;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAQF,KAAK,qBAAqB,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAkVF,QAAA,MAAM,yBAAyB,GAAI,OAAM,gBAAqB,KAAG,MAAM,EAatE,CAAC;AAEF,QAAA,MAAM,qBAAqB,GACvB,OAAM,gBAAqB,KAC5B,OAAO,CAAC,qBAAqB,EAAE,CAiBjC,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAS,KAAK,MAAM,EAAE,MAAM,gBAAgB,kBAiCpE,CAAC;AAmBF,QAAA,MAAM,mBAAmB,GAAS,MAAM,gBAAgB,kBAEvD,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAS,MAAM,gBAAgB,kBAE1D,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAS,MAAM,gBAAgB,kBAEzD,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAS,MAAM,gBAAgB,kBAkB3D,CAAC;AAEF,QAAA,MAAM,yBAAyB,GAC3B,WAAW,MAAM,GAAC,SAAS,EAC3B,MAAM,gBAAgB,kBA8BzB,CAAC;AAEF,QAAA,MAAM,mBAAmB,GACrB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,MAAM,gBAAgB,kBAMzB,CAAC;AAEF,QAAA,MAAM,uBAAuB,GACzB,UAAU,MAAM,GAAC,SAAS,EAC1B,MAAM,gBAAgB,kBAkBzB,CAAC;AAEF,QAAA,MAAM,uBAAuB,GACzB,UAAU,MAAM,GAAC,SAAS,EAC1B,MAAM,gBAAgB,kBAkBzB,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAS,KAAK,MAAM,EAAE,MAAM,gBAAgB,kBAKrE,CAAC;AAEF,QAAA,MAAM,mBAAmB,GACrB,KAAK,MAAM,EACX,MAAM,MAAM,EACZ,MAAM,gBAAgB,kBAWzB,CAAC;AAEF,QAAA,MAAM,qBAAqB,GACvB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,MAAM,gBAAgB,kBAMzB,CAAC;AAEF,QAAA,MAAM,oBAAoB,GACtB,KAAK,MAAM,EACX,SAAS,OAAO,EAChB,MAAM,gBAAgB,kBAOzB,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAS,KAAK,MAAM,EAAE,MAAM,gBAAgB,kBAKrE,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAS,MAAM,gBAAgB,kBAYzD,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAS,MAAM,gBAAgB,kBAWzD,CAAC;AAoBF,QAAA,MAAM,sBAAsB,GAAS,MAAM,gBAAgB,kBAkB1D,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAS,MAAM,gBAAgB,kBAW1D,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAS,OAAM,gBAAqB,kBAWhE,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAS,OAAM,gBAAqB,kBAwD7D,CAAC;AAcF,QAAA,MAAM,sBAAsB,eAsM3B,CAAC;AAEF,QAAA,MAAM,eAAe,SAA2B,CAAC;AAEjD,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,GACxB,CAAC"}