11import { consola } from "consola" ;
2+ import { compact , uniq } from "es-toolkit" ;
23import type { CodeGenConfig } from "./configuration.js" ;
34import { NameResolver } from "./util/name-resolver.js" ;
4- import { getRandomInt } from "./util/random.js" ;
55
66export class ComponentTypeNameResolver extends NameResolver {
77 counter = 1 ;
@@ -10,15 +10,18 @@ export class ComponentTypeNameResolver extends NameResolver {
1010
1111 constructor ( config : CodeGenConfig , reservedNames : string [ ] ) {
1212 super ( config , reservedNames , ( variants ) => {
13- const randomVariant = variants [ getRandomInt ( 0 , variants . length - 1 ) ] ;
14- if ( randomVariant ) {
15- if ( ! this . countersByVariant . has ( randomVariant ) ) {
16- this . countersByVariant . set ( randomVariant , 0 ) ;
13+ const sortedVariants = uniq ( compact ( variants ) ) . sort ( ( a , b ) =>
14+ a . localeCompare ( b ) ,
15+ ) ;
16+ const baseVariant = sortedVariants [ 0 ] ;
17+ if ( baseVariant ) {
18+ if ( ! this . countersByVariant . has ( baseVariant ) ) {
19+ this . countersByVariant . set ( baseVariant , 0 ) ;
1720 }
1821 const variantCounter =
19- ( this . countersByVariant . get ( randomVariant ) as number ) + 1 ;
20- this . countersByVariant . set ( randomVariant , variantCounter ) ;
21- const dirtyResolvedName = `${ randomVariant } ${ variantCounter } ` ;
22+ ( this . countersByVariant . get ( baseVariant ) as number ) + 1 ;
23+ this . countersByVariant . set ( baseVariant , variantCounter ) ;
24+ const dirtyResolvedName = `${ baseVariant } ${ variantCounter } ` ;
2225 consola . debug (
2326 "generated dirty resolved type name for component - " ,
2427 dirtyResolvedName ,
0 commit comments