pathmaker

2.2.0 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i pathmaker

Weekly Downloads

8

Version

2.2.0

License

MIT

Last publish

Collaborators

  • waynebloss