@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
@@ -535,14 +535,14 @@
535
535
  "length": {
536
536
  "type": "number"
537
537
  },
538
- "__@toStringTag@197611": {
538
+ "__@toStringTag@197654": {
539
539
  "type": "string",
540
540
  "const": "Uint8Array"
541
541
  }
542
542
  },
543
543
  "required": [
544
544
  "BYTES_PER_ELEMENT",
545
- "__@toStringTag@197611",
545
+ "__@toStringTag@197654",
546
546
  "buffer",
547
547
  "byteLength",
548
548
  "byteOffset",
@@ -577,13 +577,13 @@
577
577
  "byteLength": {
578
578
  "type": "number"
579
579
  },
580
- "__@toStringTag@197611": {
580
+ "__@toStringTag@197654": {
581
581
  "type": "string"
582
582
  }
583
583
  },
584
584
  "additionalProperties": false,
585
585
  "required": [
586
- "__@toStringTag@197611",
586
+ "__@toStringTag@197654",
587
587
  "byteLength"
588
588
  ]
589
589
  },
@@ -593,18 +593,18 @@
593
593
  "byteLength": {
594
594
  "type": "number"
595
595
  },
596
- "__@species@197712": {
596
+ "__@species@197755": {
597
597
  "$ref": "#/definitions/SharedArrayBuffer"
598
598
  },
599
- "__@toStringTag@197611": {
599
+ "__@toStringTag@197654": {
600
600
  "type": "string",
601
601
  "const": "SharedArrayBuffer"
602
602
  }
603
603
  },
604
604
  "additionalProperties": false,
605
605
  "required": [
606
- "__@species@197712",
607
- "__@toStringTag@197611",
606
+ "__@species@197755",
607
+ "__@toStringTag@197654",
608
608
  "byteLength"
609
609
  ]
610
610
  },
@@ -441,14 +441,14 @@
441
441
  "length": {
442
442
  "type": "number"
443
443
  },
444
- "__@toStringTag@230602": {
444
+ "__@toStringTag@230588": {
445
445
  "type": "string",
446
446
  "const": "Uint8Array"
447
447
  }
448
448
  },
449
449
  "required": [
450
450
  "BYTES_PER_ELEMENT",
451
- "__@toStringTag@230602",
451
+ "__@toStringTag@230588",
452
452
  "buffer",
453
453
  "byteLength",
454
454
  "byteOffset",
@@ -483,13 +483,13 @@
483
483
  "byteLength": {
484
484
  "type": "number"
485
485
  },
486
- "__@toStringTag@230602": {
486
+ "__@toStringTag@230588": {
487
487
  "type": "string"
488
488
  }
489
489
  },
490
490
  "additionalProperties": false,
491
491
  "required": [
492
- "__@toStringTag@230602",
492
+ "__@toStringTag@230588",
493
493
  "byteLength"
494
494
  ]
495
495
  },
@@ -499,18 +499,18 @@
499
499
  "byteLength": {
500
500
  "type": "number"
501
501
  },
502
- "__@species@230703": {
502
+ "__@species@230689": {
503
503
  "$ref": "#/definitions/SharedArrayBuffer"
504
504
  },
505
- "__@toStringTag@230602": {
505
+ "__@toStringTag@230588": {
506
506
  "type": "string",
507
507
  "const": "SharedArrayBuffer"
508
508
  }
509
509
  },
510
510
  "additionalProperties": false,
511
511
  "required": [
512
- "__@species@230703",
513
- "__@toStringTag@230602",
512
+ "__@species@230689",
513
+ "__@toStringTag@230588",
514
514
  "byteLength"
515
515
  ]
516
516
  },
@@ -484,14 +484,14 @@
484
484
  "length": {
485
485
  "type": "number"
486
486
  },
487
- "__@toStringTag@241842": {
487
+ "__@toStringTag@241828": {
488
488
  "type": "string",
489
489
  "const": "Uint8Array"
490
490
  }
491
491
  },
