@browserless.io/browserless 2.3.0-beta-1 → 2.3.0-beta-2

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 (207) hide show
  1. package/README.md +2 -2
  2. package/bin/browserless.js +47 -18
  3. package/bin/scaffold/README.md +50 -0
  4. package/bin/scaffold/src/hello-world.http.ts +2 -1
  5. package/build/browserless.d.ts +3 -5
  6. package/build/browserless.js +17 -11
  7. package/build/browsers/chrome.cdp.js +1 -1
  8. package/build/browsers/chrome.playwright.js +1 -1
  9. package/build/browsers/index.d.ts +1 -0
  10. package/build/browsers/index.js +4 -1
  11. package/build/data/classes.json +1 -1
  12. package/build/data/selectors.json +1 -1
  13. package/build/exports.d.ts +24 -38
  14. package/build/exports.js +25 -44
  15. package/build/limiter.d.ts +2 -1
  16. package/build/limiter.js +6 -3
  17. package/build/routes/chrome/http/content.post.body.json +8 -8
  18. package/build/routes/chrome/http/content.post.d.ts +2 -1
  19. package/build/routes/chrome/http/content.post.js +3 -2
  20. package/build/routes/chrome/http/download.post.body.json +11 -489
  21. package/build/routes/chrome/http/download.post.d.ts +2 -1
  22. package/build/routes/chrome/http/download.post.js +3 -2
  23. package/build/routes/chrome/http/download.post.query.json +6 -69
  24. package/build/routes/chrome/http/download.post.response.json +0 -1
  25. package/build/routes/chrome/http/function.post.body.json +11 -489
  26. package/build/routes/chrome/http/function.post.d.ts +2 -1
  27. package/build/routes/chrome/http/function.post.js +3 -2
  28. package/build/routes/chrome/http/function.post.query.json +6 -69
  29. package/build/routes/chrome/http/function.post.response.json +0 -1
  30. package/build/routes/chrome/http/json-list.get.d.ts +5 -1
  31. package/build/routes/chrome/http/json-list.get.js +5 -1
  32. package/build/routes/chrome/http/json-list.get.response.json +49 -1
  33. package/build/routes/chrome/http/json-new.put.d.ts +5 -1
  34. package/build/routes/chrome/http/json-new.put.js +5 -1
  35. package/build/routes/chrome/http/json-new.put.response.json +41 -1
  36. package/build/routes/chrome/http/json-protocol.get.d.ts +5 -1
  37. package/build/routes/chrome/http/json-protocol.get.js +5 -1
  38. package/build/routes/chrome/http/json-protocol.get.response.json +3 -1
  39. package/build/routes/chrome/http/json-version.get.d.ts +5 -1
  40. package/build/routes/chrome/http/json-version.get.js +5 -1
  41. package/build/routes/chrome/http/json-version.get.response.json +41 -1
  42. package/build/routes/chrome/http/pdf.post.body.json +153 -9
  43. package/build/routes/chrome/http/pdf.post.d.ts +2 -1
  44. package/build/routes/chrome/http/pdf.post.js +3 -2
  45. package/build/routes/chrome/http/pdf.post.query.json +6 -69
  46. package/build/routes/chrome/http/performance.post.body.json +10 -494
  47. package/build/routes/chrome/http/performance.post.d.ts +2 -1
  48. package/build/routes/chrome/http/performance.post.js +3 -2
  49. package/build/routes/chrome/http/performance.post.query.json +6 -69
  50. package/build/routes/chrome/http/performance.post.response.json +3 -1
  51. package/build/routes/chrome/http/scrape.post.body.json +56 -9
  52. package/build/routes/chrome/http/scrape.post.d.ts +2 -1
  53. package/build/routes/chrome/http/scrape.post.js +3 -2
  54. package/build/routes/chrome/http/scrape.post.response.json +305 -1
  55. package/build/routes/chrome/http/screenshot.post.body.json +99 -9
  56. package/build/routes/chrome/http/screenshot.post.d.ts +2 -1
  57. package/build/routes/chrome/http/screenshot.post.js +3 -2
  58. package/build/routes/chrome/http/screenshot.post.query.json +6 -69
  59. package/build/routes/chrome/ws/browser.d.ts +2 -1
  60. package/build/routes/chrome/ws/browser.js +3 -2
  61. package/build/routes/chrome/ws/browser.query.json +6 -69
  62. package/build/routes/chrome/ws/cdp.d.ts +2 -1
  63. package/build/routes/chrome/ws/cdp.js +3 -2
  64. package/build/routes/chrome/ws/cdp.query.json +6 -69
  65. package/build/routes/chrome/ws/page.d.ts +3 -2
  66. package/build/routes/chrome/ws/page.js +3 -2
  67. package/build/routes/chrome/ws/page.query.json +6 -69
  68. package/build/routes/chrome/ws/playwright.d.ts +1 -0
  69. package/build/routes/chrome/ws/playwright.js +2 -1
  70. package/build/routes/chrome/ws/playwright.query.json +7 -90
  71. package/build/routes/chromium/http/content.post.body.json +8 -8
  72. package/build/routes/chromium/http/download.post.body.json +11 -489
  73. package/build/routes/chromium/http/download.post.query.json +6 -69
  74. package/build/routes/chromium/http/download.post.response.json +0 -1
  75. package/build/routes/chromium/http/function.post.body.json +11 -489
  76. package/build/routes/chromium/http/function.post.query.json +6 -69
  77. package/build/routes/chromium/http/function.post.response.json +0 -1
  78. package/build/routes/chromium/http/json-list.get.response.json +49 -1
  79. package/build/routes/chromium/http/json-new.put.response.json +41 -1
  80. package/build/routes/chromium/http/json-protocol.get.response.json +3 -1
  81. package/build/routes/chromium/http/json-version.get.response.json +41 -1
  82. package/build/routes/chromium/http/pdf.post.body.json +153 -9
  83. package/build/routes/chromium/http/pdf.post.query.json +6 -69
  84. package/build/routes/chromium/http/performance.post.body.json +10 -494
  85. package/build/routes/chromium/http/performance.post.query.json +6 -69
  86. package/build/routes/chromium/http/performance.post.response.json +3 -1
  87. package/build/routes/chromium/http/scrape.post.body.json +56 -9
  88. package/build/routes/chromium/http/scrape.post.response.json +305 -1
  89. package/build/routes/chromium/http/screenshot.post.body.json +99 -9
  90. package/build/routes/chromium/http/screenshot.post.query.json +6 -69
  91. package/build/routes/chromium/ws/browser.query.json +6 -69
  92. package/build/routes/chromium/ws/cdp.query.json +6 -69
  93. package/build/routes/chromium/ws/page.query.json +6 -69
  94. package/build/routes/chromium/ws/playwright.query.json +7 -90
  95. package/build/routes/firefox/ws/playwright.d.ts +2 -1
  96. package/build/routes/firefox/ws/playwright.js +3 -2
  97. package/build/routes/firefox/ws/playwright.query.json +30 -115
  98. package/build/routes/management/http/config.get.d.ts +1 -0
  99. package/build/routes/management/http/config.get.js +2 -1
  100. package/build/routes/management/http/config.get.response.json +104 -1
  101. package/build/routes/management/http/metrics-total.get.d.ts +1 -0
  102. package/build/routes/management/http/metrics-total.get.js +2 -1
  103. package/build/routes/management/http/metrics-total.get.response.json +69 -1
  104. package/build/routes/management/http/metrics.get.d.ts +1 -0
  105. package/build/routes/management/http/metrics.get.js +2 -1
  106. package/build/routes/management/http/metrics.get.response.json +91 -1
  107. package/build/routes/management/http/sessions.get.d.ts +1 -0
  108. package/build/routes/management/http/sessions.get.js +2 -1
  109. package/build/routes/management/http/sessions.get.response.json +232 -1
  110. package/build/routes/management/http/static.get.d.ts +1 -0
  111. package/build/routes/management/http/static.get.js +2 -1
  112. package/build/routes/webkit/ws/playwright.d.ts +2 -1
  113. package/build/routes/webkit/ws/playwright.js +3 -2
  114. package/build/routes/webkit/ws/playwright.query.json +7 -90
  115. package/build/shared/browser.ws.d.ts +2 -1
  116. package/build/shared/browser.ws.js +3 -2
  117. package/build/shared/chromium.playwright.ws.d.ts +2 -1
  118. package/build/shared/chromium.playwright.ws.js +3 -2
  119. package/build/shared/chromium.ws.d.ts +2 -1
  120. package/build/shared/chromium.ws.js +3 -2
  121. package/build/shared/content.http.d.ts +2 -1
  122. package/build/shared/content.http.js +3 -2
  123. package/build/shared/download.http.d.ts +2 -1
  124. package/build/shared/download.http.js +3 -2
  125. package/build/shared/function.http.d.ts +2 -1
  126. package/build/shared/function.http.js +3 -2
  127. package/build/shared/json-list.http.d.ts +2 -1
  128. package/build/shared/json-list.http.js +3 -2
  129. package/build/shared/json-new.http.d.ts +2 -1
  130. package/build/shared/json-new.http.js +3 -2
  131. package/build/shared/json-protocol.http.d.ts +2 -1
  132. package/build/shared/json-protocol.http.js +3 -2
  133. package/build/shared/json-version.http.d.ts +2 -1
  134. package/build/shared/json-version.http.js +3 -2
  135. package/build/shared/page.ws.d.ts +2 -1
  136. package/build/shared/page.ws.js +3 -2
  137. package/build/shared/pdf.http.d.ts +2 -1
  138. package/build/shared/pdf.http.js +3 -2
  139. package/build/shared/performance.http.d.ts +1 -0
  140. package/build/shared/performance.http.js +2 -1
  141. package/build/shared/scrape.http.d.ts +2 -1
  142. package/build/shared/scrape.http.js +3 -2
  143. package/build/shared/screenshot.http.d.ts +1 -0
  144. package/build/shared/screenshot.http.js +2 -1
  145. package/build/types.d.ts +91 -0
  146. package/build/types.js +54 -0
  147. package/build/utils.d.ts +1 -1
  148. package/build/utils.js +11 -6
  149. package/docker/chrome/Dockerfile +0 -2
  150. package/docker/chromium/Dockerfile +1 -4
  151. package/docker/firefox/Dockerfile +1 -4
  152. package/docker/multi/Dockerfile +2 -6
  153. package/docker/webkit/Dockerfile +1 -4
  154. package/package.json +11 -10
  155. package/scripts/build-open-api.js +150 -141
  156. package/scripts/build-schemas.js +3 -2
  157. package/src/browserless.ts +43 -30
  158. package/src/browsers/chrome.cdp.ts +1 -1
  159. package/src/browsers/chrome.playwright.ts +1 -1
  160. package/src/browsers/index.ts +5 -1
  161. package/src/exports.ts +25 -49
  162. package/src/limiter.ts +7 -3
  163. package/src/routes/chrome/http/content.post.ts +7 -2
  164. package/src/routes/chrome/http/download.post.ts +7 -2
  165. package/src/routes/chrome/http/function.post.ts +7 -2
  166. package/src/routes/chrome/http/json-list.get.ts +7 -1
  167. package/src/routes/chrome/http/json-new.put.ts +7 -1
  168. package/src/routes/chrome/http/json-protocol.get.ts +7 -1
  169. package/src/routes/chrome/http/json-version.get.ts +7 -1
  170. package/src/routes/chrome/http/pdf.post.ts +7 -2
  171. package/src/routes/chrome/http/performance.post.ts +7 -2
  172. package/src/routes/chrome/http/scrape.post.ts +7 -2
  173. package/src/routes/chrome/http/screenshot.post.ts +7 -2
  174. package/src/routes/chrome/ws/browser.ts +3 -2
  175. package/src/routes/chrome/ws/cdp.ts +7 -2
  176. package/src/routes/chrome/ws/page.ts +3 -2
  177. package/src/routes/chrome/ws/playwright.ts +6 -1
  178. package/src/routes/firefox/ws/playwright.ts +3 -1
  179. package/src/routes/management/http/config.get.ts +2 -0
  180. package/src/routes/management/http/metrics-total.get.ts +2 -0
  181. package/src/routes/management/http/metrics.get.ts +2 -0
  182. package/src/routes/management/http/sessions.get.ts +2 -0
  183. package/src/routes/management/http/static.get.ts +2 -0
  184. package/src/routes/webkit/ws/playwright.ts +3 -1
  185. package/src/shared/browser.ws.ts +3 -1
  186. package/src/shared/chromium.playwright.ws.ts +3 -1
  187. package/src/shared/chromium.ws.ts +3 -1
  188. package/src/shared/content.http.ts +3 -1
  189. package/src/shared/download.http.ts +3 -1
  190. package/src/shared/function.http.ts +3 -1
  191. package/src/shared/json-list.http.ts +3 -1
  192. package/src/shared/json-new.http.ts +3 -1
  193. package/src/shared/json-protocol.http.ts +3 -1
  194. package/src/shared/json-version.http.ts +3 -1
  195. package/src/shared/page.ws.ts +3 -1
  196. package/src/shared/pdf.http.ts +3 -1
  197. package/src/shared/performance.http.ts +2 -0
  198. package/src/shared/scrape.http.ts +3 -1
  199. package/src/shared/screenshot.http.ts +2 -0
  200. package/src/types.ts +66 -0
  201. package/src/utils.ts +13 -7
  202. package/static/docs/swagger.json +2511 -1520
  203. package/static/docs/swagger.min.json +6697 -0
  204. package/static/function/client.js +323 -323
  205. package/build/exports.core.d.ts +0 -24
  206. package/build/exports.core.js +0 -26
  207. package/src/exports.core.ts +0 -26
