{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["// See documentation at https://docs.speechmatics.com/introduction/authentication#temporary-key-configuration\nexport async function createSpeechmaticsJWT({\n  type,\n  apiKey,\n  clientRef,\n  ttl = 60,\n  managementPlatformURL = 'https://mp.speechmatics.com/v1',\n  region = 'eu',\n}: {\n  type: 'batch' | 'rt' | 'flow' | 'tts';\n  apiKey: string;\n  clientRef?: string;\n  ttl?: number;\n  region?: 'eu' | 'usa' | 'au';\n  managementPlatformURL?: string;\n}): Promise<string> {\n  if (type === 'batch' && !clientRef) {\n    throw new SpeechmaticsJWTError(\n      'ValidationFailed',\n      'Must set the `client_ref` parameter when using temporary keys for batch transcription. See documentation at https://docs.speechmatics.com/introduction/authentication#batch-transcription',\n    );\n  }\n\n  const resp = await fetch(`${managementPlatformURL}/api_keys?type=${type}`, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${apiKey}`,\n    },\n    body: JSON.stringify({\n      ttl,\n      region,\n      client_ref: clientRef,\n    }),\n  });\n\n  if (resp.ok) {\n    return (await resp.json()).key_value;\n  }\n\n  // Handle errors\n  if (resp.status === 403) {\n    throw new SpeechmaticsJWTError('Unauthorized', 'unauthorized');\n  }\n\n  let json: { code: string; message: string };\n\n  try {\n    json = await resp.json();\n  } catch (e) {\n    throw new SpeechmaticsJWTError(\n      'UnknownError',\n      'Failed to parse JSON response',\n      { cause: e },\n    );\n  }\n\n  if (resp.status === 422) {\n    throw new SpeechmaticsJWTError('ValidationFailed', json.message, {\n      cause: json,\n    });\n  }\n\n  throw new SpeechmaticsJWTError(\n    'UnknownError',\n    `Got response with status ${resp.status}`,\n  );\n}\n\nexport type SpeechmaticsJWTErrorType =\n  | 'ValidationFailed'\n  | 'Unauthorized'\n  | 'UnknownError';\n\nexport class SpeechmaticsJWTError extends Error {\n  constructor(\n    readonly type: SpeechmaticsJWTErrorType,\n    message: string,\n    opts?: ErrorOptions,\n  ) {\n    super(message, opts);\n    this.name = 'SpeechmaticsJWTError';\n  }\n}\n"],"names":[],"mappings":"AACA,eAAsB,qBAAsB,CAAA;AAAA,EAC1C,IAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAM,GAAA,EAAA;AAAA,EACN,qBAAwB,GAAA,gCAAA;AAAA,EACxB,MAAS,GAAA,IAAA;AACX,CAOoB,EAAA;AAClB,EAAI,IAAA,IAAA,KAAS,OAAW,IAAA,CAAC,SAAW,EAAA;AAClC,IAAA,MAAM,IAAI,oBAAA;AAAA,MACR,kBAAA;AAAA,MACA,2LAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAA,MAAM,OAAO,MAAM,KAAA,CAAM,GAAG,qBAAqB,CAAA,eAAA,EAAkB,IAAI,CAAI,CAAA,EAAA;AAAA,IACzE,MAAQ,EAAA,MAAA;AAAA,IACR,OAAS,EAAA;AAAA,MACP,cAAgB,EAAA,kBAAA;AAAA,MAChB,aAAA,EAAe,UAAU,MAAM,CAAA,CAAA;AAAA,KACjC;AAAA,IACA,IAAA,EAAM,KAAK,SAAU,CAAA;AAAA,MACnB,GAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAY,EAAA,SAAA;AAAA,KACb,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAA,IAAI,KAAK,EAAI,EAAA;AACX,IAAQ,OAAA,CAAA,MAAM,IAAK,CAAA,IAAA,EAAQ,EAAA,SAAA,CAAA;AAAA,GAC7B;AAGA,EAAI,IAAA,IAAA,CAAK,WAAW,GAAK,EAAA;AACvB,IAAM,MAAA,IAAI,oBAAqB,CAAA,cAAA,EAAgB,cAAc,CAAA,CAAA;AAAA,GAC/D;AAEA,EAAI,IAAA,IAAA,CAAA;AAEJ,EAAI,IAAA;AACF,IAAO,IAAA,GAAA,MAAM,KAAK,IAAK,EAAA,CAAA;AAAA,WAChB,CAAG,EAAA;AACV,IAAA,MAAM,IAAI,oBAAA;AAAA,MACR,cAAA;AAAA,MACA,+BAAA;AAAA,MACA,EAAE,OAAO,CAAE,EAAA;AAAA,KACb,CAAA;AAAA,GACF;AAEA,EAAI,IAAA,IAAA,CAAK,WAAW,GAAK,EAAA;AACvB,IAAA,MAAM,IAAI,oBAAA,CAAqB,kBAAoB,EAAA,IAAA,CAAK,OAAS,EAAA;AAAA,MAC/D,KAAO,EAAA,IAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,MAAM,IAAI,oBAAA;AAAA,IACR,cAAA;AAAA,IACA,CAAA,yBAAA,EAA4B,KAAK,MAAM,CAAA,CAAA;AAAA,GACzC,CAAA;AACF,CAAA;AAOO,MAAM,6BAA6B,KAAM,CAAA;AAAA,EAC9C,WAAA,CACW,IACT,EAAA,OAAA,EACA,IACA,EAAA;AACA,IAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAA;AAJV,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AAKT,IAAA,IAAA,CAAK,IAAO,GAAA,sBAAA,CAAA;AAAA,GACd;AACF;;;;"}