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.
- package/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/cjs/context/async-context.browser.d.ts +16 -0
- package/dist/cjs/context/async-context.browser.d.ts.map +1 -0
- package/dist/cjs/context/async-context.browser.js +29 -0
- package/dist/cjs/context/async-context.browser.js.map +1 -0
- package/dist/cjs/context/async-context.d.ts +10 -0
- package/dist/cjs/context/async-context.d.ts.map +1 -0
- package/dist/cjs/context/async-context.js +37 -0
- package/dist/cjs/context/async-context.js.map +1 -0
- package/dist/cjs/context/context.d.ts +33 -0
- package/dist/cjs/context/context.d.ts.map +1 -0
- package/dist/cjs/context/context.js +57 -0
- package/dist/cjs/context/context.js.map +1 -0
- package/dist/cjs/context/index.d.ts +3 -0
- package/dist/cjs/context/index.d.ts.map +1 -0
- package/dist/cjs/context/index.js +19 -0
- package/dist/cjs/context/index.js.map +1 -0
- package/dist/cjs/core/entry.d.ts +30 -0
- package/dist/cjs/core/entry.d.ts.map +1 -0
- package/dist/cjs/core/entry.js +37 -0
- package/dist/cjs/core/entry.js.map +1 -0
- package/dist/cjs/core/index.d.ts +7 -0
- package/dist/cjs/core/index.d.ts.map +1 -0
- package/dist/cjs/core/index.js +24 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/core/level.d.ts +12 -0
- package/dist/cjs/core/level.d.ts.map +1 -0
- package/dist/cjs/core/level.js +31 -0
- package/dist/cjs/core/level.js.map +1 -0
- package/dist/cjs/core/logger.d.ts +271 -0
- package/dist/cjs/core/logger.d.ts.map +1 -0
- package/dist/cjs/core/logger.js +751 -0
- package/dist/cjs/core/logger.js.map +1 -0
- package/dist/cjs/core/printf.d.ts +34 -0
- package/dist/cjs/core/printf.d.ts.map +1 -0
- package/dist/cjs/core/printf.js +133 -0
- package/dist/cjs/core/printf.js.map +1 -0
- package/dist/cjs/index.d.ts +40 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +56 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/pipeline/filter.d.ts +10 -0
- package/dist/cjs/pipeline/filter.d.ts.map +1 -0
- package/dist/cjs/pipeline/filter.js +16 -0
- package/dist/cjs/pipeline/filter.js.map +1 -0
- package/dist/cjs/pipeline/formatter.d.ts +19 -0
- package/dist/cjs/pipeline/formatter.d.ts.map +1 -0
- package/dist/cjs/pipeline/formatter.js +183 -0
- package/dist/cjs/pipeline/formatter.js.map +1 -0
- package/dist/cjs/pipeline/index.d.ts +6 -0
- package/dist/cjs/pipeline/index.d.ts.map +1 -0
- package/dist/cjs/pipeline/index.js +22 -0
- package/dist/cjs/pipeline/index.js.map +1 -0
- package/dist/cjs/pipeline/pipeline.d.ts +45 -0
- package/dist/cjs/pipeline/pipeline.d.ts.map +1 -0
- package/dist/cjs/pipeline/pipeline.js +80 -0
- package/dist/cjs/pipeline/pipeline.js.map +1 -0
- package/dist/cjs/pipeline/processor.d.ts +67 -0
- package/dist/cjs/pipeline/processor.d.ts.map +1 -0
- package/dist/cjs/pipeline/processor.js +284 -0
- package/dist/cjs/pipeline/processor.js.map +1 -0
- package/dist/cjs/pipeline/sampler.d.ts +45 -0
- package/dist/cjs/pipeline/sampler.d.ts.map +1 -0
- package/dist/cjs/pipeline/sampler.js +62 -0
- package/dist/cjs/pipeline/sampler.js.map +1 -0
- package/dist/cjs/plugin/index.d.ts +4 -0
- package/dist/cjs/plugin/index.d.ts.map +1 -0
- package/dist/cjs/plugin/index.js +20 -0
- package/dist/cjs/plugin/index.js.map +1 -0
- package/dist/cjs/plugin/manager.d.ts +38 -0
- package/dist/cjs/plugin/manager.d.ts.map +1 -0
- package/dist/cjs/plugin/manager.js +79 -0
- package/dist/cjs/plugin/manager.js.map +1 -0
- package/dist/cjs/plugin/otel-trace.d.ts +19 -0
- package/dist/cjs/plugin/otel-trace.d.ts.map +1 -0
- package/dist/cjs/plugin/otel-trace.js +91 -0
- package/dist/cjs/plugin/otel-trace.js.map +1 -0
- package/dist/cjs/plugin/plugin.d.ts +41 -0
- package/dist/cjs/plugin/plugin.d.ts.map +1 -0
- package/dist/cjs/plugin/plugin.js +3 -0
- package/dist/cjs/plugin/plugin.js.map +1 -0
- package/dist/cjs/runtime/adapter.d.ts +81 -0
- package/dist/cjs/runtime/adapter.d.ts.map +1 -0
- package/dist/cjs/runtime/adapter.js +3 -0
- package/dist/cjs/runtime/adapter.js.map +1 -0
- package/dist/cjs/runtime/defaults.d.ts +27 -0
- package/dist/cjs/runtime/defaults.d.ts.map +1 -0
- package/dist/cjs/runtime/defaults.js +30 -0
- package/dist/cjs/runtime/defaults.js.map +1 -0
- package/dist/cjs/runtime/electron-binding.browser.d.ts +10 -0
- package/dist/cjs/runtime/electron-binding.browser.d.ts.map +1 -0
- package/dist/cjs/runtime/electron-binding.browser.js +18 -0
- package/dist/cjs/runtime/electron-binding.browser.js.map +1 -0
- package/dist/cjs/runtime/electron-binding.d.ts +24 -0
- package/dist/cjs/runtime/electron-binding.d.ts.map +1 -0
- package/dist/cjs/runtime/electron-binding.js +49 -0
- package/dist/cjs/runtime/electron-binding.js.map +1 -0
- package/dist/cjs/runtime/electron-lifecycle.d.ts +17 -0
- package/dist/cjs/runtime/electron-lifecycle.d.ts.map +1 -0
- package/dist/cjs/runtime/electron-lifecycle.js +47 -0
- package/dist/cjs/runtime/electron-lifecycle.js.map +1 -0
- package/dist/cjs/runtime/electron-main.d.ts +24 -0
- package/dist/cjs/runtime/electron-main.d.ts.map +1 -0
- package/dist/cjs/runtime/electron-main.js +102 -0
- package/dist/cjs/runtime/electron-main.js.map +1 -0
- package/dist/cjs/runtime/electron-renderer.d.ts +26 -0
- package/dist/cjs/runtime/electron-renderer.d.ts.map +1 -0
- package/dist/cjs/runtime/electron-renderer.js +33 -0
- package/dist/cjs/runtime/electron-renderer.js.map +1 -0
- package/dist/cjs/runtime/electron.d.ts +20 -0
- package/dist/cjs/runtime/electron.d.ts.map +1 -0
- package/dist/cjs/runtime/electron.js +27 -0
- package/dist/cjs/runtime/electron.js.map +1 -0
- package/dist/cjs/runtime/index.d.ts +21 -0
- package/dist/cjs/runtime/index.d.ts.map +1 -0
- package/dist/cjs/runtime/index.js +41 -0
- package/dist/cjs/runtime/index.js.map +1 -0
- package/dist/cjs/runtime/node.d.ts +27 -0
- package/dist/cjs/runtime/node.d.ts.map +1 -0
- package/dist/cjs/runtime/node.js +126 -0
- package/dist/cjs/runtime/node.js.map +1 -0
- package/dist/cjs/runtime/process-lifecycle.d.ts +13 -0
- package/dist/cjs/runtime/process-lifecycle.d.ts.map +1 -0
- package/dist/cjs/runtime/process-lifecycle.js +80 -0
- package/dist/cjs/runtime/process-lifecycle.js.map +1 -0
- package/dist/cjs/runtime/web-lifecycle.d.ts +13 -0
- package/dist/cjs/runtime/web-lifecycle.d.ts.map +1 -0
- package/dist/cjs/runtime/web-lifecycle.js +39 -0
- package/dist/cjs/runtime/web-lifecycle.js.map +1 -0
- package/dist/cjs/runtime/web.d.ts +14 -0
- package/dist/cjs/runtime/web.d.ts.map +1 -0
- package/dist/cjs/runtime/web.js +61 -0
- package/dist/cjs/runtime/web.js.map +1 -0
- package/dist/cjs/shims/index.browser.d.ts +26 -0
- package/dist/cjs/shims/index.browser.d.ts.map +1 -0
- package/dist/cjs/shims/index.browser.js +67 -0
- package/dist/cjs/shims/index.browser.js.map +1 -0
- package/dist/cjs/shims/index.d.ts +15 -0
- package/dist/cjs/shims/index.d.ts.map +1 -0
- package/dist/cjs/shims/index.js +39 -0
- package/dist/cjs/shims/index.js.map +1 -0
- package/dist/cjs/transport/cluster-ipc.d.ts +36 -0
- package/dist/cjs/transport/cluster-ipc.d.ts.map +1 -0
- package/dist/cjs/transport/cluster-ipc.js +76 -0
- package/dist/cjs/transport/cluster-ipc.js.map +1 -0
- package/dist/cjs/transport/console.d.ts +28 -0
- package/dist/cjs/transport/console.d.ts.map +1 -0
- package/dist/cjs/transport/console.js +48 -0
- package/dist/cjs/transport/console.js.map +1 -0
- package/dist/cjs/transport/electron-ipc.d.ts +69 -0
- package/dist/cjs/transport/electron-ipc.d.ts.map +1 -0
- package/dist/cjs/transport/electron-ipc.js +153 -0
- package/dist/cjs/transport/electron-ipc.js.map +1 -0
- package/dist/cjs/transport/file.d.ts +190 -0
- package/dist/cjs/transport/file.d.ts.map +1 -0
- package/dist/cjs/transport/file.js +666 -0
- package/dist/cjs/transport/file.js.map +1 -0
- package/dist/cjs/transport/index.d.ts +9 -0
- package/dist/cjs/transport/index.d.ts.map +1 -0
- package/dist/cjs/transport/index.js +25 -0
- package/dist/cjs/transport/index.js.map +1 -0
- package/dist/cjs/transport/live.d.ts +72 -0
- package/dist/cjs/transport/live.d.ts.map +1 -0
- package/dist/cjs/transport/live.js +104 -0
- package/dist/cjs/transport/live.js.map +1 -0
- package/dist/cjs/transport/otlp.d.ts +97 -0
- package/dist/cjs/transport/otlp.d.ts.map +1 -0
- package/dist/cjs/transport/otlp.js +194 -0
- package/dist/cjs/transport/otlp.js.map +1 -0
- package/dist/cjs/transport/rotating-file.d.ts +67 -0
- package/dist/cjs/transport/rotating-file.d.ts.map +1 -0
- package/dist/cjs/transport/rotating-file.js +179 -0
- package/dist/cjs/transport/rotating-file.js.map +1 -0
- package/dist/cjs/transport/transport.d.ts +35 -0
- package/dist/cjs/transport/transport.d.ts.map +1 -0
- package/dist/cjs/transport/transport.js +3 -0
- package/dist/cjs/transport/transport.js.map +1 -0
- package/dist/cjs/transport/worker-ipc.d.ts +43 -0
- package/dist/cjs/transport/worker-ipc.d.ts.map +1 -0
- package/dist/cjs/transport/worker-ipc.js +106 -0
- package/dist/cjs/transport/worker-ipc.js.map +1 -0
- package/dist/cjs/types.d.ts +72 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +45 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/context/async-context.browser.d.ts +16 -0
- package/dist/esm/context/async-context.browser.d.ts.map +1 -0
- package/dist/esm/context/async-context.browser.js +25 -0
- package/dist/esm/context/async-context.browser.js.map +1 -0
- package/dist/esm/context/async-context.d.ts +10 -0
- package/dist/esm/context/async-context.d.ts.map +1 -0
- package/dist/esm/context/async-context.js +33 -0
- package/dist/esm/context/async-context.js.map +1 -0
- package/dist/esm/context/context.d.ts +33 -0
- package/dist/esm/context/context.d.ts.map +1 -0
- package/dist/esm/context/context.js +52 -0
- package/dist/esm/context/context.js.map +1 -0
- package/dist/esm/context/index.d.ts +3 -0
- package/dist/esm/context/index.d.ts.map +1 -0
- package/dist/esm/context/index.js +3 -0
- package/dist/esm/context/index.js.map +1 -0
- package/dist/esm/core/entry.d.ts +30 -0
- package/dist/esm/core/entry.d.ts.map +1 -0
- package/dist/esm/core/entry.js +34 -0
- package/dist/esm/core/entry.js.map +1 -0
- package/dist/esm/core/index.d.ts +7 -0
- package/dist/esm/core/index.d.ts.map +1 -0
- package/dist/esm/core/index.js +6 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/level.d.ts +12 -0
- package/dist/esm/core/level.d.ts.map +1 -0
- package/dist/esm/core/level.js +25 -0
- package/dist/esm/core/level.js.map +1 -0
- package/dist/esm/core/logger.d.ts +271 -0
- package/dist/esm/core/logger.d.ts.map +1 -0
- package/dist/esm/core/logger.js +747 -0
- package/dist/esm/core/logger.js.map +1 -0
- package/dist/esm/core/printf.d.ts +34 -0
- package/dist/esm/core/printf.d.ts.map +1 -0
- package/dist/esm/core/printf.js +129 -0
- package/dist/esm/core/printf.js.map +1 -0
- package/dist/esm/index.d.ts +40 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +38 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/pipeline/filter.d.ts +10 -0
- package/dist/esm/pipeline/filter.d.ts.map +1 -0
- package/dist/esm/pipeline/filter.js +11 -0
- package/dist/esm/pipeline/filter.js.map +1 -0
- package/dist/esm/pipeline/formatter.d.ts +19 -0
- package/dist/esm/pipeline/formatter.d.ts.map +1 -0
- package/dist/esm/pipeline/formatter.js +179 -0
- package/dist/esm/pipeline/formatter.js.map +1 -0
- package/dist/esm/pipeline/index.d.ts +6 -0
- package/dist/esm/pipeline/index.d.ts.map +1 -0
- package/dist/esm/pipeline/index.js +6 -0
- package/dist/esm/pipeline/index.js.map +1 -0
- package/dist/esm/pipeline/pipeline.d.ts +45 -0
- package/dist/esm/pipeline/pipeline.d.ts.map +1 -0
- package/dist/esm/pipeline/pipeline.js +76 -0
- package/dist/esm/pipeline/pipeline.js.map +1 -0
- package/dist/esm/pipeline/processor.d.ts +67 -0
- package/dist/esm/pipeline/processor.d.ts.map +1 -0
- package/dist/esm/pipeline/processor.js +277 -0
- package/dist/esm/pipeline/processor.js.map +1 -0
- package/dist/esm/pipeline/sampler.d.ts +45 -0
- package/dist/esm/pipeline/sampler.d.ts.map +1 -0
- package/dist/esm/pipeline/sampler.js +59 -0
- package/dist/esm/pipeline/sampler.js.map +1 -0
- package/dist/esm/plugin/index.d.ts +4 -0
- package/dist/esm/plugin/index.d.ts.map +1 -0
- package/dist/esm/plugin/index.js +4 -0
- package/dist/esm/plugin/index.js.map +1 -0
- package/dist/esm/plugin/manager.d.ts +38 -0
- package/dist/esm/plugin/manager.d.ts.map +1 -0
- package/dist/esm/plugin/manager.js +75 -0
- package/dist/esm/plugin/manager.js.map +1 -0
- package/dist/esm/plugin/otel-trace.d.ts +19 -0
- package/dist/esm/plugin/otel-trace.d.ts.map +1 -0
- package/dist/esm/plugin/otel-trace.js +55 -0
- package/dist/esm/plugin/otel-trace.js.map +1 -0
- package/dist/esm/plugin/plugin.d.ts +41 -0
- package/dist/esm/plugin/plugin.d.ts.map +1 -0
- package/dist/esm/plugin/plugin.js +2 -0
- package/dist/esm/plugin/plugin.js.map +1 -0
- package/dist/esm/runtime/adapter.d.ts +81 -0
- package/dist/esm/runtime/adapter.d.ts.map +1 -0
- package/dist/esm/runtime/adapter.js +2 -0
- package/dist/esm/runtime/adapter.js.map +1 -0
- package/dist/esm/runtime/defaults.d.ts +27 -0
- package/dist/esm/runtime/defaults.d.ts.map +1 -0
- package/dist/esm/runtime/defaults.js +27 -0
- package/dist/esm/runtime/defaults.js.map +1 -0
- package/dist/esm/runtime/electron-binding.browser.d.ts +10 -0
- package/dist/esm/runtime/electron-binding.browser.d.ts.map +1 -0
- package/dist/esm/runtime/electron-binding.browser.js +13 -0
- package/dist/esm/runtime/electron-binding.browser.js.map +1 -0
- package/dist/esm/runtime/electron-binding.d.ts +24 -0
- package/dist/esm/runtime/electron-binding.d.ts.map +1 -0
- package/dist/esm/runtime/electron-binding.js +44 -0
- package/dist/esm/runtime/electron-binding.js.map +1 -0
- package/dist/esm/runtime/electron-lifecycle.d.ts +17 -0
- package/dist/esm/runtime/electron-lifecycle.d.ts.map +1 -0
- package/dist/esm/runtime/electron-lifecycle.js +44 -0
- package/dist/esm/runtime/electron-lifecycle.js.map +1 -0
- package/dist/esm/runtime/electron-main.d.ts +24 -0
- package/dist/esm/runtime/electron-main.d.ts.map +1 -0
- package/dist/esm/runtime/electron-main.js +99 -0
- package/dist/esm/runtime/electron-main.js.map +1 -0
- package/dist/esm/runtime/electron-renderer.d.ts +26 -0
- package/dist/esm/runtime/electron-renderer.d.ts.map +1 -0
- package/dist/esm/runtime/electron-renderer.js +30 -0
- package/dist/esm/runtime/electron-renderer.js.map +1 -0
- package/dist/esm/runtime/electron.d.ts +20 -0
- package/dist/esm/runtime/electron.d.ts.map +1 -0
- package/dist/esm/runtime/electron.js +21 -0
- package/dist/esm/runtime/electron.js.map +1 -0
- package/dist/esm/runtime/index.d.ts +21 -0
- package/dist/esm/runtime/index.d.ts.map +1 -0
- package/dist/esm/runtime/index.js +29 -0
- package/dist/esm/runtime/index.js.map +1 -0
- package/dist/esm/runtime/node.d.ts +27 -0
- package/dist/esm/runtime/node.d.ts.map +1 -0
- package/dist/esm/runtime/node.js +123 -0
- package/dist/esm/runtime/node.js.map +1 -0
- package/dist/esm/runtime/process-lifecycle.d.ts +13 -0
- package/dist/esm/runtime/process-lifecycle.d.ts.map +1 -0
- package/dist/esm/runtime/process-lifecycle.js +77 -0
- package/dist/esm/runtime/process-lifecycle.js.map +1 -0
- package/dist/esm/runtime/web-lifecycle.d.ts +13 -0
- package/dist/esm/runtime/web-lifecycle.d.ts.map +1 -0
- package/dist/esm/runtime/web-lifecycle.js +36 -0
- package/dist/esm/runtime/web-lifecycle.js.map +1 -0
- package/dist/esm/runtime/web.d.ts +14 -0
- package/dist/esm/runtime/web.d.ts.map +1 -0
- package/dist/esm/runtime/web.js +58 -0
- package/dist/esm/runtime/web.js.map +1 -0
- package/dist/esm/shims/index.browser.d.ts +26 -0
- package/dist/esm/shims/index.browser.d.ts.map +1 -0
- package/dist/esm/shims/index.browser.js +54 -0
- package/dist/esm/shims/index.browser.js.map +1 -0
- package/dist/esm/shims/index.d.ts +15 -0
- package/dist/esm/shims/index.d.ts.map +1 -0
- package/dist/esm/shims/index.js +22 -0
- package/dist/esm/shims/index.js.map +1 -0
- package/dist/esm/transport/cluster-ipc.d.ts +36 -0
- package/dist/esm/transport/cluster-ipc.d.ts.map +1 -0
- package/dist/esm/transport/cluster-ipc.js +71 -0
- package/dist/esm/transport/cluster-ipc.js.map +1 -0
- package/dist/esm/transport/console.d.ts +28 -0
- package/dist/esm/transport/console.d.ts.map +1 -0
- package/dist/esm/transport/console.js +44 -0
- package/dist/esm/transport/console.js.map +1 -0
- package/dist/esm/transport/electron-ipc.d.ts +69 -0
- package/dist/esm/transport/electron-ipc.d.ts.map +1 -0
- package/dist/esm/transport/electron-ipc.js +146 -0
- package/dist/esm/transport/electron-ipc.js.map +1 -0
- package/dist/esm/transport/file.d.ts +190 -0
- package/dist/esm/transport/file.d.ts.map +1 -0
- package/dist/esm/transport/file.js +662 -0
- package/dist/esm/transport/file.js.map +1 -0
- package/dist/esm/transport/index.d.ts +9 -0
- package/dist/esm/transport/index.d.ts.map +1 -0
- package/dist/esm/transport/index.js +9 -0
- package/dist/esm/transport/index.js.map +1 -0
- package/dist/esm/transport/live.d.ts +72 -0
- package/dist/esm/transport/live.d.ts.map +1 -0
- package/dist/esm/transport/live.js +100 -0
- package/dist/esm/transport/live.js.map +1 -0
- package/dist/esm/transport/otlp.d.ts +97 -0
- package/dist/esm/transport/otlp.d.ts.map +1 -0
- package/dist/esm/transport/otlp.js +190 -0
- package/dist/esm/transport/otlp.js.map +1 -0
- package/dist/esm/transport/rotating-file.d.ts +67 -0
- package/dist/esm/transport/rotating-file.d.ts.map +1 -0
- package/dist/esm/transport/rotating-file.js +175 -0
- package/dist/esm/transport/rotating-file.js.map +1 -0
- package/dist/esm/transport/transport.d.ts +35 -0
- package/dist/esm/transport/transport.d.ts.map +1 -0
- package/dist/esm/transport/transport.js +2 -0
- package/dist/esm/transport/transport.js.map +1 -0
- package/dist/esm/transport/worker-ipc.d.ts +43 -0
- package/dist/esm/transport/worker-ipc.d.ts.map +1 -0
- package/dist/esm/transport/worker-ipc.js +101 -0
- package/dist/esm/transport/worker-ipc.js.map +1 -0
- package/dist/esm/types.d.ts +72 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +39 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +128 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/transport/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './transport.js';
|
|
2
|
+
export * from './console.js';
|
|
3
|
+
export * from './cluster-ipc.js';
|
|
4
|
+
export * from './electron-ipc.js';
|
|
5
|
+
export * from './file.js';
|
|
6
|
+
export * from './otlp.js';
|
|
7
|
+
export * from './live.js';
|
|
8
|
+
export * from './worker-ipc.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./transport.js"), exports);
|
|
18
|
+
__exportStar(require("./console.js"), exports);
|
|
19
|
+
__exportStar(require("./cluster-ipc.js"), exports);
|
|
20
|
+
__exportStar(require("./electron-ipc.js"), exports);
|
|
21
|
+
__exportStar(require("./file.js"), exports);
|
|
22
|
+
__exportStar(require("./otlp.js"), exports);
|
|
23
|
+
__exportStar(require("./live.js"), exports);
|
|
24
|
+
__exportStar(require("./worker-ipc.js"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,+CAA6B;AAC7B,mDAAiC;AACjC,oDAAkC;AAClC,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,kDAAgC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { LogEntry } from '../types.js';
|
|
2
|
+
import type { Formatter } from '../pipeline/formatter.js';
|
|
3
|
+
import type { Transport } from './transport.js';
|
|
4
|
+
/** A subscriber callback invoked for every entry the transport receives. */
|
|
5
|
+
export type LiveSubscriber = (entry: LogEntry) => void;
|
|
6
|
+
export interface LiveTransportOptions {
|
|
7
|
+
/** Transport name. */
|
|
8
|
+
name?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Optional per-transport formatter. The formatted string is computed lazily
|
|
11
|
+
* only when a subscriber actually requests it via {@link LiveTransport.onFormatted};
|
|
12
|
+
* plain {@link LiveTransport.subscribe} subscribers receive the raw entry.
|
|
13
|
+
*/
|
|
14
|
+
formatter?: Formatter;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of buffered entries kept for late subscribers (see
|
|
17
|
+
* {@link LiveTransport.replay}). `0` disables buffering. Defaults to `0`.
|
|
18
|
+
*/
|
|
19
|
+
bufferSize?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An in-memory, subscribable transport. Instead of writing to a file, console
|
|
23
|
+
* or the network, it forwards every entry to in-process subscribers — making it
|
|
24
|
+
* the building block for **live log streaming** (e.g. a debug panel, a webview
|
|
25
|
+
* log viewer, or a React/Vue hook that renders the stream).
|
|
26
|
+
*
|
|
27
|
+
* It is zero-dependency and works in every runtime (Web, Node, Electron). For
|
|
28
|
+
* cross-process streaming (Electron main → renderer/webview) pair it with the
|
|
29
|
+
* existing IPC channel, or use {@link BroadcastChannelTransport} for cross-tab
|
|
30
|
+
* Web streaming.
|
|
31
|
+
*
|
|
32
|
+
* Entries arrive already frozen (the immutability contract), so subscribers
|
|
33
|
+
* receive a read-only, zero-copy reference — never mutate them.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const live = new LiveTransport();
|
|
37
|
+
* logger.addTransport(live);
|
|
38
|
+
* const unsubscribe = live.subscribe((entry) => render(entry));
|
|
39
|
+
*/
|
|
40
|
+
export declare class LiveTransport implements Transport {
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly formatter?: Formatter;
|
|
43
|
+
private subscribers;
|
|
44
|
+
private buffer;
|
|
45
|
+
private readonly bufferSize;
|
|
46
|
+
constructor(options?: LiveTransportOptions);
|
|
47
|
+
write(entry: LogEntry, _formatted: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Subscribe to live entries. Returns an unsubscribe function. The callback
|
|
50
|
+
* receives the raw, frozen {@link LogEntry}.
|
|
51
|
+
*/
|
|
52
|
+
subscribe(cb: LiveSubscriber): () => void;
|
|
53
|
+
/**
|
|
54
|
+
* Subscribe to entries as pre-formatted strings (using the transport's
|
|
55
|
+
* formatter, or the default line formatter when none is set). Convenient for
|
|
56
|
+
* UIs that just want to append text lines.
|
|
57
|
+
*/
|
|
58
|
+
onFormatted(cb: (line: string, entry: LogEntry) => void): () => void;
|
|
59
|
+
/**
|
|
60
|
+
* Replay buffered entries to a new subscriber (most-recent-first when
|
|
61
|
+
* `newestFirst` is true). Only available when `bufferSize > 0`. Returns the
|
|
62
|
+
* number of entries replayed.
|
|
63
|
+
*/
|
|
64
|
+
replay(cb: LiveSubscriber, newestFirst?: boolean): number;
|
|
65
|
+
/** Number of active subscribers. */
|
|
66
|
+
get subscriberCount(): number;
|
|
67
|
+
/** Drop all buffered entries. */
|
|
68
|
+
clearBuffer(): void;
|
|
69
|
+
private pushBuffer;
|
|
70
|
+
close(): void;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/transport/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,4EAA4E;AAC5E,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAE/B,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE,oBAAyB;IAM9C,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBhD;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,IAAI;IAOzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAQpE;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,UAAQ,GAAG,MAAM;IAOvD,oCAAoC;IACpC,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,iCAAiC;IACjC,WAAW,IAAI,IAAI;IAInB,OAAO,CAAC,UAAU;IAQlB,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LiveTransport = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* An in-memory, subscribable transport. Instead of writing to a file, console
|
|
6
|
+
* or the network, it forwards every entry to in-process subscribers — making it
|
|
7
|
+
* the building block for **live log streaming** (e.g. a debug panel, a webview
|
|
8
|
+
* log viewer, or a React/Vue hook that renders the stream).
|
|
9
|
+
*
|
|
10
|
+
* It is zero-dependency and works in every runtime (Web, Node, Electron). For
|
|
11
|
+
* cross-process streaming (Electron main → renderer/webview) pair it with the
|
|
12
|
+
* existing IPC channel, or use {@link BroadcastChannelTransport} for cross-tab
|
|
13
|
+
* Web streaming.
|
|
14
|
+
*
|
|
15
|
+
* Entries arrive already frozen (the immutability contract), so subscribers
|
|
16
|
+
* receive a read-only, zero-copy reference — never mutate them.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const live = new LiveTransport();
|
|
20
|
+
* logger.addTransport(live);
|
|
21
|
+
* const unsubscribe = live.subscribe((entry) => render(entry));
|
|
22
|
+
*/
|
|
23
|
+
class LiveTransport {
|
|
24
|
+
constructor(options = {}) {
|
|
25
|
+
this.subscribers = new Set();
|
|
26
|
+
this.buffer = [];
|
|
27
|
+
this.name = options.name ?? 'live';
|
|
28
|
+
this.formatter = options.formatter;
|
|
29
|
+
this.bufferSize = options.bufferSize ?? 0;
|
|
30
|
+
}
|
|
31
|
+
write(entry, _formatted) {
|
|
32
|
+
if (this.subscribers.size === 0) {
|
|
33
|
+
this.pushBuffer(entry);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const sub of this.subscribers) {
|
|
37
|
+
try {
|
|
38
|
+
sub(entry);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
// A misbehaving subscriber must never break the logger's hot path.
|
|
42
|
+
console.error('[lograil] LiveTransport subscriber threw:', err);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
this.pushBuffer(entry);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Subscribe to live entries. Returns an unsubscribe function. The callback
|
|
49
|
+
* receives the raw, frozen {@link LogEntry}.
|
|
50
|
+
*/
|
|
51
|
+
subscribe(cb) {
|
|
52
|
+
this.subscribers.add(cb);
|
|
53
|
+
return () => {
|
|
54
|
+
this.subscribers.delete(cb);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Subscribe to entries as pre-formatted strings (using the transport's
|
|
59
|
+
* formatter, or the default line formatter when none is set). Convenient for
|
|
60
|
+
* UIs that just want to append text lines.
|
|
61
|
+
*/
|
|
62
|
+
onFormatted(cb) {
|
|
63
|
+
const format = this.formatter;
|
|
64
|
+
return this.subscribe((entry) => {
|
|
65
|
+
const line = format ? format(entry) : entry.message;
|
|
66
|
+
cb(line, entry);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Replay buffered entries to a new subscriber (most-recent-first when
|
|
71
|
+
* `newestFirst` is true). Only available when `bufferSize > 0`. Returns the
|
|
72
|
+
* number of entries replayed.
|
|
73
|
+
*/
|
|
74
|
+
replay(cb, newestFirst = false) {
|
|
75
|
+
if (this.buffer.length === 0)
|
|
76
|
+
return 0;
|
|
77
|
+
const entries = newestFirst ? [...this.buffer].reverse() : this.buffer;
|
|
78
|
+
for (const entry of entries)
|
|
79
|
+
cb(entry);
|
|
80
|
+
return entries.length;
|
|
81
|
+
}
|
|
82
|
+
/** Number of active subscribers. */
|
|
83
|
+
get subscriberCount() {
|
|
84
|
+
return this.subscribers.size;
|
|
85
|
+
}
|
|
86
|
+
/** Drop all buffered entries. */
|
|
87
|
+
clearBuffer() {
|
|
88
|
+
this.buffer = [];
|
|
89
|
+
}
|
|
90
|
+
pushBuffer(entry) {
|
|
91
|
+
if (this.bufferSize <= 0)
|
|
92
|
+
return;
|
|
93
|
+
this.buffer.push(entry);
|
|
94
|
+
if (this.buffer.length > this.bufferSize) {
|
|
95
|
+
this.buffer.splice(0, this.buffer.length - this.bufferSize);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
close() {
|
|
99
|
+
this.subscribers.clear();
|
|
100
|
+
this.buffer = [];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.LiveTransport = LiveTransport;
|
|
104
|
+
//# sourceMappingURL=live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/transport/live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { LogEntry } from '../types.js';
|
|
2
|
+
import type { Formatter } from '../pipeline/formatter.js';
|
|
3
|
+
import type { Transport } from './transport.js';
|
|
4
|
+
/** Configuration for {@link OtlpTransport}. */
|
|
5
|
+
export interface OtlpTransportOptions {
|
|
6
|
+
/**
|
|
7
|
+
* OTLP HTTP/JSON endpoint to `POST` batches to.
|
|
8
|
+
* @default `'http://localhost:4318/v1/logs'` (the OpenTelemetry Collector's
|
|
9
|
+
* default HTTP receiver).
|
|
10
|
+
*/
|
|
11
|
+
endpoint?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Extra HTTP headers sent with every request (e.g. `Authorization` for an
|
|
14
|
+
* OTLP gateway). `content-type: application/json` is always set for you.
|
|
15
|
+
*/
|
|
16
|
+
headers?: Record<string, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Resource attributes attached to every batch (e.g. `service.version`,
|
|
19
|
+
* `deployment.environment`). They are merged on top of `service.name`; values
|
|
20
|
+
* here win on key collision.
|
|
21
|
+
*/
|
|
22
|
+
resource?: Record<string, unknown>;
|
|
23
|
+
/**
|
|
24
|
+
* Value of the `service.name` resource attribute.
|
|
25
|
+
* @default `'lograil'`
|
|
26
|
+
*/
|
|
27
|
+
serviceName?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Scope name reported to OTLP (the instrumentation scope). Useful to
|
|
30
|
+
* distinguish this logger from other emitters in the same collector.
|
|
31
|
+
* @default `'lograil'`
|
|
32
|
+
*/
|
|
33
|
+
scopeName?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Optional per-transport formatter. When set it overrides the pipeline's
|
|
36
|
+
* default formatter for this transport only (unused by OTLP, which serializes
|
|
37
|
+
* the structured entry itself, but kept for interface parity).
|
|
38
|
+
*/
|
|
39
|
+
formatter?: Formatter;
|
|
40
|
+
/**
|
|
41
|
+
* Maximum number of entries buffered before an automatic (async) flush is
|
|
42
|
+
* triggered. `1` sends every entry immediately; higher values batch more.
|
|
43
|
+
* @default `100`
|
|
44
|
+
*/
|
|
45
|
+
batchSize?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Callback invoked when a request fails (network error or non-2xx response).
|
|
48
|
+
* Receives the raw error / `Error('OTLP HTTP <status> <statusText>')`.
|
|
49
|
+
* @default `console.error`
|
|
50
|
+
*/
|
|
51
|
+
onError?: (err: unknown) => void;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A {@link Transport} that forwards log entries to an OpenTelemetry Collector
|
|
55
|
+
* (or any OTLP HTTP/JSON receiver) via `POST /v1/logs`.
|
|
56
|
+
*
|
|
57
|
+
* Entries are buffered in memory and sent in batches; call {@link flush} (or
|
|
58
|
+
* enable `autoFlushOnExit` on the logger) to drain them before the process
|
|
59
|
+
* exits. It uses the global `fetch`, so it requires Node >= 18, a modern
|
|
60
|
+
* browser, or Electron. Nothing is transmitted synchronously — `write` only
|
|
61
|
+
* enqueues, so it is always safe to call from hot paths. Context fields
|
|
62
|
+
* `traceId` / `spanId` (or `trace_id` / `span_id`) are mapped to OTLP's trace
|
|
63
|
+
* correlation fields automatically.
|
|
64
|
+
*/
|
|
65
|
+
export declare class OtlpTransport implements Transport {
|
|
66
|
+
/** Transport name, fixed to `'otlp'`. */
|
|
67
|
+
readonly name: string;
|
|
68
|
+
/** Optional per-transport formatter (interface parity; OTLP ignores it). */
|
|
69
|
+
readonly formatter?: Formatter;
|
|
70
|
+
private readonly endpoint;
|
|
71
|
+
private readonly headers;
|
|
72
|
+
private readonly scopeName;
|
|
73
|
+
private readonly batchSize;
|
|
74
|
+
private readonly errorHandler;
|
|
75
|
+
private readonly resourceAttributes;
|
|
76
|
+
private queue;
|
|
77
|
+
private flushing;
|
|
78
|
+
constructor(options?: OtlpTransportOptions);
|
|
79
|
+
/**
|
|
80
|
+
* Enqueue an entry for delivery. When the buffer reaches `batchSize` an
|
|
81
|
+
* asynchronous flush is kicked off (its result is intentionally unawaited).
|
|
82
|
+
* @param entry The structured log entry to forward.
|
|
83
|
+
* @param _formatted The pipeline-formatted string (unused by OTLP).
|
|
84
|
+
*/
|
|
85
|
+
write(entry: LogEntry, _formatted: string): void;
|
|
86
|
+
/** Assemble the full OTLP `LogsData` JSON envelope for a batch of records. */
|
|
87
|
+
private buildPayload;
|
|
88
|
+
/**
|
|
89
|
+
* Send the buffered batch to the OTLP endpoint and clear the queue. Safe to
|
|
90
|
+
* call repeatedly — no-op while already flushing or when the queue is empty.
|
|
91
|
+
* On a non-2xx response or network error, `errorHandler` is invoked.
|
|
92
|
+
*/
|
|
93
|
+
flush(): Promise<void>;
|
|
94
|
+
/** Tear down the transport by flushing any remaining buffered entries. */
|
|
95
|
+
close(): Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=otlp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../../../src/transport/otlp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkJhD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkB;IACrD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,oBAAyB;IAc9C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAOhD,8EAA8E;IAC9E,OAAO,CAAC,YAAY;IAWpB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,0EAA0E;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OtlpTransport = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* OTLP severity numbers (a subset of the OpenTelemetry spec) mapped from our
|
|
6
|
+
* level names. The numbers preserve OTLP ordering so backends can filter by
|
|
7
|
+
* minimum severity:
|
|
8
|
+
* `trace=1, debug=5, info=9, warn=13, error=17, fatal=21`.
|
|
9
|
+
*/
|
|
10
|
+
const SEVERITY = {
|
|
11
|
+
trace: 1,
|
|
12
|
+
debug: 5,
|
|
13
|
+
info: 9,
|
|
14
|
+
warn: 13,
|
|
15
|
+
error: 17,
|
|
16
|
+
fatal: 21,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Convert an arbitrary JS value into the OTLP `AnyValue` shape.
|
|
20
|
+
* - `string` → `stringValue`
|
|
21
|
+
* - `boolean` → `boolValue`
|
|
22
|
+
* - integer `number` → `intValue` (decimal string, per spec); other numbers → `doubleValue`
|
|
23
|
+
* - `null` / `undefined` → empty `stringValue`
|
|
24
|
+
* - everything else (objects, arrays, `Error`, …) → JSON `stringValue`
|
|
25
|
+
*/
|
|
26
|
+
function toOtlpValue(value) {
|
|
27
|
+
if (typeof value === 'string')
|
|
28
|
+
return { stringValue: value };
|
|
29
|
+
if (typeof value === 'boolean')
|
|
30
|
+
return { boolValue: value };
|
|
31
|
+
if (typeof value === 'number') {
|
|
32
|
+
return Number.isInteger(value) ? { intValue: String(value) } : { doubleValue: value };
|
|
33
|
+
}
|
|
34
|
+
if (value === null || value === undefined)
|
|
35
|
+
return { stringValue: '' };
|
|
36
|
+
return { stringValue: JSON.stringify(value) };
|
|
37
|
+
}
|
|
38
|
+
/** Context/metadata keys (any casing / underscore form) mapped to OTLP trace fields. */
|
|
39
|
+
const TRACE_KEYS = new Set(['traceid', 'trace_id', 'spanid', 'span_id']);
|
|
40
|
+
/**
|
|
41
|
+
* Flatten `record` into OTLP attributes, skipping the reserved trace-correlation
|
|
42
|
+
* keys (which are lifted to the dedicated `traceId`/`spanId` fields instead).
|
|
43
|
+
* Returns `undefined` when the record contributes no attributes, so the caller
|
|
44
|
+
* can avoid allocating an intermediate array for empty records.
|
|
45
|
+
*/
|
|
46
|
+
function collectAttributes(record) {
|
|
47
|
+
let out;
|
|
48
|
+
for (const key of Object.keys(record)) {
|
|
49
|
+
if (TRACE_KEYS.has(key.toLowerCase()))
|
|
50
|
+
continue;
|
|
51
|
+
(out ?? (out = [])).push({ key, value: toOtlpValue(record[key]) });
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
/** Read a non-empty string value for one of several candidate key names. */
|
|
56
|
+
function pickString(record, ...names) {
|
|
57
|
+
for (const n of names) {
|
|
58
|
+
const v = record[n];
|
|
59
|
+
if (typeof v === 'string' && v.length > 0)
|
|
60
|
+
return v;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Map a lograil {@link LogEntry} to an OTLP `LogRecord`.
|
|
66
|
+
* Context and metadata become attributes; `scope` and `pid` are added when
|
|
67
|
+
* present. `traceId` / `spanId` (also accepted as `trace_id` / `span_id`) are
|
|
68
|
+
* lifted out of the attributes into OTLP's dedicated `traceId` / `spanId`
|
|
69
|
+
* fields so the log correlates with distributed traces. The timestamp is
|
|
70
|
+
* converted from millisecond epoch to nanosecond string; the message becomes
|
|
71
|
+
* the record body.
|
|
72
|
+
*/
|
|
73
|
+
function toLogRecord(entry) {
|
|
74
|
+
const attributes = [];
|
|
75
|
+
// Single pass per source: collect attributes and (for context) harvest the
|
|
76
|
+
// trace ids in the same traversal, avoiding the prior double flatten + filter
|
|
77
|
+
// + per-key `toLowerCase()` churn.
|
|
78
|
+
const ctxAttrs = collectAttributes(entry.context);
|
|
79
|
+
if (ctxAttrs)
|
|
80
|
+
for (const a of ctxAttrs)
|
|
81
|
+
attributes.push(a);
|
|
82
|
+
const metaAttrs = collectAttributes(entry.metadata);
|
|
83
|
+
if (metaAttrs)
|
|
84
|
+
for (const a of metaAttrs)
|
|
85
|
+
attributes.push(a);
|
|
86
|
+
if (entry.scope)
|
|
87
|
+
attributes.push({ key: 'scope', value: { stringValue: entry.scope } });
|
|
88
|
+
if (typeof entry.pid === 'number') {
|
|
89
|
+
attributes.push({ key: 'pid', value: { intValue: String(entry.pid) } });
|
|
90
|
+
}
|
|
91
|
+
const record = {
|
|
92
|
+
timeUnixNano: String(entry.timestamp * 1000000),
|
|
93
|
+
severityNumber: SEVERITY[entry.levelName],
|
|
94
|
+
severityText: entry.levelName.toUpperCase(),
|
|
95
|
+
body: { stringValue: entry.message },
|
|
96
|
+
attributes,
|
|
97
|
+
};
|
|
98
|
+
const traceId = pickString(entry.context, 'traceId', 'trace_id') ??
|
|
99
|
+
pickString(entry.metadata, 'traceId', 'trace_id');
|
|
100
|
+
const spanId = pickString(entry.context, 'spanId', 'span_id') ??
|
|
101
|
+
pickString(entry.metadata, 'spanId', 'span_id');
|
|
102
|
+
if (traceId)
|
|
103
|
+
record.traceId = traceId;
|
|
104
|
+
if (spanId)
|
|
105
|
+
record.spanId = spanId;
|
|
106
|
+
return record;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* A {@link Transport} that forwards log entries to an OpenTelemetry Collector
|
|
110
|
+
* (or any OTLP HTTP/JSON receiver) via `POST /v1/logs`.
|
|
111
|
+
*
|
|
112
|
+
* Entries are buffered in memory and sent in batches; call {@link flush} (or
|
|
113
|
+
* enable `autoFlushOnExit` on the logger) to drain them before the process
|
|
114
|
+
* exits. It uses the global `fetch`, so it requires Node >= 18, a modern
|
|
115
|
+
* browser, or Electron. Nothing is transmitted synchronously — `write` only
|
|
116
|
+
* enqueues, so it is always safe to call from hot paths. Context fields
|
|
117
|
+
* `traceId` / `spanId` (or `trace_id` / `span_id`) are mapped to OTLP's trace
|
|
118
|
+
* correlation fields automatically.
|
|
119
|
+
*/
|
|
120
|
+
class OtlpTransport {
|
|
121
|
+
constructor(options = {}) {
|
|
122
|
+
this.queue = [];
|
|
123
|
+
this.flushing = false;
|
|
124
|
+
this.name = 'otlp';
|
|
125
|
+
this.formatter = options.formatter;
|
|
126
|
+
this.endpoint = options.endpoint ?? 'http://localhost:4318/v1/logs';
|
|
127
|
+
this.headers = { 'content-type': 'application/json', ...options.headers };
|
|
128
|
+
this.scopeName = options.scopeName ?? 'lograil';
|
|
129
|
+
this.batchSize = options.batchSize && options.batchSize > 0 ? options.batchSize : 100;
|
|
130
|
+
this.errorHandler =
|
|
131
|
+
options.onError ?? ((err) => console.error('[lograil] OTLP send failed:', err));
|
|
132
|
+
const resource = { 'service.name': options.serviceName ?? 'lograil' };
|
|
133
|
+
if (options.resource)
|
|
134
|
+
Object.assign(resource, options.resource);
|
|
135
|
+
this.resourceAttributes = collectAttributes(resource) ?? [];
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Enqueue an entry for delivery. When the buffer reaches `batchSize` an
|
|
139
|
+
* asynchronous flush is kicked off (its result is intentionally unawaited).
|
|
140
|
+
* @param entry The structured log entry to forward.
|
|
141
|
+
* @param _formatted The pipeline-formatted string (unused by OTLP).
|
|
142
|
+
*/
|
|
143
|
+
write(entry, _formatted) {
|
|
144
|
+
this.queue.push(toLogRecord(entry));
|
|
145
|
+
if (this.queue.length >= this.batchSize) {
|
|
146
|
+
void this.flush();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** Assemble the full OTLP `LogsData` JSON envelope for a batch of records. */
|
|
150
|
+
buildPayload(records) {
|
|
151
|
+
return {
|
|
152
|
+
resourceLogs: [
|
|
153
|
+
{
|
|
154
|
+
resource: { attributes: this.resourceAttributes },
|
|
155
|
+
scopeLogs: [{ scope: { name: this.scopeName }, logRecords: records }],
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Send the buffered batch to the OTLP endpoint and clear the queue. Safe to
|
|
162
|
+
* call repeatedly — no-op while already flushing or when the queue is empty.
|
|
163
|
+
* On a non-2xx response or network error, `errorHandler` is invoked.
|
|
164
|
+
*/
|
|
165
|
+
async flush() {
|
|
166
|
+
if (this.flushing || this.queue.length === 0)
|
|
167
|
+
return;
|
|
168
|
+
this.flushing = true;
|
|
169
|
+
const batch = this.queue;
|
|
170
|
+
this.queue = [];
|
|
171
|
+
try {
|
|
172
|
+
const res = await fetch(this.endpoint, {
|
|
173
|
+
method: 'POST',
|
|
174
|
+
headers: this.headers,
|
|
175
|
+
body: JSON.stringify(this.buildPayload(batch)),
|
|
176
|
+
});
|
|
177
|
+
if (!res.ok) {
|
|
178
|
+
this.errorHandler(new Error(`OTLP HTTP ${res.status} ${res.statusText}`));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
this.errorHandler(err);
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
this.flushing = false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/** Tear down the transport by flushing any remaining buffered entries. */
|
|
189
|
+
async close() {
|
|
190
|
+
await this.flush();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.OtlpTransport = OtlpTransport;
|
|
194
|
+
//# sourceMappingURL=otlp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../../../src/transport/otlp.ts"],"names":[],"mappings":"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"}
|