function* compress_generator(text) {
const trie = new TrieNode();
let new_text = [];
const encoding_dict = new Map();
const first_position = new Map();
let i = 0;
while (i < text.length) {
let text_slice = text.slice(i, text.length);
console.log(`i=${i}, size=${trie.size} and ${text_slice}`);
const prefix = trie.search(text_slice);
const prefix_slice = text.slice(i, i + prefix.i + 1);
if (prefix.i < text_slice.length) {
trie.set(prefix_slice, trie.size);
first_position.set(trie.size, i);
}
encoding_dict.set(trie.get(prefix_slice), prefix_slice);
new_text.push(trie.get(prefix_slice));
console.log(prefix_slice, new_text, encoding_dict);
i += prefix.i + 1;
yield { new_text, trie, encoding_dict, i, first_position };
}
}