492
492
  "required": [
493
493
  "BYTES_PER_ELEMENT",
494
- "__@toStringTag@241842",
494
+ "__@toStringTag@241828",
495
495
  "buffer",
496
496
  "byteLength",
497
497
  "byteOffset",
@@ -526,13 +526,13 @@
526
526
  "byteLength": {
527
527
  "type": "number"
528
528
  },
529
- "__@toStringTag@241842": {
529
+ "__@toStringTag@241828": {
530
530
  "type": "string"
531
531
  }
532
532
  },
533
533
  "additionalProperties": false,
534
534
  "required": [
535
- "__@toStringTag@241842",
535
+ "__@toStringTag@241828",
536
536
  "byteLength"
537
537
  ]
538
538
  },
@@ -542,18 +542,18 @@
542
542
  "byteLength": {
543
543
  "type": "number"
544
544
  },
545
- "__@species@241943": {
545
+ "__@species@241929": {
546
546
  "$ref": "#/definitions/SharedArrayBuffer"
547
547
  },
548
- "__@toStringTag@241842": {
548
+ "__@toStringTag@241828": {
549
549
  "type": "string",
550
550
  "const": "SharedArrayBuffer"
551
551
  }
552
552
  },
553
553
  "additionalProperties": false,
554
554
  "required": [
555
- "__@species@241943",
556
- "__@toStringTag@241842",
555
+ "__@species@241929",
556
+ "__@toStringTag@241828",
557
557
  "byteLength"
558
558
  ]
559
559
  },
@@ -17,5 +17,5 @@ export default class FirefoxPlaywrightWebSocketRoute extends BrowserWebsocketRou
17
17
  description: string;
18
18
  path: WebsocketRoutes[];
19
19
  tags: APITags[];
20
- handler: (req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: FirefoxPlaywright) => Promise<void>;
20
+ handler(req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: FirefoxPlaywright): Promise<void>;
21
21
  }
@@ -7,7 +7,7 @@ export default class FirefoxPlaywrightWebSocketRoute extends BrowserWebsocketRou
7
7
  description = `Connect to Firefox with any playwright-compliant library.`;
8
8
  path = [WebsocketRoutes.playwrightFirefox, WebsocketRoutes.firefoxPlaywright];
9
9
  tags = [APITags.browserWS];
10
- handler = async (req, socket, head, _logger, browser) => {
10
+ async handler(req, socket, head, _logger, browser) {
11
11
  const isPlaywright = req.headers['user-agent']
12
12
  ?.toLowerCase()
13
13
  .includes('playwright');
@@ -15,5 +15,5 @@ export default class FirefoxPlaywrightWebSocketRoute extends BrowserWebsocketRou
15
15
  throw new BadRequest(`Only playwright is allowed to work with this route`);
16
16
  }
17
17
  return browser.proxyWebSocket(req, socket, head);
18
- };
18
+ }
19
19
  }
@@ -12,5 +12,5 @@ export default class ActiveGetRoute extends HTTPRoute {
12
12
  method: Methods;
13
13
  path: HTTPManagementRoutes;
14
14
  tags: APITags[];
15
- handler: (_req: Request, res: ServerResponse) => Promise<void>;
15
+ handler(_req: Request, res: ServerResponse): Promise<void>;
16
16
  }
@@ -13,5 +13,7 @@ export default class ActiveGetRoute extends HTTPRoute {
13
13
  method = Methods.get;
14
14
  path = HTTPManagementRoutes.active;
15
15
  tags = [APITags.management];
16
- handler = async (_req, res) => writeResponse(res, 204, '', contentTypes.text);
16
+ async handler(_req, res) {
17
+ return writeResponse(res, 204, '', contentTypes.text);
18
+ }
17
19
  }
@@ -34,5 +34,5 @@ export default class ConfigGetRoute extends HTTPRoute {
34
34
  method: Methods;
35
35
  path: HTTPManagementRoutes;
36
36
  tags: APITags[];
37
- handler: (_req: Request, res: ServerResponse) => Promise<void>;
37
+ handler(_req: Request, res: ServerResponse): Promise<void>;
38
38
  }
