logixia 1.13.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +117 -44
  2. package/dist/async-context-B05ArHgM.mjs +134 -0
  3. package/dist/async-context-B05ArHgM.mjs.map +1 -0
  4. package/dist/async-context-DTQgi8f7.js +150 -0
  5. package/dist/async-context-DTQgi8f7.js.map +1 -0
  6. package/dist/{azure-monitor.transport-CHnjVRF-.mjs → azure-monitor.transport-BPbgjATu.mjs} +27 -15
  7. package/dist/azure-monitor.transport-BPbgjATu.mjs.map +1 -0
  8. package/dist/{azure-monitor.transport-BDFO4F-i.d.ts → azure-monitor.transport-C7kYyZUW.d.mts} +3 -6
  9. package/dist/azure-monitor.transport-C7kYyZUW.d.mts.map +1 -0
  10. package/dist/{azure-monitor.transport-CrvfHd9C.js → azure-monitor.transport-CwbOLZHB.js} +32 -20
  11. package/dist/azure-monitor.transport-CwbOLZHB.js.map +1 -0
  12. package/dist/{azure-monitor.transport-D5wQEH04.d.mts → azure-monitor.transport-DV03Z5P4.d.ts} +3 -6
  13. package/dist/azure-monitor.transport-DV03Z5P4.d.ts.map +1 -0
  14. package/dist/azure.d.mts +1 -2
  15. package/dist/azure.d.ts +1 -2
  16. package/dist/azure.js +3 -6
  17. package/dist/azure.mjs +1 -6
  18. package/dist/{batch-buffer-PGvSgbmd.mjs → batch-buffer-0fgLmIPn.mjs} +21 -7
  19. package/dist/batch-buffer-0fgLmIPn.mjs.map +1 -0
  20. package/dist/{batch-buffer-BY-mRWIK.js → batch-buffer-DT4gdXmf.js} +53 -40
  21. package/dist/batch-buffer-DT4gdXmf.js.map +1 -0
  22. package/dist/browser.d.mts +52 -23
  23. package/dist/browser.d.mts.map +1 -1
  24. package/dist/browser.d.ts +52 -23
  25. package/dist/browser.d.ts.map +1 -1
  26. package/dist/browser.js +460 -62
  27. package/dist/browser.js.map +1 -1
  28. package/dist/browser.mjs +461 -65
  29. package/dist/browser.mjs.map +1 -1
  30. package/dist/{nestjs-extras-ImbuDhs1.mjs → builder-D70z6kjj.mjs} +279 -965
  31. package/dist/builder-D70z6kjj.mjs.map +1 -0
  32. package/dist/{nestjs-extras-DnJ6vrIC.js → builder-M7NoaugM.js} +421 -1177
  33. package/dist/builder-M7NoaugM.js.map +1 -0
  34. package/dist/cli/index.js +86 -67
  35. package/dist/cloudwatch.d.mts +1 -2
  36. package/dist/cloudwatch.d.ts +1 -2
  37. package/dist/cloudwatch.js +3 -7
  38. package/dist/cloudwatch.mjs +1 -7
  39. package/dist/{cloudwatch.transport-BO1ahxw-.js → cloudwatch.transport-B2wKQFF7.js} +61 -36
  40. package/dist/cloudwatch.transport-B2wKQFF7.js.map +1 -0
  41. package/dist/{cloudwatch.transport-DZ6ies7g.mjs → cloudwatch.transport-BTvYfLs9.mjs} +54 -28
  42. package/dist/cloudwatch.transport-BTvYfLs9.mjs.map +1 -0
  43. package/dist/{cloudwatch.transport-B00st6Xv.d.ts → cloudwatch.transport-Bf7L4I59.d.ts} +2 -6
  44. package/dist/cloudwatch.transport-Bf7L4I59.d.ts.map +1 -0
  45. package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts → cloudwatch.transport-Rj4yTpRn.d.mts} +2 -6
  46. package/dist/cloudwatch.transport-Rj4yTpRn.d.mts.map +1 -0
  47. package/dist/{coerce.utils-Cu6IUTgX.mjs → coerce.utils-B_rEudCn.mjs} +3 -4
  48. package/dist/{coerce.utils-Cu6IUTgX.mjs.map → coerce.utils-B_rEudCn.mjs.map} +1 -1
  49. package/dist/{coerce.utils-B-LilukN.js → coerce.utils-C1C5sIX0.js} +8 -10
  50. package/dist/{coerce.utils-B-LilukN.js.map → coerce.utils-C1C5sIX0.js.map} +1 -1
  51. package/dist/correlation.d.mts +13 -16
  52. package/dist/correlation.d.mts.map +1 -1
  53. package/dist/correlation.d.ts +13 -16
  54. package/dist/correlation.d.ts.map +1 -1
  55. package/dist/correlation.js +58 -9
  56. package/dist/correlation.js.map +1 -1
  57. package/dist/correlation.mjs +56 -6
  58. package/dist/correlation.mjs.map +1 -1
  59. package/dist/{entry-fields-BJkuPnIg.mjs → entry-fields-CGuvT2R0.mjs} +5 -6
  60. package/dist/entry-fields-CGuvT2R0.mjs.map +1 -0
  61. package/dist/{entry-fields-BvOLFlJ4.js → entry-fields-RLd1jCoR.js} +10 -12
  62. package/dist/entry-fields-RLd1jCoR.js.map +1 -0
  63. package/dist/gcp.d.mts +1 -2
  64. package/dist/gcp.d.ts +1 -2
  65. package/dist/gcp.js +3 -7
  66. package/dist/gcp.mjs +1 -7
  67. package/dist/{gcp.transport-m4fVw0b1.d.ts → gcp.transport-C5D72b1g.d.mts} +3 -6
  68. package/dist/gcp.transport-C5D72b1g.d.mts.map +1 -0
  69. package/dist/{gcp.transport-zzNyIoih.d.mts → gcp.transport-CFQfdAOK.d.ts} +3 -6
  70. package/dist/gcp.transport-CFQfdAOK.d.ts.map +1 -0
  71. package/dist/{gcp.transport-DBX5TPIy.mjs → gcp.transport-CGKopAhQ.mjs} +55 -16
  72. package/dist/gcp.transport-CGKopAhQ.mjs.map +1 -0
  73. package/dist/{gcp.transport-CHV8MGgz.js → gcp.transport-KZe9hCAR.js} +60 -22
  74. package/dist/gcp.transport-KZe9hCAR.js.map +1 -0
  75. package/dist/{index-nZEeCr3X.d.ts → index-DwozbmB4.d.ts} +3 -8
  76. package/dist/index-DwozbmB4.d.ts.map +1 -0
  77. package/dist/{index-BPwEisy4.d.mts → index-xqaJtAZn.d.mts} +3 -8
  78. package/dist/index-xqaJtAZn.d.mts.map +1 -0
  79. package/dist/index.d.mts +141 -203
  80. package/dist/index.d.mts.map +1 -1
  81. package/dist/index.d.ts +140 -202
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +196 -381
  84. package/dist/index.js.map +1 -1
  85. package/dist/index.mjs +145 -294
  86. package/dist/index.mjs.map +1 -1
  87. package/dist/internal-log-b0Vp4qrB.js +183 -0
  88. package/dist/internal-log-b0Vp4qrB.js.map +1 -0
  89. package/dist/internal-log-uCSd1PMc.mjs +142 -0
  90. package/dist/internal-log-uCSd1PMc.mjs.map +1 -0
  91. package/dist/logitron-logger-D2B75Oc7.d.ts +365 -0
  92. package/dist/logitron-logger-D2B75Oc7.d.ts.map +1 -0
  93. package/dist/logitron-logger-oEd6wNhf.d.mts +365 -0
  94. package/dist/logitron-logger-oEd6wNhf.d.mts.map +1 -0
  95. package/dist/middleware.d.mts +10 -12
  96. package/dist/middleware.d.mts.map +1 -1
  97. package/dist/middleware.d.ts +10 -12
  98. package/dist/middleware.d.ts.map +1 -1
  99. package/dist/middleware.js +16 -47
  100. package/dist/middleware.js.map +1 -1
  101. package/dist/middleware.mjs +13 -45
  102. package/dist/middleware.mjs.map +1 -1
  103. package/dist/nest.d.mts +467 -10
  104. package/dist/nest.d.mts.map +1 -1
  105. package/dist/nest.d.ts +467 -10
  106. package/dist/nest.d.ts.map +1 -1
  107. package/dist/nest.js +889 -43
  108. package/dist/nest.js.map +1 -0
  109. package/dist/nest.mjs +850 -9
  110. package/dist/nest.mjs.map +1 -0
  111. package/dist/{trace.utils-CvXgaiQT.mjs → request-trace-C_fvIDv4.mjs} +44 -9
  112. package/dist/request-trace-C_fvIDv4.mjs.map +1 -0
  113. package/dist/{trace.utils-DpBOLDtq.js → request-trace-wTJdKp6-.js} +121 -77
  114. package/dist/request-trace-wTJdKp6-.js.map +1 -0
  115. package/dist/rolldown-runtime-D3PmRqjj.mjs +4 -0
  116. package/dist/{safe-stringify-DJ66tW5I.mjs → safe-stringify-BMRl3EX3.mjs} +3 -4
  117. package/dist/safe-stringify-BMRl3EX3.mjs.map +1 -0
  118. package/dist/{safe-stringify-DWo3aZp_.js → safe-stringify-DLz1Kz3o.js} +23 -25
  119. package/dist/safe-stringify-DLz1Kz3o.js.map +1 -0
  120. package/dist/{search-CHUZPl0h.d.ts → search-BH33XhuU.d.mts} +2 -22
  121. package/dist/search-BH33XhuU.d.mts.map +1 -0
  122. package/dist/{search-DjXSn6v5.mjs → search-CWMVYC-R.mjs} +34 -41
  123. package/dist/search-CWMVYC-R.mjs.map +1 -0
  124. package/dist/{search-BfBzDIT9.d.mts → search-CazwyX5Z.d.ts} +2 -22
  125. package/dist/search-CazwyX5Z.d.ts.map +1 -0
  126. package/dist/{search-B0MH1SJJ.js → search-DUfWuzFP.js} +64 -71
  127. package/dist/search-DUfWuzFP.js.map +1 -0
  128. package/dist/search.d.mts +2 -4
  129. package/dist/search.d.ts +2 -4
  130. package/dist/search.js +3 -4
  131. package/dist/search.mjs +1 -4
  132. package/dist/secret-config-BegMLkYl.mjs +209 -0
  133. package/dist/secret-config-BegMLkYl.mjs.map +1 -0
  134. package/dist/secret-config-CBZBs0p1.js +271 -0
  135. package/dist/secret-config-CBZBs0p1.js.map +1 -0
  136. package/dist/slack.transport-Ce96JBDk.mjs +824 -0
  137. package/dist/slack.transport-Ce96JBDk.mjs.map +1 -0
  138. package/dist/slack.transport-Dlx3xvb7.js +847 -0
  139. package/dist/slack.transport-Dlx3xvb7.js.map +1 -0
  140. package/dist/slack.transport-DrirgDNy.d.ts +159 -0
  141. package/dist/slack.transport-DrirgDNy.d.ts.map +1 -0
  142. package/dist/slack.transport-DxHOXlLu.d.mts +159 -0
  143. package/dist/slack.transport-DxHOXlLu.d.mts.map +1 -0
  144. package/dist/testing.d.mts +3 -8
  145. package/dist/testing.d.mts.map +1 -1
  146. package/dist/testing.d.ts +3 -8
  147. package/dist/testing.d.ts.map +1 -1
  148. package/dist/testing.js +3 -4
  149. package/dist/testing.js.map +1 -1
  150. package/dist/testing.mjs +2 -3
  151. package/dist/testing.mjs.map +1 -1
  152. package/dist/{transport.manager-Crau3Rle.js → transport.manager-DkcEOlqV.js} +331 -234
  153. package/dist/transport.manager-DkcEOlqV.js.map +1 -0
  154. package/dist/{transport.manager-CpdVHEGP.mjs → transport.manager-eZ_EeC00.mjs} +274 -178
  155. package/dist/transport.manager-eZ_EeC00.mjs.map +1 -0
  156. package/dist/{transport.types-CtNr3D7S.d.mts → transport.types-BJVL1QQl.d.mts} +5 -4
  157. package/dist/transport.types-BJVL1QQl.d.mts.map +1 -0
  158. package/dist/{transport.types-DqVLZTyf.d.ts → transport.types-BJVL1QQl.d.ts} +5 -4
  159. package/dist/transport.types-BJVL1QQl.d.ts.map +1 -0
  160. package/dist/transports.d.mts +32 -41
  161. package/dist/transports.d.mts.map +1 -1
  162. package/dist/transports.d.ts +32 -41
  163. package/dist/transports.d.ts.map +1 -1
  164. package/dist/transports.js +12 -12
  165. package/dist/transports.mjs +7 -12
  166. package/dist/worker-entry.js +337 -87
  167. package/dist/worker.d.mts +1 -2
  168. package/dist/worker.d.ts +1 -2
  169. package/dist/worker.js +3 -4
  170. package/dist/worker.mjs +1 -4
  171. package/dist/{worker.transport-Bj-i0P9V.d.ts → worker.transport-BuPwBi3d.d.ts} +2 -6
  172. package/dist/worker.transport-BuPwBi3d.d.ts.map +1 -0
  173. package/dist/{worker.transport-JP8YHBuU.js → worker.transport-C6GNl_r2.js} +44 -14
  174. package/dist/worker.transport-C6GNl_r2.js.map +1 -0
  175. package/dist/{worker.transport-otwhJ_Et.mjs → worker.transport-DLVA4y2e.mjs} +39 -9
  176. package/dist/worker.transport-DLVA4y2e.mjs.map +1 -0
  177. package/dist/{worker.transport-Bgv9heDI.d.mts → worker.transport-hJay1wxA.d.mts} +2 -6
  178. package/dist/worker.transport-hJay1wxA.d.mts.map +1 -0
  179. package/package.json +36 -19
  180. package/dist/async-context-BzJrbfQs.mjs +0 -72
  181. package/dist/async-context-BzJrbfQs.mjs.map +0 -1
  182. package/dist/async-context-DyQQYq3I.js +0 -92
  183. package/dist/async-context-DyQQYq3I.js.map +0 -1
  184. package/dist/azure-monitor.transport-BDFO4F-i.d.ts.map +0 -1
  185. package/dist/azure-monitor.transport-CHnjVRF-.mjs.map +0 -1
  186. package/dist/azure-monitor.transport-CrvfHd9C.js.map +0 -1
  187. package/dist/azure-monitor.transport-D5wQEH04.d.mts.map +0 -1
  188. package/dist/batch-buffer-BY-mRWIK.js.map +0 -1
  189. package/dist/batch-buffer-PGvSgbmd.mjs.map +0 -1
  190. package/dist/chunk-DLSkYcPk.mjs +0 -7
  191. package/dist/chunk-nOFOJqeH.js +0 -30
  192. package/dist/cloudwatch.transport-B00st6Xv.d.ts.map +0 -1
  193. package/dist/cloudwatch.transport-BO1ahxw-.js.map +0 -1
  194. package/dist/cloudwatch.transport-Blc7Gtxt.d.mts.map +0 -1
  195. package/dist/cloudwatch.transport-DZ6ies7g.mjs.map +0 -1
  196. package/dist/entry-fields-BJkuPnIg.mjs.map +0 -1
  197. package/dist/entry-fields-BvOLFlJ4.js.map +0 -1
  198. package/dist/gcp.transport-CHV8MGgz.js.map +0 -1
  199. package/dist/gcp.transport-DBX5TPIy.mjs.map +0 -1
  200. package/dist/gcp.transport-m4fVw0b1.d.ts.map +0 -1
  201. package/dist/gcp.transport-zzNyIoih.d.mts.map +0 -1
  202. package/dist/index-BPwEisy4.d.mts.map +0 -1
  203. package/dist/index-nZEeCr3X.d.ts.map +0 -1
  204. package/dist/internal-log-BUJYMZbE.js +0 -70
  205. package/dist/internal-log-BUJYMZbE.js.map +0 -1
  206. package/dist/internal-log-Cm8SOWSV.mjs +0 -52
  207. package/dist/internal-log-Cm8SOWSV.mjs.map +0 -1
  208. package/dist/nestjs-extras-DnJ6vrIC.js.map +0 -1
  209. package/dist/nestjs-extras-ImbuDhs1.mjs.map +0 -1
  210. package/dist/nestjs-extras-OkC796py.d.mts +0 -725
  211. package/dist/nestjs-extras-OkC796py.d.mts.map +0 -1
  212. package/dist/nestjs-extras-mKrHE9S6.d.ts +0 -725
  213. package/dist/nestjs-extras-mKrHE9S6.d.ts.map +0 -1
  214. package/dist/safe-stringify-DJ66tW5I.mjs.map +0 -1
  215. package/dist/safe-stringify-DWo3aZp_.js.map +0 -1
  216. package/dist/search-B0MH1SJJ.js.map +0 -1
  217. package/dist/search-BfBzDIT9.d.mts.map +0 -1
  218. package/dist/search-CHUZPl0h.d.ts.map +0 -1
  219. package/dist/search-DjXSn6v5.mjs.map +0 -1
  220. package/dist/trace.utils-CvXgaiQT.mjs.map +0 -1
  221. package/dist/trace.utils-DpBOLDtq.js.map +0 -1
  222. package/dist/transport.manager-CpdVHEGP.mjs.map +0 -1
  223. package/dist/transport.manager-Crau3Rle.js.map +0 -1
  224. package/dist/transport.types-CtNr3D7S.d.mts.map +0 -1
  225. package/dist/transport.types-DqVLZTyf.d.ts.map +0 -1
  226. package/dist/worker.transport-Bgv9heDI.d.mts.map +0 -1
  227. package/dist/worker.transport-Bj-i0P9V.d.ts.map +0 -1
  228. package/dist/worker.transport-JP8YHBuU.js.map +0 -1
  229. package/dist/worker.transport-otwhJ_Et.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- //#region src/utils/safe-stringify.ts
