diff --git a/src/codegen/sdk/typescript/import_resolution.py b/src/codegen/sdk/typescript/import_resolution.py index 810843483..578ef9354 100644 --- a/src/codegen/sdk/typescript/import_resolution.py +++ b/src/codegen/sdk/typescript/import_resolution.py @@ -406,6 +406,11 @@ def from_dynamic_import_statement(cls, import_call_node: TSNode, module_node: TS # TODO: fixme return [] imports = [] + + # TODO: FIX THIS, is a horrible hack to avoid a crash on the next.js + if len(module_node.named_children) == 0: + return [] + # Grab the first element of dynamic import call expression argument list module_node = module_node.named_children[0] diff --git a/tests/unit/codegen/sdk/typescript/import_resolution/test_edge_case.py b/tests/unit/codegen/sdk/typescript/import_resolution/test_edge_case.py new file mode 100644 index 000000000..e85c3d9d3 --- /dev/null +++ b/tests/unit/codegen/sdk/typescript/import_resolution/test_edge_case.py @@ -0,0 +1,33 @@ +from typing import TYPE_CHECKING + +from codegen.sdk.codebase.factory.get_session import get_codebase_session +from codegen.sdk.enums import ProgrammingLanguage + +if TYPE_CHECKING: + from codegen.sdk.typescript.file import TSFile + + +def test_import_edge_case(tmpdir) -> None: + # language=typescript + content = """ +import './module.js' + +// Generic mock function with configurable return value +const mockRequire = (returnValue = 'result') => returnValue + +// Generic path constants with configurable values +const MOCK_DIR_PATH = 'mock/directory/path' +const MOCK_FILE_PATH = 'mock/directory/path/file.js' + +it('should support CommonJS globals in ESM context', () => { + const require = mockRequire + const __dirname = MOCK_DIR_PATH + const __filename = MOCK_FILE_PATH + + expect(require()).toBe('result') + expect(__dirname).toBe(MOCK_DIR_PATH) + expect(__filename).toBe(MOCK_FILE_PATH) +}) """ + with get_codebase_session(tmpdir=tmpdir, files={"file.ts": content}, programming_language=ProgrammingLanguage.TYPESCRIPT) as codebase: + file: TSFile = codebase.get_file("file.ts") + assert len(file.imports) == 1