30 lines
681 B
JavaScript
30 lines
681 B
JavaScript
|
'use strict';
|
||
|
|
||
|
|
||
|
var extractTldFromHost = require('./from-host.js');
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Returns the public suffix (including exact matches)
|
||
|
*
|
||
|
* @api
|
||
|
* @since 1.5
|
||
|
* @param {string} hostname
|
||
|
* @return {string}
|
||
|
*/
|
||
|
module.exports = function getPublicSuffix(rules, hostname) {
|
||
|
// First check if `hostname` is already a valid top-level Domain.
|
||
|
if (rules.hasTld(hostname)) {
|
||
|
return hostname;
|
||
|
}
|
||
|
|
||
|
var candidate = rules.suffixLookup(hostname);
|
||
|
if (candidate === null) {
|
||
|
// Prevailing rule is '*' so we consider the top-level domain to be the
|
||
|
// public suffix of `hostname` (e.g.: 'example.org' => 'org').
|
||
|
return extractTldFromHost(hostname);
|
||
|
}
|
||
|
|
||
|
return candidate;
|
||
|
};
|