@browserless.io/browserless 2.24.0-beta-5 → 2.24.1

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 (79) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/bin/browserless.js +1 -1
  3. package/build/browsers/browsers.playwright.d.ts +1 -0
  4. package/build/browsers/browsers.playwright.js +3 -0
  5. package/build/browsers/index.d.ts +2 -1
  6. package/build/browsers/index.js +28 -7
  7. package/build/http.d.ts +5 -0
  8. package/build/http.js +1 -0
  9. package/build/routes/chrome/http/content.post.body.json +8 -8
  10. package/build/routes/chrome/http/content.post.query.json +4 -0
  11. package/build/routes/chrome/http/download.post.query.json +4 -0
  12. package/build/routes/chrome/http/function.post.query.json +4 -0
  13. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  14. package/build/routes/chrome/http/pdf.post.query.json +4 -0
  15. package/build/routes/chrome/http/performance.post.query.json +4 -0
  16. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  17. package/build/routes/chrome/http/scrape.post.query.json +4 -0
  18. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  19. package/build/routes/chrome/http/screenshot.post.query.json +4 -0
  20. package/build/routes/chrome/tests/kill-sessions.spec.d.ts +1 -0
  21. package/build/routes/chrome/tests/kill-sessions.spec.js +80 -0
  22. package/build/routes/chrome/ws/browser.query.json +4 -0
  23. package/build/routes/chrome/ws/cdp.query.json +4 -0
  24. package/build/routes/chrome/ws/page.query.json +4 -0
  25. package/build/routes/chrome/ws/playwright.query.json +4 -0
  26. package/build/routes/chromium/http/content.post.body.json +8 -8
  27. package/build/routes/chromium/http/content.post.query.json +4 -0
  28. package/build/routes/chromium/http/download.post.query.json +4 -0
  29. package/build/routes/chromium/http/function.post.query.json +4 -0
  30. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  31. package/build/routes/chromium/http/pdf.post.query.json +4 -0
  32. package/build/routes/chromium/http/performance.post.query.json +4 -0
  33. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  34. package/build/routes/chromium/http/scrape.post.query.json +4 -0
  35. package/build/routes/chromium/http/screenshot.post.body.json +8 -8
  36. package/build/routes/chromium/http/screenshot.post.query.json +4 -0
  37. package/build/routes/chromium/tests/kill-sessions.spec.d.ts +1 -0
  38. package/build/routes/chromium/tests/kill-sessions.spec.js +80 -0
  39. package/build/routes/chromium/tests/websocket.spec.js +23 -0
  40. package/build/routes/chromium/ws/browser.query.json +4 -0
  41. package/build/routes/chromium/ws/cdp.query.json +4 -0
  42. package/build/routes/chromium/ws/page.query.json +4 -0
  43. package/build/routes/chromium/ws/playwright.query.json +4 -0
  44. package/build/routes/firefox/tests/kill-sessions.spec.d.ts +1 -0
  45. package/build/routes/firefox/tests/kill-sessions.spec.js +72 -0
  46. package/build/routes/firefox/ws/playwright.query.json +4 -0
  47. package/build/routes/management/http/kill.get.d.ts +21 -0
  48. package/build/routes/management/http/kill.get.js +19 -0
  49. package/build/routes/management/http/kill.get.query.json +193 -0
  50. package/build/routes/management/http/meta.get.js +3 -2
  51. package/build/routes/management/http/sessions.get.query.json +1 -0
  52. package/build/routes/management/tests/management.spec.js +12 -0
  53. package/build/routes/webkit/tests/kill-sessions.spec.d.ts +1 -0
  54. package/build/routes/webkit/tests/kill-sessions.spec.js +72 -0
  55. package/build/routes/webkit/ws/playwright.query.json +4 -0
  56. package/build/shared/utils/performance/main.js +2 -1
  57. package/build/types.d.ts +2 -0
  58. package/build/types.js +1 -0
  59. package/build/utils.d.ts +1 -1
  60. package/build/utils.js +1 -10
  61. package/package.json +13 -13
  62. package/src/browsers/browsers.playwright.ts +3 -0
  63. package/src/browsers/index.ts +33 -12
  64. package/src/http.ts +6 -0
  65. package/src/routes/chrome/tests/kill-sessions.spec.ts +99 -0
  66. package/src/routes/chromium/tests/kill-sessions.spec.ts +99 -0
  67. package/src/routes/chromium/tests/websocket.spec.ts +29 -0
  68. package/src/routes/firefox/tests/kill-sessions.spec.ts +99 -0
  69. package/src/routes/management/http/kill.get.ts +40 -0
  70. package/src/routes/management/http/meta.get.ts +12 -10
  71. package/src/routes/management/tests/management.spec.ts +19 -0
  72. package/src/routes/webkit/tests/kill-sessions.spec.ts +99 -0
  73. package/src/shared/utils/performance/main.ts +2 -8
  74. package/src/types.ts +1 -0
  75. package/src/utils.ts +2 -11
  76. package/static/docs/swagger.json +297 -10
  77. package/static/docs/swagger.min.json +296 -9
  78. package/static/function/client.js +157 -42
  79. package/static/function/index.html +157 -42
