github remix-run/remix fetch-router@0.3.0
fetch-router v0.3.0

7 hours ago
  • Add router.map() for registering routes and middleware either one at a time or in bulk

    One at a time:

    let router = createRouter()
    router.map('/', () => new Response('Home'))
    router.map('/blog', () => new Response('Blog'))

    In bulk:

    let routes = createRoutes({
      home: '/',
      blog: '/blog',
    })
    
    let router = createRouter()
    
    router.map(routes, {
      home() {
        return new Response('Home')
      },
      blog() {
        return new Response('Blog')
      },
    })
  • Add createResource and createResources functions for creating resource-based route maps

    import { resource, resources, createRoutes } from '@remix-run/fetch-router'
    
    let routes = createRoutes({
      home: '/',
      books: resources('books'), // Plural resources
      profile: resource('profile'), // Singleton resource
    })
    
    let router = createRouter()
    
    // Plural resources
    router.map(routes.books, {
      // GET /books
      index() {
        return new Response('Books Index')
      },
      // POST /books
      create() {
        return new Response('Book Created', { status: 201 })
      },
      // GET /books/new
      new() {
        return new Response('New Book')
      },
      // GET /books/:id
      show({ params }) {
        return new Response(`Book ${params.id}`)
      },
      // GET /books/:id/edit
      edit({ params }) {
        return new Response(`Edit Book ${params.id}`)
      },
      // PUT /books/:id
      update({ params }) {
        return new Response(`Updated Book ${params.id}`)
      },
      // DELETE /books/:id
      destroy({ params }) {
        return new Response(`Destroyed Book ${params.id}`)
      },
    })
    
    // Singleton resource
    router.map(routes.profile, {
      // GET /profile/:id
      show({ params }) {
        return new Response(`Profile ${params.id}`)
      },
      // GET /profile/new
      new() {
        return new Response('New Profile')
      },
      // POST /profile
      create() {
        return new Response('Profile Created', { status: 201 })
      },
      // GET /profile/:id/edit
      edit({ params }) {
        return new Response(`Edit Profile ${params.id}`)
      },
      // PUT /profile/:id
      update({ params }) {
        return new Response(`Updated Profile ${params.id}`)
      },
      // DELETE /profile/:id
      destroy({ params }) {
        return new Response(`Destroyed Profile ${params.id}`)
      },
    })

Don't miss a new remix release

NewReleases is sending notifications on new releases.