hobots 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +346 -0
- package/dist/chunk-FW32OR7V.js +75 -0
- package/dist/chunk-FW32OR7V.js.map +1 -0
- package/dist/index.cjs +764 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +187 -0
- package/dist/index.d.ts +187 -0
- package/dist/index.js +691 -0
- package/dist/index.js.map +1 -0
- package/dist/manager/protocol.cjs +19 -0
- package/dist/manager/protocol.cjs.map +1 -0
- package/dist/manager/protocol.d.cts +72 -0
- package/dist/manager/protocol.d.ts +72 -0
- package/dist/manager/protocol.js +1 -0
- package/dist/manager/protocol.js.map +1 -0
- package/dist/manager.cjs +519 -0
- package/dist/manager.cjs.map +1 -0
- package/dist/manager.d.cts +118 -0
- package/dist/manager.d.ts +118 -0
- package/dist/manager.js +464 -0
- package/dist/manager.js.map +1 -0
- package/dist/protocol.cjs +19 -0
- package/dist/protocol.cjs.map +1 -0
- package/dist/protocol.d.cts +126 -0
- package/dist/protocol.d.ts +126 -0
- package/dist/protocol.js +1 -0
- package/dist/protocol.js.map +1 -0
- package/dist/utils-LReLqjzN.d.cts +7 -0
- package/dist/utils-LReLqjzN.d.ts +7 -0
- package/docs/README.md +39 -0
- package/docs/api-reference.md +140 -0
- package/docs/getting-started.md +88 -0
- package/docs/manager.md +90 -0
- package/docs/monitor.md +136 -0
- package/docs/protocol.md +87 -0
- package/package.json +50 -2
- package/auth/index.d.ts +0 -10
- package/csv/index.d.ts +0 -9
- package/datasets/index.d.ts +0 -2
- package/db/drizzle.config.d.ts +0 -8
- package/db/index.d.ts +0 -9
- package/db/migrate.d.ts +0 -3
- package/db/schema.d.ts +0 -215
- package/db/storages/base.d.ts +0 -23
- package/db/storages/index.d.ts +0 -3
- package/db/storages/job.d.ts +0 -233
- package/exceptions/break.d.ts +0 -6
- package/exceptions/ignore.d.ts +0 -6
- package/exceptions/index.d.ts +0 -4
- package/exceptions/warning.d.ts +0 -6
- package/foreach/foreach.d.ts +0 -7
- package/foreach/index.d.ts +0 -5
- package/foreach/item.d.ts +0 -13
- package/hobots/samples/bot.d.ts +0 -2
- package/hobots/samples/index.d.ts +0 -2
- package/hobots/src/auth/index.d.ts +0 -10
- package/hobots/src/csv/index.d.ts +0 -9
- package/hobots/src/datasets/index.d.ts +0 -2
- package/hobots/src/db/drizzle.config.d.ts +0 -8
- package/hobots/src/db/index.d.ts +0 -9
- package/hobots/src/db/migrate.d.ts +0 -3
- package/hobots/src/db/schema.d.ts +0 -215
- package/hobots/src/db/storages/base.d.ts +0 -23
- package/hobots/src/db/storages/index.d.ts +0 -3
- package/hobots/src/db/storages/job.d.ts +0 -233
- package/hobots/src/exceptions/break.d.ts +0 -6
- package/hobots/src/exceptions/ignore.d.ts +0 -6
- package/hobots/src/exceptions/index.d.ts +0 -4
- package/hobots/src/exceptions/warning.d.ts +0 -6
- package/hobots/src/foreach/foreach.d.ts +0 -7
- package/hobots/src/foreach/index.d.ts +0 -5
- package/hobots/src/foreach/item.d.ts +0 -13
- package/hobots/src/index.d.ts +0 -9
- package/hobots/src/reports/data-report.d.ts +0 -9
- package/hobots/src/reports/index.d.ts +0 -3
- package/hobots/src/reports/job-report.d.ts +0 -22
- package/hobots/src/setup.d.ts +0 -20
- package/hobots/src/sheets/index.d.ts +0 -13
- package/hobots/src/types/hobots-types.d.ts +0 -20
- package/hobots/src/utils/date.d.ts +0 -117
- package/hobots/src/utils/dist.d.ts +0 -8
- package/hobots/src/utils/garbage.d.ts +0 -2
- package/hobots/src/utils/index.d.ts +0 -10
- package/hobots/src/utils/logger.d.ts +0 -21
- package/hobots/src/utils/manifest.d.ts +0 -2
- package/hobots/src/utils/path.d.ts +0 -13
- package/hobots/src/utils/publish.d.ts +0 -2
- package/hobots/src/utils/retry.d.ts +0 -5
- package/hobots/src/utils/text.d.ts +0 -74
- package/hobots/src/utils/timer.d.ts +0 -3
- package/index.d.ts +0 -9
- package/index.js +0 -131866
- package/index.js.map +0 -1
- package/reports/data-report.d.ts +0 -9
- package/reports/index.d.ts +0 -3
- package/reports/job-report.d.ts +0 -22
- package/setup.d.ts +0 -20
- package/sheets/index.d.ts +0 -13
- package/types/hobots-types.d.ts +0 -20
- package/utils/date.d.ts +0 -117
- package/utils/dist.d.ts +0 -8
- package/utils/garbage.d.ts +0 -2
- package/utils/index.d.ts +0 -10
- package/utils/logger.d.ts +0 -21
- package/utils/manifest.d.ts +0 -2
- package/utils/path.d.ts +0 -13
- package/utils/publish.d.ts +0 -2
- package/utils/retry.d.ts +0 -5
- package/utils/src/path.d.ts +0 -14
- package/utils/text.d.ts +0 -74
- package/utils/timer.d.ts +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/dsn.ts","../src/stacktrace.ts","../src/utils.ts","../src/eventbuilder.ts","../src/transport.ts","../src/client.ts","../src/heartbeat.ts","../src/instrument.ts","../src/scope.ts","../src/transaction.ts","../src/checkin.ts","../src/core.ts"],"sourcesContent":["export {\n init,\n getClient,\n captureException,\n captureMessage,\n addBreadcrumb,\n setTag,\n setTags,\n setUser,\n setContext,\n setExtra,\n withScope,\n startTransaction,\n checkIn,\n withMonitor,\n flush,\n close,\n} from './core';\n\nexport { Client } from './client';\nexport { Scope, type BreadcrumbInput } from './scope';\nexport { Transaction, Span } from './transaction';\nexport { parseDsn, type ParsedDsn } from './dsn';\nexport type { CheckInOptions, WithMonitorOptions } from './checkin';\nexport type { InitOptions, CaptureHint, HeartbeatOptions } from './types';\n\nexport type {\n Severity,\n StackFrame,\n Breadcrumb,\n ExceptionData,\n EventUser,\n EventPayload,\n SpanData,\n TransactionPayload,\n CheckInStatus,\n CheckInPayload,\n HeartbeatPayload,\n EnvelopeItem,\n Envelope,\n} from './protocol';\n","export interface ParsedDsn {\n publicKey: string;\n projectId: string;\n /** URL de ingestão derivada: <origin>/api/ingest/<publicKey> */\n endpoint: string;\n}\n\ninterface ParsedDsnUrl {\n key: string;\n path: string;\n origin: string;\n}\n\n/** Parser baixo nível compartilhado entre Monitor e Manager (não exportado no barrel). */\nexport function parseDsnUrl(dsn: string, prefix: string): ParsedDsnUrl {\n let url: URL;\n try {\n url = new URL(dsn);\n } catch {\n throw new Error(`${prefix} DSN inválido: \"${dsn}\"`);\n }\n\n const key = url.username;\n const path = url.pathname.replace(/^\\/+/, '');\n if (!key || !path) {\n throw new Error(`${prefix} DSN inválido: \"${dsn}\" — esperado https://<key>@host/<projeto>`);\n }\n\n return { key, path, origin: `${url.protocol}//${url.host}` };\n}\n\n/** Formato: https://<publicKey>@host[:porta]/<projectId> */\nexport function parseDsn(dsn: string): ParsedDsn {\n const { key, path, origin } = parseDsnUrl(dsn, '[hobots-monitor]');\n return {\n publicKey: key,\n projectId: path,\n endpoint: `${origin}/api/ingest/${key}`,\n };\n}\n","import type { StackFrame } from './protocol';\n\nconst MAX_FRAMES = 50;\n\n// \" at fn (file:1:2)\" | \" at file:1:2\" | \" at async fn (file:1:2)\"\nconst FRAME_RE = /^\\s*at\\s+(?:async\\s+)?(?:(.+?)\\s+\\()?(.+?)\\)?$/;\nconst LOCATION_RE = /^(.*?):(\\d+):(\\d+)$/;\n\nfunction isInApp(filename: string | undefined): boolean {\n if (!filename) return false;\n if (filename.startsWith('node:')) return false;\n if (filename.startsWith('internal/')) return false;\n if (filename.includes('node_modules')) return false;\n if (filename === '<anonymous>') return false;\n return true;\n}\n\n/** Converte um `error.stack` do V8 em frames (ordem innermost-first, como o V8 imprime). */\nexport function parseStacktrace(stack: string | undefined | null): StackFrame[] {\n if (!stack) return [];\n\n const frames: StackFrame[] = [];\n for (const line of stack.split('\\n')) {\n if (frames.length >= MAX_FRAMES) break;\n const match = FRAME_RE.exec(line);\n if (!match || !line.trimStart().startsWith('at ')) continue;\n\n const [, fn, location] = match;\n const loc = LOCATION_RE.exec(location ?? '');\n const filename = loc ? loc[1] : location;\n frames.push({\n function: fn || '<anonymous>',\n filename: filename || undefined,\n lineno: loc?.[2] ? Number(loc[2]) : undefined,\n colno: loc?.[3] ? Number(loc[3]) : undefined,\n in_app: isInApp(filename),\n });\n }\n return frames;\n}\n","export const SDK_NAME = 'hobots';\nexport const SDK_VERSION = '1.0.0';\n\nexport function isNode(): boolean {\n return typeof process !== 'undefined' && typeof process.versions?.node === 'string';\n}\n\n/** uuid v4 sem hífens (32 hex). Fallback para contextos sem crypto.randomUUID. */\nexport function uuid4(): string {\n const cryptoRef = (globalThis as { crypto?: Crypto }).crypto;\n if (cryptoRef && typeof cryptoRef.randomUUID === 'function') {\n return cryptoRef.randomUUID().replace(/-/g, '');\n }\n let out = '';\n for (let i = 0; i < 32; i++) {\n out += Math.floor(Math.random() * 16).toString(16);\n }\n return out;\n}\n\nexport function nowISO(): string {\n return new Date().toISOString();\n}\n\n/** Timers não devem segurar o processo Node aberto. */\nexport function unrefTimer(timer: unknown): void {\n (timer as { unref?: () => void } | undefined)?.unref?.();\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => {\n const timer = setTimeout(resolve, ms);\n unrefTimer(timer);\n });\n}\n\nexport interface Logger {\n debug: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n}\n\nconst PREFIX = '[hobots-monitor]';\n\nexport function makeLogger(enabled: boolean, prefix: string = PREFIX): Logger {\n return {\n debug: (...args) => enabled && console.debug(prefix, ...args),\n warn: (...args) => enabled && console.warn(prefix, ...args),\n error: (...args) => console.error(prefix, ...args),\n };\n}\n","import type { EventPayload, Severity } from './protocol';\nimport { parseStacktrace } from './stacktrace';\nimport { nowISO, uuid4 } from './utils';\n\nfunction safeString(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n const json = JSON.stringify(value);\n if (json && json !== '{}') return json;\n } catch {\n // objetos circulares etc. caem no String()\n }\n return String(value);\n}\n\nexport function eventFromException(error: unknown, level: Severity = 'error'): EventPayload {\n let type: string;\n let value: string;\n let frames = [] as ReturnType<typeof parseStacktrace>;\n\n if (error instanceof Error) {\n type = error.name || 'Error';\n value = error.message;\n frames = parseStacktrace(error.stack);\n } else {\n type = 'NonError';\n value = safeString(error);\n }\n\n return {\n event_id: uuid4(),\n timestamp: nowISO(),\n level,\n exception: {\n type,\n value,\n ...(frames.length > 0 ? { stacktrace: { frames } } : {}),\n },\n };\n}\n\nexport function eventFromMessage(message: string, level: Severity = 'info'): EventPayload {\n return {\n event_id: uuid4(),\n timestamp: nowISO(),\n level,\n message,\n };\n}\n","import type { Envelope, EnvelopeItem } from './protocol';\nimport { SDK_NAME, SDK_VERSION, nowISO, sleep, unrefTimer, type Logger } from './utils';\n\nconst RETRY_DELAYS_MS = [1_000, 4_000, 16_000];\nconst DEFAULT_FLUSH_INTERVAL_MS = 2_000;\nconst DEFAULT_MAX_BATCH_SIZE = 10;\nconst DEFAULT_MAX_QUEUE_SIZE = 200;\n\nexport interface TransportOptions {\n endpoint: string;\n logger: Logger;\n flushIntervalMs?: number;\n maxBatchSize?: number;\n maxQueueSize?: number;\n}\n\n/** Fila em memória com batch + retry. Envia envelopes via fetch (Node 18+/browser). */\nexport class Transport {\n private readonly endpoint: string;\n private readonly logger: Logger;\n private readonly flushIntervalMs: number;\n private readonly maxBatchSize: number;\n private readonly maxQueueSize: number;\n\n private buffer: EnvelopeItem[] = [];\n private timer: ReturnType<typeof setTimeout> | undefined;\n private pending = new Set<Promise<void>>();\n private closed = false;\n\n constructor(options: TransportOptions) {\n this.endpoint = options.endpoint;\n this.logger = options.logger;\n this.flushIntervalMs = options.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS;\n this.maxBatchSize = options.maxBatchSize ?? DEFAULT_MAX_BATCH_SIZE;\n this.maxQueueSize = options.maxQueueSize ?? DEFAULT_MAX_QUEUE_SIZE;\n }\n\n enqueue(item: EnvelopeItem): void {\n if (this.closed) {\n this.logger.warn('transport fechado, item descartado:', item.type);\n return;\n }\n if (this.buffer.length >= this.maxQueueSize) {\n this.buffer.shift();\n this.logger.warn('fila cheia, item mais antigo descartado');\n }\n this.buffer.push(item);\n\n if (this.buffer.length >= this.maxBatchSize) {\n void this.flushBuffer();\n } else {\n this.schedule();\n }\n }\n\n private schedule(): void {\n if (this.timer) return;\n this.timer = setTimeout(() => {\n this.timer = undefined;\n void this.flushBuffer();\n }, this.flushIntervalMs);\n unrefTimer(this.timer);\n }\n\n private flushBuffer(): Promise<void> {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n if (this.buffer.length === 0) return Promise.resolve();\n\n const items = this.buffer.splice(0, this.buffer.length);\n const envelope: Envelope = {\n sdk: { name: SDK_NAME, version: SDK_VERSION },\n sent_at: nowISO(),\n items,\n };\n\n const request: Promise<void> = this.sendWithRetry(envelope).finally(() => {\n this.pending.delete(request);\n });\n this.pending.add(request);\n return request;\n }\n\n private async sendWithRetry(envelope: Envelope): Promise<void> {\n for (let attempt = 0; ; attempt++) {\n try {\n const response = await fetch(this.endpoint, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(envelope),\n });\n if (response.ok) {\n this.logger.debug(`envelope enviado (${envelope.items.length} itens)`);\n return;\n }\n // 4xx (exceto 429) não é recuperável — descarta sem retry\n if (response.status >= 400 && response.status < 500 && response.status !== 429) {\n this.logger.error(`envelope rejeitado (HTTP ${response.status}), descartado`);\n return;\n }\n throw new Error(`HTTP ${response.status}`);\n } catch (error) {\n const delay = RETRY_DELAYS_MS[attempt];\n if (delay === undefined) {\n this.logger.error('envelope descartado após retries:', error);\n return;\n }\n this.logger.warn(`falha no envio (${String(error)}), retry em ${delay}ms`);\n await sleep(delay);\n }\n }\n }\n\n /** Envia o que estiver na fila e aguarda envios em andamento (até timeoutMs). */\n async flush(timeoutMs = 5_000): Promise<boolean> {\n void this.flushBuffer();\n const all = Promise.allSettled([...this.pending]).then(() => true);\n return Promise.race([all, sleep(timeoutMs).then(() => false)]);\n }\n\n async close(timeoutMs = 5_000): Promise<boolean> {\n const result = await this.flush(timeoutMs);\n this.closed = true;\n return result;\n }\n}\n","import type { CheckInPayload, EventPayload, HeartbeatPayload, Severity, TransactionPayload } from './protocol';\nimport type { CaptureHint, InitOptions } from './types';\nimport { parseDsn, type ParsedDsn } from './dsn';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport type { Scope } from './scope';\nimport { Transport } from './transport';\nimport { isNode, makeLogger, type Logger } from './utils';\n\nfunction runtimeContexts(): Record<string, Record<string, unknown>> {\n if (isNode()) {\n return {\n runtime: { name: 'node', version: process.version },\n os: { name: process.platform, arch: process.arch },\n };\n }\n return { runtime: { name: 'browser' } };\n}\n\nexport class Client {\n readonly options: InitOptions;\n readonly dsn: ParsedDsn;\n readonly logger: Logger;\n private readonly transport: Transport;\n\n constructor(options: InitOptions) {\n this.options = options;\n this.logger = makeLogger(!!options.debug);\n this.dsn = parseDsn(options.dsn);\n this.transport = new Transport({\n endpoint: this.dsn.endpoint,\n logger: this.logger,\n flushIntervalMs: options.flushIntervalMs,\n maxBatchSize: options.maxBatchSize,\n });\n }\n\n captureException(error: unknown, hint: CaptureHint | undefined, scope: Scope): string {\n return this.captureEvent(eventFromException(error, hint?.level ?? 'error'), hint, scope);\n }\n\n captureMessage(message: string, level: Severity, hint: CaptureHint | undefined, scope: Scope): string {\n return this.captureEvent(eventFromMessage(message, level), hint, scope);\n }\n\n captureEvent(event: EventPayload, hint: CaptureHint | undefined, scope: Scope): string {\n const sampleRate = this.options.sampleRate ?? 1;\n if (sampleRate < 1 && Math.random() >= sampleRate) {\n this.logger.debug('evento descartado por sampleRate');\n return event.event_id;\n }\n\n const prepared = this.prepareEvent(event, hint, scope);\n const final = this.options.beforeSend ? this.options.beforeSend(prepared) : prepared;\n if (!final) {\n this.logger.debug('evento descartado por beforeSend');\n return event.event_id;\n }\n\n this.transport.enqueue({ type: 'event', payload: final });\n return final.event_id;\n }\n\n private prepareEvent(event: EventPayload, hint: CaptureHint | undefined, scope: Scope): EventPayload {\n const tags = { ...this.options.tags, ...scope.tags, ...event.tags, ...hint?.tags };\n const extra = { ...scope.extra, ...event.extra, ...hint?.extra };\n\n return {\n ...event,\n level: hint?.level ?? event.level ?? scope.level ?? 'error',\n release: event.release ?? this.options.release,\n environment: event.environment ?? this.options.environment ?? 'production',\n server_name: event.server_name ?? this.options.serverName,\n tags: Object.keys(tags).length > 0 ? tags : undefined,\n extra: Object.keys(extra).length > 0 ? extra : undefined,\n user: event.user ?? scope.user,\n contexts: { ...runtimeContexts(), ...scope.contexts, ...event.contexts },\n breadcrumbs: scope.breadcrumbs.length > 0 ? [...scope.breadcrumbs] : event.breadcrumbs,\n fingerprint: hint?.fingerprint ?? event.fingerprint ?? scope.fingerprint,\n };\n }\n\n sendTransaction(payload: TransactionPayload): void {\n this.transport.enqueue({\n type: 'transaction',\n payload: {\n ...payload,\n release: payload.release ?? this.options.release,\n environment: payload.environment ?? this.options.environment ?? 'production',\n server_name: payload.server_name ?? this.options.serverName,\n tags: { ...this.options.tags, ...payload.tags },\n },\n });\n }\n\n sendCheckIn(payload: CheckInPayload): void {\n this.transport.enqueue({\n type: 'check_in',\n payload: {\n ...payload,\n environment: payload.environment ?? this.options.environment ?? 'production',\n },\n });\n }\n\n sendHeartbeat(payload: HeartbeatPayload): void {\n this.transport.enqueue({ type: 'heartbeat', payload });\n }\n\n flush(timeoutMs?: number): Promise<boolean> {\n return this.transport.flush(timeoutMs);\n }\n\n close(timeoutMs?: number): Promise<boolean> {\n return this.transport.close(timeoutMs);\n }\n}\n","import type { Client } from './client';\nimport type { HeartbeatOptions } from './types';\nimport { isNode, nowISO, unrefTimer, uuid4 } from './utils';\n\nconst DEFAULT_INTERVAL_MS = 30_000;\n\nfunction defaultInstanceId(): string {\n if (isNode()) {\n const host = process.env.HOSTNAME || process.env.COMPUTERNAME;\n if (host) return host;\n }\n return `instance-${uuid4().slice(0, 8)}`;\n}\n\n/** Batimento periódico \"estou vivo\" — o servidor marca a instância offline quando ele para. */\nexport class Heartbeat {\n private readonly intervalMs: number;\n private readonly instanceId: string;\n private readonly name: string;\n private readonly metadata?: Record<string, unknown>;\n private timer: ReturnType<typeof setInterval> | undefined;\n\n constructor(\n private readonly client: Client,\n options: HeartbeatOptions = {},\n serverName?: string\n ) {\n this.intervalMs = options.intervalMs ?? DEFAULT_INTERVAL_MS;\n this.instanceId = options.instanceId ?? serverName ?? defaultInstanceId();\n this.name = options.name ?? this.instanceId;\n this.metadata = options.metadata;\n }\n\n start(): void {\n if (this.timer) return;\n this.beat();\n this.timer = setInterval(() => this.beat(), this.intervalMs);\n unrefTimer(this.timer);\n }\n\n stop(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n private beat(): void {\n this.client.sendHeartbeat({\n instance_id: this.instanceId,\n name: this.name,\n interval_ms: this.intervalMs,\n timestamp: nowISO(),\n metadata: this.metadata,\n });\n }\n}\n","import type { Client } from './client';\nimport type { Scope } from './scope';\nimport { isNode } from './utils';\n\nlet installed = false;\n\n/**\n * Registra handlers globais de erro.\n * Node: preserva a semântica padrão — após capturar e flushar um uncaughtException,\n * o processo encerra com código 1 (a menos que o programa tenha handler próprio).\n */\nexport function installGlobalHandlers(client: Client, getScope: () => Scope): void {\n if (installed) return;\n installed = true;\n\n if (isNode()) {\n process.on('uncaughtException', (error: Error) => {\n client.captureException(error, { level: 'fatal', tags: { mechanism: 'uncaughtException' } }, getScope());\n void client.flush(2_000).then(() => {\n if (process.listenerCount('uncaughtException') <= 1) {\n console.error(error);\n process.exit(1);\n }\n });\n });\n\n process.on('unhandledRejection', (reason: unknown) => {\n client.captureException(reason, { level: 'error', tags: { mechanism: 'unhandledRejection' } }, getScope());\n // fetch em andamento segura o processo aberto até o envio terminar\n void client.flush(2_000);\n });\n\n // rede de segurança: envia o que restou na fila quando o event loop esvazia\n process.on('beforeExit', () => {\n void client.flush(2_000);\n });\n return;\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('error', event => {\n client.captureException(event.error ?? event.message, { tags: { mechanism: 'onerror' } }, getScope());\n });\n window.addEventListener('unhandledrejection', event => {\n client.captureException(event.reason, { tags: { mechanism: 'onunhandledrejection' } }, getScope());\n });\n window.addEventListener('pagehide', () => {\n void client.flush(1_000);\n });\n }\n}\n\n/** Apenas para testes internos. */\nexport function resetGlobalHandlersForTesting(): void {\n installed = false;\n}\n","import type { Breadcrumb, EventUser, Severity } from './protocol';\nimport { nowISO } from './utils';\n\nexport type BreadcrumbInput = Omit<Breadcrumb, 'timestamp'> & { timestamp?: string };\n\n/** Estado contextual anexado aos eventos: tags, usuário, contexts, extras e breadcrumbs. */\nexport class Scope {\n tags: Record<string, string> = {};\n user?: EventUser;\n contexts: Record<string, Record<string, unknown>> = {};\n extra: Record<string, unknown> = {};\n level?: Severity;\n fingerprint?: string[];\n breadcrumbs: Breadcrumb[] = [];\n\n setTag(key: string, value: string): this {\n this.tags[key] = value;\n return this;\n }\n\n setTags(tags: Record<string, string>): this {\n Object.assign(this.tags, tags);\n return this;\n }\n\n setUser(user: EventUser | null): this {\n this.user = user ?? undefined;\n return this;\n }\n\n setContext(name: string, context: Record<string, unknown> | null): this {\n if (context === null) {\n delete this.contexts[name];\n } else {\n this.contexts[name] = context;\n }\n return this;\n }\n\n setExtra(key: string, value: unknown): this {\n this.extra[key] = value;\n return this;\n }\n\n setExtras(extras: Record<string, unknown>): this {\n Object.assign(this.extra, extras);\n return this;\n }\n\n setLevel(level: Severity): this {\n this.level = level;\n return this;\n }\n\n setFingerprint(fingerprint: string[]): this {\n this.fingerprint = fingerprint;\n return this;\n }\n\n addBreadcrumb(crumb: BreadcrumbInput, maxBreadcrumbs: number): this {\n this.breadcrumbs.push({ timestamp: nowISO(), ...crumb });\n if (this.breadcrumbs.length > maxBreadcrumbs) {\n this.breadcrumbs.splice(0, this.breadcrumbs.length - maxBreadcrumbs);\n }\n return this;\n }\n\n clearBreadcrumbs(): this {\n this.breadcrumbs = [];\n return this;\n }\n\n clone(): Scope {\n const next = new Scope();\n next.tags = { ...this.tags };\n next.user = this.user ? { ...this.user } : undefined;\n next.contexts = Object.fromEntries(Object.entries(this.contexts).map(([k, v]) => [k, { ...v }]));\n next.extra = { ...this.extra };\n next.level = this.level;\n next.fingerprint = this.fingerprint ? [...this.fingerprint] : undefined;\n next.breadcrumbs = [...this.breadcrumbs];\n return next;\n }\n}\n","import type { SpanData, TransactionPayload } from './protocol';\nimport type { Client } from './client';\nimport { nowISO, uuid4 } from './utils';\n\nfunction spanId(): string {\n return uuid4().slice(0, 16);\n}\n\nexport class Span {\n readonly spanId = spanId();\n readonly startTimestamp = nowISO();\n status = 'ok';\n endTimestamp?: string;\n data?: Record<string, unknown>;\n\n constructor(\n private readonly transaction: Transaction,\n readonly parentSpanId: string,\n readonly op?: string,\n readonly description?: string\n ) {}\n\n setStatus(status: string): this {\n this.status = status;\n return this;\n }\n\n setData(key: string, value: unknown): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** Span aninhado (filho deste span). */\n startChild(op?: string, description?: string): Span {\n return this.transaction.createSpan(this.spanId, op, description);\n }\n\n finish(): void {\n if (!this.endTimestamp) this.endTimestamp = nowISO();\n }\n\n toJSON(): SpanData {\n return {\n span_id: this.spanId,\n parent_span_id: this.parentSpanId,\n op: this.op,\n description: this.description,\n status: this.status,\n start_timestamp: this.startTimestamp,\n timestamp: this.endTimestamp ?? nowISO(),\n data: this.data,\n };\n }\n}\n\n/**\n * Uma unidade de trabalho nomeada (ex.: uma execução de rotina, uma sincronização).\n * Spans filhos medem as etapas internas (chamadas HTTP, queries, etc.).\n */\nexport class Transaction {\n readonly eventId = uuid4();\n readonly spanId = spanId();\n readonly startTimestamp = nowISO();\n status = 'ok';\n private readonly spans: Span[] = [];\n private readonly tags: Record<string, string> = {};\n private finished = false;\n\n constructor(\n private readonly client: Client | undefined,\n public name: string,\n readonly op?: string,\n private readonly sampled = true\n ) {}\n\n createSpan(parentSpanId: string, op?: string, description?: string): Span {\n const span = new Span(this, parentSpanId, op, description);\n this.spans.push(span);\n return span;\n }\n\n /** Span direto da transaction. */\n startChild(op?: string, description?: string): Span {\n return this.createSpan(this.spanId, op, description);\n }\n\n setTag(key: string, value: string): this {\n this.tags[key] = value;\n return this;\n }\n\n setStatus(status: string): this {\n this.status = status;\n return this;\n }\n\n setName(name: string): this {\n this.name = name;\n return this;\n }\n\n finish(): void {\n if (this.finished) return;\n this.finished = true;\n\n for (const span of this.spans) span.finish();\n\n if (!this.sampled || !this.client) return;\n const payload: TransactionPayload = {\n event_id: this.eventId,\n name: this.name,\n op: this.op,\n status: this.status,\n start_timestamp: this.startTimestamp,\n timestamp: nowISO(),\n spans: this.spans.map(span => span.toJSON()),\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n };\n this.client.sendTransaction(payload);\n }\n}\n","import type { CheckInStatus } from './protocol';\nimport type { Client } from './client';\nimport { uuid4 } from './utils';\n\nexport interface CheckInOptions {\n monitorSlug: string;\n status: CheckInStatus;\n /** Reutilize o id retornado pelo check-in 'in_progress' para fechar a execução */\n checkInId?: string;\n durationMs?: number;\n /** Expressão cron — cria/atualiza o monitor automaticamente no servidor */\n schedule?: string;\n timezone?: string;\n}\n\nexport function sendCheckIn(client: Client, options: CheckInOptions): string {\n const checkInId = options.checkInId ?? uuid4();\n client.sendCheckIn({\n check_in_id: checkInId,\n monitor_slug: options.monitorSlug,\n status: options.status,\n duration_ms: options.durationMs,\n schedule: options.schedule,\n timezone: options.timezone,\n });\n return checkInId;\n}\n\nexport interface WithMonitorOptions {\n schedule?: string;\n timezone?: string;\n}\n\n/** Envolve a execução de um job: in_progress → ok/error com duração medida. */\nexport async function withMonitorImpl<T>(\n client: Client,\n captureError: (error: unknown) => void,\n monitorSlug: string,\n fn: () => T | Promise<T>,\n options?: WithMonitorOptions\n): Promise<T> {\n const checkInId = sendCheckIn(client, {\n monitorSlug,\n status: 'in_progress',\n schedule: options?.schedule,\n timezone: options?.timezone,\n });\n const startedAt = Date.now();\n\n try {\n const result = await fn();\n sendCheckIn(client, {\n monitorSlug,\n status: 'ok',\n checkInId,\n durationMs: Date.now() - startedAt,\n schedule: options?.schedule,\n timezone: options?.timezone,\n });\n return result;\n } catch (error) {\n sendCheckIn(client, {\n monitorSlug,\n status: 'error',\n checkInId,\n durationMs: Date.now() - startedAt,\n schedule: options?.schedule,\n timezone: options?.timezone,\n });\n captureError(error);\n throw error;\n }\n}\n","import type { EventUser, Severity } from './protocol';\nimport type { CaptureHint, InitOptions } from './types';\nimport { Client } from './client';\nimport { Heartbeat } from './heartbeat';\nimport { installGlobalHandlers } from './instrument';\nimport { Scope, type BreadcrumbInput } from './scope';\nimport { Transaction } from './transaction';\nimport { sendCheckIn, withMonitorImpl, type CheckInOptions, type WithMonitorOptions } from './checkin';\n\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\nlet client: Client | undefined;\nlet scope = new Scope();\nlet heartbeat: Heartbeat | undefined;\n\n/** Inicializa o SDK. Chame uma vez, o mais cedo possível no programa. */\nexport function init(options: InitOptions): void {\n if (client) {\n client.logger.warn('init() chamado mais de uma vez — substituindo o client anterior');\n heartbeat?.stop();\n heartbeat = undefined;\n }\n\n client = new Client(options);\n\n if (options.captureUnhandled !== false) {\n installGlobalHandlers(client, () => scope);\n }\n\n if (options.heartbeat) {\n const heartbeatOptions = options.heartbeat === true ? {} : options.heartbeat;\n heartbeat = new Heartbeat(client, heartbeatOptions, options.serverName);\n heartbeat.start();\n }\n\n client.logger.debug('inicializado', { endpoint: client.dsn.endpoint });\n}\n\nexport function getClient(): Client | undefined {\n return client;\n}\n\n/** Captura uma exceção e retorna o event_id (undefined se o SDK não foi inicializado). */\nexport function captureException(error: unknown, hint?: CaptureHint): string | undefined {\n return client?.captureException(error, hint, scope);\n}\n\nexport function captureMessage(message: string, level: Severity = 'info', hint?: CaptureHint): string | undefined {\n return client?.captureMessage(message, level, hint, scope);\n}\n\n/** Registra um breadcrumb — anexado aos próximos eventos como trilha do que aconteceu antes. */\nexport function addBreadcrumb(crumb: BreadcrumbInput): void {\n scope.addBreadcrumb(crumb, client?.options.maxBreadcrumbs ?? DEFAULT_MAX_BREADCRUMBS);\n}\n\nexport function setTag(key: string, value: string): void {\n scope.setTag(key, value);\n}\n\nexport function setTags(tags: Record<string, string>): void {\n scope.setTags(tags);\n}\n\nexport function setUser(user: EventUser | null): void {\n scope.setUser(user);\n}\n\nexport function setContext(name: string, context: Record<string, unknown> | null): void {\n scope.setContext(name, context);\n}\n\nexport function setExtra(key: string, value: unknown): void {\n scope.setExtra(key, value);\n}\n\n/** Executa o callback com uma cópia isolada do scope (alterações não vazam para fora). */\nexport function withScope<T>(callback: (scope: Scope) => T): T {\n const previous = scope;\n scope = previous.clone();\n try {\n return callback(scope);\n } finally {\n scope = previous;\n }\n}\n\n/** Inicia uma transaction de performance. Chame .finish() para enviá-la. */\nexport function startTransaction(name: string, op?: string): Transaction {\n const rate = client?.options.tracesSampleRate ?? 1;\n const sampled = rate >= 1 || Math.random() < rate;\n return new Transaction(client, name, op, sampled);\n}\n\n/** Check-in manual de um monitor cron. Retorna o check_in_id para fechar a execução depois. */\nexport function checkIn(options: CheckInOptions): string | undefined {\n return client ? sendCheckIn(client, options) : undefined;\n}\n\n/** Envolve um job monitorado: envia in_progress → ok/error com duração e captura a exceção em caso de falha. */\nexport async function withMonitor<T>(\n monitorSlug: string,\n fn: () => T | Promise<T>,\n options?: WithMonitorOptions\n): Promise<T> {\n if (!client) return fn();\n return withMonitorImpl(\n client,\n error => captureException(error, { tags: { monitor: monitorSlug } }),\n monitorSlug,\n fn,\n options\n );\n}\n\n/** Aguarda o envio de tudo que está na fila (até timeoutMs). */\nexport function flush(timeoutMs?: number): Promise<boolean> {\n return client ? client.flush(timeoutMs) : Promise.resolve(true);\n}\n\n/** Flush final + encerra heartbeat e transport. Chame antes do processo terminar. */\nexport function close(timeoutMs?: number): Promise<boolean> {\n heartbeat?.stop();\n heartbeat = undefined;\n return client ? client.close(timeoutMs) : Promise.resolve(true);\n}\n"],"mappings":"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","names":["scope","client","client","client","client"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { Severity, EventPayload, Breadcrumb, EventUser, TransactionPayload, CheckInPayload, HeartbeatPayload, SpanData, CheckInStatus } from './protocol.cjs';
|
|
2
|
+
export { Envelope, EnvelopeItem, ExceptionData, StackFrame } from './protocol.cjs';
|
|
3
|
+
import { L as Logger } from './utils-LReLqjzN.cjs';
|
|
4
|
+
|
|
5
|
+
interface HeartbeatOptions {
|
|
6
|
+
/** Intervalo entre batimentos. Default: 30_000 */
|
|
7
|
+
intervalMs?: number;
|
|
8
|
+
/** Identificador estável da instância (default: serverName, HOSTNAME ou id aleatório por processo) */
|
|
9
|
+
instanceId?: string;
|
|
10
|
+
/** Nome amigável exibido no dashboard */
|
|
11
|
+
name?: string;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
interface InitOptions {
|
|
15
|
+
/** Ex.: https://<publicKey>@monitor.hobots.app/<projectId> */
|
|
16
|
+
dsn: string;
|
|
17
|
+
/** Default: 'production' */
|
|
18
|
+
environment?: string;
|
|
19
|
+
/** Versão do programa, ex.: 'robo-nfe@1.4.2' */
|
|
20
|
+
release?: string;
|
|
21
|
+
/** Nome da máquina/instância; também usado como instanceId do heartbeat */
|
|
22
|
+
serverName?: string;
|
|
23
|
+
/** Tags aplicadas a todos os eventos */
|
|
24
|
+
tags?: Record<string, string>;
|
|
25
|
+
/** Amostragem de eventos de erro (0..1). Default: 1 */
|
|
26
|
+
sampleRate?: number;
|
|
27
|
+
/** Amostragem de transactions (0..1). Default: 1 */
|
|
28
|
+
tracesSampleRate?: number;
|
|
29
|
+
/** Default: 100 */
|
|
30
|
+
maxBreadcrumbs?: number;
|
|
31
|
+
/** Registra handlers globais de erro (uncaughtException etc.). Default: true */
|
|
32
|
+
captureUnhandled?: boolean;
|
|
33
|
+
/** Habilita heartbeat periódico (true usa defaults) */
|
|
34
|
+
heartbeat?: boolean | HeartbeatOptions;
|
|
35
|
+
/** Última chance de editar/descartar um evento (retorne null para descartar) */
|
|
36
|
+
beforeSend?: (event: EventPayload) => EventPayload | null;
|
|
37
|
+
/** Loga atividade do SDK no console */
|
|
38
|
+
debug?: boolean;
|
|
39
|
+
/** Intervalo do flush automático do transport. Default: 2_000 */
|
|
40
|
+
flushIntervalMs?: number;
|
|
41
|
+
/** Itens por envelope antes de flush imediato. Default: 10 */
|
|
42
|
+
maxBatchSize?: number;
|
|
43
|
+
}
|
|
44
|
+
interface CaptureHint {
|
|
45
|
+
level?: Severity;
|
|
46
|
+
tags?: Record<string, string>;
|
|
47
|
+
extra?: Record<string, unknown>;
|
|
48
|
+
fingerprint?: string[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface ParsedDsn {
|
|
52
|
+
publicKey: string;
|
|
53
|
+
projectId: string;
|
|
54
|
+
/** URL de ingestão derivada: <origin>/api/ingest/<publicKey> */
|
|
55
|
+
endpoint: string;
|
|
56
|
+
}
|
|
57
|
+
/** Formato: https://<publicKey>@host[:porta]/<projectId> */
|
|
58
|
+
declare function parseDsn(dsn: string): ParsedDsn;
|
|
59
|
+
|
|
60
|
+
type BreadcrumbInput = Omit<Breadcrumb, 'timestamp'> & {
|
|
61
|
+
timestamp?: string;
|
|
62
|
+
};
|
|
63
|
+
/** Estado contextual anexado aos eventos: tags, usuário, contexts, extras e breadcrumbs. */
|
|
64
|
+
declare class Scope {
|
|
65
|
+
tags: Record<string, string>;
|
|
66
|
+
user?: EventUser;
|
|
67
|
+
contexts: Record<string, Record<string, unknown>>;
|
|
68
|
+
extra: Record<string, unknown>;
|
|
69
|
+
level?: Severity;
|
|
70
|
+
fingerprint?: string[];
|
|
71
|
+
breadcrumbs: Breadcrumb[];
|
|
72
|
+
setTag(key: string, value: string): this;
|
|
73
|
+
setTags(tags: Record<string, string>): this;
|
|
74
|
+
setUser(user: EventUser | null): this;
|
|
75
|
+
setContext(name: string, context: Record<string, unknown> | null): this;
|
|
76
|
+
setExtra(key: string, value: unknown): this;
|
|
77
|
+
setExtras(extras: Record<string, unknown>): this;
|
|
78
|
+
setLevel(level: Severity): this;
|
|
79
|
+
setFingerprint(fingerprint: string[]): this;
|
|
80
|
+
addBreadcrumb(crumb: BreadcrumbInput, maxBreadcrumbs: number): this;
|
|
81
|
+
clearBreadcrumbs(): this;
|
|
82
|
+
clone(): Scope;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
declare class Client {
|
|
86
|
+
readonly options: InitOptions;
|
|
87
|
+
readonly dsn: ParsedDsn;
|
|
88
|
+
readonly logger: Logger;
|
|
89
|
+
private readonly transport;
|
|
90
|
+
constructor(options: InitOptions);
|
|
91
|
+
captureException(error: unknown, hint: CaptureHint | undefined, scope: Scope): string;
|
|
92
|
+
captureMessage(message: string, level: Severity, hint: CaptureHint | undefined, scope: Scope): string;
|
|
93
|
+
captureEvent(event: EventPayload, hint: CaptureHint | undefined, scope: Scope): string;
|
|
94
|
+
private prepareEvent;
|
|
95
|
+
sendTransaction(payload: TransactionPayload): void;
|
|
96
|
+
sendCheckIn(payload: CheckInPayload): void;
|
|
97
|
+
sendHeartbeat(payload: HeartbeatPayload): void;
|
|
98
|
+
flush(timeoutMs?: number): Promise<boolean>;
|
|
99
|
+
close(timeoutMs?: number): Promise<boolean>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
declare class Span {
|
|
103
|
+
private readonly transaction;
|
|
104
|
+
readonly parentSpanId: string;
|
|
105
|
+
readonly op?: string | undefined;
|
|
106
|
+
readonly description?: string | undefined;
|
|
107
|
+
readonly spanId: string;
|
|
108
|
+
readonly startTimestamp: string;
|
|
109
|
+
status: string;
|
|
110
|
+
endTimestamp?: string;
|
|
111
|
+
data?: Record<string, unknown>;
|
|
112
|
+
constructor(transaction: Transaction, parentSpanId: string, op?: string | undefined, description?: string | undefined);
|
|
113
|
+
setStatus(status: string): this;
|
|
114
|
+
setData(key: string, value: unknown): this;
|
|
115
|
+
/** Span aninhado (filho deste span). */
|
|
116
|
+
startChild(op?: string, description?: string): Span;
|
|
117
|
+
finish(): void;
|
|
118
|
+
toJSON(): SpanData;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Uma unidade de trabalho nomeada (ex.: uma execução de rotina, uma sincronização).
|
|
122
|
+
* Spans filhos medem as etapas internas (chamadas HTTP, queries, etc.).
|
|
123
|
+
*/
|
|
124
|
+
declare class Transaction {
|
|
125
|
+
private readonly client;
|
|
126
|
+
name: string;
|
|
127
|
+
readonly op?: string | undefined;
|
|
128
|
+
private readonly sampled;
|
|
129
|
+
readonly eventId: string;
|
|
130
|
+
readonly spanId: string;
|
|
131
|
+
readonly startTimestamp: string;
|
|
132
|
+
status: string;
|
|
133
|
+
private readonly spans;
|
|
134
|
+
private readonly tags;
|
|
135
|
+
private finished;
|
|
136
|
+
constructor(client: Client | undefined, name: string, op?: string | undefined, sampled?: boolean);
|
|
137
|
+
createSpan(parentSpanId: string, op?: string, description?: string): Span;
|
|
138
|
+
/** Span direto da transaction. */
|
|
139
|
+
startChild(op?: string, description?: string): Span;
|
|
140
|
+
setTag(key: string, value: string): this;
|
|
141
|
+
setStatus(status: string): this;
|
|
142
|
+
setName(name: string): this;
|
|
143
|
+
finish(): void;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
interface CheckInOptions {
|
|
147
|
+
monitorSlug: string;
|
|
148
|
+
status: CheckInStatus;
|
|
149
|
+
/** Reutilize o id retornado pelo check-in 'in_progress' para fechar a execução */
|
|
150
|
+
checkInId?: string;
|
|
151
|
+
durationMs?: number;
|
|
152
|
+
/** Expressão cron — cria/atualiza o monitor automaticamente no servidor */
|
|
153
|
+
schedule?: string;
|
|
154
|
+
timezone?: string;
|
|
155
|
+
}
|
|
156
|
+
interface WithMonitorOptions {
|
|
157
|
+
schedule?: string;
|
|
158
|
+
timezone?: string;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** Inicializa o SDK. Chame uma vez, o mais cedo possível no programa. */
|
|
162
|
+
declare function init(options: InitOptions): void;
|
|
163
|
+
declare function getClient(): Client | undefined;
|
|
164
|
+
/** Captura uma exceção e retorna o event_id (undefined se o SDK não foi inicializado). */
|
|
165
|
+
declare function captureException(error: unknown, hint?: CaptureHint): string | undefined;
|
|
166
|
+
declare function captureMessage(message: string, level?: Severity, hint?: CaptureHint): string | undefined;
|
|
167
|
+
/** Registra um breadcrumb — anexado aos próximos eventos como trilha do que aconteceu antes. */
|
|
168
|
+
declare function addBreadcrumb(crumb: BreadcrumbInput): void;
|
|
169
|
+
declare function setTag(key: string, value: string): void;
|
|
170
|
+
declare function setTags(tags: Record<string, string>): void;
|
|
171
|
+
declare function setUser(user: EventUser | null): void;
|
|
172
|
+
declare function setContext(name: string, context: Record<string, unknown> | null): void;
|
|
173
|
+
declare function setExtra(key: string, value: unknown): void;
|
|
174
|
+
/** Executa o callback com uma cópia isolada do scope (alterações não vazam para fora). */
|
|
175
|
+
declare function withScope<T>(callback: (scope: Scope) => T): T;
|
|
176
|
+
/** Inicia uma transaction de performance. Chame .finish() para enviá-la. */
|
|
177
|
+
declare function startTransaction(name: string, op?: string): Transaction;
|
|
178
|
+
/** Check-in manual de um monitor cron. Retorna o check_in_id para fechar a execução depois. */
|
|
179
|
+
declare function checkIn(options: CheckInOptions): string | undefined;
|
|
180
|
+
/** Envolve um job monitorado: envia in_progress → ok/error com duração e captura a exceção em caso de falha. */
|
|
181
|
+
declare function withMonitor<T>(monitorSlug: string, fn: () => T | Promise<T>, options?: WithMonitorOptions): Promise<T>;
|
|
182
|
+
/** Aguarda o envio de tudo que está na fila (até timeoutMs). */
|
|
183
|
+
declare function flush(timeoutMs?: number): Promise<boolean>;
|
|
184
|
+
/** Flush final + encerra heartbeat e transport. Chame antes do processo terminar. */
|
|
185
|
+
declare function close(timeoutMs?: number): Promise<boolean>;
|
|
186
|
+
|
|
187
|
+
export { Breadcrumb, type BreadcrumbInput, type CaptureHint, type CheckInOptions, CheckInPayload, CheckInStatus, Client, EventPayload, EventUser, type HeartbeatOptions, HeartbeatPayload, type InitOptions, type ParsedDsn, Scope, Severity, Span, SpanData, Transaction, TransactionPayload, type WithMonitorOptions, addBreadcrumb, captureException, captureMessage, checkIn, close, flush, getClient, init, parseDsn, setContext, setExtra, setTag, setTags, setUser, startTransaction, withMonitor, withScope };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { Severity, EventPayload, Breadcrumb, EventUser, TransactionPayload, CheckInPayload, HeartbeatPayload, SpanData, CheckInStatus } from './protocol.js';
|
|
2
|
+
export { Envelope, EnvelopeItem, ExceptionData, StackFrame } from './protocol.js';
|
|
3
|
+
import { L as Logger } from './utils-LReLqjzN.js';
|
|
4
|
+
|
|
5
|
+
interface HeartbeatOptions {
|
|
6
|
+
/** Intervalo entre batimentos. Default: 30_000 */
|
|
7
|
+
intervalMs?: number;
|
|
8
|
+
/** Identificador estável da instância (default: serverName, HOSTNAME ou id aleatório por processo) */
|
|
9
|
+
instanceId?: string;
|
|
10
|
+
/** Nome amigável exibido no dashboard */
|
|
11
|
+
name?: string;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
interface InitOptions {
|
|
15
|
+
/** Ex.: https://<publicKey>@monitor.hobots.app/<projectId> */
|
|
16
|
+
dsn: string;
|
|
17
|
+
/** Default: 'production' */
|
|
18
|
+
environment?: string;
|
|
19
|
+
/** Versão do programa, ex.: 'robo-nfe@1.4.2' */
|
|
20
|
+
release?: string;
|
|
21
|
+
/** Nome da máquina/instância; também usado como instanceId do heartbeat */
|
|
22
|
+
serverName?: string;
|
|
23
|
+
/** Tags aplicadas a todos os eventos */
|
|
24
|
+
tags?: Record<string, string>;
|
|
25
|
+
/** Amostragem de eventos de erro (0..1). Default: 1 */
|
|
26
|
+
sampleRate?: number;
|
|
27
|
+
/** Amostragem de transactions (0..1). Default: 1 */
|
|
28
|
+
tracesSampleRate?: number;
|
|
29
|
+
/** Default: 100 */
|
|
30
|
+
maxBreadcrumbs?: number;
|
|
31
|
+
/** Registra handlers globais de erro (uncaughtException etc.). Default: true */
|
|
32
|
+
captureUnhandled?: boolean;
|
|
33
|
+
/** Habilita heartbeat periódico (true usa defaults) */
|
|
34
|
+
heartbeat?: boolean | HeartbeatOptions;
|
|
35
|
+
/** Última chance de editar/descartar um evento (retorne null para descartar) */
|
|
36
|
+
beforeSend?: (event: EventPayload) => EventPayload | null;
|
|
37
|
+
/** Loga atividade do SDK no console */
|
|
38
|
+
debug?: boolean;
|
|
39
|
+
/** Intervalo do flush automático do transport. Default: 2_000 */
|
|
40
|
+
flushIntervalMs?: number;
|
|
41
|
+
/** Itens por envelope antes de flush imediato. Default: 10 */
|
|
42
|
+
maxBatchSize?: number;
|
|
43
|
+
}
|
|
44
|
+
interface CaptureHint {
|
|
45
|
+
level?: Severity;
|
|
46
|
+
tags?: Record<string, string>;
|
|
47
|
+
extra?: Record<string, unknown>;
|
|
48
|
+
fingerprint?: string[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface ParsedDsn {
|
|
52
|
+
publicKey: string;
|
|
53
|
+
projectId: string;
|
|
54
|
+
/** URL de ingestão derivada: <origin>/api/ingest/<publicKey> */
|
|
55
|
+
endpoint: string;
|
|
56
|
+
}
|
|
57
|
+
/** Formato: https://<publicKey>@host[:porta]/<projectId> */
|
|
58
|
+
declare function parseDsn(dsn: string): ParsedDsn;
|
|
59
|
+
|
|
60
|
+
type BreadcrumbInput = Omit<Breadcrumb, 'timestamp'> & {
|
|
61
|
+
timestamp?: string;
|
|
62
|
+
};
|
|
63
|
+
/** Estado contextual anexado aos eventos: tags, usuário, contexts, extras e breadcrumbs. */
|
|
64
|
+
declare class Scope {
|
|
65
|
+
tags: Record<string, string>;
|
|
66
|
+
user?: EventUser;
|
|
67
|
+
contexts: Record<string, Record<string, unknown>>;
|
|
68
|
+
extra: Record<string, unknown>;
|
|
69
|
+
level?: Severity;
|
|
70
|
+
fingerprint?: string[];
|
|
71
|
+
breadcrumbs: Breadcrumb[];
|
|
72
|
+
setTag(key: string, value: string): this;
|
|
73
|
+
setTags(tags: Record<string, string>): this;
|
|
74
|
+
setUser(user: EventUser | null): this;
|
|
75
|
+
setContext(name: string, context: Record<string, unknown> | null): this;
|
|
76
|
+
setExtra(key: string, value: unknown): this;
|
|
77
|
+
setExtras(extras: Record<string, unknown>): this;
|
|
78
|
+
setLevel(level: Severity): this;
|
|
79
|
+
setFingerprint(fingerprint: string[]): this;
|
|
80
|
+
addBreadcrumb(crumb: BreadcrumbInput, maxBreadcrumbs: number): this;
|
|
81
|
+
clearBreadcrumbs(): this;
|
|
82
|
+
clone(): Scope;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
declare class Client {
|
|
86
|
+
readonly options: InitOptions;
|
|
87
|
+
readonly dsn: ParsedDsn;
|
|
88
|
+
readonly logger: Logger;
|
|
89
|
+
private readonly transport;
|
|
90
|
+
constructor(options: InitOptions);
|
|
91
|
+
captureException(error: unknown, hint: CaptureHint | undefined, scope: Scope): string;
|
|
92
|
+
captureMessage(message: string, level: Severity, hint: CaptureHint | undefined, scope: Scope): string;
|
|
93
|
+
captureEvent(event: EventPayload, hint: CaptureHint | undefined, scope: Scope): string;
|
|
94
|
+
private prepareEvent;
|
|
95
|
+
sendTransaction(payload: TransactionPayload): void;
|
|
96
|
+
sendCheckIn(payload: CheckInPayload): void;
|
|
97
|
+
sendHeartbeat(payload: HeartbeatPayload): void;
|
|
98
|
+
flush(timeoutMs?: number): Promise<boolean>;
|
|
99
|
+
close(timeoutMs?: number): Promise<boolean>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
declare class Span {
|
|
103
|
+
private readonly transaction;
|
|
104
|
+
readonly parentSpanId: string;
|
|
105
|
+
readonly op?: string | undefined;
|
|
106
|
+
readonly description?: string | undefined;
|
|
107
|
+
readonly spanId: string;
|
|
108
|
+
readonly startTimestamp: string;
|
|
109
|
+
status: string;
|
|
110
|
+
endTimestamp?: string;
|
|
111
|
+
data?: Record<string, unknown>;
|
|
112
|
+
constructor(transaction: Transaction, parentSpanId: string, op?: string | undefined, description?: string | undefined);
|
|
113
|
+
setStatus(status: string): this;
|
|
114
|
+
setData(key: string, value: unknown): this;
|
|
115
|
+
/** Span aninhado (filho deste span). */
|
|
116
|
+
startChild(op?: string, description?: string): Span;
|
|
117
|
+
finish(): void;
|
|
118
|
+
toJSON(): SpanData;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Uma unidade de trabalho nomeada (ex.: uma execução de rotina, uma sincronização).
|
|
122
|
+
* Spans filhos medem as etapas internas (chamadas HTTP, queries, etc.).
|
|
123
|
+
*/
|
|
124
|
+
declare class Transaction {
|
|
125
|
+
private readonly client;
|
|
126
|
+
name: string;
|
|
127
|
+
readonly op?: string | undefined;
|
|
128
|
+
private readonly sampled;
|
|
129
|
+
readonly eventId: string;
|
|
130
|
+
readonly spanId: string;
|
|
131
|
+
readonly startTimestamp: string;
|
|
132
|
+
status: string;
|
|
133
|
+
private readonly spans;
|
|
134
|
+
private readonly tags;
|
|
135
|
+
private finished;
|
|
136
|
+
constructor(client: Client | undefined, name: string, op?: string | undefined, sampled?: boolean);
|
|
137
|
+
createSpan(parentSpanId: string, op?: string, description?: string): Span;
|
|
138
|
+
/** Span direto da transaction. */
|
|
139
|
+
startChild(op?: string, description?: string): Span;
|
|
140
|
+
setTag(key: string, value: string): this;
|
|
141
|
+
setStatus(status: string): this;
|
|
142
|
+
setName(name: string): this;
|
|
143
|
+
finish(): void;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
interface CheckInOptions {
|
|
147
|
+
monitorSlug: string;
|
|
148
|
+
status: CheckInStatus;
|
|
149
|
+
/** Reutilize o id retornado pelo check-in 'in_progress' para fechar a execução */
|
|
150
|
+
checkInId?: string;
|
|
151
|
+
durationMs?: number;
|
|
152
|
+
/** Expressão cron — cria/atualiza o monitor automaticamente no servidor */
|
|
153
|
+
schedule?: string;
|
|
154
|
+
timezone?: string;
|
|
155
|
+
}
|
|
156
|
+
interface WithMonitorOptions {
|
|
157
|
+
schedule?: string;
|
|
158
|
+
timezone?: string;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** Inicializa o SDK. Chame uma vez, o mais cedo possível no programa. */
|
|
162
|
+
declare function init(options: InitOptions): void;
|
|
163
|
+
declare function getClient(): Client | undefined;
|
|
164
|
+
/** Captura uma exceção e retorna o event_id (undefined se o SDK não foi inicializado). */
|
|
165
|
+
declare function captureException(error: unknown, hint?: CaptureHint): string | undefined;
|
|
166
|
+
declare function captureMessage(message: string, level?: Severity, hint?: CaptureHint): string | undefined;
|
|
167
|
+
/** Registra um breadcrumb — anexado aos próximos eventos como trilha do que aconteceu antes. */
|
|
168
|
+
declare function addBreadcrumb(crumb: BreadcrumbInput): void;
|
|
169
|
+
declare function setTag(key: string, value: string): void;
|
|
170
|
+
declare function setTags(tags: Record<string, string>): void;
|
|
171
|
+
declare function setUser(user: EventUser | null): void;
|
|
172
|
+
declare function setContext(name: string, context: Record<string, unknown> | null): void;
|
|
173
|
+
declare function setExtra(key: string, value: unknown): void;
|
|
174
|
+
/** Executa o callback com uma cópia isolada do scope (alterações não vazam para fora). */
|
|
175
|
+
declare function withScope<T>(callback: (scope: Scope) => T): T;
|
|
176
|
+
/** Inicia uma transaction de performance. Chame .finish() para enviá-la. */
|
|
177
|
+
declare function startTransaction(name: string, op?: string): Transaction;
|
|
178
|
+
/** Check-in manual de um monitor cron. Retorna o check_in_id para fechar a execução depois. */
|
|
179
|
+
declare function checkIn(options: CheckInOptions): string | undefined;
|
|
180
|
+
/** Envolve um job monitorado: envia in_progress → ok/error com duração e captura a exceção em caso de falha. */
|
|
181
|
+
declare function withMonitor<T>(monitorSlug: string, fn: () => T | Promise<T>, options?: WithMonitorOptions): Promise<T>;
|
|
182
|
+
/** Aguarda o envio de tudo que está na fila (até timeoutMs). */
|
|
183
|
+
declare function flush(timeoutMs?: number): Promise<boolean>;
|
|
184
|
+
/** Flush final + encerra heartbeat e transport. Chame antes do processo terminar. */
|
|
185
|
+
declare function close(timeoutMs?: number): Promise<boolean>;
|
|
186
|
+
|
|
187
|
+
export { Breadcrumb, type BreadcrumbInput, type CaptureHint, type CheckInOptions, CheckInPayload, CheckInStatus, Client, EventPayload, EventUser, type HeartbeatOptions, HeartbeatPayload, type InitOptions, type ParsedDsn, Scope, Severity, Span, SpanData, Transaction, TransactionPayload, type WithMonitorOptions, addBreadcrumb, captureException, captureMessage, checkIn, close, flush, getClient, init, parseDsn, setContext, setExtra, setTag, setTags, setUser, startTransaction, withMonitor, withScope };
|