+3
-3
package-lock.json
+3
-3
package-lock.json
···
369
369
}
370
370
},
371
371
"node_modules/@skyware/jetstream": {
372
-
"version": "0.1.4",
373
-
"resolved": "https://registry.npmjs.org/@skyware/jetstream/-/jetstream-0.1.4.tgz",
374
-
"integrity": "sha512-r3Jk/rq722W43pxq2uDrtCJbqJaWyXokE97neI0WuTf6KM88ZgIT6sGXEX1e6nwhlJ2ONUXHT+YT5DqZUI5I0w==",
372
+
"version": "0.1.5",
373
+
"resolved": "https://registry.npmjs.org/@skyware/jetstream/-/jetstream-0.1.5.tgz",
374
+
"integrity": "sha512-+0Ouhl6m/SKBZa2CENyDnFtEt4zAgRb57gadDx89TbwFMse4BT+tZhtkldyJ7DCO+FPX5By5Z6bIIm8LPL9Dqw==",
375
375
"license": "MPL-2.0",
376
376
"dependencies": {
377
377
"@atcute/bluesky": "^1.0.6",
+6
-6
src/main.ts
+6
-6
src/main.ts
···
4
4
import { Jetstream } from "@skyware/jetstream";
5
5
import { AppBskyFeedLike } from "@atcute/client/lexicons";
6
6
7
-
let cursor = 0;
8
7
let intervalID: NodeJS.Timeout;
9
8
const cursorFile = fs.readFileSync("cursor.txt", "utf8");
10
9
if (cursorFile) console.log(`Initiate firehose at cursor ${cursorFile}`);
···
16
15
17
16
jetstream.on("open", () => {
18
17
intervalID = setInterval(() => {
19
-
console.log(`${new Date().toISOString()}: ${cursor}`);
20
-
fs.writeFile("cursor.txt", cursor.toString(), (err) => {
21
-
if (err) console.log(err);
22
-
});
18
+
if (jetstream.cursor) {
19
+
console.log(`${new Date().toISOString()}: ${jetstream.cursor}`);
20
+
fs.writeFile("cursor.txt", jetstream.cursor.toString(), (err) => {
21
+
if (err) console.log(err);
22
+
});
23
+
}
23
24
}, 60000);
24
25
});
25
26
···
28
29
jetstream.on("close", () => clearInterval(intervalID));
29
30
30
31
jetstream.onCreate("app.bsky.feed.like", (event) => {
31
-
cursor = event.time_us;
32
32
const record = event.commit.record as AppBskyFeedLike.Record;
33
33
if (record.subject?.uri?.includes(`${DID}/app.bsky.feed.post`))
34
34
label(event.did, record.subject.uri.split("/").pop()!);