Skip to content
This repository has been archived by the owner on May 26, 2021. It is now read-only.

🔀 Utility class to register routes and dynamically generate their URL or path from anywhere in the express app

License

Notifications You must be signed in to change notification settings

XPBytes/express-routes-archive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Express Routes Archive

npm NPM Package Version Maintainability

Utility class to register routes and dynamically generate their URL or path from anywhere in the express app.

Installation

yarn add @xpbytes/express-routes-archive

It has the following peer dependencies:

yarn add @types/express @types/express-serve-static-core @types/node -D

Usage

import { RoutesArchive } from '@xpbytes/express-routes-archive'

const root = new RoutesArchive()
root.register('foo', '/test')
root.register(
  'bar',
  (mountedAt: string, arg: any) => `${mountedAt}/test?bar=${arg}`
)

root.path('test')
// => /test

root.path('bar', 'my-arg')
// => /test?bar=my-arg

When you have a sub-router / controller, create a new RoutesArchive, passing in the original and the mount path:

const up = new RoutesArchive('/level', root)
up.register('level', '/two')
up.register('penthouse', (mountedAt: string) => `${mountedAt}/over-9000`)

up.path('level')
// => /level/two

root.path('level')
// => /level/two

Use RoutesArchive#url(route, req) to generate full urls instead of path only:

root.url('penthouse', req)
// => https://test.xpbytes.com/level/over-9000

Configuration

  • SSL_ENABLED env to thruthy to make generated urls https.
  • SERVER_URL env to mount the path onto that URL instead of the request hostname.

About

🔀 Utility class to register routes and dynamically generate their URL or path from anywhere in the express app

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •