@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.
- package/dist/{chunk-S6H6O6BV.cjs → chunk-2NXKMN2F.cjs} +2 -2
- package/dist/{chunk-S6H6O6BV.cjs.map → chunk-2NXKMN2F.cjs.map} +1 -1
- package/dist/{chunk-EC2UJND6.js → chunk-SUUYW7ZN.js} +2 -2
- package/dist/{chunk-EC2UJND6.js.map → chunk-SUUYW7ZN.js.map} +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.js +1 -1
- package/dist/nest.cjs +4 -4
- package/dist/nest.js +1 -1
- package/package.json +2 -2
|
@@ -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.
|
|
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-
|
|
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.
|
|
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-
|
|
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
|
|
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 (
|
|
21
|
-
|
|
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 =
|
|
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
package/dist/nest.cjs
CHANGED
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
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 (
|
|
12
|
+
if (_chunk2NXKMN2Fcjs.ExceptionPolicy.shouldReport(exception) && host.getType() === "http") {
|
|
13
13
|
const request = host.switchToHttp().getRequest();
|
|
14
|
-
|
|
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 =
|
|
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@watchdog-sdk/node",
|
|
3
|
-
"version": "0.4.
|
|
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.
|
|
71
|
+
"@watchdog-sdk/core": "0.4.4"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"@nestjs/common": ">=10",
|