qnce-engine
Version:
Core QNCE (Quantum Narrative Convergence Engine) - Framework agnostic narrative engine with performance optimization
69 lines • 2.16 kB
TypeScript
import { QNCEState } from './core';
/**
* Error thrown when condition evaluation fails
*/
export declare class ConditionEvaluationError extends Error {
readonly expression?: string | undefined;
readonly cause?: Error | undefined;
constructor(message: string, expression?: string | undefined, cause?: Error | undefined);
}
/**
* Context object passed to condition evaluators
*/
export interface ConditionContext {
/** Current engine state */
state: QNCEState;
/** Current timestamp for time-based conditions */
timestamp: number;
/** Additional custom context data */
customData?: Record<string, unknown>;
}
/**
* Custom evaluator function signature
*/
export type CustomEvaluatorFunction = (expression: string, context: ConditionContext) => boolean;
/**
* Condition evaluator service for parsing and executing conditional expressions
*/
export declare class ConditionEvaluator {
private customEvaluator?;
private functionCache;
private maxCacheSize;
/**
* Set a custom evaluator function for handling complex conditions
*/
setCustomEvaluator(evaluator: CustomEvaluatorFunction): void;
/**
* Clear the custom evaluator
*/
clearCustomEvaluator(): void;
/**
* Evaluate a condition expression against the provided context
*/
evaluate(expression: string, context: ConditionContext): boolean;
/**
* Built-in expression evaluator with support for common patterns
*/
private evaluateBuiltIn;
/**
* Sanitize expression to prevent code injection
*/
private sanitizeExpression;
/**
* Create a safe evaluation context from the condition context
*/
private createEvaluationContext;
/**
* Validate that an expression is syntactically correct without evaluating it
*/
validateExpression(expression: string): {
valid: boolean;
error?: string;
};
/**
* Get list of flag names referenced in an expression
*/
getReferencedFlags(expression: string): string[];
}
export declare const conditionEvaluator: ConditionEvaluator;
//# sourceMappingURL=condition.d.ts.map