@browserless.io/browserless 2.5.0 → 2.6.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 (191) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +55 -36
  3. package/build/config.d.ts +2 -2
  4. package/build/config.js +3 -3
  5. package/build/data/classes.json +1 -1
  6. package/build/data/selectors.json +1 -1
  7. package/build/http.d.ts +1 -0
  8. package/build/http.js +1 -0
  9. package/build/routes/chrome/http/content.post.body.json +8 -8
  10. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  11. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  12. package/build/routes/chrome/http/screenshot.post.body.json +9 -9
  13. package/build/routes/chromium/http/content.post.body.json +8 -8
  14. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  15. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  16. package/build/routes/chromium/http/screenshot.post.body.json +9 -9
  17. package/build/routes/management/http/active.get.d.ts +16 -0
  18. package/build/routes/management/http/active.get.js +17 -0
  19. package/build/routes/management/tests/management.spec.js +7 -0
  20. package/build/server.js +1 -1
  21. package/build/types.d.ts +6 -4
  22. package/build/types.js +1 -0
  23. package/build/utils.d.ts +1 -1
  24. package/docker/base/Dockerfile +1 -1
  25. package/extensions/ublock/1p-filters.html +4 -3
  26. package/extensions/ublock/3p-filters.html +3 -3
  27. package/extensions/ublock/_locales/ar/messages.json +16 -4
  28. package/extensions/ublock/_locales/az/messages.json +16 -4
  29. package/extensions/ublock/_locales/be/messages.json +19 -7
  30. package/extensions/ublock/_locales/bg/messages.json +16 -4
  31. package/extensions/ublock/_locales/bn/messages.json +33 -21
  32. package/extensions/ublock/_locales/br_FR/messages.json +33 -21
  33. package/extensions/ublock/_locales/bs/messages.json +16 -4
  34. package/extensions/ublock/_locales/ca/messages.json +16 -4
  35. package/extensions/ublock/_locales/cs/messages.json +16 -4
  36. package/extensions/ublock/_locales/cv/messages.json +16 -4
  37. package/extensions/ublock/_locales/cy/messages.json +16 -4
  38. package/extensions/ublock/_locales/da/messages.json +21 -9
  39. package/extensions/ublock/_locales/de/messages.json +17 -5
  40. package/extensions/ublock/_locales/el/messages.json +16 -4
  41. package/extensions/ublock/_locales/en/messages.json +16 -4
  42. package/extensions/ublock/_locales/en_GB/messages.json +16 -4
  43. package/extensions/ublock/_locales/eo/messages.json +17 -5
  44. package/extensions/ublock/_locales/es/messages.json +16 -4
  45. package/extensions/ublock/_locales/et/messages.json +16 -4
  46. package/extensions/ublock/_locales/eu/messages.json +16 -4
  47. package/extensions/ublock/_locales/fa/messages.json +24 -12
  48. package/extensions/ublock/_locales/fi/messages.json +16 -4
  49. package/extensions/ublock/_locales/fil/messages.json +16 -4
  50. package/extensions/ublock/_locales/fr/messages.json +16 -4
  51. package/extensions/ublock/_locales/fy/messages.json +16 -4
  52. package/extensions/ublock/_locales/gl/messages.json +16 -4
  53. package/extensions/ublock/_locales/gu/messages.json +16 -4
  54. package/extensions/ublock/_locales/he/messages.json +25 -13
  55. package/extensions/ublock/_locales/hi/messages.json +31 -19
  56. package/extensions/ublock/_locales/hr/messages.json +16 -4
  57. package/extensions/ublock/_locales/hu/messages.json +16 -4
  58. package/extensions/ublock/_locales/hy/messages.json +17 -5
  59. package/extensions/ublock/_locales/id/messages.json +16 -4
  60. package/extensions/ublock/_locales/it/messages.json +17 -5
  61. package/extensions/ublock/_locales/ja/messages.json +16 -4
  62. package/extensions/ublock/_locales/ka/messages.json +16 -4
  63. package/extensions/ublock/_locales/kk/messages.json +16 -4
  64. package/extensions/ublock/_locales/kn/messages.json +74 -62
  65. package/extensions/ublock/_locales/ko/messages.json +16 -4
  66. package/extensions/ublock/_locales/lt/messages.json +23 -11
  67. package/extensions/ublock/_locales/lv/messages.json +16 -4
  68. package/extensions/ublock/_locales/mk/messages.json +16 -4
  69. package/extensions/ublock/_locales/ml/messages.json +19 -7
  70. package/extensions/ublock/_locales/mr/messages.json +16 -4
  71. package/extensions/ublock/_locales/ms/messages.json +16 -4
  72. package/extensions/ublock/_locales/nb/messages.json +16 -4
  73. package/extensions/ublock/_locales/nl/messages.json +16 -4
  74. package/extensions/ublock/_locales/no/messages.json +16 -4
  75. package/extensions/ublock/_locales/oc/messages.json +16 -4
  76. package/extensions/ublock/_locales/pa/messages.json +16 -4
  77. package/extensions/ublock/_locales/pl/messages.json +17 -5
  78. package/extensions/ublock/_locales/pt_BR/messages.json +16 -4
  79. package/extensions/ublock/_locales/pt_PT/messages.json +16 -4
  80. package/extensions/ublock/_locales/ro/messages.json +17 -5
  81. package/extensions/ublock/_locales/ru/messages.json +16 -4
  82. package/extensions/ublock/_locales/si/messages.json +16 -4
  83. package/extensions/ublock/_locales/sk/messages.json +16 -4
  84. package/extensions/ublock/_locales/sl/messages.json +16 -4
  85. package/extensions/ublock/_locales/so/messages.json +16 -4
  86. package/extensions/ublock/_locales/sq/messages.json +16 -4
  87. package/extensions/ublock/_locales/sr/messages.json +16 -4
  88. package/extensions/ublock/_locales/sv/messages.json +20 -8
  89. package/extensions/ublock/_locales/sw/messages.json +16 -4
  90. package/extensions/ublock/_locales/ta/messages.json +16 -4
  91. package/extensions/ublock/_locales/te/messages.json +16 -4
  92. package/extensions/ublock/_locales/th/messages.json +42 -30
  93. package/extensions/ublock/_locales/tr/messages.json +19 -7
  94. package/extensions/ublock/_locales/uk/messages.json +16 -4
  95. package/extensions/ublock/_locales/ur/messages.json +16 -4
  96. package/extensions/ublock/_locales/vi/messages.json +16 -4
  97. package/extensions/ublock/_locales/zh_CN/messages.json +16 -4
  98. package/extensions/ublock/_locales/zh_TW/messages.json +42 -30
  99. package/extensions/ublock/assets/assets.json +95 -78
  100. package/extensions/ublock/assets/resources/scriptlets.js +70 -24
  101. package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +6258 -3453
  102. package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +277 -40
  103. package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +8 -32
  104. package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +107 -12
  105. package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +1160 -954
  106. package/extensions/ublock/assets/ublock/badlists.txt +1 -2
  107. package/extensions/ublock/assets/ublock/badware.min.txt +395 -270
  108. package/extensions/ublock/assets/ublock/filters.min.txt +1176 -1238
  109. package/extensions/ublock/assets/ublock/privacy.min.txt +32 -31
  110. package/extensions/ublock/assets/ublock/quick-fixes.min.txt +120 -110
  111. package/extensions/ublock/assets/ublock/unbreak.min.txt +75 -36
  112. package/extensions/ublock/css/1p-filters.css +2 -1
  113. package/extensions/ublock/css/3p-filters.css +1 -16
  114. package/extensions/ublock/css/advanced-settings.css +1 -0
  115. package/extensions/ublock/css/asset-viewer.css +1 -0
  116. package/extensions/ublock/css/code-viewer.css +1 -0
  117. package/extensions/ublock/css/codemirror.css +37 -10
  118. package/extensions/ublock/css/common.css +36 -2
  119. package/extensions/ublock/css/dashboard.css +9 -3
  120. package/extensions/ublock/css/devtools.css +1 -0
  121. package/extensions/ublock/css/document-blocked.css +3 -3
  122. package/extensions/ublock/css/dom-inspector.css +1 -0
  123. package/extensions/ublock/css/dyna-rules.css +1 -0
  124. package/extensions/ublock/css/epicker-ui.css +76 -66
  125. package/extensions/ublock/css/fa-icons.css +1 -0
  126. package/extensions/ublock/css/logger-ui.css +2 -0
  127. package/extensions/ublock/css/popup-fenix.css +1 -0
  128. package/extensions/ublock/css/whitelist.css +1 -0
  129. package/extensions/ublock/dashboard.html +20 -13
  130. package/extensions/ublock/devtools.html +2 -0
  131. package/extensions/ublock/dyna-rules.html +2 -2
  132. package/extensions/ublock/img/flags-of-the-world/np.png +0 -0
  133. package/extensions/ublock/img/fontawesome/fontawesome-defs.svg +1 -0
  134. package/extensions/ublock/js/1p-filters.js +72 -23
  135. package/extensions/ublock/js/3p-filters.js +71 -25
  136. package/extensions/ublock/js/asset-viewer.js +1 -0
  137. package/extensions/ublock/js/assets.js +83 -89
  138. package/extensions/ublock/js/background.js +20 -27
  139. package/extensions/ublock/js/base64-custom.js +1 -102
  140. package/extensions/ublock/js/benchmarks.js +36 -21
  141. package/extensions/ublock/js/biditrie.js +8 -23
  142. package/extensions/ublock/js/broadcast.js +2 -4
  143. package/extensions/ublock/js/cachestorage.js +594 -396
  144. package/extensions/ublock/js/codemirror/search.js +49 -37
  145. package/extensions/ublock/js/codemirror/ubo-static-filtering.js +233 -215
  146. package/extensions/ublock/js/contentscript-extra.js +31 -1
  147. package/extensions/ublock/js/cosmetic-filtering.js +35 -33
  148. package/extensions/ublock/js/dashboard.js +11 -7
  149. package/extensions/ublock/js/devtools.js +22 -0
  150. package/extensions/ublock/js/dom.js +2 -2
  151. package/extensions/ublock/js/dyna-rules.js +17 -16
  152. package/extensions/ublock/js/epicker-ui.js +41 -16
  153. package/extensions/ublock/js/fa-icons.js +1 -0
  154. package/extensions/ublock/js/hntrie.js +10 -25
  155. package/extensions/ublock/js/i18n.js +15 -15
  156. package/extensions/ublock/js/logger-ui.js +9 -6
  157. package/extensions/ublock/js/messaging.js +51 -26
  158. package/extensions/ublock/js/pagestore.js +21 -23
  159. package/extensions/ublock/js/popup-fenix.js +35 -22
  160. package/extensions/ublock/js/redirect-engine.js +15 -30
  161. package/extensions/ublock/js/reverselookup.js +1 -1
  162. package/extensions/ublock/js/s14e-serializer.js +1405 -0
  163. package/extensions/ublock/js/scriptlet-filtering-core.js +1 -1
  164. package/extensions/ublock/js/scriptlets/epicker.js +27 -18
  165. package/extensions/ublock/js/settings.js +32 -21
  166. package/extensions/ublock/js/start.js +121 -62
  167. package/extensions/ublock/js/static-ext-filtering-db.js +6 -6
  168. package/extensions/ublock/js/static-ext-filtering.js +17 -28
  169. package/extensions/ublock/js/static-filtering-parser.js +26 -4
  170. package/extensions/ublock/js/static-net-filtering.js +69 -168
  171. package/extensions/ublock/js/storage.js +178 -155
  172. package/extensions/ublock/js/traffic.js +11 -7
  173. package/extensions/ublock/js/vapi-background.js +49 -62
  174. package/extensions/ublock/js/vapi-client.js +13 -16
  175. package/extensions/ublock/js/webext.js +10 -2
  176. package/extensions/ublock/js/whitelist.js +27 -25
  177. package/extensions/ublock/lib/publicsuffixlist/publicsuffixlist.js +3 -7
  178. package/extensions/ublock/manifest.json +2 -1
  179. package/extensions/ublock/web_accessible_resources/epicker-ui.html +5 -8
  180. package/extensions/ublock/whitelist.html +3 -4
  181. package/package.json +12 -12
  182. package/src/config.ts +3 -4
  183. package/src/http.ts +1 -0
  184. package/src/routes/management/http/active.get.ts +30 -0
  185. package/src/routes/management/tests/management.spec.ts +13 -0
  186. package/src/server.ts +1 -1
  187. package/src/types.ts +2 -1
  188. package/static/docs/swagger.json +57 -11
  189. package/static/docs/swagger.min.json +56 -10
  190. package/static/function/client.js +4155 -3350
  191. package/extensions/ublock/_locales/ku/messages.json +0 -1294
