release: WRNexusJS 0.8.0
This commit is contained in:
@@ -26,9 +26,11 @@ export function createResilientPubSub(
|
||||
if (!Number.isFinite(retryDelayMs) || retryDelayMs < 0) {
|
||||
throw new RangeError("pubsub retryDelayMs must be a non-negative number");
|
||||
}
|
||||
let closed = false;
|
||||
|
||||
return {
|
||||
async publish(topic, message) {
|
||||
if (closed) throw new Error("WRN-PUBSUB-CLOSED: pubsub is closed");
|
||||
if (!topic.trim()) throw new TypeError("pubsub topic cannot be empty");
|
||||
const envelope: MessageEnvelope = {
|
||||
id: crypto.randomUUID(),
|
||||
@@ -55,6 +57,7 @@ export function createResilientPubSub(
|
||||
},
|
||||
|
||||
subscribe<T>(pattern: string, handler: Handler<T>) {
|
||||
if (closed) throw new Error("WRN-PUBSUB-CLOSED: pubsub is closed");
|
||||
if (!pattern.trim()) throw new TypeError("pubsub pattern cannot be empty");
|
||||
return driver.subscribe(pattern, async (value, topic) => {
|
||||
const envelope = value as MessageEnvelope<T>;
|
||||
@@ -65,6 +68,11 @@ export function createResilientPubSub(
|
||||
}
|
||||
});
|
||||
},
|
||||
async close() {
|
||||
if (closed) return;
|
||||
closed = true;
|
||||
await driver.close?.();
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user