1
+ // src/utils/safe-stringify.ts
2
2
  /** Build a JSONPath like `$["a"][0]["b"]` for a decycle pointer. */
3
3
  function jsonPath(parts) {
4
4
  let path = "$";
@@ -112,7 +112,6 @@ function stringifyForLog(value) {
112
112
  }
113
113
  }
114
114
  }
115
-
116
- //#endregion
117
115
  export { stringifyForLog as i, retrocycle as n, safeStringify as r, decycleValue as t };
118
- //# sourceMappingURL=safe-stringify-DJ66tW5I.mjs.map
116
+
117
+ //# sourceMappingURL=safe-stringify-BMRl3EX3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-stringify-BMRl3EX3.mjs","names":[],"sources":["../src/utils/safe-stringify.ts"],"sourcesContent":["/**\n * logixia — robust JSON serialization for log payloads.\n *\n * Modern Winston/Pino already neutralize circular refs to `[Circular]` (via\n * safe-stable-stringify / fast-safe-stringify), so merely \"surviving cycles\" is\n * not a differentiator. This goes one notch further:\n *\n * - **BigInt** → serialized (as a string by default; JSON.stringify throws on\n * BigInt, which silently breaks logging of e.g. DB bigint ids).\n * - **Deterministic key order** (optional) so identical objects hash/diff equal.\n * - **True decycle** (optional) — replace repeated references with JSONPath\n * `$ref` pointers that round-trip back to the original object graph, instead\n * of the lossy `[Circular]` tag. Useful when you need to reconstruct shared\n * structure downstream.\n *\n * @example\n * ```ts\n * safeStringify({ id: 10n, self: obj }); // → BigInt + cycle safe\n * safeStringify(graph, { decycle: true }); // → round-trippable $ref pointers\n * const back = retrocycle(JSON.parse(json)); // → reconstruct shared refs\n * ```\n */\n\nexport interface SafeStringifyOptions {\n /** Indentation passed to JSON.stringify (number of spaces or a string). */\n indent?: number | string;\n /** Sort object keys for deterministic output. Default: false. */\n deterministic?: boolean;\n /**\n * Use round-trippable `$ref` JSONPath pointers for repeated references instead\n * of the lossy \"[Circular]\" tag. Default: false.\n */\n decycle?: boolean;\n /** How to render BigInt: 'string' (default) or 'number' (may lose precision). */\n bigint?: 'string' | 'number';\n}\n\n/** Build a JSONPath like `$[\"a\"][0][\"b\"]` for a decycle pointer. */\nfunction jsonPath(parts: Array<string | number>): string {\n let path = '$';\n for (const p of parts) {\n path += typeof p === 'number' ? `[${p}]` : `[${JSON.stringify(p)}]`;\n }\n return path;\n}\n\n/**\n * Serialize any value to JSON without throwing on circular references or BigInt.\n * Circular refs become `\"[Circular]\"` (or `{ $ref }` pointers when `decycle`).\n */\nexport function safeStringify(value: unknown, options: SafeStringifyOptions = {}): string {\n const { indent, deterministic = false, decycle = false, bigint = 'string' } = options;\n\n if (decycle) {\n return JSON.stringify(decycleValue(value, bigint), undefined, indent);\n }\n\n const seen = new WeakSet<object>();\n\n const transform = (val: unknown): unknown => {\n if (typeof val === 'bigint') return bigint === 'number' ? Number(val) : val.toString();\n if (typeof val === 'function') return `[Function: ${val.name || 'anonymous'}]`;\n if (typeof val === 'symbol') return val.toString();\n if (val === null || typeof val !== 'object') return val;\n\n if (seen.has(val)) return '[Circular]';\n seen.add(val);\n\n let out: unknown;\n const toJSON = (val as { toJSON?: unknown }).toJSON;\n if (Array.isArray(val)) {\n out = val.map((item) => transform(item));\n } else if (typeof toJSON === 'function') {\n // Dates, URLs, Buffers and classes with their own toJSON print the way\n // JSON.stringify would; a toJSON that returns `this` hits the cycle check.\n out = transform(toJSON.call(val));\n } else {\n const rec = val as Record<string, unknown>;\n const keys = deterministic ? Object.keys(rec).sort() : Object.keys(rec);\n const obj: Record<string, unknown> = {};\n for (const k of keys) {\n if (k === '__proto__' || k === 'constructor' || k === 'prototype') continue;\n obj[k] = transform(rec[k]);\n }\n out = obj;\n }\n // Allow the same object to appear in sibling branches (not a true cycle):\n // remove from `seen` after we finish its subtree.\n seen.delete(val);\n return out;\n };\n\n return JSON.stringify(transform(value), undefined, indent);\n}\n\n/**\n * Replace repeated object references with round-trippable `{ \"$ref\": \"$...\" }`\n * JSONPath pointers (the classic Crockford decycle). Pair with {@link retrocycle}\n * to reconstruct the original shared/circular graph.\n */\nexport function decycleValue(value: unknown, bigint: 'string' | 'number' = 'string'): unknown {\n const paths = new WeakMap<object, string>();\n\n const walk = (val: unknown, path: Array<string | number>): unknown => {\n if (typeof val === 'bigint') return bigint === 'number' ? Number(val) : val.toString();\n if (val === null || typeof val !== 'object') return val;\n if (val instanceof Date) return val.toISOString();\n\n const existing = paths.get(val);\n if (existing !== undefined) return { $ref: existing };\n paths.set(val, jsonPath(path));\n\n if (Array.isArray(val)) {\n return val.map((item, i) => walk(item, [...path, i]));\n }\n const rec = val as Record<string, unknown>;\n const obj: Record<string, unknown> = {};\n for (const k of Object.keys(rec)) {\n if (k === '__proto__' || k === 'constructor' || k === 'prototype') continue;\n obj[k] = walk(rec[k], [...path, k]);\n }\n return obj;\n };\n\n return walk(value, []);\n}\n\n/**\n * Inverse of {@link decycleValue}: resolve `{ \"$ref\": \"$...\" }` pointers back\n * into the live object graph (mutates and returns the parsed input).\n */\nexport function retrocycle<T>(root: T): T {\n const refRe = /^\\$(?:\\[(?:\\d+|\"(?:[^\"\\\\]|\\\\.)*\")\\])*$/;\n\n const resolve = (path: string): unknown => {\n // Parse the JSONPath segments back out.\n const segs: Array<string | number> = [];\n const partRe = /\\[(\\d+|\"(?:[^\"\\\\]|\\\\.)*\")\\]/g;\n let m: RegExpExecArray | null;\n while ((m = partRe.exec(path)) !== null) {\n const raw = m[1]!;\n segs.push(raw.startsWith('\"') ? (JSON.parse(raw) as string) : Number(raw));\n }\n let node: unknown = root;\n for (const s of segs) {\n node = (node as Record<string | number, unknown>)[s];\n }\n return node;\n };\n\n const walk = (val: unknown): void => {\n if (val === null || typeof val !== 'object') return;\n const rec = val as Record<string, unknown>;\n for (const k of Object.keys(rec)) {\n const child = rec[k];\n if (\n child !== null &&\n typeof child === 'object' &&\n typeof (child as { $ref?: unknown }).$ref === 'string' &&\n refRe.test((child as { $ref: string }).$ref)\n ) {\n rec[k] = resolve((child as { $ref: string }).$ref);\n } else {\n walk(child);\n }\n }\n };\n\n walk(root);\n return root;\n}\n\n/**\n * `JSON.stringify` for log output. Takes the plain fast path first and only\n * falls back to {@link safeStringify} when that throws (a cycle, a BigInt, a\n * throwing `toJSON`), so a bad payload costs nothing until it shows up.\n * Never throws: if even the safe walk fails, the value is replaced by a marker.\n */\nexport function stringifyForLog(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch {\n try {\n return safeStringify(value);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n return JSON.stringify(`[Unserializable: ${reason}]`);\n }\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
-
2
- //#region src/utils/safe-stringify.ts
1
+ // src/utils/safe-stringify.ts
3
2
  /** Build a JSONPath like `$["a"][0]["b"]` for a decycle pointer. */
