route-helpers-generator
v1.0.5
Published
Create methods to easily generate paths and url
Downloads
121
Readme
Route helpers generator
Create methods to easily generate paths and url
Dependencies
- path-to-regexp - ^2.1.0
- qs - ^6.5.1
- cli-table - ^0.3.1
- randexp - ^0.5.3
- url
Install
npm install --save route-helpers-generator
or
yarn add route-helpers-generator
Note: it is assumed that this will be used in a modern environment, for legacy environments add babel-polyfill in your app.
Usage
Declare some routes:
import RoutesHelper, {generatePathMethod, generateUrlMethod, generateMatch} from 'route-helpers-generator'
const userMatch = generateMatch('/users/:id');
userMatch('/users/1') // => {id: 1}
userMatch('/users') // => null
const userPath = generatePathMethod('/users/:id');
userPath({id: 1}) // => '/users/1'
userPath({id: 1, format: 'json'}) // => '/users/1.json'
userPath({id: 1, hash: 'test'}) // => '/users/1#test'
userPath({id: 1, name: 'john'}) // => '/users/1?name=john'
userPath({id: 1, user: {name: 'john'}}) // => '/users/1?user%5Bname%5D=john'
userPath({id: 1, user: [1, 2]}) // => '/users/1?user%5B%5D=1&user%5B%5D=2'
const userUrl = generateUrlMethod('http://test.com', '/users/:id');
userUrl({id: 1}) // => 'http://test.com/users/1'
const routesHelper = new RoutesHelper({user: '/users/:id', users: '/users'}, {host: 'http://test.com'})
routesHelper.userPath({id: 1}) // => '/users/1'
routesHelper.userUrl({id: 1}) // => 'http://test.com/users/1'
routesHelper.userRegexp({}) // => '/users/:id'
routesHelper.userRegexp({noslash: true}) // => 'users/:id'
routesHelper.userRegexp({noslash: true}) // => 'users/:id'
routesHelper.setHost('https://test.com')
routesHelper.userUrl({id: 1}) // => 'https://test.com/users/1'
routesHelper.match('/users/1') // => {name: 'user', params: {id: '1'}}
routesHelper.match('/users') // => {name: 'users', params: {}}
routesHelper.match('/') // => null
Help Script
Add to package.json to show generated methods
You will need to add babel and babel-cli and use babel-node in case you use presets.
./routesHelper
import RoutesHelper from 'route-helpers-generator'
const routesHelper = new RoutesHelper({user: '/users/:id', users: '/users'}, {host: 'http://test.com'})
export default routesHelper;
{
"scripts": {
"routes": "babel-node -e \"require('./routesHelper').default.help()\""
}
}
Release
npm publish