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,69 @@
1
+ import type { LogEntry } from '../types.js';
2
+ import type { Transport } from './transport.js';
3
+ import type { IpcRenderer } from 'electron';
4
+ /** Minimal view of `IpcRenderer` the transport actually needs. */
5
+ type IpcSender = Pick<IpcRenderer, 'send'>;
6
+ /** Shape we probe for at runtime to enable the zero-copy transfer path. */
7
+ type IpcZeroCopySender = IpcSender & {
8
+ postMessage?: (channel: string, message: unknown, transfer?: unknown[]) => void;
9
+ };
10
+ /**
11
+ * Serialize an entry to an `ArrayBuffer` (UTF-8 JSON). The returned buffer is
12
+ * transferable: hand it to `postMessage(channel, buffer, [buffer])` so the
13
+ * underlying memory is moved across the process boundary instead of being
14
+ * structured-cloned (copied) by Electron.
15
+ */
16
+ export declare function encodeEntry(entry: LogEntry): ArrayBuffer;
17
+ /** Inverse of {@link encodeEntry}. */
18
+ export declare function decodeEntry(buffer: ArrayBuffer | Uint8Array): LogEntry;
19
+ export declare const LOGRAIL_CHANNEL = "lograil:log";
20
+ /**
21
+ * Metadata key (on `LogEntry.metadata`) used to mark entries that originated
22
+ * in a renderer process and arrived over IPC. The main runtime uses it to
23
+ * route those entries to a dedicated renderer log file.
24
+ */
25
+ export declare const RENDERER_PROCESS_MARKER = "__lograilProcess";
26
+ export interface ElectronIpcTransportOptions {
27
+ /** IPC channel used to reach the main process. */
28
+ channel?: string;
29
+ /** Transport name. */
30
+ name?: string;
31
+ /**
32
+ * Injected IPC sender. Use this when the renderer cannot reach
33
+ * `require('electron')` itself (e.g. `nodeIntegration: false` +
34
+ * `contextIsolation: true`): pass the `ipcRenderer` obtained from a preload
35
+ * bridge instead of letting the transport call `require('electron')`.
36
+ */
37
+ ipcRenderer?: IpcZeroCopySender;
38
+ }
39
+ /**
40
+ * Renderer-side transport. Forwards each log entry to the Electron main
41
+ * process over IPC, where it is persisted by the main logger (the renderer
42
+ * itself has no filesystem access). The `electron` module is required lazily
43
+ * so this file is safe to import in non-Electron environments.
44
+ */
45
+ export declare class ElectronIpcTransport implements Transport {
46
+ readonly name: string;
47
+ readonly channel: string;
48
+ private injectedIpc?;
49
+ private resolvedIpc?;
50
+ constructor(options?: ElectronIpcTransportOptions);
51
+ private getIpc;
52
+ write(entry: LogEntry, _formatted: string): void;
53
+ /** Send a cross-process level command to the main process. */
54
+ sendLevelCommand(level: number): void;
55
+ }
56
+ export interface IpcReceiverOptions {
57
+ channel?: string;
58
+ }
59
+ /**
60
+ * Main-side helper: listen on the IPC channel and feed received renderer
61
+ * entries into the provided `ingest` callback (typically `logger.ingestEntry`).
62
+ * Level-change commands are forwarded to `onLevelCommand` when provided.
63
+ * Returns an unregister function.
64
+ */
65
+ export declare function registerIpcReceiver(ingest: (entry: LogEntry) => void, options?: IpcReceiverOptions & {
66
+ onLevelCommand?: (level: number) => void;
67
+ }): () => void;
68
+ export {};
69
+ //# sourceMappingURL=electron-ipc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-ipc.d.ts","sourceRoot":"","sources":["../../../src/transport/electron-ipc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5C,kEAAkE;AAClE,KAAK,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAE3C,2EAA2E;AAC3E,KAAK,iBAAiB,GAAG,SAAS,GAAG;IACnC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACjF,CAAC;AAMF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,CAExD;AAED,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAGtE;AAED,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,WAAW,CAAC,CAAY;gBAEpB,OAAO,GAAE,2BAAgC;IAMrD,OAAO,CAAC,MAAM;IAYd,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAoBhD,8DAA8D;IAC9D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAgBtC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,EACjC,OAAO,GAAE,kBAAkB,GAAG;IAAE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAC9E,MAAM,IAAI,CAsCZ"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElectronIpcTransport = exports.RENDERER_PROCESS_MARKER = exports.LOGRAIL_CHANNEL = void 0;
4
+ exports.encodeEntry = encodeEntry;
5
+ exports.decodeEntry = decodeEntry;
6
+ exports.registerIpcReceiver = registerIpcReceiver;
7
+ const types_js_1 = require("../types.js");
8
+ const electron_binding_js_1 = require("../runtime/electron-binding.js");
9
+ // Captured at module load so error reporting never recurses into itself.
10
+ const RAW_CONSOLE_ERROR = typeof console !== 'undefined' && typeof console.error === 'function'
11
+ ? console.error.bind(console)
12
+ : () => { };
13
+ // Reused across calls so we don't allocate an encoder/decoder per log line.
14
+ const encoder = new TextEncoder();
15
+ const decoder = new TextDecoder();
16
+ /**
17
+ * Serialize an entry to an `ArrayBuffer` (UTF-8 JSON). The returned buffer is
18
+ * transferable: hand it to `postMessage(channel, buffer, [buffer])` so the
19
+ * underlying memory is moved across the process boundary instead of being
20
+ * structured-cloned (copied) by Electron.
21
+ */
22
+ function encodeEntry(entry) {
23
+ return encoder.encode(JSON.stringify(entry)).buffer;
24
+ }
25
+ /** Inverse of {@link encodeEntry}. */
26
+ function decodeEntry(buffer) {
27
+ const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
28
+ return JSON.parse(decoder.decode(bytes));
29
+ }
30
+ exports.LOGRAIL_CHANNEL = 'lograil:log';
31
+ /**
32
+ * Metadata key (on `LogEntry.metadata`) used to mark entries that originated
33
+ * in a renderer process and arrived over IPC. The main runtime uses it to
34
+ * route those entries to a dedicated renderer log file.
35
+ */
36
+ exports.RENDERER_PROCESS_MARKER = '__lograilProcess';
37
+ /**
38
+ * Renderer-side transport. Forwards each log entry to the Electron main
39
+ * process over IPC, where it is persisted by the main logger (the renderer
40
+ * itself has no filesystem access). The `electron` module is required lazily
41
+ * so this file is safe to import in non-Electron environments.
42
+ */
43
+ class ElectronIpcTransport {
44
+ constructor(options = {}) {
45
+ this.channel = options.channel ?? exports.LOGRAIL_CHANNEL;
46
+ this.name = options.name ?? `ipc:${this.channel}`;
47
+ this.injectedIpc = options.ipcRenderer;
48
+ }
49
+ getIpc() {
50
+ if (this.injectedIpc)
51
+ return this.injectedIpc;
52
+ if (!this.resolvedIpc) {
53
+ try {
54
+ this.resolvedIpc = (0, electron_binding_js_1.getElectron)().ipcRenderer;
55
+ }
56
+ catch {
57
+ return undefined;
58
+ }
59
+ }
60
+ return this.resolvedIpc;
61
+ }
62
+ write(entry, _formatted) {
63
+ const ipc = this.getIpc();
64
+ if (!ipc)
65
+ return;
66
+ try {
67
+ const sender = ipc;
68
+ if (typeof sender.postMessage === 'function') {
69
+ // Zero-copy path: serialize once, then transfer the buffer's ownership
70
+ // across the process boundary (no structured-clone of the object graph).
71
+ const buf = encodeEntry(entry);
72
+ sender.postMessage(this.channel, buf, [buf]);
73
+ }
74
+ else {
75
+ // Fallback: Electron structured-clones the whole entry object.
76
+ ipc.send(this.channel, entry);
77
+ }
78
+ }
79
+ catch (err) {
80
+ // Report IPC failure so users can diagnose renderer → main delivery issues.
81
+ RAW_CONSOLE_ERROR(`[lograil] ipc transport (${this.name}) send failed:`, err);
82
+ }
83
+ }
84
+ /** Send a cross-process level command to the main process. */
85
+ sendLevelCommand(level) {
86
+ const ipc = this.getIpc();
87
+ if (!ipc)
88
+ return;
89
+ const cmd = { __lograilCmd: true, __lograilCmdType: 'setLevel', level };
90
+ try {
91
+ const sender = ipc;
92
+ if (typeof sender.postMessage === 'function') {
93
+ const buf = encoder.encode(JSON.stringify(cmd)).buffer;
94
+ sender.postMessage(this.channel, buf, [buf]);
95
+ }
96
+ else {
97
+ ipc.send(this.channel, cmd);
98
+ }
99
+ }
100
+ catch {
101
+ /* silently drop — command loss is not fatal */
102
+ }
103
+ }
104
+ }
105
+ exports.ElectronIpcTransport = ElectronIpcTransport;
106
+ /**
107
+ * Main-side helper: listen on the IPC channel and feed received renderer
108
+ * entries into the provided `ingest` callback (typically `logger.ingestEntry`).
109
+ * Level-change commands are forwarded to `onLevelCommand` when provided.
110
+ * Returns an unregister function.
111
+ */
112
+ function registerIpcReceiver(ingest, options = {}) {
113
+ const channel = options.channel ?? exports.LOGRAIL_CHANNEL;
114
+ const onLevelCommand = options.onLevelCommand;
115
+ // `electron` is only present in a main process; resolve it lazily.
116
+ const ipcMain = (0, electron_binding_js_1.getElectron)().ipcMain;
117
+ const handler = (_event, payload) => {
118
+ if (payload instanceof ArrayBuffer || payload instanceof Uint8Array) {
119
+ // Zero-copy transfer path
120
+ try {
121
+ const decoded = JSON.parse(decoder.decode(payload));
122
+ if ((0, types_js_1.isLogLevelCommand)(decoded)) {
123
+ onLevelCommand?.((0, types_js_1.normalizeLevel)(decoded.level));
124
+ return;
125
+ }
126
+ const entry = decoded;
127
+ ingest({
128
+ ...entry,
129
+ metadata: { ...entry.metadata, [exports.RENDERER_PROCESS_MARKER]: 'renderer' },
130
+ });
131
+ }
132
+ catch {
133
+ return;
134
+ }
135
+ }
136
+ else {
137
+ const data = payload;
138
+ if ((0, types_js_1.isLogLevelCommand)(data)) {
139
+ onLevelCommand?.((0, types_js_1.normalizeLevel)(data.level));
140
+ return;
141
+ }
142
+ const entry = data;
143
+ // Copy-on-write: mark renderer-origin without mutating a shared/frozen entry.
144
+ ingest({
145
+ ...entry,
146
+ metadata: { ...entry.metadata, [exports.RENDERER_PROCESS_MARKER]: 'renderer' },
147
+ });
148
+ }
149
+ };
150
+ ipcMain.on(channel, handler);
151
+ return () => ipcMain.removeListener(channel, handler);
152
+ }
153
+ //# sourceMappingURL=electron-ipc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-ipc.js","sourceRoot":"","sources":["../../../src/transport/electron-ipc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ import type { LogEntry } from '../types.js';
2
+ import type { Formatter } from '../pipeline/formatter.js';
3
+ import type { Transport } from './transport.js';
4
+ /** Fields every file mode shares. `appName` is required so the log file name
5
+ * always embeds the application identity. */
6
+ export interface FileBaseOptions {
7
+ /** Application name; embedded in every generated log file name. */
8
+ appName: string;
9
+ /** Directory for the log file(s). Defaults to `os.tmpdir()`. */
10
+ dir?: string;
11
+ formatter?: Formatter;
12
+ /** Drop entries for which this returns `false`. */
13
+ filter?: (entry: LogEntry) => boolean;
14
+ /** Transport name for diagnostics and `removeTransport()`. Defaults to
15
+ * `file:<appName>`. Unlike `appName`, it never appears in generated file
16
+ * names — it only identifies this transport instance in memory. */
17
+ name?: string;
18
+ /** File extension without the dot. Defaults to `'log'`. */
19
+ ext?: string;
20
+ /**
21
+ * Global cap on the **total** bytes of every file this transport owns in
22
+ * `dir` (matched by the `${appName}.*.${ext}` shape). When exceeded, the
23
+ * oldest files are deleted until back under the cap. Defaults to `Infinity`
24
+ * (no limit). Works alongside, and independently of, `maxFiles` — whichever
25
+ * limit is hit first trims from the oldest.
26
+ */
27
+ maxTotalSize?: number;
28
+ /**
29
+ * Global cap on file age. Any owned file (matched by `${appName}.*.${ext}`,
30
+ * excluding the active file) whose modification time is older than
31
+ * `maxAge` milliseconds is deleted.
32
+ * - `undefined` or `-1` (default): no limit.
33
+ * - `0`: delete all history files immediately.
34
+ * - `>0`: threshold in milliseconds.
35
+ */
36
+ maxAge?: number;
37
+ }
38
+ /** 1.1 — write to one fixed file, appending forever until the disk is full. */
39
+ export interface SingleAppendOptions extends FileBaseOptions {
40
+ mode: 'single';
41
+ }
42
+ /** 1.2 — single file; when it would exceed `maxSize`, copy it to a backup and
43
+ * truncate the original so writing resumes from the top (a 2-file ring). */
44
+ export interface SingleTruncateOptions extends FileBaseOptions {
45
+ mode: 'single-truncate';
46
+ /** Size in bytes that triggers the backup+truncate cycle. */
47
+ maxSize: number;
48
+ /** Backup file name. Defaults to `${appName}.bak`. */
49
+ backupName?: string;
50
+ }
51
+ /** 2.1 — roll by size, keeping up to `maxFiles` generations. */
52
+ export interface RotateSizeOptions extends FileBaseOptions {
53
+ mode: 'rotate-size';
54
+ /** Size in bytes that triggers a rotation. */
55
+ maxSize: number;
56
+ /** Number of generations to keep (active file + N-1 backups). */
57
+ maxFiles: number;
58
+ }
59
+ /** 2.2 — roll by time (hour or day), naming each file with a timestamp. */
60
+ export interface RotateTimeOptions extends FileBaseOptions {
61
+ mode: 'rotate-time';
62
+ /** Time granularity of a new file. */
63
+ unit: 'hour' | 'day';
64
+ /** Number of time buckets (stamps) to keep. When a bucket contains
65
+ * multiple seq files (via `maxSize`), the entire bucket is kept or
66
+ * deleted as a unit. Omit = unbounded. */
67
+ maxFiles?: number;
68
+ /**
69
+ * Max bytes per time bucket. When the active file within the same time
70
+ * bucket would exceed this limit, a new numbered part is created
71
+ * (e.g. `app.2026-08-31-14.0.log`, `app.2026-08-31-14.1.log`).
72
+ * Omit = no size cap (time-only rotation).
73
+ */
74
+ maxSize?: number;
75
+ /** Max number of seq files kept **within a single time bucket**. When a
76
+ * bucket would exceed this count, the oldest seq files inside that bucket
77
+ * are deleted (the bucket forms an inner ring). Combined with `maxFiles`
78
+ * and `maxSize`, this bounds total disk usage at roughly
79
+ * `maxFiles × maxFilesPerBucket × maxSize` bytes. Omit = unbounded.
80
+ */
81
+ maxFilesPerBucket?: number;
82
+ /** Override the clock (mainly for testing). Defaults to `new Date()`. */
83
+ now?: () => Date;
84
+ }
85
+ /** Context handed to a custom rotation predicate. */
86
+ export interface RotateContext {
87
+ entry: LogEntry;
88
+ /** Bytes already written to the current active file. */
89
+ size: number;
90
+ /** ISO timestamp of the entry, for time-based decisions. */
91
+ time: string;
92
+ }
93
+ /** 2.3 — fully custom rotation driven by a user predicate. */
94
+ export interface RotateCustomOptions extends FileBaseOptions {
95
+ mode: 'rotate-custom';
96
+ /** Return `true` to close the current file and open a new one. */
97
+ shouldRotate: (entry: LogEntry, ctx: RotateContext) => boolean;
98
+ /** Name the seq-th file. Required (no sensible default for custom). */
99
+ fileName: (app: string, seq: number, ext: string) => string;
100
+ /** Max number of files to keep. Omit = unbounded. */
101
+ maxFiles?: number;
102
+ }
103
+ export type FileTransportOptions = SingleAppendOptions | SingleTruncateOptions | RotateSizeOptions | RotateTimeOptions | RotateCustomOptions;
104
+ /** Metadata for a single log file managed by a {@link FileTransport}. */
105
+ export interface FileMeta {
106
+ /** File name (e.g. `app.2026-09-01.0.log`). */
107
+ name: string;
108
+ /** Absolute path to the file. */
109
+ path: string;
110
+ /** File size in bytes. */
111
+ size: number;
112
+ /** Last modification timestamp (milliseconds since epoch). */
113
+ mtime: number;
114
+ /** Whether this is the file currently being written to. */
115
+ active: boolean;
116
+ }
117
+ /** Options for {@link FileTransport.getFiles}. */
118
+ export interface GetFilesOptions {
119
+ /** When `true`, only return files created by the current transport instance
120
+ * (files that existed on disk before this instance started are excluded).
121
+ * Default `false`. */
122
+ currentSessionOnly?: boolean;
123
+ }
124
+ /**
125
+ * Single file transport covering every file-output strategy. Each strategy is
126
+ * an isolated `Rotator` (see above); this class only performs the shared
127
+ * filesystem plumbing on a serialized queue.
128
+ *
129
+ * Modes:
130
+ * - `single` (1.1): one fixed file, append forever.
131
+ * - `single-truncate` (1.2): back up + truncate when `maxSize` would be exceeded.
132
+ * - `rotate-size` (2.1): roll by size into N generations.
133
+ * - `rotate-time` (2.2): roll by hour/day into timestamped files.
134
+ * - `rotate-custom` (2.3): roll whenever a user predicate says so.
135
+ *
136
+ * `appName` is required and is embedded in every file name.
137
+ */
138
+ export declare class FileTransport implements Transport {
139
+ readonly name: string;
140
+ readonly formatter: Formatter;
141
+ readonly filter?: (entry: LogEntry) => boolean;
142
+ /** Effective capacity limits, for diagnostics (e.g. "why was my log file
143
+ * deleted?"). `maxSize`/`maxFiles` reflect the active rotation mode;
144
+ * `maxTotalSize`/`maxAge` are the global caps (`Infinity`/`-1` = unset). */
145
+ get caps(): {
146
+ maxSize?: number;
147
+ maxFiles?: number;
148
+ maxFilesPerBucket?: number;
149
+ maxTotalSize: number;
150
+ maxAge: number;
151
+ };
152
+ private readonly options;
153
+ private readonly dir;
154
+ private readonly ext;
155
+ private readonly io;
156
+ private readonly rotator;
157
+ private readonly clock;
158
+ private readonly maxTotalSize;
159
+ private readonly maxAge;
160
+ private readonly owned;
161
+ private readonly createdAt;
162
+ private closed;
163
+ private reportedFirstError;
164
+ private handle;
165
+ private queue;
166
+ private ownedScanned;
167
+ private static readonly PERIODIC_EVERY;
168
+ private static readonly PERIODIC_INTERVAL_MS;
169
+ private writeCount;
170
+ private lastCheckMs;
171
+ constructor(options: FileTransportOptions);
172
+ /** Absolute path of the log directory. */
173
+ getDir(): string;
174
+ /** Absolute path of the file currently being written to. */
175
+ getActiveFile(): string;
176
+ /** List all log files managed by this transport.
177
+ *
178
+ * By default returns every file the transport knows about, including
179
+ * files left over from previous runs (discovered via `scanOwned`). Pass
180
+ * `{ currentSessionOnly: true }` to restrict the result to files created
181
+ * by the current transport instance. */
182
+ getFiles(options?: GetFilesOptions): Promise<FileMeta[]>;
183
+ private ensureHandle;
184
+ private scanOwned;
185
+ private closeHandle;
186
+ write(entry: LogEntry, formatted: string): void | Promise<void>;
187
+ flush(): Promise<void>;
188
+ close(): Promise<void>;
189
+ }
190
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/transport/file.ts"],"names":[],"mappings":"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"}