bdy 1.16.34-dev → 1.16.36-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.
- package/distTs/package.json +1 -1
- package/distTs/src/agent/agent.js +4 -1
- package/distTs/src/agent/manager.js +35 -0
- package/distTs/src/api/client.js +1 -1
- package/distTs/src/command/agent/install.js +18 -2
- package/distTs/src/command/agent/tags/get.js +32 -0
- package/distTs/src/command/agent/tags/set.js +38 -0
- package/distTs/src/command/agent/tags.js +13 -0
- package/distTs/src/command/agent.js +2 -0
- package/distTs/src/command/api/delete.js +9 -0
- package/distTs/src/command/api/get.js +9 -0
- package/distTs/src/command/api/patch.js +9 -0
- package/distTs/src/command/api/post.js +9 -0
- package/distTs/src/command/api/put.js +9 -0
- package/distTs/src/command/api/request.js +170 -0
- package/distTs/src/command/api.js +10 -0
- package/distTs/src/command/login.js +20 -2
- package/distTs/src/command/tunnel/http.js +1 -1
- package/distTs/src/command/tunnel/start.js +1 -1
- package/distTs/src/command/tunnel/tcp.js +1 -1
- package/distTs/src/command/tunnel/tls.js +1 -1
- package/distTs/src/input.js +3 -1
- package/distTs/src/texts.js +43 -12
- package/distTs/src/tunnel/api/agent.js +6 -0
- package/distTs/src/tunnel/api/buddy.js +11 -3
- package/package.json +1 -1
package/distTs/package.json
CHANGED
|
@@ -19,12 +19,13 @@ class Agent extends events_1.default {
|
|
|
19
19
|
target;
|
|
20
20
|
disabled;
|
|
21
21
|
tunnels;
|
|
22
|
+
tags;
|
|
22
23
|
tunnelsUpdating;
|
|
23
24
|
api;
|
|
24
25
|
socket;
|
|
25
26
|
manager;
|
|
26
27
|
onRefresh;
|
|
27
|
-
constructor(id, host, token, service, target, api, disabled) {
|
|
28
|
+
constructor(id, host, token, service, target, tags, api, disabled) {
|
|
28
29
|
super();
|
|
29
30
|
this.id = id;
|
|
30
31
|
this.host = host;
|
|
@@ -33,6 +34,7 @@ class Agent extends events_1.default {
|
|
|
33
34
|
this.target = target;
|
|
34
35
|
this.disabled = disabled;
|
|
35
36
|
this.tunnels = [];
|
|
37
|
+
this.tags = [];
|
|
36
38
|
this.tunnelsUpdating = false;
|
|
37
39
|
this.api = api;
|
|
38
40
|
this.manager = null;
|
|
@@ -79,6 +81,7 @@ class Agent extends events_1.default {
|
|
|
79
81
|
}
|
|
80
82
|
else {
|
|
81
83
|
this.target = !!data.target;
|
|
84
|
+
this.tags = data.tags || [];
|
|
82
85
|
if (!!data.disabled !== this.disabled) {
|
|
83
86
|
if (data.disabled)
|
|
84
87
|
await this.disable();
|
|
@@ -124,6 +124,15 @@ class AgentManagerClass {
|
|
|
124
124
|
tunnels,
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
+
async processAgentTags(res) {
|
|
128
|
+
if (!this.agent) {
|
|
129
|
+
this.serverError(res, 'Agent not enabled');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.serverOutput(res, {
|
|
133
|
+
tags: this.agent.tags,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
127
136
|
async processAgentTarget(res) {
|
|
128
137
|
if (!this.agent) {
|
|
129
138
|
this.serverError(res, 'Agent not enabled');
|
|
@@ -189,6 +198,28 @@ class AgentManagerClass {
|
|
|
189
198
|
});
|
|
190
199
|
});
|
|
191
200
|
}
|
|
201
|
+
async processAgentTagsSet(req, res) {
|
|
202
|
+
if (!this.agent) {
|
|
203
|
+
this.serverError(res, 'Agent not enabled');
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
let data;
|
|
207
|
+
try {
|
|
208
|
+
data = await this.processBody(req);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
this.serverError(res, 'Wrong input data');
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
await buddy_1.default.updateTags(this.id || '', this.host || '', this.token || '', data.tags || []);
|
|
216
|
+
this.serverOutput(res, {});
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
this.serverError(res, err.message);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
192
223
|
async processAgentDebug(req, res) {
|
|
193
224
|
if (!this.agent) {
|
|
194
225
|
this.serverError(res, 'Agent not enabled');
|
|
@@ -354,6 +385,10 @@ class AgentManagerClass {
|
|
|
354
385
|
return this.processStatus(res);
|
|
355
386
|
if (req.url === '/target')
|
|
356
387
|
return this.processAgentTarget(res);
|
|
388
|
+
if (req.url === '/agent/tags')
|
|
389
|
+
return this.processAgentTags(res);
|
|
390
|
+
if (req.url === '/agent/tags/set')
|
|
391
|
+
return this.processAgentTagsSet(req, res);
|
|
357
392
|
if (req.url === '/target/enable')
|
|
358
393
|
return this.processAgentTargetEnable(res);
|
|
359
394
|
if (req.url === '/target/disable')
|
package/distTs/src/api/client.js
CHANGED
|
@@ -643,7 +643,7 @@ class ApiClient {
|
|
|
643
643
|
form.append('file', file);
|
|
644
644
|
return await this.request({
|
|
645
645
|
method: 'POST',
|
|
646
|
-
path: `/workspaces/${encodeURIComponent(workspace)}/packages/${encodeURIComponent(pkgId)}/versions/${versionId}/upload`,
|
|
646
|
+
path: `/workspaces/${encodeURIComponent(workspace)}/packages/${encodeURIComponent(pkgId)}/versions/${encodeURIComponent(versionId)}/upload`,
|
|
647
647
|
body: form,
|
|
648
648
|
parseResponseBody: true,
|
|
649
649
|
});
|
|
@@ -46,6 +46,19 @@ const removeAllAndExit = async (txt, id, host, token) => {
|
|
|
46
46
|
}
|
|
47
47
|
output_1.default.exitError(txt);
|
|
48
48
|
};
|
|
49
|
+
const prepareTags = (tags) => {
|
|
50
|
+
const validTags = [];
|
|
51
|
+
if (tags) {
|
|
52
|
+
tags.forEach((t) => {
|
|
53
|
+
const validTag = t.trim();
|
|
54
|
+
if (t.includes(' ')) {
|
|
55
|
+
output_1.default.exitError((0, texts_1.ERR_AGENT_TAG_INVALID)(validTag));
|
|
56
|
+
}
|
|
57
|
+
validTags.push(validTag);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return validTags;
|
|
61
|
+
};
|
|
49
62
|
const installService = async (options) => {
|
|
50
63
|
const isSupported = await manager_1.default.system.isSupported();
|
|
51
64
|
if (!isSupported) {
|
|
@@ -73,7 +86,8 @@ const installService = async (options) => {
|
|
|
73
86
|
}
|
|
74
87
|
const host = cfg_1.default.getTokenHost();
|
|
75
88
|
if (!agent) {
|
|
76
|
-
|
|
89
|
+
const tags = prepareTags(options.tag);
|
|
90
|
+
agent = await buddy_1.default.register(true, target, host, cfg_1.default.getToken(), tags, (region) => {
|
|
77
91
|
cfg_1.default.setRegionIfNotSet(region);
|
|
78
92
|
});
|
|
79
93
|
id = agent.id;
|
|
@@ -137,9 +151,10 @@ const installApp = async (options) => {
|
|
|
137
151
|
if (!id) {
|
|
138
152
|
await input_1.default.tunnelToken(options.token);
|
|
139
153
|
host = cfg_1.default.getTokenHost();
|
|
154
|
+
const tags = prepareTags(options.tag);
|
|
140
155
|
try {
|
|
141
156
|
output_1.default.normal(texts_1.TXT_AGENT_STANDALONE_AGENT_REGISTERING, false);
|
|
142
|
-
const agent = await buddy_1.default.register(true, !!options.target, host, cfg_1.default.getToken(), (region) => {
|
|
157
|
+
const agent = await buddy_1.default.register(true, !!options.target, host, cfg_1.default.getToken(), tags, (region) => {
|
|
143
158
|
cfg_1.default.setRegionIfNotSet(region);
|
|
144
159
|
});
|
|
145
160
|
logger_1.default.info(texts_1.TXT_AGENT_STANDALONE_AGENT_REGISTERED);
|
|
@@ -200,6 +215,7 @@ commandAgentInstall.option('-u, --user <user>', texts_1.OPTION_USER);
|
|
|
200
215
|
commandAgentInstall.option('-a,--app', texts_1.OPTION_APP);
|
|
201
216
|
commandAgentInstall.option('--pass <password>', texts_1.OPTION_PASS);
|
|
202
217
|
commandAgentInstall.option('--target', texts_1.OPTION_AGENT_TARGET);
|
|
218
|
+
commandAgentInstall.option('--tag <tag...>', texts_1.OPTION_AGENT_TAG);
|
|
203
219
|
commandAgentInstall.option('-d, --debug', texts_1.OPTION_AGENT_DEBUG);
|
|
204
220
|
commandAgentInstall.action(async (options) => {
|
|
205
221
|
options.start = options.start === 'true' || options.start === true;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
const texts_1 = require("../../../texts");
|
|
8
|
+
const output_1 = __importDefault(require("../../../output"));
|
|
9
|
+
const agent_1 = __importDefault(require("../../../tunnel/api/agent"));
|
|
10
|
+
const commandAgentTagsGet = (0, utils_1.newCommand)('get', texts_1.DESC_COMMAND_AGENT_TAGS_GET);
|
|
11
|
+
commandAgentTagsGet.action(async () => {
|
|
12
|
+
if (!commandAgentTagsGet.agentInstalled) {
|
|
13
|
+
output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
|
|
14
|
+
}
|
|
15
|
+
if (!commandAgentTagsGet.agentStatus) {
|
|
16
|
+
output_1.default.exitError(texts_1.ERR_AGENT_NOT_RUNNING);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const api = new agent_1.default(commandAgentTagsGet.agentPort || 0);
|
|
20
|
+
const data = await api.fetchAgentTags();
|
|
21
|
+
if (data.tags && data.tags.length > 0) {
|
|
22
|
+
output_1.default.exitNormal(data.tags.join(' '));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
output_1.default.exitError(texts_1.TXT_AGENT_NO_TAGS);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
output_1.default.exitError(err);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
exports.default = commandAgentTagsGet;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
const texts_1 = require("../../../texts");
|
|
8
|
+
const output_1 = __importDefault(require("../../../output"));
|
|
9
|
+
const agent_1 = __importDefault(require("../../../tunnel/api/agent"));
|
|
10
|
+
const commandAgentTagsSet = (0, utils_1.newCommand)('set', texts_1.DESC_COMMAND_AGENT_TAGS_SET);
|
|
11
|
+
commandAgentTagsSet.argument('[tags...]', texts_1.OPT_COMMAND_AGENT_TAGS_SET);
|
|
12
|
+
commandAgentTagsSet.action(async (tags) => {
|
|
13
|
+
if (!commandAgentTagsSet.agentInstalled) {
|
|
14
|
+
output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
|
|
15
|
+
}
|
|
16
|
+
if (!commandAgentTagsSet.agentStatus) {
|
|
17
|
+
output_1.default.exitError(texts_1.ERR_AGENT_NOT_RUNNING);
|
|
18
|
+
}
|
|
19
|
+
const validTags = [];
|
|
20
|
+
if (tags) {
|
|
21
|
+
tags.forEach((t) => {
|
|
22
|
+
const validTag = t.trim();
|
|
23
|
+
if (validTag.includes(' ')) {
|
|
24
|
+
output_1.default.exitError((0, texts_1.ERR_AGENT_TAG_INVALID)(validTag));
|
|
25
|
+
}
|
|
26
|
+
validTags.push(validTag);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const api = new agent_1.default(commandAgentTagsSet.agentPort || 0);
|
|
31
|
+
await api.setAgentTags(validTags);
|
|
32
|
+
output_1.default.exitSuccess(texts_1.TXT_AGENT_TAGS_SET);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
output_1.default.exitError(err);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
exports.default = commandAgentTagsSet;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("../../utils");
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const set_1 = __importDefault(require("./tags/set"));
|
|
9
|
+
const get_1 = __importDefault(require("./tags/get"));
|
|
10
|
+
const commandAgentTags = (0, utils_1.newCommand)('tags', texts_1.DESC_COMMAND_AGENT_TAGS);
|
|
11
|
+
commandAgentTags.addCommand(set_1.default);
|
|
12
|
+
commandAgentTags.addCommand(get_1.default);
|
|
13
|
+
exports.default = commandAgentTags;
|
|
@@ -19,6 +19,7 @@ const target_1 = __importDefault(require("./agent/target"));
|
|
|
19
19
|
const enable_1 = __importDefault(require("./agent/enable"));
|
|
20
20
|
const disable_1 = __importDefault(require("./agent/disable"));
|
|
21
21
|
const debug_1 = __importDefault(require("./agent/debug"));
|
|
22
|
+
const tags_1 = __importDefault(require("./agent/tags"));
|
|
22
23
|
const commandAgent = (0, utils_1.newCommand)('agent', texts_1.DESC_COMMAND_AGENT);
|
|
23
24
|
commandAgent.addCommand(install_1.default);
|
|
24
25
|
commandAgent.addCommand(enable_1.default);
|
|
@@ -30,6 +31,7 @@ commandAgent.addCommand(uninstall_1.default);
|
|
|
30
31
|
commandAgent.addCommand(status_1.default);
|
|
31
32
|
commandAgent.addCommand(tunnel_1.default);
|
|
32
33
|
commandAgent.addCommand(target_1.default);
|
|
34
|
+
commandAgent.addCommand(tags_1.default);
|
|
33
35
|
commandAgent.addCommand(update_1.default);
|
|
34
36
|
commandAgent.addCommand(version_1.default);
|
|
35
37
|
commandAgent.addCommand(debug_1.default);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const request_1 = __importDefault(require("./request"));
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const commandApiDelete = (0, request_1.default)('delete', texts_1.DESC_COMMAND_API_DELETE, true);
|
|
9
|
+
exports.default = commandApiDelete;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const request_1 = __importDefault(require("./request"));
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const commandApiGet = (0, request_1.default)('get', texts_1.DESC_COMMAND_API_GET, false);
|
|
9
|
+
exports.default = commandApiGet;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const request_1 = __importDefault(require("./request"));
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const commandApiPatch = (0, request_1.default)('patch', texts_1.DESC_COMMAND_API_PATCH, true);
|
|
9
|
+
exports.default = commandApiPatch;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const texts_1 = require("../../texts");
|
|
7
|
+
const request_1 = __importDefault(require("./request"));
|
|
8
|
+
const commandApiPost = (0, request_1.default)('post', texts_1.DESC_COMMAND_API_POST, true);
|
|
9
|
+
exports.default = commandApiPost;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const request_1 = __importDefault(require("./request"));
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const commandApiPut = (0, request_1.default)('put', texts_1.DESC_COMMAND_API_PUT, true);
|
|
9
|
+
exports.default = commandApiPut;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("../../utils");
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const output_1 = __importDefault(require("../../output"));
|
|
9
|
+
const input_1 = __importDefault(require("../../input"));
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
const promises_1 = require("node:stream/promises");
|
|
12
|
+
const path_1 = require("path");
|
|
13
|
+
const undici_1 = require("undici");
|
|
14
|
+
const tryReadFile = async (filePath) => {
|
|
15
|
+
try {
|
|
16
|
+
return await node_fs_1.default.promises.readFile(filePath, 'utf8');
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
output_1.default.exitError(texts_1.ERR_API_REQUEST_FILE_ERROR);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const tryOpenAsBlob = async (filePath) => {
|
|
23
|
+
try {
|
|
24
|
+
return await node_fs_1.default.openAsBlob(filePath);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
output_1.default.exitError(texts_1.ERR_API_REQUEST_FILE_ERROR);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const prepareJsonBody = async (json) => {
|
|
31
|
+
let data;
|
|
32
|
+
if (json.startsWith('@')) {
|
|
33
|
+
data = await tryReadFile(json.replace(/^@/, ''));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
data = json;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(data);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
output_1.default.exitError(texts_1.ERR_API_REQUEST_INVALID_JSON);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const prepareEncodedBody = async (params) => {
|
|
46
|
+
const obj = {};
|
|
47
|
+
for (let i = 0; i < params.length; i += 1) {
|
|
48
|
+
const s = params[i].split(':');
|
|
49
|
+
if (s.length !== 2) {
|
|
50
|
+
output_1.default.exitError(texts_1.ERR_API_REQUEST_BODY_VALUE);
|
|
51
|
+
}
|
|
52
|
+
const [key, value] = s;
|
|
53
|
+
if (value.startsWith('@')) {
|
|
54
|
+
obj[key] = await tryReadFile(value.replace(/^@/, ''));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
obj[key] = value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return obj;
|
|
61
|
+
};
|
|
62
|
+
const prepareMultipartBody = async (params) => {
|
|
63
|
+
const form = new undici_1.FormData();
|
|
64
|
+
for (let i = 0; i < params.length; i += 1) {
|
|
65
|
+
const s = params[i].split(':');
|
|
66
|
+
if (s.length !== 2) {
|
|
67
|
+
output_1.default.exitError(texts_1.ERR_API_REQUEST_BODY_VALUE);
|
|
68
|
+
}
|
|
69
|
+
const [key, value] = s;
|
|
70
|
+
if (value.startsWith('@')) {
|
|
71
|
+
const blob = await tryOpenAsBlob(value.replace(/^@/, ''));
|
|
72
|
+
form.set(key, blob);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
form.set(key, value);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return form;
|
|
79
|
+
};
|
|
80
|
+
const request = async (method, url, options) => {
|
|
81
|
+
output_1.default.handleSignals();
|
|
82
|
+
const workspace = input_1.default.restApiWorkspace(options.workspace, true);
|
|
83
|
+
const project = input_1.default.restApiProject(options.project, true);
|
|
84
|
+
const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
|
|
85
|
+
const query = {};
|
|
86
|
+
if (options.query) {
|
|
87
|
+
options.query.forEach((q) => {
|
|
88
|
+
const s = q.split(':');
|
|
89
|
+
if (s.length !== 2) {
|
|
90
|
+
output_1.default.exitError((0, texts_1.ERR_API_REQUEST_QUERY_VALUE)(q));
|
|
91
|
+
}
|
|
92
|
+
query[s[0]] = s[1];
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
let preparedUrl = url;
|
|
96
|
+
if (workspace) {
|
|
97
|
+
preparedUrl = preparedUrl.replaceAll('{workspace_domain}', encodeURIComponent(workspace));
|
|
98
|
+
}
|
|
99
|
+
if (project) {
|
|
100
|
+
preparedUrl = preparedUrl.replaceAll('{project_name}', encodeURIComponent(project));
|
|
101
|
+
}
|
|
102
|
+
const m = preparedUrl.match(/{[^}]*}/g);
|
|
103
|
+
if (m) {
|
|
104
|
+
output_1.default.exitError((0, texts_1.ERR_API_PARAMETER_NOT_REPLACED)(m[0]));
|
|
105
|
+
}
|
|
106
|
+
let filePath;
|
|
107
|
+
if (options.output) {
|
|
108
|
+
const fp = (0, path_1.resolve)(options.output);
|
|
109
|
+
try {
|
|
110
|
+
await node_fs_1.default.promises.stat(fp);
|
|
111
|
+
output_1.default.exitError(texts_1.ERR_API_REQUEST_OUTPUT_EXISTS);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
filePath = fp;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const opts = {
|
|
118
|
+
method: method.toUpperCase(),
|
|
119
|
+
path: preparedUrl,
|
|
120
|
+
query,
|
|
121
|
+
rawResponseBody: true,
|
|
122
|
+
};
|
|
123
|
+
if (options.data && options.data.length > 0) {
|
|
124
|
+
opts.httpUrlEncoded = true;
|
|
125
|
+
opts.body = await prepareEncodedBody(options.data);
|
|
126
|
+
}
|
|
127
|
+
else if (options.form && options.form.length > 0) {
|
|
128
|
+
opts.body = await prepareMultipartBody(options.form);
|
|
129
|
+
}
|
|
130
|
+
else if (options.json) {
|
|
131
|
+
opts.body = await prepareJsonBody(options.json);
|
|
132
|
+
}
|
|
133
|
+
const body = await client.request(opts);
|
|
134
|
+
if (filePath) {
|
|
135
|
+
const ws = node_fs_1.default.createWriteStream(filePath);
|
|
136
|
+
await (0, promises_1.pipeline)(body, ws);
|
|
137
|
+
output_1.default.exitNormal('');
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
body.on('data', (data) => {
|
|
141
|
+
output_1.default.normal(data.toString('utf8'));
|
|
142
|
+
});
|
|
143
|
+
body.on('close', () => {
|
|
144
|
+
output_1.default.exitNormal('');
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const newApiRequestCommand = (method, description, allowBody) => {
|
|
149
|
+
const command = (0, utils_1.newCommand)(method, description);
|
|
150
|
+
command.hideVersionUpdate = true;
|
|
151
|
+
command.alias(method.toUpperCase());
|
|
152
|
+
command.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
|
|
153
|
+
command.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
|
|
154
|
+
command.option('--region <region>', texts_1.OPTION_REST_API_REGION);
|
|
155
|
+
command.option('-w, --workspace <domain>', texts_1.DESC_COMMAND_API_WORKSPACE);
|
|
156
|
+
command.option('-p, --project <name>', texts_1.DESC_COMMAND_API_PROJECT);
|
|
157
|
+
command.option('-q, --query <key:val...>', texts_1.DESC_COMMAND_API_REQUEST_QUERY);
|
|
158
|
+
command.option('-o, --output <filepath>', texts_1.DESC_COMMAND_API_OUTPUT);
|
|
159
|
+
if (allowBody) {
|
|
160
|
+
command.option('-d, --data <key:val...>', texts_1.DESC_COMMAND_API_DATA);
|
|
161
|
+
command.option('-j, --json <json>', texts_1.DESC_COMMAND_API_JSON);
|
|
162
|
+
command.option('-f, --form <key:val...>', texts_1.DESC_COMMAND_API_FORM);
|
|
163
|
+
}
|
|
164
|
+
command.argument('<url>', texts_1.DESC_COMMAND_API_REQUEST_URL);
|
|
165
|
+
command.action(async (url, options) => {
|
|
166
|
+
await request(method, url, options);
|
|
167
|
+
});
|
|
168
|
+
return command;
|
|
169
|
+
};
|
|
170
|
+
exports.default = newApiRequestCommand;
|
|
@@ -7,7 +7,17 @@ const utils_1 = require("../utils");
|
|
|
7
7
|
const texts_1 = require("../texts");
|
|
8
8
|
const list_1 = __importDefault(require("./api/list"));
|
|
9
9
|
const info_1 = __importDefault(require("./api/info"));
|
|
10
|
+
const post_1 = __importDefault(require("./api/post"));
|
|
11
|
+
const put_1 = __importDefault(require("./api/put"));
|
|
12
|
+
const patch_1 = __importDefault(require("./api/patch"));
|
|
13
|
+
const get_1 = __importDefault(require("./api/get"));
|
|
14
|
+
const delete_1 = __importDefault(require("./api/delete"));
|
|
10
15
|
const commandApi = (0, utils_1.newCommand)('api', texts_1.DESC_COMMAND_API);
|
|
11
16
|
commandApi.addCommand(list_1.default);
|
|
12
17
|
commandApi.addCommand(info_1.default);
|
|
18
|
+
commandApi.addCommand(post_1.default);
|
|
19
|
+
commandApi.addCommand(put_1.default);
|
|
20
|
+
commandApi.addCommand(patch_1.default);
|
|
21
|
+
commandApi.addCommand(get_1.default);
|
|
22
|
+
commandApi.addCommand(delete_1.default);
|
|
13
23
|
exports.default = commandApi;
|
|
@@ -14,7 +14,25 @@ const input_1 = __importDefault(require("../input"));
|
|
|
14
14
|
const OAUTH_CLIENT_APP_PORT = 7596;
|
|
15
15
|
const OAUTH_CLIENT_APP_HOST = 'localhost';
|
|
16
16
|
const OAUTH_CLIENT_APP_REDIRECT_URL = `http://localhost:${OAUTH_CLIENT_APP_PORT}`;
|
|
17
|
-
const OAUTH_CLIENT_APP_SCOPES =
|
|
17
|
+
const OAUTH_CLIENT_APP_SCOPES = [
|
|
18
|
+
'WORKSPACE',
|
|
19
|
+
'MEMBER_EMAIL',
|
|
20
|
+
'REPOSITORY_WRITE',
|
|
21
|
+
'EXECUTION_MANAGE',
|
|
22
|
+
'ENVIRONMENT_MANAGE',
|
|
23
|
+
'TARGET_MANAGE',
|
|
24
|
+
'ZONE_MANAGE',
|
|
25
|
+
'WEBHOOK_MANAGE',
|
|
26
|
+
'VARIABLE_MANAGE',
|
|
27
|
+
'USER_EMAIL',
|
|
28
|
+
'USER_KEY',
|
|
29
|
+
'USER_INFO',
|
|
30
|
+
'INTEGRATION_MANAGE',
|
|
31
|
+
'SANDBOX_MANAGE',
|
|
32
|
+
'PACKAGE_MANAGE',
|
|
33
|
+
'TUNNEL_MANAGE',
|
|
34
|
+
'UNIT_TEST_MANAGE'
|
|
35
|
+
];
|
|
18
36
|
function normalizeBaseUrl(url) {
|
|
19
37
|
let normalized = url.trim();
|
|
20
38
|
normalized = normalized.replace(/^https?:\/\//i, '');
|
|
@@ -79,7 +97,7 @@ async function oauthServer(api, clientId, clientSecret) {
|
|
|
79
97
|
reject(texts_1.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN);
|
|
80
98
|
});
|
|
81
99
|
s.listen(OAUTH_CLIENT_APP_PORT, OAUTH_CLIENT_APP_HOST);
|
|
82
|
-
const url = `https://${api}/oauth2/authorize?type=web_server&client_id=${encodeURIComponent(clientId)}&redirect_uri=${encodeURIComponent(OAUTH_CLIENT_APP_REDIRECT_URL)}&response_type=code&scope=${encodeURIComponent(OAUTH_CLIENT_APP_SCOPES)}`;
|
|
100
|
+
const url = `https://${api}/oauth2/authorize?type=web_server&client_id=${encodeURIComponent(clientId)}&redirect_uri=${encodeURIComponent(OAUTH_CLIENT_APP_REDIRECT_URL)}&response_type=code&scope=${encodeURIComponent(OAUTH_CLIENT_APP_SCOPES.join(' '))}`;
|
|
83
101
|
(0, open_1.default)(url);
|
|
84
102
|
});
|
|
85
103
|
}
|
|
@@ -20,7 +20,7 @@ commandHttp.action(async (target, options) => {
|
|
|
20
20
|
await input_1.default.tunnelToken(options.token);
|
|
21
21
|
const prepared = await cfg_1.default.prepareTunnel(tunnel_1.TUNNEL_TYPE.HTTP, target, options, true);
|
|
22
22
|
await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
|
|
23
|
-
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), (region) => {
|
|
23
|
+
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), [], (region) => {
|
|
24
24
|
cfg_1.default.setRegionIfNotSet(region);
|
|
25
25
|
});
|
|
26
26
|
await agent.start();
|
|
@@ -17,7 +17,7 @@ commandStart.action(async (name) => {
|
|
|
17
17
|
}
|
|
18
18
|
const prepared = cfg_1.default.getTunnel(name);
|
|
19
19
|
await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
|
|
20
|
-
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), (region) => {
|
|
20
|
+
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), [], (region) => {
|
|
21
21
|
cfg_1.default.setRegionIfNotSet(region);
|
|
22
22
|
});
|
|
23
23
|
await agent.start();
|
|
@@ -19,7 +19,7 @@ commandTcp.action(async (target, options) => {
|
|
|
19
19
|
await input_1.default.tunnelToken(options.token);
|
|
20
20
|
const prepared = await cfg_1.default.prepareTunnel(tunnel_1.TUNNEL_TYPE.TCP, target, options, true);
|
|
21
21
|
await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
|
|
22
|
-
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), (region) => {
|
|
22
|
+
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), [], (region) => {
|
|
23
23
|
cfg_1.default.setRegionIfNotSet(region);
|
|
24
24
|
});
|
|
25
25
|
await agent.start();
|
|
@@ -19,7 +19,7 @@ commandTls.action(async (target, options) => {
|
|
|
19
19
|
await input_1.default.tunnelToken(options.token);
|
|
20
20
|
const prepared = await cfg_1.default.prepareTunnel(tunnel_1.TUNNEL_TYPE.TLS, target, options, true);
|
|
21
21
|
await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
|
|
22
|
-
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), (region) => {
|
|
22
|
+
const agent = await buddy_1.default.register(false, false, cfg_1.default.getTokenHost(), cfg_1.default.getToken(), [], (region) => {
|
|
23
23
|
cfg_1.default.setRegionIfNotSet(region);
|
|
24
24
|
});
|
|
25
25
|
await agent.start();
|
package/distTs/src/input.js
CHANGED
|
@@ -470,13 +470,15 @@ class Input {
|
|
|
470
470
|
}
|
|
471
471
|
return p;
|
|
472
472
|
}
|
|
473
|
-
static restApiWorkspace(workspace) {
|
|
473
|
+
static restApiWorkspace(workspace, allowNull) {
|
|
474
474
|
let w = process.env.BUDDY_WORKSPACE;
|
|
475
475
|
if (workspace)
|
|
476
476
|
w = workspace;
|
|
477
477
|
if (!w)
|
|
478
478
|
w = cfg_1.default.getWorkspace();
|
|
479
479
|
if (!w) {
|
|
480
|
+
if (allowNull)
|
|
481
|
+
return null;
|
|
480
482
|
output_1.default.exitError(texts_1.ERR_REST_API_WORKSPACE);
|
|
481
483
|
}
|
|
482
484
|
return w;
|
package/distTs/src/texts.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ERR_TUNNEL_NOT_FOUND = exports.ERR_WHITELIST_IS_NOT_VALID = exports.ERR_USER_AGENT_IS_NOT_VALID = exports.ERR_BA_IS_NOT_VALID = exports.ERR_BA_LOGIN_NOT_PROVIDED = exports.ERR_BA_PASSWORD_NOT_PROVIDED = exports.ERR_CB_THRESHOLD_IS_NOT_VALID = exports.ERR_CERT_PATH_IS_NOT_VALID = exports.ERR_KEY_PATH_IS_NOT_VALID = exports.ERR_CA_PATH_IS_NOT_VALID = exports.ERR_WRONG_CA = exports.ERR_WRONG_KEY_CERT = exports.ERR_NAME_WITHOUT_ASTERISK = exports.ERR_PORT_IS_NOT_VALID = exports.ERR_REGION_IS_NOT_VALID = exports.ERR_PATH_IS_NOT_DIRECTORY = exports.ERR_DIRECTORY_DOES_NOT_EXISTS = exports.ERR_TERMINATE_IS_NOT_VALID = exports.ERR_TIMEOUT_IS_NOT_VALID = exports.ERR_TYPE_IS_NOT_VALID = exports.ERR_TARGET_IS_NOT_VALID = exports.ERR_SAVING_AGENT_CONFIG = exports.ERR_AGENT_NOT_REGISTERED = exports.ERR_RUN_PIPELINE_WRONG_VARIABLE = exports.ERR_RUN_PIPELINE_WRONG_ACTION = exports.ERR_RUN_PIPELINE_WRONG_DELAY = exports.ERR_RUN_PIPELINE_WRONG_PRIORITY = exports.ERR_RUN_PIPELINE_WAIT_TIMEOUT = exports.ERR_SANDBOX_EXEC_RUNTIME_NOT_FOUND = exports.ERR_PACKAGE_VERSIONS_NOT_FOUND = exports.ERR_PACKAGE_NOT_FOUND = exports.ERR_PACKAGE_VERSION_NOT_FOUND = exports.ERR_PACKAGE_VERSION_EXISTS = exports.ERR_PACKAGE_PUBLISH_NOT_FOUND = exports.ERR_PACKAGE_DOWNLOAD_NOT_FOUND = exports.ERR_PIPELINE_NOT_FOUND = exports.ERR_PROJECT_NOT_FOUND = exports.ERR_WORKSPACE_NOT_FOUND = exports.ERR_REST_API_PROJECT = exports.ERR_REST_API_WORKSPACE = exports.ERR_PATH_NOT_EXISTS = exports.ERR_REST_API_REGION = exports.ERR_REST_API_URL = exports.ERR_REST_API_TOKEN = exports.ERR_REST_API_RATE_LIMIT = exports.ERR_REST_API_RESOURCE_NOT_FOUND = exports.ERR_REST_API_WRONG_TOKEN = exports.ERR_REST_API_CONNECT_ERROR = exports.ERR_REST_API_NOT_RESPONDING = exports.ERR_REST_API_GENERAL_ERROR = void 0;
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.EXAMPLE_PACKAGE_VERSION_DELETE = exports.EXAMPLE_PACKAGE_VERSION_GET = exports.EXAMPLE_PACKAGE_VERSION_LIST = exports.EXAMPLE_PACKAGE_CREATE = exports.EXAMPLE_PACKAGE_DELETE = exports.EXAMPLE_PACKAGE_DOWNLOAD = exports.EXAMPLE_PACKAGE_PUBLISH = exports.EXAMPLE_PIPELINE_RUN = void 0;
|
|
4
|
+
exports.ERR_INVALID_STORYBOOK_RESPONSE = exports.ERR_INVALID_DEFAULT_SETTINGS_RESPONSE = exports.ERR_INVALID_CLOSE_SESSION_RESPONSE = exports.ERR_INVALID_SNAPSHOTS_RESPONSE = exports.ERR_INVALID_SNAPSHOT_RESPONSE = exports.ERR_MISSING_URLS = exports.ERR_RESOURCE_NOT_FOUND = exports.ERR_MISSING_EXEC_COMMAND = exports.ERR_PARSING_STORIES = exports.ERR_UNSUPPORTED_STORYBOOK = exports.ERR_MISSING_STORYBOOK_INDEX_FILE = exports.ERR_WRONG_STORYBOOK_DIRECTORY = exports.ERR_MISSING_BUILD_ID = exports.ERR_MISSING_UT_TOKEN = exports.ERR_MISSING_VT_TOKEN = exports.ERR_CONFIG_CORRUPTED = exports.ERR_WRONG_TOKEN = exports.ERR_TOKEN_NOT_PROVIDED = exports.ERR_CANT_CREATE_DIR_IN_HOME = exports.ERR_CONNECTION_ERROR = exports.ERR_CONNECTION_TIMEOUT = exports.ERR_WRONG_STREAM = exports.ERR_WRONG_HANDSHAKE = exports.ERR_FETCH_VERSION = exports.ERR_PACKAGE_DOWNLOAD_REPLACE = exports.ERR_PACKAGE_DOWNLOAD_NOT_EMPTY_DIR = exports.ERR_PACKAGE_DOWNLOAD_IS_FILE = exports.ERR_PACKAGE_DOWNLOAD_READDIR = exports.ERR_PACKAGE_DOWNLOAD_MKDIR = exports.ERR_SWW = exports.ERR_NOT_FOUND = exports.ERR_FAILED_TO_CONNECT_TO_AGENT = exports.ERR_TUNNEL_REMOVED = exports.ERR_TUNNELS_DISABLED = exports.ERR_AGENT_LIMIT_REACHED = exports.ERR_TUNNEL_TARGET_INVALID = exports.ERR_WORKSPACE_FLAGGED = exports.ERR_TUNNEL_LIMIT_REACHED = exports.ERR_DOMAIN_RESTRICTED = exports.ERR_AGENT_REMOVED = exports.ERR_FAILED_TO_CONNECT = exports.ERR_TUNNEL_ALREADY_EXISTS = exports.ERR_AGENT_NOT_SUPPORTED = exports.ERR_AGENT_ADMIN_RIGHTS = exports.ERR_SWW_AGENT_UPDATING = exports.ERR_SWW_AGENT_ENABLING = exports.ERR_AGENT_TAG_INVALID = exports.ERR_AGENT_NOT_FOUND = exports.ERR_AGENT_NOT_RUNNING = exports.ERR_AGENT_NOT_INSTALLED = void 0;
|
|
5
|
+
exports.DESC_COMMAND_CONFIG_GET_TUNNELS = exports.DESC_COMMAND_CONFIG_GET_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_TOKEN = exports.DESC_COMMAND_CONFIG_GET_TIMEOUT = exports.DESC_COMMAND_CONFIG_GET_REGION = exports.DESC_COMMAND_CONFIG_ADD_TLS = exports.DESC_COMMAND_CONFIG_ADD_TCP = exports.DESC_COMMAND_CONFIG_ADD_HTTP = exports.AGENT_FETCH_RETRY = exports.NO_TUNNELS_STARTED = exports.TXT_AGENT_STANDALONE_EXITING = exports.TXT_AGENT_STANDALONE_STARTED = exports.TXT_AGENT_STANDALONE_AGENT_REGISTER_ERROR = exports.TXT_AGENT_STANDALONE_AGENT_REGISTERED = exports.TXT_AGENT_STANDALONE_AGENT_REGISTERING = exports.TXT_AGENT_STANDALONE_AGENT_FETCH_ERROR = exports.TXT_AGENT_STANDALONE_AGENT_FETCHED = exports.TXT_AGENT_STANDALONE_AGENT_FETCHING = exports.TXT_TUNNEL_ADDED = exports.TXT_TUNNEL_REMOVED = exports.TXT_REGION_SAVED = exports.TXT_TIMEOUT_SAVED = exports.TXT_TOKEN_REMOVED = exports.TXT_TOKEN_SAVED = exports.TXT_WHITELIST_SAVED = exports.TXT_TUNNEL_STOPPED = exports.TXT_TUNNEL_STARTED = exports.TXY_AGENT_CONFIRM_DELETE = exports.TXT_AGENT_DISABLED = exports.TXT_AGENT_ALREADY_INSTALLED = exports.TXT_AGENT_UPDATED = exports.TXT_AGENT_INSTALLED = exports.TXT_AGENT_NO_TAGS = exports.TXT_AGENT_TAGS_SET = exports.TXT_AGENT_TARGET_DISABLED = exports.TXT_AGENT_TARGET_ENABLED = exports.TXT_AGENT_RESTARTED = exports.TXT_AGENT_DEBUG_OFF = exports.TXT_AGENT_DEBUG_ON = exports.TXT_AGENT_STARTED = exports.TXT_AGENT_STOPPED = exports.WARN_BROWSER_VERSION = exports.ERR_RESOURCE_DISCOVERY = exports.ERR_NO_SNAPSHOTS_TO_SEND = exports.ERR_INVALID_SNAPSHOT = exports.ERR_TEST_EXECUTION = exports.ERR_INVALID_JSON = exports.ERR_INVALID_DOWNLOAD_RESPONSE = exports.ERR_INVALID_SCRAPE_RESPONSE = exports.ERR_INVALID_COMPARE_LINKS_RESPONSE = void 0;
|
|
6
|
+
exports.DESC_COMMAND_VT_STORYBOOK = exports.DESC_COMMAND_VT_CLOSE = exports.DESC_COMMAND_VT = exports.DESC_COMMAND_PIPELINE_RUN = exports.DESC_COMMAND_PACKAGE_DOWNLOAD = exports.DESC_COMMAND_PACKAGE_PUBLISH = exports.DESC_COMMAND_PACKAGE = exports.DESC_COMMAND_PIPELINE = exports.DESC_PROGRAM = exports.DESC_COMMAND_TLS = exports.DESC_COMMAND_TCP = exports.DESC_COMMAND_START = exports.DESC_COMMAND_TUNNEL = exports.DESC_COMMAND_AGENT = exports.DESC_COMMAND_HTTP = exports.DESC_COMMAND_CONFIG = exports.DESC_COMMAND_AGENT_VERSION = exports.DESC_COMMAND_AGENT_UPDATE = exports.OPT_COMMAND_AGENT_TAGS_SET = exports.DESC_COMMAND_AGENT_TAGS_SET = exports.DESC_COMMAND_AGENT_TAGS_GET = exports.DESC_COMMAND_AGENT_TAGS = exports.DESC_COMMAND_AGENT_TARGET = exports.DESC_COMMAND_AGENT_TUNNEL = exports.DESC_COMMAND_AGENT_STOP = exports.DESC_COMMAND_AGENT_TARGET_DISABLE = exports.DESC_COMMAND_AGENT_TARGET_ENABLE = exports.DESC_COMMAND_AGENT_TARGET_STATUS = exports.DESC_COMMAND_AGENT_STATUS = exports.DESC_COMMAND_AGENT_RESTART = exports.DESC_COMMAND_AGENT_ENABLE = exports.DESC_COMMAND_AGENT_DEBUG = exports.DESC_COMMAND_AGENT_DISABLE = exports.DESC_COMMAND_AGENT_START = exports.DESC_COMMAND_AGENT_INSTALL = exports.DESC_COMMAND_AGENT_UNINSTALL = exports.DESC_COMMAND_AGENT_TUNNEL_REMOVE = exports.DESC_COMMAND_AGENT_TUNNEL_STATUS = exports.DESC_COMMAND_AGENT_TUNNEL_LIST = exports.DESC_COMMAND_CONFIG_SET = exports.DESC_COMMAND_CONFIG_REMOVE = exports.DESC_COMMAND_CONFIG_GET = exports.DESC_COMMAND_CONFIG_ADD = exports.DESC_COMMAND_CONFIG_SET_WHITELIST = exports.DESC_COMMAND_CONFIG_SET_TOKEN = exports.DESC_COMMAND_CONFIG_SET_TIMEOUT = exports.DESC_COMMAND_CONFIG_SET_REGION = exports.DESC_COMMAND_CONFIG_REMOVE_TOKEN = exports.DESC_COMMAND_CONFIG_REMOVE_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_WHITELIST = void 0;
|
|
7
|
+
exports.OPTION_PIPELINE_RUN_ARGUMENT = exports.OPTION_PIPELINE_RUN_DELAY = exports.OPTION_PIPELINE_RUN_VAR = exports.OPTION_PIPELINE_RUN_PRIORITY = exports.OPTION_PIPELINE_RUN_CLEAR_CACHE = exports.OPTION_PIPELINE_RUN_REFRESH = exports.OPTION_PIPELINE_RUN_COMMENT = exports.OPTION_PIPELINE_RUN_PULL_REQUEST = exports.OPTION_PIPELINE_RUN_REVISION = exports.OPTION_PIPELINE_RUN_TAG = exports.OPTION_PIPELINE_RUN_BRANCH = exports.OPTION_REST_API_REGION = exports.OPTION_REST_API_ENDPOINT = exports.OPTION_DEFAULT_REGION = exports.OPTION_REGION = exports.TXT_PACKAGE_UNZIPPING_COUNT = exports.TXT_PACKAGE_UNZIPPED = exports.TXT_PACKAGE_UNZIPPING = exports.TXT_PACKAGE_DOWNLOADED_ZIP = exports.TXT_PACKAGE_DOWNLOADING_ZIP = exports.TXT_PACKAGE_DOWNLOADED = exports.TXT_PACKAGE_PUBLISHED = exports.TXT_PACKAGE_ENTRIES_FOUND = exports.TXT_PACKAGE_UPLOADED = exports.TXT_PACKAGE_UPLOADING = exports.TXT_PACKAGE_ZIPPED = exports.TXT_PACKAGE_ZIP_ENTRIES = exports.TXT_PACKAGE_ONE_ENTRY_FOUND = exports.TXT_PACKAGE_NO_ENTRIES_FOUND = exports.TXT_PACKAGE_SCANNING_DIR = exports.TXT_PIPELINE_RUN_FINISH_FAILED = exports.TXT_PIPELINE_RUN_FINISH_SUCCESSFULLY = exports.TXT_STORIES_AMOUNT = exports.TXT_PIPELINE_RUN_STILL_WAITING = exports.TXT_PIPELINE_RUN_WAIT = exports.TXT_PIPELINE_RUN_SUCCESS = exports.TXT_OPENING_TUNNEL = exports.TXT_UPDATING_AGENT = exports.TXT_ENABLING_AGENT = exports.TXT_NEW_AGENT_VERSION = exports.TXT_NEW_CLI_DOCKER_VERSION = exports.OPTION_UPLOAD_DRY_RUN = exports.OPTION_UPLOAD_REPORT_FORMAT = exports.OPTION_UPLOAD_REPORT_GLOB = exports.DESC_COMMAND_UT_UPLOAD = exports.DESC_COMMAND_UT = exports.DESC_COMMAND_VT_INSTALL_BROWSER = exports.DESC_COMMAND_VT_EXEC = exports.DESC_COMMAND_VT_SCRAPE = exports.DESC_COMMAND_VT_COMPARE = void 0;
|
|
8
|
+
exports.OPTION_EXEC_COMMAND = exports.OPTION_AGENT_DEBUG = exports.OPTION_AGENT_PORT = exports.OPTION_AGENT_TAG = 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_CONFIRM_FORCE = 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_PER_PAGE = exports.OPTION_REST_API_PAGE = exports.OPTION_REST_API_PROJECT = exports.OPTION_REST_API_WORKSPACE = exports.OPTION_PIPELINE_RUN_WAIT = exports.OPTION_PIPELINE_RUN_ACTION = exports.OPTION_REST_API_TOKEN = exports.OPTION_PACKAGE_DOWNLOAD_REPLACE = exports.OPTION_PACKAGE_DOWNLOAD_MERGE = exports.OPTION_PACKAGE_PUBLISH_OVERWRITE_VERSION = exports.OPTION_PACKAGE_PUBLISH_CREATE = exports.OPTION_PACKAGE_ID = exports.OPTION_PACKAGE_DOWNLOAD_PATH = exports.OPTION_PACKAGE_PUBLISH_PATH = void 0;
|
|
9
|
+
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 = 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 = void 0;
|
|
10
|
+
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 = 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 = void 0;
|
|
11
|
+
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_SETUP = exports.TXT_SANDBOX_WAITING_RUNNING = exports.TXT_SANDBOX_STOPPED = exports.TXT_SANDBOX_STARTED = exports.TXT_SANDBOX_DESTROYED = exports.TXT_SANDBOX_DESTROY_CONFIRM = exports.TXT_SANDBOX_CREATED = exports.TXT_SANDBOX_CREATING = exports.OPTION_SANDBOX_WAIT = 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_SETUP_TIMEOUT = 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 = 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 = void 0;
|
|
12
|
+
exports.ERR_SANDBOX_CP_READDIR = exports.ERR_SANDBOX_CP_DEST_NOT_FOLDER = exports.ERR_SANDBOX_CP_SOURCE_NOT_FOUND = exports.TXT_SANDBOX_CP_DONE = exports.TXT_SANDBOX_CP_PROGRESS = exports.TXT_SANDBOX_UNZIPPING_COUNT = exports.TXT_SANDBOX_UNZIP_DONE = exports.TXT_SANDBOX_UNZIP = exports.TXT_SANDBOX_CP_DOWNLOAD_DONE = exports.TXT_SANDBOX_CP_DOWNLOAD = exports.OPTION_SANDBOX_CP_DOWNLOAD_REPLACE = exports.OPTION_SANDBOX_CP_DOWNLOAD_MERGE = 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_DELETE_CONFIRM = 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_DELETE_CONFIRM = exports.TXT_SANDBOX_SNAPSHOT_DELETED = exports.TXT_SANDBOX_SNAPSHOT_CREATED = 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_KILL_CONFIRM = exports.OPTION_SANDBOX_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = void 0;
|
|
13
|
+
exports.DESC_COMMAND_WORKSPACE = exports.TXT_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = exports.ERR_API_PARAMETER_NOT_REPLACED = exports.TXT_API_ENDPOINT_REQUIRED_SCOPES = exports.ERR_API_ENDPOINT_NOT_FOUND = exports.ERR_API_WRONG_METHOD = exports.ERR_SCHEMA_FETCH_FAILED = exports.OPT_COMMAND_API_INFO_URL = exports.OPT_COMMAND_API_INFO_METHOD = exports.OPT_COMMAND_API_LIST_SEARCH = exports.OPT_COMMAND_API_LIST_METHOD = exports.ERR_API_REQUEST_BODY_VALUE = exports.ERR_API_REQUEST_QUERY_VALUE = exports.ERR_API_REQUEST_INVALID_JSON = exports.ERR_API_REQUEST_FILE_ERROR = exports.ERR_API_REQUEST_OUTPUT_EXISTS = exports.DESC_COMMAND_API_INFO = exports.DESC_COMMAND_API_FORM = exports.DESC_COMMAND_API_JSON = exports.DESC_COMMAND_API_DATA = exports.DESC_COMMAND_API_OUTPUT = exports.DESC_COMMAND_API_REQUEST_QUERY = exports.DESC_COMMAND_API_PROJECT = exports.DESC_COMMAND_API_WORKSPACE = exports.DESC_COMMAND_API_REQUEST_URL = exports.DESC_COMMAND_API_GET = exports.DESC_COMMAND_API_PATCH = exports.DESC_COMMAND_API_DELETE = exports.DESC_COMMAND_API_PUT = exports.DESC_COMMAND_API_POST = exports.DESC_COMMAND_API_LIST = exports.DESC_COMMAND_API = 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_SOURCE = exports.ERR_SANDBOX_CP_INVALID_DEST = exports.ERR_SANDBOX_CP_REPLACE = exports.ERR_SANDBOX_CP_MKDIR = exports.ERR_SANDBOX_CP_PATH_EXISTS = exports.ERR_SANDBOX_CP_NOT_EMPTY_DIR = void 0;
|
|
14
|
+
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.TXT_PACKAGE_VERSION_DOWNLOAD = exports.TXT_PACKAGE_PUBLISH = exports.TXT_PACKAGE_CREATED = exports.TXT_PACKAGE_VERSION_DELETED = exports.TXT_PACKAGE_DELETED = exports.ERR_COMMAND_PACKAGE_TYPE = exports.OPT_COMMAND_PACKAGE_VERSION = exports.OPT_COMMAND_PACKAGE_IDENTIFIER = exports.OPT_COMMAND_PACKAGE_CREATE_IDENTIFIER = exports.OPT_COMMAND_PACKAGE_NAME = exports.OPT_COMMAND_PACKAGE_TYPE = exports.DESC_COMMAND_PACKAGE_CREATE = exports.DESC_COMMAND_PACKAGE_GET = exports.TXT_PACKAGE_DOCKER_LOGIN_FAILED = exports.TXT_PACKAGE_DOCKER_LOGIN_SUCCESS = exports.TXT_PACKAGE_VERSION_DELETE_CONFIRM = exports.TXT_PACKAGE_DELETE_CONFIRM = exports.DESC_COMMAND_PACKAGE_DELETE = exports.ERR_COMMAND_PACKAGE_NO_PROJECTS = exports.DESC_COMMAND_PACKAGE_VERSION_GET = exports.DESC_COMMAND_PACKAGE_VERSION_LIST = exports.DESC_COMMAND_PACKAGE_VERSION_DELETE = exports.DESC_COMMAND_PACKAGE_DOCKER_LOGIN = exports.DESC_COMMAND_PACKAGE_LIST = exports.DESC_COMMAND_PACKAGE_VERSION = 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 = 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 = void 0;
|
|
15
|
+
exports.EXAMPLE_PACKAGE_VERSION_DELETE = exports.EXAMPLE_PACKAGE_VERSION_GET = exports.EXAMPLE_PACKAGE_VERSION_LIST = exports.EXAMPLE_PACKAGE_CREATE = exports.EXAMPLE_PACKAGE_DELETE = exports.EXAMPLE_PACKAGE_DOWNLOAD = exports.EXAMPLE_PACKAGE_PUBLISH = exports.EXAMPLE_PIPELINE_RUN = exports.EXAMPLE_SANDBOX_ENDPOINT_LIST = exports.EXAMPLE_SANDBOX_ENDPOINT_GET = exports.EXAMPLE_SANDBOX_ENDPOINT_DELETE = exports.EXAMPLE_SANDBOX_ENDPOINT_CREATE = exports.EXAMPLE_SANDBOX_SNAPSHOT_LIST = exports.EXAMPLE_SANDBOX_SNAPSHOT_GET = exports.EXAMPLE_SANDBOX_SNAPSHOT_DELETE = exports.EXAMPLE_SANDBOX_SNAPSHOT_CREATE = exports.EXAMPLE_SANDBOX_EXEC_STATUS = exports.EXAMPLE_SANDBOX_EXEC_LOGS = exports.EXAMPLE_SANDBOX_EXEC_LIST = exports.EXAMPLE_SANDBOX_EXEC_KILL = exports.EXAMPLE_SANDBOX_EXEC_COMMAND = exports.EXAMPLE_TUNNEL_START = exports.EXAMPLE_TUNNEL_TCP = exports.EXAMPLE_TUNNEL_TLS = exports.EXAMPLE_AGENT_TUNNEL_START = exports.EXAMPLE_AGENT_TUNNEL_STATUS = exports.EXAMPLE_AGENT_TUNNEL_REMOVE = exports.EXAMPLE_AGENT_TUNNEL_LIST = exports.EXAMPLE_TUNNEL_HTTP = exports.EXAMPLE_SANDBOX_CREATE = exports.EXAMPLE_SANDBOX_CP = exports.TXT_PROJECT_NONE = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_PROJECT_SET_CLEARED = void 0;
|
|
16
16
|
const utils_1 = require("./utils");
|
|
17
17
|
exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
|
|
18
18
|
exports.ERR_REST_API_NOT_RESPONDING = 'Api endpoint not responding. Try again later...';
|
|
@@ -96,6 +96,8 @@ exports.ERR_TUNNEL_NOT_FOUND = ERR_TUNNEL_NOT_FOUND;
|
|
|
96
96
|
exports.ERR_AGENT_NOT_INSTALLED = 'Agent not installed';
|
|
97
97
|
exports.ERR_AGENT_NOT_RUNNING = 'Agent not running';
|
|
98
98
|
exports.ERR_AGENT_NOT_FOUND = 'Agent not found';
|
|
99
|
+
const ERR_AGENT_TAG_INVALID = (tag) => `Agent tag invalid '${tag}'`;
|
|
100
|
+
exports.ERR_AGENT_TAG_INVALID = ERR_AGENT_TAG_INVALID;
|
|
99
101
|
exports.ERR_SWW_AGENT_ENABLING = 'Failed installing agent';
|
|
100
102
|
exports.ERR_SWW_AGENT_UPDATING = 'Failed updating agent';
|
|
101
103
|
exports.ERR_AGENT_ADMIN_RIGHTS = 'Command must be run with administrator rights';
|
|
@@ -170,6 +172,8 @@ exports.TXT_AGENT_DEBUG_OFF = 'Agent debug mode off';
|
|
|
170
172
|
exports.TXT_AGENT_RESTARTED = 'Agent restarted';
|
|
171
173
|
exports.TXT_AGENT_TARGET_ENABLED = 'Agent is available as a target';
|
|
172
174
|
exports.TXT_AGENT_TARGET_DISABLED = 'Agent is unavailable as a target';
|
|
175
|
+
exports.TXT_AGENT_TAGS_SET = 'Agent tags set';
|
|
176
|
+
exports.TXT_AGENT_NO_TAGS = 'Agent has no tags set';
|
|
173
177
|
exports.TXT_AGENT_INSTALLED = 'Agent installed';
|
|
174
178
|
exports.TXT_AGENT_UPDATED = 'Agent updated';
|
|
175
179
|
exports.TXT_AGENT_ALREADY_INSTALLED = 'Agent already installed';
|
|
@@ -231,6 +235,10 @@ exports.DESC_COMMAND_AGENT_TARGET_DISABLE = 'Disable Buddy agent as a target';
|
|
|
231
235
|
exports.DESC_COMMAND_AGENT_STOP = 'Stops the server agent';
|
|
232
236
|
exports.DESC_COMMAND_AGENT_TUNNEL = "Manage agent's tunnels";
|
|
233
237
|
exports.DESC_COMMAND_AGENT_TARGET = "Manage agent's target availability";
|
|
238
|
+
exports.DESC_COMMAND_AGENT_TAGS = "Manage agent's tags";
|
|
239
|
+
exports.DESC_COMMAND_AGENT_TAGS_GET = "Get agent's tags";
|
|
240
|
+
exports.DESC_COMMAND_AGENT_TAGS_SET = "Set agent's tags";
|
|
241
|
+
exports.OPT_COMMAND_AGENT_TAGS_SET = 'Tags separated by spaces';
|
|
234
242
|
exports.DESC_COMMAND_AGENT_UPDATE = 'Install a new version of Buddy agent';
|
|
235
243
|
exports.DESC_COMMAND_AGENT_VERSION = 'Show the currently installed version';
|
|
236
244
|
exports.DESC_COMMAND_CONFIG = 'The config command gives a quick way to create or update configuration file.';
|
|
@@ -357,6 +365,7 @@ exports.OPTION_USER = 'OS user name. Default: root (macOS/Linux), LocalSystem (W
|
|
|
357
365
|
exports.OPTION_APP = 'Starts bdy agent as standalone process';
|
|
358
366
|
exports.OPTION_PASS = 'Password of the user. Only set for Windows';
|
|
359
367
|
exports.OPTION_AGENT_TARGET = 'Makes the agent available as a target';
|
|
368
|
+
exports.OPTION_AGENT_TAG = 'Tag agent. Can be passed multiple times';
|
|
360
369
|
exports.OPTION_AGENT_PORT = 'Agent API port';
|
|
361
370
|
exports.OPTION_AGENT_DEBUG = 'Turns on debug mode';
|
|
362
371
|
exports.OPTION_EXEC_COMMAND = 'Test runner command';
|
|
@@ -654,7 +663,27 @@ exports.ERR_WHOAMI_LOGOUT = 'Not logged in. Run `bdy login` to authenticate.';
|
|
|
654
663
|
// api command
|
|
655
664
|
exports.DESC_COMMAND_API = 'Contact Buddy API directly';
|
|
656
665
|
exports.DESC_COMMAND_API_LIST = 'List Buddy API endpoints';
|
|
666
|
+
exports.DESC_COMMAND_API_POST = 'Make HTTP POST to Buddy API endpoint';
|
|
667
|
+
exports.DESC_COMMAND_API_PUT = 'Make HTTP PUT to Buddy API endpoint';
|
|
668
|
+
exports.DESC_COMMAND_API_DELETE = 'Make HTTP DELETE to Buddy API endpoint';
|
|
669
|
+
exports.DESC_COMMAND_API_PATCH = 'Make HTTP PATCH to Buddy API endpoint';
|
|
670
|
+
exports.DESC_COMMAND_API_GET = 'Make HTTP GET to Buddy API endpoint';
|
|
671
|
+
exports.DESC_COMMAND_API_REQUEST_URL = 'Request url';
|
|
672
|
+
exports.DESC_COMMAND_API_WORKSPACE = 'Workspace domain. If url contains {workspace_domain} it will be automatically replaced with provided value.';
|
|
673
|
+
exports.DESC_COMMAND_API_PROJECT = 'Project name. If url contains {project_name} it will be automatically replaced with provided value.';
|
|
674
|
+
exports.DESC_COMMAND_API_REQUEST_QUERY = 'Provide query param as key:value. Can be used multiple times';
|
|
675
|
+
exports.DESC_COMMAND_API_OUTPUT = 'Write to file instead of stdout';
|
|
676
|
+
exports.DESC_COMMAND_API_DATA = 'HTTP request urlencoded data. To specify file use @path/to/file format in value';
|
|
677
|
+
exports.DESC_COMMAND_API_JSON = 'HTTP request json data. To specify file containing json use @path/to/file format in value';
|
|
678
|
+
exports.DESC_COMMAND_API_FORM = 'HTTP request multipart data. Can be used multiple times. To specify file use @path/to/file format in value';
|
|
657
679
|
exports.DESC_COMMAND_API_INFO = 'Show info about API endpoint';
|
|
680
|
+
exports.ERR_API_REQUEST_OUTPUT_EXISTS = 'Output path already exists';
|
|
681
|
+
exports.ERR_API_REQUEST_FILE_ERROR = 'Cannot read provided file';
|
|
682
|
+
exports.ERR_API_REQUEST_INVALID_JSON = 'JSON data is invalid';
|
|
683
|
+
const ERR_API_REQUEST_QUERY_VALUE = (q) => `Wrong value of query param: ${q}`;
|
|
684
|
+
exports.ERR_API_REQUEST_QUERY_VALUE = ERR_API_REQUEST_QUERY_VALUE;
|
|
685
|
+
const ERR_API_REQUEST_BODY_VALUE = (p) => `Wrong value of body param ${p}`;
|
|
686
|
+
exports.ERR_API_REQUEST_BODY_VALUE = ERR_API_REQUEST_BODY_VALUE;
|
|
658
687
|
exports.OPT_COMMAND_API_LIST_METHOD = 'Filter endpoints by method (all, get, post, put, patch, delete). Default: all';
|
|
659
688
|
exports.OPT_COMMAND_API_LIST_SEARCH = 'Filter endpoints by phrase';
|
|
660
689
|
exports.OPT_COMMAND_API_INFO_METHOD = 'Endpoint method (get, post, put, patch, delete)';
|
|
@@ -663,6 +692,8 @@ exports.ERR_SCHEMA_FETCH_FAILED = 'Failed to fetch api schema';
|
|
|
663
692
|
exports.ERR_API_WRONG_METHOD = 'Wrong method value';
|
|
664
693
|
exports.ERR_API_ENDPOINT_NOT_FOUND = 'Endpoint not found';
|
|
665
694
|
exports.TXT_API_ENDPOINT_REQUIRED_SCOPES = 'Required scopes';
|
|
695
|
+
const ERR_API_PARAMETER_NOT_REPLACED = (param) => `Replace URL parameter ${param}`;
|
|
696
|
+
exports.ERR_API_PARAMETER_NOT_REPLACED = ERR_API_PARAMETER_NOT_REPLACED;
|
|
666
697
|
const ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = (type) => `Media type not implemented (${type})`;
|
|
667
698
|
exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED;
|
|
668
699
|
// Login command
|
|
@@ -72,6 +72,9 @@ class ApiAgent {
|
|
|
72
72
|
async fetchAgentTarget() {
|
|
73
73
|
return makeRequest(this.port, '/target');
|
|
74
74
|
}
|
|
75
|
+
async fetchAgentTags() {
|
|
76
|
+
return makeRequest(this.port, '/agent/tags');
|
|
77
|
+
}
|
|
75
78
|
async enableAgentTarget() {
|
|
76
79
|
return makeRequest(this.port, '/target/enable');
|
|
77
80
|
}
|
|
@@ -95,6 +98,9 @@ class ApiAgent {
|
|
|
95
98
|
async debugChange(debug) {
|
|
96
99
|
return makeRequest(this.port, '/agent/debug', { debug });
|
|
97
100
|
}
|
|
101
|
+
async setAgentTags(tags) {
|
|
102
|
+
return makeRequest(this.port, '/agent/tags/set', { tags });
|
|
103
|
+
}
|
|
98
104
|
async socketTunnel(id) {
|
|
99
105
|
return openSocket(this.port, `/tunnel?id=${encodeURIComponent(id)}`);
|
|
100
106
|
}
|
|
@@ -59,7 +59,7 @@ const makeRequest = async (host, path, body, method = 'POST', respAsJson = true,
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
class ApiBuddyClass {
|
|
62
|
-
async register(service, target, host, token, onDefaultRegion) {
|
|
62
|
+
async register(service, target, host, token, tags, onDefaultRegion) {
|
|
63
63
|
const version = (0, utils_1.getVersion)();
|
|
64
64
|
const hostname = (0, utils_1.getHostname)();
|
|
65
65
|
const platform = (0, utils_1.getPlatform)();
|
|
@@ -70,13 +70,14 @@ class ApiBuddyClass {
|
|
|
70
70
|
hostname,
|
|
71
71
|
platform,
|
|
72
72
|
service,
|
|
73
|
+
tags,
|
|
73
74
|
target,
|
|
74
75
|
});
|
|
75
76
|
logger_1.default.info((0, texts_1.LOG_AGENT_REGISTERED)(r.id));
|
|
76
77
|
logger_1.default.info((0, texts_1.LOG_REGION_DETECTED)(r.region));
|
|
77
78
|
if (onDefaultRegion)
|
|
78
79
|
onDefaultRegion(r.region);
|
|
79
|
-
return new agent_1.default(r.id, host, r.token, service, target, this, false);
|
|
80
|
+
return new agent_1.default(r.id, host, r.token, service, target, r.tags || [], this, false);
|
|
80
81
|
}
|
|
81
82
|
async unregister(id, host, token) {
|
|
82
83
|
logger_1.default.info(texts_1.LOG_UNREGISTERING_AGENT);
|
|
@@ -92,7 +93,7 @@ class ApiBuddyClass {
|
|
|
92
93
|
token,
|
|
93
94
|
id,
|
|
94
95
|
});
|
|
95
|
-
return new agent_1.default(r.id, host, token, !!r.service, !!r.target, this, !!r.disabled);
|
|
96
|
+
return new agent_1.default(r.id, host, token, !!r.service, !!r.target, r.tags || [], this, !!r.disabled);
|
|
96
97
|
}
|
|
97
98
|
async fetchAgentKeys(id, host, token) {
|
|
98
99
|
return await makeRequest(host, '/tunnel/agent/fetch/keys', {
|
|
@@ -120,6 +121,13 @@ class ApiBuddyClass {
|
|
|
120
121
|
token
|
|
121
122
|
});
|
|
122
123
|
}
|
|
124
|
+
async updateTags(agentId, host, token, tags) {
|
|
125
|
+
await makeRequest(host, '/tunnel/agent/tags/set', {
|
|
126
|
+
agentId,
|
|
127
|
+
token,
|
|
128
|
+
tags
|
|
129
|
+
});
|
|
130
|
+
}
|
|
123
131
|
async addTunnel(agentId, host, token, prepared, sshHostKey) {
|
|
124
132
|
logger_1.default.info(texts_1.LOG_REGISTERING_TUNNEL);
|
|
125
133
|
const config = await makeRequest(host, '/tunnel/add', {
|