rynex
Version:
A minimalist TypeScript framework for building reactive web applications with no virtual DOM
141 lines • 3.5 kB
TypeScript
/**
* Rynex Developer Tools
* Debugging, logging, and performance profiling utilities
*/
/**
* Logger levels
*/
export declare enum LogLevel {
DEBUG = 0,
INFO = 1,
WARN = 2,
ERROR = 3,
NONE = 4
}
/**
* Logger configuration
*/
export interface LoggerConfig {
level: LogLevel;
prefix?: string;
timestamp?: boolean;
colors?: boolean;
}
/**
* Logger class for structured logging
*/
declare class Logger {
private config;
private logs;
constructor(config?: Partial<LoggerConfig>);
private shouldLog;
private formatMessage;
private logToConsole;
debug(message: string, data?: any): void;
info(message: string, data?: any): void;
warn(message: string, data?: any): void;
error(message: string, data?: any): void;
getLogs(): {
level: string;
message: string;
timestamp: number;
data?: any;
}[];
clearLogs(): void;
setLevel(level: LogLevel): void;
}
/**
* Create or get logger instance
*/
export declare function logger(config?: Partial<LoggerConfig>): Logger;
/**
* Performance profiler
*/
export interface ProfileEntry {
name: string;
startTime: number;
endTime?: number;
duration?: number;
metadata?: any;
}
declare class Profiler {
private profiles;
private completed;
start(name: string, metadata?: any): void;
end(name: string): number | undefined;
measure(name: string, fn: () => any, metadata?: any): any;
measureAsync(name: string, fn: () => Promise<any>, metadata?: any): Promise<any>;
getProfile(name: string): ProfileEntry | undefined;
getAllProfiles(): ProfileEntry[];
getAverageDuration(name: string): number;
clear(): void;
report(): {
active: ProfileEntry[];
completed: ProfileEntry[];
summary: Record<string, any>;
};
private getSummary;
}
/**
* Get profiler instance
*/
export declare function profiler(): Profiler;
/**
* DevTools integration
*/
export interface DevToolsConfig {
enabled: boolean;
logger?: Logger;
profiler?: Profiler;
}
declare class DevTools {
private config;
private logger;
private profiler;
constructor(config?: Partial<DevToolsConfig>);
private attachToWindow;
inspect(element: HTMLElement): {
tagName: string;
id: string;
className: string;
attributes: {
name: string;
value: string;
}[];
children: number;
dataset: {
[name: string]: string | undefined;
};
} | null;
getState(): {
message: string;
};
enable(): void;
disable(): void;
}
/**
* Initialize or get devtools
*/
export declare function devtools(config?: Partial<DevToolsConfig>): DevTools;
/**
* Quick access functions
*/
export declare const log: {
debug: (msg: string, data?: any) => void;
info: (msg: string, data?: any) => void;
warn: (msg: string, data?: any) => void;
error: (msg: string, data?: any) => void;
};
export declare const profile: {
start: (name: string, metadata?: any) => void;
end: (name: string) => number | undefined;
measure: (name: string, fn: () => any, metadata?: any) => any;
measureAsync: (name: string, fn: () => Promise<any>, metadata?: any) => Promise<any>;
report: () => {
active: ProfileEntry[];
completed: ProfileEntry[];
summary: Record<string, any>;
};
};
export {};
//# sourceMappingURL=devtools.d.ts.map