UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

80 lines 1.68 kB
/** * @category Constructor * @since 0.13.0 */ export const param = (param) => `:${param}`; /** * @category Constructor * @since 0.13.0 */ export const optional = (param) => `${param}?`; /** * @category Constructor * @since 0.13.0 */ export const prefix = (prefix, param) => `{${prefix}${param}}`; /** * Construct query params * @category Constructor * @since 0.13.0 */ export const queryParam = (key, value) => `${key}=${value}`; /** * @category Constructor * @since 0.13.0 */ export const zeroOrMore = (param) => `:${param}*`; /** * one or more path parts will be matched to this param * @category Constructor * @since 0.13.0 */ export const oneOrMore = (param) => `:${param}+`; /** * @category Constructor * @since 0.13.0 */ export const queryParams = (...params) => `\\?${params.join('&')}`; /** * @category Constructor * @since 0.13.0 */ export const unnamed = `(.*)`; /** * @category Combinator * @since 0.13.0 */ export const pathJoin = (...parts) => { if (parts.length === 0) { return ``; } const [head, ...tail] = parts; return `${formatPart(head)}${pathJoin(...tail)}`; }; /** * Formats a piece of a path * @category Combinator * @since 0.13.0 */ export const formatPart = (part) => { part = removeLeadingSlash(part); if (part.startsWith('{')) { return part; } if (part.startsWith('\\?')) { return part; } return part === '' ? '' : `/${part}`; }; /** * @category Combinator * @since 0.13.0 */ export const removeLeadingSlash = (a) => { let s = a.slice(); while (s.startsWith('/')) { s = s.slice(1); } return s; }; //# sourceMappingURL=Path.js.map