export interface RuleSpec { name: string; reason: string; features: string[]; } export interface RuleSpecMap { [ruleName: string]: RuleSpec; } export interface FeatureDefinitionLocation { line: number; offset: number; column: number; } export interface FeatureDefinition { start: FeatureDefinitionLocation; end: FeatureDefinitionLocation; filename: string; source: string; description?: string; includedWhere?: string; features: (string | null)[]; } export interface FeatureDoc { name: string; definitions: FeatureDefinition[]; cost: number; recursiveCost: number; } export interface FeatureDocMap { [name: string]: FeatureDoc; } export interface ExecutableSpec { rules: RuleSpecMap; features?: FeatureDocMap; usedFiles: string[]; slotNames: string[]; slotJs: string[]; slotCosts: number[]; slotRecursiveCosts: number[]; }