Urara-Blog/node_modules/.pnpm-store/v3/files/8b/8e5a946418527750f3bef48f03050f8a587f54e2fc8a61d52de7517685b46900adbbdef9eb192819e8e85ebaac8dd6422f9ba70ca79c04abfb8eb35e871f2e
2022-08-14 01:14:53 +08:00

42 lines
No EOL
746 B
Text

const qs = require('querystring');
/**
* @typedef ParsedURL
* @type {import('.').ParsedURL}
*/
/**
* @typedef Request
* @property {string} url
* @property {ParsedURL} _parsedUrl
*/
/**
* @param {Request} req
* @returns {ParsedURL|void}
*/
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 };
}
exports.parse = parse;