bdy 1.16.21-dev → 1.16.23-dev

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 (42) hide show
  1. package/distTs/package.json +1 -1
  2. package/distTs/src/api/client.js +305 -61
  3. package/distTs/src/command/login.js +24 -13
  4. package/distTs/src/command/logout.js +18 -0
  5. package/distTs/src/command/package/download.js +1 -3
  6. package/distTs/src/command/package/list.js +1 -3
  7. package/distTs/src/command/package/publish.js +1 -3
  8. package/distTs/src/command/pipeline/run.js +1 -3
  9. package/distTs/src/command/project/list.js +8 -5
  10. package/distTs/src/command/project/set.js +1 -3
  11. package/distTs/src/command/sandbox/cp.js +1 -3
  12. package/distTs/src/command/sandbox/create.js +7 -12
  13. package/distTs/src/command/sandbox/destroy.js +1 -3
  14. package/distTs/src/command/sandbox/endpoint/add.js +1 -3
  15. package/distTs/src/command/sandbox/endpoint/delete.js +4 -4
  16. package/distTs/src/command/sandbox/endpoint/get.js +1 -3
  17. package/distTs/src/command/sandbox/endpoint/list.js +1 -3
  18. package/distTs/src/command/sandbox/exec/command.js +1 -3
  19. package/distTs/src/command/sandbox/exec/kill.js +1 -3
  20. package/distTs/src/command/sandbox/exec/list.js +1 -3
  21. package/distTs/src/command/sandbox/exec/logs.js +1 -3
  22. package/distTs/src/command/sandbox/exec/status.js +1 -3
  23. package/distTs/src/command/sandbox/get.js +5 -4
  24. package/distTs/src/command/sandbox/list.js +4 -5
  25. package/distTs/src/command/sandbox/restart.js +3 -6
  26. package/distTs/src/command/sandbox/snapshot/create.js +3 -6
  27. package/distTs/src/command/sandbox/snapshot/delete.js +1 -3
  28. package/distTs/src/command/sandbox/snapshot/get.js +6 -4
  29. package/distTs/src/command/sandbox/snapshot/list.js +19 -12
  30. package/distTs/src/command/sandbox/start.js +3 -6
  31. package/distTs/src/command/sandbox/status.js +2 -3
  32. package/distTs/src/command/sandbox/stop.js +3 -6
  33. package/distTs/src/command/whoami.js +5 -1
  34. package/distTs/src/command/workspace/list.js +3 -5
  35. package/distTs/src/command/workspace/set.js +1 -3
  36. package/distTs/src/input.js +16 -2
  37. package/distTs/src/output.js +14 -0
  38. package/distTs/src/texts.js +8 -30
  39. package/distTs/src/tunnel/cfg.js +24 -5
  40. package/distTs/src/utils.js +83 -0
  41. package/distTs/src/visualTest/server.js +1 -0
  42. package/package.json +1 -1
@@ -7,7 +7,6 @@ const utils_1 = require("../../../utils");
7
7
  const texts_1 = require("../../../texts");
8
8
  const output_1 = __importDefault(require("../../../output"));
9
9
  const input_1 = __importDefault(require("../../../input"));
10
- const client_1 = __importDefault(require("../../../api/client"));
11
10
  const commandSandboxSnapshotGet = (0, utils_1.newCommand)('get', texts_1.DESC_COMMAND_SANDBOX_SNAPSHOT_GET);
12
11
  commandSandboxSnapshotGet.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
12
  commandSandboxSnapshotGet.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
