renderscreenshot 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.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +366 -0
  3. package/dist/cjs/cache.js +125 -0
  4. package/dist/cjs/cache.js.map +1 -0
  5. package/dist/cjs/client.js +304 -0
  6. package/dist/cjs/client.js.map +1 -0
  7. package/dist/cjs/errors.js +85 -0
  8. package/dist/cjs/errors.js.map +1 -0
  9. package/dist/cjs/index.js +44 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/options.js +659 -0
  12. package/dist/cjs/options.js.map +1 -0
  13. package/dist/cjs/types.js +3 -0
  14. package/dist/cjs/types.js.map +1 -0
  15. package/dist/cjs/webhooks.js +152 -0
  16. package/dist/cjs/webhooks.js.map +1 -0
  17. package/dist/esm/cache.js +121 -0
  18. package/dist/esm/cache.js.map +1 -0
  19. package/dist/esm/client.js +300 -0
  20. package/dist/esm/client.js.map +1 -0
  21. package/dist/esm/errors.js +81 -0
  22. package/dist/esm/errors.js.map +1 -0
  23. package/dist/esm/index.js +34 -0
  24. package/dist/esm/index.js.map +1 -0
  25. package/dist/esm/options.js +655 -0
  26. package/dist/esm/options.js.map +1 -0
  27. package/dist/esm/types.js +2 -0
  28. package/dist/esm/types.js.map +1 -0
  29. package/dist/esm/webhooks.js +147 -0
  30. package/dist/esm/webhooks.js.map +1 -0
  31. package/dist/types/cache.d.ts +96 -0
  32. package/dist/types/cache.d.ts.map +1 -0
  33. package/dist/types/client.d.ts +147 -0
  34. package/dist/types/client.d.ts.map +1 -0
  35. package/dist/types/errors.d.ts +51 -0
  36. package/dist/types/errors.d.ts.map +1 -0
  37. package/dist/types/index.d.ts +35 -0
  38. package/dist/types/index.d.ts.map +1 -0
  39. package/dist/types/options.d.ts +265 -0
  40. package/dist/types/options.d.ts.map +1 -0
  41. package/dist/types/types.d.ts +249 -0
  42. package/dist/types/types.d.ts.map +1 -0
  43. package/dist/types/webhooks.d.ts +60 -0
  44. package/dist/types/webhooks.d.ts.map +1 -0
  45. package/package.json +84 -0
