@browserless.io/browserless 2.2.0 → 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 (159) hide show
  1. package/README.md +2 -2
  2. package/bin/browserless.js +67 -27
  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 -0
  6. package/build/browserless.js +43 -19
  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.js +1 -2
  14. package/build/limiter.d.ts +2 -1
  15. package/build/limiter.js +6 -3
  16. package/build/routes/chrome/http/content.post.body.json +8 -8
  17. package/build/routes/chrome/http/content.post.d.ts +2 -1
  18. package/build/routes/chrome/http/content.post.js +3 -2
  19. package/build/routes/chrome/http/download.post.d.ts +2 -1
  20. package/build/routes/chrome/http/download.post.js +3 -2
  21. package/build/routes/chrome/http/function.post.d.ts +2 -1
  22. package/build/routes/chrome/http/function.post.js +3 -2
  23. package/build/routes/chrome/http/json-list.get.d.ts +5 -1
  24. package/build/routes/chrome/http/json-list.get.js +5 -1
  25. package/build/routes/chrome/http/json-new.put.d.ts +5 -1
  26. package/build/routes/chrome/http/json-new.put.js +5 -1
  27. package/build/routes/chrome/http/json-protocol.get.d.ts +5 -1
  28. package/build/routes/chrome/http/json-protocol.get.js +5 -1
  29. package/build/routes/chrome/http/json-version.get.d.ts +5 -1
  30. package/build/routes/chrome/http/json-version.get.js +5 -1
  31. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  32. package/build/routes/chrome/http/pdf.post.d.ts +2 -1
  33. package/build/routes/chrome/http/pdf.post.js +3 -2
  34. package/build/routes/chrome/http/performance.post.d.ts +2 -1
  35. package/build/routes/chrome/http/performance.post.js +3 -2
  36. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  37. package/build/routes/chrome/http/scrape.post.d.ts +2 -1
  38. package/build/routes/chrome/http/scrape.post.js +3 -2
  39. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  40. package/build/routes/chrome/http/screenshot.post.d.ts +2 -1
  41. package/build/routes/chrome/http/screenshot.post.js +3 -2
  42. package/build/routes/chrome/ws/browser.d.ts +2 -1
  43. package/build/routes/chrome/ws/browser.js +3 -2
  44. package/build/routes/chrome/ws/cdp.d.ts +2 -1
  45. package/build/routes/chrome/ws/cdp.js +3 -2
  46. package/build/routes/chrome/ws/page.d.ts +3 -2
  47. package/build/routes/chrome/ws/page.js +3 -2
  48. package/build/routes/chrome/ws/playwright.d.ts +1 -0
  49. package/build/routes/chrome/ws/playwright.js +2 -1
  50. package/build/routes/chromium/http/content.post.body.json +8 -8
  51. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  52. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  53. package/build/routes/chromium/http/screenshot.post.body.json +8 -8
  54. package/build/routes/firefox/ws/playwright.d.ts +7 -2
  55. package/build/routes/firefox/ws/playwright.js +3 -2
  56. package/build/routes/firefox/ws/playwright.query.json +29 -31
  57. package/build/routes/management/http/config.get.d.ts +1 -0
  58. package/build/routes/management/http/config.get.js +2 -1
  59. package/build/routes/management/http/metrics-total.get.d.ts +1 -0
  60. package/build/routes/management/http/metrics-total.get.js +2 -1
  61. package/build/routes/management/http/metrics.get.d.ts +1 -0
  62. package/build/routes/management/http/metrics.get.js +2 -1
  63. package/build/routes/management/http/sessions.get.d.ts +1 -0
  64. package/build/routes/management/http/sessions.get.js +2 -1
  65. package/build/routes/management/http/static.get.d.ts +1 -0
  66. package/build/routes/management/http/static.get.js +8 -7
  67. package/build/routes/webkit/ws/playwright.d.ts +2 -1
  68. package/build/routes/webkit/ws/playwright.js +3 -2
  69. package/build/shared/browser.ws.d.ts +2 -1
  70. package/build/shared/browser.ws.js +3 -2
  71. package/build/shared/chromium.playwright.ws.d.ts +2 -1
  72. package/build/shared/chromium.playwright.ws.js +3 -2
  73. package/build/shared/chromium.ws.d.ts +2 -1
  74. package/build/shared/chromium.ws.js +3 -2
  75. package/build/shared/content.http.d.ts +2 -1
  76. package/build/shared/content.http.js +3 -2
  77. package/build/shared/download.http.d.ts +2 -1
  78. package/build/shared/download.http.js +3 -2
  79. package/build/shared/function.http.d.ts +2 -1
  80. package/build/shared/function.http.js +3 -2
  81. package/build/shared/json-list.http.d.ts +2 -1
  82. package/build/shared/json-list.http.js +3 -2
  83. package/build/shared/json-new.http.d.ts +2 -1
  84. package/build/shared/json-new.http.js +3 -2
  85. package/build/shared/json-protocol.http.d.ts +2 -1
  86. package/build/shared/json-protocol.http.js +3 -2
  87. package/build/shared/json-version.http.d.ts +2 -1
  88. package/build/shared/json-version.http.js +3 -2
  89. package/build/shared/page.ws.d.ts +2 -1
  90. package/build/shared/page.ws.js +3 -2
  91. package/build/shared/pdf.http.d.ts +2 -1
  92. package/build/shared/pdf.http.js +3 -2
  93. package/build/shared/performance.http.d.ts +1 -0
  94. package/build/shared/performance.http.js +2 -1
  95. package/build/shared/scrape.http.d.ts +2 -1
  96. package/build/shared/scrape.http.js +3 -2
  97. package/build/shared/screenshot.http.d.ts +1 -0
  98. package/build/shared/screenshot.http.js +2 -1
  99. package/build/shared/utils/performance/main.js +1 -1
  100. package/build/types.d.ts +91 -0
  101. package/build/types.js +54 -0
  102. package/build/utils.d.ts +1 -1
  103. package/build/utils.js +11 -6
  104. package/docker/chromium/Dockerfile +1 -2
  105. package/docker/firefox/Dockerfile +1 -2
  106. package/docker/multi/Dockerfile +2 -4
  107. package/docker/webkit/Dockerfile +1 -2
  108. package/package.json +11 -11
  109. package/scripts/build-open-api.js +142 -124
  110. package/src/browserless.ts +60 -22
  111. package/src/browsers/chrome.cdp.ts +1 -1
  112. package/src/browsers/chrome.playwright.ts +1 -1
  113. package/src/browsers/index.ts +5 -1
  114. package/src/exports.ts +1 -3
  115. package/src/limiter.ts +7 -3
  116. package/src/router.ts +6 -2
  117. package/src/routes/chrome/http/content.post.ts +7 -2
  118. package/src/routes/chrome/http/download.post.ts +7 -2
  119. package/src/routes/chrome/http/function.post.ts +7 -2
  120. package/src/routes/chrome/http/json-list.get.ts +7 -1
  121. package/src/routes/chrome/http/json-new.put.ts +7 -1
  122. package/src/routes/chrome/http/json-protocol.get.ts +7 -1
  123. package/src/routes/chrome/http/json-version.get.ts +7 -1
  124. package/src/routes/chrome/http/pdf.post.ts +7 -2
  125. package/src/routes/chrome/http/performance.post.ts +7 -2
  126. package/src/routes/chrome/http/scrape.post.ts +7 -2
  127. package/src/routes/chrome/http/screenshot.post.ts +7 -2
  128. package/src/routes/chrome/ws/browser.ts +3 -2
  129. package/src/routes/chrome/ws/cdp.ts +7 -2
  130. package/src/routes/chrome/ws/page.ts +3 -2
  131. package/src/routes/chrome/ws/playwright.ts +6 -1
  132. package/src/routes/firefox/ws/playwright.ts +6 -2
  133. package/src/routes/management/http/config.get.ts +2 -0
  134. package/src/routes/management/http/metrics-total.get.ts +2 -0
  135. package/src/routes/management/http/metrics.get.ts +2 -0
  136. package/src/routes/management/http/sessions.get.ts +2 -0
  137. package/src/routes/management/http/static.get.ts +16 -9
  138. package/src/routes/webkit/ws/playwright.ts +3 -1
  139. package/src/shared/browser.ws.ts +3 -1
  140. package/src/shared/chromium.playwright.ws.ts +3 -1
  141. package/src/shared/chromium.ws.ts +3 -1
  142. package/src/shared/content.http.ts +3 -1
  143. package/src/shared/download.http.ts +3 -1
  144. package/src/shared/function.http.ts +3 -1
  145. package/src/shared/json-list.http.ts +3 -1
  146. package/src/shared/json-new.http.ts +3 -1
  147. package/src/shared/json-protocol.http.ts +3 -1
  148. package/src/shared/json-version.http.ts +3 -1
  149. package/src/shared/page.ws.ts +3 -1
  150. package/src/shared/pdf.http.ts +3 -1
  151. package/src/shared/performance.http.ts +2 -0
  152. package/src/shared/scrape.http.ts +3 -1
  153. package/src/shared/screenshot.http.ts +2 -0
  154. package/src/shared/utils/performance/main.ts +1 -2
  155. package/src/types.ts +66 -0
  156. package/src/utils.ts +13 -7
  157. package/static/docs/swagger.json +91 -49
  158. package/static/docs/swagger.min.json +6697 -0
  159. package/static/function/client.js +323 -323