@@ -10,7 +10,7 @@ export default class ConfigGetRoute extends HTTPRoute {
10
10
  method = Methods.get;
11
11
  path = HTTPManagementRoutes.config;
12
12
  tags = [APITags.management];
13
- handler = async (_req, res) => {
13
+ async handler(_req, res) {
14
14
  const config = this.config();
15
15
  const response = {
16
16
  allowCORS: config.getAllowCORS(),
@@ -35,5 +35,5 @@ export default class ConfigGetRoute extends HTTPRoute {
35
35
  token: config.getToken(),
36
36
  };
37
37
  return jsonResponse(res, 200, response);
38
- };
38
+ }
39
39
  }
@@ -13,5 +13,5 @@ export default class MetricsTotalGetRoute extends HTTPRoute {
13
13
  method: Methods;
14
14
  path: HTTPManagementRoutes;
15
15
  tags: APITags[];
16
- handler: (_req: Request, res: ServerResponse) => Promise<void>;
16
+ handler(_req: Request, res: ServerResponse): Promise<void>;
17
17
  }
@@ -11,7 +11,7 @@ export default class MetricsTotalGetRoute extends HTTPRoute {
11
11
  method = Methods.get;
12
12
  path = HTTPManagementRoutes.metricsTotal;
13
13
  tags = [APITags.management];
14
- handler = async (_req, res) => {
14
+ async handler(_req, res) {
15
15
  const fileSystem = this.fileSystem();
16
16
  const config = this.config();
17
17
  const metrics = (await fileSystem.read(config.getMetricsJSONPath(), false)).map((m) => JSON.parse(m));
@@ -52,5 +52,5 @@ export default class MetricsTotalGetRoute extends HTTPRoute {
52
52
  totals.meanTime = totals.meanTime / metrics.length;
53
53
  totals.estimatedMonthlyUnits = Math.round(totals.units / (availableMetrics / fiveMinuteIntervalsInAMonth));
54
54
  return writeResponse(res, 200, JSON.stringify(totals), contentTypes.json);
55
- };
55
+ }
56
56
  }
@@ -13,5 +13,5 @@ export default class MetricsGetRoute extends HTTPRoute {
13
13
  method: Methods;
14
14
  path: HTTPManagementRoutes;
15
15
  tags: APITags[];
16
- handler: (_req: Request, res: ServerResponse) => Promise<void>;
16
+ handler(_req: Request, res: ServerResponse): Promise<void>;
17
17
  }
@@ -10,11 +10,11 @@ export default class MetricsGetRoute extends HTTPRoute {
10
10
  method = Methods.get;
11
11
  path = HTTPManagementRoutes.metrics;
12
12
  tags = [APITags.management];
13
- handler = async (_req, res) => {
13
+ async handler(_req, res) {
14
14
  const fileSystem = this.fileSystem();
15
15
  const config = this.config();
16
16
  const stats = await fileSystem.read(config.getMetricsJSONPath(), false);
17
17
  const response = `[${stats.join(',')}]`;
18
18
  return writeResponse(res, 200, response, contentTypes.json);
19
- };
19
+ }
20
20
  }
@@ -61,5 +61,5 @@ export default class PressureGetRoute extends HTTPRoute {
61
61
  method: Methods;
62
62
  path: HTTPManagementRoutes;
63
63
  tags: APITags[];
64
- handler: (_req: Request, res: ServerResponse) => Promise<void>;
64
+ handler(_req: Request, res: ServerResponse): Promise<void>;
65
65
  }
@@ -10,7 +10,7 @@ export default class PressureGetRoute extends HTTPRoute {
10
10
  method = Methods.get;
11
11
  path = HTTPManagementRoutes.pressure;
12
12
  tags = [APITags.management];
13
- handler = async (_req, res) => {
13
+ async handler(_req, res) {
14
14
  const monitoring = this.monitoring();
15
15
  const config = this.config();
16
16
  const limiter = this.limiter();
@@ -54,5 +54,5 @@ export default class PressureGetRoute extends HTTPRoute {
54
54
  },
55
55
  };
56
56
  return jsonResponse(res, 200, response);
57
- };
57
+ }
58
58
  }
@@ -13,5 +13,5 @@ export default class SessionsGetRoute extends HTTPRoute {
13
13
  method: Methods;
14
14
  path: HTTPManagementRoutes;
15
15
  tags: APITags[];
16
- handler: (_req: Request, res: ServerResponse) => Promise<void>;
16
+ handler(_req: Request, res: ServerResponse): Promise<void>;
17
17
  }
@@ -10,9 +10,9 @@ export default class SessionsGetRoute extends HTTPRoute {
10
10
  method = Methods.get;
11
11
  path = HTTPManagementRoutes.sessions;
12
12
  tags = [APITags.management];
13
- handler = async (_req, res) => {
13
+ async handler(_req, res) {
14
14
  const browserManager = this.browserManager();
15
15
  const response = await browserManager.getAllSessions();
16
16
  return jsonResponse(res, 200, response);
17
- };
17
+ }
18
18
  }
@@ -12,5 +12,5 @@ export default class StaticGetRoute extends HTTPRoute {
12
12
  method: Methods;
13
13
  path: HTTPManagementRoutes;
14
14
  tags: APITags[];
15
- handler: (req: Request, res: ServerResponse, logger: Logger) => Promise<unknown>;
15
+ handler(req: Request, res: ServerResponse, logger: Logger): Promise<unknown>;
16
16
  }
@@ -29,7 +29,7 @@ export default class StaticGetRoute extends HTTPRoute {
29
29
  method = Methods.get;
30
30
  path = HTTPManagementRoutes.static;
31
31
  tags = [APITags.management];
32
- handler = async (req, res, logger) => {
32
+ async handler(req, res, logger) {
33
33
  const { pathname } = req.parsed;
34
34
  const fileCache = pathMap.get(pathname);
35
35
  if (fileCache) {
@@ -63,5 +63,5 @@ export default class StaticGetRoute extends HTTPRoute {
63
63
  path: foundFilePath,
64
64
  });
65
65
  return streamFile(logger, res, foundFilePath, contentType);
66
- };
66
+ }
67
67
  }
@@ -13,5 +13,5 @@ export default class WebKitPlaywrightWebSocketRoute extends BrowserWebsocketRout
13
13
  description: string;
14
14
  path: WebsocketRoutes[];
15
15
  tags: APITags[];
16
- handler: (req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: WebkitPlaywright) => Promise<void>;
16
+ handler(req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: WebkitPlaywright): Promise<void>;
17
17
  }
