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,99 @@
1
+ import { ConsoleTransport } from '../transport/console.js';
2
+ import { FileTransport } from '../transport/file.js';
3
+ import { registerIpcReceiver, RENDERER_PROCESS_MARKER } from '../transport/electron-ipc.js';
4
+ import { getElectronApp } from './electron-binding.js';
5
+ import { createElectronLifecycle } from './electron-lifecycle.js';
6
+ import { tmpdir } from '../shims/index.js';
7
+ import { join } from '../shims/index.js';
8
+ import { DEFAULT_FILE_CAPS } from './defaults.js';
9
+ /**
10
+ * Log directory for the Electron main runtime. Prefers Electron's dedicated
11
+ * `logs` path (e.g. `<userData>/logs`, already namespaced by the app name so
12
+ * multiple apps never collide), falling back to `<appData>/Logs` and finally
13
+ * the OS temp dir if Electron is unavailable or `app` is not ready.
14
+ */
15
+ function defaultElectronLogDir() {
16
+ const app = getElectronApp();
17
+ if (app?.getPath) {
18
+ try {
19
+ return app.getPath('logs');
20
+ }
21
+ catch {
22
+ /* app not ready yet — try the next fallback */
23
+ }
24
+ try {
25
+ return join(app.getPath('appData'), 'Logs');
26
+ }
27
+ catch {
28
+ /* ignore */
29
+ }
30
+ }
31
+ return tmpdir();
32
+ }
33
+ /**
34
+ * Electron **main process** runtime. Owns the filesystem, so by default it
35
+ * persists logs to a rotating file (unless `disableFile`) in addition to the
36
+ * console, and (by default) receives renderer entries over IPC so that all
37
+ * logs — including those produced in renderers — are written here.
38
+ */
39
+ export function createElectronMainRuntime(options = {}) {
40
+ const pid = typeof process !== 'undefined' ? process.pid : undefined;
41
+ const receiveFromRenderer = options.receiveFromRenderer ?? true;
42
+ const runtime = {
43
+ name: 'electron',
44
+ processType: 'main',
45
+ now: () => Date.now(),
46
+ pid: () => pid,
47
+ hasFileSystem: () => true,
48
+ defaultTransports: () => {
49
+ const transports = [new ConsoleTransport()];
50
+ if (!options.disableFile) {
51
+ const dir = defaultElectronLogDir();
52
+ transports.push(new FileTransport({
53
+ mode: 'rotate-time',
54
+ unit: 'day',
55
+ appName: 'main',
56
+ dir,
57
+ // Disk-safety defaults so a zero-config logger never eats the
58
+ // disk; explicit `fileTransportOptions` values win.
59
+ ...DEFAULT_FILE_CAPS,
60
+ // Main-process entries only: renderer entries are routed to the
61
+ // dedicated renderer log file below.
62
+ filter: (entry) => entry.metadata?.[RENDERER_PROCESS_MARKER] !== 'renderer',
63
+ ...options.fileTransportOptions,
64
+ }));
65
+ if (receiveFromRenderer) {
66
+ transports.push(new FileTransport({
67
+ mode: 'rotate-time',
68
+ unit: 'day',
69
+ appName: 'renderer',
70
+ dir,
71
+ // Disk-safety defaults so a zero-config logger never eats the
72
+ // disk; explicit `fileTransportOptions` values win.
73
+ ...DEFAULT_FILE_CAPS,
74
+ // Renderer entries only.
75
+ filter: (entry) => entry.metadata?.[RENDERER_PROCESS_MARKER] === 'renderer',
76
+ ...options.fileTransportOptions,
77
+ }));
78
+ }
79
+ }
80
+ return transports;
81
+ },
82
+ lifecycle: createElectronLifecycle(),
83
+ };
84
+ if (receiveFromRenderer) {
85
+ runtime.attachReceiver = (ingest) => {
86
+ try {
87
+ return registerIpcReceiver(ingest, {
88
+ onLevelCommand: (level) => runtime.onLevelCommand?.(level),
89
+ });
90
+ }
91
+ catch {
92
+ // `electron` not available (e.g. tests) — degrade to a no-op.
93
+ return () => { };
94
+ }
95
+ };
96
+ }
97
+ return runtime;
98
+ }
99
+ //# sourceMappingURL=electron-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-main.js","sourceRoot":"","sources":["../../../src/runtime/electron-main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { RuntimeAdapter } from './adapter.js';
2
+ import type { IpcRenderer } from 'electron';
3
+ export interface ElectronRendererRuntimeOptions {
4
+ /**
5
+ * Forward entries to the main process over IPC so they are written there
6
+ * (default `true`). Disable to keep renderer logs local only.
7
+ */
8
+ forwardToMain?: boolean;
9
+ /** Override the IPC channel used to reach the main process. */
10
+ channel?: string;
11
+ /**
12
+ * Injected IPC sender. Required when the renderer cannot reach
13
+ * `require('electron')` (e.g. `nodeIntegration: false` +
14
+ * `contextIsolation: true`) — pass the `ipcRenderer` obtained from a preload
15
+ * bridge. Without it the transport falls back to `require('electron')`, which
16
+ * is unavailable in that locked-down setup.
17
+ */
18
+ ipcRenderer?: Pick<IpcRenderer, 'send'>;
19
+ }
20
+ /**
21
+ * Electron **renderer process** runtime. Renderers have no filesystem access,
22
+ * so by default they forward entries to the main process (which persists
23
+ * them) while still logging to the local console for devtools visibility.
24
+ */
25
+ export declare function createElectronRendererRuntime(options?: ElectronRendererRuntimeOptions): RuntimeAdapter;
26
+ //# sourceMappingURL=electron-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-renderer.d.ts","sourceRoot":"","sources":["../../../src/runtime/electron-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,cAAc,CAuBhB"}
@@ -0,0 +1,30 @@
1
+ import { ConsoleTransport } from '../transport/console.js';
2
+ import { ElectronIpcTransport } from '../transport/electron-ipc.js';
3
+ import { createWebLifecycle } from './web-lifecycle.js';
4
+ /**
5
+ * Electron **renderer process** runtime. Renderers have no filesystem access,
6
+ * so by default they forward entries to the main process (which persists
7
+ * them) while still logging to the local console for devtools visibility.
8
+ */
9
+ export function createElectronRendererRuntime(options = {}) {
10
+ const forwardToMain = options.forwardToMain ?? true;
11
+ return {
12
+ name: 'electron',
13
+ processType: 'renderer',
14
+ now: () => Date.now(),
15
+ pid: () => undefined,
16
+ hasFileSystem: () => false,
17
+ defaultTransports: () => {
18
+ const transports = [new ConsoleTransport()];
19
+ if (forwardToMain) {
20
+ transports.push(new ElectronIpcTransport({
21
+ channel: options.channel,
22
+ ipcRenderer: options.ipcRenderer,
23
+ }));
24
+ }
25
+ return transports;
26
+ },
27
+ lifecycle: createWebLifecycle(),
28
+ };
29
+ }
30
+ //# sourceMappingURL=electron-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-renderer.js","sourceRoot":"","sources":["../../../src/runtime/electron-renderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAoBxD;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IAEpD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU;QACvB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;QACpB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;QAC1B,iBAAiB,EAAE,GAAG,EAAE;YACtB,MAAM,UAAU,GAAgB,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YACzD,IAAI,aAAa,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CACb,IAAI,oBAAoB,CAAC;oBACvB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,SAAS,EAAE,kBAAkB,EAAE;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { RuntimeAdapter } from './adapter.js';
2
+ import type { ElectronMainRuntimeOptions } from './electron-main.js';
3
+ import type { ElectronRendererRuntimeOptions } from './electron-renderer.js';
4
+ export { createElectronMainRuntime } from './electron-main.js';
5
+ export type { ElectronMainRuntimeOptions } from './electron-main.js';
6
+ export { createElectronRendererRuntime } from './electron-renderer.js';
7
+ export type { ElectronRendererRuntimeOptions } from './electron-renderer.js';
8
+ /**
9
+ * Options accepted by {@link createElectronRuntime}. This is the union of the
10
+ * main and renderer runtime options; only the relevant subset is used after
11
+ * the process type is detected.
12
+ */
13
+ export type ElectronRuntimeOptions = ElectronMainRuntimeOptions & ElectronRendererRuntimeOptions;
14
+ /**
15
+ * Auto-detect whether we run in the Electron main or renderer process and
16
+ * return the matching runtime. Prefer the explicit {@link createElectronMainRuntime}
17
+ * / {@link createElectronRendererRuntime} when the process type is known.
18
+ */
19
+ export declare function createElectronRuntime(options?: ElectronRuntimeOptions): RuntimeAdapter;
20
+ //# sourceMappingURL=electron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.d.ts","sourceRoot":"","sources":["../../../src/runtime/electron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,YAAY,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG,8BAA8B,CAAC;AAWjG;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,cAAc,CAI1F"}
@@ -0,0 +1,21 @@
1
+ import { createElectronMainRuntime } from './electron-main.js';
2
+ import { createElectronRendererRuntime } from './electron-renderer.js';
3
+ export { createElectronMainRuntime } from './electron-main.js';
4
+ export { createElectronRendererRuntime } from './electron-renderer.js';
5
+ function isMainProcess() {
6
+ // An Electron renderer explicitly reports `process.type === 'renderer'`.
7
+ // The main process may report `'browser'` *or* `undefined`, so anything
8
+ // that is not explicitly a renderer is treated as main.
9
+ return (typeof process === 'undefined' || process.type !== 'renderer');
10
+ }
11
+ /**
12
+ * Auto-detect whether we run in the Electron main or renderer process and
13
+ * return the matching runtime. Prefer the explicit {@link createElectronMainRuntime}
14
+ * / {@link createElectronRendererRuntime} when the process type is known.
15
+ */
16
+ export function createElectronRuntime(options = {}) {
17
+ return isMainProcess()
18
+ ? createElectronMainRuntime(options)
19
+ : createElectronRendererRuntime(options);
20
+ }
21
+ //# sourceMappingURL=electron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.js","sourceRoot":"","sources":["../../../src/runtime/electron.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAGvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAUvE,SAAS,aAAa;IACpB,yEAAyE;IACzE,wEAAwE;IACxE,wDAAwD;IACxD,OAAO,CACL,OAAO,OAAO,KAAK,WAAW,IAAK,OAAwC,CAAC,IAAI,KAAK,UAAU,CAChG,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkC,EAAE;IACxE,OAAO,aAAa,EAAE;QACpB,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC;QACpC,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { RuntimeAdapter } from './adapter.js';
2
+ import type { NodeRuntimeOptions } from './node.js';
3
+ import type { ElectronRuntimeOptions } from './electron.js';
4
+ export type RuntimeOptions = ElectronRuntimeOptions & NodeRuntimeOptions;
5
+ /**
6
+ * Auto-detect the current runtime:
7
+ * - Electron main / renderer when `process.versions.electron` exists;
8
+ * - Plain Node.js when a Node process is present (has filesystem + pid);
9
+ * - Web (browser) otherwise.
10
+ *
11
+ * `ElectronRuntimeOptions`/`NodeRuntimeOptions` (e.g. `appName`, `fileTransportOptions`) are
12
+ * forwarded to the matching adapter.
13
+ */
14
+ export declare function detectRuntime(options?: RuntimeOptions): RuntimeAdapter;
15
+ export type { RuntimeAdapter, RuntimeName, ElectronProcessType, IngestFn } from './adapter.js';
16
+ export { createWebRuntime } from './web.js';
17
+ export { createNodeRuntime } from './node.js';
18
+ export { createElectronRuntime, createElectronMainRuntime, createElectronRendererRuntime, } from './electron.js';
19
+ export type { ElectronRuntimeOptions, ElectronMainRuntimeOptions, ElectronRendererRuntimeOptions, } from './electron.js';
20
+ export { ElectronIpcTransport, registerIpcReceiver, LOGRAIL_CHANNEL, } from '../transport/electron-ipc.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAG5D,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;AAEzE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,cAAc,CAa1E;AAED,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { createWebRuntime } from './web.js';
2
+ import { createNodeRuntime } from './node.js';
3
+ import { createElectronRuntime } from './electron.js';
4
+ /**
5
+ * Auto-detect the current runtime:
6
+ * - Electron main / renderer when `process.versions.electron` exists;
7
+ * - Plain Node.js when a Node process is present (has filesystem + pid);
8
+ * - Web (browser) otherwise.
9
+ *
10
+ * `ElectronRuntimeOptions`/`NodeRuntimeOptions` (e.g. `appName`, `fileTransportOptions`) are
11
+ * forwarded to the matching adapter.
12
+ */
13
+ export function detectRuntime(options = {}) {
14
+ const versions = (typeof process !== 'undefined'
15
+ ? process.versions
16
+ : undefined) ?? {};
17
+ if (versions.electron) {
18
+ return createElectronRuntime(options);
19
+ }
20
+ if (versions.node) {
21
+ return createNodeRuntime(options);
22
+ }
23
+ return createWebRuntime();
24
+ }
25
+ export { createWebRuntime } from './web.js';
26
+ export { createNodeRuntime } from './node.js';
27
+ export { createElectronRuntime, createElectronMainRuntime, createElectronRendererRuntime, } from './electron.js';
28
+ export { ElectronIpcTransport, registerIpcReceiver, LOGRAIL_CHANNEL, } from '../transport/electron-ipc.js';
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAItD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,UAA0B,EAAE;IACxD,MAAM,QAAQ,GACZ,CAAC,OAAO,OAAO,KAAK,WAAW;QAC7B,CAAC,CAAE,OAA0E,CAAC,QAAQ;QACtF,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEvB,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAMvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { RotateTimeOptions } from '../transport/file.js';
2
+ import type { RuntimeAdapter } from './adapter.js';
3
+ export interface NodeRuntimeOptions {
4
+ /** Application name; embedded in the log file name (required). */
5
+ appName?: string;
6
+ /** Forwarded to the default `FileTransport` (mode `rotate-time`). */
7
+ fileTransportOptions?: Partial<Omit<RotateTimeOptions, 'mode'>>;
8
+ /** Disable the file transport entirely (console only). */
9
+ disableFile?: boolean;
10
+ }
11
+ /**
12
+ * Plain Node.js runtime (CLI / server / worker). Has both a process id and
13
+ * filesystem access, so by default it persists logs to a time-rotated file
14
+ * (in addition to the console). Pass `disableFile` to opt out, or
15
+ * `appName` / `fileTransportOptions` to customize. `appName` is required for
16
+ * the file transport; if omitted it is inferred from the launched script and
17
+ * throws if it cannot be determined.
18
+ *
19
+ * **Cluster support.** When running inside `node:cluster`, the runtime
20
+ * automatically detects whether the current process is a worker or the
21
+ * primary. Workers disable the file transport and send entries to the
22
+ * primary via `process.send()` (the `ClusterIpcTransport`). The primary
23
+ * receives those entries and feeds them into the logger — no manual
24
+ * `registerClusterReceiver` call is needed.
25
+ */
26
+ export declare function createNodeRuntime(options?: NodeRuntimeOptions): RuntimeAdapter;
27
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/runtime/node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsBnD,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAyCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,cAAc,CA0DlF"}
@@ -0,0 +1,123 @@
1
+ import { ConsoleTransport } from '../transport/console.js';
2
+ import { FileTransport } from '../transport/file.js';
3
+ import { ClusterIpcTransport, registerClusterReceiver } from '../transport/cluster-ipc.js';
4
+ import { WorkerIpcTransport } from '../transport/worker-ipc.js';
5
+ import { createProcessLifecycle } from './process-lifecycle.js';
6
+ import { tmpdir } from '../shims/index.js';
7
+ import { basename } from '../shims/index.js';
8
+ import { isClusterWorker } from '../shims/index.js';
9
+ import { DEFAULT_FILE_CAPS } from './defaults.js';
10
+ /**
11
+ * Detect whether the current context is a Node worker_threads worker.
12
+ * Uses `typeof` on `globalThis.parentPort` — safe in all environments.
13
+ */
14
+ function isNodeWorkerThread() {
15
+ try {
16
+ return (typeof globalThis.parentPort?.postMessage ===
17
+ 'function');
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ /** Derive an application name from the invoked script when none is given. */
24
+ function inferAppName() {
25
+ try {
26
+ const p = process.argv[1];
27
+ if (p)
28
+ return basename(p).replace(/\.[^.]+$/, '');
29
+ }
30
+ catch {
31
+ /* ignore */
32
+ }
33
+ return undefined;
34
+ }
35
+ /**
36
+ * Lifecycle hooks for cluster workers. Flushes on `disconnect` (the primary
37
+ * closed the IPC channel) and on `beforeExit` / signals.
38
+ */
39
+ function createClusterWorkerLifecycle() {
40
+ const lc = createProcessLifecycle();
41
+ return {
42
+ onFlushBeforeExit(cb) {
43
+ const detachProcess = lc.onFlushBeforeExit(cb);
44
+ const proc = process;
45
+ const onDisconnect = () => {
46
+ void cb();
47
+ };
48
+ proc.on?.('disconnect', onDisconnect);
49
+ return () => {
50
+ detachProcess();
51
+ proc.removeListener?.('disconnect', onDisconnect);
52
+ };
53
+ },
54
+ onUncaughtError: lc.onUncaughtError,
55
+ };
56
+ }
57
+ /**
58
+ * Plain Node.js runtime (CLI / server / worker). Has both a process id and
59
+ * filesystem access, so by default it persists logs to a time-rotated file
60
+ * (in addition to the console). Pass `disableFile` to opt out, or
61
+ * `appName` / `fileTransportOptions` to customize. `appName` is required for
62
+ * the file transport; if omitted it is inferred from the launched script and
63
+ * throws if it cannot be determined.
64
+ *
65
+ * **Cluster support.** When running inside `node:cluster`, the runtime
66
+ * automatically detects whether the current process is a worker or the
67
+ * primary. Workers disable the file transport and send entries to the
68
+ * primary via `process.send()` (the `ClusterIpcTransport`). The primary
69
+ * receives those entries and feeds them into the logger — no manual
70
+ * `registerClusterReceiver` call is needed.
71
+ */
72
+ export function createNodeRuntime(options = {}) {
73
+ const pid = typeof process !== 'undefined' ? process.pid : undefined;
74
+ const worker = isClusterWorker();
75
+ // ── Cluster worker: no file, send to primary via IPC ──
76
+ if (worker) {
77
+ return {
78
+ name: 'node',
79
+ now: () => Date.now(),
80
+ pid: () => pid,
81
+ hasFileSystem: () => false,
82
+ defaultTransports: () => [new ConsoleTransport(), new ClusterIpcTransport()],
83
+ lifecycle: createClusterWorkerLifecycle(),
84
+ };
85
+ }
86
+ // ── Node worker_threads worker: no file, send to parent via postMessage ──
87
+ if (isNodeWorkerThread()) {
88
+ return {
89
+ name: 'node',
90
+ now: () => Date.now(),
91
+ pid: () => pid,
92
+ hasFileSystem: () => false,
93
+ defaultTransports: () => [new ConsoleTransport(), new WorkerIpcTransport()],
94
+ lifecycle: createClusterWorkerLifecycle(), // reuse: flush on disconnect/exit
95
+ };
96
+ }
97
+ // ── Primary or non-cluster: console + file (default) ──
98
+ const transports = [new ConsoleTransport()];
99
+ if (!options.disableFile) {
100
+ const appName = options.appName ?? inferAppName();
101
+ if (!appName) {
102
+ throw new Error('Node runtime requires an "appName" (or a determinable script path) for the file transport');
103
+ }
104
+ transports.push(new FileTransport({
105
+ mode: 'rotate-time',
106
+ unit: 'day',
107
+ appName,
108
+ dir: tmpdir(),
109
+ ...DEFAULT_FILE_CAPS,
110
+ ...options.fileTransportOptions,
111
+ }));
112
+ }
113
+ return {
114
+ name: 'node',
115
+ now: () => Date.now(),
116
+ pid: () => pid,
117
+ hasFileSystem: () => !options.disableFile,
118
+ defaultTransports: () => transports,
119
+ attachReceiver: (ingest) => registerClusterReceiver(ingest),
120
+ lifecycle: createProcessLifecycle(),
121
+ };
122
+ }
123
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/runtime/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { LifecycleHooks } from './adapter.js';
2
+ /**
3
+ * Lifecycle hooks backed by the Node/Electron `process` event surface. Shared
4
+ * by the Node runtime and both Electron process types — they all expose the
5
+ * same `process` events.
6
+ *
7
+ * The flush callback is supplied by the logger; this module only decides
8
+ * *when* to call it and owns the `process.exit()` that follows a signal or a
9
+ * fatal, uncaught crash. It never touches `window`, so it is safe to import in
10
+ * any runtime (the `process` probe just returns `undefined` where absent).
11
+ */
12
+ export declare function createProcessLifecycle(): LifecycleHooks;
13
+ //# sourceMappingURL=process-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/runtime/process-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAgBnD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CA2DvD"}
@@ -0,0 +1,77 @@
1
+ function getProcess() {
2
+ if (typeof process === 'undefined' || typeof process.on !== 'function') {
3
+ return undefined;
4
+ }
5
+ return process;
6
+ }
7
+ /**
8
+ * Lifecycle hooks backed by the Node/Electron `process` event surface. Shared
9
+ * by the Node runtime and both Electron process types — they all expose the
10
+ * same `process` events.
11
+ *
12
+ * The flush callback is supplied by the logger; this module only decides
13
+ * *when* to call it and owns the `process.exit()` that follows a signal or a
14
+ * fatal, uncaught crash. It never touches `window`, so it is safe to import in
15
+ * any runtime (the `process` probe just returns `undefined` where absent).
16
+ */
17
+ export function createProcessLifecycle() {
18
+ return {
19
+ onFlushBeforeExit(cb) {
20
+ const proc = getProcess();
21
+ if (!proc)
22
+ return () => { };
23
+ // Normal event-loop drain: flush pending writes; the process exits on
24
+ // its own once the loop empties. `beforeExit` re-fires while async writes
25
+ // keep it alive, so the queue keeps draining until empty.
26
+ const onBeforeExit = () => {
27
+ void cb();
28
+ };
29
+ // A signal must force an exit after flushing — but never hang shutdown on
30
+ // a stalled transport (the logger's flush timeout bounds it).
31
+ const onSignal = (code) => {
32
+ void Promise.resolve(cb()).finally(() => {
33
+ try {
34
+ proc.exit(code);
35
+ }
36
+ catch {
37
+ /* ignore */
38
+ }
39
+ });
40
+ };
41
+ const onSigInt = () => onSignal(130);
42
+ const onSigTerm = () => onSignal(143);
43
+ proc.on('beforeExit', onBeforeExit);
44
+ proc.on('SIGINT', onSigInt);
45
+ proc.on('SIGTERM', onSigTerm);
46
+ return () => {
47
+ proc.removeListener('beforeExit', onBeforeExit);
48
+ proc.removeListener('SIGINT', onSigInt);
49
+ proc.removeListener('SIGTERM', onSigTerm);
50
+ };
51
+ },
52
+ onUncaughtError(cb) {
53
+ const proc = getProcess();
54
+ if (!proc)
55
+ return () => { };
56
+ // Log the crash at fatal level, flush, then exit(1) — but never hang on a
57
+ // stalled transport (the logger's flush timeout bounds the flush).
58
+ const onErr = (err) => {
59
+ void Promise.resolve(cb(err)).finally(() => {
60
+ try {
61
+ proc.exit(1);
62
+ }
63
+ catch {
64
+ /* ignore */
65
+ }
66
+ });
67
+ };
68
+ proc.on('uncaughtException', onErr);
69
+ proc.on('unhandledRejection', onErr);
70
+ return () => {
71
+ proc.removeListener('uncaughtException', onErr);
72
+ proc.removeListener('unhandledRejection', onErr);
73
+ };
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=process-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-lifecycle.js","sourceRoot":"","sources":["../../../src/runtime/process-lifecycle.ts"],"names":[],"mappings":"AASA,SAAS,UAAU;IACjB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAQ,OAA4B,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAA0B,CAAC;AACpC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,iBAAiB,CAAC,EAAE;YAClB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAE3B,sEAAsE;YACtE,0EAA0E;YAC1E,0DAA0D;YAC1D,MAAM,YAAY,GAAG,GAAS,EAAE;gBAC9B,KAAK,EAAE,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,0EAA0E;YAC1E,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;gBACtC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBACtC,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE5C,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9B,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAChD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC,CAAC;QACJ,CAAC;QAED,eAAe,CAAC,EAAE;YAChB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAE3B,0EAA0E;YAC1E,mEAAmE;YACnE,MAAM,KAAK,GAAG,CAAC,GAAY,EAAQ,EAAE;gBACnC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBACzC,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACf,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { LifecycleHooks } from './adapter.js';
2
+ /**
3
+ * Web lifecycle: flush pending entries when the page is being unloaded. There
4
+ * is no `process.exit` and no `uncaughtException` concept in a browser, so this
5
+ * only implements the "flush before close" hook (via `pagehide` /
6
+ * `visibilitychange`) and intentionally omits `onUncaughtError`.
7
+ *
8
+ * The flush is best-effort: the browser terminates the page after the unload
9
+ * event regardless, so the logger's own flush timeout is what bounds how long
10
+ * we wait.
11
+ */
12
+ export declare function createWebLifecycle(): LifecycleHooks;
13
+ //# sourceMappingURL=web-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/runtime/web-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAanD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAmBnD"}
@@ -0,0 +1,36 @@
1
+ function getWindow() {
2
+ if (typeof window === 'undefined')
3
+ return undefined;
4
+ return window;
5
+ }
6
+ /**
7
+ * Web lifecycle: flush pending entries when the page is being unloaded. There
8
+ * is no `process.exit` and no `uncaughtException` concept in a browser, so this
9
+ * only implements the "flush before close" hook (via `pagehide` /
10
+ * `visibilitychange`) and intentionally omits `onUncaughtError`.
11
+ *
12
+ * The flush is best-effort: the browser terminates the page after the unload
13
+ * event regardless, so the logger's own flush timeout is what bounds how long
14
+ * we wait.
15
+ */
16
+ export function createWebLifecycle() {
17
+ return {
18
+ onFlushBeforeExit(cb) {
19
+ const win = getWindow();
20
+ if (!win)
21
+ return () => { };
22
+ const onHide = () => {
23
+ void cb();
24
+ };
25
+ // `pagehide` fires on tab close / navigation. `visibilitychange` covers
26
+ // the backgrounded / mobile case where the page may be discarded.
27
+ win.addEventListener('pagehide', onHide);
28
+ win.addEventListener('visibilitychange', onHide);
29
+ return () => {
30
+ win.removeEventListener('pagehide', onHide);
31
+ win.removeEventListener('visibilitychange', onHide);
32
+ };
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=web-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-lifecycle.js","sourceRoot":"","sources":["../../../src/runtime/web-lifecycle.ts"],"names":[],"mappings":"AAQA,SAAS,SAAS;IAChB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACpD,OAAO,MAAwB,CAAC;AAClC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,iBAAiB,CAAC,EAAE;YAClB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAE1B,MAAM,MAAM,GAAG,GAAS,EAAE;gBACxB,KAAK,EAAE,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,wEAAwE;YACxE,kEAAkE;YAClE,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACzC,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,GAAG,EAAE;gBACV,GAAG,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC5C,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { RuntimeAdapter } from './adapter.js';
2
+ /**
3
+ * Web runtime (browsers + Node worker_threads). No process id, no filesystem,
4
+ * console only by default. Remote HTTP transports can be added by the
5
+ * application.
6
+ *
7
+ * **Worker support.** When running inside a Web Worker or Node worker_threads
8
+ * worker, the runtime automatically detects the Worker context and sends
9
+ * entries to the main/parent thread via `postMessage()`. The parent thread
10
+ * receives them via `registerWorkerReceiver()` (attached automatically by
11
+ * `createWebRuntime()`).
12
+ */
13
+ export declare function createWebRuntime(): RuntimeAdapter;
14
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/runtime/web.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA8BnD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAuBjD"}