1 | import * as characters from "./characters";
|
2 | export const lookUpTldsInTrie = (labels, trie) => {
|
3 | const labelsToCheck = labels.slice();
|
4 | const tlds = [];
|
5 | let node = trie;
|
6 | while (labelsToCheck.length !== 0) {
|
7 | const label = labelsToCheck.pop();
|
8 | const labelLowerCase = label.toLowerCase();
|
9 | if (node.children.has(characters.WILDCARD)) {
|
10 | if (node.children.has(characters.EXCEPTION + labelLowerCase)) {
|
11 | break;
|
12 | }
|
13 | node = node.children.get(characters.WILDCARD);
|
14 | }
|
15 | else {
|
16 | if (node.children.has(labelLowerCase) === false) {
|
17 | break;
|
18 | }
|
19 | node = node.children.get(labelLowerCase);
|
20 | }
|
21 | tlds.unshift(label);
|
22 | }
|
23 | return tlds;
|
24 | };
|
25 |
|
\ | No newline at end of file |