{"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,AAAQ,YAAY,SAAqB;AACvC,OAAK,gBAAgB,QAAQ;AAE7B,OAAK,UAAU,QAAQ;AACvB,OAAK,SAAS,QAAQ;AACtB,OAAK,YAAY,QAAQ;;CAG3B,OAAc,kBAAkB,eAAuB;AACrD,MAAI,OAAO,kBAAkB,YAAY,CAAC,IAAI,OAAO,KAAK,cAAc,CACtE,OAAM,IAAI,WAAW,iBAAiB,cAAc,4BAA4B;EAGlF,MAAM,CAAC,QAAQ,SAAS,aAAa,cAAc,MAAM,IAAI;AAE7D,MAAI;AACF,UAAO,IAAI,IAAI;IACb,QAAQ,YAAY,cAAc,OAAO;IACzC,SAAS,WAAW,SAAS,YAAY,cAAc,QAAQ,CAAC;IAChE,WAAW,kBAAkB,cAAc,UAAU;IACrD;IACD,CAAC;WACK,OAAO;AACd,SAAM,IAAI,WACR,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,KAAK,UAAU,OAAO,aAAa,GAC7F;;;;IApCS,SAAS"}