package/src/types.ts CHANGED
@@ -104,6 +104,12 @@ abstract class Route {
104
104
  protected _monitoring: Browserless['monitoring'],
105
105
  ) {}
106
106
 
107
+ /**
108
+ * A unique name to identify this route. Used in downstream
109
+ * SDKs to potentially remove or disable.
110
+ */
111
+ abstract name: string;
112
+
107
113
  /**
108
114
  * A boolean, or a function that returns a boolean, on
109
115
  * whether the route requires an API token to access.
@@ -602,3 +608,63 @@ export interface CDPJSONPayload {
602
608
  */
603
609
  webSocketDebuggerUrl: string;
604
610
  }
611
+
612
+ export const BrowserlessChromeRoutes = {
613
+ ChromeBrowserWebSocketRoute: 'ChromeBrowserWebSocketRoute',
614
+ ChromeCDPWebSocketRoute: 'ChromeCDPWebSocketRoute',
615
+ ChromeContentPostRoute: 'ChromeContentPostRoute',
616
+ ChromeDownloadPostRoute: 'ChromeDownloadPostRoute',
617
+ ChromeFunctionPostRoute: 'ChromeFunctionPostRoute',
618
+ ChromeJSONListGetRoute: 'ChromeJSONListGetRoute',
619
+ ChromeJSONNewPutRoute: 'ChromeJSONNewPutRoute',
620
+ ChromeJSONProtocolGetRoute: 'ChromeJSONProtocolGetRoute',
621
+ ChromeJSONVersionGetRoute: 'ChromeJSONVersionGetRoute',
622
+ ChromePDFPostRoute: 'ChromePDFPostRoute',
623
+ ChromePageWebSocketRoute: 'ChromePageWebSocketRoute',
624
+ ChromePerformancePostRoute: 'ChromePerformancePostRoute',
625
+ ChromePlaywrightWebSocketRoute: 'ChromePlaywrightWebSocketRoute',
626
+ ChromeScrapePostRoute: 'ChromeScrapePostRoute',
627
+ ChromeScreenshotPostRoute: 'ChromeScreenshotPostRoute',
628
+ };
629
+
630
+ export const BrowserlessChromiumRoutes = {
631
+ ChromiumBrowserWebSocketRoute: 'ChromiumBrowserWebSocketRoute',
632
+ ChromiumCDPWebSocketRoute: 'ChromiumCDPWebSocketRoute',
633
+ ChromiumContentPostRoute: 'ChromiumContentPostRoute',
634
+ ChromiumDownloadPostRoute: 'ChromiumDownloadPostRoute',
635
+ ChromiumFunctionPostRoute: 'ChromiumFunctionPostRoute',
636
+ ChromiumJSONListGetRoute: 'ChromiumJSONListGetRoute',
637
+ ChromiumJSONNewPutRoute: 'ChromiumJSONNewPutRoute',
638
+ ChromiumJSONProtocolGetRoute: 'ChromiumJSONProtocolGetRoute',
639
+ ChromiumJSONVersionGetRoute: 'ChromiumJSONVersionGetRoute',
640
+ ChromiumPDFPostRoute: 'ChromiumPDFPostRoute',
641
+ ChromiumPageWebSocketRoute: 'ChromiumPageWebSocketRoute',
642
+ ChromiumPerformancePostRoute: 'ChromiumPerformancePostRoute',
643
+ ChromiumPlaywrightWebSocketRoute: 'ChromiumPlaywrightWebSocketRoute',
644
+ ChromiumScrapePostRoute: 'ChromiumScrapePostRoute',
645
+ ChromiumScreenshotPostRoute: 'ChromiumScreenshotPostRoute',
646
+ };
647
+
648
+ export const BrowserlessFirefoxRoutes = {
649
+ FirefoxPlaywrightWebSocketRoute: 'FirefoxPlaywrightWebSocketRoute',
650
+ };
651
+
652
+ export const BrowserlessWebKitRoutes = {
653
+ WebKitPlaywrightWebSocketRoute: 'WebKitPlaywrightWebSocketRoute',
654
+ };
655
+
656
+ export const BrowserlessManagementRoutes = {
657
+ ConfigGetRoute: 'ConfigGetRoute',
658
+ MetricsGetRoute: 'MetricsGetRoute',
659
+ MetricsTotalGetRoute: 'MetricsTotalGetRoute',
660
+ SessionsGetRoute: 'SessionsGetRoute',
661
+ StaticGetRoute: 'StaticGetRoute',
662
+ };
663
+
664
+ export const BrowserlessRoutes = {
665
+ ...BrowserlessChromeRoutes,
666
+ ...BrowserlessChromiumRoutes,
667
+ ...BrowserlessFirefoxRoutes,
668
+ ...BrowserlessWebKitRoutes,
669
+ ...BrowserlessManagementRoutes,
670
+ };
package/src/utils.ts CHANGED
@@ -303,12 +303,18 @@ export const readBody = async (
303
303
  * Lists the path of Chromes (stable) install since
304
304
  * no library or utility out there does it including playwright.
305
305
  */
306
- export const chromeExecutablePath =
307
- process.platform === 'win32'
308
- ? `%ProgramFiles%\\Google\\Chrome\\Application\\chrome.exe`
309
- : process.platform === 'darwin'
310
- ? '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
311
- : '/usr/bin/google-chrome-stable';
306
+ export const chromeExecutablePath = () => {
307
+ if (process.platform === 'win32') {
308
+ // Windows always includes the ProgramFiles variable in the environment
309
+ return `${process.env['ProgramFiles']}\\Google\\Chrome\\Application\\chrome.exe`;
310
+ }
311
+
312
+ if (process.platform === 'darwin') {
313
+ return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
314
+ }
315
+
316
+ return '/usr/bin/google-chrome-stable';
317
+ };
312
318
 
313
319
  export const getRouteFiles = async (config: Config): Promise<string[][]> => {
314
320
  const routes = config.getRoutes();
@@ -432,7 +438,7 @@ export const availableBrowsers = Promise.all([
432
438
  exists(playwright.chromium.executablePath()),
433
439
  exists(playwright.firefox.executablePath()),
434
440
  exists(playwright.webkit.executablePath()),
435
- exists(chromeExecutablePath),
441
+ exists(chromeExecutablePath()),
436
442
  ]).then(([chromiumExists, firefoxExists, webkitExists, chromeExists]) => {
437
443
  const availableBrowsers = [];
438
444