1
- import type { AstroConfig , ManifestData , RouteData } from '../../../@types/astro' ;
1
+ import type { AstroConfig , ManifestData , RouteData , RoutePart } from '../../../@types/astro' ;
2
2
import type { LogOptions } from '../../logger/core' ;
3
3
4
4
import fs from 'fs' ;
@@ -9,16 +9,10 @@ import { fileURLToPath } from 'url';
9
9
import { warn } from '../../logger/core.js' ;
10
10
import { resolvePages } from '../../util.js' ;
11
11
12
- interface Part {
13
- content : string ;
14
- dynamic : boolean ;
15
- spread : boolean ;
16
- }
17
-
18
12
interface Item {
19
13
basename : string ;
20
14
ext : string ;
21
- parts : Part [ ] ;
15
+ parts : RoutePart [ ] ;
22
16
file : string ;
23
17
isDir : boolean ;
24
18
isIndex : boolean ;
@@ -35,7 +29,7 @@ function countOccurrences(needle: string, haystack: string) {
35
29
}
36
30
37
31
function getParts ( part : string , file : string ) {
38
- const result : Part [ ] = [ ] ;
32
+ const result : RoutePart [ ] = [ ] ;
39
33
part . split ( / \[ ( .+ ?\( .+ ?\) | .+ ?) \] / ) . map ( ( str , i ) => {
40
34
if ( ! str ) return ;
41
35
const dynamic = i % 2 === 1 ;
@@ -56,7 +50,7 @@ function getParts(part: string, file: string) {
56
50
return result ;
57
51
}
58
52
59
- function getPattern ( segments : Part [ ] [ ] , addTrailingSlash : AstroConfig [ 'trailingSlash' ] ) {
53
+ function getPattern ( segments : RoutePart [ ] [ ] , addTrailingSlash : AstroConfig [ 'trailingSlash' ] ) {
60
54
const pathname = segments
61
55
. map ( ( segment ) => {
62
56
return segment [ 0 ] . spread
@@ -94,7 +88,7 @@ function getTrailingSlashPattern(addTrailingSlash: AstroConfig['trailingSlash'])
94
88
return '\\/?$' ;
95
89
}
96
90
97
- function getGenerator ( segments : Part [ ] [ ] , addTrailingSlash : AstroConfig [ 'trailingSlash' ] ) {
91
+ function getGenerator ( segments : RoutePart [ ] [ ] , addTrailingSlash : AstroConfig [ 'trailingSlash' ] ) {
98
92
const template = segments
99
93
. map ( ( segment ) => {
100
94
return segment [ 0 ] . spread
@@ -181,7 +175,7 @@ export function createRouteManifest(
181
175
const validPageExtensions : Set < string > = new Set ( [ '.astro' , '.md' ] ) ;
182
176
const validEndpointExtensions : Set < string > = new Set ( [ '.js' , '.ts' ] ) ;
183
177
184
- function walk ( dir : string , parentSegments : Part [ ] [ ] , parentParams : string [ ] ) {
178
+ function walk ( dir : string , parentSegments : RoutePart [ ] [ ] , parentParams : string [ ] ) {
185
179
let items : Item [ ] = [ ] ;
186
180
fs . readdirSync ( dir ) . forEach ( ( basename ) => {
187
181
const resolved = path . join ( dir , basename ) ;
@@ -285,6 +279,7 @@ export function createRouteManifest(
285
279
routes . push ( {
286
280
type : item . isPage ? 'page' : 'endpoint' ,
287
281
pattern,
282
+ segments,
288
283
params,
289
284
component,
290
285
generate,
0 commit comments