@ospm/eslint-plugin-react-signals-hooks
Version:
ESLint plugin for React Signals hooks - enforces best practices, performance optimizations, and integration patterns for @preact/signals-react usage in React projects
49 lines • 1.73 kB
TypeScript
import type { PerformanceOperationKeys } from './performance-constants.js';
/**
* Performance budget configuration for rule execution
*
* @property maxTime - Maximum execution time in milliseconds
* @property maxMemory - Maximum memory usage in bytes
* @property maxNodes - Maximum number of AST nodes to process
* @property enableMetrics - Whether to collect detailed performance metrics
* @property logMetrics - Whether to log metrics to console
* @property maxOperations - Operation-specific limits
*/
export type PerformanceBudget = {
maxTime?: number | undefined;
maxMemory?: number | undefined;
maxNodes?: number | undefined;
enableMetrics?: boolean | undefined;
logMetrics?: boolean | undefined;
maxOperations?: Partial<Record<PerformanceOperationKeys, number>> | undefined;
};
export type PerformanceMetrics = {
startTime: number;
endTime?: number | undefined;
duration?: number | undefined;
memoryUsage?: NodeJS.MemoryUsage | undefined;
memoryDelta?: number | undefined;
nodeCount: number;
operationCounts: Record<string, number>;
filePath: string;
ruleName: string;
exceededBudget?: boolean | undefined;
budgetExceededBy?: number | undefined;
perfBudget?: PerformanceBudget | undefined;
phaseDurations?: Record<string, number> | undefined;
customMetrics?: Record<string, unknown> | undefined;
nodeTypes?: Map<string, number>;
nodeLocations?: Array<{
type: string;
start: {
line: number;
column: number;
};
end: {
line: number;
column: number;
};
}>;
budgetExceededNodeTypes?: Set<string>;
};
//# sourceMappingURL=types.d.ts.map