+3
-2
package-lock.json
+3
-2
package-lock.json
···
8
"name": "pronouns-bsky",
9
"version": "1.0.0",
10
"dependencies": {
11
"@skyware/jetstream": "^0.1.3",
12
"@skyware/labeler": "^0.1.7",
13
"dotenv": "^16.4.5"
···
57
"version": "2.0.1",
58
"resolved": "https://registry.npmjs.org/@atcute/client/-/client-2.0.1.tgz",
59
"integrity": "sha512-M4q0QchcjcPTypgXTKc4MO06eJMno5op14qHAMWhKbxROOnxnhLfjG9rbcNr7nOycQb5THmUIEAwvvabrv1AjA==",
60
-
"license": "MIT",
61
-
"peer": true
62
},
63
"node_modules/@atcute/varint": {
64
"version": "1.0.0",
···
8
"name": "pronouns-bsky",
9
"version": "1.0.0",
10
"dependencies": {
11
+
"@atcute/bluesky": "^1.0.6",
12
+
"@atcute/client": "^2.0.1",
13
"@skyware/jetstream": "^0.1.3",
14
"@skyware/labeler": "^0.1.7",
15
"dotenv": "^16.4.5"
···
59
"version": "2.0.1",
60
"resolved": "https://registry.npmjs.org/@atcute/client/-/client-2.0.1.tgz",
61
"integrity": "sha512-M4q0QchcjcPTypgXTKc4MO06eJMno5op14qHAMWhKbxROOnxnhLfjG9rbcNr7nOycQb5THmUIEAwvvabrv1AjA==",
62
+
"license": "MIT"
63
},
64
"node_modules/@atcute/varint": {
65
"version": "1.0.0",
+2
package.json
+2
package.json
+5
-2
src/label.ts
+5
-2
src/label.ts
···
1
import {
2
DID,
3
PORT,
···
6
SIGNING_KEY,
7
DELETE,
8
} from "./constants.js";
9
-
import { Label } from "./types.js";
10
import { LabelerServer } from "@skyware/labeler";
11
12
const server = new LabelerServer({ did: DID, signingKey: SIGNING_KEY });
···
18
19
export const label = async (did: string, rkey: string) => {
20
const query = server.db
21
-
.prepare<unknown[], Label>(`SELECT * FROM labels WHERE uri = ?`)
22
.all(did);
23
24
const labels = query.reduce((set, label) => {
···
1
+
import { ComAtprotoLabelDefs } from "@atcute/client/lexicons";
2
import {
3
DID,
4
PORT,
···
7
SIGNING_KEY,
8
DELETE,
9
} from "./constants.js";
10
import { LabelerServer } from "@skyware/labeler";
11
12
const server = new LabelerServer({ did: DID, signingKey: SIGNING_KEY });
···
18
19
export const label = async (did: string, rkey: string) => {
20
const query = server.db
21
+
.prepare<
22
+
unknown[],
23
+
ComAtprotoLabelDefs.Label
24
+
>(`SELECT * FROM labels WHERE uri = ?`)
25
.all(did);
26
27
const labels = query.reduce((set, label) => {
+2
-2
src/main.ts
+2
-2
src/main.ts
···
2
import { DID } from "./constants.js";
3
import fs from "node:fs";
4
import { Jetstream } from "@skyware/jetstream";
5
-
import { LikeRecord } from "./types.js";
6
7
let cursor = 0;
8
let intervalID: NodeJS.Timeout;
···
29
30
jetstream.onCreate("app.bsky.feed.like", (event) => {
31
cursor = event.time_us;
32
-
const record = event.commit.record as LikeRecord;
33
if (record.subject?.uri?.includes(`${DID}/app.bsky.feed.post`))
34
label(event.did, record.subject.uri.split("/").pop()!);
35
});
···
2
import { DID } from "./constants.js";
3
import fs from "node:fs";
4
import { Jetstream } from "@skyware/jetstream";
5
+
import { AppBskyFeedLike } from "@atcute/client/lexicons";
6
7
let cursor = 0;
8
let intervalID: NodeJS.Timeout;
···
29
30
jetstream.onCreate("app.bsky.feed.like", (event) => {
31
cursor = event.time_us;
32
+
const record = event.commit.record as AppBskyFeedLike.Record;
33
if (record.subject?.uri?.includes(`${DID}/app.bsky.feed.post`))
34
label(event.did, record.subject.uri.split("/").pop()!);
35
});
-21
src/types.ts
-21
src/types.ts
···
1
-
export interface LikeRecord {
2
-
$type: string;
3
-
createdAt: string;
4
-
subject: {
5
-
cid: string;
6
-
uri: string;
7
-
};
8
-
}
9
-
10
-
export interface Label {
11
-
ver?: number;
12
-
src: string;
13
-
uri: string;
14
-
cid?: string;
15
-
val: string;
16
-
neg?: boolean;
17
-
cts: string;
18
-
exp?: string;
19
-
sig?: Uint8Array;
20
-
[k: string]: unknown;
21
-
}
···
+2
-2
tsconfig.json
+2
-2
tsconfig.json