// Source code for the Substrate Telemetry Server. // Copyright (C) 2021 Parity Technologies (UK) Ltd. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . import { Persistent } from './'; export class PersistentSet { private readonly inner: Persistent; private value: Set; constructor(key: string, onChange: (value: Set) => void) { this.inner = new Persistent(key, [], (raw: Readonly) => onChange((this.value = new Set(raw as Item[]))) ); this.value = new Set(this.inner.get() as Item[]); } public get(): Set { return this.value; } public add(item: Item) { this.value.add(item); this.inner.set(Array.from(this.value)); } public delete(item: Item) { this.value.delete(item); this.inner.set(Array.from(this.value)); } public clear() { this.inner.set([]); } public has(item: Item): boolean { return this.value.has(item); } }