evlog 2.14.1 → 2.15.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/LICENSE +21 -0
- package/README.md +4 -4
- package/dist/adapters/axiom.d.mts +18 -27
- package/dist/adapters/axiom.d.mts.map +1 -1
- package/dist/adapters/axiom.mjs +40 -30
- package/dist/adapters/axiom.mjs.map +1 -1
- package/dist/adapters/better-stack.d.mts +11 -24
- package/dist/adapters/better-stack.d.mts.map +1 -1
- package/dist/adapters/better-stack.mjs +34 -29
- package/dist/adapters/better-stack.mjs.map +1 -1
- package/dist/adapters/datadog.d.mts +1 -1
- package/dist/adapters/datadog.d.mts.map +1 -1
- package/dist/adapters/datadog.mjs +10 -4
- package/dist/adapters/datadog.mjs.map +1 -1
- package/dist/adapters/fs.d.mts +2 -2
- package/dist/adapters/fs.d.mts.map +1 -1
- package/dist/adapters/fs.mjs +19 -7
- package/dist/adapters/fs.mjs.map +1 -1
- package/dist/adapters/hyperdx.d.mts +1 -1
- package/dist/adapters/hyperdx.mjs +1 -2
- package/dist/adapters/hyperdx.mjs.map +1 -1
- package/dist/adapters/otlp.d.mts +1 -1
- package/dist/adapters/otlp.d.mts.map +1 -1
- package/dist/adapters/otlp.mjs +36 -31
- package/dist/adapters/otlp.mjs.map +1 -1
- package/dist/adapters/posthog.d.mts +50 -70
- package/dist/adapters/posthog.d.mts.map +1 -1
- package/dist/adapters/posthog.mjs +50 -85
- package/dist/adapters/posthog.mjs.map +1 -1
- package/dist/adapters/sentry.d.mts +1 -1
- package/dist/adapters/sentry.d.mts.map +1 -1
- package/dist/adapters/sentry.mjs +15 -5
- package/dist/adapters/sentry.mjs.map +1 -1
- package/dist/ai/index.d.mts +1 -1
- package/dist/{audit-DQoBo7Dl.mjs → audit--n0QRR2Y.mjs} +152 -13
- package/dist/audit--n0QRR2Y.mjs.map +1 -0
- package/dist/{audit-CTIviX3P.d.mts → audit-CJl-wZ10.d.mts} +134 -2
- package/dist/audit-CJl-wZ10.d.mts.map +1 -0
- package/dist/better-auth/index.d.mts +1 -1
- package/dist/browser.d.mts +1 -1
- package/dist/define-D6OJdSUH.mjs +63 -0
- package/dist/define-D6OJdSUH.mjs.map +1 -0
- package/dist/define-Fp8TrdEB.d.mts +57 -0
- package/dist/define-Fp8TrdEB.d.mts.map +1 -0
- package/dist/{dist-Do8P4zWd.mjs → dist-BIlS38vi.mjs} +1 -1
- package/dist/dist-BIlS38vi.mjs.map +1 -0
- package/dist/drain-ByWUeOQC.mjs +160 -0
- package/dist/drain-ByWUeOQC.mjs.map +1 -0
- package/dist/elysia/index.d.mts +25 -2
- package/dist/elysia/index.d.mts.map +1 -1
- package/dist/elysia/index.mjs +53 -20
- package/dist/elysia/index.mjs.map +1 -1
- package/dist/enricher-BA6viylF.mjs +95 -0
- package/dist/enricher-BA6viylF.mjs.map +1 -0
- package/dist/enricher-CLSnrzrr.d.mts +42 -0
- package/dist/enricher-CLSnrzrr.d.mts.map +1 -0
- package/dist/enrichers.d.mts +16 -9
- package/dist/enrichers.d.mts.map +1 -1
- package/dist/enrichers.mjs +81 -64
- package/dist/enrichers.mjs.map +1 -1
- package/dist/{error-C7gSQVqk.d.mts → error-C-66_G2M.d.mts} +2 -2
- package/dist/{error-C7gSQVqk.d.mts.map → error-C-66_G2M.d.mts.map} +1 -1
- package/dist/error.d.mts +1 -1
- package/dist/{errors-BJRXUfMg.mjs → errors-BQgyQ9xe.mjs} +1 -1
- package/dist/{errors-BJRXUfMg.mjs.map → errors-BQgyQ9xe.mjs.map} +1 -1
- package/dist/{errors-4MPmTzjY.d.mts → errors-DQoYsDW1.d.mts} +2 -2
- package/dist/{errors-4MPmTzjY.d.mts.map → errors-DQoYsDW1.d.mts.map} +1 -1
- package/dist/event-ef-5Dbxg.mjs +53 -0
- package/dist/event-ef-5Dbxg.mjs.map +1 -0
- package/dist/express/index.d.mts +2 -2
- package/dist/express/index.d.mts.map +1 -1
- package/dist/express/index.mjs +17 -15
- package/dist/express/index.mjs.map +1 -1
- package/dist/fastify/index.d.mts +2 -2
- package/dist/fastify/index.d.mts.map +1 -1
- package/dist/fastify/index.mjs +19 -20
- package/dist/fastify/index.mjs.map +1 -1
- package/dist/fork-D44V93-K.mjs +227 -0
- package/dist/fork-D44V93-K.mjs.map +1 -0
- package/dist/{headers-D74M0wsg.mjs → headers-CU-QqnYg.mjs} +19 -2
- package/dist/headers-CU-QqnYg.mjs.map +1 -0
- package/dist/hono/index.d.mts +2 -2
- package/dist/hono/index.d.mts.map +1 -1
- package/dist/hono/index.mjs +14 -10
- package/dist/hono/index.mjs.map +1 -1
- package/dist/http.d.mts +1 -1
- package/dist/index.d.mts +8 -7
- package/dist/index.mjs +3 -2
- package/dist/integration-Bz8X6_Lb.mjs +75 -0
- package/dist/integration-Bz8X6_Lb.mjs.map +1 -0
- package/dist/{logger-DttRJRGa.d.mts → logger-Brt5-WMK.d.mts} +9 -3
- package/dist/logger-Brt5-WMK.d.mts.map +1 -0
- package/dist/logger.d.mts +2 -2
- package/dist/logger.mjs +2 -2
- package/dist/middleware-CGM-bOvE.d.mts +72 -0
- package/dist/middleware-CGM-bOvE.d.mts.map +1 -0
- package/dist/nestjs/index.d.mts +2 -2
- package/dist/nestjs/index.mjs +3 -4
- package/dist/nestjs/index.mjs.map +1 -1
- package/dist/next/client.d.mts +1 -1
- package/dist/next/index.d.mts +4 -4
- package/dist/next/index.mjs +3 -3
- package/dist/next/instrumentation.d.mts +1 -1
- package/dist/next/instrumentation.mjs +1 -1
- package/dist/nitro/errorHandler.mjs +2 -2
- package/dist/nitro/module.d.mts +2 -2
- package/dist/nitro/plugin.mjs +21 -11
- package/dist/nitro/plugin.mjs.map +1 -1
- package/dist/nitro/v3/errorHandler.mjs +3 -3
- package/dist/nitro/v3/index.d.mts +2 -2
- package/dist/nitro/v3/module.d.mts +1 -1
- package/dist/nitro/v3/plugin.mjs +29 -17
- package/dist/nitro/v3/plugin.mjs.map +1 -1
- package/dist/nitro/v3/useLogger.d.mts +1 -1
- package/dist/{nitro-CPPRCPbG.d.mts → nitro-DHPb9dXG.d.mts} +2 -2
- package/dist/{nitro-CPPRCPbG.d.mts.map → nitro-DHPb9dXG.d.mts.map} +1 -1
- package/dist/{nitro-OmT_M4Pb.mjs → nitro-DavLelNz.mjs} +2 -2
- package/dist/nitro-DavLelNz.mjs.map +1 -0
- package/dist/{nitroConfigBridge-C37lXaNm.mjs → nitroConfigBridge-aZ1e5upQ.mjs} +1 -1
- package/dist/nitroConfigBridge-aZ1e5upQ.mjs.map +1 -0
- package/dist/nuxt/module.d.mts +1 -1
- package/dist/nuxt/module.mjs +2 -2
- package/dist/{parseError-o1GpZEOR.d.mts → parseError-B1zJZvQ5.d.mts} +2 -2
- package/dist/parseError-B1zJZvQ5.d.mts.map +1 -0
- package/dist/react-router/index.d.mts +2 -2
- package/dist/react-router/index.mjs +3 -4
- package/dist/react-router/index.mjs.map +1 -1
- package/dist/{routes-CGPmbzCZ.mjs → routes-B48wm7Pb.mjs} +1 -1
- package/dist/{routes-CGPmbzCZ.mjs.map → routes-B48wm7Pb.mjs.map} +1 -1
- package/dist/runtime/client/log.d.mts +1 -1
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs +21 -10
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs.map +1 -1
- package/dist/runtime/server/useLogger.d.mts +1 -1
- package/dist/runtime/utils/parseError.d.mts +2 -2
- package/dist/runtime/utils/parseError.mjs +1 -1
- package/dist/{_severity-CQijvfhU.mjs → severity-BYWZ96Sb.mjs} +6 -2
- package/dist/severity-BYWZ96Sb.mjs.map +1 -0
- package/dist/{source-location-DRvDDqfq.mjs → source-location-Dco0cRTz.mjs} +3 -3
- package/dist/source-location-Dco0cRTz.mjs.map +1 -0
- package/dist/storage-BT-3fT1-.mjs +27 -0
- package/dist/storage-BT-3fT1-.mjs.map +1 -0
- package/dist/sveltekit/index.d.mts +2 -2
- package/dist/sveltekit/index.mjs +5 -6
- package/dist/sveltekit/index.mjs.map +1 -1
- package/dist/toolkit.d.mts +288 -12
- package/dist/toolkit.d.mts.map +1 -1
- package/dist/toolkit.mjs +13 -7
- package/dist/types.d.mts +1 -1
- package/dist/{useLogger-CyPP1sVB.d.mts → useLogger-Cb1R6bQE.d.mts} +2 -2
- package/dist/{useLogger-CyPP1sVB.d.mts.map → useLogger-Cb1R6bQE.d.mts.map} +1 -1
- package/dist/{utils-Dmin7wVL.d.mts → utils-gQCeZMbg.d.mts} +2 -2
- package/dist/{utils-Dmin7wVL.d.mts.map → utils-gQCeZMbg.d.mts.map} +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/vite/index.d.mts +1 -1
- package/dist/vite/index.mjs +1 -1
- package/dist/workers.d.mts +1 -1
- package/dist/workers.mjs +1 -1
- package/package.json +22 -19
- package/dist/_drain-CmCtsuF6.mjs +0 -23
- package/dist/_drain-CmCtsuF6.mjs.map +0 -1
- package/dist/_http-BY1e9pwC.mjs +0 -78
- package/dist/_http-BY1e9pwC.mjs.map +0 -1
- package/dist/_severity-CQijvfhU.mjs.map +0 -1
- package/dist/audit-CTIviX3P.d.mts.map +0 -1
- package/dist/audit-DQoBo7Dl.mjs.map +0 -1
- package/dist/dist-Do8P4zWd.mjs.map +0 -1
- package/dist/fork-D1j1Fuzy.mjs +0 -72
- package/dist/fork-D1j1Fuzy.mjs.map +0 -1
- package/dist/headers-D74M0wsg.mjs.map +0 -1
- package/dist/logger-DttRJRGa.d.mts.map +0 -1
- package/dist/middleware-CTnDsST-.d.mts +0 -93
- package/dist/middleware-CTnDsST-.d.mts.map +0 -1
- package/dist/middleware-oAccqyPp.mjs +0 -123
- package/dist/middleware-oAccqyPp.mjs.map +0 -1
- package/dist/nitro-OmT_M4Pb.mjs.map +0 -1
- package/dist/nitroConfigBridge-C37lXaNm.mjs.map +0 -1
- package/dist/parseError-o1GpZEOR.d.mts.map +0 -1
- package/dist/source-location-DRvDDqfq.mjs.map +0 -1
- package/dist/storage-CFGTn37X.mjs +0 -46
- package/dist/storage-CFGTn37X.mjs.map +0 -1
package/dist/toolkit.d.mts
CHANGED
|
@@ -1,8 +1,158 @@
|
|
|
1
|
-
import { Y as RequestLogger } from "./audit-
|
|
2
|
-
import { a as
|
|
3
|
-
import { n as
|
|
1
|
+
import { F as DrainContext, I as EnrichContext, W as LogLevel, Y as RequestLogger, at as ClientLogContext, ct as PluginSetupContext, dt as createPluginRunner, ft as definePlugin, ht as getEmptyPluginRunner, it as WideEvent, lt as RequestFinishContext, mt as enricherPlugin, nt as TailSamplingContext, ot as EvlogPlugin, pt as drainPlugin, st as PluginRunner, ut as RequestLifecycleContext } from "./audit-CJl-wZ10.mjs";
|
|
2
|
+
import { a as resolveMiddlewarePluginRunner, i as createMiddlewareLogger, n as MiddlewareLoggerOptions, o as runEnrichAndDrain, r as MiddlewareLoggerResult, t as BaseEvlogOptions } from "./middleware-CGM-bOvE.mjs";
|
|
3
|
+
import { i as toMiddlewareOptions, n as defineEvlog, r as toLoggerConfig, t as EvlogConfig } from "./define-Fp8TrdEB.mjs";
|
|
4
|
+
import { n as EnricherOptions, r as defineEnricher, t as EnricherDefinition } from "./enricher-CLSnrzrr.mjs";
|
|
5
|
+
import { n as getServiceForPath, r as shouldLog, t as extractErrorStatus } from "./errors-DQoYsDW1.mjs";
|
|
4
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
5
7
|
|
|
8
|
+
//#region src/shared/compose.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* Compose enricher callbacks into one. Runs in registration order; errors are
|
|
11
|
+
* caught per-callback so one buggy enricher never blocks the others.
|
|
12
|
+
*/
|
|
13
|
+
declare function composeEnrichers(enrichers: Array<(ctx: EnrichContext) => void | Promise<void>>, options?: {
|
|
14
|
+
name?: string;
|
|
15
|
+
}): (ctx: EnrichContext) => Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Fan out to multiple drains concurrently (`Promise.allSettled`). A slow
|
|
18
|
+
* Sentry drain never blocks an Axiom drain on the same event.
|
|
19
|
+
*/
|
|
20
|
+
declare function composeDrains(drains: Array<(ctx: DrainContext) => void | Promise<void>>, options?: {
|
|
21
|
+
name?: string;
|
|
22
|
+
}): (ctx: DrainContext) => Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Compose tail-sampling `keep` callbacks. `ctx.shouldKeep` is true after the
|
|
25
|
+
* run if any callback set it. Errors are isolated.
|
|
26
|
+
*/
|
|
27
|
+
declare function composeKeep(keepers: Array<(ctx: TailSamplingContext) => void | Promise<void>>, options?: {
|
|
28
|
+
name?: string;
|
|
29
|
+
}): (ctx: TailSamplingContext) => Promise<void>;
|
|
30
|
+
/** Merge plugin lists. Later registrations override earlier ones by `name`. */
|
|
31
|
+
declare function composePlugins(...lists: Array<EvlogPlugin[] | undefined>): EvlogPlugin[];
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/shared/config.d.ts
|
|
34
|
+
/** Read the full Nitro `useRuntimeConfig()` record (or `undefined` outside Nitro). */
|
|
35
|
+
declare function getRuntimeConfig(): Promise<Record<string, any> | undefined>;
|
|
36
|
+
/**
|
|
37
|
+
* Description of a single adapter config field. `env` is the ordered list of
|
|
38
|
+
* environment variables to fall back to, e.g. `['NUXT_AXIOM_TOKEN', 'AXIOM_TOKEN']`.
|
|
39
|
+
*/
|
|
40
|
+
interface ConfigField<T> {
|
|
41
|
+
key: keyof T & string;
|
|
42
|
+
env?: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolve adapter configuration with the standard priority chain:
|
|
46
|
+
*
|
|
47
|
+
* 1. `overrides` passed to the drain factory
|
|
48
|
+
* 2. `runtimeConfig.evlog.{namespace}.{key}` (Nitro)
|
|
49
|
+
* 3. `runtimeConfig.{namespace}.{key}` (Nitro)
|
|
50
|
+
* 4. `process.env[envKey]` for each env in `field.env`
|
|
51
|
+
*/
|
|
52
|
+
declare function resolveAdapterConfig<T>(namespace: string, fields: ConfigField<T>[], overrides?: Partial<T>): Promise<Partial<T>>;
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region src/shared/drain.d.ts
|
|
55
|
+
/**
|
|
56
|
+
* Drain definition backed by an arbitrary `send` function. Use this for
|
|
57
|
+
* non-HTTP transports (filesystem, in-memory queue, native SDK). For HTTP
|
|
58
|
+
* backends, use `defineHttpDrain` instead.
|
|
59
|
+
*/
|
|
60
|
+
interface DrainOptions<TConfig> {
|
|
61
|
+
/** Stable identifier used in error logs. */
|
|
62
|
+
name: string;
|
|
63
|
+
/** Return `null` to skip draining (e.g. missing API key in dev). */
|
|
64
|
+
resolve: () => TConfig | null | Promise<TConfig | null>;
|
|
65
|
+
send: (events: WideEvent[], config: TConfig) => Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Build a drain callback. Errors raised by `send` are logged with the drain
|
|
69
|
+
* name and swallowed, so a failing drain never breaks the request pipeline.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* export function createMyDrain(overrides?: Partial<MyConfig>) {
|
|
74
|
+
* return defineDrain<MyConfig>({
|
|
75
|
+
* name: 'my-drain',
|
|
76
|
+
* resolve: () => ({ url: process.env.MY_URL ?? null }),
|
|
77
|
+
* send: async (events, config) => { ... },
|
|
78
|
+
* })
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
declare function defineDrain<TConfig>(options: DrainOptions<TConfig>): (ctx: DrainContext | DrainContext[]) => Promise<void>;
|
|
83
|
+
interface HttpDrainRequest {
|
|
84
|
+
url: string;
|
|
85
|
+
/** Caller is responsible for `Content-Type`. */
|
|
86
|
+
headers: Record<string, string>;
|
|
87
|
+
body: string;
|
|
88
|
+
}
|
|
89
|
+
/** Adapters only need to ship config + `encode()` — no manual `fetch`. */
|
|
90
|
+
interface HttpDrainOptions<TConfig> {
|
|
91
|
+
/** Stable identifier used in error logs. */
|
|
92
|
+
name: string;
|
|
93
|
+
/** Return `null` to skip draining (e.g. missing API key in dev). */
|
|
94
|
+
resolve: () => TConfig | null | Promise<TConfig | null>;
|
|
95
|
+
/** Return `null` to skip the batch without raising. */
|
|
96
|
+
encode: (events: WideEvent[], config: TConfig) => HttpDrainRequest | null;
|
|
97
|
+
/** @default 5000 */
|
|
98
|
+
timeout?: number;
|
|
99
|
+
/** @default 2 */
|
|
100
|
+
retries?: number;
|
|
101
|
+
/** Read the timeout off the resolved config (falls back to `timeout`). */
|
|
102
|
+
resolveTimeout?: (config: TConfig) => number | undefined;
|
|
103
|
+
/** Read the retry count off the resolved config (falls back to `retries`). */
|
|
104
|
+
resolveRetries?: (config: TConfig) => number | undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Build an HTTP drain. Timeouts/retries are resolved from the config (with
|
|
108
|
+
* overrides via `resolveTimeout` / `resolveRetries`) and forwarded to
|
|
109
|
+
* {@link httpPost}.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* export function createMyDrain(overrides?: Partial<MyConfig>) {
|
|
114
|
+
* return defineHttpDrain<MyConfig>({
|
|
115
|
+
* name: 'my',
|
|
116
|
+
* resolve: async () => {
|
|
117
|
+
* const cfg = await resolveAdapterConfig<MyConfig>('my', FIELDS, overrides)
|
|
118
|
+
* return cfg.apiKey ? cfg as MyConfig : null
|
|
119
|
+
* },
|
|
120
|
+
* encode: (events, config) => ({
|
|
121
|
+
* url: `${config.endpoint ?? 'https://api.my.com'}/ingest`,
|
|
122
|
+
* headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${config.apiKey}` },
|
|
123
|
+
* body: JSON.stringify(events),
|
|
124
|
+
* }),
|
|
125
|
+
* })
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
declare function defineHttpDrain<TConfig>(options: HttpDrainOptions<TConfig>): (ctx: DrainContext | DrainContext[]) => Promise<void>;
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/shared/event.d.ts
|
|
132
|
+
/**
|
|
133
|
+
* Helpers for building / mutating wide events from inside enrichers and adapters.
|
|
134
|
+
*/
|
|
135
|
+
/**
|
|
136
|
+
* Merge a computed value onto an existing event field. By default, existing
|
|
137
|
+
* object values win over computed ones — so `log.set({ geo: ... })` keeps
|
|
138
|
+
* precedence over an enricher's automatic detection.
|
|
139
|
+
*/
|
|
140
|
+
declare function mergeEventField<T extends object>(existing: unknown, computed: T, overwrite?: boolean): T;
|
|
141
|
+
/** Typed attribute used when flattening events for OTLP/Sentry/Datadog/PostHog. */
|
|
142
|
+
type AttributeValueKind = 'string' | 'integer' | 'double' | 'boolean';
|
|
143
|
+
interface TypedAttributeValue {
|
|
144
|
+
value: string | number | boolean;
|
|
145
|
+
type: AttributeValueKind;
|
|
146
|
+
}
|
|
147
|
+
/** Convert a JS value to a {@link TypedAttributeValue}. Objects are JSON-serialized. */
|
|
148
|
+
declare function toTypedAttributeValue(value: unknown): TypedAttributeValue | undefined;
|
|
149
|
+
/** Convert a JS value to the OTLP `AnyValue` shape (`stringValue` / `intValue` / `boolValue`). */
|
|
150
|
+
declare function toOtlpAttributeValue(value: unknown): {
|
|
151
|
+
stringValue?: string;
|
|
152
|
+
intValue?: string;
|
|
153
|
+
boolValue?: boolean;
|
|
154
|
+
};
|
|
155
|
+
//#endregion
|
|
6
156
|
//#region src/shared/fork.d.ts
|
|
7
157
|
/**
|
|
8
158
|
* Optional hooks for integrations that track active loggers (e.g. Elysia `activeLoggers`).
|
|
@@ -52,24 +202,150 @@ declare function extractSafeHeaders(headers: Headers): Record<string, string>;
|
|
|
52
202
|
* Works with Express, Fastify, and any Node.js HTTP server using `req.headers`.
|
|
53
203
|
*/
|
|
54
204
|
declare function extractSafeNodeHeaders(headers: Record<string, string | string[] | undefined>): Record<string, string>;
|
|
205
|
+
/**
|
|
206
|
+
* Case-insensitive header lookup against the safe-filtered shape produced by
|
|
207
|
+
* {@link extractSafeHeaders} / {@link extractSafeNodeHeaders}.
|
|
208
|
+
*/
|
|
209
|
+
declare function getHeader(headers: Record<string, string> | undefined, name: string): string | undefined;
|
|
210
|
+
/** Parse a header-derived numeric string. Returns `undefined` for empty/invalid input. */
|
|
211
|
+
declare function normalizeNumber(value: string | undefined): number | undefined;
|
|
55
212
|
//#endregion
|
|
56
|
-
//#region src/shared/
|
|
213
|
+
//#region src/shared/http.d.ts
|
|
57
214
|
/**
|
|
58
|
-
*
|
|
215
|
+
* Minimal HTTP transport for drain adapters: abort-based timeouts, exponential
|
|
216
|
+
* backoff on `5xx` / network errors, response bodies truncated in error messages.
|
|
217
|
+
*/
|
|
218
|
+
interface HttpPostOptions {
|
|
219
|
+
url: string;
|
|
220
|
+
/** Caller is responsible for `Content-Type`. */
|
|
221
|
+
headers: Record<string, string>;
|
|
222
|
+
/** Pre-serialized request body. */
|
|
223
|
+
body: string;
|
|
224
|
+
/** Abort the request after this many milliseconds. */
|
|
225
|
+
timeout: number;
|
|
226
|
+
/** Prefix used in error messages. */
|
|
227
|
+
label: string;
|
|
228
|
+
/**
|
|
229
|
+
* Retries network errors, aborts, and `5xx` responses with exponential backoff.
|
|
230
|
+
* @default 2
|
|
231
|
+
*/
|
|
232
|
+
retries?: number;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* POST a body with timeout + retry. Throws label-prefixed errors with a
|
|
236
|
+
* truncated response body. Safe to call from any drain `send()`.
|
|
237
|
+
*/
|
|
238
|
+
declare function httpPost({
|
|
239
|
+
url,
|
|
240
|
+
headers,
|
|
241
|
+
body,
|
|
242
|
+
timeout,
|
|
243
|
+
label,
|
|
244
|
+
retries
|
|
245
|
+
}: HttpPostOptions): Promise<void>;
|
|
246
|
+
//#endregion
|
|
247
|
+
//#region src/shared/integration.d.ts
|
|
248
|
+
/** Request shape extracted from a framework context. */
|
|
249
|
+
interface ExtractedRequest {
|
|
250
|
+
method: string;
|
|
251
|
+
path: string;
|
|
252
|
+
/**
|
|
253
|
+
* Either a Web `Headers` (Hono / Elysia / Fetch) or a Node-style
|
|
254
|
+
* `IncomingHttpHeaders` record (Express / Fastify). Whichever is native
|
|
255
|
+
* to the framework — it gets filtered through the safe-header helpers.
|
|
256
|
+
*/
|
|
257
|
+
headers?: Headers | Record<string, string | string[] | undefined>;
|
|
258
|
+
/** Used as-is when present, otherwise auto-generated. */
|
|
259
|
+
requestId?: string;
|
|
260
|
+
}
|
|
261
|
+
/** Manifest passed to {@link defineFrameworkIntegration}. */
|
|
262
|
+
interface FrameworkIntegrationSpec<TCtx> {
|
|
263
|
+
/** Stable identifier used in error messages. */
|
|
264
|
+
name: string;
|
|
265
|
+
extractRequest: (ctx: TCtx) => ExtractedRequest;
|
|
266
|
+
/** Attach the request logger to the framework context (`c.set('log', logger)`). */
|
|
267
|
+
attachLogger: (ctx: TCtx, logger: RequestLogger) => void;
|
|
268
|
+
/**
|
|
269
|
+
* AsyncLocalStorage instance backing `useLogger()`. Required for frameworks
|
|
270
|
+
* where the logger is accessed off the request context (Express, Fastify,
|
|
271
|
+
* NestJS). When set, `log.fork()` is auto-attached to the request logger.
|
|
272
|
+
*/
|
|
273
|
+
storage?: AsyncLocalStorage<RequestLogger>;
|
|
274
|
+
/** Fork lifecycle hooks (only used when `storage` is set). */
|
|
275
|
+
forkLifecycle?: ForkLifecycle;
|
|
276
|
+
}
|
|
277
|
+
/** Result returned by {@link FrameworkIntegrationHelpers.start}. */
|
|
278
|
+
interface FrameworkRequestHandle extends MiddlewareLoggerResult {
|
|
279
|
+
middlewareOptions: MiddlewareLoggerOptions;
|
|
280
|
+
/**
|
|
281
|
+
* Run the downstream handler inside the integration's storage. When no
|
|
282
|
+
* storage is configured, the callback is invoked directly.
|
|
283
|
+
*/
|
|
284
|
+
runWith: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
285
|
+
}
|
|
286
|
+
/** Helpers returned by {@link defineFrameworkIntegration}. */
|
|
287
|
+
interface FrameworkIntegrationHelpers<TCtx> {
|
|
288
|
+
start: (ctx: TCtx, options?: BaseEvlogOptions) => FrameworkRequestHandle;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Build a manifest-driven framework integration. Captures the boilerplate
|
|
292
|
+
* every middleware shares (request extraction, logger setup, attachment,
|
|
293
|
+
* optional AsyncLocalStorage wrapping). The framework still owns its own
|
|
294
|
+
* middleware function — it just declares *what* to extract and *where* to
|
|
295
|
+
* attach the logger.
|
|
59
296
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```ts
|
|
299
|
+
* const integration = defineFrameworkIntegration<HonoContext>({
|
|
300
|
+
* name: 'hono',
|
|
301
|
+
* extractRequest: (c) => ({
|
|
302
|
+
* method: c.req.method,
|
|
303
|
+
* path: c.req.path,
|
|
304
|
+
* headers: c.req.raw.headers,
|
|
305
|
+
* requestId: c.req.header('x-request-id'),
|
|
306
|
+
* }),
|
|
307
|
+
* attachLogger: (c, logger) => c.set('log', logger),
|
|
308
|
+
* })
|
|
62
309
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
310
|
+
* export function evlog(options?: BaseEvlogOptions): MiddlewareHandler {
|
|
311
|
+
* return async (c, next) => {
|
|
312
|
+
* const { skipped, finish, runWith } = integration.start(c, options)
|
|
313
|
+
* if (skipped) return next()
|
|
314
|
+
* try {
|
|
315
|
+
* await runWith(() => next())
|
|
316
|
+
* await finish({ status: c.res.status })
|
|
317
|
+
* } catch (error) {
|
|
318
|
+
* await finish({ error: error as Error })
|
|
319
|
+
* throw error
|
|
320
|
+
* }
|
|
321
|
+
* }
|
|
322
|
+
* }
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
declare function defineFrameworkIntegration<TCtx>(spec: FrameworkIntegrationSpec<TCtx>): FrameworkIntegrationHelpers<TCtx>;
|
|
326
|
+
//#endregion
|
|
327
|
+
//#region src/shared/severity.d.ts
|
|
328
|
+
/**
|
|
329
|
+
* OpenTelemetry severity numbers per evlog log level.
|
|
330
|
+
* @see https://opentelemetry.io/docs/specs/otel/logs/data-model/#field-severitynumber
|
|
331
|
+
*/
|
|
332
|
+
declare const OTEL_SEVERITY_NUMBER: Record<LogLevel, number>;
|
|
333
|
+
declare const OTEL_SEVERITY_TEXT: Record<LogLevel, string>;
|
|
334
|
+
//#endregion
|
|
335
|
+
//#region src/shared/storage.d.ts
|
|
336
|
+
/**
|
|
337
|
+
* Create a request-scoped `AsyncLocalStorage` and matching `useLogger`
|
|
338
|
+
* accessor. Every framework that exposes `useLogger()` (Express, Fastify,
|
|
339
|
+
* NestJS, SvelteKit) calls this once at module level.
|
|
66
340
|
*
|
|
67
|
-
* @
|
|
341
|
+
* @param contextHint - Appended to the error message when `useLogger()` is
|
|
342
|
+
* called outside of a request, e.g. `"middleware context. Make sure
|
|
343
|
+
* app.use(evlog()) is registered before your routes."`.
|
|
68
344
|
*/
|
|
69
345
|
declare function createLoggerStorage(contextHint: string): {
|
|
70
346
|
storage: AsyncLocalStorage<RequestLogger<Record<string, unknown>>>;
|
|
71
347
|
useLogger: <T extends object = Record<string, unknown>>() => RequestLogger<T>;
|
|
72
348
|
};
|
|
73
349
|
//#endregion
|
|
74
|
-
export { BaseEvlogOptions, ForkBackgroundLoggerOptions, ForkLifecycle, MiddlewareLoggerOptions, MiddlewareLoggerResult, attachForkToLogger, createLoggerStorage, createMiddlewareLogger, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, getServiceForPath, runEnrichAndDrain, shouldLog };
|
|
350
|
+
export { AttributeValueKind, BaseEvlogOptions, ClientLogContext, ConfigField, DrainOptions, EnricherDefinition, EnricherOptions, EvlogConfig, EvlogPlugin, ExtractedRequest, ForkBackgroundLoggerOptions, ForkLifecycle, FrameworkIntegrationHelpers, FrameworkIntegrationSpec, FrameworkRequestHandle, HttpDrainOptions, HttpDrainRequest, HttpPostOptions, MiddlewareLoggerOptions, MiddlewareLoggerResult, OTEL_SEVERITY_NUMBER, OTEL_SEVERITY_TEXT, PluginRunner, PluginSetupContext, RequestFinishContext, RequestLifecycleContext, TypedAttributeValue, attachForkToLogger, composeDrains, composeEnrichers, composeKeep, composePlugins, createLoggerStorage, createMiddlewareLogger, createPluginRunner, defineDrain, defineEnricher, defineEvlog, defineFrameworkIntegration, defineHttpDrain, definePlugin, drainPlugin, enricherPlugin, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, getEmptyPluginRunner, getHeader, getRuntimeConfig, getServiceForPath, httpPost, mergeEventField, normalizeNumber, resolveAdapterConfig, resolveMiddlewarePluginRunner, runEnrichAndDrain, shouldLog, toLoggerConfig, toMiddlewareOptions, toOtlpAttributeValue, toTypedAttributeValue };
|
|
75
351
|
//# sourceMappingURL=toolkit.d.mts.map
|
package/dist/toolkit.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolkit.d.mts","names":[],"sources":["../src/shared/fork.ts","../src/shared/headers.ts","../src/shared/storage.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"toolkit.d.mts","names":[],"sources":["../src/shared/compose.ts","../src/shared/config.ts","../src/shared/drain.ts","../src/shared/event.ts","../src/shared/fork.ts","../src/shared/headers.ts","../src/shared/http.ts","../src/shared/integration.ts","../src/shared/severity.ts","../src/shared/storage.ts"],"mappings":"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"}
|
package/dist/toolkit.mjs
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
6
|
-
import { t as
|
|
7
|
-
|
|
1
|
+
import { D as drainPlugin, E as definePlugin, O as enricherPlugin, T as createPluginRunner, k as getEmptyPluginRunner } from "./audit--n0QRR2Y.mjs";
|
|
2
|
+
import { i as normalizeNumber, n as extractSafeNodeHeaders, r as getHeader, t as extractSafeHeaders } from "./headers-CU-QqnYg.mjs";
|
|
3
|
+
import { t as extractErrorStatus } from "./errors-BQgyQ9xe.mjs";
|
|
4
|
+
import { n as toLoggerConfig, r as toMiddlewareOptions, t as defineEvlog } from "./define-D6OJdSUH.mjs";
|
|
5
|
+
import { n as shouldLog, t as getServiceForPath } from "./routes-B48wm7Pb.mjs";
|
|
6
|
+
import { a as resolveAdapterConfig, i as getRuntimeConfig, n as defineHttpDrain, r as httpPost, t as defineDrain } from "./drain-ByWUeOQC.mjs";
|
|
7
|
+
import { n as toOtlpAttributeValue, r as toTypedAttributeValue, t as mergeEventField } from "./event-ef-5Dbxg.mjs";
|
|
8
|
+
import { n as OTEL_SEVERITY_TEXT, t as OTEL_SEVERITY_NUMBER } from "./severity-BYWZ96Sb.mjs";
|
|
9
|
+
import { a as composePlugins, i as composeKeep, n as composeDrains, r as composeEnrichers, t as defineEnricher } from "./enricher-BA6viylF.mjs";
|
|
10
|
+
import { a as runEnrichAndDrain, i as resolveMiddlewarePluginRunner, n as forkBackgroundLogger, r as createMiddlewareLogger, t as attachForkToLogger } from "./fork-D44V93-K.mjs";
|
|
11
|
+
import { t as defineFrameworkIntegration } from "./integration-Bz8X6_Lb.mjs";
|
|
12
|
+
import { t as createLoggerStorage } from "./storage-BT-3fT1-.mjs";
|
|
13
|
+
export { OTEL_SEVERITY_NUMBER, OTEL_SEVERITY_TEXT, attachForkToLogger, composeDrains, composeEnrichers, composeKeep, composePlugins, createLoggerStorage, createMiddlewareLogger, createPluginRunner, defineDrain, defineEnricher, defineEvlog, defineFrameworkIntegration, defineHttpDrain, definePlugin, drainPlugin, enricherPlugin, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, getEmptyPluginRunner, getHeader, getRuntimeConfig, getServiceForPath, httpPost, mergeEventField, normalizeNumber, resolveAdapterConfig, resolveMiddlewarePluginRunner, runEnrichAndDrain, shouldLog, toLoggerConfig, toMiddlewareOptions, toOtlpAttributeValue, toTypedAttributeValue };
|
package/dist/types.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as SamplingRates, A as AuditFields, B as H3EventContext, F as DrainContext, G as LoggerConfig, H as InternalFields, I as EnrichContext, J as RequestLogEntry, K as ParsedError, L as EnvironmentContext, M as AuditTarget, N as BaseWideEvent, P as DeepPartial, Q as SamplingConfig, R as ErrorOptions, U as Log, V as IngestPayload, W as LogLevel, X as RequestLoggerOptions, Y as RequestLogger, Z as RouteConfig, et as ServerEvent, it as WideEvent, j as AuditLoggerMethod, k as AuditActor, nt as TailSamplingContext, q as RedactConfig, rt as TransportConfig, tt as TailSamplingCondition, z as FieldContext } from "./audit-
|
|
1
|
+
import { $ as SamplingRates, A as AuditFields, B as H3EventContext, F as DrainContext, G as LoggerConfig, H as InternalFields, I as EnrichContext, J as RequestLogEntry, K as ParsedError, L as EnvironmentContext, M as AuditTarget, N as BaseWideEvent, P as DeepPartial, Q as SamplingConfig, R as ErrorOptions, U as Log, V as IngestPayload, W as LogLevel, X as RequestLoggerOptions, Y as RequestLogger, Z as RouteConfig, et as ServerEvent, it as WideEvent, j as AuditLoggerMethod, k as AuditActor, nt as TailSamplingContext, q as RedactConfig, rt as TransportConfig, tt as TailSamplingCondition, z as FieldContext } from "./audit-CJl-wZ10.mjs";
|
|
2
2
|
export { AuditActor, AuditFields, AuditLoggerMethod, AuditTarget, BaseWideEvent, DeepPartial, DrainContext, EnrichContext, EnvironmentContext, ErrorOptions, FieldContext, H3EventContext, IngestPayload, InternalFields, Log, LogLevel, LoggerConfig, ParsedError, RedactConfig, RequestLogEntry, RequestLogger, RequestLoggerOptions, RouteConfig, SamplingConfig, SamplingRates, ServerEvent, TailSamplingCondition, TailSamplingContext, TransportConfig, WideEvent };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as RequestLogger, et as ServerEvent } from "./audit-
|
|
1
|
+
import { Y as RequestLogger, et as ServerEvent } from "./audit-CJl-wZ10.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/runtime/server/useLogger.d.ts
|
|
4
4
|
/**
|
|
@@ -36,4 +36,4 @@ import { Y as RequestLogger, et as ServerEvent } from "./audit-CTIviX3P.mjs";
|
|
|
36
36
|
declare function useLogger<T extends object = Record<string, unknown>>(event: ServerEvent, service?: string): RequestLogger<T>;
|
|
37
37
|
//#endregion
|
|
38
38
|
export { useLogger as t };
|
|
39
|
-
//# sourceMappingURL=useLogger-
|
|
39
|
+
//# sourceMappingURL=useLogger-Cb1R6bQE.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLogger-
|
|
1
|
+
{"version":3,"file":"useLogger-Cb1R6bQE.d.mts","names":[],"sources":["../src/runtime/server/useLogger.ts"],"mappings":";;;;;AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,SAAA,oBAA6B,MAAA,kBAAA,CAAyB,KAAA,EAAO,WAAA,EAAa,OAAA,YAAmB,aAAA,CAAc,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as EnvironmentContext, W as LogLevel } from "./audit-
|
|
1
|
+
import { L as EnvironmentContext, W as LogLevel } from "./audit-CJl-wZ10.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/utils.d.ts
|
|
4
4
|
declare function formatDuration(ms: number): string;
|
|
@@ -52,4 +52,4 @@ declare function filterSafeHeaders(headers: Record<string, string>): Record<stri
|
|
|
52
52
|
declare function matchesPattern(path: string, pattern: string): boolean;
|
|
53
53
|
//#endregion
|
|
54
54
|
export { escapeFormatString as a, getConsoleMethod as c, isBrowser as d, isClient as f, matchesPattern as g, isServer as h, detectEnvironment as i, getCssLevelColor as l, isLevelEnabled as m, colors as n, filterSafeHeaders as o, isDev as p, cssColors as r, formatDuration as s, SENSITIVE_HEADERS as t, getLevelColor as u };
|
|
55
|
-
//# sourceMappingURL=utils-
|
|
55
|
+
//# sourceMappingURL=utils-gQCeZMbg.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-
|
|
1
|
+
{"version":3,"file":"utils-gQCeZMbg.d.mts","names":[],"sources":["../src/utils.ts"],"mappings":";;;iBAEgB,cAAA,CAAe,EAAA;AAAA,iBAOf,QAAA,CAAA;AAAA,iBAIA,QAAA,CAAA;AAAA,iBAIA,SAAA,CAAA;AAAA,iBAOA,KAAA,CAAA;AAAA,iBAUA,iBAAA,CAAA,GAAqB,OAAA,CAAQ,kBAAA;;AAzB7C;;iBAsDgB,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,QAAA;AAAA,iBAI1C,gBAAA,CAAiB,KAAA,EAAO,QAAA,GAAW,QAAA;AAAA,cAItC,MAAA;EAAA;;;;;;;;;;;;iBAgBG,aAAA,CAAc,KAAA;AAAA,cAIjB,SAAA;EAAA;;;;;;;;iBAYG,gBAAA,CAAiB,KAAA;;;;;;iBASjB,kBAAA,CAAmB,GAAA;;cAKtB,iBAAA;AAAA,iBASG,iBAAA,CAAkB,OAAA,EAAS,MAAA,mBAAyB,MAAA;;;;;iBAkBpD,cAAA,CAAe,IAAA,UAAc,OAAA"}
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as escapeFormatString, c as getConsoleMethod, d as isBrowser, f as isClient, g as matchesPattern, h as isServer, i as detectEnvironment, l as getCssLevelColor, m as isLevelEnabled, n as colors, o as filterSafeHeaders, p as isDev, r as cssColors, s as formatDuration, t as SENSITIVE_HEADERS, u as getLevelColor } from "./utils-
|
|
1
|
+
import { a as escapeFormatString, c as getConsoleMethod, d as isBrowser, f as isClient, g as matchesPattern, h as isServer, i as detectEnvironment, l as getCssLevelColor, m as isLevelEnabled, n as colors, o as filterSafeHeaders, p as isDev, r as cssColors, s as formatDuration, t as SENSITIVE_HEADERS, u as getLevelColor } from "./utils-gQCeZMbg.mjs";
|
|
2
2
|
export { SENSITIVE_HEADERS, colors, cssColors, detectEnvironment, escapeFormatString, filterSafeHeaders, formatDuration, getConsoleMethod, getCssLevelColor, getLevelColor, isBrowser, isClient, isDev, isLevelEnabled, isServer, matchesPattern };
|
package/dist/vite/index.d.mts
CHANGED
package/dist/vite/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as walk, i as shouldTransform, n as createStripPlugin, o as MagicString, r as TRANSFORM_FILTER, t as createSourceLocationPlugin } from "../source-location-
|
|
1
|
+
import { a as walk, i as shouldTransform, n as createStripPlugin, o as MagicString, r as TRANSFORM_FILTER, t as createSourceLocationPlugin } from "../source-location-Dco0cRTz.mjs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { existsSync, writeFileSync } from "node:fs";
|
|
4
4
|
//#region src/vite/auto-init.ts
|
package/dist/workers.d.mts
CHANGED
package/dist/workers.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as initLogger, g as createRequestLogger } from "./audit--n0QRR2Y.mjs";
|
|
2
2
|
//#region src/workers/index.ts
|
|
3
3
|
function isRecord(value) {
|
|
4
4
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evlog",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.15.0",
|
|
4
|
+
"description": "Modern TypeScript logger — simple logs, wide events, structured errors. Built for scripts, libraries, jobs, edge, and HTTP. One drain pipeline everywhere.",
|
|
5
5
|
"author": "HugoRCD <contact@hrcd.fr>",
|
|
6
6
|
"homepage": "https://evlog.dev",
|
|
7
7
|
"repository": {
|
|
@@ -302,22 +302,6 @@
|
|
|
302
302
|
"dist",
|
|
303
303
|
"README.md"
|
|
304
304
|
],
|
|
305
|
-
"scripts": {
|
|
306
|
-
"build": "tsdown",
|
|
307
|
-
"dev": "tsdown --watch",
|
|
308
|
-
"dev:prepare": "tsdown",
|
|
309
|
-
"lint": "eslint .",
|
|
310
|
-
"lint:fix": "eslint . --fix",
|
|
311
|
-
"bench": "vitest bench bench/core/ && cp bench/results.json bench/baseline/bench.json && bun bench/scripts/report.ts",
|
|
312
|
-
"bench:compare": "vitest bench bench/comparison/ && cp bench/results.json bench/baseline/comparison.json && bun bench/scripts/report.ts",
|
|
313
|
-
"bench:report": "bun bench/scripts/report.ts",
|
|
314
|
-
"size": "bun bench/scripts/size.ts",
|
|
315
|
-
"size:json": "bun bench/scripts/size.ts --json",
|
|
316
|
-
"test": "vitest run",
|
|
317
|
-
"test:watch": "vitest watch",
|
|
318
|
-
"test:coverage": "vitest run --coverage",
|
|
319
|
-
"typecheck": "echo 'Typecheck handled by build'"
|
|
320
|
-
},
|
|
321
305
|
"devDependencies": {
|
|
322
306
|
"@tanstack/start-client-core": "^1.167.20",
|
|
323
307
|
"acorn": "^8.16.0",
|
|
@@ -341,7 +325,9 @@
|
|
|
341
325
|
"pino": "^10.3.1",
|
|
342
326
|
"react-router": "^7.14.2",
|
|
343
327
|
"supertest": "^7.2.2",
|
|
328
|
+
"tinyglobby": "^0.2.16",
|
|
344
329
|
"tsdown": "^0.21.10",
|
|
330
|
+
"tsx": "^4.20.7",
|
|
345
331
|
"magic-string": "^0.30.21",
|
|
346
332
|
"typescript": "^6.0.3",
|
|
347
333
|
"vite": "^8.0.10",
|
|
@@ -415,5 +401,22 @@
|
|
|
415
401
|
"@tanstack/start-client-core": {
|
|
416
402
|
"optional": true
|
|
417
403
|
}
|
|
404
|
+
},
|
|
405
|
+
"scripts": {
|
|
406
|
+
"build": "tsdown",
|
|
407
|
+
"dev": "tsdown --watch",
|
|
408
|
+
"dev:prepare": "tsdown",
|
|
409
|
+
"lint": "eslint .",
|
|
410
|
+
"lint:fix": "eslint . --fix",
|
|
411
|
+
"bench": "vitest bench bench/core/ && cp bench/results.json bench/baseline/bench.json && tsx bench/scripts/report.ts",
|
|
412
|
+
"bench:compare": "vitest bench bench/comparison/ && cp bench/results.json bench/baseline/comparison.json && tsx bench/scripts/report.ts",
|
|
413
|
+
"bench:report": "tsx bench/scripts/report.ts",
|
|
414
|
+
"size": "tsx bench/scripts/size.ts",
|
|
415
|
+
"size:json": "tsx bench/scripts/size.ts --json",
|
|
416
|
+
"test": "vitest run",
|
|
417
|
+
"test:watch": "vitest watch",
|
|
418
|
+
"test:coverage": "vitest run --coverage",
|
|
419
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
420
|
+
"typecheck": "echo 'Typecheck handled by build'"
|
|
418
421
|
}
|
|
419
|
-
}
|
|
422
|
+
}
|
package/dist/_drain-CmCtsuF6.mjs
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
//#region src/adapters/_drain.ts
|
|
2
|
-
/**
|
|
3
|
-
* Build a drain callback for `evlog:drain` (or `initLogger({ drain })`).
|
|
4
|
-
* The returned function is async so `resolve` can load Nitro runtime config; hosts typically attach
|
|
5
|
-
* the resulting promise to `waitUntil` so the HTTP response is not blocked (see Nitro plugin).
|
|
6
|
-
*/
|
|
7
|
-
function defineDrain(options) {
|
|
8
|
-
return async (ctx) => {
|
|
9
|
-
const contexts = Array.isArray(ctx) ? ctx : [ctx];
|
|
10
|
-
if (contexts.length === 0) return;
|
|
11
|
-
const config = await options.resolve();
|
|
12
|
-
if (!config) return;
|
|
13
|
-
try {
|
|
14
|
-
await options.send(contexts.map((c) => c.event), config);
|
|
15
|
-
} catch (error) {
|
|
16
|
-
console.error(`[evlog/${options.name}] Failed to send events:`, error);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { defineDrain as t };
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=_drain-CmCtsuF6.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_drain-CmCtsuF6.mjs","names":[],"sources":["../src/adapters/_drain.ts"],"sourcesContent":["import type { DrainContext, WideEvent } from '../types'\n\nexport interface DrainOptions<TConfig> {\n name: string\n resolve: () => TConfig | null | Promise<TConfig | null>\n send: (events: WideEvent[], config: TConfig) => Promise<void>\n}\n\n/**\n * Build a drain callback for `evlog:drain` (or `initLogger({ drain })`).\n * The returned function is async so `resolve` can load Nitro runtime config; hosts typically attach\n * the resulting promise to `waitUntil` so the HTTP response is not blocked (see Nitro plugin).\n */\nexport function defineDrain<TConfig>(options: DrainOptions<TConfig>): (ctx: DrainContext | DrainContext[]) => Promise<void> {\n return async (ctx: DrainContext | DrainContext[]) => {\n const contexts = Array.isArray(ctx) ? ctx : [ctx]\n if (contexts.length === 0) return\n\n const config = await options.resolve()\n if (!config) return\n\n try {\n await options.send(contexts.map(c => c.event), config)\n } catch (error) {\n console.error(`[evlog/${options.name}] Failed to send events:`, error)\n }\n }\n}\n"],"mappings":";;;;;;AAaA,SAAgB,YAAqB,SAAuF;AAC1H,QAAO,OAAO,QAAuC;EACnD,MAAM,WAAW,MAAM,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI;AACjD,MAAI,SAAS,WAAW,EAAG;EAE3B,MAAM,SAAS,MAAM,QAAQ,SAAS;AACtC,MAAI,CAAC,OAAQ;AAEb,MAAI;AACF,SAAM,QAAQ,KAAK,SAAS,KAAI,MAAK,EAAE,MAAM,EAAE,OAAO;WAC/C,OAAO;AACd,WAAQ,MAAM,UAAU,QAAQ,KAAK,2BAA2B,MAAM"}
|
package/dist/_http-BY1e9pwC.mjs
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { t as getNitroRuntimeConfigRecord } from "./nitroConfigBridge-C37lXaNm.mjs";
|
|
2
|
-
//#region src/adapters/_config.ts
|
|
3
|
-
/**
|
|
4
|
-
* Adapter runtime-config reads go through `getNitroRuntimeConfigRecord` in
|
|
5
|
-
* `shared/nitroConfigBridge.ts` (documented there — Workers-safe dynamic imports).
|
|
6
|
-
*
|
|
7
|
-
* Drain handlers remain non-blocking when the host provides `waitUntil`.
|
|
8
|
-
*/
|
|
9
|
-
function getRuntimeConfig() {
|
|
10
|
-
return getNitroRuntimeConfigRecord();
|
|
11
|
-
}
|
|
12
|
-
async function resolveAdapterConfig(namespace, fields, overrides) {
|
|
13
|
-
const runtimeConfig = shouldProbeRuntimeConfig(fields, overrides) ? await getRuntimeConfig() : void 0;
|
|
14
|
-
const evlogNs = runtimeConfig?.evlog?.[namespace];
|
|
15
|
-
const rootNs = runtimeConfig?.[namespace];
|
|
16
|
-
const config = {};
|
|
17
|
-
for (const { key, env } of fields) config[key] = overrides?.[key] ?? evlogNs?.[key] ?? rootNs?.[key] ?? resolveEnv(env);
|
|
18
|
-
return config;
|
|
19
|
-
}
|
|
20
|
-
function shouldProbeRuntimeConfig(fields, overrides) {
|
|
21
|
-
return fields.some(({ key, env }) => {
|
|
22
|
-
if (overrides?.[key] !== void 0) return false;
|
|
23
|
-
if (!env) return false;
|
|
24
|
-
return resolveEnv(env) === void 0;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function resolveEnv(envKeys) {
|
|
28
|
-
if (!envKeys) return void 0;
|
|
29
|
-
for (const key of envKeys) {
|
|
30
|
-
const val = process.env[key];
|
|
31
|
-
if (val) return val;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/adapters/_http.ts
|
|
36
|
-
function isRetryable(error) {
|
|
37
|
-
if (error instanceof DOMException && error.name === "AbortError") return true;
|
|
38
|
-
if (error instanceof TypeError) return true;
|
|
39
|
-
if (error instanceof Error) {
|
|
40
|
-
const match = error.message.match(/API error: (\d+)/);
|
|
41
|
-
if (match) return Number.parseInt(match[1]) >= 500;
|
|
42
|
-
}
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
async function httpPost({ url, headers, body, timeout, label, retries = 2 }) {
|
|
46
|
-
const normalizedRetries = Number.isFinite(retries) && retries >= 0 ? Math.floor(retries) : 2;
|
|
47
|
-
let lastError;
|
|
48
|
-
for (let attempt = 0; attempt <= normalizedRetries; attempt++) {
|
|
49
|
-
const controller = new AbortController();
|
|
50
|
-
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
51
|
-
try {
|
|
52
|
-
const response = await fetch(url, {
|
|
53
|
-
method: "POST",
|
|
54
|
-
headers,
|
|
55
|
-
body,
|
|
56
|
-
signal: controller.signal
|
|
57
|
-
});
|
|
58
|
-
if (!response.ok) {
|
|
59
|
-
const text = await response.text().catch(() => "Unknown error");
|
|
60
|
-
const safeText = text.length > 200 ? `${text.slice(0, 200)}...[truncated]` : text;
|
|
61
|
-
throw new Error(`${label} API error: ${response.status} ${response.statusText} - ${safeText}`);
|
|
62
|
-
}
|
|
63
|
-
clearTimeout(timeoutId);
|
|
64
|
-
return;
|
|
65
|
-
} catch (error) {
|
|
66
|
-
clearTimeout(timeoutId);
|
|
67
|
-
if (error instanceof DOMException && error.name === "AbortError") lastError = /* @__PURE__ */ new Error(`${label} request timed out after ${timeout}ms`);
|
|
68
|
-
else lastError = error;
|
|
69
|
-
if (!isRetryable(error) || attempt === normalizedRetries) throw lastError;
|
|
70
|
-
await new Promise((r) => setTimeout(r, 200 * 2 ** attempt));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
throw lastError;
|
|
74
|
-
}
|
|
75
|
-
//#endregion
|
|
76
|
-
export { resolveAdapterConfig as n, httpPost as t };
|
|
77
|
-
|
|
78
|
-
//# sourceMappingURL=_http-BY1e9pwC.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_http-BY1e9pwC.mjs","names":[],"sources":["../src/adapters/_config.ts","../src/adapters/_http.ts"],"sourcesContent":["import { getNitroRuntimeConfigRecord } from '../shared/nitroConfigBridge'\n\n/**\n * Adapter runtime-config reads go through `getNitroRuntimeConfigRecord` in\n * `shared/nitroConfigBridge.ts` (documented there — Workers-safe dynamic imports).\n *\n * Drain handlers remain non-blocking when the host provides `waitUntil`.\n */\n\nexport function getRuntimeConfig(): Promise<Record<string, any> | undefined> {\n return getNitroRuntimeConfigRecord()\n}\n\nexport interface ConfigField<T> {\n key: keyof T & string\n env?: string[]\n}\n\nexport async function resolveAdapterConfig<T>(\n namespace: string,\n fields: ConfigField<T>[],\n overrides?: Partial<T>,\n): Promise<Partial<T>> {\n const runtimeConfig = shouldProbeRuntimeConfig(fields, overrides)\n ? await getRuntimeConfig()\n : undefined\n const evlogNs = runtimeConfig?.evlog?.[namespace]\n const rootNs = runtimeConfig?.[namespace]\n\n const config: Record<string, unknown> = {}\n\n for (const { key, env } of fields) {\n config[key] =\n overrides?.[key]\n ?? evlogNs?.[key]\n ?? rootNs?.[key]\n ?? resolveEnv(env)\n }\n\n return config as Partial<T>\n}\n\nfunction shouldProbeRuntimeConfig<T>(\n fields: ConfigField<T>[],\n overrides?: Partial<T>,\n): boolean {\n // Optional tuning fields (e.g. timeout/retries) should not trigger Nitro\n // virtual-module imports when env/overrides already resolve the env-backed\n // adapter fields in non-Nitro runtimes.\n return fields.some(({ key, env }) => {\n if (overrides?.[key] !== undefined) return false\n if (!env) return false\n return resolveEnv(env) === undefined\n })\n}\n\nfunction resolveEnv(envKeys?: string[]): string | undefined {\n if (!envKeys) return undefined\n for (const key of envKeys) {\n const val = process.env[key]\n if (val) return val\n }\n return undefined\n}\n","export interface HttpPostOptions {\n url: string\n headers: Record<string, string>\n body: string\n timeout: number\n label: string\n retries?: number\n}\n\nfunction isRetryable(error: unknown): boolean {\n if (error instanceof DOMException && error.name === 'AbortError') return true\n if (error instanceof TypeError) return true\n if (error instanceof Error) {\n const match = error.message.match(/API error: (\\d+)/)\n if (match) return Number.parseInt(match[1]) >= 500\n }\n return false\n}\n\nexport async function httpPost({ url, headers, body, timeout, label, retries = 2 }: HttpPostOptions): Promise<void> {\n const normalizedRetries = Number.isFinite(retries) && retries >= 0 ? Math.floor(retries) : 2\n\n let lastError: Error | undefined\n\n for (let attempt = 0; attempt <= normalizedRetries; attempt++) {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), timeout)\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body,\n signal: controller.signal,\n })\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error')\n const safeText = text.length > 200 ? `${text.slice(0, 200)}...[truncated]` : text\n throw new Error(`${label} API error: ${response.status} ${response.statusText} - ${safeText}`)\n }\n\n clearTimeout(timeoutId)\n return\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n lastError = new Error(`${label} request timed out after ${timeout}ms`)\n } else {\n lastError = error as Error\n }\n\n if (!isRetryable(error) || attempt === normalizedRetries) {\n throw lastError\n }\n\n await new Promise<void>(r => setTimeout(r, 200 * 2 ** attempt))\n }\n }\n\n throw lastError!\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,mBAA6D;AAC3E,QAAO,6BAA6B;;AAQtC,eAAsB,qBACpB,WACA,QACA,WACqB;CACrB,MAAM,gBAAgB,yBAAyB,QAAQ,UAAU,GAC7D,MAAM,kBAAkB,GACxB,KAAA;CACJ,MAAM,UAAU,eAAe,QAAQ;CACvC,MAAM,SAAS,gBAAgB;CAE/B,MAAM,SAAkC,EAAE;AAE1C,MAAK,MAAM,EAAE,KAAK,SAAS,OACzB,QAAO,OACL,YAAY,QACT,UAAU,QACV,SAAS,QACT,WAAW,IAAI;AAGtB,QAAO;;AAGT,SAAS,yBACP,QACA,WACS;AAIT,QAAO,OAAO,MAAM,EAAE,KAAK,UAAU;AACnC,MAAI,YAAY,SAAS,KAAA,EAAW,QAAO;AAC3C,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,WAAW,IAAI,KAAK,KAAA;GAC3B;;AAGJ,SAAS,WAAW,SAAwC;AAC1D,KAAI,CAAC,QAAS,QAAO,KAAA;AACrB,MAAK,MAAM,OAAO,SAAS;EACzB,MAAM,MAAM,QAAQ,IAAI;AACxB,MAAI,IAAK,QAAO;;;;;ACnDpB,SAAS,YAAY,OAAyB;AAC5C,KAAI,iBAAiB,gBAAgB,MAAM,SAAS,aAAc,QAAO;AACzE,KAAI,iBAAiB,UAAW,QAAO;AACvC,KAAI,iBAAiB,OAAO;EAC1B,MAAM,QAAQ,MAAM,QAAQ,MAAM,mBAAmB;AACrD,MAAI,MAAO,QAAO,OAAO,SAAS,MAAM,GAAG,IAAI;;AAEjD,QAAO;;AAGT,eAAsB,SAAS,EAAE,KAAK,SAAS,MAAM,SAAS,OAAO,UAAU,KAAqC;CAClH,MAAM,oBAAoB,OAAO,SAAS,QAAQ,IAAI,WAAW,IAAI,KAAK,MAAM,QAAQ,GAAG;CAE3F,IAAI;AAEJ,MAAK,IAAI,UAAU,GAAG,WAAW,mBAAmB,WAAW;EAC7D,MAAM,aAAa,IAAI,iBAAiB;EACxC,MAAM,YAAY,iBAAiB,WAAW,OAAO,EAAE,QAAQ;AAE/D,MAAI;GACF,MAAM,WAAW,MAAM,MAAM,KAAK;IAChC,QAAQ;IACR;IACA;IACA,QAAQ,WAAW;IACpB,CAAC;AAEF,OAAI,CAAC,SAAS,IAAI;IAChB,MAAM,OAAO,MAAM,SAAS,MAAM,CAAC,YAAY,gBAAgB;IAC/D,MAAM,WAAW,KAAK,SAAS,MAAM,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC,kBAAkB;AAC7E,UAAM,IAAI,MAAM,GAAG,MAAM,cAAc,SAAS,OAAO,GAAG,SAAS,WAAW,KAAK,WAAW;;AAGhG,gBAAa,UAAU;AACvB;WACO,OAAO;AACd,gBAAa,UAAU;AAEvB,OAAI,iBAAiB,gBAAgB,MAAM,SAAS,aAClD,6BAAY,IAAI,MAAM,GAAG,MAAM,2BAA2B,QAAQ,IAAI;OAEtE,aAAY;AAGd,OAAI,CAAC,YAAY,MAAM,IAAI,YAAY,kBACrC,OAAM;AAGR,SAAM,IAAI,SAAc,MAAK,WAAW,GAAG,MAAM,KAAK,QAAQ,CAAC;;;AAInE,OAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_severity-CQijvfhU.mjs","names":[],"sources":["../src/adapters/_severity.ts"],"sourcesContent":["import type { LogLevel } from '../types'\n\nexport const OTEL_SEVERITY_NUMBER: Record<LogLevel, number> = {\n debug: 5,\n info: 9,\n warn: 13,\n error: 17,\n}\n\nexport const OTEL_SEVERITY_TEXT: Record<LogLevel, string> = {\n debug: 'DEBUG',\n info: 'INFO',\n warn: 'WARN',\n error: 'ERROR',\n}\n"],"mappings":";AAEA,MAAa,uBAAiD;CAC5D,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACR;AAED,MAAa,qBAA+C;CAC1D,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACR"}
|