@@ -0,0 +1,99 @@
1
+ import { Browserless, Config, Metrics } from '@browserless.io/browserless';
2
+ import { expect } from 'chai';
3
+ import puppeteer from 'puppeteer-core';
4
+
5
+ describe('/kill API', function () {
6
+ let browserless: Browserless;
7
+
8
+ const start = ({
9
+ config = new Config(),
10
+ metrics = new Metrics(),
11
+ }: { config?: Config; metrics?: Metrics } = {}) => {
12
+ config.setToken('6R0W53R135510');
13
+ browserless = new Browserless({ config, metrics });
14
+ return browserless.start();
15
+ };
16
+
17
+ afterEach(async () => {
18
+ await browserless.stop();
19
+ });
20
+
21
+ it('Kill all sessions', async () => {
22
+ await start();
23
+ const browser1 = await puppeteer.connect({
24
+ browserWSEndpoint: `ws://localhost:3000/chrome?token=6R0W53R135510`,
25
+ });
26
+ const browser2 = await puppeteer.connect({
27
+ browserWSEndpoint: `ws://localhost:3000/chrome?token=6R0W53R135510`,
28
+ });
29
+
30
+ await fetch('http://localhost:3000/kill/all?token=6R0W53R135510').then(
31
+ async (res) => {
32
+ expect(res.status).to.equal(204);
33
+ },
34
+ );
35
+
36
+ let errorThrown1;
37
+ try {
38
+ await browser1.newPage();
39
+ } catch (e) {
40
+ errorThrown1 = e;
41
+ }
42
+ let errorThrown2;
43
+ try {
44
+ await browser2.newPage();
45
+ } catch (e) {
46
+ errorThrown2 = e;
47
+ }
48
+ expect((errorThrown1 as Error).message).contains('closed');
49
+ expect((errorThrown2 as Error).message).contains('closed');
50
+ });
51
+
52
+ it('Kill session by browserId', async () => {
53
+ await start();
54
+ const browser = await puppeteer.connect({
55
+ browserWSEndpoint: `ws://localhost:3000/chrome?token=6R0W53R135510`,
56
+ });
57
+
58
+ await fetch('http://localhost:3000/sessions?token=6R0W53R135510').then(
59
+ async (res) => {
60
+ const sessions = await res.json();
61
+ const browserId = sessions[0].browserId;
62
+ await fetch(
63
+ `http://localhost:3000/kill/${browserId}?token=6R0W53R135510`,
64
+ ).then(async (res) => {
65
+ expect(res.status).to.equal(204);
66
+ });
67
+ },
68
+ );
69
+
70
+ let errorThrown;
71
+ try {
72
+ await browser.newPage();
73
+ } catch (e) {
74
+ errorThrown = e;
75
+ }
76
+ expect((errorThrown as Error).message).contains('closed');
77
+ });
78
+
79
+ it('Kill session by trackingId', async () => {
80
+ await start();
81
+ const browser = await puppeteer.connect({
82
+ browserWSEndpoint: `ws://localhost:3000/chrome?token=6R0W53R135510&trackingId=session-1`,
83
+ });
84
+
85
+ await fetch(
86
+ 'http://localhost:3000/kill/session-1?token=6R0W53R135510',
87
+ ).then(async (res) => {
88
+ expect(res.status).to.equal(204);
89
+ });
90
+
91
+ let errorThrown;
92
+ try {
93
+ await browser.newPage();
94
+ } catch (e) {
95
+ errorThrown = e;
96
+ }
97
+ expect((errorThrown as Error).message).contains('closed');
98
+ });
99
+ });
@@ -0,0 +1,99 @@
1
+ import { Browserless, Config, Metrics } from '@browserless.io/browserless';
2
+ import { expect } from 'chai';
3
+ import puppeteer from 'puppeteer-core';
4
+
5
+ describe('/kill API', function () {
6
+ let browserless: Browserless;
7
+
8
+ const start = ({
9
+ config = new Config(),
10
+ metrics = new Metrics(),
11
+ }: { config?: Config; metrics?: Metrics } = {}) => {
12
+ config.setToken('6R0W53R135510');
13
+ browserless = new Browserless({ config, metrics });
14
+ return browserless.start();
15
+ };
16
+
17
+ afterEach(async () => {
18
+ await browserless.stop();
19
+ });
20
+
21
+ it('Kill all sessions', async () => {
22
+ await start();
23
+ const browser1 = await puppeteer.connect({
24
+ browserWSEndpoint: `ws://localhost:3000/chromium?token=6R0W53R135510`,
25
+ });
26
+ const browser2 = await puppeteer.connect({
27
+ browserWSEndpoint: `ws://localhost:3000/chromium?token=6R0W53R135510`,
28
+ });
29
+
30
+ await fetch('http://localhost:3000/kill/all?token=6R0W53R135510').then(
31
+ async (res) => {
32
+ expect(res.status).to.equal(204);
33
+ },
34
+ );
35
+
36
+ let errorThrown1;
37
+ try {
38
+ await browser1.newPage();
39
+ } catch (e) {
40
+ errorThrown1 = e;
41
+ }
42
+ let errorThrown2;
43
+ try {
44
+ await browser2.newPage();
45
+ } catch (e) {
46
+ errorThrown2 = e;
47
+ }
48
+ expect((errorThrown1 as Error).message).contains('closed');
49
+ expect((errorThrown2 as Error).message).contains('closed');
50
+ });
51
+
52
+ it('Kill session by browserId', async () => {
53
+ await start();
54
+ const browser = await puppeteer.connect({
55
+ browserWSEndpoint: `ws://localhost:3000/chromium?token=6R0W53R135510`,
56
+ });
57
+
58
+ await fetch('http://localhost:3000/sessions?token=6R0W53R135510').then(
59
+ async (res) => {
60
+ const sessions = await res.json();
61
+ const browserId = sessions[0].browserId;
62
+ await fetch(
63
+ `http://localhost:3000/kill/${browserId}?token=6R0W53R135510`,
64
+ ).then(async (res) => {
65
+ expect(res.status).to.equal(204);
66
+ });
67
+ },
68
+ );
69
+
70
+ let errorThrown;
71
+ try {
72
+ await browser.newPage();
73
+ } catch (e) {
74
+ errorThrown = e;
75
+ }
76
+ expect((errorThrown as Error).message).contains('closed');
77
+ });
78
+
79
+ it('Kill session by trackingId', async () => {
80
+ await start();
81
+ const browser = await puppeteer.connect({
82
+ browserWSEndpoint: `ws://localhost:3000/chromium?token=6R0W53R135510&trackingId=session-1`,
83
+ });
84
+
85
+ await fetch(
86
+ 'http://localhost:3000/kill/session-1?token=6R0W53R135510',
87
+ ).then(async (res) => {
88
+ expect(res.status).to.equal(204);
89
+ });
90
+
91
+ let errorThrown;
92
+ try {
93
+ await browser.newPage();
94
+ } catch (e) {
95
+ errorThrown = e;
96
+ }
97
+ expect((errorThrown as Error).message).contains('closed');
98
+ });
99
+ });
@@ -513,4 +513,33 @@ describe('Chromium WebSocket API', function () {
513
513
 
514
514
  await browser.disconnect();
515
515
  });
