traza-log 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/runtime.ts","../src/context.ts","../src/utils.ts","../src/middleware.ts","../src/queue.ts","../src/transport.ts","../src/span.ts","../src/client.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["declare const Bun: unknown\ndeclare const Deno: unknown\ndeclare const EdgeRuntime: unknown\n\nexport type RuntimeName = 'node' | 'bun' | 'deno' | 'edge' | 'browser' | 'unknown'\n\nexport function detectRuntime(): RuntimeName {\n if (typeof Bun !== 'undefined') return 'bun'\n if (typeof Deno !== 'undefined') return 'deno'\n if (typeof EdgeRuntime !== 'undefined') return 'edge'\n if (typeof process !== 'undefined' && process.versions?.node) return 'node'\n if (typeof window !== 'undefined' && typeof document !== 'undefined') return 'browser'\n return 'unknown'\n}\n\nexport const RUNTIME: RuntimeName = detectRuntime()\n\nexport const IS_NODE_LIKE = RUNTIME === 'node' || RUNTIME === 'bun' || RUNTIME === 'deno'\n","import { IS_NODE_LIKE } from './runtime'\nimport type { ActiveContext } from './types'\n\ntype AlsCtor = new <T>() => {\n getStore(): T | undefined\n run<R>(store: T, fn: () => R): R\n enterWith(store: T): void\n}\n\ninterface ContextStore {\n getActive(): ActiveContext | undefined\n run<R>(ctx: ActiveContext, fn: () => R): R\n}\n\nclass FallbackContextStore implements ContextStore {\n private current: ActiveContext | undefined\n\n getActive(): ActiveContext | undefined {\n return this.current\n }\n\n run<R>(ctx: ActiveContext, fn: () => R): R {\n const prev = this.current\n this.current = ctx\n try {\n const result = fn()\n if (result instanceof Promise) {\n return result.finally(() => {\n this.current = prev\n }) as unknown as R\n }\n this.current = prev\n return result\n } catch (e) {\n this.current = prev\n throw e\n }\n }\n}\n\nclass AlsContextStore implements ContextStore {\n private als: InstanceType<AlsCtor>\n\n constructor(Als: AlsCtor) {\n this.als = new Als<ActiveContext>()\n }\n\n getActive(): ActiveContext | undefined {\n return this.als.getStore() as ActiveContext | undefined\n }\n\n run<R>(ctx: ActiveContext, fn: () => R): R {\n return this.als.run(ctx, fn)\n }\n}\n\nlet storeInstance: ContextStore | undefined\n\nfunction getStore(): ContextStore {\n if (storeInstance) return storeInstance\n if (IS_NODE_LIKE) {\n try {\n const req = Function('return require')() as NodeRequire | undefined\n const mod = req ? (req('node:async_hooks') as { AsyncLocalStorage: AlsCtor }) : undefined\n if (mod?.AsyncLocalStorage) {\n storeInstance = new AlsContextStore(mod.AsyncLocalStorage)\n return storeInstance\n }\n } catch {\n // ignore\n }\n }\n storeInstance = new FallbackContextStore()\n return storeInstance\n}\n\nexport function getActiveContext(): ActiveContext | undefined {\n return getStore().getActive()\n}\n\nexport function runWithContext<R>(ctx: ActiveContext, fn: () => R): R {\n return getStore().run(ctx, fn)\n}\n\nexport function mergeContext(base: ActiveContext | undefined, patch: Partial<ActiveContext>): ActiveContext {\n return {\n traceId: patch.traceId ?? base?.traceId,\n spanId: patch.spanId ?? base?.spanId,\n parentSpanId: patch.parentSpanId ?? base?.parentSpanId,\n attributes: { ...(base?.attributes ?? {}), ...(patch.attributes ?? {}) },\n }\n}\n","declare const globalThis: typeof global & {\n crypto?: { randomUUID?: () => string; getRandomValues?: (a: Uint8Array) => Uint8Array }\n}\n\nconst HEX = '0123456789abcdef'\n\nfunction randomHex(bytes: number): string {\n const buf = new Uint8Array(bytes)\n const c = globalThis.crypto\n if (c?.getRandomValues) {\n c.getRandomValues(buf)\n } else {\n for (let i = 0; i < bytes; i++) buf[i] = Math.floor(Math.random() * 256)\n }\n let out = ''\n for (let i = 0; i < bytes; i++) {\n const v = buf[i]!\n out += HEX[v >> 4]! + HEX[v & 0x0f]!\n }\n return out\n}\n\n/** Trace IDs: 32 hex chars (compatibles con W3C trace-context). */\nexport function newTraceId(): string {\n return randomHex(16)\n}\n\n/** Span IDs: 16 hex chars. */\nexport function newSpanId(): string {\n return randomHex(8)\n}\n\n/** UUID v4 para identificar eventos individuales. */\nexport function newEventId(): string {\n const c = globalThis.crypto\n if (c?.randomUUID) return c.randomUUID()\n const b = new Uint8Array(16)\n if (c?.getRandomValues) c.getRandomValues(b)\n else for (let i = 0; i < 16; i++) b[i] = Math.floor(Math.random() * 256)\n b[6] = (b[6]! & 0x0f) | 0x40\n b[8] = (b[8]! & 0x3f) | 0x80\n const h = (n: number) => HEX[(n >> 4) & 0x0f]! + HEX[n & 0x0f]!\n return (\n h(b[0]!) + h(b[1]!) + h(b[2]!) + h(b[3]!) + '-' +\n h(b[4]!) + h(b[5]!) + '-' +\n h(b[6]!) + h(b[7]!) + '-' +\n h(b[8]!) + h(b[9]!) + '-' +\n h(b[10]!) + h(b[11]!) + h(b[12]!) + h(b[13]!) + h(b[14]!) + h(b[15]!)\n )\n}\n\n/** Devuelve un timestamp en ms con la mejor resolución disponible. */\nexport function now(): number {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.timeOrigin + performance.now()\n }\n return Date.now()\n}\n\nexport function safeStringify(value: unknown): string {\n const seen = new WeakSet<object>()\n try {\n return JSON.stringify(value, (_k, v) => {\n if (typeof v === 'bigint') return v.toString()\n if (typeof v === 'object' && v !== null) {\n if (seen.has(v as object)) return '[Circular]'\n seen.add(v as object)\n }\n if (v instanceof Error) {\n return { name: v.name, message: v.message, stack: v.stack }\n }\n return v\n })\n } catch {\n return String(value)\n }\n}\n\nexport function isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v)\n}\n\nexport function normalizeError(err: unknown): { name?: string; message?: string; stack?: string } {\n if (err instanceof Error) {\n return { name: err.name, message: err.message, stack: err.stack }\n }\n if (typeof err === 'string') return { message: err }\n if (isPlainObject(err)) {\n return {\n name: typeof err.name === 'string' ? err.name : undefined,\n message: typeof err.message === 'string' ? err.message : safeStringify(err),\n stack: typeof err.stack === 'string' ? err.stack : undefined,\n }\n }\n return { message: safeStringify(err) }\n}\n","import type { TrazaClient } from './client'\nimport { normalizeError } from './utils'\n\ninterface ReqLike {\n method?: string\n url?: string\n originalUrl?: string\n headers?: Record<string, string | string[] | undefined>\n}\n\ninterface ResLike {\n statusCode?: number\n on?: (event: string, cb: () => void) => void\n once?: (event: string, cb: () => void) => void\n}\n\ntype Next = (err?: unknown) => void\n\n/**\n * Middleware compatible con Express / Connect / Polka / Fastify (con adapter).\n * Crea una span por request HTTP y propaga el contexto a logs y spans hijos.\n */\nexport function createHttpMiddleware(client: TrazaClient) {\n return function trazaMiddleware(req: ReqLike, res: ResLike, next: Next) {\n const method = req.method ?? 'GET'\n const url = req.originalUrl ?? req.url ?? '/'\n const traceparent = pickHeader(req.headers, 'traceparent')\n const parent = parseTraceparent(traceparent)\n const route = stripQuery(url)\n\n const span = client.startSpan(`HTTP ${method}`, {\n attributes: {\n 'http.method': method,\n 'http.url': url,\n 'http.route': route,\n 'http.user_agent': pickHeader(req.headers, 'user-agent'),\n },\n parent,\n })\n\n client.runWithContext(\n {\n traceId: span.traceId,\n spanId: span.id,\n attributes: { 'http.method': method, 'http.route': route },\n },\n () => {\n let finished = false\n const finish = (err?: unknown) => {\n if (finished) return\n finished = true\n const status = res.statusCode ?? 0\n span.setAttribute('http.status_code', status)\n if (err) span.recordError(err)\n span.end({\n status: err || status >= 500 ? 'error' : 'ok',\n error: err,\n })\n }\n try {\n res.on?.('finish', () => finish())\n res.on?.('close', () => finish())\n } catch {\n // ignore\n }\n try {\n next()\n } catch (e) {\n finish(e)\n throw e\n }\n },\n )\n }\n}\n\n/**\n * Handler para H3/Nitro (Nuxt server routes). Devuelve un wrapper\n * que mide la request y propaga contexto.\n */\nexport function wrapH3Handler<T extends (...args: any[]) => any>(\n client: TrazaClient,\n handler: T,\n name?: string,\n): T {\n return (async (...args: unknown[]) => {\n const event = args[0] as {\n node?: { req?: ReqLike; res?: ResLike }\n path?: string\n method?: string\n }\n const req = event?.node?.req\n const res = event?.node?.res\n const method = event?.method ?? req?.method ?? 'GET'\n const url = event?.path ?? req?.url ?? '/'\n const parent = parseTraceparent(pickHeader(req?.headers, 'traceparent'))\n const span = client.startSpan(name ?? `HTTP ${method} ${stripQuery(url)}`, {\n attributes: { 'http.method': method, 'http.url': url, 'http.route': stripQuery(url) },\n parent,\n })\n try {\n return await client.runWithContext(\n { traceId: span.traceId, spanId: span.id, attributes: {} },\n () => handler(...args),\n )\n } catch (err) {\n span.recordError(err)\n throw err\n } finally {\n span.setAttribute('http.status_code', res?.statusCode ?? 0)\n span.end({ status: (res?.statusCode ?? 0) >= 500 ? 'error' : 'ok' })\n }\n }) as T\n}\n\nfunction pickHeader(\n headers: Record<string, string | string[] | undefined> | undefined,\n name: string,\n): string | undefined {\n if (!headers) return undefined\n const v = headers[name] ?? headers[name.toLowerCase()]\n if (Array.isArray(v)) return v[0]\n return v\n}\n\nfunction stripQuery(url: string): string {\n const i = url.indexOf('?')\n return i === -1 ? url : url.slice(0, i)\n}\n\nfunction parseTraceparent(value: string | undefined): { traceId: string; spanId: string } | undefined {\n if (!value) return undefined\n // version-traceid-parentid-flags\n const parts = value.split('-')\n if (parts.length < 4) return undefined\n const traceId = parts[1]\n const spanId = parts[2]\n if (!traceId || traceId.length !== 32 || !spanId || spanId.length !== 16) return undefined\n return { traceId, spanId }\n}\n\n// re-export para conveniencia\nexport { normalizeError }\n","import type { IngestEvent } from './types'\n\nexport interface QueueOptions {\n maxSize: number\n onDrop?: (dropped: IngestEvent) => void\n}\n\n/**\n * Cola FIFO con tamaño máximo. Si se llena, descarta el evento más antiguo\n * (drop-head) para garantizar que la cola jamás bloquee al productor.\n */\nexport class BoundedQueue {\n private buffer: IngestEvent[] = []\n\n constructor(private readonly opts: QueueOptions) {}\n\n get size(): number {\n return this.buffer.length\n }\n\n enqueue(event: IngestEvent): void {\n if (this.buffer.length >= this.opts.maxSize) {\n const dropped = this.buffer.shift()\n if (dropped && this.opts.onDrop) {\n try {\n this.opts.onDrop(dropped)\n } catch {\n // silenciamos: la cola no puede fallar\n }\n }\n }\n this.buffer.push(event)\n }\n\n drain(max: number): IngestEvent[] {\n if (max <= 0 || this.buffer.length === 0) return []\n if (max >= this.buffer.length) {\n const all = this.buffer\n this.buffer = []\n return all\n }\n return this.buffer.splice(0, max)\n }\n\n prepend(events: IngestEvent[]): void {\n if (events.length === 0) return\n const overflow = this.buffer.length + events.length - this.opts.maxSize\n if (overflow > 0) {\n // descartamos los más nuevos cuando hay que reinsertar (preservamos orden)\n const drop = this.buffer.splice(this.buffer.length - overflow, overflow)\n if (this.opts.onDrop) drop.forEach((d) => this.opts.onDrop!(d))\n }\n this.buffer = events.concat(this.buffer)\n }\n}\n","import { BoundedQueue } from './queue'\nimport { RUNTIME } from './runtime'\nimport type { IngestEvent, IngestPayload, TrazaConfig } from './types'\n\nconst SDK_NAME = 'traza'\nconst SDK_VERSION = '0.1.0'\n\nconst DEFAULTS = {\n flushIntervalMs: 3000,\n maxBatchSize: 100,\n maxQueueSize: 10000,\n requestTimeoutMs: 10000,\n maxRetries: 3,\n}\n\nexport interface TransportDeps {\n config: TrazaConfig\n onError: (err: unknown) => void\n}\n\nexport class BatchTransport {\n private queue: BoundedQueue\n private timer: ReturnType<typeof setInterval> | null = null\n private flushing = false\n private stopped = false\n private readonly endpoint: string\n private readonly fetchImpl: typeof fetch\n\n constructor(private readonly deps: TransportDeps) {\n const max = deps.config.maxQueueSize ?? DEFAULTS.maxQueueSize\n this.queue = new BoundedQueue({ maxSize: max })\n this.endpoint = normalizeEndpoint(deps.config.endpoint)\n const f = deps.config.fetch ?? (globalThis as { fetch?: typeof fetch }).fetch\n if (!f) {\n throw new Error(\n '[traza] No fetch implementation found. Pass `fetch` in config or upgrade to Node 18+.',\n )\n }\n this.fetchImpl = f.bind(globalThis)\n this.startTimer()\n this.attachShutdownHooks()\n }\n\n push(event: IngestEvent): void {\n if (this.stopped) return\n this.queue.enqueue(event)\n const max = this.deps.config.maxBatchSize ?? DEFAULTS.maxBatchSize\n if (this.queue.size >= max) {\n void this.flush()\n }\n }\n\n async flush(): Promise<void> {\n if (this.flushing) return\n this.flushing = true\n try {\n const batchSize = this.deps.config.maxBatchSize ?? DEFAULTS.maxBatchSize\n let batch = this.queue.drain(batchSize)\n while (batch.length > 0) {\n const ok = await this.send(batch)\n if (!ok) {\n // si falló todos los reintentos, reinsertamos en la cola para futuro\n // intento (drop si la cola está llena)\n this.queue.prepend(batch)\n break\n }\n batch = this.queue.drain(batchSize)\n }\n } catch (e) {\n this.deps.onError(e)\n } finally {\n this.flushing = false\n }\n }\n\n async shutdown(): Promise<void> {\n if (this.stopped) return\n this.stopped = true\n if (this.timer) {\n clearInterval(this.timer)\n this.timer = null\n }\n await this.flush()\n }\n\n private async send(events: IngestEvent[]): Promise<boolean> {\n const payload: IngestPayload = {\n sdk: { name: SDK_NAME, version: SDK_VERSION, runtime: RUNTIME },\n sentAt: Date.now(),\n events,\n }\n const body = JSON.stringify(payload)\n const timeoutMs = this.deps.config.requestTimeoutMs ?? DEFAULTS.requestTimeoutMs\n\n for (let attempt = 0; attempt <= DEFAULTS.maxRetries; attempt++) {\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeoutMs)\n try {\n const res = await this.fetchImpl(`${this.endpoint}/api/ingest`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${this.deps.config.token}`,\n 'x-traza-sdk': `${SDK_NAME}/${SDK_VERSION}`,\n 'x-traza-runtime': RUNTIME,\n },\n body,\n signal: controller.signal,\n keepalive: events.length < 50, // browsers permiten keepalive en payloads pequeños\n })\n clearTimeout(timer)\n if (res.ok) return true\n // 4xx (excepto 429): no reintentar, lote inválido\n if (res.status >= 400 && res.status < 500 && res.status !== 429) {\n this.deps.onError(new Error(`[traza] ingest rejected: ${res.status} ${res.statusText}`))\n return true // descartamos el lote, no reintentar\n }\n } catch (e) {\n clearTimeout(timer)\n if (attempt === DEFAULTS.maxRetries) {\n this.deps.onError(e)\n return false\n }\n }\n await delay(backoffMs(attempt))\n }\n return false\n }\n\n private startTimer(): void {\n const interval = this.deps.config.flushIntervalMs ?? DEFAULTS.flushIntervalMs\n this.timer = setInterval(() => {\n void this.flush()\n }, interval)\n // En Node, evita mantener vivo el proceso solo por el timer\n const t = this.timer as unknown as { unref?: () => void }\n if (typeof t.unref === 'function') t.unref()\n }\n\n private attachShutdownHooks(): void {\n // Node-like: flush en exit\n if (typeof process !== 'undefined' && typeof process.on === 'function') {\n const handler = () => {\n void this.flush()\n }\n try {\n process.on('beforeExit', handler)\n } catch {\n // ignore\n }\n }\n // Browser: flush en pagehide / visibilitychange\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const handler = () => {\n void this.flush()\n }\n try {\n window.addEventListener('pagehide', handler)\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') handler()\n })\n } catch {\n // ignore\n }\n }\n }\n}\n\nfunction backoffMs(attempt: number): number {\n const base = 200 * Math.pow(2, attempt)\n const jitter = Math.random() * base * 0.3\n return Math.min(base + jitter, 5000)\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nfunction normalizeEndpoint(url: string): string {\n return url.replace(/\\/+$/, '')\n}\n","import type {\n ActiveContext,\n Attributes,\n AttributeValue,\n Span,\n SpanEndOptions,\n SpanEvent,\n} from './types'\nimport { newSpanId, newTraceId, now, normalizeError } from './utils'\n\nexport interface SpanInternalDeps {\n service?: string\n environment?: string\n release?: string\n defaultAttributes?: Attributes\n onEnd: (event: SpanEvent) => void\n}\n\nexport interface CreateSpanInput {\n name: string\n attributes?: Attributes\n parentContext?: ActiveContext\n parentOverride?: { traceId: string; spanId: string }\n}\n\nexport class SpanImpl implements Span {\n readonly id: string\n readonly traceId: string\n readonly parentSpanId?: string\n readonly name: string\n private readonly startTime: number\n private readonly attributes: Attributes\n private readonly contextSnapshot: Attributes | undefined\n private status: SpanEvent['status'] = 'ok'\n private errorInfo: SpanEvent['error']\n private endedFlag = false\n\n constructor(\n input: CreateSpanInput,\n private readonly deps: SpanInternalDeps,\n ) {\n this.name = input.name\n this.attributes = { ...(input.attributes ?? {}) }\n this.contextSnapshot = input.parentContext?.attributes\n if (input.parentOverride) {\n this.traceId = input.parentOverride.traceId\n this.parentSpanId = input.parentOverride.spanId\n } else if (input.parentContext?.traceId) {\n this.traceId = input.parentContext.traceId\n this.parentSpanId = input.parentContext.spanId\n } else {\n this.traceId = newTraceId()\n }\n this.id = newSpanId()\n this.startTime = now()\n }\n\n get ended(): boolean {\n return this.endedFlag\n }\n\n setAttribute(key: string, value: AttributeValue): this {\n this.attributes[key] = value\n return this\n }\n\n setAttributes(attributes: Attributes): this {\n Object.assign(this.attributes, attributes)\n return this\n }\n\n recordError(error: unknown): this {\n this.status = 'error'\n this.errorInfo = normalizeError(error)\n return this\n }\n\n end(options: SpanEndOptions = {}): void {\n if (this.endedFlag) return\n this.endedFlag = true\n if (options.attributes) Object.assign(this.attributes, options.attributes)\n if (options.error) {\n this.status = options.status ?? 'error'\n this.errorInfo = normalizeError(options.error)\n } else if (options.status) {\n this.status = options.status\n }\n const endTime = now()\n const event: SpanEvent = {\n type: 'span',\n id: this.id,\n traceId: this.traceId,\n parentSpanId: this.parentSpanId,\n name: this.name,\n status: this.status,\n startTime: this.startTime,\n endTime,\n durationMs: Math.max(0, endTime - this.startTime),\n attributes: { ...(this.deps.defaultAttributes ?? {}), ...this.attributes },\n error: this.errorInfo,\n service: this.deps.service,\n environment: this.deps.environment,\n release: this.deps.release,\n context: this.contextSnapshot,\n }\n this.deps.onEnd(event)\n }\n}\n","import { getActiveContext, mergeContext, runWithContext } from './context'\nimport { createHttpMiddleware, wrapH3Handler } from './middleware'\nimport { BatchTransport } from './transport'\nimport { SpanImpl } from './span'\nimport type {\n ActiveContext,\n Attributes,\n IngestEvent,\n LogEvent,\n LogLevel,\n Span,\n SpanOptions,\n TrazaConfig,\n} from './types'\nimport { newEventId, normalizeError, now } from './utils'\n\nconst noop = () => {}\n\nconst CONSOLE_METHOD: Record<LogLevel, keyof Console> = {\n debug: 'debug',\n info: 'info',\n log: 'log',\n warn: 'warn',\n error: 'error',\n}\n\nexport class TrazaClient {\n private transport: BatchTransport | null = null\n private config: TrazaConfig | null = null\n\n configure(config: TrazaConfig): this {\n if (!config.token) throw new Error('[traza] config.token is required')\n if (!config.endpoint) throw new Error('[traza] config.endpoint is required')\n if (this.transport) {\n // permitir reconfiguración suave\n void this.transport.shutdown()\n }\n this.config = config\n const onError = config.onError ?? (config.debug ? console.error.bind(console) : noop)\n this.transport = new BatchTransport({ config, onError })\n return this\n }\n\n isConfigured(): boolean {\n return this.transport !== null\n }\n\n /** Cierra el transport y vacía la cola. Útil en tests y al apagar el proceso. */\n async shutdown(): Promise<void> {\n if (this.transport) {\n await this.transport.shutdown()\n this.transport = null\n }\n }\n\n /** Fuerza el envío inmediato del lote en cola. */\n async flush(): Promise<void> {\n await this.transport?.flush()\n }\n\n // --- Logs ---\n\n debug(message: string, attributes?: Attributes): void {\n this.emitLog('debug', message, attributes)\n }\n info(message: string, attributes?: Attributes): void {\n this.emitLog('info', message, attributes)\n }\n log(message: string, attributes?: Attributes): void {\n this.emitLog('log', message, attributes)\n }\n warn(message: string, attributes?: Attributes): void {\n this.emitLog('warn', message, attributes)\n }\n error(message: string, attributes?: Attributes): void {\n this.emitLog('error', message, attributes)\n }\n\n // --- Spans ---\n\n startSpan(name: string, options: SpanOptions = {}): Span {\n const ctx = options.detached ? undefined : getActiveContext()\n return new SpanImpl(\n {\n name,\n attributes: options.attributes,\n parentContext: ctx,\n parentOverride: options.parent,\n },\n {\n service: this.config?.service,\n environment: this.config?.environment,\n release: this.config?.release,\n defaultAttributes: this.config?.defaultAttributes,\n onEnd: (event) => this.push(event),\n },\n )\n }\n\n /** Mide la duración de una función async y la reporta como span. */\n async time<T>(name: string, fn: () => Promise<T> | T, attributes?: Attributes): Promise<T> {\n const span = this.startSpan(name, { attributes })\n try {\n const result = await this.runWithContext(\n { traceId: span.traceId, spanId: span.id, attributes: {} },\n () => Promise.resolve(fn()),\n )\n span.end({ status: 'ok' })\n return result\n } catch (err) {\n span.recordError(err)\n span.end({ status: 'error', error: err })\n throw err\n }\n }\n\n /** Envuelve una función para que cada llamada quede instrumentada. */\n instrument<TArgs extends unknown[], TResult>(\n name: string,\n fn: (...args: TArgs) => Promise<TResult> | TResult,\n attributesFactory?: (...args: TArgs) => Attributes,\n ): (...args: TArgs) => Promise<TResult> {\n return async (...args: TArgs) => {\n const attrs = attributesFactory ? attributesFactory(...args) : undefined\n return this.time(name, () => fn(...args), attrs)\n }\n }\n\n // --- Contexto ---\n\n /** Ejecuta `fn` dentro de un contexto activo. Logs/spans hijos lo heredan. */\n runWithContext<R>(patch: Partial<ActiveContext>, fn: () => R): R {\n const merged = mergeContext(getActiveContext(), patch)\n return runWithContext(merged, fn)\n }\n\n /** Devuelve una copia del contexto actual (útil para propagación manual). */\n getContext(): ActiveContext | undefined {\n return getActiveContext()\n }\n\n // --- Integraciones ---\n\n middleware() {\n return createHttpMiddleware(this)\n }\n\n h3<T extends (...args: any[]) => any>(handler: T, name?: string): T {\n return wrapH3Handler(this, handler, name)\n }\n\n // --- Privados ---\n\n private emitLog(level: LogLevel, message: string, attributes?: Attributes): void {\n const ctx = getActiveContext()\n const event: LogEvent = {\n type: 'log',\n id: newEventId(),\n level,\n message,\n attributes: this.mergeAttributes(attributes, level === 'error' ? this.errorFromAttrs(attributes) : undefined),\n timestamp: now(),\n service: this.config?.service,\n environment: this.config?.environment,\n release: this.config?.release,\n traceId: ctx?.traceId,\n spanId: ctx?.spanId,\n parentSpanId: ctx?.parentSpanId,\n context: ctx?.attributes,\n }\n if (this.config?.forwardToConsole !== false) {\n this.forwardConsole(level, message, attributes)\n }\n this.push(event)\n }\n\n private errorFromAttrs(attrs?: Attributes): Attributes | undefined {\n if (!attrs) return undefined\n const err = (attrs as { err?: unknown; error?: unknown }).err ?? (attrs as { error?: unknown }).error\n if (err instanceof Error || (typeof err === 'object' && err !== null && 'message' in (err as object))) {\n const norm = normalizeError(err)\n return {\n 'error.name': norm.name ?? null,\n 'error.message': norm.message ?? null,\n 'error.stack': norm.stack ?? null,\n }\n }\n return undefined\n }\n\n private mergeAttributes(...parts: Array<Attributes | undefined>): Attributes | undefined {\n const out: Attributes = { ...(this.config?.defaultAttributes ?? {}) }\n let has = Object.keys(out).length > 0\n for (const p of parts) {\n if (!p) continue\n for (const [k, v] of Object.entries(p)) {\n out[k] = v as Attributes[string]\n has = true\n }\n }\n return has ? out : undefined\n }\n\n private forwardConsole(level: LogLevel, message: string, attributes?: Attributes): void {\n if (typeof console === 'undefined') return\n const method = CONSOLE_METHOD[level]\n const fn = (console as unknown as Record<string, (...args: unknown[]) => void>)[method]\n if (typeof fn !== 'function') return\n if (attributes && Object.keys(attributes).length > 0) {\n fn.call(console, `[traza] ${message}`, attributes)\n } else {\n fn.call(console, `[traza] ${message}`)\n }\n }\n\n private push(event: IngestEvent): void {\n if (!this.transport) {\n if (this.config?.debug) {\n console.warn('[traza] no configurado; evento descartado')\n }\n return\n }\n const rate = this.config?.sampleRate ?? 1\n if (rate < 1 && Math.random() > rate) return\n this.transport.push(event)\n }\n}\n","import { TrazaClient } from './client'\n\nexport { TrazaClient } from './client'\nexport * from './types'\nexport { runWithContext, getActiveContext } from './context'\nexport { detectRuntime, RUNTIME } from './runtime'\n\n/**\n * Instancia singleton lista para usar.\n *\n * ```ts\n * import { traza } from 'traza'\n *\n * traza.configure({\n * token: process.env.TRAZA_TOKEN!,\n * endpoint: 'https://traza.miempresa.com',\n * service: 'api',\n * environment: process.env.NODE_ENV,\n * })\n *\n * traza.log('Hola mundo')\n * traza.info('user signed in', { userId })\n * traza.error('boom', { err })\n *\n * const span = traza.startSpan('db.query', { table: 'users' })\n * const rows = await db.select()\n * span.end()\n *\n * const users = await traza.time('db.users', () => db.select())\n * ```\n */\nexport const traza = new TrazaClient()\n\n/** Crea un cliente independiente (útil si quieres varios proyectos en el mismo proceso). */\nexport function createTraza(): TrazaClient {\n return new TrazaClient()\n}\n\nexport default traza\n"]}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "traza-log",
3
+ "version": "0.1.0",
4
+ "description": "Drop-in tracer y logger para Node, browser y edge runtimes. Envía eventos y spans a tu dashboard de Traza sin bloquear el flujo principal.",
5
+ "keywords": [
6
+ "tracing",
7
+ "logging",
8
+ "observability",
9
+ "performance",
10
+ "apm",
11
+ "monitoring",
12
+ "traza"
13
+ ],
14
+ "license": "MIT",
15
+ "type": "module",
16
+ "main": "./dist/index.cjs",
17
+ "module": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js",
23
+ "require": "./dist/index.cjs"
24
+ },
25
+ "./package.json": "./package.json"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "README.md",
30
+ "LICENSE"
31
+ ],
32
+ "scripts": {
33
+ "build": "tsup",
34
+ "dev": "tsup --watch",
35
+ "typecheck": "tsc --noEmit",
36
+ "test": "vitest run",
37
+ "clean": "rm -rf dist .turbo"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^22.7.5",
41
+ "tsup": "^8.3.0",
42
+ "typescript": "^5.6.3",
43
+ "vitest": "^2.1.2"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "sideEffects": false
49
+ }