Package Exports
- bath-es5
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (bath-es5) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
bath (ES5, transpiled for the browser)
A simple path template engine. Forked from bouzuya/bath
Twitter hashtag is #bathjs.
This branch is for 2.x users. 1.x users: See 1.x branch.
Installation
$ npm install bath-es5Usage
import assert from 'assert';
import bath from 'bath';
const { names, params, path } = bath('/users/{id}');
assert.deepEqual(names, ['id']);
assert.deepEqual(params('/users/123'), { id: '123' });
assert.deepEqual(path({ id: '123' }), '/users/123');import assert from 'assert';
import { names, params, path } from 'bath';
const template = '/users/{id}';
assert.deepEqual(names(template), ['id']);
assert.deepEqual(params(template)('/users/123'), { id: '123' });
assert.deepEqual(path(template)({ id: '123' }), '/users/123');import assert from 'assert';
import { names } from 'bath/names'; // import `names()` only
import { params } from 'bath/params'; // import `params()` only
import { path } from 'bath/path'; // import `path()` only
const template = '/users/{id}';
assert.deepEqual(names(template), ['id']);
assert.deepEqual(params(template)('/users/123'), { id: '123' });
assert.deepEqual(path(template)({ id: '123' }), '/users/123');Types
// '/users/{userId}/messages/{messageId}'
export type PathTemplate = string;
// 'userId'
export type ParameterName = string;
// { 'userId': /^\w+$/, 'messageId': /^\d+$/ }
export type ParameterPatterns = { [parameterName: string]: RegExp; };
// { 'userId': 'john', 'messageId': '123' }
export type Parameters = { [parameterName: string]: string; };
// '/users/john/messages/123'
export type Path = string;
// assert.deepEqual(
// params('/users/john/messages/123'),
// { 'userId': 'john', 'messageId': '123' }
// );
export type ParametersFn = (path: Path) => Parameters | null;
// assert.deepEqual(
// path({ 'userId': 'john', 'messageId': '123' }),
// '/users/john/messages/123'
// );
export type PathFn = (params: Parameters) => Path | null;
// const { params, path } = bath('/users/{userId}/messages/{messageId}')
export type Bath = (
template: PathTemplate,
patterns?: ParameterPatterns
) => { names: ParameterName[]; path: PathFn; params: ParametersFn; };Related Project
- bouzuya/spa-town ... A simple router based on bath.