package/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- # [Latest](https://github.com/browserless/chrome/compare/v2.5.0...main)
1
+ # [Latest](https://github.com/browserless/chrome/compare/v2.6.0...main)
2
+ - Dependency updates.
3
+
4
+ # [v2.6.0](https://github.com/browserless/chrome/compare/v2.5.0...v2.6.0)
5
+ - Adds a `GET /active` route that responds with no message and a `204` http code.
6
+ - Move to NodeJS 20.12.0.
7
+ - README, CHANGELOG, Migration and spelling fixes.
8
+ - New `/active` route for determining if server is able to handle requests.
9
+ - Better logging around 404'd HTTP requests.
2
10
  - Dependency updates.
3
11
 
4
12
  # [v2.5.0](https://github.com/browserless/chrome/compare/v2.4.0...v2.5.0)
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ <!-- markdownlint-disable first-line-h1 no-emphasis-as-heading -->
2
+
1
3
  ![browserless.io logo](/assets/logo.png)
2
4
 
3
5
  ![Docker Pulls](https://img.shields.io/docker/pulls/browserless/chrome)
@@ -7,34 +9,37 @@
7
9
  ![Webkit CI](https://github.com/browserless/chrome/actions/workflows/docker-webkit.yml/badge.svg)
8
10
  ![Multi CI](https://github.com/browserless/chrome/actions/workflows/docker-multi.yml/badge.svg)
9
11
 
10
-
11
- > [Looking for v1.x.x of browserless? You can find it here](https://github.com/browserless/chrome/tree/v1), although we recommend migrating to v2.
12
+ > [!NOTE]
13
+ > [Looking for v1.x.x of browserless? You can find it here](https://github.com/browserless/chrome/tree/v1), although we recommend [migrating](/MIGRATION-2.0.md) to v2.
12
14
 
13
15
  Browserless allows remote clients to connect and execute headless work, all inside of docker. It supports the standard, unforked Puppeteer and Playwright libraries, as well offering REST-based APIs for common actions like data collection, PDF generation and more.
14
16
 
15
17
  We take care of common issues such as missing system-fonts, missing external libraries, and performance improvements, along with edge-cases like downloading files and managing sessions. For details, check out the documentation site built into the project which includes Open API docs.
16
18
 
17
19
  If you've been struggling to deploy headless browsers without running into issues or bloated resource requirements, then Browserless was built for you. Run the browsers in [our cloud](https://browserless.io/) or your own, [free for non-commercial uses](https://github.com/browserless/browserless#licensing).
18
- # Table of Contents
19
-
20
- 1. [Features](#features)
21
- 2. [How it works](#how-it-works)
22
- 3. [Docker](#docker)
23
- 4. [Hosting](#hosting-providers)
24
- 5. [Puppeteer](#puppeteer)
25
- 6. [Playwright](#playwright)
26
- 7. [Extending with NodeJS SDK](#extending-nodejs-sdk)
27
- 8. [Licensing](#licensing)
28
- 9. [Changelog](https://github.com/browserless/chrome/blob/master/CHANGELOG.md)
20
+
21
+ ## Table of Contents
22
+
23
+ - [External links](#external-links)
24
+ - [Features](#features)
25
+ - [How it works](#how-it-works)
26
+ - [Docker](#docker)
27
+ - [Hosting Providers](#hosting-providers)
28
+ - [Puppeteer](#puppeteer)
29
+ - [Playwright](#playwright)
30
+ - [Extending (NodeJS SDK)](#extending-nodejs-sdk)
31
+ - [Usage with other libraries](#usage-with-other-libraries)
32
+ - [Motivations](#motivations)
33
+ - [Licensing](#licensing)
29
34
 
30
35
  ## External links
31
36
 
32
- 1. [Full documentation site](https://www.browserless.io/docs/start)
37
+ 1. [Full documentation site](https://docs.browserless.io/)
33
38
  2. [Live Debugger (using browserless.io)](https://chrome.browserless.io/)
34
39
  3. [Docker](https://github.com/browserless/browserless/pkgs/container/base)
35
40
  4. [Slack](https://join.slack.com/t/browserless/shared_invite/enQtMzA3OTMwNjA3MzY1LTRmMWU5NjQ0MTQ2YTE2YmU3MzdjNmVlMmU4MThjM2UxODNmNzNlZjVkY2U2NjdkMzYyNTgyZTBiMmE3Nzg0MzY)
36
41
 
37
- # Features
42
+ ## Features
38
43
 
39
44
  ### General
40
45
 
@@ -45,7 +50,7 @@ If you've been struggling to deploy headless browsers without running into issue
45
50
  - Works with unforked Puppeteer and Playwright.
46
51
  - Configurable session timers and health-checks to keep things running smoothly.
47
52
  - Error tolerant: if Chrome dies it won't.
48
- - [Support for running and development on Apple's M1 machines](#building-for-arm64-apple-m1-machines)
53
+ - Support for running and development on Apple's M1 machines
49
54
 
50
55
  ### Cloud
51
56
 
@@ -53,25 +58,26 @@ Our [cloud accounts](https://www.browserless.io/pricing/) include all the genera
53
58
 
54
59
  - Inbuilt [residential proxy](https://www.browserless.io/blog/2023/09/24/residential-proxying/)
55
60
  - [/unblock API](https://www.browserless.io/blog/2024/02/26/unblock-api/) for avoiding detectors
56
- - Hybrid automations for including user inputs
57
- - Ability to upload and run extensions *(coming soon)*
61
+ - [Hybrid automations](https://www.browserless.io/blog/2024/03/21/hybrid-automations-for-puppeteer/) for streaming login windows during scripts
62
+ - Ability to upload and run extensions _(coming soon)_
58
63
  - SSO, tokens and user roles
59
64
 
60
- # How it works
65
+ ## How it works
61
66
 
62
67
  Browserless listens for both incoming websocket requests, generally issued by most libraries, as well as pre-build REST APIs to do common functions (PDF generation, images and so on). When a websocket connects to Browserless it starts Chrome and proxies your request into it. Once the session is done then it closes and awaits for more connections. Some libraries use Chrome's HTTP endpoints, like `/json` to inspect debug-able targets, which Browserless also supports.
63
68
 
64
69
  You still execute the script itself which gives you total control over what library you want to choose and when to do upgrades. This also comes with the benefit of keep your code proprietary and able to run on numerous platforms. We simply take care of all the browser-aspects and offer a management layer on top of the browser.
65
70
 
66
- # Docker
71
+ ### Docker
67
72
 
68
- > See more options on our [full documentation site](https://www.browserless.io/docs/docker-quickstart).
73
+ > [!TIP]
74
+ > See more options on our [full documentation site](https://docs.browserless.io/Docker/docker-quickstart).
69
75
 
70
- 1. `docker run -p 3000:3000 ghcr.io/browserless/chrome`
76
+ 1. `docker run -p 3000:3000 ghcr.io/browserless/chromium`
71
77
  2. Visit `http://localhost:3000/docs` to see the documentation site.
72
78
  3. See more at our [docker package](https://github.com/browserless/browserless/pkgs/container/base).
73
79
 
74
- # Hosting Providers
80
+ ### Hosting Providers
75
81
 
76
82
  We offer a first-class hosted product located [here](https://browserless.io). Alternatively you can host this image on just about any major platform that offers hosting for docker. Our hosted service takes care of all the machine provisioning, notifications, dashboards and monitoring plus more:
77
83
 
@@ -81,50 +87,63 @@ We offer a first-class hosted product located [here](https://browserless.io). Al
81
87
 
82
88
  If you're interested in using this image for commercial aspects, then please read the below section on licensing.
83
89
 
84
- # Puppeteer
90
+ ### Puppeteer
85
91
 
86
92
  Puppeteer allows you to specify a remote location for chrome via the `browserWSEndpoint` option. Setting this for Browserless is a single line of code change.
87
93
 
88
94
  **Before**
95
+
89
96
  ```js
90
97
  const browser = await puppeteer.launch();
91
98
  ```
92
99
 
93
100
  **After**
101
+
94
102
  ```js
95
- const browser = await puppeteer.connect({ browserWSEndpoint: 'ws://localhost:3000' });
103
+ const browser = await puppeteer.connect({
104
+ browserWSEndpoint: 'ws://localhost:3000',
105
+ });
96
106
  ```
97
107
 
98
- # Playwright
108
+ ### Playwright
99
109
 
100
- We support running with playwright via their remote connection method on the `chromium` interface. Since playwright is very similar to puppeteer, even launch arguments and other things "just work":
110
+ We support running with playwright via their their browser's remot connection protocols interface out of the box. Just make sure that your Docker image, playwright browser type _and_ endpoint match:
101
111
 
102
112
  **Before**
113
+
103
114
  ```js
104
- const browser = await pw.chromium.launch();
115
+ import pw from "playwright";
116
+ const browser = await pw.firefox.launch();
105
117
  ```
106
118
 
107
119
  **After**
120
+
121
+ ```sh
122
+ docker run -p 3000:3000 ghcr.io/browserless/firefox
123
+ # or ghcr.io/browserless/multi for all the browsers
124
+ ```
125
+
108
126
  ```js
109
- const browser = await pw.chromium.connect('ws://localhost:3000/playwright/chromium');
127
+ import pw from "playwright-core";
110
128
 
111
- // OR
112
- const browser = await pw.chromium.connectOverCDP('ws://localhost:3000');
129
+ const browser = await pw.firefox.connect(
130
+ 'ws://localhost:3000/firefox/playwright',
131
+ );
113
132
  ```
114
133
 
115
134
  After that, the rest of your code remains the same with no other changes required.
116
135
 
117
- # Extending (NodeJS SDK)
136
+ ## Extending (NodeJS SDK)
118
137
 
119
138
  Browserless comes with built-in extension capabilities, and allows for extending nearly any aspect of the system (for Version 2+). For more details on how to write your own routes, build docker images, and more, [see our SDK README.md](/bin/scaffold/README.md) or simply run "npx @browserless.io/browserless create" in a terminal and follow the onscreen prompts.
120
139
 
121
- # Usage with other libraries
140
+ ## Usage with other libraries
122
141
 
123
142
  Most libraries allow you to specify a remote instance of Chrome to interact with. They are either looking for a websocket endpoint, a host and port, or some address. Browserless supports these by default, however if you're having issues please make an issue in this project and we'll try and work with the library authors to get them integrated with browserless. Please note that in V2 we no longer support selenium or webdriver integrations.
124
143
 
125
- You can find a much larger list of supported libraries [on our documentation site](https://www.browserless.io/docs/puppeteer-library).
144
+ You can find a much larger list of supported libraries [on our documentation site](https://docs.browserless.io/Libraries/puppeteer-library).
126
145
 
127
- # Motivations
146
+ ## Motivations
128
147
 
129
148
  Running Chrome on lambda or on your own is a fantastic idea but in practice is quite challenging in production. You're met with pretty tough cloud limits, possibly building Chrome yourself, and then dealing with odd invocation issues should everything else go ok. A lot of issues in various repositories are due to just challenges of getting Chrome running smoothly in AWS (see [here](https://github.com/GoogleChrome/puppeteer/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-desc)). You can see for yourself by going to nearly any library and sorting issues by most commented.
130
149
 
@@ -132,7 +151,7 @@ Getting Chrome running well in docker is also a challenge as there's quiet a few
132
151
 
133
152
  All of these issues prompted us to build a first-class image and workflow for interacting with Chrome in a more streamlined way. With Browserless you never have to worry about fonts, extra packages, library support, security, or anything else. It just works reliably like any other modern web service. On top of that it comes with a prescribed approach on how you interact with Chrome, which is through socket connections (similar to a database or any other external appliance). What this means is that you get the ability to drive Chrome remotely without having to do updates/releases to the thing that runs Chrome since it's divorced from your application.
134
153
 
135
- # Licensing
154
+ ## Licensing
136
155
 
137
156
  SPDX-License-Identifier: SSPL-1.0 OR Browserless Commercial License.
138
157
 
package/build/config.d.ts CHANGED
@@ -116,7 +116,7 @@ export declare class Config extends EventEmitter {
116
116
  */
117
117
  getServerAddress: () => string;
118
118
  /**
119
- * Returns the the fully-qualified URL for the
119
+ * Returns the fully-qualified URL for the
120
120
  * external address that browserless might be
121
121
  * running behind *or* the server address if
122
122
  * no external URL is provided.
@@ -133,7 +133,7 @@ export declare class Config extends EventEmitter {
133
133
  */
134
134
  setExternalAddress: (address: string) => string;
135
135
  /**
136
- * Returns the the fully-qualified WebSocket URL for the
136
+ * Returns the fully-qualified WebSocket URL for the
137
137
  * external address that browserless might be
138
138
  * running behind *or* the server address if
139
139
  * no external URL is provided.
package/build/config.js CHANGED
@@ -327,7 +327,7 @@ export class Config extends EventEmitter {
327
327
  ? `http://${this.host}`
328
328
  : `http://${this.host}:${this.port}`;
329
329
  /**
330
- * Returns the the fully-qualified URL for the
330
+ * Returns the fully-qualified URL for the
331
331
  * external address that browserless might be
332
332
  * running behind *or* the server address if
333
333
  * no external URL is provided.
@@ -342,9 +342,9 @@ export class Config extends EventEmitter {
342
342
  * @param address The fully-qualified URL, eg https://www.example.com/
343
343
  * @returns {string} The address
344
344
  */
345
- setExternalAddress = (address) => this.external = address;
345
+ setExternalAddress = (address) => (this.external = address);
346
346
  /**
347
- * Returns the the fully-qualified WebSocket URL for the
347
+ * Returns the fully-qualified WebSocket URL for the
348
348
  * external address that browserless might be
349
349
  * running behind *or* the server address if
350
350
  * no external URL is provided.
@@ -1 +1 @@
1
- ["appconsent_noscroll","b-modal-banner--disabled","blocked","bodyBlocked","c24-cc-visible","cbar","ccm-blocked","cmp-open","consent-modal-open","consent-modal-overflow","cookie_consent","CookiePolicy--show","cookies","cu_k_cookie_consent_modal_open","didomi-popup-open","gcdc-locked","gdpr-infobar-visible","gdprbanner_consent_gdpr_consent","gdprCookieBanner-acceptedAll","hasCookieBanner","ibeugdpr-disabled","idxrcookies-block-user-nav","modal--is-open","modal-open","no_scroll","no-scroll","noScroll","popin-gdpr-no-scroll","shopee-no-scroll","show-cookie-policy-info","sp-message-open","start-cookies","ta-cc-modal-open","touchevents-false","wt-cli-eu-country","wt-cli-geoip-on"]
1
+ ["404: Not Found"]