11import codegen
22from codegen import Codebase
3+
34from codegen .sdk .typescript .file import TSImport
5+
46from codegen .sdk .enums import ProgrammingLanguage
57
68processed_imports = set ()
9+
10+
711@codegen .function ("reexport_management" )
812def run (codebase : Codebase ):
913 print ("🚀 Starting reexport analysis..." )
1014 for file in codebase .files :
1115 # Only process files under /src/shared
12- if "examples/analize_reexports" not in file .filepath or ' /src/shared' not in file .filepath :
16+ if "examples/analize_reexports" not in file .filepath or " /src/shared" not in file .filepath :
1317 continue
14-
18+
1519 print (f"📁 Analyzing: { file .filepath } " )
16-
20+
1721 # Gather all reexports that are not external exports
1822 all_reexports = []
1923 for export_stmt in file .export_statements :
@@ -34,10 +38,7 @@ def run(codebase: Codebase):
3438 print (f"🔄 Processing: { export .name } -> { resolved_public_file } " )
3539
3640 # Get relative path from the "public" file back to the original file
37- relative_path = codebase .get_relative_path (
38- from_file = resolved_public_file ,
39- to_file = export .resolved_symbol .filepath
40- )
41+ relative_path = codebase .get_relative_path (from_file = resolved_public_file , to_file = export .resolved_symbol .filepath )
4142
4243 # Ensure the "public" file exists
4344 if not codebase .has_file (resolved_public_file ):
@@ -69,14 +70,9 @@ def run(codebase: Codebase):
6970 print (f"📝 Updated existing type export for { export .name } " )
7071 else :
7172 if export .is_aliased ():
72- target_file .insert_before (
73- f'export type {{ { export .resolved_symbol .name } as { export .name } }} '
74- f'from "{ relative_path } "'
75- )
73+ target_file .insert_before (f'export type {{ { export .resolved_symbol .name } as { export .name } }} from "{ relative_path } "' )
7674 else :
77- target_file .insert_before (
78- f'export type {{ { export .name } }} from "{ relative_path } "'
79- )
75+ target_file .insert_before (f'export type {{ { export .name } }} from "{ relative_path } "' )
8076 print (f"✨ Added new type export for { export .name } " )
8177
8278 # C) Normal export
@@ -90,14 +86,9 @@ def run(codebase: Codebase):
9086 print (f"📝 Updated existing export for { export .name } " )
9187 else :
9288 if export .is_aliased ():
93- target_file .insert_before (
94- f'export {{ { export .resolved_symbol .name } as { export .name } }} '
95- f'from "{ relative_path } "'
96- )
89+ target_file .insert_before (f'export {{ { export .resolved_symbol .name } as { export .name } }} from "{ relative_path } "' )
9790 else :
98- target_file .insert_before (
99- f'export {{ { export .name } }} from "{ relative_path } "'
100- )
91+ target_file .insert_before (f'export {{ { export .name } }} from "{ relative_path } "' )
10192 print (f"✨ Added new export for { export .name } " )
10293
10394 # Update import usages
@@ -131,6 +122,7 @@ def run(codebase: Codebase):
131122 print (f"🧹 Removed empty file: { file .filepath } " )
132123 codebase .commit ()
133124
125+
134126if __name__ == "__main__" :
135127 print ("🎯 Starting reexport organization..." )
136128 codebase = Codebase ("./" , programming_language = ProgrammingLanguage .TYPESCRIPT )
0 commit comments