@@ -7,7 +7,7 @@ export default class WebKitPlaywrightWebSocketRoute extends BrowserWebsocketRout
7
7
  description = `Connect to Webkit with any playwright-compliant library.`;
8
8
  path = [WebsocketRoutes.playwrightWebkit, WebsocketRoutes.webkitPlaywright];
9
9
  tags = [APITags.browserWS];
10
- handler = async (req, socket, head, _logger, browser) => {
10
+ async handler(req, socket, head, _logger, browser) {
11
11
  const isPlaywright = req.headers['user-agent']
12
12
  ?.toLowerCase()
13
13
  .includes('playwright');
@@ -15,5 +15,5 @@ export default class WebKitPlaywrightWebSocketRoute extends BrowserWebsocketRout
15
15
  throw new BadRequest(`Only playwright is allowed to work with this route`);
16
16
  }
17
17
  return browser.proxyWebSocket(req, socket, head);
18
- };
18
+ }
19
19
  }
package/build/server.d.ts CHANGED
@@ -25,14 +25,14 @@ export declare class HTTPServer extends EventEmitter {
25
25
  protected host?: string;
26
26
  protected logger: BlessLogger;
27
27
  constructor(config: Config, metrics: Metrics, token: Token, router: Router, hooks: Hooks, Logger: typeof BlessLogger);
28
- protected onHTTPUnauthorized: (_req: Request, res: Response) => void;
29
- protected onWebsocketUnauthorized: (_req: Request, socket: stream.Duplex) => void;
28
+ protected onHTTPUnauthorized(_req: Request, res: Response): void;
29
+ protected onWebsocketUnauthorized(_req: Request, socket: stream.Duplex): void;
30
30
  start(): Promise<void>;
31
- protected handleRequest: (request: http.IncomingMessage, res: http.ServerResponse) => Promise<void | http.ServerResponse<http.IncomingMessage>>;
32
- protected handleWebSocket: (request: http.IncomingMessage, socket: stream.Duplex, head: Buffer) => Promise<void>;
31
+ protected handleRequest(request: http.IncomingMessage, res: http.ServerResponse): Promise<void | http.ServerResponse<http.IncomingMessage>>;
32
+ protected handleWebSocket(request: http.IncomingMessage, socket: stream.Duplex, head: Buffer): Promise<void>;
33
33
  shutdown(): Promise<void>;
34
34
  /**
35
35
  * Left blank for downstream SDK modules to optionally implement.
36
36
  */
37
- stop: () => void;
37
+ stop(): void;
38
38
  }
