UNPKG

node-red-contrib-nostr

Version:

Node-RED nodes for seamless Nostr protocol integration. Features robust WebSocket handling, event filtering, and NPUB-based routing. Built with TypeScript for type safety and extensive testing. Perfect for Nostr automation flows.

66 lines (65 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageType = void 0; exports.parseRelayMessage = parseRelayMessage; exports.createEventMessage = createEventMessage; exports.createSubscriptionMessage = createSubscriptionMessage; exports.createCloseMessage = createCloseMessage; var MessageType; (function (MessageType) { MessageType["EVENT"] = "EVENT"; MessageType["REQ"] = "REQ"; MessageType["CLOSE"] = "CLOSE"; MessageType["NOTICE"] = "NOTICE"; MessageType["EOSE"] = "EOSE"; MessageType["OK"] = "OK"; })(MessageType || (exports.MessageType = MessageType = {})); function parseRelayMessage(message) { try { const parsed = JSON.parse(message); if (!Array.isArray(parsed)) return null; const [type, ...params] = parsed; switch (type) { case MessageType.EVENT: const [subscriptionId, event] = params; return { type: MessageType.EVENT, subscriptionId, event }; case MessageType.NOTICE: return { type: MessageType.NOTICE, message: params[0] }; case MessageType.EOSE: return { type: MessageType.EOSE, subscriptionId: params[0] }; case MessageType.OK: const [eventId, success, message] = params; return { type: MessageType.OK, message: eventId, success, error: message }; default: return null; } } catch { return null; } } function createEventMessage(event) { return JSON.stringify([MessageType.EVENT, event]); } function createSubscriptionMessage(subscriptionId, filters) { return JSON.stringify([MessageType.REQ, subscriptionId, ...filters]); } function createCloseMessage(subscriptionId) { return JSON.stringify([MessageType.CLOSE, subscriptionId]); }