analogjs/analog

RFC: Include custom url matcher in filesystem routing

DevWedeloper opened this issue · 0 comments

Which scope/s are relevant/related to the feature request?

router

Information

This RFC proposes adding support for Custom URL Matchers within the existing filesystem-based routing of Analog. This feature would allow developers to define custom logic for URL pattern matching directly within .page.ts files, enabling more flexible and complex routing patterns.

Proposed Implementation:

  1. Naming Pattern for Custom Matchers:
  • Introduce a naming convention or symbol (e.g., $) in .page.ts filenames to signify that the file contains a custom URL matcher.
  • For example, a file named [$example].page.ts would indicate that this route uses a custom matcher instead of relying on standard static or dynamic routing.
  1. Matcher Defined Inside .page.ts:
  • Developers would define a custom matcher function, similar to Angular’s UrlMatcher. This function would return a UrlMatchResult if the URL matches the defined logic.

    Example:

    export const urlMatcher = (segments: UrlSegment[], group: UrlSegmentGroup, route: Route): UrlMatchResult | null => {
       ...
    };
    
    

Describe any alternatives/workarounds you're currently using

I'm using the provideRouter along with provideFileRouter

I would be willing to submit a PR to fix this issue

  • Yes
  • No