2.2.0 • Published 6 years ago
pathmaker v2.2.0
PathMaker
A factory for making URL/FileSystem paths with templates and URL query strings.
Usage
var basePath = PathMaker('/my/path/or/url/');
var subPath = basePath.sub('sub/path');
basePath(); // returns: '/my/path/or/url/'
subPath(); // returns: '/my/path/or/url/sub/path'
See Examples below for extended usage including templates and URL query strings.
Options
Name | Default Value | Description |
---|---|---|
delimiter | '/' | The path delimiter. |
tokenPrefix | ':' | The path token prefix. |
path | '' | The path represented by the PathMaker . |
Notes
- Trailing delimiters are not automatically added or removed at any time.
- Only query object values are encoded with
encodeURIComponent
. No other part of the path is automatically encoded.
Examples
import PathMaker from 'pathmaker';
const site = PathMaker('http://www.site.test/');
const api = PathMaker('http://api.site.test/');
const base = PathMaker('http://www.site.test/app-name/');
/** URL makers for any URLs used by this application. */
const AppURL = {
/** Base application URL maker. */
base,
/** Site URL maker, to make URLs outside of base. */
site,
login: base.sub('/login/'),
product: base.sub('/products/:id/'),
products: base.sub('/products/'),
/** API URL makers. */
api: {
/** Base API URL maker. */
base: api,
account: api.sub('account'),
oauth: api.sub('oauth'),
user: api.sub('users/:id'),
users: api.sub('users'),
}
};
export default AppURL;
import AppURL from './AppURL';
console.log(
AppURL.site()
); // http://www.site.test/
console.log(
AppURL.base()
); // http://www.site.test/app-name/
console.log(
AppURL.product({ id: 999 });
); // http://www.site.test/app-name/products/999/
console.log(
AppURL.login({ query: {redirect: '/dashboard'} })
); // http://www.site.test/app-name/login/?redirect=%2Fdashboard
console.log( // Equivalent to above:
AppURL.base('login/', { query: {redirect: '/dashboard'} })
); // http://www.site.test/app-name/login/?redirect=%2Fdashboard
console.log(
AppURL.api.user({ id: 10 })
); // http://api.site.test/users/10
console.log( // Alternatively, pass an array as a path.
AppURL.api.users([10, 'organizations/search'], { query: {q: 'the query'} })
); // http://api.site.test/users/10/organizations/search?q=the%20query
Roadmap
Needs Tests!
This code is trivial, it works and it's been in use for a while before it was published as an NPM. However, we need tests to protect against regressions! I think jest is already setup here for us.
History
- This project was bootstrapped with Best way to create npm packages with create-react-app.
- Released 1.0 - 1.0.4
- Released 2.0 with one major breaking change: to add path tokens.