{"version":3,"sources":["../src/cli/commands/virtual-keys/update.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport type * as NodeFs from \"node:fs\";\nimport { VirtualKeysApiService } from \"@/client-sdk/services/virtual-keys/virtual-keys-api.service\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { failSpinner } from \"../../utils/spinnerError\";\nimport { formatScope, parseScopeArg } from \"./_shared\";\n\nexport interface UpdateVirtualKeyOptions {\n  name?: string;\n  description?: string;\n  clearDescription?: boolean;\n  scope?: string[];\n  routingPolicy?: string;\n  clearRoutingPolicy?: boolean;\n  configJson?: string;\n  configFile?: string;\n  format?: string;\n}\n\nfunction parseConfig(options: UpdateVirtualKeyOptions): Record<string, unknown> | undefined {\n  if (options.configJson) {\n    try {\n      return JSON.parse(options.configJson) as Record<string, unknown>;\n    } catch (err) {\n      throw new Error(`--config-json is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);\n    }\n  }\n  if (options.configFile) {\n    // Lazy-require so the import stays local to the --config-file path\n    // (the CLI is an entrypoint shared with scripts that may not need fs).\n    // eslint-disable-next-line @typescript-eslint/no-require-imports\n    const { readFileSync } = require(\"node:fs\") as typeof NodeFs;\n    const raw = readFileSync(options.configFile, \"utf8\");\n    try {\n      return JSON.parse(raw) as Record<string, unknown>;\n    } catch (err) {\n      throw new Error(`--config-file is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);\n    }\n  }\n  return undefined;\n}\n\nexport const updateVirtualKeyCommand = async (\n  id: string,\n  options: UpdateVirtualKeyOptions,\n): Promise<void> => {\n  checkApiKey();\n\n  let config: Record<string, unknown> | undefined;\n  try {\n    config = parseConfig(options);\n  } catch (err) {\n    console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));\n    process.exit(1);\n  }\n\n  const noFieldsProvided =\n    options.name === undefined &&\n    options.description === undefined &&\n    !options.clearDescription &&\n    (options.scope === undefined || options.scope.length === 0) &&\n    options.routingPolicy === undefined &&\n    !options.clearRoutingPolicy &&\n    config === undefined;\n\n  if (noFieldsProvided) {\n    console.error(\n      chalk.red(\n        \"Error: nothing to update. Provide at least one of --name, --description, --clear-description, --scope, --routing-policy, --clear-routing-policy, --config-json, --config-file.\",\n      ),\n    );\n    process.exit(1);\n  }\n\n  let scopes;\n  if (options.scope && options.scope.length > 0) {\n    try {\n      scopes = options.scope.map(parseScopeArg);\n    } catch (err) {\n      console.error(chalk.red(`Error: ${(err as Error).message}`));\n      process.exit(1);\n    }\n  }\n\n  const service = new VirtualKeysApiService();\n  const spinner = ora(`Updating virtual key \"${id}\"...`).start();\n\n  try {\n    const updated = await service.update(id, {\n      name: options.name,\n      description: options.clearDescription ? null : options.description,\n      scopes,\n      routing_policy_id: options.clearRoutingPolicy ? null : options.routingPolicy,\n      config,\n    });\n\n    spinner.succeed(`Updated virtual key \"${chalk.cyan(updated.name)}\"`);\n\n    if (options.format === \"json\") {\n      console.log(JSON.stringify(updated, null, 2));\n      return;\n    }\n\n    console.log();\n    console.log(`${chalk.bold(\"ID:\")}           ${updated.id}`);\n    console.log(`${chalk.bold(\"Name:\")}         ${chalk.cyan(updated.name)}`);\n    if (updated.description) console.log(`${chalk.bold(\"Description:\")}  ${updated.description}`);\n    console.log(`${chalk.bold(\"Scopes:\")}       ${updated.scopes.map(formatScope).join(\", \") || chalk.gray(\"—\")}`);\n    console.log(`${chalk.bold(\"Routing pol.:\")} ${updated.routing_policy_id ?? chalk.gray(\"(default)\")}`);\n    console.log(`${chalk.bold(\"Updated:\")}      ${new Date(updated.updated_at).toLocaleString()}`);\n    console.log();\n    console.log(chalk.gray(\"Config after update:\"));\n    console.log(JSON.stringify(updated.config, null, 2));\n    console.log();\n  } catch (error) {\n    failSpinner({ spinner, error, action: \"update virtual key\" });\n    process.exit(1);\n  }\n};\n"],"mappings":"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","names":[]}