@brightdata/n8n-nodes-brightdata 1.0.9 → 1.1.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.
@@ -0,0 +1,13 @@
1
+ export type SnapshotElement = {
2
+ ref: string;
3
+ role: string;
4
+ name: string;
5
+ url: string | null;
6
+ };
7
+ export declare class AriaSnapshotFilter {
8
+ static INTERACTIVE_ROLES: Set<string>;
9
+ static parsePlaywrightSnapshot(snapshotText: string): SnapshotElement[];
10
+ static formatCompact(elements: SnapshotElement[]): string;
11
+ static filterSnapshot(snapshotText: string): string;
12
+ static formatDomElements(elements: SnapshotElement[] | null): string | null;
13
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AriaSnapshotFilter = void 0;
4
+ class AriaSnapshotFilter {
5
+ static parsePlaywrightSnapshot(snapshotText) {
6
+ const lines = snapshotText.split('\n');
7
+ const elements = [];
8
+ for (const line of lines) {
9
+ const trimmed = line.trim();
10
+ if (!trimmed || !trimmed.startsWith('-')) {
11
+ continue;
12
+ }
13
+ const refMatch = trimmed.match(/\[ref=([^\]]+)\]/);
14
+ if (!refMatch) {
15
+ continue;
16
+ }
17
+ const ref = refMatch[1];
18
+ const roleMatch = trimmed.match(/^-\s+([a-zA-Z]+)/);
19
+ if (!roleMatch) {
20
+ continue;
21
+ }
22
+ const role = roleMatch[1];
23
+ if (!this.INTERACTIVE_ROLES.has(role)) {
24
+ continue;
25
+ }
26
+ const nameMatch = trimmed.match(/"([^"]*)"/);
27
+ const name = nameMatch ? nameMatch[1] : '';
28
+ let url = null;
29
+ const nextLineIndex = lines.indexOf(line) + 1;
30
+ if (nextLineIndex < lines.length) {
31
+ const nextLine = lines[nextLineIndex];
32
+ const urlMatch = nextLine.match(/\/url:\s*(.+)/);
33
+ if (urlMatch) {
34
+ url = urlMatch[1].trim().replace(/^["']|["']$/g, '');
35
+ }
36
+ }
37
+ elements.push({ ref, role, name, url });
38
+ }
39
+ return elements;
40
+ }
41
+ static formatCompact(elements) {
42
+ const lines = [];
43
+ for (const el of elements) {
44
+ const parts = [`[${el.ref}]`, el.role];
45
+ if (el.name && el.name.length > 0) {
46
+ const name = el.name.length > 60 ? `${el.name.substring(0, 57)}...` : el.name;
47
+ parts.push(`"${name}"`);
48
+ }
49
+ if (el.url && el.url.length > 0 && !el.url.startsWith('#')) {
50
+ let url = el.url;
51
+ if (url.length > 50) {
52
+ url = `${url.substring(0, 47)}...`;
53
+ }
54
+ parts.push(`-> ${url}`);
55
+ }
56
+ lines.push(parts.join(' '));
57
+ }
58
+ return lines.join('\n');
59
+ }
60
+ static filterSnapshot(snapshotText) {
61
+ try {
62
+ const elements = this.parsePlaywrightSnapshot(snapshotText);
63
+ if (elements.length === 0) {
64
+ return 'No interactive elements found';
65
+ }
66
+ return this.formatCompact(elements);
67
+ }
68
+ catch (error) {
69
+ return `Error filtering snapshot: ${(error === null || error === void 0 ? void 0 : error.message) || error}\n${(error === null || error === void 0 ? void 0 : error.stack) || ''}`;
70
+ }
71
+ }
72
+ static formatDomElements(elements) {
73
+ if (!elements || elements.length === 0) {
74
+ return null;
75
+ }
76
+ const lines = [];
77
+ for (const el of elements) {
78
+ const parts = [`[${el.ref}]`, el.role || 'unknown'];
79
+ if (el.name && el.name.length > 0) {
80
+ const name = el.name.length > 60 ? `${el.name.substring(0, 57)}...` : el.name;
81
+ parts.push(`"${name}"`);
82
+ }
83
+ if (el.url && el.url.length > 0 && !el.url.startsWith('#')) {
84
+ let url = el.url;
85
+ if (url.length > 50) {
86
+ url = `${url.substring(0, 47)}...`;
87
+ }
88
+ parts.push(`-> ${url}`);
89
+ }
90
+ lines.push(parts.join(' '));
91
+ }
92
+ return lines.join('\n');
93
+ }
94
+ }
95
+ exports.AriaSnapshotFilter = AriaSnapshotFilter;
96
+ AriaSnapshotFilter.INTERACTIVE_ROLES = new Set([
97
+ 'button',
98
+ 'link',
99
+ 'textbox',
100
+ 'searchbox',
101
+ 'combobox',
102
+ 'checkbox',
103
+ 'radio',
104
+ 'switch',
105
+ 'slider',
106
+ 'tab',
107
+ 'menuitem',
108
+ 'option',
109
+ ]);
110
+ //# sourceMappingURL=AriaSnapshotFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaSnapshotFilter.js","sourceRoot":"","sources":["../../../nodes/BrightData/AriaSnapshotFilter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { INodeType, INodeTypeDescription } from 'n8n-workflow';
1
+ import { IExecuteFunctions, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
2
  import { getActiveZones, getCountries, getDataSets } from './SearchFunctions';
3
3
  export declare class BrightData implements INodeType {
4
4
  description: INodeTypeDescription;
@@ -9,4 +9,115 @@ export declare class BrightData implements INodeType {
9
9
  getDataSets: typeof getDataSets;
10
10
  };
11
11
  };
12
+ customOperations: {
13
+ browser: {
14
+ navigate: (this: IExecuteFunctions) => Promise<{
15
+ json: {
16
+ message: string;
17
+ title: string;
18
+ url: string;
19
+ };
20
+ }[][]>;
21
+ goBack: (this: IExecuteFunctions) => Promise<{
22
+ json: {
23
+ message: string;
24
+ title: string;
25
+ url: string;
26
+ };
27
+ }[][]>;
28
+ goForward: (this: IExecuteFunctions) => Promise<{
29
+ json: {
30
+ message: string;
31
+ title: string;
32
+ url: string;
33
+ };
34
+ }[][]>;
35
+ scroll: (this: IExecuteFunctions) => Promise<{
36
+ json: {
37
+ message: string;
38
+ };
39
+ }[][]>;
40
+ click: (this: IExecuteFunctions) => Promise<{
41
+ json: {
42
+ message: string;
43
+ ref: string | undefined;
44
+ selector: string | undefined;
45
+ };
46
+ }[][]>;
47
+ type: (this: IExecuteFunctions) => Promise<{
48
+ json: {
49
+ message: string;
50
+ submitted: boolean;
51
+ ref: string | undefined;
52
+ selector: string | undefined;
53
+ };
54
+ }[][]>;
55
+ scrollToElement: (this: IExecuteFunctions) => Promise<{
56
+ json: {
57
+ message: string;
58
+ ref: string | undefined;
59
+ selector: string | undefined;
60
+ };
61
+ }[][]>;
62
+ waitForElement: (this: IExecuteFunctions) => Promise<{
63
+ json: {
64
+ message: string;
65
+ timeout: number;
66
+ ref: string | undefined;
67
+ selector: string | undefined;
68
+ };
69
+ }[][]>;
70
+ screenshot: (this: IExecuteFunctions) => Promise<{
71
+ json: {
72
+ message: string;
73
+ fullPage: boolean;
74
+ };
75
+ binary: {
76
+ screenshot: import("n8n-workflow").IBinaryData;
77
+ };
78
+ }[][]>;
79
+ getHtml: (this: IExecuteFunctions) => Promise<{
80
+ json: {
81
+ html: string;
82
+ fullPage: boolean;
83
+ };
84
+ }[][]>;
85
+ getText: (this: IExecuteFunctions) => Promise<{
86
+ json: {
87
+ text: any;
88
+ };
89
+ }[][]>;
90
+ getSnapshot: (this: IExecuteFunctions) => Promise<{
91
+ json: {
92
+ url: string;
93
+ title: string;
94
+ ariaSnapshot: string;
95
+ domSnapshot?: string | null;
96
+ };
97
+ }[][]>;
98
+ fillForm: (this: IExecuteFunctions) => Promise<{
99
+ json: {
100
+ message: string;
101
+ results: string[];
102
+ };
103
+ }[][]>;
104
+ getNetworkRequests: (this: IExecuteFunctions) => Promise<{
105
+ json: {
106
+ total: number;
107
+ requests: {
108
+ method: string;
109
+ url: string;
110
+ status?: number;
111
+ statusText?: string;
112
+ }[];
113
+ };
114
+ }[][]>;
115
+ closeSession: (this: IExecuteFunctions) => Promise<{
116
+ json: {
117
+ message: string;
118
+ sessionId: string;
119
+ };
120
+ }[][]>;
121
+ };
122
+ };
12
123
  }