{"version":3,"file":"Jwt.mjs","names":[],"sources":["../../../../src/crypto/jose/jwt/Jwt.ts"],"sourcesContent":["import { CredoError } from '../../../error'\nimport { replaceError } from '../../../logger/replaceError'\nimport type { Jwk } from '../../../modules/kms'\nimport { JsonEncoder, TypedArrayEncoder } from '../../../utils'\nimport { JwtPayload } from './JwtPayload'\n\n// TODO: JWT Header typing\ninterface JwtHeader {\n  alg: string\n  kid?: string\n  jwk?: Jwk\n  x5c?: string[]\n  [key: string]: unknown\n}\n\ninterface JwtOptions {\n  payload: JwtPayload\n  header: JwtHeader\n  signature: Uint8Array\n\n  serializedJwt: string\n}\n\nexport class Jwt {\n  public static format = /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/\n\n  public readonly payload: JwtPayload\n  public readonly header: JwtHeader\n  public readonly signature: Uint8Array\n\n  /**\n   * Compact serialization of the JWT. Contains the payload, header, and signature.\n   */\n  public readonly serializedJwt: string\n\n  private constructor(options: JwtOptions) {\n    this.serializedJwt = options.serializedJwt\n\n    this.payload = options.payload\n    this.header = options.header\n    this.signature = options.signature\n  }\n\n  public static fromSerializedJwt(serializedJwt: string) {\n    if (typeof serializedJwt !== 'string' || !Jwt.format.test(serializedJwt)) {\n      throw new CredoError(`Invalid JWT. '${serializedJwt}' does not match JWT regex`)\n    }\n\n    const [header, payload, signature] = serializedJwt.split('.')\n\n    try {\n      return new Jwt({\n        header: JsonEncoder.fromBase64Url(header),\n        payload: JwtPayload.fromJson(JsonEncoder.fromBase64Url(payload)),\n        signature: TypedArrayEncoder.fromBase64Url(signature),\n        serializedJwt,\n      })\n    } catch (error) {\n      throw new CredoError(\n        `Invalid JWT. ${error instanceof Error ? error.message : JSON.stringify(error, replaceError)}`\n      )\n    }\n  }\n}\n"],"mappings":";;;;;;;;AAuBA,IAAa,MAAb,MAAa,IAAI;CAYf,YAAoB,SAAqB;EACvC,KAAK,gBAAgB,QAAQ;EAE7B,KAAK,UAAU,QAAQ;EACvB,KAAK,SAAS,QAAQ;EACtB,KAAK,YAAY,QAAQ;CAC3B;CAEA,OAAc,kBAAkB,eAAuB;EACrD,IAAI,OAAO,kBAAkB,YAAY,CAAC,IAAI,OAAO,KAAK,aAAa,GACrE,MAAM,IAAI,WAAW,iBAAiB,cAAc,2BAA2B;EAGjF,MAAM,CAAC,QAAQ,SAAS,aAAa,cAAc,MAAM,GAAG;EAE5D,IAAI;GACF,OAAO,IAAI,IAAI;IACb,QAAQ,YAAY,cAAc,MAAM;IACxC,SAAS,WAAW,SAAS,YAAY,cAAc,OAAO,CAAC;IAC/D,WAAW,kBAAkB,cAAc,SAAS;IACpD;GACF,CAAC;EACH,SAAS,OAAO;GACd,MAAM,IAAI,WACR,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,KAAK,UAAU,OAAO,YAAY,GAC7F;EACF;CACF;AACF;AAvCE,IAAc,SAAS"}