2025-04-02 06:50:39 -04:00

47 lines
1.1 KiB
JavaScript

'use strict';
var hrefInfo = require('./hrefInfo');
var parseHost = require('./host');
var parsePath = require('./path');
var parsePort = require('./port');
var parseQuery = require('./query');
var parseUrlString = require('./urlstring');
var pathUtils = require('../util/path');
function parseFromUrl(url, options, fallback) {
if (url) {
var urlObj = parseUrl(url, options);
// Because the following occurs in the relate stage for "to" URLs,
// such had to be mostly duplicated here
var pathArray = pathUtils.resolveDotSegments(urlObj.path.absolute.array);
urlObj.path.absolute.array = pathArray;
urlObj.path.absolute.string = '/' + pathUtils.join(pathArray);
return urlObj;
} else {
return fallback;
}
}
function parseUrl(url, options) {
var urlObj = parseUrlString(url, options);
if (urlObj.valid === false) return urlObj;
parseHost(urlObj, options);
parsePort(urlObj, options);
parsePath(urlObj, options);
parseQuery(urlObj, options);
hrefInfo(urlObj);
return urlObj;
}
module.exports = {
from: parseFromUrl,
to: parseUrl,
};