@browserless.io/browserless 2.5.0 → 2.6.1-beta-1

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 (195) 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/shared/utils/function/handler.js +3 -2
  22. package/build/types.d.ts +6 -4
  23. package/build/types.js +1 -0
  24. package/build/utils.d.ts +1 -1
  25. package/docker/base/Dockerfile +1 -1
  26. package/extensions/ublock/1p-filters.html +4 -3
  27. package/extensions/ublock/3p-filters.html +3 -3
  28. package/extensions/ublock/_locales/ar/messages.json +16 -4
  29. package/extensions/ublock/_locales/az/messages.json +16 -4
  30. package/extensions/ublock/_locales/be/messages.json +19 -7
  31. package/extensions/ublock/_locales/bg/messages.json +16 -4
  32. package/extensions/ublock/_locales/bn/messages.json +33 -21
  33. package/extensions/ublock/_locales/br_FR/messages.json +33 -21
  34. package/extensions/ublock/_locales/bs/messages.json +16 -4
  35. package/extensions/ublock/_locales/ca/messages.json +16 -4
  36. package/extensions/ublock/_locales/cs/messages.json +16 -4
  37. package/extensions/ublock/_locales/cv/messages.json +16 -4
  38. package/extensions/ublock/_locales/cy/messages.json +16 -4
  39. package/extensions/ublock/_locales/da/messages.json +21 -9
  40. package/extensions/ublock/_locales/de/messages.json +17 -5
  41. package/extensions/ublock/_locales/el/messages.json +16 -4
  42. package/extensions/ublock/_locales/en/messages.json +16 -4
  43. package/extensions/ublock/_locales/en_GB/messages.json +16 -4
  44. package/extensions/ublock/_locales/eo/messages.json +17 -5
  45. package/extensions/ublock/_locales/es/messages.json +16 -4
  46. package/extensions/ublock/_locales/et/messages.json +16 -4
  47. package/extensions/ublock/_locales/eu/messages.json +16 -4
  48. package/extensions/ublock/_locales/fa/messages.json +24 -12
  49. package/extensions/ublock/_locales/fi/messages.json +16 -4
  50. package/extensions/ublock/_locales/fil/messages.json +16 -4
  51. package/extensions/ublock/_locales/fr/messages.json +16 -4
  52. package/extensions/ublock/_locales/fy/messages.json +16 -4
  53. package/extensions/ublock/_locales/gl/messages.json +16 -4
  54. package/extensions/ublock/_locales/gu/messages.json +16 -4
  55. package/extensions/ublock/_locales/he/messages.json +25 -13
  56. package/extensions/ublock/_locales/hi/messages.json +31 -19
  57. package/extensions/ublock/_locales/hr/messages.json +16 -4
  58. package/extensions/ublock/_locales/hu/messages.json +16 -4
  59. package/extensions/ublock/_locales/hy/messages.json +17 -5
  60. package/extensions/ublock/_locales/id/messages.json +16 -4
  61. package/extensions/ublock/_locales/it/messages.json +17 -5
  62. package/extensions/ublock/_locales/ja/messages.json +16 -4
  63. package/extensions/ublock/_locales/ka/messages.json +16 -4
  64. package/extensions/ublock/_locales/kk/messages.json +16 -4
  65. package/extensions/ublock/_locales/kn/messages.json +74 -62
  66. package/extensions/ublock/_locales/ko/messages.json +16 -4
  67. package/extensions/ublock/_locales/lt/messages.json +23 -11
  68. package/extensions/ublock/_locales/lv/messages.json +16 -4
  69. package/extensions/ublock/_locales/mk/messages.json +16 -4
  70. package/extensions/ublock/_locales/ml/messages.json +19 -7
  71. package/extensions/ublock/_locales/mr/messages.json +16 -4
  72. package/extensions/ublock/_locales/ms/messages.json +16 -4
  73. package/extensions/ublock/_locales/nb/messages.json +16 -4
  74. package/extensions/ublock/_locales/nl/messages.json +16 -4
  75. package/extensions/ublock/_locales/no/messages.json +16 -4
  76. package/extensions/ublock/_locales/oc/messages.json +16 -4
  77. package/extensions/ublock/_locales/pa/messages.json +16 -4
  78. package/extensions/ublock/_locales/pl/messages.json +17 -5
  79. package/extensions/ublock/_locales/pt_BR/messages.json +16 -4
  80. package/extensions/ublock/_locales/pt_PT/messages.json +16 -4
  81. package/extensions/ublock/_locales/ro/messages.json +17 -5
  82. package/extensions/ublock/_locales/ru/messages.json +16 -4
  83. package/extensions/ublock/_locales/si/messages.json +16 -4
  84. package/extensions/ublock/_locales/sk/messages.json +16 -4
  85. package/extensions/ublock/_locales/sl/messages.json +16 -4
  86. package/extensions/ublock/_locales/so/messages.json +16 -4
  87. package/extensions/ublock/_locales/sq/messages.json +16 -4
  88. package/extensions/ublock/_locales/sr/messages.json +16 -4
  89. package/extensions/ublock/_locales/sv/messages.json +20 -8
  90. package/extensions/ublock/_locales/sw/messages.json +16 -4
  91. package/extensions/ublock/_locales/ta/messages.json +16 -4
  92. package/extensions/ublock/_locales/te/messages.json +16 -4
  93. package/extensions/ublock/_locales/th/messages.json +42 -30
  94. package/extensions/ublock/_locales/tr/messages.json +19 -7
  95. package/extensions/ublock/_locales/uk/messages.json +16 -4
  96. package/extensions/ublock/_locales/ur/messages.json +16 -4
  97. package/extensions/ublock/_locales/vi/messages.json +16 -4
  98. package/extensions/ublock/_locales/zh_CN/messages.json +16 -4
  99. package/extensions/ublock/_locales/zh_TW/messages.json +42 -30
  100. package/extensions/ublock/assets/assets.json +95 -78
  101. package/extensions/ublock/assets/resources/scriptlets.js +70 -24
  102. package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +6258 -3453
  103. package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +277 -40
  104. package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +8 -32
  105. package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +107 -12
  106. package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +1160 -954
  107. package/extensions/ublock/assets/ublock/badlists.txt +1 -2
  108. package/extensions/ublock/assets/ublock/badware.min.txt +395 -270
  109. package/extensions/ublock/assets/ublock/filters.min.txt +1176 -1238
  110. package/extensions/ublock/assets/ublock/privacy.min.txt +32 -31
  111. package/extensions/ublock/assets/ublock/quick-fixes.min.txt +120 -110
  112. package/extensions/ublock/assets/ublock/unbreak.min.txt +75 -36
  113. package/extensions/ublock/css/1p-filters.css +2 -1
  114. package/extensions/ublock/css/3p-filters.css +1 -16
  115. package/extensions/ublock/css/advanced-settings.css +1 -0
  116. package/extensions/ublock/css/asset-viewer.css +1 -0
  117. package/extensions/ublock/css/code-viewer.css +1 -0
  118. package/extensions/ublock/css/codemirror.css +37 -10
  119. package/extensions/ublock/css/common.css +36 -2
  120. package/extensions/ublock/css/dashboard.css +9 -3
  121. package/extensions/ublock/css/devtools.css +1 -0
  122. package/extensions/ublock/css/document-blocked.css +3 -3
  123. package/extensions/ublock/css/dom-inspector.css +1 -0
  124. package/extensions/ublock/css/dyna-rules.css +1 -0
  125. package/extensions/ublock/css/epicker-ui.css +76 -66
  126. package/extensions/ublock/css/fa-icons.css +1 -0
  127. package/extensions/ublock/css/logger-ui.css +2 -0
  128. package/extensions/ublock/css/popup-fenix.css +1 -0
  129. package/extensions/ublock/css/whitelist.css +1 -0
  130. package/extensions/ublock/dashboard.html +20 -13
  131. package/extensions/ublock/devtools.html +2 -0
  132. package/extensions/ublock/dyna-rules.html +2 -2
  133. package/extensions/ublock/img/flags-of-the-world/np.png +0 -0
  134. package/extensions/ublock/img/fontawesome/fontawesome-defs.svg +1 -0
  135. package/extensions/ublock/js/1p-filters.js +72 -23
  136. package/extensions/ublock/js/3p-filters.js +71 -25
  137. package/extensions/ublock/js/asset-viewer.js +1 -0
  138. package/extensions/ublock/js/assets.js +83 -89
  139. package/extensions/ublock/js/background.js +20 -27
  140. package/extensions/ublock/js/base64-custom.js +1 -102
  141. package/extensions/ublock/js/benchmarks.js +36 -21
  142. package/extensions/ublock/js/biditrie.js +8 -23
  143. package/extensions/ublock/js/broadcast.js +2 -4
  144. package/extensions/ublock/js/cachestorage.js +594 -396
  145. package/extensions/ublock/js/codemirror/search.js +49 -37
  146. package/extensions/ublock/js/codemirror/ubo-static-filtering.js +233 -215
  147. package/extensions/ublock/js/contentscript-extra.js +31 -1
  148. package/extensions/ublock/js/cosmetic-filtering.js +35 -33
  149. package/extensions/ublock/js/dashboard.js +11 -7
  150. package/extensions/ublock/js/devtools.js +22 -0
  151. package/extensions/ublock/js/dom.js +2 -2
  152. package/extensions/ublock/js/dyna-rules.js +17 -16
  153. package/extensions/ublock/js/epicker-ui.js +41 -16
  154. package/extensions/ublock/js/fa-icons.js +1 -0
  155. package/extensions/ublock/js/hntrie.js +10 -25
  156. package/extensions/ublock/js/i18n.js +15 -15
  157. package/extensions/ublock/js/logger-ui.js +9 -6
  158. package/extensions/ublock/js/messaging.js +51 -26
  159. package/extensions/ublock/js/pagestore.js +21 -23
  160. package/extensions/ublock/js/popup-fenix.js +35 -22
  161. package/extensions/ublock/js/redirect-engine.js +15 -30
  162. package/extensions/ublock/js/reverselookup.js +1 -1
  163. package/extensions/ublock/js/s14e-serializer.js +1405 -0
  164. package/extensions/ublock/js/scriptlet-filtering-core.js +1 -1
  165. package/extensions/ublock/js/scriptlets/epicker.js +27 -18
  166. package/extensions/ublock/js/settings.js +32 -21
  167. package/extensions/ublock/js/start.js +121 -62
  168. package/extensions/ublock/js/static-ext-filtering-db.js +6 -6
  169. package/extensions/ublock/js/static-ext-filtering.js +17 -28
  170. package/extensions/ublock/js/static-filtering-parser.js +26 -4
  171. package/extensions/ublock/js/static-net-filtering.js +69 -168
  172. package/extensions/ublock/js/storage.js +178 -155
  173. package/extensions/ublock/js/traffic.js +11 -7
  174. package/extensions/ublock/js/vapi-background.js +49 -62
  175. package/extensions/ublock/js/vapi-client.js +13 -16
  176. package/extensions/ublock/js/webext.js +10 -2
  177. package/extensions/ublock/js/whitelist.js +27 -25
  178. package/extensions/ublock/lib/publicsuffixlist/publicsuffixlist.js +3 -7
  179. package/extensions/ublock/manifest.json +2 -1
  180. package/extensions/ublock/web_accessible_resources/epicker-ui.html +5 -8
  181. package/extensions/ublock/whitelist.html +3 -4
  182. package/package.json +12 -12
  183. package/scripts/build-function.js +42 -12
  184. package/src/config.ts +3 -4
  185. package/src/http.ts +1 -0
  186. package/src/routes/management/http/active.get.ts +30 -0
  187. package/src/routes/management/tests/management.spec.ts +13 -0
  188. package/src/server.ts +3 -1
  189. package/src/shared/utils/function/handler.ts +5 -2
  190. package/src/types.ts +2 -1
  191. package/static/docs/swagger.json +57 -11
  192. package/static/docs/swagger.min.json +56 -10
  193. package/static/function/client.js +4155 -3350
  194. package/static/function/index.html +33094 -1
  195. package/extensions/ublock/_locales/ku/messages.json +0 -1294
