{"version":3,"sources":["../src/cli/commands/dataset/records-list.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { formatTable } from \"../../utils/formatting\";\nimport { createDatasetService } from \"./service-factory\";\nimport { handleDatasetCommandError } from \"./error-handler\";\n\n/**\n * Truncates a string to a maximum length, adding ellipsis if truncated.\n */\nconst truncate = (value: string, maxLength: number): string => {\n  if (value.length <= maxLength) return value;\n  return value.substring(0, maxLength - 3) + \"...\";\n};\n\n/**\n * Lists records in a dataset with pagination.\n */\nexport const recordsListCommand = async (\n  slugOrId: string,\n  options: { page?: string; limit?: string; format?: string },\n): Promise<void> => {\n  checkApiKey();\n\n  const page = options.page ? parseInt(options.page, 10) : 1;\n  const limit = options.limit ? parseInt(options.limit, 10) : 20;\n\n  if (Number.isNaN(page) || page < 1) {\n    console.error(chalk.red(\"Error: --page must be a positive integer.\"));\n    process.exit(1);\n  }\n  if (Number.isNaN(limit) || limit < 1) {\n    console.error(chalk.red(\"Error: --limit must be a positive integer.\"));\n    process.exit(1);\n  }\n\n  const service = createDatasetService();\n  const spinner = ora(`Fetching records from \"${slugOrId}\"...`).start();\n\n  try {\n    const result = await service.listRecords(slugOrId, { page, limit });\n    const { data: records, pagination } = result;\n\n    spinner.succeed(\n      `Found ${pagination.total} record${pagination.total !== 1 ? \"s\" : \"\"} in \"${slugOrId}\"`,\n    );\n\n    if (options.format === \"json\") {\n      console.log(JSON.stringify({ data: records, pagination }, null, 2));\n      return;\n    }\n\n    if (records.length === 0) {\n      console.log();\n      console.log(chalk.gray(\"No records found.\"));\n      return;\n    }\n\n    // Collect all keys from record entries\n    const entryKeys = new Set<string>();\n    records.forEach((record) => {\n      Object.keys(record.entry).forEach((key) => entryKeys.add(key));\n    });\n    const headers = [\"ID\", ...Array.from(entryKeys)];\n\n    const tableData = records.map((record) => {\n      const row: Record<string, string> = { ID: record.id };\n      entryKeys.forEach((key) => {\n        const value = record.entry[key];\n        const str =\n          value === null || value === undefined\n            ? \"\"\n            : typeof value === \"string\"\n              ? value\n              : JSON.stringify(value);\n        row[key] = truncate(str, 40);\n      });\n      return row;\n    });\n\n    console.log();\n    formatTable({ data: tableData, headers, colorMap: { ID: chalk.gray } });\n\n    console.log();\n    console.log(\n      chalk.gray(\n        `Page ${pagination.page} of ${pagination.totalPages} (${pagination.total} total records)`,\n      ),\n    );\n  } catch (error) {\n    handleDatasetCommandError({ spinner, error, context: \"list records\" });\n  }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAShB,IAAM,WAAW,CAAC,OAAe,cAA8B;AAC7D,MAAI,MAAM,UAAU,UAAW,QAAO;AACtC,SAAO,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI;AAC7C;AAKO,IAAM,qBAAqB,OAChC,UACA,YACkB;AAClB,cAAY;AAEZ,QAAM,OAAO,QAAQ,OAAO,SAAS,QAAQ,MAAM,EAAE,IAAI;AACzD,QAAM,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,OAAO,EAAE,IAAI;AAE5D,MAAI,OAAO,MAAM,IAAI,KAAK,OAAO,GAAG;AAClC,YAAQ,MAAM,MAAM,IAAI,2CAA2C,CAAC;AACpE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,MAAI,OAAO,MAAM,KAAK,KAAK,QAAQ,GAAG;AACpC,YAAQ,MAAM,MAAM,IAAI,4CAA4C,CAAC;AACrE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,qBAAqB;AACrC,QAAM,UAAU,IAAI,0BAA0B,QAAQ,MAAM,EAAE,MAAM;AAEpE,MAAI;AACF,UAAM,SAAS,MAAM,QAAQ,YAAY,UAAU,EAAE,MAAM,MAAM,CAAC;AAClE,UAAM,EAAE,MAAM,SAAS,WAAW,IAAI;AAEtC,YAAQ;AAAA,MACN,SAAS,WAAW,KAAK,UAAU,WAAW,UAAU,IAAI,MAAM,EAAE,QAAQ,QAAQ;AAAA,IACtF;AAEA,QAAI,QAAQ,WAAW,QAAQ;AAC7B,cAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,WAAW,GAAG,MAAM,CAAC,CAAC;AAClE;AAAA,IACF;AAEA,QAAI,QAAQ,WAAW,GAAG;AACxB,cAAQ,IAAI;AACZ,cAAQ,IAAI,MAAM,KAAK,mBAAmB,CAAC;AAC3C;AAAA,IACF;AAGA,UAAM,YAAY,oBAAI,IAAY;AAClC,YAAQ,QAAQ,CAAC,WAAW;AAC1B,aAAO,KAAK,OAAO,KAAK,EAAE,QAAQ,CAAC,QAAQ,UAAU,IAAI,GAAG,CAAC;AAAA,IAC/D,CAAC;AACD,UAAM,UAAU,CAAC,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC;AAE/C,UAAM,YAAY,QAAQ,IAAI,CAAC,WAAW;AACxC,YAAM,MAA8B,EAAE,IAAI,OAAO,GAAG;AACpD,gBAAU,QAAQ,CAAC,QAAQ;AACzB,cAAM,QAAQ,OAAO,MAAM,GAAG;AAC9B,cAAM,MACJ,UAAU,QAAQ,UAAU,SACxB,KACA,OAAO,UAAU,WACf,QACA,KAAK,UAAU,KAAK;AAC5B,YAAI,GAAG,IAAI,SAAS,KAAK,EAAE;AAAA,MAC7B,CAAC;AACD,aAAO;AAAA,IACT,CAAC;AAED,YAAQ,IAAI;AACZ,gBAAY,EAAE,MAAM,WAAW,SAAS,UAAU,EAAE,IAAI,MAAM,KAAK,EAAE,CAAC;AAEtE,YAAQ,IAAI;AACZ,YAAQ;AAAA,MACN,MAAM;AAAA,QACJ,QAAQ,WAAW,IAAI,OAAO,WAAW,UAAU,KAAK,WAAW,KAAK;AAAA,MAC1E;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,8BAA0B,EAAE,SAAS,OAAO,SAAS,eAAe,CAAC;AAAA,EACvE;AACF;","names":[]}