lograil 0.1.0

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 (373) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +40 -0
  4. package/dist/cjs/context/async-context.browser.d.ts +16 -0
  5. package/dist/cjs/context/async-context.browser.d.ts.map +1 -0
  6. package/dist/cjs/context/async-context.browser.js +29 -0
  7. package/dist/cjs/context/async-context.browser.js.map +1 -0
  8. package/dist/cjs/context/async-context.d.ts +10 -0
  9. package/dist/cjs/context/async-context.d.ts.map +1 -0
  10. package/dist/cjs/context/async-context.js +37 -0
  11. package/dist/cjs/context/async-context.js.map +1 -0
  12. package/dist/cjs/context/context.d.ts +33 -0
  13. package/dist/cjs/context/context.d.ts.map +1 -0
  14. package/dist/cjs/context/context.js +57 -0
  15. package/dist/cjs/context/context.js.map +1 -0
  16. package/dist/cjs/context/index.d.ts +3 -0
  17. package/dist/cjs/context/index.d.ts.map +1 -0
  18. package/dist/cjs/context/index.js +19 -0
  19. package/dist/cjs/context/index.js.map +1 -0
  20. package/dist/cjs/core/entry.d.ts +30 -0
  21. package/dist/cjs/core/entry.d.ts.map +1 -0
  22. package/dist/cjs/core/entry.js +37 -0
  23. package/dist/cjs/core/entry.js.map +1 -0
  24. package/dist/cjs/core/index.d.ts +7 -0
  25. package/dist/cjs/core/index.d.ts.map +1 -0
  26. package/dist/cjs/core/index.js +24 -0
  27. package/dist/cjs/core/index.js.map +1 -0
  28. package/dist/cjs/core/level.d.ts +12 -0
  29. package/dist/cjs/core/level.d.ts.map +1 -0
  30. package/dist/cjs/core/level.js +31 -0
  31. package/dist/cjs/core/level.js.map +1 -0
  32. package/dist/cjs/core/logger.d.ts +271 -0
  33. package/dist/cjs/core/logger.d.ts.map +1 -0
  34. package/dist/cjs/core/logger.js +751 -0
  35. package/dist/cjs/core/logger.js.map +1 -0
  36. package/dist/cjs/core/printf.d.ts +34 -0
  37. package/dist/cjs/core/printf.d.ts.map +1 -0
  38. package/dist/cjs/core/printf.js +133 -0
  39. package/dist/cjs/core/printf.js.map +1 -0
  40. package/dist/cjs/index.d.ts +40 -0
  41. package/dist/cjs/index.d.ts.map +1 -0
  42. package/dist/cjs/index.js +56 -0
  43. package/dist/cjs/index.js.map +1 -0
  44. package/dist/cjs/package.json +1 -0
  45. package/dist/cjs/pipeline/filter.d.ts +10 -0
  46. package/dist/cjs/pipeline/filter.d.ts.map +1 -0
  47. package/dist/cjs/pipeline/filter.js +16 -0
  48. package/dist/cjs/pipeline/filter.js.map +1 -0
  49. package/dist/cjs/pipeline/formatter.d.ts +19 -0
  50. package/dist/cjs/pipeline/formatter.d.ts.map +1 -0
  51. package/dist/cjs/pipeline/formatter.js +183 -0
  52. package/dist/cjs/pipeline/formatter.js.map +1 -0
  53. package/dist/cjs/pipeline/index.d.ts +6 -0
  54. package/dist/cjs/pipeline/index.d.ts.map +1 -0
  55. package/dist/cjs/pipeline/index.js +22 -0
  56. package/dist/cjs/pipeline/index.js.map +1 -0
  57. package/dist/cjs/pipeline/pipeline.d.ts +45 -0
  58. package/dist/cjs/pipeline/pipeline.d.ts.map +1 -0
  59. package/dist/cjs/pipeline/pipeline.js +80 -0
  60. package/dist/cjs/pipeline/pipeline.js.map +1 -0
  61. package/dist/cjs/pipeline/processor.d.ts +67 -0
  62. package/dist/cjs/pipeline/processor.d.ts.map +1 -0
  63. package/dist/cjs/pipeline/processor.js +284 -0
  64. package/dist/cjs/pipeline/processor.js.map +1 -0
  65. package/dist/cjs/pipeline/sampler.d.ts +45 -0
  66. package/dist/cjs/pipeline/sampler.d.ts.map +1 -0
  67. package/dist/cjs/pipeline/sampler.js +62 -0
  68. package/dist/cjs/pipeline/sampler.js.map +1 -0
  69. package/dist/cjs/plugin/index.d.ts +4 -0
  70. package/dist/cjs/plugin/index.d.ts.map +1 -0
  71. package/dist/cjs/plugin/index.js +20 -0
  72. package/dist/cjs/plugin/index.js.map +1 -0
  73. package/dist/cjs/plugin/manager.d.ts +38 -0
  74. package/dist/cjs/plugin/manager.d.ts.map +1 -0
  75. package/dist/cjs/plugin/manager.js +79 -0
  76. package/dist/cjs/plugin/manager.js.map +1 -0
  77. package/dist/cjs/plugin/otel-trace.d.ts +19 -0
  78. package/dist/cjs/plugin/otel-trace.d.ts.map +1 -0
  79. package/dist/cjs/plugin/otel-trace.js +91 -0
  80. package/dist/cjs/plugin/otel-trace.js.map +1 -0
  81. package/dist/cjs/plugin/plugin.d.ts +41 -0
  82. package/dist/cjs/plugin/plugin.d.ts.map +1 -0
  83. package/dist/cjs/plugin/plugin.js +3 -0
  84. package/dist/cjs/plugin/plugin.js.map +1 -0
  85. package/dist/cjs/runtime/adapter.d.ts +81 -0
  86. package/dist/cjs/runtime/adapter.d.ts.map +1 -0
  87. package/dist/cjs/runtime/adapter.js +3 -0
  88. package/dist/cjs/runtime/adapter.js.map +1 -0
  89. package/dist/cjs/runtime/defaults.d.ts +27 -0
  90. package/dist/cjs/runtime/defaults.d.ts.map +1 -0
  91. package/dist/cjs/runtime/defaults.js +30 -0
  92. package/dist/cjs/runtime/defaults.js.map +1 -0
  93. package/dist/cjs/runtime/electron-binding.browser.d.ts +10 -0
  94. package/dist/cjs/runtime/electron-binding.browser.d.ts.map +1 -0
  95. package/dist/cjs/runtime/electron-binding.browser.js +18 -0
  96. package/dist/cjs/runtime/electron-binding.browser.js.map +1 -0
  97. package/dist/cjs/runtime/electron-binding.d.ts +24 -0
  98. package/dist/cjs/runtime/electron-binding.d.ts.map +1 -0
  99. package/dist/cjs/runtime/electron-binding.js +49 -0
  100. package/dist/cjs/runtime/electron-binding.js.map +1 -0
  101. package/dist/cjs/runtime/electron-lifecycle.d.ts +17 -0
  102. package/dist/cjs/runtime/electron-lifecycle.d.ts.map +1 -0
  103. package/dist/cjs/runtime/electron-lifecycle.js +47 -0
  104. package/dist/cjs/runtime/electron-lifecycle.js.map +1 -0
  105. package/dist/cjs/runtime/electron-main.d.ts +24 -0
  106. package/dist/cjs/runtime/electron-main.d.ts.map +1 -0
  107. package/dist/cjs/runtime/electron-main.js +102 -0
  108. package/dist/cjs/runtime/electron-main.js.map +1 -0
  109. package/dist/cjs/runtime/electron-renderer.d.ts +26 -0
  110. package/dist/cjs/runtime/electron-renderer.d.ts.map +1 -0
  111. package/dist/cjs/runtime/electron-renderer.js +33 -0
  112. package/dist/cjs/runtime/electron-renderer.js.map +1 -0
  113. package/dist/cjs/runtime/electron.d.ts +20 -0
  114. package/dist/cjs/runtime/electron.d.ts.map +1 -0
  115. package/dist/cjs/runtime/electron.js +27 -0
  116. package/dist/cjs/runtime/electron.js.map +1 -0
  117. package/dist/cjs/runtime/index.d.ts +21 -0
  118. package/dist/cjs/runtime/index.d.ts.map +1 -0
  119. package/dist/cjs/runtime/index.js +41 -0
  120. package/dist/cjs/runtime/index.js.map +1 -0
  121. package/dist/cjs/runtime/node.d.ts +27 -0
  122. package/dist/cjs/runtime/node.d.ts.map +1 -0
  123. package/dist/cjs/runtime/node.js +126 -0
  124. package/dist/cjs/runtime/node.js.map +1 -0
  125. package/dist/cjs/runtime/process-lifecycle.d.ts +13 -0
  126. package/dist/cjs/runtime/process-lifecycle.d.ts.map +1 -0
  127. package/dist/cjs/runtime/process-lifecycle.js +80 -0
  128. package/dist/cjs/runtime/process-lifecycle.js.map +1 -0
  129. package/dist/cjs/runtime/web-lifecycle.d.ts +13 -0
  130. package/dist/cjs/runtime/web-lifecycle.d.ts.map +1 -0
  131. package/dist/cjs/runtime/web-lifecycle.js +39 -0
  132. package/dist/cjs/runtime/web-lifecycle.js.map +1 -0
  133. package/dist/cjs/runtime/web.d.ts +14 -0
  134. package/dist/cjs/runtime/web.d.ts.map +1 -0
  135. package/dist/cjs/runtime/web.js +61 -0
  136. package/dist/cjs/runtime/web.js.map +1 -0
  137. package/dist/cjs/shims/index.browser.d.ts +26 -0
  138. package/dist/cjs/shims/index.browser.d.ts.map +1 -0
  139. package/dist/cjs/shims/index.browser.js +67 -0
  140. package/dist/cjs/shims/index.browser.js.map +1 -0
  141. package/dist/cjs/shims/index.d.ts +15 -0
  142. package/dist/cjs/shims/index.d.ts.map +1 -0
  143. package/dist/cjs/shims/index.js +39 -0
  144. package/dist/cjs/shims/index.js.map +1 -0
  145. package/dist/cjs/transport/cluster-ipc.d.ts +36 -0
  146. package/dist/cjs/transport/cluster-ipc.d.ts.map +1 -0
  147. package/dist/cjs/transport/cluster-ipc.js +76 -0
  148. package/dist/cjs/transport/cluster-ipc.js.map +1 -0
  149. package/dist/cjs/transport/console.d.ts +28 -0
  150. package/dist/cjs/transport/console.d.ts.map +1 -0
  151. package/dist/cjs/transport/console.js +48 -0
  152. package/dist/cjs/transport/console.js.map +1 -0
  153. package/dist/cjs/transport/electron-ipc.d.ts +69 -0
  154. package/dist/cjs/transport/electron-ipc.d.ts.map +1 -0
  155. package/dist/cjs/transport/electron-ipc.js +153 -0
  156. package/dist/cjs/transport/electron-ipc.js.map +1 -0
  157. package/dist/cjs/transport/file.d.ts +190 -0
  158. package/dist/cjs/transport/file.d.ts.map +1 -0
  159. package/dist/cjs/transport/file.js +666 -0
  160. package/dist/cjs/transport/file.js.map +1 -0
  161. package/dist/cjs/transport/index.d.ts +9 -0
  162. package/dist/cjs/transport/index.d.ts.map +1 -0
  163. package/dist/cjs/transport/index.js +25 -0
  164. package/dist/cjs/transport/index.js.map +1 -0
  165. package/dist/cjs/transport/live.d.ts +72 -0
  166. package/dist/cjs/transport/live.d.ts.map +1 -0
  167. package/dist/cjs/transport/live.js +104 -0
  168. package/dist/cjs/transport/live.js.map +1 -0
  169. package/dist/cjs/transport/otlp.d.ts +97 -0
  170. package/dist/cjs/transport/otlp.d.ts.map +1 -0
  171. package/dist/cjs/transport/otlp.js +194 -0
  172. package/dist/cjs/transport/otlp.js.map +1 -0
  173. package/dist/cjs/transport/rotating-file.d.ts +67 -0
  174. package/dist/cjs/transport/rotating-file.d.ts.map +1 -0
  175. package/dist/cjs/transport/rotating-file.js +179 -0
  176. package/dist/cjs/transport/rotating-file.js.map +1 -0
  177. package/dist/cjs/transport/transport.d.ts +35 -0
  178. package/dist/cjs/transport/transport.d.ts.map +1 -0
  179. package/dist/cjs/transport/transport.js +3 -0
  180. package/dist/cjs/transport/transport.js.map +1 -0
  181. package/dist/cjs/transport/worker-ipc.d.ts +43 -0
  182. package/dist/cjs/transport/worker-ipc.d.ts.map +1 -0
  183. package/dist/cjs/transport/worker-ipc.js +106 -0
  184. package/dist/cjs/transport/worker-ipc.js.map +1 -0
  185. package/dist/cjs/types.d.ts +72 -0
  186. package/dist/cjs/types.d.ts.map +1 -0
  187. package/dist/cjs/types.js +45 -0
  188. package/dist/cjs/types.js.map +1 -0
  189. package/dist/esm/context/async-context.browser.d.ts +16 -0
  190. package/dist/esm/context/async-context.browser.d.ts.map +1 -0
  191. package/dist/esm/context/async-context.browser.js +25 -0
  192. package/dist/esm/context/async-context.browser.js.map +1 -0
  193. package/dist/esm/context/async-context.d.ts +10 -0
  194. package/dist/esm/context/async-context.d.ts.map +1 -0
  195. package/dist/esm/context/async-context.js +33 -0
  196. package/dist/esm/context/async-context.js.map +1 -0
  197. package/dist/esm/context/context.d.ts +33 -0
  198. package/dist/esm/context/context.d.ts.map +1 -0
  199. package/dist/esm/context/context.js +52 -0
  200. package/dist/esm/context/context.js.map +1 -0
  201. package/dist/esm/context/index.d.ts +3 -0
  202. package/dist/esm/context/index.d.ts.map +1 -0
  203. package/dist/esm/context/index.js +3 -0
  204. package/dist/esm/context/index.js.map +1 -0
  205. package/dist/esm/core/entry.d.ts +30 -0
  206. package/dist/esm/core/entry.d.ts.map +1 -0
  207. package/dist/esm/core/entry.js +34 -0
  208. package/dist/esm/core/entry.js.map +1 -0
  209. package/dist/esm/core/index.d.ts +7 -0
  210. package/dist/esm/core/index.d.ts.map +1 -0
  211. package/dist/esm/core/index.js +6 -0
  212. package/dist/esm/core/index.js.map +1 -0
  213. package/dist/esm/core/level.d.ts +12 -0
  214. package/dist/esm/core/level.d.ts.map +1 -0
  215. package/dist/esm/core/level.js +25 -0
  216. package/dist/esm/core/level.js.map +1 -0
  217. package/dist/esm/core/logger.d.ts +271 -0
  218. package/dist/esm/core/logger.d.ts.map +1 -0
  219. package/dist/esm/core/logger.js +747 -0
  220. package/dist/esm/core/logger.js.map +1 -0
  221. package/dist/esm/core/printf.d.ts +34 -0
  222. package/dist/esm/core/printf.d.ts.map +1 -0
  223. package/dist/esm/core/printf.js +129 -0
  224. package/dist/esm/core/printf.js.map +1 -0
  225. package/dist/esm/index.d.ts +40 -0
  226. package/dist/esm/index.d.ts.map +1 -0
  227. package/dist/esm/index.js +38 -0
  228. package/dist/esm/index.js.map +1 -0
  229. package/dist/esm/pipeline/filter.d.ts +10 -0
  230. package/dist/esm/pipeline/filter.d.ts.map +1 -0
  231. package/dist/esm/pipeline/filter.js +11 -0
  232. package/dist/esm/pipeline/filter.js.map +1 -0
  233. package/dist/esm/pipeline/formatter.d.ts +19 -0
  234. package/dist/esm/pipeline/formatter.d.ts.map +1 -0
  235. package/dist/esm/pipeline/formatter.js +179 -0
  236. package/dist/esm/pipeline/formatter.js.map +1 -0
  237. package/dist/esm/pipeline/index.d.ts +6 -0
  238. package/dist/esm/pipeline/index.d.ts.map +1 -0
  239. package/dist/esm/pipeline/index.js +6 -0
  240. package/dist/esm/pipeline/index.js.map +1 -0
  241. package/dist/esm/pipeline/pipeline.d.ts +45 -0
  242. package/dist/esm/pipeline/pipeline.d.ts.map +1 -0
  243. package/dist/esm/pipeline/pipeline.js +76 -0
  244. package/dist/esm/pipeline/pipeline.js.map +1 -0
  245. package/dist/esm/pipeline/processor.d.ts +67 -0
  246. package/dist/esm/pipeline/processor.d.ts.map +1 -0
  247. package/dist/esm/pipeline/processor.js +277 -0
  248. package/dist/esm/pipeline/processor.js.map +1 -0
  249. package/dist/esm/pipeline/sampler.d.ts +45 -0
  250. package/dist/esm/pipeline/sampler.d.ts.map +1 -0
  251. package/dist/esm/pipeline/sampler.js +59 -0
  252. package/dist/esm/pipeline/sampler.js.map +1 -0
  253. package/dist/esm/plugin/index.d.ts +4 -0
  254. package/dist/esm/plugin/index.d.ts.map +1 -0
  255. package/dist/esm/plugin/index.js +4 -0
  256. package/dist/esm/plugin/index.js.map +1 -0
  257. package/dist/esm/plugin/manager.d.ts +38 -0
  258. package/dist/esm/plugin/manager.d.ts.map +1 -0
  259. package/dist/esm/plugin/manager.js +75 -0
  260. package/dist/esm/plugin/manager.js.map +1 -0
  261. package/dist/esm/plugin/otel-trace.d.ts +19 -0
  262. package/dist/esm/plugin/otel-trace.d.ts.map +1 -0
  263. package/dist/esm/plugin/otel-trace.js +55 -0
  264. package/dist/esm/plugin/otel-trace.js.map +1 -0
  265. package/dist/esm/plugin/plugin.d.ts +41 -0
  266. package/dist/esm/plugin/plugin.d.ts.map +1 -0
  267. package/dist/esm/plugin/plugin.js +2 -0
  268. package/dist/esm/plugin/plugin.js.map +1 -0
  269. package/dist/esm/runtime/adapter.d.ts +81 -0
  270. package/dist/esm/runtime/adapter.d.ts.map +1 -0
  271. package/dist/esm/runtime/adapter.js +2 -0
  272. package/dist/esm/runtime/adapter.js.map +1 -0
  273. package/dist/esm/runtime/defaults.d.ts +27 -0
  274. package/dist/esm/runtime/defaults.d.ts.map +1 -0
  275. package/dist/esm/runtime/defaults.js +27 -0
  276. package/dist/esm/runtime/defaults.js.map +1 -0
  277. package/dist/esm/runtime/electron-binding.browser.d.ts +10 -0
  278. package/dist/esm/runtime/electron-binding.browser.d.ts.map +1 -0
  279. package/dist/esm/runtime/electron-binding.browser.js +13 -0
  280. package/dist/esm/runtime/electron-binding.browser.js.map +1 -0
  281. package/dist/esm/runtime/electron-binding.d.ts +24 -0
  282. package/dist/esm/runtime/electron-binding.d.ts.map +1 -0
  283. package/dist/esm/runtime/electron-binding.js +44 -0
  284. package/dist/esm/runtime/electron-binding.js.map +1 -0
  285. package/dist/esm/runtime/electron-lifecycle.d.ts +17 -0
  286. package/dist/esm/runtime/electron-lifecycle.d.ts.map +1 -0
  287. package/dist/esm/runtime/electron-lifecycle.js +44 -0
  288. package/dist/esm/runtime/electron-lifecycle.js.map +1 -0
  289. package/dist/esm/runtime/electron-main.d.ts +24 -0
  290. package/dist/esm/runtime/electron-main.d.ts.map +1 -0
  291. package/dist/esm/runtime/electron-main.js +99 -0
  292. package/dist/esm/runtime/electron-main.js.map +1 -0
  293. package/dist/esm/runtime/electron-renderer.d.ts +26 -0
  294. package/dist/esm/runtime/electron-renderer.d.ts.map +1 -0
  295. package/dist/esm/runtime/electron-renderer.js +30 -0
  296. package/dist/esm/runtime/electron-renderer.js.map +1 -0
  297. package/dist/esm/runtime/electron.d.ts +20 -0
  298. package/dist/esm/runtime/electron.d.ts.map +1 -0
  299. package/dist/esm/runtime/electron.js +21 -0
  300. package/dist/esm/runtime/electron.js.map +1 -0
  301. package/dist/esm/runtime/index.d.ts +21 -0
  302. package/dist/esm/runtime/index.d.ts.map +1 -0
  303. package/dist/esm/runtime/index.js +29 -0
  304. package/dist/esm/runtime/index.js.map +1 -0
  305. package/dist/esm/runtime/node.d.ts +27 -0
  306. package/dist/esm/runtime/node.d.ts.map +1 -0
  307. package/dist/esm/runtime/node.js +123 -0
  308. package/dist/esm/runtime/node.js.map +1 -0
  309. package/dist/esm/runtime/process-lifecycle.d.ts +13 -0
  310. package/dist/esm/runtime/process-lifecycle.d.ts.map +1 -0
  311. package/dist/esm/runtime/process-lifecycle.js +77 -0
  312. package/dist/esm/runtime/process-lifecycle.js.map +1 -0
  313. package/dist/esm/runtime/web-lifecycle.d.ts +13 -0
  314. package/dist/esm/runtime/web-lifecycle.d.ts.map +1 -0
  315. package/dist/esm/runtime/web-lifecycle.js +36 -0
  316. package/dist/esm/runtime/web-lifecycle.js.map +1 -0
  317. package/dist/esm/runtime/web.d.ts +14 -0
  318. package/dist/esm/runtime/web.d.ts.map +1 -0
  319. package/dist/esm/runtime/web.js +58 -0
  320. package/dist/esm/runtime/web.js.map +1 -0
  321. package/dist/esm/shims/index.browser.d.ts +26 -0
  322. package/dist/esm/shims/index.browser.d.ts.map +1 -0
  323. package/dist/esm/shims/index.browser.js +54 -0
  324. package/dist/esm/shims/index.browser.js.map +1 -0
  325. package/dist/esm/shims/index.d.ts +15 -0
  326. package/dist/esm/shims/index.d.ts.map +1 -0
  327. package/dist/esm/shims/index.js +22 -0
  328. package/dist/esm/shims/index.js.map +1 -0
  329. package/dist/esm/transport/cluster-ipc.d.ts +36 -0
  330. package/dist/esm/transport/cluster-ipc.d.ts.map +1 -0
  331. package/dist/esm/transport/cluster-ipc.js +71 -0
  332. package/dist/esm/transport/cluster-ipc.js.map +1 -0
  333. package/dist/esm/transport/console.d.ts +28 -0
  334. package/dist/esm/transport/console.d.ts.map +1 -0
  335. package/dist/esm/transport/console.js +44 -0
  336. package/dist/esm/transport/console.js.map +1 -0
  337. package/dist/esm/transport/electron-ipc.d.ts +69 -0
  338. package/dist/esm/transport/electron-ipc.d.ts.map +1 -0
  339. package/dist/esm/transport/electron-ipc.js +146 -0
  340. package/dist/esm/transport/electron-ipc.js.map +1 -0
  341. package/dist/esm/transport/file.d.ts +190 -0
  342. package/dist/esm/transport/file.d.ts.map +1 -0
  343. package/dist/esm/transport/file.js +662 -0
  344. package/dist/esm/transport/file.js.map +1 -0
  345. package/dist/esm/transport/index.d.ts +9 -0
  346. package/dist/esm/transport/index.d.ts.map +1 -0
  347. package/dist/esm/transport/index.js +9 -0
  348. package/dist/esm/transport/index.js.map +1 -0
  349. package/dist/esm/transport/live.d.ts +72 -0
  350. package/dist/esm/transport/live.d.ts.map +1 -0
  351. package/dist/esm/transport/live.js +100 -0
  352. package/dist/esm/transport/live.js.map +1 -0
  353. package/dist/esm/transport/otlp.d.ts +97 -0
  354. package/dist/esm/transport/otlp.d.ts.map +1 -0
  355. package/dist/esm/transport/otlp.js +190 -0
  356. package/dist/esm/transport/otlp.js.map +1 -0
  357. package/dist/esm/transport/rotating-file.d.ts +67 -0
  358. package/dist/esm/transport/rotating-file.d.ts.map +1 -0
  359. package/dist/esm/transport/rotating-file.js +175 -0
  360. package/dist/esm/transport/rotating-file.js.map +1 -0
  361. package/dist/esm/transport/transport.d.ts +35 -0
  362. package/dist/esm/transport/transport.d.ts.map +1 -0
  363. package/dist/esm/transport/transport.js +2 -0
  364. package/dist/esm/transport/transport.js.map +1 -0
  365. package/dist/esm/transport/worker-ipc.d.ts +43 -0
  366. package/dist/esm/transport/worker-ipc.d.ts.map +1 -0
  367. package/dist/esm/transport/worker-ipc.js +101 -0
  368. package/dist/esm/transport/worker-ipc.js.map +1 -0
  369. package/dist/esm/types.d.ts +72 -0
  370. package/dist/esm/types.d.ts.map +1 -0
  371. package/dist/esm/types.js +39 -0
  372. package/dist/esm/types.js.map +1 -0
  373. package/package.json +128 -0
