github remix-run/remix route-pattern@0.12.0
route-pattern v0.12.0

12 hours ago
  • BREAKING CHANGE: removed options arg from createHrefBuilder

  • BREAKING CHANGE: removed support for enum patterns

  • Add pattern.href(...args) method for generating URLs from patterns

    import { RoutePattern } from '@remix-run/route-pattern'
    
    let pattern = new RoutePattern('users/:id')
    pattern.href({ id: '123' }) // "/users/123"
  • Add createRoutes function for working with more than one pattern at a time. This generates a RouteMap object that allows human-friendly naming of patterns.

    import { createRoutes } from '@remix-run/route-pattern'
    
    let routes = createRoutes({
      home: '/',
      blog: {
        index: '/blog',
        post: '/blog/:slug',
      },
    })
    
    routes.home.match('https://remix.run/')
    // { params: {} }
    routes.blog.post.match('https://remix.run/blog/my-post')
    // { params: { slug: 'my-post' } }
    
    routes.blog.post.href({ slug: 'my-post' }) // "/blog/my-post"

    A RouteMap also works as a generic to createHrefBuilder() to restrict the set of patterns that may be used as the first argument.

    import { createHrefBuilder } from '@remix-run/route-pattern'
    
    let href = createHrefBuilder<typeof routes>()
    href('/blog/:slug', { slug: 'my-post' }) // "/blog/my-post"
  • Add pattern.join(input, options), which allows a pattern to be built relative
    to another pattern

    import { RoutePattern } from '@remix-run/route-pattern'
    
    let base = new RoutePattern('https://remix.run/api')
    let pattern = base.join('users/:id')
    pattern.source // "https://remix.run/api/users/:id"
  • Export RouteMatch type as public API

  • Allow null and undefined as values for optional params

Don't miss a new remix release

NewReleases is sending notifications on new releases.