{"version":3,"file":"client.cjs","names":["url: URL","SDK_VERSION","defaultOptions: InternalGladiaClientOptions","getEnv","deepMergeObjects","PreRecordedV2Client","LiveV2Client"],"sources":["../src/client.ts"],"sourcesContent":["import { deepMergeObjects, getEnv } from './helpers.js'\nimport type { InternalGladiaClientOptions } from './internal_types.js'\nimport type { Headers } from './network/types.js'\nimport type { GladiaClientOptions } from './types.js'\nimport { LiveV2Client } from './v2/live/index.js'\nimport { PreRecordedV2Client } from './v2/prerecorded/index.js'\nimport { SDK_VERSION } from './version.js'\n\nfunction normalizeGladiaHeaders(headers: Headers | [string, string][]): Headers {\n  const entries = Array.isArray(headers) ? headers : Object.entries(headers)\n  return Object.fromEntries(\n    entries.map(([key, value]) => {\n      const lcKey = key.toLowerCase()\n      return [lcKey.startsWith('x-gladia-') ? lcKey : key, value]\n    })\n  )\n}\n\nfunction assertValidOptions(options: InternalGladiaClientOptions) {\n  let url: URL\n  try {\n    url = new URL(options.apiUrl)\n  } catch {\n    throw new Error(`Invalid url: \"${options.apiUrl}\".`)\n  }\n\n  if (!options?.apiKey && url.hostname.endsWith('.gladia.io')) {\n    throw new Error(`You have to set your \"apiKey\" or define a proxy \"apiUrl\".`)\n  }\n\n  if (!['https:', 'http:', 'wss:', 'ws:'].includes(url.protocol)) {\n    throw new Error(\n      `Only HTTP and WebSocket protocols are supported for apiUrl (received: ${url.protocol}).`\n    )\n  }\n}\n\nconst defaultHttpDelay = (attemptCount: number) =>\n  Math.min(0.3 * 2 ** (attemptCount - 1) * 1_000, 10_000)\n\nconst defaultWsDelay = (attemptCount: number) =>\n  Math.min(0.3 * 2 ** (attemptCount - 1) * 1_000, 2_000)\n\nconst gladiaVersion = `SdkJavascript/${SDK_VERSION}`\n\nconst defaultOptions: InternalGladiaClientOptions = {\n  apiKey: getEnv('GLADIA_API_KEY'),\n  apiUrl: getEnv('GLADIA_API_URL', 'https://api.gladia.io'),\n  region: getEnv<Required<GladiaClientOptions>['region']>('GLADIA_REGION'),\n  httpHeaders: {\n    'x-gladia-version': gladiaVersion,\n  },\n  httpRetry: {\n    maxAttempts: 2,\n    statusCodes: [408, 413, 429, [500, 599]],\n    delay: defaultHttpDelay,\n  },\n  httpTimeout: 10_000,\n  wsRetry: {\n    maxAttemptsPerConnection: 5,\n    closeCodes: [\n      [1002, 4399],\n      [4500, 9999],\n    ],\n    delay: defaultWsDelay,\n    maxConnections: 0,\n  },\n  wsTimeout: 10_000,\n  prerecordedTimeouts: {\n    transcribe: 7_200_000,\n    poll: 7_200_000,\n    createAndPoll: 7_200_000,\n    uploadFile: 300_000,\n    getFile: 300_000,\n    create: 30_000,\n    delete: 30_000,\n    get: 10_000,\n  },\n}\n\n/**\n * Entrypoint for Gladia SDK.\n */\nexport class GladiaClient {\n  private options: InternalGladiaClientOptions\n\n  constructor(options?: GladiaClientOptions) {\n    if (options?.httpHeaders) {\n      options.httpHeaders = normalizeGladiaHeaders(options.httpHeaders)\n    }\n    this.options = deepMergeObjects(defaultOptions, options)\n  }\n\n  preRecordedV2(options?: GladiaClientOptions): PreRecordedV2Client {\n    if (options?.httpHeaders) {\n      options.httpHeaders = normalizeGladiaHeaders(options.httpHeaders)\n    }\n\n    const mergedOptions = deepMergeObjects(this.options, options)\n    if (mergedOptions.apiKey) {\n      mergedOptions.httpHeaders = deepMergeObjects(mergedOptions.httpHeaders, {\n        'x-gladia-key': mergedOptions.apiKey,\n      })\n    }\n    if (mergedOptions.httpHeaders['x-gladia-version'] !== gladiaVersion) {\n      mergedOptions.httpHeaders['x-gladia-version'] =\n        `${mergedOptions.httpHeaders['x-gladia-version'].trim()} ${gladiaVersion}`.trim()\n    }\n    assertValidOptions(mergedOptions)\n    return new PreRecordedV2Client(mergedOptions)\n  }\n  preRecorded: (options?: GladiaClientOptions) => PreRecordedV2Client = this.preRecordedV2\n\n  liveV2(options?: GladiaClientOptions): LiveV2Client {\n    if (options?.httpHeaders) {\n      options.httpHeaders = normalizeGladiaHeaders(options.httpHeaders)\n    }\n\n    const mergedOptions = deepMergeObjects(this.options, options)\n    if (mergedOptions.apiKey) {\n      mergedOptions.httpHeaders = deepMergeObjects(mergedOptions.httpHeaders, {\n        'x-gladia-key': mergedOptions.apiKey,\n      })\n    }\n    if (mergedOptions.httpHeaders['x-gladia-version'] !== gladiaVersion) {\n      mergedOptions.httpHeaders['x-gladia-version'] =\n        `${mergedOptions.httpHeaders['x-gladia-version'].trim()} ${gladiaVersion}`.trim()\n    }\n    assertValidOptions(mergedOptions)\n    return new LiveV2Client(mergedOptions)\n  }\n  live: (options?: GladiaClientOptions) => LiveV2Client = this.liveV2\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,uBAAuB,SAAgD;CAC9E,MAAM,UAAU,MAAM,QAAQ,QAAQ,GAAG,UAAU,OAAO,QAAQ,QAAQ;AAC1E,QAAO,OAAO,YACZ,QAAQ,KAAK,CAAC,KAAK,WAAW;EAC5B,MAAM,QAAQ,IAAI,aAAa;AAC/B,SAAO,CAAC,MAAM,WAAW,YAAY,GAAG,QAAQ,KAAK,MAAM;GAC3D,CACH;;AAGH,SAAS,mBAAmB,SAAsC;CAChE,IAAIA;AACJ,KAAI;AACF,QAAM,IAAI,IAAI,QAAQ,OAAO;SACvB;AACN,QAAM,IAAI,MAAM,iBAAiB,QAAQ,OAAO,IAAI;;AAGtD,KAAI,CAAC,SAAS,UAAU,IAAI,SAAS,SAAS,aAAa,CACzD,OAAM,IAAI,MAAM,4DAA4D;AAG9E,KAAI,CAAC;EAAC;EAAU;EAAS;EAAQ;EAAM,CAAC,SAAS,IAAI,SAAS,CAC5D,OAAM,IAAI,MACR,yEAAyE,IAAI,SAAS,IACvF;;AAIL,MAAM,oBAAoB,iBACxB,KAAK,IAAI,KAAM,MAAM,eAAe,KAAK,KAAO,IAAO;AAEzD,MAAM,kBAAkB,iBACtB,KAAK,IAAI,KAAM,MAAM,eAAe,KAAK,KAAO,IAAM;AAExD,MAAM,gBAAgB,iBAAiBC;AAEvC,MAAMC,iBAA8C;CAClD,QAAQC,uBAAO,iBAAiB;CAChC,QAAQA,uBAAO,kBAAkB,wBAAwB;CACzD,QAAQA,uBAAgD,gBAAgB;CACxE,aAAa,EACX,oBAAoB,eACrB;CACD,WAAW;EACT,aAAa;EACb,aAAa;GAAC;GAAK;GAAK;GAAK,CAAC,KAAK,IAAI;GAAC;EACxC,OAAO;EACR;CACD,aAAa;CACb,SAAS;EACP,0BAA0B;EAC1B,YAAY,CACV,CAAC,MAAM,KAAK,EACZ,CAAC,MAAM,KAAK,CACb;EACD,OAAO;EACP,gBAAgB;EACjB;CACD,WAAW;CACX,qBAAqB;EACnB,YAAY;EACZ,MAAM;EACN,eAAe;EACf,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,QAAQ;EACR,KAAK;EACN;CACF;;;;AAKD,IAAa,eAAb,MAA0B;CACxB,AAAQ;CAER,YAAY,SAA+B;AACzC,MAAI,SAAS,YACX,SAAQ,cAAc,uBAAuB,QAAQ,YAAY;AAEnE,OAAK,UAAUC,iCAAiB,gBAAgB,QAAQ;;CAG1D,cAAc,SAAoD;AAChE,MAAI,SAAS,YACX,SAAQ,cAAc,uBAAuB,QAAQ,YAAY;EAGnE,MAAM,gBAAgBA,iCAAiB,KAAK,SAAS,QAAQ;AAC7D,MAAI,cAAc,OAChB,eAAc,cAAcA,iCAAiB,cAAc,aAAa,EACtE,gBAAgB,cAAc,QAC/B,CAAC;AAEJ,MAAI,cAAc,YAAY,wBAAwB,cACpD,eAAc,YAAY,sBACxB,GAAG,cAAc,YAAY,oBAAoB,MAAM,CAAC,GAAG,gBAAgB,MAAM;AAErF,qBAAmB,cAAc;AACjC,SAAO,IAAIC,qCAAoB,cAAc;;CAE/C,cAAsE,KAAK;CAE3E,OAAO,SAA6C;AAClD,MAAI,SAAS,YACX,SAAQ,cAAc,uBAAuB,QAAQ,YAAY;EAGnE,MAAM,gBAAgBD,iCAAiB,KAAK,SAAS,QAAQ;AAC7D,MAAI,cAAc,OAChB,eAAc,cAAcA,iCAAiB,cAAc,aAAa,EACtE,gBAAgB,cAAc,QAC/B,CAAC;AAEJ,MAAI,cAAc,YAAY,wBAAwB,cACpD,eAAc,YAAY,sBACxB,GAAG,cAAc,YAAY,oBAAoB,MAAM,CAAC,GAAG,gBAAgB,MAAM;AAErF,qBAAmB,cAAc;AACjC,SAAO,IAAIE,4BAAa,cAAc;;CAExC,OAAwD,KAAK"}