{"version":3,"file":"context.mjs","names":[],"sources":["../../../src/shared/router/context.ts"],"sourcesContent":["import type { AgentContext, Logger } from '@credo-ts/core'\nimport { CredoError } from '@credo-ts/core'\nimport type { Oauth2ErrorCodes, Oauth2ServerErrorResponseError } from '@openid4vc/oauth2'\nimport { Oauth2ResourceUnauthorizedError, SupportedAuthenticationScheme } from '@openid4vc/oauth2'\nimport type { NextFunction, Request, Response } from 'express'\n\nexport interface OpenId4VcRequest<RC extends Record<string, unknown> = Record<string, never>> extends Request {\n  requestContext?: RC & OpenId4VcRequestContext\n}\n\nexport interface OpenId4VcRequestContext {\n  agentContext: AgentContext\n}\n\nexport function sendUnauthorizedError(\n  response: Response,\n  next: NextFunction,\n  logger: Logger,\n  error: unknown | Oauth2ResourceUnauthorizedError,\n  status?: number\n) {\n  const errorMessage = error instanceof Error ? error.message : error\n  logger.warn(`[OID4VC] Sending authorization error response: ${JSON.stringify(errorMessage)}`, {\n    error,\n  })\n\n  const unauhorizedError =\n    error instanceof Oauth2ResourceUnauthorizedError\n      ? error\n      : new Oauth2ResourceUnauthorizedError('Unknown error occured', [\n          { scheme: SupportedAuthenticationScheme.DPoP },\n          { scheme: SupportedAuthenticationScheme.Bearer },\n        ])\n\n  response\n    .setHeader('WWW-Authenticate', unauhorizedError.toHeaderValue())\n    .status(status ?? 403)\n    .send()\n  next(error)\n}\n\nexport function sendOauth2ErrorResponse(\n  response: Response,\n  next: NextFunction,\n  logger: Logger,\n  error: Oauth2ServerErrorResponseError\n) {\n  logger.warn(`[OID4VC] Sending oauth2 error response: ${JSON.stringify(error.message)}`, {\n    error,\n  })\n\n  response.status(error.status).json(error.errorResponse)\n  next(error)\n}\nexport function sendUnknownServerErrorResponse(\n  response: Response,\n  next: NextFunction,\n  logger: Logger,\n  error: unknown,\n  additionalParams: Record<string, unknown> = {}\n) {\n  logger.error('[OID4VC] Sending unknown server error response', {\n    error,\n  })\n\n  response.status(500).json({\n    error: 'server_error',\n    ...additionalParams,\n  })\n\n  const throwError =\n    error instanceof Error ? error : new CredoError('Unknown error in openid4vc error response handler')\n  next(throwError)\n}\n\nexport function sendNotFoundResponse(response: Response, next: NextFunction, logger: Logger, internalReason: string) {\n  logger.debug(`[OID4VC] Sending not found response: ${internalReason}`)\n\n  response.status(404).send()\n  next(new CredoError(internalReason))\n}\n\nexport function sendErrorResponse(\n  response: Response,\n  next: NextFunction,\n  logger: Logger,\n  status: number,\n  errorCode: Oauth2ErrorCodes | string,\n  errorDescription?: string,\n  additionalPayload?: Record<string, unknown>,\n  error?: Error\n) {\n  const body = {\n    error: errorCode,\n    error_description: errorDescription,\n    ...additionalPayload,\n  }\n  logger.warn(`[OID4VC] Sending error response: ${JSON.stringify(body)}`, {\n    error,\n  })\n\n  response.status(status).json(body)\n\n  const throwError =\n    error instanceof Error ? error : new CredoError('Unknown error in openid4vc error response handler')\n  next(throwError)\n}\n\nexport function sendJsonResponse(\n  response: Response,\n  next: NextFunction,\n  // biome-ignore lint/suspicious/noExplicitAny: no explanation\n  body: any,\n  contentType?: string,\n  status?: number\n) {\n  response\n    .setHeader('Content-Type', contentType ?? 'application/json')\n    .status(status ?? 200)\n    .send(JSON.stringify(body))\n\n  next()\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: no explanation\nexport function getRequestContext<T extends OpenId4VcRequest<any>>(request: T): NonNullable<T['requestContext']> {\n  const requestContext = request.requestContext\n  if (!requestContext) throw new CredoError('Request context not set.')\n\n  return requestContext\n}\n"],"mappings":";;;;AAcA,SAAgB,sBACd,UACA,MACA,QACA,OACA,QACA;CACA,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU;AAC9D,QAAO,KAAK,kDAAkD,KAAK,UAAU,aAAa,IAAI,EAC5F,OACD,CAAC;CAEF,MAAM,mBACJ,iBAAiB,kCACb,QACA,IAAI,gCAAgC,yBAAyB,CAC3D,EAAE,QAAQ,8BAA8B,MAAM,EAC9C,EAAE,QAAQ,8BAA8B,QAAQ,CACjD,CAAC;AAER,UACG,UAAU,oBAAoB,iBAAiB,eAAe,CAAC,CAC/D,OAAO,UAAU,IAAI,CACrB,MAAM;AACT,MAAK,MAAM;;AAGb,SAAgB,wBACd,UACA,MACA,QACA,OACA;AACA,QAAO,KAAK,2CAA2C,KAAK,UAAU,MAAM,QAAQ,IAAI,EACtF,OACD,CAAC;AAEF,UAAS,OAAO,MAAM,OAAO,CAAC,KAAK,MAAM,cAAc;AACvD,MAAK,MAAM;;AAEb,SAAgB,+BACd,UACA,MACA,QACA,OACA,mBAA4C,EAAE,EAC9C;AACA,QAAO,MAAM,kDAAkD,EAC7D,OACD,CAAC;AAEF,UAAS,OAAO,IAAI,CAAC,KAAK;EACxB,OAAO;EACP,GAAG;EACJ,CAAC;AAIF,MADE,iBAAiB,QAAQ,QAAQ,IAAI,WAAW,oDAAoD,CACtF;;AAGlB,SAAgB,qBAAqB,UAAoB,MAAoB,QAAgB,gBAAwB;AACnH,QAAO,MAAM,wCAAwC,iBAAiB;AAEtE,UAAS,OAAO,IAAI,CAAC,MAAM;AAC3B,MAAK,IAAI,WAAW,eAAe,CAAC;;AAGtC,SAAgB,kBACd,UACA,MACA,QACA,QACA,WACA,kBACA,mBACA,OACA;CACA,MAAM,OAAO;EACX,OAAO;EACP,mBAAmB;EACnB,GAAG;EACJ;AACD,QAAO,KAAK,oCAAoC,KAAK,UAAU,KAAK,IAAI,EACtE,OACD,CAAC;AAEF,UAAS,OAAO,OAAO,CAAC,KAAK,KAAK;AAIlC,MADE,iBAAiB,QAAQ,QAAQ,IAAI,WAAW,oDAAoD,CACtF;;AAGlB,SAAgB,iBACd,UACA,MAEA,MACA,aACA,QACA;AACA,UACG,UAAU,gBAAgB,eAAe,mBAAmB,CAC5D,OAAO,UAAU,IAAI,CACrB,KAAK,KAAK,UAAU,KAAK,CAAC;AAE7B,OAAM;;AAIR,SAAgB,kBAAmD,SAA8C;CAC/G,MAAM,iBAAiB,QAAQ;AAC/B,KAAI,CAAC,eAAgB,OAAM,IAAI,WAAW,2BAA2B;AAErE,QAAO"}