From 30b6dcd6876754f46d58d5f1c0fb2af81259f32e Mon Sep 17 00:00:00 2001 From: Jonathan Staab Date: Mon, 3 Apr 2023 10:08:15 -0500 Subject: [PATCH] Fix subscription id length, allow custom verb in publish in order to support AUTH --- package-lock.json | 4 ++-- package.json | 2 +- src/Executor.ts | 27 +++++---------------------- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 89eec07..523567d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "paravel", - "version": "0.1.12", + "version": "0.1.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "paravel", - "version": "0.1.12", + "version": "0.1.13", "license": "MIT", "dependencies": { "husky": "^8.0.3", diff --git a/package.json b/package.json index d123fd4..0099258 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "paravel", - "version": "0.1.12", + "version": "0.1.13", "description": "Yet another toolkit for nostr", "repository": { "type": "git", diff --git a/src/Executor.ts b/src/Executor.ts index 4c8d3d1..f858835 100644 --- a/src/Executor.ts +++ b/src/Executor.ts @@ -1,23 +1,6 @@ import type {EventBus} from './util/EventBus.ts' -const createFilterId = filters => - [Math.random().toString().slice(2, 6), filters.map(describeFilter).join(":")].join("-") - -const describeFilter = ({kinds = [], ...filter}) => { - const parts = [] - - parts.push(kinds.join(",")) - - for (const [key, value] of Object.entries(filter)) { - if (value instanceof Array) { - parts.push(`${key}[${value.length}]`) - } else { - parts.push(key) - } - } - - return "(" + parts.join(",") + ")" -} +const createSubId = prefix => [prefix, Math.random().toString().slice(2, 10)].join('-') type Executable = { bus: EventBus @@ -30,7 +13,7 @@ export class Executor { this.target = target } subscribe(filters, {onEvent, onEose}) { - const id = createFilterId(filters) + const id = createSubId('REQ') const unsubscribe = this.target.bus.addListeners({ EVENT: (url, subid, e) => subid === id && onEvent?.(url, e), EOSE: (url, subid) => subid === id && onEose?.(url), @@ -46,18 +29,18 @@ export class Executor { }, } } - publish(event, {onOk, onError}) { + publish(event, {verb = 'EVENT', onOk, onError}) { const unsubscribe = this.target.bus.addListeners({ OK: (url, id, ...payload) => id === event.id && onOk(url, id, ...payload), ERROR: (url, id, ...payload) => id === event.id && onError(url, id, ...payload), }) - this.target.send("EVENT", event) + this.target.send(verb, event) return {unsubscribe} } count(filters, {onCount}) { - const id = createFilterId(filters) + const id = createSubId('COUNT') const unsubscribe = this.target.bus.addListeners({ COUNT: (url, subid, ...payload) => { if (subid === id) {