{"version":3,"sources":["../../src/h3/utils.ts","../../src/common/packageVersions.ts"],"sourcesContent":["import { H3, H3Route } from \"h3\";\n\nimport { getPackageVersion } from \"../common/packageVersions.js\";\n\nexport function getAppInfo(h3: H3, appVersion?: string) {\n  const routes = h3._routes ? listAllRoutes<H3Route>(h3._routes.root) : [];\n\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 h3Version = getPackageVersion(\"h3\");\n  const apitallyVersion = getPackageVersion(\"../..\");\n  if (h3Version) {\n    versions.push([\"h3\", h3Version]);\n  }\n  if (apitallyVersion) {\n    versions.push([\"apitally\", apitallyVersion]);\n  }\n  if (appVersion) {\n    versions.push([\"app\", appVersion]);\n  }\n\n  return {\n    paths: routes\n      .map((route) => ({\n        method: route.method || \"\",\n        path: route.route || \"\",\n      }))\n      .filter((route) => route.method && route.path),\n    versions: Object.fromEntries(versions),\n    client: \"js:h3\",\n  };\n}\n\n// Types from rou3\ntype MethodData<T = unknown> = { data: T };\ninterface Node<T = unknown> {\n  key: string;\n  static?: Record<string, Node<T>>;\n  param?: Node<T>;\n  wildcard?: Node<T>;\n  methods?: Record<string, MethodData<T>[] | undefined>;\n}\n\nfunction listAllRoutes<T>(node: Node<T>): T[] {\n  const routes: T[] = [];\n  _collectAllRoutes(node, routes);\n  return routes;\n}\n\nfunction _collectAllRoutes<T>(node: Node<T>, routes: T[] = []): void {\n  // Collect routes from current node methods\n  if (node.methods) {\n    for (const methodData of Object.values(node.methods)) {\n      if (Array.isArray(methodData)) {\n        for (const item of methodData) {\n          if (item.data) {\n            routes.push(item.data);\n          }\n        }\n      }\n    }\n  }\n\n  // Traverse static children\n  if (node.static) {\n    for (const staticChild of Object.values(node.static)) {\n      _collectAllRoutes(staticChild, routes);\n    }\n  }\n\n  // Traverse param child\n  if (node.param) {\n    _collectAllRoutes(node.param, routes);\n  }\n\n  // Traverse wildcard child\n  if (node.wildcard) {\n    _collectAllRoutes(node.wildcard, routes);\n  }\n}\n","import { createRequire } from \"module\";\n\nexport function getPackageVersion(name: string): string | null {\n  const packageJsonPath = `${name}/package.json`;\n  try {\n    return require(packageJsonPath).version || null;\n  } catch (error) {\n    try {\n      const _require = createRequire(import.meta.url);\n      return _require(packageJsonPath).version || null;\n    } catch (error) {\n      return null;\n    }\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;ACFA,oBAA8B;AAA9B;AAEO,SAASA,kBAAkBC,MAAY;AAC5C,QAAMC,kBAAkB,GAAGD,IAAAA;AAC3B,MAAI;AACF,WAAOE,QAAQD,eAAAA,EAAiBE,WAAW;EAC7C,SAASC,OAAO;AACd,QAAI;AACF,YAAMC,eAAWC,6BAAc,YAAYC,GAAG;AAC9C,aAAOF,SAASJ,eAAAA,EAAiBE,WAAW;IAC9C,SAASC,QAAO;AACd,aAAO;IACT;EACF;AACF;AAZgBL;;;ADET,SAASS,WAAWC,IAAQC,YAAmB;AACpD,QAAMC,SAASF,GAAGG,UAAUC,cAAuBJ,GAAGG,QAAQE,IAAI,IAAI,CAAA;AAEtE,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,YAAYC,kBAAkB,IAAA;AACpC,QAAMC,kBAAkBD,kBAAkB,OAAA;AAC1C,MAAID,WAAW;AACbL,aAASG,KAAK;MAAC;MAAME;KAAU;EACjC;AACA,MAAIE,iBAAiB;AACnBP,aAASG,KAAK;MAAC;MAAYI;KAAgB;EAC7C;AACA,MAAIZ,YAAY;AACdK,aAASG,KAAK;MAAC;MAAOR;KAAW;EACnC;AAEA,SAAO;IACLa,OAAOZ,OACJa,IAAI,CAACC,WAAW;MACfC,QAAQD,MAAMC,UAAU;MACxBC,MAAMF,MAAMA,SAAS;IACvB,EAAA,EACCG,OAAO,CAACH,UAAUA,MAAMC,UAAUD,MAAME,IAAI;IAC/CZ,UAAUc,OAAOC,YAAYf,QAAAA;IAC7BgB,QAAQ;EACV;AACF;AAhCgBvB;AA4ChB,SAASK,cAAiBI,MAAa;AACrC,QAAMN,SAAc,CAAA;AACpBqB,oBAAkBf,MAAMN,MAAAA;AACxB,SAAOA;AACT;AAJSE;AAMT,SAASmB,kBAAqBf,MAAeN,SAAc,CAAA,GAAE;AAE3D,MAAIM,KAAKgB,SAAS;AAChB,eAAWC,cAAcL,OAAOM,OAAOlB,KAAKgB,OAAO,GAAG;AACpD,UAAIG,MAAMC,QAAQH,UAAAA,GAAa;AAC7B,mBAAWI,QAAQJ,YAAY;AAC7B,cAAII,KAAKC,MAAM;AACb5B,mBAAOO,KAAKoB,KAAKC,IAAI;UACvB;QACF;MACF;IACF;EACF;AAGA,MAAItB,KAAKuB,QAAQ;AACf,eAAWC,eAAeZ,OAAOM,OAAOlB,KAAKuB,MAAM,GAAG;AACpDR,wBAAkBS,aAAa9B,MAAAA;IACjC;EACF;AAGA,MAAIM,KAAKyB,OAAO;AACdV,sBAAkBf,KAAKyB,OAAO/B,MAAAA;EAChC;AAGA,MAAIM,KAAK0B,UAAU;AACjBX,sBAAkBf,KAAK0B,UAAUhC,MAAAA;EACnC;AACF;AA9BSqB;","names":["getPackageVersion","name","packageJsonPath","require","version","error","_require","createRequire","url","getAppInfo","h3","appVersion","routes","_routes","listAllRoutes","root","versions","process","node","push","bun","h3Version","getPackageVersion","apitallyVersion","paths","map","route","method","path","filter","Object","fromEntries","client","_collectAllRoutes","methods","methodData","values","Array","isArray","item","data","static","staticChild","param","wildcard"]}