@klevar/portal-cli 0.1.21 → 0.1.22
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/dist/commands/index.d.ts
CHANGED
|
@@ -34,8 +34,8 @@ export const operatorCommands = {
|
|
|
34
34
|
method: 'GET',
|
|
35
35
|
path: '/api/admin/clients/:clientId/reports/monthly',
|
|
36
36
|
auth: 'apiKey',
|
|
37
|
-
description: 'Generate monthly client report',
|
|
38
|
-
queryParams: ['period'],
|
|
37
|
+
description: 'Generate monthly client report; optionally scope with --project',
|
|
38
|
+
queryParams: ['period', 'projectId|project'],
|
|
39
39
|
},
|
|
40
40
|
'client.timeline': {
|
|
41
41
|
method: 'GET',
|
|
@@ -55,7 +55,8 @@ export const operatorCommands = {
|
|
|
55
55
|
method: 'GET',
|
|
56
56
|
path: '/api/admin/ops-health',
|
|
57
57
|
auth: 'apiKey',
|
|
58
|
-
description: 'Show operational health summary',
|
|
58
|
+
description: 'Show operational health summary; exits 1 only for critical unless --no-fail or --warn-only is set',
|
|
59
|
+
queryParams: ['noFail|no-fail', 'warnOnly|warn-only'],
|
|
59
60
|
},
|
|
60
61
|
'smoke.portal': {
|
|
61
62
|
method: 'GET',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator.js","sourceRoot":"","sources":["../../commands/operator.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE;QACL,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,WAAW,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC;KAC7F;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wCAAwC;QAC9C,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0BAA0B;KACxC;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,iDAAiD;QACvD,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kCAAkC;KAChD;IACD,yBAAyB,EAAE;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,mDAAmD;QACzD,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mCAAmC;KACjD;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mCAAmC;KACjD;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,8CAA8C;QACpD,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"operator.js","sourceRoot":"","sources":["../../commands/operator.ts"],"names":[],"mappings":"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"}
|
|
@@ -312,6 +312,7 @@ function pathParamEntity(commandKey, paramName) {
|
|
|
312
312
|
if (paramName.toLowerCase().includes('project')) return 'project';
|
|
313
313
|
if (paramName === 'id' && commandKey.startsWith('clients.')) return 'client';
|
|
314
314
|
if (paramName === 'id' && commandKey.startsWith('projects.')) return 'project';
|
|
315
|
+
if (paramName === 'id' && (commandKey === 'smoke.portal' || commandKey === 'smoke.docs')) return 'client';
|
|
315
316
|
return null;
|
|
316
317
|
}
|
|
317
318
|
|
|
@@ -320,8 +321,8 @@ async function resolveNameParam(commandKey, paramName, value, flags) {
|
|
|
320
321
|
const entity = pathParamEntity(commandKey, paramName);
|
|
321
322
|
if (!entity) return value;
|
|
322
323
|
const params = new URLSearchParams({ q: value, type: entity, limit: '10' });
|
|
323
|
-
if (entity === 'project' && flags.client) params.set('client', flags.client);
|
|
324
324
|
if (entity === 'project' && flags.clientId) params.set('clientId', flags.clientId);
|
|
325
|
+
else if (entity === 'project' && flags.client) params.set('client', flags.client);
|
|
325
326
|
const data = await api('GET', `/api/admin/search?${params.toString()}`);
|
|
326
327
|
const rows = entity === 'client' ? (data.clients || []) : (data.projects || []);
|
|
327
328
|
const exact = rows.filter((row) => (row.name || '').toLowerCase() === value.toLowerCase());
|
|
@@ -335,6 +336,13 @@ async function resolveNameParam(commandKey, paramName, value, flags) {
|
|
|
335
336
|
exitGracefully(2);
|
|
336
337
|
}
|
|
337
338
|
|
|
339
|
+
async function resolveQueryNameParam(commandKey, canonical, value, flags) {
|
|
340
|
+
if (!value || looksLikeOpaqueId(value)) return value;
|
|
341
|
+
if (canonical === 'clientId') return resolveNameParam(commandKey, 'clientId', value, flags);
|
|
342
|
+
if (canonical === 'projectId') return resolveNameParam(commandKey, 'projectId', value, flags);
|
|
343
|
+
return value;
|
|
344
|
+
}
|
|
345
|
+
|
|
338
346
|
const HELP_ENUMS = {
|
|
339
347
|
priority: 'low|normal|high|urgent',
|
|
340
348
|
submittedBy: 'client|admin|va|system',
|
|
@@ -396,7 +404,7 @@ function helpQueryFlag(field) {
|
|
|
396
404
|
function formatOutput(data, commandKey) {
|
|
397
405
|
if (commandKey === 'ops-health' && OUTPUT_JSON) {
|
|
398
406
|
console.log(COMPACT_JSON ? JSON.stringify(data) : JSON.stringify(data, null, 2));
|
|
399
|
-
if (data.status === 'critical') exitGracefully(1);
|
|
407
|
+
if (data.status === 'critical' && flags.noFail !== 'true' && flags['no-fail'] !== 'true' && flags.warnOnly !== 'true' && flags['warn-only'] !== 'true') exitGracefully(1);
|
|
400
408
|
return;
|
|
401
409
|
}
|
|
402
410
|
if (OUTPUT_JSON) {
|
|
@@ -518,7 +526,7 @@ function formatOutput(data, commandKey) {
|
|
|
518
526
|
for (const [key, value] of Object.entries(data.failures || {})) {
|
|
519
527
|
console.log(` ${key}: ${value}`);
|
|
520
528
|
}
|
|
521
|
-
if (data.status === 'critical') exitGracefully(1);
|
|
529
|
+
if (data.status === 'critical' && flags.noFail !== 'true' && flags['no-fail'] !== 'true' && flags.warnOnly !== 'true' && flags['warn-only'] !== 'true') exitGracefully(1);
|
|
522
530
|
return;
|
|
523
531
|
}
|
|
524
532
|
|
|
@@ -561,7 +569,7 @@ function formatOutput(data, commandKey) {
|
|
|
561
569
|
|
|
562
570
|
if (commandKey === 'audit.list' || commandKey === 'audit.target') {
|
|
563
571
|
const items = data.data || [];
|
|
564
|
-
if (items.length === 0) { console.log('No audit events found.'); return; }
|
|
572
|
+
if (items.length === 0) { console.log('No audit events found. Audit records operator actions from this release forward; older actions are not backfilled.'); return; }
|
|
565
573
|
console.log(`\nAudit Events (${items.length})`);
|
|
566
574
|
console.log('-'.repeat(80));
|
|
567
575
|
for (const item of items) {
|
|
@@ -1010,8 +1018,13 @@ if (cmd.queryParams || cmd.fixedQuery) {
|
|
|
1010
1018
|
for (const key of cmd.queryParams || []) {
|
|
1011
1019
|
const aliases = key.split('|');
|
|
1012
1020
|
const canonical = aliases[0];
|
|
1013
|
-
|
|
1014
|
-
if (value !== undefined)
|
|
1021
|
+
let value = aliases.map((alias) => flags[alias]).find((candidate) => candidate !== undefined);
|
|
1022
|
+
if (value !== undefined) {
|
|
1023
|
+
value = await resolveQueryNameParam(commandKey, canonical, value, flags);
|
|
1024
|
+
flags[canonical] = value;
|
|
1025
|
+
for (const alias of aliases) flags[alias] = value;
|
|
1026
|
+
params.set(canonical, value);
|
|
1027
|
+
}
|
|
1015
1028
|
}
|
|
1016
1029
|
const qs = params.toString();
|
|
1017
1030
|
if (qs) path += (path.includes('?') ? '&' : '?') + qs;
|