@@ -89,14 +89,18 @@ export function convertToBaseType(type: string): BaseTypes {
8989}
9090
9191export function createCustomTypeResolver (
92- importOverridesMetadata : ImportOverridesMetadata , widgetCustomTypesCollector : Set < string > ,
92+ importOverridesMetadata : ImportOverridesMetadata ,
93+ widgetCustomTypesCollector : Set < string > ,
94+ resolveNameConflicts : ( string ) => string = ( typeName ) => typeName ,
9395) : TypeResolver {
9496 return ( typeDescriptor : ITypeDescr ) => {
9597 const resolvedType = importOverridesMetadata . typeResolutions ?. [ typeDescriptor . type ]
9698 || typeDescriptor . type ;
9799 widgetCustomTypesCollector . add ( resolvedType ) ;
98- const resultingType = importOverridesMetadata . nameConflictsResolutionNamespaces ?. [ resolvedType ]
99- ? `${ importOverridesMetadata . nameConflictsResolutionNamespaces [ resolvedType ] } .${ resolvedType } ` : resolvedType ;
100+ const resultingType = resolveNameConflicts (
101+ importOverridesMetadata . nameConflictsResolutionNamespaces ?. [ resolvedType ]
102+ ? `${ importOverridesMetadata . nameConflictsResolutionNamespaces [ resolvedType ] } .${ resolvedType } ` : resolvedType ,
103+ ) ;
100104 return importOverridesMetadata . genericTypes ?. [ resultingType ] ? `${ resultingType } <any>` : resultingType ;
101105 } ;
102106}
@@ -191,18 +195,22 @@ export function mapOption(prop: IProp, typeResolver?: TypeResolver): IOption {
191195 } ;
192196}
193197
194- export function extractNestedComponents (
195- props : IComplexProp [ ] ,
196- rawWidgetName : string ,
197- widgetName : string ,
198- typeResolver ?: TypeResolver ,
199- ) : INestedComponent [ ] {
198+ function getWidgetComponentNames ( rawWidgetName : string , widgetName : string , props : IComplexProp [ ] ) {
200199 const nameClassMap : Record < string , string > = { } ;
201200 nameClassMap [ rawWidgetName ] = widgetName ;
202201 props . forEach ( ( p ) => {
203202 nameClassMap [ p . name ] = uppercaseFirst ( p . name ) ;
204203 } ) ;
204+ return nameClassMap ;
205+ }
205206
207+ export function extractNestedComponents (
208+ props : IComplexProp [ ] ,
209+ rawWidgetName : string ,
210+ widgetName : string ,
211+ typeResolver ?: TypeResolver ,
212+ ) : INestedComponent [ ] {
213+ const nameClassMap = getWidgetComponentNames ( rawWidgetName , widgetName , props ) ;
206214 return props . map ( ( p ) => ( {
207215 className : nameClassMap [ p . name ] ,
208216 owners : p . owners . map ( ( o ) => nameClassMap [ o ] ) ,
@@ -305,8 +313,29 @@ export function mapWidget(
305313 const widgetCustomTypes = new Set < string > ( ) ;
306314 const { importOverridesMetadata, generateCustomTypes } = typeGenerationOptions || { } ;
307315
316+ const generatedComponentNames = Object . values (
317+ getWidgetComponentNames ( raw . name , name , raw . complexOptions || [ ] ) ,
318+ ) ;
319+
320+ const typeAliases : Record < string , string > = { } ;
321+ const resolveGeneratedComponentNamesConflict = ( typeName : string ) => {
322+ if ( generatedComponentNames . includes ( typeName ) ) {
323+ const aliasedTypeName = `${ typeName } Aliased` ;
324+ typeAliases [ typeName ] = aliasedTypeName ;
325+ return aliasedTypeName ;
326+ }
327+ return typeName ;
328+ } ;
329+ const getTypeImportStatement = ( typeName : string ) => (
330+ typeAliases [ typeName ] ? `${ typeName } as ${ typeAliases [ typeName ] } ` : typeName
331+ ) ;
332+
308333 const typeResolver = generateCustomTypes
309- ? createCustomTypeResolver ( importOverridesMetadata || { } , widgetCustomTypes ) : undefined ;
334+ ? createCustomTypeResolver (
335+ importOverridesMetadata || { } ,
336+ widgetCustomTypes ,
337+ resolveGeneratedComponentNamesConflict ,
338+ ) : undefined ;
310339
311340 const subscribableOptions : ISubscribableOption [ ] = collectSubscribableRecursively ( raw . options )
312341 . map ( ( option ) => mapSubscribableOption ( option , typeResolver ) ) ;
@@ -342,7 +371,10 @@ export function mapWidget(
342371 if ( moduleImportNamespace ) {
343372 wildcardTypeImports [ module ] = moduleImportNamespace ;
344373 } else {
345- customTypeImports [ module ] = [ ...( customTypeImports [ module ] || [ ] ) , t ] ;
374+ customTypeImports [ module ] = [
375+ ...( customTypeImports [ module ] || [ ] ) ,
376+ getTypeImportStatement ( t ) ,
377+ ] ;
346378 }
347379 }
348380 } ) ;
0 commit comments