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,76 @@
1
+ import { combineFilters } from './filter.js';
2
+ /**
3
+ * The processing pipeline sits between the Logger (entry creation) and the
4
+ * Transports (output). For each entry it:
5
+ *
6
+ * 1. runs all {@link Filter}s — if any returns `false` the entry is dropped;
7
+ * 2. runs all {@link Processor}s in order, allowing enrichment / redaction;
8
+ * 3. exposes a {@link Formatter} used by transports to serialize the entry.
9
+ */
10
+ export class Pipeline {
11
+ constructor(options = {}) {
12
+ this.cachedFilter = undefined;
13
+ this.filters = options.filters ? [...options.filters] : [];
14
+ this.processors = options.processors ? [...options.processors] : [];
15
+ this.formatter = options.formatter ?? ((e) => e);
16
+ }
17
+ addFilter(filter) {
18
+ this.filters.push(filter);
19
+ this.cachedFilter = undefined;
20
+ }
21
+ addProcessor(processor) {
22
+ this.processors.push(processor);
23
+ }
24
+ removeFilter(filter) {
25
+ const i = this.filters.indexOf(filter);
26
+ if (i >= 0)
27
+ this.filters.splice(i, 1);
28
+ this.cachedFilter = undefined;
29
+ }
30
+ removeProcessor(processor) {
31
+ const i = this.processors.indexOf(processor);
32
+ if (i >= 0)
33
+ this.processors.splice(i, 1);
34
+ }
35
+ setFormatter(formatter) {
36
+ this.formatter = formatter;
37
+ }
38
+ getFormatter() {
39
+ return this.formatter;
40
+ }
41
+ /**
42
+ * Run filters and processors. Returns `null` when the entry is filtered out.
43
+ */
44
+ process(entry) {
45
+ if (this.filters.length) {
46
+ if (this.cachedFilter === undefined) {
47
+ this.cachedFilter =
48
+ this.filters.length === 1 ? this.filters[0] : combineFilters(this.filters);
49
+ }
50
+ try {
51
+ if (!this.cachedFilter(entry)) {
52
+ return null;
53
+ }
54
+ }
55
+ catch (err) {
56
+ this.onError?.(err, { phase: 'filter', entry });
57
+ return null;
58
+ }
59
+ }
60
+ let current = entry;
61
+ for (const processor of this.processors) {
62
+ try {
63
+ current = processor(current);
64
+ }
65
+ catch (err) {
66
+ // A broken processor must not crash logging. Keep the last good entry
67
+ // and continue with the remaining processors.
68
+ this.onError?.(err, { phase: 'process', entry });
69
+ }
70
+ if (!current)
71
+ return null;
72
+ }
73
+ return current;
74
+ }
75
+ }
76
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/pipeline/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { LogEntry } from '../types.js';
2
+ /**
3
+ * A Processor transforms a log entry before it is formatted. Processors must
4
+ * return (the same or a new) entry. They are useful for enrichment, redaction
5
+ * or normalization.
6
+ */
7
+ export type Processor = (entry: LogEntry) => LogEntry;
8
+ /**
9
+ * Default processor: returns the entry unchanged.
10
+ */
11
+ export declare const identityProcessor: Processor;
12
+ /**
13
+ * Create a processor that redacts sensitive data before formatting. It walks
14
+ * `context`, `metadata` and each element of `args`, replacing any value whose
15
+ * path matches one of `keys` with `replacement` (default `"[REDACTED]"`).
16
+ *
17
+ * Matching is **structural** — the original objects are never mutated; only the
18
+ * branches that actually contain a match are cloned. When nothing matches the
19
+ * entry is returned unchanged (same reference), so the common "no secret" case
20
+ * adds no allocation.
21
+ *
22
+ * @example
23
+ * createRedactProcessor(['password']) // any `password` at any depth
24
+ * createRedactProcessor(['user.password']) // only `user.password`
25
+ * createRedactProcessor(['*.token', 'user.*']) // wildcards
26
+ */
27
+ /**
28
+ * Common secret / PII key names redacted by {@link createRedactProcessor} when
29
+ * no explicit key list is supplied. Covers passwords, tokens, API keys, auth
30
+ * headers, cookies, private keys and a few PII fields.
31
+ */
32
+ export declare const DEFAULT_SENSITIVE_KEYS: string[];
33
+ export declare function createRedactProcessor(keys?: string[], replacement?: unknown): Processor;
34
+ /**
35
+ * A Serializer transforms a single value keyed by `name` before formatting.
36
+ * `entry` is passed for contextual serialization (e.g. capturing the level).
37
+ */
38
+ export type Serializer = (value: unknown, entry: LogEntry) => unknown;
39
+ /**
40
+ * Create a processor that normalizes values by key name before formatting. For
41
+ * every property named `key` found in `context`, `metadata`, each element of
42
+ * `args` (and the entry's `error`), the matching serializer replaces the value.
43
+ * Matching is by property name at **any depth** (e.g. a `req` serializer runs on
44
+ * any object that has a `req` property).
45
+ *
46
+ * Transformation is **structural** — only the branches that contain a matching
47
+ * key are cloned; when no serializer fires the entry is returned unchanged (same
48
+ * reference), so the common "no serializer matched" case adds no allocation.
49
+ *
50
+ * @example
51
+ * createSerializeProcessor({
52
+ * err: (e) => ({ name: e.name, message: e.message, stack: e.stack }),
53
+ * user: (u) => ({ id: u.id }), // drop the rest of the user object
54
+ * })
55
+ */
56
+ export declare function createSerializeProcessor(serializers: Record<string, Serializer>): Processor;
57
+ /**
58
+ * A preset of common {@link Serializer}s keyed by the property names they match
59
+ * (`error`, `date`, `buffer`, `url`, `req`, `res`). Spread it into your own
60
+ * serializer map to get safe, compact representations of these types out of the
61
+ * box, e.g. `createSerializeProcessor({ ...createDefaultSerializers(), user })`.
62
+ *
63
+ * Matching is by property name at any depth (see {@link createSerializeProcessor}),
64
+ * so any object with a `req`/`res`/`url`/`error` property is normalized.
65
+ */
66
+ export declare function createDefaultSerializers(): Record<string, Serializer>;
67
+ //# sourceMappingURL=processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../src/pipeline/processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAA4B,CAAC;AAwE7D;;;;;;;;;;;;;;GAcG;AACH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,EA0B1C,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,IAAI,GAAE,MAAM,EAA2B,EACvC,WAAW,GAAE,OAAsB,GAClC,SAAS,CAoBX;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;AAoCtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CA+B3F;AAqCD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CASrE"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Default processor: returns the entry unchanged.
3
+ */
4
+ export const identityProcessor = (entry) => entry;
5
+ /**
6
+ * Compile a redaction spec into a path matcher.
7
+ *
8
+ * - A bare key (no `.` and no `*`), e.g. `"password"`, matches **any** property
9
+ * named that way at any depth (the historical behavior — convenient for
10
+ * common secrets).
11
+ * - A dotted spec, e.g. `"user.password"` or `"*.password"`, matches only the
12
+ * exact path. `*` matches any single key/array index at that position. Numeric
13
+ * array indices are matched positionally (`"list.0.id"`).
14
+ */
15
+ function compileMatcher(spec) {
16
+ if (!spec.includes('.') && !spec.includes('*')) {
17
+ return (p) => p.length > 0 && p[p.length - 1] === spec;
18
+ }
19
+ const segs = spec.split('.');
20
+ return (p) => {
21
+ if (p.length !== segs.length)
22
+ return false;
23
+ for (let i = 0; i < segs.length; i++) {
24
+ const s = segs[i];
25
+ if (s === '*')
26
+ continue;
27
+ if (String(p[i]) !== s)
28
+ return false;
29
+ }
30
+ return true;
31
+ };
32
+ }
33
+ function redactNode(node, path, matchers, replacement) {
34
+ if (Array.isArray(node)) {
35
+ let changed = false;
36
+ const out = new Array(node.length);
37
+ for (let i = 0; i < node.length; i++) {
38
+ const cp = [...path, i];
39
+ if (matchers.some((m) => m(cp))) {
40
+ out[i] = replacement;
41
+ changed = true;
42
+ }
43
+ else {
44
+ const r = redactNode(node[i], cp, matchers, replacement);
45
+ out[i] = r;
46
+ if (r !== node[i])
47
+ changed = true;
48
+ }
49
+ }
50
+ return changed ? out : node;
51
+ }
52
+ if (node !== null && typeof node === 'object') {
53
+ let changed = false;
54
+ const out = {};
55
+ for (const k of Object.keys(node)) {
56
+ const cp = [...path, k];
57
+ const v = node[k];
58
+ if (matchers.some((m) => m(cp))) {
59
+ out[k] = replacement;
60
+ changed = true;
61
+ }
62
+ else {
63
+ const r = redactNode(v, cp, matchers, replacement);
64
+ out[k] = r;
65
+ if (r !== v)
66
+ changed = true;
67
+ }
68
+ }
69
+ return changed ? out : node;
70
+ }
71
+ return node;
72
+ }
73
+ /**
74
+ * Create a processor that redacts sensitive data before formatting. It walks
75
+ * `context`, `metadata` and each element of `args`, replacing any value whose
76
+ * path matches one of `keys` with `replacement` (default `"[REDACTED]"`).
77
+ *
78
+ * Matching is **structural** — the original objects are never mutated; only the
79
+ * branches that actually contain a match are cloned. When nothing matches the
80
+ * entry is returned unchanged (same reference), so the common "no secret" case
81
+ * adds no allocation.
82
+ *
83
+ * @example
84
+ * createRedactProcessor(['password']) // any `password` at any depth
85
+ * createRedactProcessor(['user.password']) // only `user.password`
86
+ * createRedactProcessor(['*.token', 'user.*']) // wildcards
87
+ */
88
+ /**
89
+ * Common secret / PII key names redacted by {@link createRedactProcessor} when
90
+ * no explicit key list is supplied. Covers passwords, tokens, API keys, auth
91
+ * headers, cookies, private keys and a few PII fields.
92
+ */
93
+ export const DEFAULT_SENSITIVE_KEYS = [
94
+ 'password',
95
+ 'passwd',
96
+ 'pwd',
97
+ 'secret',
98
+ 'token',
99
+ 'accessToken',
100
+ 'refreshToken',
101
+ 'apiKey',
102
+ 'api_key',
103
+ 'authorization',
104
+ 'auth',
105
+ 'cookie',
106
+ 'setCookie',
107
+ 'set-cookie',
108
+ 'privateKey',
109
+ 'private_key',
110
+ 'credentials',
111
+ 'credential',
112
+ 'sessionId',
113
+ 'session',
114
+ 'csrfToken',
115
+ 'csrf',
116
+ 'otp',
117
+ 'ssn',
118
+ 'x-api-key',
119
+ ];
120
+ export function createRedactProcessor(keys = DEFAULT_SENSITIVE_KEYS, replacement = '[REDACTED]') {
121
+ if (keys.length === 0)
122
+ return identityProcessor;
123
+ const matchers = keys.map(compileMatcher);
124
+ return (entry) => {
125
+ const context = redactNode(entry.context, [], matchers, replacement);
126
+ const metadata = redactNode(entry.metadata, [], matchers, replacement);
127
+ let argsChanged = false;
128
+ const args = entry.args.map((a) => {
129
+ const r = redactNode(a, [], matchers, replacement);
130
+ if (r !== a)
131
+ argsChanged = true;
132
+ return r;
133
+ });
134
+ if (context === entry.context && metadata === entry.metadata && !argsChanged) {
135
+ return entry;
136
+ }
137
+ return { ...entry, context, metadata, args: argsChanged ? args : entry.args };
138
+ };
139
+ }
140
+ function serializeNode(node, serializers, entry) {
141
+ if (Array.isArray(node)) {
142
+ let changed = false;
143
+ const out = new Array(node.length);
144
+ for (let i = 0; i < node.length; i++) {
145
+ const r = serializeNode(node[i], serializers, entry);
146
+ out[i] = r;
147
+ if (r !== node[i])
148
+ changed = true;
149
+ }
150
+ return changed ? out : node;
151
+ }
152
+ if (node !== null && typeof node === 'object') {
153
+ let changed = false;
154
+ const out = {};
155
+ for (const k of Object.keys(node)) {
156
+ const v = node[k];
157
+ if (serializers[k]) {
158
+ out[k] = serializers[k](v, entry);
159
+ changed = true;
160
+ }
161
+ else {
162
+ const r = serializeNode(v, serializers, entry);
163
+ out[k] = r;
164
+ if (r !== v)
165
+ changed = true;
166
+ }
167
+ }
168
+ return changed ? out : node;
169
+ }
170
+ return node;
171
+ }
172
+ /**
173
+ * Create a processor that normalizes values by key name before formatting. For
174
+ * every property named `key` found in `context`, `metadata`, each element of
175
+ * `args` (and the entry's `error`), the matching serializer replaces the value.
176
+ * Matching is by property name at **any depth** (e.g. a `req` serializer runs on
177
+ * any object that has a `req` property).
178
+ *
179
+ * Transformation is **structural** — only the branches that contain a matching
180
+ * key are cloned; when no serializer fires the entry is returned unchanged (same
181
+ * reference), so the common "no serializer matched" case adds no allocation.
182
+ *
183
+ * @example
184
+ * createSerializeProcessor({
185
+ * err: (e) => ({ name: e.name, message: e.message, stack: e.stack }),
186
+ * user: (u) => ({ id: u.id }), // drop the rest of the user object
187
+ * })
188
+ */
189
+ export function createSerializeProcessor(serializers) {
190
+ if (!serializers || Object.keys(serializers).length === 0)
191
+ return identityProcessor;
192
+ return (entry) => {
193
+ const context = serializeNode(entry.context, serializers, entry);
194
+ const metadata = serializeNode(entry.metadata, serializers, entry);
195
+ let argsChanged = false;
196
+ const args = entry.args.map((a) => {
197
+ const r = serializeNode(a, serializers, entry);
198
+ if (r !== a)
199
+ argsChanged = true;
200
+ return r;
201
+ });
202
+ let error = entry.error;
203
+ let errorChanged = false;
204
+ if (error !== undefined && serializers['error']) {
205
+ const r = serializers['error'](error, entry);
206
+ if (r !== error) {
207
+ error = r;
208
+ errorChanged = true;
209
+ }
210
+ }
211
+ if (context === entry.context && metadata === entry.metadata && !argsChanged && !errorChanged) {
212
+ return entry;
213
+ }
214
+ return {
215
+ ...entry,
216
+ context,
217
+ metadata,
218
+ args: argsChanged ? args : entry.args,
219
+ ...(errorChanged ? { error } : {}),
220
+ };
221
+ };
222
+ }
223
+ function serializeErrorValue(v) {
224
+ return v instanceof Error ? { name: v.name, message: v.message, stack: v.stack } : v;
225
+ }
226
+ function serializeBufferValue(v) {
227
+ if (typeof Buffer !== 'undefined' && Buffer.isBuffer(v))
228
+ return `Buffer(${v.length})`;
229
+ if (v instanceof ArrayBuffer)
230
+ return `ArrayBuffer(${v.byteLength})`;
231
+ if (ArrayBuffer.isView(v)) {
232
+ return `${v.constructor.name}(${v.byteLength})`;
233
+ }
234
+ return v;
235
+ }
236
+ function serializeUrlValue(v) {
237
+ return v instanceof URL ? v.href : v;
238
+ }
239
+ function serializeDateValue(v) {
240
+ return v instanceof Date ? v.toISOString() : v;
241
+ }
242
+ function serializeRequestValue(v) {
243
+ if (!v || typeof v !== 'object')
244
+ return v;
245
+ const r = v;
246
+ if (!('method' in r) && !('url' in r))
247
+ return v;
248
+ return { method: r.method, url: r.url, headers: r.headers };
249
+ }
250
+ function serializeResponseValue(v) {
251
+ if (!v || typeof v !== 'object')
252
+ return v;
253
+ const r = v;
254
+ if (!('status' in r) && !('statusCode' in r))
255
+ return v;
256
+ return { status: r.status ?? r.statusCode, headers: r.headers };
257
+ }
258
+ /**
259
+ * A preset of common {@link Serializer}s keyed by the property names they match
260
+ * (`error`, `date`, `buffer`, `url`, `req`, `res`). Spread it into your own
261
+ * serializer map to get safe, compact representations of these types out of the
262
+ * box, e.g. `createSerializeProcessor({ ...createDefaultSerializers(), user })`.
263
+ *
264
+ * Matching is by property name at any depth (see {@link createSerializeProcessor}),
265
+ * so any object with a `req`/`res`/`url`/`error` property is normalized.
266
+ */
267
+ export function createDefaultSerializers() {
268
+ return {
269
+ error: serializeErrorValue,
270
+ date: serializeDateValue,
271
+ buffer: serializeBufferValue,
272
+ url: serializeUrlValue,
273
+ req: serializeRequestValue,
274
+ res: serializeResponseValue,
275
+ };
276
+ }
277
+ //# sourceMappingURL=processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../src/pipeline/processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { LogLevelName } from '../types.js';
2
+ import type { Filter } from './filter.js';
3
+ export interface SamplingOptions {
4
+ /**
5
+ * Probability (0..1) that a sampled-level entry is kept. `1` (default) keeps
6
+ * everything; `0` drops all sampled-level entries. Applied before rate
7
+ * limiting. Sampling is intentionally lossy — only enable it for high-volume,
8
+ * low-value levels (e.g. `debug`/`info`).
9
+ */
10
+ rate?: number;
11
+ /**
12
+ * Restrict sampling to these level names. Entries of other levels always pass
13
+ * through untouched. Omit to sample every level.
14
+ */
15
+ levels?: LogLevelName[];
16
+ /**
17
+ * Maximum entries kept per second (token-bucket refill rate). When set, bursts
18
+ * up to `burst` are allowed, then entries are dropped until tokens refill.
19
+ * Off when unset. Combined with `rate` via logical AND.
20
+ */
21
+ maxPerSecond?: number;
22
+ /** Burst capacity for `maxPerSecond`; defaults to `maxPerSecond`. */
23
+ burst?: number;
24
+ }
25
+ /**
26
+ * Build a {@link Filter} that drops log entries to reduce volume. Two orthogonal
27
+ * strategies are supported and combined with a logical AND:
28
+ *
29
+ * - **probabilistic** (`rate`): keep each entry with probability `rate`;
30
+ * - **rate limiting** (`maxPerSecond` + `burst`): a token bucket caps throughput
31
+ * per second, tolerating short bursts.
32
+ *
33
+ * Entries outside `levels` are always kept. Because this is a filter, sampled
34
+ * entries never reach processors, formatters or transports — so sampling is also
35
+ * the cheapest way to cut cost under load.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * logger.getPipeline().addFilter(
40
+ * createSampler({ levels: ['debug', 'info'], maxPerSecond: 100, burst: 200 }),
41
+ * );
42
+ * ```
43
+ */
44
+ export declare function createSampler(options?: SamplingOptions): Filter;
45
+ //# sourceMappingURL=sampler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.d.ts","sourceRoot":"","sources":["../../../src/pipeline/sampler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAuCnE"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Build a {@link Filter} that drops log entries to reduce volume. Two orthogonal
3
+ * strategies are supported and combined with a logical AND:
4
+ *
5
+ * - **probabilistic** (`rate`): keep each entry with probability `rate`;
6
+ * - **rate limiting** (`maxPerSecond` + `burst`): a token bucket caps throughput
7
+ * per second, tolerating short bursts.
8
+ *
9
+ * Entries outside `levels` are always kept. Because this is a filter, sampled
10
+ * entries never reach processors, formatters or transports — so sampling is also
11
+ * the cheapest way to cut cost under load.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * logger.getPipeline().addFilter(
16
+ * createSampler({ levels: ['debug', 'info'], maxPerSecond: 100, burst: 200 }),
17
+ * );
18
+ * ```
19
+ */
20
+ export function createSampler(options = {}) {
21
+ const rate = options.rate ?? 1;
22
+ const levelSet = options.levels ? new Set(options.levels) : undefined;
23
+ const maxPerSecond = options.maxPerSecond;
24
+ const capacity = maxPerSecond !== undefined ? (options.burst ?? maxPerSecond) : 0;
25
+ // Token-bucket state for rate limiting; lazily initialized on first use.
26
+ let tokens = capacity;
27
+ let lastRefill = 0;
28
+ return (entry) => {
29
+ // Levels not opted into sampling always pass through.
30
+ if (levelSet && !levelSet.has(entry.levelName))
31
+ return true;
32
+ // Probabilistic sampling.
33
+ if (rate < 1 && Math.random() >= rate)
34
+ return false;
35
+ // Rate limiting (token bucket keyed on the entry's ms timestamp).
36
+ if (maxPerSecond !== undefined) {
37
+ const now = entry.timestamp;
38
+ if (lastRefill === 0) {
39
+ lastRefill = now;
40
+ tokens = capacity;
41
+ }
42
+ else {
43
+ const elapsed = now - lastRefill;
44
+ if (elapsed > 0) {
45
+ tokens = Math.min(capacity, tokens + (elapsed * maxPerSecond) / 1000);
46
+ lastRefill = now;
47
+ }
48
+ }
49
+ if (tokens >= 1) {
50
+ tokens -= 1;
51
+ }
52
+ else {
53
+ return false;
54
+ }
55
+ }
56
+ return true;
57
+ };
58
+ }
59
+ //# sourceMappingURL=sampler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.js","sourceRoot":"","sources":["../../../src/pipeline/sampler.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,UAA2B,EAAE;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,MAAM,QAAQ,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,yEAAyE;IACzE,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,CAAC,KAAe,EAAW,EAAE;QAClC,sDAAsD;QACtD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5D,0BAA0B;QAC1B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAEpD,kEAAkE;QAClE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;YAC5B,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,UAAU,GAAG,GAAG,CAAC;gBACjB,MAAM,GAAG,QAAQ,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,GAAG,GAAG,UAAU,CAAC;gBACjC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;oBACtE,UAAU,GAAG,GAAG,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './plugin.js';
2
+ export * from './manager.js';
3
+ export * from './otel-trace.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './plugin.js';
2
+ export * from './manager.js';
3
+ export * from './otel-trace.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { LogEntry } from '../types.js';
2
+ import type { Transport } from '../transport/transport.js';
3
+ import type { Plugin, PluginContext } from './plugin.js';
4
+ /**
5
+ * Manages plugin registration and lifecycle. The logger delegates entry
6
+ * interception and transport registration to this manager.
7
+ */
8
+ export declare class PluginManager {
9
+ private plugins;
10
+ private host;
11
+ /** Count of plugins with an `onEntry` hook; gates the async intercept path. */
12
+ private entryInterceptors;
13
+ /**
14
+ * Error sink for a plugin's `onEntry` hook. A throwing hook must never drop
15
+ * the entry silently or crash logging; the error is reported and the entry
16
+ * proceeds unchanged.
17
+ */
18
+ onError?: (pluginName: string, err: unknown, entry: LogEntry) => void;
19
+ constructor(host: PluginContext);
20
+ register(plugin: Plugin): Promise<void>;
21
+ /** Unregister a plugin by name. Its `onDestroy` hook (if any) is invoked. */
22
+ unregister(name: string): void;
23
+ has(name: string): boolean;
24
+ /** True when at least one plugin can intercept entries via `onEntry`. */
25
+ hasEntryInterceptors(): boolean;
26
+ /**
27
+ * Notify plugins that a transport was added (so `onTransport` hooks run).
28
+ * Called by the logger's `addTransport`.
29
+ */
30
+ notifyTransport(transport: Transport): void;
31
+ /**
32
+ * Run every plugin's `onEntry` hook in registration order. A plugin may
33
+ * return `null` to drop the entry, or a modified entry to pass downstream.
34
+ */
35
+ intercept(entry: LogEntry): Promise<LogEntry | null>;
36
+ destroy(): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/plugin/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,IAAI,CAAgB;IAC5B,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB,CAAK;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;gBAE1D,IAAI,EAAE,aAAa;IAIzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,6EAA6E;IAC7E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,yEAAyE;IACzE,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAM3C;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}