diff --git a/lib/path-set.js b/lib/path-set.js index 9ba52af..eb0cda5 100644 --- a/lib/path-set.js +++ b/lib/path-set.js @@ -31,15 +31,14 @@ class PathSet { add(path) { - var sets = []; + let sets; - if (!this.lengthIndex[path.length]) { - sets = null; + if (!this.lengthIndex[path.length]) this.lengthIndex[path.length] = new Set(); - } - else if (sets) { - sets.push(this.lengthIndex[path.length]) - } + else if (this.lengthIndex[path.length].has(path)) + return path; + else + sets = [this.lengthIndex[path.length]]; for (let i = 0; i < path.length; ++ i) { let fragment = path[i]; @@ -53,7 +52,7 @@ class PathSet { } if (!this.fragmentIndex[i][fragment]) { - sets = null + sets = null; this.fragmentIndex[i][fragment] = new Set(); } else if (sets)