package/build/server.js CHANGED
@@ -26,20 +26,20 @@ export class HTTPServer extends EventEmitter {
26
26
  this.port = config.getPort();
27
27
  this.logger.info(`Server instantiated with host "${this.host}" on port "${this.port}" using token "${this.config.getToken()}"`);
28
28
  }
29
- onHTTPUnauthorized = (_req, res) => {
29
+ onHTTPUnauthorized(_req, res) {
30
30
  this.logger.error(`HTTP request is not properly authorized, responding with 401`);
31
31
  this.metrics.addUnauthorized();
32
32
  return writeResponse(res, 401, 'Bad or missing authentication.');
33
- };
34
- onWebsocketUnauthorized = (_req, socket) => {
33
+ }
34
+ onWebsocketUnauthorized(_req, socket) {
35
35
  this.logger.error(`Websocket request is not properly authorized, responding with 401`);
36
36
  this.metrics.addUnauthorized();
37
37
  return writeResponse(socket, 401, 'Bad or missing authentication.');
38
- };
38
+ }
39
39
  async start() {
40
40
  this.logger.info(`HTTP Server is starting`);
41
- this.server.on('request', this.handleRequest);
42
- this.server.on('upgrade', this.handleWebSocket);
41
+ this.server.on('request', this.handleRequest.bind(this));
42
+ this.server.on('upgrade', this.handleWebSocket.bind(this));
43
43
  const listenMessage = [
44
44
  `HTTP Server is listening on ${this.config.getServerAddress()}`,
45
45
  `Use ${this.config.getExternalAddress()} for API and connect calls`,
@@ -54,7 +54,7 @@ export class HTTPServer extends EventEmitter {
54
54
  });
55
55
  });
56
56
  }
57
- handleRequest = async (request, res) => {
57
+ async handleRequest(request, res) {
58
58
  this.logger.trace(`Handling inbound HTTP request on "${request.method}: ${request.url}"`);
59
59
  const req = request;
60
60
  const proceed = await this.hooks.before({ req, res });
@@ -171,8 +171,8 @@ export class HTTPServer extends EventEmitter {
171
171
  }
172
172
  return writeResponse(res, 500, e.toString());
173
173
  });
174
- };
175
- handleWebSocket = async (request, socket, head) => {
174
+ }
175
+ async handleWebSocket(request, socket, head) {
176
176
  this.logger.trace(`Handling inbound WebSocket request on "${request.url}"`);
177
177
  const req = request;
178
178
  const proceed = await this.hooks.before({ head, req, socket });
@@ -237,7 +237,7 @@ export class HTTPServer extends EventEmitter {
237
237
  }
238
238
  this.logger.error(`No matching WebSocket route handler for "${req.parsed.href}"`);
239
239
  return writeResponse(socket, 404, 'Not Found');
240
- };
240
+ }
241
241
  async shutdown() {
242
242
  this.logger.info(`HTTP Server is shutting down`);
243
243
  await new Promise((r) => this.server.close(r));
@@ -249,5 +249,5 @@ export class HTTPServer extends EventEmitter {
249
249
  /**
250
250
  * Left blank for downstream SDK modules to optionally implement.
251
251
  */
252
- stop = () => { };
252
+ stop() { }
253
253
  }
@@ -13,5 +13,5 @@ export default class ChromiumBrowserWebSocketRoute extends BrowserWebsocketRoute
13
13
  description: string;
14
14
  path: WebsocketRoutes;
15
15
  tags: APITags[];
16
- handler: (req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: ChromiumCDP) => Promise<void>;
16
+ handler(req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: ChromiumCDP): Promise<void>;
17
17
  }
