diff --git a/codeflash/languages/javascript/support.py b/codeflash/languages/javascript/support.py index f1a570740..1d41b3ae8 100644 --- a/codeflash/languages/javascript/support.py +++ b/codeflash/languages/javascript/support.py @@ -9,11 +9,13 @@ import logging import subprocess import xml.etree.ElementTree as ET +from functools import lru_cache from pathlib import Path from typing import TYPE_CHECKING, Any from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.languages.base import CodeContext, FunctionFilterCriteria, HelperFunction, Language, TestInfo, TestResult +from codeflash.languages.javascript.normalizer import normalize_js_code from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage, get_analyzer_for_file from codeflash.languages.registry import register_language from codeflash.models.models import FunctionParent @@ -26,6 +28,8 @@ from codeflash.models.models import GeneratedTestsList, InvocationId, ValidCode from codeflash.verification.verification_utils import TestConfig +_cached_normalize_js_code = lru_cache(maxsize=128)(normalize_js_code) + logger = logging.getLogger(__name__) @@ -1704,11 +1708,9 @@ def validate_syntax(self, source: str) -> bool: def normalize_code(self, source: str) -> str: """Normalize JavaScript code for deduplication using tree-sitter.""" - from codeflash.languages.javascript.normalizer import normalize_js_code - try: is_ts = self.treesitter_language == TreeSitterLanguage.TYPESCRIPT - return normalize_js_code(source, typescript=is_ts) + return _cached_normalize_js_code(source, typescript=is_ts) except Exception: return source