@orangecheck/sdk 1.4.0 → 1.5.0

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/dist/index.mjs CHANGED
@@ -191,11 +191,15 @@ var log = createLogger("ocp/nostr");
191
191
  var ATTESTATION_EVENT_KIND = 30078;
192
192
  var DEFAULT_RELAYS = [
193
193
  "wss://relay.damus.io",
194
- "wss://relay.nostr.band",
195
194
  "wss://nos.lol",
196
195
  "wss://relay.snort.social",
197
196
  "wss://relay.ochk.io"
198
197
  ];
198
+ var FANOUT_DEADLINE_MS = 4e3;
199
+ var QUERY_TIMEOUT_MS = 1e4;
200
+ function budgetFor(deadlineAt) {
201
+ return Math.max(0, Math.min(QUERY_TIMEOUT_MS, deadlineAt - Date.now()));
202
+ }
199
203
  function createAttestationEvent(envelope, pubkey) {
200
204
  const tags = [
201
205
  ["d", envelope.attestation_id],
@@ -235,6 +239,7 @@ async function publishToRelays(event, relays = DEFAULT_RELAYS) {
235
239
  const success = [];
236
240
  const failed = [];
237
241
  log.info({ eventId: event.id, relayCount: relays.length }, "Publishing event to relays");
242
+ const deadlineAt = Date.now() + FANOUT_DEADLINE_MS;
238
243
  const publishPromises = relays.map(async (relayUrl) => {
239
244
  let ws = null;
240
245
  let settled = false;
@@ -255,7 +260,7 @@ async function publishToRelays(event, relays = DEFAULT_RELAYS) {
255
260
  const deadline = setTimeout(() => {
256
261
  wsRef.close();
257
262
  reject(new Error("Relay publish timeout"));
258
- }, 1e4);
263
+ }, budgetFor(deadlineAt));
259
264
  const cleanup = () => {
260
265
  clearTimeout(deadline);
261
266
  wsRef.close();
@@ -317,6 +322,7 @@ async function publishToRelays(event, relays = DEFAULT_RELAYS) {
317
322
  async function queryByAttestationId(attestationId, relays = DEFAULT_RELAYS) {
318
323
  const events = [];
319
324
  log.info({ attestationId, relayCount: relays.length }, "Querying relays for attestation");
325
+ const deadlineAt = Date.now() + FANOUT_DEADLINE_MS;
320
326
  const queryPromises = relays.map(async (relayUrl) => {
321
327
  let ws = null;
322
328
  try {
@@ -326,7 +332,7 @@ async function queryByAttestationId(attestationId, relays = DEFAULT_RELAYS) {
326
332
  const timeout = setTimeout(() => {
327
333
  wsRef.close();
328
334
  reject(new Error("Query timeout"));
329
- }, 1e4);
335
+ }, budgetFor(deadlineAt));
330
336
  const cleanup = () => {
331
337
  clearTimeout(timeout);
332
338
  wsRef.close();
@@ -382,6 +388,7 @@ async function queryByAttestationId(attestationId, relays = DEFAULT_RELAYS) {
382
388
  async function queryByAddress(address, relays = DEFAULT_RELAYS) {
383
389
  const events = [];
384
390
  log.info({ address, relayCount: relays.length }, "Querying relays for address");
391
+ const deadlineAt = Date.now() + FANOUT_DEADLINE_MS;
385
392
  const queryPromises = relays.map(async (relayUrl) => {
386
393
  try {
387
394
  const ws = new WebSocket(relayUrl);
@@ -389,7 +396,7 @@ async function queryByAddress(address, relays = DEFAULT_RELAYS) {
389
396
  const timeout = setTimeout(() => {
390
397
  ws.close();
391
398
  reject(new Error("Query timeout"));
392
- }, 1e4);
399
+ }, budgetFor(deadlineAt));
393
400
  ws.onopen = () => {
394
401
  const subscriptionId = `ochk_addr_${Date.now()}`;
395
402
  ws.send(
@@ -443,6 +450,7 @@ async function queryByIdentity(protocol, identifier, relays = DEFAULT_RELAYS) {
443
450
  const events = [];
444
451
  const identityTag = `${protocol}:${identifier}`;
445
452
  log.info({ protocol, identifier, relayCount: relays.length }, "Querying relays for identity");
453
+ const deadlineAt = Date.now() + FANOUT_DEADLINE_MS;
446
454
  const queryPromises = relays.map(async (relayUrl) => {
447
455
  try {
448
456
  const ws = new WebSocket(relayUrl);
@@ -450,7 +458,7 @@ async function queryByIdentity(protocol, identifier, relays = DEFAULT_RELAYS) {
450
458
  const timeout = setTimeout(() => {
451
459
  ws.close();
452
460
  reject(new Error("Query timeout"));
453
- }, 1e4);
461
+ }, budgetFor(deadlineAt));
454
462
  ws.onopen = () => {
455
463
  const subscriptionId = `ochk_identity_${Date.now()}`;
456
464
  ws.send(