diff --git a/package-lock.json b/package-lock.json index 664d611..5b8421f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3090,7 +3090,7 @@ "version": "0.0.12", "license": "MIT", "dependencies": { - "@welshman/util": "0.0.15" + "@welshman/util": "0.0.16" }, "devDependencies": { "gts": "^5.0.1", @@ -3124,11 +3124,11 @@ }, "packages/net": { "name": "@welshman/net", - "version": "0.0.13", + "version": "0.0.14", "license": "MIT", "dependencies": { "@welshman/lib": "0.0.10", - "@welshman/util": "0.0.15", + "@welshman/util": "0.0.16", "isomorphic-ws": "^5.0.0", "ws": "^8.16.0" }, @@ -3140,7 +3140,7 @@ }, "packages/util": { "name": "@welshman/util", - "version": "0.0.15", + "version": "0.0.16", "license": "MIT", "dependencies": { "@welshman/lib": "0.0.10", diff --git a/packages/feeds/package.json b/packages/feeds/package.json index 1d70eed..83d0d86 100644 --- a/packages/feeds/package.json +++ b/packages/feeds/package.json @@ -31,6 +31,6 @@ "typescript": "~5.1.6" }, "dependencies": { - "@welshman/util": "0.0.15" + "@welshman/util": "0.0.16" } } diff --git a/packages/net/package.json b/packages/net/package.json index c1ea6d2..54f2a2b 100644 --- a/packages/net/package.json +++ b/packages/net/package.json @@ -32,7 +32,7 @@ }, "dependencies": { "@welshman/lib": "0.0.10", - "@welshman/util": "0.0.15", + "@welshman/util": "0.0.16", "isomorphic-ws": "^5.0.0", "ws": "^8.16.0" } diff --git a/packages/util/package.json b/packages/util/package.json index 83a9d99..0aed349 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/util", - "version": "0.0.15", + "version": "0.0.16", "author": "hodlbod", "license": "MIT", "description": "A collection of nostr-related utilities.", diff --git a/packages/util/src/Kinds.ts b/packages/util/src/Kinds.ts index a5d4d3e..ec1dc11 100644 --- a/packages/util/src/Kinds.ts +++ b/packages/util/src/Kinds.ts @@ -101,7 +101,7 @@ export const GROUPS = 10009 export const FEEDS = 10014 export const TOPICS = 10015 export const EMOJIS = 10030 -export const DM_INBOX_RELAYS = 10050 +export const INBOX_RELAYS = 10050 export const FILE_SERVERS = 10096 export const LIGHTNING_PUB_RPC = 21000 export const CLIENT_AUTH = 22242 diff --git a/packages/util/src/Router.ts b/packages/util/src/Router.ts index 5f5fa3f..7b9e96c 100644 --- a/packages/util/src/Router.ts +++ b/packages/util/src/Router.ts @@ -1,13 +1,13 @@ import {first, splitAt, identity, sortBy, uniq, shuffle, pushToMapKey} from '@welshman/lib' -import {Tags, Tag} from './Tags' +import {Tags} from './Tags' import type {TrustedEvent} from './Events' -import {isReplaceable} from './Events' import {isShareableRelayUrl} from './Relay' -import {getAddress, isCommunityAddress, isGroupAddress} from './Address' +import {isCommunityAddress, isGroupAddress} from './Address' export enum RelayMode { Read = "read", Write = "write", + Inbox = "inbox" } export type RouterOptions = { @@ -34,7 +34,7 @@ export type RouterOptions = { /** * Retrieves relays for the specified public key and mode. * @param pubkey - The public key to retrieve relays for. - * @param mode - The relay mode (optional). + * @param mode - The relay mode (optional). May be "read", "write", or "inbox". * @returns An array of relay URLs as strings. */ getPubkeyRelays?: (pubkey: string, mode?: RelayMode) => string[] @@ -168,8 +168,8 @@ export class Router { PublishMessage = (pubkey: string) => this.scenario([ - ...this.getUserSelections(RelayMode.Write), - this.getPubkeySelection(pubkey, RelayMode.Read), + ...this.getUserSelections(RelayMode.Inbox), + this.getPubkeySelection(pubkey, RelayMode.Inbox), ]).policy(this.addMinimalFallbacks) Event = (event: TrustedEvent) => @@ -264,27 +264,6 @@ export class Router { addMinimalFallbacks = (count: number, redundancy: number) => count > 0 ? 0 : 1 addMaximalFallbacks = (count: number, redundancy: number) => redundancy - count - - // Higher level utils that use hints - - tagPubkey = (pubkey: string) => - Tag.from(["p", pubkey, this.FromPubkeys([pubkey]).getUrl()]) - - tagEventId = (event: TrustedEvent, mark = "") => - Tag.from(["e", event.id, this.Event(event).getUrl(), mark, event.pubkey]) - - tagEventAddress = (event: TrustedEvent, mark = "") => - Tag.from(["a", getAddress(event), this.Event(event).getUrl(), mark, event.pubkey]) - - tagEvent = (event: TrustedEvent, mark = "") => { - const tags = [this.tagEventId(event, mark)] - - if (isReplaceable(event)) { - tags.push(this.tagEventAddress(event, mark)) - } - - return new Tags(tags) - } } // Router Scenario