diff --git a/package.json b/package.json index 1d71d29..cc460f1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@welshman", "private": true, - "version": "0.3.7", + "version": "0.3.8", "workspaces": [ "packages/*" ], diff --git a/packages/app/package.json b/packages/app/package.json index 5efb7ea..11fc364 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/app", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A collection of svelte stores for use in building nostr client applications.", diff --git a/packages/content/package.json b/packages/content/package.json index d7e79f2..369c817 100644 --- a/packages/content/package.json +++ b/packages/content/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/content", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A collection of utilities for parsing nostr note content.", diff --git a/packages/content/src/render.ts b/packages/content/src/render.ts index 7357577..ab70d4a 100644 --- a/packages/content/src/render.ts +++ b/packages/content/src/render.ts @@ -55,12 +55,10 @@ export type RenderOptions = { createElement: (tag: string) => any } -const createElement = (tag: string) => document.createElement(tag) as any - export const textRenderOptions = { newline: "\n", entityBase: "", - createElement, + createElement: (tag: string) => document.createElement(tag) as any, renderLink: (href: string, display: string) => href, renderEntity: (entity: string) => entity.slice(0, 16) + "…", } @@ -68,7 +66,7 @@ export const textRenderOptions = { export const htmlRenderOptions = { newline: "\n", entityBase: "https://njump.me/", - createElement, + createElement: (tag: string) => document.createElement(tag) as any, renderLink(href: string, display: string) { const element = this.createElement("a") diff --git a/packages/editor/package.json b/packages/editor/package.json index 56a7962..4be0f3d 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/editor", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A batteries-included nostr editor.", diff --git a/packages/feeds/package.json b/packages/feeds/package.json index d19332b..c3fe03b 100644 --- a/packages/feeds/package.json +++ b/packages/feeds/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/feeds", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "Utilities for building dynamic nostr feeds.", diff --git a/packages/feeds/src/controller.ts b/packages/feeds/src/controller.ts index 56d3149..b56cdfb 100644 --- a/packages/feeds/src/controller.ts +++ b/packages/feeds/src/controller.ts @@ -79,7 +79,11 @@ export class FeedController { } }) - listen = async () => (await this.getListener())() + listen = () => { + const promise = this.getListener().then(call) + + return () => promise.then(call) + } async _getRequestsLoader(requests: RequestItem[]) { const seen = new Set() @@ -389,7 +393,7 @@ export class FeedController { return () => { const unsubscribers = controllers.map(controller => controller.listen()) - return () => unsubscribers.forEach(async p => call(await p)) + return () => unsubscribers.forEach(call) } } @@ -414,9 +418,9 @@ export class FeedController { ) return () => { - const unsubscribers = controllers.map(controller => controller.listen()) + const unsubscribers = controllers.map(controller => controller.listen()) - return () => unsubscribers.forEach(async p => call(await p)) + return () => unsubscribers.forEach(call) } } @@ -438,9 +442,9 @@ export class FeedController { ) return () => { - const unsubscribers = controllers.map(controller => controller.listen()) + const unsubscribers = controllers.map(controller => controller.listen()) - return () => unsubscribers.forEach(async p => call(await p)) + return () => unsubscribers.forEach(call) } } } diff --git a/packages/feeds/src/utils.ts b/packages/feeds/src/utils.ts index c94e55e..9eb3a4d 100644 --- a/packages/feeds/src/utils.ts +++ b/packages/feeds/src/utils.ts @@ -192,10 +192,17 @@ export const feedsFromFilter = ({since, until, ...filter}: Filter) => { return feeds } -export const feedFromFilter = (filter: Filter) => makeIntersectionFeed(...feedsFromFilter(filter)) +export const feedFromFilter = (filter: Filter) => { + const feeds = feedsFromFilter(filter) -export const feedFromFilters = (filters: Filter[]) => - makeUnionFeed(...unionFilters(filters).map(filter => feedFromFilter(filter))) + return feeds.length === 1 ? feeds[0] : makeIntersectionFeed(...feeds) +} + +export const feedFromFilters = (filters: Filter[]) => { + const feeds = unionFilters(filters).map(filter => feedFromFilter(filter)) + + return feeds.length === 1 ? feeds[0] : makeUnionFeed(...feeds) +} export const walkFeed = (feed: Feed, visit: (feed: Feed) => void) => { visit(feed) diff --git a/packages/lib/package.json b/packages/lib/package.json index c58c469..3d169f3 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/lib", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A collection of utilities.", diff --git a/packages/net/package.json b/packages/net/package.json index 0c37ad1..57b13aa 100644 --- a/packages/net/package.json +++ b/packages/net/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/net", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "Utilities for connecting with nostr relays.", diff --git a/packages/net/src/policy.ts b/packages/net/src/policy.ts index 20fec1f..9fca8c3 100644 --- a/packages/net/src/policy.ts +++ b/packages/net/src/policy.ts @@ -98,7 +98,7 @@ export const socketPolicyConnectOnSend = (socket: Socket) => { const isClosed = [SocketStatus.Closed, SocketStatus.Error].includes(socket.status) // When a new message is sent, make sure the socket is open (unless there was a recent error) - if (isClosed && lastError < ago(10)) { + if (isClosed && lastError < ago(5)) { socket.open() } }), @@ -157,7 +157,7 @@ export const socketPolicyReopenActive = (socket: Socket) => { // If the socket closed and we have no error, reopen it but don't flap if (isClosed && pending.size) { - sleep(Math.max(0, 10_000 - (Date.now() - lastOpen))).then(() => { + sleep(Math.max(0, 5000 - (Date.now() - lastOpen))).then(() => { for (const message of pending.values()) { socket.send(message) } diff --git a/packages/net/src/request.ts b/packages/net/src/request.ts index d6540f1..a0f3db6 100644 --- a/packages/net/src/request.ts +++ b/packages/net/src/request.ts @@ -169,9 +169,9 @@ export type RequestOptions = BaseRequestOptions & { export const request = async (options: RequestOptions) => { const closed = new Set() - const tracker = new Tracker() - const relays = new Set(options.relays) const ctrl = new AbortController() + const relays = new Set(options.relays) + const tracker = options.tracker || new Tracker() const signal = options.signal ? AbortSignal.any([options.signal, ctrl.signal]) : ctrl.signal const threshold = options.threshold || 1 diff --git a/packages/relay/package.json b/packages/relay/package.json index 0e67e65..cfae6f3 100644 --- a/packages/relay/package.json +++ b/packages/relay/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/relay", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "An in-memory nostr relay implementation.", diff --git a/packages/router/package.json b/packages/router/package.json index 07287e8..5dafade 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/router", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A collection of utilities for nostr relay selection.", diff --git a/packages/signer/package.json b/packages/signer/package.json index e5be637..63599a4 100644 --- a/packages/signer/package.json +++ b/packages/signer/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/signer", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A nostr signer implemenation supporting several login methods.", diff --git a/packages/store/package.json b/packages/store/package.json index fb590d2..aef7f77 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/store", - "version": "0.3.7", + "version": "0.3.8", "author": "hodlbod", "license": "MIT", "description": "A collection of utilities based on svelte/store for use with welshman", diff --git a/packages/util/package.json b/packages/util/package.json index 3a74f23..da6bf28 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/util", - "version": "0.3.7", + "version": "0.3.8", "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 19c1862..4749cf1 100644 --- a/packages/util/src/Kinds.ts +++ b/packages/util/src/Kinds.ts @@ -178,9 +178,11 @@ export const EVENT_TIME = 31923 export const EVENT_RSVP = 31925 export const HANDLER_RECOMMENDATION = 31989 export const HANDLER_INFORMATION = 31990 -export const ALERT_REQUEST_EMAIL = 32830 +export const ALERT_EMAIL = 32830 export const ALERT_STATUS = 32831 -export const ALERT_REQUEST_PUSH = 32832 +export const ALERT_WEB = 32832 +export const ALERT_ANDROID = 32833 +export const ALERT_IOS = 32834 export const COMMUNITY = 34550 export const ROOM = 35834 export const ROOM_META = 39000