UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

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