nappup 1.0.12 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "git+https://github.com/44billion/nappup.git"
7
7
  },
8
8
  "license": "GPL-3.0-or-later",
9
- "version": "1.0.12",
9
+ "version": "1.0.14",
10
10
  "description": "Nostr App Uploader",
11
11
  "type": "module",
12
12
  "scripts": {
package/src/index.js CHANGED
@@ -262,7 +262,9 @@ async function maybeUploadStall ({
262
262
 
263
263
  const publishStall = async (event) => {
264
264
  const signedEvent = await signer.signEvent(event)
265
- return await throttledSendEvent(signedEvent, writeRelays, { pause, log, trailingPause: true })
265
+ // App stores are fetching stall events just from primal relay for now
266
+ const relays = [...new Set([...writeRelays, 'wss://relay.primal.net'])]
267
+ return await throttledSendEvent(signedEvent, relays, { pause, log, trailingPause: true })
266
268
  }
267
269
 
268
270
  const createdAt = Math.floor(Date.now() / 1000)
@@ -64,17 +64,14 @@ export class NostrRelays {
64
64
  // Get events from a list of relays
65
65
  async getEvents (filter, relays, timeout = 5000) {
66
66
  const events = []
67
- const resolveOrReject = (resolve, reject, err) => {
68
- err ? reject(err) : resolve()
69
- }
70
67
  const promises = relays.map(async (url) => {
71
68
  let sub
72
69
  let isClosed = false
73
70
  const p = Promise.withResolvers()
74
71
  const timer = maybeUnref(setTimeout(() => {
75
- sub?.close()
76
72
  isClosed = true
77
- resolveOrReject(p.resolve, p.reject, new Error(`timeout: ${url}`))
73
+ sub?.close()
74
+ p.reject(new Error(`timeout: ${url}`))
78
75
  }, timeout))
79
76
  try {
80
77
  const relay = await this.#getRelay(url)
@@ -85,7 +82,8 @@ export class NostrRelays {
85
82
  onclose: err => {
86
83
  clearTimeout(timer)
87
84
  if (isClosed) return
88
- resolveOrReject(p.resolve, p.reject, err /* may be empty (closed normally) */)
85
+ // may have closed normally, without error
86
+ err ? p.reject(err) : p.resolve()
89
87
  },
90
88
  oneose: () => {
91
89
  clearTimeout(timer)
@@ -94,12 +92,12 @@ export class NostrRelays {
94
92
  p.resolve()
95
93
  }
96
94
  })
97
-
98
- await p.promise
99
95
  } catch (err) {
100
96
  clearTimeout(timer)
101
97
  p.reject(err)
102
98
  }
99
+
100
+ return p.promise
103
101
  })
104
102
 
105
103
  const results = await Promise.allSettled(promises)
@@ -116,22 +114,26 @@ export class NostrRelays {
116
114
  async sendEvent (event, relays, timeout = 3000) {
117
115
  const promises = relays.map(async (url) => {
118
116
  let timer
117
+ const p = Promise.withResolvers()
119
118
  try {
120
119
  timer = maybeUnref(setTimeout(() => {
121
- throw new Error(`timeout: ${url}`)
120
+ p.reject(new Error(`timeout: ${url}`))
122
121
  }, timeout))
122
+
123
123
  const relay = await this.#getRelay(url)
124
124
  await relay.publish(event)
125
+ p.resolve()
125
126
  } catch (err) {
126
- if (err.message?.startsWith('duplicate:')) return
127
+ if (err.message?.startsWith('duplicate:')) return p.resolve()
127
128
  if (err.message?.startsWith('mute:')) {
128
129
  console.info(`${url} - ${err.message}`)
129
- return
130
+ return p.resolve()
130
131
  }
131
- throw err
132
+ p.reject(err)
132
133
  } finally {
133
134
  clearTimeout(timer)
134
135
  }
136
+ return p.promise
135
137
  })
136
138
 
137
139
  const results = await Promise.allSettled(promises)