bdy 1.23.16-dev → 1.23.17-beta
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/api/client.js +17 -0
- package/distTs/src/command/artifact/composer/publish.js +185 -0
- package/distTs/src/command/artifact/composer.js +12 -0
- package/distTs/src/command/artifact/publish.js +1 -89
- package/distTs/src/command/artifact.js +2 -0
- package/distTs/src/command/environment/resolve.js +13 -5
- package/distTs/src/command/target/scope.js +13 -5
- package/distTs/src/texts.js +43 -16
- package/distTs/src/utils.js +256 -2
- package/package.json +1 -1
package/distTs/package.json
CHANGED
package/distTs/src/api/client.js
CHANGED
|
@@ -1385,6 +1385,23 @@ class ApiClient {
|
|
|
1385
1385
|
rawResponseBody: true,
|
|
1386
1386
|
});
|
|
1387
1387
|
}
|
|
1388
|
+
async createArtifactComposerVersion(workspace, artifactId, root, composer, readme, note, agentNote) {
|
|
1389
|
+
const form = new undici_1.FormData();
|
|
1390
|
+
form.append('root', root);
|
|
1391
|
+
form.append('composer', composer);
|
|
1392
|
+
if (readme)
|
|
1393
|
+
form.append('readme', readme);
|
|
1394
|
+
if (note)
|
|
1395
|
+
form.append('note', note);
|
|
1396
|
+
if (agentNote)
|
|
1397
|
+
form.append('agent_note', agentNote);
|
|
1398
|
+
return await this.request({
|
|
1399
|
+
method: 'POST',
|
|
1400
|
+
path: `/workspaces/${encodeURIComponent(workspace)}/artifacts/${encodeURIComponent(artifactId)}/versions/upload`,
|
|
1401
|
+
body: form,
|
|
1402
|
+
parseResponseBody: true,
|
|
1403
|
+
});
|
|
1404
|
+
}
|
|
1388
1405
|
async createArtifactVersion(workspace, artifactId, version, note, agentNote, from) {
|
|
1389
1406
|
const body = {
|
|
1390
1407
|
version,
|
|
@@ -0,0 +1,185 @@
|
|
|
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 input_1 = __importDefault(require("../../../input"));
|
|
9
|
+
const distro_1 = require("../../../types/distro");
|
|
10
|
+
const output_1 = __importDefault(require("../../../output"));
|
|
11
|
+
const logger_1 = __importDefault(require("../../../logger"));
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const uuid_1 = require("uuid");
|
|
15
|
+
const commandArtifactComposerPublish = (0, utils_1.newCommand)('publish', texts_1.DESC_COMMAND_ARTIFACT_COMPOSER_PUBLISH);
|
|
16
|
+
commandArtifactComposerPublish.alias('pub');
|
|
17
|
+
commandArtifactComposerPublish.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
|
|
18
|
+
commandArtifactComposerPublish.option('--scope <scope>', texts_1.OPT_COMMAND_SCOPE);
|
|
19
|
+
commandArtifactComposerPublish.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
|
|
20
|
+
commandArtifactComposerPublish.option('-c, --create', texts_1.OPTION_ARTIFACT_PUBLISH_CREATE);
|
|
21
|
+
commandArtifactComposerPublish.option('--note <note>', texts_1.OPTION_ARTIFACT_VERSION_NOTE);
|
|
22
|
+
commandArtifactComposerPublish.option('--agent-note <note>', texts_1.OPTION_ARTIFACT_VERSION_AGENT_NOTE);
|
|
23
|
+
commandArtifactComposerPublish.option('--ignore <patterns>', texts_1.OPTION_ARTIFACT_IGNORE);
|
|
24
|
+
commandArtifactComposerPublish.argument('<identifier>', texts_1.OPTION_ARTIFACT_ID);
|
|
25
|
+
commandArtifactComposerPublish.argument('<directory>', texts_1.OPTION_ARTIFACT_COMPOSE_PUBLISH_PATH);
|
|
26
|
+
commandArtifactComposerPublish.addHelpText('after', texts_1.EXAMPLE_ARTIFACT_COMPOSER_PUBLISH);
|
|
27
|
+
commandArtifactComposerPublish.action(async (id, path, options) => {
|
|
28
|
+
const dirPath = input_1.default.resolvePath(path);
|
|
29
|
+
if (!fs_1.default.statSync(dirPath).isDirectory()) {
|
|
30
|
+
output_1.default.exitError((0, texts_1.ERR_PATH_IS_NOT_DIRECTORY)(dirPath));
|
|
31
|
+
}
|
|
32
|
+
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
33
|
+
const project = input_1.default.restApiProject(options.project, true);
|
|
34
|
+
const scope = input_1.default.scope(project, options.scope);
|
|
35
|
+
const { identifier, version, isDefault } = input_1.default.artifactSplitIdentifier(id);
|
|
36
|
+
// composer.json holds the version the package is published under, so it is read before
|
|
37
|
+
// anything is created - an explicit artifact:version on the command line overrides it
|
|
38
|
+
const composerPath = (0, path_1.join)(dirPath, 'composer.json');
|
|
39
|
+
let composerContent;
|
|
40
|
+
try {
|
|
41
|
+
composerContent = fs_1.default.readFileSync(composerPath, 'utf8');
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
logger_1.default.error(err);
|
|
45
|
+
output_1.default.exitError(texts_1.ERR_ARTIFACT_COMPOSER_NOT_FOUND);
|
|
46
|
+
}
|
|
47
|
+
const composerJson = (0, utils_1.parseComposerJson)(composerContent);
|
|
48
|
+
if (!composerJson) {
|
|
49
|
+
output_1.default.exitError(texts_1.ERR_ARTIFACT_COMPOSER_INVALID);
|
|
50
|
+
}
|
|
51
|
+
let composer = composerContent;
|
|
52
|
+
let publishVersion;
|
|
53
|
+
if (isDefault) {
|
|
54
|
+
publishVersion =
|
|
55
|
+
typeof composerJson.version === 'string'
|
|
56
|
+
? composerJson.version.trim()
|
|
57
|
+
: '';
|
|
58
|
+
if (!publishVersion) {
|
|
59
|
+
output_1.default.exitError(texts_1.ERR_ARTIFACT_COMPOSER_VERSION_MISSING);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
publishVersion = version;
|
|
64
|
+
composerJson.version = publishVersion;
|
|
65
|
+
composer = JSON.stringify(composerJson, null, 2);
|
|
66
|
+
}
|
|
67
|
+
const client = input_1.default.restApiTokenClient();
|
|
68
|
+
const data = await client.getArtifactVersionByIdentifier(workspace, scope === distro_1.SCOPE.PROJECT ? project : null, identifier, publishVersion);
|
|
69
|
+
if (!data || !data.domain) {
|
|
70
|
+
output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
|
|
71
|
+
}
|
|
72
|
+
if (scope === distro_1.SCOPE.PROJECT && !data.project_identifier) {
|
|
73
|
+
output_1.default.exitError(texts_1.ERR_PROJECT_NOT_FOUND);
|
|
74
|
+
}
|
|
75
|
+
let artifactId = data.artifact_id;
|
|
76
|
+
if (!artifactId && !options.create) {
|
|
77
|
+
output_1.default.exitError(texts_1.ERR_ARTIFACT_PUBLISH_NOT_FOUND);
|
|
78
|
+
}
|
|
79
|
+
// The name the backend expects is `[machine.]workspace/identifier` and only its last part is
|
|
80
|
+
// known here - checking it stops a typo before --create leaves an empty artifact behind
|
|
81
|
+
const composerName = composerJson.name;
|
|
82
|
+
if (typeof composerName !== 'string' ||
|
|
83
|
+
!composerName.endsWith(`/${identifier}`)) {
|
|
84
|
+
output_1.default.exitError((0, texts_1.ERR_ARTIFACT_COMPOSER_NAME_MISMATCH)(identifier));
|
|
85
|
+
}
|
|
86
|
+
if (!artifactId) {
|
|
87
|
+
const artifact = {
|
|
88
|
+
name: identifier,
|
|
89
|
+
identifier,
|
|
90
|
+
type: utils_1.ARTIFACT_TYPE.COMPOSER,
|
|
91
|
+
scope: distro_1.SCOPE.WORKSPACE,
|
|
92
|
+
authorization: {
|
|
93
|
+
type: utils_1.ARTIFACT_AUTH_TYPE.NONE,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
if (scope === distro_1.SCOPE.PROJECT && project) {
|
|
97
|
+
artifact.scope = distro_1.SCOPE.PROJECT;
|
|
98
|
+
artifact.project = {
|
|
99
|
+
name: project,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const d = await client.createArtifact(workspace, artifact);
|
|
103
|
+
artifactId = d.id;
|
|
104
|
+
}
|
|
105
|
+
if (data.artifact_version_id) {
|
|
106
|
+
// No --force here: a published composer version is not replaced, only a new one is added
|
|
107
|
+
output_1.default.exitError(texts_1.ERR_ARTIFACT_VERSION_EXISTS_NO_FORCE);
|
|
108
|
+
}
|
|
109
|
+
output_1.default.normal(texts_1.TXT_ARTIFACT_SCANNING_DIR, false);
|
|
110
|
+
// At least composer.json is in there, so an empty listing is not a case to handle
|
|
111
|
+
const scanned = fs_1.default.readdirSync(dirPath, {
|
|
112
|
+
withFileTypes: true,
|
|
113
|
+
recursive: true,
|
|
114
|
+
});
|
|
115
|
+
// composer.json is kept whatever --ignore says - the package is not publishable without it
|
|
116
|
+
const entries = (0, utils_1.filterIgnoredEntries)(dirPath, scanned, [...utils_1.ARTIFACT_IGNORE_DEFAULT, ...(0, utils_1.parseIgnorePatterns)(options.ignore)], ['composer.json']);
|
|
117
|
+
output_1.default.normal((0, texts_1.TXT_ARTIFACT_ENTRIES_FOUND)(entries.length));
|
|
118
|
+
if (scanned.length !== entries.length) {
|
|
119
|
+
output_1.default.normal((0, texts_1.TXT_ARTIFACT_IGNORED_ENTRIES)(scanned.length - entries.length));
|
|
120
|
+
}
|
|
121
|
+
// The path declared in composer.json wins, otherwise the readme lying next to it
|
|
122
|
+
const declaredReadme = (0, utils_1.getComposerReadmePath)(composerJson);
|
|
123
|
+
if (declaredReadme && !(0, utils_1.isPathInside)(dirPath, declaredReadme)) {
|
|
124
|
+
output_1.default.exitError(texts_1.ERR_ARTIFACT_README_OUTSIDE);
|
|
125
|
+
}
|
|
126
|
+
const readmeFile = (0, utils_1.findArtifactReadme)(dirPath, declaredReadme);
|
|
127
|
+
let readme;
|
|
128
|
+
if (!readmeFile) {
|
|
129
|
+
output_1.default.normal(texts_1.TXT_ARTIFACT_README_NOT_FOUND);
|
|
130
|
+
}
|
|
131
|
+
else if (readmeFile.content === undefined) {
|
|
132
|
+
output_1.default.normal((0, texts_1.TXT_ARTIFACT_README_TOO_LARGE)((0, path_1.relative)(dirPath, readmeFile.path), utils_1.ARTIFACT_README_SIZE_LIMIT));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
readme = readmeFile.content;
|
|
136
|
+
output_1.default.normal((0, texts_1.TXT_ARTIFACT_README_FOUND)((0, path_1.relative)(dirPath, readmeFile.path)));
|
|
137
|
+
}
|
|
138
|
+
output_1.default.normal((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(0));
|
|
139
|
+
let root;
|
|
140
|
+
const zipPath = (0, path_1.join)((0, utils_1.getHomeDirectory)(), `${(0, uuid_1.v4)()}.zip`);
|
|
141
|
+
const clearZip = () => {
|
|
142
|
+
try {
|
|
143
|
+
fs_1.default.rmSync(zipPath);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// do nothing
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
try {
|
|
150
|
+
let proc = 0;
|
|
151
|
+
await (0, utils_1.createZip)(dirPath, zipPath, entries, () => {
|
|
152
|
+
proc += 1;
|
|
153
|
+
output_1.default.clearPreviousLine();
|
|
154
|
+
output_1.default.normal((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(proc));
|
|
155
|
+
});
|
|
156
|
+
output_1.default.clearPreviousLine();
|
|
157
|
+
output_1.default.normal(texts_1.TXT_ARTIFACT_ZIPPED);
|
|
158
|
+
root = await fs_1.default.openAsBlob(zipPath);
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
logger_1.default.error(err);
|
|
162
|
+
clearZip();
|
|
163
|
+
output_1.default.exitError(texts_1.ERR_SWW);
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
output_1.default.normal(texts_1.TXT_ARTIFACT_UPLOADING);
|
|
167
|
+
const d = await client.createArtifactComposerVersion(workspace, artifactId, root, composer, readme, options.note, options.agentNote);
|
|
168
|
+
clearZip();
|
|
169
|
+
output_1.default.clearPreviousLine();
|
|
170
|
+
output_1.default.normal(texts_1.TXT_ARTIFACT_UPLOADED);
|
|
171
|
+
output_1.default.object({
|
|
172
|
+
Version: `${identifier}:${d?.version || publishVersion}`,
|
|
173
|
+
// A composer version has no public preview endpoint the way a bucket artifact does, so the
|
|
174
|
+
// link that means something here is the version page in the app
|
|
175
|
+
URL: d?.html_url || '-',
|
|
176
|
+
});
|
|
177
|
+
output_1.default.exitNormal();
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
clearZip();
|
|
181
|
+
logger_1.default.error(err);
|
|
182
|
+
output_1.default.exitError(err);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
exports.default = commandArtifactComposerPublish;
|
|
@@ -0,0 +1,12 @@
|
|
|
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 publish_1 = __importDefault(require("./composer/publish"));
|
|
9
|
+
const commandArtifactComposer = (0, utils_1.newCommand)('composer', texts_1.DESC_COMMAND_ARTIFACT_COMPOSER);
|
|
10
|
+
commandArtifactComposer.alias('cmp');
|
|
11
|
+
commandArtifactComposer.addCommand(publish_1.default);
|
|
12
|
+
exports.default = commandArtifactComposer;
|
|
@@ -134,7 +134,7 @@ commandArtifactPublish.action(async (id, path, options) => {
|
|
|
134
134
|
let blob;
|
|
135
135
|
try {
|
|
136
136
|
let proc = 0;
|
|
137
|
-
await createZip(dirPath, zipPath, entries, () => {
|
|
137
|
+
await (0, utils_1.createZip)(dirPath, zipPath, entries, () => {
|
|
138
138
|
proc += 1;
|
|
139
139
|
output_1.default.clearPreviousLine();
|
|
140
140
|
output_1.default.normal((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(proc));
|
|
@@ -162,92 +162,4 @@ commandArtifactPublish.action(async (id, path, options) => {
|
|
|
162
162
|
output_1.default.exitError(err);
|
|
163
163
|
}
|
|
164
164
|
});
|
|
165
|
-
const addEntryToZip = (dirPath, zip, entry) => {
|
|
166
|
-
const fflate = require('fflate');
|
|
167
|
-
return new Promise((resolve, reject) => {
|
|
168
|
-
const isDir = entry.isDirectory();
|
|
169
|
-
let name = (0, path_1.join)(entry.parentPath.replace(dirPath, ''), entry.name);
|
|
170
|
-
if (isDir)
|
|
171
|
-
name += '/';
|
|
172
|
-
else
|
|
173
|
-
name = name.replace(/^\//, '');
|
|
174
|
-
const file = new fflate.ZipDeflate(name, {
|
|
175
|
-
level: 3,
|
|
176
|
-
});
|
|
177
|
-
zip.add(file);
|
|
178
|
-
if (isDir) {
|
|
179
|
-
file.push(new Uint8Array(0), true);
|
|
180
|
-
resolve();
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
const fullPath = (0, path_1.join)(entry.parentPath, entry.name);
|
|
184
|
-
const rs = fs_1.default.createReadStream(fullPath);
|
|
185
|
-
const finish = (err) => {
|
|
186
|
-
try {
|
|
187
|
-
rs.removeAllListeners();
|
|
188
|
-
rs.close();
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
// do nothing
|
|
192
|
-
}
|
|
193
|
-
if (err)
|
|
194
|
-
reject(err);
|
|
195
|
-
else
|
|
196
|
-
resolve();
|
|
197
|
-
};
|
|
198
|
-
rs.on('data', (chunk) => {
|
|
199
|
-
// Always a Buffer here - no encoding is set on the stream - but the event is typed for
|
|
200
|
-
// the ones that do set one, and a string would reach fflate as something it cannot zip
|
|
201
|
-
file.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk, false);
|
|
202
|
-
});
|
|
203
|
-
rs.on('error', (err) => {
|
|
204
|
-
finish(err);
|
|
205
|
-
});
|
|
206
|
-
rs.on('end', () => {
|
|
207
|
-
file.push(new Uint8Array(0), true);
|
|
208
|
-
finish();
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
};
|
|
212
|
-
const addEntriesToZip = async (dirPath, zip, entries, onEntry) => {
|
|
213
|
-
for (let i = 0; i < entries.length; i += 1) {
|
|
214
|
-
await addEntryToZip(dirPath, zip, entries[i]);
|
|
215
|
-
onEntry();
|
|
216
|
-
}
|
|
217
|
-
};
|
|
218
|
-
const createZip = (dirPath, zipPath, entries, onEntry) => {
|
|
219
|
-
const fflate = require('fflate');
|
|
220
|
-
return new Promise((resolve, reject) => {
|
|
221
|
-
const ws = fs_1.default.createWriteStream(zipPath);
|
|
222
|
-
let wasError = false;
|
|
223
|
-
const zip = new fflate.Zip((err, data, final) => {
|
|
224
|
-
if (wasError) {
|
|
225
|
-
// do nothing
|
|
226
|
-
}
|
|
227
|
-
else if (err) {
|
|
228
|
-
wasError = true;
|
|
229
|
-
ws.close();
|
|
230
|
-
reject(err);
|
|
231
|
-
}
|
|
232
|
-
else if (final) {
|
|
233
|
-
ws.end(data, () => {
|
|
234
|
-
resolve();
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
ws.write(data);
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
addEntriesToZip(dirPath, zip, entries, onEntry)
|
|
242
|
-
.then(() => {
|
|
243
|
-
zip.end();
|
|
244
|
-
})
|
|
245
|
-
.catch((err) => {
|
|
246
|
-
wasError = true;
|
|
247
|
-
ws.close(() => {
|
|
248
|
-
reject(err);
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
165
|
exports.default = commandArtifactPublish;
|
|
@@ -13,6 +13,7 @@ const delete_1 = __importDefault(require("./artifact/delete"));
|
|
|
13
13
|
const get_1 = __importDefault(require("./artifact/get"));
|
|
14
14
|
const version_1 = __importDefault(require("./artifact/version"));
|
|
15
15
|
const docker_1 = __importDefault(require("./artifact/docker"));
|
|
16
|
+
const composer_1 = __importDefault(require("./artifact/composer"));
|
|
16
17
|
const commandArtifact = (0, utils_1.newCommand)('artifact', texts_1.DESC_COMMAND_ARTIFACT);
|
|
17
18
|
commandArtifact.alias('art');
|
|
18
19
|
commandArtifact.addCommand(list_1.default);
|
|
@@ -23,4 +24,5 @@ commandArtifact.addCommand(publish_1.default);
|
|
|
23
24
|
commandArtifact.addCommand(download_1.default);
|
|
24
25
|
commandArtifact.addCommand(version_1.default);
|
|
25
26
|
commandArtifact.addCommand(docker_1.default);
|
|
27
|
+
commandArtifact.addCommand(composer_1.default);
|
|
26
28
|
exports.default = commandArtifact;
|
|
@@ -12,15 +12,23 @@ const input_1 = __importDefault(require("../../input"));
|
|
|
12
12
|
// miss. Without a project the identifier resolves as a workspace
|
|
13
13
|
// environment; with one, along the project line.
|
|
14
14
|
//
|
|
15
|
+
// Since the backend made /identifiers resolve strictly along the requested
|
|
16
|
+
// line, a project param no longer falls back to the workspace environment of
|
|
17
|
+
// the same identifier. Reads keep that fallback by asking a second time
|
|
18
|
+
// without the project - that is how workspace environments stay addressable
|
|
19
|
+
// from inside a project context, which the CLI enters on its own from
|
|
20
|
+
// BUDDY_PROJECT or a linked project.
|
|
21
|
+
//
|
|
15
22
|
// strictProject is for mutating commands (update/delete): an explicit -p is
|
|
16
23
|
// a statement "the environment of this project", so the resolved environment
|
|
17
|
-
// must actually live there
|
|
18
|
-
//
|
|
19
|
-
// workspace-wide resource. Reads keep the fallback - that is how workspace
|
|
20
|
-
// environments stay addressable from inside a project context.
|
|
24
|
+
// must actually live there - no fallback, and the scope is verified once
|
|
25
|
+
// more in case the API resolves loosely again.
|
|
21
26
|
const resolveEnvironmentId = async (client, workspace, identifier, options, strictProject = false) => {
|
|
22
27
|
const project = input_1.default.restApiProject(options.project, true);
|
|
23
|
-
|
|
28
|
+
let resolved = await client.getEnvironmentByIdentifier(workspace, identifier, project);
|
|
29
|
+
if (!resolved.environment_id && project && !strictProject) {
|
|
30
|
+
resolved = await client.getEnvironmentByIdentifier(workspace, identifier);
|
|
31
|
+
}
|
|
24
32
|
// A nonexistent project is rejected by the API client
|
|
25
33
|
// (getResourceByIdentifier); here only the environment itself can miss.
|
|
26
34
|
if (!resolved.environment_id) {
|
|
@@ -11,16 +11,24 @@ const input_1 = __importDefault(require("../../input"));
|
|
|
11
11
|
// Shared resolve preamble for commands taking a target identifier: line
|
|
12
12
|
// context from flags/env -> /identifiers -> hash id, exiting on a miss.
|
|
13
13
|
//
|
|
14
|
+
// Since the backend made /identifiers resolve strictly along the requested
|
|
15
|
+
// line, a line param no longer falls back to the workspace target of the same
|
|
16
|
+
// identifier. Reads keep that fallback by asking a second time without the
|
|
17
|
+
// line - that is how workspace targets stay addressable from a line context,
|
|
18
|
+
// which the CLI enters on its own from BUDDY_PROJECT or a linked project.
|
|
19
|
+
//
|
|
14
20
|
// strictLine is for mutating commands (update/delete/exec command): an
|
|
15
21
|
// explicit line flag is a statement "the target of this project/pipeline/
|
|
16
|
-
// environment",
|
|
17
|
-
//
|
|
18
|
-
// operation would silently land on a workspace-wide resource. Reads keep
|
|
19
|
-
// the fallback (workspace targets stay addressable from a line context).
|
|
22
|
+
// environment", so no fallback, and the scope is verified once more in case
|
|
23
|
+
// the API resolves loosely again.
|
|
20
24
|
const resolveTargetId = async (client, workspace, identifier, options, strictLine = false) => {
|
|
21
25
|
const project = input_1.default.restApiProject(options.project, true);
|
|
22
26
|
const line = input_1.default.targetLine(project, options.pipeline, options.environment);
|
|
23
|
-
|
|
27
|
+
let resolved = await client.getTargetByIdentifier(workspace, identifier, line);
|
|
28
|
+
const hasLine = Object.values(line).some((value) => !!value);
|
|
29
|
+
if (!resolved.target_id && hasLine && !strictLine) {
|
|
30
|
+
resolved = await client.getTargetByIdentifier(workspace, identifier);
|
|
31
|
+
}
|
|
24
32
|
if (!resolved.target_id) {
|
|
25
33
|
output_1.default.exitError(texts_1.ERR_TARGET_NOT_FOUND);
|
|
26
34
|
}
|
package/distTs/src/texts.js
CHANGED
|
@@ -5,22 +5,22 @@ exports.ERR_WRONG_STREAM = exports.ERR_WRONG_HANDSHAKE = exports.ERR_FETCH_VERSI
|
|
|
5
5
|
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_TUNNELING_DISABLED = exports.TXT_AGENT_TUNNELING_ENABLED = exports.TXT_AGENT_PROXY_DISABLED = exports.TXT_AGENT_PROXY_ENABLED = 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_USER_CHANGED = 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_CRAWL_RESPONSE = exports.ERR_INVALID_COMPARE_LINKS_RESPONSE = 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_CRAWL_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 = void 0;
|
|
6
6
|
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 = 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 = void 0;
|
|
7
7
|
exports.DESC_COMMAND_SESSION = exports.DESC_COMMAND_VISUAL = exports.DESC_COMMAND_UNIT = exports.DESC_COMMAND_TESTS = exports.DESC_COMMAND_PIPELINE_RUN_RETRY = exports.DESC_COMMAND_PIPELINE_GET = exports.DESC_COMMAND_PIPELINE_UPDATE = exports.DESC_COMMAND_PIPELINE_DELETE = exports.DESC_COMMAND_PIPELINE_CREATE = exports.DESC_COMMAND_PIPELINE_YAML = exports.DESC_COMMAND_PIPELINE_LIST = exports.DESC_COMMAND_PIPELINE_RUN_LIST = exports.DESC_COMMAND_PIPELINE_RUN_APPLY = exports.DESC_COMMAND_PIPELINE_RUN_CANCEL = exports.DESC_COMMAND_PIPELINE_RUN_LOGS = exports.DESC_COMMAND_PIPELINE_RUN_STATUS = exports.DESC_COMMAND_PIPELINE_RUN_START = exports.DESC_COMMAND_PIPELINE_RUN = exports.DESC_COMMAND_ARTIFACT_DOWNLOAD = exports.DESC_COMMAND_ARTIFACT_PUBLISH = exports.DESC_COMMAND_ARTIFACT_VERSION_CREATE = exports.DESC_COMMAND_ARTIFACT = exports.DESC_COMMAND_PIPELINE = exports.ERR_COMMAND_NOT_FOUND = 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_USER = 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_PROXY = exports.DESC_COMMAND_AGENT_TARGET = exports.DESC_COMMAND_AGENT_TUNNEL = exports.DESC_COMMAND_AGENT_STOP = exports.DESC_COMMAND_AGENT_PROXY_DISABLE = exports.DESC_COMMAND_AGENT_TARGET_DISABLE = exports.DESC_COMMAND_AGENT_TUNNELING_DISABLE = exports.DESC_COMMAND_AGENT_TUNNELING_ENABLE = exports.DESC_COMMAND_AGENT_PROXY_ENABLE = exports.DESC_COMMAND_AGENT_TARGET_ENABLE = exports.DESC_COMMAND_AGENT_PROXY_STATUS = void 0;
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.EXAMPLE_CRAWL_LINK = exports.EXAMPLE_CRAWL_RUN = exports.EXAMPLE_TESTS_CAPTURE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CLOSE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CREATE = exports.EXAMPLE_TESTS_VISUAL_LINK = exports.EXAMPLE_TESTS_VISUAL_UPLOAD = exports.EXAMPLE_TESTS_VISUAL_SETUP = exports.EXAMPLE_TESTS_UNIT_LINK = exports.EXAMPLE_TESTS_UNIT_UPLOAD = exports.EXAMPLE_ARTIFACT_VERSION_DELETE = exports.EXAMPLE_ARTIFACT_VERSION_GET = exports.EXAMPLE_ARTIFACT_VERSION_LIST = exports.EXAMPLE_ARTIFACT_CREATE = exports.EXAMPLE_ARTIFACT_DELETE = exports.EXAMPLE_ARTIFACT_DOWNLOAD = exports.EXAMPLE_ARTIFACT_PUBLISH = exports.EXAMPLE_ARTIFACT_VERSION_CREATE = exports.EXAMPLE_PIPELINE_RUN_RETRY = exports.EXAMPLE_PIPELINE_RUN_LIST = exports.EXAMPLE_PIPELINE_LIST = exports.EXAMPLE_PIPELINE_YML = exports.EXAMPLE_PIPELINE_GET = exports.EXAMPLE_PIPELINE_UPDATE = exports.EXAMPLE_PIPELINE_DELETE = exports.EXAMPLE_PIPELINE_CREATE = exports.EXAMPLE_PIPELINE_RUN_CANCEL = exports.EXAMPLE_PIPELINE_RUN_APPLY = exports.EXAMPLE_PIPELINE_RUN_LOGS = exports.EXAMPLE_PIPELINE_RUN_JSONL = exports.EXAMPLE_PIPELINE_RUN_STATUS = void 0;
|
|
8
|
+
exports.TXT_ARTIFACT_NO_ENTRIES_FOUND = exports.TXT_ARTIFACT_SCANNING_DIR = exports.TXT_ARTIFACT_README_NOT_FOUND = exports.TXT_ARTIFACT_README_TOO_LARGE = exports.TXT_ARTIFACT_README_FOUND = exports.ERR_ARTIFACT_COMPOSER_NAME_MISMATCH = exports.ERR_ARTIFACT_COMPOSER_VERSION_MISSING = exports.ERR_ARTIFACT_README_OUTSIDE = exports.ERR_ARTIFACT_COMPOSER_INVALID = exports.ERR_ARTIFACT_COMPOSER_NOT_FOUND = exports.TXT_STORIES_AMOUNT = 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.TXT_COMMAND_SUITE_CREATED = exports.TXT_COMMAND_SUITE_NAME = exports.TXT_COMMAND_SUITE_LINK_EXISTING_DESC = exports.TXT_COMMAND_SUITE_LINK_EXISTING = exports.TXT_COMMAND_SUITE_CREATE_NEW_UT_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW_CRAWL_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW_VT_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW = exports.TXT_COMMAND_SUITE_SELECT = exports.ERR_NO_UT_SUITES = exports.ERR_NO_CRAWL_SUITES = exports.ERR_NO_VT_SUITES = exports.TXT_COMMAND_UT_LINK_SUCCESS = exports.TXT_COMMAND_CRAWL_LINK_SUCCESS = exports.TXT_COMMAND_VT_LINK_SUCCESS = exports.TXT_COMMAND_UT_LINK_SELECT = exports.TXT_COMMAND_CRAWL_LINK_SELECT = exports.TXT_COMMAND_VT_LINK_SELECT = exports.OPTION_STORYBOOK_DIRECTORY = exports.OPTION_SUITE_IDENTIFIER = exports.DESC_COMMAND_UT_LINK = exports.DESC_COMMAND_CRAWL_LINK = exports.DESC_COMMAND_VT_LINK = exports.DESC_COMMAND_UT_UPLOAD = exports.DESC_COMMAND_CRAWL_RUN = exports.DESC_COMMAND_CRAWL = exports.DESC_COMMAND_CAPTURE = exports.DESC_COMMAND_VISUAL_UPLOAD = exports.DESC_COMMAND_VISUAL_SETUP = exports.DESC_COMMAND_SESSION_CLOSE = exports.DESC_COMMAND_SESSION_CREATE = void 0;
|
|
9
|
+
exports.OPTION_ARTIFACT_DOWNLOAD_PATH = exports.OPTION_ARTIFACT_PUBLISH_PATH = exports.OPTION_ARTIFACT_COMPOSE_PUBLISH_PATH = exports.OPTION_PIPELINE_RUN_ACTION_ID = exports.OPTION_PIPELINE_RUN_ID = exports.OPTION_PIPELINE_YAML = exports.TXT_PIPELINE_DELETED = exports.TXT_PIPELINE_DELETE_CONFIRM = exports.TXT_PIPELINE_UPDATED = exports.TXT_PIPELINE_CREATED = exports.OPTION_PIPELINE_NAME = exports.OPTION_PIPELINE_IDENTIFIER = exports.OPTION_PIPELINE_RUN_ARTIFACT = exports.OPTION_PIPELINE_RUN_ENVIRONMENT = exports.OPTION_PIPELINE_RUN_DELAY = exports.OPTION_PIPELINE_RUN_PAYLOAD = exports.ERR_RUN_PAYLOAD_TOO_MANY_FILES = exports.ERR_RUN_PAYLOAD_NOT_UPLOADED = exports.ERR_RUN_PAYLOAD_TOO_LARGE = exports.ERR_RUN_PAYLOAD_NO_ENTRIES = exports.ERR_RUN_VAR_FILE_INVALID = exports.ERR_RUN_VAR_FILE_NOT_FOUND = exports.OPTION_RUN_SINGLE_VAR_FILE = exports.OPTION_RUN_VAR_FILE = exports.OPTION_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_ARTIFACT_UNZIPPING_COUNT = exports.TXT_ARTIFACT_UNZIPPED = exports.TXT_ARTIFACT_UNZIPPING = exports.TXT_ARTIFACT_DOWNLOADED_ZIP = exports.TXT_ARTIFACT_DOWNLOADING_ZIP = exports.TXT_ARTIFACT_DOWNLOADED = exports.TXT_ARTIFACT_IGNORED_ENTRIES = exports.TXT_ARTIFACT_ENTRIES_FOUND = exports.TXT_ARTIFACT_UPLOADED = exports.TXT_ARTIFACT_UPLOADING = exports.TXT_ARTIFACT_ZIPPED = exports.TXT_ARTIFACT_ZIP_ENTRIES = exports.TXT_ARTIFACT_ONE_ENTRY_FOUND = void 0;
|
|
10
|
+
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_DOMAIN_BUY = exports.OPTION_CONFIRM_FORCE = exports.OPTION_FORCE = exports.OPTION_TOKEN = exports.OPTION_TIMEOUT = exports.OPTION_FOLLOW = exports.OPTION_SERVE_SANDBOX = 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_FORMAT_JSONL = exports.OPTION_FORMAT = exports.OPTION_VERSION = exports.OPTION_PIPELINE_RUN_NO_FOLLOW = exports.OPTION_PIPELINE_RUN_NO_WAIT = exports.OPTION_PIPELINE_RUN_ACTION = exports.OPTION_REST_API_TOKEN = exports.OPTION_ARTIFACT_DOWNLOAD_REPLACE = exports.OPTION_ARTIFACT_DOWNLOAD_MERGE = exports.OPTION_ARTIFACT_IGNORE = exports.OPTION_ARTIFACT_PUBLISH_OVERWRITE_VERSION = exports.OPTION_ARTIFACT_VERSION_AGENT_NOTE = exports.OPTION_ARTIFACT_VERSION_NOTE = exports.OPTION_ARTIFACT_VERSION_FROM = exports.OPTION_ARTIFACT_PUBLISH_CREATE = exports.OPTION_ARTIFACT_ID = void 0;
|
|
11
|
+
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_CRAWL_OUTPUT_TYPES = exports.OPTION_CRAWL_OUTPUT_DIR = exports.OPTION_CRAWL_DELAY = exports.OPTION_CRAWL_LOCAL_STORAGE = exports.OPTION_CRAWL_DEVICES = exports.OPTION_CRAWL_BROWSERS = exports.OPTION_CRAWL_COLOR_SCHEME = exports.OPTION_CRAWL_XPATH_SELECTOR = exports.OPTION_CRAWL_CSS_SELECTOR = exports.OPTION_CRAWL_FULL_PAGE = exports.OPTION_CRAWL_QUALITY = exports.OPTION_CRAWL_OUTPUT_TYPE = exports.OPTION_CRAWL_FOLLOW = exports.OPTION_CRAWL_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 = exports.OPTION_EXEC_COMMAND = exports.OPTION_AGENT_DEBUG = exports.OPTION_AGENT_PORT = exports.OPTION_AGENT_TAG = exports.OPTION_AGENT_TUNNELING = exports.OPTION_AGENT_PROXY = exports.OPTION_AGENT_TARGET = exports.OPTION_PASS = exports.OPTION_APP = exports.OPTION_USER = void 0;
|
|
12
|
+
exports.LOG_AGENT_UPDATE_SWAPPED = exports.LOG_AGENT_UPDATE_NOT_NEEDED = exports.LOG_AGENT_UPDATE_NO_ADMIN = exports.LOG_AGENT_UPDATE_STANDALONE = exports.LOG_AGENT_UPDATE_REQUESTED = exports.LOG_AGENT_RIGHTS_SKIPPED = exports.LOG_AGENT_RIGHTS_DIR_SKIPPED = exports.LOG_AGENT_SERVER_STARTED = exports.LOG_ERROR_STARTING_AGENT_SERVER = exports.LOG_SSH_CONNECTION = exports.LOG_LATE_TARGET_ERROR = exports.LOG_LATE_CHANNEL_ERROR = exports.LOG_HANDSHAKE_TIMEOUT = exports.LOG_WRONG_STREAM = exports.LOG_DETECTED_STREAM = exports.LOG_HTTP2_SESSION_TIMEOUT = exports.LOG_HTTP2_SESSION_SHED_TAIL = exports.LOG_HTTP2_SESSION_SHED = 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_TUNNELING = exports.LOG_ENABLING_AGENT_PROXY = exports.LOG_ENABLING_AGENT_TARGET = exports.LOG_DISABLING_AGENT_TUNNELING = exports.LOG_DISABLING_AGENT_PROXY = 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 = void 0;
|
|
13
|
+
exports.DESC_COMMAND_SANDBOX_UPDATE = exports.DESC_COMMAND_SANDBOX_GET_YAML = 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_CRAWLING_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_MAX_INFLIGHT = 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_DEBUG_NOT_PERSISTED = exports.LOG_AGENT_DEBUG_REMOTE = exports.LOG_AGENT_UPDATE_ROLLBACK_MISSING = exports.LOG_AGENT_UPDATE_NOT_AN_AGENT = exports.LOG_AGENT_UPDATE_ROLLBACK_ACKED = exports.LOG_AGENT_UPDATE_ROLLED_BACK = exports.LOG_AGENT_UPDATE_ATTEMPT = exports.LOG_AGENT_UPDATE_COMMITTED = exports.LOG_AGENT_UPDATE_BINARY_INVALID = exports.ERR_AGENT_UPDATE_IN_PROGRESS = exports.LOG_AGENT_UPDATE_UNINSTALLED = exports.LOG_AGENT_UPDATE_VERSION_MISMATCH = exports.LOG_AGENT_UPDATE_FAILED = void 0;
|
|
14
|
+
exports.TXT_SANDBOX_APP_STOPPED = exports.OPTION_SANDBOX_WAIT = exports.OPTION_SANDBOX_WAIT_APPS = exports.OPTION_SANDBOX_WAIT_CONFIGURED = exports.OPTION_SANDBOX_WAIT_RUNNING = exports.ERR_SANDBOX_STOP_FAILED = exports.ERR_SANDBOX_SSH_MISSING = exports.ERR_SANDBOX_SSH_NO_ACCESS = exports.ERR_SANDBOX_NOT_RUNNING = 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_APPS_TIMEOUT = exports.ERR_SANDBOX_SETUP_TIMEOUT = exports.ERR_SANDBOX_APP_FAILED = exports.ERR_SANDBOX_SETUP_FAILED = exports.ERR_SANDBOX_INVALID_RESOURCES = exports.ERR_SANDBOX_APP_NOT_FOUND = exports.ERR_SANDBOX_NOT_FOUND = exports.OPTION_SANDBOX_SSH_PRINT = exports.OPTION_SANDBOX_SSH_IDENTITY = exports.OPTION_SANDBOX_SSH_ARGS = exports.OPTION_SANDBOX_RUNTIME = exports.OPTION_SANDBOX_TIMEOUT = exports.OPTION_SANDBOX_FETCH = exports.OPTION_SANDBOX_APP_DIR = exports.OPTION_SANDBOX_APP_COMMAND = exports.OPTION_SANDBOX_YAML = exports.OPTION_SANDBOX_TAGS = exports.OPTION_SANDBOX_INSTALL_SCRIPT = exports.OPTION_SANDBOX_INSTALL_COMMANDS = exports.OPTION_SANDBOX_RESOURCES = exports.OPTION_SANDBOX_OS = exports.OPTION_SANDBOX_AGENT_NOTE = exports.OPTION_SANDBOX_NOTE = exports.OPTION_SANDBOX_NAME = exports.OPTION_SANDBOX_IDENTIFIER = exports.DESC_COMMAND_SANDBOX_SSH = exports.DESC_COMMAND_SANDBOX_APP = exports.DESC_COMMAND_SANDBOX_EXEC = exports.DESC_COMMAND_SANDBOX_STATUS = exports.DESC_COMMAND_SANDBOX_LOGS = 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 = void 0;
|
|
15
|
+
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_LOGS_LIMIT = exports.OPTION_SANDBOX_APP_ID = exports.OPTION_SANDBOX_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = exports.DESC_COMMAND_SANDBOX_APP_START = exports.DESC_COMMAND_SANDBOX_APP_STOP = exports.DESC_COMMAND_SANDBOX_APP_STATUS = exports.DESC_COMMAND_SANDBOX_APP_LOGS = exports.DESC_COMMAND_SANDBOX_EXEC_STATUS = exports.DESC_COMMAND_SANDBOX_EXEC_LIST = exports.DESC_COMMAND_SANDBOX_APP_REMOVE = exports.DESC_COMMAND_SANDBOX_APP_ADD = exports.DESC_COMMAND_SANDBOX_APP_LIST = exports.TXT_SANDBOX_WAITING_START = exports.TXT_SANDBOX_WAITING_STOP = exports.TXT_SANDBOX_WAITING_APPS = 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_UPDATED = exports.TXT_SANDBOX_CREATED = exports.TXT_SANDBOX_CREATING = exports.TXT_SANDBOX_APP_STARTED = void 0;
|
|
16
|
+
exports.DESC_COMMAND_TARGET_EXEC_LIST = exports.DESC_COMMAND_TARGET_EXEC_KILL = exports.DESC_COMMAND_TARGET_EXEC_STATUS = exports.DESC_COMMAND_TARGET_EXEC = exports.DESC_COMMAND_TARGET_DELETE = exports.DESC_COMMAND_TARGET_UPDATE = exports.DESC_COMMAND_TARGET_CREATE = exports.DESC_COMMAND_TARGET_GET = exports.DESC_COMMAND_TARGET_LIST = exports.DESC_COMMAND_TARGET = 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 = 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_IGNORE = exports.OPTION_SANDBOX_CP_USER = 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_APPS_NOT_FOUND = 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.TXT_SANDBOX_APP_REMOVED = exports.TXT_SANDBOX_APP_ADDED = exports.OPTION_SANDBOX_ENDPOINT_TYPE = exports.OPTION_SANDBOX_ENDPOINT_PORT = exports.OPTION_SANDBOX_ENDPOINT_NAME_ARG = void 0;
|
|
17
|
+
exports.ERR_ENVIRONMENT_NOT_FOUND = exports.OPTION_ENVIRONMENT_ICON = exports.OPTION_ENVIRONMENT_PUBLIC_URL = exports.OPTION_ENVIRONMENT_TAGS = exports.OPTION_ENVIRONMENT_CREATE_IDENTIFIER = exports.OPTION_ENVIRONMENT_NAME = exports.OPTION_ENVIRONMENT_IDENTIFIER = exports.DESC_COMMAND_ENVIRONMENT_DELETE = exports.DESC_COMMAND_ENVIRONMENT_UPDATE = exports.DESC_COMMAND_ENVIRONMENT_CREATE = exports.DESC_COMMAND_ENVIRONMENT_GET = exports.DESC_COMMAND_ENVIRONMENT_LIST = exports.DESC_COMMAND_ENVIRONMENT = exports.TXT_TARGET_EXEC_KILLED = exports.TXT_TARGET_EXEC_KILL_CONFIRM = exports.WARN_TARGET_EXEC_TRUNCATED = exports.TXT_TARGET_EXEC_CANCELLED = exports.TXT_TARGET_EXEC_FAILED = exports.TXT_TARGET_EXEC_SUCCESS = exports.TXT_TARGET_EXEC_BACKGROUND = exports.TXT_TARGET_EXEC_ID = exports.TXT_TARGET_DELETED = exports.TXT_TARGET_DELETE_CONFIRM = exports.TXT_TARGET_UPDATED = exports.TXT_TARGET_CREATED = exports.TXT_TARGET_NOT_FOUND = exports.ERR_TARGET_SCOPE_NO_ENVIRONMENT = exports.ERR_TARGET_SCOPE_NO_PIPELINE = exports.ERR_TARGET_PIPELINE_ENV_CONFLICT = exports.ERR_TARGET_PIPELINE_REQUIRES_PROJECT = exports.ERR_TARGET_SCOPE = exports.ERR_TARGET_ENVIRONMENT_NOT_FOUND = exports.ERR_TARGET_EXEC_FILE_NOT_FOUND = exports.ERR_TARGET_EXEC_COMMAND_CONFLICT = exports.ERR_TARGET_EXEC_NO_COMMAND = exports.ERR_TARGET_NO_EXECS = exports.ERR_TARGET_NOT_FOUND = exports.OPTION_TARGET_EXEC_FILE = exports.OPTION_TARGET_EXEC_ASYNC = exports.OPTION_TARGET_EXEC_COMMAND = exports.OPTION_TARGET_EXEC_LOG_LIMIT = exports.OPTION_TARGET_EXEC_LOG_OFFSET = exports.OPTION_TARGET_EXEC_LIMIT = exports.OPTION_TARGET_EXEC_ID = exports.OPTION_TARGET_YAML = exports.OPT_COMMAND_TARGET_SCOPE = exports.OPTION_TARGET_ENVIRONMENT = exports.OPTION_TARGET_PIPELINE = exports.OPTION_TARGET_IDENTIFIER = exports.DESC_COMMAND_TARGET_EXEC_LOGS = void 0;
|
|
18
|
+
exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.HELP_COMMAND_MCP = exports.ERR_MCP_TOOL_FILTERED = exports.ERR_MCP_TOOLS_CATEGORY = exports.OPT_COMMAND_MCP_TOOLS = exports.ERR_MCP_REFRESH_FAILED = exports.ERR_MCP_URL_INVALID = exports.ERR_MCP_ENDPOINT = exports.DESC_COMMAND_MCP = 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_SCHEMA = 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_WORKSPACE = exports.DESC_COMMAND_WHOAMI = exports.TXT_ENVIRONMENT_DELETED = exports.TXT_ENVIRONMENT_DELETE_CONFIRM = exports.TXT_ENVIRONMENT_UPDATED = exports.TXT_ENVIRONMENT_CREATED = exports.TXT_ENVIRONMENT_NOT_FOUND = void 0;
|
|
19
|
+
exports.OPT_COMMAND_SCOPE = exports.OPT_COMMAND_AGENT_NOTE = exports.OPT_COMMAND_NOTE = exports.DESC_COMMAND_ROUTE = exports.DESC_COMMAND_ROUTE_UPDATE = exports.DESC_COMMAND_ROUTE_DELETE = exports.DESC_COMMAND_ROUTE_GET = exports.DESC_COMMAND_DISTRO_UPDATE = exports.DESC_COMMAND_DISTRO_GET = exports.DESC_COMMAND_ROUTE_LIST = exports.DESC_COMMAND_DISTRO_LIST = exports.DESC_COMMAND_DISTRO_DELETE = exports.DESC_COMMAND_ROUTE_CREATE = exports.DESC_COMMAND_DISTRO_CREATE = exports.DESC_COMMAND_DISTRO = exports.ERR_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_REGISTER_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_FAILED = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_REGISTER_SUCCESS = exports.TXT_LOGIN_SUCCESS = exports.TXT_LOGIN_SELECT_WORKSPACE = exports.TXT_LOGIN_ENTER_BASE_URL = exports.TXT_LOGIN_PROVIDE_CODE = exports.TXT_REGISTER_OPEN_URL = exports.TXT_LOGIN_OPEN_URL = exports.TXT_REGISTER_OPENING_STAR = exports.TXT_LOGIN_OPENING_STAR = exports.TXT_REGISTER_OPENING = exports.TXT_LOGIN_OPENING = 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_COMMAND_REGISTER_PROVIDE_NAME = exports.TXT_COMMAND_REGISTER_PROVIDE_EMAIL = exports.ERR_COMMAND_REGISTER_INVALID_NAME = exports.ERR_COMMAND_REGISTER_INVALID_EMAIL = exports.OPT_COMMAND_REGISTER_NAME = exports.OPT_COMMAND_REGISTER_EMAIL = exports.DESC_COMMAND_REGISTER = exports.TXT_LOGOUT_SUCCESS = void 0;
|
|
20
|
+
exports.OPTION_COMMAND_DOMAIN_IDENTIFIER = exports.ERR_COMMAND_DOMAIN_NO_DOMAINS = exports.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED = exports.TXT_COMMAND_DOMAIN_BUY_SELECT_DOMAIN = exports.TXT_COMMAND_DOMAIN_PROVIDE_PROMPT = exports.ERR_COMMAND_DOMAIN_NOT_FOUND = exports.OPT_COMMAND_DOMAIN_ONLY_AVAILABLE = exports.OPT_COMMAND_DOMAIN_SORT = exports.OPT_COMMAND_DOMAIN_PHRASE = exports.OPT_COMMAND_DOMAIN_BUY_OWNER = exports.OPT_COMMAND_DOMAIN_BUY_TLD = exports.DESC_COMMAND_DOMAIN_GET = exports.DESC_COMMAND_DOMAIN_LIST = exports.DESC_COMMAND_DOMAIN_SEARCH = exports.DESC_COMMAND_DOMAIN_BUY = exports.DESC_COMMAND_DOMAIN = exports.ERR_ROUTE_NO_DEFAULT = exports.ERR_WRONG_ROUTE_TARGET = exports.ERR_COMMAND_ROUTE_NO_TARGET = exports.ERR_COMMAND_ROUTE_TYPE = exports.TXT_COMMAND_ROUTES_NOT_FOUND = exports.TXT_COMMAND_DISTROS_NOT_FOUND = exports.TXT_COMMAND_ROUTE_DELETED = exports.TXT_COMMAND_DISTRO_DELETED = exports.TXT_COMMAND_ROUTE_DELETE_CONFIRM = exports.TXT_COMMAND_DISTRO_DELETE_CONFIRM = exports.ERR_COMMAND_DISTRO_ENABLE_DISABLE = exports.ERR_COMMAND_NO_UPDATE = exports.ERR_COMMAND_DISTRO_NOT_FOUND = exports.ERR_COMMAND_SCOPE = exports.TXT_COMMAND_DISTRO_UPDATED = exports.TXT_COMMAND_ROUTE_UPDATED = exports.TXT_ROUTE_SERVE = exports.TXT_COMMAND_ROUTE_CREATED = exports.TXT_COMMAND_DISTRO_CREATED = exports.ERR_COMMAND_SCOPE_NO_PROJECT = exports.OPT_COMMAND_DISTRO_DISABLE = exports.OPT_COMMAND_DISTRO_ENABLE = exports.OPT_COMMAND_DISTRO_AGENT_NOTE = exports.OPT_COMMAND_DISTRO_NOTE = exports.OPT_COMMAND_DISTRO_NAME = exports.OPT_COMMAND_ROUTE_TARGET = exports.OPT_COMMAND_ROUTE_AGENT_NOTE = exports.OPT_COMMAND_ROUTE_NOTE = exports.OPT_COMMAND_ROUTE_PATH = exports.OPT_COMMAND_ROUTE_DOMAIN = exports.OPT_COMMAND_ROUTE_SUBDOMAIN = exports.OPT_COMMAND_ROUTE_TYPE = exports.OPT_COMMAND_ROUTE_ID = exports.OPT_COMMAND_DISTRO_IDENTIFIER = void 0;
|
|
21
|
+
exports.TXT_COMMAND_PROJECT_LINK_TO = exports.TXT_COMMAND_PROJECT_LINK_EXISTING_DESC = exports.TXT_COMMAND_PROJECT_LINK_EXISTING = exports.TXT_COMMAND_PROJECT_LINK_CREATE_NEW_DESC = exports.TXT_COMMAND_PROJECT_LINK_CREATE_NEW = exports.ERR_COMMAND_PROJECT_LINK_DIR_NOT_DIR = exports.TXT_COMMAND_PROJECT_LINK_GIT_REPO_INITIALIZED = exports.TXT_COMMAND_PROJECT_LINK_GIT_REPO = exports.TXT_COMMAND_PROJECT_LINK_DIR_CONFIRM = exports.TXT_COMMAND_PROJECT_LINK_DIR_LINKED = exports.ERR_COMMAND_PROJECT_LINK_DIR_CREATE = exports.OPT_COMMAND_PROJECT_LINK_TRY_NOW = exports.OPT_COMMAND_PROJECT_LINK_SET_GIT_REMOTE = exports.OPT_COMMAND_PROJECT_LINK_HAS_REMOTE = exports.OPT_COMMAND_PROJECT_LINK_DIRECTORY = exports.OPT_COMMAND_PROJECT_LINK_GIT = exports.OPT_COMMAND_PROJECT_LINK_RELINK = exports.DESC_COMMAND_PROJECT_LINK = exports.DESC_COMMAND_PROJECT_LIST = exports.DESC_COMMAND_PROJECT_GIT = exports.DESC_COMMAND_PROJECT_GIT_CREDENTIAL = exports.DESC_COMMAND_PROJECT = exports.TXT_ARTIFACT_VERSION_DOWNLOAD = exports.TXT_ARTIFACT_PUBLISH = exports.TXT_ARTIFACT_CREATED = exports.TXT_ARTIFACT_VERSION_DELETED = exports.TXT_ARTIFACT_DELETED = exports.ERR_COMMAND_ARTIFACT_TYPE = exports.OPT_COMMAND_ARTIFACT_VERSION = exports.OPT_COMMAND_ARTIFACT_IDENTIFIER = exports.OPT_COMMAND_ARTIFACT_CREATE_IDENTIFIER = exports.OPT_COMMAND_ARTIFACT_NAME = exports.OPT_COMMAND_ARTIFACT_TYPE = exports.DESC_COMMAND_ARTIFACT_CREATE = exports.DESC_COMMAND_ARTIFACT_COMPOSER_PUBLISH = exports.DESC_COMMAND_ARTIFACT_GET = exports.TXT_ARTIFACT_DOCKER_LOGIN_FAILED = exports.TXT_ARTIFACT_DOCKER_LOGIN_SUCCESS = exports.TXT_ARTIFACT_VERSION_DELETE_CONFIRM = exports.TXT_ARTIFACT_DELETE_CONFIRM = exports.DESC_COMMAND_ARTIFACT_DELETE = exports.ERR_COMMAND_ARTIFACT_NO_PROJECTS = exports.DESC_COMMAND_ARTIFACT_VERSION_GET = exports.DESC_COMMAND_ARTIFACT_VERSION_LIST = exports.DESC_COMMAND_ARTIFACT_VERSION_DELETE = exports.DESC_COMMAND_ARTIFACT_DOCKER_LOGIN = exports.DESC_COMMAND_ARTIFACT_LIST = exports.DESC_COMMAND_ARTIFACT_COMPOSER = exports.DESC_COMMAND_ARTIFACT_VERSION = exports.ERR_COMMAND_DOMAIN_UNAVAILABLE = void 0;
|
|
22
|
+
exports.EXAMPLE_TARGET_EXEC_STATUS = exports.EXAMPLE_TARGET_EXEC_COMMAND = exports.EXAMPLE_TARGET_DELETE = exports.EXAMPLE_TARGET_UPDATE = exports.EXAMPLE_TARGET_CREATE = exports.EXAMPLE_TARGET_GET = exports.EXAMPLE_TARGET_LIST = 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_APP_STATUS = exports.EXAMPLE_SANDBOX_APP_STOP = exports.EXAMPLE_SANDBOX_APP_REMOVE = exports.EXAMPLE_SANDBOX_APP_ADD = exports.EXAMPLE_SANDBOX_APP_START = exports.EXAMPLE_SANDBOX_APP_LOGS = exports.EXAMPLE_SANDBOX_EXEC_LIST = exports.EXAMPLE_SANDBOX_APP_LIST = exports.EXAMPLE_SANDBOX_EXEC_KILL = exports.EXAMPLE_SANDBOX_SSH = 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_DISTRO_CREATE = exports.EXAMPLE_ROUTE_CREATE = exports.EXAMPLE_ROUTE_LIST = exports.EXAMPLE_ROUTE_UPDATE = exports.EXAMPLE_ROUTE_DELETE = exports.EXAMPLE_DISTRO_DELETE = exports.EXAMPLE_ROUTE_GET = exports.EXAMPLE_DISTRO_UPDATE = exports.EXAMPLE_DISTRO_GET = exports.EXAMPLE_DISTRO_LIST = exports.EXAMPLE_SANDBOX_CP = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_CREATED = exports.TXT_COMMAND_PROJECT_LINK_NOT_FOUND = exports.TXT_COMMAND_PROJECT_LINK_NAME = exports.TXT_COMMAND_PROJECT_LINK_SELECT_PROJECT = void 0;
|
|
23
|
+
exports.EXAMPLE_CRAWL_LINK = exports.EXAMPLE_CRAWL_RUN = exports.EXAMPLE_TESTS_CAPTURE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CLOSE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CREATE = exports.EXAMPLE_TESTS_VISUAL_LINK = exports.EXAMPLE_TESTS_VISUAL_UPLOAD = exports.EXAMPLE_TESTS_VISUAL_SETUP = exports.EXAMPLE_TESTS_UNIT_LINK = exports.EXAMPLE_TESTS_UNIT_UPLOAD = exports.EXAMPLE_ARTIFACT_VERSION_DELETE = exports.EXAMPLE_ARTIFACT_VERSION_GET = exports.EXAMPLE_ARTIFACT_VERSION_LIST = exports.EXAMPLE_ARTIFACT_CREATE = exports.EXAMPLE_ARTIFACT_DELETE = exports.EXAMPLE_ARTIFACT_DOWNLOAD = exports.EXAMPLE_ARTIFACT_PUBLISH = exports.EXAMPLE_ARTIFACT_COMPOSER_PUBLISH = exports.EXAMPLE_ARTIFACT_VERSION_CREATE = exports.EXAMPLE_PIPELINE_RUN_RETRY = exports.EXAMPLE_PIPELINE_RUN_LIST = exports.EXAMPLE_PIPELINE_LIST = exports.EXAMPLE_PIPELINE_YML = exports.EXAMPLE_PIPELINE_GET = exports.EXAMPLE_PIPELINE_UPDATE = exports.EXAMPLE_PIPELINE_DELETE = exports.EXAMPLE_PIPELINE_CREATE = exports.EXAMPLE_PIPELINE_RUN_CANCEL = exports.EXAMPLE_PIPELINE_RUN_APPLY = exports.EXAMPLE_PIPELINE_RUN_LOGS = exports.EXAMPLE_PIPELINE_RUN_JSONL = exports.EXAMPLE_PIPELINE_RUN_STATUS = exports.EXAMPLE_PIPELINE_RUN_START = exports.EXAMPLE_SANDBOX_ENDPOINT_LIST = exports.EXAMPLE_SANDBOX_ENDPOINT_GET = exports.EXAMPLE_SANDBOX_ENDPOINT_DELETE = exports.EXAMPLE_SANDBOX_ENDPOINT_CREATE = exports.EXAMPLE_ENVIRONMENT_DELETE = exports.EXAMPLE_ENVIRONMENT_UPDATE = exports.EXAMPLE_ENVIRONMENT_CREATE = exports.EXAMPLE_ENVIRONMENT_GET = exports.EXAMPLE_ENVIRONMENT_LIST = exports.EXAMPLE_TARGET_EXEC_LOGS = exports.EXAMPLE_TARGET_EXEC_LIST = exports.EXAMPLE_TARGET_EXEC_KILL = void 0;
|
|
24
24
|
const utils_1 = require("./utils");
|
|
25
25
|
exports.ERR_CANCELLED = 'Cancelled';
|
|
26
26
|
exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
|
|
@@ -383,6 +383,17 @@ exports.TXT_UPDATING_AGENT = 'Updating agent...';
|
|
|
383
383
|
exports.TXT_OPENING_TUNNEL = 'Opening tunnel...';
|
|
384
384
|
const TXT_STORIES_AMOUNT = (amount) => `Found ${amount} stories`;
|
|
385
385
|
exports.TXT_STORIES_AMOUNT = TXT_STORIES_AMOUNT;
|
|
386
|
+
exports.ERR_ARTIFACT_COMPOSER_NOT_FOUND = 'composer.json not found';
|
|
387
|
+
exports.ERR_ARTIFACT_COMPOSER_INVALID = 'composer.json is not a valid JSON object';
|
|
388
|
+
exports.ERR_ARTIFACT_README_OUTSIDE = "'readme' path in composer.json must not escape the published directory";
|
|
389
|
+
exports.ERR_ARTIFACT_COMPOSER_VERSION_MISSING = 'Version not found. Set "version" in composer.json or publish as artifact:version';
|
|
390
|
+
const ERR_ARTIFACT_COMPOSER_NAME_MISMATCH = (identifier) => `Value of 'name' in composer.json does not match the artifact. Expected value ending with '/${identifier}'`;
|
|
391
|
+
exports.ERR_ARTIFACT_COMPOSER_NAME_MISMATCH = ERR_ARTIFACT_COMPOSER_NAME_MISMATCH;
|
|
392
|
+
const TXT_ARTIFACT_README_FOUND = (name) => `Readme: ${name}`;
|
|
393
|
+
exports.TXT_ARTIFACT_README_FOUND = TXT_ARTIFACT_README_FOUND;
|
|
394
|
+
const TXT_ARTIFACT_README_TOO_LARGE = (name, limit) => `Readme skipped: ${name} is larger than ${Math.round(limit / 1024)}kB`;
|
|
395
|
+
exports.TXT_ARTIFACT_README_TOO_LARGE = TXT_ARTIFACT_README_TOO_LARGE;
|
|
396
|
+
exports.TXT_ARTIFACT_README_NOT_FOUND = 'Readme: not found';
|
|
386
397
|
exports.TXT_ARTIFACT_SCANNING_DIR = 'Scanning...';
|
|
387
398
|
exports.TXT_ARTIFACT_NO_ENTRIES_FOUND = 'no entries found';
|
|
388
399
|
exports.TXT_ARTIFACT_ONE_ENTRY_FOUND = '1 entry found';
|
|
@@ -393,6 +404,8 @@ exports.TXT_ARTIFACT_UPLOADING = 'Uploading...';
|
|
|
393
404
|
exports.TXT_ARTIFACT_UPLOADED = 'Uploading...Done';
|
|
394
405
|
const TXT_ARTIFACT_ENTRIES_FOUND = (count) => `${count} entries found`;
|
|
395
406
|
exports.TXT_ARTIFACT_ENTRIES_FOUND = TXT_ARTIFACT_ENTRIES_FOUND;
|
|
407
|
+
const TXT_ARTIFACT_IGNORED_ENTRIES = (count) => `${count} entries ignored`;
|
|
408
|
+
exports.TXT_ARTIFACT_IGNORED_ENTRIES = TXT_ARTIFACT_IGNORED_ENTRIES;
|
|
396
409
|
const TXT_ARTIFACT_DOWNLOADED = (version, dirPath) => `Artifact version '${version}' downloaded to ${dirPath}`;
|
|
397
410
|
exports.TXT_ARTIFACT_DOWNLOADED = TXT_ARTIFACT_DOWNLOADED;
|
|
398
411
|
exports.TXT_ARTIFACT_DOWNLOADING_ZIP = 'Downloading...';
|
|
@@ -439,6 +452,7 @@ exports.TXT_PIPELINE_DELETED = 'Pipeline deleted successfully';
|
|
|
439
452
|
exports.OPTION_PIPELINE_YAML = 'Complete pipeline YAML. To specify file use @path/to/file format in value';
|
|
440
453
|
exports.OPTION_PIPELINE_RUN_ID = 'ID of the pipeline run';
|
|
441
454
|
exports.OPTION_PIPELINE_RUN_ACTION_ID = 'ID of the pipeline run action';
|
|
455
|
+
exports.OPTION_ARTIFACT_COMPOSE_PUBLISH_PATH = 'Path to the directory with composer.json';
|
|
442
456
|
exports.OPTION_ARTIFACT_PUBLISH_PATH = 'Path to the directory or file which will be published';
|
|
443
457
|
exports.OPTION_ARTIFACT_DOWNLOAD_PATH = 'Path to the directory where version will be downloaded';
|
|
444
458
|
exports.OPTION_ARTIFACT_ID = 'Human-readable ID of the artifact and optionally version: artifact:version or artifact@version';
|
|
@@ -447,6 +461,7 @@ exports.OPTION_ARTIFACT_VERSION_FROM = 'Version to copy content from';
|
|
|
447
461
|
exports.OPTION_ARTIFACT_VERSION_NOTE = 'Note of the artifact version';
|
|
448
462
|
exports.OPTION_ARTIFACT_VERSION_AGENT_NOTE = 'Note of the artifact version for AI agents';
|
|
449
463
|
exports.OPTION_ARTIFACT_PUBLISH_OVERWRITE_VERSION = 'Allow overwriting existing version';
|
|
464
|
+
exports.OPTION_ARTIFACT_IGNORE = 'Comma-separated paths or globs left out of the package (.git is always left out)';
|
|
450
465
|
exports.OPTION_ARTIFACT_DOWNLOAD_MERGE = 'Merge contents of the directory with artifact';
|
|
451
466
|
exports.OPTION_ARTIFACT_DOWNLOAD_REPLACE = 'Replace contents of the directory with artifact';
|
|
452
467
|
exports.OPTION_REST_API_TOKEN = 'Personal access token. Can be set via variable: BUDDY_TOKEN';
|
|
@@ -1211,6 +1226,7 @@ exports.OPTION_COMMAND_DOMAIN_IDENTIFIER = 'Domain ID or name';
|
|
|
1211
1226
|
exports.ERR_COMMAND_DOMAIN_UNAVAILABLE = 'Domain unavailable';
|
|
1212
1227
|
// artifact commands
|
|
1213
1228
|
exports.DESC_COMMAND_ARTIFACT_VERSION = 'Manage artifact versions';
|
|
1229
|
+
exports.DESC_COMMAND_ARTIFACT_COMPOSER = 'Publish to composer artifact';
|
|
1214
1230
|
exports.DESC_COMMAND_ARTIFACT_LIST = 'List artifacts. Required scopes: ARTIFACT_READ';
|
|
1215
1231
|
exports.DESC_COMMAND_ARTIFACT_DOCKER_LOGIN = 'Login to Buddy Docker registry';
|
|
1216
1232
|
exports.DESC_COMMAND_ARTIFACT_VERSION_DELETE = 'Delete an artifact version. Required scopes: ARTIFACT_MANAGE';
|
|
@@ -1225,6 +1241,7 @@ exports.TXT_ARTIFACT_VERSION_DELETE_CONFIRM = TXT_ARTIFACT_VERSION_DELETE_CONFIR
|
|
|
1225
1241
|
exports.TXT_ARTIFACT_DOCKER_LOGIN_SUCCESS = 'Login succeeded';
|
|
1226
1242
|
exports.TXT_ARTIFACT_DOCKER_LOGIN_FAILED = 'Login failed. Check your token and try again later...';
|
|
1227
1243
|
exports.DESC_COMMAND_ARTIFACT_GET = 'Get artifact by identifier. Required scopes: ARTIFACT_READ';
|
|
1244
|
+
exports.DESC_COMMAND_ARTIFACT_COMPOSER_PUBLISH = 'Publish composer version. Required scopes: ARTIFACT_MANAGE';
|
|
1228
1245
|
exports.DESC_COMMAND_ARTIFACT_CREATE = 'Create a new artifact. Required scopes: ARTIFACT_WRITE';
|
|
1229
1246
|
exports.OPT_COMMAND_ARTIFACT_TYPE = 'Artifact type: "BUCKET" or "CONTAINER"';
|
|
1230
1247
|
exports.OPT_COMMAND_ARTIFACT_NAME = 'Artifact name';
|
|
@@ -1751,6 +1768,16 @@ EXAMPLES:
|
|
|
1751
1768
|
bdy art ver create artifact-identifier:version
|
|
1752
1769
|
### create new version of file artifact based on another version
|
|
1753
1770
|
bdy art ver create --from old-version artifact-identifier:version`;
|
|
1771
|
+
exports.EXAMPLE_ARTIFACT_COMPOSER_PUBLISH = `
|
|
1772
|
+
EXAMPLES:
|
|
1773
|
+
### publish new version of composer artifact:
|
|
1774
|
+
bdy art composer pub artifact-identifier:version /path/to/dir
|
|
1775
|
+
### publish version from composer.json
|
|
1776
|
+
bdy art cmp pub artifact-identifier /path/to/dir
|
|
1777
|
+
### create new composer artifact:
|
|
1778
|
+
bdy art cmp pub artifact-identifier --create /path/to/dir
|
|
1779
|
+
### publish without test files:
|
|
1780
|
+
bdy art cmp pub artifact-identifier /path/to/dir --ignore "tests,**/*.log"`;
|
|
1754
1781
|
exports.EXAMPLE_ARTIFACT_PUBLISH = `
|
|
1755
1782
|
EXAMPLES:
|
|
1756
1783
|
### publish new version of file artifact:
|
package/distTs/src/utils.js
CHANGED
|
@@ -37,7 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.getRootDir = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorWorkspaceFlagged = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorDomainRestricted = exports.ApiErrorTargetInvalid = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.ARTIFACT_AUTH_TYPE = exports.TARGET_EXEC_STATUS = exports.TARGET_SCOPE = exports.ARTIFACT_TYPE = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_APP_STATUS = exports.SANDBOX_SETUP_STATUS = exports.SANDBOX_EXEC_STATUS = exports.SANDBOX_EXEC_RUNTIME = exports.SANDBOX_STATUS = exports.REST_API_ENDPOINT = exports.REST_API_REGION = exports.DEFAULT_SANDBOX_CP_USER = exports.ARTIFACT_DEFAULT_VERSION = exports.SUGGESTED_BROWSER_VERSION = exports.AGENT_UPDATE_STATUS_TTL_MS = exports.AGENT_UPDATE_PROBATION_MS = exports.AGENT_UPDATE_MAX_ATTEMPTS = exports.AGENT_FETCH_RETRY_MAX = exports.AGENT_FETCH_RETRY_MIN = exports.SSH_HANDSHAKE_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.getSshIdent = exports.TUNNEL_SSH_IDENT_SHARED_H2 = exports.TUNNEL_CLIENT_IP_HEADER = exports.TUNNEL_HTTP2_SHED_LOG_INTERVAL = exports.TUNNEL_HTTP2_MAX_SESSIONS = exports.TUNNEL_HTTP2_SESSION_IDLE_TIMEOUT = exports.TUNNEL_HTTP_RETRY_AFTER = exports.TUNNEL_HTTP_MAX_INFLIGHT = exports.TUNNEL_HTTP_CB_MIN_REQUESTS = exports.TUNNEL_HTTP_CB_WINDOW = exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = exports.TUNNEL_HTTP_LOG_MAX_BODY = exports.TUNNEL_HTTP_RATE_WINDOW = exports.TUNNEL_HTTP_RATE_LIMIT = void 0;
|
|
40
|
-
exports.getGitName = exports.getGitEmail = exports.MCP_TOOL_CATEGORIES = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.truncate = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.isVersionNewer = exports.getVersionWithoutEnv = exports.parseVersion = exports.getVersion = exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.isNpmGlobalWritable = exports.isPathWritable = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.HOME_DIR_NAME = exports.chownToHomeOwner = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getWorkingDir = void 0;
|
|
40
|
+
exports.getComposerReadmePath = exports.parseComposerJson = exports.ARTIFACT_README_NAMES = exports.ARTIFACT_README_SIZE_LIMIT = exports.filterIgnoredEntries = exports.parseIgnorePatterns = exports.ARTIFACT_IGNORE_DEFAULT = exports.createZip = exports.getGitName = exports.getGitEmail = exports.MCP_TOOL_CATEGORIES = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.truncate = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.isVersionNewer = exports.getVersionWithoutEnv = exports.parseVersion = exports.getVersion = exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.isNpmGlobalWritable = exports.isPathWritable = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.HOME_DIR_NAME = exports.chownToHomeOwner = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getWorkingDir = void 0;
|
|
41
|
+
exports.findArtifactReadme = exports.isPathInside = void 0;
|
|
41
42
|
exports.apiErrorCodeToClass = apiErrorCodeToClass;
|
|
42
43
|
exports.isFile = isFile;
|
|
43
44
|
exports.getAppWorkspaceUrl = getAppWorkspaceUrl;
|
|
@@ -62,7 +63,7 @@ exports.getAppHostByApiBaseUrl = getAppHostByApiBaseUrl;
|
|
|
62
63
|
exports.getOidcIssuerByAppHost = getOidcIssuerByAppHost;
|
|
63
64
|
exports.isKnownOidcIssuer = isKnownOidcIssuer;
|
|
64
65
|
const node_path_1 = __importDefault(require("node:path"));
|
|
65
|
-
const node_fs_1 = require("node:fs");
|
|
66
|
+
const node_fs_1 = __importStar(require("node:fs"));
|
|
66
67
|
const texts_1 = require("./texts");
|
|
67
68
|
const node_sea_1 = require("node:sea");
|
|
68
69
|
const commander_1 = require("commander");
|
|
@@ -194,6 +195,7 @@ var ARTIFACT_TYPE;
|
|
|
194
195
|
(function (ARTIFACT_TYPE) {
|
|
195
196
|
ARTIFACT_TYPE["BUCKET"] = "BUCKET";
|
|
196
197
|
ARTIFACT_TYPE["CONTAINER"] = "CONTAINER";
|
|
198
|
+
ARTIFACT_TYPE["COMPOSER"] = "COMPOSER";
|
|
197
199
|
})(ARTIFACT_TYPE || (exports.ARTIFACT_TYPE = ARTIFACT_TYPE = {}));
|
|
198
200
|
var TARGET_SCOPE;
|
|
199
201
|
(function (TARGET_SCOPE) {
|
|
@@ -1227,3 +1229,255 @@ const OIDC_ISSUERS = new Set(APP_HOST_OIDC_ISSUERS.map(([, issuer]) => issuer));
|
|
|
1227
1229
|
function isKnownOidcIssuer(issuer) {
|
|
1228
1230
|
return OIDC_ISSUERS.has(issuer);
|
|
1229
1231
|
}
|
|
1232
|
+
const addEntryToZip = (dirPath, zip, entry) => {
|
|
1233
|
+
const fflate = require('fflate');
|
|
1234
|
+
return new Promise((resolve, reject) => {
|
|
1235
|
+
const isDir = entry.isDirectory();
|
|
1236
|
+
// A zip entry name is always a relative POSIX path: on Windows path.join builds it with
|
|
1237
|
+
// backslashes, and anything below the root keeps the separator the strip above left behind
|
|
1238
|
+
let name = node_path_1.default
|
|
1239
|
+
.join(entry.parentPath.replace(dirPath, ''), entry.name)
|
|
1240
|
+
.split(node_path_1.default.sep)
|
|
1241
|
+
.join('/')
|
|
1242
|
+
.replace(/^\/+/, '');
|
|
1243
|
+
if (isDir)
|
|
1244
|
+
name += '/';
|
|
1245
|
+
const file = new fflate.ZipDeflate(name, {
|
|
1246
|
+
level: 3,
|
|
1247
|
+
});
|
|
1248
|
+
zip.add(file);
|
|
1249
|
+
if (isDir) {
|
|
1250
|
+
file.push(new Uint8Array(0), true);
|
|
1251
|
+
resolve();
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
const fullPath = node_path_1.default.join(entry.parentPath, entry.name);
|
|
1255
|
+
const rs = node_fs_1.default.createReadStream(fullPath);
|
|
1256
|
+
const finish = (err) => {
|
|
1257
|
+
try {
|
|
1258
|
+
rs.removeAllListeners();
|
|
1259
|
+
rs.close();
|
|
1260
|
+
}
|
|
1261
|
+
catch {
|
|
1262
|
+
// do nothing
|
|
1263
|
+
}
|
|
1264
|
+
if (err)
|
|
1265
|
+
reject(err);
|
|
1266
|
+
else
|
|
1267
|
+
resolve();
|
|
1268
|
+
};
|
|
1269
|
+
rs.on('data', (chunk) => {
|
|
1270
|
+
// Always a Buffer here - no encoding is set on the stream - but the event is typed for
|
|
1271
|
+
// the ones that do set one, and a string would reach fflate as something it cannot zip
|
|
1272
|
+
file.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk, false);
|
|
1273
|
+
});
|
|
1274
|
+
rs.on('error', (err) => {
|
|
1275
|
+
finish(err);
|
|
1276
|
+
});
|
|
1277
|
+
rs.on('end', () => {
|
|
1278
|
+
file.push(new Uint8Array(0), true);
|
|
1279
|
+
finish();
|
|
1280
|
+
});
|
|
1281
|
+
});
|
|
1282
|
+
};
|
|
1283
|
+
const addEntriesToZip = async (dirPath, zip, entries, onEntry) => {
|
|
1284
|
+
for (let i = 0; i < entries.length; i += 1) {
|
|
1285
|
+
await addEntryToZip(dirPath, zip, entries[i]);
|
|
1286
|
+
onEntry();
|
|
1287
|
+
}
|
|
1288
|
+
};
|
|
1289
|
+
const createZip = (dirPath, zipPath, entries, onEntry) => {
|
|
1290
|
+
const fflate = require('fflate');
|
|
1291
|
+
return new Promise((resolve, reject) => {
|
|
1292
|
+
const ws = node_fs_1.default.createWriteStream(zipPath);
|
|
1293
|
+
let wasError = false;
|
|
1294
|
+
const zip = new fflate.Zip((err, data, final) => {
|
|
1295
|
+
if (wasError) {
|
|
1296
|
+
// do nothing
|
|
1297
|
+
}
|
|
1298
|
+
else if (err) {
|
|
1299
|
+
wasError = true;
|
|
1300
|
+
ws.close();
|
|
1301
|
+
reject(err);
|
|
1302
|
+
}
|
|
1303
|
+
else if (final) {
|
|
1304
|
+
ws.end(data, () => {
|
|
1305
|
+
resolve();
|
|
1306
|
+
});
|
|
1307
|
+
}
|
|
1308
|
+
else {
|
|
1309
|
+
ws.write(data);
|
|
1310
|
+
}
|
|
1311
|
+
});
|
|
1312
|
+
addEntriesToZip(dirPath, zip, entries, onEntry)
|
|
1313
|
+
.then(() => {
|
|
1314
|
+
zip.end();
|
|
1315
|
+
})
|
|
1316
|
+
.catch((err) => {
|
|
1317
|
+
wasError = true;
|
|
1318
|
+
ws.close(() => {
|
|
1319
|
+
reject(err);
|
|
1320
|
+
});
|
|
1321
|
+
});
|
|
1322
|
+
});
|
|
1323
|
+
};
|
|
1324
|
+
exports.createZip = createZip;
|
|
1325
|
+
// VCS metadata is never part of a published package, so it is dropped with or without --ignore
|
|
1326
|
+
exports.ARTIFACT_IGNORE_DEFAULT = ['.git'];
|
|
1327
|
+
// Globs are matched against a path relative to the published directory: `*` and `?` stay inside one
|
|
1328
|
+
// segment, `**` crosses them, and `**/` also matches no directory at all
|
|
1329
|
+
const ignorePatternToRegExp = (pattern) => {
|
|
1330
|
+
let re = '';
|
|
1331
|
+
for (let i = 0; i < pattern.length; i += 1) {
|
|
1332
|
+
const c = pattern[i];
|
|
1333
|
+
if (c === '*' && pattern[i + 1] === '*') {
|
|
1334
|
+
i += 1;
|
|
1335
|
+
if (pattern[i + 1] === '/') {
|
|
1336
|
+
i += 1;
|
|
1337
|
+
re += '(?:.*/)?';
|
|
1338
|
+
}
|
|
1339
|
+
else {
|
|
1340
|
+
re += '.*';
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
else if (c === '*') {
|
|
1344
|
+
re += '[^/]*';
|
|
1345
|
+
}
|
|
1346
|
+
else if (c === '?') {
|
|
1347
|
+
re += '[^/]';
|
|
1348
|
+
}
|
|
1349
|
+
else {
|
|
1350
|
+
re += c.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
return new RegExp(`^${re}$`);
|
|
1354
|
+
};
|
|
1355
|
+
const parseIgnorePatterns = (value) => {
|
|
1356
|
+
if (!value)
|
|
1357
|
+
return [];
|
|
1358
|
+
return value
|
|
1359
|
+
.split(',')
|
|
1360
|
+
.map((pattern) => pattern.trim().replace(/^\.\//, '').replace(/\/+$/, ''))
|
|
1361
|
+
.filter((pattern) => pattern.length > 0);
|
|
1362
|
+
};
|
|
1363
|
+
exports.parseIgnorePatterns = parseIgnorePatterns;
|
|
1364
|
+
// A pattern is tested against the entry itself and against every directory above it, so `.git`
|
|
1365
|
+
// drops the whole tree and not just the directory entry. `keep` is never dropped, whatever the
|
|
1366
|
+
// patterns say - the composer package cannot be published without its composer.json
|
|
1367
|
+
const filterIgnoredEntries = (dirPath, entries, patterns, keep = []) => {
|
|
1368
|
+
if (!patterns.length)
|
|
1369
|
+
return entries;
|
|
1370
|
+
const regExps = patterns.map(ignorePatternToRegExp);
|
|
1371
|
+
const root = node_path_1.default.resolve(dirPath);
|
|
1372
|
+
return entries.filter((entry) => {
|
|
1373
|
+
const rel = node_path_1.default
|
|
1374
|
+
.relative(root, node_path_1.default.join(entry.parentPath, entry.name))
|
|
1375
|
+
.split(node_path_1.default.sep)
|
|
1376
|
+
.join('/');
|
|
1377
|
+
if (keep.includes(rel))
|
|
1378
|
+
return true;
|
|
1379
|
+
const segments = rel.split('/');
|
|
1380
|
+
for (let i = 1; i <= segments.length; i += 1) {
|
|
1381
|
+
const prefix = segments.slice(0, i).join('/');
|
|
1382
|
+
if (regExps.some((regExp) => regExp.test(prefix)))
|
|
1383
|
+
return false;
|
|
1384
|
+
}
|
|
1385
|
+
return true;
|
|
1386
|
+
});
|
|
1387
|
+
};
|
|
1388
|
+
exports.filterIgnoredEntries = filterIgnoredEntries;
|
|
1389
|
+
// Same limit the composer publish action uses server-side: a bigger readme is dropped, not truncated
|
|
1390
|
+
exports.ARTIFACT_README_SIZE_LIMIT = 51200; // 50kB
|
|
1391
|
+
// Only the directory the user pointed at is searched, and only these names - no recursive lookup
|
|
1392
|
+
exports.ARTIFACT_README_NAMES = ['readme.md', 'README.md'];
|
|
1393
|
+
// Null for anything the composer server would reject anyway - the caller stops there
|
|
1394
|
+
const parseComposerJson = (composer) => {
|
|
1395
|
+
let parsed;
|
|
1396
|
+
try {
|
|
1397
|
+
parsed = JSON.parse(composer);
|
|
1398
|
+
}
|
|
1399
|
+
catch {
|
|
1400
|
+
return null;
|
|
1401
|
+
}
|
|
1402
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
1403
|
+
return null;
|
|
1404
|
+
}
|
|
1405
|
+
return parsed;
|
|
1406
|
+
};
|
|
1407
|
+
exports.parseComposerJson = parseComposerJson;
|
|
1408
|
+
const getComposerReadmePath = (composerJson) => {
|
|
1409
|
+
const readme = composerJson.readme;
|
|
1410
|
+
if (typeof readme !== 'string' || !readme.trim()) {
|
|
1411
|
+
return null;
|
|
1412
|
+
}
|
|
1413
|
+
return readme.trim();
|
|
1414
|
+
};
|
|
1415
|
+
exports.getComposerReadmePath = getComposerReadmePath;
|
|
1416
|
+
// The readme travels as text, so anything above the published directory would be uploaded content
|
|
1417
|
+
// the user never pointed at - the composer publish action refuses such a path too
|
|
1418
|
+
const isPathInside = (root, target) => {
|
|
1419
|
+
const r = node_path_1.default.resolve(root);
|
|
1420
|
+
const t = node_path_1.default.resolve(r, target);
|
|
1421
|
+
return t === r || t.startsWith(r + node_path_1.default.sep);
|
|
1422
|
+
};
|
|
1423
|
+
exports.isPathInside = isPathInside;
|
|
1424
|
+
const findArtifactReadme = (dirPath, readmePath) => {
|
|
1425
|
+
const root = node_path_1.default.resolve(dirPath);
|
|
1426
|
+
const candidates = [];
|
|
1427
|
+
if (readmePath) {
|
|
1428
|
+
// A declared path is the only candidate the composer publish action considers: when it points
|
|
1429
|
+
// at nothing the version is published without a readme, never with a different file
|
|
1430
|
+
if (!(0, exports.isPathInside)(root, readmePath))
|
|
1431
|
+
return undefined;
|
|
1432
|
+
candidates.push(node_path_1.default.resolve(root, readmePath));
|
|
1433
|
+
}
|
|
1434
|
+
else {
|
|
1435
|
+
let listed = null;
|
|
1436
|
+
try {
|
|
1437
|
+
// Listed rather than probed by name, so the name that reaches the output is the one on disk -
|
|
1438
|
+
// a case-insensitive filesystem answers to both spellings with whichever was asked for
|
|
1439
|
+
listed = (0, node_fs_1.readdirSync)(root);
|
|
1440
|
+
}
|
|
1441
|
+
catch {
|
|
1442
|
+
// do nothing - the names are probed directly below
|
|
1443
|
+
}
|
|
1444
|
+
if (listed) {
|
|
1445
|
+
for (const name of exports.ARTIFACT_README_NAMES) {
|
|
1446
|
+
if (listed.includes(name))
|
|
1447
|
+
candidates.push(node_path_1.default.join(root, name));
|
|
1448
|
+
}
|
|
1449
|
+
for (const name of listed) {
|
|
1450
|
+
if (exports.ARTIFACT_README_NAMES.includes(name.toLowerCase()) &&
|
|
1451
|
+
!exports.ARTIFACT_README_NAMES.includes(name)) {
|
|
1452
|
+
candidates.push(node_path_1.default.join(root, name));
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
else {
|
|
1457
|
+
for (const name of exports.ARTIFACT_README_NAMES) {
|
|
1458
|
+
candidates.push(node_path_1.default.join(root, name));
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
for (const candidate of candidates) {
|
|
1463
|
+
let stat;
|
|
1464
|
+
try {
|
|
1465
|
+
stat = (0, node_fs_1.statSync)(candidate);
|
|
1466
|
+
}
|
|
1467
|
+
catch {
|
|
1468
|
+
continue;
|
|
1469
|
+
}
|
|
1470
|
+
if (!stat.isFile())
|
|
1471
|
+
continue;
|
|
1472
|
+
if (stat.size > exports.ARTIFACT_README_SIZE_LIMIT)
|
|
1473
|
+
return { path: candidate };
|
|
1474
|
+
try {
|
|
1475
|
+
return { path: candidate, content: (0, node_fs_1.readFileSync)(candidate, 'utf8') };
|
|
1476
|
+
}
|
|
1477
|
+
catch {
|
|
1478
|
+
continue;
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
return undefined;
|
|
1482
|
+
};
|
|
1483
|
+
exports.findArtifactReadme = findArtifactReadme;
|