Urara-Blog/node_modules/.pnpm-store/v3/files/07/94cec1db12db3d495dbee09ee1ec5a1ba8d3eaa8c881a477d5234ca5ed6a30ece1f0d6d138e3245ec0a930e52cc33f2a055558e1764ee62bdd3a7e3f8545e8
2022-08-14 01:14:53 +08:00

40 lines
730 B
Text

import * as qs from '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 };
}