@multiplatform.one/typegraphql
Version:
typegraphql for multiplatform.one
36 lines (33 loc) • 918 B
JavaScript
import {
__name
} from "./chunk-SHUYVCID.js";
// src/pubSub.ts
import { Repeater } from "@repeaterjs/repeater";
import PGPubSub from "pg-pubsub";
function createPgPubSub({ ...pgConfig }) {
const pgPubSub = new PGPubSub(pgConfig);
return {
async publish(routingKey, ...args) {
const payload = args[1] ?? args[0] ?? null;
const topic = args[1] === void 0 ? routingKey : `${routingKey}:${args[0]}`;
await pgPubSub.publish(topic, {
payload
});
},
subscribe(...[routingKey, id]) {
const topic = id === void 0 ? routingKey : `${routingKey}:${id}`;
return new Repeater(async (next, stop) => {
await pgPubSub.addChannel(topic, (data) => {
next(data.payload);
});
stop.then(() => {
pgPubSub.removeChannel(topic);
});
});
}
};
}
__name(createPgPubSub, "createPgPubSub");
export {
createPgPubSub
};