{"version":3,"sources":["../src/cli/commands/dataset/upload.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport { basename } from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { createDatasetService } from \"./service-factory\";\nimport { handleDatasetCommandError } from \"./error-handler\";\n\n/**\n * Uploads a file to a dataset with a configurable strategy for handling existing datasets.\n *\n * Usage:\n * - Append (default):  `langwatch dataset upload <slug> <file>`\n * - Replace:           `langwatch dataset upload <slug> <file> --if-exists replace`\n * - Error if exists:   `langwatch dataset upload <slug> <file> --if-exists error`\n */\nexport const uploadCommand = async (\n  slugOrId: string,\n  filePath: string,\n  options?: { ifExists?: string },\n): Promise<void> => {\n  checkApiKey();\n\n  if (!filePath) {\n    console.error(chalk.red(\"Error: File path is required\"));\n    process.exit(1);\n  }\n\n  const ifExists = (options?.ifExists ?? \"append\") as \"append\" | \"replace\" | \"error\";\n  const validStrategies = [\"append\", \"replace\", \"error\"];\n  if (!validStrategies.includes(ifExists)) {\n    console.error(\n      chalk.red(`Error: --if-exists must be one of: ${validStrategies.join(\", \")}`),\n    );\n    process.exit(1);\n  }\n\n  let content: string;\n  try {\n    content = readFileSync(filePath, \"utf-8\");\n  } catch {\n    console.error(chalk.red(`Error: Cannot read file \"${filePath}\"`));\n    process.exit(1);\n  }\n\n  const filename = basename(filePath);\n  const file = new File([content], filename);\n\n  const service = createDatasetService();\n\n  const strategyLabel = ifExists === \"append\"\n    ? \"Uploading\"\n    : ifExists === \"replace\"\n      ? \"Replacing records and uploading\"\n      : \"Uploading (error if exists)\";\n\n  const spinner = ora(\n    `${strategyLabel} ${filename} to dataset \"${slugOrId}\"...`,\n  ).start();\n\n  try {\n    const result = await service.uploadWithStrategy(slugOrId, file, ifExists);\n\n    const recordCount = result.recordsCreated ?? result.records?.length ?? \"unknown\";\n\n    if (result.dataset) {\n      spinner.succeed(\n        `Dataset \"${chalk.cyan(result.dataset.name)}\" ready with ${recordCount} record${recordCount !== 1 ? \"s\" : \"\"}`,\n      );\n      console.log();\n      console.log(`  ${chalk.bold(\"Slug:\")}    ${result.dataset.slug}`);\n      console.log(`  ${chalk.bold(\"ID:\")}      ${result.dataset.id}`);\n      if (result.dataset.platformUrl) {\n        console.log(`  ${chalk.bold(\"View:\")}    ${chalk.underline(result.dataset.platformUrl)}`);\n      }\n    } else {\n      spinner.succeed(\n        `Uploaded ${filename} to \"${chalk.cyan(slugOrId)}\" (${recordCount} record${recordCount !== 1 ? \"s\" : \"\"})`,\n      );\n    }\n  } catch (error) {\n    handleDatasetCommandError({ spinner, error, context: \"upload file\" });\n  }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AACzB,OAAO,WAAW;AAClB,OAAO,SAAS;AAaT,IAAM,gBAAgB,OAC3B,UACA,UACA,YACkB;AApBpB;AAqBE,cAAY;AAEZ,MAAI,CAAC,UAAU;AACb,YAAQ,MAAM,MAAM,IAAI,8BAA8B,CAAC;AACvD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,YAAY,wCAAS,aAAT,YAAqB;AACvC,QAAM,kBAAkB,CAAC,UAAU,WAAW,OAAO;AACrD,MAAI,CAAC,gBAAgB,SAAS,QAAQ,GAAG;AACvC,YAAQ;AAAA,MACN,MAAM,IAAI,sCAAsC,gBAAgB,KAAK,IAAI,CAAC,EAAE;AAAA,IAC9E;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI;AACJ,MAAI;AACF,cAAU,aAAa,UAAU,OAAO;AAAA,EAC1C,SAAQ;AACN,YAAQ,MAAM,MAAM,IAAI,4BAA4B,QAAQ,GAAG,CAAC;AAChE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,WAAW,SAAS,QAAQ;AAClC,QAAM,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,QAAQ;AAEzC,QAAM,UAAU,qBAAqB;AAErC,QAAM,gBAAgB,aAAa,WAC/B,cACA,aAAa,YACX,oCACA;AAEN,QAAM,UAAU;AAAA,IACd,GAAG,aAAa,IAAI,QAAQ,gBAAgB,QAAQ;AAAA,EACtD,EAAE,MAAM;AAER,MAAI;AACF,UAAM,SAAS,MAAM,QAAQ,mBAAmB,UAAU,MAAM,QAAQ;AAExE,UAAM,eAAc,kBAAO,mBAAP,aAAyB,YAAO,YAAP,mBAAgB,WAAzC,YAAmD;AAEvE,QAAI,OAAO,SAAS;AAClB,cAAQ;AAAA,QACN,YAAY,MAAM,KAAK,OAAO,QAAQ,IAAI,CAAC,gBAAgB,WAAW,UAAU,gBAAgB,IAAI,MAAM,EAAE;AAAA,MAC9G;AACA,cAAQ,IAAI;AACZ,cAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,OAAO,OAAO,QAAQ,IAAI,EAAE;AAChE,cAAQ,IAAI,KAAK,MAAM,KAAK,KAAK,CAAC,SAAS,OAAO,QAAQ,EAAE,EAAE;AAC9D,UAAI,OAAO,QAAQ,aAAa;AAC9B,gBAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,OAAO,MAAM,UAAU,OAAO,QAAQ,WAAW,CAAC,EAAE;AAAA,MAC1F;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,QACN,YAAY,QAAQ,QAAQ,MAAM,KAAK,QAAQ,CAAC,MAAM,WAAW,UAAU,gBAAgB,IAAI,MAAM,EAAE;AAAA,MACzG;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,8BAA0B,EAAE,SAAS,OAAO,SAAS,cAAc,CAAC;AAAA,EACtE;AACF;","names":[]}