{"version":3,"file":"router.mjs","names":[],"sources":["../../src/http/router.ts"],"sourcesContent":["import type { Request, Response, NextFunction } from 'express'\nimport type { AgentContext } from '@credo-ts/core'\n\nexport function importExpress() {\n  try {\n    // 'express' is a peer dependency; required by the host app\n    const express = require('express') as typeof import('express')\n    return express\n  } catch {\n    throw new Error('Express must be installed as a dependency to use OpenBadges HTTP module')\n  }\n}\n\nexport type RequestContext = { agentContext: AgentContext }\n\nexport interface ObRequest<T = Record<string, unknown>> extends Request {\n  requestContext?: RequestContext & T\n}\n\nexport function setRequestContext(agentContext: AgentContext) {\n  return function (req: ObRequest, _res: Response, next: NextFunction) {\n    req.requestContext = { agentContext }\n    next()\n  }\n}\n\nexport function getRequestContext<T extends ObRequest<any>>(request: T) {\n  const ctx = request.requestContext\n  if (!ctx) throw new Error('Request context not set')\n  return ctx\n}\n\nexport function sendJson(res: Response, body: unknown, status = 200, contentType = 'application/json') {\n  res.setHeader('Content-Type', contentType).status(status).send(JSON.stringify(body))\n}\n\nexport function sendError(res: Response, status: number, error: string, error_description?: string) {\n  sendJson(res, { error, error_description }, status)\n}\n\n"],"mappings":";;;AAGA,SAAgB,gBAAgB;AAC9B,KAAI;AAGF,mBADwB,UAAU;SAE5B;AACN,QAAM,IAAI,MAAM,0EAA0E;;;AAU9F,SAAgB,kBAAkB,cAA4B;AAC5D,QAAO,SAAU,KAAgB,MAAgB,MAAoB;AACnE,MAAI,iBAAiB,EAAE,cAAc;AACrC,QAAM;;;AAIV,SAAgB,kBAA4C,SAAY;CACtE,MAAM,MAAM,QAAQ;AACpB,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,0BAA0B;AACpD,QAAO;;AAGT,SAAgB,SAAS,KAAe,MAAe,SAAS,KAAK,cAAc,oBAAoB;AACrG,KAAI,UAAU,gBAAgB,YAAY,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,KAAK,CAAC;;AAGtF,SAAgB,UAAU,KAAe,QAAgB,OAAe,mBAA4B;AAClG,UAAS,KAAK;EAAE;EAAO;EAAmB,EAAE,OAAO"}