@watchdog-sdk/node 0.4.3 → 0.4.4

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.
@@ -120,7 +120,7 @@ var RequestContextBuilder = class _RequestContextBuilder {
120
120
  };
121
121
 
122
122
  // src/node-sdk.ts
123
- var SDK = { name: "watchdog.node", version: "0.4.3" };
123
+ var SDK = { name: "watchdog.node", version: "0.4.4" };
124
124
  var DEFAULT_FLUSH_TIMEOUT_MS = 2e3;
125
125
  var EXIT_CODE_UNCAUGHT = 1;
126
126
  var client = null;
@@ -269,4 +269,4 @@ var ExceptionPolicy = class _ExceptionPolicy {
269
269
 
270
270
 
271
271
  exports.__decorateClass = __decorateClass; exports.init = init; exports.close = close; exports.getClient = getClient; exports.captureException = captureException; exports.captureMessage = captureMessage; exports.captureRequestError = captureRequestError; exports.addBreadcrumb = addBreadcrumb; exports.setUser = setUser; exports.setTag = setTag; exports.setExtra = setExtra; exports.setContext = setContext; exports.flush = flush; exports.ExceptionPolicy = ExceptionPolicy;
272
- //# sourceMappingURL=chunk-S6H6O6BV.cjs.map
272
+ //# sourceMappingURL=chunk-2NXKMN2F.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/watchdog/watchdog/packages/node/dist/chunk-S6H6O6BV.cjs","../src/node-sdk.ts","../src/context-lines.ts","../src/request-context.ts","../src/exception-policy.ts"],"names":["status"],"mappings":"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","file":"/home/runner/work/watchdog/watchdog/packages/node/dist/chunk-S6H6O6BV.cjs","sourcesContent":[null,"import { hostname, platform, arch } from 'node:os';\nimport {\n Breadcrumb,\n CaptureContext,\n Level,\n UserContext,\n WatchdogClient,\n WatchdogEvent,\n} from '@watchdog-sdk/core';\nimport { ContextLines } from './context-lines';\nimport { HttpRequestLike, NodeOptions, Uninstall } from './interfaces';\nimport { RequestContextBuilder } from './request-context';\n\nconst SDK = { name: 'watchdog.node', version: '0.4.3' };\nconst DEFAULT_FLUSH_TIMEOUT_MS = 2_000;\nconst EXIT_CODE_UNCAUGHT = 1;\n\nlet client: WatchdogClient | null = null;\nlet uninstallers: Uninstall[] = [];\n\nexport function init(options: NodeOptions): WatchdogClient {\n close();\n const {\n captureUncaughtExceptions = true,\n captureUnhandledRejections = true,\n onUnhandledRejection = 'warn',\n contextLines = true,\n flushTimeoutMs = DEFAULT_FLUSH_TIMEOUT_MS,\n ...coreOptions\n } = options;\n\n const created = new WatchdogClient(\n {\n ...coreOptions,\n platform: 'node',\n beforeSend: (event) => {\n const enriched = contextLines ? withContextLines(event) : event;\n return coreOptions.beforeSend ? coreOptions.beforeSend(enriched) : enriched;\n },\n },\n SDK,\n );\n created.setContext('runtime', { name: 'node', version: process.version });\n created.setContext('os', { platform: platform(), arch: arch() });\n created.setTag('server_name', hostname());\n client = created;\n\n if (captureUncaughtExceptions) {\n uninstallers.push(installUncaughtException(created, flushTimeoutMs));\n }\n if (captureUnhandledRejections) {\n uninstallers.push(installUnhandledRejection(created, onUnhandledRejection, flushTimeoutMs));\n }\n return created;\n}\n\nexport function close(): void {\n for (const uninstall of uninstallers) {\n uninstall();\n }\n uninstallers = [];\n client = null;\n}\n\nexport function getClient(): WatchdogClient | null {\n return client;\n}\n\nexport function captureException(error: unknown, context?: CaptureContext): string | undefined {\n return client?.captureException(error, context);\n}\n\nexport function captureMessage(message: string, level?: Level, context?: CaptureContext): string | undefined {\n return client?.captureMessage(message, level, context);\n}\n\nexport function captureRequestError(error: unknown, request: HttpRequestLike, context?: CaptureContext): string | undefined {\n return client?.captureException(error, { ...context, request: RequestContextBuilder.from(request) });\n}\n\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n client?.addBreadcrumb(breadcrumb);\n}\n\nexport function setUser(user: UserContext | undefined): void {\n client?.setUser(user);\n}\n\nexport function setTag(key: string, value: string): void {\n client?.setTag(key, value);\n}\n\nexport function setExtra(key: string, value: unknown): void {\n client?.setExtra(key, value);\n}\n\nexport function setContext(key: string, value: unknown): void {\n client?.setContext(key, value);\n}\n\nexport function flush(timeoutMs?: number): Promise<boolean> {\n return client ? client.flush(timeoutMs) : Promise.resolve(true);\n}\n\nfunction withContextLines(event: WatchdogEvent): WatchdogEvent {\n if (!event.exception) {\n return event;\n }\n return {\n ...event,\n exception: {\n ...event.exception,\n stacktrace: { frames: ContextLines.enrich(event.exception.stacktrace.frames) },\n },\n };\n}\n\nfunction installUncaughtException(target: WatchdogClient, flushTimeoutMs: number): Uninstall {\n const handler = (error: Error): void => {\n target.captureException(error, { handled: false, level: 'fatal', tags: { mechanism: 'uncaughtException' } });\n void target.flush(flushTimeoutMs).finally(() => {\n if (process.listenerCount('uncaughtException') <= 1) {\n process.exit(EXIT_CODE_UNCAUGHT);\n }\n });\n };\n process.on('uncaughtException', handler);\n return () => process.off('uncaughtException', handler);\n}\n\nfunction installUnhandledRejection(\n target: WatchdogClient,\n mode: 'warn' | 'exit',\n flushTimeoutMs: number,\n): Uninstall {\n const handler = (reason: unknown): void => {\n target.captureException(reason, { handled: false, tags: { mechanism: 'unhandledRejection' } });\n if (mode === 'exit') {\n void target.flush(flushTimeoutMs).finally(() => process.exit(EXIT_CODE_UNCAUGHT));\n return;\n }\n console.warn('[watchdog] unhandled promise rejection:', reason);\n };\n process.on('unhandledRejection', handler);\n return () => process.off('unhandledRejection', handler);\n}\n","import { readFileSync, statSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport type { Frame } from '@watchdog-sdk/core';\n\nconst CONTEXT_RADIUS = 5;\nconst MAX_FILE_BYTES = 2 * 1024 * 1024;\nconst MAX_CACHED_FILES = 100;\nconst MAX_LINE_LENGTH = 400;\n\nexport class ContextLines {\n private static readonly cache = new Map<string, string[] | null>();\n\n static enrich(frames: Frame[]): Frame[] {\n return frames.map((frame) => ContextLines.enrichFrame(frame));\n }\n\n static resolvePath(filename: string): string | null {\n if (/^https?:\\/\\//.test(filename) || filename.startsWith('node:')) {\n return null;\n }\n if (filename.startsWith('file://')) {\n try {\n return fileURLToPath(filename);\n } catch {\n return null;\n }\n }\n return filename;\n }\n\n static clearCache(): void {\n ContextLines.cache.clear();\n }\n\n private static enrichFrame(frame: Frame): Frame {\n if (frame.inApp === false || !frame.filename || frame.lineno === undefined) {\n return frame;\n }\n const path = ContextLines.resolvePath(frame.filename);\n const lines = path ? ContextLines.readLines(path) : null;\n if (!lines || frame.lineno < 1 || frame.lineno > lines.length) {\n return frame;\n }\n const index = frame.lineno - 1;\n return {\n ...frame,\n contextLine: ContextLines.clip(lines[index]),\n preContext: lines.slice(Math.max(index - CONTEXT_RADIUS, 0), index).map(ContextLines.clip),\n postContext: lines.slice(index + 1, index + 1 + CONTEXT_RADIUS).map(ContextLines.clip),\n };\n }\n\n private static readLines(path: string): string[] | null {\n if (ContextLines.cache.has(path)) {\n return ContextLines.cache.get(path) ?? null;\n }\n const lines = ContextLines.load(path);\n if (ContextLines.cache.size >= MAX_CACHED_FILES) {\n const oldest = ContextLines.cache.keys().next().value;\n if (oldest !== undefined) {\n ContextLines.cache.delete(oldest);\n }\n }\n ContextLines.cache.set(path, lines);\n return lines;\n }\n\n private static load(path: string): string[] | null {\n try {\n if (statSync(path).size > MAX_FILE_BYTES) {\n return null;\n }\n return readFileSync(path, 'utf8').split(/\\r?\\n/);\n } catch {\n return null;\n }\n }\n\n private static clip(line: string): string {\n return line.length > MAX_LINE_LENGTH ? line.slice(0, MAX_LINE_LENGTH) : line;\n }\n}\n","import type { RequestContext } from '@watchdog-sdk/core';\nimport { HttpRequestLike } from './interfaces';\n\nconst SAFE_HEADERS = new Set([\n 'user-agent',\n 'referer',\n 'content-type',\n 'content-length',\n 'accept',\n 'accept-language',\n 'host',\n 'x-request-id',\n]);\n\nexport class RequestContextBuilder {\n static from(request: HttpRequestLike): RequestContext {\n const headers: Record<string, string> = {};\n for (const [name, value] of Object.entries(request.headers ?? {})) {\n if (SAFE_HEADERS.has(name.toLowerCase()) && value !== undefined) {\n headers[name.toLowerCase()] = Array.isArray(value) ? value.join(', ') : value;\n }\n }\n return {\n url: RequestContextBuilder.stripQuery(request.originalUrl ?? request.url),\n method: request.method,\n headers,\n };\n }\n\n private static stripQuery(url: string | undefined): string | undefined {\n return url?.split('?')[0];\n }\n}\n","const SERVER_ERROR_STATUS = 500;\n\nexport class ExceptionPolicy {\n static shouldReport(exception: unknown): boolean {\n const status = ExceptionPolicy.statusOf(exception);\n return status === undefined || status >= SERVER_ERROR_STATUS;\n }\n\n private static statusOf(exception: unknown): number | undefined {\n if (typeof exception !== 'object' || exception === null) {\n return undefined;\n }\n const candidate = exception as { getStatus?: unknown; status?: unknown; statusCode?: unknown };\n if (typeof candidate.getStatus === 'function') {\n const status = (candidate.getStatus as () => unknown).call(exception);\n return typeof status === 'number' ? status : undefined;\n }\n const status = candidate.status ?? candidate.statusCode;\n return typeof status === 'number' ? status : undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/watchdog/watchdog/packages/node/dist/chunk-2NXKMN2F.cjs","../src/node-sdk.ts","../src/context-lines.ts","../src/request-context.ts","../src/exception-policy.ts"],"names":["status"],"mappings":"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","file":"/home/runner/work/watchdog/watchdog/packages/node/dist/chunk-2NXKMN2F.cjs","sourcesContent":[null,"import { hostname, platform, arch } from 'node:os';\nimport {\n Breadcrumb,\n CaptureContext,\n Level,\n UserContext,\n WatchdogClient,\n WatchdogEvent,\n} from '@watchdog-sdk/core';\nimport { ContextLines } from './context-lines';\nimport { HttpRequestLike, NodeOptions, Uninstall } from './interfaces';\nimport { RequestContextBuilder } from './request-context';\n\nconst SDK = { name: 'watchdog.node', version: '0.4.4' };\nconst DEFAULT_FLUSH_TIMEOUT_MS = 2_000;\nconst EXIT_CODE_UNCAUGHT = 1;\n\nlet client: WatchdogClient | null = null;\nlet uninstallers: Uninstall[] = [];\n\nexport function init(options: NodeOptions): WatchdogClient {\n close();\n const {\n captureUncaughtExceptions = true,\n captureUnhandledRejections = true,\n onUnhandledRejection = 'warn',\n contextLines = true,\n flushTimeoutMs = DEFAULT_FLUSH_TIMEOUT_MS,\n ...coreOptions\n } = options;\n\n const created = new WatchdogClient(\n {\n ...coreOptions,\n platform: 'node',\n beforeSend: (event) => {\n const enriched = contextLines ? withContextLines(event) : event;\n return coreOptions.beforeSend ? coreOptions.beforeSend(enriched) : enriched;\n },\n },\n SDK,\n );\n created.setContext('runtime', { name: 'node', version: process.version });\n created.setContext('os', { platform: platform(), arch: arch() });\n created.setTag('server_name', hostname());\n client = created;\n\n if (captureUncaughtExceptions) {\n uninstallers.push(installUncaughtException(created, flushTimeoutMs));\n }\n if (captureUnhandledRejections) {\n uninstallers.push(installUnhandledRejection(created, onUnhandledRejection, flushTimeoutMs));\n }\n return created;\n}\n\nexport function close(): void {\n for (const uninstall of uninstallers) {\n uninstall();\n }\n uninstallers = [];\n client = null;\n}\n\nexport function getClient(): WatchdogClient | null {\n return client;\n}\n\nexport function captureException(error: unknown, context?: CaptureContext): string | undefined {\n return client?.captureException(error, context);\n}\n\nexport function captureMessage(message: string, level?: Level, context?: CaptureContext): string | undefined {\n return client?.captureMessage(message, level, context);\n}\n\nexport function captureRequestError(error: unknown, request: HttpRequestLike, context?: CaptureContext): string | undefined {\n return client?.captureException(error, { ...context, request: RequestContextBuilder.from(request) });\n}\n\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n client?.addBreadcrumb(breadcrumb);\n}\n\nexport function setUser(user: UserContext | undefined): void {\n client?.setUser(user);\n}\n\nexport function setTag(key: string, value: string): void {\n client?.setTag(key, value);\n}\n\nexport function setExtra(key: string, value: unknown): void {\n client?.setExtra(key, value);\n}\n\nexport function setContext(key: string, value: unknown): void {\n client?.setContext(key, value);\n}\n\nexport function flush(timeoutMs?: number): Promise<boolean> {\n return client ? client.flush(timeoutMs) : Promise.resolve(true);\n}\n\nfunction withContextLines(event: WatchdogEvent): WatchdogEvent {\n if (!event.exception) {\n return event;\n }\n return {\n ...event,\n exception: {\n ...event.exception,\n stacktrace: { frames: ContextLines.enrich(event.exception.stacktrace.frames) },\n },\n };\n}\n\nfunction installUncaughtException(target: WatchdogClient, flushTimeoutMs: number): Uninstall {\n const handler = (error: Error): void => {\n target.captureException(error, { handled: false, level: 'fatal', tags: { mechanism: 'uncaughtException' } });\n void target.flush(flushTimeoutMs).finally(() => {\n if (process.listenerCount('uncaughtException') <= 1) {\n process.exit(EXIT_CODE_UNCAUGHT);\n }\n });\n };\n process.on('uncaughtException', handler);\n return () => process.off('uncaughtException', handler);\n}\n\nfunction installUnhandledRejection(\n target: WatchdogClient,\n mode: 'warn' | 'exit',\n flushTimeoutMs: number,\n): Uninstall {\n const handler = (reason: unknown): void => {\n target.captureException(reason, { handled: false, tags: { mechanism: 'unhandledRejection' } });\n if (mode === 'exit') {\n void target.flush(flushTimeoutMs).finally(() => process.exit(EXIT_CODE_UNCAUGHT));\n return;\n }\n console.warn('[watchdog] unhandled promise rejection:', reason);\n };\n process.on('unhandledRejection', handler);\n return () => process.off('unhandledRejection', handler);\n}\n","import { readFileSync, statSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport type { Frame } from '@watchdog-sdk/core';\n\nconst CONTEXT_RADIUS = 5;\nconst MAX_FILE_BYTES = 2 * 1024 * 1024;\nconst MAX_CACHED_FILES = 100;\nconst MAX_LINE_LENGTH = 400;\n\nexport class ContextLines {\n private static readonly cache = new Map<string, string[] | null>();\n\n static enrich(frames: Frame[]): Frame[] {\n return frames.map((frame) => ContextLines.enrichFrame(frame));\n }\n\n static resolvePath(filename: string): string | null {\n if (/^https?:\\/\\//.test(filename) || filename.startsWith('node:')) {\n return null;\n }\n if (filename.startsWith('file://')) {\n try {\n return fileURLToPath(filename);\n } catch {\n return null;\n }\n }\n return filename;\n }\n\n static clearCache(): void {\n ContextLines.cache.clear();\n }\n\n private static enrichFrame(frame: Frame): Frame {\n if (frame.inApp === false || !frame.filename || frame.lineno === undefined) {\n return frame;\n }\n const path = ContextLines.resolvePath(frame.filename);\n const lines = path ? ContextLines.readLines(path) : null;\n if (!lines || frame.lineno < 1 || frame.lineno > lines.length) {\n return frame;\n }\n const index = frame.lineno - 1;\n return {\n ...frame,\n contextLine: ContextLines.clip(lines[index]),\n preContext: lines.slice(Math.max(index - CONTEXT_RADIUS, 0), index).map(ContextLines.clip),\n postContext: lines.slice(index + 1, index + 1 + CONTEXT_RADIUS).map(ContextLines.clip),\n };\n }\n\n private static readLines(path: string): string[] | null {\n if (ContextLines.cache.has(path)) {\n return ContextLines.cache.get(path) ?? null;\n }\n const lines = ContextLines.load(path);\n if (ContextLines.cache.size >= MAX_CACHED_FILES) {\n const oldest = ContextLines.cache.keys().next().value;\n if (oldest !== undefined) {\n ContextLines.cache.delete(oldest);\n }\n }\n ContextLines.cache.set(path, lines);\n return lines;\n }\n\n private static load(path: string): string[] | null {\n try {\n if (statSync(path).size > MAX_FILE_BYTES) {\n return null;\n }\n return readFileSync(path, 'utf8').split(/\\r?\\n/);\n } catch {\n return null;\n }\n }\n\n private static clip(line: string): string {\n return line.length > MAX_LINE_LENGTH ? line.slice(0, MAX_LINE_LENGTH) : line;\n }\n}\n","import type { RequestContext } from '@watchdog-sdk/core';\nimport { HttpRequestLike } from './interfaces';\n\nconst SAFE_HEADERS = new Set([\n 'user-agent',\n 'referer',\n 'content-type',\n 'content-length',\n 'accept',\n 'accept-language',\n 'host',\n 'x-request-id',\n]);\n\nexport class RequestContextBuilder {\n static from(request: HttpRequestLike): RequestContext {\n const headers: Record<string, string> = {};\n for (const [name, value] of Object.entries(request.headers ?? {})) {\n if (SAFE_HEADERS.has(name.toLowerCase()) && value !== undefined) {\n headers[name.toLowerCase()] = Array.isArray(value) ? value.join(', ') : value;\n }\n }\n return {\n url: RequestContextBuilder.stripQuery(request.originalUrl ?? request.url),\n method: request.method,\n headers,\n };\n }\n\n private static stripQuery(url: string | undefined): string | undefined {\n return url?.split('?')[0];\n }\n}\n","const SERVER_ERROR_STATUS = 500;\n\nexport class ExceptionPolicy {\n static shouldReport(exception: unknown): boolean {\n const status = ExceptionPolicy.statusOf(exception);\n return status === undefined || status >= SERVER_ERROR_STATUS;\n }\n\n private static statusOf(exception: unknown): number | undefined {\n if (typeof exception !== 'object' || exception === null) {\n return undefined;\n }\n const candidate = exception as { getStatus?: unknown; status?: unknown; statusCode?: unknown };\n if (typeof candidate.getStatus === 'function') {\n const status = (candidate.getStatus as () => unknown).call(exception);\n return typeof status === 'number' ? status : undefined;\n }\n const status = candidate.status ?? candidate.statusCode;\n return typeof status === 'number' ? status : undefined;\n }\n}\n"]}
@@ -120,7 +120,7 @@ var RequestContextBuilder = class _RequestContextBuilder {
120
120
  };
121
121
 
122
122
  // src/node-sdk.ts
123
- var SDK = { name: "watchdog.node", version: "0.4.3" };
123
+ var SDK = { name: "watchdog.node", version: "0.4.4" };
124
124
  var DEFAULT_FLUSH_TIMEOUT_MS = 2e3;
125
125
  var EXIT_CODE_UNCAUGHT = 1;
126
126
  var client = null;
@@ -269,4 +269,4 @@ export {
269
269
  flush,
270
270
  ExceptionPolicy
271
271
  };
272
- //# sourceMappingURL=chunk-EC2UJND6.js.map
272
+ //# sourceMappingURL=chunk-SUUYW7ZN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/node-sdk.ts","../src/context-lines.ts","../src/request-context.ts","../src/exception-policy.ts"],"sourcesContent":["import { hostname, platform, arch } from 'node:os';\nimport {\n Breadcrumb,\n CaptureContext,\n Level,\n UserContext,\n WatchdogClient,\n WatchdogEvent,\n} from '@watchdog-sdk/core';\nimport { ContextLines } from './context-lines';\nimport { HttpRequestLike, NodeOptions, Uninstall } from './interfaces';\nimport { RequestContextBuilder } from './request-context';\n\nconst SDK = { name: 'watchdog.node', version: '0.4.3' };\nconst DEFAULT_FLUSH_TIMEOUT_MS = 2_000;\nconst EXIT_CODE_UNCAUGHT = 1;\n\nlet client: WatchdogClient | null = null;\nlet uninstallers: Uninstall[] = [];\n\nexport function init(options: NodeOptions): WatchdogClient {\n close();\n const {\n captureUncaughtExceptions = true,\n captureUnhandledRejections = true,\n onUnhandledRejection = 'warn',\n contextLines = true,\n flushTimeoutMs = DEFAULT_FLUSH_TIMEOUT_MS,\n ...coreOptions\n } = options;\n\n const created = new WatchdogClient(\n {\n ...coreOptions,\n platform: 'node',\n beforeSend: (event) => {\n const enriched = contextLines ? withContextLines(event) : event;\n return coreOptions.beforeSend ? coreOptions.beforeSend(enriched) : enriched;\n },\n },\n SDK,\n );\n created.setContext('runtime', { name: 'node', version: process.version });\n created.setContext('os', { platform: platform(), arch: arch() });\n created.setTag('server_name', hostname());\n client = created;\n\n if (captureUncaughtExceptions) {\n uninstallers.push(installUncaughtException(created, flushTimeoutMs));\n }\n if (captureUnhandledRejections) {\n uninstallers.push(installUnhandledRejection(created, onUnhandledRejection, flushTimeoutMs));\n }\n return created;\n}\n\nexport function close(): void {\n for (const uninstall of uninstallers) {\n uninstall();\n }\n uninstallers = [];\n client = null;\n}\n\nexport function getClient(): WatchdogClient | null {\n return client;\n}\n\nexport function captureException(error: unknown, context?: CaptureContext): string | undefined {\n return client?.captureException(error, context);\n}\n\nexport function captureMessage(message: string, level?: Level, context?: CaptureContext): string | undefined {\n return client?.captureMessage(message, level, context);\n}\n\nexport function captureRequestError(error: unknown, request: HttpRequestLike, context?: CaptureContext): string | undefined {\n return client?.captureException(error, { ...context, request: RequestContextBuilder.from(request) });\n}\n\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n client?.addBreadcrumb(breadcrumb);\n}\n\nexport function setUser(user: UserContext | undefined): void {\n client?.setUser(user);\n}\n\nexport function setTag(key: string, value: string): void {\n client?.setTag(key, value);\n}\n\nexport function setExtra(key: string, value: unknown): void {\n client?.setExtra(key, value);\n}\n\nexport function setContext(key: string, value: unknown): void {\n client?.setContext(key, value);\n}\n\nexport function flush(timeoutMs?: number): Promise<boolean> {\n return client ? client.flush(timeoutMs) : Promise.resolve(true);\n}\n\nfunction withContextLines(event: WatchdogEvent): WatchdogEvent {\n if (!event.exception) {\n return event;\n }\n return {\n ...event,\n exception: {\n ...event.exception,\n stacktrace: { frames: ContextLines.enrich(event.exception.stacktrace.frames) },\n },\n };\n}\n\nfunction installUncaughtException(target: WatchdogClient, flushTimeoutMs: number): Uninstall {\n const handler = (error: Error): void => {\n target.captureException(error, { handled: false, level: 'fatal', tags: { mechanism: 'uncaughtException' } });\n void target.flush(flushTimeoutMs).finally(() => {\n if (process.listenerCount('uncaughtException') <= 1) {\n process.exit(EXIT_CODE_UNCAUGHT);\n }\n });\n };\n process.on('uncaughtException', handler);\n return () => process.off('uncaughtException', handler);\n}\n\nfunction installUnhandledRejection(\n target: WatchdogClient,\n mode: 'warn' | 'exit',\n flushTimeoutMs: number,\n): Uninstall {\n const handler = (reason: unknown): void => {\n target.captureException(reason, { handled: false, tags: { mechanism: 'unhandledRejection' } });\n if (mode === 'exit') {\n void target.flush(flushTimeoutMs).finally(() => process.exit(EXIT_CODE_UNCAUGHT));\n return;\n }\n console.warn('[watchdog] unhandled promise rejection:', reason);\n };\n process.on('unhandledRejection', handler);\n return () => process.off('unhandledRejection', handler);\n}\n","import { readFileSync, statSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport type { Frame } from '@watchdog-sdk/core';\n\nconst CONTEXT_RADIUS = 5;\nconst MAX_FILE_BYTES = 2 * 1024 * 1024;\nconst MAX_CACHED_FILES = 100;\nconst MAX_LINE_LENGTH = 400;\n\nexport class ContextLines {\n private static readonly cache = new Map<string, string[] | null>();\n\n static enrich(frames: Frame[]): Frame[] {\n return frames.map((frame) => ContextLines.enrichFrame(frame));\n }\n\n static resolvePath(filename: string): string | null {\n if (/^https?:\\/\\//.test(filename) || filename.startsWith('node:')) {\n return null;\n }\n if (filename.startsWith('file://')) {\n try {\n return fileURLToPath(filename);\n } catch {\n return null;\n }\n }\n return filename;\n }\n\n static clearCache(): void {\n ContextLines.cache.clear();\n }\n\n private static enrichFrame(frame: Frame): Frame {\n if (frame.inApp === false || !frame.filename || frame.lineno === undefined) {\n return frame;\n }\n const path = ContextLines.resolvePath(frame.filename);\n const lines = path ? ContextLines.readLines(path) : null;\n if (!lines || frame.lineno < 1 || frame.lineno > lines.length) {\n return frame;\n }\n const index = frame.lineno - 1;\n return {\n ...frame,\n contextLine: ContextLines.clip(lines[index]),\n preContext: lines.slice(Math.max(index - CONTEXT_RADIUS, 0), index).map(ContextLines.clip),\n postContext: lines.slice(index + 1, index + 1 + CONTEXT_RADIUS).map(ContextLines.clip),\n };\n }\n\n private static readLines(path: string): string[] | null {\n if (ContextLines.cache.has(path)) {\n return ContextLines.cache.get(path) ?? null;\n }\n const lines = ContextLines.load(path);\n if (ContextLines.cache.size >= MAX_CACHED_FILES) {\n const oldest = ContextLines.cache.keys().next().value;\n if (oldest !== undefined) {\n ContextLines.cache.delete(oldest);\n }\n }\n ContextLines.cache.set(path, lines);\n return lines;\n }\n\n private static load(path: string): string[] | null {\n try {\n if (statSync(path).size > MAX_FILE_BYTES) {\n return null;\n }\n return readFileSync(path, 'utf8').split(/\\r?\\n/);\n } catch {\n return null;\n }\n }\n\n private static clip(line: string): string {\n return line.length > MAX_LINE_LENGTH ? line.slice(0, MAX_LINE_LENGTH) : line;\n }\n}\n","import type { RequestContext } from '@watchdog-sdk/core';\nimport { HttpRequestLike } from './interfaces';\n\nconst SAFE_HEADERS = new Set([\n 'user-agent',\n 'referer',\n 'content-type',\n 'content-length',\n 'accept',\n 'accept-language',\n 'host',\n 'x-request-id',\n]);\n\nexport class RequestContextBuilder {\n static from(request: HttpRequestLike): RequestContext {\n const headers: Record<string, string> = {};\n for (const [name, value] of Object.entries(request.headers ?? {})) {\n if (SAFE_HEADERS.has(name.toLowerCase()) && value !== undefined) {\n headers[name.toLowerCase()] = Array.isArray(value) ? value.join(', ') : value;\n }\n }\n return {\n url: RequestContextBuilder.stripQuery(request.originalUrl ?? request.url),\n method: request.method,\n headers,\n };\n }\n\n private static stripQuery(url: string | undefined): string | undefined {\n return url?.split('?')[0];\n }\n}\n","const SERVER_ERROR_STATUS = 500;\n\nexport class ExceptionPolicy {\n static shouldReport(exception: unknown): boolean {\n const status = ExceptionPolicy.statusOf(exception);\n return status === undefined || status >= SERVER_ERROR_STATUS;\n }\n\n private static statusOf(exception: unknown): number | undefined {\n if (typeof exception !== 'object' || exception === null) {\n return undefined;\n }\n const candidate = exception as { getStatus?: unknown; status?: unknown; statusCode?: unknown };\n if (typeof candidate.getStatus === 'function') {\n const status = (candidate.getStatus as () => unknown).call(exception);\n return typeof status === 'number' ? status : undefined;\n }\n const status = candidate.status ?? candidate.statusCode;\n return typeof status === 'number' ? status : undefined;\n }\n}\n"],"mappings":"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","names":["status"]}
1
+ {"version":3,"sources":["../src/node-sdk.ts","../src/context-lines.ts","../src/request-context.ts","../src/exception-policy.ts"],"sourcesContent":["import { hostname, platform, arch } from 'node:os';\nimport {\n Breadcrumb,\n CaptureContext,\n Level,\n UserContext,\n WatchdogClient,\n WatchdogEvent,\n} from '@watchdog-sdk/core';\nimport { ContextLines } from './context-lines';\nimport { HttpRequestLike, NodeOptions, Uninstall } from './interfaces';\nimport { RequestContextBuilder } from './request-context';\n\nconst SDK = { name: 'watchdog.node', version: '0.4.4' };\nconst DEFAULT_FLUSH_TIMEOUT_MS = 2_000;\nconst EXIT_CODE_UNCAUGHT = 1;\n\nlet client: WatchdogClient | null = null;\nlet uninstallers: Uninstall[] = [];\n\nexport function init(options: NodeOptions): WatchdogClient {\n close();\n const {\n captureUncaughtExceptions = true,\n captureUnhandledRejections = true,\n onUnhandledRejection = 'warn',\n contextLines = true,\n flushTimeoutMs = DEFAULT_FLUSH_TIMEOUT_MS,\n ...coreOptions\n } = options;\n\n const created = new WatchdogClient(\n {\n ...coreOptions,\n platform: 'node',\n beforeSend: (event) => {\n const enriched = contextLines ? withContextLines(event) : event;\n return coreOptions.beforeSend ? coreOptions.beforeSend(enriched) : enriched;\n },\n },\n SDK,\n );\n created.setContext('runtime', { name: 'node', version: process.version });\n created.setContext('os', { platform: platform(), arch: arch() });\n created.setTag('server_name', hostname());\n client = created;\n\n if (captureUncaughtExceptions) {\n uninstallers.push(installUncaughtException(created, flushTimeoutMs));\n }\n if (captureUnhandledRejections) {\n uninstallers.push(installUnhandledRejection(created, onUnhandledRejection, flushTimeoutMs));\n }\n return created;\n}\n\nexport function close(): void {\n for (const uninstall of uninstallers) {\n uninstall();\n }\n uninstallers = [];\n client = null;\n}\n\nexport function getClient(): WatchdogClient | null {\n return client;\n}\n\nexport function captureException(error: unknown, context?: CaptureContext): string | undefined {\n return client?.captureException(error, context);\n}\n\nexport function captureMessage(message: string, level?: Level, context?: CaptureContext): string | undefined {\n return client?.captureMessage(message, level, context);\n}\n\nexport function captureRequestError(error: unknown, request: HttpRequestLike, context?: CaptureContext): string | undefined {\n return client?.captureException(error, { ...context, request: RequestContextBuilder.from(request) });\n}\n\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n client?.addBreadcrumb(breadcrumb);\n}\n\nexport function setUser(user: UserContext | undefined): void {\n client?.setUser(user);\n}\n\nexport function setTag(key: string, value: string): void {\n client?.setTag(key, value);\n}\n\nexport function setExtra(key: string, value: unknown): void {\n client?.setExtra(key, value);\n}\n\nexport function setContext(key: string, value: unknown): void {\n client?.setContext(key, value);\n}\n\nexport function flush(timeoutMs?: number): Promise<boolean> {\n return client ? client.flush(timeoutMs) : Promise.resolve(true);\n}\n\nfunction withContextLines(event: WatchdogEvent): WatchdogEvent {\n if (!event.exception) {\n return event;\n }\n return {\n ...event,\n exception: {\n ...event.exception,\n stacktrace: { frames: ContextLines.enrich(event.exception.stacktrace.frames) },\n },\n };\n}\n\nfunction installUncaughtException(target: WatchdogClient, flushTimeoutMs: number): Uninstall {\n const handler = (error: Error): void => {\n target.captureException(error, { handled: false, level: 'fatal', tags: { mechanism: 'uncaughtException' } });\n void target.flush(flushTimeoutMs).finally(() => {\n if (process.listenerCount('uncaughtException') <= 1) {\n process.exit(EXIT_CODE_UNCAUGHT);\n }\n });\n };\n process.on('uncaughtException', handler);\n return () => process.off('uncaughtException', handler);\n}\n\nfunction installUnhandledRejection(\n target: WatchdogClient,\n mode: 'warn' | 'exit',\n flushTimeoutMs: number,\n): Uninstall {\n const handler = (reason: unknown): void => {\n target.captureException(reason, { handled: false, tags: { mechanism: 'unhandledRejection' } });\n if (mode === 'exit') {\n void target.flush(flushTimeoutMs).finally(() => process.exit(EXIT_CODE_UNCAUGHT));\n return;\n }\n console.warn('[watchdog] unhandled promise rejection:', reason);\n };\n process.on('unhandledRejection', handler);\n return () => process.off('unhandledRejection', handler);\n}\n","import { readFileSync, statSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport type { Frame } from '@watchdog-sdk/core';\n\nconst CONTEXT_RADIUS = 5;\nconst MAX_FILE_BYTES = 2 * 1024 * 1024;\nconst MAX_CACHED_FILES = 100;\nconst MAX_LINE_LENGTH = 400;\n\nexport class ContextLines {\n private static readonly cache = new Map<string, string[] | null>();\n\n static enrich(frames: Frame[]): Frame[] {\n return frames.map((frame) => ContextLines.enrichFrame(frame));\n }\n\n static resolvePath(filename: string): string | null {\n if (/^https?:\\/\\//.test(filename) || filename.startsWith('node:')) {\n return null;\n }\n if (filename.startsWith('file://')) {\n try {\n return fileURLToPath(filename);\n } catch {\n return null;\n }\n }\n return filename;\n }\n\n static clearCache(): void {\n ContextLines.cache.clear();\n }\n\n private static enrichFrame(frame: Frame): Frame {\n if (frame.inApp === false || !frame.filename || frame.lineno === undefined) {\n return frame;\n }\n const path = ContextLines.resolvePath(frame.filename);\n const lines = path ? ContextLines.readLines(path) : null;\n if (!lines || frame.lineno < 1 || frame.lineno > lines.length) {\n return frame;\n }\n const index = frame.lineno - 1;\n return {\n ...frame,\n contextLine: ContextLines.clip(lines[index]),\n preContext: lines.slice(Math.max(index - CONTEXT_RADIUS, 0), index).map(ContextLines.clip),\n postContext: lines.slice(index + 1, index + 1 + CONTEXT_RADIUS).map(ContextLines.clip),\n };\n }\n\n private static readLines(path: string): string[] | null {\n if (ContextLines.cache.has(path)) {\n return ContextLines.cache.get(path) ?? null;\n }\n const lines = ContextLines.load(path);\n if (ContextLines.cache.size >= MAX_CACHED_FILES) {\n const oldest = ContextLines.cache.keys().next().value;\n if (oldest !== undefined) {\n ContextLines.cache.delete(oldest);\n }\n }\n ContextLines.cache.set(path, lines);\n return lines;\n }\n\n private static load(path: string): string[] | null {\n try {\n if (statSync(path).size > MAX_FILE_BYTES) {\n return null;\n }\n return readFileSync(path, 'utf8').split(/\\r?\\n/);\n } catch {\n return null;\n }\n }\n\n private static clip(line: string): string {\n return line.length > MAX_LINE_LENGTH ? line.slice(0, MAX_LINE_LENGTH) : line;\n }\n}\n","import type { RequestContext } from '@watchdog-sdk/core';\nimport { HttpRequestLike } from './interfaces';\n\nconst SAFE_HEADERS = new Set([\n 'user-agent',\n 'referer',\n 'content-type',\n 'content-length',\n 'accept',\n 'accept-language',\n 'host',\n 'x-request-id',\n]);\n\nexport class RequestContextBuilder {\n static from(request: HttpRequestLike): RequestContext {\n const headers: Record<string, string> = {};\n for (const [name, value] of Object.entries(request.headers ?? {})) {\n if (SAFE_HEADERS.has(name.toLowerCase()) && value !== undefined) {\n headers[name.toLowerCase()] = Array.isArray(value) ? value.join(', ') : value;\n }\n }\n return {\n url: RequestContextBuilder.stripQuery(request.originalUrl ?? request.url),\n method: request.method,\n headers,\n };\n }\n\n private static stripQuery(url: string | undefined): string | undefined {\n return url?.split('?')[0];\n }\n}\n","const SERVER_ERROR_STATUS = 500;\n\nexport class ExceptionPolicy {\n static shouldReport(exception: unknown): boolean {\n const status = ExceptionPolicy.statusOf(exception);\n return status === undefined || status >= SERVER_ERROR_STATUS;\n }\n\n private static statusOf(exception: unknown): number | undefined {\n if (typeof exception !== 'object' || exception === null) {\n return undefined;\n }\n const candidate = exception as { getStatus?: unknown; status?: unknown; statusCode?: unknown };\n if (typeof candidate.getStatus === 'function') {\n const status = (candidate.getStatus as () => unknown).call(exception);\n return typeof status === 'number' ? status : undefined;\n }\n const status = candidate.status ?? candidate.statusCode;\n return typeof status === 'number' ? status : undefined;\n }\n}\n"],"mappings":"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","names":["status"]}
package/dist/index.cjs CHANGED
@@ -12,13 +12,13 @@
12
12
 
13
13
 
14
14
 
15
- var _chunkS6H6O6BVcjs = require('./chunk-S6H6O6BV.cjs');
15
+ var _chunk2NXKMN2Fcjs = require('./chunk-2NXKMN2F.cjs');
16
16
 
17
17
  // src/express.ts
18
18
  function expressErrorHandler() {
19
19
  return (error, request, _response, next) => {
20
- if (_chunkS6H6O6BVcjs.ExceptionPolicy.shouldReport(error)) {
21
- _chunkS6H6O6BVcjs.captureRequestError.call(void 0, error, request, { handled: true, tags: { mechanism: "express" } });
20
+ if (_chunk2NXKMN2Fcjs.ExceptionPolicy.shouldReport(error)) {
21
+ _chunk2NXKMN2Fcjs.captureRequestError.call(void 0, error, request, { handled: true, tags: { mechanism: "express" } });
22
22
  }
23
23
  next(error);
24
24
  };
@@ -38,5 +38,5 @@ function expressErrorHandler() {
38
38
 
39
39
 
40
40
 
41
- exports.ExceptionPolicy = _chunkS6H6O6BVcjs.ExceptionPolicy; exports.addBreadcrumb = _chunkS6H6O6BVcjs.addBreadcrumb; exports.captureException = _chunkS6H6O6BVcjs.captureException; exports.captureMessage = _chunkS6H6O6BVcjs.captureMessage; exports.captureRequestError = _chunkS6H6O6BVcjs.captureRequestError; exports.close = _chunkS6H6O6BVcjs.close; exports.expressErrorHandler = expressErrorHandler; exports.flush = _chunkS6H6O6BVcjs.flush; exports.getClient = _chunkS6H6O6BVcjs.getClient; exports.init = _chunkS6H6O6BVcjs.init; exports.setContext = _chunkS6H6O6BVcjs.setContext; exports.setExtra = _chunkS6H6O6BVcjs.setExtra; exports.setTag = _chunkS6H6O6BVcjs.setTag; exports.setUser = _chunkS6H6O6BVcjs.setUser;
41
+ exports.ExceptionPolicy = _chunk2NXKMN2Fcjs.ExceptionPolicy; exports.addBreadcrumb = _chunk2NXKMN2Fcjs.addBreadcrumb; exports.captureException = _chunk2NXKMN2Fcjs.captureException; exports.captureMessage = _chunk2NXKMN2Fcjs.captureMessage; exports.captureRequestError = _chunk2NXKMN2Fcjs.captureRequestError; exports.close = _chunk2NXKMN2Fcjs.close; exports.expressErrorHandler = expressErrorHandler; exports.flush = _chunk2NXKMN2Fcjs.flush; exports.getClient = _chunk2NXKMN2Fcjs.getClient; exports.init = _chunk2NXKMN2Fcjs.init; exports.setContext = _chunk2NXKMN2Fcjs.setContext; exports.setExtra = _chunk2NXKMN2Fcjs.setExtra; exports.setTag = _chunk2NXKMN2Fcjs.setTag; exports.setUser = _chunk2NXKMN2Fcjs.setUser;
42
42
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  setExtra,
13
13
  setTag,
14
14
  setUser
15
- } from "./chunk-EC2UJND6.js";
15
+ } from "./chunk-SUUYW7ZN.js";
16
16
 
17
17
  // src/express.ts
18
18
  function expressErrorHandler() {
package/dist/nest.cjs CHANGED
@@ -2,21 +2,21 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkS6H6O6BVcjs = require('./chunk-S6H6O6BV.cjs');
5
+ var _chunk2NXKMN2Fcjs = require('./chunk-2NXKMN2F.cjs');
6
6
 
7
7
  // src/nest.ts
8
8
  var _common = require('@nestjs/common');
9
9
  var _core = require('@nestjs/core');
10
10
  var WatchdogExceptionFilter = class extends _core.BaseExceptionFilter {
11
11
  catch(exception, host) {
12
- if (_chunkS6H6O6BVcjs.ExceptionPolicy.shouldReport(exception) && host.getType() === "http") {
12
+ if (_chunk2NXKMN2Fcjs.ExceptionPolicy.shouldReport(exception) && host.getType() === "http") {
13
13
  const request = host.switchToHttp().getRequest();
14
- _chunkS6H6O6BVcjs.captureRequestError.call(void 0, exception, request, { handled: true, tags: { mechanism: "nestjs" } });
14
+ _chunk2NXKMN2Fcjs.captureRequestError.call(void 0, exception, request, { handled: true, tags: { mechanism: "nestjs" } });
15
15
  }
16
16
  super.catch(exception, host);
17
17
  }
18
18
  };
19
- WatchdogExceptionFilter = exports.WatchdogExceptionFilter = _chunkS6H6O6BVcjs.__decorateClass.call(void 0, [
19
+ WatchdogExceptionFilter = exports.WatchdogExceptionFilter = _chunk2NXKMN2Fcjs.__decorateClass.call(void 0, [
20
20
  _common.Catch.call(void 0, )
21
21
  ], WatchdogExceptionFilter);
22
22
 
package/dist/nest.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  ExceptionPolicy,
3
3
  __decorateClass,
4
4
  captureRequestError
5
- } from "./chunk-EC2UJND6.js";
5
+ } from "./chunk-SUUYW7ZN.js";
6
6
 
7
7
  // src/nest.ts
8
8
  import { Catch } from "@nestjs/common";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@watchdog-sdk/node",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Watchdog SDK for Node.js, Express and NestJS with source code context for every frame",
5
5
  "keywords": [
6
6
  "watchdog",
@@ -68,7 +68,7 @@
68
68
  "clean": "rimraf dist .turbo"
69
69
  },
70
70
  "dependencies": {
71
- "@watchdog-sdk/core": "0.4.3"
71
+ "@watchdog-sdk/core": "0.4.4"
72
72
  },
73
73
  "peerDependencies": {
74
74
  "@nestjs/common": ">=10",