UNPKG

745 BJavaScriptView Raw
1"use strict";
2
3var WILDCARD = "*";
4var EXCEPTION = "!";
5
6function lookUp(trie, hostname) {
7 var domains = hostname.split(".").reverse();
8 var tlds = [];
9 var currentTrie = trie;
10
11 for (var i = 0; i < domains.length; i++) {
12 var domain = domains[i];
13 var isWildcardRule = currentTrie.has(WILDCARD);
14
15 if (isWildcardRule) {
16 if (currentTrie.has(EXCEPTION + domain) === false) {
17 tlds.push(domain);
18 }
19
20 break;
21 }
22
23 if (currentTrie.has(domain) === false) {
24 break;
25 }
26
27 tlds.push(domain);
28 var value = currentTrie.get(domain);
29
30 if (value === true) {
31 break;
32 }
33
34 currentTrie = value;
35 }
36
37 return tlds.length === 0 ? null : tlds.reverse().join(".");
38}
39
40module.exports = lookUp;
\No newline at end of file