// import fs from "fs"; // import path from "path"; // // export class DiskPersistedSet { // private set: Set; // private readonly filePath: string; // private dirty = false; // // constructor(filePath: string = "./persister") { // this.filePath = path.resolve(filePath); // // // ✅ Ensure file exists // if (!fs.existsSync(this.filePath)) { // fs.writeFileSync(this.filePath, "", "utf8"); // } // // // ✅ Load existing values from file // const contents = fs.readFileSync(this.filePath, "utf8"); // this.set = new Set( // contents.split("\n").map(x => x.trim()).filter(x => x.length > 0) // ); // // this.registerExitHandlers(); // } // // private persist() { // if (!this.dirty) return; // fs.writeFileSync(this.filePath, Array.from(this.set).join("\n"), "utf8"); // this.dirty = false; // } // // private markDirty() { // this.dirty = true; // } // // add(value: string): void { // if (!this.set.has(value)) { // this.set.add(value); // this.markDirty(); // this.persist(); // } // } // // delete(value: string): void { // if (this.set.delete(value)) { // this.markDirty(); // this.persist(); // } // } // // has(value: string): boolean { // return this.set.has(value); // } // // values(): string[] { // return Array.from(this.set); // } // // clear(): void { // if (this.set.size > 0) { // this.set.clear(); // this.markDirty(); // this.persist(); // } // } // // private registerExitHandlers() { // const flush = () => this.persist(); // // process.on("exit", flush); // process.on("SIGINT", () => { flush(); process.exit(); }); // process.on("SIGTERM", () => { flush(); process.exit(); }); // process.on("uncaughtException", (err) => { // console.error("Uncaught exception. Flushing DiskPersistedSet:", err); // flush(); // process.exit(1); // }); // } // }