{"version":3,"sources":["../../src/hono/utils.ts"],"sourcesContent":["import { Hono } from \"hono\";\nimport { isMiddleware } from \"hono/utils/handler\";\nimport type { ZodError } from \"zod\";\n\nimport { getPackageVersion } from \"../common/packageVersions.js\";\nimport { PathInfo, StartupData, ValidationError } from \"../common/types.js\";\n\nexport function getAppInfo(app: Hono, appVersion?: string): StartupData {\n  const versions: Array<[string, string]> = [];\n  if (process.versions.node) {\n    versions.push([\"nodejs\", process.versions.node]);\n  }\n  if (process.versions.bun) {\n    versions.push([\"bun\", process.versions.bun]);\n  }\n  const honoVersion = getPackageVersion(\"hono\");\n  const apitallyVersion = getPackageVersion(\"../..\");\n  if (honoVersion) {\n    versions.push([\"hono\", honoVersion]);\n  }\n  if (apitallyVersion) {\n    versions.push([\"apitally\", apitallyVersion]);\n  }\n  if (appVersion) {\n    versions.push([\"app\", appVersion]);\n  }\n  return {\n    paths: listEndpoints(app),\n    versions: Object.fromEntries(versions),\n    client: \"js:hono\",\n  };\n}\n\nexport function listEndpoints(app: Hono) {\n  const endpoints: Array<PathInfo> = [];\n  app.routes.forEach((route) => {\n    if (\n      ![\"ALL\", \"HEAD\", \"OPTIONS\"].includes(route.method.toUpperCase()) &&\n      !isMiddleware(route.handler)\n    ) {\n      endpoints.push({\n        method: route.method.toUpperCase(),\n        path: route.path,\n      });\n    }\n  });\n  return endpoints;\n}\n\nexport function extractZodErrors(responseJson: any) {\n  try {\n    const errors: ValidationError[] = [];\n    if (\n      responseJson &&\n      responseJson.success === false &&\n      responseJson.error &&\n      responseJson.error.name === \"ZodError\"\n    ) {\n      const zodError = responseJson.error as ZodError;\n      zodError.issues?.forEach((zodIssue) => {\n        errors.push({\n          loc: zodIssue.path.join(\".\"),\n          msg: zodIssue.message,\n          type: zodIssue.code,\n        });\n      });\n    }\n    return errors;\n  } catch (error) {\n    return [];\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;;;;;;AAAA,qBAA6B;AAG7B,6BAAkC;AAG3B,SAASA,WAAWC,KAAWC,YAAmB;AACvD,QAAMC,WAAoC,CAAA;AAC1C,MAAIC,QAAQD,SAASE,MAAM;AACzBF,aAASG,KAAK;MAAC;MAAUF,QAAQD,SAASE;KAAK;EACjD;AACA,MAAID,QAAQD,SAASI,KAAK;AACxBJ,aAASG,KAAK;MAAC;MAAOF,QAAQD,SAASI;KAAI;EAC7C;AACA,QAAMC,kBAAcC,0CAAkB,MAAA;AACtC,QAAMC,sBAAkBD,0CAAkB,OAAA;AAC1C,MAAID,aAAa;AACfL,aAASG,KAAK;MAAC;MAAQE;KAAY;EACrC;AACA,MAAIE,iBAAiB;AACnBP,aAASG,KAAK;MAAC;MAAYI;KAAgB;EAC7C;AACA,MAAIR,YAAY;AACdC,aAASG,KAAK;MAAC;MAAOJ;KAAW;EACnC;AACA,SAAO;IACLS,OAAOC,cAAcX,GAAAA;IACrBE,UAAUU,OAAOC,YAAYX,QAAAA;IAC7BY,QAAQ;EACV;AACF;AAxBgBf;AA0BT,SAASY,cAAcX,KAAS;AACrC,QAAMe,YAA6B,CAAA;AACnCf,MAAIgB,OAAOC,QAAQ,CAACC,UAAAA;AAClB,QACE,CAAC;MAAC;MAAO;MAAQ;MAAWC,SAASD,MAAME,OAAOC,YAAW,CAAA,KAC7D,KAACC,6BAAaJ,MAAMK,OAAO,GAC3B;AACAR,gBAAUV,KAAK;QACbe,QAAQF,MAAME,OAAOC,YAAW;QAChCG,MAAMN,MAAMM;MACd,CAAA;IACF;EACF,CAAA;AACA,SAAOT;AACT;AAdgBJ;AAgBT,SAASc,iBAAiBC,cAAiB;AAhDlD;AAiDE,MAAI;AACF,UAAMC,SAA4B,CAAA;AAClC,QACED,gBACAA,aAAaE,YAAY,SACzBF,aAAaG,SACbH,aAAaG,MAAMC,SAAS,YAC5B;AACA,YAAMC,WAAWL,aAAaG;AAC9BE,qBAASC,WAATD,mBAAiBd,QAAQ,CAACgB,aAAAA;AACxBN,eAAOtB,KAAK;UACV6B,KAAKD,SAAST,KAAKW,KAAK,GAAA;UACxBC,KAAKH,SAASI;UACdC,MAAML,SAASM;QACjB,CAAA;MACF;IACF;AACA,WAAOZ;EACT,SAASE,OAAO;AACd,WAAO,CAAA;EACT;AACF;AAtBgBJ;","names":["getAppInfo","app","appVersion","versions","process","node","push","bun","honoVersion","getPackageVersion","apitallyVersion","paths","listEndpoints","Object","fromEntries","client","endpoints","routes","forEach","route","includes","method","toUpperCase","isMiddleware","handler","path","extractZodErrors","responseJson","errors","success","error","name","zodError","issues","zodIssue","loc","join","msg","message","type","code"]}