UNPKG

reblend-routing

Version:

Reblend route pattern matcher

76 lines (75 loc) 1.77 kB
/*! * express * Copyright(c) 2009-2013 TJ Holowaychuk * Copyright(c) 2014-2015 Douglas Christopher Wilson * Copyright(c) 2024 Emmanuel Paul Elom * MIT Licensed */ 'use strict'; import qs from 'qs'; /** * Check if `path` looks absolute. * * @param {String} path * @return {Boolean} * @api private */ export function isAbsolute(path) { if (path[0] === '/') return true; if (path[1] === ':' && (path[2] === '\\' || path[2] === '/')) return true; // Windows device path if (path.substring(0, 2) === '\\\\') return true; // Microsoft Azure absolute path return false; } /** * Compile "query parser" value to function. * * @param {String|Function} val * @return {Function} * @api private */ export function compileQueryParser(val) { let fn; if (typeof val === 'function') { return val; } switch (val) { case 'simple': fn = parseSimpleQueryString; break; case 'extended': fn = parseExtendedQueryString; break; default: throw new TypeError(`unknown value for query parser function: ${val}`); } return fn; } /** * Parse a simple query string with URLSearchParams. * * @param {String} str * @return {Object} * @private */ function parseSimpleQueryString(str) { const params = new URLSearchParams(str); const result = {}; params.forEach((value, key) => (result[key] = value)); return result; } /** * Parse an extended query string with qs. * * @param {String} str * @return {Object} * @private */ function parseExtendedQueryString(str) { return qs.parse(str, { allowPrototypes: true, }); } export const methods = ['get', 'put', 'post', 'update', 'option', 'patch'];