@browserless.io/browserless 2.8.0 → 2.10.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 (115) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +41 -3
  3. package/assets/debugger.png +0 -0
  4. package/bin/scaffold/src/hello-world.http.ts +3 -2
  5. package/build/browserless.d.ts +5 -4
  6. package/build/browserless.js +19 -13
  7. package/build/browsers/chrome.cdp.d.ts +2 -2
  8. package/build/browsers/chrome.cdp.js +2 -2
  9. package/build/browsers/chrome.playwright.d.ts +2 -2
  10. package/build/browsers/chrome.playwright.js +2 -2
  11. package/build/browsers/chromium.cdp.d.ts +4 -4
  12. package/build/browsers/chromium.cdp.js +49 -32
  13. package/build/browsers/chromium.playwright.d.ts +4 -4
  14. package/build/browsers/chromium.playwright.js +14 -13
  15. package/build/browsers/firefox.playwright.d.ts +4 -4
  16. package/build/browsers/firefox.playwright.js +14 -13
  17. package/build/browsers/index.d.ts +24 -8
  18. package/build/browsers/index.js +20 -15
  19. package/build/browsers/webkit.playwright.d.ts +4 -4
  20. package/build/browsers/webkit.playwright.js +14 -13
  21. package/build/config.d.ts +3 -0
  22. package/build/config.js +3 -0
  23. package/build/file-system.d.ts +2 -3
  24. package/build/file-system.js +2 -2
  25. package/build/http.d.ts +1 -0
  26. package/build/http.js +1 -0
  27. package/build/index.js +7 -7
  28. package/build/limiter.d.ts +2 -3
  29. package/build/limiter.js +11 -11
  30. package/build/logger.d.ts +16 -9
  31. package/build/logger.js +32 -16
  32. package/build/monitoring.d.ts +2 -3
  33. package/build/monitoring.js +4 -4
  34. package/build/router.d.ts +1 -3
  35. package/build/router.js +21 -22
  36. package/build/routes/chrome/http/content.post.body.json +8 -8
  37. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  38. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  39. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  40. package/build/routes/chromium/http/content.post.body.json +8 -8
  41. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  42. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  43. package/build/routes/chromium/http/screenshot.post.body.json +8 -8
  44. package/build/routes/management/http/pressure.get.d.ts +63 -0
  45. package/build/routes/management/http/pressure.get.js +56 -0
  46. package/build/routes/management/http/pressure.get.response.json +76 -0
  47. package/build/routes/management/http/static.get.js +3 -3
  48. package/build/routes/management/tests/management.spec.js +16 -0
  49. package/build/server.d.ts +1 -3
  50. package/build/server.js +33 -30
  51. package/build/shared/content.http.d.ts +1 -1
  52. package/build/shared/content.http.js +4 -1
  53. package/build/shared/download.http.js +9 -9
  54. package/build/shared/function.http.js +2 -2
  55. package/build/shared/json-protocol.http.d.ts +3 -3
  56. package/build/shared/json-protocol.http.js +2 -2
  57. package/build/shared/json-version.http.d.ts +3 -3
  58. package/build/shared/json-version.http.js +2 -2
  59. package/build/shared/pdf.http.d.ts +1 -1
  60. package/build/shared/pdf.http.js +6 -4
  61. package/build/shared/performance.http.js +1 -0
  62. package/build/shared/scrape.http.d.ts +1 -1
  63. package/build/shared/scrape.http.js +4 -1
  64. package/build/shared/screenshot.http.d.ts +1 -1
  65. package/build/shared/screenshot.http.js +4 -1
  66. package/build/shared/utils/function/handler.js +7 -7
  67. package/build/shared/utils/performance/child.js +4 -4
  68. package/build/shared/utils/performance/main.d.ts +1 -1
  69. package/build/shared/utils/performance/main.js +5 -7
  70. package/build/shared/utils/performance/types.d.ts +2 -1
  71. package/build/types.d.ts +10 -1
  72. package/build/types.js +10 -1
  73. package/build/utils.d.ts +1 -1
  74. package/build/utils.js +6 -2
  75. package/package.json +18 -15
  76. package/scripts/install-debugger.js +55 -15
  77. package/src/browserless.ts +25 -12
  78. package/src/browsers/chrome.cdp.ts +2 -5
  79. package/src/browsers/chrome.playwright.ts +2 -5
  80. package/src/browsers/chromium.cdp.ts +84 -35
  81. package/src/browsers/chromium.playwright.ts +26 -13
  82. package/src/browsers/firefox.playwright.ts +28 -13
  83. package/src/browsers/index.ts +24 -16
  84. package/src/browsers/webkit.playwright.ts +28 -13
  85. package/src/config.ts +4 -0
  86. package/src/file-system.ts +2 -7
  87. package/src/http.ts +1 -0
  88. package/src/index.ts +7 -7
  89. package/src/limiter.ts +13 -11
  90. package/src/logger.ts +39 -18
  91. package/src/monitoring.ts +6 -8
  92. package/src/router.ts +20 -20
  93. package/src/routes/management/http/pressure.get.ts +135 -0
  94. package/src/routes/management/http/static.get.ts +3 -5
  95. package/src/routes/management/tests/management.spec.ts +26 -0
  96. package/src/server.ts +43 -30
  97. package/src/shared/content.http.ts +5 -1
  98. package/src/shared/download.http.ts +9 -9
  99. package/src/shared/function.http.ts +2 -2
  100. package/src/shared/json-protocol.http.ts +8 -3
  101. package/src/shared/json-version.http.ts +8 -4
  102. package/src/shared/pdf.http.ts +6 -4
  103. package/src/shared/performance.http.ts +1 -0
  104. package/src/shared/scrape.http.ts +5 -1
  105. package/src/shared/screenshot.http.ts +4 -1
  106. package/src/shared/utils/function/handler.ts +7 -7
  107. package/src/shared/utils/performance/child.ts +4 -4
  108. package/src/shared/utils/performance/main.ts +5 -6
  109. package/src/shared/utils/performance/types.ts +2 -1
  110. package/src/types.ts +9 -0
  111. package/src/utils.ts +7 -2
  112. package/static/docs/swagger.json +138 -10
  113. package/static/docs/swagger.min.json +137 -9
  114. package/static/function/client.js +4290 -5542
  115. package/static/function/index.html +4290 -5542