@@ -0,0 +1,655 @@
1
+ /**
2
+ * Fluent builder for screenshot options
3
+ */
4
+ export class TakeOptions {
5
+ config;
6
+ constructor(config = {}) {
7
+ this.config = { ...config };
8
+ }
9
+ /**
10
+ * Create options with a URL target
11
+ */
12
+ static url(url) {
13
+ return new TakeOptions({ url });
14
+ }
15
+ /**
16
+ * Create options with HTML content
17
+ */
18
+ static html(html) {
19
+ return new TakeOptions({ html });
20
+ }
21
+ /**
22
+ * Create options from an existing config
23
+ */
24
+ static from(config) {
25
+ return new TakeOptions(config);
26
+ }
27
+ // --- Viewport ---
28
+ /**
29
+ * Set viewport width in pixels
30
+ */
31
+ width(value) {
32
+ return new TakeOptions({ ...this.config, width: value });
33
+ }
34
+ /**
35
+ * Set viewport height in pixels
36
+ */
37
+ height(value) {
38
+ return new TakeOptions({ ...this.config, height: value });
39
+ }
40
+ /**
41
+ * Set device scale factor (1-3)
42
+ */
43
+ scale(value) {
44
+ return new TakeOptions({ ...this.config, scale: value });
45
+ }
46
+ /**
47
+ * Enable mobile emulation
48
+ */
49
+ mobile(value = true) {
50
+ return new TakeOptions({ ...this.config, mobile: value });
51
+ }
52
+ // --- Capture ---
53
+ /**
54
+ * Capture full scrollable page
55
+ */
56
+ fullPage(value = true) {
57
+ return new TakeOptions({ ...this.config, fullPage: value });
58
+ }
59
+ /**
60
+ * Capture specific element by CSS selector
61
+ */
62
+ element(selector) {
63
+ return new TakeOptions({ ...this.config, element: selector });
64
+ }
65
+ /**
66
+ * Set output format
67
+ */
68
+ format(value) {
69
+ return new TakeOptions({ ...this.config, format: value });
70
+ }
71
+ /**
72
+ * Set JPEG/WebP quality (1-100)
73
+ */
74
+ quality(value) {
75
+ return new TakeOptions({ ...this.config, quality: value });
76
+ }
77
+ // --- Wait ---
78
+ /**
79
+ * Set wait condition
80
+ */
81
+ waitFor(value) {
82
+ return new TakeOptions({ ...this.config, waitFor: value });
83
+ }
84
+ /**
85
+ * Add delay after page load (milliseconds)
86
+ */
87
+ delay(value) {
88
+ return new TakeOptions({ ...this.config, delay: value });
89
+ }
90
+ /**
91
+ * Wait for CSS selector to appear
92
+ */
93
+ waitForSelector(selector) {
94
+ return new TakeOptions({ ...this.config, waitForSelector: selector });
95
+ }
96
+ /**
97
+ * Maximum wait time in milliseconds
98
+ */
99
+ waitForTimeout(value) {
100
+ return new TakeOptions({ ...this.config, waitForTimeout: value });
101
+ }
102
+ // --- Presets ---
103
+ /**
104
+ * Use a preset configuration
105
+ */
106
+ preset(value) {
107
+ return new TakeOptions({ ...this.config, preset: value });
108
+ }
109
+ /**
110
+ * Emulate a specific device
111
+ */
112
+ device(value) {
113
+ return new TakeOptions({ ...this.config, device: value });
114
+ }
115
+ // --- Blocking ---
116
+ /**
117
+ * Block ad network domains
118
+ */
119
+ blockAds(value = true) {
120
+ return new TakeOptions({ ...this.config, blockAds: value });
121
+ }
122
+ /**
123
+ * Block analytics/tracking
124
+ */
125
+ blockTrackers(value = true) {
126
+ return new TakeOptions({ ...this.config, blockTrackers: value });
127
+ }
128
+ /**
129
+ * Auto-dismiss cookie popups
130
+ */
131
+ blockCookieBanners(value = true) {
132
+ return new TakeOptions({ ...this.config, blockCookieBanners: value });
133
+ }
134
+ /**
135
+ * Block chat widgets
136
+ */
137
+ blockChatWidgets(value = true) {
138
+ return new TakeOptions({ ...this.config, blockChatWidgets: value });
139
+ }
140
+ /**
141
+ * Block URLs matching patterns (glob)
142
+ */
143
+ blockUrls(patterns) {
144
+ return new TakeOptions({ ...this.config, blockUrls: patterns });
145
+ }
146
+ /**
147
+ * Block specific resource types
148
+ */
149
+ blockResources(types) {
150
+ return new TakeOptions({ ...this.config, blockResources: types });
151
+ }
152
+ // --- Page manipulation ---
153
+ /**
154
+ * Inject JavaScript (inline or URL)
155
+ */
156
+ injectScript(script) {
157
+ return new TakeOptions({ ...this.config, injectScript: script });
158
+ }
159
+ /**
160
+ * Inject CSS (inline or URL)
161
+ */
162
+ injectStyle(style) {
163
+ return new TakeOptions({ ...this.config, injectStyle: style });
164
+ }
165
+ /**
166
+ * Click element before capture
167
+ */
168
+ click(selector) {
169
+ return new TakeOptions({ ...this.config, click: selector });
170
+ }
171
+ /**
172
+ * Hide elements (visibility: hidden)
173
+ */
174
+ hide(selectors) {
175
+ return new TakeOptions({ ...this.config, hide: selectors });
176
+ }
177
+ /**
178
+ * Remove elements from DOM
179
+ */
180
+ remove(selectors) {
181
+ return new TakeOptions({ ...this.config, remove: selectors });
182
+ }
183
+ // --- Browser emulation ---
184
+ /**
185
+ * Enable dark mode (prefers-color-scheme: dark)
186
+ */
187
+ darkMode(value = true) {
188
+ return new TakeOptions({ ...this.config, darkMode: value });
189
+ }
190
+ /**
191
+ * Enable reduced motion preference
192
+ */
193
+ reducedMotion(value = true) {
194
+ return new TakeOptions({ ...this.config, reducedMotion: value });
195
+ }
196
+ /**
197
+ * Set media type emulation
198
+ */
199
+ mediaType(value) {
200
+ return new TakeOptions({ ...this.config, mediaType: value });
201
+ }
202
+ /**
203
+ * Set custom user agent
204
+ */
205
+ userAgent(value) {
206
+ return new TakeOptions({ ...this.config, userAgent: value });
207
+ }
208
+ /**
209
+ * Set timezone (IANA format)
210
+ */
211
+ timezone(value) {
212
+ return new TakeOptions({ ...this.config, timezone: value });
213
+ }
214
+ /**
215
+ * Set locale (BCP 47 format)
216
+ */
217
+ locale(value) {
218
+ return new TakeOptions({ ...this.config, locale: value });
219
+ }
220
+ /**
221
+ * Set geolocation coordinates
222
+ */
223
+ geolocation(latitude, longitude, accuracy) {
224
+ const geo = { latitude, longitude };
225
+ if (accuracy !== undefined) {
226
+ geo.accuracy = accuracy;
227
+ }
228
+ return new TakeOptions({ ...this.config, geolocation: geo });
229
+ }
230
+ // --- Network ---
231
+ /**
232
+ * Set custom HTTP headers
233
+ */
234
+ headers(value) {
235
+ return new TakeOptions({ ...this.config, headers: value });
236
+ }
237
+ /**
238
+ * Set cookies
239
+ */
240
+ cookies(value) {
241
+ return new TakeOptions({ ...this.config, cookies: value });
242
+ }
243
+ /**
244
+ * Set HTTP Basic authentication
245
+ */
246
+ authBasic(username, password) {
247
+ return new TakeOptions({ ...this.config, authBasic: { username, password } });
248
+ }
249
+ /**
250
+ * Set Bearer token authentication
251
+ */
252
+ authBearer(token) {
253
+ return new TakeOptions({ ...this.config, authBearer: token });
254
+ }
255
+ /**
256
+ * Bypass Content Security Policy
257
+ */
258
+ bypassCsp(value = true) {
259
+ return new TakeOptions({ ...this.config, bypassCsp: value });
260
+ }
261
+ // --- Cache ---
262
+ /**
263
+ * Set cache TTL in seconds (3600-2592000)
264
+ */
265
+ cacheTtl(value) {
266
+ return new TakeOptions({ ...this.config, cacheTtl: value });
267
+ }
268
+ /**
269
+ * Force cache refresh
270
+ */
271
+ cacheRefresh(value = true) {
272
+ return new TakeOptions({ ...this.config, cacheRefresh: value });
273
+ }
274
+ // --- PDF options ---
275
+ /**
276
+ * Set PDF paper size
277
+ */
278
+ pdfPaperSize(value) {
279
+ return new TakeOptions({ ...this.config, pdfPaperSize: value });
280
+ }
281
+ /**
282
+ * Set custom PDF width (CSS units)
283
+ */
284
+ pdfWidth(value) {
285
+ return new TakeOptions({ ...this.config, pdfWidth: value });
286
+ }
287
+ /**
288
+ * Set custom PDF height (CSS units)
289
+ */
290
+ pdfHeight(value) {
291
+ return new TakeOptions({ ...this.config, pdfHeight: value });
292
+ }
293
+ /**
294
+ * Set PDF landscape orientation
295
+ */
296
+ pdfLandscape(value = true) {
297
+ return new TakeOptions({ ...this.config, pdfLandscape: value });
298
+ }
299
+ /**
300
+ * Set uniform PDF margin (CSS units)
301
+ */
302
+ pdfMargin(value) {
303
+ return new TakeOptions({ ...this.config, pdfMargin: value });
304
+ }
305
+ /**
306
+ * Set PDF top margin
307
+ */
308
+ pdfMarginTop(value) {
309
+ return new TakeOptions({ ...this.config, pdfMarginTop: value });
310
+ }
311
+ /**
312
+ * Set PDF right margin
313
+ */
314
+ pdfMarginRight(value) {
315
+ return new TakeOptions({ ...this.config, pdfMarginRight: value });
316
+ }
317
+ /**
318
+ * Set PDF bottom margin
319
+ */
320
+ pdfMarginBottom(value) {
321
+ return new TakeOptions({ ...this.config, pdfMarginBottom: value });
322
+ }
323
+ /**
324
+ * Set PDF left margin
325
+ */
326
+ pdfMarginLeft(value) {
327
+ return new TakeOptions({ ...this.config, pdfMarginLeft: value });
328
+ }
329
+ /**
330
+ * Set PDF scale factor (0.1-2.0)
331
+ */
332
+ pdfScale(value) {
333
+ return new TakeOptions({ ...this.config, pdfScale: value });
334
+ }
335
+ /**
336
+ * Include background graphics in PDF
337
+ */
338
+ pdfPrintBackground(value = true) {
339
+ return new TakeOptions({ ...this.config, pdfPrintBackground: value });
340
+ }
341
+ /**
342
+ * Set PDF page ranges (e.g., "1-5, 8")
343
+ */
344
+ pdfPageRanges(value) {
345
+ return new TakeOptions({ ...this.config, pdfPageRanges: value });
346
+ }
347
+ /**
348
+ * Set PDF header HTML template
349
+ */
350
+ pdfHeader(value) {
351
+ return new TakeOptions({ ...this.config, pdfHeader: value });
352
+ }
353
+ /**
354
+ * Set PDF footer HTML template
355
+ */
356
+ pdfFooter(value) {
357
+ return new TakeOptions({ ...this.config, pdfFooter: value });
358
+ }
359
+ /**
360
+ * Fit content to single PDF page
361
+ */
362
+ pdfFitOnePage(value = true) {
363
+ return new TakeOptions({ ...this.config, pdfFitOnePage: value });
364
+ }
365
+ /**
366
+ * Use CSS-defined page size for PDF
367
+ */
368
+ pdfPreferCssPageSize(value = true) {
369
+ return new TakeOptions({ ...this.config, pdfPreferCssPageSize: value });
370
+ }
371
+ // --- Storage (BYOS) ---
372
+ /**
373
+ * Enable custom storage upload
374
+ */
375
+ storageEnabled(value = true) {
376
+ return new TakeOptions({ ...this.config, storageEnabled: value });
377
+ }
378
+ /**
379
+ * Set storage path template
380
+ */
381
+ storagePath(value) {
382
+ return new TakeOptions({ ...this.config, storagePath: value });
383
+ }
384
+ /**
385
+ * Set storage ACL
386
+ */
387
+ storageAcl(value) {
388
+ return new TakeOptions({ ...this.config, storageAcl: value });
389
+ }
390
+ // --- Output ---
391
+ /**
392
+ * Get the raw configuration object
393
+ */
394
+ toConfig() {
395
+ return { ...this.config };
396
+ }
397
+ /**
398
+ * Convert to API request parameters (for POST body)
399
+ */
400
+ toParams() {
401
+ const params = {};
402
+ // Target
403
+ if (this.config.url !== undefined)
404
+ params['url'] = this.config.url;
405
+ if (this.config.html !== undefined)
406
+ params['html'] = this.config.html;
407
+ // Viewport
408
+ if (this.config.width !== undefined)
409
+ params['viewport'] = { ...(params['viewport'] ?? {}), width: this.config.width };
410
+ if (this.config.height !== undefined)
411
+ params['viewport'] = {
412
+ ...(params['viewport'] ?? {}),
413
+ height: this.config.height,
414
+ };
415
+ if (this.config.scale !== undefined)
416
+ params['viewport'] = { ...(params['viewport'] ?? {}), scale: this.config.scale };
417
+ if (this.config.mobile !== undefined)
418
+ params['viewport'] = {
419
+ ...(params['viewport'] ?? {}),
420
+ mobile: this.config.mobile,
421
+ };
422
+ // Capture
423
+ if (this.config.fullPage !== undefined)
424
+ params['full_page'] = this.config.fullPage;
425
+ if (this.config.element !== undefined)
426
+ params['element'] = this.config.element;
427
+ if (this.config.format !== undefined)
428
+ params['format'] = this.config.format;
429
+ if (this.config.quality !== undefined)
430
+ params['quality'] = this.config.quality;
431
+ // Wait
432
+ if (this.config.waitFor !== undefined)
433
+ params['wait_for'] = this.config.waitFor;
434
+ if (this.config.delay !== undefined)
435
+ params['delay'] = this.config.delay;
436
+ if (this.config.waitForSelector !== undefined)
437
+ params['wait_for_selector'] = this.config.waitForSelector;
438
+ if (this.config.waitForTimeout !== undefined)
439
+ params['wait_for_timeout'] = this.config.waitForTimeout;
440
+ // Presets
441
+ if (this.config.preset !== undefined)
442
+ params['preset'] = this.config.preset;
443
+ if (this.config.device !== undefined)
444
+ params['device'] = this.config.device;
445
+ // Blocking
446
+ if (this.config.blockAds !== undefined)
447
+ params['block_ads'] = this.config.blockAds;
448
+ if (this.config.blockTrackers !== undefined)
449
+ params['block_trackers'] = this.config.blockTrackers;
450
+ if (this.config.blockCookieBanners !== undefined)
451
+ params['block_cookie_banners'] = this.config.blockCookieBanners;
452
+ if (this.config.blockChatWidgets !== undefined)
453
+ params['block_chat_widgets'] = this.config.blockChatWidgets;
454
+ if (this.config.blockUrls !== undefined)
455
+ params['block_urls'] = this.config.blockUrls;
456
+ if (this.config.blockResources !== undefined)
457
+ params['block_resources'] = this.config.blockResources;
458
+ // Page manipulation
459
+ if (this.config.injectScript !== undefined)
460
+ params['inject_script'] = this.config.injectScript;
461
+ if (this.config.injectStyle !== undefined)
462
+ params['inject_style'] = this.config.injectStyle;
463
+ if (this.config.click !== undefined)
464
+ params['click'] = this.config.click;
465
+ if (this.config.hide !== undefined)
466
+ params['hide'] = this.config.hide;
467
+ if (this.config.remove !== undefined)
468
+ params['remove'] = this.config.remove;
469
+ // Browser emulation
470
+ if (this.config.darkMode !== undefined)
471
+ params['dark_mode'] = this.config.darkMode;
472
+ if (this.config.reducedMotion !== undefined)
473
+ params['reduced_motion'] = this.config.reducedMotion;
474
+ if (this.config.mediaType !== undefined)
475
+ params['media_type'] = this.config.mediaType;
476
+ if (this.config.userAgent !== undefined)
477
+ params['user_agent'] = this.config.userAgent;
478
+ if (this.config.timezone !== undefined)
479
+ params['timezone'] = this.config.timezone;
480
+ if (this.config.locale !== undefined)
481
+ params['locale'] = this.config.locale;
482
+ if (this.config.geolocation !== undefined)
483
+ params['geolocation'] = this.config.geolocation;
484
+ // Network
485
+ if (this.config.headers !== undefined)
486
+ params['headers'] = this.config.headers;
487
+ if (this.config.cookies !== undefined)
488
+ params['cookies'] = this.config.cookies;
489
+ if (this.config.authBasic !== undefined)
490
+ params['auth_basic'] = this.config.authBasic;
491
+ if (this.config.authBearer !== undefined)
492
+ params['auth_bearer'] = this.config.authBearer;
493
+ if (this.config.bypassCsp !== undefined)
494
+ params['bypass_csp'] = this.config.bypassCsp;
495
+ // Cache
496
+ if (this.config.cacheTtl !== undefined)
497
+ params['cache_ttl'] = this.config.cacheTtl;
498
+ if (this.config.cacheRefresh !== undefined)
499
+ params['cache_refresh'] = this.config.cacheRefresh;
500
+ // PDF
501
+ if (this.config.pdfPaperSize !== undefined)
502
+ params['pdf'] = {
503
+ ...(params['pdf'] ?? {}),
504
+ paper_size: this.config.pdfPaperSize,
505
+ };
506
+ if (this.config.pdfWidth !== undefined)
507
+ params['pdf'] = { ...(params['pdf'] ?? {}), width: this.config.pdfWidth };
508
+ if (this.config.pdfHeight !== undefined)
509
+ params['pdf'] = { ...(params['pdf'] ?? {}), height: this.config.pdfHeight };
510
+ if (this.config.pdfLandscape !== undefined)
511
+ params['pdf'] = { ...(params['pdf'] ?? {}), landscape: this.config.pdfLandscape };
512
+ if (this.config.pdfMargin !== undefined)
513
+ params['pdf'] = { ...(params['pdf'] ?? {}), margin: this.config.pdfMargin };
514
+ if (this.config.pdfMarginTop !== undefined)
515
+ params['pdf'] = {
516
+ ...(params['pdf'] ?? {}),
517
+ margin_top: this.config.pdfMarginTop,
518
+ };
519
+ if (this.config.pdfMarginRight !== undefined)
520
+ params['pdf'] = {
521
+ ...(params['pdf'] ?? {}),
522
+ margin_right: this.config.pdfMarginRight,
523
+ };
524
+ if (this.config.pdfMarginBottom !== undefined)
525
+ params['pdf'] = {
526
+ ...(params['pdf'] ?? {}),
527
+ margin_bottom: this.config.pdfMarginBottom,
528
+ };
529
+ if (this.config.pdfMarginLeft !== undefined)
530
+ params['pdf'] = {
531
+ ...(params['pdf'] ?? {}),
532
+ margin_left: this.config.pdfMarginLeft,
533
+ };
534
+ if (this.config.pdfScale !== undefined)
535
+ params['pdf'] = { ...(params['pdf'] ?? {}), scale: this.config.pdfScale };
536
+ if (this.config.pdfPrintBackground !== undefined)
537
+ params['pdf'] = {
538
+ ...(params['pdf'] ?? {}),
539
+ print_background: this.config.pdfPrintBackground,
540
+ };
541
+ if (this.config.pdfPageRanges !== undefined)
542
+ params['pdf'] = {
543
+ ...(params['pdf'] ?? {}),
544
+ page_ranges: this.config.pdfPageRanges,
545
+ };
546
+ if (this.config.pdfHeader !== undefined)
547
+ params['pdf'] = { ...(params['pdf'] ?? {}), header: this.config.pdfHeader };
548
+ if (this.config.pdfFooter !== undefined)
549
+ params['pdf'] = { ...(params['pdf'] ?? {}), footer: this.config.pdfFooter };
550
+ if (this.config.pdfFitOnePage !== undefined)
551
+ params['pdf'] = {
552
+ ...(params['pdf'] ?? {}),
553
+ fit_one_page: this.config.pdfFitOnePage,
554
+ };
555
+ if (this.config.pdfPreferCssPageSize !== undefined)
556
+ params['pdf'] = {
557
+ ...(params['pdf'] ?? {}),
558
+ prefer_css_page_size: this.config.pdfPreferCssPageSize,
559
+ };
560
+ // Storage
561
+ if (this.config.storageEnabled !== undefined)
562
+ params['storage'] = {
563
+ ...(params['storage'] ?? {}),
564
+ enabled: this.config.storageEnabled,
565
+ };
566
+ if (this.config.storagePath !== undefined)
567
+ params['storage'] = {
568
+ ...(params['storage'] ?? {}),
569
+ path: this.config.storagePath,
570
+ };
571
+ if (this.config.storageAcl !== undefined)
572
+ params['storage'] = { ...(params['storage'] ?? {}), acl: this.config.storageAcl };
573
+ return params;
574
+ }
575
+ /**
576
+ * Convert to query string (for GET requests)
577
+ */
578
+ toQueryString() {
579
+ const params = new URLSearchParams();
580
+ // Target
581
+ if (this.config.url !== undefined)
582
+ params.set('url', this.config.url);
583
+ // Viewport (flat for GET)
584
+ if (this.config.width !== undefined)
585
+ params.set('width', String(this.config.width));
586
+ if (this.config.height !== undefined)
587
+ params.set('height', String(this.config.height));
588
+ if (this.config.scale !== undefined)
589
+ params.set('scale', String(this.config.scale));
590
+ if (this.config.mobile !== undefined)
591
+ params.set('mobile', String(this.config.mobile));
592
+ // Capture
593
+ if (this.config.fullPage !== undefined)
594
+ params.set('full_page', String(this.config.fullPage));
595
+ if (this.config.element !== undefined)
596
+ params.set('element', this.config.element);
597
+ if (this.config.format !== undefined)
598
+ params.set('format', this.config.format);
599
+ if (this.config.quality !== undefined)
600
+ params.set('quality', String(this.config.quality));
601
+ // Wait
602
+ if (this.config.waitFor !== undefined)
603
+ params.set('wait_for', this.config.waitFor);
604
+ if (this.config.delay !== undefined)
605
+ params.set('delay', String(this.config.delay));
606
+ if (this.config.waitForSelector !== undefined)
607
+ params.set('wait_for_selector', this.config.waitForSelector);
608
+ if (this.config.waitForTimeout !== undefined)
609
+ params.set('wait_for_timeout', String(this.config.waitForTimeout));
610
+ // Presets
611
+ if (this.config.preset !== undefined)
612
+ params.set('preset', this.config.preset);
613
+ if (this.config.device !== undefined)
614
+ params.set('device', this.config.device);
615
+ // Blocking
616
+ if (this.config.blockAds !== undefined)
617
+ params.set('block_ads', String(this.config.blockAds));
618
+ if (this.config.blockTrackers !== undefined)
619
+ params.set('block_trackers', String(this.config.blockTrackers));
620
+ if (this.config.blockCookieBanners !== undefined)
621
+ params.set('block_cookie_banners', String(this.config.blockCookieBanners));
622
+ if (this.config.blockChatWidgets !== undefined)
623
+ params.set('block_chat_widgets', String(this.config.blockChatWidgets));
624
+ if (this.config.blockUrls !== undefined) {
625
+ this.config.blockUrls.forEach((url) => {
626
+ params.append('block_urls', url);
627
+ });
628
+ }
629
+ if (this.config.blockResources !== undefined) {
630
+ this.config.blockResources.forEach((r) => {
631
+ params.append('block_resources', r);
632
+ });
633
+ }
634
+ // Browser emulation
635
+ if (this.config.darkMode !== undefined)
636
+ params.set('dark_mode', String(this.config.darkMode));
637
+ if (this.config.reducedMotion !== undefined)
638
+ params.set('reduced_motion', String(this.config.reducedMotion));
639
+ if (this.config.mediaType !== undefined)
640
+ params.set('media_type', this.config.mediaType);
641
+ if (this.config.userAgent !== undefined)
642
+ params.set('user_agent', this.config.userAgent);
643
+ if (this.config.timezone !== undefined)
644
+ params.set('timezone', this.config.timezone);
645
+ if (this.config.locale !== undefined)
646
+ params.set('locale', this.config.locale);
647
+ // Cache
648
+ if (this.config.cacheTtl !== undefined)
649
+ params.set('cache_ttl', String(this.config.cacheTtl));
650
+ if (this.config.cacheRefresh !== undefined)
651
+ params.set('cache_refresh', String(this.config.cacheRefresh));
652
+ return params.toString();
653
+ }
654
+ }
655
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":"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"}