1
1
import codegen
2
2
from codegen import Codebase
3
+
3
4
from codegen .sdk .typescript .file import TSImport
5
+
4
6
from codegen .sdk .enums import ProgrammingLanguage
5
7
6
8
processed_imports = set ()
9
+
10
+
7
11
@codegen .function ("reexport_management" )
8
12
def run (codebase : Codebase ):
9
13
print ("🚀 Starting reexport analysis..." )
10
14
for file in codebase .files :
11
15
# 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 :
13
17
continue
14
-
18
+
15
19
print (f"📁 Analyzing: { file .filepath } " )
16
-
20
+
17
21
# Gather all reexports that are not external exports
18
22
all_reexports = []
19
23
for export_stmt in file .export_statements :
@@ -34,10 +38,7 @@ def run(codebase: Codebase):
34
38
print (f"🔄 Processing: { export .name } -> { resolved_public_file } " )
35
39
36
40
# 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 )
41
42
42
43
# Ensure the "public" file exists
43
44
if not codebase .has_file (resolved_public_file ):
@@ -69,14 +70,9 @@ def run(codebase: Codebase):
69
70
print (f"📝 Updated existing type export for { export .name } " )
70
71
else :
71
72
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 } "' )
76
74
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 } "' )
80
76
print (f"✨ Added new type export for { export .name } " )
81
77
82
78
# C) Normal export
@@ -90,14 +86,9 @@ def run(codebase: Codebase):
90
86
print (f"📝 Updated existing export for { export .name } " )
91
87
else :
92
88
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 } "' )
97
90
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 } "' )
101
92
print (f"✨ Added new export for { export .name } " )
102
93
103
94
# Update import usages
@@ -131,6 +122,7 @@ def run(codebase: Codebase):
131
122
print (f"🧹 Removed empty file: { file .filepath } " )
132
123
codebase .commit ()
133
124
125
+
134
126
if __name__ == "__main__" :
135
127
print ("🎯 Starting reexport organization..." )
136
128
codebase = Codebase ("./" , programming_language = ProgrammingLanguage .TYPESCRIPT )
0 commit comments