@@ -22,6 +22,7 @@ import {
2222 type RoutesListItem ,
2323 type ScannedController ,
2424 type RoutesScannerRules ,
25+ type RoutesScannerFilterFn ,
2526} from '../../types/code_scanners.ts'
2627
2728/**
@@ -41,6 +42,8 @@ import {
4142 * const scannedRoutes = scanner.getScannedRoutes()
4243 */
4344export class RoutesScanner {
45+ #filter: RoutesScannerFilterFn = ( ) => false
46+
4447 /**
4548 * The root of the application from where we will resolve
4649 * paths.
@@ -103,7 +106,6 @@ export class RoutesScanner {
103106 * The rules to apply when scanning routes
104107 */
105108 rules : RoutesScannerRules = {
106- skip : [ ] ,
107109 request : { } ,
108110 response : { } ,
109111 }
@@ -119,15 +121,9 @@ export class RoutesScanner {
119121 this . pathsResolver = new PathsResolver ( appRoot )
120122
121123 rulesCollection . forEach ( ( rules ) => {
122- this . rules . skip = this . rules . skip . concat ( rules . skip )
123124 Object . assign ( this . rules . request , rules . request )
124125 Object . assign ( this . rules . response , rules . response )
125126 } )
126-
127- /**
128- * Removing duplicates
129- */
130- this . rules . skip = Array . from ( new Set ( [ ...this . rules . skip ] ) )
131127 }
132128
133129 /**
@@ -303,7 +299,7 @@ export class RoutesScanner {
303299 * name for the route. There could be chances where one controller+method
304300 * combination is bound to multiple routes.
305301 */
306- const routeName =
302+ route . name =
307303 route . name ??
308304 new StringBuilder ( controller . name )
309305 . removeSuffix ( 'Controller' )
@@ -315,7 +311,7 @@ export class RoutesScanner {
315311 * Skip route when its name is within the array of
316312 * skip routes
317313 */
318- if ( this . rules . skip . includes ( routeName ) ) {
314+ if ( this . #filter ( route ) ) {
319315 return
320316 }
321317
@@ -324,13 +320,13 @@ export class RoutesScanner {
324320 * and request if these values are not provided via rules.
325321 */
326322 const scannedRoute : ScannedRoute = {
327- name : routeName ,
323+ name : route . name ,
328324 domain : route . domain ,
329325 methods : route . methods ,
330326 pattern : route . pattern ,
331327 tokens : route . tokens ,
332- request : this . rules . request [ routeName ] ,
333- response : this . rules . response [ routeName ] ,
328+ request : this . rules . request [ route . name ] ,
329+ response : this . rules . response [ route . name ] ,
334330 controller,
335331 }
336332
@@ -365,7 +361,7 @@ export class RoutesScanner {
365361 * Skip route when it has a name and also part of
366362 * skip array
367363 */
368- if ( route . name && this . rules . skip . includes ( route . name ) ) {
364+ if ( route . name && this . #filter ( route ) ) {
369365 debug ( 'route skipped route: %O, rules: %O' , route , this . rules )
370366 return
371367 }
0 commit comments