meshed-monitor-sdk
Version:
JavaScript/Node.js SDK for MeshedMonitor with real-time logging and advanced features
98 lines (83 loc) • 2.61 kB
TypeScript
/**
* TypeScript definitions for MeshedMonitor JavaScript SDK
*/
export interface MeshedMonitorConfig {
apiKey?: string;
apiUrl?: string;
projectId?: string;
environment?: string;
debug?: boolean;
batchSize?: number;
batchTimeout?: number;
maxRetries?: number;
retryDelay?: number;
enableBackgroundSync?: boolean;
}
export interface User {
id: string;
email?: string;
name?: string;
[key: string]: any;
}
export interface LogMetadata {
source?: string;
tags?: Record<string, any>;
spanId?: string;
duration?: number;
[key: string]: any;
}
export type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';
export interface Transaction {
id: string;
startSpan(name: string): Span;
setTag(key: string, value: any): Transaction;
finish(): void;
}
export interface Span {
id: string;
setTag(key: string, value: any): Span;
finish(): void;
}
export interface RequestContext {
requestId: string;
traceId: string;
log(message: string, level?: LogLevel, metadata?: LogMetadata): void;
startTransaction(name: string): Transaction;
}
declare global {
namespace Express {
interface Request {
meshedMonitor?: RequestContext;
}
}
}
export default class MeshedMonitorSDK {
constructor(config?: MeshedMonitorConfig);
// Configuration & Context
setUser(user: User): MeshedMonitorSDK;
setTag(key: string, value: any): MeshedMonitorSDK;
setTags(tags: Record<string, any>): MeshedMonitorSDK;
setRelease(version: string): MeshedMonitorSDK;
setRequestContext(requestId: string, traceId?: string): MeshedMonitorSDK;
clearContext(): MeshedMonitorSDK;
// Logging Methods
log(message: string, level?: LogLevel, metadata?: LogMetadata): MeshedMonitorSDK;
debug(message: string, metadata?: LogMetadata): MeshedMonitorSDK;
info(message: string, metadata?: LogMetadata): MeshedMonitorSDK;
warn(message: string, metadata?: LogMetadata): MeshedMonitorSDK;
error(message: string, metadata?: LogMetadata): MeshedMonitorSDK;
captureError(error: Error, additionalData?: Record<string, any>): MeshedMonitorSDK;
// Performance Tracking
startTransaction(name: string, operation?: string): Transaction;
startSpan(name: string, transactionId?: string, operation?: string): Span;
finishSpan(spanId: string): void;
finishTransaction(transactionId: string): void;
// Middleware
expressMiddleware(): (req: any, res: any, next: any) => void;
// Utilities
wrap<T extends (...args: any[]) => any>(fn: T, name?: string): T;
healthCheck(): Promise<boolean>;
// Lifecycle
flush(): Promise<void>;
destroy(): void;
}