@@ -0,0 +1,10 @@
1
+ export type AmbientContext = Record<string, unknown>;
2
+ export declare const asyncContext: {
3
+ run<T>(fn: () => T, context: AmbientContext): T;
4
+ runAsync<T>(fn: () => Promise<T>, context: AmbientContext): Promise<T>;
5
+ get(): AmbientContext;
6
+ supported(): boolean;
7
+ };
8
+ /** Run `fn` with `context` active as the ambient logging context. */
9
+ export declare function runWithContext<T>(fn: () => T, context: AmbientContext): T;
10
+ //# sourceMappingURL=async-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-context.d.ts","sourceRoot":"","sources":["../../../src/context/async-context.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAerD,eAAO,MAAM,YAAY;QACnB,CAAC,MAAM,MAAM,CAAC,WAAW,cAAc,GAAG,CAAC;aAGtC,CAAC,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC,WAAW,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;WAG/D,cAAc;iBAGR,OAAO;CAGrB,CAAC;AAIF,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,CAAC,CAEzE"}
@@ -0,0 +1,33 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ /**
3
+ * Ambient (request-scoped) context propagation.
4
+ *
5
+ * Built on `AsyncLocalStorage`, so a context set with {@link runWithContext}
6
+ * is automatically visible to **every** log call inside `fn` — including those
7
+ * reached after `await` — without manual plumbing. In non-Node runtimes this
8
+ * module is swapped for `async-context.browser.js` (via `package.json` `browser`)
9
+ * which is a no-op, so the API is safe to call everywhere.
10
+ */
11
+ // Shared frozen empty object returned when no async store is active, so the
12
+ // common (no ambient context) path allocates nothing on every `get()`.
13
+ const EMPTY_AMBIENT = Object.freeze({});
14
+ export const asyncContext = {
15
+ run(fn, context) {
16
+ return storage.run(context, fn);
17
+ },
18
+ runAsync(fn, context) {
19
+ return storage.run(context, fn);
20
+ },
21
+ get() {
22
+ return storage.getStore() ?? EMPTY_AMBIENT;
23
+ },
24
+ supported() {
25
+ return true;
26
+ },
27
+ };
28
+ const storage = new AsyncLocalStorage();
29
+ /** Run `fn` with `context` active as the ambient logging context. */
30
+ export function runWithContext(fn, context) {
31
+ return asyncContext.run(fn, context);
32
+ }
33
+ //# sourceMappingURL=async-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-context.js","sourceRoot":"","sources":["../../../src/context/async-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD;;;;;;;;GAQG;AACH,4EAA4E;AAC5E,uEAAuE;AACvE,MAAM,aAAa,GAAmB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,CAAI,EAAW,EAAE,OAAuB;QACzC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,QAAQ,CAAI,EAAoB,EAAE,OAAuB;QACvD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,GAAG;QACD,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,aAAa,CAAC;IAC7C,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAI,EAAW,EAAE,OAAuB;IACpE,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Context module.
3
+ *
4
+ * Manages structured contextual data (request id, user id, window id, etc.)
5
+ * that is attached to every log entry. Contexts are hierarchical:
6
+ * a global context provides defaults for all loggers, and child loggers
7
+ * can carry their own scoped context.
8
+ */
9
+ export interface ContextStore {
10
+ /** Read the full context object. */
11
+ get(): Record<string, unknown>;
12
+ /** Set a single key. */
13
+ set(key: string, value: unknown): void;
14
+ /** Merge multiple keys at once. Returns the store for chaining. */
15
+ merge(values: Record<string, unknown>): ContextStore;
16
+ /** Remove a single key. */
17
+ delete(key: string): void;
18
+ /** Reset the store to empty. */
19
+ clear(): void;
20
+ /** Create a child store seeded with the current values. */
21
+ child(): ContextStore;
22
+ }
23
+ /**
24
+ * A shared, frozen empty record. Returned by `ContextStore.get()` when empty
25
+ * and used as the default `metadata` for every entry, so the hot path never
26
+ * allocates an empty object — and `freezeEntry` can recognise it as a sentinel
27
+ * and skip cloning/freezing entirely.
28
+ */
29
+ export declare const EMPTY_RECORD: Record<string, unknown>;
30
+ /** True when the record has no own enumerable keys. */
31
+ export declare function isEmptyRecord(o: Record<string, unknown>): boolean;
32
+ export declare function createContextStore(initial?: Record<string, unknown>): ContextStore;
33
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,wBAAwB;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,mEAAmE;IACnE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC;IACrD,2BAA2B;IAC3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gCAAgC;IAChC,KAAK,IAAI,IAAI,CAAC;IACd,2DAA2D;IAC3D,KAAK,IAAI,YAAY,CAAC;CACvB;AAID;;;;;GAKG;AACH,eAAO,MAAM,YAAY,yBAAgB,CAAC;AAE1C,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CA6BlF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Context module.
3
+ *
4
+ * Manages structured contextual data (request id, user id, window id, etc.)
5
+ * that is attached to every log entry. Contexts are hierarchical:
6
+ * a global context provides defaults for all loggers, and child loggers
7
+ * can carry their own scoped context.
8
+ */
9
+ const EMPTY_CONTEXT = Object.freeze({});
10
+ /**
11
+ * A shared, frozen empty record. Returned by `ContextStore.get()` when empty
12
+ * and used as the default `metadata` for every entry, so the hot path never
13
+ * allocates an empty object — and `freezeEntry` can recognise it as a sentinel
14
+ * and skip cloning/freezing entirely.
15
+ */
16
+ export const EMPTY_RECORD = EMPTY_CONTEXT;
17
+ /** True when the record has no own enumerable keys. */
18
+ export function isEmptyRecord(o) {
19
+ for (const _k in o)
20
+ return false;
21
+ return true;
22
+ }
23
+ export function createContextStore(initial) {
24
+ let data = { ...(initial ?? {}) };
25
+ const store = {
26
+ get() {
27
+ // Avoid cloning (and allocating) when the store is empty — the shared
28
+ // frozen object can never be mutated by callers.
29
+ for (const _k in data)
30
+ return { ...data };
31
+ return EMPTY_CONTEXT;
32
+ },
33
+ set(key, value) {
34
+ data[key] = value;
35
+ },
36
+ merge(values) {
37
+ data = { ...data, ...values };
38
+ return store;
39
+ },
40
+ delete(key) {
41
+ delete data[key];
42
+ },
43
+ clear() {
44
+ data = {};
45
+ },
46
+ child() {
47
+ return createContextStore(data);
48
+ },
49
+ };
50
+ return store;
51
+ }
52
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAA4B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,uDAAuD;AACvD,MAAM,UAAU,aAAa,CAAC,CAA0B;IACtD,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAiC;IAClE,IAAI,IAAI,GAA4B,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAE3D,MAAM,KAAK,GAAiB;QAC1B,GAAG;YACD,sEAAsE;YACtE,iDAAiD;YACjD,KAAK,MAAM,EAAE,IAAI,IAAI;gBAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;YAC1C,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,KAAK;YACZ,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,MAAM;YACV,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG;YACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,KAAK;YACH,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,KAAK;YACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './context.js';
2
+ export * from './async-context.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './context.js';
2
+ export * from './async-context.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { LogEntry } from '../types.js';
2
+ /**
3
+ * An entry that has crossed the immutability boundary: the entry itself and its
4
+ * `context`, `metadata` and `args` containers are frozen. Nested values are
5
+ * intentionally NOT deep-frozen (that would defeat the zero-copy goal) and must
6
+ * be treated as immutable by convention.
7
+ */
8
+ export type FrozenLogEntry = Readonly<LogEntry> & {
9
+ readonly context: Readonly<Record<string, unknown>>;
10
+ readonly metadata: Readonly<Record<string, unknown>>;
11
+ readonly args: readonly unknown[];
12
+ };
13
+ /**
14
+ * Freeze a {@link LogEntry} at its transport boundary so it can be shared by
15
+ * reference (zero-copy) across all transports, plugins and formatters without
16
+ * any of them being able to mutate it.
17
+ *
18
+ * Behaviour:
19
+ * - The entry and its `context` / `metadata` / `args` containers are frozen.
20
+ * - When `context` is the logger's *live* ambient context (not already a frozen,
21
+ * safe object) it is first copied into a fresh frozen snapshot. This prevents
22
+ * us from freezing the logger's shared state and ensures an already-emitted
23
+ * entry can never be mutated by a later `setContext`.
24
+ * - It is a no-op (and idempotent) when the entry is already frozen.
25
+ *
26
+ * Nested values are left unfrozen on purpose: deep-freezing a potentially large
27
+ * object graph on every log call would erase the zero-copy performance benefit.
28
+ */
29
+ export declare function freezeEntry<T extends LogEntry>(entry: T): T & FrozenLogEntry;
30
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/core/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG;IAChD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAiB5E"}
@@ -0,0 +1,34 @@
1
+ import { EMPTY_RECORD } from '../context/context.js';
2
+ /**
3
+ * Freeze a {@link LogEntry} at its transport boundary so it can be shared by
4
+ * reference (zero-copy) across all transports, plugins and formatters without
5
+ * any of them being able to mutate it.
6
+ *
7
+ * Behaviour:
8
+ * - The entry and its `context` / `metadata` / `args` containers are frozen.
9
+ * - When `context` is the logger's *live* ambient context (not already a frozen,
10
+ * safe object) it is first copied into a fresh frozen snapshot. This prevents
11
+ * us from freezing the logger's shared state and ensures an already-emitted
12
+ * entry can never be mutated by a later `setContext`.
13
+ * - It is a no-op (and idempotent) when the entry is already frozen.
14
+ *
15
+ * Nested values are left unfrozen on purpose: deep-freezing a potentially large
16
+ * object graph on every log call would erase the zero-copy performance benefit.
17
+ */
18
+ export function freezeEntry(entry) {
19
+ if (Object.isFrozen(entry))
20
+ return entry;
21
+ const ctx = entry.context;
22
+ const meta = entry.metadata;
23
+ entry.context =
24
+ ctx === EMPTY_RECORD || Object.isFrozen(ctx) ? ctx : Object.freeze({ ...ctx });
25
+ // Skip cloning/freezing when empty: the shared `EMPTY_RECORD` sentinel is
26
+ // already frozen and reused by reference, so the common (no-metadata) path
27
+ // allocates nothing here.
28
+ entry.metadata =
29
+ meta === EMPTY_RECORD || Object.isFrozen(meta) ? meta : Object.freeze({ ...meta });
30
+ if (!Object.isFrozen(entry.args))
31
+ Object.freeze(entry.args);
32
+ return Object.freeze(entry);
33
+ }
34
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/core/entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAcrD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAqB,KAAQ;IACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAA2B,CAAC;IAE/D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC3B,KAA8C,CAAC,OAAO;QACrD,GAAG,KAAK,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IAEjF,0EAA0E;IAC1E,2EAA2E;IAC3E,0BAA0B;IACzB,KAA+C,CAAC,QAAQ;QACvD,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAErF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAuB,CAAC;AACpD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './level.js';
2
+ export * from './logger.js';
3
+ export * from './entry.js';
4
+ export * from './printf.js';
5
+ export { Pipeline } from '../pipeline/pipeline.js';
6
+ export type { PipelineOptions } from '../pipeline/pipeline.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './level.js';
2
+ export * from './logger.js';
3
+ export * from './entry.js';
4
+ export * from './printf.js';
5
+ export { Pipeline } from '../pipeline/pipeline.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { LogLevelName, LogLevelValue, LogLevelInput } from '../types.js';
2
+ import { LOG_LEVELS } from '../types.js';
3
+ export { LOG_LEVELS };
4
+ export type { LogLevelName, LogLevelValue, LogLevelInput };
5
+ /**
6
+ * Resolve a level name from a numeric value, falling back to the closest
7
+ * lower-known level when the exact value is not registered.
8
+ */
9
+ export declare function levelNameFromValue(value: LogLevelValue): LogLevelName;
10
+ export declare function compareLevel(a: LogLevelInput, b: LogLevelInput): number;
11
+ export declare function isLevelEnabled(configured: LogLevelInput, candidate: LogLevelInput): boolean;
12
+ //# sourceMappingURL=level.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/core/level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAWrE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAEvE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAE3F"}
@@ -0,0 +1,25 @@
1
+ import { LOG_LEVELS, normalizeLevel } from '../types.js';
2
+ export { LOG_LEVELS };
3
+ /**
4
+ * Resolve a level name from a numeric value, falling back to the closest
5
+ * lower-known level when the exact value is not registered.
6
+ */
7
+ export function levelNameFromValue(value) {
8
+ let best = 'trace';
9
+ let bestValue = -Infinity;
10
+ for (const name of Object.keys(LOG_LEVELS)) {
11
+ const lv = LOG_LEVELS[name];
12
+ if (lv <= value && lv > bestValue) {
13
+ best = name;
14
+ bestValue = lv;
15
+ }
16
+ }
17
+ return best;
18
+ }
19
+ export function compareLevel(a, b) {
20
+ return normalizeLevel(a) - normalizeLevel(b);
21
+ }
22
+ export function isLevelEnabled(configured, candidate) {
23
+ return normalizeLevel(candidate) >= normalizeLevel(configured);
24
+ }
25
+ //# sourceMappingURL=level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level.js","sourceRoot":"","sources":["../../../src/core/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,CAAC;AAItB;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,IAAI,IAAI,GAAiB,OAAO,CAAC;IACjC,IAAI,SAAS,GAAG,CAAC,QAAQ,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAmB,EAAE,CAAC;QAC7D,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,CAAC;YACZ,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAgB,EAAE,CAAgB;IAC7D,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAyB,EAAE,SAAwB;IAChF,OAAO,cAAc,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,271 @@
1
+ import type { LogEntry, LogFn, LoggerMethods, LogLevelInput } from '../types.js';
2
+ import type { RuntimeAdapter } from '../runtime/index.js';
3
+ import type { PipelineOptions } from '../pipeline/pipeline.js';
4
+ import { Pipeline } from '../pipeline/pipeline.js';
5
+ import type { Transport } from '../transport/transport.js';
6
+ import type { Plugin } from '../plugin/index.js';
7
+ import { PluginManager } from '../plugin/index.js';
8
+ import type { ContextStore } from '../context/index.js';
9
+ /** Where in the pipeline an internal error originated. */
10
+ export type LoggerErrorPhase = 'filter' | 'process' | 'plugin' | 'formatter' | 'transport';
11
+ /** Context passed to {@link LoggerErrorHandler} when the logger catches an internal error. */
12
+ export interface LoggerErrorInfo {
13
+ phase: LoggerErrorPhase;
14
+ /** The entry being processed when the error occurred, if available. */
15
+ entry?: LogEntry;
16
+ /** Name of the offending plugin/transport, when applicable. */
17
+ source?: string;
18
+ }
19
+ /**
20
+ * Global error handler. The logger never throws from a `log.*` call; when an
21
+ * internal step (filter, processor, plugin, formatter, transport) fails, the
22
+ * error is reported here instead of crashing the caller. By default it is
23
+ * printed to the native `console.error` (which is *not* the redirected one, so
24
+ * it cannot recurse into the logger).
25
+ */
26
+ export type LoggerErrorHandler = (error: unknown, info: LoggerErrorInfo) => void;
27
+ export interface LoggerOptions {
28
+ /** Minimum level to emit. Default `info`. */
29
+ level?: LogLevelInput;
30
+ /**
31
+ * Global handler for internal errors (a throwing filter/processor/plugin, a
32
+ * failing formatter, or a broken transport). When omitted, errors are printed
33
+ * to the native `console.error`. The logger never rethrows them.
34
+ */
35
+ onError?: LoggerErrorHandler;
36
+ /**
37
+ * Maximum time (ms) to wait for an async `Transport.write` before treating it
38
+ * as failed (reported via the transport's `onError` / the global handler), so
39
+ * a stalled sink can never hang `flush()`/`destroy()`. Default `5000`.
40
+ */
41
+ writeTimeoutMs?: number;
42
+ /**
43
+ * Maximum time (ms) to spend flushing on process exit (`beforeExit`,
44
+ * `SIGINT`, `SIGTERM`) before giving up and letting the process exit, so a
45
+ * stalled transport flush can never hang shutdown. Default `2000`.
46
+ */
47
+ exitFlushTimeoutMs?: number;
48
+ /** Optional scope / namespace for this logger. */
49
+ scope?: string;
50
+ /** Runtime adapter. Auto-detected when omitted. */
51
+ runtime?: RuntimeAdapter;
52
+ /** Initial context store. */
53
+ context?: ContextStore;
54
+ /** Transports. Defaults to the runtime's default transports. */
55
+ transports?: Transport[];
56
+ /** Pipeline configuration or instance. */
57
+ pipeline?: Pipeline | PipelineOptions;
58
+ /** Shared plugin manager. Internal: used by {@link scope}. */
59
+ plugins?: PluginManager;
60
+ /**
61
+ * Register `beforeExit` / `SIGINT` / `SIGTERM` handlers that flush the logger
62
+ * before the process exits (`SIGINT`/`SIGTERM` then terminate the process).
63
+ * Only effective in Node; ignored elsewhere. See {@link attachExitHandlers}.
64
+ */
65
+ autoFlushOnExit?: boolean;
66
+ /**
67
+ * Environment variable (name) whose value, if set to a valid level name,
68
+ * overrides `level`. Defaults to `"LOG_LEVEL"`. Set to `null` to disable.
69
+ */
70
+ levelEnvVar?: string | null;
71
+ /**
72
+ * Scope/namespace filter. A comma- or space-separated list of glob patterns
73
+ * (with `*` wildcards); a leading `-` excludes. Only entries whose `scope`
74
+ * matches are emitted. Read automatically from `namespaceEnvVar` when omitted.
75
+ */
76
+ namespaceFilter?: string | string[];
77
+ /**
78
+ * Environment variable whose value supplies the namespace filter when
79
+ * `namespaceFilter` is not set. Defaults to `"LOGRAIL_DEBUG"`. Set to `null`
80
+ * to disable.
81
+ */
82
+ namespaceEnvVar?: string | null;
83
+ }
84
+ /**
85
+ * Internal options passed by `scope`/`child` to build a **lightweight** child
86
+ * logger. The child reuses the parent's runtime, pipeline, plugins, transports
87
+ * and namespace filter — it only carries its own scope and context. This avoids
88
+ * re-running environment reads, regex compilation and runtime detection on
89
+ * every derived logger (important for per-request `child({ requestId })`).
90
+ */
91
+ interface ChildOptions {
92
+ __child: true;
93
+ parent: Logger;
94
+ scope?: string;
95
+ context?: ContextStore;
96
+ levelOverride?: number;
97
+ }
98
+ /**
99
+ * Unified logging facade. Produces {@link LogEntry} records, runs them through
100
+ * the {@link Pipeline} (filter + processors), lets {@link Plugin}s intercept,
101
+ * formats and writes them to {@link Transport}s.
102
+ *
103
+ * Instances are cheap to derive via {@link scope} or {@link child}; all
104
+ * children share the same transports, pipeline and plugins, but carry their own
105
+ * scope and context (captured from the parent at creation).
106
+ */
107
+ export declare class Logger implements LoggerMethods {
108
+ private runtime;
109
+ private pipeline;
110
+ private plugins;
111
+ private transports;
112
+ private context;
113
+ private level;
114
+ private scopeName?;
115
+ private parent?;
116
+ private levelOverride?;
117
+ /**
118
+ * Sequences the async plugin-interception step so entries are processed in
119
+ * emit order. Transport writes fan out to their own per-transport queues
120
+ * (see `transportQueues`), so a slow/blocked transport can never stall the
121
+ * others or this front queue.
122
+ */
123
+ private dispatchQueue;
124
+ /** Independent async-write queue per transport. */
125
+ private transportQueues;
126
+ private destroyed;
127
+ private detachReceiver?;
128
+ private processHandlersAttached;
129
+ private errorHandlersAttached;
130
+ private removeProcessHandlers?;
131
+ private onLoggerError?;
132
+ private writeTimeoutMs;
133
+ private exitFlushTimeoutMs;
134
+ private _exiting;
135
+ private namespaceFilter?;
136
+ /** True for loggers created via `scope`/`child` (share the parent's plumbing). */
137
+ private isChild;
138
+ /** Cached peer process level. When set, takes precedence over local `level` in `getLevel()`. */
139
+ private peerLevel?;
140
+ /** Original local level before any peer command modifies it. Restored on destroy. */
141
+ private originalLevel?;
142
+ /** Tracks whether the local level was explicitly set via setLevel(). */
143
+ private hasExplicitLocalLevel;
144
+ constructor(options?: LoggerOptions | ChildOptions);
145
+ /**
146
+ * Initialise a lightweight child from its parent. Reuses the parent's
147
+ * runtime, pipeline, plugins, transports and namespace filter, and shares the
148
+ * parent's error handler config so no duplicate `onError` wiring (or duplicate
149
+ * IPC receiver registration) happens.
150
+ */
151
+ private initFromParent;
152
+ /**
153
+ * Feed an externally produced {@link LogEntry} (e.g. received from a renderer
154
+ * process over IPC) into the pipeline/transports. Subject to the configured
155
+ * level and plugins, then written via the active transports.
156
+ */
157
+ ingestEntry(entry: LogEntry): void;
158
+ getLevel(): number;
159
+ setLevel(level: LogLevelInput): void;
160
+ /**
161
+ * Register a callback invoked when a cross-process level command is received
162
+ * (e.g. from a renderer, worker, or cluster peer). Called automatically by
163
+ * the runtime when {@link RuntimeAdapter.onLevelCommand} is wired up; most
164
+ * users should not call this directly.
165
+ */
166
+ setOnLevelCommand(cb: (level: number) => void): void;
167
+ setContext(key: string, value: unknown): void;
168
+ mergeContext(values: Record<string, unknown>): void;
169
+ addTransport(transport: Transport): void;
170
+ removeTransport(name: string): void;
171
+ /** Unregister a plugin by name at runtime. */
172
+ unregisterPlugin(name: string): void;
173
+ /** Whether a plugin with the given name is currently registered. */
174
+ hasPlugin(name: string): boolean;
175
+ /** Access the processing pipeline to add/remove filters & processors or change the formatter at runtime. */
176
+ getPipeline(): Pipeline;
177
+ /** Build the {@link PluginContext} handed to plugins so they can reconfigure the logger. */
178
+ private buildPluginContext;
179
+ getTransports(): readonly Transport[];
180
+ use(plugin: Plugin): Promise<void>;
181
+ /**
182
+ * Derive a scoped child logger. The child shares this logger's transports,
183
+ * pipeline, plugins and runtime, inherits its scope (joined with `:`) and
184
+ * context (captured from the parent at creation), and may carry extra
185
+ * context. The level is inherited live from the parent (see {@link child})
186
+ * unless overridden via `setLevel`.
187
+ *
188
+ * Construction is lightweight: no environment reads, regex compilation or
189
+ * runtime detection is performed — the child reuses this logger's plumbing.
190
+ */
191
+ scope(scope: string, context?: Record<string, unknown>): Logger;
192
+ /**
193
+ * Derive a child logger that shares this logger's transports, pipeline,
194
+ * plugins and runtime. The child:
195
+ * - merges `options.context` on top of the parent's context (captured at
196
+ * creation),
197
+ * - inherits the parent's scope,
198
+ * - inherits the parent's level live, unless `options.level` overrides it
199
+ * (the override also applies to any further descendants).
200
+ *
201
+ * This is the canonical "child logger" (à la `pino.child`), ideal for
202
+ * per-request context such as `logger.child({ requestId: id })`. Construction
203
+ * is lightweight — see {@link scope}.
204
+ */
205
+ child(options?: {
206
+ context?: Record<string, unknown>;
207
+ level?: LogLevelInput;
208
+ }): Logger;
209
+ trace: LogFn;
210
+ debug: LogFn;
211
+ info: LogFn;
212
+ warn: LogFn;
213
+ error: LogFn;
214
+ fatal: LogFn;
215
+ private emit;
216
+ /**
217
+ * Route a processed entry to the transports. When no plugin intercepts
218
+ * entries we can write synchronously and skip the per-call Promise + write
219
+ * queue entirely (the common case); the async path is only used when a plugin
220
+ * hook or an async transport needs it.
221
+ */
222
+ private dispatch;
223
+ /**
224
+ * Report an internal error without throwing. Routes to the user-supplied
225
+ * `onError` handler, falling back to the native `console.error` (deliberately
226
+ * not the redirected one, to avoid recursion).
227
+ */
228
+ private reportError;
229
+ private buildEntry;
230
+ private writeToTransports;
231
+ /** Await a transport's async `write`, but never let it stall the queue. */
232
+ private guardWrite;
233
+ /** Await a transport's async `flush`, but never let it stall teardown. */
234
+ private guardFlush;
235
+ /** Surface a transport failure via the transport's hook, else the global handler. */
236
+ private reportTransportError;
237
+ flush(): Promise<void>;
238
+ /**
239
+ * Flush, but never wait longer than `ms`. Resolves (does not reject) once the
240
+ * flush settles or the timeout elapses, so callers can always proceed (e.g.
241
+ * exit the process) without risking a hang on a stalled transport.
242
+ */
243
+ private flushWithTimeout;
244
+ /** Set the max time (ms) to flush on process exit before giving up. */
245
+ setExitFlushTimeout(ms: number): this;
246
+ /** Get the current exit-flush timeout (ms). */
247
+ getExitFlushTimeout(): number;
248
+ /**
249
+ * Register `beforeExit` / `SIGINT` / `SIGTERM` handlers that flush the logger
250
+ * before the process leaves. On `SIGINT` / `SIGTERM` the process exits (130 /
251
+ * 143) after the flush completes. No-op outside Node. Idempotent.
252
+ */
253
+ attachExitHandlers(): void;
254
+ /**
255
+ * Forward `uncaughtException` and `unhandledRejection` to the logger (at
256
+ * `fatal` level) and exit afterwards, so crashes are recorded before the
257
+ * process dies. No-op outside Node. Idempotent.
258
+ */
259
+ watchUncaughtErrors(): void;
260
+ /**
261
+ * Route `console.*` calls through this logger, so third-party `console.log`
262
+ * output is captured into the structured pipeline. The native console output
263
+ * is suppressed for those calls (the logger's own transports produce the
264
+ * visible output); if logging throws, the native console is used as a
265
+ * fallback. Returns a function that restores the original `console`.
266
+ */
267
+ redirectConsole(): () => void;
268
+ destroy(): Promise<void>;
269
+ }
270
+ export {};
271
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/logger.ts"],"names":[],"mappings":"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"}