@robinmordasiewicz/f5xc-xcsh 1.0.91-2601040531 → 1.0.91-2601040611

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +113 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -47052,8 +47052,8 @@ function getLogoModeFromEnv(envPrefix) {
47052
47052
  var CLI_NAME = "xcsh";
47053
47053
  var CLI_FULL_NAME = "F5 Distributed Cloud Shell";
47054
47054
  function getVersion() {
47055
- if ("v1.0.91-2601040531") {
47056
- return "v1.0.91-2601040531";
47055
+ if ("v1.0.91-2601040611") {
47056
+ return "v1.0.91-2601040611";
47057
47057
  }
47058
47058
  if (process.env.XCSH_VERSION) {
47059
47059
  return process.env.XCSH_VERSION;
@@ -48196,6 +48196,107 @@ function formatKeyValueBox(data, title, noColor = false) {
48196
48196
  );
48197
48197
  return lines.join("\n");
48198
48198
  }
48199
+ var EXCLUDED_FIELDS = /* @__PURE__ */ new Set([
48200
+ "system_metadata",
48201
+ "get_spec",
48202
+ "status",
48203
+ "referring_objects",
48204
+ "disabled_referred_objects",
48205
+ "object_type"
48206
+ ]);
48207
+ var PRIORITY_FIELDS = [
48208
+ "name",
48209
+ "namespace",
48210
+ "labels",
48211
+ "description",
48212
+ "domains"
48213
+ ];
48214
+ function formatDetailValue(value) {
48215
+ if (value === null || value === void 0) {
48216
+ return "";
48217
+ }
48218
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
48219
+ return String(value);
48220
+ }
48221
+ if (Array.isArray(value)) {
48222
+ const isSimple = value.every(
48223
+ (v) => typeof v === "string" || typeof v === "number"
48224
+ );
48225
+ if (isSimple && value.length <= 5) {
48226
+ return `[${value.join(", ")}]`;
48227
+ }
48228
+ return JSON.stringify(value);
48229
+ }
48230
+ if (typeof value === "object") {
48231
+ const obj = value;
48232
+ const keys = Object.keys(obj);
48233
+ if (keys.length <= 3) {
48234
+ const allSimple = keys.every((k) => {
48235
+ const v = obj[k];
48236
+ return typeof v === "string" || typeof v === "number" || typeof v === "boolean";
48237
+ });
48238
+ if (allSimple) {
48239
+ return keys.map((k) => `${k}: ${obj[k]}`).join(", ");
48240
+ }
48241
+ }
48242
+ return JSON.stringify(value);
48243
+ }
48244
+ return String(value);
48245
+ }
48246
+ function flattenResourceData(data) {
48247
+ const result = [];
48248
+ const seen = /* @__PURE__ */ new Set();
48249
+ const addField = (key, value) => {
48250
+ if (EXCLUDED_FIELDS.has(key) || seen.has(key)) return;
48251
+ if (value === null || value === void 0) return;
48252
+ seen.add(key);
48253
+ const formatted = formatDetailValue(value);
48254
+ if (formatted) {
48255
+ result.push({ key, value: formatted });
48256
+ }
48257
+ };
48258
+ const metadata = data.metadata;
48259
+ if (metadata && typeof metadata === "object") {
48260
+ for (const key of PRIORITY_FIELDS) {
48261
+ if (key in metadata) {
48262
+ addField(key, metadata[key]);
48263
+ }
48264
+ }
48265
+ for (const [key, value] of Object.entries(metadata)) {
48266
+ addField(key, value);
48267
+ }
48268
+ }
48269
+ const spec = data.spec;
48270
+ if (spec && typeof spec === "object") {
48271
+ for (const [key, value] of Object.entries(spec)) {
48272
+ addField(key, value);
48273
+ }
48274
+ }
48275
+ for (const key of PRIORITY_FIELDS) {
48276
+ if (key in data && key !== "metadata" && key !== "spec") {
48277
+ addField(key, data[key]);
48278
+ }
48279
+ }
48280
+ for (const [key, value] of Object.entries(data)) {
48281
+ if (key !== "metadata" && key !== "spec") {
48282
+ addField(key, value);
48283
+ }
48284
+ }
48285
+ return result;
48286
+ }
48287
+ function formatResourceDetails(data, noColor = false) {
48288
+ const fields = flattenResourceData(data);
48289
+ if (fields.length === 0) {
48290
+ return "";
48291
+ }
48292
+ const metadata = data.metadata;
48293
+ const name = metadata?.name || data.name || "Resource Details";
48294
+ const boxData = fields.map((f) => ({
48295
+ label: f.key,
48296
+ value: f.value
48297
+ }));
48298
+ return formatKeyValueBox(boxData, name, noColor);
48299
+ }
48199
48300
 
48200
48301
  // src/output/formatter.ts
48201
48302
  function formatOutput(data, format = "table", noColor = false) {
@@ -48244,7 +48345,17 @@ function extractItems2(data) {
48244
48345
  }
48245
48346
  return [];
48246
48347
  }
48348
+ function isSingleResourceResponse(data) {
48349
+ if (!data || typeof data !== "object") return false;
48350
+ if ("items" in data) return false;
48351
+ if (Array.isArray(data)) return false;
48352
+ const obj = data;
48353
+ return "metadata" in obj || "spec" in obj || "name" in obj && "namespace" in obj || "object_type" in obj;
48354
+ }
48247
48355
  function formatTable(data, noColor = false) {
48356
+ if (isSingleResourceResponse(data)) {
48357
+ return formatResourceDetails(data, noColor);
48358
+ }
48248
48359
  return formatResourceTable(data, noColor);
48249
48360
  }
48250
48361
  function formatTSV(data) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-xcsh",
3
- "version": "1.0.91-2601040531",
3
+ "version": "1.0.91-2601040611",
4
4
  "description": "F5 Distributed Cloud Shell - Interactive CLI for F5 XC",
5
5
  "type": "module",
6
6
  "bin": {