evlog 2.19.0 → 2.19.2
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 +14 -16
- package/dist/adapters/axiom.d.mts +3 -3
- package/dist/adapters/axiom.d.mts.map +1 -1
- package/dist/adapters/axiom.mjs +10 -14
- package/dist/adapters/axiom.mjs.map +1 -1
- package/dist/adapters/better-stack.d.mts +2 -2
- package/dist/adapters/better-stack.d.mts.map +1 -1
- package/dist/adapters/better-stack.mjs +9 -13
- package/dist/adapters/better-stack.mjs.map +1 -1
- package/dist/adapters/datadog.d.mts +3 -3
- package/dist/adapters/datadog.mjs +9 -5
- package/dist/adapters/datadog.mjs.map +1 -1
- package/dist/adapters/fs.d.mts +1 -1
- package/dist/adapters/fs.d.mts.map +1 -1
- package/dist/adapters/fs.mjs +14 -1
- package/dist/adapters/fs.mjs.map +1 -1
- package/dist/adapters/hyperdx.d.mts +2 -2
- package/dist/adapters/hyperdx.mjs +3 -3
- package/dist/adapters/hyperdx.mjs.map +1 -1
- package/dist/adapters/memory.d.mts +2 -3
- package/dist/adapters/memory.d.mts.map +1 -1
- package/dist/adapters/memory.mjs +2 -3
- package/dist/adapters/memory.mjs.map +1 -1
- package/dist/adapters/otlp.d.mts +4 -4
- package/dist/adapters/otlp.mjs +17 -9
- package/dist/adapters/otlp.mjs.map +1 -1
- package/dist/adapters/posthog.d.mts +2 -2
- package/dist/adapters/posthog.mjs +5 -5
- package/dist/adapters/posthog.mjs.map +1 -1
- package/dist/adapters/sentry.d.mts +3 -3
- package/dist/adapters/sentry.mjs +5 -5
- package/dist/adapters/sentry.mjs.map +1 -1
- package/dist/ai/index.d.mts +1 -1
- package/dist/{audit-BUAajsPU.d.mts → audit-CBfv3rl1.d.mts} +77 -53
- package/dist/audit-CBfv3rl1.d.mts.map +1 -0
- package/dist/{audit-BFwTUxBJ.mjs → audit-CL0q7GJU.mjs} +37 -110
- package/dist/audit-CL0q7GJU.mjs.map +1 -0
- package/dist/audit-action.d.mts +2 -0
- package/dist/audit-action.mjs +74 -0
- package/dist/audit-action.mjs.map +1 -0
- package/dist/audit.d.mts +2 -0
- package/dist/audit.mjs +3 -0
- package/dist/better-auth/index.d.mts +1 -1
- package/dist/browser.d.mts +1 -1
- package/dist/{index-CE7kH0II.d.mts → catalog-CyemiLYG.d.mts} +4 -3
- package/dist/catalog-CyemiLYG.d.mts.map +1 -0
- package/dist/catalog.d.mts +2 -0
- package/dist/catalog.mjs +205 -0
- package/dist/catalog.mjs.map +1 -0
- package/dist/deferred-drain-jeajC8QF.mjs +36 -0
- package/dist/deferred-drain-jeajC8QF.mjs.map +1 -0
- package/dist/{define-DGwZkZ7x.d.mts → define-BuDJpV2b.d.mts} +3 -3
- package/dist/{define-DGwZkZ7x.d.mts.map → define-BuDJpV2b.d.mts.map} +1 -1
- package/dist/{drain-D_fy7m0n.mjs → drain-6lV-g7JB.mjs} +34 -3
- package/dist/drain-6lV-g7JB.mjs.map +1 -0
- package/dist/elysia/index.d.mts +4 -4
- package/dist/elysia/index.d.mts.map +1 -1
- package/dist/elysia/index.mjs +2 -2
- package/dist/elysia/index.mjs.map +1 -1
- package/dist/enrich-error-stack-next.node-BecxSKUc.mjs +120 -0
- package/dist/enrich-error-stack-next.node-BecxSKUc.mjs.map +1 -0
- package/dist/{enricher-CuMbbdqp.d.mts → enricher-VdBVX4oT.d.mts} +2 -2
- package/dist/{enricher-CuMbbdqp.d.mts.map → enricher-VdBVX4oT.d.mts.map} +1 -1
- package/dist/enrichers.d.mts +2 -2
- package/dist/{error-DwajXSKM.d.mts → error-CPCM5a1D.d.mts} +2 -2
- package/dist/{error-DwajXSKM.d.mts.map → error-CPCM5a1D.d.mts.map} +1 -1
- package/dist/error.d.mts +1 -1
- package/dist/{errors-CAq8pYpW.d.mts → errors-ZdY6Ohi6.d.mts} +2 -2
- package/dist/{errors-CAq8pYpW.d.mts.map → errors-ZdY6Ohi6.d.mts.map} +1 -1
- package/dist/express/index.d.mts +4 -4
- package/dist/express/index.d.mts.map +1 -1
- package/dist/express/index.mjs +3 -3
- package/dist/express/index.mjs.map +1 -1
- package/dist/fastify/index.d.mts +4 -4
- package/dist/fastify/index.d.mts.map +1 -1
- package/dist/fastify/index.mjs +4 -2
- package/dist/fastify/index.mjs.map +1 -1
- package/dist/{fork-CYm453dq.mjs → fork-Di44utlp.mjs} +2 -2
- package/dist/fork-Di44utlp.mjs.map +1 -0
- package/dist/hono/index.d.mts +3 -3
- package/dist/hono/index.d.mts.map +1 -1
- package/dist/hono/index.mjs +3 -6
- package/dist/hono/index.mjs.map +1 -1
- package/dist/{http-Bept5EIC.mjs → http-DA3RWQrm.mjs} +2 -2
- package/dist/{http-Bept5EIC.mjs.map → http-DA3RWQrm.mjs.map} +1 -1
- package/dist/http.d.mts +1 -1
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +3 -203
- package/dist/instrumentation-create-STGmQGQt.d.mts +115 -0
- package/dist/instrumentation-create-STGmQGQt.d.mts.map +1 -0
- package/dist/{integration-CR601uyW.mjs → integration-2PpI-bCm.mjs} +2 -2
- package/dist/{integration-CR601uyW.mjs.map → integration-2PpI-bCm.mjs.map} +1 -1
- package/dist/{logger-BccCJUyD.d.mts → logger-DWTPZ0c1.d.mts} +7 -3
- package/dist/logger-DWTPZ0c1.d.mts.map +1 -0
- package/dist/logger.d.mts +2 -2
- package/dist/logger.mjs +1 -1
- package/dist/{middleware-DQ6-h8h0.d.mts → middleware-CjVyGyrG.d.mts} +3 -3
- package/dist/middleware-CjVyGyrG.d.mts.map +1 -0
- package/dist/nestjs/index.d.mts +5 -5
- package/dist/nestjs/index.d.mts.map +1 -1
- package/dist/nestjs/index.mjs +3 -3
- package/dist/nestjs/index.mjs.map +1 -1
- package/dist/next/client.d.mts +1 -1
- package/dist/next/index.d.mts +5 -5
- package/dist/next/index.d.mts.map +1 -1
- package/dist/next/index.mjs +16 -3
- package/dist/next/index.mjs.map +1 -1
- package/dist/next/instrumentation/create.d.mts +2 -0
- package/dist/next/instrumentation/create.mjs +157 -0
- package/dist/next/instrumentation/create.mjs.map +1 -0
- package/dist/next/instrumentation.d.mts +2 -77
- package/dist/next/instrumentation.mjs +32 -81
- package/dist/next/instrumentation.mjs.map +1 -1
- package/dist/next/stream.d.mts +1 -1
- package/dist/next/stream.mjs +2 -2
- package/dist/next/stream.mjs.map +1 -1
- package/dist/nitro/errorHandler.mjs +23 -7
- package/dist/nitro/errorHandler.mjs.map +1 -1
- package/dist/nitro/module.d.mts +2 -2
- package/dist/nitro/module.mjs +1 -1
- package/dist/nitro/plugin.mjs +89 -4
- package/dist/nitro/plugin.mjs.map +1 -1
- package/dist/nitro/v3/errorHandler.d.mts +0 -10
- package/dist/nitro/v3/errorHandler.mjs +13 -3
- package/dist/nitro/v3/errorHandler.mjs.map +1 -1
- package/dist/nitro/v3/index.d.mts +2 -2
- package/dist/nitro/v3/module.d.mts +1 -1
- package/dist/nitro/v3/module.mjs +1 -1
- package/dist/nitro/v3/plugin.mjs +4 -4
- package/dist/nitro/v3/plugin.mjs.map +1 -1
- package/dist/nitro/v3/useLogger.d.mts +2 -2
- package/dist/nitro/v3/useLogger.d.mts.map +1 -1
- package/dist/nitro/v3/useLogger.mjs.map +1 -1
- package/dist/{nitro-zCXTylj4.d.mts → nitro--E4op34w.d.mts} +2 -2
- package/dist/{nitro-zCXTylj4.d.mts.map → nitro--E4op34w.d.mts.map} +1 -1
- package/dist/{nitro-ClRZLD1g.mjs → nitro-ClHmVj1H.mjs} +29 -2
- package/dist/nitro-ClHmVj1H.mjs.map +1 -0
- package/dist/{nodeResponse-CIEEbrNE.mjs → nodeResponse-DKrYWrxk.mjs} +1 -1
- package/dist/{nodeResponse-CIEEbrNE.mjs.map → nodeResponse-DKrYWrxk.mjs.map} +1 -1
- package/dist/nuxt/module.d.mts +1 -1
- package/dist/nuxt/module.mjs +3 -3
- package/dist/orpc/index.d.mts +4 -4
- package/dist/orpc/index.d.mts.map +1 -1
- package/dist/orpc/index.mjs +2 -2
- package/dist/orpc/index.mjs.map +1 -1
- package/dist/{package-CUhII9DA.mjs → package-Bgs0VSDF.mjs} +2 -2
- package/dist/package-Bgs0VSDF.mjs.map +1 -0
- package/dist/{parseError-Cagr-Ctc.d.mts → parseError-BwBg-iW4.d.mts} +2 -2
- package/dist/parseError-BwBg-iW4.d.mts.map +1 -0
- package/dist/pipeline.d.mts +0 -19
- package/dist/pipeline.d.mts.map +1 -1
- package/dist/pipeline.mjs +12 -0
- package/dist/pipeline.mjs.map +1 -1
- package/dist/{pretty-error-CVVgwlTn.mjs → pretty-error-THg0U0w9.mjs} +37 -27
- package/dist/pretty-error-THg0U0w9.mjs.map +1 -0
- package/dist/{pretty-error-snippet.node-c_bzjg7g.mjs → pretty-error-snippet.node-itfCajBM.mjs} +3 -2
- package/dist/{pretty-error-snippet.node-c_bzjg7g.mjs.map → pretty-error-snippet.node-itfCajBM.mjs.map} +1 -1
- package/dist/react-router/index.d.mts +4 -4
- package/dist/react-router/index.d.mts.map +1 -1
- package/dist/react-router/index.mjs +2 -2
- package/dist/react-router/index.mjs.map +1 -1
- package/dist/register-disk-snippet-B_JyhodL.mjs +21 -0
- package/dist/register-disk-snippet-B_JyhodL.mjs.map +1 -0
- package/dist/runtime/client/log.d.mts +1 -1
- package/dist/runtime/server/routes/_evlog/ingest.post.d.mts +7 -0
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs +39 -3
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs.map +1 -1
- package/dist/runtime/server/useLogger.d.mts +1 -1
- package/dist/runtime/server/useLogger.mjs.map +1 -1
- package/dist/runtime/utils/parseError.d.mts +2 -2
- package/dist/{source-location-xkDGiERl.mjs → source-location-CHOPF2nd.mjs} +2 -1
- package/dist/{source-location-xkDGiERl.mjs.map → source-location-CHOPF2nd.mjs.map} +1 -1
- package/dist/{storage-7X37OToT.mjs → storage-D4sBVffQ.mjs} +1 -1
- package/dist/storage-D4sBVffQ.mjs.map +1 -0
- package/dist/stream.d.mts +1 -1
- package/dist/stream.mjs +1 -1
- package/dist/sveltekit/index.d.mts +3 -4
- package/dist/sveltekit/index.d.mts.map +1 -1
- package/dist/sveltekit/index.mjs +5 -3
- package/dist/sveltekit/index.mjs.map +1 -1
- package/dist/toolkit.d.mts +22 -8
- package/dist/toolkit.d.mts.map +1 -1
- package/dist/toolkit.mjs +7 -7
- package/dist/types.d.mts +1 -1
- package/dist/{useLogger-Dv52PDpH.d.mts → useLogger-DiRWGD33.d.mts} +3 -3
- package/dist/useLogger-DiRWGD33.d.mts.map +1 -0
- package/dist/{utils-DmNbZwBZ.d.mts → utils-XPMPENUK.d.mts} +2 -2
- package/dist/{utils-DmNbZwBZ.d.mts.map → utils-XPMPENUK.d.mts.map} +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils.mjs +2 -1
- package/dist/utils.mjs.map +1 -1
- package/dist/vite/index.d.mts +1 -1
- package/dist/vite/index.mjs +1 -1
- package/dist/workers.d.mts +3 -3
- package/dist/workers.d.mts.map +1 -1
- package/dist/workers.mjs +1 -1
- package/dist/workers.mjs.map +1 -1
- package/package.json +20 -1
- package/dist/audit-BFwTUxBJ.mjs.map +0 -1
- package/dist/audit-BUAajsPU.d.mts.map +0 -1
- package/dist/drain-D_fy7m0n.mjs.map +0 -1
- package/dist/enrich-drain-CG_2Nix-.mjs +0 -122
- package/dist/enrich-drain-CG_2Nix-.mjs.map +0 -1
- package/dist/fork-CYm453dq.mjs.map +0 -1
- package/dist/index-CE7kH0II.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/logger-BccCJUyD.d.mts.map +0 -1
- package/dist/middleware-DQ6-h8h0.d.mts.map +0 -1
- package/dist/next/instrumentation.d.mts.map +0 -1
- package/dist/nitro-ClRZLD1g.mjs.map +0 -1
- package/dist/package-CUhII9DA.mjs.map +0 -1
- package/dist/parseError-Cagr-Ctc.d.mts.map +0 -1
- package/dist/pretty-error-CVVgwlTn.mjs.map +0 -1
- package/dist/storage-7X37OToT.mjs.map +0 -1
- package/dist/useLogger-Dv52PDpH.d.mts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/sveltekit/index.ts"],"sourcesContent":["import type { RequestLogger } from '../types'\nimport { createMiddlewareLogger, type BaseEvlogOptions } from '../shared/middleware'\nimport { attachForkToLogger } from '../shared/fork'\nimport { extractSafeHeaders } from '../shared/headers'\nimport { createLoggerStorage } from '../shared/storage'\nimport { resolveEvlogError, extractErrorStatus, serializeEvlogErrorResponse } from '../nitro'\nimport { EvlogError } from '../error'\n\nconst { storage, useLogger } = createLoggerStorage(\n 'handle context. Make sure evlog() handle is added to your hooks.server.ts.',\n)\n\nexport type EvlogSvelteKitOptions = BaseEvlogOptions\n\nexport { useLogger }\n\n/**\n * SvelteKit `Handle` function signature — avoids a hard dependency on `@sveltejs/kit`.\n */\ntype SvelteKitHandle = (input: {\n event: { request: Request; url: URL; locals: Record<string, any> }\n resolve: (...args: any[]) => Response | Promise<Response>\n}) => Promise<Response>\n\n/**\n * SvelteKit `HandleServerError` signature — avoids a hard dependency on `@sveltejs/kit`.\n */\ntype SvelteKitHandleServerError = (input: {\n error: unknown\n event: { request: Request; url: URL; locals: Record<string, any> }\n status: number\n message: string\n}) => MaybePromise<void | AppError>\n\ntype MaybePromise<T> = T | Promise<T>\n\n/** Minimal SvelteKit `App.Error` shape */\ninterface AppError {\n message: string\n [key: string]: unknown\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isRequestLogger(value: unknown): value is RequestLogger {\n return isPlainObject(value)\n && typeof value.error === 'function'\n && typeof value.emit === 'function'\n}\n\ninterface ContextEvlogError {\n name: 'EvlogError'\n status: number\n message: string\n why?: string\n fix?: string\n link?: string\n code?: string\n}\n\nfunction isContextEvlogError(value: unknown): value is Record<string, unknown> & ContextEvlogError {\n return isPlainObject(value)\n && value.name === 'EvlogError'\n && typeof value.status === 'number'\n && typeof value.message === 'string'\n}\n\nfunction evlogErrorFromContext(errorData: Record<string, unknown>): EvlogError {\n const nested = isPlainObject(errorData.data) ? errorData.data : undefined\n const readString = (key: string): string | undefined => {\n const direct = errorData[key]\n if (typeof direct === 'string') return direct\n const fromNested = nested?.[key]\n return typeof fromNested === 'string' ? fromNested : undefined\n }\n return new EvlogError({\n message: String(errorData.message),\n status: errorData.status as number,\n code: readString('code'),\n why: readString('why'),\n fix: readString('fix'),\n link: readString('link'),\n })\n}\n\nfunction readEvlogResponseData(response: Record<string, unknown>): { why?: string, fix?: string, link?: string } {\n const { data } = response\n if (!isPlainObject(data)) return {}\n return {\n why: typeof data.why === 'string' ? data.why : undefined,\n fix: typeof data.fix === 'string' ? data.fix : undefined,\n link: typeof data.link === 'string' ? data.link : undefined,\n }\n}\n\n/**\n * Create an evlog handle hook for SvelteKit.\n *\n * Add it to your `src/hooks.server.ts` using SvelteKit's `sequence` helper\n * or as the sole handle export.\n *\n * @example\n * ```ts\n * // src/hooks.server.ts\n * import { initLogger } from 'evlog'\n * import { evlog } from 'evlog/sveltekit'\n * import { createAxiomDrain } from 'evlog/axiom'\n *\n * initLogger({ env: { service: 'my-sveltekit-app' } })\n *\n * export const handle = evlog({\n * drain: createAxiomDrain(),\n * enrich: (ctx) => {\n * ctx.event.region = process.env.FLY_REGION\n * },\n * })\n * ```\n *\n * @example\n * ```ts\n * // Compose with other hooks using sequence\n * import { sequence } from '@sveltejs/kit/hooks'\n * import { evlog } from 'evlog/sveltekit'\n *\n * export const handle = sequence(evlog(), yourOtherHook)\n * ```\n */\nexport function evlog(options: EvlogSvelteKitOptions = {}): SvelteKitHandle {\n return async ({ event, resolve }) => {\n const middlewareOpts = {\n method: event.request.method,\n path: event.url.pathname,\n requestId: event.request.headers.get('x-request-id') || crypto.randomUUID(),\n headers: extractSafeHeaders(event.request.headers),\n ...options,\n }\n const { logger, finish, finishResponse, skipped } = createMiddlewareLogger(middlewareOpts)\n\n if (skipped) {\n return await resolve(event)\n }\n\n attachForkToLogger(storage, logger, middlewareOpts)\n event.locals.log = logger\n\n return storage.run(logger, async () => {\n try {\n const response = await resolve(event)\n\n // SvelteKit catches route errors internally and returns 500.\n // If handleError already logged an EvlogError with a specific status,\n // return a structured JSON response instead of SvelteKit's generic 500.\n const ctx = logger.getContext()\n const errorData = ctx.error\n if (response.status >= 500 && isContextEvlogError(errorData)) {\n const { status } = errorData\n await finish({ status })\n const body = serializeEvlogErrorResponse(evlogErrorFromContext(errorData), event.url.pathname)\n return new Response(JSON.stringify(body), {\n status,\n headers: { 'content-type': 'application/json' },\n })\n }\n\n return finishResponse(response)\n } catch (error) {\n await finish({ error: error instanceof Error ? error : new Error(String(error)) })\n\n // Return structured JSON for EvlogError (like NextJS withEvlog / Nuxt errorHandler)\n if (error instanceof EvlogError) {\n const status = error.status ?? 500\n const body = serializeEvlogErrorResponse(error, event.url.pathname)\n return new Response(JSON.stringify(body), {\n status,\n headers: { 'content-type': 'application/json' },\n })\n }\n\n throw error\n }\n })\n }\n}\n\n/**\n * Create an evlog error handler for SvelteKit.\n *\n * Logs unhandled errors via `event.locals.log` (if available) and returns\n * structured error responses for `EvlogError` instances. For non-evlog errors,\n * returns a generic error response with sanitized messages in production.\n *\n * @example\n * ```ts\n * // src/hooks.server.ts\n * import { evlog, evlogHandleError } from 'evlog/sveltekit'\n *\n * export const handle = evlog()\n * export const handleError = evlogHandleError()\n * ```\n */\nexport function evlogHandleError(): SvelteKitHandleServerError {\n return ({ error, event, status, message }) => {\n const logger = isRequestLogger(event.locals.log) ? event.locals.log : undefined\n\n if (logger && error instanceof Error) {\n logger.error(error)\n }\n\n const evlogError = error instanceof Error ? resolveEvlogError(error) : null\n\n if (evlogError) {\n const errorStatus = extractErrorStatus(evlogError)\n const response = serializeEvlogErrorResponse(evlogError, event.url.pathname)\n return {\n message: typeof response.message === 'string' ? response.message : message,\n status: errorStatus,\n ...readEvlogResponseData(response),\n }\n }\n\n return { message, status }\n }\n}\n\n/**\n * Create both `handle` and `handleError` hooks in a single call.\n *\n * This is the recommended setup for SvelteKit — it returns both hooks\n * pre-configured and ready to export from `hooks.server.ts`.\n *\n * @example\n * ```ts\n * // src/hooks.server.ts\n * import { initLogger } from 'evlog'\n * import { createEvlogHooks } from 'evlog/sveltekit'\n * import { createAxiomDrain } from 'evlog/axiom'\n *\n * initLogger({ env: { service: 'my-app' } })\n *\n * export const { handle, handleError } = createEvlogHooks({\n * drain: createAxiomDrain(),\n * enrich: (ctx) => {\n * ctx.event.region = process.env.FLY_REGION\n * },\n * })\n * ```\n *\n * @example\n * ```ts\n * // Compose with other hooks using sequence\n * import { sequence } from '@sveltejs/kit/hooks'\n * import { createEvlogHooks } from 'evlog/sveltekit'\n *\n * const evlogHooks = createEvlogHooks()\n *\n * export const handle = sequence(evlogHooks.handle, yourOtherHook)\n * export const handleError = evlogHooks.handleError\n * ```\n */\nexport function createEvlogHooks(options: EvlogSvelteKitOptions = {}) {\n return {\n handle: evlog(options),\n handleError: evlogHandleError(),\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/sveltekit/index.ts"],"sourcesContent":["import type { RequestLogger } from '../types'\nimport { registerDiskPrettyErrorSnippetReader } from '../shared/register-disk-snippet'\nimport { createMiddlewareLogger, type BaseEvlogOptions } from '../shared/middleware'\nimport { attachForkToLogger } from '../shared/fork'\nimport { extractSafeHeaders } from '../shared/headers'\nimport { createLoggerStorage } from '../shared/storage'\nimport { resolveEvlogError, extractErrorStatus, serializeEvlogErrorResponse } from '../nitro'\nimport { EvlogError } from '../error'\n\nconst { storage, useLogger } = createLoggerStorage(\n 'handle context. Make sure evlog() handle is added to your hooks.server.ts.',\n)\n\nvoid registerDiskPrettyErrorSnippetReader()\n\nexport type EvlogSvelteKitOptions = BaseEvlogOptions\n\nexport { useLogger }\n\n/**\n * SvelteKit `Handle` function signature — avoids a hard dependency on `@sveltejs/kit`.\n */\ntype SvelteKitHandle = (input: {\n event: { request: Request; url: URL; locals: Record<string, any> }\n resolve: (...args: any[]) => Response | Promise<Response>\n}) => Promise<Response>\n\n/**\n * SvelteKit `HandleServerError` signature — avoids a hard dependency on `@sveltejs/kit`.\n */\ntype SvelteKitHandleServerError = (input: {\n error: unknown\n event: { request: Request; url: URL; locals: Record<string, any> }\n status: number\n message: string\n}) => MaybePromise<void | AppError>\n\ntype MaybePromise<T> = T | Promise<T>\n\n/** Minimal SvelteKit `App.Error` shape */\ninterface AppError {\n message: string\n [key: string]: unknown\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isRequestLogger(value: unknown): value is RequestLogger {\n return isPlainObject(value)\n && typeof value.error === 'function'\n && typeof value.emit === 'function'\n}\n\ninterface ContextEvlogError {\n name: 'EvlogError'\n status: number\n message: string\n why?: string\n fix?: string\n link?: string\n code?: string\n}\n\nfunction isContextEvlogError(value: unknown): value is Record<string, unknown> & ContextEvlogError {\n return isPlainObject(value)\n && value.name === 'EvlogError'\n && typeof value.status === 'number'\n && typeof value.message === 'string'\n}\n\nfunction evlogErrorFromContext(errorData: Record<string, unknown>): EvlogError {\n const nested = isPlainObject(errorData.data) ? errorData.data : undefined\n const readString = (key: string): string | undefined => {\n const direct = errorData[key]\n if (typeof direct === 'string') return direct\n const fromNested = nested?.[key]\n return typeof fromNested === 'string' ? fromNested : undefined\n }\n return new EvlogError({\n message: String(errorData.message),\n status: errorData.status as number,\n code: readString('code'),\n why: readString('why'),\n fix: readString('fix'),\n link: readString('link'),\n })\n}\n\nfunction readEvlogResponseData(response: Record<string, unknown>): { why?: string, fix?: string, link?: string } {\n const { data } = response\n if (!isPlainObject(data)) return {}\n return {\n why: typeof data.why === 'string' ? data.why : undefined,\n fix: typeof data.fix === 'string' ? data.fix : undefined,\n link: typeof data.link === 'string' ? data.link : undefined,\n }\n}\n\n/**\n * Create an evlog handle hook for SvelteKit.\n *\n * Add it to your `src/hooks.server.ts` using SvelteKit's `sequence` helper\n * or as the sole handle export.\n *\n * @example\n * ```ts\n * // src/hooks.server.ts\n * import { initLogger } from 'evlog'\n * import { evlog } from 'evlog/sveltekit'\n * import { createAxiomDrain } from 'evlog/axiom'\n *\n * initLogger({ env: { service: 'my-sveltekit-app' } })\n *\n * export const handle = evlog({\n * drain: createAxiomDrain(),\n * enrich: (ctx) => {\n * ctx.event.region = process.env.FLY_REGION\n * },\n * })\n * ```\n *\n * @example\n * ```ts\n * // Compose with other hooks using sequence\n * import { sequence } from '@sveltejs/kit/hooks'\n * import { evlog } from 'evlog/sveltekit'\n *\n * export const handle = sequence(evlog(), yourOtherHook)\n * ```\n */\nexport function evlog(options: EvlogSvelteKitOptions = {}): SvelteKitHandle {\n return async ({ event, resolve }) => {\n const middlewareOpts = {\n method: event.request.method,\n path: event.url.pathname,\n requestId: event.request.headers.get('x-request-id') || crypto.randomUUID(),\n headers: extractSafeHeaders(event.request.headers),\n ...options,\n }\n const { logger, finish, finishResponse, skipped } = createMiddlewareLogger(middlewareOpts)\n\n if (skipped) {\n return await resolve(event)\n }\n\n attachForkToLogger(storage, logger, middlewareOpts)\n event.locals.log = logger\n\n return storage.run(logger, async () => {\n try {\n const response = await resolve(event)\n\n // SvelteKit catches route errors internally and returns 500.\n // If handleError already logged an EvlogError with a specific status,\n // return a structured JSON response instead of SvelteKit's generic 500.\n const ctx = logger.getContext()\n const errorData = ctx.error\n if (response.status >= 500 && isContextEvlogError(errorData)) {\n const { status } = errorData\n await finish({ status })\n const body = serializeEvlogErrorResponse(evlogErrorFromContext(errorData), event.url.pathname)\n return new Response(JSON.stringify(body), {\n status,\n headers: { 'content-type': 'application/json' },\n })\n }\n\n return finishResponse(response)\n } catch (error) {\n await finish({ error: error instanceof Error ? error : new Error(String(error)) })\n\n // Return structured JSON for EvlogError (like NextJS withEvlog / Nuxt errorHandler)\n if (error instanceof EvlogError) {\n const status = error.status ?? 500\n const body = serializeEvlogErrorResponse(error, event.url.pathname)\n return new Response(JSON.stringify(body), {\n status,\n headers: { 'content-type': 'application/json' },\n })\n }\n\n throw error\n }\n })\n }\n}\n\n/**\n * Create an evlog error handler for SvelteKit.\n *\n * Logs unhandled errors via `event.locals.log` (if available) and returns\n * structured error responses for `EvlogError` instances. For non-evlog errors,\n * returns a generic error response with sanitized messages in production.\n *\n * @example\n * ```ts\n * // src/hooks.server.ts\n * import { evlog, evlogHandleError } from 'evlog/sveltekit'\n *\n * export const handle = evlog()\n * export const handleError = evlogHandleError()\n * ```\n */\nexport function evlogHandleError(): SvelteKitHandleServerError {\n return ({ error, event, status, message }) => {\n const logger = isRequestLogger(event.locals.log) ? event.locals.log : undefined\n\n if (logger && error instanceof Error) {\n logger.error(error)\n }\n\n const evlogError = error instanceof Error ? resolveEvlogError(error) : null\n\n if (evlogError) {\n const errorStatus = extractErrorStatus(evlogError)\n const response = serializeEvlogErrorResponse(evlogError, event.url.pathname)\n return {\n message: typeof response.message === 'string' ? response.message : message,\n status: errorStatus,\n ...readEvlogResponseData(response),\n }\n }\n\n return { message, status }\n }\n}\n\n/**\n * Create both `handle` and `handleError` hooks in a single call.\n *\n * This is the recommended setup for SvelteKit — it returns both hooks\n * pre-configured and ready to export from `hooks.server.ts`.\n *\n * @example\n * ```ts\n * // src/hooks.server.ts\n * import { initLogger } from 'evlog'\n * import { createEvlogHooks } from 'evlog/sveltekit'\n * import { createAxiomDrain } from 'evlog/axiom'\n *\n * initLogger({ env: { service: 'my-app' } })\n *\n * export const { handle, handleError } = createEvlogHooks({\n * drain: createAxiomDrain(),\n * enrich: (ctx) => {\n * ctx.event.region = process.env.FLY_REGION\n * },\n * })\n * ```\n *\n * @example\n * ```ts\n * // Compose with other hooks using sequence\n * import { sequence } from '@sveltejs/kit/hooks'\n * import { createEvlogHooks } from 'evlog/sveltekit'\n *\n * const evlogHooks = createEvlogHooks()\n *\n * export const handle = sequence(evlogHooks.handle, yourOtherHook)\n * export const handleError = evlogHooks.handleError\n * ```\n */\nexport function createEvlogHooks(options: EvlogSvelteKitOptions = {}) {\n return {\n handle: evlog(options),\n handleError: evlogHandleError(),\n }\n}\n"],"mappings":"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"}
|
package/dist/toolkit.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as resolveMiddlewarePluginRunner, i as createMiddlewareLogger, n as MiddlewareLoggerOptions, o as runEnrichAndDrain, r as MiddlewareLoggerResult, t as BaseEvlogOptions } from "./middleware-
|
|
3
|
-
import { i as toMiddlewareOptions, n as defineEvlog, r as toLoggerConfig, t as EvlogConfig } from "./define-
|
|
4
|
-
import { n as EnricherOptions, r as defineEnricher, t as EnricherDefinition } from "./enricher-
|
|
5
|
-
import { n as getServiceForPath, r as shouldLog, t as extractErrorStatus } from "./errors-
|
|
1
|
+
import { $ as LogLevel, Ct as createPluginRunner, Dt as getEmptyPluginRunner, Et as enricherPlugin, St as RequestLifecycleContext, Tt as drainPlugin, U as DrainContext, W as EnrichContext, _t as ClientLogContext, bt as PluginSetupContext, ht as WideEvent, l as AuditableLogger, ot as RequestLogger, pt as TailSamplingContext, vt as EvlogPlugin, wt as definePlugin, xt as RequestFinishContext, yt as PluginRunner } from "./audit-CBfv3rl1.mjs";
|
|
2
|
+
import { a as resolveMiddlewarePluginRunner, i as createMiddlewareLogger, n as MiddlewareLoggerOptions, o as runEnrichAndDrain, r as MiddlewareLoggerResult, t as BaseEvlogOptions } from "./middleware-CjVyGyrG.mjs";
|
|
3
|
+
import { i as toMiddlewareOptions, n as defineEvlog, r as toLoggerConfig, t as EvlogConfig } from "./define-BuDJpV2b.mjs";
|
|
4
|
+
import { n as EnricherOptions, r as defineEnricher, t as EnricherDefinition } from "./enricher-VdBVX4oT.mjs";
|
|
5
|
+
import { n as getServiceForPath, r as shouldLog, t as extractErrorStatus } from "./errors-ZdY6Ohi6.mjs";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
7
|
|
|
8
8
|
//#region src/shared/streamResponse.d.ts
|
|
@@ -81,6 +81,20 @@ interface ConfigField<T> {
|
|
|
81
81
|
* 4. `process.env[envKey]` for each env in `field.env`
|
|
82
82
|
*/
|
|
83
83
|
declare function resolveAdapterConfig<T>(namespace: string, fields: ConfigField<T>[], overrides?: Partial<T>): Promise<Partial<T>>;
|
|
84
|
+
/**
|
|
85
|
+
* Format environment variable names for user-facing messages.
|
|
86
|
+
* Drops internal `NUXT_*` aliases; joins alternatives with `, ` and fields with `/`.
|
|
87
|
+
*/
|
|
88
|
+
declare function formatPublicEnvKeys(...envLists: (string[] | undefined)[]): string;
|
|
89
|
+
/**
|
|
90
|
+
* Copy a deprecated config field onto its replacement when the replacement is
|
|
91
|
+
* unset, warning once per adapter/field pair.
|
|
92
|
+
*/
|
|
93
|
+
declare function applyDeprecatedAlias<T extends object>(config: T, opts: {
|
|
94
|
+
adapter: string;
|
|
95
|
+
from: keyof T & string;
|
|
96
|
+
to: keyof T & string;
|
|
97
|
+
}): T;
|
|
84
98
|
//#endregion
|
|
85
99
|
//#region src/shared/drain.d.ts
|
|
86
100
|
/**
|
|
@@ -409,9 +423,9 @@ declare const OTEL_SEVERITY_TEXT: Record<LogLevel, string>;
|
|
|
409
423
|
* app.use(evlog()) is registered before your routes."`.
|
|
410
424
|
*/
|
|
411
425
|
declare function createLoggerStorage(contextHint: string): {
|
|
412
|
-
storage: AsyncLocalStorage<
|
|
413
|
-
useLogger: <T extends object = Record<string, unknown>>() =>
|
|
426
|
+
storage: AsyncLocalStorage<AuditableLogger>;
|
|
427
|
+
useLogger: <T extends object = Record<string, unknown>>() => AuditableLogger<T>;
|
|
414
428
|
};
|
|
415
429
|
//#endregion
|
|
416
|
-
export { AttributeValueKind, BaseEvlogOptions, ClientLogContext, ConfigField, DrainOptions, EVLOG_USER_AGENT, EVLOG_VERSION, 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, StreamCompleteMeta, TypedAttributeValue, attachForkToLogger, bindStreamingResponseLifecycle, composeDrains, composeEnrichers, composeKeep, composePlugins, createLoggerStorage, createMiddlewareLogger, createPluginRunner, defineDrain, defineEnricher, defineEvlog, defineFrameworkIntegration, defineHttpDrain, definePlugin, drainPlugin, enricherPlugin, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, getEmptyPluginRunner, getHeader, getRuntimeConfig, getServiceForPath, httpPost, isStreamingResponse, mergeEventField, normalizeNumber, resolveAdapterConfig, resolveMiddlewarePluginRunner, runEnrichAndDrain, shouldDeferEmitForResponse, shouldLog, toLoggerConfig, toMiddlewareOptions, toOtlpAttributeValue, toTypedAttributeValue, withEvlogIdentityHeaders };
|
|
430
|
+
export { AttributeValueKind, BaseEvlogOptions, ClientLogContext, ConfigField, DrainOptions, EVLOG_USER_AGENT, EVLOG_VERSION, 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, StreamCompleteMeta, TypedAttributeValue, applyDeprecatedAlias, attachForkToLogger, bindStreamingResponseLifecycle, composeDrains, composeEnrichers, composeKeep, composePlugins, createLoggerStorage, createMiddlewareLogger, createPluginRunner, defineDrain, defineEnricher, defineEvlog, defineFrameworkIntegration, defineHttpDrain, definePlugin, drainPlugin, enricherPlugin, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, formatPublicEnvKeys, getEmptyPluginRunner, getHeader, getRuntimeConfig, getServiceForPath, httpPost, isStreamingResponse, mergeEventField, normalizeNumber, resolveAdapterConfig, resolveMiddlewarePluginRunner, runEnrichAndDrain, shouldDeferEmitForResponse, shouldLog, toLoggerConfig, toMiddlewareOptions, toOtlpAttributeValue, toTypedAttributeValue, withEvlogIdentityHeaders };
|
|
417
431
|
//# 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/streamResponse.ts","../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":";;;;;;;;;;;;UAIiB,kBAAA;;EAEf,MAAA;;EAEA,KAAA,GAAQ,KAAA;AAAA;;;;iBAMM,mBAAA,CAAoB,QAAA,EAAU,QAAA;;;;AAA9C;;iBASgB,0BAAA,CAA2B,QAAA,EAAU,QAAA;;;AAArD;;;;;AA0EA;iBAAgB,8BAAA,CACd,QAAA,EAAU,QAAA,EACV,UAAA,GAAa,IAAA,EAAM,kBAAA,YAA8B,OAAA,SAChD,QAAA;;;;;;;iBC7Fa,gBAAA,CACd,SAAA,EAAW,KAAA,EAAO,GAAA,EAAK,aAAA,YAAyB,OAAA,SAChD,OAAA;EAAW,IAAA;AAAA,KACT,GAAA,EAAK,aAAA,KAAkB,OAAA;;;;;iBAiBX,aAAA,CACd,MAAA,EAAQ,KAAA,EAAO,GAAA,EAAK,YAAA,YAAwB,OAAA,SAC5C,OAAA;EAAW,IAAA;AAAA,KACT,GAAA,EAAK,YAAA,KAAiB,OAAA;;ADhB1B;;;iBCoCgB,WAAA,CACd,OAAA,EAAS,KAAA,EAAO,GAAA,EAAK,mBAAA,YAA+B,OAAA,SACpD,OAAA;EAAW,IAAA;AAAA,KACT,GAAA,EAAK,mBAAA,KAAwB,OAAA;;iBAcjB,cAAA,CAAA,GAAkB,KAAA,EAAO,KAAA,CAAM,WAAA,kBAA6B,WAAA;;;;iBChE5D,gBAAA,CAAA,GAAoB,OAAA,CAAQ,MAAA;;;;;UAQ3B,WAAA;EACf,GAAA,QAAW,CAAA;EACX,GAAA;AAAA;;;;;;;;AFCF;iBEUsB,oBAAA,GAAA,CACpB,SAAA,UACA,MAAA,EAAQ,WAAA,CAAY,CAAA,KACpB,SAAA,GAAY,OAAA,CAAQ,CAAA,IACnB,OAAA,CAAQ,OAAA,CAAQ,CAAA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toolkit.d.mts","names":[],"sources":["../src/shared/streamResponse.ts","../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,15 +1,15 @@
|
|
|
1
|
-
import { A as
|
|
1
|
+
import { A as drainPlugin, M as getEmptyPluginRunner, O as createPluginRunner, j as enricherPlugin, k as definePlugin } from "./audit-CL0q7GJU.mjs";
|
|
2
2
|
import { i as normalizeNumber, n as extractSafeNodeHeaders, r as getHeader, t as extractSafeHeaders } from "./headers-VtmnWcfn.mjs";
|
|
3
3
|
import { t as extractErrorStatus } from "./errors-DA0cyr8q.mjs";
|
|
4
4
|
import { n as toLoggerConfig, r as toMiddlewareOptions, t as defineEvlog } from "./define-Bpaymi-h.mjs";
|
|
5
5
|
import { n as shouldLog, t as getServiceForPath } from "./routes-4rMzRyTk.mjs";
|
|
6
6
|
import { n as isStreamingResponse, r as shouldDeferEmitForResponse, t as bindStreamingResponseLifecycle } from "./streamResponse-CmQ3qUbF.mjs";
|
|
7
|
-
import { i as withEvlogIdentityHeaders, n as EVLOG_VERSION, r as httpPost, t as EVLOG_USER_AGENT } from "./http-
|
|
8
|
-
import { i as
|
|
7
|
+
import { i as withEvlogIdentityHeaders, n as EVLOG_VERSION, r as httpPost, t as EVLOG_USER_AGENT } from "./http-DA3RWQrm.mjs";
|
|
8
|
+
import { a as getRuntimeConfig, i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias, t as defineDrain } from "./drain-6lV-g7JB.mjs";
|
|
9
9
|
import { n as toOtlpAttributeValue, r as toTypedAttributeValue, t as mergeEventField } from "./event-qwAv-7AZ.mjs";
|
|
10
10
|
import { n as OTEL_SEVERITY_TEXT, t as OTEL_SEVERITY_NUMBER } from "./severity-CwXUSHt3.mjs";
|
|
11
11
|
import { a as composePlugins, i as composeKeep, n as composeDrains, r as composeEnrichers, t as defineEnricher } from "./enricher-DAWf2-Fx.mjs";
|
|
12
|
-
import { a as runEnrichAndDrain, i as resolveMiddlewarePluginRunner, n as forkBackgroundLogger, r as createMiddlewareLogger, t as attachForkToLogger } from "./fork-
|
|
13
|
-
import { t as defineFrameworkIntegration } from "./integration-
|
|
14
|
-
import { t as createLoggerStorage } from "./storage-
|
|
15
|
-
export { EVLOG_USER_AGENT, EVLOG_VERSION, OTEL_SEVERITY_NUMBER, OTEL_SEVERITY_TEXT, attachForkToLogger, bindStreamingResponseLifecycle, composeDrains, composeEnrichers, composeKeep, composePlugins, createLoggerStorage, createMiddlewareLogger, createPluginRunner, defineDrain, defineEnricher, defineEvlog, defineFrameworkIntegration, defineHttpDrain, definePlugin, drainPlugin, enricherPlugin, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, getEmptyPluginRunner, getHeader, getRuntimeConfig, getServiceForPath, httpPost, isStreamingResponse, mergeEventField, normalizeNumber, resolveAdapterConfig, resolveMiddlewarePluginRunner, runEnrichAndDrain, shouldDeferEmitForResponse, shouldLog, toLoggerConfig, toMiddlewareOptions, toOtlpAttributeValue, toTypedAttributeValue, withEvlogIdentityHeaders };
|
|
12
|
+
import { a as runEnrichAndDrain, i as resolveMiddlewarePluginRunner, n as forkBackgroundLogger, r as createMiddlewareLogger, t as attachForkToLogger } from "./fork-Di44utlp.mjs";
|
|
13
|
+
import { t as defineFrameworkIntegration } from "./integration-2PpI-bCm.mjs";
|
|
14
|
+
import { t as createLoggerStorage } from "./storage-D4sBVffQ.mjs";
|
|
15
|
+
export { EVLOG_USER_AGENT, EVLOG_VERSION, OTEL_SEVERITY_NUMBER, OTEL_SEVERITY_TEXT, applyDeprecatedAlias, attachForkToLogger, bindStreamingResponseLifecycle, composeDrains, composeEnrichers, composeKeep, composePlugins, createLoggerStorage, createMiddlewareLogger, createPluginRunner, defineDrain, defineEnricher, defineEvlog, defineFrameworkIntegration, defineHttpDrain, definePlugin, drainPlugin, enricherPlugin, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, formatPublicEnvKeys, getEmptyPluginRunner, getHeader, getRuntimeConfig, getServiceForPath, httpPost, isStreamingResponse, mergeEventField, normalizeNumber, resolveAdapterConfig, resolveMiddlewarePluginRunner, runEnrichAndDrain, shouldDeferEmitForResponse, shouldLog, toLoggerConfig, toMiddlewareOptions, toOtlpAttributeValue, toTypedAttributeValue, withEvlogIdentityHeaders };
|
package/dist/types.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as LogLevel, B as AuditTarget, F as AuditChanges, G as EnvironmentContext, H as DeepPartial, I as AuditFields, J as FieldContext, K as ErrorCode, L as AuditLoggerMethod, M as AuditAction, N as AuditActionDefinition, P as AuditActor, Q as Log, R as AuditPatchOp, U as DrainContext, V as BaseWideEvent, W as EnrichContext, X as IngestPayload, Y as H3EventContext, Z as InternalFields, at as RequestLogEntry, ct as RouteConfig, dt as ServerEvent, et as LoggerConfig, ft as TailSamplingCondition, ht as WideEvent, it as RegisteredErrorCatalogs, lt as SamplingConfig, mt as TransportConfig, nt as RedactConfig, ot as RequestLogger, pt as TailSamplingContext, q as ErrorOptions, rt as RegisteredAuditCatalogs, st as RequestLoggerOptions, tt as ParsedError, ut as SamplingRates, z as AuditSeverity } from "./audit-CBfv3rl1.mjs";
|
|
2
2
|
export { AuditAction, AuditActionDefinition, AuditActor, AuditChanges, AuditFields, AuditLoggerMethod, AuditPatchOp, AuditSeverity, AuditTarget, BaseWideEvent, DeepPartial, DrainContext, EnrichContext, EnvironmentContext, ErrorCode, ErrorOptions, FieldContext, H3EventContext, IngestPayload, InternalFields, Log, LogLevel, LoggerConfig, ParsedError, RedactConfig, RegisteredAuditCatalogs, RegisteredErrorCatalogs, RequestLogEntry, RequestLogger, RequestLoggerOptions, RouteConfig, SamplingConfig, SamplingRates, ServerEvent, TailSamplingCondition, TailSamplingContext, TransportConfig, WideEvent };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dt as ServerEvent, l as AuditableLogger } from "./audit-CBfv3rl1.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/runtime/server/useLogger.d.ts
|
|
4
4
|
/**
|
|
@@ -33,7 +33,7 @@ import { ct as ServerEvent, rt as RequestLogger } from "./audit-BUAajsPU.mjs";
|
|
|
33
33
|
* log.set({ user: { id: '123', plan: 'pro' } }) // OK
|
|
34
34
|
* log.set({ foo: 'bar' }) // TS error
|
|
35
35
|
*/
|
|
36
|
-
declare function useLogger<T extends object = Record<string, unknown>>(event: ServerEvent, service?: string):
|
|
36
|
+
declare function useLogger<T extends object = Record<string, unknown>>(event: ServerEvent, service?: string): AuditableLogger<T>;
|
|
37
37
|
//#endregion
|
|
38
38
|
export { useLogger as t };
|
|
39
|
-
//# sourceMappingURL=useLogger-
|
|
39
|
+
//# sourceMappingURL=useLogger-DiRWGD33.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLogger-DiRWGD33.d.mts","names":[],"sources":["../src/runtime/server/useLogger.ts"],"mappings":";;;;AAmCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,SAAA,oBAA6B,MAAA,kBAAA,CAAyB,KAAA,EAAO,WAAA,EAAa,OAAA,YAAmB,eAAA,CAAgB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as LogLevel, G as EnvironmentContext } from "./audit-CBfv3rl1.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/utils.d.ts
|
|
4
4
|
declare function formatDuration(ms: number): string;
|
|
@@ -69,4 +69,4 @@ declare function globToRegExp(pattern: string, separator?: '/' | '.'): RegExp;
|
|
|
69
69
|
declare function matchesPattern(path: string, pattern: string): boolean;
|
|
70
70
|
//#endregion
|
|
71
71
|
export { matchesPattern as _, escapeFormatString as a, getConsoleMethod as c, globToRegExp as d, isBrowser as f, isServer as g, isLevelEnabled as h, detectEnvironment as i, getCssLevelColor as l, isDev as m, colors as n, filterSafeHeaders as o, isClient as p, cssColors as r, formatDuration as s, SENSITIVE_HEADERS as t, getLevelColor as u };
|
|
72
|
-
//# sourceMappingURL=utils-
|
|
72
|
+
//# sourceMappingURL=utils-XPMPENUK.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-
|
|
1
|
+
{"version":3,"file":"utils-XPMPENUK.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;;;;;;;;;AA9Cb;iBAkEgB,iBAAA,CAAkB,OAAA,EAAS,OAAA,CAAQ,MAAA,gCAAsC,MAAA;;;;;;;;iBAqBzE,YAAA,CAAa,OAAA,UAAiB,SAAA,eAA6B,MAAA;;;;;iBAsB3D,cAAA,CAAe,IAAA,UAAc,OAAA"}
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as matchesPattern, a as escapeFormatString, c as getConsoleMethod, d as globToRegExp, f as isBrowser, g as isServer, h as isLevelEnabled, i as detectEnvironment, l as getCssLevelColor, m as isDev, n as colors, o as filterSafeHeaders, p as isClient, r as cssColors, s as formatDuration, t as SENSITIVE_HEADERS, u as getLevelColor } from "./utils-
|
|
1
|
+
import { _ as matchesPattern, a as escapeFormatString, c as getConsoleMethod, d as globToRegExp, f as isBrowser, g as isServer, h as isLevelEnabled, i as detectEnvironment, l as getCssLevelColor, m as isDev, n as colors, o as filterSafeHeaders, p as isClient, r as cssColors, s as formatDuration, t as SENSITIVE_HEADERS, u as getLevelColor } from "./utils-XPMPENUK.mjs";
|
|
2
2
|
export { SENSITIVE_HEADERS, colors, cssColors, detectEnvironment, escapeFormatString, filterSafeHeaders, formatDuration, getConsoleMethod, getCssLevelColor, getLevelColor, globToRegExp, isBrowser, isClient, isDev, isLevelEnabled, isServer, matchesPattern };
|
package/dist/utils.mjs
CHANGED
|
@@ -103,6 +103,7 @@ const SENSITIVE_HEADERS = [
|
|
|
103
103
|
"x-auth-token",
|
|
104
104
|
"proxy-authorization"
|
|
105
105
|
];
|
|
106
|
+
const SENSITIVE_HEADER_SET = new Set(SENSITIVE_HEADERS);
|
|
106
107
|
/**
|
|
107
108
|
* Filter out undefined values and sensitive headers from a raw header map.
|
|
108
109
|
*
|
|
@@ -114,7 +115,7 @@ const SENSITIVE_HEADERS = [
|
|
|
114
115
|
*/
|
|
115
116
|
function filterSafeHeaders(headers) {
|
|
116
117
|
const safeHeaders = {};
|
|
117
|
-
for (const [key, value] of Object.entries(headers)) if (value !== void 0 && !
|
|
118
|
+
for (const [key, value] of Object.entries(headers)) if (value !== void 0 && !SENSITIVE_HEADER_SET.has(key.toLowerCase())) safeHeaders[key] = value;
|
|
118
119
|
return safeHeaders;
|
|
119
120
|
}
|
|
120
121
|
const patternCache = /* @__PURE__ */ new Map();
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import type { EnvironmentContext, LogLevel } from './types'\n\nexport function formatDuration(ms: number): string {\n if (ms < 1000) {\n return `${Math.round(ms)}ms`\n }\n return `${(ms / 1000).toFixed(2)}s`\n}\n\nexport function isServer(): boolean {\n return typeof window === 'undefined'\n}\n\nexport function isClient(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isBrowser(): boolean {\n if (typeof window === 'undefined') return false\n if (typeof document === 'undefined') return false\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') return false\n return true\n}\n\nexport function isDev(): boolean {\n if (typeof process !== 'undefined') {\n return process.env.NODE_ENV !== 'production'\n }\n if (typeof window !== 'undefined') {\n return true\n }\n return false\n}\n\nexport function detectEnvironment(): Partial<EnvironmentContext> {\n const env = typeof process !== 'undefined' ? process.env : {}\n const defaultEnvironment = isDev() ? 'development' : 'production'\n\n return {\n environment: env.NODE_ENV || defaultEnvironment,\n service: env.SERVICE_NAME || 'app',\n version: env.APP_VERSION,\n commitHash: env.COMMIT_SHA\n || env.GITHUB_SHA\n || env.VERCEL_GIT_COMMIT_SHA\n || env.CF_PAGES_COMMIT_SHA,\n region: env.VERCEL_REGION\n || env.AWS_REGION\n || env.FLY_REGION\n || env.CF_REGION,\n }\n}\n\nconst LEVEL_ORDER: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n}\n\n/**\n * True if `level` is at least as severe as `minLevel` (debug < info < warn < error).\n */\nexport function isLevelEnabled(level: LogLevel, minLevel: LogLevel): boolean {\n return LEVEL_ORDER[level] >= LEVEL_ORDER[minLevel]\n}\n\nexport function getConsoleMethod(level: LogLevel): LogLevel {\n return level\n}\n\nexport const colors = {\n reset: '\\x1B[0m',\n bold: '\\x1B[1m',\n dim: '\\x1B[2m',\n red: '\\x1B[31m',\n green: '\\x1B[32m',\n yellow: '\\x1B[33m',\n blue: '\\x1B[34m',\n magenta: '\\x1B[35m',\n cyan: '\\x1B[36m',\n white: '\\x1B[37m',\n gray: '\\x1B[90m',\n} as const\n\nconst levelColorMap: Record<string, string> = { error: colors.red, warn: colors.yellow, info: colors.cyan, debug: colors.gray }\n\nexport function getLevelColor(level: string): string {\n return levelColorMap[level] ?? colors.white\n}\n\nexport const cssColors = {\n dim: 'color: #6b7280',\n red: 'color: #ef4444; font-weight: bold',\n green: 'color: #22c55e',\n yellow: 'color: #f59e0b; font-weight: bold',\n cyan: 'color: #06b6d4; font-weight: bold',\n gray: 'color: #6b7280; font-weight: bold',\n reset: 'color: inherit; font-weight: normal',\n} as const\n\nconst cssLevelColorMap: Record<string, string> = { error: cssColors.red, warn: cssColors.yellow, info: cssColors.cyan, debug: cssColors.gray }\n\nexport function getCssLevelColor(level: string): string {\n return cssLevelColorMap[level] ?? cssColors.reset\n}\n\n/**\n * Escape `%` in strings interpolated into `console.log` format strings\n * to prevent `%c`, `%s`, `%d` etc. in user data from being interpreted\n * as formatting directives.\n */\nexport function escapeFormatString(str: string): string {\n return str.replace(/%/g, '%%')\n}\n\n/** Headers that should never be passed to hooks for security */\nexport const SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-auth-token',\n 'proxy-authorization',\n]\n\n/**\n * Filter out undefined values and sensitive headers from a raw header map.\n *\n * @param headers - Flat header map where values may be `undefined`\n * (e.g. from `IncomingMessage.headers` or a framework's header accessor).\n * @returns A new object containing only the headers whose values are defined\n * and whose lowercased key is not in the built-in sensitive-header list\n * (e.g. `authorization`, `cookie`, `x-api-key`).\n */\nexport function filterSafeHeaders(headers: Partial<Record<string, string | undefined>>): Record<string, string> {\n const safeHeaders: Record<string, string> = {}\n\n for (const [key, value] of Object.entries(headers)) {\n if (value !== undefined && !
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import type { EnvironmentContext, LogLevel } from './types'\n\nexport function formatDuration(ms: number): string {\n if (ms < 1000) {\n return `${Math.round(ms)}ms`\n }\n return `${(ms / 1000).toFixed(2)}s`\n}\n\nexport function isServer(): boolean {\n return typeof window === 'undefined'\n}\n\nexport function isClient(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isBrowser(): boolean {\n if (typeof window === 'undefined') return false\n if (typeof document === 'undefined') return false\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') return false\n return true\n}\n\nexport function isDev(): boolean {\n if (typeof process !== 'undefined') {\n return process.env.NODE_ENV !== 'production'\n }\n if (typeof window !== 'undefined') {\n return true\n }\n return false\n}\n\nexport function detectEnvironment(): Partial<EnvironmentContext> {\n const env = typeof process !== 'undefined' ? process.env : {}\n const defaultEnvironment = isDev() ? 'development' : 'production'\n\n return {\n environment: env.NODE_ENV || defaultEnvironment,\n service: env.SERVICE_NAME || 'app',\n version: env.APP_VERSION,\n commitHash: env.COMMIT_SHA\n || env.GITHUB_SHA\n || env.VERCEL_GIT_COMMIT_SHA\n || env.CF_PAGES_COMMIT_SHA,\n region: env.VERCEL_REGION\n || env.AWS_REGION\n || env.FLY_REGION\n || env.CF_REGION,\n }\n}\n\nconst LEVEL_ORDER: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n}\n\n/**\n * True if `level` is at least as severe as `minLevel` (debug < info < warn < error).\n */\nexport function isLevelEnabled(level: LogLevel, minLevel: LogLevel): boolean {\n return LEVEL_ORDER[level] >= LEVEL_ORDER[minLevel]\n}\n\nexport function getConsoleMethod(level: LogLevel): LogLevel {\n return level\n}\n\nexport const colors = {\n reset: '\\x1B[0m',\n bold: '\\x1B[1m',\n dim: '\\x1B[2m',\n red: '\\x1B[31m',\n green: '\\x1B[32m',\n yellow: '\\x1B[33m',\n blue: '\\x1B[34m',\n magenta: '\\x1B[35m',\n cyan: '\\x1B[36m',\n white: '\\x1B[37m',\n gray: '\\x1B[90m',\n} as const\n\nconst levelColorMap: Record<string, string> = { error: colors.red, warn: colors.yellow, info: colors.cyan, debug: colors.gray }\n\nexport function getLevelColor(level: string): string {\n return levelColorMap[level] ?? colors.white\n}\n\nexport const cssColors = {\n dim: 'color: #6b7280',\n red: 'color: #ef4444; font-weight: bold',\n green: 'color: #22c55e',\n yellow: 'color: #f59e0b; font-weight: bold',\n cyan: 'color: #06b6d4; font-weight: bold',\n gray: 'color: #6b7280; font-weight: bold',\n reset: 'color: inherit; font-weight: normal',\n} as const\n\nconst cssLevelColorMap: Record<string, string> = { error: cssColors.red, warn: cssColors.yellow, info: cssColors.cyan, debug: cssColors.gray }\n\nexport function getCssLevelColor(level: string): string {\n return cssLevelColorMap[level] ?? cssColors.reset\n}\n\n/**\n * Escape `%` in strings interpolated into `console.log` format strings\n * to prevent `%c`, `%s`, `%d` etc. in user data from being interpreted\n * as formatting directives.\n */\nexport function escapeFormatString(str: string): string {\n return str.replace(/%/g, '%%')\n}\n\n/** Headers that should never be passed to hooks for security */\nexport const SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-auth-token',\n 'proxy-authorization',\n]\n\nconst SENSITIVE_HEADER_SET = new Set(SENSITIVE_HEADERS)\n\n/**\n * Filter out undefined values and sensitive headers from a raw header map.\n *\n * @param headers - Flat header map where values may be `undefined`\n * (e.g. from `IncomingMessage.headers` or a framework's header accessor).\n * @returns A new object containing only the headers whose values are defined\n * and whose lowercased key is not in the built-in sensitive-header list\n * (e.g. `authorization`, `cookie`, `x-api-key`).\n */\nexport function filterSafeHeaders(headers: Partial<Record<string, string | undefined>>): Record<string, string> {\n const safeHeaders: Record<string, string> = {}\n\n for (const [key, value] of Object.entries(headers)) {\n if (value !== undefined && !SENSITIVE_HEADER_SET.has(key.toLowerCase())) {\n safeHeaders[key] = value\n }\n }\n\n return safeHeaders\n}\n\nconst patternCache = new Map<string, RegExp>()\n\n/**\n * Compile a glob pattern to a anchored RegExp.\n *\n * - `*` matches any characters except the separator\n * - `**` matches any characters including the separator\n * - `?` matches one character except the separator\n */\nexport function globToRegExp(pattern: string, separator: '/' | '.' = '/'): RegExp {\n const cacheKey = `${separator}:${pattern}`\n let regex = patternCache.get(cacheKey)\n if (!regex) {\n const segment = separator === '/' ? '[^/]*' : '[^.]*'\n const char = separator === '/' ? '[^/]' : '[^.]'\n const regexPattern = pattern\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/\\*\\*/g, '{{GLOBSTAR}}')\n .replace(/\\*/g, segment)\n .replace(/{{GLOBSTAR}}/g, '.*')\n .replace(/\\?/g, char)\n regex = new RegExp(`^${regexPattern}$`)\n patternCache.set(cacheKey, regex)\n }\n return regex\n}\n\n/**\n * Match a path against a glob pattern.\n * Supports * (any chars except /) and ** (any chars including /).\n */\nexport function matchesPattern(path: string, pattern: string): boolean {\n return globToRegExp(pattern, '/').test(path)\n}\n"],"mappings":"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"}
|
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-CHOPF2nd.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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { et as LoggerConfig, l as AuditableLogger } from "./audit-CBfv3rl1.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/workers/index.d.ts
|
|
4
4
|
/**
|
|
@@ -63,7 +63,7 @@ declare function initWorkersLogger(options?: LoggerConfig): void;
|
|
|
63
63
|
* })
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
|
-
declare function defineWorkerFetch<TEnv = unknown>(handler: (request: Request, env: TEnv, ctx: WorkerExecutionContext, log:
|
|
66
|
+
declare function defineWorkerFetch<TEnv = unknown>(handler: (request: Request, env: TEnv, ctx: WorkerExecutionContext, log: AuditableLogger) => Response | Promise<Response>): {
|
|
67
67
|
fetch: (request: Request, env: TEnv, ctx: WorkerExecutionContext) => Promise<Response>;
|
|
68
68
|
};
|
|
69
69
|
/**
|
|
@@ -84,7 +84,7 @@ declare function defineWorkerFetch<TEnv = unknown>(handler: (request: Request, e
|
|
|
84
84
|
* }
|
|
85
85
|
* ```
|
|
86
86
|
*/
|
|
87
|
-
declare function createWorkersLogger<T extends object = Record<string, unknown>>(request: Request, options?: WorkersLoggerOptions):
|
|
87
|
+
declare function createWorkersLogger<T extends object = Record<string, unknown>>(request: Request, options?: WorkersLoggerOptions): AuditableLogger<T>;
|
|
88
88
|
//#endregion
|
|
89
89
|
export { WorkerExecutionContext, WorkersLoggerOptions, createWorkersLogger, defineWorkerFetch, initWorkersLogger };
|
|
90
90
|
//# sourceMappingURL=workers.d.mts.map
|
package/dist/workers.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers.d.mts","names":[],"sources":["../src/workers/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"workers.d.mts","names":[],"sources":["../src/workers/index.ts"],"mappings":";;;;AAQA;;;UAAiB,sBAAA;EACf,SAAA,CAAU,OAAA,EAAS,OAAA;AAAA;;;;UAMJ,oBAAA;EAAoB;EAEnC,SAAA;EAiB6B;EAf7B,OAAA;EAAA;;;;;;;;EASA,YAAA,GAAe,sBAAA;EAuCgB;;;;AA2BjC;EA5DE,SAAA,IAAa,OAAA,EAAS,OAAA;AAAA;;;;;;;;;;;;iBAiCR,iBAAA,CAAkB,OAAA,GAAS,YAAA;;;;;;;;;;;;;;;;;;;;iBA2B3B,iBAAA,gBAAA,CACd,OAAA,GACE,OAAA,EAAS,OAAA,EACT,GAAA,EAAK,IAAA,EACL,GAAA,EAAK,sBAAA,EACL,GAAA,EAAK,eAAA,KACF,QAAA,GAAW,OAAA,CAAQ,QAAA;EAExB,KAAA,GAAQ,OAAA,EAAS,OAAA,EAAS,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,sBAAA,KAA2B,OAAA,CAAQ,QAAA;AAAA;;;;;AAuC/E;;;;;;;;;;;;;;iBAAgB,mBAAA,oBAAuC,MAAA,kBAAA,CAAyB,OAAA,EAAS,OAAA,EAAS,OAAA,GAAS,oBAAA,GAA4B,eAAA,CAAgB,CAAA"}
|
package/dist/workers.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as createRequestLogger, x as initLogger } from "./audit-CL0q7GJU.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/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
|
|
1
|
+
{"version":3,"file":"workers.mjs","names":[],"sources":["../src/workers/index.ts"],"sourcesContent":["import { initLogger, createRequestLogger } from '../logger'\nimport type { AuditableLogger } from '../audit'\nimport type { LoggerConfig } from '../types'\n\n/**\n * Minimal Cloudflare Workers execution context (`fetch` third argument).\n * Matches Cloudflare `ExecutionContext` without requiring `@cloudflare/workers-types`.\n */\nexport interface WorkerExecutionContext {\n waitUntil(promise: Promise<unknown>): void\n}\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 * Cloudflare Workers `ExecutionContext` from the `fetch` handler\n * (`async fetch(request, env, ctx)`). When set, async `initLogger({ drain })`\n * work from `log.emit()` is registered with `ctx.waitUntil` so drains (HTTP to\n * Axiom, PostHog, etc.) complete after the response is returned.\n *\n * Prefer {@link defineWorkerFetch} when you want this wired automatically.\n */\n executionCtx?: WorkerExecutionContext\n /**\n * Lower-level alternative to `executionCtx`: same function Cloudflare assigns to\n * `ExecutionContext#waitUntil` (must be bound if you extract the method), e.g.\n * `waitUntil: ctx.waitUntil.bind(ctx)`.\n */\n waitUntil?: (promise: Promise<unknown>) => void\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\n/**\n * Wraps a Workers `fetch` handler so {@link createWorkersLogger} receives\n * `executionCtx` automatically for async drains (`initWorkersLogger({ drain })`).\n *\n * Cloudflare does not expose `ExecutionContext` globally — only as the third\n * `fetch` argument — so evlog cannot discover it without either this helper or\n * an explicit `{ executionCtx: ctx }` / `waitUntil` option.\n *\n * @example\n * ```ts\n * initWorkersLogger({ env: { service: 'my-api' }, drain: myDrain })\n *\n * export default defineWorkerFetch(async (request, env, ctx, log) => {\n * log.set({ route: '/health' })\n * log.emit({ status: 200 })\n * return new Response('ok')\n * })\n * ```\n */\nexport function defineWorkerFetch<TEnv = unknown>(\n handler: (\n request: Request,\n env: TEnv,\n ctx: WorkerExecutionContext,\n log: AuditableLogger,\n ) => Response | Promise<Response>,\n): {\n fetch: (request: Request, env: TEnv, ctx: WorkerExecutionContext) => Promise<Response>\n} {\n return {\n fetch(request, env, ctx) {\n const log = createWorkersLogger(request, { executionCtx: ctx })\n return Promise.resolve(handler(request, env, ctx, log))\n },\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, env: Env, ctx: ExecutionContext) {\n * const log = createWorkersLogger(request, { executionCtx: ctx })\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 = {}): AuditableLogger<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 waitUntil =\n options.waitUntil\n ?? (options.executionCtx\n ? options.executionCtx.waitUntil.bind(options.executionCtx)\n : undefined)\n\n const log = createRequestLogger<T>({\n method: request.method,\n path: url.pathname,\n requestId: options.requestId ?? cfRay,\n waitUntil,\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 AuditableLogger\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":";;AAqCA,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;;;;;;;;;;;;;;;;;;;;;AAsBJ,SAAgB,kBACd,SAQA;AACA,QAAO,EACL,MAAM,SAAS,KAAK,KAAK;EACvB,MAAM,MAAM,oBAAoB,SAAS,EAAE,cAAc,KAAK,CAAC;AAC/D,SAAO,QAAQ,QAAQ,QAAQ,SAAS,KAAK,KAAK,IAAI,CAAC;IAE1D;;AAGH,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,EAAsB;CACxJ,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,YACJ,QAAQ,cACJ,QAAQ,eACR,QAAQ,aAAa,UAAU,KAAK,QAAQ,aAAa,GACzD,KAAA;CAEN,MAAM,MAAM,oBAAuB;EACjC,QAAQ,QAAQ;EAChB,MAAM,IAAI;EACV,WAAW,QAAQ,aAAa;EAChC;EACD,CAAC;AAIF,KAAQ,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.19.
|
|
3
|
+
"version": "2.19.2",
|
|
4
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",
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"type": "module",
|
|
37
37
|
"sideEffects": false,
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
|
+
},
|
|
38
41
|
"exports": {
|
|
39
42
|
".": {
|
|
40
43
|
"types": "./dist/index.d.mts",
|
|
@@ -131,6 +134,11 @@
|
|
|
131
134
|
"import": "./dist/browser.mjs",
|
|
132
135
|
"default": "./dist/browser.mjs"
|
|
133
136
|
},
|
|
137
|
+
"./catalog": {
|
|
138
|
+
"types": "./dist/catalog.d.mts",
|
|
139
|
+
"import": "./dist/catalog.mjs",
|
|
140
|
+
"default": "./dist/catalog.mjs"
|
|
141
|
+
},
|
|
134
142
|
"./next": {
|
|
135
143
|
"types": "./dist/next/index.d.mts",
|
|
136
144
|
"import": "./dist/next/index.mjs",
|
|
@@ -146,6 +154,11 @@
|
|
|
146
154
|
"import": "./dist/next/instrumentation.mjs",
|
|
147
155
|
"default": "./dist/next/instrumentation.mjs"
|
|
148
156
|
},
|
|
157
|
+
"./next/instrumentation/create": {
|
|
158
|
+
"types": "./dist/next/instrumentation/create.d.mts",
|
|
159
|
+
"import": "./dist/next/instrumentation/create.mjs",
|
|
160
|
+
"default": "./dist/next/instrumentation/create.mjs"
|
|
161
|
+
},
|
|
149
162
|
"./next/stream": {
|
|
150
163
|
"types": "./dist/next/stream.d.mts",
|
|
151
164
|
"import": "./dist/next/stream.mjs",
|
|
@@ -278,6 +291,9 @@
|
|
|
278
291
|
"browser": [
|
|
279
292
|
"./dist/browser.d.mts"
|
|
280
293
|
],
|
|
294
|
+
"catalog": [
|
|
295
|
+
"./dist/catalog.d.mts"
|
|
296
|
+
],
|
|
281
297
|
"next": [
|
|
282
298
|
"./dist/next/index.d.mts"
|
|
283
299
|
],
|
|
@@ -287,6 +303,9 @@
|
|
|
287
303
|
"next/instrumentation": [
|
|
288
304
|
"./dist/next/instrumentation.d.mts"
|
|
289
305
|
],
|
|
306
|
+
"next/instrumentation/create": [
|
|
307
|
+
"./dist/next/instrumentation/create.d.mts"
|
|
308
|
+
],
|
|
290
309
|
"next/stream": [
|
|
291
310
|
"./dist/next/stream.d.mts"
|
|
292
311
|
],
|