@@ -9,5 +9,7 @@ export default class ChromiumBrowserWebSocketRoute extends BrowserWebsocketRoute
9
9
  must already be launched in order to not return a 404.`);
10
10
  path = WebsocketRoutes.browser;
11
11
  tags = [APITags.browserWS];
12
- handler = async (req, socket, head, _logger, browser) => browser.proxyWebSocket(req, socket, head);
12
+ async handler(req, socket, head, _logger, browser) {
13
+ return browser.proxyWebSocket(req, socket, head);
14
+ }
13
15
  }
@@ -13,5 +13,5 @@ export default class ChromiumPlaywrightWebSocketRoute extends BrowserWebsocketRo
13
13
  description: string;
14
14
  path: WebsocketRoutes[];
15
15
  tags: APITags[];
16
- handler: (req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: ChromiumPlaywright) => Promise<void>;
16
+ handler(req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: ChromiumPlaywright): Promise<void>;
17
17
  }
@@ -10,7 +10,7 @@ export default class ChromiumPlaywrightWebSocketRoute extends BrowserWebsocketRo
10
10
  WebsocketRoutes.chromiumPlaywright,
11
11
  ];
12
12
  tags = [APITags.browserWS];
13
- handler = async (req, socket, head, _logger, browser) => {
13
+ async handler(req, socket, head, _logger, browser) {
14
14
  const isPlaywright = req.headers['user-agent']
15
15
  ?.toLowerCase()
16
16
  .includes('playwright');
@@ -18,5 +18,5 @@ export default class ChromiumPlaywrightWebSocketRoute extends BrowserWebsocketRo
18
18
  throw new BadRequest(`Only playwright is allowed to work with this route`);
19
19
  }
20
20
  return browser.proxyWebSocket(req, socket, head);
21
- };
21
+ }
22
22
  }
@@ -13,5 +13,5 @@ export default class ChromiumCDPWebSocketRoute extends BrowserWebsocketRoute {
13
13
  description: string;
14
14
  path: WebsocketRoutes[];
15
15
  tags: APITags[];
16
- handler: (req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: ChromiumCDP) => Promise<void>;
16
+ handler(req: Request, socket: Duplex, head: Buffer, _logger: Logger, browser: ChromiumCDP): Promise<void>;
17
17
  }
@@ -7,5 +7,7 @@ export default class ChromiumCDPWebSocketRoute extends BrowserWebsocketRoute {
7
7
  description = `Launch and connect to Chromium with a library like puppeteer or others that work over chrome-devtools-protocol.`;
8
8
  path = [WebsocketRoutes['/'], WebsocketRoutes.chromium];
9
9
  tags = [APITags.browserWS];
10
- handler = async (req, socket, head, _logger, browser) => browser.proxyWebSocket(req, socket, head);
10
+ async handler(req, socket, head, _logger, browser) {
11
+ return browser.proxyWebSocket(req, socket, head);
12
+ }
11
13
  }
@@ -43,5 +43,5 @@ export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
43
43
  method: Methods;
44
44
  path: HTTPRoutes[];
45
45
  tags: APITags[];
46
- handler: (req: Request, res: ServerResponse, logger: Logger, browser: BrowserInstance) => Promise<void>;
46
+ handler(req: Request, res: ServerResponse, logger: Logger, browser: BrowserInstance): Promise<void>;
47
47
  }
@@ -10,7 +10,7 @@ export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
10
10
  method = Methods.post;
11
11
  path = [HTTPRoutes.content, HTTPRoutes.chromiumContent];
12
12
  tags = [APITags.browserAPI];
13
- handler = async (req, res, logger, browser) => {
13
+ async handler(req, res, logger, browser) {
14
14
  logger.info('Content API invoked with body:', req.body);
15
15
  const contentType = !req.headers.accept || req.headers.accept?.includes('*')
16
16
  ? contentTypes.html
@@ -106,5 +106,5 @@ export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
106
106
  page.close().catch(noop);
107
107
  logger.info('Content API request completed');
108
108
  return writeResponse(res, 200, markup, contentTypes.html);
109
- };
109
+ }
110
110
  }
@@ -25,6 +25,6 @@ export default class ChromiumDownloadPostRoute extends BrowserHTTPRoute {
25
25
  method: Methods;
26
26
  path: HTTPRoutes[];
27
27
  tags: APITags[];
28
- handler: (req: Request, res: ServerResponse, logger: Logger, browser: BrowserInstance) => Promise<void>;
28
+ handler(req: Request, res: ServerResponse, logger: Logger, browser: BrowserInstance): Promise<void>;
29
29
  }
30
30
  export {};