@@ -1,18 +1,48 @@
1
1
  #!/usr/bin/env node
2
+ /* eslint-disable no-undef */
3
+
2
4
  'use strict';
3
5
 
4
6
  import { build } from 'esbuild';
7
+ import fs from 'fs/promises';
8
+ import { join } from 'path';
5
9
  import { polyfillNode } from 'esbuild-plugin-polyfill-node';
6
10
 
7
- build({
8
- bundle: true,
9
- entryPoints: ['src/shared/utils/function/client.ts'],
10
- outfile: 'static/function/client.js',
11
- plugins: [
12
- polyfillNode({
13
- globals: {
14
- process: false,
15
- },
16
- }),
17
- ],
18
- });
11
+ const html = (contents) => `<!DOCTYPE html>
12
+ <html lang="en">
13
+ <head>
14
+ <meta charset="UTF-8">
15
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
16
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
17
+ <title>browserless.io function runner</title>
18
+ <script type="module">
19
+ ${contents}
20
+ </script>
21
+ </head>
22
+ <body>
23
+ </body>
24
+ </html>
25
+ `;
26
+
27
+ const entryPoints = ['src/shared/utils/function/client.ts'];
28
+ const outfile = join(process.cwd(), 'static/function/client.js');
29
+ const htmlLocation = join(process.cwd(), 'static/function/index.html');
30
+
31
+ (async () => {
32
+ await build({
33
+ bundle: true,
34
+ entryPoints,
35
+ outfile,
36
+ plugins: [
37
+ polyfillNode({
38
+ globals: {
39
+ process: false,
40
+ },
41
+ }),
42
+ ],
43
+ });
44
+ const contents = await fs.readFile(outfile, 'utf-8');
45
+ const final = html(contents);
46
+
47
+ await fs.writeFile(htmlLocation, final);
48
+ })();
package/src/config.ts CHANGED
@@ -399,7 +399,7 @@ export class Config extends EventEmitter {
399
399
  : `http://${this.host}:${this.port}`;
400
400
 
401
401
  /**
402
- * Returns the the fully-qualified URL for the
402
+ * Returns the fully-qualified URL for the
403
403
  * external address that browserless might be
404
404
  * running behind *or* the server address if
405
405
  * no external URL is provided.
@@ -416,11 +416,10 @@ export class Config extends EventEmitter {
416
416
  * @param address The fully-qualified URL, eg https://www.example.com/
417
417
  * @returns {string} The address
418
418
  */
419
- public setExternalAddress = (address: string) =>
420
- this.external = address;
419
+ public setExternalAddress = (address: string) => (this.external = address);
421
420
 
422
421
  /**
423
- * Returns the the fully-qualified WebSocket URL for the
422
+ * Returns the fully-qualified WebSocket URL for the
424
423
  * external address that browserless might be
425
424
  * running behind *or* the server address if
426
425
  * no external URL is provided.
package/src/http.ts CHANGED
@@ -124,6 +124,7 @@ export enum HTTPRoutes {
124
124
  }
125
125
 
126
126
  export enum HTTPManagementRoutes {
127
+ active = '/active',
127
128
  config = '/config',
128
129
  metrics = '/metrics',
129
130
  metricsTotal = '/metrics/total',
@@ -0,0 +1,30 @@
1
+ import {
2
+ APITags,
3
+ BrowserlessRoutes,
4
+ HTTPManagementRoutes,
5
+ HTTPRoute,
6
+ Methods,
7
+ Request,
8
+ contentTypes,
9
+ dedent,
10
+ writeResponse,
11
+ } from '@browserless.io/browserless';
12
+ import { ServerResponse } from 'http';
13
+
14
+ export default class ActiveGetRoute extends HTTPRoute {
15
+ name = BrowserlessRoutes.ActiveGetRoute;
16
+ accepts = [contentTypes.any];
17
+ auth = true;
18
+ browser = null;
19
+ concurrency = false;
20
+ contentTypes = [contentTypes.text];
21
+ description = dedent(`
22
+ Returns a simple "204" HTTP code, with no response, indicating that the service itself is up and running.
23
+ Useful for liveliness probes or other external checks.
24
+ `);
25
+ method = Methods.get;
26
+ path = HTTPManagementRoutes.active;
27
+ tags = [APITags.management];
28
+ handler = async (_req: Request, res: ServerResponse): Promise<void> =>
29
+ writeResponse(res, 204, '', contentTypes.text);
30
+ }
@@ -68,4 +68,17 @@ describe('Management APIs', function () {
68
68
  },
69
69
  );
70
70
  });
71
+
72
+ it('allows requests to /active', async () => {
73
+ await start();
74
+
75
+ await fetch('http://localhost:3000/active?token=6R0W53R135510').then(
76
+ async (res) => {
77
+ expect(res.headers.get('content-type')).to.equal(
78
+ 'text/plain; charset=UTF-8',
79
+ );
80
+ expect(res.status).to.equal(204);
81
+ },
82
+ );
83
+ });
71
84
  });
package/src/server.ts CHANGED
@@ -143,7 +143,9 @@ export class HTTPServer extends EventEmitter {
143
143
  const route = await this.router.getRouteForHTTPRequest(req);
144
144
 
145
145
  if (!route) {
146
- this.log(`No matching WebSocket route handler for "${req.parsed.href}"`);
146
+ this.log(
147
+ `No matching HTTP route handler for "${req.method}: ${req.parsed.href}"`,
148
+ );
147
149
  writeResponse(res, 404, 'Not Found');
148
150
  return Promise.resolve();
149
151
  }
@@ -88,7 +88,7 @@ export default (
88
88
  */
89
89
  page.on('request', async (request) => {
90
90
  const requestUrl = request.url();
91
- debug(`/function.js: Page Request: "${requestUrl}"`);
91
+ debug(`Outbound Page Request: "${requestUrl}"`);
92
92
  if (requestUrl.startsWith(functionRequestPath)) {
93
93
  const filename = path.basename(requestUrl);
94
94
  if (filename === functionCodeJS) {
@@ -116,11 +116,11 @@ export default (
116
116
  status: 404,
117
117
  });
118
118
  }
119
+ debug(`Request: "${requestUrl}" no responder found, continuing...`);
119
120
  return request.continue();
120
121
  });
121
122
 
122
123
  page.on('response', (res) => {
123
- debug(`/function.js: Page Response: "${res.url()}"`);
124
124
  if (res.status() !== 200) {
125
125
  debug(`Received a non-200 response for request "${res.url()}"`);
126
126
  }
@@ -144,6 +144,9 @@ export default (
144
144
  import('./' + functionCodeJS),
145
145
  ]);
146
146
  console.log('/function.js: imported successfully.');
147
+ console.log(
148
+ `/function.js: BrowserlessFunctionRunner: ${typeof window.BrowserlessFunctionRunner}`,
149
+ );
147
150
  const helper = new window.BrowserlessFunctionRunner();
148
151
  const options = JSON.parse(serializedOptions);
149
152
  console.log('/function.js: executing puppeteer code.');
package/src/types.ts CHANGED
@@ -231,7 +231,7 @@ abstract class BasicHTTPRoute extends Route {
231
231
  abstract accepts: Array<contentTypes>;
232
232
 
233
233
  /**
234
- * The Content-Types that this route will will respond with, and must match the Accepts
234
+ * The Content-Types that this route will respond with, and must match the Accepts
235
235
  * Header from a client if present. If a request comes in with an Accepts of "application/json"
236
236
  * then the contentTypes here would need to include ["application/json"] in order to not 404.
237
237
  */
@@ -650,6 +650,7 @@ export const BrowserlessWebKitRoutes = {
650
650
  };
651
651
 
652
652
  export const BrowserlessManagementRoutes = {
653
+ ActiveGetRoute: 'ActiveGetRoute',
653
654
  ConfigGetRoute: 'ConfigGetRoute',
654
655
  MetricsGetRoute: 'MetricsGetRoute',
655
656
  MetricsTotalGetRoute: 'MetricsTotalGetRoute',