* Queues another iterable or lazy set for later merging so large bulk adds * can stay cheap until the set is read. * @param {Iterable<T> | LazySet<T>} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set * @returns {LazySet<T>} itself
(iterable)
| 129 | * @returns {LazySet<T>} itself |
| 130 | */ |
| 131 | addAll(iterable) { |
| 132 | if (this._deopt) { |
| 133 | const _set = this._set; |
| 134 | for (const item of iterable) { |
| 135 | _set.add(item); |
| 136 | } |
| 137 | } else { |
| 138 | if (iterable instanceof LazySet) { |
| 139 | if (iterable._isEmpty()) return this; |
| 140 | this._toDeepMerge.push(iterable); |
| 141 | this._needMerge = true; |
| 142 | if (this._toDeepMerge.length > 100000) { |
| 143 | this._flatten(); |
| 144 | } |
| 145 | } else { |
| 146 | this._toMerge.add(iterable); |
| 147 | this._needMerge = true; |
| 148 | } |
| 149 | if (this._toMerge.size > 100000) this._merge(); |
| 150 | } |
| 151 | return this; |
| 152 | } |
| 153 | |
| 154 | /** |
| 155 | * Removes all items and clears every deferred merge queue. |
no test coverage detected