{"version":3,"file":"impl-BxQE7dL92.mjs","names":[],"sources":["../src/commands/policy/versions/impl.ts"],"sourcesContent":["import colors from 'colors';\n\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { logger } from '../../../logger.js';\nimport { EMPTY_CELL } from '../constants.js';\nimport {\n  buildPolicyEngineClient,\n  policyEngineRequest,\n  printResult,\n  renderTable,\n  resolveBundleIdByName,\n  setPolicyEngineCliDebug,\n} from '../helpers/index.js';\nimport type { PolicyBundleVersionListResponse } from '../types.js';\n\n/** CLI flags for `transcend policy versions`. */\nexport interface VersionsCommandFlags {\n  /** Tenant-unique bundle name */\n  'bundle-name': string;\n  /** Transcend API key */\n  auth: string;\n  /** Transcend API URL */\n  'transcend-url': string;\n  /** Page size */\n  limit: number;\n  /** Cursor from a previous page's pageInfo.endCursor */\n  after?: string;\n  /** Print raw JSON response */\n  json: boolean;\n  /** Include technical error details when a command fails */\n  debug?: boolean;\n}\n\n/**\n * List versions for a policy bundle.\n *\n * @param this - CLI context\n * @param flags - Command flags\n */\nexport async function versions(\n  this: LocalContext,\n  {\n    'bundle-name': bundleName,\n    auth,\n    'transcend-url': transcendUrl,\n    limit,\n    after,\n    json,\n    debug = false,\n  }: VersionsCommandFlags,\n): Promise<void> {\n  doneInputValidation(this.process.exit);\n  setPolicyEngineCliDebug(debug);\n\n  const client = buildPolicyEngineClient(transcendUrl, auth);\n  const bundleId = await resolveBundleIdByName(client, bundleName);\n\n  if (!bundleId) {\n    throw new Error(`Policy bundle \"${bundleName}\" was not found for this organization.`);\n  }\n\n  logger.info(colors.green(`Listing versions for bundle \"${bundleName}\"...`));\n\n  const searchParams: Record<string, string | number> = { limit };\n  if (after) {\n    searchParams.after = after;\n  }\n\n  const body = await policyEngineRequest(\n    client\n      .get(`v1/policy-engine/policy-bundles/${bundleId}/versions`, {\n        searchParams,\n      })\n      .json<PolicyBundleVersionListResponse>(),\n  );\n\n  printResult(this.process.stdout, {\n    json,\n    data: body,\n    renderTable: () => {\n      if (body.nodes.length === 0) {\n        // Distinguish \"this page is empty because you paginated past the end\"\n        // from \"the bundle genuinely has no versions\" — the latter is already\n        // surfaced during version resolution upstream.\n        return after\n          ? `No more versions for bundle \"${bundleName}\" (end of results).`\n          : `No versions found for bundle \"${bundleName}\".`;\n      }\n\n      const rows = body.nodes.map((version) => [\n        version.id,\n        version.version,\n        version.createdAt,\n        version.activatedAt ?? EMPTY_CELL,\n        version.deactivatedAt ?? EMPTY_CELL,\n      ]);\n\n      let table = renderTable(['id', 'version', 'createdAt', 'activatedAt', 'deactivatedAt'], rows);\n      if (body.pageInfo.endCursor) {\n        table += `\\n\\nafter: ${body.pageInfo.endCursor}`;\n      }\n      return table;\n    },\n  });\n}\n"],"mappings":"iVAwCA,eAAsB,EAEpB,CACE,cAAe,EACf,OACA,gBAAiB,EACjB,QACA,QACA,OACA,QAAQ,IAEK,CACf,EAAoB,KAAK,QAAQ,KAAK,CACtC,EAAwB,EAAM,CAE9B,IAAM,EAAS,EAAwB,EAAc,EAAK,CACpD,EAAW,MAAM,EAAsB,EAAQ,EAAW,CAEhE,GAAI,CAAC,EACH,MAAU,MAAM,kBAAkB,EAAW,wCAAwC,CAGvF,EAAO,KAAK,EAAO,MAAM,gCAAgC,EAAW,MAAM,CAAC,CAE3E,IAAM,EAAgD,CAAE,QAAO,CAC3D,IACF,EAAa,MAAQ,GAGvB,IAAM,EAAO,MAAM,EACjB,EACG,IAAI,mCAAmC,EAAS,WAAY,CAC3D,eACD,CAAC,CACD,MAAuC,CAC3C,CAED,EAAY,KAAK,QAAQ,OAAQ,CAC/B,OACA,KAAM,EACN,gBAAmB,CACjB,GAAI,EAAK,MAAM,SAAW,EAIxB,OAAO,EACH,gCAAgC,EAAW,qBAC3C,iCAAiC,EAAW,IAWlD,IAAI,EAAQ,EAAY,CAAC,KAAM,UAAW,YAAa,cAAe,gBAAgB,CARzE,EAAK,MAAM,IAAK,GAAY,CACvC,EAAQ,GACR,EAAQ,QACR,EAAQ,UACR,EAAQ,aAAA,IACR,EAAQ,eAAA,IACT,CAE2F,CAAC,CAI7F,OAHI,EAAK,SAAS,YAChB,GAAS,cAAc,EAAK,SAAS,aAEhC,GAEV,CAAC"}