@rockcarver/frodo-cli 2.0.0-33 → 2.0.0-34
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/CHANGELOG.md +5 -1
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +41 -0
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -0
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artifacts.js +43 -0
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artifacts.js.map +1 -0
- package/esm/cli/admin/admin.js +2 -0
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +2 -1
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +4 -3
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +2 -1
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +6 -4
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +2 -1
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +2 -1
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +2 -2
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +2 -1
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +2 -2
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +4 -3
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +2 -1
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +2 -1
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +4 -2
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +2 -1
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +6 -3
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +2 -1
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +4 -2
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/ops/AdminOps.js +130 -1
- package/esm/ops/AdminOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +156 -59
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +116 -48
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/utils/Console.js +2 -1
- package/esm/utils/Console.js.map +1 -1
- package/package.json +10 -2
package/esm/ops/VariablesOps.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
|
-
import { createKeyValueTable, createProgressIndicator, createTable, debugMessage,
|
|
2
|
+
import { createKeyValueTable, createProgressIndicator, createTable, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
|
|
3
3
|
import { getTypedFilename, saveJsonToFile, saveToFile, titleCase } from '../utils/ExportImportUtils';
|
|
4
4
|
import wordwrap from './utils/Wordwrap';
|
|
5
5
|
const {
|
|
@@ -22,15 +22,20 @@ const {
|
|
|
22
22
|
/**
|
|
23
23
|
* List variables
|
|
24
24
|
* @param {boolean} long Long version, all the fields
|
|
25
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
25
26
|
*/
|
|
26
27
|
export async function listVariables(long) {
|
|
28
|
+
let outcome = false;
|
|
29
|
+
let spinnerId;
|
|
27
30
|
let variables = [];
|
|
28
31
|
try {
|
|
32
|
+
spinnerId = createProgressIndicator('indeterminate', 0, `Reading variables...`);
|
|
29
33
|
variables = await readVariables();
|
|
30
34
|
variables.sort((a, b) => a._id.localeCompare(b._id));
|
|
35
|
+
stopProgressIndicator(spinnerId, `Successfully read ${variables.length} variables.`, 'success');
|
|
31
36
|
} catch (error) {
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
var _error$response;
|
|
38
|
+
stopProgressIndicator(spinnerId, `Error reading variables: ${((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error.message}`, 'fail');
|
|
34
39
|
}
|
|
35
40
|
if (long) {
|
|
36
41
|
const table = createTable(['Id'['brightCyan'], 'Value'['brightCyan'], 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified (UTC)'['brightCyan']]);
|
|
@@ -38,11 +43,14 @@ export async function listVariables(long) {
|
|
|
38
43
|
table.push([variable._id, wordwrap(decodeBase64(variable.valueBase64), 40), variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(variable.description, 40), state.getUseBearerTokenForAmApis() ? variable.lastChangedBy : await resolvePerpetratorUuid(variable.lastChangedBy), new Date(variable.lastChangeDate).toUTCString()]);
|
|
39
44
|
}
|
|
40
45
|
printMessage(table.toString(), 'data');
|
|
46
|
+
outcome = true;
|
|
41
47
|
} else {
|
|
42
48
|
variables.forEach(variable => {
|
|
43
49
|
printMessage(variable._id, 'data');
|
|
44
50
|
});
|
|
51
|
+
outcome = true;
|
|
45
52
|
}
|
|
53
|
+
return outcome;
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
/**
|
|
@@ -51,15 +59,19 @@ export async function listVariables(long) {
|
|
|
51
59
|
* @param {string} value variable value
|
|
52
60
|
* @param {string} description variable description
|
|
53
61
|
* @param {VariableExpressionType} type variable type
|
|
62
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
54
63
|
*/
|
|
55
64
|
export async function createVariable(variableId, value, description, type = 'string') {
|
|
56
|
-
|
|
65
|
+
let outcome = false;
|
|
66
|
+
const spinnerId = createProgressIndicator('indeterminate', 0, `Creating variable ${variableId}...`);
|
|
57
67
|
try {
|
|
58
68
|
await _updateVariable(variableId, value, description, type);
|
|
59
|
-
|
|
69
|
+
stopProgressIndicator(spinnerId, `Created variable ${variableId}`, 'success');
|
|
70
|
+
outcome = true;
|
|
60
71
|
} catch (error) {
|
|
61
|
-
|
|
72
|
+
stopProgressIndicator(spinnerId, error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error, 'fail');
|
|
62
73
|
}
|
|
74
|
+
return outcome;
|
|
63
75
|
}
|
|
64
76
|
|
|
65
77
|
/**
|
|
@@ -67,50 +79,64 @@ export async function createVariable(variableId, value, description, type = 'str
|
|
|
67
79
|
* @param {string} variableId variable id
|
|
68
80
|
* @param {string} value variable value
|
|
69
81
|
* @param {string} description variable description
|
|
82
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
70
83
|
*/
|
|
71
84
|
export async function updateVariable(variableId, value, description) {
|
|
72
|
-
|
|
85
|
+
let outcome = false;
|
|
86
|
+
const spinnerId = createProgressIndicator('indeterminate', 0, `Updating variable ${variableId}...`);
|
|
73
87
|
try {
|
|
74
88
|
await _updateVariable(variableId, value, description);
|
|
75
|
-
|
|
89
|
+
stopProgressIndicator(spinnerId, `Updated variable ${variableId}`, 'success');
|
|
90
|
+
outcome = true;
|
|
76
91
|
} catch (error) {
|
|
77
|
-
|
|
92
|
+
stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
78
93
|
}
|
|
94
|
+
return outcome;
|
|
79
95
|
}
|
|
80
96
|
|
|
81
97
|
/**
|
|
82
98
|
* Set description of variable
|
|
83
99
|
* @param {string} variableId variable id
|
|
84
100
|
* @param {string} description variable description
|
|
101
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
85
102
|
*/
|
|
86
103
|
export async function setVariableDescription(variableId, description) {
|
|
87
|
-
|
|
104
|
+
let outcome = false;
|
|
105
|
+
const spinnerId = createProgressIndicator('indeterminate', 0, `Setting description of variable ${variableId}...`);
|
|
88
106
|
try {
|
|
89
107
|
await updateVariableDescription(variableId, description);
|
|
90
|
-
|
|
108
|
+
stopProgressIndicator(spinnerId, `Set description of variable ${variableId}`, 'success');
|
|
109
|
+
outcome = true;
|
|
91
110
|
} catch (error) {
|
|
92
|
-
|
|
111
|
+
stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
93
112
|
}
|
|
113
|
+
return outcome;
|
|
94
114
|
}
|
|
95
115
|
|
|
96
116
|
/**
|
|
97
117
|
* Delete a variable
|
|
98
118
|
* @param {string} variableId variable id
|
|
119
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
99
120
|
*/
|
|
100
121
|
export async function deleteVariableById(variableId) {
|
|
101
|
-
|
|
122
|
+
let outcome = false;
|
|
123
|
+
const spinnerId = createProgressIndicator('indeterminate', 0, `Deleting variable ${variableId}...`);
|
|
102
124
|
try {
|
|
103
125
|
await deleteVariable(variableId);
|
|
104
|
-
|
|
126
|
+
stopProgressIndicator(spinnerId, `Deleted variable ${variableId}`, 'success');
|
|
127
|
+
outcome = true;
|
|
105
128
|
} catch (error) {
|
|
106
|
-
|
|
129
|
+
stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
107
130
|
}
|
|
131
|
+
return outcome;
|
|
108
132
|
}
|
|
109
133
|
|
|
110
134
|
/**
|
|
111
135
|
* Delete all variables
|
|
136
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
112
137
|
*/
|
|
113
138
|
export async function deleteVariables() {
|
|
139
|
+
let outcome = false;
|
|
114
140
|
let indicatorId;
|
|
115
141
|
try {
|
|
116
142
|
const variables = await readVariables();
|
|
@@ -123,36 +149,53 @@ export async function deleteVariables() {
|
|
|
123
149
|
printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
|
|
124
150
|
}
|
|
125
151
|
}
|
|
152
|
+
outcome = true;
|
|
126
153
|
stopProgressIndicator(indicatorId, `Variables deleted.`);
|
|
127
154
|
} catch (error) {
|
|
128
155
|
stopProgressIndicator(indicatorId, `Error: ${error.response.data.code} - ${error.response.data.message}`);
|
|
129
156
|
printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
|
|
130
157
|
}
|
|
158
|
+
return outcome;
|
|
131
159
|
}
|
|
132
160
|
|
|
133
161
|
/**
|
|
134
162
|
* Describe a variable
|
|
135
163
|
* @param {string} variableId variable id
|
|
164
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
136
165
|
*/
|
|
137
166
|
export async function describeVariable(variableId, json = false) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
table.push(['
|
|
167
|
+
let outcome = false;
|
|
168
|
+
const spinnerId = createProgressIndicator('indeterminate', 0, `Describing variable ${variableId}...`);
|
|
169
|
+
try {
|
|
170
|
+
const variable = await readVariable(variableId);
|
|
171
|
+
stopProgressIndicator(spinnerId, `Successfully retrieved variable ${variableId}`, 'success');
|
|
172
|
+
if (json) {
|
|
173
|
+
printMessage(variable, 'data');
|
|
174
|
+
} else {
|
|
175
|
+
const table = createKeyValueTable();
|
|
176
|
+
table.push(['Name'['brightCyan'], variable._id]);
|
|
177
|
+
table.push(['Value'['brightCyan'], wordwrap(decodeBase64(variable.valueBase64), 40)]);
|
|
178
|
+
table.push(['Type'['brightCyan'], variable.expressionType]);
|
|
179
|
+
table.push(['Status'['brightCyan'], variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed']]);
|
|
180
|
+
table.push(['Description'['brightCyan'], wordwrap(variable.description, 60)]);
|
|
181
|
+
table.push(['Modified'['brightCyan'], new Date(variable.lastChangeDate).toLocaleString()]);
|
|
182
|
+
let modifierName;
|
|
183
|
+
try {
|
|
184
|
+
modifierName = await resolvePerpetratorUuid(variable.lastChangedBy);
|
|
185
|
+
} catch (error) {
|
|
186
|
+
// ignore
|
|
187
|
+
}
|
|
188
|
+
if (modifierName && modifierName !== variable.lastChangedBy) {
|
|
189
|
+
table.push(['Modifier'['brightCyan'], modifierName]);
|
|
190
|
+
}
|
|
191
|
+
table.push(['Modifier UUID'['brightCyan'], variable.lastChangedBy]);
|
|
192
|
+
printMessage(table.toString(), 'data');
|
|
152
193
|
}
|
|
153
|
-
|
|
154
|
-
|
|
194
|
+
outcome = true;
|
|
195
|
+
} catch (error) {
|
|
196
|
+
stopProgressIndicator(spinnerId, `Error describing variable ${variableId}`, 'fail');
|
|
155
197
|
}
|
|
198
|
+
return outcome;
|
|
156
199
|
}
|
|
157
200
|
|
|
158
201
|
/**
|
|
@@ -160,9 +203,11 @@ export async function describeVariable(variableId, json = false) {
|
|
|
160
203
|
* @param {String} variableId Variable id
|
|
161
204
|
* @param {String} file Optional filename
|
|
162
205
|
* @param {boolean} noDecode Do not include decoded variable value in export
|
|
206
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
163
207
|
*/
|
|
164
208
|
export async function exportVariableToFile(variableId, file, noDecode) {
|
|
165
209
|
debugMessage(`Cli.VariablesOps.exportVariableToFile: start [variableId=${variableId}, file=${file}]`);
|
|
210
|
+
let outcome = false;
|
|
166
211
|
let fileName = file;
|
|
167
212
|
if (!fileName) {
|
|
168
213
|
fileName = getTypedFilename(variableId, 'variable');
|
|
@@ -177,50 +222,73 @@ export async function exportVariableToFile(variableId, file, noDecode) {
|
|
|
177
222
|
stopProgressIndicator(indicatorId,
|
|
178
223
|
// @ts-expect-error - brightCyan colors the string, even though it is not a property of string
|
|
179
224
|
`Exported ${variableId.brightCyan} to ${filePath.brightCyan}.`);
|
|
225
|
+
outcome = true;
|
|
180
226
|
} catch (err) {
|
|
181
227
|
stopProgressIndicator(indicatorId, `${err}`);
|
|
182
228
|
printMessage(err, 'error');
|
|
183
229
|
}
|
|
184
230
|
debugMessage(`Cli.VariablesOps.exportVariableToFile: end [variableId=${variableId}, file=${file}]`);
|
|
231
|
+
return outcome;
|
|
185
232
|
}
|
|
186
233
|
|
|
187
234
|
/**
|
|
188
235
|
* Export all variables to single file
|
|
189
236
|
* @param {string} file Optional filename
|
|
190
237
|
* @param {boolean} noDecode Do not include decoded variable value in export
|
|
238
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
191
239
|
*/
|
|
192
240
|
export async function exportVariablesToFile(file, noDecode) {
|
|
193
241
|
debugMessage(`Cli.VariablesOps.exportVariablesToFile: start [file=${file}]`);
|
|
194
|
-
let
|
|
195
|
-
|
|
196
|
-
|
|
242
|
+
let outcome = false;
|
|
243
|
+
const spinnerId = createProgressIndicator('indeterminate', 0, `Exporting variables...`);
|
|
244
|
+
if (!file) {
|
|
245
|
+
file = getTypedFilename(`all${titleCase(state.getRealm())}Variables`, 'variable');
|
|
197
246
|
}
|
|
198
247
|
try {
|
|
199
248
|
const variablesExport = await exportVariables(noDecode);
|
|
200
|
-
saveJsonToFile(variablesExport, getFilePath(
|
|
249
|
+
saveJsonToFile(variablesExport, getFilePath(file, true));
|
|
250
|
+
stopProgressIndicator(spinnerId, `Exported variables to ${file}`, 'success');
|
|
251
|
+
outcome = true;
|
|
201
252
|
} catch (error) {
|
|
202
|
-
var _error$
|
|
203
|
-
|
|
204
|
-
printMessage(`exportVariablesToFile: ${(_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status}`, 'error');
|
|
253
|
+
var _error$response2;
|
|
254
|
+
stopProgressIndicator(spinnerId, `Error exporting variables: ${((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.status) || error.message}`, 'fail');
|
|
205
255
|
}
|
|
206
|
-
debugMessage(`Cli.VariablesOps.exportVariablesToFile: end [file=${file}]`);
|
|
256
|
+
debugMessage(`Cli.VariablesOps.exportVariablesToFile: end [outcome=${outcome}, file=${file}]`);
|
|
257
|
+
return outcome;
|
|
207
258
|
}
|
|
208
259
|
|
|
209
260
|
/**
|
|
210
261
|
* Export all variables to seperate files
|
|
211
262
|
* @param {boolean} noDecode Do not include decoded variable value in export
|
|
263
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
212
264
|
*/
|
|
213
265
|
export async function exportVariablesToFiles(noDecode) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
266
|
+
let outcome = false;
|
|
267
|
+
let spinnerId;
|
|
268
|
+
let indicatorId;
|
|
269
|
+
let variableList = [];
|
|
270
|
+
try {
|
|
271
|
+
spinnerId = createProgressIndicator('indeterminate', 0, `Retrieving variables...`);
|
|
272
|
+
variableList = await readVariables();
|
|
273
|
+
stopProgressIndicator(spinnerId, `Successfully retrieved ${variableList.length} variables`, 'success');
|
|
274
|
+
} catch (error) {
|
|
275
|
+
stopProgressIndicator(spinnerId, `Error retrieving variables: ${error.message}`, 'fail');
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
const indicatorId = createProgressIndicator('determinate', variableList.length, 'Exporting variables');
|
|
279
|
+
for (const variable of variableList) {
|
|
280
|
+
if (!noDecode) {
|
|
281
|
+
variable.value = decodeBase64(variable.valueBase64);
|
|
282
|
+
}
|
|
283
|
+
updateProgressIndicator(indicatorId, `Writing variable ${variable._id}`);
|
|
284
|
+
const fileName = getTypedFilename(variable._id, 'variable');
|
|
285
|
+
saveToFile('variable', variable, '_id', getFilePath(fileName, true));
|
|
219
286
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
287
|
+
stopProgressIndicator(indicatorId, `${variableList.length} variables exported`);
|
|
288
|
+
outcome = true;
|
|
289
|
+
} catch (error) {
|
|
290
|
+
stopProgressIndicator(indicatorId, `Error exporting variables: ${error.message}`);
|
|
223
291
|
}
|
|
224
|
-
|
|
292
|
+
return outcome;
|
|
225
293
|
}
|
|
226
294
|
//# sourceMappingURL=VariablesOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariablesOps.js","names":["frodo","state","createKeyValueTable","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","decodeBase64","getFilePath","utils","resolvePerpetratorUuid","idm","managed","readVariables","readVariable","exportVariable","exportVariables","deleteVariable","updateVariableDescription","updateVariable","_updateVariable","cloud","variable","listVariables","long","variables","sort","a","b","_id","localeCompare","error","message","response","data","table","push","valueBase64","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","createVariable","variableId","value","type","code","setVariableDescription","deleteVariableById","deleteVariables","indicatorId","length","describeVariable","json","expressionType","toLocaleString","modifierName","exportVariableToFile","file","noDecode","fileName","filePath","fileData","brightCyan","err","exportVariablesToFile","getRealm","variablesExport","_error$response","status","exportVariablesToFiles","variableList"],"sources":["../../src/ops/VariablesOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { VariableExpressionType } from '@rockcarver/frodo-lib/types/api/cloud/VariablesApi';\n\nimport {\n createKeyValueTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { decodeBase64, getFilePath } = frodo.utils;\nconst { resolvePerpetratorUuid } = frodo.idm.managed;\nconst {\n readVariables,\n readVariable,\n exportVariable,\n exportVariables,\n deleteVariable,\n updateVariableDescription,\n updateVariable: _updateVariable,\n} = frodo.cloud.variable;\n\n/**\n * List variables\n * @param {boolean} long Long version, all the fields\n */\nexport async function listVariables(long) {\n let variables = [];\n try {\n variables = await readVariables();\n variables.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n 'Value'['brightCyan'],\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const variable of variables) {\n table.push([\n variable._id,\n wordwrap(decodeBase64(variable.valueBase64), 40),\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(variable.description, 40),\n state.getUseBearerTokenForAmApis()\n ? variable.lastChangedBy\n : await resolvePerpetratorUuid(variable.lastChangedBy),\n new Date(variable.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n variables.forEach((variable) => {\n printMessage(variable._id, 'data');\n });\n }\n}\n\n/**\n * Create variable\n * @param {string} variableId variable id\n * @param {string} value variable value\n * @param {string} description variable description\n * @param {VariableExpressionType} type variable type\n */\nexport async function createVariable(\n variableId: string,\n value: string,\n description: string,\n type: VariableExpressionType = 'string'\n) {\n showSpinner(`Creating variable ${variableId}...`);\n try {\n await _updateVariable(variableId, value, description, type);\n succeedSpinner(`Created variable ${variableId}`);\n } catch (error) {\n failSpinner(\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error\n );\n }\n}\n\n/**\n * Update variable\n * @param {string} variableId variable id\n * @param {string} value variable value\n * @param {string} description variable description\n */\nexport async function updateVariable(variableId, value, description) {\n showSpinner(`Updating variable ${variableId}...`);\n try {\n await _updateVariable(variableId, value, description);\n succeedSpinner(`Updated variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Set description of variable\n * @param {string} variableId variable id\n * @param {string} description variable description\n */\nexport async function setVariableDescription(variableId, description) {\n showSpinner(`Setting description of variable ${variableId}...`);\n try {\n await updateVariableDescription(variableId, description);\n succeedSpinner(`Set description of variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a variable\n * @param {string} variableId variable id\n */\nexport async function deleteVariableById(variableId) {\n showSpinner(`Deleting variable ${variableId}...`);\n try {\n await deleteVariable(variableId);\n succeedSpinner(`Deleted variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all variables\n */\nexport async function deleteVariables() {\n let indicatorId: string;\n try {\n const variables = await readVariables();\n indicatorId = createProgressIndicator(\n 'determinate',\n variables.length,\n `Deleting variable...`\n );\n for (const variable of variables) {\n try {\n await deleteVariable(variable._id);\n updateProgressIndicator(\n indicatorId,\n `Deleted variable ${variable._id}`\n );\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressIndicator(indicatorId, `Variables deleted.`);\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * Describe a variable\n * @param {string} variableId variable id\n */\nexport async function describeVariable(variableId, json = false) {\n const variable = await readVariable(variableId);\n if (json) {\n printMessage(variable, 'data');\n } else {\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], variable._id]);\n table.push([\n 'Value'['brightCyan'],\n wordwrap(decodeBase64(variable.valueBase64), 40),\n ]);\n table.push(['Type'['brightCyan'], variable.expressionType]);\n table.push([\n 'Status'['brightCyan'],\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push([\n 'Description'['brightCyan'],\n wordwrap(variable.description, 60),\n ]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(variable.lastChangeDate).toLocaleString(),\n ]);\n const modifierName = await resolvePerpetratorUuid(variable.lastChangedBy);\n if (modifierName && modifierName !== variable.lastChangedBy) {\n table.push(['Modifier'['brightCyan'], modifierName]);\n }\n table.push(['Modifier UUID'['brightCyan'], variable.lastChangedBy]);\n printMessage(table.toString(), 'data');\n }\n}\n\n/**\n * Export a single variable to file\n * @param {String} variableId Variable id\n * @param {String} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariableToFile(\n variableId: string,\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: start [variableId=${variableId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(variableId, 'variable');\n }\n const filePath = getFilePath(fileName, true);\n let indicatorId: string;\n try {\n indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting variable ${variableId}`\n );\n const fileData = await exportVariable(variableId, noDecode);\n saveJsonToFile(fileData, filePath);\n updateProgressIndicator(indicatorId, `Exported variable ${variableId}`);\n stopProgressIndicator(\n indicatorId,\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${variableId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressIndicator(indicatorId, `${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: end [variableId=${variableId}, file=${file}]`\n );\n}\n\n/**\n * Export all variables to single file\n * @param {string} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariablesToFile(\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Variables`,\n 'variable'\n );\n }\n try {\n const variablesExport = await exportVariables(noDecode);\n saveJsonToFile(variablesExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportVariablesToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: end [file=${file}]`);\n}\n\n/**\n * Export all variables to seperate files\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariablesToFiles(noDecode: boolean) {\n const variableList = await readVariables();\n const indicatorId = createProgressIndicator(\n 'determinate',\n variableList.length,\n 'Exporting variables'\n );\n for (const variable of variableList) {\n if (!noDecode) {\n variable.value = decodeBase64(variable.valueBase64);\n }\n updateProgressIndicator(indicatorId, `Writing variable ${variable._id}`);\n const fileName = getTypedFilename(variable._id, 'variable');\n saveToFile('variable', variable, '_id', getFilePath(fileName, true));\n }\n stopProgressIndicator(\n indicatorId,\n `${variableList.length} variables exported`\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VariablesOps.js","names":["frodo","state","createKeyValueTable","createProgressIndicator","createTable","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","decodeBase64","getFilePath","utils","resolvePerpetratorUuid","idm","managed","readVariables","readVariable","exportVariable","exportVariables","deleteVariable","updateVariableDescription","updateVariable","_updateVariable","cloud","variable","listVariables","long","outcome","spinnerId","variables","sort","a","b","_id","localeCompare","length","error","_error$response","response","data","message","table","push","valueBase64","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","createVariable","variableId","value","type","code","setVariableDescription","deleteVariableById","deleteVariables","indicatorId","describeVariable","json","expressionType","toLocaleString","modifierName","exportVariableToFile","file","noDecode","fileName","filePath","fileData","brightCyan","err","exportVariablesToFile","getRealm","variablesExport","_error$response2","status","exportVariablesToFiles","variableList"],"sources":["../../src/ops/VariablesOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n VariableExpressionType,\n VariableSkeleton,\n} from '@rockcarver/frodo-lib/types/api/cloud/VariablesApi';\n\nimport {\n createKeyValueTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { decodeBase64, getFilePath } = frodo.utils;\nconst { resolvePerpetratorUuid } = frodo.idm.managed;\nconst {\n readVariables,\n readVariable,\n exportVariable,\n exportVariables,\n deleteVariable,\n updateVariableDescription,\n updateVariable: _updateVariable,\n} = frodo.cloud.variable;\n\n/**\n * List variables\n * @param {boolean} long Long version, all the fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listVariables(long: boolean): Promise<boolean> {\n let outcome = false;\n let spinnerId: string;\n let variables: VariableSkeleton[] = [];\n try {\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Reading variables...`\n );\n variables = await readVariables();\n variables.sort((a, b) => a._id.localeCompare(b._id));\n stopProgressIndicator(\n spinnerId,\n `Successfully read ${variables.length} variables.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error reading variables: ${error.response?.data || error.message}`,\n 'fail'\n );\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n 'Value'['brightCyan'],\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const variable of variables) {\n table.push([\n variable._id,\n wordwrap(decodeBase64(variable.valueBase64), 40),\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(variable.description, 40),\n state.getUseBearerTokenForAmApis()\n ? variable.lastChangedBy\n : await resolvePerpetratorUuid(variable.lastChangedBy),\n new Date(variable.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n outcome = true;\n } else {\n variables.forEach((variable) => {\n printMessage(variable._id, 'data');\n });\n outcome = true;\n }\n return outcome;\n}\n\n/**\n * Create variable\n * @param {string} variableId variable id\n * @param {string} value variable value\n * @param {string} description variable description\n * @param {VariableExpressionType} type variable type\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function createVariable(\n variableId: string,\n value: string,\n description: string,\n type: VariableExpressionType = 'string'\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Creating variable ${variableId}...`\n );\n try {\n await _updateVariable(variableId, value, description, type);\n stopProgressIndicator(\n spinnerId,\n `Created variable ${variableId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Update variable\n * @param {string} variableId variable id\n * @param {string} value variable value\n * @param {string} description variable description\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function updateVariable(variableId, value, description) {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Updating variable ${variableId}...`\n );\n try {\n await _updateVariable(variableId, value, description);\n stopProgressIndicator(\n spinnerId,\n `Updated variable ${variableId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Set description of variable\n * @param {string} variableId variable id\n * @param {string} description variable description\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function setVariableDescription(variableId, description) {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Setting description of variable ${variableId}...`\n );\n try {\n await updateVariableDescription(variableId, description);\n stopProgressIndicator(\n spinnerId,\n `Set description of variable ${variableId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Delete a variable\n * @param {string} variableId variable id\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteVariableById(variableId) {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting variable ${variableId}...`\n );\n try {\n await deleteVariable(variableId);\n stopProgressIndicator(\n spinnerId,\n `Deleted variable ${variableId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Delete all variables\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteVariables() {\n let outcome = false;\n let indicatorId: string;\n try {\n const variables = await readVariables();\n indicatorId = createProgressIndicator(\n 'determinate',\n variables.length,\n `Deleting variable...`\n );\n for (const variable of variables) {\n try {\n await deleteVariable(variable._id);\n updateProgressIndicator(\n indicatorId,\n `Deleted variable ${variable._id}`\n );\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n outcome = true;\n stopProgressIndicator(indicatorId, `Variables deleted.`);\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n return outcome;\n}\n\n/**\n * Describe a variable\n * @param {string} variableId variable id\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeVariable(variableId, json = false) {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Describing variable ${variableId}...`\n );\n try {\n const variable = await readVariable(variableId);\n stopProgressIndicator(\n spinnerId,\n `Successfully retrieved variable ${variableId}`,\n 'success'\n );\n if (json) {\n printMessage(variable, 'data');\n } else {\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], variable._id]);\n table.push([\n 'Value'['brightCyan'],\n wordwrap(decodeBase64(variable.valueBase64), 40),\n ]);\n table.push(['Type'['brightCyan'], variable.expressionType]);\n table.push([\n 'Status'['brightCyan'],\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push([\n 'Description'['brightCyan'],\n wordwrap(variable.description, 60),\n ]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(variable.lastChangeDate).toLocaleString(),\n ]);\n let modifierName: string;\n try {\n modifierName = await resolvePerpetratorUuid(variable.lastChangedBy);\n } catch (error) {\n // ignore\n }\n if (modifierName && modifierName !== variable.lastChangedBy) {\n table.push(['Modifier'['brightCyan'], modifierName]);\n }\n table.push(['Modifier UUID'['brightCyan'], variable.lastChangedBy]);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error describing variable ${variableId}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Export a single variable to file\n * @param {String} variableId Variable id\n * @param {String} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportVariableToFile(\n variableId: string,\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: start [variableId=${variableId}, file=${file}]`\n );\n let outcome = false;\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(variableId, 'variable');\n }\n const filePath = getFilePath(fileName, true);\n let indicatorId: string;\n try {\n indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting variable ${variableId}`\n );\n const fileData = await exportVariable(variableId, noDecode);\n saveJsonToFile(fileData, filePath);\n updateProgressIndicator(indicatorId, `Exported variable ${variableId}`);\n stopProgressIndicator(\n indicatorId,\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${variableId.brightCyan} to ${filePath.brightCyan}.`\n );\n outcome = true;\n } catch (err) {\n stopProgressIndicator(indicatorId, `${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: end [variableId=${variableId}, file=${file}]`\n );\n return outcome;\n}\n\n/**\n * Export all variables to single file\n * @param {string} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportVariablesToFile(\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: start [file=${file}]`);\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting variables...`\n );\n if (!file) {\n file = getTypedFilename(\n `all${titleCase(state.getRealm())}Variables`,\n 'variable'\n );\n }\n try {\n const variablesExport = await exportVariables(noDecode);\n saveJsonToFile(variablesExport, getFilePath(file, true));\n stopProgressIndicator(\n spinnerId,\n `Exported variables to ${file}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error exporting variables: ${error.response?.status || error.message}`,\n 'fail'\n );\n }\n debugMessage(\n `Cli.VariablesOps.exportVariablesToFile: end [outcome=${outcome}, file=${file}]`\n );\n return outcome;\n}\n\n/**\n * Export all variables to seperate files\n * @param {boolean} noDecode Do not include decoded variable value in export\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportVariablesToFiles(noDecode: boolean) {\n let outcome = false;\n let spinnerId: string;\n let indicatorId: string;\n let variableList: VariableSkeleton[] = [];\n try {\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Retrieving variables...`\n );\n variableList = await readVariables();\n stopProgressIndicator(\n spinnerId,\n `Successfully retrieved ${variableList.length} variables`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error retrieving variables: ${error.message}`,\n 'fail'\n );\n }\n try {\n const indicatorId = createProgressIndicator(\n 'determinate',\n variableList.length,\n 'Exporting variables'\n );\n for (const variable of variableList) {\n if (!noDecode) {\n variable.value = decodeBase64(variable.valueBase64);\n }\n updateProgressIndicator(indicatorId, `Writing variable ${variable._id}`);\n const fileName = getTypedFilename(variable._id, 'variable');\n saveToFile('variable', variable, '_id', getFilePath(fileName, true));\n }\n stopProgressIndicator(\n indicatorId,\n `${variableList.length} variables exported`\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting variables: ${error.message}`\n );\n }\n return outcome;\n}\n"],"mappings":"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"}
|
package/esm/utils/Console.js
CHANGED
|
@@ -269,6 +269,7 @@ function stopProgressBar(id, message = null) {
|
|
|
269
269
|
});
|
|
270
270
|
}
|
|
271
271
|
progressBars[id].stop();
|
|
272
|
+
// progressBars[id].render();
|
|
272
273
|
debugMessage(`cli.Console.stopProgressBar: end [${Object.keys(progressBars).length} bars]`);
|
|
273
274
|
}
|
|
274
275
|
|
|
@@ -379,7 +380,7 @@ export function updateProgressIndicator(id, message) {
|
|
|
379
380
|
updateProgressBar(id, message);
|
|
380
381
|
}
|
|
381
382
|
}
|
|
382
|
-
export function stopProgressIndicator(id, message, status = 'none') {
|
|
383
|
+
export function stopProgressIndicator(id, message = null, status = 'none') {
|
|
383
384
|
if (!progressBars[id]) {
|
|
384
385
|
switch (status) {
|
|
385
386
|
case 'none':
|
package/esm/utils/Console.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.js","names":["frodo","state","MultiBar","Presets","Table","Color","createSpinner","v4","uuidv4","enable","appendTextToFile","utils","progressBars","multiBarContainer","spinner","data","message","newline","getOutputFile","JSON","stringify","console","dir","depth","maxArrayLength","log","process","stdout","write","text","error","stderr","info","warn","debug","curlirize","verboseMessage","getVerbose","debugMessage","getDebug","curlirizeMessage","getCurlirize","printMessage","type","createProgressBar","total","options","clearOnComplete","hideCursor","format","noTTYOutput","opt","legacy","id","create","Object","keys","length","updateProgressBar","increment","stopProgressBar","update","stop","cleanupProgressBars","showSpinner","start","stopSpinner","succeedSpinner","success","warnSpinner","failSpinner","spinSpinner","spin","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","status","cleanupProgressIndicators","createTable","head","table","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Math","max","values","map","hasValues","has","key","addRows","level","keyMap","space","push","brightCyan","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["../../src/utils/Console.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n ProgressIndicatorStatusType,\n ProgressIndicatorType,\n} from '@rockcarver/frodo-lib/types/utils/Console';\nimport { MultiBar, Presets } from 'cli-progress';\nimport Table from 'cli-table3';\nimport Color from 'colors';\nimport { createSpinner } from 'nanospinner';\nimport { v4 as uuidv4 } from 'uuid';\n\nColor.enable();\n\nconst { appendTextToFile } = frodo.utils;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst progressBars: { [k: string]: any } = {};\nlet multiBarContainer = null;\nlet spinner = null;\n\n/**\n * Output a message in default color to stdout or append to `state.getOutputFile()`\n * @param {string | object} message the message\n */\nfunction data(message: string | object, newline = true) {\n if (!message) return;\n if (state.getOutputFile()) {\n if (typeof message === 'object') {\n message = JSON.stringify(message, null, 2);\n }\n if (newline) {\n message += '\\n';\n }\n appendTextToFile(message, state.getOutputFile());\n } else if (typeof message === 'object') {\n console.dir(message, { depth: 10, maxArrayLength: null });\n } else if (newline) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n\n/**\n * Output a default color message to stderr\n * @param {Object} message the message\n */\nfunction text(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message);\n } else {\n process.stderr.write(message);\n }\n}\n\n/**\n * Output a message in bright cyan to stderr\n * @param {Object} message the message\n */\nfunction info(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightCyan']);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n}\n\n/**\n * Output a message in yellow to stderr\n * @param {Object} message the message\n */\nfunction warn(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['yellow']);\n } else {\n process.stderr.write(message['yellow']);\n }\n}\n\n/**\n * Output a message in bright red to stderr\n * @param {Object} message the message\n */\nfunction error(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightRed']);\n } else {\n process.stderr.write(message['brightRed']);\n }\n}\n\n/**\n * Output a debug message\n * @param {string | object} message the message\n */\nfunction debug(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 6 });\n } else if (newline) {\n console.error(message['brightMagenta']);\n } else {\n process.stderr.write(message['brightMagenta']);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {string} message the message\n */\nfunction curlirize(message: string) {\n if (!message) return;\n console.error(message['brightBlue']);\n}\n\n/**\n * Output a message in default color to stderr\n * @param {Object} message the message\n */\nexport function verboseMessage(message) {\n if (!message) return;\n if (state.getVerbose()) {\n text(message);\n }\n}\n\n/**\n * Output a debug message\n * @param {Object} message the message\n */\nexport function debugMessage(message) {\n if (!message) return;\n if (state.getDebug()) {\n debug(message);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {Object} message the message\n */\nexport function curlirizeMessage(message) {\n if (!message) return;\n if (state.getCurlirize()) {\n curlirize(message);\n }\n}\n\n/**\n * Prints a string message to console\n *\n * @param {string} message The string message to print\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n switch (type) {\n case 'data':\n data(message, newline);\n break;\n case 'text':\n text(message, newline);\n break;\n case 'info':\n info(message, newline);\n break;\n case 'warn':\n warn(message, newline);\n break;\n case 'error':\n error(message, newline);\n break;\n default:\n text(message, newline);\n }\n}\n\n/**\n * Creates a progress bar on stderr\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {number} total The total number of entries to track progress for\n * @param {string} message optional progress bar message\n * @param {object} options progress bar configuration options\n * @returns {string} progress bar reference id. Save this id to manage (update, stop) the progress bar.\n */\nfunction createProgressBar(\n total: number,\n message: string = null,\n options: object = {\n clearOnComplete: false,\n hideCursor: true,\n format: '[{bar}] {percentage}% | {value}/{total} | {data}',\n noTTYOutput: true,\n }\n): string {\n debugMessage(`cli.Console.createProgressBar: start`);\n let opt = options;\n if (message == null) {\n opt = {\n clearOnComplete: false,\n hideCursor: true,\n format: '[{bar}] {percentage}% | {value}/{total}',\n noTTYOutput: true,\n };\n }\n if (!multiBarContainer) {\n multiBarContainer = new MultiBar(opt, Presets.legacy);\n debugMessage(\n `cli.Console.createProgressBar: initialized multiBarContainer`\n );\n }\n const id = uuidv4();\n progressBars[id] = multiBarContainer.create(total, 0, {\n data: message,\n });\n debugMessage(\n `cli.Console.createProgressBar: end [${id}, ${\n Object.keys(progressBars).length\n } bars]`\n );\n return id;\n}\n\n/**\n * Updates the progress bar by 1\n * @param {string} message optional message to update the progress bar\n *\n */\nfunction updateProgressBar(id: string, message: string = null) {\n if (!progressBars[id]) {\n warn(\n `progressBar is undefined. Make sure to call 'createProgressBar' before calling 'updateProgressBar'.`\n );\n } else if (message) {\n progressBars[id].increment({\n data: message,\n });\n } else {\n progressBars[id].increment();\n }\n}\n\n/**\n * Stop and hide the progress bar\n * @param {*} message optional message to update the progress bar\n */\nfunction stopProgressBar(id: string, message: string = null) {\n debugMessage(`cli.Console.stopProgressBar: start [${id}]`);\n if (!progressBars[id]) {\n warn(\n `progressBar is undefined. Make sure to call 'createProgressBar' before calling 'stopProgressBar'.`\n );\n } else if (message) {\n progressBars[id].update({\n data: message,\n });\n }\n progressBars[id].stop();\n debugMessage(\n `cli.Console.stopProgressBar: end [${\n Object.keys(progressBars).length\n } bars]`\n );\n}\n\n/**\n * Clean-up progress bars\n */\nfunction cleanupProgressBars() {\n debugMessage(`cli.Console.cleanupProgressBars: start`);\n try {\n debugMessage(\n `cli.Console.cleanupProgressBars: stopping ${\n Object.keys(progressBars).length\n } bars`\n );\n multiBarContainer.stop();\n multiBarContainer = null;\n } catch (error) {\n // ignore\n }\n debugMessage(`cli.Console.cleanupProgressBars: end`);\n}\n\n/**\n * Create the spinner\n * @param {String} message optional spinner message\n */\nexport function showSpinner(message) {\n spinner = createSpinner(message).start();\n}\n\n/**\n * Stop the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function stopSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.stop(options);\n }\n}\n\n/**\n * Succeed the spinner. Stop and render success checkmark with optional message.\n * @param {String} message optional message to update the spinner\n */\nexport function succeedSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.success(options);\n }\n}\n\n/**\n * Warn the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function warnSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.warn(options);\n }\n}\n\n/**\n * Fail the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function failSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.error(options);\n }\n}\n\n/**\n * Spin the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function spinSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.update(options);\n spinner.spin();\n }\n}\n\nexport function createProgressIndicator(\n type: ProgressIndicatorType = 'determinate',\n total = 0,\n message = null\n): string {\n if (type === 'determinate') {\n return createProgressBar(total, message);\n } else {\n showSpinner(message);\n }\n}\n\nexport function updateProgressIndicator(id: string, message: string) {\n if (!progressBars[id]) {\n spinSpinner(message);\n } else {\n updateProgressBar(id, message);\n }\n}\n\nexport function stopProgressIndicator(\n id: string,\n message: string,\n status: ProgressIndicatorStatusType = 'none'\n) {\n if (!progressBars[id]) {\n switch (status) {\n case 'none':\n stopSpinner(message);\n break;\n case 'success':\n succeedSpinner(message);\n break;\n case 'warn':\n warnSpinner(message);\n break;\n case 'fail':\n failSpinner(message);\n break;\n default:\n stopSpinner(message);\n break;\n }\n } else {\n stopProgressBar(id, message);\n }\n}\n\nexport function cleanupProgressIndicators() {\n cleanupProgressBars();\n}\n\n/**\n * Create an empty table\n * @param {string[]} head header row as an array of strings\n * @returns {any} an empty table\n */\nexport function createTable(head) {\n const table = new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n return table;\n}\n\n/**\n * Create a new key/value table\n * @returns {any} an empty key/value table\n */\nexport function createKeyValueTable() {\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n return table;\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {object} object object to render\n * @param {number} depth total depth of initial object\n * @param {number} level current level\n * @param {any} table the object table to add the rows to\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key].gray : key.gray,\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns {any} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Console.js","names":["frodo","state","MultiBar","Presets","Table","Color","createSpinner","v4","uuidv4","enable","appendTextToFile","utils","progressBars","multiBarContainer","spinner","data","message","newline","getOutputFile","JSON","stringify","console","dir","depth","maxArrayLength","log","process","stdout","write","text","error","stderr","info","warn","debug","curlirize","verboseMessage","getVerbose","debugMessage","getDebug","curlirizeMessage","getCurlirize","printMessage","type","createProgressBar","total","options","clearOnComplete","hideCursor","format","noTTYOutput","opt","legacy","id","create","Object","keys","length","updateProgressBar","increment","stopProgressBar","update","stop","cleanupProgressBars","showSpinner","start","stopSpinner","succeedSpinner","success","warnSpinner","failSpinner","spinSpinner","spin","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","status","cleanupProgressIndicators","createTable","head","table","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Math","max","values","map","hasValues","has","key","addRows","level","keyMap","space","push","brightCyan","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["../../src/utils/Console.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n ProgressIndicatorStatusType,\n ProgressIndicatorType,\n} from '@rockcarver/frodo-lib/types/utils/Console';\nimport { MultiBar, Presets } from 'cli-progress';\nimport Table from 'cli-table3';\nimport Color from 'colors';\nimport { createSpinner } from 'nanospinner';\nimport { v4 as uuidv4 } from 'uuid';\n\nColor.enable();\n\nconst { appendTextToFile } = frodo.utils;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst progressBars: { [k: string]: any } = {};\nlet multiBarContainer = null;\nlet spinner = null;\n\n/**\n * Output a message in default color to stdout or append to `state.getOutputFile()`\n * @param {string | object} message the message\n */\nfunction data(message: string | object, newline = true) {\n if (!message) return;\n if (state.getOutputFile()) {\n if (typeof message === 'object') {\n message = JSON.stringify(message, null, 2);\n }\n if (newline) {\n message += '\\n';\n }\n appendTextToFile(message, state.getOutputFile());\n } else if (typeof message === 'object') {\n console.dir(message, { depth: 10, maxArrayLength: null });\n } else if (newline) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n\n/**\n * Output a default color message to stderr\n * @param {Object} message the message\n */\nfunction text(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message);\n } else {\n process.stderr.write(message);\n }\n}\n\n/**\n * Output a message in bright cyan to stderr\n * @param {Object} message the message\n */\nfunction info(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightCyan']);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n}\n\n/**\n * Output a message in yellow to stderr\n * @param {Object} message the message\n */\nfunction warn(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['yellow']);\n } else {\n process.stderr.write(message['yellow']);\n }\n}\n\n/**\n * Output a message in bright red to stderr\n * @param {Object} message the message\n */\nfunction error(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightRed']);\n } else {\n process.stderr.write(message['brightRed']);\n }\n}\n\n/**\n * Output a debug message\n * @param {string | object} message the message\n */\nfunction debug(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 6 });\n } else if (newline) {\n console.error(message['brightMagenta']);\n } else {\n process.stderr.write(message['brightMagenta']);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {string} message the message\n */\nfunction curlirize(message: string) {\n if (!message) return;\n console.error(message['brightBlue']);\n}\n\n/**\n * Output a message in default color to stderr\n * @param {Object} message the message\n */\nexport function verboseMessage(message) {\n if (!message) return;\n if (state.getVerbose()) {\n text(message);\n }\n}\n\n/**\n * Output a debug message\n * @param {Object} message the message\n */\nexport function debugMessage(message) {\n if (!message) return;\n if (state.getDebug()) {\n debug(message);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {Object} message the message\n */\nexport function curlirizeMessage(message) {\n if (!message) return;\n if (state.getCurlirize()) {\n curlirize(message);\n }\n}\n\n/**\n * Prints a string message to console\n *\n * @param {string} message The string message to print\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n switch (type) {\n case 'data':\n data(message, newline);\n break;\n case 'text':\n text(message, newline);\n break;\n case 'info':\n info(message, newline);\n break;\n case 'warn':\n warn(message, newline);\n break;\n case 'error':\n error(message, newline);\n break;\n default:\n text(message, newline);\n }\n}\n\n/**\n * Creates a progress bar on stderr\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {number} total The total number of entries to track progress for\n * @param {string} message optional progress bar message\n * @param {object} options progress bar configuration options\n * @returns {string} progress bar reference id. Save this id to manage (update, stop) the progress bar.\n */\nfunction createProgressBar(\n total: number,\n message: string = null,\n options: object = {\n clearOnComplete: false,\n hideCursor: true,\n format: '[{bar}] {percentage}% | {value}/{total} | {data}',\n noTTYOutput: true,\n }\n): string {\n debugMessage(`cli.Console.createProgressBar: start`);\n let opt = options;\n if (message == null) {\n opt = {\n clearOnComplete: false,\n hideCursor: true,\n format: '[{bar}] {percentage}% | {value}/{total}',\n noTTYOutput: true,\n };\n }\n if (!multiBarContainer) {\n multiBarContainer = new MultiBar(opt, Presets.legacy);\n debugMessage(\n `cli.Console.createProgressBar: initialized multiBarContainer`\n );\n }\n const id = uuidv4();\n progressBars[id] = multiBarContainer.create(total, 0, {\n data: message,\n });\n debugMessage(\n `cli.Console.createProgressBar: end [${id}, ${\n Object.keys(progressBars).length\n } bars]`\n );\n return id;\n}\n\n/**\n * Updates the progress bar by 1\n * @param {string} message optional message to update the progress bar\n *\n */\nfunction updateProgressBar(id: string, message: string = null) {\n if (!progressBars[id]) {\n warn(\n `progressBar is undefined. Make sure to call 'createProgressBar' before calling 'updateProgressBar'.`\n );\n } else if (message) {\n progressBars[id].increment({\n data: message,\n });\n } else {\n progressBars[id].increment();\n }\n}\n\n/**\n * Stop and hide the progress bar\n * @param {*} message optional message to update the progress bar\n */\nfunction stopProgressBar(id: string, message: string = null) {\n debugMessage(`cli.Console.stopProgressBar: start [${id}]`);\n if (!progressBars[id]) {\n warn(\n `progressBar is undefined. Make sure to call 'createProgressBar' before calling 'stopProgressBar'.`\n );\n } else if (message) {\n progressBars[id].update({\n data: message,\n });\n }\n progressBars[id].stop();\n // progressBars[id].render();\n debugMessage(\n `cli.Console.stopProgressBar: end [${\n Object.keys(progressBars).length\n } bars]`\n );\n}\n\n/**\n * Clean-up progress bars\n */\nfunction cleanupProgressBars() {\n debugMessage(`cli.Console.cleanupProgressBars: start`);\n try {\n debugMessage(\n `cli.Console.cleanupProgressBars: stopping ${\n Object.keys(progressBars).length\n } bars`\n );\n multiBarContainer.stop();\n multiBarContainer = null;\n } catch (error) {\n // ignore\n }\n debugMessage(`cli.Console.cleanupProgressBars: end`);\n}\n\n/**\n * Create the spinner\n * @param {String} message optional spinner message\n */\nexport function showSpinner(message) {\n spinner = createSpinner(message).start();\n}\n\n/**\n * Stop the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function stopSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.stop(options);\n }\n}\n\n/**\n * Succeed the spinner. Stop and render success checkmark with optional message.\n * @param {String} message optional message to update the spinner\n */\nexport function succeedSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.success(options);\n }\n}\n\n/**\n * Warn the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function warnSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.warn(options);\n }\n}\n\n/**\n * Fail the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function failSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.error(options);\n }\n}\n\n/**\n * Spin the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function spinSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.update(options);\n spinner.spin();\n }\n}\n\nexport function createProgressIndicator(\n type: ProgressIndicatorType = 'determinate',\n total = 0,\n message = null\n): string {\n if (type === 'determinate') {\n return createProgressBar(total, message);\n } else {\n showSpinner(message);\n }\n}\n\nexport function updateProgressIndicator(id: string, message: string) {\n if (!progressBars[id]) {\n spinSpinner(message);\n } else {\n updateProgressBar(id, message);\n }\n}\n\nexport function stopProgressIndicator(\n id: string,\n message: string = null,\n status: ProgressIndicatorStatusType = 'none'\n) {\n if (!progressBars[id]) {\n switch (status) {\n case 'none':\n stopSpinner(message);\n break;\n case 'success':\n succeedSpinner(message);\n break;\n case 'warn':\n warnSpinner(message);\n break;\n case 'fail':\n failSpinner(message);\n break;\n default:\n stopSpinner(message);\n break;\n }\n } else {\n stopProgressBar(id, message);\n }\n}\n\nexport function cleanupProgressIndicators() {\n cleanupProgressBars();\n}\n\n/**\n * Create an empty table\n * @param {string[]} head header row as an array of strings\n * @returns {any} an empty table\n */\nexport function createTable(head) {\n const table = new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n return table;\n}\n\n/**\n * Create a new key/value table\n * @returns {any} an empty key/value table\n */\nexport function createKeyValueTable() {\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n return table;\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {object} object object to render\n * @param {number} depth total depth of initial object\n * @param {number} level current level\n * @param {any} table the object table to add the rows to\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key].gray : key.gray,\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns {any} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"AAAA;AACA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAKpD,SAASC,QAAQ,EAAEC,OAAO,QAAQ,cAAc;AAChD,OAAOC,KAAK,MAAM,YAAY;AAC9B,OAAOC,KAAK,MAAM,QAAQ;AAC1B,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,EAAE,IAAIC,MAAM,QAAQ,MAAM;AAEnCH,KAAK,CAACI,MAAM,CAAC,CAAC;AAEd,MAAM;EAAEC;AAAiB,CAAC,GAAGV,KAAK,CAACW,KAAK;;AAExC;AACA,MAAMC,YAAkC,GAAG,CAAC,CAAC;AAC7C,IAAIC,iBAAiB,GAAG,IAAI;AAC5B,IAAIC,OAAO,GAAG,IAAI;;AAElB;AACA;AACA;AACA;AACA,SAASC,IAAIA,CAACC,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAIf,KAAK,CAACiB,aAAa,CAAC,CAAC,EAAE;IACzB,IAAI,OAAOF,OAAO,KAAK,QAAQ,EAAE;MAC/BA,OAAO,GAAGG,IAAI,CAACC,SAAS,CAACJ,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C;IACA,IAAIC,OAAO,EAAE;MACXD,OAAO,IAAI,IAAI;IACjB;IACAN,gBAAgB,CAACM,OAAO,EAAEf,KAAK,CAACiB,aAAa,CAAC,CAAC,CAAC;EAClD,CAAC,MAAM,IAAI,OAAOF,OAAO,KAAK,QAAQ,EAAE;IACtCK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE,EAAE;MAAEC,cAAc,EAAE;IAAK,CAAC,CAAC;EAC3D,CAAC,MAAM,IAAIP,OAAO,EAAE;IAClBI,OAAO,CAACI,GAAG,CAACT,OAAO,CAAC;EACtB,CAAC,MAAM;IACLU,OAAO,CAACC,MAAM,CAACC,KAAK,CAACZ,OAAO,CAAC;EAC/B;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASa,IAAIA,CAACb,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACS,KAAK,CAACd,OAAO,CAAC;EACxB,CAAC,MAAM;IACLU,OAAO,CAACK,MAAM,CAACH,KAAK,CAACZ,OAAO,CAAC;EAC/B;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASgB,IAAIA,CAAChB,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACS,KAAK,CAACd,OAAO,CAAC,YAAY,CAAC,CAAC;EACtC,CAAC,MAAM;IACLU,OAAO,CAACK,MAAM,CAACH,KAAK,CAACZ,OAAO,CAAC,YAAY,CAAC,CAAC;EAC7C;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASiB,IAAIA,CAACjB,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACS,KAAK,CAACd,OAAO,CAAC,QAAQ,CAAC,CAAC;EAClC,CAAC,MAAM;IACLU,OAAO,CAACK,MAAM,CAACH,KAAK,CAACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;EACzC;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASc,KAAKA,CAACd,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACvD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACS,KAAK,CAACd,OAAO,CAAC,WAAW,CAAC,CAAC;EACrC,CAAC,MAAM;IACLU,OAAO,CAACK,MAAM,CAACH,KAAK,CAACZ,OAAO,CAAC,WAAW,CAAC,CAAC;EAC5C;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASkB,KAAKA,CAAClB,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACvD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACS,KAAK,CAACd,OAAO,CAAC,eAAe,CAAC,CAAC;EACzC,CAAC,MAAM;IACLU,OAAO,CAACK,MAAM,CAACH,KAAK,CAACZ,OAAO,CAAC,eAAe,CAAC,CAAC;EAChD;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASmB,SAASA,CAACnB,OAAe,EAAE;EAClC,IAAI,CAACA,OAAO,EAAE;EACdK,OAAO,CAACS,KAAK,CAACd,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASoB,cAAcA,CAACpB,OAAO,EAAE;EACtC,IAAI,CAACA,OAAO,EAAE;EACd,IAAIf,KAAK,CAACoC,UAAU,CAAC,CAAC,EAAE;IACtBR,IAAI,CAACb,OAAO,CAAC;EACf;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASsB,YAAYA,CAACtB,OAAO,EAAE;EACpC,IAAI,CAACA,OAAO,EAAE;EACd,IAAIf,KAAK,CAACsC,QAAQ,CAAC,CAAC,EAAE;IACpBL,KAAK,CAAClB,OAAO,CAAC;EAChB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASwB,gBAAgBA,CAACxB,OAAO,EAAE;EACxC,IAAI,CAACA,OAAO,EAAE;EACd,IAAIf,KAAK,CAACwC,YAAY,CAAC,CAAC,EAAE;IACxBN,SAAS,CAACnB,OAAO,CAAC;EACpB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS0B,YAAYA,CAAC1B,OAAO,EAAE2B,IAAI,GAAG,MAAM,EAAE1B,OAAO,GAAG,IAAI,EAAE;EACnE,QAAQ0B,IAAI;IACV,KAAK,MAAM;MACT5B,IAAI,CAACC,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,MAAM;MACTY,IAAI,CAACb,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,MAAM;MACTe,IAAI,CAAChB,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,MAAM;MACTgB,IAAI,CAACjB,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,OAAO;MACVa,KAAK,CAACd,OAAO,EAAEC,OAAO,CAAC;MACvB;IACF;MACEY,IAAI,CAACb,OAAO,EAAEC,OAAO,CAAC;EAC1B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2B,iBAAiBA,CACxBC,KAAa,EACb7B,OAAe,GAAG,IAAI,EACtB8B,OAAe,GAAG;EAChBC,eAAe,EAAE,KAAK;EACtBC,UAAU,EAAE,IAAI;EAChBC,MAAM,EAAE,kDAAkD;EAC1DC,WAAW,EAAE;AACf,CAAC,EACO;EACRZ,YAAY,CAAE,sCAAqC,CAAC;EACpD,IAAIa,GAAG,GAAGL,OAAO;EACjB,IAAI9B,OAAO,IAAI,IAAI,EAAE;IACnBmC,GAAG,GAAG;MACJJ,eAAe,EAAE,KAAK;MACtBC,UAAU,EAAE,IAAI;MAChBC,MAAM,EAAE,yCAAyC;MACjDC,WAAW,EAAE;IACf,CAAC;EACH;EACA,IAAI,CAACrC,iBAAiB,EAAE;IACtBA,iBAAiB,GAAG,IAAIX,QAAQ,CAACiD,GAAG,EAAEhD,OAAO,CAACiD,MAAM,CAAC;IACrDd,YAAY,CACT,8DACH,CAAC;EACH;EACA,MAAMe,EAAE,GAAG7C,MAAM,CAAC,CAAC;EACnBI,YAAY,CAACyC,EAAE,CAAC,GAAGxC,iBAAiB,CAACyC,MAAM,CAACT,KAAK,EAAE,CAAC,EAAE;IACpD9B,IAAI,EAAEC;EACR,CAAC,CAAC;EACFsB,YAAY,CACT,uCAAsCe,EAAG,KACxCE,MAAM,CAACC,IAAI,CAAC5C,YAAY,CAAC,CAAC6C,MAC3B,QACH,CAAC;EACD,OAAOJ,EAAE;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,iBAAiBA,CAACL,EAAU,EAAErC,OAAe,GAAG,IAAI,EAAE;EAC7D,IAAI,CAACJ,YAAY,CAACyC,EAAE,CAAC,EAAE;IACrBpB,IAAI,CACD,qGACH,CAAC;EACH,CAAC,MAAM,IAAIjB,OAAO,EAAE;IAClBJ,YAAY,CAACyC,EAAE,CAAC,CAACM,SAAS,CAAC;MACzB5C,IAAI,EAAEC;IACR,CAAC,CAAC;EACJ,CAAC,MAAM;IACLJ,YAAY,CAACyC,EAAE,CAAC,CAACM,SAAS,CAAC,CAAC;EAC9B;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACP,EAAU,EAAErC,OAAe,GAAG,IAAI,EAAE;EAC3DsB,YAAY,CAAE,uCAAsCe,EAAG,GAAE,CAAC;EAC1D,IAAI,CAACzC,YAAY,CAACyC,EAAE,CAAC,EAAE;IACrBpB,IAAI,CACD,mGACH,CAAC;EACH,CAAC,MAAM,IAAIjB,OAAO,EAAE;IAClBJ,YAAY,CAACyC,EAAE,CAAC,CAACQ,MAAM,CAAC;MACtB9C,IAAI,EAAEC;IACR,CAAC,CAAC;EACJ;EACAJ,YAAY,CAACyC,EAAE,CAAC,CAACS,IAAI,CAAC,CAAC;EACvB;EACAxB,YAAY,CACT,qCACCiB,MAAM,CAACC,IAAI,CAAC5C,YAAY,CAAC,CAAC6C,MAC3B,QACH,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASM,mBAAmBA,CAAA,EAAG;EAC7BzB,YAAY,CAAE,wCAAuC,CAAC;EACtD,IAAI;IACFA,YAAY,CACT,6CACCiB,MAAM,CAACC,IAAI,CAAC5C,YAAY,CAAC,CAAC6C,MAC3B,OACH,CAAC;IACD5C,iBAAiB,CAACiD,IAAI,CAAC,CAAC;IACxBjD,iBAAiB,GAAG,IAAI;EAC1B,CAAC,CAAC,OAAOiB,KAAK,EAAE;IACd;EAAA;EAEFQ,YAAY,CAAE,sCAAqC,CAAC;AACtD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAAS0B,WAAWA,CAAChD,OAAO,EAAE;EACnCF,OAAO,GAAGR,aAAa,CAACU,OAAO,CAAC,CAACiD,KAAK,CAAC,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAClD,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAIgC,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI9B,OAAO,EAAE8B,OAAO,GAAG;MAAEjB,IAAI,EAAEb;IAAQ,CAAC;IACxCF,OAAO,CAACgD,IAAI,CAAChB,OAAO,CAAC;EACvB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASqB,cAAcA,CAACnD,OAAO,GAAG,IAAI,EAAE;EAC7C,IAAIF,OAAO,EAAE;IACX,IAAIgC,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI9B,OAAO,EAAE8B,OAAO,GAAG;MAAEjB,IAAI,EAAEb;IAAQ,CAAC;IACxCF,OAAO,CAACsD,OAAO,CAACtB,OAAO,CAAC;EAC1B;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASuB,WAAWA,CAACrD,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAIgC,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI9B,OAAO,EAAE8B,OAAO,GAAG;MAAEjB,IAAI,EAAEb;IAAQ,CAAC;IACxCF,OAAO,CAACmB,IAAI,CAACa,OAAO,CAAC;EACvB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASwB,WAAWA,CAACtD,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAIgC,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI9B,OAAO,EAAE8B,OAAO,GAAG;MAAEjB,IAAI,EAAEb;IAAQ,CAAC;IACxCF,OAAO,CAACgB,KAAK,CAACgB,OAAO,CAAC;EACxB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASyB,WAAWA,CAACvD,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAIgC,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI9B,OAAO,EAAE8B,OAAO,GAAG;MAAEjB,IAAI,EAAEb;IAAQ,CAAC;IACxCF,OAAO,CAAC+C,MAAM,CAACf,OAAO,CAAC;IACvBhC,OAAO,CAAC0D,IAAI,CAAC,CAAC;EAChB;AACF;AAEA,OAAO,SAASC,uBAAuBA,CACrC9B,IAA2B,GAAG,aAAa,EAC3CE,KAAK,GAAG,CAAC,EACT7B,OAAO,GAAG,IAAI,EACN;EACR,IAAI2B,IAAI,KAAK,aAAa,EAAE;IAC1B,OAAOC,iBAAiB,CAACC,KAAK,EAAE7B,OAAO,CAAC;EAC1C,CAAC,MAAM;IACLgD,WAAW,CAAChD,OAAO,CAAC;EACtB;AACF;AAEA,OAAO,SAAS0D,uBAAuBA,CAACrB,EAAU,EAAErC,OAAe,EAAE;EACnE,IAAI,CAACJ,YAAY,CAACyC,EAAE,CAAC,EAAE;IACrBkB,WAAW,CAACvD,OAAO,CAAC;EACtB,CAAC,MAAM;IACL0C,iBAAiB,CAACL,EAAE,EAAErC,OAAO,CAAC;EAChC;AACF;AAEA,OAAO,SAAS2D,qBAAqBA,CACnCtB,EAAU,EACVrC,OAAe,GAAG,IAAI,EACtB4D,MAAmC,GAAG,MAAM,EAC5C;EACA,IAAI,CAAChE,YAAY,CAACyC,EAAE,CAAC,EAAE;IACrB,QAAQuB,MAAM;MACZ,KAAK,MAAM;QACTV,WAAW,CAAClD,OAAO,CAAC;QACpB;MACF,KAAK,SAAS;QACZmD,cAAc,CAACnD,OAAO,CAAC;QACvB;MACF,KAAK,MAAM;QACTqD,WAAW,CAACrD,OAAO,CAAC;QACpB;MACF,KAAK,MAAM;QACTsD,WAAW,CAACtD,OAAO,CAAC;QACpB;MACF;QACEkD,WAAW,CAAClD,OAAO,CAAC;QACpB;IACJ;EACF,CAAC,MAAM;IACL4C,eAAe,CAACP,EAAE,EAAErC,OAAO,CAAC;EAC9B;AACF;AAEA,OAAO,SAAS6D,yBAAyBA,CAAA,EAAG;EAC1Cd,mBAAmB,CAAC,CAAC;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASe,WAAWA,CAACC,IAAI,EAAE;EAChC,MAAMC,KAAK,GAAG,IAAI5E,KAAK,CAAC;IACtB2E,IAAI;IACJE,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE,CAAC;MAAER,IAAI,EAAE,CAAC,YAAY;IAAE;EACvE,CAAC,CAAC;EACF,OAAOC,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASQ,mBAAmBA,CAAA,EAAG;EACpC,MAAMR,KAAK,GAAG,IAAI5E,KAAK,CAAC;IACtB6E,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE;IAAE,CAAC;IAChDE,QAAQ,EAAE;EACZ,CAAC,CAAC;EACF,OAAOT,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASU,cAAcA,CAACC,MAAM,EAAE;EAC9B,OAAOpC,MAAM,CAACoC,MAAM,CAAC,KAAKA,MAAM,GAC5B,CAAC,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAGtC,MAAM,CAACuC,MAAM,CAACH,MAAM,CAAC,CAACI,GAAG,CAACL,cAAc,CAAC,CAAC,GAC9D,CAAC;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASM,SAASA,CAACL,MAAM,EAAE;EACzB,IAAIM,GAAG,GAAG,KAAK;EACf,MAAMzC,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACmC,MAAM,CAAC;EAChC,KAAK,MAAMO,GAAG,IAAI1C,IAAI,EAAE;IACtB,IAAID,MAAM,CAACoC,MAAM,CAACO,GAAG,CAAC,CAAC,KAAKP,MAAM,CAACO,GAAG,CAAC,EAAE;MACvC,OAAO,IAAI;IACb;IACAD,GAAG,GAAGA,GAAG,IAAID,SAAS,CAACL,MAAM,CAACO,GAAG,CAAC,CAAC;EACrC;EACA,OAAOD,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,OAAOA,CAACR,MAAM,EAAEpE,KAAK,EAAE6E,KAAK,EAAEpB,KAAK,EAAEqB,MAAM,EAAE;EACpD,MAAMC,KAAK,GAAG,IAAI;EAClB,MAAM9C,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACmC,MAAM,CAAC;EAChC,KAAK,MAAMO,GAAG,IAAI1C,IAAI,EAAE;IACtB,IAAID,MAAM,CAACoC,MAAM,CAACO,GAAG,CAAC,CAAC,KAAKP,MAAM,CAACO,GAAG,CAAC,EAAE;MACvC,IAAIE,KAAK,KAAK,CAAC,EAAE;QACfpB,KAAK,CAACuB,IAAI,CAAC,CACTF,MAAM,CAACH,GAAG,CAAC,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACM,UAAU,GAAGN,GAAG,CAAC,YAAY,CAAC,EACxDP,MAAM,CAACO,GAAG,CAAC,CACZ,CAAC;MACJ,CAAC,MAAM;QACLlB,KAAK,CAACuB,IAAI,CAAC,CACT;UACEE,MAAM,EAAE,OAAO;UACfC,OAAO,EAAEL,MAAM,CAACH,GAAG,CAAC,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACS,IAAI,GAAGT,GAAG,CAACS;QAChD,CAAC,EACDhB,MAAM,CAACO,GAAG,CAAC,CACZ,CAAC;MACJ;IACF;EACF;EACA,KAAK,MAAMA,GAAG,IAAI1C,IAAI,EAAE;IACtB,IAAID,MAAM,CAACoC,MAAM,CAACO,GAAG,CAAC,CAAC,KAAKP,MAAM,CAACO,GAAG,CAAC,EAAE;MACvC;MACA,IAAIF,SAAS,CAACL,MAAM,CAACO,GAAG,CAAC,CAAC,EAAE;QAC1B,IAAIU,SAAS,GAAG,IAAIC,KAAK,CAACT,KAAK,CAAC,CAACU,IAAI,CAACR,KAAK,CAAC,CAACS,IAAI,CAAC,EAAE,CAAC;QACrD,IAAIX,KAAK,GAAG,CAAC,EAAEQ,SAAS,GAAI,KAAIA,SAAU,EAAC;QAC3C5B,KAAK,CAACuB,IAAI,CAAC,CACTK,SAAS,CAACI,MAAM,CACdX,MAAM,CAACH,GAAG,CAAC,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACM,UAAU,GAAGN,GAAG,CAAC,YAAY,CACzD,CAAC,EACD,EAAE,CACH,CAAC;MACJ;MACA;MACAlB,KAAK,GAAGmB,OAAO,CAACR,MAAM,CAACO,GAAG,CAAC,EAAE3E,KAAK,EAAE6E,KAAK,GAAG,CAAC,EAAEpB,KAAK,EAAEqB,MAAM,CAAC;IAC/D;EACF;EACA,OAAOrB,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASiC,iBAAiBA,CAACtB,MAAM,EAAEU,MAAM,GAAG,CAAC,CAAC,EAAE;EACrD;EACA,MAAM9E,KAAK,GAAGmE,cAAc,CAACC,MAAM,CAAC;EACpC;EACA,MAAMS,KAAK,GAAG,CAAC;EACf;EACA,MAAMpB,KAAK,GAAG,IAAI5E,KAAK,CAAC;IACtB6E,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE,CAAC;MAAER,IAAI,EAAE,CAAC,YAAY;IAAE;EACvE,CAAC,CAAC;EACFoB,OAAO,CAACR,MAAM,EAAEpE,KAAK,EAAE6E,KAAK,GAAG,CAAC,EAAEpB,KAAK,EAAEqB,MAAM,CAAC;EAChD,OAAOrB,KAAK;AACd"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rockcarver/frodo-cli",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-34",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A command line interface to manage ForgeRock Identity Cloud tenants, ForgeOps deployments, and classic deployments.",
|
|
6
6
|
"keywords": [
|
|
@@ -72,6 +72,14 @@
|
|
|
72
72
|
"name": "Ali Falahi",
|
|
73
73
|
"email": "ali@falahi.com"
|
|
74
74
|
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Huston Franklin",
|
|
77
|
+
"email": "hfranklin@trivir.com"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "Preston Hales",
|
|
81
|
+
"email": "phales@trivir.com"
|
|
82
|
+
},
|
|
75
83
|
{
|
|
76
84
|
"name": "Nick Hangartner",
|
|
77
85
|
"email": "nhangartner@gmail.com"
|
|
@@ -108,7 +116,7 @@
|
|
|
108
116
|
]
|
|
109
117
|
},
|
|
110
118
|
"dependencies": {
|
|
111
|
-
"@rockcarver/frodo-lib": "2.0.0-
|
|
119
|
+
"@rockcarver/frodo-lib": "2.0.0-52",
|
|
112
120
|
"chokidar": "^3.5.3",
|
|
113
121
|
"cli-progress": "^3.11.2",
|
|
114
122
|
"cli-table3": "^0.6.3",
|