@browserless.io/browserless 2.12.0-beta-4 → 2.12.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 (146) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/bin/scaffold/README.md +6 -5
  3. package/bin/scaffold/src/hello-world.http.ts +3 -3
  4. package/build/browserless.d.ts +3 -3
  5. package/build/browserless.js +6 -6
  6. package/build/browsers/chromium.cdp.d.ts +12 -12
  7. package/build/browsers/chromium.cdp.js +77 -65
  8. package/build/browsers/chromium.playwright.d.ts +11 -11
  9. package/build/browsers/chromium.playwright.js +42 -34
  10. package/build/browsers/firefox.playwright.d.ts +11 -11
  11. package/build/browsers/firefox.playwright.js +42 -34
  12. package/build/browsers/index.d.ts +14 -14
  13. package/build/browsers/index.js +27 -25
  14. package/build/browsers/webkit.playwright.d.ts +11 -11
  15. package/build/browsers/webkit.playwright.js +43 -35
  16. package/build/config.d.ts +65 -63
  17. package/build/config.js +162 -102
  18. package/build/file-system.d.ts +4 -4
  19. package/build/file-system.js +8 -8
  20. package/build/hooks.d.ts +2 -2
  21. package/build/hooks.js +4 -4
  22. package/build/limiter.d.ts +4 -4
  23. package/build/limiter.js +10 -10
  24. package/build/logger.d.ts +6 -6
  25. package/build/logger.js +12 -12
  26. package/build/metrics.d.ts +12 -12
  27. package/build/metrics.js +23 -23
  28. package/build/monitoring.d.ts +4 -4
  29. package/build/monitoring.js +8 -8
  30. package/build/router.d.ts +8 -8
  31. package/build/router.js +74 -70
  32. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  33. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  34. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  35. package/build/routes/chromium/http/content.post.body.json +8 -8
  36. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  37. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  38. package/build/routes/chromium/http/screenshot.post.body.json +8 -8
  39. package/build/routes/firefox/ws/playwright.d.ts +1 -1
  40. package/build/routes/firefox/ws/playwright.js +2 -2
  41. package/build/routes/management/http/active.get.d.ts +1 -1
  42. package/build/routes/management/http/active.get.js +3 -1
  43. package/build/routes/management/http/config.get.d.ts +1 -1
  44. package/build/routes/management/http/config.get.js +2 -2
  45. package/build/routes/management/http/metrics-total.get.d.ts +1 -1
  46. package/build/routes/management/http/metrics-total.get.js +2 -2
  47. package/build/routes/management/http/metrics.get.d.ts +1 -1
  48. package/build/routes/management/http/metrics.get.js +2 -2
  49. package/build/routes/management/http/pressure.get.d.ts +1 -1
  50. package/build/routes/management/http/pressure.get.js +2 -2
  51. package/build/routes/management/http/sessions.get.d.ts +1 -1
  52. package/build/routes/management/http/sessions.get.js +2 -2
  53. package/build/routes/management/http/static.get.d.ts +1 -1
  54. package/build/routes/management/http/static.get.js +2 -2
  55. package/build/routes/webkit/ws/playwright.d.ts +1 -1
  56. package/build/routes/webkit/ws/playwright.js +2 -2
  57. package/build/server.d.ts +5 -5
  58. package/build/server.js +11 -11
  59. package/build/shared/browser.ws.d.ts +1 -1
  60. package/build/shared/browser.ws.js +3 -1
  61. package/build/shared/chromium.playwright.ws.d.ts +1 -1
  62. package/build/shared/chromium.playwright.ws.js +2 -2
  63. package/build/shared/chromium.ws.d.ts +1 -1
  64. package/build/shared/chromium.ws.js +3 -1
  65. package/build/shared/content.http.d.ts +1 -1
  66. package/build/shared/content.http.js +2 -2
  67. package/build/shared/download.http.d.ts +1 -1
  68. package/build/shared/download.http.js +60 -58
  69. package/build/shared/function.http.d.ts +1 -1
  70. package/build/shared/function.http.js +2 -2
  71. package/build/shared/json-list.http.d.ts +1 -1
  72. package/build/shared/json-list.http.js +2 -2
  73. package/build/shared/json-new.http.d.ts +1 -1
  74. package/build/shared/json-new.http.js +2 -2
  75. package/build/shared/json-protocol.http.d.ts +1 -1
  76. package/build/shared/json-protocol.http.js +2 -2
  77. package/build/shared/json-version.http.d.ts +1 -1
  78. package/build/shared/json-version.http.js +2 -2
  79. package/build/shared/page.ws.d.ts +1 -1
  80. package/build/shared/page.ws.js +3 -1
  81. package/build/shared/pdf.http.d.ts +1 -1
  82. package/build/shared/pdf.http.js +2 -2
  83. package/build/shared/performance.http.d.ts +1 -1
  84. package/build/shared/performance.http.js +2 -2
  85. package/build/shared/scrape.http.d.ts +1 -1
  86. package/build/shared/scrape.http.js +2 -2
  87. package/build/shared/screenshot.http.d.ts +1 -1
  88. package/build/shared/screenshot.http.js +2 -2
  89. package/build/shared/utils/function/client.d.ts +1 -1
  90. package/build/shared/utils/function/client.js +3 -1
  91. package/build/shim.d.ts +1 -1
  92. package/build/shim.js +2 -2
  93. package/build/token.d.ts +3 -3
  94. package/build/token.js +6 -6
  95. package/build/types.d.ts +4 -4
  96. package/build/webhooks.d.ts +2 -2
  97. package/build/webhooks.js +4 -4
  98. package/package.json +3 -3
  99. package/src/browserless.ts +6 -6
  100. package/src/browsers/chromium.cdp.ts +33 -23
  101. package/src/browsers/chromium.playwright.ts +28 -21
  102. package/src/browsers/firefox.playwright.ts +28 -21
  103. package/src/browsers/index.ts +32 -29
  104. package/src/browsers/webkit.playwright.ts +29 -22
  105. package/src/config.ts +166 -104
  106. package/src/file-system.ts +9 -9
  107. package/src/hooks.ts +4 -4
  108. package/src/limiter.ts +12 -12
  109. package/src/logger.ts +12 -12
  110. package/src/metrics.ts +23 -23
  111. package/src/monitoring.ts +9 -9
  112. package/src/router.ts +31 -31
  113. package/src/routes/firefox/ws/playwright.ts +3 -3
  114. package/src/routes/management/http/active.get.ts +3 -2
  115. package/src/routes/management/http/config.get.ts +2 -2
  116. package/src/routes/management/http/metrics-total.get.ts +2 -2
  117. package/src/routes/management/http/metrics.get.ts +2 -2
  118. package/src/routes/management/http/pressure.get.ts +2 -2
  119. package/src/routes/management/http/sessions.get.ts +2 -2
  120. package/src/routes/management/http/static.get.ts +3 -3
  121. package/src/routes/webkit/ws/playwright.ts +3 -3
  122. package/src/server.ts +14 -16
  123. package/src/shared/browser.ws.ts +4 -2
  124. package/src/shared/chromium.playwright.ws.ts +3 -3
  125. package/src/shared/chromium.ws.ts +4 -2
  126. package/src/shared/content.http.ts +3 -3
  127. package/src/shared/download.http.ts +4 -3
  128. package/src/shared/function.http.ts +3 -3
  129. package/src/shared/json-list.http.ts +2 -2
  130. package/src/shared/json-new.http.ts +2 -2
  131. package/src/shared/json-protocol.http.ts +2 -6
  132. package/src/shared/json-version.http.ts +2 -6
  133. package/src/shared/page.ws.ts +4 -2
  134. package/src/shared/pdf.http.ts +3 -3
  135. package/src/shared/performance.http.ts +3 -3
  136. package/src/shared/scrape.http.ts +3 -3
  137. package/src/shared/screenshot.http.ts +3 -3
  138. package/src/shared/utils/function/client.ts +3 -1
  139. package/src/shim.ts +2 -2
  140. package/src/token.ts +7 -7
  141. package/src/types.ts +7 -7
  142. package/src/webhooks.ts +4 -4
  143. package/static/docs/swagger.json +2 -2
  144. package/static/docs/swagger.min.json +1 -1
  145. package/static/function/client.js +3 -1
  146. package/static/function/index.html +3 -1