516
+
517
+ it('Throws an error while creating a session with invalid trackingId', async () => {
518
+ await start();
519
+
520
+ const didError = await puppeteer
521
+ .connect({
522
+ browserWSEndpoint: `ws://localhost:3000/chromium?trackingId=all`,
523
+ })
524
+ .then(() => false)
525
+ .catch(() => true);
526
+
527
+ expect(didError).to.be.true;
528
+ });
529
+
530
+ it('Throws an error while creating a session with duplicated trackingId', async () => {
531
+ await start();
532
+
533
+ await puppeteer.connect({
534
+ browserWSEndpoint: `ws://localhost:3000/chromium?trackingId=duplicated`,
535
+ });
536
+ const didError = await puppeteer
537
+ .connect({
538
+ browserWSEndpoint: `ws://localhost:3000/chromium?trackingId=duplicated`,
539
+ })
540
+ .then(() => false)
541
+ .catch(() => true);
542
+
543
+ expect(didError).to.be.true;
544
+ });
516
545
  });
@@ -0,0 +1,99 @@
1
+ import { Browserless, Config, Metrics } from '@browserless.io/browserless';
2
+ import { expect } from 'chai';
3
+ import { firefox } from 'playwright-core';
4
+
5
+ describe('/kill API firefox', function () {
6
+ let browserless: Browserless;
7
+
8
+ const start = ({
9
+ config = new Config(),
10
+ metrics = new Metrics(),
11
+ }: { config?: Config; metrics?: Metrics } = {}) => {
12
+ config.setToken('browserless');
13
+ browserless = new Browserless({ config, metrics });
14
+ return browserless.start();
15
+ };
16
+
17
+ afterEach(async () => {
18
+ await browserless.stop();
19
+ });
20
+
21
+ it('Kill all sessions', async () => {
22
+ await start();
23
+ const browser1 = await firefox.connect(
24
+ `ws://localhost:3000/playwright/firefox?token=browserless`,
25
+ );
26
+ const browser2 = await firefox.connect(
27
+ `ws://localhost:3000/playwright/firefox?token=browserless`,
28
+ );
29
+
30
+ await fetch('http://localhost:3000/kill/all?token=browserless').then(
31
+ async (res) => {
32
+ expect(res.status).to.equal(204);
33
+ },
34
+ );
35
+
36
+ let errorThrown1;
37
+ try {
38
+ await browser1.newPage();
39
+ } catch (e) {
40
+ errorThrown1 = e;
41
+ }
42
+ let errorThrown2;
43
+ try {
44
+ await browser2.newPage();
45
+ } catch (e) {
46
+ errorThrown2 = e;
47
+ }
48
+ expect((errorThrown1 as Error).message).contains('closed');
49
+ expect((errorThrown2 as Error).message).contains('closed');
50
+ });
51
+
52
+ it('Kill session by browserId', async () => {
53
+ await start();
54
+ const browser = await firefox.connect(
55
+ `ws://localhost:3000/playwright/firefox?token=browserless`,
56
+ );
57
+
58
+ await fetch('http://localhost:3000/sessions?token=browserless').then(
59
+ async (res) => {
60
+ const sessions = await res.json();
61
+ const browserId = sessions[0].browserId;
62
+ await fetch(
63
+ `http://localhost:3000/kill/${browserId}?token=browserless`,
64
+ ).then(async (res) => {
65
+ expect(res.status).to.equal(204);
66
+ });
67
+ },
68
+ );
69
+
70
+ let errorThrown;
71
+ try {
72
+ await browser.newPage();
73
+ } catch (e) {
74
+ errorThrown = e;
75
+ }
76
+ expect((errorThrown as Error).message).contains('closed');
77
+ });
78
+
79
+ it('Kill session by trackingId', async () => {
80
+ await start();
81
+ const browser = await firefox.connect(
82
+ `ws://localhost:3000/playwright/firefox?token=browserless&trackingId=session-1`,
83
+ );
84
+
85
+ await fetch('http://localhost:3000/kill/session-1?token=browserless').then(
86
+ async (res) => {
87
+ expect(res.status).to.equal(204);
88
+ },
89
+ );
90
+
91
+ let errorThrown;
92
+ try {
93
+ await browser.newPage();
94
+ } catch (e) {
95
+ errorThrown = e;
96
+ }
97
+ expect((errorThrown as Error).message).contains('closed');
98
+ });
99
+ });
@@ -0,0 +1,40 @@
1
+ import {
2
+ APITags,
3
+ BrowserlessRoutes,
4
+ HTTPManagementRoutes,
5
+ HTTPRoute,
6
+ Methods,
7
+ Request,
8
+ SystemQueryParameters,
9
+ contentTypes,
10
+ writeResponse,
11
+ } from '@browserless.io/browserless';
12
+ import { ServerResponse } from 'http';
13
+
14
+ export type ResponseSchema = string;
15
+
16
+ export interface QuerySchema extends SystemQueryParameters {
17
+ token: string;
18
+ browserId?: string;
19
+ trackingId?: string;
20
+ }
21
+
22
+ export default class KillGetRoute extends HTTPRoute {
23
+ name = BrowserlessRoutes.KillGetRoute;
24
+ accepts = [contentTypes.any];
25
+ auth = true;
26
+ browser = null;
27
+ concurrency = false;
28
+ contentTypes = [contentTypes.json];
29
+ description = `Kill running sessions based on BrowserId or TrackingId.`;
30
+ method = Methods.get;
31
+ path = HTTPManagementRoutes.kill;
32
+ tags = [APITags.management];
33
+
34
+ async handler(req: Request, res: ServerResponse): Promise<void> {
35
+ const target = req.parsed.pathname.split('/')[2];
36
+ const browserManager = this.browserManager();
37
+ await browserManager.killSessions(target);
38
+ return writeResponse(res, 204, '');
39
+ }
40
+ }
@@ -14,6 +14,7 @@ import {
14
14
  } from '@browserless.io/browserless';
