decentralised sync engine

feat: prism helper

serenity c5f251d7 8c780135

Changed files
+26
src
lib
utils
+26
src/lib/utils/prism.ts
···
···
+
// Prism is a jetstream/jetstream-compatible fork for receiving filtered events from the firehose
+
import { PRISM_URL } from "@/lib/env";
+
import WebSocket from "ws";
+
+
export const connectToPrism = ({
+
wantedCollections,
+
wantedDids,
+
cursor,
+
}: {
+
wantedCollections?: Array<string>;
+
wantedDids?: Array<string>;
+
cursor: number;
+
}) => {
+
const endpoint = PRISM_URL;
+
if (wantedCollections)
+
wantedCollections.forEach((collection) => {
+
endpoint.searchParams.append("wantedCollections", collection);
+
});
+
if (wantedDids)
+
wantedDids.forEach((did) => {
+
endpoint.searchParams.append("wantedDids", did);
+
});
+
if (cursor) endpoint.searchParams.append("cursor", cursor.toString());
+
+
return new WebSocket(endpoint);
+
};