UNPKG

apitally

Version:

Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, Hapi, and Koa.

1 lines 3.85 kB
{"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"]}