basant307/AI_Governance_Project
048
1import * as qs from 'node:querystring';2 3/**4 * @typedef ParsedURL5 * @type {import('.').ParsedURL}6 */7 8/**9 * @typedef Request10 * @property {string} url11 * @property {ParsedURL} _parsedUrl12 */13 14/**15 * @param {Request} req16 * @returns {ParsedURL|void}17 */18export function parse(req) {19 let raw = req.url;20 if (raw == null) return;21 22 let prev = req._parsedUrl;23 if (prev && prev.raw === raw) return prev;24 25 let pathname=raw, search='', query, hash;26 27 if (raw.length > 1) {28 let idx = raw.indexOf('#', 1);29 30 if (idx !== -1) {31 hash = raw.substring(idx);32 pathname = raw.substring(0, idx);33 }34 35 idx = pathname.indexOf('?', 1);36 37 if (idx !== -1) {38 search = pathname.substring(idx);39 pathname = pathname.substring(0, idx);40 if (search.length > 1) {41 query = qs.parse(search.substring(1));42 }43 }44 }45 46 return req._parsedUrl = { pathname, search, query, hash, raw };47}48 