let intervalID: NodeJS.Timeout;
const cursorFile = fs.readFileSync("cursor.txt", "utf8");
const relay = cursorFile ? RELAY.concat("&cursor=", cursorFile) : RELAY;
if (cursorFile) console.log(`Initiate firehose at cursor ${cursorFile}`);
-
const ws = new WebSocket(relay);
ws.on("error", (err) => console.error(err));
intervalID = setInterval(() => {
console.log(`${new Date().toISOString()}: ${cursor}`);
-
fs.writeFile("cursor.txt", cursor.toString(), (err) => console.log(err));
-
clearInterval(intervalID);
ws.on("message", (data) => {
const event: EventStream = JSON.parse(data.toString());
-
event.commit?.record?.subject?.uri?.includes(DID + "/app.bsky.feed.post")
label(event.did, event.commit.record.subject.uri.split("/").pop()!);