{"version":3,"file":"bundle.cjs","sources":["es5/index.js"],"sourcesContent":["// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nvar defaultMakeData = function () { return Object.create(null); };\n// Useful for processing arguments objects as well as arrays.\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar Trie = /** @class */ (function () {\n    function Trie(weakness, makeData) {\n        if (weakness === void 0) { weakness = true; }\n        if (makeData === void 0) { makeData = defaultMakeData; }\n        this.weakness = weakness;\n        this.makeData = makeData;\n    }\n    Trie.prototype.lookup = function () {\n        return this.lookupArray(arguments);\n    };\n    Trie.prototype.lookupArray = function (array) {\n        var node = this;\n        forEach.call(array, function (key) { return node = node.getChildTrie(key); });\n        return hasOwnProperty.call(node, \"data\")\n            ? node.data\n            : node.data = this.makeData(slice.call(array));\n    };\n    Trie.prototype.peek = function () {\n        return this.peekArray(arguments);\n    };\n    Trie.prototype.peekArray = function (array) {\n        var node = this;\n        for (var i = 0, len = array.length; node && i < len; ++i) {\n            var map = node.mapFor(array[i], false);\n            node = map && map.get(array[i]);\n        }\n        return node && node.data;\n    };\n    Trie.prototype.remove = function () {\n        return this.removeArray(arguments);\n    };\n    Trie.prototype.removeArray = function (array) {\n        var data;\n        if (array.length) {\n            var head = array[0];\n            var map = this.mapFor(head, false);\n            var child = map && map.get(head);\n            if (child) {\n                data = child.removeArray(slice.call(array, 1));\n                if (!child.data && !child.weak && !(child.strong && child.strong.size)) {\n                    map.delete(head);\n                }\n            }\n        }\n        else {\n            data = this.data;\n            delete this.data;\n        }\n        return data;\n    };\n    Trie.prototype.getChildTrie = function (key) {\n        var map = this.mapFor(key, true);\n        var child = map.get(key);\n        if (!child)\n            map.set(key, child = new Trie(this.weakness, this.makeData));\n        return child;\n    };\n    Trie.prototype.mapFor = function (key, create) {\n        return this.weakness && isObjRef(key)\n            ? this.weak || (create ? this.weak = new WeakMap : void 0)\n            : this.strong || (create ? this.strong = new Map : void 0);\n    };\n    return Trie;\n}());\nexport { Trie };\nfunction isObjRef(value) {\n    switch (typeof value) {\n        case \"object\":\n            if (value === null)\n                break;\n        // Fall through to return true...\n        case \"function\":\n            return true;\n    }\n    return false;\n}\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}