1- import type { TreeNode } from '../core/tree'
1+ import type { TreeNode , TreeNodeNamed } from '../core/tree'
22import { generateRouteParams } from './generateRouteParams'
3- import { indent , formatMultilineUnion , stringToStringType } from '../utils'
3+ import { pad , formatMultilineUnion , stringToStringType } from '../utils'
44
55export function generateRouteNamedMap ( node : TreeNode ) : string {
66 if ( node . isRoot ( ) ) {
@@ -11,19 +11,22 @@ ${node.getChildrenSorted().map(generateRouteNamedMap).join('')}}`
1111 return (
1212 // if the node has a filePath, it's a component, it has a routeName and it should be referenced in the RouteNamedMap
1313 // otherwise it should be skipped to avoid navigating to a route that doesn't render anything
14- ( node . value . components . size > 0 && node . name
15- ? indent ( 2 , `'${ node . name } ': ${ generateRouteRecordInfo ( node ) } ,\n` )
14+ ( node . value . components . size && node . isNamed ( )
15+ ? pad (
16+ 2 ,
17+ `${ stringToStringType ( node . name ) } : ${ generateRouteRecordInfo ( node ) } ,\n`
18+ )
1619 : '' ) +
1720 ( node . children . size > 0
1821 ? node . getChildrenSorted ( ) . map ( generateRouteNamedMap ) . join ( '\n' )
1922 : '' )
2023 )
2124}
2225
23- export function generateRouteRecordInfo ( node : TreeNode ) {
26+ export function generateRouteRecordInfo ( node : TreeNodeNamed ) : string {
2427 const typeParams = [
25- `' ${ node . name } '` ,
26- `' ${ node . fullPath } '` ,
28+ stringToStringType ( node . name ) ,
29+ stringToStringType ( node . fullPath ) ,
2730 generateRouteParams ( node , true ) ,
2831 generateRouteParams ( node , false ) ,
2932 ]
@@ -33,11 +36,12 @@ export function generateRouteRecordInfo(node: TreeNode) {
3336 ? // TODO: remove Array.from() once Node 20 support is dropped
3437 Array . from ( node . getChildrenDeep ( ) )
3538 // skip routes that are not added to the types
36- . filter (
37- ( childRoute ) : childRoute is TreeNode & { name : string } =>
38- childRoute . value . components . size > 0 && ! ! childRoute . name
39- )
40- . map ( ( childRoute ) => childRoute . name )
39+ . reduce < string [ ] > ( ( acc , childRoute ) => {
40+ if ( childRoute . value . components . size && childRoute . isNamed ( ) ) {
41+ acc . push ( childRoute . name )
42+ }
43+ return acc
44+ } , [ ] )
4145 . sort ( )
4246 : [ ]
4347
@@ -46,6 +50,6 @@ export function generateRouteRecordInfo(node: TreeNode) {
4650 )
4751
4852 return `RouteRecordInfo<
49- ${ typeParams . map ( ( line ) => indent ( 4 , line ) ) . join ( ',\n' ) }
53+ ${ typeParams . map ( ( line ) => pad ( 4 , line ) ) . join ( ',\n' ) }
5054 >`
5155}
0 commit comments