release: WRNexusJS 0.8.0
Quality / quality (ubuntu-latest) (push) Failing after 21s
Quality / quality (windows-latest) (push) Canceled after 0s

This commit is contained in:
2026-08-02 23:18:51 +05:30
parent 87507edf59
commit 586a6db8ff
625 changed files with 243608 additions and 11210 deletions
+8
View File
@@ -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?.();
},
};
}