11import { FileGraph } from '@daxserver/validation-schema-codegen/traverse/file-graph'
22import { NodeGraph } from '@daxserver/validation-schema-codegen/traverse/node-graph'
3- import { generateQualifiedNodeName } from '@daxserver/validation-schema-codegen/utils/generate-qualified-name '
3+ import { resolverStore } from '@daxserver/validation-schema-codegen/utils/resolver-store '
44import { ImportDeclaration } from 'ts-morph'
55
66export class ImportCollector {
@@ -20,6 +20,17 @@ export class ImportCollector {
2020 if ( this . fileGraph . hasNode ( filePath ) ) continue
2121 this . fileGraph . addFile ( filePath , moduleSourceFile )
2222
23+ // Build alias map specific to this import declaration
24+ const aliasMap = new Map < string , string > ( ) // originalName -> aliasName
25+ const namedImports = importDecl . getNamedImports ( )
26+ for ( const namedImport of namedImports ) {
27+ const originalName = namedImport . getName ( )
28+ const aliasName = namedImport . getAliasNode ( ) ?. getText ( )
29+ if ( aliasName ) {
30+ aliasMap . set ( originalName , aliasName )
31+ }
32+ }
33+
2334 const imports = moduleSourceFile . getImportDeclarations ( )
2435 const typeAliases = moduleSourceFile . getTypeAliases ( )
2536 const interfaces = moduleSourceFile . getInterfaces ( )
@@ -29,51 +40,87 @@ export class ImportCollector {
2940 // Add all imported types to the graph
3041 for ( const typeAlias of typeAliases ) {
3142 const typeName = typeAlias . getName ( )
32- const qualifiedName = generateQualifiedNodeName ( typeName , typeAlias . getSourceFile ( ) )
43+ const qualifiedName = resolverStore . generateQualifiedName (
44+ typeName ,
45+ typeAlias . getSourceFile ( ) ,
46+ )
47+ const aliasName = aliasMap . get ( typeName )
3348 this . nodeGraph . addTypeNode ( qualifiedName , {
3449 node : typeAlias ,
3550 type : 'typeAlias' ,
3651 originalName : typeName ,
3752 qualifiedName,
3853 isImported : true ,
3954 isMainCode : false ,
55+ aliasName,
56+ } )
57+
58+ // Add to ResolverStore during traversal
59+ resolverStore . addTypeMapping ( {
60+ originalName : typeName ,
61+ sourceFile : typeAlias . getSourceFile ( ) ,
62+ aliasName,
4063 } )
4164 }
4265
4366 for ( const interfaceDecl of interfaces ) {
4467 const interfaceName = interfaceDecl . getName ( )
45- const qualifiedName = generateQualifiedNodeName (
68+ const qualifiedName = resolverStore . generateQualifiedName (
4669 interfaceName ,
4770 interfaceDecl . getSourceFile ( ) ,
4871 )
72+ const aliasName = aliasMap . get ( interfaceName )
4973 this . nodeGraph . addTypeNode ( qualifiedName , {
5074 node : interfaceDecl ,
5175 type : 'interface' ,
5276 originalName : interfaceName ,
5377 qualifiedName,
5478 isImported : true ,
5579 isMainCode : false ,
80+ aliasName,
81+ } )
82+
83+ // Add to ResolverStore during traversal
84+ resolverStore . addTypeMapping ( {
85+ originalName : interfaceName ,
86+ sourceFile : interfaceDecl . getSourceFile ( ) ,
87+ aliasName,
5688 } )
5789 }
5890
5991 for ( const enumDecl of enums ) {
6092 const enumName = enumDecl . getName ( )
61- const qualifiedName = generateQualifiedNodeName ( enumName , enumDecl . getSourceFile ( ) )
93+ const qualifiedName = resolverStore . generateQualifiedName (
94+ enumName ,
95+ enumDecl . getSourceFile ( ) ,
96+ )
97+ const aliasName = aliasMap . get ( enumName )
6298 this . nodeGraph . addTypeNode ( qualifiedName , {
6399 node : enumDecl ,
64100 type : 'enum' ,
65101 originalName : enumName ,
66102 qualifiedName,
67103 isImported : true ,
68104 isMainCode : false ,
105+ aliasName,
106+ } )
107+
108+ // Add to ResolverStore during traversal
109+ resolverStore . addTypeMapping ( {
110+ originalName : enumName ,
111+ sourceFile : enumDecl . getSourceFile ( ) ,
112+ aliasName,
69113 } )
70114 }
71115
72116 for ( const functionDecl of functions ) {
73117 const functionName = functionDecl . getName ( )
74118 if ( ! functionName ) continue
75119
76- const qualifiedName = generateQualifiedNodeName ( functionName , functionDecl . getSourceFile ( ) )
120+ const qualifiedName = resolverStore . generateQualifiedName (
121+ functionName ,
122+ functionDecl . getSourceFile ( ) ,
123+ )
77124 this . nodeGraph . addTypeNode ( qualifiedName , {
78125 node : functionDecl ,
79126 type : 'function' ,
@@ -82,6 +129,12 @@ export class ImportCollector {
82129 isImported : true ,
83130 isMainCode : false ,
84131 } )
132+
133+ // Add to ResolverStore during traversal
134+ resolverStore . addTypeMapping ( {
135+ originalName : functionName ,
136+ sourceFile : functionDecl . getSourceFile ( ) ,
137+ } )
85138 }
86139
87140 // Recursively collect from nested imports (mark as transitive)
0 commit comments