15
15
  import { ServerResponse } from 'http';
16
16
  import { createRequire } from 'module';
17
+ import path from 'path';
17
18
 
18
19
  export interface ResponseSchema {
19
20
  /**
@@ -49,16 +50,17 @@ export interface ResponseSchema {
49
50
 
50
51
  const semverReg = /(\*|\^|>|=|<|~)/gi;
51
52
  const require = createRequire(import.meta.url);
52
- const blessPackageJSON = require('../../../../package.json');
53
- const { browsers } =
54
- require('../../../../node_modules/playwright-core/browsers.json') as {
55
- browsers: [
56
- {
57
- name: string;
58
- browserVersion: string;
59
- },
60
- ];
61
- };
53
+ const blessPackageJSON = require(path.join(process.cwd(), 'package.json'));
54
+ const { browsers } = require(
55
+ path.join(process.cwd(), 'node_modules', 'playwright-core', 'browsers.json'),
56
+ ) as {
57
+ browsers: [
58
+ {
59
+ name: string;
60
+ browserVersion: string;
61
+ },
62
+ ];
63
+ };
62
64
  const chromium = browsers.find((b) => b.name === 'chromium')!.browserVersion;
63
65
  const firefox = browsers.find((b) => b.name === 'firefox')!.browserVersion;
64
66
  const webkit = browsers.find((b) => b.name === 'webkit')!.browserVersion;
@@ -120,4 +120,23 @@ describe('Management APIs', function () {
120
120
  expect(res.status).to.equal(204);
121
121
  });
122
122
  });
123
+
124
+ it('allows requests to /kill', async () => {
125
+ await start();
126
+
127
+ await fetch('http://localhost:3000/kill/all?token=6R0W53R135510').then(
128
+ async (res) => {
129
+ expect(res.status).to.equal(204);
130
+ },
131
+ );
132
+ });
133
+ it('Throws an error trying to kill invalid session', async () => {
134
+ await start();
135
+
136
+ await fetch(
137
+ `http://localhost:3000/kill/invalid-session?token=6R0W53R135510`,
138
+ ).then(async (res) => {
139
+ expect(res.status).to.equal(404);
140
+ });
141
+ });
123
142
  });
@@ -0,0 +1,99 @@
1
+ import { Browserless, Config, Metrics } from '@browserless.io/browserless';
2
+ import { expect } from 'chai';
3
+ import { webkit } from 'playwright-core';
4
+
5
+ describe('/kill API webkit', function () {
6
+ let browserless: Browserless;
7
+
8
+ const start = ({
9
+ config = new Config(),
10
+ metrics = new Metrics(),
11
+ }: { config?: Config; metrics?: Metrics } = {}) => {
12
+ config.setToken('browserless');
13
+ browserless = new Browserless({ config, metrics });
14
+ return browserless.start();
15
+ };
16
+
17
+ afterEach(async () => {
18
+ await browserless.stop();
19
+ });
20
+
21
+ it('Kill all sessions', async () => {
22
+ await start();
23
+ const browser1 = await webkit.connect(
24
+ `ws://localhost:3000/webkit/playwright?token=browserless&trackingId=session-1`,
25
+ );
26
+ const browser2 = await webkit.connect(
27
+ `ws://localhost:3000/webkit/playwright?token=browserless&trackingId=session-2`,
28
+ );
29
+
30
+ await fetch('http://localhost:3000/kill/all?token=browserless').then(
31
+ async (res) => {
32
+ expect(res.status).to.equal(204);
33
+ },
34
+ );
35
+
36
+ let errorThrown1;
37
+ try {
38
+ await browser1.newPage();
39
+ } catch (e) {
40
+ errorThrown1 = e;
41
+ }
42
+ let errorThrown2;
43
+ try {
44
+ await browser2.newPage();
45
+ } catch (e) {
46
+ errorThrown2 = e;
47
+ }
48
+ expect((errorThrown1 as Error).message).contains('closed');
49
+ expect((errorThrown2 as Error).message).contains('closed');
50
+ });
51
+
52
+ it('Kill session by browserId', async () => {
53
+ await start();
54
+ const browser = await webkit.connect(
55
+ `ws://localhost:3000/webkit/playwright?token=browserless`,
56
+ );
57
+
58
+ await fetch('http://localhost:3000/sessions?token=browserless').then(
59
+ async (res) => {
60
+ const sessions = await res.json();
61
+ const browserId = sessions[0].browserId;
62
+ await fetch(
63
+ `http://localhost:3000/kill/${browserId}?token=browserless`,
64
+ ).then(async (res) => {
65
+ expect(res.status).to.equal(204);
66
+ });
67
+ },
68
+ );
69
+
70
+ let errorThrown;
71
+ try {
72
+ await browser.newPage();
73
+ } catch (e) {
74
+ errorThrown = e;
75
+ }
76
+ expect((errorThrown as Error).message).contains('closed');
77
+ });
78
+
79
+ it('Kill session by trackingId', async () => {
80
+ await start();
81
+ const browser = await webkit.connect(
82
+ `ws://localhost:3000/webkit/playwright?token=browserless&trackingId=session-1`,
83
+ );
84
+
85
+ await fetch('http://localhost:3000/kill/session-1?token=browserless').then(
86
+ async (res) => {
87
+ expect(res.status).to.equal(204);
88
+ },
89
+ );
90
+
91
+ let errorThrown;
92
+ try {
93
+ await browser.newPage();
94
+ } catch (e) {
95
+ errorThrown = e;
96
+ }
97
+ expect((errorThrown as Error).message).contains('closed');
98
+ });
99
+ });
@@ -2,6 +2,7 @@ import { Message, mainOptions } from './types.js';
2
2
  import { fork } from 'child_process';
3
3
  import path from 'path';
4
4
 
5
+ const __dirname = import.meta.dirname;
5
6
  const DEFAULT_AUDIT_CONFIG = {
6
7
  extends: 'lighthouse:default',
7
8
  };
@@ -13,14 +14,7 @@ export default async ({
13
14
  timeout,
14
15
  }: mainOptions): Promise<unknown> => {
15
16
  return new Promise((resolve, reject) => {
16
- const childPath = path.join(
17
- './',
18
- 'build',
19
- 'shared',
20
- 'utils',
21
- 'performance',
22
- 'child.js',
23
- );
17
+ const childPath = path.join(__dirname, 'child.js');
24
18
 
25
19
  logger.trace(`Starting up child at ${childPath}`);
26
20
 
package/src/types.ts CHANGED
@@ -661,6 +661,7 @@ export const BrowserlessWebKitRoutes = {
661
661
  export const BrowserlessManagementRoutes = {
662
662
  ActiveGetRoute: 'ActiveGetRoute',
663
663
  ConfigGetRoute: 'ConfigGetRoute',
664
+ KillGetRoute: 'KillGetRoute',
664
665
  MetaGetRoute: 'MetaGetRoute',
665
666
  MetricsGetRoute: 'MetricsGetRoute',
666
667
  MetricsTotalGetRoute: 'MetricsTotalGetRoute',
package/src/utils.ts CHANGED
@@ -743,23 +743,14 @@ export const parseStringParam = (
743
743
  params: URLSearchParams,
744
744
  name: string,
745
745
  defaultValue: string,
746
- ) => {
746
+ ): string => {
747
747
  const value = params.get(name);
748
748
 
749
749
  if (value === null) {
750
750
  return defaultValue;
751
751
  }
752
752
 
753
- // ?param format (no specified value)
754
- if (value === '') {
755
- return true;
756
- }
757
-
758
- try {
759
- return JSON.parse(value);
760
- } catch {
761
- return value;
762
- }
753
+ return value;
763
754
  };
764
755
 
765
756
  export const encrypt = (text: string, secret: Buffer) => {