package/build/logger.d.ts CHANGED
@@ -1,12 +1,19 @@
1
- import { Request, createLogger } from '@browserless.io/browserless';
1
+ import { Request } from '@browserless.io/browserless';
2
2
  export declare class Logger {
3
3
  protected prefix: string;
4
- protected request: Request;
5
- protected _log: ReturnType<typeof createLogger>;
6
- protected _verbose: ReturnType<typeof createLogger>;
7
- protected _error: ReturnType<typeof createLogger>;
8
- constructor(prefix: string, request: Request);
9
- verbose(...messages: string[]): void;
10
- log(...messages: string[]): void;
11
- error(...messages: string[]): void;
4
+ protected request?: Request | undefined;
5
+ protected _trace: (...args: unknown[]) => void;
6
+ protected _debug: (...args: unknown[]) => void;
7
+ protected _info: (...args: unknown[]) => void;
8
+ protected _warn: (...args: unknown[]) => void;
9
+ protected _error: (...args: unknown[]) => void;
10
+ protected _fatal: (...args: unknown[]) => void;
11
+ constructor(prefix: string, request?: Request | undefined);
12
+ protected get reqInfo(): string;
13
+ trace: (...messages: unknown[]) => void;
14
+ debug: (...messages: unknown[]) => void;
15
+ info: (...messages: unknown[]) => void;
16
+ warn: (...messages: unknown[]) => void;
17
+ error: (...messages: unknown[]) => void;
18
+ fatal: (...messages: unknown[]) => void;
12
19
  }
