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/relate/ |
"use strict";
function findRelation_upToPath(urlObj, siteUrlObj, options)
{
// Path- or root-relative URL
var pathOnly = urlObj.extra.hrefInfo.minimumPathOnly;
// Matching scheme, scheme-relative or path-only
var minimumScheme = (urlObj.scheme===siteUrlObj.scheme || !urlObj.scheme);
// Matching auth, ignoring auth or path-only
var minimumAuth = minimumScheme && (urlObj.auth===siteUrlObj.auth || options.removeAuth || pathOnly);
// Matching host or path-only
var www = options.ignore_www ? "stripped" : "full";
var minimumHost = minimumAuth && (urlObj.host[www]===siteUrlObj.host[www] || pathOnly);
// Matching port or path-only
var minimumPort = minimumHost && (urlObj.port===siteUrlObj.port || pathOnly);
urlObj.extra.relation.minimumScheme = minimumScheme;
urlObj.extra.relation.minimumAuth = minimumAuth;
urlObj.extra.relation.minimumHost = minimumHost;
urlObj.extra.relation.minimumPort = minimumPort;
urlObj.extra.relation.maximumScheme = !minimumScheme || minimumScheme && !minimumAuth;
urlObj.extra.relation.maximumAuth = !minimumScheme || minimumScheme && !minimumHost;
urlObj.extra.relation.maximumHost = !minimumScheme || minimumScheme && !minimumPort;
}
function findRelation_pathOn(urlObj, siteUrlObj, options)
{
var queryOnly = urlObj.extra.hrefInfo.minimumQueryOnly;
var hashOnly = urlObj.extra.hrefInfo.minimumHashOnly;
var empty = urlObj.extra.hrefInfo.empty; // not required, but self-documenting
// From upToPath()
var minimumPort = urlObj.extra.relation.minimumPort;
var minimumScheme = urlObj.extra.relation.minimumScheme;
// Matching port and path
var minimumPath = minimumPort && urlObj.path.absolute.string===siteUrlObj.path.absolute.string;
// Matching resource or query/hash-only or empty
var matchingResource = (urlObj.resource===siteUrlObj.resource || !urlObj.resource && siteUrlObj.extra.resourceIsIndex) || (options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex && !siteUrlObj.resource);
var minimumResource = minimumPath && (matchingResource || queryOnly || hashOnly || empty);
// Matching query or hash-only/empty
var query = options.removeEmptyQueries ? "stripped" : "full";
var urlQuery = urlObj.query.string[query];
var siteUrlQuery = siteUrlObj.query.string[query];
var minimumQuery = (minimumResource && !!urlQuery && urlQuery===siteUrlQuery) || ((hashOnly || empty) && !urlObj.extra.hrefInfo.separatorOnlyQuery);
var minimumHash = minimumQuery && urlObj.hash===siteUrlObj.hash;
urlObj.extra.relation.minimumPath = minimumPath;
urlObj.extra.relation.minimumResource = minimumResource;
urlObj.extra.relation.minimumQuery = minimumQuery;
urlObj.extra.relation.minimumHash = minimumHash;
urlObj.extra.relation.maximumPort = !minimumScheme || minimumScheme && !minimumPath;
urlObj.extra.relation.maximumPath = !minimumScheme || minimumScheme && !minimumResource;
urlObj.extra.relation.maximumResource = !minimumScheme || minimumScheme && !minimumQuery;
urlObj.extra.relation.maximumQuery = !minimumScheme || minimumScheme && !minimumHash;
urlObj.extra.relation.maximumHash = !minimumScheme || minimumScheme && !minimumHash; // there's nothing after hash, so it's the same as maximumQuery
// Matching path and/or resource with existing but non-matching site query
urlObj.extra.relation.overridesQuery = minimumPath && urlObj.extra.relation.maximumResource && !minimumQuery && !!siteUrlQuery;
}
module.exports =
{
pathOn: findRelation_pathOn,
upToPath: findRelation_upToPath
};