evlog 2.4.1 → 2.6.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/README.md +2 -1
- package/dist/{_http-DVDwNag0.mjs → _http-DHpGetLZ.mjs} +2 -6
- package/dist/{_http-DVDwNag0.mjs.map → _http-DHpGetLZ.mjs.map} +1 -1
- package/dist/{_severity-78FkT5MD.mjs → _severity-Q1BuITU_.mjs} +2 -2
- package/dist/{_severity-78FkT5MD.mjs.map → _severity-Q1BuITU_.mjs.map} +1 -1
- package/dist/adapters/axiom.d.mts +1 -1
- package/dist/adapters/axiom.d.mts.map +1 -1
- package/dist/adapters/axiom.mjs +2 -3
- package/dist/adapters/axiom.mjs.map +1 -1
- package/dist/adapters/better-stack.d.mts +1 -1
- package/dist/adapters/better-stack.d.mts.map +1 -1
- package/dist/adapters/better-stack.mjs +2 -3
- package/dist/adapters/better-stack.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 +14 -11
- package/dist/adapters/otlp.mjs.map +1 -1
- package/dist/adapters/posthog.d.mts +1 -1
- package/dist/adapters/posthog.d.mts.map +1 -1
- package/dist/adapters/posthog.mjs +2 -3
- 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 +3 -4
- package/dist/adapters/sentry.mjs.map +1 -1
- package/dist/browser.d.mts +1 -1
- package/dist/browser.mjs +1 -2
- package/dist/browser.mjs.map +1 -1
- package/dist/{dist-By0jiJRA.mjs → dist-BsWcv7B8.mjs} +3 -4
- package/dist/{dist-By0jiJRA.mjs.map → dist-BsWcv7B8.mjs.map} +1 -1
- package/dist/elysia/index.d.mts +2 -2
- package/dist/elysia/index.mjs +2 -3
- package/dist/elysia/index.mjs.map +1 -1
- package/dist/enrichers.d.mts +1 -1
- package/dist/enrichers.mjs +1 -1
- package/dist/enrichers.mjs.map +1 -1
- package/dist/error-iV3zJCY3.d.mts +65 -0
- package/dist/error-iV3zJCY3.d.mts.map +1 -0
- package/dist/error.d.mts +2 -65
- package/dist/error.mjs +1 -2
- package/dist/error.mjs.map +1 -1
- package/dist/errors-BJRXUfMg.mjs +18 -0
- package/dist/errors-BJRXUfMg.mjs.map +1 -0
- package/dist/errors-CKSfdvLa.d.mts +39 -0
- package/dist/errors-CKSfdvLa.d.mts.map +1 -0
- package/dist/express/index.d.mts +2 -2
- package/dist/express/index.mjs +3 -4
- 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 +3 -4
- package/dist/fastify/index.mjs.map +1 -1
- package/dist/{headers-CXOd5EyZ.mjs → headers-Ba1eKT3i.mjs} +6 -6
- package/dist/headers-Ba1eKT3i.mjs.map +1 -0
- package/dist/hono/index.d.mts +2 -2
- package/dist/hono/index.mjs +2 -3
- package/dist/hono/index.mjs.map +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +1 -2
- package/dist/logger-CvDYZUze.d.mts +59 -0
- package/dist/logger-CvDYZUze.d.mts.map +1 -0
- package/dist/logger.d.mts +2 -59
- package/dist/logger.mjs +45 -3
- package/dist/logger.mjs.map +1 -1
- package/dist/middleware-hZqyXoSk.d.mts +75 -0
- package/dist/middleware-hZqyXoSk.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/client.mjs +2 -4
- package/dist/next/client.mjs.map +1 -1
- package/dist/next/index.d.mts +4 -4
- package/dist/next/index.d.mts.map +1 -1
- package/dist/next/index.mjs +2 -6
- package/dist/next/index.mjs.map +1 -1
- package/dist/nitro/errorHandler.mjs +3 -3
- package/dist/nitro/errorHandler.mjs.map +1 -1
- package/dist/nitro/module.d.mts +2 -2
- package/dist/nitro/module.mjs +1 -2
- package/dist/nitro/module.mjs.map +1 -1
- package/dist/nitro/plugin.mjs +3 -4
- package/dist/nitro/plugin.mjs.map +1 -1
- package/dist/nitro/v3/errorHandler.mjs +4 -4
- package/dist/nitro/v3/errorHandler.mjs.map +1 -1
- package/dist/nitro/v3/index.mjs +1 -2
- package/dist/nitro/v3/middleware.mjs +1 -2
- package/dist/nitro/v3/middleware.mjs.map +1 -1
- package/dist/nitro/v3/module.d.mts +1 -1
- package/dist/nitro/v3/module.mjs +4 -3
- package/dist/nitro/v3/module.mjs.map +1 -1
- package/dist/nitro/v3/plugin.d.mts +3 -1
- package/dist/nitro/v3/plugin.mjs +4 -5
- package/dist/nitro/v3/plugin.mjs.map +1 -1
- package/dist/nitro/v3/useLogger.d.mts +1 -1
- package/dist/nitro/v3/useLogger.mjs +1 -1
- package/dist/nitro/v3/useLogger.mjs.map +1 -1
- package/dist/{nitro-BRisWfGy.d.mts → nitro-CGGTUned.d.mts} +2 -2
- package/dist/nitro-CGGTUned.d.mts.map +1 -0
- package/dist/{nitro-Da8tEfJ3.mjs → nitro-D1pPm37T.mjs} +4 -9
- package/dist/nitro-D1pPm37T.mjs.map +1 -0
- package/dist/nuxt/module.d.mts +1 -1
- package/dist/nuxt/module.mjs +2 -5
- package/dist/nuxt/module.mjs.map +1 -1
- package/dist/parseError-BztqcPwZ.d.mts +7 -0
- package/dist/parseError-BztqcPwZ.d.mts.map +1 -0
- package/dist/pipeline.mjs +1 -1
- package/dist/{routes-BNbrnm14.mjs → routes-CE3_c-iZ.mjs} +2 -3
- package/dist/{routes-BNbrnm14.mjs.map → routes-CE3_c-iZ.mjs.map} +1 -1
- package/dist/runtime/client/log.d.mts +1 -1
- package/dist/runtime/client/log.d.mts.map +1 -1
- package/dist/runtime/client/log.mjs +4 -11
- package/dist/runtime/client/log.mjs.map +1 -1
- package/dist/runtime/client/plugin.mjs +1 -2
- package/dist/runtime/client/plugin.mjs.map +1 -1
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs +1 -2
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs.map +1 -1
- package/dist/runtime/server/useLogger.d.mts +2 -39
- package/dist/runtime/server/useLogger.mjs +1 -1
- package/dist/runtime/server/useLogger.mjs.map +1 -1
- package/dist/runtime/utils/parseError.d.mts +3 -7
- package/dist/runtime/utils/parseError.mjs +1 -1
- package/dist/{storage-CejtuV76.mjs → storage-CJBW5Vos.mjs} +4 -3
- package/dist/storage-CJBW5Vos.mjs.map +1 -0
- package/dist/sveltekit/index.d.mts +2 -2
- package/dist/sveltekit/index.mjs +5 -5
- package/dist/toolkit.d.mts +38 -0
- package/dist/toolkit.d.mts.map +1 -0
- package/dist/toolkit.mjs +5 -0
- package/dist/types-B8-kC2ME.d.mts +496 -0
- package/dist/types-B8-kC2ME.d.mts.map +1 -0
- package/dist/types.d.mts +2 -496
- package/dist/types.mjs +1 -1
- package/dist/useLogger-_Ec6mXoR.d.mts +39 -0
- package/dist/useLogger-_Ec6mXoR.d.mts.map +1 -0
- package/dist/utils.d.mts +18 -2
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +28 -2
- package/dist/utils.mjs.map +1 -1
- package/dist/workers.d.mts +1 -1
- package/dist/workers.mjs +1 -2
- package/dist/workers.mjs.map +1 -1
- package/package.json +68 -39
- package/dist/error.d.mts.map +0 -1
- package/dist/headers-CXOd5EyZ.mjs.map +0 -1
- package/dist/logger.d.mts.map +0 -1
- package/dist/middleware-BoVCgsfQ.d.mts +0 -36
- package/dist/middleware-BoVCgsfQ.d.mts.map +0 -1
- package/dist/nitro-BRisWfGy.d.mts.map +0 -1
- package/dist/nitro-Da8tEfJ3.mjs.map +0 -1
- package/dist/runtime/server/useLogger.d.mts.map +0 -1
- package/dist/runtime/utils/parseError.d.mts.map +0 -1
- package/dist/storage-CejtuV76.mjs.map +0 -1
- package/dist/types.d.mts.map +0 -1
package/dist/workers.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers.mjs","names":[],"sources":["../src/workers/index.ts"],"sourcesContent":["import { initLogger, createRequestLogger } from '../logger'\nimport type { LoggerConfig, RequestLogger } from '../types'\n\n/**\n * Options for createWorkersLogger\n */\nexport interface WorkersLoggerOptions {\n /** Override the request ID (default: cf-ray header) */\n requestId?: string\n /** Headers to include in logs (default: none) */\n headers?: string[]\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction collectHeaders(headers: Headers, include: string[] | undefined): Record<string, string> | undefined {\n if (!include || include.length === 0) return undefined\n\n const normalized = new Set(include.map(h => h.toLowerCase()))\n const result: Record<string, string> = {}\n\n headers.forEach((value, key) => {\n if (normalized.has(key.toLowerCase())) {\n result[key] = value\n }\n })\n\n return Object.keys(result).length > 0 ? result : undefined\n}\n\n/**\n * Initialize evlog for Cloudflare Workers.\n * Call once at module scope.\n *\n * @example\n * ```ts\n * initWorkersLogger({\n * env: { service: 'my-api' },\n * })\n * ```\n */\nexport function initWorkersLogger(options: LoggerConfig = {}): void {\n initLogger({\n ...options,\n pretty: false,\n stringify: false,\n })\n}\n\nfunction pickCfContext(request: Request): Record<string, unknown> {\n const cf = Reflect.get(request, 'cf')\n if (!isRecord(cf)) return {}\n\n const out: Record<string, unknown> = {}\n if (typeof cf.colo === 'string') out.colo = cf.colo\n if (typeof cf.country === 'string') out.country = cf.country\n if (typeof cf.asn === 'number') out.asn = cf.asn\n return out\n}\n\n/**\n * Create a request-scoped logger for Cloudflare Workers.\n * Auto-extracts cf-ray, request.cf context, method, and path.\n *\n * @example\n * ```ts\n * export default {\n * async fetch(request: Request) {\n * const log = createWorkersLogger(request)\n *\n * log.set({ user: { id: '123' } })\n * log.emit({ status: 200 })\n *\n * return new Response('ok')\n * }\n * }\n * ```\n */\nexport function createWorkersLogger<T extends object = Record<string, unknown>>(request: Request, options: WorkersLoggerOptions = {}): RequestLogger<T> {\n const url = new URL(request.url)\n const cfRay = request.headers.get('cf-ray') ?? undefined\n const traceparent = request.headers.get('traceparent') ?? undefined\n\n const log = createRequestLogger<T>({\n method: request.method,\n path: url.pathname,\n requestId: options.requestId ?? cfRay,\n })\n\n // Cast needed: CF-specific enrichment fields (cfRay, traceparent, etc.) aren't in user's T\n const untyped = log as unknown as RequestLogger\n untyped.set({\n cfRay,\n traceparent,\n ...pickCfContext(request),\n ...(options.headers ? { requestHeaders: collectHeaders(request.headers, options.headers) } : {}),\n })\n\n return log\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"workers.mjs","names":[],"sources":["../src/workers/index.ts"],"sourcesContent":["import { initLogger, createRequestLogger } from '../logger'\nimport type { LoggerConfig, RequestLogger } from '../types'\n\n/**\n * Options for createWorkersLogger\n */\nexport interface WorkersLoggerOptions {\n /** Override the request ID (default: cf-ray header) */\n requestId?: string\n /** Headers to include in logs (default: none) */\n headers?: string[]\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction collectHeaders(headers: Headers, include: string[] | undefined): Record<string, string> | undefined {\n if (!include || include.length === 0) return undefined\n\n const normalized = new Set(include.map(h => h.toLowerCase()))\n const result: Record<string, string> = {}\n\n headers.forEach((value, key) => {\n if (normalized.has(key.toLowerCase())) {\n result[key] = value\n }\n })\n\n return Object.keys(result).length > 0 ? result : undefined\n}\n\n/**\n * Initialize evlog for Cloudflare Workers.\n * Call once at module scope.\n *\n * @example\n * ```ts\n * initWorkersLogger({\n * env: { service: 'my-api' },\n * })\n * ```\n */\nexport function initWorkersLogger(options: LoggerConfig = {}): void {\n initLogger({\n ...options,\n pretty: false,\n stringify: false,\n })\n}\n\nfunction pickCfContext(request: Request): Record<string, unknown> {\n const cf = Reflect.get(request, 'cf')\n if (!isRecord(cf)) return {}\n\n const out: Record<string, unknown> = {}\n if (typeof cf.colo === 'string') out.colo = cf.colo\n if (typeof cf.country === 'string') out.country = cf.country\n if (typeof cf.asn === 'number') out.asn = cf.asn\n return out\n}\n\n/**\n * Create a request-scoped logger for Cloudflare Workers.\n * Auto-extracts cf-ray, request.cf context, method, and path.\n *\n * @example\n * ```ts\n * export default {\n * async fetch(request: Request) {\n * const log = createWorkersLogger(request)\n *\n * log.set({ user: { id: '123' } })\n * log.emit({ status: 200 })\n *\n * return new Response('ok')\n * }\n * }\n * ```\n */\nexport function createWorkersLogger<T extends object = Record<string, unknown>>(request: Request, options: WorkersLoggerOptions = {}): RequestLogger<T> {\n const url = new URL(request.url)\n const cfRay = request.headers.get('cf-ray') ?? undefined\n const traceparent = request.headers.get('traceparent') ?? undefined\n\n const log = createRequestLogger<T>({\n method: request.method,\n path: url.pathname,\n requestId: options.requestId ?? cfRay,\n })\n\n // Cast needed: CF-specific enrichment fields (cfRay, traceparent, etc.) aren't in user's T\n const untyped = log as unknown as RequestLogger\n untyped.set({\n cfRay,\n traceparent,\n ...pickCfContext(request),\n ...(options.headers ? { requestHeaders: collectHeaders(request.headers, options.headers) } : {}),\n })\n\n return log\n}\n"],"mappings":";;AAaA,SAAS,SAAS,OAAkD;AAClE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;;AAG7E,SAAS,eAAe,SAAkB,SAAmE;AAC3G,KAAI,CAAC,WAAW,QAAQ,WAAW,EAAG,QAAO,KAAA;CAE7C,MAAM,aAAa,IAAI,IAAI,QAAQ,KAAI,MAAK,EAAE,aAAa,CAAC,CAAC;CAC7D,MAAM,SAAiC,EAAE;AAEzC,SAAQ,SAAS,OAAO,QAAQ;AAC9B,MAAI,WAAW,IAAI,IAAI,aAAa,CAAC,CACnC,QAAO,OAAO;GAEhB;AAEF,QAAO,OAAO,KAAK,OAAO,CAAC,SAAS,IAAI,SAAS,KAAA;;;;;;;;;;;;;AAcnD,SAAgB,kBAAkB,UAAwB,EAAE,EAAQ;AAClE,YAAW;EACT,GAAG;EACH,QAAQ;EACR,WAAW;EACZ,CAAC;;AAGJ,SAAS,cAAc,SAA2C;CAChE,MAAM,KAAK,QAAQ,IAAI,SAAS,KAAK;AACrC,KAAI,CAAC,SAAS,GAAG,CAAE,QAAO,EAAE;CAE5B,MAAM,MAA+B,EAAE;AACvC,KAAI,OAAO,GAAG,SAAS,SAAU,KAAI,OAAO,GAAG;AAC/C,KAAI,OAAO,GAAG,YAAY,SAAU,KAAI,UAAU,GAAG;AACrD,KAAI,OAAO,GAAG,QAAQ,SAAU,KAAI,MAAM,GAAG;AAC7C,QAAO;;;;;;;;;;;;;;;;;;;;AAqBT,SAAgB,oBAAgE,SAAkB,UAAgC,EAAE,EAAoB;CACtJ,MAAM,MAAM,IAAI,IAAI,QAAQ,IAAI;CAChC,MAAM,QAAQ,QAAQ,QAAQ,IAAI,SAAS,IAAI,KAAA;CAC/C,MAAM,cAAc,QAAQ,QAAQ,IAAI,cAAc,IAAI,KAAA;CAE1D,MAAM,MAAM,oBAAuB;EACjC,QAAQ,QAAQ;EAChB,MAAM,IAAI;EACV,WAAW,QAAQ,aAAa;EACjC,CAAC;AAGc,KACR,IAAI;EACV;EACA;EACA,GAAG,cAAc,QAAQ;EACzB,GAAI,QAAQ,UAAU,EAAE,gBAAgB,eAAe,QAAQ,SAAS,QAAQ,QAAQ,EAAE,GAAG,EAAE;EAChG,CAAC;AAEF,QAAO"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evlog",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "Wide event logging library with structured error handling. Inspired by LoggingSucks.",
|
|
5
5
|
"author": "HugoRCD <contact@hrcd.fr>",
|
|
6
6
|
"homepage": "https://evlog.dev",
|
|
@@ -33,87 +33,113 @@
|
|
|
33
33
|
"exports": {
|
|
34
34
|
".": {
|
|
35
35
|
"types": "./dist/index.d.mts",
|
|
36
|
-
"import": "./dist/index.mjs"
|
|
36
|
+
"import": "./dist/index.mjs",
|
|
37
|
+
"default": "./dist/index.mjs"
|
|
37
38
|
},
|
|
38
39
|
"./nuxt": {
|
|
39
40
|
"types": "./dist/nuxt/module.d.mts",
|
|
40
|
-
"import": "./dist/nuxt/module.mjs"
|
|
41
|
+
"import": "./dist/nuxt/module.mjs",
|
|
42
|
+
"default": "./dist/nuxt/module.mjs"
|
|
41
43
|
},
|
|
42
44
|
"./nitro": {
|
|
43
45
|
"types": "./dist/nitro/module.d.mts",
|
|
44
|
-
"import": "./dist/nitro/module.mjs"
|
|
46
|
+
"import": "./dist/nitro/module.mjs",
|
|
47
|
+
"default": "./dist/nitro/module.mjs"
|
|
45
48
|
},
|
|
46
49
|
"./nitro/v3": {
|
|
47
50
|
"types": "./dist/nitro/v3/index.d.mts",
|
|
48
|
-
"import": "./dist/nitro/v3/index.mjs"
|
|
51
|
+
"import": "./dist/nitro/v3/index.mjs",
|
|
52
|
+
"default": "./dist/nitro/v3/index.mjs"
|
|
49
53
|
},
|
|
50
54
|
"./workers": {
|
|
51
55
|
"types": "./dist/workers.d.mts",
|
|
52
|
-
"import": "./dist/workers.mjs"
|
|
56
|
+
"import": "./dist/workers.mjs",
|
|
57
|
+
"default": "./dist/workers.mjs"
|
|
53
58
|
},
|
|
54
59
|
"./axiom": {
|
|
55
60
|
"types": "./dist/adapters/axiom.d.mts",
|
|
56
|
-
"import": "./dist/adapters/axiom.mjs"
|
|
61
|
+
"import": "./dist/adapters/axiom.mjs",
|
|
62
|
+
"default": "./dist/adapters/axiom.mjs"
|
|
57
63
|
},
|
|
58
64
|
"./otlp": {
|
|
59
65
|
"types": "./dist/adapters/otlp.d.mts",
|
|
60
|
-
"import": "./dist/adapters/otlp.mjs"
|
|
66
|
+
"import": "./dist/adapters/otlp.mjs",
|
|
67
|
+
"default": "./dist/adapters/otlp.mjs"
|
|
61
68
|
},
|
|
62
69
|
"./posthog": {
|
|
63
70
|
"types": "./dist/adapters/posthog.d.mts",
|
|
64
|
-
"import": "./dist/adapters/posthog.mjs"
|
|
71
|
+
"import": "./dist/adapters/posthog.mjs",
|
|
72
|
+
"default": "./dist/adapters/posthog.mjs"
|
|
65
73
|
},
|
|
66
74
|
"./sentry": {
|
|
67
75
|
"types": "./dist/adapters/sentry.d.mts",
|
|
68
|
-
"import": "./dist/adapters/sentry.mjs"
|
|
76
|
+
"import": "./dist/adapters/sentry.mjs",
|
|
77
|
+
"default": "./dist/adapters/sentry.mjs"
|
|
69
78
|
},
|
|
70
79
|
"./better-stack": {
|
|
71
80
|
"types": "./dist/adapters/better-stack.d.mts",
|
|
72
|
-
"import": "./dist/adapters/better-stack.mjs"
|
|
81
|
+
"import": "./dist/adapters/better-stack.mjs",
|
|
82
|
+
"default": "./dist/adapters/better-stack.mjs"
|
|
73
83
|
},
|
|
74
84
|
"./enrichers": {
|
|
75
85
|
"types": "./dist/enrichers.d.mts",
|
|
76
|
-
"import": "./dist/enrichers.mjs"
|
|
86
|
+
"import": "./dist/enrichers.mjs",
|
|
87
|
+
"default": "./dist/enrichers.mjs"
|
|
77
88
|
},
|
|
78
89
|
"./pipeline": {
|
|
79
90
|
"types": "./dist/pipeline.d.mts",
|
|
80
|
-
"import": "./dist/pipeline.mjs"
|
|
91
|
+
"import": "./dist/pipeline.mjs",
|
|
92
|
+
"default": "./dist/pipeline.mjs"
|
|
81
93
|
},
|
|
82
94
|
"./browser": {
|
|
83
95
|
"types": "./dist/browser.d.mts",
|
|
84
|
-
"import": "./dist/browser.mjs"
|
|
96
|
+
"import": "./dist/browser.mjs",
|
|
97
|
+
"default": "./dist/browser.mjs"
|
|
85
98
|
},
|
|
86
99
|
"./next": {
|
|
87
100
|
"types": "./dist/next/index.d.mts",
|
|
88
|
-
"import": "./dist/next/index.mjs"
|
|
101
|
+
"import": "./dist/next/index.mjs",
|
|
102
|
+
"default": "./dist/next/index.mjs"
|
|
89
103
|
},
|
|
90
104
|
"./next/client": {
|
|
91
105
|
"types": "./dist/next/client.d.mts",
|
|
92
|
-
"import": "./dist/next/client.mjs"
|
|
106
|
+
"import": "./dist/next/client.mjs",
|
|
107
|
+
"default": "./dist/next/client.mjs"
|
|
93
108
|
},
|
|
94
109
|
"./hono": {
|
|
95
110
|
"types": "./dist/hono/index.d.mts",
|
|
96
|
-
"import": "./dist/hono/index.mjs"
|
|
111
|
+
"import": "./dist/hono/index.mjs",
|
|
112
|
+
"default": "./dist/hono/index.mjs"
|
|
97
113
|
},
|
|
98
114
|
"./express": {
|
|
99
115
|
"types": "./dist/express/index.d.mts",
|
|
100
|
-
"import": "./dist/express/index.mjs"
|
|
116
|
+
"import": "./dist/express/index.mjs",
|
|
117
|
+
"default": "./dist/express/index.mjs"
|
|
101
118
|
},
|
|
102
119
|
"./elysia": {
|
|
103
120
|
"types": "./dist/elysia/index.d.mts",
|
|
104
|
-
"import": "./dist/elysia/index.mjs"
|
|
121
|
+
"import": "./dist/elysia/index.mjs",
|
|
122
|
+
"default": "./dist/elysia/index.mjs"
|
|
105
123
|
},
|
|
106
124
|
"./fastify": {
|
|
107
125
|
"types": "./dist/fastify/index.d.mts",
|
|
108
|
-
"import": "./dist/fastify/index.mjs"
|
|
126
|
+
"import": "./dist/fastify/index.mjs",
|
|
127
|
+
"default": "./dist/fastify/index.mjs"
|
|
109
128
|
},
|
|
110
129
|
"./nestjs": {
|
|
111
130
|
"types": "./dist/nestjs/index.d.mts",
|
|
112
|
-
"import": "./dist/nestjs/index.mjs"
|
|
131
|
+
"import": "./dist/nestjs/index.mjs",
|
|
132
|
+
"default": "./dist/nestjs/index.mjs"
|
|
113
133
|
},
|
|
114
134
|
"./sveltekit": {
|
|
115
135
|
"types": "./dist/sveltekit/index.d.mts",
|
|
116
|
-
"import": "./dist/sveltekit/index.mjs"
|
|
136
|
+
"import": "./dist/sveltekit/index.mjs",
|
|
137
|
+
"default": "./dist/sveltekit/index.mjs"
|
|
138
|
+
},
|
|
139
|
+
"./toolkit": {
|
|
140
|
+
"types": "./dist/toolkit.d.mts",
|
|
141
|
+
"import": "./dist/toolkit.mjs",
|
|
142
|
+
"default": "./dist/toolkit.mjs"
|
|
117
143
|
}
|
|
118
144
|
},
|
|
119
145
|
"main": "./dist/index.mjs",
|
|
@@ -182,6 +208,9 @@
|
|
|
182
208
|
],
|
|
183
209
|
"sveltekit": [
|
|
184
210
|
"./dist/sveltekit/index.d.mts"
|
|
211
|
+
],
|
|
212
|
+
"toolkit": [
|
|
213
|
+
"./dist/toolkit.d.mts"
|
|
185
214
|
]
|
|
186
215
|
}
|
|
187
216
|
},
|
|
@@ -201,8 +230,8 @@
|
|
|
201
230
|
"typecheck": "echo 'Typecheck handled by build'"
|
|
202
231
|
},
|
|
203
232
|
"devDependencies": {
|
|
204
|
-
"@nuxt/devtools": "^3.2.
|
|
205
|
-
"@nuxt/schema": "^4.
|
|
233
|
+
"@nuxt/devtools": "^3.2.3",
|
|
234
|
+
"@nuxt/schema": "^4.4.2",
|
|
206
235
|
"@nuxt/test-utils": "^4.0.0",
|
|
207
236
|
"@types/express": "^5.0.6",
|
|
208
237
|
"@types/supertest": "^7.2.0",
|
|
@@ -210,32 +239,32 @@
|
|
|
210
239
|
"consola": "^3.4.2",
|
|
211
240
|
"elysia": "^1.4.27",
|
|
212
241
|
"express": "^5.2.1",
|
|
213
|
-
"@nestjs/common": "^
|
|
214
|
-
"fastify": "^5.2
|
|
215
|
-
"h3": "^1.15.
|
|
216
|
-
"happy-dom": "^20.
|
|
217
|
-
"nitro": "^3.0.
|
|
242
|
+
"@nestjs/common": "^11.1.16",
|
|
243
|
+
"fastify": "^5.8.2",
|
|
244
|
+
"h3": "^1.15.6",
|
|
245
|
+
"happy-dom": "^20.8.3",
|
|
246
|
+
"nitro": "^3.0.260311-beta",
|
|
218
247
|
"nitropack": "^2.13.1",
|
|
219
|
-
"nuxt": "^4.
|
|
248
|
+
"nuxt": "^4.4.2",
|
|
220
249
|
"supertest": "^7.2.2",
|
|
221
|
-
"tsdown": "^0.
|
|
250
|
+
"tsdown": "^0.21.1",
|
|
222
251
|
"typescript": "^5.9.3",
|
|
223
252
|
"ufo": "^1.6.3"
|
|
224
253
|
},
|
|
225
254
|
"peerDependencies": {
|
|
226
|
-
"@nuxt/kit": "^4.
|
|
227
|
-
"h3": "^1.15.
|
|
255
|
+
"@nuxt/kit": "^4.4.2",
|
|
256
|
+
"h3": "^1.15.6",
|
|
228
257
|
"nitropack": "^2.13.1",
|
|
229
258
|
"ofetch": "^1.5.1",
|
|
230
|
-
"nitro": "^3.0.
|
|
259
|
+
"nitro": "^3.0.260311-beta",
|
|
231
260
|
"next": ">=16.1.6",
|
|
232
261
|
"react": ">=19.2.4",
|
|
233
262
|
"hono": "",
|
|
234
|
-
"express": ">=
|
|
235
|
-
"elysia": ">=1.
|
|
236
|
-
"fastify": ">=
|
|
237
|
-
"@nestjs/common": ">=
|
|
238
|
-
"@sveltejs/kit": ">=2.
|
|
263
|
+
"express": ">=5.2.1",
|
|
264
|
+
"elysia": ">=1.4.27",
|
|
265
|
+
"fastify": ">=5.8.2",
|
|
266
|
+
"@nestjs/common": ">=11.1.16",
|
|
267
|
+
"@sveltejs/kit": ">=2.53.4"
|
|
239
268
|
},
|
|
240
269
|
"peerDependenciesMeta": {
|
|
241
270
|
"@nuxt/kit": {
|
package/dist/error.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.mts","names":[],"sources":["../src/error.ts"],"mappings":";;;;;AAkBA;;;;;;;;;;;;;cAAa,UAAA,SAAmB,KAAA;EAQT;EAAA,SALZ,MAAA;EAAA,SACA,GAAA;EAAA,SACA,GAAA;EAAA,SACA,IAAA;cAEG,OAAA,EAAS,YAAA;EAiCP;EAAA,IAfV,UAAA,CAAA;EAesC;EAAA,IAVtC,UAAA,CAAA;EAkDJ;EAAA,IA7CI,aAAA,CAAA;EA6CY;EAAA,IAxCZ,IAAA,CAAA;IAAU,GAAA;IAAc,GAAA;IAAc,IAAA;EAAA;EAOjC,QAAA,CAAA;EAiCT,MAAA,CAAA,GAAU,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;iBAoCI,WAAA,CAAY,OAAA,EAAS,YAAA,YAAwB,UAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headers-CXOd5EyZ.mjs","names":[],"sources":["../src/shared/middleware.ts","../src/shared/headers.ts"],"sourcesContent":["import type { DrainContext, EnrichContext, RequestLogger, RouteConfig, TailSamplingContext, WideEvent } from '../types'\nimport { createRequestLogger, isEnabled, shouldKeep } from '../logger'\nimport { extractErrorStatus } from '../nitro'\nimport { shouldLog, getServiceForPath } from './routes'\n\n/**\n * Base options shared by all framework integrations.\n *\n * Every framework-specific options interface (e.g. `EvlogExpressOptions`)\n * extends this type. If a framework needs extra fields it can add them\n * on top; otherwise the base is used as-is.\n */\nexport interface BaseEvlogOptions {\n /** Route patterns to include in logging (glob). If not set, all routes are logged */\n include?: string[]\n /** Route patterns to exclude from logging. Exclusions take precedence over inclusions */\n exclude?: string[]\n /** Route-specific service configuration */\n routes?: Record<string, RouteConfig>\n /**\n * Drain callback called with every emitted event.\n * Use with drain adapters (Axiom, OTLP, Sentry, etc.) or custom endpoints.\n */\n drain?: (ctx: DrainContext) => void | Promise<void>\n /**\n * Enrich callback called after emit, before drain.\n * Use to add derived context (geo, deployment info, user agent, etc.).\n */\n enrich?: (ctx: EnrichContext) => void | Promise<void>\n /**\n * Custom tail sampling callback.\n * Set `ctx.shouldKeep = true` to force-keep the log regardless of head sampling.\n */\n keep?: (ctx: TailSamplingContext) => void | Promise<void>\n}\n\n/**\n * Internal options consumed by `createMiddlewareLogger`.\n * Extends `BaseEvlogOptions` with the request-specific fields\n * that framework adapters must provide.\n */\nexport interface MiddlewareLoggerOptions extends BaseEvlogOptions {\n method: string\n path: string\n requestId?: string\n /** Pre-filtered safe request headers (used for enrich/drain context) */\n headers?: Record<string, string>\n}\n\nexport interface MiddlewareLoggerResult {\n logger: RequestLogger\n finish: (opts?: { status?: number; error?: Error }) => Promise<WideEvent | null>\n skipped: boolean\n}\n\nconst noopResult: MiddlewareLoggerResult = {\n logger: {\n set() {},\n error() {},\n info() {},\n warn() {},\n emit() {\n return null \n },\n getContext() {\n return {} \n },\n },\n finish: () => Promise.resolve(null),\n skipped: true,\n}\n\nasync function runEnrichAndDrain(\n emittedEvent: WideEvent,\n options: MiddlewareLoggerOptions,\n requestInfo: { method: string; path: string; requestId?: string },\n responseStatus?: number,\n): Promise<void> {\n if (options.enrich) {\n const enrichCtx: EnrichContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n response: { status: responseStatus },\n }\n try {\n await options.enrich(enrichCtx)\n } catch (err) {\n console.error('[evlog] enrich failed:', err)\n }\n }\n\n if (options.drain) {\n const drainCtx: DrainContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n }\n try {\n await options.drain(drainCtx)\n } catch (err) {\n console.error('[evlog] drain failed:', err)\n }\n }\n}\n\n/**\n * Create a middleware-aware request logger with full lifecycle management.\n *\n * Handles the complete pipeline shared across all framework integrations:\n * route filtering, logger creation, service overrides, duration tracking,\n * tail sampling evaluation, event emission, enrichment, and draining.\n *\n * Framework adapters only need to:\n * 1. Extract method/path/requestId/headers from the framework request\n * 2. Call `createMiddlewareLogger()` with those + user options\n * 3. Check `skipped` — if true, skip to next middleware\n * 4. Store `logger` in framework-specific context (e.g., `c.set('log', logger)`)\n * 5. Call `finish({ status })` or `finish({ error })` at response end\n */\nexport function createMiddlewareLogger(options: MiddlewareLoggerOptions): MiddlewareLoggerResult {\n if (!isEnabled()) return noopResult\n\n const { method, path, requestId, include, exclude, routes, keep } = options\n\n if (!shouldLog(path, include, exclude)) {\n return noopResult\n }\n\n const resolvedRequestId = requestId || crypto.randomUUID()\n\n const logger = createRequestLogger({\n method,\n path,\n requestId: resolvedRequestId,\n })\n\n const routeService = getServiceForPath(path, routes)\n if (routeService) {\n logger.set({ service: routeService })\n }\n\n const startTime = Date.now()\n const requestInfo = { method, path, requestId: resolvedRequestId }\n\n const finish = async (opts?: { status?: number; error?: Error }): Promise<WideEvent | null> => {\n const { status, error } = opts ?? {}\n\n if (error) {\n logger.error(error)\n const errorStatus = extractErrorStatus(error)\n logger.set({ status: errorStatus })\n } else if (status !== undefined) {\n logger.set({ status })\n }\n\n const durationMs = Date.now() - startTime\n\n const resolvedStatus = error\n ? extractErrorStatus(error)\n : status ?? (logger.getContext().status as number | undefined)\n\n const tailCtx: TailSamplingContext = {\n status: resolvedStatus,\n duration: durationMs,\n path,\n method,\n context: logger.getContext(),\n shouldKeep: false,\n }\n\n if (keep) {\n await keep(tailCtx)\n }\n\n const forceKeep = tailCtx.shouldKeep || shouldKeep(tailCtx)\n const emittedEvent = logger.emit({ _forceKeep: forceKeep })\n\n if (emittedEvent && (options.enrich || options.drain)) {\n await runEnrichAndDrain(emittedEvent, options, requestInfo, resolvedStatus)\n }\n\n return emittedEvent\n }\n\n return { logger, finish, skipped: false }\n}\n","import { filterSafeHeaders } from '../utils'\n\n/**\n * Extract headers from a Web API `Headers` object and filter out sensitive ones.\n * Works with any runtime that supports the standard `Headers` API (Hono, Elysia,\n * Nitro v3, Cloudflare Workers, Bun, Deno, etc.).\n */\nexport function extractSafeHeaders(headers: Headers): Record<string, string> {\n const raw: Record<string, string> = {}\n headers.forEach((value, key) => {\n raw[key] = value\n })\n return filterSafeHeaders(raw)\n}\n\n/**\n * Extract headers from Node.js `IncomingHttpHeaders` and filter out sensitive ones.\n * Works with Express, Fastify, and any Node.js HTTP server using `req.headers`.\n */\nexport function extractSafeNodeHeaders(headers: Record<string, string | string[] | undefined>): Record<string, string> {\n const raw: Record<string, string> = {}\n for (const [key, value] of Object.entries(headers)) {\n if (value === undefined) continue\n raw[key] = Array.isArray(value) ? value.join(', ') : value\n }\n return filterSafeHeaders(raw)\n}\n"],"mappings":";;;;;;AAuDA,MAAM,aAAqC;CACzC,QAAQ;EACN,MAAM;EACN,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;AACL,UAAO;;EAET,aAAa;AACX,UAAO,EAAE;;EAEZ;CACD,cAAc,QAAQ,QAAQ,KAAK;CACnC,SAAS;CACV;AAED,eAAe,kBACb,cACA,SACA,aACA,gBACe;AACf,KAAI,QAAQ,QAAQ;EAClB,MAAM,YAA2B;GAC/B,OAAO;GACP,SAAS;GACT,SAAS,QAAQ;GACjB,UAAU,EAAE,QAAQ,gBAAgB;GACrC;AACD,MAAI;AACF,SAAM,QAAQ,OAAO,UAAU;WACxB,KAAK;AACZ,WAAQ,MAAM,0BAA0B,IAAI;;;AAIhD,KAAI,QAAQ,OAAO;EACjB,MAAM,WAAyB;GAC7B,OAAO;GACP,SAAS;GACT,SAAS,QAAQ;GAClB;AACD,MAAI;AACF,SAAM,QAAQ,MAAM,SAAS;WACtB,KAAK;AACZ,WAAQ,MAAM,yBAAyB,IAAI;;;;;;;;;;;;;;;;;;AAmBjD,SAAgB,uBAAuB,SAA0D;AAC/F,KAAI,CAAC,WAAW,CAAE,QAAO;CAEzB,MAAM,EAAE,QAAQ,MAAM,WAAW,SAAS,SAAS,QAAQ,SAAS;AAEpE,KAAI,CAAC,UAAU,MAAM,SAAS,QAAQ,CACpC,QAAO;CAGT,MAAM,oBAAoB,aAAa,OAAO,YAAY;CAE1D,MAAM,SAAS,oBAAoB;EACjC;EACA;EACA,WAAW;EACZ,CAAC;CAEF,MAAM,eAAe,kBAAkB,MAAM,OAAO;AACpD,KAAI,aACF,QAAO,IAAI,EAAE,SAAS,cAAc,CAAC;CAGvC,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,cAAc;EAAE;EAAQ;EAAM,WAAW;EAAmB;CAElE,MAAM,SAAS,OAAO,SAAyE;EAC7F,MAAM,EAAE,QAAQ,UAAU,QAAQ,EAAE;AAEpC,MAAI,OAAO;AACT,UAAO,MAAM,MAAM;GACnB,MAAM,cAAc,mBAAmB,MAAM;AAC7C,UAAO,IAAI,EAAE,QAAQ,aAAa,CAAC;aAC1B,WAAW,OACpB,QAAO,IAAI,EAAE,QAAQ,CAAC;EAGxB,MAAM,aAAa,KAAK,KAAK,GAAG;EAEhC,MAAM,iBAAiB,QACnB,mBAAmB,MAAM,GACzB,UAAW,OAAO,YAAY,CAAC;EAEnC,MAAM,UAA+B;GACnC,QAAQ;GACR,UAAU;GACV;GACA;GACA,SAAS,OAAO,YAAY;GAC5B,YAAY;GACb;AAED,MAAI,KACF,OAAM,KAAK,QAAQ;EAGrB,MAAM,YAAY,QAAQ,cAAc,WAAW,QAAQ;EAC3D,MAAM,eAAe,OAAO,KAAK,EAAE,YAAY,WAAW,CAAC;AAE3D,MAAI,iBAAiB,QAAQ,UAAU,QAAQ,OAC7C,OAAM,kBAAkB,cAAc,SAAS,aAAa,eAAe;AAG7E,SAAO;;AAGT,QAAO;EAAE;EAAQ;EAAQ,SAAS;EAAO;;;;;;;;;;AClL3C,SAAgB,mBAAmB,SAA0C;CAC3E,MAAM,MAA8B,EAAE;AACtC,SAAQ,SAAS,OAAO,QAAQ;AAC9B,MAAI,OAAO;GACX;AACF,QAAO,kBAAkB,IAAI;;;;;;AAO/B,SAAgB,uBAAuB,SAAgF;CACrH,MAAM,MAA8B,EAAE;AACtC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,EAAE;AAClD,MAAI,UAAU,OAAW;AACzB,MAAI,OAAO,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAK,KAAK,GAAG;;AAEvD,QAAO,kBAAkB,IAAI"}
|
package/dist/logger.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.mts","names":[],"sources":["../src/logger.ts"],"mappings":";;;;;AAoCA;;iBAAgB,UAAA,CAAW,MAAA,GAAQ,YAAA;;;AAqBnC;iBAAgB,SAAA,CAAA;;;;AA8BhB;iBAAgB,UAAA,CAAW,GAAA,EAAK,mBAAA;;;;AAgB/B;;;;;AAkKD;cAjCM,IAAA,EAAM,GAAA;;;;;;;;;;;;iBAiCI,YAAA,oBAAgC,MAAA,kBAAA,CAAyB,cAAA,GAAgB,MAAA,oBAA+B,aAAA,CAAc,CAAA;;;AAsHtI;;;;;;;;;;iBAAgB,mBAAA,oBAAuC,MAAA,kBAAA,CAAyB,OAAA,GAAS,oBAAA,GAA4B,aAAA,CAAc,CAAA;;;;iBAWnH,cAAA,CAAA,GAAkB,kBAAA"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { DrainContext, EnrichContext, RouteConfig, TailSamplingContext } from "./types.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/shared/middleware.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Base options shared by all framework integrations.
|
|
6
|
-
*
|
|
7
|
-
* Every framework-specific options interface (e.g. `EvlogExpressOptions`)
|
|
8
|
-
* extends this type. If a framework needs extra fields it can add them
|
|
9
|
-
* on top; otherwise the base is used as-is.
|
|
10
|
-
*/
|
|
11
|
-
interface BaseEvlogOptions {
|
|
12
|
-
/** Route patterns to include in logging (glob). If not set, all routes are logged */
|
|
13
|
-
include?: string[];
|
|
14
|
-
/** Route patterns to exclude from logging. Exclusions take precedence over inclusions */
|
|
15
|
-
exclude?: string[];
|
|
16
|
-
/** Route-specific service configuration */
|
|
17
|
-
routes?: Record<string, RouteConfig>;
|
|
18
|
-
/**
|
|
19
|
-
* Drain callback called with every emitted event.
|
|
20
|
-
* Use with drain adapters (Axiom, OTLP, Sentry, etc.) or custom endpoints.
|
|
21
|
-
*/
|
|
22
|
-
drain?: (ctx: DrainContext) => void | Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Enrich callback called after emit, before drain.
|
|
25
|
-
* Use to add derived context (geo, deployment info, user agent, etc.).
|
|
26
|
-
*/
|
|
27
|
-
enrich?: (ctx: EnrichContext) => void | Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Custom tail sampling callback.
|
|
30
|
-
* Set `ctx.shouldKeep = true` to force-keep the log regardless of head sampling.
|
|
31
|
-
*/
|
|
32
|
-
keep?: (ctx: TailSamplingContext) => void | Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
//#endregion
|
|
35
|
-
export { BaseEvlogOptions as t };
|
|
36
|
-
//# sourceMappingURL=middleware-BoVCgsfQ.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-BoVCgsfQ.d.mts","names":[],"sources":["../src/shared/middleware.ts"],"mappings":";;;;;AAYA;;;;;UAAiB,gBAAA;EAWuB;EATtC,OAAA;EAcwC;EAZxC,OAAA;EAiB4C;EAf5C,MAAA,GAAS,MAAA,SAAe,WAAA;EAe2B;;;;EAVnD,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;EALd;;;;EAUxB,MAAA,IAAU,GAAA,EAAK,aAAA,YAAyB,OAAA;EAAxC;;;;EAKA,IAAA,IAAQ,GAAA,EAAK,mBAAA,YAA+B,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nitro-BRisWfGy.d.mts","names":[],"sources":["../src/nitro.ts"],"mappings":";;;UAIiB,kBAAA;EAAA;;;;EAKf,OAAA;EA8BwB;;;EAzBxB,GAAA,GAAM,OAAA,CAAQ,kBAAA;EA8BW;;;;EAxBzB,MAAA;EAAA;;;;;EAOA,OAAA;EAiBA;;;;;EAVA,OAAA;;;;EAKA,MAAA,GAAS,MAAA,SAAe,WAAA;;;;EAKxB,QAAA,GAAW,cAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nitro-Da8tEfJ3.mjs","names":[],"sources":["../src/nitro.ts"],"sourcesContent":["import type { EnvironmentContext, RouteConfig, SamplingConfig } from './types'\n\nexport { shouldLog, getServiceForPath } from './shared/routes'\n\nexport interface NitroModuleOptions {\n /**\n * Enable or disable all logging globally.\n * @default true\n */\n enabled?: boolean\n\n /**\n * Environment context overrides.\n */\n env?: Partial<EnvironmentContext>\n\n /**\n * Enable pretty printing.\n * @default true in development, false in production\n */\n pretty?: boolean\n\n /**\n * Route patterns to include in logging.\n * Supports glob patterns like '/api/**'.\n * If not set, all routes are logged.\n */\n include?: string[]\n\n /**\n * Route patterns to exclude from logging.\n * Supports glob patterns like '/_nitro/**'.\n * Exclusions take precedence over inclusions.\n */\n exclude?: string[]\n\n /**\n * Route-specific service configuration.\n */\n routes?: Record<string, RouteConfig>\n\n /**\n * Sampling configuration for filtering logs.\n */\n sampling?: SamplingConfig\n}\n\nexport interface EvlogConfig {\n enabled?: boolean\n env?: Record<string, unknown>\n pretty?: boolean\n include?: string[]\n exclude?: string[]\n routes?: Record<string, RouteConfig>\n sampling?: SamplingConfig\n}\n\n/**\n * Resolve an EvlogError from an error or its cause chain.\n * Both Nitro v2 (h3) and v3 wrap thrown errors — this unwraps them.\n */\nexport function resolveEvlogError(error: Error): Error | null {\n if (error.name === 'EvlogError') return error\n if ((error.cause as Error)?.name === 'EvlogError') return error.cause as Error\n return null\n}\n\n/**\n * Extract HTTP status from an error, checking both `status` and `statusCode`.\n */\nexport function extractErrorStatus(error: unknown): number {\n return (error as { status?: number }).status\n ?? (error as { statusCode?: number }).statusCode\n ?? 500\n}\n\n/**\n * Build a standard evlog error JSON response body.\n * Used by both v2 and v3 error handlers to ensure consistent shape.\n */\nexport function serializeEvlogErrorResponse(error: Error, url: string): Record<string, unknown> {\n const status = extractErrorStatus(error)\n const { data } = error as { data?: unknown }\n const statusMessage = (error as { statusMessage?: string }).statusMessage || error.message\n return {\n url,\n status,\n statusCode: status,\n statusText: statusMessage,\n statusMessage,\n message: error.message,\n error: true,\n ...(data !== undefined && { data }),\n }\n}\n\n"],"mappings":";;;;;AA6DA,SAAgB,kBAAkB,OAA4B;AAC5D,KAAI,MAAM,SAAS,aAAc,QAAO;AACxC,KAAK,MAAM,OAAiB,SAAS,aAAc,QAAO,MAAM;AAChE,QAAO;;;;;AAMT,SAAgB,mBAAmB,OAAwB;AACzD,QAAQ,MAA8B,UAChC,MAAkC,cACnC;;;;;;AAOP,SAAgB,4BAA4B,OAAc,KAAsC;CAC9F,MAAM,SAAS,mBAAmB,MAAM;CACxC,MAAM,EAAE,SAAS;CACjB,MAAM,gBAAiB,MAAqC,iBAAiB,MAAM;AACnF,QAAO;EACL;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA,SAAS,MAAM;EACf,OAAO;EACP,GAAI,SAAS,UAAa,EAAE,MAAM;EACnC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLogger.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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseError.d.mts","names":[],"sources":["../../../src/runtime/utils/parseError.ts"],"mappings":";;;iBAKgB,UAAA,CAAW,KAAA,YAAiB,WAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-CejtuV76.mjs","names":[],"sources":["../src/shared/storage.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\nimport type { RequestLogger } from '../types'\n\n/**\n * Create a request-scoped `AsyncLocalStorage` and a matching `useLogger` accessor.\n *\n * Every framework that needs `useLogger()` (Express, Fastify, NestJS, SvelteKit)\n * calls this once at module level to get its own isolated storage + accessor pair.\n *\n * @param contextHint - Human-readable hint appended to the error message when\n * `useLogger()` is called outside of a request (e.g.\n * `\"middleware context. Make sure app.use(evlog()) is registered before your routes.\"`).\n */\nexport function createLoggerStorage(contextHint: string) {\n const storage = new AsyncLocalStorage<RequestLogger>()\n\n /**\n * Access the request-scoped logger created by the evlog middleware.\n *\n * Must be called inside a request that is handled by the evlog middleware.\n * Throws if called outside of a request context.\n *\n * @example\n * ```ts\n * import { useLogger } from 'evlog/express' // or /fastify, /nestjs, /sveltekit, /elysia\n *\n * function myService() {\n * const log = useLogger()\n * log.set({ users: { count: 42 } })\n * }\n * ```\n */\n function useLogger<T extends object = Record<string, unknown>>(): RequestLogger<T> {\n const logger = storage.getStore()\n if (!logger) {\n throw new Error(\n `[evlog] useLogger() was called outside of an evlog ${contextHint}`,\n )\n }\n return logger as RequestLogger<T>\n }\n\n return { storage, useLogger }\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,SAAgB,oBAAoB,aAAqB;CACvD,MAAM,UAAU,IAAI,mBAAkC;;;;;;;;;;;;;;;;;CAkBtD,SAAS,YAA0E;EACjF,MAAM,SAAS,QAAQ,UAAU;AACjC,MAAI,CAAC,OACH,OAAM,IAAI,MACR,sDAAsD,cACvD;AAEH,SAAO;;AAGT,QAAO;EAAE;EAAS;EAAW"}
|
package/dist/types.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
|