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,67 @@
1
+ import type { LogEntry } from '../types.js';
2
+ import type { Formatter } from '../pipeline/formatter.js';
3
+ import type { Transport } from './transport.js';
4
+ export interface RotatingFileTransportOptions {
5
+ /** Active (or current-day) log file path, e.g. `/var/log/app.log`. */
6
+ path: string;
7
+ /** Size mode: rotate once the active file exceeds this size in bytes. */
8
+ maxSize?: number;
9
+ /**
10
+ * Maximum number of files in the rotation set.
11
+ * - Size mode: `app.log` + `app.1.log` … (generations). Minimum 2.
12
+ * - Daily mode: `{name}.{YYYY-MM-DD}.01..{maxFiles}.log` per day; when the
13
+ * index would pass `maxFiles` it wraps back to `01` and clears that file.
14
+ * Defaults to 5 (size) or 99 (daily).
15
+ */
16
+ maxFiles?: number;
17
+ /**
18
+ * Daily mode (default `true`): one dated file per day, split into
19
+ * `01`..`{maxFiles}` indexes. Set `false` for plain size-based generation
20
+ * rotation (`app.log` → `app.1.log` → …) without dates.
21
+ */
22
+ daily?: boolean;
23
+ /** Override the clock (mainly for testing). Defaults to `new Date()`. */
24
+ now?: () => Date;
25
+ formatter?: Formatter;
26
+ name?: string;
27
+ }
28
+ /**
29
+ * File transport with rotation, for the Electron main process (Node.js).
30
+ *
31
+ * Two modes:
32
+ * - **Daily** (default): the active file is
33
+ * `{name}.{YYYY-MM-DD}.{index}.log`, where `index` runs `01`..`maxFiles`
34
+ * (default 99). When it would pass `maxFiles` it wraps back to `01` and
35
+ * that file is cleared — a `maxFiles`-file ring buffer per day. When the
36
+ * local day changes, the index resets to `01` for the new day.
37
+ */
38
+ export declare class RotatingFileTransport implements Transport {
39
+ readonly name: string;
40
+ readonly formatter: Formatter;
41
+ private readonly path;
42
+ private readonly maxSize;
43
+ private readonly maxFiles;
44
+ private readonly daily;
45
+ private readonly now;
46
+ private handle;
47
+ private queue;
48
+ private size;
49
+ private sizeInitialized;
50
+ private currentDate;
51
+ private index;
52
+ constructor(options: RotatingFileTransportOptions);
53
+ private activePath;
54
+ private ensureHandle;
55
+ private ensureSize;
56
+ private rotateSize;
57
+ /**
58
+ * Move to a new index file. When `clear` is true the target file is
59
+ * truncated first (used both for normal index advancement and for the
60
+ * wrap-to-01, which must clear the stale `01` slot).
61
+ */
62
+ private rotateToIndex;
63
+ write(_entry: LogEntry, formatted: string): void | Promise<void>;
64
+ flush(): Promise<void>;
65
+ close(): Promise<void>;
66
+ }
67
+ //# sourceMappingURL=rotating-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-file.d.ts","sourceRoot":"","sources":["../../../src/transport/rotating-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,4BAA4B;IAC3C,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAaD;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,MAAM,CAAiD;IAC/D,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,KAAK,CAAK;gBAEN,OAAO,EAAE,4BAA4B;IAkBjD,OAAO,CAAC,UAAU;YAUJ,YAAY;YAOZ,UAAU;YAWV,UAAU;IAuBxB;;;;OAIG;YACW,aAAa;IAqB3B,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RotatingFileTransport = void 0;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_path_1 = require("node:path");
6
+ const formatter_js_1 = require("../pipeline/formatter.js");
7
+ const DEFAULT_MAX_SIZE = 10 * 1024 * 1024;
8
+ const DEFAULT_MAX_FILES = 5;
9
+ const DEFAULT_MAX_FILES_DAILY = 99;
10
+ function dateStamp(d) {
11
+ const y = d.getFullYear();
12
+ const m = String(d.getMonth() + 1).padStart(2, '0');
13
+ const day = String(d.getDate()).padStart(2, '0');
14
+ return `${y}-${m}-${day}`;
15
+ }
16
+ /**
17
+ * File transport with rotation, for the Electron main process (Node.js).
18
+ *
19
+ * Two modes:
20
+ * - **Daily** (default): the active file is
21
+ * `{name}.{YYYY-MM-DD}.{index}.log`, where `index` runs `01`..`maxFiles`
22
+ * (default 99). When it would pass `maxFiles` it wraps back to `01` and
23
+ * that file is cleared — a `maxFiles`-file ring buffer per day. When the
24
+ * local day changes, the index resets to `01` for the new day.
25
+ */
26
+ class RotatingFileTransport {
27
+ constructor(options) {
28
+ this.handle = null;
29
+ this.queue = Promise.resolve();
30
+ this.size = 0;
31
+ this.sizeInitialized = false;
32
+ this.index = 1;
33
+ if (!options.path) {
34
+ throw new Error('RotatingFileTransport requires a "path"');
35
+ }
36
+ this.path = options.path;
37
+ this.daily = options.daily ?? true;
38
+ this.maxSize = options.maxSize ?? DEFAULT_MAX_SIZE;
39
+ this.maxFiles = options.maxFiles ?? (this.daily ? DEFAULT_MAX_FILES_DAILY : DEFAULT_MAX_FILES);
40
+ if (!this.daily) {
41
+ this.maxFiles = Math.max(2, this.maxFiles);
42
+ }
43
+ else {
44
+ this.maxFiles = Math.max(1, this.maxFiles);
45
+ }
46
+ this.now = options.now ?? (() => new Date());
47
+ this.name = options.name ?? `rotating-file:${options.path}`;
48
+ this.formatter = options.formatter ?? (0, formatter_js_1.createJsonFormatter)();
49
+ }
50
+ activePath() {
51
+ if (!this.daily) {
52
+ return this.path;
53
+ }
54
+ const ext = (0, node_path_1.extname)(this.path);
55
+ const base = ext ? this.path.slice(0, -ext.length) : this.path;
56
+ const idx = String(this.index).padStart(2, '0');
57
+ return `${base}.${this.currentDate}.${idx}${ext}`;
58
+ }
59
+ async ensureHandle() {
60
+ if (!this.handle) {
61
+ await (0, promises_1.mkdir)((0, node_path_1.dirname)(this.activePath()), { recursive: true });
62
+ this.handle = await (0, promises_1.open)(this.activePath(), 'a');
63
+ }
64
+ }
65
+ async ensureSize() {
66
+ if (this.sizeInitialized)
67
+ return;
68
+ try {
69
+ const st = await (0, promises_1.stat)(this.activePath());
70
+ this.size = st.size;
71
+ }
72
+ catch {
73
+ this.size = 0;
74
+ }
75
+ this.sizeInitialized = true;
76
+ }
77
+ async rotateSize() {
78
+ if (this.handle) {
79
+ await this.handle.close();
80
+ this.handle = null;
81
+ }
82
+ const gens = this.maxFiles - 1;
83
+ for (let k = gens; k >= 2; k--) {
84
+ try {
85
+ await (0, promises_1.rename)(`${this.path}.${k - 1}`, `${this.path}.${k}`);
86
+ }
87
+ catch {
88
+ /* generation missing — skip */
89
+ }
90
+ }
91
+ try {
92
+ await (0, promises_1.rename)(this.path, `${this.path}.1`);
93
+ }
94
+ catch {
95
+ /* nothing to rotate yet */
96
+ }
97
+ this.size = 0;
98
+ this.sizeInitialized = true;
99
+ await this.ensureHandle();
100
+ }
101
+ /**
102
+ * Move to a new index file. When `clear` is true the target file is
103
+ * truncated first (used both for normal index advancement and for the
104
+ * wrap-to-01, which must clear the stale `01` slot).
105
+ */
106
+ async rotateToIndex(idx, clear) {
107
+ if (this.handle) {
108
+ await this.handle.close();
109
+ this.handle = null;
110
+ }
111
+ this.index = idx;
112
+ if (clear) {
113
+ try {
114
+ await (0, promises_1.truncate)(this.activePath(), 0);
115
+ }
116
+ catch {
117
+ /* file did not exist yet — fine */
118
+ }
119
+ this.size = 0;
120
+ this.sizeInitialized = true;
121
+ }
122
+ await this.ensureHandle();
123
+ if (!clear) {
124
+ await this.ensureSize();
125
+ }
126
+ }
127
+ write(_entry, formatted) {
128
+ const line = formatted + '\n';
129
+ const bytes = Buffer.byteLength(line, 'utf8');
130
+ const task = this.queue
131
+ .then(async () => {
132
+ if (!this.daily) {
133
+ await this.ensureSize();
134
+ if (this.size + bytes > this.maxSize) {
135
+ await this.rotateSize();
136
+ }
137
+ }
138
+ else {
139
+ const today = dateStamp(this.now());
140
+ if (this.currentDate === undefined || today !== this.currentDate) {
141
+ // First open, or a new day: reset to index 01 (resume/append).
142
+ this.currentDate = today;
143
+ this.index = 1;
144
+ await this.rotateToIndex(1, false);
145
+ }
146
+ else {
147
+ await this.ensureSize();
148
+ if (this.size + bytes > this.maxSize) {
149
+ let next = this.index + 1;
150
+ if (next > this.maxFiles) {
151
+ next = 1; // wrap and clear the 01 slot
152
+ }
153
+ await this.rotateToIndex(next, true);
154
+ }
155
+ }
156
+ }
157
+ await this.ensureHandle();
158
+ await this.handle.write(line);
159
+ this.size += bytes;
160
+ })
161
+ .catch(() => {
162
+ /* swallow write errors to avoid crashing the app */
163
+ });
164
+ this.queue = task;
165
+ return task;
166
+ }
167
+ async flush() {
168
+ await this.queue;
169
+ }
170
+ async close() {
171
+ await this.queue;
172
+ if (this.handle) {
173
+ await this.handle.close();
174
+ this.handle = null;
175
+ }
176
+ }
177
+ }
178
+ exports.RotatingFileTransport = RotatingFileTransport;
179
+ //# sourceMappingURL=rotating-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-file.js","sourceRoot":"","sources":["../../../src/transport/rotating-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { LogEntry, LogLevelInput } from '../types.js';
2
+ import type { Formatter } from '../pipeline/formatter.js';
3
+ /**
4
+ * A Transport is the final sink of a log entry. Examples: console, file,
5
+ * IPC to the Electron main process, or HTTP remote reporting.
6
+ *
7
+ * `write` may be synchronous or async. When async, the Logger awaits it
8
+ * during a `flush()`.
9
+ */
10
+ export interface Transport {
11
+ /** Unique transport name, used for diagnostics and removal. */
12
+ readonly name: string;
13
+ /** Optional per-transport formatter, overrides the pipeline default. */
14
+ readonly formatter?: Formatter;
15
+ /**
16
+ * Optional minimum level for this transport, as a name (`'info'`) or number.
17
+ * Entries below this level are skipped by this transport (the logger-level
18
+ * filter still applies first). Lets you route, e.g., `error`+ to a remote
19
+ * sink while sending everything to a file.
20
+ */
21
+ readonly level?: LogLevelInput;
22
+ /** Emit a processed entry. */
23
+ write(entry: LogEntry, formatted: string): void | Promise<void>;
24
+ /**
25
+ * Optional hook invoked by the logger when `write` (or the promise it
26
+ * returns) fails, so a broken sink can be reported without throwing out of
27
+ * the caller's `log.*` call. The original entry is passed for context.
28
+ */
29
+ onError?(err: unknown, entry: LogEntry): void;
30
+ /** Optional flush; awaited by `Logger.flush()`. */
31
+ flush?(): void | Promise<void>;
32
+ /** Optional teardown. */
33
+ close?(): void | Promise<void>;
34
+ }
35
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,8BAA8B;IAC9B,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;;OAIG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9C,mDAAmD;IACnD,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,yBAAyB;IACzB,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import type { LogEntry } from '../types.js';
2
+ import type { Transport } from './transport.js';
3
+ /** Minimal view of the `postMessage` function available in Web Workers and Node worker_threads. */
4
+ type PostMessageFn = (message: unknown, transfer?: unknown[]) => void;
5
+ /** Minimal view of a Worker-like target that can receive messages. */
6
+ type MessageTarget = {
7
+ postMessage: PostMessageFn;
8
+ };
9
+ export interface WorkerIpcTransportOptions {
10
+ /** Transport name. */
11
+ name?: string;
12
+ }
13
+ /**
14
+ * Worker-side transport that sends entries to the main thread via
15
+ * `self.postMessage()`. Safe to import in non-Worker environments — the write
16
+ * call is a no-op when `self.postMessage` is unavailable.
17
+ */
18
+ export declare class WorkerIpcTransport implements Transport {
19
+ readonly name: string;
20
+ constructor(options?: WorkerIpcTransportOptions);
21
+ write(entry: LogEntry, _formatted: string): void;
22
+ /** Send a cross-process level command to the main thread. */
23
+ sendLevelCommand(level: number): void;
24
+ }
25
+ export interface WorkerReceiverOptions {
26
+ /** Specific Worker instance to listen on. If omitted, listens on `self.onmessage` (shared worker / global). */
27
+ worker?: MessageTarget;
28
+ }
29
+ /**
30
+ * Main-thread helper: listen for worker entries and feed them into the
31
+ * provided `ingest` callback (typically `logger.ingestEntry`). Level-change
32
+ * commands are forwarded to `onLevelCommand` when provided.
33
+ * Returns an unregister function.
34
+ *
35
+ * Works with `Worker` instances (dedicated workers). For a specific worker
36
+ * pass `worker: myWorkerInstance`; otherwise listens on `self.onmessage`
37
+ * for shared-worker / broadcast-channel patterns.
38
+ */
39
+ export declare function registerWorkerReceiver(ingest: (entry: LogEntry) => void, options?: WorkerReceiverOptions & {
40
+ onLevelCommand?: (level: number) => void;
41
+ }): () => void;
42
+ export {};
43
+ //# sourceMappingURL=worker-ipc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-ipc.d.ts","sourceRoot":"","sources":["../../../src/transport/worker-ipc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKhD,mGAAmG;AACnG,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAEtE,sEAAsE;AACtE,KAAK,aAAa,GAAG;IACnB,WAAW,EAAE,aAAa,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,GAAE,yBAA8B;IAInD,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAWhD,6DAA6D;IAC7D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAWtC;AAED,MAAM,WAAW,qBAAqB;IACpC,+GAA+G;IAC/G,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,EACjC,OAAO,GAAE,qBAAqB,GAAG;IAAE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GACjF,MAAM,IAAI,CA8DZ"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkerIpcTransport = void 0;
4
+ exports.registerWorkerReceiver = registerWorkerReceiver;
5
+ const types_js_1 = require("../types.js");
6
+ const types_js_2 = require("../types.js");
7
+ /**
8
+ * Worker-side transport that sends entries to the main thread via
9
+ * `self.postMessage()`. Safe to import in non-Worker environments — the write
10
+ * call is a no-op when `self.postMessage` is unavailable.
11
+ */
12
+ class WorkerIpcTransport {
13
+ constructor(options = {}) {
14
+ this.name = options.name ?? 'worker-ipc';
15
+ }
16
+ write(entry, _formatted) {
17
+ try {
18
+ const target = self;
19
+ if (typeof target.postMessage === 'function') {
20
+ target.postMessage({ __lograilWorker: true, entry });
21
+ }
22
+ }
23
+ catch {
24
+ /* postMessage unavailable or failed — drop silently */
25
+ }
26
+ }
27
+ /** Send a cross-process level command to the main thread. */
28
+ sendLevelCommand(level) {
29
+ try {
30
+ const target = self;
31
+ if (typeof target.postMessage === 'function') {
32
+ const cmd = { __lograilCmd: true, __lograilCmdType: 'setLevel', level };
33
+ target.postMessage(cmd);
34
+ }
35
+ }
36
+ catch {
37
+ /* postMessage unavailable — drop silently */
38
+ }
39
+ }
40
+ }
41
+ exports.WorkerIpcTransport = WorkerIpcTransport;
42
+ /**
43
+ * Main-thread helper: listen for worker entries and feed them into the
44
+ * provided `ingest` callback (typically `logger.ingestEntry`). Level-change
45
+ * commands are forwarded to `onLevelCommand` when provided.
46
+ * Returns an unregister function.
47
+ *
48
+ * Works with `Worker` instances (dedicated workers). For a specific worker
49
+ * pass `worker: myWorkerInstance`; otherwise listens on `self.onmessage`
50
+ * for shared-worker / broadcast-channel patterns.
51
+ */
52
+ function registerWorkerReceiver(ingest, options = {}) {
53
+ const onLevelCommand = options.onLevelCommand;
54
+ const handler = (event) => {
55
+ const data = event.data;
56
+ if (data &&
57
+ typeof data === 'object' &&
58
+ '__lograilWorker' in data &&
59
+ data.__lograilWorker === true &&
60
+ 'entry' in data) {
61
+ ingest(data.entry);
62
+ }
63
+ else if ((0, types_js_1.isLogLevelCommand)(data)) {
64
+ onLevelCommand?.((0, types_js_2.normalizeLevel)(data.level));
65
+ }
66
+ };
67
+ const worker = options.worker;
68
+ if (worker && typeof worker === 'object') {
69
+ if ('on' in worker && typeof worker.on === 'function') {
70
+ // Node Worker instance — worker.on('message', handler)
71
+ // Node passes raw data (not MessageEvent), so adapt:
72
+ const nodeHandler = (data) => {
73
+ if (data &&
74
+ typeof data === 'object' &&
75
+ '__lograilWorker' in data &&
76
+ data.__lograilWorker === true &&
77
+ 'entry' in data) {
78
+ ingest(data.entry);
79
+ }
80
+ };
81
+ worker.on('message', nodeHandler);
82
+ return () => {
83
+ /* Node Worker doesn't support off(); callers should dispose the Worker */
84
+ };
85
+ }
86
+ if ('onmessage' in worker) {
87
+ // Web Worker — dedicated worker onmessage
88
+ worker.onmessage = handler;
89
+ return () => {
90
+ if (worker.onmessage === handler)
91
+ worker.onmessage = null;
92
+ };
93
+ }
94
+ }
95
+ // Global self.onmessage — shared worker / fallback
96
+ const prev = self.onmessage;
97
+ self.addEventListener('message', handler);
98
+ return () => {
99
+ self.removeEventListener('message', handler);
100
+ // Restore previous handler if it was there
101
+ if (self.onmessage === null && prev !== undefined) {
102
+ self.onmessage = prev;
103
+ }
104
+ };
105
+ }
106
+ //# sourceMappingURL=worker-ipc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-ipc.js","sourceRoot":"","sources":["../../../src/transport/worker-ipc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Shared type definitions for the logging library.
3
+ *
4
+ * These types form the stable contract used across Core, Pipeline,
5
+ * Transport, Runtime and Plugin modules.
6
+ */
7
+ export type LogLevelName = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
8
+ export type LogLevelValue = number;
9
+ /**
10
+ * Ordered by severity. Higher value means more severe.
11
+ */
12
+ export declare const LOG_LEVELS: Record<LogLevelName, LogLevelValue>;
13
+ export declare const LOG_LEVEL_NAMES: LogLevelName[];
14
+ export declare function isLogLevelName(value: unknown): value is LogLevelName;
15
+ /**
16
+ * A single structured log record produced by the Logger.
17
+ *
18
+ * **Immutability contract.** Once an entry is handed to the transports it is
19
+ * frozen (see {@link freezeEntry}): the entry itself and its `context`,
20
+ * `metadata` and `args` containers become read-only, and the entry is shared by
21
+ * reference (zero-copy) across every transport, formatter and plugin. Treat
22
+ * nested values as immutable too — they are intentionally NOT deep-frozen so we
23
+ * never pay a serialization/clone cost on the hot path.
24
+ *
25
+ * Across a process boundary (Electron IPC) the entry is serialised once into a
26
+ * transferable `ArrayBuffer` and moved (not copied) to the other process; the
27
+ * receiver deserialises a fresh, independent entry.
28
+ */
29
+ export interface LogEntry {
30
+ /** Numeric severity, see {@link LOG_LEVELS}. */
31
+ level: LogLevelValue;
32
+ /** Human readable level name. */
33
+ levelName: LogLevelName;
34
+ /** Primary message text. */
35
+ message: string;
36
+ /** Extra positional arguments passed to the log call. */
37
+ args: unknown[];
38
+ /** Epoch milliseconds when the entry was created. */
39
+ timestamp: number;
40
+ /** Coarse ISO timestamp for display / serialization. */
41
+ time: string;
42
+ /** Scope / namespace, e.g. child logger name. */
43
+ scope?: string;
44
+ /** Process id when available (Electron main / Node). */
45
+ pid?: number;
46
+ /** Persistent contextual fields (see Context module). */
47
+ context: Record<string, unknown>;
48
+ /** One-off metadata attached to this entry only. */
49
+ metadata: Record<string, unknown>;
50
+ /** Error object when the entry was created from one. */
51
+ error?: Error;
52
+ }
53
+ export type LogFn = (message: unknown, ...args: unknown[]) => void;
54
+ export interface LoggerMethods {
55
+ trace: LogFn;
56
+ debug: LogFn;
57
+ info: LogFn;
58
+ warn: LogFn;
59
+ error: LogFn;
60
+ fatal: LogFn;
61
+ }
62
+ export type LogLevelInput = LogLevelName | LogLevelValue;
63
+ export declare function normalizeLevel(input: LogLevelInput): LogLevelValue;
64
+ /** Cross-process command sent over IPC to change log level. */
65
+ export interface LogLevelCommand {
66
+ __lograilCmd: true;
67
+ __lograilCmdType: 'setLevel';
68
+ level: LogLevelName | LogLevelValue;
69
+ }
70
+ /** Returns true when the value is a {@link LogLevelCommand}. */
71
+ export declare function isLogLevelCommand(value: unknown): value is LogLevelCommand;
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAO1D,CAAC;AAEF,eAAO,MAAM,eAAe,EAA8B,YAAY,EAAE,CAAC;AAEzE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,KAAK,EAAE,aAAa,CAAC;IACrB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,wDAAwD;IACxD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,aAAa,CAAC;AAEzD,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CASlE;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,IAAI,CAAC;IACnB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;CACrC;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAO1E"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ /**
3
+ * Shared type definitions for the logging library.
4
+ *
5
+ * These types form the stable contract used across Core, Pipeline,
6
+ * Transport, Runtime and Plugin modules.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LOG_LEVEL_NAMES = exports.LOG_LEVELS = void 0;
10
+ exports.isLogLevelName = isLogLevelName;
11
+ exports.normalizeLevel = normalizeLevel;
12
+ exports.isLogLevelCommand = isLogLevelCommand;
13
+ /**
14
+ * Ordered by severity. Higher value means more severe.
15
+ */
16
+ exports.LOG_LEVELS = {
17
+ trace: 10,
18
+ debug: 20,
19
+ info: 30,
20
+ warn: 40,
21
+ error: 50,
22
+ fatal: 60,
23
+ };
24
+ exports.LOG_LEVEL_NAMES = Object.keys(exports.LOG_LEVELS);
25
+ function isLogLevelName(value) {
26
+ return typeof value === 'string' && value in exports.LOG_LEVELS;
27
+ }
28
+ function normalizeLevel(input) {
29
+ if (typeof input === 'number') {
30
+ return input;
31
+ }
32
+ const value = exports.LOG_LEVELS[input];
33
+ if (value === undefined) {
34
+ throw new Error(`Unknown log level: ${String(input)}`);
35
+ }
36
+ return value;
37
+ }
38
+ /** Returns true when the value is a {@link LogLevelCommand}. */
39
+ function isLogLevelCommand(value) {
40
+ return (typeof value === 'object' &&
41
+ value !== null &&
42
+ value.__lograilCmd === true &&
43
+ value.__lograilCmdType === 'setLevel');
44
+ }
45
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAoBH,wCAEC;AAsDD,wCASC;AAUD,8CAOC;AAhGD;;GAEG;AACU,QAAA,UAAU,GAAwC;IAC7D,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;CACV,CAAC;AAEW,QAAA,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAU,CAAmB,CAAC;AAEzE,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,kBAAU,CAAC;AAC1D,CAAC;AAsDD,SAAgB,cAAc,CAAC,KAAoB;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,kBAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD,gEAAgE;AAChE,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,YAAY,KAAK,IAAI;QACvD,KAAiC,CAAC,gBAAgB,KAAK,UAAU,CACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type AmbientContext = Record<string, unknown>;
2
+ /**
3
+ * Browser / non-Node stub. `AsyncLocalStorage` is unavailable here, so ambient
4
+ * context is a no-op — logs are unaffected and no context propagates. The real
5
+ * implementation (`async-context.ts`) is selected over this file in Node builds
6
+ * via the `browser` field in `package.json`.
7
+ */
8
+ export declare const asyncContext: {
9
+ run<T>(fn: () => T, _context: AmbientContext): T;
10
+ runAsync<T>(fn: () => Promise<T>, _context: AmbientContext): Promise<T>;
11
+ get(): AmbientContext;
12
+ supported(): boolean;
13
+ };
14
+ /** Run `fn` with `context` active as the ambient logging context (no-op outside Node). */
15
+ export declare function runWithContext<T>(fn: () => T, _context: AmbientContext): T;
16
+ //# sourceMappingURL=async-context.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-context.browser.d.ts","sourceRoot":"","sources":["../../../src/context/async-context.browser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;QACnB,CAAC,MAAM,MAAM,CAAC,YAAY,cAAc,GAAG,CAAC;aAGvC,CAAC,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC,YAAY,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;WAGhE,cAAc;iBAGR,OAAO;CAGrB,CAAC;AAEF,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,CAAC,CAE1E"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Browser / non-Node stub. `AsyncLocalStorage` is unavailable here, so ambient
3
+ * context is a no-op — logs are unaffected and no context propagates. The real
4
+ * implementation (`async-context.ts`) is selected over this file in Node builds
5
+ * via the `browser` field in `package.json`.
6
+ */
7
+ export const asyncContext = {
8
+ run(fn, _context) {
9
+ return fn();
10
+ },
11
+ runAsync(fn, _context) {
12
+ return fn();
13
+ },
14
+ get() {
15
+ return {};
16
+ },
17
+ supported() {
18
+ return false;
19
+ },
20
+ };
21
+ /** Run `fn` with `context` active as the ambient logging context (no-op outside Node). */
22
+ export function runWithContext(fn, _context) {
23
+ return fn();
24
+ }
25
+ //# sourceMappingURL=async-context.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-context.browser.js","sourceRoot":"","sources":["../../../src/context/async-context.browser.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,CAAI,EAAW,EAAE,QAAwB;QAC1C,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IACD,QAAQ,CAAI,EAAoB,EAAE,QAAwB;QACxD,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IACD,GAAG;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,SAAS;QACP,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAI,EAAW,EAAE,QAAwB;IACrE,OAAO,EAAE,EAAE,CAAC;AACd,CAAC"}