Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/ecommerce/node_modules/relateurl/lib/ |
"use strict";
var constants = require("./constants");
var formatUrl = require("./format");
var getOptions = require("./options");
var objUtils = require("./util/object");
var parseUrl = require("./parse");
var relateUrl = require("./relate");
function RelateUrl(from, options)
{
this.options = getOptions(options,
{
defaultPorts: {ftp:21, http:80, https:443},
directoryIndexes: ["index.html"],
ignore_www: false,
output: RelateUrl.SHORTEST,
rejectedSchemes: ["data","javascript","mailto"],
removeAuth: false,
removeDirectoryIndexes: true,
removeEmptyQueries: false,
removeRootTrailingSlash: true,
schemeRelative: true,
site: undefined,
slashesDenoteHost: true
});
this.from = parseUrl.from(from, this.options, null);
}
/*
Usage: instance=new RelateUrl(); instance.relate();
*/
RelateUrl.prototype.relate = function(from, to, options)
{
// relate(to,options)
if ( objUtils.isPlainObject(to) )
{
options = to;
to = from;
from = null;
}
// relate(to)
else if (!to)
{
to = from;
from = null;
}
options = getOptions(options, this.options);
from = from || options.site;
from = parseUrl.from(from, options, this.from);
if (!from || !from.href)
{
throw new Error("from value not defined.");
}
else if (from.extra.hrefInfo.minimumPathOnly)
{
throw new Error("from value supplied is not absolute: "+from.href);
}
to = parseUrl.to(to, options);
if (to.valid===false) return to.href;
to = relateUrl(from, to, options);
to = formatUrl(to, options);
return to;
}
/*
Usage: RelateUrl.relate();
*/
RelateUrl.relate = function(from, to, options)
{
return new RelateUrl().relate(from, to, options);
}
// Make constants accessible from API
objUtils.shallowMerge(RelateUrl, constants);
module.exports = RelateUrl;