@vibesdotdev/logging 0.0.1 → 1.0.0-rc.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 (700) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +89 -54
  3. package/dist/audit/audit-retention.job.descriptor.d.ts +60 -0
  4. package/dist/audit/audit-retention.job.descriptor.d.ts.map +1 -0
  5. package/dist/audit/audit-retention.job.descriptor.js +42 -0
  6. package/dist/audit/audit-retention.job.descriptor.js.map +1 -0
  7. package/dist/audit/audit-retention.job.impl.d.ts +23 -0
  8. package/dist/audit/audit-retention.job.impl.d.ts.map +1 -0
  9. package/dist/audit/audit-retention.job.impl.js +24 -0
  10. package/dist/audit/audit-retention.job.impl.js.map +1 -0
  11. package/dist/audit/audit.descriptor.d.ts +6 -0
  12. package/dist/audit/audit.descriptor.d.ts.map +1 -1
  13. package/dist/audit/audit.descriptor.js +72 -5
  14. package/dist/audit/audit.descriptor.js.map +1 -1
  15. package/dist/audit/audit.storage.schema.d.ts +3 -3
  16. package/dist/audit/index.d.ts +3 -1
  17. package/dist/audit/index.d.ts.map +1 -1
  18. package/dist/audit/index.js +4 -1
  19. package/dist/audit/index.js.map +1 -1
  20. package/dist/audit/scheduled-audit-retention.d.ts +39 -0
  21. package/dist/audit/scheduled-audit-retention.d.ts.map +1 -0
  22. package/dist/audit/scheduled-audit-retention.js +38 -0
  23. package/dist/audit/scheduled-audit-retention.js.map +1 -0
  24. package/dist/browser/capture-error.d.ts +66 -0
  25. package/dist/browser/capture-error.d.ts.map +1 -0
  26. package/dist/browser/capture-error.js +82 -0
  27. package/dist/browser/capture-error.js.map +1 -0
  28. package/dist/browser/index.d.ts +11 -0
  29. package/dist/browser/index.d.ts.map +1 -0
  30. package/dist/browser/index.js +16 -0
  31. package/dist/browser/index.js.map +1 -0
  32. package/dist/browser/logging-browser.plugin.d.ts +9 -0
  33. package/dist/browser/logging-browser.plugin.d.ts.map +1 -0
  34. package/dist/browser/logging-browser.plugin.js +26 -0
  35. package/dist/browser/logging-browser.plugin.js.map +1 -0
  36. package/dist/browser/plugin.d.ts +2 -0
  37. package/dist/browser/plugin.d.ts.map +1 -0
  38. package/dist/browser/plugin.js +2 -0
  39. package/dist/browser/plugin.js.map +1 -0
  40. package/dist/browser/read-errors.d.ts +26 -0
  41. package/dist/browser/read-errors.d.ts.map +1 -0
  42. package/dist/browser/read-errors.js +38 -0
  43. package/dist/browser/read-errors.js.map +1 -0
  44. package/dist/browser/sinks/browser/browser.browser.descriptor.d.ts +10 -0
  45. package/dist/browser/sinks/browser/browser.browser.descriptor.d.ts.map +1 -0
  46. package/dist/browser/sinks/browser/browser.browser.descriptor.js +23 -0
  47. package/dist/browser/sinks/browser/browser.browser.descriptor.js.map +1 -0
  48. package/dist/browser/sinks/browser/browser.impl.browser.d.ts +83 -0
  49. package/dist/browser/sinks/browser/browser.impl.browser.d.ts.map +1 -0
  50. package/dist/browser/sinks/browser/browser.impl.browser.js +247 -0
  51. package/dist/browser/sinks/browser/browser.impl.browser.js.map +1 -0
  52. package/dist/cli/failures.d.ts +29 -0
  53. package/dist/cli/failures.d.ts.map +1 -0
  54. package/dist/cli/failures.js +44 -0
  55. package/dist/cli/failures.js.map +1 -0
  56. package/dist/cli/flags.d.ts +24 -0
  57. package/dist/cli/flags.d.ts.map +1 -0
  58. package/dist/cli/flags.js +56 -0
  59. package/dist/cli/flags.js.map +1 -0
  60. package/dist/cli/log-line.d.ts +23 -0
  61. package/dist/cli/log-line.d.ts.map +1 -0
  62. package/dist/cli/log-line.js +39 -0
  63. package/dist/cli/log-line.js.map +1 -0
  64. package/dist/cli/logging.logs.descriptor.d.ts +9 -0
  65. package/dist/cli/logging.logs.descriptor.d.ts.map +1 -0
  66. package/dist/cli/logging.logs.descriptor.js +16 -0
  67. package/dist/cli/logging.logs.descriptor.js.map +1 -0
  68. package/dist/cli/logs.audit.cleanup.descriptor.d.ts +7 -0
  69. package/dist/cli/logs.audit.cleanup.descriptor.d.ts.map +1 -0
  70. package/dist/cli/logs.audit.cleanup.descriptor.js +21 -0
  71. package/dist/cli/logs.audit.cleanup.descriptor.js.map +1 -0
  72. package/dist/cli/logs.audit.cleanup.impl.d.ts +14 -0
  73. package/dist/cli/logs.audit.cleanup.impl.d.ts.map +1 -0
  74. package/dist/cli/logs.audit.cleanup.impl.js +60 -0
  75. package/dist/cli/logs.audit.cleanup.impl.js.map +1 -0
  76. package/dist/cli/logs.audit.descriptor.d.ts +9 -0
  77. package/dist/cli/logs.audit.descriptor.d.ts.map +1 -0
  78. package/dist/cli/logs.audit.descriptor.js +41 -0
  79. package/dist/cli/logs.audit.descriptor.js.map +1 -0
  80. package/dist/cli/logs.audit.group.descriptor.d.ts +7 -0
  81. package/dist/cli/logs.audit.group.descriptor.d.ts.map +1 -0
  82. package/dist/cli/logs.audit.group.descriptor.js +15 -0
  83. package/dist/cli/logs.audit.group.descriptor.js.map +1 -0
  84. package/dist/cli/logs.audit.impl.d.ts +19 -0
  85. package/dist/cli/logs.audit.impl.d.ts.map +1 -0
  86. package/dist/cli/logs.audit.impl.js +83 -0
  87. package/dist/cli/logs.audit.impl.js.map +1 -0
  88. package/dist/cli/logs.descriptor.d.ts +1 -8
  89. package/dist/cli/logs.descriptor.d.ts.map +1 -1
  90. package/dist/cli/logs.descriptor.js +1 -15
  91. package/dist/cli/logs.descriptor.js.map +1 -1
  92. package/dist/cli/logs.list.impl.d.ts +4 -1
  93. package/dist/cli/logs.list.impl.d.ts.map +1 -1
  94. package/dist/cli/logs.list.impl.js +60 -63
  95. package/dist/cli/logs.list.impl.js.map +1 -1
  96. package/dist/cli/logs.rotate.descriptor.d.ts.map +1 -1
  97. package/dist/cli/logs.rotate.descriptor.js +7 -3
  98. package/dist/cli/logs.rotate.descriptor.js.map +1 -1
  99. package/dist/cli/logs.rotate.impl.d.ts +3 -1
  100. package/dist/cli/logs.rotate.impl.d.ts.map +1 -1
  101. package/dist/cli/logs.rotate.impl.js +72 -33
  102. package/dist/cli/logs.rotate.impl.js.map +1 -1
  103. package/dist/cli/logs.search.descriptor.d.ts.map +1 -1
  104. package/dist/cli/logs.search.descriptor.js +4 -0
  105. package/dist/cli/logs.search.descriptor.js.map +1 -1
  106. package/dist/cli/logs.search.impl.d.ts +3 -1
  107. package/dist/cli/logs.search.impl.d.ts.map +1 -1
  108. package/dist/cli/logs.search.impl.js +114 -108
  109. package/dist/cli/logs.search.impl.js.map +1 -1
  110. package/dist/cli/logs.tail.descriptor.d.ts.map +1 -1
  111. package/dist/cli/logs.tail.descriptor.js +2 -1
  112. package/dist/cli/logs.tail.descriptor.js.map +1 -1
  113. package/dist/cli/logs.tail.impl.d.ts +4 -2
  114. package/dist/cli/logs.tail.impl.d.ts.map +1 -1
  115. package/dist/cli/logs.tail.impl.js +84 -57
  116. package/dist/cli/logs.tail.impl.js.map +1 -1
  117. package/dist/cli/logs.view.impl.d.ts +2 -6
  118. package/dist/cli/logs.view.impl.d.ts.map +1 -1
  119. package/dist/cli/logs.view.impl.js +32 -50
  120. package/dist/cli/logs.view.impl.js.map +1 -1
  121. package/dist/cli/output.d.ts +29 -0
  122. package/dist/cli/output.d.ts.map +1 -0
  123. package/dist/cli/output.js +29 -0
  124. package/dist/cli/output.js.map +1 -0
  125. package/dist/{logging.cli.plugin.d.ts → cli/plugin.d.ts} +3 -3
  126. package/dist/cli/plugin.d.ts.map +1 -0
  127. package/dist/cli/plugin.js +45 -0
  128. package/dist/cli/plugin.js.map +1 -0
  129. package/dist/cli/resolve-output.d.ts +25 -0
  130. package/dist/cli/resolve-output.d.ts.map +1 -0
  131. package/dist/cli/resolve-output.js +75 -0
  132. package/dist/cli/resolve-output.js.map +1 -0
  133. package/dist/cli/types.d.ts +13 -5
  134. package/dist/cli/types.d.ts.map +1 -1
  135. package/dist/cli/types.js +3 -3
  136. package/dist/client/logging-client.d.ts +31 -0
  137. package/dist/client/logging-client.d.ts.map +1 -0
  138. package/dist/client/logging-client.js +44 -0
  139. package/dist/client/logging-client.js.map +1 -0
  140. package/dist/config/file-rotation.d.ts +11 -0
  141. package/dist/config/file-rotation.d.ts.map +1 -0
  142. package/dist/config/file-rotation.js +18 -0
  143. package/dist/config/file-rotation.js.map +1 -0
  144. package/dist/config/load-config.d.ts +7 -0
  145. package/dist/config/load-config.d.ts.map +1 -0
  146. package/dist/config/load-config.js +68 -0
  147. package/dist/config/load-config.js.map +1 -0
  148. package/dist/config/logging.config.descriptor.d.ts +350 -0
  149. package/dist/config/logging.config.descriptor.d.ts.map +1 -0
  150. package/dist/config/logging.config.descriptor.js +208 -0
  151. package/dist/config/logging.config.descriptor.js.map +1 -0
  152. package/dist/config/otel-service.d.ts +9 -0
  153. package/dist/config/otel-service.d.ts.map +1 -0
  154. package/dist/config/otel-service.js +18 -0
  155. package/dist/config/otel-service.js.map +1 -0
  156. package/dist/contexts/bootstrap.plugin.d.ts +3 -0
  157. package/dist/contexts/bootstrap.plugin.d.ts.map +1 -0
  158. package/dist/contexts/bootstrap.plugin.js +13 -0
  159. package/dist/contexts/bootstrap.plugin.js.map +1 -0
  160. package/dist/contexts/fallback-logger.d.ts +7 -2
  161. package/dist/contexts/fallback-logger.d.ts.map +1 -1
  162. package/dist/contexts/fallback-logger.js +73 -46
  163. package/dist/contexts/fallback-logger.js.map +1 -1
  164. package/dist/contexts/index.d.ts +2 -2
  165. package/dist/contexts/index.d.ts.map +1 -1
  166. package/dist/contexts/index.js +2 -3
  167. package/dist/contexts/index.js.map +1 -1
  168. package/dist/contexts/logger.d.ts +38 -14
  169. package/dist/contexts/logger.d.ts.map +1 -1
  170. package/dist/contexts/logger.js +241 -62
  171. package/dist/contexts/logger.js.map +1 -1
  172. package/dist/core/attempt.d.ts +30 -0
  173. package/dist/core/attempt.d.ts.map +1 -0
  174. package/dist/core/attempt.js +44 -0
  175. package/dist/core/attempt.js.map +1 -0
  176. package/dist/core/emission-window.d.ts +34 -0
  177. package/dist/core/emission-window.d.ts.map +1 -0
  178. package/dist/core/emission-window.js +25 -0
  179. package/dist/core/emission-window.js.map +1 -0
  180. package/dist/core/endpoint.d.ts +54 -0
  181. package/dist/core/endpoint.d.ts.map +1 -0
  182. package/dist/core/endpoint.js +256 -0
  183. package/dist/core/endpoint.js.map +1 -0
  184. package/dist/core/entry-context.d.ts +106 -0
  185. package/dist/core/entry-context.d.ts.map +1 -0
  186. package/dist/core/entry-context.js +150 -0
  187. package/dist/core/entry-context.js.map +1 -0
  188. package/dist/core/index.d.ts +4 -0
  189. package/dist/core/index.d.ts.map +1 -1
  190. package/dist/core/index.js +5 -0
  191. package/dist/core/index.js.map +1 -1
  192. package/dist/core/logger.d.ts +6 -1
  193. package/dist/core/logger.d.ts.map +1 -1
  194. package/dist/core/logger.js +133 -67
  195. package/dist/core/logger.js.map +1 -1
  196. package/dist/core/namespace.d.ts +5 -2
  197. package/dist/core/namespace.d.ts.map +1 -1
  198. package/dist/core/namespace.js +15 -7
  199. package/dist/core/namespace.js.map +1 -1
  200. package/dist/core/normalize.d.ts +31 -0
  201. package/dist/core/normalize.d.ts.map +1 -0
  202. package/dist/core/normalize.js +67 -0
  203. package/dist/core/normalize.js.map +1 -0
  204. package/dist/core/otlp-headers.d.ts +53 -0
  205. package/dist/core/otlp-headers.d.ts.map +1 -0
  206. package/dist/core/otlp-headers.js +64 -0
  207. package/dist/core/otlp-headers.js.map +1 -0
  208. package/dist/core/otlp-partial-success.d.ts +48 -0
  209. package/dist/core/otlp-partial-success.d.ts.map +1 -0
  210. package/dist/core/otlp-partial-success.js +55 -0
  211. package/dist/core/otlp-partial-success.js.map +1 -0
  212. package/dist/core/outcome.d.ts +21 -0
  213. package/dist/core/outcome.d.ts.map +1 -0
  214. package/dist/core/outcome.js +24 -0
  215. package/dist/core/outcome.js.map +1 -0
  216. package/dist/core/output-resources.d.ts +15 -0
  217. package/dist/core/output-resources.d.ts.map +1 -0
  218. package/dist/core/output-resources.js +51 -0
  219. package/dist/core/output-resources.js.map +1 -0
  220. package/dist/core/parsing.d.ts.map +1 -1
  221. package/dist/core/parsing.js +13 -10
  222. package/dist/core/parsing.js.map +1 -1
  223. package/dist/core/redact.d.ts +161 -0
  224. package/dist/core/redact.d.ts.map +1 -0
  225. package/dist/core/redact.js +581 -0
  226. package/dist/core/redact.js.map +1 -0
  227. package/dist/core/root-identity.d.ts +13 -0
  228. package/dist/core/root-identity.d.ts.map +1 -0
  229. package/dist/core/root-identity.js +23 -0
  230. package/dist/core/root-identity.js.map +1 -0
  231. package/dist/core/types.d.ts +5 -4
  232. package/dist/core/types.d.ts.map +1 -1
  233. package/dist/docs/cli.docs.descriptor.d.ts +4 -0
  234. package/dist/docs/cli.docs.descriptor.d.ts.map +1 -0
  235. package/dist/docs/cli.docs.descriptor.js +97 -0
  236. package/dist/docs/cli.docs.descriptor.js.map +1 -0
  237. package/dist/docs/index.d.ts +7 -0
  238. package/dist/docs/index.d.ts.map +1 -0
  239. package/dist/docs/index.js +7 -0
  240. package/dist/docs/index.js.map +1 -0
  241. package/dist/docs/levels.docs.descriptor.d.ts +1 -1
  242. package/dist/docs/levels.docs.descriptor.d.ts.map +1 -1
  243. package/dist/docs/levels.docs.descriptor.js +112 -246
  244. package/dist/docs/levels.docs.descriptor.js.map +1 -1
  245. package/dist/docs/logging.docs.descriptor.d.ts +4 -0
  246. package/dist/docs/logging.docs.descriptor.d.ts.map +1 -0
  247. package/dist/docs/logging.docs.descriptor.js +105 -0
  248. package/dist/docs/logging.docs.descriptor.js.map +1 -0
  249. package/dist/docs/observability.docs.descriptor.d.ts +4 -0
  250. package/dist/docs/observability.docs.descriptor.d.ts.map +1 -0
  251. package/dist/docs/observability.docs.descriptor.js +152 -0
  252. package/dist/docs/observability.docs.descriptor.js.map +1 -0
  253. package/dist/docs/structured.docs.descriptor.d.ts +1 -1
  254. package/dist/docs/structured.docs.descriptor.d.ts.map +1 -1
  255. package/dist/docs/structured.docs.descriptor.js +111 -267
  256. package/dist/docs/structured.docs.descriptor.js.map +1 -1
  257. package/dist/docs/transports.docs.descriptor.d.ts +1 -1
  258. package/dist/docs/transports.docs.descriptor.d.ts.map +1 -1
  259. package/dist/docs/transports.docs.descriptor.js +129 -344
  260. package/dist/docs/transports.docs.descriptor.js.map +1 -1
  261. package/dist/formatters/json/json.impl.d.ts +1 -1
  262. package/dist/formatters/json/json.impl.d.ts.map +1 -1
  263. package/dist/formatters/json/json.impl.js +3 -2
  264. package/dist/formatters/json/json.impl.js.map +1 -1
  265. package/dist/formatters/json5/json5.impl.d.ts +1 -1
  266. package/dist/formatters/json5/json5.impl.d.ts.map +1 -1
  267. package/dist/formatters/json5/json5.impl.js +3 -2
  268. package/dist/formatters/json5/json5.impl.js.map +1 -1
  269. package/dist/formatters/jsonl/jsonl.impl.d.ts +1 -1
  270. package/dist/formatters/jsonl/jsonl.impl.d.ts.map +1 -1
  271. package/dist/formatters/jsonl/jsonl.impl.js +3 -2
  272. package/dist/formatters/jsonl/jsonl.impl.js.map +1 -1
  273. package/dist/formatters/pretty/{pretty.impl.cli.d.ts → pretty.impl.consumer.d.ts} +1 -1
  274. package/dist/formatters/pretty/pretty.impl.consumer.d.ts.map +1 -0
  275. package/dist/formatters/pretty/{pretty.impl.cli.js → pretty.impl.consumer.js} +1 -1
  276. package/dist/formatters/pretty/pretty.impl.consumer.js.map +1 -0
  277. package/dist/host-files/file-audit.base.d.ts +39 -0
  278. package/dist/host-files/file-audit.base.d.ts.map +1 -0
  279. package/dist/host-files/file-audit.base.js +255 -0
  280. package/dist/host-files/file-audit.base.js.map +1 -0
  281. package/dist/host-files/file-output.base.d.ts +84 -0
  282. package/dist/host-files/file-output.base.d.ts.map +1 -0
  283. package/dist/host-files/file-output.base.js +401 -0
  284. package/dist/host-files/file-output.base.js.map +1 -0
  285. package/dist/host-files/file-output.factory.base.d.ts +31 -0
  286. package/dist/host-files/file-output.factory.base.d.ts.map +1 -0
  287. package/dist/host-files/file-output.factory.base.js +82 -0
  288. package/dist/host-files/file-output.factory.base.js.map +1 -0
  289. package/dist/host-files/file-output.read.base.d.ts +7 -0
  290. package/dist/host-files/file-output.read.base.d.ts.map +1 -0
  291. package/dist/host-files/file-output.read.base.js +229 -0
  292. package/dist/host-files/file-output.read.base.js.map +1 -0
  293. package/dist/host-files/file-sink.base.d.ts +22 -0
  294. package/dist/host-files/file-sink.base.d.ts.map +1 -0
  295. package/dist/host-files/file-sink.base.js +56 -0
  296. package/dist/host-files/file-sink.base.js.map +1 -0
  297. package/dist/host-files/host-file-logging.plugin.d.ts +11 -0
  298. package/dist/host-files/host-file-logging.plugin.d.ts.map +1 -0
  299. package/dist/host-files/host-file-logging.plugin.js +63 -0
  300. package/dist/host-files/host-file-logging.plugin.js.map +1 -0
  301. package/dist/host-files/index.d.ts +19 -0
  302. package/dist/host-files/index.d.ts.map +1 -0
  303. package/dist/host-files/index.js +18 -0
  304. package/dist/host-files/index.js.map +1 -0
  305. package/dist/host-files/rotate-appended-file.base.d.ts +35 -0
  306. package/dist/host-files/rotate-appended-file.base.d.ts.map +1 -0
  307. package/dist/host-files/rotate-appended-file.base.js +104 -0
  308. package/dist/host-files/rotate-appended-file.base.js.map +1 -0
  309. package/dist/host.d.ts +38 -0
  310. package/dist/host.d.ts.map +1 -0
  311. package/dist/host.js +39 -0
  312. package/dist/host.js.map +1 -0
  313. package/dist/index.d.ts +24 -13
  314. package/dist/index.d.ts.map +1 -1
  315. package/dist/index.js +27 -23
  316. package/dist/index.js.map +1 -1
  317. package/dist/kinds/audit.d.ts +40 -8
  318. package/dist/kinds/audit.d.ts.map +1 -1
  319. package/dist/kinds/audit.js +82 -20
  320. package/dist/kinds/audit.js.map +1 -1
  321. package/dist/kinds/contexts.d.ts +4 -3
  322. package/dist/kinds/contexts.d.ts.map +1 -1
  323. package/dist/kinds/file-output.d.ts +56 -0
  324. package/dist/kinds/file-output.d.ts.map +1 -0
  325. package/dist/kinds/file-output.js +11 -0
  326. package/dist/kinds/file-output.js.map +1 -0
  327. package/dist/kinds/formatter.d.ts +4 -6
  328. package/dist/kinds/formatter.d.ts.map +1 -1
  329. package/dist/kinds/formatter.js +4 -3
  330. package/dist/kinds/formatter.js.map +1 -1
  331. package/dist/kinds/index.d.ts +3 -3
  332. package/dist/kinds/index.d.ts.map +1 -1
  333. package/dist/kinds/index.js +3 -3
  334. package/dist/kinds/index.js.map +1 -1
  335. package/dist/kinds/logger.d.ts +4 -4
  336. package/dist/kinds/logger.d.ts.map +1 -1
  337. package/dist/kinds/logger.impl.d.ts +40 -13
  338. package/dist/kinds/logger.impl.d.ts.map +1 -1
  339. package/dist/kinds/logger.impl.js +179 -87
  340. package/dist/kinds/logger.impl.js.map +1 -1
  341. package/dist/kinds/logger.js +21 -11
  342. package/dist/kinds/logger.js.map +1 -1
  343. package/dist/kinds/logger.utils.d.ts +31 -4
  344. package/dist/kinds/logger.utils.d.ts.map +1 -1
  345. package/dist/kinds/logger.utils.js +58 -18
  346. package/dist/kinds/logger.utils.js.map +1 -1
  347. package/dist/kinds/output.d.ts +5 -11
  348. package/dist/kinds/output.d.ts.map +1 -1
  349. package/dist/kinds/output.impl.d.ts +9 -7
  350. package/dist/kinds/output.impl.d.ts.map +1 -1
  351. package/dist/kinds/output.impl.js +51 -29
  352. package/dist/kinds/output.impl.js.map +1 -1
  353. package/dist/kinds/output.js +10 -5
  354. package/dist/kinds/output.js.map +1 -1
  355. package/dist/kinds/output.types.d.ts +26 -7
  356. package/dist/kinds/output.types.d.ts.map +1 -1
  357. package/dist/kinds/sink.d.ts +6 -5
  358. package/dist/kinds/sink.d.ts.map +1 -1
  359. package/dist/kinds/sink.js +14 -7
  360. package/dist/kinds/sink.js.map +1 -1
  361. package/dist/logger.context.descriptor.d.ts +15 -1
  362. package/dist/logger.context.descriptor.d.ts.map +1 -1
  363. package/dist/logger.context.descriptor.js +1 -1
  364. package/dist/logger.context.descriptor.js.map +1 -1
  365. package/dist/logging.consumer.plugin.d.ts +4 -0
  366. package/dist/logging.consumer.plugin.d.ts.map +1 -0
  367. package/dist/logging.consumer.plugin.js +17 -0
  368. package/dist/logging.consumer.plugin.js.map +1 -0
  369. package/dist/logging.plugin.d.ts +3 -3
  370. package/dist/logging.plugin.d.ts.map +1 -1
  371. package/dist/logging.plugin.js +81 -42
  372. package/dist/logging.plugin.js.map +1 -1
  373. package/dist/observability/building-host.d.ts +11 -0
  374. package/dist/observability/building-host.d.ts.map +1 -0
  375. package/dist/observability/building-host.js +11 -0
  376. package/dist/observability/building-host.js.map +1 -0
  377. package/dist/observability/config.d.ts +36 -0
  378. package/dist/observability/config.d.ts.map +1 -0
  379. package/dist/observability/config.js +46 -0
  380. package/dist/observability/config.js.map +1 -0
  381. package/dist/observability/http/instrumented-fetch.d.ts +19 -0
  382. package/dist/observability/http/instrumented-fetch.d.ts.map +1 -0
  383. package/dist/observability/http/instrumented-fetch.js +175 -0
  384. package/dist/observability/http/instrumented-fetch.js.map +1 -0
  385. package/dist/observability/index.d.ts +8 -0
  386. package/dist/observability/index.d.ts.map +1 -0
  387. package/dist/observability/index.js +10 -0
  388. package/dist/observability/index.js.map +1 -0
  389. package/dist/observability/lifecycle.d.ts +18 -0
  390. package/dist/observability/lifecycle.d.ts.map +1 -0
  391. package/dist/observability/lifecycle.js +44 -0
  392. package/dist/observability/lifecycle.js.map +1 -0
  393. package/dist/observability/observability/error-tracker.d.ts +43 -0
  394. package/dist/observability/observability/error-tracker.d.ts.map +1 -0
  395. package/dist/observability/observability/error-tracker.js +130 -0
  396. package/dist/observability/observability/error-tracker.js.map +1 -0
  397. package/dist/observability/should-keep-log.d.ts +8 -0
  398. package/dist/observability/should-keep-log.d.ts.map +1 -0
  399. package/dist/observability/should-keep-log.js +10 -0
  400. package/dist/observability/should-keep-log.js.map +1 -0
  401. package/dist/observability/telemetry/otel.d.ts +47 -0
  402. package/dist/observability/telemetry/otel.d.ts.map +1 -0
  403. package/dist/observability/telemetry/otel.js +542 -0
  404. package/dist/observability/telemetry/otel.js.map +1 -0
  405. package/dist/observability/telemetry/partial-success.d.ts +35 -0
  406. package/dist/observability/telemetry/partial-success.d.ts.map +1 -0
  407. package/dist/observability/telemetry/partial-success.js +94 -0
  408. package/dist/observability/telemetry/partial-success.js.map +1 -0
  409. package/dist/observability/telemetry/sdk-lifecycle.d.ts +37 -0
  410. package/dist/observability/telemetry/sdk-lifecycle.d.ts.map +1 -0
  411. package/dist/observability/telemetry/sdk-lifecycle.js +132 -0
  412. package/dist/observability/telemetry/sdk-lifecycle.js.map +1 -0
  413. package/dist/observability/telemetry/telemetry-root.d.ts +78 -0
  414. package/dist/observability/telemetry/telemetry-root.d.ts.map +1 -0
  415. package/dist/observability/telemetry/telemetry-root.js +79 -0
  416. package/dist/observability/telemetry/telemetry-root.js.map +1 -0
  417. package/dist/observability/telemetry-instrumentation.d.ts +76 -0
  418. package/dist/observability/telemetry-instrumentation.d.ts.map +1 -0
  419. package/dist/observability/telemetry-instrumentation.js +69 -0
  420. package/dist/observability/telemetry-instrumentation.js.map +1 -0
  421. package/dist/otel/index.d.ts +9 -0
  422. package/dist/otel/index.d.ts.map +1 -0
  423. package/dist/otel/index.js +12 -0
  424. package/dist/otel/index.js.map +1 -0
  425. package/dist/otel/logging-otel.plugin.d.ts +11 -0
  426. package/dist/otel/logging-otel.plugin.d.ts.map +1 -0
  427. package/dist/otel/logging-otel.plugin.js +27 -0
  428. package/dist/otel/logging-otel.plugin.js.map +1 -0
  429. package/dist/otel/sinks/otel/otel.descriptor.d.ts +10 -0
  430. package/dist/otel/sinks/otel/otel.descriptor.d.ts.map +1 -0
  431. package/dist/otel/sinks/otel/otel.descriptor.js +23 -0
  432. package/dist/otel/sinks/otel/otel.descriptor.js.map +1 -0
  433. package/dist/otel/sinks/otel/otel.impl.d.ts +47 -0
  434. package/dist/otel/sinks/otel/otel.impl.d.ts.map +1 -0
  435. package/dist/otel/sinks/otel/otel.impl.js +202 -0
  436. package/dist/otel/sinks/otel/otel.impl.js.map +1 -0
  437. package/dist/otel/sinks/otel/otlp-log-exporter.d.ts +76 -0
  438. package/dist/otel/sinks/otel/otlp-log-exporter.d.ts.map +1 -0
  439. package/dist/otel/sinks/otel/otlp-log-exporter.js +178 -0
  440. package/dist/otel/sinks/otel/otlp-log-exporter.js.map +1 -0
  441. package/dist/outputs/file/file.outputs.descriptor.d.ts +10 -0
  442. package/dist/outputs/file/file.outputs.descriptor.d.ts.map +1 -0
  443. package/dist/outputs/file/file.outputs.descriptor.js +32 -0
  444. package/dist/outputs/file/file.outputs.descriptor.js.map +1 -0
  445. package/dist/outputs/remote/remote.descriptor.d.ts +1 -1
  446. package/dist/outputs/remote/remote.descriptor.d.ts.map +1 -1
  447. package/dist/outputs/remote/remote.descriptor.js +1 -2
  448. package/dist/outputs/remote/remote.descriptor.js.map +1 -1
  449. package/dist/outputs/remote/remote.factory.d.ts +9 -0
  450. package/dist/outputs/remote/remote.factory.d.ts.map +1 -0
  451. package/dist/outputs/remote/remote.factory.js +16 -0
  452. package/dist/outputs/remote/remote.factory.js.map +1 -0
  453. package/dist/outputs/remote/remote.impl.d.ts +40 -4
  454. package/dist/outputs/remote/remote.impl.d.ts.map +1 -1
  455. package/dist/outputs/remote/remote.impl.js +224 -99
  456. package/dist/outputs/remote/remote.impl.js.map +1 -1
  457. package/dist/outputs.context.descriptor.d.ts +15 -1
  458. package/dist/outputs.context.descriptor.d.ts.map +1 -1
  459. package/dist/outputs.context.descriptor.js +1 -1
  460. package/dist/outputs.context.descriptor.js.map +1 -1
  461. package/dist/outputs.context.impl.d.ts +2 -1
  462. package/dist/outputs.context.impl.d.ts.map +1 -1
  463. package/dist/outputs.context.impl.js +17 -9
  464. package/dist/outputs.context.impl.js.map +1 -1
  465. package/dist/paths.d.ts +24 -3
  466. package/dist/paths.d.ts.map +1 -1
  467. package/dist/paths.js +63 -3
  468. package/dist/paths.js.map +1 -1
  469. package/dist/rotation/rotate-appended-file.d.ts +15 -0
  470. package/dist/rotation/rotate-appended-file.d.ts.map +1 -0
  471. package/dist/rotation/rotate-appended-file.js +20 -0
  472. package/dist/rotation/rotate-appended-file.js.map +1 -0
  473. package/dist/rotation/rotation-policy.d.ts +19 -0
  474. package/dist/rotation/rotation-policy.d.ts.map +1 -0
  475. package/dist/rotation/rotation-policy.js +37 -0
  476. package/dist/rotation/rotation-policy.js.map +1 -0
  477. package/dist/schemas/audit.d.ts +25 -7
  478. package/dist/schemas/audit.d.ts.map +1 -1
  479. package/dist/schemas/audit.js +10 -4
  480. package/dist/schemas/audit.js.map +1 -1
  481. package/dist/schemas/entry.d.ts +11 -5
  482. package/dist/schemas/entry.d.ts.map +1 -1
  483. package/dist/schemas/entry.js +3 -2
  484. package/dist/schemas/entry.js.map +1 -1
  485. package/dist/schemas/file-host.d.ts +86 -0
  486. package/dist/schemas/file-host.d.ts.map +1 -0
  487. package/dist/schemas/file-host.js +10 -0
  488. package/dist/schemas/file-host.js.map +1 -0
  489. package/dist/schemas/formatter.d.ts +11 -1
  490. package/dist/schemas/formatter.d.ts.map +1 -1
  491. package/dist/schemas/formatter.js +1 -1
  492. package/dist/schemas/formatter.js.map +1 -1
  493. package/dist/schemas/index.d.ts +3 -2
  494. package/dist/schemas/index.d.ts.map +1 -1
  495. package/dist/schemas/index.js +3 -2
  496. package/dist/schemas/index.js.map +1 -1
  497. package/dist/schemas/logger.d.ts +16 -1
  498. package/dist/schemas/logger.d.ts.map +1 -1
  499. package/dist/schemas/logger.js +6 -1
  500. package/dist/schemas/logger.js.map +1 -1
  501. package/dist/schemas/output-defaults.d.ts +44 -0
  502. package/dist/schemas/output-defaults.d.ts.map +1 -0
  503. package/dist/schemas/output-defaults.js +53 -0
  504. package/dist/schemas/output-defaults.js.map +1 -0
  505. package/dist/schemas/output.d.ts +25 -1
  506. package/dist/schemas/output.d.ts.map +1 -1
  507. package/dist/schemas/output.js +29 -2
  508. package/dist/schemas/output.js.map +1 -1
  509. package/dist/schemas/sink.d.ts +32 -1
  510. package/dist/schemas/sink.d.ts.map +1 -1
  511. package/dist/schemas/sink.js +17 -1
  512. package/dist/schemas/sink.js.map +1 -1
  513. package/dist/sinks/buffer/buffer.descriptor.js +1 -1
  514. package/dist/sinks/buffer/buffer.descriptor.js.map +1 -1
  515. package/dist/sinks/buffer/{buffer.impl.cli.d.ts → buffer.impl.d.ts} +3 -3
  516. package/dist/sinks/buffer/buffer.impl.d.ts.map +1 -0
  517. package/dist/sinks/buffer/buffer.impl.js +42 -0
  518. package/dist/sinks/buffer/buffer.impl.js.map +1 -0
  519. package/dist/sinks/console/console.descriptor.js +1 -1
  520. package/dist/sinks/console/console.descriptor.js.map +1 -1
  521. package/dist/sinks/console/console.impl.browser.d.ts +4 -3
  522. package/dist/sinks/console/console.impl.browser.d.ts.map +1 -1
  523. package/dist/sinks/console/console.impl.browser.js +11 -14
  524. package/dist/sinks/console/console.impl.browser.js.map +1 -1
  525. package/dist/sinks/console/{console.impl.cli.d.ts → console.impl.consumer.d.ts} +5 -4
  526. package/dist/sinks/console/console.impl.consumer.d.ts.map +1 -0
  527. package/dist/sinks/console/{console.impl.cli.js → console.impl.consumer.js} +16 -8
  528. package/dist/sinks/console/console.impl.consumer.js.map +1 -0
  529. package/dist/sinks/file/file.sinks.descriptor.d.ts +10 -0
  530. package/dist/sinks/file/file.sinks.descriptor.d.ts.map +1 -0
  531. package/dist/sinks/file/file.sinks.descriptor.js +23 -0
  532. package/dist/sinks/file/file.sinks.descriptor.js.map +1 -0
  533. package/dist/sinks/index.d.ts +1 -1
  534. package/dist/sinks/index.d.ts.map +1 -1
  535. package/dist/sinks/memory/memory.descriptor.d.ts +1 -1
  536. package/dist/sinks/memory/memory.descriptor.js +2 -2
  537. package/dist/sinks/memory/memory.descriptor.js.map +1 -1
  538. package/dist/sinks/memory/memory.impl.d.ts +5 -11
  539. package/dist/sinks/memory/memory.impl.d.ts.map +1 -1
  540. package/dist/sinks/memory/memory.impl.js +46 -21
  541. package/dist/sinks/memory/memory.impl.js.map +1 -1
  542. package/dist/sinks/stdout/stdout.descriptor.js +1 -1
  543. package/dist/sinks/stdout/stdout.descriptor.js.map +1 -1
  544. package/dist/sinks/stdout/{stdout.impl.cli.d.ts → stdout.impl.d.ts} +5 -4
  545. package/dist/sinks/stdout/stdout.impl.d.ts.map +1 -0
  546. package/dist/sinks/stdout/stdout.impl.js +29 -0
  547. package/dist/sinks/stdout/stdout.impl.js.map +1 -0
  548. package/dist/sinks.context.descriptor.d.ts +15 -1
  549. package/dist/sinks.context.descriptor.d.ts.map +1 -1
  550. package/dist/sinks.context.descriptor.js +1 -1
  551. package/dist/sinks.context.descriptor.js.map +1 -1
  552. package/dist/sinks.context.impl.d.ts +2 -1
  553. package/dist/sinks.context.impl.d.ts.map +1 -1
  554. package/dist/sinks.context.impl.js +17 -9
  555. package/dist/sinks.context.impl.js.map +1 -1
  556. package/dist/stdout-capture/mcp-frame.d.ts +23 -0
  557. package/dist/stdout-capture/mcp-frame.d.ts.map +1 -0
  558. package/dist/stdout-capture/mcp-frame.js +80 -0
  559. package/dist/stdout-capture/mcp-frame.js.map +1 -0
  560. package/dist/stdout-capture/stdout-capture.descriptor.d.ts +10 -0
  561. package/dist/stdout-capture/stdout-capture.descriptor.d.ts.map +1 -0
  562. package/dist/stdout-capture/stdout-capture.descriptor.js +17 -0
  563. package/dist/stdout-capture/stdout-capture.descriptor.js.map +1 -0
  564. package/dist/stdout-capture/stdout-capture.impl.d.ts +19 -0
  565. package/dist/stdout-capture/stdout-capture.impl.d.ts.map +1 -0
  566. package/dist/stdout-capture/stdout-capture.impl.js +49 -0
  567. package/dist/stdout-capture/stdout-capture.impl.js.map +1 -0
  568. package/dist/stdout-capture/stdout-capture.lease.d.ts +45 -0
  569. package/dist/stdout-capture/stdout-capture.lease.d.ts.map +1 -0
  570. package/dist/stdout-capture/stdout-capture.lease.js +338 -0
  571. package/dist/stdout-capture/stdout-capture.lease.js.map +1 -0
  572. package/dist/stdout-capture/stdout-capture.output.descriptor.d.ts +4 -0
  573. package/dist/stdout-capture/stdout-capture.output.descriptor.d.ts.map +1 -0
  574. package/dist/stdout-capture/stdout-capture.output.descriptor.js +18 -0
  575. package/dist/stdout-capture/stdout-capture.output.descriptor.js.map +1 -0
  576. package/dist/stdout-capture/stdout-capture.state.d.ts +29 -0
  577. package/dist/stdout-capture/stdout-capture.state.d.ts.map +1 -0
  578. package/dist/stdout-capture/stdout-capture.state.js +80 -0
  579. package/dist/stdout-capture/stdout-capture.state.js.map +1 -0
  580. package/dist/stdout-capture.d.ts +24 -0
  581. package/dist/stdout-capture.d.ts.map +1 -0
  582. package/dist/stdout-capture.js +28 -0
  583. package/dist/stdout-capture.js.map +1 -0
  584. package/dist/stdout-capture.plugin.d.ts +7 -0
  585. package/dist/stdout-capture.plugin.d.ts.map +1 -0
  586. package/dist/stdout-capture.plugin.js +28 -0
  587. package/dist/stdout-capture.plugin.js.map +1 -0
  588. package/package.json +311 -228
  589. package/SPEC.md +0 -65
  590. package/dist/contexts/audit.d.ts +0 -34
  591. package/dist/contexts/audit.d.ts.map +0 -1
  592. package/dist/contexts/audit.js +0 -13
  593. package/dist/contexts/audit.js.map +0 -1
  594. package/dist/formatters/index.d.ts +0 -7
  595. package/dist/formatters/index.d.ts.map +0 -1
  596. package/dist/formatters/index.js +0 -8
  597. package/dist/formatters/index.js.map +0 -1
  598. package/dist/formatters/pretty/pretty.impl.cli.d.ts.map +0 -1
  599. package/dist/formatters/pretty/pretty.impl.cli.js.map +0 -1
  600. package/dist/kinds/logger.contracts.d.ts +0 -16
  601. package/dist/kinds/logger.contracts.d.ts.map +0 -1
  602. package/dist/kinds/logger.contracts.js +0 -9
  603. package/dist/kinds/logger.contracts.js.map +0 -1
  604. package/dist/kinds/output.contracts.d.ts +0 -50
  605. package/dist/kinds/output.contracts.d.ts.map +0 -1
  606. package/dist/kinds/output.contracts.js +0 -10
  607. package/dist/kinds/output.contracts.js.map +0 -1
  608. package/dist/logging.cli.plugin.d.ts.map +0 -1
  609. package/dist/logging.cli.plugin.js +0 -39
  610. package/dist/logging.cli.plugin.js.map +0 -1
  611. package/dist/outputs/index.d.ts +0 -7
  612. package/dist/outputs/index.d.ts.map +0 -1
  613. package/dist/outputs/index.js +0 -8
  614. package/dist/outputs/index.js.map +0 -1
  615. package/dist/sinks/buffer/buffer.impl.cli.d.ts.map +0 -1
  616. package/dist/sinks/buffer/buffer.impl.cli.js +0 -34
  617. package/dist/sinks/buffer/buffer.impl.cli.js.map +0 -1
  618. package/dist/sinks/console/console.impl.cli.d.ts.map +0 -1
  619. package/dist/sinks/console/console.impl.cli.js.map +0 -1
  620. package/dist/sinks/stdout/stdout.impl.cli.d.ts.map +0 -1
  621. package/dist/sinks/stdout/stdout.impl.cli.js +0 -21
  622. package/dist/sinks/stdout/stdout.impl.cli.js.map +0 -1
  623. package/src/audit/audit.descriptor.ts +0 -45
  624. package/src/audit/audit.storage.schema.ts +0 -57
  625. package/src/audit/index.ts +0 -8
  626. package/src/cli/logs.descriptor.ts +0 -19
  627. package/src/cli/logs.list.descriptor.ts +0 -28
  628. package/src/cli/logs.list.impl.ts +0 -93
  629. package/src/cli/logs.rotate.descriptor.ts +0 -40
  630. package/src/cli/logs.rotate.impl.ts +0 -61
  631. package/src/cli/logs.search.descriptor.ts +0 -61
  632. package/src/cli/logs.search.impl.ts +0 -173
  633. package/src/cli/logs.tail.descriptor.ts +0 -49
  634. package/src/cli/logs.tail.impl.ts +0 -105
  635. package/src/cli/logs.view.descriptor.ts +0 -57
  636. package/src/cli/logs.view.impl.ts +0 -108
  637. package/src/cli/types.ts +0 -59
  638. package/src/contexts/audit.ts +0 -36
  639. package/src/contexts/fallback-logger.ts +0 -80
  640. package/src/contexts/index.ts +0 -23
  641. package/src/contexts/logger.ts +0 -119
  642. package/src/core/index.ts +0 -32
  643. package/src/core/logger.ts +0 -150
  644. package/src/core/namespace.ts +0 -195
  645. package/src/core/parsing.ts +0 -21
  646. package/src/core/types.ts +0 -82
  647. package/src/docs/levels.docs.descriptor.ts +0 -344
  648. package/src/docs/structured.docs.descriptor.ts +0 -444
  649. package/src/docs/transports.docs.descriptor.ts +0 -428
  650. package/src/formatters/index.ts +0 -6
  651. package/src/formatters/json/json.formatters.descriptor.ts +0 -25
  652. package/src/formatters/json/json.impl.ts +0 -41
  653. package/src/formatters/json5/json5.descriptor.ts +0 -25
  654. package/src/formatters/json5/json5.impl.ts +0 -43
  655. package/src/formatters/jsonl/jsonl.descriptor.ts +0 -26
  656. package/src/formatters/jsonl/jsonl.impl.ts +0 -39
  657. package/src/formatters/pretty/pretty.descriptor.ts +0 -26
  658. package/src/formatters/pretty/pretty.impl.cli.ts +0 -101
  659. package/src/index.ts +0 -190
  660. package/src/kinds/audit.ts +0 -169
  661. package/src/kinds/contexts.ts +0 -22
  662. package/src/kinds/formatter.ts +0 -117
  663. package/src/kinds/index.ts +0 -25
  664. package/src/kinds/logger.contracts.ts +0 -17
  665. package/src/kinds/logger.impl.ts +0 -206
  666. package/src/kinds/logger.ts +0 -46
  667. package/src/kinds/logger.utils.ts +0 -91
  668. package/src/kinds/output.contracts.ts +0 -54
  669. package/src/kinds/output.impl.ts +0 -118
  670. package/src/kinds/output.ts +0 -59
  671. package/src/kinds/output.types.ts +0 -105
  672. package/src/kinds/sink.ts +0 -100
  673. package/src/logger.context.descriptor.ts +0 -13
  674. package/src/logging.cli.plugin.ts +0 -43
  675. package/src/logging.plugin.ts +0 -93
  676. package/src/outputs/index.ts +0 -6
  677. package/src/outputs/remote/remote.descriptor.ts +0 -27
  678. package/src/outputs/remote/remote.impl.ts +0 -218
  679. package/src/outputs.context.descriptor.ts +0 -10
  680. package/src/outputs.context.impl.ts +0 -30
  681. package/src/paths.ts +0 -10
  682. package/src/schemas/audit.ts +0 -98
  683. package/src/schemas/entry.ts +0 -88
  684. package/src/schemas/formatter.ts +0 -37
  685. package/src/schemas/index.ts +0 -80
  686. package/src/schemas/logger.ts +0 -38
  687. package/src/schemas/output.ts +0 -62
  688. package/src/schemas/sink.ts +0 -39
  689. package/src/sinks/buffer/buffer.descriptor.ts +0 -13
  690. package/src/sinks/buffer/buffer.impl.cli.ts +0 -49
  691. package/src/sinks/console/console.descriptor.ts +0 -20
  692. package/src/sinks/console/console.impl.browser.ts +0 -69
  693. package/src/sinks/console/console.impl.cli.ts +0 -71
  694. package/src/sinks/index.ts +0 -8
  695. package/src/sinks/memory/memory.descriptor.ts +0 -20
  696. package/src/sinks/memory/memory.impl.ts +0 -119
  697. package/src/sinks/stdout/stdout.descriptor.ts +0 -13
  698. package/src/sinks/stdout/stdout.impl.cli.ts +0 -27
  699. package/src/sinks.context.descriptor.ts +0 -10
  700. package/src/sinks.context.impl.ts +0 -30
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Endpoint echoes. A configured endpoint may carry credentials in its userinfo
3
+ * (`user:password@host`) or query (`?token=...`). Everything Logging logs,
4
+ * reports or returns about an endpoint passes through these schemas, so only
5
+ * scheme, host, port and path are ever echoed. Path segments are kept (they
6
+ * name the collector route); a secret does not belong in a path.
7
+ */
8
+ import * as z from 'zod/v4';
9
+ import { attempt } from "./outcome.js";
10
+ import { CallerStringSchema, isSecretKey, REDACTED, ThrownValueSchema } from "./redact.js";
11
+ /** What an endpoint that is not a URL echoes as: its text could be anything, so none of it is shown. */
12
+ export const UNPARSEABLE_ENDPOINT = '[unparseable-endpoint]';
13
+ /** An endpoint reduced to the parts that are safe to echo: userinfo, query and fragment are dropped. Any other value refuses as a `ZodError`. */
14
+ export const RedactedEndpointSchema = CallerStringSchema.transform((endpoint) => {
15
+ if (!URL.canParse(endpoint))
16
+ return UNPARSEABLE_ENDPOINT;
17
+ const url = new URL(endpoint);
18
+ url.username = '';
19
+ url.password = '';
20
+ url.search = '';
21
+ url.hash = '';
22
+ // `URL` writes an empty path as `/`; the echo keeps the endpoint's own spelling.
23
+ const slashless = url.pathname === '/' && !endpoint.split(/[?#]/)[0]?.endsWith('/');
24
+ return slashless ? url.href.slice(0, -1) : url.href;
25
+ });
26
+ function decoded(component) {
27
+ const outcome = attempt(() => decodeURIComponent(component));
28
+ // A component that is not valid percent-encoding has only its raw spelling.
29
+ return outcome.failed ? component : outcome.value;
30
+ }
31
+ function encoded(component) {
32
+ const outcome = attempt(() => encodeURIComponent(component));
33
+ return outcome.failed ? component : outcome.value;
34
+ }
35
+ /** A text as it appears inside a JSON string (`"` and `\\` escaped), so a serialized echo is matched too. */
36
+ function jsonEscaped(text) {
37
+ return JSON.stringify(text).slice(1, -1);
38
+ }
39
+ /**
40
+ * Every spelling a credential component may be echoed in: raw, percent-decoded,
41
+ * percent-encoded once more (a raw `%2F` echoed as `%252F`), and each of those
42
+ * as JSON-escaped text. A query component is also spelled with `+` and `%20`
43
+ * swapped both ways and decoded with `+` read as a space. Percent-encoding hex
44
+ * case needs no spelling of its own: fragments are matched case-insensitively.
45
+ */
46
+ function spellings(raw, query) {
47
+ const plain = decoded(raw);
48
+ const forms = [raw, plain, encoded(raw), encoded(plain)];
49
+ if (query)
50
+ forms.push(decoded(raw.replaceAll('+', ' ')), raw.replaceAll('+', '%20'), raw.replace(/%20/gi, '+'));
51
+ return [...forms, ...forms.map(jsonEscaped)];
52
+ }
53
+ /**
54
+ * Query parameter names whose value is a credential (case-insensitive). The
55
+ * rule is the log redaction's own: every name `isSecretKey` calls secret (so
56
+ * the two share one credential-word list, `CREDENTIAL_KEY_WORDS`), plus
57
+ * the names a URL uses for a credential that a log key does not (`code`,
58
+ * `session`, `sid`, `sig`) and any name ending in `_key` or `-key`. This list
59
+ * names the common ones; every one of them is a credential under that rule.
60
+ * Other parameters (`format=json`, `v=1`) are not credentials, so their values
61
+ * are not matched on their own; the whole query still is.
62
+ */
63
+ export const CREDENTIAL_QUERY_PARAMETER_NAMES = [
64
+ 'token', 'key', 'apikey', 'api_key', 'access_token', 'secret', 'sig', 'signature', 'password', 'pass', 'pwd',
65
+ 'auth', 'authorization', 'code', 'session', 'sessionid', 'sid', 'jwt', 'bearer', 'credential'
66
+ ];
67
+ /** The URL-only credential names: secret in a query, ordinary as a log key (an error's `code`, a `session` object). */
68
+ const URL_ONLY_CREDENTIAL_NAMES = new Set(['code', 'session', 'sid', 'sig']);
69
+ const URL_KEY_SUFFIX = /[_-]key$/i;
70
+ function isCredentialParameter(rawName) {
71
+ const name = decoded(rawName.replaceAll('+', ' ')).toLowerCase();
72
+ return isSecretKey(name) || URL_ONLY_CREDENTIAL_NAMES.has(name) || URL_KEY_SUFFIX.test(name);
73
+ }
74
+ /** The secret parts of a query: the whole query, and each credential-named parameter's `name=value` pair and value. */
75
+ function queryComponents(search) {
76
+ if (search === '')
77
+ return [];
78
+ const credentialPairs = search.split('&').filter((pair) => pair.includes('=') && isCredentialParameter(pair.slice(0, pair.indexOf('='))));
79
+ return [search, ...credentialPairs, ...credentialPairs.map((pair) => pair.slice(pair.indexOf('=') + 1))];
80
+ }
81
+ /**
82
+ * Secret values a request carried beside its endpoint (each configured header
83
+ * value), as the fragments a failure description must not echo: the value
84
+ * itself and, for an `<auth-scheme> <credential>` value (`Bearer abc`), the
85
+ * credential alone, each in every spelling.
86
+ */
87
+ function headerValueFragments(secrets) {
88
+ return secrets.flatMap((secret) => {
89
+ const value = secret.trim();
90
+ const scheme = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+[ \t]+(.+)$/.exec(value);
91
+ return [value, ...(scheme?.[1] ? [scheme[1].trim()] : [])];
92
+ }).flatMap((component) => spellings(component, false));
93
+ }
94
+ /** The credential-bearing fragments of an endpoint (and of the request's secret values), longest first, each with what replaces it. */
95
+ function sensitiveFragments(endpoint, secrets) {
96
+ const redacted = RedactedEndpointSchema.parse(endpoint);
97
+ const fragments = new Map([[endpoint, redacted]]);
98
+ if (URL.canParse(endpoint)) {
99
+ const url = new URL(endpoint);
100
+ fragments.set(url.href, redacted);
101
+ // A username is a credential too: `http://TOKEN@host` carries the token there alone.
102
+ const components = [
103
+ ...[url.username, url.password, url.hash.slice(1)].flatMap((component) => spellings(component, false)),
104
+ ...queryComponents(url.search.slice(1)).flatMap((component) => spellings(component, true))
105
+ ];
106
+ for (const fragment of components)
107
+ if (fragment !== '' && !fragments.has(fragment))
108
+ fragments.set(fragment, REDACTED);
109
+ }
110
+ for (const fragment of headerValueFragments(secrets))
111
+ if (fragment !== '' && !fragments.has(fragment))
112
+ fragments.set(fragment, REDACTED);
113
+ return [...fragments].sort((left, right) => right[0].length - left[0].length);
114
+ }
115
+ /** A fragment as a literal regular-expression alternative (`u` flag: only syntax characters are escaped). */
116
+ function literalPattern(fragment) {
117
+ return fragment.replace(/[\\^$.*+?()[\]{}|/]/g, '\\$&');
118
+ }
119
+ /** Below this length a fragment is matched only as a whole token; at or above it, anywhere. */
120
+ export const SUBSTRING_FRAGMENT_MIN_LENGTH = 4;
121
+ const WORD_CHARACTER = /[\p{L}\p{N}]/u;
122
+ /**
123
+ * The match rule for one fragment. A fragment of SUBSTRING_FRAGMENT_MIN_LENGTH or
124
+ * more characters is matched anywhere, so a secret glued to other text
125
+ * (`tokenS3CR3T`) is still removed. A shorter one is matched only where it is not
126
+ * inside a longer letter/digit run (an edge that is itself punctuation needs no
127
+ * guard), so a username `u` removes `u` but leaves `<anonymous>` alone: a one- to
128
+ * three-character secret inside a longer word carries nothing of the secret.
129
+ */
130
+ function fragmentPattern(fragment) {
131
+ if (fragment.length >= SUBSTRING_FRAGMENT_MIN_LENGTH)
132
+ return literalPattern(fragment);
133
+ const before = WORD_CHARACTER.test(fragment.slice(0, 1)) ? '(?<![\\p{L}\\p{N}])' : '';
134
+ const after = WORD_CHARACTER.test(fragment.slice(-1)) ? '(?![\\p{L}\\p{N}])' : '';
135
+ return `${before}${literalPattern(fragment)}${after}`;
136
+ }
137
+ /**
138
+ * One pass over a text replacing every credential fragment, case-insensitively,
139
+ * longest first at each position. Replacement text is never rescanned, so a short
140
+ * fragment cannot rewrite the `[REDACTED]` marker or the echoed endpoint it wrote.
141
+ */
142
+ function createTextScrubber(endpoint, secrets) {
143
+ const fragments = sensitiveFragments(endpoint, secrets).filter(([fragment]) => fragment !== '');
144
+ if (fragments.length === 0)
145
+ return (text) => text;
146
+ const replacements = new Map(fragments.map(([fragment, replacement]) => [fragment.toLowerCase(), replacement]));
147
+ const pattern = new RegExp(fragments.map(([fragment]) => fragmentPattern(fragment)).join('|'), 'giu');
148
+ return (text) => text.replace(pattern, (found) => replacements.get(found.toLowerCase()) ?? REDACTED);
149
+ }
150
+ /** A string, recognized by `typeof` alone: a schema's failure path would read a Proxy's prototype, which a trap throws from. */
151
+ const TextValueSchema = z.custom((value) => typeof value === 'string');
152
+ /** What a response-derived text becomes when it cannot be scrubbed (not a string, or the scrubber cannot be built): none of it is shown. */
153
+ export const UNSCRUBBABLE_TEXT = '[unscrubbable-text]';
154
+ /**
155
+ * A text a peer of `endpoint` controls (a collector's HTTP reason phrase, a
156
+ * header or body excerpt), with the endpoint's credentials removed by the same
157
+ * one-pass scrubber as a failure description. A collector can echo the request
158
+ * line (`401 rejected POST /v1/logs?token=...`), so such text is never logged,
159
+ * reported or attributed raw. `secrets` are the secret values the request
160
+ * carried beside the endpoint (its header values); each is removed the same way.
161
+ * It never throws: a value that is not a string, or a scrubber that cannot be
162
+ * built, becomes {@link UNSCRUBBABLE_TEXT}.
163
+ */
164
+ export function createEndpointTextSchema(endpoint, secrets = []) {
165
+ return z.unknown().transform((value) => {
166
+ const text = TextValueSchema.safeParse(value);
167
+ if (!text.success)
168
+ return UNSCRUBBABLE_TEXT;
169
+ const scrubbed = attempt(() => createTextScrubber(endpoint, secrets)(text.data));
170
+ return scrubbed.failed ? UNSCRUBBABLE_TEXT : scrubbed.value;
171
+ });
172
+ }
173
+ /**
174
+ * A described failure walked by value. Every string value is scrubbed; a number
175
+ * whose text holds a credential becomes the REDACTED string (a `status` is dropped
176
+ * instead, keeping its type). Keys of free-form maps (`details`, `fields`, a
177
+ * non-Error thrown object, a non-Error cause) are scrubbed too; the description's
178
+ * own fixed keys (`name`, `message`, `stack`, `code`, ...) are structure, not text.
179
+ * Two keys that scrub to the same text keep the later value.
180
+ */
181
+ function createScrubbedDescriptionSchema(scrub) {
182
+ const text = z.string().transform(scrub);
183
+ const number = z.number().transform((value) => scrub(String(value)) === String(value) ? value : REDACTED);
184
+ const status = z.number().transform((value) => scrub(String(value)) === String(value) ? value : undefined);
185
+ const scrubKeys = (record) => Object.fromEntries(Object.entries(record).map(([key, value]) => [scrub(key), value]));
186
+ // Bytes are text a credential can travel in: a Buffer's JSON (`{ type: 'Buffer', data }`) or a typed array
187
+ // walked to its index keys is decoded as UTF-8 and, when it carries a fragment, replaced whole.
188
+ const bytesText = (bytes) => new TextDecoder().decode(Uint8Array.from(bytes));
189
+ const ByteSchema = z.number().int().min(0).max(255);
190
+ const bufferJson = z.strictObject({ type: z.literal('Buffer'), data: z.array(ByteSchema) })
191
+ .transform((buffer) => scrub(bytesText(buffer.data)) === bytesText(buffer.data) ? buffer : REDACTED);
192
+ const byteRecord = z.record(z.string().regex(/^\d+$/), ByteSchema)
193
+ .refine((record) => Object.keys(record).length > 0 && Object.keys(record).every((key, index) => key === String(index)))
194
+ .transform((record) => scrub(bytesText(Object.values(record))) === bytesText(Object.values(record)) ? record : REDACTED);
195
+ const free = z.lazy(() => z.union([text, number, z.array(free), bufferJson, byteRecord, freeRecord, z.unknown()]));
196
+ const freeRecord = z.lazy(() => z.record(z.string(), free).transform(scrubKeys));
197
+ const description = z.lazy(() => z.strictObject({
198
+ name: text,
199
+ message: text,
200
+ code: z.union([text, number]).optional(),
201
+ reason: text.optional(),
202
+ status: status.optional(),
203
+ retryable: z.boolean().optional(),
204
+ details: free.optional(),
205
+ fields: freeRecord.optional(),
206
+ stack: text.optional(),
207
+ cause: z.union([description, free]).optional(),
208
+ errors: z.array(description).optional()
209
+ }));
210
+ return description;
211
+ }
212
+ /** What a failure is described as when its description cannot be scrubbed: no value of it is shown. */
213
+ export const UNSCRUBBABLE_FAILURE_MESSAGE = 'The failure could not be described without its endpoint credentials, so none of its text is shown.';
214
+ /** What a value-free description may keep of a thrown value: whether it is an Error, and the Error's own name. */
215
+ const FailureIdentitySchema = z.union([
216
+ z.instanceof(Error).transform((error) => ({ error: true, name: z.string().safeParse(error.name).data })),
217
+ z.unknown().transform(() => ({ error: false, name: undefined }))
218
+ ]);
219
+ /** The value-free description: the thrown Error's own name when no credential fragment is in it, and a fixed message. */
220
+ function valueFreeFailure(identity, scrub) {
221
+ const named = attempt(() => {
222
+ if (identity === undefined)
223
+ return 'Error';
224
+ if (!identity.error)
225
+ return 'NonError';
226
+ return identity.name !== undefined && scrub(identity.name) === identity.name ? identity.name : 'Error';
227
+ });
228
+ return { name: named.failed ? 'Error' : named.value, message: UNSCRUBBABLE_FAILURE_MESSAGE };
229
+ }
230
+ /**
231
+ * A schema describing any thrown value that failed while using `endpoint`, with the
232
+ * endpoint's credentials removed from every string value the description carries
233
+ * (message, stack, fields such as a runtime's request `path`, details, cause chain,
234
+ * aggregate members), and every value in `secrets` (the header values a request
235
+ * carried: a transport failure can echo one, e.g. `Header 'Authorization' has
236
+ * invalid value: 'Bearer ...'`) removed the same way, so a failure from a
237
+ * credentialed request carries none of its header values. It never throws: a value that cannot be described and
238
+ * scrubbed is described by name and a fixed message, so the caller's own failure
239
+ * (a fetch error, a write's re-buffering) is never replaced by a scrub failure.
240
+ */
241
+ export function createEndpointFailureSchema(endpoint, secrets = []) {
242
+ return z.unknown().transform((cause) => {
243
+ const identity = attempt(() => FailureIdentitySchema.parse(cause));
244
+ const known = identity.failed ? undefined : identity.value;
245
+ const scrubber = attempt(() => createTextScrubber(endpoint, secrets));
246
+ if (scrubber.failed)
247
+ return valueFreeFailure(known, () => '');
248
+ // The total describer never throws; a value it could only describe value-free keeps this schema's own fallback.
249
+ const thrown = ThrownValueSchema.parse(cause);
250
+ if (!thrown.described)
251
+ return valueFreeFailure(known, scrubber.value);
252
+ const scrubbed = attempt(() => createScrubbedDescriptionSchema(scrubber.value).parse(thrown.error));
253
+ return scrubbed.failed ? valueFreeFailure(known, scrubber.value) : scrubbed.value;
254
+ });
255
+ }
256
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/core/endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import * as z from 'zod/v4';
2
+ import { type JobLogContext, type LogContext, type PerformanceTrackerParams, type RequestLogContext } from '../schemas/entry.ts';
3
+ import { type LoggedError, type ThrownValueDescription } from './redact.ts';
4
+ /** The `loggingError.reason` of an entry whose context could not be normalized. */
5
+ export declare const LOG_CONTEXT_FAILED_REASON = "log-context-unnormalizable";
6
+ /** What a log call's context became at the call boundary: normalized, or the failure normalizing it. */
7
+ export interface CallContext {
8
+ readonly context: LogContext;
9
+ readonly failure: LoggedError | undefined;
10
+ }
11
+ /** What an unreadable context's failure says: never the thrown message, which a hostile getter can fill with the value. */
12
+ export declare const UNREADABLE_CONTEXT_MESSAGE = "The log context could not be read (a getter, toJSON or conversion threw); the thrown message is withheld because it may carry the value.";
13
+ /** Describes the failure of a context that could not be read. */
14
+ export declare const UnreadableContextFailureSchema: z.ZodType<LoggedError, unknown, z.core.$ZodTypeInternals<LoggedError, unknown>>;
15
+ /** What a backend failure says when its error cannot be described: never the thrown message, which a hostile getter can fill with the value. */
16
+ export declare const UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE = "A logging backend failed and its error could not be described (a getter, toJSON or conversion threw); the thrown message is withheld because it may carry the value.";
17
+ /**
18
+ * Describes a sink's or output's failure (or a failed recovery) with the total
19
+ * describer: the full `LoggedError` when it can be described, else its readable
20
+ * error name and the fixed `UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE`. It never
21
+ * throws into the caller that logged, and never rejects the joined write.
22
+ */
23
+ export declare const BackendFailureSchema: z.ZodPipe<z.ZodType<ThrownValueDescription, unknown, z.core.$ZodTypeInternals<ThrownValueDescription, unknown>>, z.ZodTransform<LoggedError, ThrownValueDescription>>;
24
+ /**
25
+ * A tracker's `fail(err, ctx)` context: the thrown value's description as
26
+ * `error` over `base`, then the raw `ctx`, read without throwing. A thrown value
27
+ * that could only be described value-free travels as the entry's failure too,
28
+ * so the entry carries it as its `loggingError` and the logger reports it once.
29
+ */
30
+ export declare function mergeFailureContexts(base: LogContext, thrown: ThrownValueDescription, ...raws: readonly unknown[]): CallContext;
31
+ /**
32
+ * A log call's context, normalized at the boundary. A context that cannot be
33
+ * normalized (a throwing `toJSON` or getter) never throws into the caller: the
34
+ * failure travels as a value to the entry, which reports it.
35
+ */
36
+ export declare const CallContextSchema: z.ZodPipe<z.ZodUnknown, z.ZodTransform<CallContext, unknown>>;
37
+ /**
38
+ * Raw contexts merged, in order, over `base`, each read at the boundary without
39
+ * throwing (`end(ctx)`, `fail(err, ctx)`, a derived logger's context). What
40
+ * could be read is kept; the first failure travels as a value.
41
+ */
42
+ export declare function mergeCallContexts(base: LogContext, ...raws: readonly unknown[]): CallContext;
43
+ /** The label a performance tracker uses when its `operation` is not a string. */
44
+ export declare const UNLABELED_OPERATION = "unlabeled";
45
+ /** What a tracker's failure says when its `operation` is not a string: never the value. */
46
+ export declare const OPERATION_NOT_TEXT_MESSAGE = "A performance tracker's operation must be a string; its entries use the label 'unlabeled'.";
47
+ /** A performance tracker's params, read once at creation: its label and its metadata context. */
48
+ export interface TrackerCall {
49
+ /** The operation label every entry names: the `operation` string, else {@link UNLABELED_OPERATION}. */
50
+ readonly operation: string;
51
+ /** `base` with the label as `operation` and the metadata merged; an unreadable or non-string field is its failure. */
52
+ readonly merged: CallContext;
53
+ }
54
+ /**
55
+ * Reads `performanceTracker(params)` once, without throwing: `operation` and
56
+ * `metadata` are each read once inside the guard. A string `operation` is the
57
+ * label; any other value (or params that cannot be read) labels the entries
58
+ * {@link UNLABELED_OPERATION} and travels as the tracker's failure, so every
59
+ * entry carries it as its `loggingError` and the logger reports it once.
60
+ */
61
+ export declare function readTrackerParams(base: LogContext, params: PerformanceTrackerParams): TrackerCall;
62
+ /** The fields `withRequestContext` and `withJobContext` take from their context. */
63
+ export declare const REQUEST_CONTEXT_FIELDS: readonly string[];
64
+ export declare const JOB_CONTEXT_FIELDS: readonly string[];
65
+ /**
66
+ * Only the named fields of a raw context (`withRequestContext`,
67
+ * `withJobContext`), read without throwing; a field the context leaves unset
68
+ * (or null) keeps `base`'s value.
69
+ */
70
+ export declare function mergeCallContextFields(base: LogContext, raw: RequestLogContext | JobLogContext, fields: readonly string[]): CallContext;
71
+ /**
72
+ * The metadata of a logger derived from `merged`. When a context could not be
73
+ * read it carries the `loggingError`, so every entry the derived logger emits
74
+ * shows the failure (the logger reports it once, at its first emission).
75
+ */
76
+ export declare function derivedLoggerMetadata(merged: CallContext): LogContext;
77
+ /**
78
+ * A public log method: the message is validated and the context is handed on
79
+ * raw. The logger checks the entry's level (and emission window and sampling)
80
+ * first and only then normalizes the context, once, with
81
+ * {@link OptionalCallContextSchema}: a filtered call never walks its context, and an
82
+ * emitted one walks it exactly once. Normalizing never throws.
83
+ */
84
+ export declare const LogCallSchema: z.ZodFunction<z.ZodTuple<readonly [z.ZodCustom<string, string>, z.ZodOptional<z.ZodUnknown>, z.ZodOptional<z.ZodUnknown>], null>, z.ZodVoid>;
85
+ /** A log call's raw context, normalized once at the boundary without throwing (`undefined` is no context). */
86
+ export declare const OptionalCallContextSchema: z.ZodOptional<z.ZodPipe<z.ZodUnknown, z.ZodTransform<CallContext, unknown>>>;
87
+ /** A forwarding wrapper hands the raw context on, for the logger it wraps to normalize. */
88
+ export declare const ForwardedLogCallSchema: z.ZodFunction<z.ZodTuple<readonly [z.ZodCustom<string, string>, z.ZodOptional<z.ZodUnknown>, z.ZodOptional<z.ZodUnknown>], null>, z.ZodVoid>;
89
+ /** An entry's context, and the failure when its context could not be prepared. */
90
+ export interface PreparedEntryContext {
91
+ readonly context: LogContext;
92
+ readonly failure: LoggedError | undefined;
93
+ }
94
+ /**
95
+ * The entry context for a logger's `base` metadata and a call's context. Both
96
+ * are already walked snapshots (the base was read once when the logger was
97
+ * made, the call once at the boundary), so they are merged, not walked again:
98
+ * every value is JSON and every own key (a `__proto__` field included) is kept
99
+ * as data. A logging backend must never break the caller that logged, and its
100
+ * failure must not be silent: when the call's context could not be read the
101
+ * entry keeps its level, namespace and message, its context becomes what could
102
+ * be kept plus a `loggingError` describing the failure (never the caller's
103
+ * value), and the failure is returned for the diagnostics path.
104
+ */
105
+ export declare function prepareEntryContext(base: LogContext, call: CallContext | undefined): PreparedEntryContext;
106
+ //# sourceMappingURL=entry-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-context.d.ts","sourceRoot":"","sources":["../../src/core/entry-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAgD,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,wBAAwB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/K,OAAO,EAA+F,KAAK,WAAW,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGzK,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE,wGAAwG;AACxG,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;CAC1C;AAED,2HAA2H;AAC3H,eAAO,MAAM,0BAA0B,6IAA6I,CAAC;AAErL,iEAAiE;AACjE,eAAO,MAAM,8BAA8B,iFAAqD,CAAC;AAEjG,gJAAgJ;AAChJ,eAAO,MAAM,qCAAqC,yKAAyK,CAAC;AAE5N;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,uKAAkH,CAAC;AAEpJ;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,CAI/H;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,+DAI5B,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,CAS5F;AAED,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,0BAA0B,+FAA4G,CAAC;AAEpJ,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC3B,uGAAuG;IACvG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sHAAsH;IACtH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC7B;AAOD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,wBAAwB,GAAG,WAAW,CAYjG;AAED,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA4C,CAAC;AACjG,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAwC,CAAC;AAEzF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,GAAG,aAAa,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAOvI;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAErE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,8IAGxB,CAAC;AAEH,8GAA8G;AAC9G,eAAO,MAAM,yBAAyB,8EAA+B,CAAC;AAEtE,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,8IAGjC,CAAC;AAEH,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;CAC1C;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,oBAAoB,CAKzG"}
@@ -0,0 +1,150 @@
1
+ import * as z from 'zod/v4';
2
+ import { JobLogContextSchema, RequestLogContextSchema } from "../schemas/entry.js";
3
+ import { NormalizedLogContextSchema } from "./normalize.js";
4
+ import { CallerStringSchema, createFieldsReadSchema, createThrownValueSchema, valueFreeFailureSchema } from "./redact.js";
5
+ import { attempt } from "./outcome.js";
6
+ /** The `loggingError.reason` of an entry whose context could not be normalized. */
7
+ export const LOG_CONTEXT_FAILED_REASON = 'log-context-unnormalizable';
8
+ /** What an unreadable context's failure says: never the thrown message, which a hostile getter can fill with the value. */
9
+ export const UNREADABLE_CONTEXT_MESSAGE = 'The log context could not be read (a getter, toJSON or conversion threw); the thrown message is withheld because it may carry the value.';
10
+ /** Describes the failure of a context that could not be read. */
11
+ export const UnreadableContextFailureSchema = valueFreeFailureSchema(UNREADABLE_CONTEXT_MESSAGE);
12
+ /** What a backend failure says when its error cannot be described: never the thrown message, which a hostile getter can fill with the value. */
13
+ export const UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE = 'A logging backend failed and its error could not be described (a getter, toJSON or conversion threw); the thrown message is withheld because it may carry the value.';
14
+ /**
15
+ * Describes a sink's or output's failure (or a failed recovery) with the total
16
+ * describer: the full `LoggedError` when it can be described, else its readable
17
+ * error name and the fixed `UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE`. It never
18
+ * throws into the caller that logged, and never rejects the joined write.
19
+ */
20
+ export const BackendFailureSchema = createThrownValueSchema(UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE).transform((thrown) => thrown.error);
21
+ /**
22
+ * A tracker's `fail(err, ctx)` context: the thrown value's description as
23
+ * `error` over `base`, then the raw `ctx`, read without throwing. A thrown value
24
+ * that could only be described value-free travels as the entry's failure too,
25
+ * so the entry carries it as its `loggingError` and the logger reports it once.
26
+ */
27
+ export function mergeFailureContexts(base, thrown, ...raws) {
28
+ const merged = mergeCallContexts({ ...base, error: thrown.error }, ...raws);
29
+ if (thrown.described)
30
+ return merged;
31
+ return { context: merged.context, failure: merged.failure ?? thrown.error };
32
+ }
33
+ /**
34
+ * A log call's context, normalized at the boundary. A context that cannot be
35
+ * normalized (a throwing `toJSON` or getter) never throws into the caller: the
36
+ * failure travels as a value to the entry, which reports it.
37
+ */
38
+ export const CallContextSchema = z.unknown().transform((raw) => {
39
+ const normalized = attempt(() => NormalizedLogContextSchema.parse(raw));
40
+ if (!normalized.failed)
41
+ return { context: normalized.value, failure: undefined };
42
+ return { context: {}, failure: UnreadableContextFailureSchema.parse(normalized.cause) };
43
+ });
44
+ /**
45
+ * Raw contexts merged, in order, over `base`, each read at the boundary without
46
+ * throwing (`end(ctx)`, `fail(err, ctx)`, a derived logger's context). What
47
+ * could be read is kept; the first failure travels as a value.
48
+ */
49
+ export function mergeCallContexts(base, ...raws) {
50
+ let context = base;
51
+ let failure;
52
+ for (const raw of raws) {
53
+ const call = CallContextSchema.parse(raw);
54
+ context = { ...context, ...call.context };
55
+ failure ??= call.failure;
56
+ }
57
+ return { context, failure };
58
+ }
59
+ /** The label a performance tracker uses when its `operation` is not a string. */
60
+ export const UNLABELED_OPERATION = 'unlabeled';
61
+ /** What a tracker's failure says when its `operation` is not a string: never the value. */
62
+ export const OPERATION_NOT_TEXT_MESSAGE = `A performance tracker's operation must be a string; its entries use the label '${UNLABELED_OPERATION}'.`;
63
+ const TrackerOperationReadSchema = createFieldsReadSchema(['operation']);
64
+ const TrackerMetadataReadSchema = createFieldsReadSchema(['metadata']);
65
+ /** A string, recognized by `typeof` alone: a schema's failure path would read a Proxy's prototype, which a trap throws from. */
66
+ const OperationLabelSchema = z.custom((value) => typeof value === 'string');
67
+ /**
68
+ * Reads `performanceTracker(params)` once, without throwing: `operation` and
69
+ * `metadata` are each read once inside the guard. A string `operation` is the
70
+ * label; any other value (or params that cannot be read) labels the entries
71
+ * {@link UNLABELED_OPERATION} and travels as the tracker's failure, so every
72
+ * entry carries it as its `loggingError` and the logger reports it once.
73
+ */
74
+ export function readTrackerParams(base, params) {
75
+ const read = TrackerOperationReadSchema.safeParse(params);
76
+ const label = read.success ? OperationLabelSchema.safeParse(read.data.operation) : undefined;
77
+ const operation = label?.success ? label.data : UNLABELED_OPERATION;
78
+ const labelFailure = !read.success
79
+ ? UnreadableContextFailureSchema.parse(read.error)
80
+ : label?.success ? undefined : { name: 'TypeError', message: OPERATION_NOT_TEXT_MESSAGE };
81
+ const metadata = TrackerMetadataReadSchema.safeParse(params);
82
+ const merged = metadata.success
83
+ ? mergeCallContexts({ ...base, operation }, metadata.data.metadata)
84
+ : { context: { ...base, operation }, failure: UnreadableContextFailureSchema.parse(metadata.error) };
85
+ return { operation, merged: { context: merged.context, failure: labelFailure ?? merged.failure } };
86
+ }
87
+ /** The fields `withRequestContext` and `withJobContext` take from their context. */
88
+ export const REQUEST_CONTEXT_FIELDS = RequestLogContextSchema.keyof().options;
89
+ export const JOB_CONTEXT_FIELDS = JobLogContextSchema.keyof().options;
90
+ /**
91
+ * Only the named fields of a raw context (`withRequestContext`,
92
+ * `withJobContext`), read without throwing; a field the context leaves unset
93
+ * (or null) keeps `base`'s value.
94
+ */
95
+ export function mergeCallContextFields(base, raw, fields) {
96
+ const call = CallContextSchema.parse(raw);
97
+ const picked = Object.fromEntries(fields.flatMap((field) => {
98
+ const value = call.context[field];
99
+ return value === undefined || value === null ? [] : [[field, value]];
100
+ }));
101
+ return { context: { ...base, ...picked }, failure: call.failure };
102
+ }
103
+ /**
104
+ * The metadata of a logger derived from `merged`. When a context could not be
105
+ * read it carries the `loggingError`, so every entry the derived logger emits
106
+ * shows the failure (the logger reports it once, at its first emission).
107
+ */
108
+ export function derivedLoggerMetadata(merged) {
109
+ return merged.failure ? withLoggingError(merged.context, merged.failure) : merged.context;
110
+ }
111
+ /**
112
+ * A public log method: the message is validated and the context is handed on
113
+ * raw. The logger checks the entry's level (and emission window and sampling)
114
+ * first and only then normalizes the context, once, with
115
+ * {@link OptionalCallContextSchema}: a filtered call never walks its context, and an
116
+ * emitted one walks it exactly once. Normalizing never throws.
117
+ */
118
+ export const LogCallSchema = z.function({
119
+ input: [CallerStringSchema, z.unknown().optional(), z.unknown().optional()],
120
+ output: z.void()
121
+ });
122
+ /** A log call's raw context, normalized once at the boundary without throwing (`undefined` is no context). */
123
+ export const OptionalCallContextSchema = CallContextSchema.optional();
124
+ /** A forwarding wrapper hands the raw context on, for the logger it wraps to normalize. */
125
+ export const ForwardedLogCallSchema = z.function({
126
+ input: [CallerStringSchema, z.unknown().optional(), z.unknown().optional()],
127
+ output: z.void()
128
+ });
129
+ function withLoggingError(context, error) {
130
+ return { ...context, loggingError: { reason: LOG_CONTEXT_FAILED_REASON, error } };
131
+ }
132
+ /**
133
+ * The entry context for a logger's `base` metadata and a call's context. Both
134
+ * are already walked snapshots (the base was read once when the logger was
135
+ * made, the call once at the boundary), so they are merged, not walked again:
136
+ * every value is JSON and every own key (a `__proto__` field included) is kept
137
+ * as data. A logging backend must never break the caller that logged, and its
138
+ * failure must not be silent: when the call's context could not be read the
139
+ * entry keeps its level, namespace and message, its context becomes what could
140
+ * be kept plus a `loggingError` describing the failure (never the caller's
141
+ * value), and the failure is returned for the diagnostics path.
142
+ */
143
+ export function prepareEntryContext(base, call) {
144
+ const merged = { ...base, ...call?.context };
145
+ const callFailure = call?.failure;
146
+ if (callFailure === undefined)
147
+ return { context: merged, failure: undefined };
148
+ return { context: withLoggingError(merged, callFailure), failure: callFailure };
149
+ }
150
+ //# sourceMappingURL=entry-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-context.js","sourceRoot":"","sources":["../../src/core/entry-context.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,10 @@
4
4
  * Exports logger factory and types.
5
5
  */
6
6
  export { createRuntimeLogger } from './logger.ts';
7
+ export { REDACTED, FUNCTION_MARKER, SecretValue, isSecretKey, CREDENTIAL_KEY_WORDS, SecretValueSchema, RedactedLogValueSchema, secret, LoggedErrorSchema, UNDESCRIBABLE_ERROR_MESSAGE, UNREADABLE_LOG_VALUE_MESSAGE, JSON_HOOK_REFUSAL_MESSAGE, MAX_WALK_BREADTH, TRUNCATED_KEY, truncationMarker, type LoggedError } from './redact.ts';
8
+ export { RedactedEndpointSchema, UNPARSEABLE_ENDPOINT, UNSCRUBBABLE_FAILURE_MESSAGE, SUBSTRING_FRAGMENT_MIN_LENGTH, CREDENTIAL_QUERY_PARAMETER_NAMES, createEndpointFailureSchema, createEndpointTextSchema, UNSCRUBBABLE_TEXT } from './endpoint.ts';
9
+ export { UNREADABLE_CONTEXT_MESSAGE, UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE, UNLABELED_OPERATION, OPERATION_NOT_TEXT_MESSAGE } from './entry-context.ts';
10
+ export { NormalizedLogContextSchema, LogMethodSchema, PerformanceFailureSchema, type LogMethod, type PerformanceFailureMethod } from './normalize.ts';
7
11
  export type { Logger, RuntimeLogger, Runtime, RuntimeLoggerOptions, RuntimeLoggerConfig } from './types.ts';
8
12
  export { parseNamespaceSettings, parseNamespaceSettingsFromEnv, matchesSelector, isNamespaceIncluded, shouldLog, updateNamespaceSettings, getNamespaceSettings, defaultNamespaceSettings, type NamespaceSelector, type NamespaceSelectors, type NamespaceSettings } from './namespace.ts';
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,YAAY,EACX,MAAM,EACN,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACN,sBAAsB,EACtB,6BAA6B,EAC7B,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EACN,QAAQ,EACR,eAAe,EACf,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,KAAK,WAAW,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,6BAA6B,EAC7B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,0BAA0B,EAAE,qCAAqC,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAExJ,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,wBAAwB,EAAE,KAAK,SAAS,EAAE,KAAK,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAGtJ,YAAY,EACX,MAAM,EACN,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACN,sBAAsB,EACtB,6BAA6B,EAC7B,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,MAAM,gBAAgB,CAAC"}
@@ -5,6 +5,11 @@
5
5
  */
6
6
  // Logger factory
7
7
  export { createRuntimeLogger } from "./logger.js";
8
+ // Redaction and structured errors (the contract every entry context passes through)
9
+ export { REDACTED, FUNCTION_MARKER, SecretValue, isSecretKey, CREDENTIAL_KEY_WORDS, SecretValueSchema, RedactedLogValueSchema, secret, LoggedErrorSchema, UNDESCRIBABLE_ERROR_MESSAGE, UNREADABLE_LOG_VALUE_MESSAGE, JSON_HOOK_REFUSAL_MESSAGE, MAX_WALK_BREADTH, TRUNCATED_KEY, truncationMarker } from "./redact.js";
10
+ export { RedactedEndpointSchema, UNPARSEABLE_ENDPOINT, UNSCRUBBABLE_FAILURE_MESSAGE, SUBSTRING_FRAGMENT_MIN_LENGTH, CREDENTIAL_QUERY_PARAMETER_NAMES, createEndpointFailureSchema, createEndpointTextSchema, UNSCRUBBABLE_TEXT } from "./endpoint.js";
11
+ export { UNREADABLE_CONTEXT_MESSAGE, UNDESCRIBABLE_BACKEND_FAILURE_MESSAGE, UNLABELED_OPERATION, OPERATION_NOT_TEXT_MESSAGE } from "./entry-context.js";
12
+ export { NormalizedLogContextSchema, LogMethodSchema, PerformanceFailureSchema } from "./normalize.js";
8
13
  // Namespace utilities
9
14
  export { parseNamespaceSettings, parseNamespaceSettingsFromEnv, matchesSelector, isNamespaceIncluded, shouldLog, updateNamespaceSettings, getNamespaceSettings, defaultNamespaceSettings } from "./namespace.js";
10
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWlD,sBAAsB;AACtB,OAAO,EACN,sBAAsB,EACtB,6BAA6B,EAC7B,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EAIxB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,oFAAoF;AACpF,OAAO,EACN,QAAQ,EACR,eAAe,EACf,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAEhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,6BAA6B,EAC7B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,0BAA0B,EAAE,qCAAqC,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAExJ,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,wBAAwB,EAAiD,MAAM,gBAAgB,CAAC;AAWtJ,sBAAsB;AACtB,OAAO,EACN,sBAAsB,EACtB,6BAA6B,EAC7B,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EAIxB,MAAM,gBAAgB,CAAC"}
@@ -1,3 +1,8 @@
1
+ import type { SinkImplementation } from '../kinds/sink.ts';
1
2
  import type { RuntimeLogger, RuntimeLoggerOptions } from './types.ts';
2
- export declare function createRuntimeLogger(options: RuntimeLoggerOptions): RuntimeLogger;
3
+ import { type RuntimeRef } from '@vibesdotdev/kernel';
4
+ export declare function createRuntimeLogger(options: RuntimeLoggerOptions & {
5
+ sinkImpls: SinkImplementation[];
6
+ }): RuntimeLogger;
7
+ export declare function createRuntimeLogger(options: RuntimeLoggerOptions, runtime: RuntimeRef): Promise<RuntimeLogger>;
3
8
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAuB,MAAM,YAAY,CAAC;AAoC3F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAgHhF"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAuB,MAAM,YAAY,CAAC;AAW3F,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoB1F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAAE,SAAS,EAAE,kBAAkB,EAAE,CAAA;CAAE,GAAG,aAAa,CAAC;AACxH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC"}