package/build/logger.js CHANGED
@@ -2,26 +2,42 @@ import { createLogger } from '@browserless.io/browserless';
2
2
  export class Logger {
3
3
  prefix;
4
4
  request;
5
- _log;
6
- _verbose;
5
+ _trace;
6
+ _debug;
7
+ _info;
8
+ _warn;
7
9
  _error;
10
+ _fatal;
8
11
  constructor(prefix, request) {
9
12
  this.prefix = prefix;
10
13
  this.request = request;
11
- this._log = createLogger(prefix);
12
- this._verbose = this._log.extend('verbose');
13
- this._error = this._log.extend('error');
14
+ const logger = createLogger(prefix);
15
+ this._trace = logger.extend('trace');
16
+ this._debug = logger.extend('debug');
17
+ this._info = logger.extend('info');
18
+ this._warn = logger.extend('warn');
19
+ this._error = logger.extend('error');
20
+ this._fatal = logger.extend('fatal');
14
21
  }
15
- verbose(...messages) {
16
- const ip = this.request.socket.remoteAddress ?? 'Unknown';
17
- this._verbose(ip, ...messages);
18
- }
19
- log(...messages) {
20
- const ip = this.request.socket.remoteAddress ?? 'Unknown';
21
- this._log(ip, ...messages);
22
- }
23
- error(...messages) {
24
- const ip = this.request.socket.remoteAddress ?? 'Unknown';
25
- this._error(ip, ...messages);
22
+ get reqInfo() {
23
+ return this.request ? this.request.socket.remoteAddress ?? 'Unknown' : '';
26
24
  }
25
+ trace = (...messages) => {
26
+ this._trace(this.reqInfo, ...messages);
27
+ };
28
+ debug = (...messages) => {
29
+ this._debug(this.reqInfo, ...messages);
30
+ };
31
+ info = (...messages) => {
32
+ this._info(this.reqInfo, ...messages);
33
+ };
34
+ warn = (...messages) => {
35
+ this._warn(this.reqInfo, ...messages);
36
+ };
37
+ error = (...messages) => {
38
+ this._error(this.reqInfo, ...messages);
39
+ };
40
+ fatal = (...messages) => {
41
+ this._fatal(this.reqInfo, ...messages);
42
+ };
27
43
  }
@@ -1,10 +1,9 @@
1
- /// <reference types="debug" />
2
1
  /// <reference types="node" />
3
- import { Config, IResourceLoad } from '@browserless.io/browserless';
2
+ import { Config, IResourceLoad, Logger } from '@browserless.io/browserless';
4
3
  import { EventEmitter } from 'events';
5
4
  export declare class Monitoring extends EventEmitter {
6
5
  protected config: Config;
7
- protected log: import("debug").Debugger;
6
+ protected log: Logger;
8
7
  constructor(config: Config);
9
8
  getMachineStats: () => Promise<IResourceLoad>;
10
9
  overloaded: () => Promise<{
@@ -1,9 +1,9 @@
1
- import { createLogger, } from '@browserless.io/browserless';
1
+ import { Logger } from '@browserless.io/browserless';
2
2
  import { EventEmitter } from 'events';
3
3
  import si from 'systeminformation';
4
4
  export class Monitoring extends EventEmitter {
5
5
  config;
6
- log = createLogger('hardware');
6
+ log = new Logger('hardware');
7
7
  constructor(config) {
8
8
  super();
9
9
  this.config = config;
@@ -13,7 +13,7 @@ export class Monitoring extends EventEmitter {
13
13
  si.currentLoad(),
14
14
  si.mem(),
15
15
  ]).catch((err) => {
16
- this.log(`Error checking machine stats`, err);
16
+ this.log.error(`Error checking machine stats`, err);
17
17
  return [null, null];
18
18
  });
19
19
  const cpu = cpuLoad ? cpuLoad.currentLoadUser / 100 : null;
@@ -27,7 +27,7 @@ export class Monitoring extends EventEmitter {
27
27
  const { cpu, memory } = await this.getMachineStats();
28
28
  const cpuInt = cpu && Math.ceil(cpu * 100);
29
29
  const memoryInt = memory && Math.ceil(memory * 100);
30
- this.log(`Checking overload status: CPU ${cpuInt}% Memory ${memoryInt}%`);
30
+ this.log.info(`Checking overload status: CPU ${cpuInt}% Memory ${memoryInt}%`);
31
31
  const cpuOverloaded = !!(cpuInt && cpuInt >= this.config.getCPULimit());
32
32
  const memoryOverloaded = !!(memoryInt && memoryInt >= this.config.getMemoryLimit());
33
33
  return {
package/build/router.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="debug" />
2
1
  /// <reference types="node" />
3
2
  /// <reference types="node" />
4
3
  /// <reference types="node" />
@@ -10,8 +9,7 @@ export declare class Router extends EventEmitter {
10
9
  protected browserManager: BrowserManager;
11
10
  protected limiter: Limiter;
12
11
  protected logger: typeof Logger;
13
- protected log: import("debug").Debugger;
14
- protected verbose: import("debug").Debugger;
12
+ protected log: Logger;
15
13
  protected httpRoutes: Array<HTTPRoute | BrowserHTTPRoute>;
16
14
  protected webSocketRoutes: Array<WebSocketRoute | BrowserWebsocketRoute>;
17
15
  constructor(config: Config, browserManager: BrowserManager, limiter: Limiter, logger: typeof Logger);
package/build/router.js CHANGED
@@ -1,4 +1,4 @@
1
- import { HTTPManagementRoutes, contentTypes, createLogger, isConnected, writeResponse, } from '@browserless.io/browserless';
1
+ import { HTTPManagementRoutes, Logger, contentTypes, isConnected, writeResponse, } from '@browserless.io/browserless';
2
2
  import { EventEmitter } from 'events';
3
3
  import micromatch from 'micromatch';
4
4
  export class Router extends EventEmitter {
@@ -6,8 +6,7 @@ export class Router extends EventEmitter {
6
6
  browserManager;
7
7
  limiter;
8
8
  logger;
9
- log = createLogger('router');
10
- verbose = createLogger('router:verbose');
9
+ log = new Logger('router');
11
10
  httpRoutes = [];
12
11
  webSocketRoutes = [];
13
12
  constructor(config, browserManager, limiter, logger) {
@@ -22,31 +21,31 @@ export class Router extends EventEmitter {
22
21
  return timer ? +timer : undefined;
23
22
  }
24
23
  onQueueFullHTTP = (_req, res) => {
25
- this.log(`Queue is full, sending 429 response`);
24
+ this.log.warn(`Queue is full, sending 429 response`);
26
25
  return writeResponse(res, 429, 'Too many requests');
27
26
  };
28
27
  onQueueFullWebSocket = (_req, socket) => {
29
- this.log(`Queue is full, sending 429 response`);
28
+ this.log.warn(`Queue is full, sending 429 response`);
30
29
  return writeResponse(socket, 429, 'Too many requests');
31
30
  };
32
31
  onHTTPTimeout = (_req, res) => {
33
- this.log(`HTTP job has timedout, sending 429 response`);
32
+ this.log.error(`HTTP job has timedout, sending 429 response`);
34
33
  return writeResponse(res, 408, 'Request has timed out');
35
34
  };
36
35
  onWebsocketTimeout = (_req, socket) => {
37
- this.log(`Websocket job has timedout, sending 429 response`);
36
+ this.log.error(`Websocket job has timedout, sending 429 response`);
38
37
  return writeResponse(socket, 408, 'Request has timed out');
39
38
  };
40
39
  wrapHTTPHandler = (route, handler) => async (req, res) => {
41
40
  if (!isConnected(res)) {
42
- this.log(`HTTP Request has closed prior to running`);
41
+ this.log.warn(`HTTP Request has closed prior to running`);
43
42
  return Promise.resolve();
44
43
  }
45
44
  const logger = new this.logger(route.name, req);
46
45
  if ('browser' in route && route.browser) {
47
- const browser = await this.browserManager.getBrowserForRequest(req, route);
46
+ const browser = await this.browserManager.getBrowserForRequest(req, route, logger);
48
47
  if (!isConnected(res)) {
49
- this.log(`HTTP Request has closed prior to running`);
48
+ this.log.warn(`HTTP Request has closed prior to running`);
50
49
  this.browserManager.complete(browser);
51
50
  return Promise.resolve();
52
51
  }
@@ -54,7 +53,7 @@ export class Router extends EventEmitter {
54
53
  return writeResponse(res, 500, `Error loading the browser`);
55
54
  }
56
55
  try {
57
- this.verbose(`Running found HTTP handler.`);
56
+ this.log.trace(`Running found HTTP handler.`);
58
57
  return await Promise.race([
59
58
  handler(req, res, logger, browser),
60
59
  new Promise((resolve, reject) => {
@@ -62,14 +61,14 @@ export class Router extends EventEmitter {
62
61
  if (!res.writableEnded) {
63
62
  reject(new Error(`Request closed prior to writing results`));
64
63
  }
65
- this.verbose(`Response has been written, resolving`);
64
+ this.log.trace(`Response has been written, resolving`);
66
65
  resolve(null);
67
66
  });
68
67
  }),
69
68
  ]);
70
69
  }
71
70
  finally {
72
- this.verbose(`HTTP Request handler has finished.`);
71
+ this.log.trace(`HTTP Request handler has finished.`);
73
72
  this.browserManager.complete(browser);
74
73
  }
75
74
  }
@@ -77,14 +76,14 @@ export class Router extends EventEmitter {
77
76
  };
78
77
  wrapWebSocketHandler = (route, handler) => async (req, socket, head) => {
79
78
  if (!isConnected(socket)) {
80
- this.log(`WebSocket Request has closed prior to running`);
79
+ this.log.warn(`WebSocket Request has closed prior to running`);
81
80
  return Promise.resolve();
82
81
  }
83
82
  const logger = new this.logger(route.name, req);
84
83
  if ('browser' in route && route.browser) {
85
- const browser = await this.browserManager.getBrowserForRequest(req, route);
84
+ const browser = await this.browserManager.getBrowserForRequest(req, route, logger);
86
85
  if (!isConnected(socket)) {
87
- this.log(`WebSocket Request has closed prior to running`);
86
+ this.log.warn(`WebSocket Request has closed prior to running`);
88
87
  this.browserManager.complete(browser);
89
88
  return Promise.resolve();
90
89
  }
@@ -92,11 +91,11 @@ export class Router extends EventEmitter {
92
91
  return writeResponse(socket, 500, `Error loading the browser.`);
93
92
  }
94
93
  try {
95
- this.verbose(`Running found WebSocket handler.`);
94
+ this.log.trace(`Running found WebSocket handler.`);
96
95
  await handler(req, socket, head, logger, browser);
97
96
  }
98
97
  finally {
99
- this.verbose(`WebSocket Request handler has finished.`);
98
+ this.log.trace(`WebSocket Request handler has finished.`);
100
99
  this.browserManager.complete(browser);
101
100
  }
102
101
  return;
@@ -104,7 +103,7 @@ export class Router extends EventEmitter {
104
103
  return handler(req, socket, head, logger);
105
104
  };
106
105
  registerHTTPRoute(route) {
107
- this.verbose(`Registering HTTP ${route.method.toUpperCase()} ${route.path}`);
106
+ this.log.trace(`Registering HTTP ${route.method.toUpperCase()} ${route.path}`);
108
107
  const bound = route.handler.bind(route);
109
108
  const wrapped = this.wrapHTTPHandler(route, bound);
110
109
  route.handler = route.concurrency
@@ -114,13 +113,13 @@ export class Router extends EventEmitter {
114
113
  const registeredPaths = this.httpRoutes.map((r) => r.path).flat();
115
114
  const duplicatePaths = registeredPaths.filter((path) => route.path.includes(path));
116
115
  if (duplicatePaths.length) {
117
- this.log(`Found duplicate routes: ${duplicatePaths.join(', ')}`);
116
+ this.log.warn(`Found duplicate routes: ${duplicatePaths.join(', ')}`);
118
117
  }
119
118
  this.httpRoutes.push(route);
120
119
  return route;
121
120
  }
122
121
  registerWebSocketRoute(route) {
123
- this.verbose(`Registering WebSocket "${route.path}"`);
122
+ this.log.trace(`Registering WebSocket "${route.path}"`);
124
123
  const bound = route.handler.bind(route);
125
124
  const wrapped = this.wrapWebSocketHandler(route, bound);
126
125
  route.handler = route.concurrency
@@ -130,7 +129,7 @@ export class Router extends EventEmitter {
130
129
  const registeredPaths = this.webSocketRoutes.map((r) => r.path).flat();
131
130
  const duplicatePaths = registeredPaths.filter((path) => route.path.includes(path));
132
131
  if (duplicatePaths.length) {
133
- this.log(`Found duplicate routes: ${duplicatePaths.join(', ')}`);
132
+ this.log.warn(`Found duplicate routes: ${duplicatePaths.join(', ')}`);
134
133
  }
135
134
  this.webSocketRoutes.push(route);
136
135
  return route;
@@ -394,14 +394,14 @@
394
394
  "length": {
395
395
  "type": "number"
396
396
  },
397
- "__@toStringTag@10944": {
397
+ "__@toStringTag@10986": {
398
398
  "type": "string",
399
399
  "const": "Uint8Array"
400
400
  }
401
401
  },
402
402
  "required": [
403
403
  "BYTES_PER_ELEMENT",
404
- "__@toStringTag@10944",
404
+ "__@toStringTag@10986",
405
405
  "buffer",
406
406
  "byteLength",
407
407
  "byteOffset",
@@ -436,13 +436,13 @@
436
436
  "byteLength": {
437
437
  "type": "number"
438
438
  },
439
- "__@toStringTag@10944": {
439
+ "__@toStringTag@10986": {
440
440
  "type": "string"
441
441
  }
442
442
  },
443
443
  "additionalProperties": false,
444
444
  "required": [
445
- "__@toStringTag@10944",
445
+ "__@toStringTag@10986",
446
446
  "byteLength"
447
447
  ]
448
448
  },
@@ -452,18 +452,18 @@
452
452
  "byteLength": {
453
453
  "type": "number"
454
454
  },
455
- "__@species@11045": {
455
+ "__@species@11087": {
456
456
  "$ref": "#/definitions/SharedArrayBuffer"
457
457
  },
458
- "__@toStringTag@10944": {
458
+ "__@toStringTag@10986": {
459
459
  "type": "string",
460
460
  "const": "SharedArrayBuffer"
461
461
  }
462
462
  },
463
463
  "additionalProperties": false,
464
464
  "required": [
465
- "__@species@11045",
466
- "__@toStringTag@10944",
465
+ "__@species@11087",
466
+ "__@toStringTag@10986",
467
467
  "byteLength"
468
468
  ]
469
469
  },
@@ -535,14 +535,14 @@
535
535
  "length": {
536
536
  "type": "number"
537
537
  },
538
- "__@toStringTag@87018": {
538
+ "__@toStringTag@65656": {
539
539
  "type": "string",
540
540
  "const": "Uint8Array"
541
541
  }
542
542
  },
543
543
  "required": [
544
544
  "BYTES_PER_ELEMENT",
545
- "__@toStringTag@87018",
545
+ "__@toStringTag@65656",
546
546
  "buffer",
547
547
  "byteLength",
548
548
  "byteOffset",
@@ -577,13 +577,13 @@
577
577
  "byteLength": {
578
578
  "type": "number"
579
579
  },
580
- "__@toStringTag@87018": {
580
+ "__@toStringTag@65656": {
581
581
  "type": "string"
582
582
  }
583
583
  },
584
584
  "additionalProperties": false,
585
585
  "required": [
586
- "__@toStringTag@87018",
586
+ "__@toStringTag@65656",
587
587
  "byteLength"
588
588
  ]
589
589
  },
@@ -593,18 +593,18 @@
593
593
  "byteLength": {
594
594
  "type": "number"
595
595
  },
596
- "__@species@87119": {
596
+ "__@species@65757": {
597
597
  "$ref": "#/definitions/SharedArrayBuffer"
598
598
  },
599
- "__@toStringTag@87018": {
599
+ "__@toStringTag@65656": {
600
600
  "type": "string",
601
601
  "const": "SharedArrayBuffer"
602
602
  }
603
603
  },
604
604
  "additionalProperties": false,
605
605
  "required": [
606
- "__@species@87119",
607
- "__@toStringTag@87018",
606
+ "__@species@65757",
607
+ "__@toStringTag@65656",
608
608
  "byteLength"
609
609
  ]
610
610
  },
@@ -441,14 +441,14 @@
441
441
  "length": {
442
442
  "type": "number"
443
443
  },
444
- "__@toStringTag@108954": {
444
+ "__@toStringTag@87676": {
445
445
  "type": "string",
446
446
  "const": "Uint8Array"
447
447
  }
448
448
  },
449
449
  "required": [
450
450
  "BYTES_PER_ELEMENT",
451
- "__@toStringTag@108954",
451
+ "__@toStringTag@87676",
452
452
  "buffer",
453
453
  "byteLength",
454
454
  "byteOffset",
@@ -483,13 +483,13 @@
483
483
  "byteLength": {
484
484
  "type": "number"
485
485
  },
486
- "__@toStringTag@108954": {
486
+ "__@toStringTag@87676": {
487
487
  "type": "string"
488
488
  }
489
489
  },
490
490
  "additionalProperties": false,
491
491
  "required": [
492
- "__@toStringTag@108954",
492
+ "__@toStringTag@87676",
493
493
  "byteLength"
494
494
  ]
495
495
  },
@@ -499,18 +499,18 @@
499
499
  "byteLength": {
500
500
  "type": "number"
501
501
  },
502
- "__@species@109055": {
502
+ "__@species@87777": {
503
503
  "$ref": "#/definitions/SharedArrayBuffer"
504
504
  },
505
- "__@toStringTag@108954": {
505
+ "__@toStringTag@87676": {
506
506
  "type": "string",
507
507
  "const": "SharedArrayBuffer"
508
508
  }
509
509
  },
510
510
  "additionalProperties": false,
511
511
  "required": [
512
- "__@species@109055",
513
- "__@toStringTag@108954",
512
+ "__@species@87777",
513
+ "__@toStringTag@87676",
514
514
  "byteLength"
515
515
  ]
516
516
  },
@@ -484,14 +484,14 @@
484
484
  "length": {
485
485
  "type": "number"
486
486
  },
487
- "__@toStringTag@120132": {
487
+ "__@toStringTag@110043": {
488
488
  "type": "string",
489
489
  "const": "Uint8Array"
490
490
  }
491
491
  },
492
492
  "required": [
493
493
  "BYTES_PER_ELEMENT",
494
- "__@toStringTag@120132",
494
+ "__@toStringTag@110043",
495
495
  "buffer",
496
496
  "byteLength",
497
497
  "byteOffset",
@@ -526,13 +526,13 @@
526
526
  "byteLength": {
527
527
  "type": "number"
528
528
  },
529
- "__@toStringTag@120132": {
529
+ "__@toStringTag@110043": {
530
530
  "type": "string"
531
531
  }
532
532
  },
533
533
  "additionalProperties": false,
534
534
  "required": [
535
- "__@toStringTag@120132",
535
+ "__@toStringTag@110043",
536
536
  "byteLength"
537
537
  ]
538
538
  },
@@ -542,18 +542,18 @@
542
542
  "byteLength": {
543
543
  "type": "number"
544
544
  },
545
- "__@species@120233": {
545
+ "__@species@110144": {
546
546
  "$ref": "#/definitions/SharedArrayBuffer"
547
547
  },
548
- "__@toStringTag@120132": {
548
+ "__@toStringTag@110043": {
549
549
  "type": "string",
550
550
  "const": "SharedArrayBuffer"
551
551
  }
552
552
  },
553
553
  "additionalProperties": false,
554
554
  "required": [
555
- "__@species@120233",
556
- "__@toStringTag@120132",
555
+ "__@species@110144",
556
+ "__@toStringTag@110043",
557
557
  "byteLength"
558
558
  ]
559
559
  },
@@ -394,14 +394,14 @@
394
394
  "length": {
395
395
  "type": "number"
396
396
  },
397
- "__@toStringTag@142053": {
397
+ "__@toStringTag@98872": {
398
398
  "type": "string",
399
399
  "const": "Uint8Array"
400
400
  }
401
401
  },
402
402
  "required": [
403
403
  "BYTES_PER_ELEMENT",
404
- "__@toStringTag@142053",
404
+ "__@toStringTag@98872",
405
405
  "buffer",
406
406
  "byteLength",
407
407
  "byteOffset",
@@ -436,13 +436,13 @@
436
436
  "byteLength": {
437
437
  "type": "number"
438
438
  },
439
- "__@toStringTag@142053": {
439
+ "__@toStringTag@98872": {
440
440
  "type": "string"
441
441
  }
442
442
  },
443
443
  "additionalProperties": false,
444
444
  "required": [
445
- "__@toStringTag@142053",
445
+ "__@toStringTag@98872",
446
446
  "byteLength"
447
447
  ]
448
448
  },
@@ -452,18 +452,18 @@
452
452
  "byteLength": {
453
453
  "type": "number"
454
454
  },
455
- "__@species@142154": {
455
+ "__@species@98973": {
456
456
  "$ref": "#/definitions/SharedArrayBuffer"
457
457
  },
458
- "__@toStringTag@142053": {
458
+ "__@toStringTag@98872": {
459
459
  "type": "string",
460
460
  "const": "SharedArrayBuffer"
461
461
  }
462
462
  },
463
463
  "additionalProperties": false,
464
464
  "required": [
465
- "__@species@142154",
466
- "__@toStringTag@142053",
465
+ "__@species@98973",
466
+ "__@toStringTag@98872",
467
467
  "byteLength"
468
468
  ]
469
469
  },
@@ -535,14 +535,14 @@
535
535
  "length": {
536
536
  "type": "number"
537
537
  },
538
- "__@toStringTag@207273": {
538
+ "__@toStringTag@230185": {
539
539
  "type": "string",
540
540
  "const": "Uint8Array"
541
541
  }
542
542
  },
543
543
  "required": [
544
544
  "BYTES_PER_ELEMENT",
545
- "__@toStringTag@207273",
545
+ "__@toStringTag@230185",
546
546
  "buffer",
547
547
  "byteLength",
548
548
  "byteOffset",
@@ -577,13 +577,13 @@
577
577
  "byteLength": {
578
578
  "type": "number"
579
579
  },
580
- "__@toStringTag@207273": {
580
+ "__@toStringTag@230185": {
581
581
  "type": "string"
582
582
  }
583
583
  },
584
584
  "additionalProperties": false,
585
585
  "required": [
586
- "__@toStringTag@207273",
586
+ "__@toStringTag@230185",
587
587
  "byteLength"
588
588
  ]
589
589
  },
@@ -593,18 +593,18 @@
593
593
  "byteLength": {
594
594
  "type": "number"
595
595
  },
596
- "__@species@207374": {
596
+ "__@species@230286": {
597
597
  "$ref": "#/definitions/SharedArrayBuffer"
598
598
  },
599
- "__@toStringTag@207273": {
599
+ "__@toStringTag@230185": {
600
600
  "type": "string",
601
601
  "const": "SharedArrayBuffer"
602
602
  }
603
603
  },
604
604
  "additionalProperties": false,
605
605
  "required": [
606
- "__@species@207374",
607
- "__@toStringTag@207273",
606
+ "__@species@230286",
607
+ "__@toStringTag@230185",
608
608
  "byteLength"
609
609
  ]
610
610
  },