@@ -10,28 +10,28 @@ export declare class BrowserManager {
10
10
  protected chromeBrowsers: (typeof ChromiumCDP)[];
11
11
  protected playwrightBrowserNames: string[];
12
12
  constructor(config: Config, hooks: Hooks);
13
- protected browserIsChrome: (b: BrowserInstance) => boolean;
14
- protected removeUserDataDir: (userDataDir: string | null) => Promise<void>;
15
- protected onNewPage: (req: Request, page: Page) => Promise<void>;
13
+ protected browserIsChrome(b: BrowserInstance): boolean;
14
+ protected removeUserDataDir(userDataDir: string | null): Promise<void>;
15
+ protected onNewPage(req: Request, page: Page): Promise<unknown>;
16
16
  /**
17
17
  * Returns the /json/protocol API contents from Chromium or Chrome, whichever is installed,
18
18
  * and modifies URLs to set them to the appropriate addresses configured.
19
19
  * When both Chrome and Chromium are installed, defaults to Chromium.
20
20
  */
21
- getProtocolJSON: (logger: Logger) => Promise<object>;
21
+ getProtocolJSON(logger: Logger): Promise<object>;
22
22
  /**
23
23
  * Returns the /json/version API from Chromium or Chrome, whichever is installed,
24
24
  * and modifies URLs to set them to the appropriate addresses configured.
25
25
  * When both Chrome and Chromium are installed, defaults to Chromium.
26
26
  */
27
- getVersionJSON: (logger: Logger) => Promise<CDPJSONPayload>;
27
+ getVersionJSON(logger: Logger): Promise<CDPJSONPayload>;
28
28
  /**
29
29
  * Returns a list of all Chrome-like browsers (both Chromium and Chrome) with
30
30
  * their respective /json/list contents. URLs are modified so that subsequent
31
31
  * calls can be forwarded to the appropriate destination
32
32
  */
33
- getJSONList: () => Promise<Array<CDPJSONPayload>>;
34
- protected generateSessionJson: (browser: BrowserInstance, session: BrowserlessSession) => Promise<{
33
+ getJSONList(): Promise<Array<CDPJSONPayload>>;
34
+ protected generateSessionJson(browser: BrowserInstance, session: BrowserlessSession): Promise<{
35
35
  browser: string;
36
36
  browserId: string;
37
37
  initialConnectURL: string;
@@ -43,19 +43,19 @@ export declare class BrowserManager {
43
43
  isTempDataDir: boolean;
44
44
  launchOptions: CDPLaunchOptions | BrowserServerOptions;
45
45
  numbConnected: number;
46
- resolver: (val: unknown) => void;
46
+ resolver(val: unknown): void;
47
47
  routePath: string | string[];
48
48
  startedOn: number;
49
49
  ttl: number;
50
50
  userDataDir: string | null;
51
51
  }[]>;
52
- close: (browser: BrowserInstance, session: BrowserlessSession) => Promise<void>;
53
- getAllSessions: () => Promise<BrowserlessSessionJSON[]>;
54
- complete: (browser: BrowserInstance) => Promise<void>;
55
- getBrowserForRequest: (req: Request, router: BrowserHTTPRoute | BrowserWebsocketRoute, logger: Logger) => Promise<BrowserInstance>;
56
- shutdown: () => Promise<void>;
52
+ close(browser: BrowserInstance, session: BrowserlessSession): Promise<void>;
53
+ getAllSessions(): Promise<BrowserlessSessionJSON[]>;
54
+ complete(browser: BrowserInstance): Promise<void>;
55
+ getBrowserForRequest(req: Request, router: BrowserHTTPRoute | BrowserWebsocketRoute, logger: Logger): Promise<BrowserInstance>;
56
+ shutdown(): Promise<void>;
57
57
  /**
58
58
  * Left blank for downstream SDK modules to optionally implement.
59
59
  */
60
- stop: () => void;
60
+ stop(): void;
61
61
  }
@@ -18,24 +18,26 @@ export class BrowserManager {
18
18
  this.config = config;
19
19
  this.hooks = hooks;
20
20
  }
21
- browserIsChrome = (b) => this.chromeBrowsers.some((chromeBrowser) => b instanceof chromeBrowser);
22
- removeUserDataDir = async (userDataDir) => {
21
+ browserIsChrome(b) {
22
+ return this.chromeBrowsers.some((chromeBrowser) => b instanceof chromeBrowser);
23
+ }
24
+ async removeUserDataDir(userDataDir) {
23
25
  if (userDataDir && (await exists(userDataDir))) {
24
26
  this.log.info(`Deleting data directory "${userDataDir}"`);
25
27
  await deleteAsync(userDataDir, { force: true }).catch((err) => {
26
28
  this.log.error(`Error cleaning up user-data-dir "${err}" at ${userDataDir}`);
27
29
  });
28
30
  }
29
- };
30
- onNewPage = async (req, page) => {
31
- await this.hooks.page({ meta: req.parsed, page });
32
- };
31
+ }
32
+ async onNewPage(req, page) {
33
+ return await this.hooks.page({ meta: req.parsed, page });
34
+ }
33
35
  /**
34
36
  * Returns the /json/protocol API contents from Chromium or Chrome, whichever is installed,
35
37
  * and modifies URLs to set them to the appropriate addresses configured.
36
38
  * When both Chrome and Chromium are installed, defaults to Chromium.
37
39
  */
38
- getProtocolJSON = async (logger) => {
40
+ async getProtocolJSON(logger) {
39
41
  const Browser = (await availableBrowsers).find((InstalledBrowser) => this.chromeBrowsers.some((ChromeBrowser) => InstalledBrowser === ChromeBrowser));
40
42
  if (!Browser) {
41
43
  throw new Error(`No Chrome or Chromium browsers are installed!`);
@@ -56,13 +58,13 @@ export class BrowserManager {
56
58
  const protocolJSON = await res.json();
57
59
  browser.close();
58
60
  return protocolJSON;
59
- };
61
+ }
60
62
  /**
61
63
  * Returns the /json/version API from Chromium or Chrome, whichever is installed,
62
64
  * and modifies URLs to set them to the appropriate addresses configured.
63
65
  * When both Chrome and Chromium are installed, defaults to Chromium.
64
66
  */
65
- getVersionJSON = async (logger) => {
67
+ async getVersionJSON(logger) {
66
68
  this.log.info(`Launching Chromium to generate /json/version results`);
67
69
  const Browser = (await availableBrowsers).find((InstalledBrowser) => this.chromeBrowsers.some((ChromeBrowser) => InstalledBrowser === ChromeBrowser));
68
70
  if (!Browser) {
@@ -90,13 +92,13 @@ export class BrowserManager {
90
92
  'Debugger-Version': debuggerVersion,
91
93
  webSocketDebuggerUrl: this.config.getExternalWebSocketAddress(),
92
94
  };
93
- };
95
+ }
94
96
  /**
95
97
  * Returns a list of all Chrome-like browsers (both Chromium and Chrome) with
96
98
  * their respective /json/list contents. URLs are modified so that subsequent
97
99
  * calls can be forwarded to the appropriate destination
98
100
  */
99
- getJSONList = async () => {
101
+ async getJSONList() {
100
102
  const externalAddress = this.config.getExternalWebSocketAddress();
101
103
  const externalURL = new URL(externalAddress);
102
104
  const sessions = Array.from(this.browsers);
@@ -138,8 +140,8 @@ export class BrowserManager {
138
140
  return cdpResponse
139
141
  .flat()
140
142
  .filter((_) => _ !== null);
141
- };
142
- generateSessionJson = async (browser, session) => {
143
+ }
144
+ async generateSessionJson(browser, session) {
143
145
  const serverAddress = this.config.getExternalAddress();
144
146
  const sessions = [
145
147
  {
@@ -176,8 +178,8 @@ export class BrowserManager {
176
178
  }
177
179
  }
178
180
  return sessions;
179
- };
180
- close = async (browser, session) => {
181
+ }
182
+ async close(browser, session) {
181
183
  const now = Date.now();
182
184
  const keepUntil = browser.keepUntil();
183
185
  const connected = session.numbConnected;
@@ -211,8 +213,8 @@ export class BrowserManager {
211
213
  }
212
214
  await Promise.all(cleanupACtions.map((a) => a()));
213
215
  }
214
- };
215
- getAllSessions = async () => {
216
+ }
217
+ async getAllSessions() {
216
218
  const sessions = Array.from(this.browsers);
217
219
  const formattedSessions = [];
218
220
  for (const [browser, session] of sessions) {
@@ -220,8 +222,8 @@ export class BrowserManager {
220
222
  formattedSessions.push(...formattedSession);
221
223
  }
222
224
  return formattedSessions;
223
- };
224
- complete = async (browser) => {
225
+ }
226
+ async complete(browser) {
225
227
  const session = this.browsers.get(browser);
226
228
  if (!session) {
227
229
  this.log.info(`Couldn't locate session for browser, proceeding with close`);
@@ -233,8 +235,8 @@ export class BrowserManager {
233
235
  }
234
236
  --session.numbConnected;
235
237
  this.close(browser, session);
236
- };
237
- getBrowserForRequest = async (req, router, logger) => {
238
+ }
239
+ async getBrowserForRequest(req, router, logger) {
238
240
  const { browser: Browser } = router;
239
241
  const blockAds = parseBooleanParam(req.parsed.searchParams, 'blockAds', false);
240
242
  const decodedLaunchOptions = convertIfBase64(req.parsed.searchParams.get('launch') || '{}');
@@ -348,8 +350,8 @@ export class BrowserManager {
348
350
  (router.onNewPage || noop)(req.parsed || '', page);
349
351
  });
350
352
  return browser;
351
- };
352
- shutdown = async () => {
353
+ }
354
+ async shutdown() {
353
355
  this.log.info(`Closing down browser instances`);
354
356
  const sessions = Array.from(this.browsers);
355
357
  await Promise.all(sessions.map(([b]) => b.close()));
@@ -360,9 +362,9 @@ export class BrowserManager {
360
362
  this.timers = new Map();
361
363
  await this.stop();
362
364
  this.log.info(`Shutdown complete`);
363
- };
365
+ }
364
366
  /**
365
367
  * Left blank for downstream SDK modules to optionally implement.
366
368
  */
367
- stop = () => { };
369
+ stop() { }
368
370
  }
@@ -22,15 +22,15 @@ export declare class WebkitPlaywright extends EventEmitter {
22
22
  });
23
23
  protected cleanListeners(): void;
24
24
  keepUntil(): number;
25
- isRunning: () => boolean;
26
- close: () => Promise<void>;
27
- pages: () => Promise<[]>;
28
- getPageId: () => string;
29
- makeLiveURL: () => void;
30
- newPage: () => Promise<Page>;
31
- launch: (options?: BrowserServerOptions, version?: string) => Promise<playwright.BrowserServer>;
32
- wsEndpoint: () => string | null;
33
- publicWSEndpoint: (token: string | null) => string | null;
34
- proxyPageWebSocket: () => Promise<void>;
35
- proxyWebSocket: (req: Request, socket: Duplex, head: Buffer) => Promise<void>;
25
+ isRunning(): boolean;
26
+ close(): Promise<void>;
27
+ pages(): Promise<[]>;
28
+ getPageId(): string;
29
+ makeLiveURL(): void;
30
+ newPage(): Promise<Page>;
31
+ launch(options?: BrowserServerOptions, version?: string): Promise<playwright.BrowserServer>;
32
+ wsEndpoint(): string | null;
33
+ publicWSEndpoint(token: string | null): string | null;
34
+ proxyPageWebSocket(): Promise<void>;
35
+ proxyWebSocket(req: Request, socket: Duplex, head: Buffer): Promise<void>;
36
36
  }
@@ -24,8 +24,10 @@ export class WebkitPlaywright extends EventEmitter {
24
24
  keepUntil() {
25
25
  return 0;
26
26
  }
27
- isRunning = () => this.running;
28
- close = async () => {
27
+ isRunning() {
28
+ return this.running;
29
+ }
30
+ async close() {
29
31
  if (this.browser) {
30
32
  this.logger.info(`Closing ${this.constructor.name} process and all listeners`);
31
33
  this.emit('close');
@@ -35,18 +37,20 @@ export class WebkitPlaywright extends EventEmitter {
35
37
  this.browser = null;
36
38
  this.browserWSEndpoint = null;
37
39
  }
38
- };
39
- pages = async () => [];
40
- getPageId = () => {
40
+ }
41
+ async pages() {
42
+ return [];
43
+ }
44
+ getPageId() {
41
45
  throw new ServerError(`#getPageId is not yet supported with ${this.constructor.name}.`);
42
- };
43
- makeLiveURL = () => {
46
+ }
47
+ makeLiveURL() {
44
48
  throw new ServerError(`Live URLs are not yet supported with ${this.constructor.name}.`);
45
- };
46
- newPage = async () => {
49
+ }
50
+ async newPage() {
47
51
  throw new ServerError(`Can't create new page with ${this.constructor.name}`);
48
- };
49
- launch = async (options = {}, version) => {
52
+ }
53
+ async launch(options = {}, version) {
50
54
  this.logger.info(`Launching ${this.constructor.name} Handler`);
51
55
  const opts = {
52
56
  ...options,
@@ -63,9 +67,11 @@ export class WebkitPlaywright extends EventEmitter {
63
67
  this.browserWSEndpoint = browserWSEndpoint;
64
68
  this.running = true;
65
69
  return this.browser;
66
- };
67
- wsEndpoint = () => this.browserWSEndpoint;
68
- publicWSEndpoint = (token) => {
70
+ }
71
+ wsEndpoint() {
72
+ return this.browserWSEndpoint;
73
+ }
74
+ publicWSEndpoint(token) {
69
75
  if (!this.browserWSEndpoint) {
70
76
  return null;
71
77
  }
@@ -76,26 +82,28 @@ export class WebkitPlaywright extends EventEmitter {
76
82
  externalURL.searchParams.set('token', token);
77
83
  }
78
84
  return externalURL.href;
79
- };
80
- proxyPageWebSocket = async () => {
81
- this.logger.warn(`Not yet implemented`);
82
- };
83
- proxyWebSocket = async (req, socket, head) => new Promise((resolve, reject) => {
84
- if (!this.browserWSEndpoint) {
85
- throw new ServerError(`No browserWSEndpoint found, did you launch first?`);
86
- }
87
- socket.once('close', resolve);
88
- this.logger.info(`Proxying ${req.parsed.href} to ${this.constructor.name} ${this.browserWSEndpoint}`);
89
- // Delete headers known to cause issues
90
- delete req.headers.origin;
91
- req.url = '';
92
- this.proxy.ws(req, socket, head, {
93
- changeOrigin: true,
94
- target: this.browserWSEndpoint,
95
- }, (error) => {
96
- this.logger.error(`Error proxying session to ${this.constructor.name}: ${error}`);
97
- this.close();
98
- return reject(error);
85
+ }
86
+ async proxyPageWebSocket() {
87
+ return this.logger.warn(`Not yet implemented`);
88
+ }
89
+ async proxyWebSocket(req, socket, head) {
90
+ return new Promise((resolve, reject) => {
91
+ if (!this.browserWSEndpoint) {
92
+ throw new ServerError(`No browserWSEndpoint found, did you launch first?`);
93
+ }
94
+ socket.once('close', resolve);
95
+ this.logger.info(`Proxying ${req.parsed.href} to ${this.constructor.name} ${this.browserWSEndpoint}`);
96
+ // Delete headers known to cause issues
97
+ delete req.headers.origin;
98
+ req.url = '';
99
+ this.proxy.ws(req, socket, head, {
100
+ changeOrigin: true,
101
+ target: this.browserWSEndpoint,
102
+ }, (error) => {
103
+ this.logger.error(`Error proxying session to ${this.constructor.name}: ${error}`);
104
+ this.close();
105
+ return reject(error);
106
+ });
99
107
  });
100
- });
108
+ }
101
109
  }
package/build/config.d.ts CHANGED
@@ -38,13 +38,13 @@ export declare class Config extends EventEmitter {
38
38
  protected pwVersions: {
39
39
  [key: string]: string;
40
40
  };
41
- getRoutes: () => string;
42
- getHost: () => string;
43
- getPort: () => number;
44
- getIsWin: () => boolean;
45
- getToken: () => string | null;
46
- getDebug: () => string;
47
- getPwVersions: () => {
41
+ getRoutes(): string;
42
+ getHost(): string;
43
+ getPort(): number;
44
+ getIsWin(): boolean;
45
+ getToken(): string | null;
46
+ getDebug(): string;
47
+ getPwVersions(): {
48
48
  [key: string]: string;
49
49
  };
50
50
  /**
@@ -52,73 +52,75 @@ export declare class Config extends EventEmitter {
52
52
  * to "-1" or "Infinity" for no limit.
53
53
  * @returns number
54
54
  */
55
- getConcurrent: () => number;
55
+ getConcurrent(): number;
56
56
  /**
57
57
  * The maximum number of queued sessions allowed. Set to
58
58
  * "-1" or "Infinity" for no limit.
59
59
  * @returns number
60
60
  */
61
- getQueued: () => number;
62
- getTimeout: () => number;
63
- getStatic: () => string;
64
- getDebuggerDir: () => string;
65
- getRetries: () => number;
66
- getAllowFileProtocol: () => boolean;
67
- getCPULimit: () => number;
68
- getMemoryLimit: () => number;
69
- getHealthChecksEnabled: () => boolean;
70
- getFailedHealthURL: () => string | null;
71
- getQueueAlertURL: () => string | null;
72
- getRejectAlertURL: () => string | null;
73
- getTimeoutAlertURL: () => string | null;
74
- getErrorAlertURL: () => string | null;
75
- hasDebugger: () => Promise<boolean>;
61
+ getQueued(): number;
62
+ getTimeout(): number;
63
+ getStatic(): string;
64
+ getDebuggerDir(): string;
65
+ getRetries(): number;
66
+ getAllowFileProtocol(): boolean;
67
+ getCPULimit(): number;
68
+ getMemoryLimit(): number;
69
+ getHealthChecksEnabled(): boolean;
70
+ getFailedHealthURL(): string | null;
71
+ getQueueAlertURL(): string | null;
72
+ getRejectAlertURL(): string | null;
73
+ getTimeoutAlertURL(): string | null;
74
+ getErrorAlertURL(): string | null;
75
+ hasDebugger(): Promise<boolean>;
76
76
  /**
77
77
  * If true, allows GET style calls on our browser-based APIs, using
78
78
  * ?body=JSON format.
79
79
  */
80
- getAllowGetCalls: () => boolean;
80
+ getAllowGetCalls(): boolean;
81
81
  /**
82
82
  * Determines if CORS is allowed
83
83
  */
84
- getAllowCORS: () => boolean;
85
- getDataDir: () => Promise<string>;
86
- getDownloadsDir: () => Promise<string>;
84
+ getAllowCORS(): boolean;
85
+ getDataDir(): Promise<string>;
86
+ getDownloadsDir(): Promise<string>;
87
87
  /**
88
88
  * Repeats the TOKEN parameter up to 24 characters so we can
89
89
  * do AES encoding for saving things to disk and generating
90
90
  * secure links.
91
91
  */
92
- getAESKey: () => Buffer;
93
- getMetricsJSONPath: () => string;
94
- setPwVersions: (versions: {
92
+ getAESKey(): Buffer;
93
+ getMetricsJSONPath(): string;
94
+ setPwVersions(versions: {
95
95
  [key: string]: string;
96
- }) => void;
97
- loadPwVersion: (version: string) => Promise<typeof playwright>;
98
- setDataDir: (newDataDir: string) => Promise<string>;
99
- setRoutes: (newRoutePath: string) => string;
100
- setConcurrent: (newConcurrent: number) => number;
101
- setQueued: (newQueued: number) => number;
102
- setToken: (newToken: string | null) => string | null;
103
- setTimeout: (newTimeout: number) => number;
104
- setStatic: (newStatic: string) => string;
105
- setRetries: (newRetries: number) => number;
106
- setCPULimit: (limit: number) => number;
107
- setMemoryLimit: (limit: number) => number;
108
- enableHealthChecks: (enable: boolean) => boolean;
109
- enableGETRequests: (enable: boolean) => boolean;
110
- enableCORS: (enable: boolean) => boolean;
111
- setCORSMethods: (methods: string) => string;
112
- setCORSOrigin: (origin: string) => string;
113
- setCORSMaxAge: (maxAge: number) => number;
114
- setFailedHealthURL: (url: string | null) => string | null;
115
- setQueueAlertURL: (url: string | null) => string | null;
116
- setRejectAlertURL: (url: string | null) => string | null;
117
- setTimeoutAlertURL: (url: string | null) => string | null;
118
- setErrorAlertURL: (url: string | null) => string | null;
119
- setMetricsJSONPath: (path: string) => string;
120
- setPort: (port: number) => number;
121
- setAllowFileProtocol: (allow: boolean) => boolean;
96
+ }): {
97
+ [key: string]: string;
98
+ };
99
+ loadPwVersion(version: string): Promise<typeof playwright>;
100
+ setDataDir(newDataDir: string): Promise<string>;
101
+ setRoutes(newRoutePath: string): string;
102
+ setConcurrent(newConcurrent: number): number;
103
+ setQueued(newQueued: number): number;
104
+ setToken(newToken: string | null): string | null;
105
+ setTimeout(newTimeout: number): number;
106
+ setStatic(newStatic: string): string;
107
+ setRetries(newRetries: number): number;
108
+ setCPULimit(limit: number): number;
109
+ setMemoryLimit(limit: number): number;
110
+ enableHealthChecks(enable: boolean): boolean;
111
+ enableGETRequests(enable: boolean): boolean;
112
+ enableCORS(enable: boolean): boolean;
113
+ setCORSMethods(methods: string): string;
114
+ setCORSOrigin(origin: string): string;
115
+ setCORSMaxAge(maxAge: number): number;
116
+ setFailedHealthURL(url: string | null): string | null;
117
+ setQueueAlertURL(url: string | null): string | null;
118
+ setRejectAlertURL(url: string | null): string | null;
119
+ setTimeoutAlertURL(url: string | null): string | null;
120
+ setErrorAlertURL(url: string | null): string | null;
121
+ setMetricsJSONPath(path: string): string;
122
+ setPort(port: number): number;
123
+ setAllowFileProtocol(allow: boolean): boolean;
122
124
  /**
123
125
  * Returns the fully-qualified server address, which
124
126
  * includes host, protocol, and port for which the
@@ -128,7 +130,7 @@ export declare class Config extends EventEmitter {
128
130
  *
129
131
  * @returns Fully-qualified server address
130
132
  */
131
- getServerAddress: () => string;
133
+ getServerAddress(): string;
132
134
  /**
133
135
  * Returns the fully-qualified URL for the
134
136
  * external address that browserless might be
@@ -137,7 +139,7 @@ export declare class Config extends EventEmitter {
137
139
  *
138
140
  * @returns {string} The URL to reach the server
139
141
  */
140
- getExternalAddress: () => string;
142
+ getExternalAddress(): string;
141
143
  /**
142
144
  * Set the external URL, which Browserless uses for encoding
143
145
  * URLs over the HOST:PORT that it's bound to.
@@ -145,7 +147,7 @@ export declare class Config extends EventEmitter {
145
147
  * @param address The fully-qualified URL, eg https://www.example.com/
146
148
  * @returns {string} The address
147
149
  */
148
- setExternalAddress: (address: string) => string;
150
+ setExternalAddress(address: string): string;
149
151
  /**
150
152
  * Returns the fully-qualified WebSocket URL for the
151
153
  * external address that browserless might be
@@ -154,14 +156,14 @@ export declare class Config extends EventEmitter {
154
156
  *
155
157
  * @returns {string} The URL to reach the server
156
158
  */
157
- getExternalWebSocketAddress: () => string;
159
+ getExternalWebSocketAddress(): string;
158
160
  /**
159
161
  * When CORS is enabled, returns relevant CORS headers
160
162
  * to requests and for the OPTIONS call. Values can be
161
163
  * overridden by specifying `CORS_ALLOW_METHODS`, `CORS_ALLOW_ORIGIN`,
162
164
  * and `CORS_MAX_AGE`
163
165
  */
164
- getCORSHeaders: () => {
166
+ getCORSHeaders(): {
165
167
  'Access-Control-Allow-Methods': string;
166
168
  'Access-Control-Allow-Origin': string;
167
169
  'Access-Control-Max-Age': number;
@@ -170,9 +172,9 @@ export declare class Config extends EventEmitter {
170
172
  * Implement any browserless-core-specific shutdown logic here.
171
173
  * Calls the empty-SDK stop method for downstream implementations.
172
174
  */
173
- shutdown: () => Promise<void>;
175
+ shutdown(): Promise<void>;
174
176
  /**
175
177
  * Left blank for downstream SDK modules to optionally implement.
176
178
  */
177
- stop: () => void;
179
+ stop(): void;
178
180
  }