@@ -17,11 +16,10 @@ commandSandboxSnapshotGet.option('-p, --project <name>', texts_1.OPTION_REST_API
17
16
  commandSandboxSnapshotGet.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
18
17
  commandSandboxSnapshotGet.argument('<snapshot-name>', texts_1.OPTION_SANDBOX_SNAPSHOT_NAME_ARG);
19
18
  commandSandboxSnapshotGet.action(async (identifier, snapshotName, options) => {
20
- const token = input_1.default.restApiToken(options.token);
21
19
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
22
20
  const workspace = input_1.default.restApiWorkspace(options.workspace);
23
21
  const project = input_1.default.restApiProject(options.project);
24
- const client = new client_1.default(baseUrl, token);
22
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
25
23
  const result = await client.listSandboxes(workspace, project);
26
24
  const sandboxes = result.sandboxes || [];
27
25
  const found = sandboxes.find((s) => s.identifier === identifier);
@@ -42,8 +40,12 @@ commandSandboxSnapshotGet.action(async (identifier, snapshotName, options) => {
42
40
  ['Created', snapshot.create_date || '-'],
43
41
  ];
44
42
  if (snapshot.creator) {
45
- data.push(['Creator', snapshot.creator.name || snapshot.creator.email || '-']);
43
+ data.push([
44
+ 'Creator',
45
+ snapshot.creator.name || snapshot.creator.email || '-',
46
+ ]);
46
47
  }
48
+ data.push(['URL', snapshot.html_url]);
47
49
  output_1.default.table(data);
48
50
  output_1.default.exitNormal();
49
51
  });
@@ -7,37 +7,44 @@ const utils_1 = require("../../../utils");
7
7
  const texts_1 = require("../../../texts");
8
8
  const output_1 = __importDefault(require("../../../output"));
9
9
  const input_1 = __importDefault(require("../../../input"));
10
- const client_1 = __importDefault(require("../../../api/client"));
11
10
  const commandSandboxSnapshotList = (0, utils_1.newCommand)('list', texts_1.DESC_COMMAND_SANDBOX_SNAPSHOT_LIST);
11
+ commandSandboxSnapshotList.alias('ls');
12
12
  commandSandboxSnapshotList.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
13
  commandSandboxSnapshotList.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
14
  commandSandboxSnapshotList.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
15
  commandSandboxSnapshotList.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
16
16
  commandSandboxSnapshotList.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
17
- commandSandboxSnapshotList.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
17
+ commandSandboxSnapshotList.argument('[identifier]', texts_1.OPTION_SANDBOX_IDENTIFIER);
18
18
  commandSandboxSnapshotList.action(async (identifier, options) => {
19
- const token = input_1.default.restApiToken(options.token);
20
19
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
21
20
  const workspace = input_1.default.restApiWorkspace(options.workspace);
22
21
  const project = input_1.default.restApiProject(options.project);
23
- const client = new client_1.default(baseUrl, token);
24
- const result = await client.listSandboxes(workspace, project);
25
- const sandboxes = result.sandboxes || [];
26
- const found = sandboxes.find((s) => s.identifier === identifier);
27
- if (!found) {
28
- output_1.default.exitError(texts_1.ERR_SANDBOX_NOT_FOUND);
22
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
23
+ let snapshots;
24
+ if (identifier) {
25
+ const result = await client.listSandboxes(workspace, project);
26
+ const sandboxes = result.sandboxes || [];
27
+ const found = sandboxes.find((s) => s.identifier === identifier);
28
+ if (!found) {
29
+ output_1.default.exitError(texts_1.ERR_SANDBOX_NOT_FOUND);
30
+ }
31
+ const snapshotsResult = await client.listSandboxSnapshots(workspace, found.id);
32
+ snapshots = snapshotsResult.snapshots || [];
33
+ }
34
+ else {
35
+ const result = await client.listProjectSnapshots(workspace, project);
36
+ snapshots = result.snapshots || [];
29
37
  }
30
- const snapshotsResult = await client.listSandboxSnapshots(workspace, found.id);
31
- const snapshots = snapshotsResult.snapshots || [];
32
38
  if (snapshots.length === 0) {
33
39
  output_1.default.exitError(texts_1.ERR_SANDBOX_SNAPSHOTS_NOT_FOUND);
34
40
  }
35
- const data = [['Name', 'Status', 'Created']];
41
+ const data = [['Name', 'Status', 'Created', 'URL']];
36
42
  for (const snapshot of snapshots) {
37
43
  data.push([
38
44
  snapshot.name || '-',
39
45
  snapshot.status || '-',
40
46
  snapshot.create_date || '-',
47
+ snapshot.html_url || '-'
41
48
  ]);
42
49
  }
43
50
  output_1.default.table(data);
@@ -7,22 +7,19 @@ const utils_1 = require("../../utils");
7
7
  const texts_1 = require("../../texts");
8
8
  const output_1 = __importDefault(require("../../output"));
9
9
  const input_1 = __importDefault(require("../../input"));
10
- const client_1 = __importDefault(require("../../api/client"));
11
10
  const commandSandboxStart = (0, utils_1.newCommand)('start', texts_1.DESC_COMMAND_SANDBOX_START);
12
11
  commandSandboxStart.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
12
  commandSandboxStart.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
13
  commandSandboxStart.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
14
  commandSandboxStart.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
16
15
  commandSandboxStart.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
17
- commandSandboxStart.option('--wait', texts_1.OPTION_SANDBOX_WAIT);
18
- commandSandboxStart.option('--wait-timeout <seconds>', texts_1.OPTION_SANDBOX_WAIT_TIMEOUT, '300');
16
+ commandSandboxStart.option('--wait [seconds]', texts_1.OPTION_SANDBOX_WAIT);
19
17
  commandSandboxStart.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
20
18
  commandSandboxStart.action(async (identifier, options) => {
21
- const token = input_1.default.restApiToken(options.token);
22
19
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
23
20
  const workspace = input_1.default.restApiWorkspace(options.workspace);
24
21
  const project = input_1.default.restApiProject(options.project);
25
- const client = new client_1.default(baseUrl, token);
22
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
26
23
  const result = await client.listSandboxes(workspace, project);
27
24
  const sandboxes = result.sandboxes || [];
28
25
  const found = sandboxes.find((s) => s.identifier === identifier);
@@ -32,7 +29,7 @@ commandSandboxStart.action(async (identifier, options) => {
32
29
  await client.startSandbox(workspace, found.id);
33
30
  if (options.wait) {
34
31
  output_1.default.normal(texts_1.TXT_SANDBOX_WAITING_START);
35
- const timeout = parseInt(options.waitTimeout, 10) || 300;
32
+ const timeout = parseInt(options.wait, 10) || 300;
36
33
  try {
37
34
  const status = await client.sandboxWaitForRunning(workspace, found.id, timeout);
38
35
  if (status !== utils_1.SANDBOX_STATUS.RUNNING) {
@@ -7,7 +7,6 @@ const utils_1 = require("../../utils");
7
7
  const texts_1 = require("../../texts");
8
8
  const output_1 = __importDefault(require("../../output"));
9
9
  const input_1 = __importDefault(require("../../input"));
10
- const client_1 = __importDefault(require("../../api/client"));
11
10
  const commandSandboxStatus = (0, utils_1.newCommand)('status', texts_1.DESC_COMMAND_SANDBOX_STATUS);
12
11
  commandSandboxStatus.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
12
  commandSandboxStatus.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
@@ -16,11 +15,10 @@ commandSandboxStatus.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_
16
15
  commandSandboxStatus.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
17
16
  commandSandboxStatus.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
18
17
  commandSandboxStatus.action(async (identifier, options) => {
19
- const token = input_1.default.restApiToken(options.token);
20
18
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
21
19
  const workspace = input_1.default.restApiWorkspace(options.workspace);
22
20
  const project = input_1.default.restApiProject(options.project);
23
- const client = new client_1.default(baseUrl, token);
21
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
24
22
  const result = await client.listSandboxes(workspace, project);
25
23
  const sandboxes = result.sandboxes || [];
26
24
  const found = sandboxes.find((s) => s.identifier === identifier);
@@ -29,6 +27,7 @@ commandSandboxStatus.action(async (identifier, options) => {
29
27
  }
30
28
  const sandbox = await client.getSandbox(workspace, found.id);
31
29
  output_1.default.table([
30
+ ['Type', 'Status'],
32
31
  ['Status', sandbox.status || 'UNKNOWN'],
33
32
  ['Setup', sandbox.setup_status || 'UNKNOWN'],
34
33
  ['App', sandbox.app_status || 'UNKNOWN']
@@ -7,22 +7,19 @@ const utils_1 = require("../../utils");
7
7
  const texts_1 = require("../../texts");
8
8
  const output_1 = __importDefault(require("../../output"));
9
9
  const input_1 = __importDefault(require("../../input"));
10
- const client_1 = __importDefault(require("../../api/client"));
11
10
  const commandSandboxStop = (0, utils_1.newCommand)('stop', texts_1.DESC_COMMAND_SANDBOX_STOP);
12
11
  commandSandboxStop.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
12
  commandSandboxStop.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
13
  commandSandboxStop.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
14
  commandSandboxStop.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
16
15
  commandSandboxStop.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
17
- commandSandboxStop.option('--wait', texts_1.OPTION_SANDBOX_WAIT);
18
- commandSandboxStop.option('--wait-timeout <seconds>', texts_1.OPTION_SANDBOX_WAIT_TIMEOUT, '300');
16
+ commandSandboxStop.option('--wait [seconds]', texts_1.OPTION_SANDBOX_WAIT);
19
17
  commandSandboxStop.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
20
18
  commandSandboxStop.action(async (identifier, options) => {
21
- const token = input_1.default.restApiToken(options.token);
22
19
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
23
20
  const workspace = input_1.default.restApiWorkspace(options.workspace);
24
21
  const project = input_1.default.restApiProject(options.project);
25
- const client = new client_1.default(baseUrl, token);
22
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
26
23
  const result = await client.listSandboxes(workspace, project);
27
24
  const sandboxes = result.sandboxes || [];
28
25
  const found = sandboxes.find((s) => s.identifier === identifier);
@@ -32,7 +29,7 @@ commandSandboxStop.action(async (identifier, options) => {
32
29
  await client.stopSandbox(workspace, found.id);
33
30
  if (options.wait) {
34
31
  output_1.default.normal(texts_1.TXT_SANDBOX_WAITING_STOP);
35
- const timeout = parseInt(options.waitTimeout, 10) || 300;
32
+ const timeout = parseInt(options.wait, 10) || 300;
36
33
  try {
37
34
  const status = await client.sandboxWaitForRunning(workspace, found.id, timeout);
38
35
  if (status !== utils_1.SANDBOX_STATUS.STOPPED) {
@@ -27,13 +27,17 @@ const tryGetEmail = async (client) => {
27
27
  const commandWhoami = (0, utils_1.newCommand)('whoami', texts_1.DESC_COMMAND_WHOAMI);
28
28
  commandWhoami.action(async () => {
29
29
  const token = cfg_1.default.getApiToken();
30
+ const refreshToken = cfg_1.default.getApiRefreshApiToken();
31
+ const clientId = cfg_1.default.getApiClientId();
32
+ const clientSecret = cfg_1.default.getApiClientSecret();
33
+ const clientToken = cfg_1.default.getApiClientToken();
30
34
  const workspace = cfg_1.default.getWorkspace();
31
35
  const project = cfg_1.default.getProject();
32
36
  const baseUrl = input_1.default.restApiBaseUrl();
33
37
  if (!token) {
34
38
  output_1.default.exitError(texts_1.ERR_WHOAMI_LOGOUT);
35
39
  }
36
- const client = new client_1.default(baseUrl, token);
40
+ const client = new client_1.default(baseUrl, token, refreshToken, clientId, clientSecret, clientToken);
37
41
  const user = await client.getInvoker();
38
42
  if (!user) {
39
43
  output_1.default.exitError(texts_1.ERR_WHOAMI_LOGOUT);
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const output_1 = __importDefault(require("../../output"));
7
- const client_1 = __importDefault(require("../../api/client"));
8
7
  const texts_1 = require("../../texts");
9
8
  const utils_1 = require("../../utils");
10
9
  const input_1 = __importDefault(require("../../input"));
@@ -14,17 +13,16 @@ commandWorkspaceList.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
13
  commandWorkspaceList.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
14
  commandWorkspaceList.alias('ls');
16
15
  commandWorkspaceList.action(async (options) => {
17
- const token = input_1.default.restApiToken(options.token);
18
16
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
19
- const client = new client_1.default(baseUrl, token);
17
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
20
18
  const response = await client.getWorkspaces();
21
19
  if (!response.workspaces || response.workspaces.length === 0) {
22
20
  output_1.default.normal('No workspaces found.');
23
21
  output_1.default.exitNormal();
24
22
  }
25
- const data = [['NAME', 'DOMAIN']];
23
+ const data = [['NAME', 'DOMAIN', 'URL']];
26
24
  for (const ws of response.workspaces) {
27
- data.push([ws.name, ws.domain]);
25
+ data.push([ws.name, ws.domain, (0, utils_1.getAppWorkspaceUrl)(baseUrl, ws.domain)]);
28
26
  }
29
27
  output_1.default.table(data);
30
28
  output_1.default.exitNormal();
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const cfg_1 = __importDefault(require("../../tunnel/cfg"));
7
7
  const output_1 = __importDefault(require("../../output"));
8
- const client_1 = __importDefault(require("../../api/client"));
9
8
  const texts_1 = require("../../texts");
10
9
  const utils_1 = require("../../utils");
11
10
  const input_1 = __importDefault(require("../../input"));
@@ -16,9 +15,8 @@ commandWorkspaceSet.option('--region <region>', texts_1.OPTION_REST_API_REGION);
16
15
  commandWorkspaceSet.argument('[workspace]', texts_1.ARG_COMMAND_WORKSPACE);
17
16
  commandWorkspaceSet.action(async (workspaceDomain, options) => {
18
17
  output_1.default.handleSignals();
19
- const token = input_1.default.restApiToken(options.token);
20
18
  const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
21
- const client = new client_1.default(baseUrl, token);
19
+ const client = input_1.default.restApiTokenClient(baseUrl, options.token);
22
20
  const response = await client.getWorkspaces();
23
21
  if (!response.workspaces || response.workspaces.length === 0) {
24
22
  output_1.default.exitError(texts_1.ERR_LOGIN_NO_WORKSPACES);
@@ -47,6 +47,7 @@ const texts_1 = require("./texts");
47
47
  const tunnel_1 = require("./types/tunnel");
48
48
  const node_path_1 = __importStar(require("node:path"));
49
49
  const cfg_1 = __importDefault(require("./tunnel/cfg"));
50
+ const client_1 = __importDefault(require("./api/client"));
50
51
  class Input {
51
52
  static timeout(timeout) {
52
53
  const t = parseInt(timeout, 10);
@@ -300,14 +301,27 @@ class Input {
300
301
  }
301
302
  static restApiToken(token) {
302
303
  let t = process.env.BUDDY_TOKEN;
304
+ let rf = '';
305
+ let cid = '';
306
+ let cs = '';
307
+ let ct = '';
303
308
  if (token)
304
309
  t = token;
305
- if (!t)
310
+ if (!t) {
306
311
  t = cfg_1.default.getApiToken();
312
+ rf = cfg_1.default.getApiRefreshApiToken();
313
+ cid = cfg_1.default.getApiClientId();
314
+ cs = cfg_1.default.getApiClientSecret();
315
+ ct = cfg_1.default.getApiClientToken();
316
+ }
307
317
  if (!t) {
308
318
  output_1.default.exitError(texts_1.ERR_REST_API_TOKEN);
309
319
  }
310
- return t;
320
+ return { token: t, refreshToken: rf, clientId: cid, clientSecret: cs, clientToken: ct };
321
+ }
322
+ static restApiTokenClient(baseUrl, token) {
323
+ const { token: t, refreshToken, clientId, clientToken, clientSecret } = this.restApiToken(token);
324
+ return new client_1.default(baseUrl, t, refreshToken, clientId, clientSecret, clientToken);
311
325
  }
312
326
  static pipelineRunPriority(priority) {
313
327
  if (!priority)
@@ -59,6 +59,12 @@ class Output {
59
59
  msg += '\n';
60
60
  terminal.green(msg);
61
61
  }
62
+ static blue(txt, newLine = true) {
63
+ let msg = txt;
64
+ if (newLine)
65
+ msg += '\n';
66
+ terminal.blue(msg);
67
+ }
62
68
  static debug(txt) {
63
69
  if (context_1.debug) {
64
70
  this.normal(txt);
@@ -128,6 +134,12 @@ class Output {
128
134
  else
129
135
  this.tunnelNonInteractive(tunnel);
130
136
  }
137
+ static object(data) {
138
+ Object.keys(data).forEach((key) => {
139
+ this.blue(`${key}: `, false);
140
+ this.normal(data[key]);
141
+ });
142
+ }
131
143
  static table(data) {
132
144
  // apply padding
133
145
  for (let i = 0; i < data.length; i += 1) {
@@ -142,6 +154,8 @@ class Output {
142
154
  }
143
155
  terminal.table(data, {
144
156
  fit: false,
157
+ hasBorder: false,
158
+ firstRowTextAttr: { color: 'blue' }
145
159
  });
146
160
  }
147
161
  static configTunnels(tunnels) {
@@ -8,9 +8,9 @@ exports.OPTION_REST_API_WORKSPACE = exports.OPTION_PIPELINE_RUN_WAIT = exports.O
8
8
  exports.OPTION_COMPARE_WAIT_FOR = exports.OPTION_COMPARE_DELAY = exports.OPTION_COMPARE_HEADER = exports.OPTION_COMPARE_COOKIE = exports.OPTION_COMPARE_IGNORE = exports.OPTION_COMPARE_IGNORE_URLS = exports.OPTION_COMPARE_DRY_RUN = exports.OPTION_COMPARE_URLS_FILE = exports.OPTION_COMPARE_SITEMAP = exports.OPTION_COMPARE_URLS = exports.OPTION_COMPARE_RESPECT_ROBOTS = exports.OPTION_COMPARE_FOLLOW = exports.OPTION_EXEC_PARALLEL = exports.OPTION_EXEC_ONE_BY_ONE = exports.OPTION_EXEC_SKIP_DISCOVERY = exports.OPTION_EXEC_COMMAND = exports.OPTION_AGENT_DEBUG = exports.OPTION_AGENT_PORT = exports.OPTION_AGENT_TARGET = exports.OPTION_PASS = exports.OPTION_APP = exports.OPTION_USER = exports.OPTION_AGENT_TOKEN = exports.OPTION_AGENT_START = exports.OPTION_AGENT_ID = exports.OPTION_ID = exports.OPTION_NAME = exports.OPTION_TARGET = exports.OPTION_TLS_TERMINATE = exports.OPTION_TLS_CA = exports.OPTION_TLS_CERT = exports.OPTION_TLS_KEY = exports.OPTION_HTTP_CIRCUIT_BREAKER = exports.OPTION_HTTP_COMPRESSION = exports.OPTION_HTTP_2 = exports.OPTION_HTTP_VERIFY = exports.OPTION_HTTP_LOG = exports.OPTION_HTTP_AUTH_BUDDY = exports.OPTION_HTTP_AUTH = exports.OPTION_HTTP_HOST = exports.OPTION_FORCE = exports.OPTION_TOKEN = exports.OPTION_TIMEOUT = exports.OPTION_FOLLOW = exports.OPTION_SERVE = exports.OPTION_HEADER_USER_AGENT = exports.OPTION_RESPONSE_HEADER = exports.OPTION_HEADER = exports.OPTION_WHITELIST = exports.OPTION_REST_API_PROJECT = void 0;
9
9
  exports.LOG_HTTP1_CONNECTION = exports.LOG_ERROR = exports.LOG_STOPPING_TUNNEL = exports.LOG_STARTING_TUNNEL = exports.LOG_ENABLING_AGENT_TARGET = exports.LOG_DISABLING_AGENT_TARGET = exports.LOG_REMOVING_TUNNEL = exports.LOG_TUNNEL_REGISTERED = exports.LOG_ERROR_WHILE_REFRESHING_AGENT = exports.LOG_REGISTERING_TUNNEL = exports.LOG_GETTING_AGENT = exports.LOG_UNREGISTERING_AGENT = exports.LOG_REGION_DETECTED = exports.LOG_AGENT_REGISTERED = exports.LOG_SOCKET_DISCONNECTED = exports.LOG_SOCKET_CONNECTED = exports.LOG_AGENT_NSSM_CLEARING = exports.LOG_AGENT_NSSM_EXTRACTING = exports.LOG_AGENT_NSSM_DOWNLOADING = exports.LOG_AGENT_ENABLED = exports.LOG_AGENT_STARTING_SYSTEM = exports.LOG_AGENT_STOPPING_SYSTEM = exports.LOG_AGENT_ENABLING_SYSTEM = exports.LOG_AGENT_SYSTEM_SERVICE_CONFIG = exports.LOG_AGENT_EXTRACTING_ARCHIVE = exports.LOG_AGENT_DOWNLOADING_ARCHIVE = exports.LOG_AGENT_SYSTEM_DIR = exports.LOG_ERROR_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_ERROR_REMOVING_AGENT_STANDALONE_LOCK_FILE = exports.LOG_ERROR_SAVING_AGENT_STANDALONE_CONFIG = exports.LOG_ERROR_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_REMOVING_AGENT_PROC_ID = exports.LOG_SAVING_AGENT_PROC_ID = exports.LOG_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_REGISTERING_AGENT = exports.OPTION_SCRAPE_OUTPUT_DIR = exports.OPTION_SCRAPE_DELAY = exports.OPTION_SCRAPE_DARK_MODE = exports.OPTION_SCRAPE_WAIT_FOR_ELEMENT = exports.OPTION_SCRAPE_DEVICE_PIXEL_RATIO = exports.OPTION_SCRAPE_VIEWPORT = exports.OPTION_SCRAPE_BROWSER = exports.OPTION_SCRAPE_XPATH_SELECTOR = exports.OPTION_SCRAPE_CSS_SELECTOR = exports.OPTION_SCRAPE_FULL_PAGE = exports.OPTION_SCRAPE_QUALITY = exports.OPTION_SCRAPE_OUTPUT_TYPE = exports.OPTION_SCRAPE_FOLLOW = exports.OPTION_SCRAPE_URL = void 0;
10
10
  exports.DESC_COMMAND_SANDBOX_EXEC = exports.DESC_COMMAND_SANDBOX_STATUS = exports.DESC_COMMAND_SANDBOX_RESTART = exports.DESC_COMMAND_SANDBOX_STOP = exports.DESC_COMMAND_SANDBOX_START = exports.DESC_COMMAND_SANDBOX_DESTROY = exports.DESC_COMMAND_SANDBOX_GET = exports.DESC_COMMAND_SANDBOX_LIST = exports.DESC_COMMAND_SANDBOX_CREATE = exports.DESC_COMMAND_SANDBOX = exports.DEBUG_WAIT_FOR_IDLE_TIMEOUT = exports.DEBUG_WAIT_FOR_IDLE = exports.DEBUG_RESOURCE_DISCOVERY_TIMEOUT = exports.DEBUG_AUTO_WIDTH = exports.DEBUG_AUTO_SCROLL = exports.DEBUG_RESOURCE_SCRAPPING_URL = exports.DEBUG_SNAPSHOT_PROCESSING = exports.DEBUG_SNAPSHOTS_PROCESSING = exports.DEBUG_EXEC_COMMAND = exports.DEBUG_EXEC_TEST_COMMAND = exports.LOG_INSTALLED_BROWSER = exports.LOG_SESSION_LINK = exports.LOG_SENDING_DATA = exports.LOG_SENDING_REQUEST = exports.LOG_PROCESSING_SNAPSHOTS = exports.LOG_RUNNING_EXEC_COMMAND = exports.LOG_TUNNEL_SSH_STREAM = exports.LOG_TUNNEL_TLS_AGENT_STREAM = exports.LOG_TUNNEL_TLS_REGION_STREAM = exports.LOG_TUNNEL_TLS_TARGET_STREAM = exports.LOG_TUNNEL_HTTP2_STREAM = exports.LOG_TUNNEL_HTTP1_STREAM = exports.LOG_TUNNEL_TCP_STREAM = exports.LOG_TUNNEL_HTTP_WRONG_USER_AGENTS = exports.LOG_TUNNEL_HTTP_CIRCUIT_BREAKER_OPEN = exports.LOG_TUNNEL_HTTP_RATE_LIMIT = exports.LOG_TUNNEL_HTTP_WRON_AUTH = exports.LOG_TUNNEL_IDENTIFIED = exports.LOG_TUNNEL_DISCONNECTED = exports.LOG_TUNNEL_FAILED = exports.LOG_TUNNEL_CONNECTED = exports.LOG_AGENT_STARTED = exports.LOG_AGENT_SERVER_STARTED = exports.LOG_ERROR_STARTING_AGENT_SERVER = exports.LOG_SSH_CONNECTION = exports.LOG_WRONG_STREAM = exports.LOG_DETECTED_STREAM = exports.LOG_HTTP2_REQUEST = exports.LOG_HTTP2_CONNECTION = exports.LOG_HTTP1_REQUEST = void 0;
11
- exports.OPTION_SANDBOX_SNAPSHOT_NAME_ARG = exports.OPTION_SANDBOX_SNAPSHOT_NAME = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_DELETE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_GET = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_CREATE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_LIST = exports.DESC_COMMAND_SANDBOX_SNAPSHOT = exports.TXT_SANDBOX_COMMAND_KILLED = exports.OPTION_SANDBOX_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = exports.DESC_COMMAND_SANDBOX_EXEC_STATUS = exports.DESC_COMMAND_SANDBOX_EXEC_LIST = exports.TXT_SANDBOX_WAITING_START = exports.TXT_SANDBOX_WAITING_STOP = exports.TXT_SANDBOX_WAITING_APP = exports.TXT_SANDBOX_WAITING_SETUP = exports.TXT_SANDBOX_WAITING_RUNNING = exports.TXT_SANDBOX_STOPPED = exports.TXT_SANDBOX_STARTED = exports.TXT_SANDBOX_DESTROYED = exports.TXT_SANDBOX_CREATED = exports.TXT_SANDBOX_CREATING = exports.OPTION_SANDBOX_WAIT_TIMEOUT = exports.OPTION_SANDBOX_WAIT = exports.OPTION_SANDBOX_WAIT_APP = exports.OPTION_SANDBOX_WAIT_CONFIGURED = exports.OPTION_SANDBOX_WAIT_RUNNING = exports.ERR_SANDBOX_STOP_FAILED = exports.ERR_SANDBOX_NO_COMMANDS = exports.ERR_SANDBOX_RUNNING_FAILED = exports.ERR_SANDBOX_STOP_TIMEOUT = exports.ERR_SANDBOX_SNAPSHOT_TIMEOUT = exports.ERR_SANDBOX_RUNNING_TIMEOUT = exports.ERR_SANDBOX_APP_TIMEOUT = exports.ERR_SANDBOX_SETUP_TIMEOUT = exports.ERR_SANDBOX_APP_FAILED = exports.ERR_SANDBOX_SETUP_FAILED = exports.ERR_SANDBOX_INVALID_RESOURCES = exports.ERR_SANDBOX_NOT_FOUND = exports.OPTION_SANDBOX_RUNTIME = exports.OPTION_SANDBOX_APP_TYPE = exports.OPTION_SANDBOX_APP_DIR = exports.OPTION_SANDBOX_RUN_COMMAND = exports.OPTION_SANDBOX_TAGS = exports.OPTION_SANDBOX_INSTALL_COMMANDS = exports.OPTION_SANDBOX_RESOURCES = exports.OPTION_SANDBOX_OS = exports.OPTION_SANDBOX_NAME = exports.OPTION_SANDBOX_IDENTIFIER = void 0;
12
- exports.TXT_LOGIN_ENTER_BASE_URL = exports.TXT_LOGIN_SELECT_REGION = exports.TXT_WORKSPACE_NONE = exports.TXT_WORKSPACE_SET_SUCCESS = exports.ARG_COMMAND_WORKSPACE = exports.DESC_COMMAND_WORKSPACE_GET = exports.DESC_COMMAND_WORKSPACE_SET = exports.DESC_COMMAND_WORKSPACE_LIST = exports.DESC_COMMAND_WORKSPACE = exports.TXT_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.ERR_WHOAMI_LOGOUT = exports.TXT_WHOAMI_NO_PROJECT = exports.TXT_WHOAMI_NO_WORKSPACE = exports.DESC_COMMAND_WHOAMI = exports.TXT_SANDBOX_EXEC_FAILED = exports.TXT_SANDBOX_EXEC_INPROGRESS = exports.TXT_SANDBOX_EXEC_SUCCESS = exports.TXT_SANDBOX_EXEC_BACKGROUND = exports.TXT_SANDBOX_EXEC_ID = exports.ERR_SANDBOX_CP_INVALID_DEST = exports.ERR_SANDBOX_CP_SOURCE_NOT_FOUND = exports.TXT_SANDBOX_CP_DONE = exports.TXT_SANDBOX_CP_PROGRESS = exports.OPTION_SANDBOX_CP_SILENT = exports.OPTION_SANDBOX_CP_DEST = exports.OPTION_SANDBOX_CP_SOURCE = exports.DESC_COMMAND_SANDBOX_CP = exports.ERR_SANDBOX_ENDPOINTS_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_EXISTS = exports.TXT_SANDBOX_ENDPOINT_DELETED = exports.TXT_SANDBOX_ENDPOINT_ADDED = exports.OPTION_SANDBOX_ENDPOINT_TYPE = exports.OPTION_SANDBOX_ENDPOINT_PORT = exports.OPTION_SANDBOX_ENDPOINT_NAME_ARG = exports.OPTION_SANDBOX_ENDPOINT_NAME = exports.DESC_COMMAND_SANDBOX_ENDPOINT_DELETE = exports.DESC_COMMAND_SANDBOX_ENDPOINT_ADD = exports.DESC_COMMAND_SANDBOX_ENDPOINT_GET = exports.DESC_COMMAND_SANDBOX_ENDPOINT_LIST = exports.DESC_COMMAND_SANDBOX_ENDPOINT = exports.ERR_SANDBOX_SNAPSHOTS_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_FAILED = exports.TXT_SANDBOX_SNAPSHOT_WAITING = exports.TXT_SANDBOX_SNAPSHOT_DELETED = exports.TXT_SANDBOX_SNAPSHOT_CREATED = exports.OPTION_SANDBOX_FROM_SNAPSHOT = void 0;
13
- exports.TXT_PROJECT_NONE = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_PROJECT_SET_CLEARED = exports.TXT_PROJECT_SET_SUCCESS = exports.DESC_COMMAND_PROJECT_GET = exports.ARG_COMMAND_PROJECT_NAME = exports.DESC_COMMAND_PROJECT_SET = exports.DESC_COMMAND_PROJECT_LIST = exports.DESC_COMMAND_PROJECT = exports.ERR_COMMAND_PACKAGE_NO_PROJECTS = exports.DESC_COMMAND_PACKAGE_LIST = exports.ERR_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_PROJECT_FOUND = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_LOGIN_HTTP_SUCCESS = exports.ERR_LOGIN_HTTP_FAILED = exports.TXT_LOGIN_OAUTH = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_LOGIN_SUCCESS = exports.TXT_LOGIN_SELECT_WORKSPACE = void 0;
11
+ exports.OPTION_SANDBOX_FROM_SNAPSHOT = exports.OPTION_SANDBOX_SNAPSHOT_NAME_ARG = exports.OPTION_SANDBOX_SNAPSHOT_NAME = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_DELETE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_GET = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_CREATE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_LIST = exports.DESC_COMMAND_SANDBOX_SNAPSHOT = exports.TXT_SANDBOX_COMMAND_KILLED = exports.OPTION_SANDBOX_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = exports.DESC_COMMAND_SANDBOX_EXEC_STATUS = exports.DESC_COMMAND_SANDBOX_EXEC_LIST = exports.TXT_SANDBOX_WAITING_START = exports.TXT_SANDBOX_WAITING_STOP = exports.TXT_SANDBOX_WAITING_APP = exports.TXT_SANDBOX_WAITING_SETUP = exports.TXT_SANDBOX_WAITING_RUNNING = exports.TXT_SANDBOX_STOPPED = exports.TXT_SANDBOX_STARTED = exports.TXT_SANDBOX_DESTROYED = exports.TXT_SANDBOX_CREATED = exports.TXT_SANDBOX_CREATING = exports.OPTION_SANDBOX_WAIT = exports.OPTION_SANDBOX_WAIT_APP = exports.OPTION_SANDBOX_WAIT_CONFIGURED = exports.OPTION_SANDBOX_WAIT_RUNNING = exports.ERR_SANDBOX_STOP_FAILED = exports.ERR_SANDBOX_NO_COMMANDS = exports.ERR_SANDBOX_RUNNING_FAILED = exports.ERR_SANDBOX_STOP_TIMEOUT = exports.ERR_SANDBOX_SNAPSHOT_TIMEOUT = exports.ERR_SANDBOX_RUNNING_TIMEOUT = exports.ERR_SANDBOX_APP_TIMEOUT = exports.ERR_SANDBOX_SETUP_TIMEOUT = exports.ERR_SANDBOX_APP_FAILED = exports.ERR_SANDBOX_SETUP_FAILED = exports.ERR_SANDBOX_INVALID_RESOURCES = exports.ERR_SANDBOX_NOT_FOUND = exports.OPTION_SANDBOX_RUNTIME = exports.OPTION_SANDBOX_APP_TYPE = exports.OPTION_SANDBOX_APP_DIR = exports.OPTION_SANDBOX_RUN_COMMAND = exports.OPTION_SANDBOX_TAGS = exports.OPTION_SANDBOX_INSTALL_COMMANDS = exports.OPTION_SANDBOX_RESOURCES = exports.OPTION_SANDBOX_OS = exports.OPTION_SANDBOX_NAME = exports.OPTION_SANDBOX_IDENTIFIER = void 0;
12
+ exports.TXT_LOGIN_SELECT_WORKSPACE = exports.TXT_LOGIN_ENTER_BASE_URL = exports.TXT_LOGIN_SELECT_REGION = exports.TXT_WORKSPACE_NONE = exports.TXT_WORKSPACE_SET_SUCCESS = exports.ARG_COMMAND_WORKSPACE = exports.DESC_COMMAND_WORKSPACE_GET = exports.DESC_COMMAND_WORKSPACE_SET = exports.DESC_COMMAND_WORKSPACE_LIST = exports.DESC_COMMAND_WORKSPACE = exports.TXT_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.ERR_WHOAMI_LOGOUT = exports.TXT_WHOAMI_NO_PROJECT = exports.TXT_WHOAMI_NO_WORKSPACE = exports.DESC_COMMAND_WHOAMI = exports.TXT_SANDBOX_EXEC_FAILED = exports.TXT_SANDBOX_EXEC_INPROGRESS = exports.TXT_SANDBOX_EXEC_SUCCESS = exports.TXT_SANDBOX_EXEC_BACKGROUND = exports.TXT_SANDBOX_EXEC_ID = exports.ERR_SANDBOX_CP_INVALID_DEST = exports.ERR_SANDBOX_CP_SOURCE_NOT_FOUND = exports.TXT_SANDBOX_CP_DONE = exports.TXT_SANDBOX_CP_PROGRESS = exports.OPTION_SANDBOX_CP_SILENT = exports.OPTION_SANDBOX_CP_DEST = exports.OPTION_SANDBOX_CP_SOURCE = exports.DESC_COMMAND_SANDBOX_CP = exports.ERR_SANDBOX_ENDPOINTS_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_EXISTS = exports.TXT_SANDBOX_ENDPOINT_DELETED = exports.TXT_SANDBOX_ENDPOINT_ADDED = exports.OPTION_SANDBOX_ENDPOINT_TYPE = exports.OPTION_SANDBOX_ENDPOINT_PORT = exports.OPTION_SANDBOX_ENDPOINT_NAME_ARG = exports.OPTION_SANDBOX_ENDPOINT_NAME = exports.DESC_COMMAND_SANDBOX_ENDPOINT_DELETE = exports.DESC_COMMAND_SANDBOX_ENDPOINT_ADD = exports.DESC_COMMAND_SANDBOX_ENDPOINT_GET = exports.DESC_COMMAND_SANDBOX_ENDPOINT_LIST = exports.DESC_COMMAND_SANDBOX_ENDPOINT = exports.ERR_SANDBOX_SNAPSHOTS_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_FAILED = exports.TXT_SANDBOX_SNAPSHOT_WAITING = exports.TXT_SANDBOX_SNAPSHOT_DELETED = exports.TXT_SANDBOX_SNAPSHOT_CREATED = void 0;
13
+ exports.TXT_PROJECT_NONE = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_PROJECT_SET_CLEARED = exports.TXT_PROJECT_SET_SUCCESS = exports.DESC_COMMAND_PROJECT_GET = exports.ARG_COMMAND_PROJECT_NAME = exports.DESC_COMMAND_PROJECT_SET = exports.DESC_COMMAND_PROJECT_LIST = exports.DESC_COMMAND_PROJECT = exports.ERR_COMMAND_PACKAGE_NO_PROJECTS = exports.DESC_COMMAND_PACKAGE_LIST = exports.ERR_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_PROJECT_FOUND = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_LOGIN_HTTP_SUCCESS = exports.ERR_LOGIN_HTTP_FAILED = exports.TXT_LOGIN_OAUTH = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_LOGIN_SUCCESS = void 0;
14
14
  const utils_1 = require("./utils");
15
15
  exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
16
16
  exports.ERR_REST_API_NOT_RESPONDING = 'Api endpoint not responding. Try again later...';
@@ -519,7 +519,6 @@ exports.OPTION_SANDBOX_WAIT_RUNNING = 'wait until sandbox is running';
519
519
  exports.OPTION_SANDBOX_WAIT_CONFIGURED = 'wait until sandbox ran setup commands';
520
520
  exports.OPTION_SANDBOX_WAIT_APP = 'wait until sandbox ran ran app commands';
521
521
  exports.OPTION_SANDBOX_WAIT = 'wait until operation completes';
522
- exports.OPTION_SANDBOX_WAIT_TIMEOUT = 'timeout in seconds (default: 300)';
523
522
  // Sandbox success messages
524
523
  const TXT_SANDBOX_CREATING = (name, identifier) => `Creating sandbox: ${name} (${identifier})`;
525
524
  exports.TXT_SANDBOX_CREATING = TXT_SANDBOX_CREATING;
@@ -635,39 +634,18 @@ exports.ERR_LOGIN_NO_WORKSPACE_FOUND = 'Provided workspace has been not found';
635
634
  exports.ERR_LOGIN_NO_PROJECT_FOUND = 'Provided project has been not found';
636
635
  exports.ERR_LOGIN_INVALID_BASE_URL = 'Invalid URL format';
637
636
  const ERR_API_MESSAGE_REPLACER = (message, path, baseUrl) => {
638
- let workspace = null;
639
- let appUrl = null;
640
- if (path) {
637
+ let workspaceUrl = null;
638
+ if (path && baseUrl) {
641
639
  const m = /\/workspaces\/([^/]+)\//.exec(path);
642
640
  if (m) {
643
- workspace = m[1];
644
- }
645
- }
646
- if (baseUrl) {
647
- if (baseUrl.hostname.includes('api.buddy.works')) {
648
- appUrl = 'app.buddy.works';
649
- }
650
- else if (baseUrl.hostname.includes('api.eu.buddy.works')) {
651
- appUrl = 'eu.buddy.works';
652
- }
653
- else if (baseUrl.hostname.includes('api.as.buddy.works')) {
654
- appUrl = 'as.buddy.works';
655
- }
656
- else if (baseUrl.hostname.includes('api.awsdev.net')) {
657
- appUrl = 'app.awsdev.net';
658
- }
659
- else if (baseUrl.hostname.includes('api.awsstage.net')) {
660
- appUrl = 'app.awsstage.net';
661
- }
662
- else {
663
- appUrl = baseUrl.hostname;
641
+ workspaceUrl = (0, utils_1.getAppWorkspaceSettingsUrl)(baseUrl, m[1]);
664
642
  }
665
643
  }
666
644
  if (message === 'API is disabled in this workspace') {
667
645
  message =
668
646
  'API is disabled in this workspace. To enable it, ask a workspace admin to update the settings';
669
- if (appUrl || workspace) {
670
- message += `: https://${appUrl}/${workspace}/-/workspace`;
647
+ if (workspaceUrl) {
648
+ message += `: ${workspaceUrl}`;
671
649
  }
672
650
  }
673
651
  return message;
@@ -30,7 +30,7 @@ class Cfg {
30
30
  throw new Error((0, texts_1.ERR_CANT_CREATE_DIR_IN_HOME)('.bdy'));
31
31
  }
32
32
  try {
33
- (0, fs_1.chmodSync)(this.dir, 0o777);
33
+ (0, fs_1.chmodSync)(this.dir, 0o700);
34
34
  }
35
35
  catch {
36
36
  // do nothing
@@ -44,7 +44,7 @@ class Cfg {
44
44
  throw new Error((0, texts_1.ERR_CANT_CREATE_DIR_IN_HOME)('.bdy/cfg.json'));
45
45
  }
46
46
  try {
47
- (0, fs_1.chmodSync)(this.file, 0o666);
47
+ (0, fs_1.chmodSync)(this.file, 0o600);
48
48
  }
49
49
  catch {
50
50
  // do nothing
@@ -172,14 +172,23 @@ class Cfg {
172
172
  this.json.apiToken = token;
173
173
  this.save();
174
174
  }
175
- setApiClient(clientId, clientSecret) {
176
- if (!clientId || !clientSecret) {
175
+ setApiRefreshToken(token) {
176
+ if (!token)
177
+ delete this.json.apiRefreshToken;
178
+ else
179
+ this.json.apiRefreshToken = token;
180
+ this.save();
181
+ }
182
+ setApiClient(clientId, clientSecret, clientToken) {
183
+ if (!clientId || !clientSecret || !clientToken) {
177
184
  delete this.json.apiClientId;
178
185
  delete this.json.apiClientSecret;
186
+ delete this.json.apiClientToken;
179
187
  }
180
188
  else {
181
189
  this.json.apiClientId = clientId;
182
190
  this.json.apiClientSecret = clientSecret;
191
+ this.json.apiClientToken = clientToken;
183
192
  }
184
193
  this.save();
185
194
  }
@@ -203,12 +212,18 @@ class Cfg {
203
212
  getApiToken() {
204
213
  return this.json.apiToken || '';
205
214
  }
215
+ getApiRefreshApiToken() {
216
+ return this.json.apiRefreshToken || '';
217
+ }
206
218
  getApiClientId() {
207
219
  return this.json.apiClientId || '';
208
220
  }
209
221
  getApiClientSecret() {
210
222
  return this.json.apiClientSecret || '';
211
223
  }
224
+ getApiClientToken() {
225
+ return this.json.apiClientToken || '';
226
+ }
212
227
  getTokenHost() {
213
228
  const token = this.getToken();
214
229
  if (!token) {
@@ -251,6 +266,10 @@ class Cfg {
251
266
  }
252
267
  clearLogin() {
253
268
  delete this.json.apiToken;
269
+ delete this.json.apiRefreshToken;
270
+ delete this.json.apiClientId;
271
+ delete this.json.apiClientSecret;
272
+ delete this.json.apiClientToken;
254
273
  delete this.json.workspace;
255
274
  delete this.json.project;
256
275
  delete this.json.baseUrl;
@@ -297,7 +316,7 @@ class Cfg {
297
316
  throw new Error((0, texts_1.ERR_CANT_CREATE_DIR_IN_HOME)('.bdy/cfg.json'));
298
317
  }
299
318
  try {
300
- (0, fs_1.chmodSync)(this.file, 0o666);
319
+ (0, fs_1.chmodSync)(this.file, 0o600);
301
320
  }
302
321
  catch {
303
322
  // do nothing
@@ -40,6 +40,12 @@ exports.isLinux = exports.isOsx = exports.isDocker = exports.sleep = exports.get
40
40
  exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.createSshHostKey = exports.getRealTargetHost = exports.isWindows = void 0;
41
41
  exports.apiErrorCodeToClass = apiErrorCodeToClass;
42
42
  exports.isFile = isFile;
43
+ exports.getAppWorkspaceUrl = getAppWorkspaceUrl;
44
+ exports.getAppWorkspaceSettingsUrl = getAppWorkspaceSettingsUrl;
45
+ exports.getAppProjectUrl = getAppProjectUrl;
46
+ exports.getAppSandboxUrl = getAppSandboxUrl;
47
+ exports.getAppUrl = getAppUrl;
48
+ exports.getAppHostByApiBaseUrl = getAppHostByApiBaseUrl;
43
49
  exports.asyncWait = asyncWait;
44
50
  const node_path_1 = __importStar(require("node:path"));
45
51
  const node_fs_1 = require("node:fs");
@@ -534,6 +540,83 @@ function isFile(path) {
534
540
  return false;
535
541
  }
536
542
  }
543
+ function getAppWorkspaceUrl(baseUrl, workspace) {
544
+ return getAppUrl(baseUrl, `/${encodeURIComponent(workspace)}`);
545
+ }
546
+ function getAppWorkspaceSettingsUrl(baseUrl, workspace) {
547
+ return `${getAppWorkspaceUrl(baseUrl, workspace)}/-/workspace`;
548
+ }
549
+ function getAppProjectUrl(baseUrl, workspace, project) {
550
+ return `${getAppWorkspaceUrl(baseUrl, workspace)}/${encodeURIComponent(project)}`;
551
+ }
552
+ function getAppSandboxUrl(baseUrl, workspace, project, sandboxId) {
553
+ return `${getAppProjectUrl(baseUrl, workspace, project)}/sandboxes/${encodeURIComponent(sandboxId)}`;
554
+ }
555
+ function getAppUrl(baseUrl, path) {
556
+ return `https://${getAppHostByApiBaseUrl(baseUrl)}${path}`;
557
+ }
558
+ function getAppHostByApiBaseUrl(baseUrl) {
559
+ if (baseUrl.hostname.includes('api.buddy.works')) {
560
+ return 'app.buddy.works';
561
+ }
562
+ else if (baseUrl.hostname.includes('api.eu.buddy.works')) {
563
+ return 'eu.buddy.works';
564
+ }
565
+ else if (baseUrl.hostname.includes('api.as.buddy.works')) {
566
+ return 'as.buddy.works';
567
+ }
568
+ else if (baseUrl.hostname.includes('api.awsdev.net')) {
569
+ return 'app.awsdev.net';
570
+ }
571
+ else if (baseUrl.hostname.includes('api.awsstage.net')) {
572
+ return 'app.awsstage.net';
573
+ }
574
+ else if (baseUrl.hostname.includes('api.buddysd.com')) {
575
+ return 'app.buddysd.com';
576
+ }
577
+ else if (baseUrl.hostname.includes('api.e2e.com')) {
578
+ return 'app.e2e.com';
579
+ }
580
+ else if (baseUrl.hostname.includes('api.sd1.com')) {
581
+ return 'app.sd1.com';
582
+ }
583
+ else if (baseUrl.hostname.includes('api.sd2.com')) {
584
+ return 'app.sd2.com';
585
+ }
586
+ else if (baseUrl.hostname.includes('api.sd3.com')) {
587
+ return 'app.sd3.com';
588
+ }
589
+ else if (baseUrl.hostname.includes('api.sd4.com')) {
590
+ return 'app.sd4.com';
591
+ }
592
+ else if (baseUrl.hostname.includes('api.sd5.com')) {
593
+ return 'app.sd5.com';
594
+ }
595
+ else if (baseUrl.hostname.includes('api.sd6.com')) {
596
+ return 'app.sd6.com';
597
+ }
598
+ else if (baseUrl.hostname.includes('api.sd7.com')) {
599
+ return 'app.sd7.com';
600
+ }
601
+ else if (baseUrl.hostname.includes('api.sd8.com')) {
602
+ return 'app.sd8.com';
603
+ }
604
+ else if (baseUrl.hostname.includes('api.sd9.com')) {
605
+ return 'app.sd9.com';
606
+ }
607
+ else if (baseUrl.hostname.includes('api.eu.awsstage.net')) {
608
+ return 'eu.awsstage.net';
609
+ }
610
+ else if (baseUrl.hostname.includes('api.awsmaster.net')) {
611
+ return 'app.awsmaster.net';
612
+ }
613
+ else if (baseUrl.hostname.includes('api.buddy.mom')) {
614
+ return 'app.buddy.mom';
615
+ }
616
+ else {
617
+ return baseUrl.hostname;
618
+ }
619
+ }
537
620
  async function asyncWait(ms) {
538
621
  return new Promise((resolve) => {
539
622
  setTimeout(resolve, ms);
@@ -37,6 +37,7 @@ async function getParseDom() {
37
37
  function prepareSnapshotPlugin(data) {
38
38
  try {
39
39
  const validatedData = schemas_1.snapshotSchema.parse(data);
40
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
41
  const { version, ...snapshot } = validatedData;
41
42
  const cookies = snapshot.cookies.map((cookie) => {
42
43
  if (cookie.domain) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.16.21-dev",
4
+ "version": "1.16.23-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {