@segment/analytics-next
Version:
Analytics Next (aka Analytics 2.0) is the latest version of Segment’s JavaScript SDK - enabling you to send your data to any tool without having to learn, test, or use a new API every time.
59 lines • 1.45 kB
JavaScript
import cookie from 'js-cookie';
/**
* Levels returns all levels of the given url.
*
* @param {string} url
* @return {Array}
* @api public
*/
function levels(url) {
var host = url.hostname;
var parts = host.split('.');
var last = parts[parts.length - 1];
var levels = [];
// Ip address.
if (parts.length === 4 && parseInt(last, 10) > 0) {
return levels;
}
// Localhost.
if (parts.length <= 1) {
return levels;
}
// Create levels.
for (var i = parts.length - 2; i >= 0; --i) {
levels.push(parts.slice(i).join('.'));
}
return levels;
}
function parseUrl(url) {
try {
return new URL(url);
}
catch (_a) {
return;
}
}
export function tld(url) {
var parsedUrl = parseUrl(url);
if (!parsedUrl)
return;
var lvls = levels(parsedUrl);
// Lookup the real top level one.
for (var i = 0; i < lvls.length; ++i) {
var cname = '__tld__';
var domain = lvls[i];
var opts = { domain: '.' + domain };
try {
// cookie access throw an error if the library is ran inside a sandboxed environment (e.g. sandboxed iframe)
cookie.set(cname, '1', opts);
if (cookie.get(cname)) {
cookie.remove(cname, opts);
return domain;
}
}
catch (_) {
return;
}
}
}
//# sourceMappingURL=tld.js.map