You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import * as qs from 'node:querystring';
/** * @typedef ParsedURL * @type {import('.').ParsedURL} */
/** * @typedef Request * @property {string} url * @property {ParsedURL} _parsedUrl */
/** * @param {Request} req * @returns {ParsedURL|void} */ export function parse(req) { let raw = req.url; if (raw == null) return;
let prev = req._parsedUrl; if (prev && prev.raw === raw) return prev;
let pathname=raw, search='', query;
if (raw.length > 1) { let idx = raw.indexOf('?', 1);
if (idx !== -1) { search = raw.substring(idx); pathname = raw.substring(0, idx); if (search.length > 1) { query = qs.parse(search.substring(1)); } } }
return req._parsedUrl = { pathname, search, query, raw }; }
|