@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
54 lines • 1.19 kB
JavaScript
import { LinkedList } from "./array.js";
/**
* An implementation of Set that support first() and last() method.
*/
export class OrderedSet {
set;
array;
constructor() {
this.set = new Set();
this.array = new LinkedList();
}
add(item) {
if (!this.set.has(item)) {
this.set.add(item);
this.array.push(item);
}
}
delete(item, searchFromHead) {
if (this.set.has(item)) {
this.set.delete(item);
if (searchFromHead) {
this.array.deleteFirst(item);
}
else {
this.array.deleteLast(item);
}
}
}
first() {
if (this.array.length === 0) {
return null;
}
return this.array.first();
}
last() {
if (this.array.length === 0) {
return null;
}
return this.array.last();
}
toArray() {
return this.array.toArray();
}
values() {
return this.array;
}
has(item) {
return this.set.has(item);
}
get size() {
return this.set.size;
}
}
//# sourceMappingURL=set.js.map