{"version":3,"sources":["../src/polling.ts"],"sourcesContent":["import { TaskFailedError, TaskTimeoutError } from './errors';\nimport type { PollingOptions, TaskResponse, TaskStatus } from './types';\nimport { TIMEOUTS } from './constants';\n\nconst SUCCESS_STATUSES = new Set(['completed']);\nconst FAILED_STATUSES = new Set(['failed']);\nconst PENDING_STATUSES = new Set(['pending', 'processing']);\n\nfunction normalizeStatus(\n  status: TaskStatus | string\n): 'completed' | 'failed' | 'processing' {\n  const value = String(status).toLowerCase();\n  if (SUCCESS_STATUSES.has(value)) {\n    return 'completed';\n  }\n  if (FAILED_STATUSES.has(value)) {\n    return 'failed';\n  }\n  if (PENDING_STATUSES.has(value)) {\n    return 'processing';\n  }\n  return 'processing';\n}\n\nfunction sleep(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function pollUntilComplete<T extends TaskResponse>(\n  fetcher: () => Promise<T>,\n  options: PollingOptions = {}\n): Promise<T> {\n  const pollIntervalMs = options.pollIntervalMs ?? TIMEOUTS.POLLING_INTERVAL;\n  const maxWaitMs = options.maxWaitMs ?? TIMEOUTS.POLLING_MAX_WAIT;\n  const start = Date.now();\n\n  while (true) {\n    const response = await fetcher();\n    const normalizedStatus = normalizeStatus(response.status);\n\n    if (normalizedStatus === 'completed') {\n      return response;\n    }\n\n    if (normalizedStatus === 'failed') {\n      throw new TaskFailedError(response.error || 'Task failed', {\n        details: response,\n      });\n    }\n\n    if (Date.now() - start >= maxWaitMs) {\n      throw new TaskTimeoutError('Task polling timed out', {\n        details: response,\n      });\n    }\n\n    await sleep(pollIntervalMs);\n  }\n}\n"],"mappings":";;;;;;;AAIA,IAAM,mBAAmB,oBAAI,IAAI,CAAC,WAAW,CAAC;AAC9C,IAAM,kBAAkB,oBAAI,IAAI,CAAC,QAAQ,CAAC;AAC1C,IAAM,mBAAmB,oBAAI,IAAI,CAAC,WAAW,YAAY,CAAC;AAE1D,SAAS,gBACP,QACuC;AACvC,QAAM,QAAQ,OAAO,MAAM,EAAE,YAAY;AACzC,MAAI,iBAAiB,IAAI,KAAK,GAAG;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,IAAI,KAAK,GAAG;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,IAAI,KAAK,GAAG;AAC/B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,MAAM,IAA2B;AACxC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;AAEA,eAAsB,kBACpB,SACA,UAA0B,CAAC,GACf;AACZ,QAAM,iBAAiB,QAAQ,kBAAkB,SAAS;AAC1D,QAAM,YAAY,QAAQ,aAAa,SAAS;AAChD,QAAM,QAAQ,KAAK,IAAI;AAEvB,SAAO,MAAM;AACX,UAAM,WAAW,MAAM,QAAQ;AAC/B,UAAM,mBAAmB,gBAAgB,SAAS,MAAM;AAExD,QAAI,qBAAqB,aAAa;AACpC,aAAO;AAAA,IACT;AAEA,QAAI,qBAAqB,UAAU;AACjC,YAAM,IAAI,gBAAgB,SAAS,SAAS,eAAe;AAAA,QACzD,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,KAAK,IAAI,IAAI,SAAS,WAAW;AACnC,YAAM,IAAI,iBAAiB,0BAA0B;AAAA,QACnD,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,MAAM,cAAc;AAAA,EAC5B;AACF;","names":[]}