@@ -1,6 +1,7 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, writeResponse, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, writeResponse, } from '@browserless.io/browserless';
2
2
  import { Stream } from 'stream';
3
- export default class PDFPost extends BrowserHTTPRoute {
3
+ export default class ChromiumPDFPostRoute extends BrowserHTTPRoute {
4
+ name = BrowserlessRoutes.ChromiumPDFPostRoute;
4
5
  accepts = [contentTypes.json];
5
6
  auth = true;
6
7
  browser = ChromiumCDP;
@@ -16,6 +16,7 @@ export interface QuerySchema extends SystemQueryParameters {
16
16
  */
17
17
  export type ResponseSchema = object;
18
18
  export default class PerformancePost extends BrowserHTTPRoute {
19
+ name: string;
19
20
  accepts: contentTypes[];
20
21
  auth: boolean;
21
22
  browser: typeof ChromiumCDP;
@@ -1,6 +1,7 @@
1
- import { APITags, BrowserHTTPRoute, ChromiumCDP, HTTPRoutes, Methods, contentTypes, jsonResponse, } from '@browserless.io/browserless';
1
+ import { APITags, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, contentTypes, jsonResponse, } from '@browserless.io/browserless';
2
2
  import main from './utils/performance/main.js';
3
3
  export default class PerformancePost extends BrowserHTTPRoute {
4
+ name = BrowserlessRoutes.ChromiumPerformancePostRoute;
4
5
  accepts = [contentTypes.json];
5
6
  auth = true;
6
7
  browser = ChromiumCDP;
@@ -104,7 +104,8 @@ export interface ResponseSchema {
104
104
  screenshot: string | null;
105
105
  } | null;
106
106
  }
107
- export default class ScrapePost extends BrowserHTTPRoute {
107
+ export default class ChromiumScrapePostRoute extends BrowserHTTPRoute {
108
+ name: string;
108
109
  accepts: contentTypes[];
109
110
  auth: boolean;
110
111
  browser: typeof ChromiumCDP;
@@ -1,4 +1,4 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, ChromiumCDP, HTTPRoutes, Methods, Timeout, bestAttemptCatch, contentTypes, debugScreenshotOpts, dedent, jsonResponse, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, Timeout, bestAttemptCatch, contentTypes, debugScreenshotOpts, dedent, jsonResponse, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
2
2
  const scrape = async (elements) => {
3
3
  const wait = (selector, timeout = 30000) => {
4
4
  return new Promise((resolve, reject) => {
@@ -39,7 +39,8 @@ const scrape = async (elements) => {
39
39
  };
40
40
  });
41
41
  };
42
- export default class ScrapePost extends BrowserHTTPRoute {
42
+ export default class ChromiumScrapePostRoute extends BrowserHTTPRoute {
43
+ name = BrowserlessRoutes.ChromiumScrapePostRoute;
43
44
  accepts = [contentTypes.json];
44
45
  auth = true;
45
46
  browser = ChromiumCDP;
@@ -36,6 +36,7 @@ export interface BodySchema {
36
36
  waitForTimeout?: number;
37
37
  }
38
38
  export default class ScreenshotPost extends BrowserHTTPRoute {
39
+ name: string;
39
40
  accepts: contentTypes[];
40
41
  auth: boolean;
41
42
  browser: typeof ChromiumCDP;
@@ -1,6 +1,7 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, scrollThroughPage, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, scrollThroughPage, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
2
2
  import Stream from 'stream';
3
3
  export default class ScreenshotPost extends BrowserHTTPRoute {
4
+ name = BrowserlessRoutes.ChromiumScreenshotPostRoute;
4
5
  accepts = [contentTypes.json];
5
6
  auth = true;
6
7
  browser = ChromiumCDP;
package/build/types.d.ts CHANGED
@@ -56,6 +56,11 @@ declare abstract class Route {
56
56
  protected _metrics: Browserless['metrics'];
57
57
  protected _monitoring: Browserless['monitoring'];
58
58
  constructor(_browserManager: Browserless['browserManager'], _config: Browserless['config'], _fileSystem: Browserless['fileSystem'], _debug: Browserless['debug'], _metrics: Browserless['metrics'], _monitoring: Browserless['monitoring']);
59
+ /**
60
+ * A unique name to identify this route. Used in downstream
61
+ * SDKs to potentially remove or disable.
62
+ */
63
+ abstract name: string;
59
64
  /**
60
65
  * A boolean, or a function that returns a boolean, on
61
66
  * whether the route requires an API token to access.
@@ -472,4 +477,90 @@ export interface CDPJSONPayload {
472
477
  */
473
478
  webSocketDebuggerUrl: string;
474
479
  }
480
+ export declare const BrowserlessChromeRoutes: {
481
+ ChromeBrowserWebSocketRoute: string;
482
+ ChromeCDPWebSocketRoute: string;
483
+ ChromeContentPostRoute: string;
484
+ ChromeDownloadPostRoute: string;
485
+ ChromeFunctionPostRoute: string;
486
+ ChromeJSONListGetRoute: string;
487
+ ChromeJSONNewPutRoute: string;
488
+ ChromeJSONProtocolGetRoute: string;
489
+ ChromeJSONVersionGetRoute: string;
490
+ ChromePDFPostRoute: string;
491
+ ChromePageWebSocketRoute: string;
492
+ ChromePerformancePostRoute: string;
493
+ ChromePlaywrightWebSocketRoute: string;
494
+ ChromeScrapePostRoute: string;
495
+ ChromeScreenshotPostRoute: string;
496
+ };
497
+ export declare const BrowserlessChromiumRoutes: {
498
+ ChromiumBrowserWebSocketRoute: string;
499
+ ChromiumCDPWebSocketRoute: string;
500
+ ChromiumContentPostRoute: string;
501
+ ChromiumDownloadPostRoute: string;
502
+ ChromiumFunctionPostRoute: string;
503
+ ChromiumJSONListGetRoute: string;
504
+ ChromiumJSONNewPutRoute: string;
505
+ ChromiumJSONProtocolGetRoute: string;
506
+ ChromiumJSONVersionGetRoute: string;
507
+ ChromiumPDFPostRoute: string;
508
+ ChromiumPageWebSocketRoute: string;
509
+ ChromiumPerformancePostRoute: string;
510
+ ChromiumPlaywrightWebSocketRoute: string;
511
+ ChromiumScrapePostRoute: string;
512
+ ChromiumScreenshotPostRoute: string;
513
+ };
514
+ export declare const BrowserlessFirefoxRoutes: {
515
+ FirefoxPlaywrightWebSocketRoute: string;
516
+ };
517
+ export declare const BrowserlessWebKitRoutes: {
518
+ WebKitPlaywrightWebSocketRoute: string;
519
+ };
520
+ export declare const BrowserlessManagementRoutes: {
521
+ ConfigGetRoute: string;
522
+ MetricsGetRoute: string;
523
+ MetricsTotalGetRoute: string;
524
+ SessionsGetRoute: string;
525
+ StaticGetRoute: string;
526
+ };
527
+ export declare const BrowserlessRoutes: {
528
+ ConfigGetRoute: string;
529
+ MetricsGetRoute: string;
530
+ MetricsTotalGetRoute: string;
531
+ SessionsGetRoute: string;
532
+ StaticGetRoute: string;
533
+ WebKitPlaywrightWebSocketRoute: string;
534
+ FirefoxPlaywrightWebSocketRoute: string;
535
+ ChromiumBrowserWebSocketRoute: string;
536
+ ChromiumCDPWebSocketRoute: string;
537
+ ChromiumContentPostRoute: string;
538
+ ChromiumDownloadPostRoute: string;
539
+ ChromiumFunctionPostRoute: string;
540
+ ChromiumJSONListGetRoute: string;
541
+ ChromiumJSONNewPutRoute: string;
542
+ ChromiumJSONProtocolGetRoute: string;
543
+ ChromiumJSONVersionGetRoute: string;
544
+ ChromiumPDFPostRoute: string;
545
+ ChromiumPageWebSocketRoute: string;
546
+ ChromiumPerformancePostRoute: string;
547
+ ChromiumPlaywrightWebSocketRoute: string;
548
+ ChromiumScrapePostRoute: string;
549
+ ChromiumScreenshotPostRoute: string;
550
+ ChromeBrowserWebSocketRoute: string;
551
+ ChromeCDPWebSocketRoute: string;
552
+ ChromeContentPostRoute: string;
553
+ ChromeDownloadPostRoute: string;
554
+ ChromeFunctionPostRoute: string;
555
+ ChromeJSONListGetRoute: string;
556
+ ChromeJSONNewPutRoute: string;
557
+ ChromeJSONProtocolGetRoute: string;
558
+ ChromeJSONVersionGetRoute: string;
559
+ ChromePDFPostRoute: string;
560
+ ChromePageWebSocketRoute: string;
561
+ ChromePerformancePostRoute: string;
562
+ ChromePlaywrightWebSocketRoute: string;
563
+ ChromeScrapePostRoute: string;
564
+ ChromeScreenshotPostRoute: string;
565
+ };
475
566
  export {};
package/build/types.js CHANGED
@@ -139,3 +139,57 @@ export const debugScreenshotOpts = {
139
139
  quality: 20,
140
140
  type: 'jpeg',
141
141
  };
142
+ export const BrowserlessChromeRoutes = {
143
+ ChromeBrowserWebSocketRoute: 'ChromeBrowserWebSocketRoute',
144
+ ChromeCDPWebSocketRoute: 'ChromeCDPWebSocketRoute',
145
+ ChromeContentPostRoute: 'ChromeContentPostRoute',
146
+ ChromeDownloadPostRoute: 'ChromeDownloadPostRoute',
147
+ ChromeFunctionPostRoute: 'ChromeFunctionPostRoute',
148
+ ChromeJSONListGetRoute: 'ChromeJSONListGetRoute',
149
+ ChromeJSONNewPutRoute: 'ChromeJSONNewPutRoute',
150
+ ChromeJSONProtocolGetRoute: 'ChromeJSONProtocolGetRoute',
151
+ ChromeJSONVersionGetRoute: 'ChromeJSONVersionGetRoute',
152
+ ChromePDFPostRoute: 'ChromePDFPostRoute',
153
+ ChromePageWebSocketRoute: 'ChromePageWebSocketRoute',
154
+ ChromePerformancePostRoute: 'ChromePerformancePostRoute',
155
+ ChromePlaywrightWebSocketRoute: 'ChromePlaywrightWebSocketRoute',
156
+ ChromeScrapePostRoute: 'ChromeScrapePostRoute',
157
+ ChromeScreenshotPostRoute: 'ChromeScreenshotPostRoute',
158
+ };
159
+ export const BrowserlessChromiumRoutes = {
160
+ ChromiumBrowserWebSocketRoute: 'ChromiumBrowserWebSocketRoute',
161
+ ChromiumCDPWebSocketRoute: 'ChromiumCDPWebSocketRoute',
162
+ ChromiumContentPostRoute: 'ChromiumContentPostRoute',
163
+ ChromiumDownloadPostRoute: 'ChromiumDownloadPostRoute',
164
+ ChromiumFunctionPostRoute: 'ChromiumFunctionPostRoute',
165
+ ChromiumJSONListGetRoute: 'ChromiumJSONListGetRoute',
166
+ ChromiumJSONNewPutRoute: 'ChromiumJSONNewPutRoute',
167
+ ChromiumJSONProtocolGetRoute: 'ChromiumJSONProtocolGetRoute',
168
+ ChromiumJSONVersionGetRoute: 'ChromiumJSONVersionGetRoute',
169
+ ChromiumPDFPostRoute: 'ChromiumPDFPostRoute',
170
+ ChromiumPageWebSocketRoute: 'ChromiumPageWebSocketRoute',
171
+ ChromiumPerformancePostRoute: 'ChromiumPerformancePostRoute',
172
+ ChromiumPlaywrightWebSocketRoute: 'ChromiumPlaywrightWebSocketRoute',
173
+ ChromiumScrapePostRoute: 'ChromiumScrapePostRoute',
174
+ ChromiumScreenshotPostRoute: 'ChromiumScreenshotPostRoute',
175
+ };
176
+ export const BrowserlessFirefoxRoutes = {
177
+ FirefoxPlaywrightWebSocketRoute: 'FirefoxPlaywrightWebSocketRoute',
178
+ };
179
+ export const BrowserlessWebKitRoutes = {
180
+ WebKitPlaywrightWebSocketRoute: 'WebKitPlaywrightWebSocketRoute',
181
+ };
182
+ export const BrowserlessManagementRoutes = {
183
+ ConfigGetRoute: 'ConfigGetRoute',
184
+ MetricsGetRoute: 'MetricsGetRoute',
185
+ MetricsTotalGetRoute: 'MetricsTotalGetRoute',
186
+ SessionsGetRoute: 'SessionsGetRoute',
187
+ StaticGetRoute: 'StaticGetRoute',
188
+ };
189
+ export const BrowserlessRoutes = {
190
+ ...BrowserlessChromeRoutes,
191
+ ...BrowserlessChromiumRoutes,
192
+ ...BrowserlessFirefoxRoutes,
193
+ ...BrowserlessWebKitRoutes,
194
+ ...BrowserlessManagementRoutes,
195
+ };
package/build/utils.d.ts CHANGED
@@ -38,7 +38,7 @@ export declare const readBody: (req: Request) => Promise<ReturnType<typeof safeP
38
38
  * Lists the path of Chromes (stable) install since
39
39
  * no library or utility out there does it including playwright.
40
40
  */
41
- export declare const chromeExecutablePath: string;
41
+ export declare const chromeExecutablePath: () => string;
42
42
  export declare const getRouteFiles: (config: Config) => Promise<string[][]>;
43
43
  export declare const make404: (...messages: string[]) => string;
44
44
  /**
package/build/utils.js CHANGED
@@ -203,11 +203,16 @@ export const readBody = async (req) => {
203
203
  * Lists the path of Chromes (stable) install since
204
204
  * no library or utility out there does it including playwright.
205
205
  */
206
- export const chromeExecutablePath = process.platform === 'win32'
207
- ? `%ProgramFiles%\\Google\\Chrome\\Application\\chrome.exe`
208
- : process.platform === 'darwin'
209
- ? '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
210
- : '/usr/bin/google-chrome-stable';
206
+ export const chromeExecutablePath = () => {
207
+ if (process.platform === 'win32') {
208
+ // Windows always includes the ProgramFiles variable in the environment
209
+ return `${process.env['ProgramFiles']}\\Google\\Chrome\\Application\\chrome.exe`;
210
+ }
211
+ if (process.platform === 'darwin') {
212
+ return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
213
+ }
214
+ return '/usr/bin/google-chrome-stable';
215
+ };
211
216
  export const getRouteFiles = async (config) => {
212
217
  const routes = config.getRoutes();
213
218
  const foundRoutes = await fs
@@ -300,7 +305,7 @@ export const availableBrowsers = Promise.all([
300
305
  exists(playwright.chromium.executablePath()),
301
306
  exists(playwright.firefox.executablePath()),
302
307
  exists(playwright.webkit.executablePath()),
303
- exists(chromeExecutablePath),
308
+ exists(chromeExecutablePath()),
304
309
  ]).then(([chromiumExists, firefoxExists, webkitExists, chromeExists]) => {
305
310
  const availableBrowsers = [];
306
311
  if (chromiumExists) {
@@ -4,8 +4,6 @@ LABEL org.opencontainers.image.source https://github.com/browserless/browserless
4
4
 
5
5
  COPY fonts/* /usr/share/fonts/truetype/
6
6
  COPY src src/
7
- # Only use core as exports since routes are lazy loaded and not always present
8
- COPY src/exports.core.ts src/exports.ts
9
7
  RUN rm -r src/routes/
10
8
  COPY src/routes/management src/routes/management/
11
9
  COPY src/routes/chrome src/routes/chrome/
@@ -4,8 +4,6 @@ LABEL org.opencontainers.image.source https://github.com/browserless/browserless
4
4
 
5
5
  COPY fonts/* /usr/share/fonts/truetype/
6
6
  COPY src src/
7
- # Only use core as exports since routes are lazy loaded and not always present
8
- COPY src/exports.core.ts src/exports.ts
9
7
  RUN rm -r src/routes/
10
8
  COPY src/routes/management src/routes/management/
11
9
  COPY src/routes/chromium src/routes/chromium/
@@ -28,8 +26,7 @@ RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula sele
28
26
  fonts-ubuntu \
29
27
  fonts-wqy-zenhei
30
28
 
31
- RUN npx --yes playwright install chromium &&\
32
- npx --yes playwright install-deps chromium &&\
29
+ RUN ./node_modules/.bin/playwright-core install --with-deps chromium &&\
33
30
  npm run build &&\
34
31
  npm run build:function &&\
35
32
  npm prune production &&\
@@ -4,8 +4,6 @@ LABEL org.opencontainers.image.source https://github.com/browserless/browserless
4
4
 
5
5
  COPY fonts/* /usr/share/fonts/truetype/
6
6
  COPY src src/
7
- # Only use core as exports since routes are lazy loaded and not always present
8
- COPY src/exports.core.ts src/exports.ts
9
7
  RUN rm -r src/routes/
10
8
  COPY src/routes/management src/routes/management/
11
9
  COPY src/routes/firefox src/routes/firefox/
@@ -28,8 +26,7 @@ RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula sele
28
26
  fonts-ubuntu \
29
27
  fonts-wqy-zenhei
30
28
 
31
- RUN npx --yes playwright install firefox &&\
32
- npx --yes playwright install-deps firefox &&\
29
+ RUN ./node_modules/.bin/playwright-core install --with-deps firefox &&\
33
30
  npm run build &&\
34
31
  npm prune production &&\
35
32
  chown -R blessuser:blessuser $APP_DIR &&\
@@ -7,8 +7,6 @@ ENV TARGETPLATFORM=${TARGETPLATFORM}
7
7
 
8
8
  COPY fonts/* /usr/share/fonts/truetype/
9
9
  COPY src src/
10
- # Only use core as exports since routes are lazy loaded and not always present
11
- COPY src/exports.core.ts src/exports.ts
12
10
 
13
11
  RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections &&\
14
12
  apt-get -y -qq install software-properties-common &&\
@@ -31,14 +29,12 @@ RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula sele
31
29
  # Chrome stable is only supported on non-ARM builds
32
30
  # so it's installation is conditional on whether or not amd64
33
31
  RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
34
- npx --yes playwright install-deps chrome &&\
35
- npx --yes playwright install chrome; \
32
+ ./node_modules/.bin/playwright-core install --with-deps chrome; \
36
33
  else \
37
34
  rm -rf ./src/routes/chrome; \
38
35
  fi
39
36
 
40
- RUN npx --yes playwright install chromium firefox webkit &&\
41
- npx --yes playwright install-deps chromium firefox webkit &&\
37
+ RUN ./node_modules/.bin/playwright-core install --with-deps chromium firefox webkit &&\
42
38
  npm run build &&\
43
39
  npm run build:function &&\
44
40
  npm prune production &&\
@@ -5,8 +5,6 @@ LABEL org.opencontainers.image.source https://github.com/browserless/browserless
5
5
  # Install Fonts
6
6
  COPY fonts/* /usr/share/fonts/truetype/
7
7
  COPY src src/
8
- # Only use core as exports since routes are lazy loaded and not always present
9
- COPY src/exports.core.ts src/exports.ts
10
8
  RUN rm -r src/routes/
11
9
  COPY src/routes/management src/routes/management/
12
10
  COPY src/routes/webkit src/routes/webkit/
@@ -29,8 +27,7 @@ RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula sele
29
27
  fonts-ubuntu \
30
28
  fonts-wqy-zenhei
31
29
 
32
- RUN npx --yes playwright install webkit &&\
33
- npx --yes playwright install-deps webkit &&\
30
+ RUN ./node_modules/.bin/playwright-core install --with-deps webkit &&\
34
31
  npm run build &&\
35
32
  npm prune production &&\
36
33
  chown -R blessuser:blessuser $APP_DIR &&\
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browserless.io/browserless",
3
- "version": "2.3.0-beta-1",
3
+ "version": "2.3.0-beta-2",
4
4
  "license": "SSPL",
5
5
  "description": "The browserless platform",
6
6
  "author": "browserless.io",
@@ -30,7 +30,8 @@
30
30
  "lint": "eslint . --ext .ts --fix",
31
31
  "prepack": "npm run build:dev",
32
32
  "prettier": "prettier '{src,functions,scripts,bin,external,bin}/**/*.{js,ts,json}' --log-level error --write",
33
- "test": "cross-env DEBUG=quiet mocha"
33
+ "test": "cross-env DEBUG=quiet mocha",
34
+ "start": "env-cmd -f .env node build"
34
35
  },
35
36
  "files": [
36
37
  "assets/*",
@@ -56,32 +57,32 @@
56
57
  "http-proxy": "^1.18.1",
57
58
  "lighthouse": "^11.1.0",
58
59
  "micromatch": "^4.0.4",
59
- "playwright-core": "^1.41.2",
60
- "puppeteer-core": "^22.1.0",
60
+ "playwright-core": "^1.42.0",
61
+ "puppeteer-core": "^22.3.0",
61
62
  "puppeteer-extra": "^3.3.6",
62
63
  "puppeteer-extra-plugin-stealth": "^2.11.2",
63
64
  "queue": "^7.0.0",
64
65
  "systeminformation": "^5.22.0"
65
66
  },
66
67
  "optionalDependencies": {
67
- "@types/chai": "^4.3.11",
68
+ "@types/chai": "^4.3.12",
68
69
  "@types/debug": "^4.1.12",
69
70
  "@types/gradient-string": "^1.1.5",
70
71
  "@types/http-proxy": "^1.17.14",
71
72
  "@types/micromatch": "^4.0.6",
72
73
  "@types/mocha": "^10.0.6",
73
- "@types/node": "^20.11.19",
74
+ "@types/node": "^20.11.21",
74
75
  "@types/sinon": "^17.0.3",
75
- "@typescript-eslint/eslint-plugin": "^7.0.0",
76
- "@typescript-eslint/parser": "^6.21.0",
76
+ "@typescript-eslint/eslint-plugin": "^7.1.0",
77
+ "@typescript-eslint/parser": "^7.1.0",
77
78
  "assert": "^2.0.0",
78
79
  "chai": "^5.1.0",
79
80
  "cross-env": "^7.0.3",
80
81
  "env-cmd": "^10.1.0",
81
82
  "esbuild": "^0.20.1",
82
83
  "esbuild-plugin-polyfill-node": "^0.3.0",
83
- "eslint": "^8.56.0",
84
- "eslint-plugin-typescript-sort-keys": "^3.1.0",
84
+ "eslint": "^8.57.0",
85
+ "eslint-plugin-typescript-sort-keys": "^3.2.0",
85
86
  "extract-zip": "^2.0.1",
86
87
  "marked": "^12.0.0",
87
88
  "mocha": "^10.3.0",