diff --git a/src/cli.ts b/src/cli.ts index 8ef0344..85cb439 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -18,9 +18,6 @@ import { parseHeaderSpec, renderOutput, } from "@slawek/sk-tools"; -import { - omitPermissionGuidColumns, -} from "./cli/permission-utils.ts"; type CliValues = { help?: boolean; @@ -89,6 +86,16 @@ function usageCommand(command: string): string { } } +function omitRecords(record: Record, names: Set): Record { + return Object.fromEntries( + Object.entries(record).filter(([key]) => !names.has(key)), + ); +} + +function isRecord(value: unknown): value is Record { + return value !== null && typeof value === "object" && !Array.isArray(value); +} + async function main(): Promise { const argv = process.argv.slice(2); const command = argv[0]; @@ -138,9 +145,11 @@ async function main(): Promise { const outputFormat = normalizeOutputFormat(typedValues.output); const result = await runCommand(command, typedValues); const filtered = outputFiltered(result, typedValues.query); - const output = command === "list-app-permissions" && typedValues.short - ? omitPermissionGuidColumns(filtered) - : filtered; + let output: unknown = filtered; + if (command === "list-app-permissions" && typedValues.short && Array.isArray(filtered) && filtered.every(isRecord)) { + const names = new Set(["resourceAppId", "permissionId"]); + output = filtered.map((item) => omitRecords(item, names)); + } const headerSpec = command === "rest" ? parseHeaderSpec(undefined) : parseHeaderSpec(typedValues.header); diff --git a/src/cli/permission-utils.ts b/src/cli/permission-utils.ts deleted file mode 100644 index 8087249..0000000 --- a/src/cli/permission-utils.ts +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: MIT - -export function omitPermissionGuidColumns(value: unknown): unknown { - if (Array.isArray(value)) { - return value.map((item) => omitPermissionGuidColumns(item)); - } - if (!value || typeof value !== "object") { - return value; - } - const { resourceAppId, permissionId, ...rest } = value as Record; - void resourceAppId; - void permissionId; - return rest; -}