@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
TypeScript
/**
* 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;
}