n8n-nodes-playwright-chromium-cdp 1.0.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,426 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Playwright = exports.vmResolver = void 0;
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ const vm2_1 = require("@n8n/vm2");
7
+ const playwright_core_1 = require("playwright-core");
8
+ const Playwright_node_options_1 = require("./Playwright.node.options");
9
+ const { NODE_FUNCTION_ALLOW_BUILTIN: builtIn, NODE_FUNCTION_ALLOW_EXTERNAL: external, CODE_ENABLE_STDOUT, } = process.env;
10
+ exports.vmResolver = (0, vm2_1.makeResolverFromLegacyOptions)({
11
+ external: external
12
+ ? {
13
+ modules: external.split(','),
14
+ transitive: false,
15
+ }
16
+ : false,
17
+ builtin: (_a = builtIn === null || builtIn === void 0 ? void 0 : builtIn.split(',')) !== null && _a !== void 0 ? _a : [],
18
+ });
19
+ async function handleError(error, itemIndex, url, page) {
20
+ if (page) {
21
+ try {
22
+ await page.close();
23
+ }
24
+ catch (closeError) {
25
+ console.error('Error closing page:', closeError);
26
+ }
27
+ }
28
+ if (this.continueOnFail()) {
29
+ const nodeOperationError = new n8n_workflow_1.NodeOperationError(this.getNode(), error.message);
30
+ const errorResponse = {
31
+ json: {
32
+ error: error.message,
33
+ },
34
+ pairedItem: {
35
+ item: itemIndex,
36
+ },
37
+ error: nodeOperationError,
38
+ };
39
+ if (url) {
40
+ errorResponse.json.url = url;
41
+ }
42
+ return [errorResponse];
43
+ }
44
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message);
45
+ }
46
+ async function handleOptions(itemIndex, items, context, page) {
47
+ const options = this.getNodeParameter('options', 0, {});
48
+ const headers = (options.headers || {});
49
+ const requestHeaders = (headers.parameter || []).reduce((acc, header) => {
50
+ acc[header.name] = header.value;
51
+ return acc;
52
+ }, {});
53
+ const device = options.device;
54
+ if (device && playwright_core_1.devices[device]) {
55
+ const emulatedDevice = playwright_core_1.devices[device];
56
+ await page.setViewportSize(emulatedDevice.viewport);
57
+ }
58
+ else {
59
+ const viewportWidth = options.viewportWidth || 1280;
60
+ const viewportHeight = options.viewportHeight || 720;
61
+ await page.setViewportSize({ width: viewportWidth, height: viewportHeight });
62
+ }
63
+ const userAgent = options.userAgent ||
64
+ requestHeaders['User-Agent'] ||
65
+ requestHeaders['user-agent'];
66
+ if (userAgent) {
67
+ await page.setExtraHTTPHeaders(Object.assign({ 'User-Agent': userAgent }, requestHeaders));
68
+ }
69
+ else if (Object.keys(requestHeaders).length > 0) {
70
+ await page.setExtraHTTPHeaders(requestHeaders);
71
+ }
72
+ }
73
+ async function runCustomScript(itemIndex, items, browser, context, page) {
74
+ const scriptCode = this.getNodeParameter('scriptCode', itemIndex);
75
+ const contextObj = Object.assign(Object.assign({ $getNodeParameter: this.getNodeParameter, $getWorkflowStaticData: this.getWorkflowStaticData, helpers: Object.assign(Object.assign({}, this.helpers), { httpRequestWithAuthentication: this.helpers.httpRequestWithAuthentication.bind(this), requestWithAuthenticationPaginated: this.helpers.requestWithAuthenticationPaginated.bind(this) }) }, this.getWorkflowDataProxy(itemIndex)), { $browser: browser, $context: context, $page: page, $playwright: { chromium: playwright_core_1.chromium, devices: playwright_core_1.devices } });
76
+ const vm = new vm2_1.NodeVM({
77
+ console: 'redirect',
78
+ sandbox: contextObj,
79
+ require: exports.vmResolver,
80
+ wasm: false,
81
+ });
82
+ vm.on('console.log', this.getMode() === 'manual'
83
+ ? this.sendMessageToUI
84
+ : CODE_ENABLE_STDOUT === 'true'
85
+ ? (...args) => console.log(`[Workflow "${this.getWorkflow().id}"][Node "${this.getNode().name}"]`, ...args)
86
+ : () => { });
87
+ try {
88
+ const scriptResult = await vm.run(`module.exports = async function() { ${scriptCode}\n}()`);
89
+ if (!Array.isArray(scriptResult)) {
90
+ return handleError.call(this, new Error('Custom script must return an array of items. Please ensure your script returns an array, e.g., return [{ key: value }].'), itemIndex, undefined, page);
91
+ }
92
+ return this.helpers.normalizeItems(scriptResult);
93
+ }
94
+ catch (error) {
95
+ return handleError.call(this, error, itemIndex, undefined, page);
96
+ }
97
+ }
98
+ async function processPageOperation(operation, url, page, itemIndex, options) {
99
+ const waitUntil = (options.waitUntil || 'load');
100
+ const timeout = options.timeout || 30000;
101
+ try {
102
+ const response = await page.goto(url.toString(), {
103
+ waitUntil,
104
+ timeout,
105
+ });
106
+ const headers = await (response === null || response === void 0 ? void 0 : response.allHeaders());
107
+ const statusCode = response === null || response === void 0 ? void 0 : response.status();
108
+ if (!response || (statusCode && statusCode >= 400)) {
109
+ return handleError.call(this, new Error(`Request failed with status code ${statusCode || 0}`), itemIndex, url.toString(), page);
110
+ }
111
+ if (operation === 'getPageContent') {
112
+ const body = await page.content();
113
+ return [{
114
+ json: {
115
+ body,
116
+ headers,
117
+ statusCode,
118
+ url: url.toString(),
119
+ },
120
+ pairedItem: {
121
+ item: itemIndex,
122
+ },
123
+ }];
124
+ }
125
+ if (operation === 'getScreenshot') {
126
+ try {
127
+ const dataPropertyName = this.getNodeParameter('dataPropertyName', itemIndex);
128
+ const fileName = options.fileName;
129
+ const type = this.getNodeParameter('imageType', itemIndex);
130
+ const fullPage = this.getNodeParameter('fullPage', itemIndex);
131
+ const screenshotOptions = {
132
+ type,
133
+ fullPage,
134
+ };
135
+ if (type === 'jpeg') {
136
+ const quality = this.getNodeParameter('quality', itemIndex);
137
+ screenshotOptions.quality = quality;
138
+ }
139
+ if (fileName) {
140
+ screenshotOptions.path = fileName;
141
+ }
142
+ const screenshot = await page.screenshot(screenshotOptions);
143
+ if (screenshot) {
144
+ const binaryData = await this.helpers.prepareBinaryData(Buffer.from(screenshot), screenshotOptions.path, `image/${type}`);
145
+ return [{
146
+ binary: { [dataPropertyName]: binaryData },
147
+ json: {
148
+ headers,
149
+ statusCode,
150
+ url: url.toString(),
151
+ },
152
+ pairedItem: {
153
+ item: itemIndex,
154
+ },
155
+ }];
156
+ }
157
+ }
158
+ catch (error) {
159
+ return handleError.call(this, error, itemIndex, url.toString(), page);
160
+ }
161
+ }
162
+ if (operation === 'getPDF') {
163
+ try {
164
+ const dataPropertyName = this.getNodeParameter('dataPropertyName', itemIndex);
165
+ const pageRanges = this.getNodeParameter('pageRanges', itemIndex);
166
+ const displayHeaderFooter = this.getNodeParameter('displayHeaderFooter', itemIndex);
167
+ const printBackground = this.getNodeParameter('printBackground', itemIndex);
168
+ const landscape = this.getNodeParameter('landscape', itemIndex);
169
+ const preferCSSPageSize = this.getNodeParameter('preferCSSPageSize', itemIndex);
170
+ const scale = this.getNodeParameter('scale', itemIndex);
171
+ const margin = this.getNodeParameter('margin', 0, {});
172
+ let headerTemplate = '';
173
+ let footerTemplate = '';
174
+ let height;
175
+ let width;
176
+ let format = 'A4';
177
+ if (displayHeaderFooter === true) {
178
+ headerTemplate = this.getNodeParameter('headerTemplate', itemIndex);
179
+ footerTemplate = this.getNodeParameter('footerTemplate', itemIndex);
180
+ }
181
+ if (preferCSSPageSize !== true) {
182
+ height = this.getNodeParameter('height', itemIndex);
183
+ width = this.getNodeParameter('width', itemIndex);
184
+ if (!height || !width) {
185
+ format = this.getNodeParameter('format', itemIndex);
186
+ }
187
+ else {
188
+ format = undefined;
189
+ }
190
+ }
191
+ const pdfOptions = {
192
+ format,
193
+ displayHeaderFooter,
194
+ printBackground,
195
+ landscape,
196
+ headerTemplate,
197
+ footerTemplate,
198
+ preferCSSPageSize,
199
+ scale,
200
+ height: height || undefined,
201
+ width: width || undefined,
202
+ pageRanges: pageRanges || undefined,
203
+ margin: Object.keys(margin).length > 0 ? margin : undefined,
204
+ };
205
+ const fileName = options.fileName;
206
+ if (fileName) {
207
+ pdfOptions.path = fileName;
208
+ }
209
+ const pdf = await page.pdf(pdfOptions);
210
+ if (pdf) {
211
+ const binaryData = await this.helpers.prepareBinaryData(Buffer.from(pdf), pdfOptions.path, 'application/pdf');
212
+ return [{
213
+ binary: { [dataPropertyName]: binaryData },
214
+ json: {
215
+ headers,
216
+ statusCode,
217
+ url: url.toString(),
218
+ },
219
+ pairedItem: {
220
+ item: itemIndex,
221
+ },
222
+ }];
223
+ }
224
+ }
225
+ catch (error) {
226
+ return handleError.call(this, error, itemIndex, url.toString(), page);
227
+ }
228
+ }
229
+ return handleError.call(this, new Error(`Unsupported operation: ${operation}`), itemIndex, url.toString(), page);
230
+ }
231
+ catch (error) {
232
+ return handleError.call(this, error, itemIndex, url.toString(), page);
233
+ }
234
+ }
235
+ class Playwright {
236
+ constructor() {
237
+ this.description = Playwright_node_options_1.nodeDescription;
238
+ this.methods = {
239
+ loadOptions: {
240
+ async getDevices() {
241
+ const deviceNames = Object.keys(playwright_core_1.devices);
242
+ const returnData = [];
243
+ for (const name of deviceNames) {
244
+ const device = playwright_core_1.devices[name];
245
+ if (device && device.viewport) {
246
+ returnData.push({
247
+ name,
248
+ value: name,
249
+ description: `${device.viewport.width} x ${device.viewport.height}`,
250
+ });
251
+ }
252
+ }
253
+ return returnData;
254
+ },
255
+ },
256
+ };
257
+ }
258
+ async execute() {
259
+ const items = this.getInputData();
260
+ const returnData = [];
261
+ const options = this.getNodeParameter('options', 0, {});
262
+ const operation = this.getNodeParameter('operation', 0);
263
+ const device = options.device;
264
+ let batchSize = options.batchSize;
265
+ if (!Number.isInteger(batchSize) || batchSize < 1) {
266
+ batchSize = 1;
267
+ }
268
+ const credentials = await this.getCredentials('playwrightCdpApi');
269
+ const cdpEndpoint = credentials.cdpEndpoint;
270
+ const connectionTimeout = credentials.timeout || 30000;
271
+ if (!cdpEndpoint) {
272
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'CDP Endpoint URL is required in credentials');
273
+ }
274
+ let browser;
275
+ try {
276
+ browser = await playwright_core_1.chromium.connectOverCDP(cdpEndpoint, {
277
+ timeout: connectionTimeout,
278
+ });
279
+ }
280
+ catch (error) {
281
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to connect to browser via CDP at ${cdpEndpoint}: ${error.message}`);
282
+ }
283
+ const processItem = async (item, itemIndex) => {
284
+ let context;
285
+ let page;
286
+ let ownContext = false;
287
+ let ownPage = false;
288
+ try {
289
+ const contextOptions = {};
290
+ if (device && playwright_core_1.devices[device]) {
291
+ const emulatedDevice = playwright_core_1.devices[device];
292
+ contextOptions.viewport = emulatedDevice.viewport;
293
+ contextOptions.userAgent = emulatedDevice.userAgent;
294
+ }
295
+ else {
296
+ const viewportWidth = options.viewportWidth || 1280;
297
+ const viewportHeight = options.viewportHeight || 720;
298
+ contextOptions.viewport = { width: viewportWidth, height: viewportHeight };
299
+ }
300
+ if (options.userAgent) {
301
+ contextOptions.userAgent = options.userAgent;
302
+ }
303
+ if (options.locale) {
304
+ contextOptions.locale = options.locale;
305
+ }
306
+ if (options.timezone) {
307
+ contextOptions.timezoneId = options.timezone;
308
+ }
309
+ if (options.geolocation) {
310
+ const geo = options.geolocation;
311
+ if (geo.latitude !== undefined && geo.longitude !== undefined) {
312
+ contextOptions.geolocation = {
313
+ latitude: geo.latitude,
314
+ longitude: geo.longitude,
315
+ accuracy: geo.accuracy,
316
+ };
317
+ contextOptions.permissions = ['geolocation'];
318
+ }
319
+ }
320
+ if (options.ignoreHTTPSErrors) {
321
+ contextOptions.ignoreHTTPSErrors = options.ignoreHTTPSErrors;
322
+ }
323
+ if (options.javaScriptEnabled !== undefined) {
324
+ contextOptions.javaScriptEnabled = options.javaScriptEnabled;
325
+ }
326
+ if (options.bypassCSP) {
327
+ contextOptions.bypassCSP = options.bypassCSP;
328
+ }
329
+ try {
330
+ context = await browser.newContext(contextOptions);
331
+ ownContext = true;
332
+ page = await context.newPage();
333
+ ownPage = true;
334
+ }
335
+ catch (contextError) {
336
+ console.log('Could not create new context, using default context (CDP mode)');
337
+ const contexts = browser.contexts();
338
+ if (contexts.length > 0) {
339
+ context = contexts[0];
340
+ ownContext = false;
341
+ try {
342
+ page = await context.newPage();
343
+ ownPage = true;
344
+ }
345
+ catch (pageError) {
346
+ const pages = context.pages();
347
+ if (pages.length > 0) {
348
+ page = pages[0];
349
+ ownPage = false;
350
+ }
351
+ else {
352
+ throw new Error('No pages available in the browser context');
353
+ }
354
+ }
355
+ }
356
+ else {
357
+ throw new Error('No browser contexts available. Make sure the browser has at least one tab open.');
358
+ }
359
+ }
360
+ await handleOptions.call(this, itemIndex, items, context, page);
361
+ if (operation === 'runCustomScript') {
362
+ console.log(`Processing ${itemIndex + 1} of ${items.length}: [${operation}]${device ? ` [${device}] ` : ' '} Custom Script`);
363
+ return await runCustomScript.call(this, itemIndex, items, browser, context, page);
364
+ }
365
+ const urlString = this.getNodeParameter('url', itemIndex);
366
+ const queryParametersOptions = this.getNodeParameter('queryParameters', itemIndex, {});
367
+ const queryParameters = queryParametersOptions.parameters || [];
368
+ let url;
369
+ try {
370
+ url = new URL(urlString);
371
+ for (const queryParameter of queryParameters) {
372
+ url.searchParams.append(queryParameter.name, queryParameter.value);
373
+ }
374
+ }
375
+ catch (error) {
376
+ return handleError.call(this, new Error(`Invalid URL: ${urlString}`), itemIndex, urlString, page);
377
+ }
378
+ console.log(`Processing ${itemIndex + 1} of ${items.length}: [${operation}]${device ? ` [${device}] ` : ' '}${url}`);
379
+ return await processPageOperation.call(this, operation, url, page, itemIndex, options);
380
+ }
381
+ catch (error) {
382
+ return handleError.call(this, error, itemIndex, undefined, page);
383
+ }
384
+ finally {
385
+ if (page && ownPage) {
386
+ try {
387
+ await page.close();
388
+ }
389
+ catch (error) {
390
+ console.error('Error closing page:', error);
391
+ }
392
+ }
393
+ if (context && ownContext) {
394
+ try {
395
+ await context.close();
396
+ }
397
+ catch (error) {
398
+ console.error('Error closing context:', error);
399
+ }
400
+ }
401
+ }
402
+ };
403
+ try {
404
+ for (let i = 0; i < items.length; i += batchSize) {
405
+ const batch = items.slice(i, i + batchSize);
406
+ const results = await Promise.all(batch.map((item, idx) => processItem(item, i + idx)));
407
+ if (results === null || results === void 0 ? void 0 : results.length) {
408
+ returnData.push(...results.flat());
409
+ }
410
+ }
411
+ }
412
+ finally {
413
+ if (browser) {
414
+ try {
415
+ await browser.close();
416
+ }
417
+ catch (error) {
418
+ console.error('Error disconnecting from browser:', error);
419
+ }
420
+ }
421
+ }
422
+ return this.prepareOutputData(returnData);
423
+ }
424
+ }
425
+ exports.Playwright = Playwright;
426
+ //# sourceMappingURL=Playwright.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Playwright.node.js","sourceRoot":"","sources":["../../../nodes/Playwright/Playwright.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare const nodeDescription: INodeTypeDescription;
3
+ //# sourceMappingURL=Playwright.node.options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Playwright.node.options.d.ts","sourceRoot":"","sources":["../../../nodes/Playwright/Playwright.node.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAKzD,eAAO,MAAM,eAAe,EAAE,oBAkrB7B,CAAC"}