UNPKG

@statezero/core

Version:

The type-safe frontend client for StateZero - connect directly to your backend models with zero boilerplate

80 lines (79 loc) 2.85 kB
/** * Base class for metric calculation strategies with operations */ export class MetricCalculationStrategy { /** * Calculate metric based on ground truth and operations */ calculateWithOperations(baseValue: any, operations: any, field: any, ModelClass: any): any; /** * Get initial value for the metric type * Override in subclasses if needed */ getInitialValue(): number; /** * Process a single operation - implement in subclasses */ reduceOperation(currentValue: any, operation: any, field: any): void; /** * Safely get a numeric value from an object */ safeGetValue(obj: any, field: any): number; } /** * Count strategy implementation */ export class CountStrategy extends MetricCalculationStrategy { reduceOperation(currentCount: any, operation: any, field: any): any; } /** * Sum strategy implementation */ export class SumStrategy extends MetricCalculationStrategy { reduceOperation(currentSum: any, operation: any, field: any): any; } /** * Min strategy implementation */ export class MinStrategy extends MetricCalculationStrategy { reduceOperation(currentMin: any, operation: any, field: any): any; } /** * Max strategy implementation */ export class MaxStrategy extends MetricCalculationStrategy { reduceOperation(currentMax: any, operation: any, field: any): any; } /** * Factory class for creating the appropriate strategy */ export class MetricStrategyFactory { static "__#private@#customStrategies": Map<any, any>; static "__#private@#defaultStrategies": Map<string, () => CountStrategy>; /** * Clear all custom strategy overrides */ static clearCustomStrategies(): void; /** * Generate a unique key for the strategy map * @private * @param {string} metricType - The type of metric (count, sum, min, max) * @param {Function} ModelClass - The model class * @returns {string} A unique key */ private static "__#private@#generateStrategyKey"; /** * Override a strategy for a specific metric type and model class * @param {string} metricType - The type of metric (count, sum, min, max) * @param {Function|null} ModelClass - The model class or null for a generic override * @param {MetricCalculationStrategy} strategy - The strategy to use */ static overrideStrategy(metricType: string, ModelClass: Function | null, strategy: MetricCalculationStrategy): void; /** * Get the appropriate strategy for a model class and metric type * @param {string} metricType - The type of metric (count, sum, min, max) * @param {Function} ModelClass - The model class * @returns {MetricCalculationStrategy} The appropriate strategy */ static getStrategy(metricType: string, ModelClass: Function): MetricCalculationStrategy; }