4
3
  function jsonPath(parts) {
5
4
  let path = "$";
@@ -113,30 +112,29 @@ function stringifyForLog(value) {
113
112
  }
114
113
  }
115
114
  }
116
-
117
- //#endregion
118
- Object.defineProperty(exports, 'decycleValue', {
119
- enumerable: true,
120
- get: function () {
121
- return decycleValue;
122
- }
115
+ Object.defineProperty(exports, "decycleValue", {
116
+ enumerable: true,
117
+ get: function() {
118
+ return decycleValue;
119
+ }
123
120
  });
124
- Object.defineProperty(exports, 'retrocycle', {
125
- enumerable: true,
126
- get: function () {
127
- return retrocycle;
128
- }
121
+ Object.defineProperty(exports, "retrocycle", {
122
+ enumerable: true,
123
+ get: function() {
124
+ return retrocycle;
125
+ }
129
126
  });
130
- Object.defineProperty(exports, 'safeStringify', {
131
- enumerable: true,
132
- get: function () {
133
- return safeStringify;
134
- }
127
+ Object.defineProperty(exports, "safeStringify", {
128
+ enumerable: true,
129
+ get: function() {
130
+ return safeStringify;
131
+ }
135
132
  });
136
- Object.defineProperty(exports, 'stringifyForLog', {
137
- enumerable: true,
138
- get: function () {
139
- return stringifyForLog;
140
- }
133
+ Object.defineProperty(exports, "stringifyForLog", {
134
+ enumerable: true,
135
+ get: function() {
136
+ return stringifyForLog;
137
+ }
141
138
  });
142
- //# sourceMappingURL=safe-stringify-DWo3aZp_.js.map
139
+
140
+ //# sourceMappingURL=safe-stringify-DLz1Kz3o.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-stringify-DLz1Kz3o.js","names":[],"sources":["../src/utils/safe-stringify.ts"],"sourcesContent":["/**\n * logixia — robust JSON serialization for log payloads.\n *\n * Modern Winston/Pino already neutralize circular refs to `[Circular]` (via\n * safe-stable-stringify / fast-safe-stringify), so merely \"surviving cycles\" is\n * not a differentiator. This goes one notch further:\n *\n * - **BigInt** → serialized (as a string by default; JSON.stringify throws on\n * BigInt, which silently breaks logging of e.g. DB bigint ids).\n * - **Deterministic key order** (optional) so identical objects hash/diff equal.\n * - **True decycle** (optional) — replace repeated references with JSONPath\n * `$ref` pointers that round-trip back to the original object graph, instead\n * of the lossy `[Circular]` tag. Useful when you need to reconstruct shared\n * structure downstream.\n *\n * @example\n * ```ts\n * safeStringify({ id: 10n, self: obj }); // → BigInt + cycle safe\n * safeStringify(graph, { decycle: true }); // → round-trippable $ref pointers\n * const back = retrocycle(JSON.parse(json)); // → reconstruct shared refs\n * ```\n */\n\nexport interface SafeStringifyOptions {\n /** Indentation passed to JSON.stringify (number of spaces or a string). */\n indent?: number | string;\n /** Sort object keys for deterministic output. Default: false. */\n deterministic?: boolean;\n /**\n * Use round-trippable `$ref` JSONPath pointers for repeated references instead\n * of the lossy \"[Circular]\" tag. Default: false.\n */\n decycle?: boolean;\n /** How to render BigInt: 'string' (default) or 'number' (may lose precision). */\n bigint?: 'string' | 'number';\n}\n\n/** Build a JSONPath like `$[\"a\"][0][\"b\"]` for a decycle pointer. */\nfunction jsonPath(parts: Array<string | number>): string {\n let path = '$';\n for (const p of parts) {\n path += typeof p === 'number' ? `[${p}]` : `[${JSON.stringify(p)}]`;\n }\n return path;\n}\n\n/**\n * Serialize any value to JSON without throwing on circular references or BigInt.\n * Circular refs become `\"[Circular]\"` (or `{ $ref }` pointers when `decycle`).\n */\nexport function safeStringify(value: unknown, options: SafeStringifyOptions = {}): string {\n const { indent, deterministic = false, decycle = false, bigint = 'string' } = options;\n\n if (decycle) {\n return JSON.stringify(decycleValue(value, bigint), undefined, indent);\n }\n\n const seen = new WeakSet<object>();\n\n const transform = (val: unknown): unknown => {\n if (typeof val === 'bigint') return bigint === 'number' ? Number(val) : val.toString();\n if (typeof val === 'function') return `[Function: ${val.name || 'anonymous'}]`;\n if (typeof val === 'symbol') return val.toString();\n if (val === null || typeof val !== 'object') return val;\n\n if (seen.has(val)) return '[Circular]';\n seen.add(val);\n\n let out: unknown;\n const toJSON = (val as { toJSON?: unknown }).toJSON;\n if (Array.isArray(val)) {\n out = val.map((item) => transform(item));\n } else if (typeof toJSON === 'function') {\n // Dates, URLs, Buffers and classes with their own toJSON print the way\n // JSON.stringify would; a toJSON that returns `this` hits the cycle check.\n out = transform(toJSON.call(val));\n } else {\n const rec = val as Record<string, unknown>;\n const keys = deterministic ? Object.keys(rec).sort() : Object.keys(rec);\n const obj: Record<string, unknown> = {};\n for (const k of keys) {\n if (k === '__proto__' || k === 'constructor' || k === 'prototype') continue;\n obj[k] = transform(rec[k]);\n }\n out = obj;\n }\n // Allow the same object to appear in sibling branches (not a true cycle):\n // remove from `seen` after we finish its subtree.\n seen.delete(val);\n return out;\n };\n\n return JSON.stringify(transform(value), undefined, indent);\n}\n\n/**\n * Replace repeated object references with round-trippable `{ \"$ref\": \"$...\" }`\n * JSONPath pointers (the classic Crockford decycle). Pair with {@link retrocycle}\n * to reconstruct the original shared/circular graph.\n */\nexport function decycleValue(value: unknown, bigint: 'string' | 'number' = 'string'): unknown {\n const paths = new WeakMap<object, string>();\n\n const walk = (val: unknown, path: Array<string | number>): unknown => {\n if (typeof val === 'bigint') return bigint === 'number' ? Number(val) : val.toString();\n if (val === null || typeof val !== 'object') return val;\n if (val instanceof Date) return val.toISOString();\n\n const existing = paths.get(val);\n if (existing !== undefined) return { $ref: existing };\n paths.set(val, jsonPath(path));\n\n if (Array.isArray(val)) {\n return val.map((item, i) => walk(item, [...path, i]));\n }\n const rec = val as Record<string, unknown>;\n const obj: Record<string, unknown> = {};\n for (const k of Object.keys(rec)) {\n if (k === '__proto__' || k === 'constructor' || k === 'prototype') continue;\n obj[k] = walk(rec[k], [...path, k]);\n }\n return obj;\n };\n\n return walk(value, []);\n}\n\n/**\n * Inverse of {@link decycleValue}: resolve `{ \"$ref\": \"$...\" }` pointers back\n * into the live object graph (mutates and returns the parsed input).\n */\nexport function retrocycle<T>(root: T): T {\n const refRe = /^\\$(?:\\[(?:\\d+|\"(?:[^\"\\\\]|\\\\.)*\")\\])*$/;\n\n const resolve = (path: string): unknown => {\n // Parse the JSONPath segments back out.\n const segs: Array<string | number> = [];\n const partRe = /\\[(\\d+|\"(?:[^\"\\\\]|\\\\.)*\")\\]/g;\n let m: RegExpExecArray | null;\n while ((m = partRe.exec(path)) !== null) {\n const raw = m[1]!;\n segs.push(raw.startsWith('\"') ? (JSON.parse(raw) as string) : Number(raw));\n }\n let node: unknown = root;\n for (const s of segs) {\n node = (node as Record<string | number, unknown>)[s];\n }\n return node;\n };\n\n const walk = (val: unknown): void => {\n if (val === null || typeof val !== 'object') return;\n const rec = val as Record<string, unknown>;\n for (const k of Object.keys(rec)) {\n const child = rec[k];\n if (\n child !== null &&\n typeof child === 'object' &&\n typeof (child as { $ref?: unknown }).$ref === 'string' &&\n refRe.test((child as { $ref: string }).$ref)\n ) {\n rec[k] = resolve((child as { $ref: string }).$ref);\n } else {\n walk(child);\n }\n }\n };\n\n walk(root);\n return root;\n}\n\n/**\n * `JSON.stringify` for log output. Takes the plain fast path first and only\n * falls back to {@link safeStringify} when that throws (a cycle, a BigInt, a\n * throwing `toJSON`), so a bad payload costs nothing until it shows up.\n * Never throws: if even the safe walk fails, the value is replaced by a marker.\n */\nexport function stringifyForLog(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch {\n try {\n return safeStringify(value);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n return JSON.stringify(`[Unserializable: ${reason}]`);\n }\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,4 @@
1
- import { h as LogEntry } from "./index-nZEeCr3X.js";
2
-
3
- //#region src/search/types/search.types.d.ts
4
-
1
+ import { h as LogEntry } from "./index-xqaJtAZn.mjs";
5
2
  /**
6
3
  * Search filter options
7
4
  */
@@ -261,8 +258,6 @@ interface ExportOptions {
261
258
  filename?: string;
262
259
  fields?: string[];
263
260
  }
264
- //#endregion
265
- //#region src/search/search-manager.d.ts
266
261
  /**
267
262
  * Configuration for search manager
268
263
  */
@@ -395,8 +390,6 @@ declare class SearchManager {
395
390
  private filterFields;
396
391
  private getNestedValue;
397
392
  }
398
- //#endregion
399
- //#region src/search/core/log-indexer.interface.d.ts
400
393
  /**
401
394
  * Log indexer interface
402
395
  */
@@ -446,8 +439,6 @@ interface ILogIndexer {
446
439
  */
447
440
  removeOldLogs(olderThan: Date): Promise<number>;
448
441
  }
449
- //#endregion
450
- //#region src/search/core/basic-log-indexer.d.ts
451
442
  /**
452
443
  * Basic log indexer implementation
453
444
  */
@@ -528,8 +519,6 @@ declare class BasicLogIndexer implements ILogIndexer {
528
519
  private removeOldestLogs;
529
520
  private clusterLogs;
530
521
  }
531
- //#endregion
532
- //#region src/search/core/search-engine.interface.d.ts
533
522
  /**
534
523
  * Main search engine interface
535
524
  */
@@ -597,8 +586,6 @@ interface ILogSearchEngine {
597
586
  */
598
587
  deletePreset(presetId: string): Promise<void>;
599
588
  }
600
- //#endregion
601
- //#region src/search/core/basic-search-engine.d.ts
602
589
  /**
603
590
  * Basic search engine implementation
604
591
  */
@@ -687,8 +674,6 @@ declare class BasicSearchEngine implements ILogSearchEngine {
687
674
  private getTopTerms;
688
675
  private generateId;
689
676
  }
690
- //#endregion
691
- //#region src/search/engines/correlation-engine.d.ts
692
677
  /**
693
678
  * Correlation engine for log analysis
694
679
  */
@@ -740,8 +725,6 @@ declare class CorrelationEngine {
740
725
  private convertToCorrelatedLogs;
741
726
  private generateSummary;
742
727
  }
743
- //#endregion
744
- //#region src/search/engines/nlp-search-engine.d.ts
745
728
  /**
746
729
  * NLP-enhanced search engine
747
730
  */
@@ -766,8 +749,6 @@ declare class NLPSearchEngine extends BasicSearchEngine {
766
749
  private getOptionsForIntent;
767
750
  private extractCleanQuery;
768
751
  }
769
- //#endregion
770
- //#region src/search/engines/pattern-recognition-engine.d.ts
771
752
  /**
772
753
  * Pattern recognition engine for log analysis
773
754
  */
@@ -810,6 +791,5 @@ declare class PatternRecognitionEngine {
810
791
  private findDeviations;
811
792
  private doesLogMatchPattern;
812
793
  }
813
- //#endregion
814
794
  export { SearchStats as A, SearchFilters as C, SearchPreset as D, SearchOptions as E, SuggestionType as F, TimeRange as I, TimelineEvent as L, SemanticIndex as M, SimilarLog as N, SearchQuery as O, SortField as P, RelativeTime as S, SearchMatch as T, ParsedNLQuery as _, ILogSearchEngine as a, RelatedLog as b, SearchManager as c, CorrelatedLogs as d, EntityType as f, LogPattern as g, LogCorrelationSummary as h, BasicSearchEngine as i, SearchSuggestion as j, SearchResult as k, SearchManagerConfig as l, LogCluster as m, NLPSearchEngine as n, BasicLogIndexer as o, ExportOptions as p, CorrelationEngine as r, ILogIndexer as s, PatternRecognitionEngine as t, AnomalyDetection as u, QueryEntity as v, SearchHighlight as w, RelationshipType as x, QueryIntent as y };
815
- //# sourceMappingURL=search-CHUZPl0h.d.ts.map
795
+ //# sourceMappingURL=search-BH33XhuU.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-BH33XhuU.d.mts","names":[],"sources":["../src/search/types/search.types.ts","../src/search/search-manager.ts","../src/search/core/log-indexer.interface.ts","../src/search/core/basic-log-indexer.ts","../src/search/core/search-engine.interface.ts","../src/search/core/basic-search-engine.ts","../src/search/engines/correlation-engine.ts","../src/search/engines/nlp-search-engine.ts","../src/search/engines/pattern-recognition-engine.ts"],"mappings":";;;;UASiB;EACf;EACA;EACA;EACA,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;;;;;UAMA;EACf,OAAO;EACP,MAAM;EACN,WAAW;;;;;UAMI;EACf;EACA;;;;;UAMe;EACf,KAAK;EACL;EACA,aAAa;EACb,UAAU;EACV,UAAU;EACV,cAAc;;;;;UAMC;EACf;EACA;EACA;;;;;UAMe;EACf;EACA;EACA;EACA;;;;;UAMe;EACf,KAAK;EACL,cAAc;EACd;;;;;KAMU;;;;UAWK;EACf;EACA;EACA,MAAM;EACN,UAAU;EACV,UAAU;;;;;UAMK;EACf,WAAW;EACX,KAAK;EACL;EACA;;;;;UAMe;EACf;EACA;EACA;EACA;EACA;EACA,eAAe;;;;;UAMA;EACf,KAAK;EACL;EACA;EACA;;;;;UAMe;EACf;EACA,UAAU;EACV,UAAU;EACV,WAAW;EACX;;;;;UAMe;EACf;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;;;;;KAMU;;;;UAKK;EACf;EACA,MAAM;EACN;EACA;EACA,WAAW;;;;;KAMD;;;;UAMK;EACf;EACA;EACA;EACA;EACA;;;;;UAMe;EACf;EACA;EACA,aAAa;EACb,aAAa;EACb,WAAW;;;;;UAMI;EACf;EACA;EACA,MAAM;EACN;EACA;EACA;;;;;UAMe;EACf;EACA;EACA,QAAQ;EACR,UAAU;EACV;EACA,UAAU;EACV;EACA;;;;;UAMe;EACf,KAAK;EACL;EACA;EACA;EACA;;;;;UAMe;EACf;EACA,QAAQ;EACR,UAAU;EACV,SAAS;EACT,YAAY;EACZ;;;;;KAMU;;;;UAaK;EACf,MAAM;EACN;EACA;EACA;;;;;KAMU;;;;UAMK;EACf;EACA;EACA;EACA;EACA,SAAS;EACT,SAAS;EACT,WAAW;EACX,WAAW;EACX;EACA;;;;;UAMe;EACf;EACA;EACA;EACA;;;;;UCpRe;EACf;EACA;EACA;EACA;EACA;;;;;cAMW;UACH;UACA;UACA;UACA;UACA;EAEI,YAAA,SAAS;;;;EA8Bf,UAAU,MAAM,aAAa;;;;EAa7B,SAAS,KAAK,WAAW;;;;EAQzB,OACJ,eACA,UAAU,eACV,UAAU,gBACT,QAAQ;;;;EAOL,sBAAsB,gBAAgB,QAAQ;;;;EAO9C,mBAAmB,kBAAkB,QAAQ;;;;EAO7C,gBAAgB,UAAU,UAAU,iBAAiB,QAAQ;;;;EAO7D,gBAAgB,KAAK,UAAU,iBAAiB,QAAQ;;;;EAYxD,eAAe,sBAAsB,iBAAiB,QAAQ;;;;EAO9D,YAAY,QAAQ;;;;EAOpB,0BAA0B,gBAAgB,QAAQ;;;;EAOlD,WACJ,QAAQ,KAAK,kDACZ,QAAQ;;;;EAOL,WAAW,kBAAkB,QAAQ;;;;EAOrC,aAAa,mBAAmB;;;;EAOhC,kBAAkB,QAAQ;;;;EAYhC,eAAe;;;;EAWT,mBAAmB,QAAQ;;;;EAY3B,4BAA4B;IAChC;IACA;IACA;IACA;IACA;MACE,QAAQ,YAAY;;;;EAYlB,oBAAoB,kBAAkB;IAC1C,YAAY;IACZ,SAAS;IACT;;;;;EAaI,cAAc,SAAS,gBAAgB,SAAS,gBAAgB;;;;EAgBhE,cAAc;;;;EAQd,iBAAiB;;;;EAOjB,iBAAiB;IACrB;IACA;IACA,gBAAgB;;;;;EAQZ,cAAc,WAAW,OAAO;UAe9B;UAcA;UAsBA;UAkBA;UAkBA;;;;;UCvXO;;;;;EAKf,SAAS,KAAK,WAAW;;;;;EAMzB,WAAW,MAAM,aAAa;;;;;;EAO9B,mBAAmB,MAAM,aAAa,QAAQ;;;;;EAM9C,wBAAwB,eAAe,gBAAgB;;;;EAKvD,iBAAiB;;;;EAKjB,cAAc;;;;;EAMd,iBAAiB;IACf;IACA;IACA,gBAAgB;;;;;;;EAQlB,cAAc,WAAW,OAAO;;;;;cClDrB,2BAA2B;UAgB5B;UAfF;UACA;UACA;UACA;;;;;;;;UAQA;mBACS;EAGP,YAAA;IACN;IACA;IACA;;;;;EAiBE,SAAS,KAAK,WAAW;;;;EA0BzB,WAAW,MAAM,aAAa;;;;EAgB9B,mBAAmB,MAAM,aAAa,QAAQ;;;;EAiB9C,wBAAwB,eAAe,gBAAgB;;;;EAgBvD,iBAAiB;;;;EAejB,cAAc;;;;EAYd,iBAAiB;IACrB;IACA;IACA,gBAAgB;;;;;EAYZ,cAAc,WAAW,OAAO;;;;EAmB/B,cAAc,eAAe,gBAAgB;;;;EAe7C,cAAc;UAMb;UAOA;UAyBA;UAWA;UAQA;UAKA;;UAOA;;UAYA;UASM;UAWA;;;;;UCvRC;;;;;;;;EAQf,OAAO,eAAe,UAAU,eAAe,UAAU,gBAAgB,QAAQ;;;;;;EAOjF,sBAAsB,gBAAgB,QAAQ;;;;;;EAO9C,mBAAmB,kBAAkB,QAAQ;;;;;;;EAQ7C,gBAAgB,UAAU,UAAU,iBAAiB,QAAQ;;;;;;;EAQ7D,eAAe,sBAAsB,iBAAiB,QAAQ;;;;;EAM9D,YAAY,QAAQ;;;;;;EAOpB,0BAA0B,gBAAgB,QAAQ;;;;;;EAOlD,WAAW,QAAQ,KAAK,kDAAkD,QAAQ;;;;;;EAOlF,WAAW,kBAAkB,QAAQ;;;;;EAMrC,aAAa,mBAAmB;;;;;cCjErB,6BAA6B;UAMpB;UALZ;UACA;UACA;UACA;EAEY,YAAA;IAAY;IAAyB;IAAoB;;;;;;;;;;;EAkBtE,QAAQ,MAAM;;;;EAYd;;;;EAOA,WAAW;;;;EAOZ,OACJ,eACA,UAAU,eACV,UAAU,gBACT,QAAQ;;;;EA2BL,sBAAsB,gBAAgB,QAAQ;;;;EAW9C,mBAAmB,kBAAkB,QAAQ;;;;EAuD7C,gBAAgB,UAAU,UAAU,iBAAqB,QAAQ;;;;EAyBjE,eAAe,sBAAsB,iBAAqB,QAAQ;;;;EAoElE,YAAY,QAAQ;;;;EAYpB,0BAA0B,gBAAgB,QAAQ;;;;EA+ClD,WACJ,QAAQ,KAAK,kDACZ,QAAQ;;;;EAkBL,WAAW,kBAAkB,QAAQ;;;;EAarC,aAAa,mBAAmB;UAM9B;UAqDA;UA+CA;UAUA;UAgBA;UA8BA;UAQM;UAWN;UA8BA;UAUA;UAWA;UAYA;UA8BA;UAUA;UAmBA;;;;;cCroBG;UAED;EAAA,YAAA;IACN;IACA;IACA;;;;;EAcE,gBACJ,KAAK,UACL,SAAS,YACT,iBACC,QAAQ;;;;EA6BL,4BACJ,MAAM,YACN;IACE;IACA;IACA;IACA;IACA;MAED,QAAQ,YAAY;;;;EAiDvB,cAAc,MAAM,aAAa;;;;EAuC3B,oBACJ,MAAM,aACL;IAAU,YAAY;IAAU,SAAS;IAAY;;UA2BhD;UAeA;UAgBA;UAgBA;UAsCA;UAgBA;UA2BA;UA8CA;UAwBA;UAOA;UAQA;UA0BA;UAcA;UAwBA;;;;;cCpcG,wBAAwB;UAC3B;UACA;EAEI,YAAA,UAAU;;;;EAQP,0BAA0B,gBAAgB,QAAQ;;;;EAsClD,sBAAsB,gBAAgB,QAAQ;UAcrD;UA6EA;UAqBA;UAmBA;UA4BA;UAwDA;UAoBA;UAwDA;;;;;cCpVG;UAKD;UAJF;UACA;EAGE,YAAA;IACN;IACA;IACA;;;;;EAcE,gBAAgB,MAAM,aAAa,QAAQ;;;;EAmC3C,gBAAgB,MAAM,aAAa,QAAQ;;;;EAsBjD,qBAAqB,KAAK,WAAW;;;;EAerC,eAAe;;;;EAOf,WAAW,oBAAoB;UAMvB;UA+BA;UAiCA;UA2BA;UAUA;UAOM;UA2BN;UA4BA;UAoBA"}
@@ -1,6 +1,5 @@
1
- import { t as safeToString } from "./coerce.utils-Cu6IUTgX.mjs";
2
-
3
- //#region src/utils/csv.utils.ts
1
+ import { t as safeToString } from "./coerce.utils-B_rEudCn.mjs";
2
+ // src/utils/csv.utils.ts
4
3
  const CSV_FORMULA_PREFIX = /^[=+\-@\t\r]/;
5
4
  /**
6
5
  * Render one CSV field. String values that a spreadsheet would treat as a
@@ -17,9 +16,7 @@ function csvField(value, alwaysQuote = false) {
17
16
  if (alwaysQuote || /[",\r\n]/.test(str)) return `"${str.replace(/"/g, "\"\"")}"`;
18
17
  return str;
19
18
  }
20
-
21
- //#endregion
22
- //#region src/search/core/basic-log-indexer.ts
19
+ // src/search/core/basic-log-indexer.ts
23
20
  /**
24
21
  * Basic log indexer implementation
25
22
  */
@@ -220,9 +217,7 @@ var BasicLogIndexer = class {
220
217
  }));
221
218
  }
222
219
  };
223
-
224
- //#endregion
225
- //#region src/search/core/basic-search-engine.ts
220
+ // src/search/core/basic-search-engine.ts
226
221
  /**
227
222
  * Basic search engine implementation
228
223
  */
@@ -541,11 +536,7 @@ var BasicSearchEngine = class {
541
536
  case "level":
542
537
  comparison = a.log.level.localeCompare(b.log.level);
543
538
  break;
544
- case "score":
545
- case "relevance":
546
- default:
547
- comparison = a.score - b.score;
548
- break;
539
+ default: comparison = a.score - b.score;
549
540
  }
550
541
  return sortOrder === "asc" ? comparison : -comparison;
551
542
  });
@@ -582,7 +573,7 @@ var BasicSearchEngine = class {
582
573
  const words1 = new Set(text1.toLowerCase().split(/\s+/));
583
574
  const words2 = new Set(text2.toLowerCase().split(/\s+/));
584
575
  const intersection = new Set([...words1].filter((x) => words2.has(x)));
585
- const union = new Set([...words1, ...words2]);
576
+ const union = /* @__PURE__ */ new Set([...words1, ...words2]);
586
577
  return union.size > 0 ? intersection.size / union.size : 0;
587
578
  }
588
579
  findMatchedPatterns(log1, log2) {
@@ -602,7 +593,7 @@ var BasicSearchEngine = class {
602
593
  }
603
594
  extractTimeRange(query) {
604
595
  const lowerQuery = query.toLowerCase();
605
- if (lowerQuery.includes("last hour") || lowerQuery.includes("past hour")) return { start: /* @__PURE__ */ new Date(Date.now() - 3600 * 1e3) };
596
+ if (lowerQuery.includes("last hour") || lowerQuery.includes("past hour")) return { start: /* @__PURE__ */ new Date(Date.now() - 36e5) };
606
597
  const hoursMatch = query.match(/last\s+(\d+)\s+hours?/i);
607
598
  if (hoursMatch) return { start: /* @__PURE__ */ new Date(Date.now() - Number.parseInt(hoursMatch[1] ?? "0") * 60 * 60 * 1e3) };
608
599
  if (lowerQuery.includes("today")) {
@@ -629,9 +620,7 @@ var BasicSearchEngine = class {
629
620
  return `preset_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
630
621
  }
631
622
  };
632
-
633
- //#endregion
634
- //#region src/search/engines/correlation-engine.ts
623
+ // src/search/engines/correlation-engine.ts
635
624
  /**
636
625
  * Correlation engine for log analysis
637
626
  */
@@ -640,7 +629,7 @@ var CorrelationEngine = class {
640
629
  this.options = options;
641
630
  this.options = {
642
631
  maxCorrelationDistance: 100,
643
- temporalWindowMs: 300 * 1e3,
632
+ temporalWindowMs: 3e5,
644
633
  minSimilarityScore: .3,
645
634
  ...options
646
635
  };
@@ -897,9 +886,10 @@ var CorrelationEngine = class {
897
886
  };
898
887
  }
899
888
  };
900
-
901
- //#endregion
902
- //#region src/search/engines/nlp-search-engine.ts
889
+ // src/search/engines/nlp-search-engine.ts
890
+ /**
891
+ * Advanced search engine with Natural Language Processing capabilities
892
+ */
903
893
  /**
904
894
  * NLP-enhanced search engine
905
895
  */
@@ -940,7 +930,7 @@ var NLPSearchEngine = class extends BasicSearchEngine {
940
930
  return this.search(cleanQuery, parsed.filters, options);
941
931
  }
942
932
  initializePatterns() {
943
- this.intentPatterns = new Map([
933
+ this.intentPatterns = /* @__PURE__ */ new Map([
944
934
  ["find_errors", [
945
935
  /show.*errors?/i,
946
936
  /find.*errors?/i,
@@ -984,7 +974,7 @@ var NLPSearchEngine = class extends BasicSearchEngine {
984
974
  /after.*occurred/i
985
975
  ]]
986
976
  ]);
987
- this.entityPatterns = new Map([
977
+ this.entityPatterns = /* @__PURE__ */ new Map([
988
978
  ["level", /(error|warn|warning|info|debug|trace|verbose)/i],
989
979
  ["service", /(?:from|in)\s+(?:the\s+)?(\w+)\s+(?:service|app|application)/i],
990
980
  ["user_id", /user\s+(?:id\s+)?['"]?(\w+)['"]?/i],
@@ -1038,8 +1028,6 @@ var NLPSearchEngine = class extends BasicSearchEngine {
1038
1028
  case "trace_id":
1039
1029
  if (!filters.traceIds) filters.traceIds = [];
1040
1030
  filters.traceIds.push(entity.value);
1041
- break;
1042
- case "error_type": break;
1043
1031
  }
1044
1032
  }
1045
1033
  extractAdvancedTimeRange(query) {
@@ -1067,9 +1055,9 @@ var NLPSearchEngine = class extends BasicSearchEngine {
1067
1055
  const value = Number.parseInt(match[1] ?? "0");
1068
1056
  const multiplier = {
1069
1057
  seconds: 1e3,
1070
- minutes: 60 * 1e3,
1071
- hours: 3600 * 1e3,
1072
- days: 1440 * 60 * 1e3
1058
+ minutes: 6e4,
1059
+ hours: 36e5,
1060
+ days: 864e5
1073
1061
  }[unit];
1074
1062
  return {
1075
1063
  start: new Date(Date.now() - value * multiplier),
@@ -1182,9 +1170,15 @@ var NLPSearchEngine = class extends BasicSearchEngine {
1182
1170
  return cleanQuery || query;
1183
1171
  }
1184
1172
  };
1185
-
1186
- //#endregion
1187
- //#region src/search/engines/pattern-recognition-engine.ts
1173
+ // src/search/engines/pattern-recognition-engine.ts
1174
+ const STACK_FRAME_TAIL = /:\d+:\d+\)?$/;
1175
+ /** True when any line is a real stack frame, e.g. ` at fn (/app/file.js:10:5)`. */
1176
+ function hasStackFrame(message) {
1177
+ return message.split("\n").some((line) => {
1178
+ const t = line.trim();
1179
+ return t.startsWith("at ") && STACK_FRAME_TAIL.test(t);
1180
+ });
1181
+ }
1188
1182
  /**
1189
1183
  * Pattern recognition engine for log analysis
1190
1184
  */
@@ -1284,6 +1278,7 @@ var PatternRecognitionEngine = class {
1284
1278
  }
1285
1279
  extractErrorPatterns(logs) {
1286
1280
  const errorLogs = logs.filter((log) => log.level === "error" || log.error);
1281
+ this.patternFrequencies.clear();
1287
1282
  const patternMap = /* @__PURE__ */ new Map();
1288
1283
  for (const log of errorLogs) {
1289
1284
  const errorPattern = this.extractErrorPattern(log);
@@ -1294,6 +1289,7 @@ var PatternRecognitionEngine = class {
1294
1289
  const pattern = patternMap.get(errorPattern);
1295
1290
  if (pattern.examples.length < 3) pattern.examples.push(log);
1296
1291
  pattern.count++;
1292
+ this.patternFrequencies.set(errorPattern, pattern.count);
1297
1293
  }
1298
1294
  return Array.from(patternMap.entries()).map(([pattern, data], index) => {
1299
1295
  var _data$examples2;
@@ -1327,7 +1323,7 @@ var PatternRecognitionEngine = class {
1327
1323
  return patterns;
1328
1324
  }
1329
1325
  normalizeMessage(message) {
1330
- return message.replace(/\d+/g, "<NUM>").replace(/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/gi, "<UUID>").replace(/[a-f0-9]{32}/gi, "<HASH>").replace(/"[^"]*"/g, "<STRING>").replace(/\b\w+@\w+\.\w+\b/g, "<EMAIL>").trim();
1326
+ return message.replace(/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/gi, "<UUID>").replace(/[a-f0-9]{32}/gi, "<HASH>").replace(/\d+/g, "<NUM>").replace(/"[^"]*"/g, "<STRING>").replace(/\b\w+@\w+\.\w+\b/g, "<EMAIL>").trim();
1331
1327
  }
1332
1328
  extractErrorPattern(log) {
1333
1329
  if (log.error) return `${log.error.name}: ${this.normalizeMessage(log.error.message || "")}`;
@@ -1360,7 +1356,7 @@ var PatternRecognitionEngine = class {
1360
1356
  if (!log.traceId) deviations.push("Missing trace ID");
1361
1357
  if (!log.context) deviations.push("Missing context");
1362
1358
  if (log.payload && Object.keys(log.payload).length > 20) deviations.push("Unusually large payload");
1363
- if (log.level !== "error" && log.message.includes("at ")) deviations.push("Stack trace in non-error log");
1359
+ if (log.level !== "error" && hasStackFrame(log.message)) deviations.push("Stack trace in non-error log");
1364
1360
  return deviations;
1365
1361
  }
1366
1362
  doesLogMatchPattern(log, pattern) {
@@ -1369,9 +1365,7 @@ var PatternRecognitionEngine = class {
1369
1365
  return normalizedMessage === pattern.pattern;
1370
1366
  }
1371
1367
  };
1372
-
1373
- //#endregion
1374
- //#region src/search/search-manager.ts
1368
+ // src/search/search-manager.ts
1375
1369
  /**
1376
1370
  * Main search manager class
1377
1371
  */
@@ -1603,7 +1597,6 @@ var SearchManager = class {
1603
1597
  }, obj);
1604
1598
  }
1605
1599
  };
1606
-
1607
- //#endregion
1608
1600
  export { BasicSearchEngine as a, CorrelationEngine as i, PatternRecognitionEngine as n, BasicLogIndexer as o, NLPSearchEngine as r, SearchManager as t };
1609
- //# sourceMappingURL=search-DjXSn6v5.mjs.map
1601
+
1602
+ //# sourceMappingURL=search-CWMVYC-R.mjs.map