class TrieNode { constructor(parents = []) { this.parents = parents; this.children = new Map(); } addSub(key, ...subs) { const firstChar = key.charAt(0); if (!this.children.has(firstChar)) { this.children.set(firstChar, new TrieNode([...this.parents, firstChar])); } let cur = this.children.get(firstChar); for (let i = 1; i < key.length; i += 1) { const c = key.charAt(i); if (!cur.hasChild(c)) { cur.addChild(c); } cur = cur.getChild(c); } cur.subs = (cur.subs || []).concat(subs); return this; } getChild(child) { return this.children.get(child); } isTerminal() { return !!this.subs; } addChild(child) { if (!this.hasChild(child)) { this.children.set(child, new TrieNode([...this.parents, child])); } } hasChild(child) { return this.children.has(child); } } export { TrieNode as default }; //# sourceMappingURL=TrieNode.mjs.map