nostr-tools 2.23.8 → 2.23.9

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.
Files changed (73) hide show
  1. package/lib/cjs/abstract-pool.js +128 -4
  2. package/lib/cjs/abstract-pool.js.map +4 -4
  3. package/lib/cjs/abstract-relay.js +29 -4
  4. package/lib/cjs/abstract-relay.js.map +2 -2
  5. package/lib/cjs/filter.js.map +1 -1
  6. package/lib/cjs/index.js +377 -61
  7. package/lib/cjs/index.js.map +4 -4
  8. package/lib/cjs/kinds.js +196 -4
  9. package/lib/cjs/kinds.js.map +2 -2
  10. package/lib/cjs/nip17.js.map +2 -2
  11. package/lib/cjs/nip18.js.map +2 -2
  12. package/lib/cjs/nip25.js.map +1 -1
  13. package/lib/cjs/nip28.js.map +2 -2
  14. package/lib/cjs/nip42.js.map +2 -2
  15. package/lib/cjs/nip45.js +183 -0
  16. package/lib/cjs/nip45.js.map +7 -0
  17. package/lib/cjs/nip46.js +128 -4
  18. package/lib/cjs/nip46.js.map +4 -4
  19. package/lib/cjs/nip47.js.map +2 -2
  20. package/lib/cjs/nip57.js.map +1 -1
  21. package/lib/cjs/nip58.js.map +2 -2
  22. package/lib/cjs/nip59.js.map +2 -2
  23. package/lib/cjs/nip75.js.map +2 -2
  24. package/lib/cjs/nip94.js.map +2 -2
  25. package/lib/cjs/nip98.js.map +2 -2
  26. package/lib/cjs/nip99.js.map +2 -2
  27. package/lib/cjs/nipb0.js +1064 -0
  28. package/lib/cjs/nipb0.js.map +7 -0
  29. package/lib/cjs/pool.js +128 -4
  30. package/lib/cjs/pool.js.map +4 -4
  31. package/lib/cjs/relay.js +29 -4
  32. package/lib/cjs/relay.js.map +2 -2
  33. package/lib/esm/abstract-pool.js +128 -4
  34. package/lib/esm/abstract-pool.js.map +4 -4
  35. package/lib/esm/abstract-relay.js +29 -4
  36. package/lib/esm/abstract-relay.js.map +2 -2
  37. package/lib/esm/filter.js.map +1 -1
  38. package/lib/esm/index.js +353 -37
  39. package/lib/esm/index.js.map +4 -4
  40. package/lib/esm/kinds.js +196 -4
  41. package/lib/esm/kinds.js.map +2 -2
  42. package/lib/esm/nip17.js.map +2 -2
  43. package/lib/esm/nip18.js.map +2 -2
  44. package/lib/esm/nip25.js.map +1 -1
  45. package/lib/esm/nip28.js.map +2 -2
  46. package/lib/esm/nip42.js.map +2 -2
  47. package/lib/esm/nip45.js +162 -0
  48. package/lib/esm/nip45.js.map +7 -0
  49. package/lib/esm/nip46.js +128 -4
  50. package/lib/esm/nip46.js.map +4 -4
  51. package/lib/esm/nip47.js.map +2 -2
  52. package/lib/esm/nip57.js.map +1 -1
  53. package/lib/esm/nip58.js.map +2 -2
  54. package/lib/esm/nip59.js.map +2 -2
  55. package/lib/esm/nip75.js.map +2 -2
  56. package/lib/esm/nip94.js.map +2 -2
  57. package/lib/esm/nip98.js.map +2 -2
  58. package/lib/esm/nip99.js.map +2 -2
  59. package/lib/esm/nipb0.js +1049 -0
  60. package/lib/esm/nipb0.js.map +7 -0
  61. package/lib/esm/pool.js +128 -4
  62. package/lib/esm/pool.js.map +4 -4
  63. package/lib/esm/relay.js +29 -4
  64. package/lib/esm/relay.js.map +2 -2
  65. package/lib/nostr.bundle.js +326 -12
  66. package/lib/nostr.bundle.js.map +4 -4
  67. package/lib/types/abstract-pool.d.ts +9 -0
  68. package/lib/types/abstract-relay.d.ts +10 -1
  69. package/lib/types/kinds.d.ts +200 -8
  70. package/lib/types/nip45.d.ts +13 -0
  71. package/lib/types/nip45.test.d.ts +1 -0
  72. package/lib/types/nipb0.d.ts +129 -0
  73. package/package.json +13 -1
@@ -711,7 +711,7 @@ var NostrTools = (() => {
711
711
  return n;
712
712
  if (FpLegendre(Fp, n) !== 1)
713
713
  throw new Error("Cannot find square root");
714
- let M = S;
714
+ let M2 = S;
715
715
  let c = Fp.mul(Fp.ONE, cc);
716
716
  let t = Fp.pow(n, Q);
717
717
  let R = Fp.pow(n, Q1div2);
@@ -723,12 +723,12 @@ var NostrTools = (() => {
723
723
  while (!Fp.eql(t_tmp, Fp.ONE)) {
724
724
  i2++;
725
725
  t_tmp = Fp.sqr(t_tmp);
726
- if (i2 === M)
726
+ if (i2 === M2)
727
727
  throw new Error("Cannot find square root");
728
728
  }
729
- const exponent = _1n2 << BigInt(M - i2 - 1);
729
+ const exponent = _1n2 << BigInt(M2 - i2 - 1);
730
730
  const b = Fp.pow(c, exponent);
731
- M = i2;
731
+ M2 = i2;
732
732
  c = Fp.sqr(b);
733
733
  t = Fp.mul(t, c);
734
734
  R = Fp.mul(R, b);
@@ -2448,39 +2448,61 @@ var NostrTools = (() => {
2448
2448
  // kinds.ts
2449
2449
  var kinds_exports = {};
2450
2450
  __export(kinds_exports, {
2451
+ AIEmbeddings: () => AIEmbeddings,
2452
+ AppCurationSet: () => AppCurationSet,
2451
2453
  Application: () => Application,
2454
+ AuthoredPodcasts: () => AuthoredPodcasts,
2452
2455
  BadgeAward: () => BadgeAward,
2453
2456
  BadgeDefinition: () => BadgeDefinition,
2457
+ Bid: () => Bid,
2458
+ BidConfirmation: () => BidConfirmation,
2459
+ BlobsAuth: () => BlobsAuth,
2454
2460
  BlockedRelaysList: () => BlockedRelaysList,
2455
2461
  BlossomServerList: () => BlossomServerList,
2456
2462
  BookmarkList: () => BookmarkList,
2457
2463
  Bookmarksets: () => Bookmarksets,
2458
2464
  Calendar: () => Calendar,
2459
2465
  CalendarEventRSVP: () => CalendarEventRSVP,
2466
+ CashuMintAnnouncement: () => CashuMintAnnouncement,
2467
+ CashuWalletEvent: () => CashuWalletEvent,
2468
+ CashuWalletHistory: () => CashuWalletHistory,
2469
+ CashuWalletTokens: () => CashuWalletTokens,
2460
2470
  ChannelCreation: () => ChannelCreation,
2461
2471
  ChannelHideMessage: () => ChannelHideMessage,
2462
2472
  ChannelMessage: () => ChannelMessage,
2463
2473
  ChannelMetadata: () => ChannelMetadata,
2464
2474
  ChannelMuteUser: () => ChannelMuteUser,
2465
2475
  ChatMessage: () => ChatMessage,
2476
+ Chess: () => Chess,
2466
2477
  ClassifiedListing: () => ClassifiedListing,
2467
2478
  ClientAuth: () => ClientAuth,
2479
+ CodeSnippet: () => CodeSnippet,
2480
+ CoinjoinPool: () => CoinjoinPool,
2468
2481
  Comment: () => Comment,
2469
2482
  CommunitiesList: () => CommunitiesList,
2470
2483
  CommunityDefinition: () => CommunityDefinition,
2471
2484
  CommunityPostApproval: () => CommunityPostApproval,
2485
+ ConferenceEvent: () => ConferenceEvent,
2472
2486
  Contacts: () => Contacts,
2473
2487
  CreateOrUpdateProduct: () => CreateOrUpdateProduct,
2474
2488
  CreateOrUpdateStall: () => CreateOrUpdateStall,
2489
+ CuratedVideoSets: () => CuratedVideoSets,
2475
2490
  Curationsets: () => Curationsets,
2476
2491
  Date: () => Date2,
2492
+ DecoupledEncryptionKeyDistribution: () => DecoupledEncryptionKeyDistribution,
2493
+ DecoupledKeyAnnouncement: () => DecoupledKeyAnnouncement,
2494
+ DecoupledKeyClientAnnouncement: () => DecoupledKeyClientAnnouncement,
2477
2495
  DirectMessageRelaysList: () => DirectMessageRelaysList,
2478
2496
  DraftClassifiedListing: () => DraftClassifiedListing,
2497
+ DraftEvent: () => DraftEvent,
2479
2498
  DraftLong: () => DraftLong,
2480
2499
  Emojisets: () => Emojisets,
2481
2500
  EncryptedDirectMessage: () => EncryptedDirectMessage,
2482
2501
  EventDeletion: () => EventDeletion,
2502
+ FavoritePodcasts: () => FavoritePodcasts,
2483
2503
  FavoriteRelays: () => FavoriteRelays,
2504
+ FedimintAnnouncement: () => FedimintAnnouncement,
2505
+ Feed: () => Feed,
2484
2506
  FileMessage: () => FileMessage,
2485
2507
  FileMetadata: () => FileMetadata,
2486
2508
  FileServerPreference: () => FileServerPreference,
@@ -2488,55 +2510,129 @@ var NostrTools = (() => {
2488
2510
  ForumThread: () => ForumThread,
2489
2511
  GenericRepost: () => GenericRepost,
2490
2512
  Genericlists: () => Genericlists,
2513
+ GeocacheListing: () => GeocacheListing,
2514
+ GeocacheLog: () => GeocacheLog,
2515
+ GeocacheLogEntry: () => GeocacheLogEntry,
2516
+ GeocacheProofOfFind: () => GeocacheProofOfFind,
2491
2517
  GiftWrap: () => GiftWrap,
2518
+ GitPullRequest: () => GitPullRequest,
2519
+ GitPullRequestUpdate: () => GitPullRequestUpdate,
2520
+ GoodWikiAuthorList: () => GoodWikiAuthorList,
2521
+ GoodWikiRelayList: () => GoodWikiRelayList,
2492
2522
  GroupMetadata: () => GroupMetadata,
2493
2523
  HTTPAuth: () => HTTPAuth,
2494
2524
  Handlerinformation: () => Handlerinformation,
2495
2525
  Handlerrecommendation: () => Handlerrecommendation,
2496
2526
  Highlights: () => Highlights,
2527
+ InteractiveRoom: () => InteractiveRoom,
2497
2528
  InterestsList: () => InterestsList,
2498
2529
  Interestsets: () => Interestsets,
2530
+ Issue: () => Issue,
2499
2531
  JobFeedback: () => JobFeedback,
2500
2532
  JobRequest: () => JobRequest,
2501
2533
  JobResult: () => JobResult,
2502
2534
  Label: () => Label,
2535
+ LegacyNsiteFile: () => LegacyNsiteFile,
2503
2536
  LightningPubRPC: () => LightningPubRPC,
2537
+ LinkSet: () => LinkSet,
2504
2538
  LiveChatMessage: () => LiveChatMessage,
2505
2539
  LiveEvent: () => LiveEvent,
2506
2540
  LongFormArticle: () => LongFormArticle,
2541
+ MarketplaceUI: () => MarketplaceUI,
2542
+ MediaFollows: () => MediaFollows,
2543
+ MediaStarterPacks: () => MediaStarterPacks,
2544
+ MergeRequests: () => MergeRequests,
2507
2545
  Metadata: () => Metadata,
2546
+ ModularArticleContent: () => ModularArticleContent,
2547
+ ModularArticleHeader: () => ModularArticleHeader,
2548
+ MuteSets: () => MuteSets,
2508
2549
  Mutelist: () => Mutelist,
2509
2550
  NWCWalletInfo: () => NWCWalletInfo,
2510
2551
  NWCWalletRequest: () => NWCWalletRequest,
2511
2552
  NWCWalletResponse: () => NWCWalletResponse,
2512
2553
  NormalVideo: () => NormalVideo,
2513
2554
  NostrConnect: () => NostrConnect,
2555
+ NsiteNamed: () => NsiteNamed,
2556
+ NsiteRoot: () => NsiteRoot,
2557
+ NutZap: () => NutZap,
2558
+ NutZapInfo: () => NutZapInfo,
2514
2559
  OpenTimestamps: () => OpenTimestamps,
2560
+ Patch: () => Patch,
2561
+ PeerToPeerOrderEvents: () => PeerToPeerOrderEvents,
2515
2562
  Photo: () => Photo,
2516
2563
  Pinlist: () => Pinlist,
2564
+ PodcastEpisode: () => PodcastEpisode,
2565
+ PodcastMetadata: () => PodcastMetadata,
2517
2566
  Poll: () => Poll,
2518
2567
  PollResponse: () => PollResponse,
2519
2568
  PrivateDirectMessage: () => PrivateDirectMessage,
2569
+ PrivateEventRelayList: () => PrivateEventRelayList,
2520
2570
  ProblemTracker: () => ProblemTracker,
2571
+ ProductSoldAsAuction: () => ProductSoldAsAuction,
2521
2572
  ProfileBadges: () => ProfileBadges,
2573
+ ProxyAnnouncement: () => ProxyAnnouncement,
2522
2574
  PublicChatsList: () => PublicChatsList,
2575
+ PublicMessage: () => PublicMessage,
2523
2576
  Reaction: () => Reaction,
2577
+ ReactionToWebsite: () => ReactionToWebsite,
2524
2578
  RecommendRelay: () => RecommendRelay,
2579
+ Redirects: () => Redirects,
2580
+ RelayDiscovery: () => RelayDiscovery,
2525
2581
  RelayList: () => RelayList,
2582
+ RelayMonitorAnnouncement: () => RelayMonitorAnnouncement,
2526
2583
  RelayReview: () => RelayReview,
2584
+ RelayReviews: () => RelayReviews,
2527
2585
  Relaysets: () => Relaysets,
2586
+ ReleaseArtifactSets: () => ReleaseArtifactSets,
2587
+ Reply: () => Reply,
2528
2588
  Report: () => Report,
2529
2589
  Reporting: () => Reporting,
2590
+ RepositoryAnnouncement: () => RepositoryAnnouncement,
2591
+ RepositoryState: () => RepositoryState,
2530
2592
  Repost: () => Repost,
2593
+ ReservedCashuWalletTokens: () => ReservedCashuWalletTokens,
2594
+ RoomPresence: () => RoomPresence,
2595
+ Scroll: () => Scroll,
2531
2596
  Seal: () => Seal,
2532
2597
  SearchRelaysList: () => SearchRelaysList,
2533
2598
  ShortTextNote: () => ShortTextNote,
2534
2599
  ShortVideo: () => ShortVideo,
2600
+ SimpleGroupAdmins: () => SimpleGroupAdmins,
2601
+ SimpleGroupCreateGroup: () => SimpleGroupCreateGroup,
2602
+ SimpleGroupCreateInvite: () => SimpleGroupCreateInvite,
2603
+ SimpleGroupDeleteEvent: () => SimpleGroupDeleteEvent,
2604
+ SimpleGroupDeleteGroup: () => SimpleGroupDeleteGroup,
2605
+ SimpleGroupEditMetadata: () => SimpleGroupEditMetadata,
2606
+ SimpleGroupJoinRequest: () => SimpleGroupJoinRequest,
2607
+ SimpleGroupLeaveRequest: () => SimpleGroupLeaveRequest,
2608
+ SimpleGroupList: () => SimpleGroupList,
2609
+ SimpleGroupLiveKitParticipants: () => SimpleGroupLiveKitParticipants,
2610
+ SimpleGroupMembers: () => SimpleGroupMembers,
2611
+ SimpleGroupPutUser: () => SimpleGroupPutUser,
2612
+ SimpleGroupRemoveUser: () => SimpleGroupRemoveUser,
2613
+ SimpleGroupReply: () => SimpleGroupReply,
2614
+ SimpleGroupRoles: () => SimpleGroupRoles,
2615
+ SimpleGroupThreadedReply: () => SimpleGroupThreadedReply,
2616
+ SlideSet: () => SlideSet,
2617
+ SoftwareApplication: () => SoftwareApplication,
2618
+ StarterPacks: () => StarterPacks,
2619
+ StatusApplied: () => StatusApplied,
2620
+ StatusClosed: () => StatusClosed,
2621
+ StatusDraft: () => StatusDraft,
2622
+ StatusOpen: () => StatusOpen,
2623
+ TidalLogin: () => TidalLogin,
2535
2624
  Time: () => Time,
2625
+ Torrent: () => Torrent,
2626
+ TorrentComment: () => TorrentComment,
2627
+ TransportMethodAnnouncement: () => TransportMethodAnnouncement,
2536
2628
  UserEmojiList: () => UserEmojiList,
2629
+ UserGraspList: () => UserGraspList,
2537
2630
  UserStatuses: () => UserStatuses,
2631
+ VideoViewEvent: () => VideoViewEvent,
2538
2632
  Voice: () => Voice,
2539
2633
  VoiceComment: () => VoiceComment,
2634
+ WebBookmarks: () => WebBookmarks,
2635
+ WikiArticle: () => WikiArticle,
2540
2636
  Zap: () => Zap,
2541
2637
  ZapGoal: () => ZapGoal,
2542
2638
  ZapRequest: () => ZapRequest,
@@ -2584,40 +2680,83 @@ var NostrTools = (() => {
2584
2680
  var Reaction = 7;
2585
2681
  var BadgeAward = 8;
2586
2682
  var ChatMessage = 9;
2683
+ var SimpleGroupThreadedReply = 10;
2587
2684
  var ForumThread = 11;
2685
+ var SimpleGroupReply = 12;
2588
2686
  var Seal = 13;
2589
2687
  var PrivateDirectMessage = 14;
2590
2688
  var FileMessage = 15;
2591
2689
  var GenericRepost = 16;
2690
+ var ReactionToWebsite = 17;
2592
2691
  var Photo = 20;
2593
2692
  var NormalVideo = 21;
2594
2693
  var ShortVideo = 22;
2694
+ var PublicMessage = 24;
2595
2695
  var ChannelCreation = 40;
2596
2696
  var ChannelMetadata = 41;
2597
2697
  var ChannelMessage = 42;
2598
2698
  var ChannelHideMessage = 43;
2599
2699
  var ChannelMuteUser = 44;
2700
+ var PodcastEpisode = 54;
2701
+ var Chess = 64;
2702
+ var MergeRequests = 818;
2703
+ var PollResponse = 1018;
2704
+ var Bid = 1021;
2705
+ var BidConfirmation = 1022;
2600
2706
  var OpenTimestamps = 1040;
2601
2707
  var GiftWrap = 1059;
2602
- var Poll = 1068;
2603
2708
  var FileMetadata = 1063;
2709
+ var Poll = 1068;
2604
2710
  var Comment = 1111;
2605
- var LiveChatMessage = 1311;
2606
2711
  var Voice = 1222;
2712
+ var Scroll = 1227;
2607
2713
  var VoiceComment = 1244;
2714
+ var LiveChatMessage = 1311;
2715
+ var CodeSnippet = 1337;
2716
+ var Patch = 1617;
2717
+ var GitPullRequest = 1618;
2718
+ var GitPullRequestUpdate = 1619;
2719
+ var Issue = 1621;
2720
+ var Reply = 1622;
2721
+ var StatusOpen = 1630;
2722
+ var StatusApplied = 1631;
2723
+ var StatusClosed = 1632;
2724
+ var StatusDraft = 1633;
2608
2725
  var ProblemTracker = 1971;
2609
2726
  var Report = 1984;
2610
2727
  var Reporting = 1984;
2611
2728
  var Label = 1985;
2729
+ var RelayReviews = 1986;
2730
+ var AIEmbeddings = 1987;
2731
+ var Torrent = 2003;
2732
+ var TorrentComment = 2004;
2733
+ var CoinjoinPool = 2022;
2734
+ var DecoupledKeyClientAnnouncement = 4454;
2735
+ var DecoupledEncryptionKeyDistribution = 4455;
2612
2736
  var CommunityPostApproval = 4550;
2613
2737
  var JobRequest = 5999;
2614
2738
  var JobResult = 6999;
2615
2739
  var JobFeedback = 7e3;
2740
+ var ReservedCashuWalletTokens = 7374;
2741
+ var CashuWalletTokens = 7375;
2742
+ var CashuWalletHistory = 7376;
2743
+ var GeocacheLog = 7516;
2744
+ var GeocacheProofOfFind = 7517;
2745
+ var SimpleGroupPutUser = 9e3;
2746
+ var SimpleGroupRemoveUser = 9001;
2747
+ var SimpleGroupEditMetadata = 9002;
2748
+ var SimpleGroupDeleteEvent = 9005;
2749
+ var SimpleGroupCreateGroup = 9007;
2750
+ var SimpleGroupDeleteGroup = 9008;
2751
+ var SimpleGroupCreateInvite = 9009;
2752
+ var SimpleGroupJoinRequest = 9021;
2753
+ var SimpleGroupLeaveRequest = 9022;
2616
2754
  var ZapGoal = 9041;
2755
+ var NutZap = 9321;
2756
+ var TidalLogin = 9467;
2617
2757
  var ZapRequest = 9734;
2618
2758
  var Zap = 9735;
2619
2759
  var Highlights = 9802;
2620
- var PollResponse = 1018;
2621
2760
  var Mutelist = 1e4;
2622
2761
  var Pinlist = 10001;
2623
2762
  var RelayList = 10002;
@@ -2626,37 +2765,74 @@ var NostrTools = (() => {
2626
2765
  var PublicChatsList = 10005;
2627
2766
  var BlockedRelaysList = 10006;
2628
2767
  var SearchRelaysList = 10007;
2768
+ var SimpleGroupList = 10009;
2629
2769
  var FavoriteRelays = 10012;
2770
+ var PrivateEventRelayList = 10013;
2630
2771
  var InterestsList = 10015;
2772
+ var NutZapInfo = 10019;
2773
+ var MediaFollows = 10020;
2631
2774
  var UserEmojiList = 10030;
2775
+ var DecoupledKeyAnnouncement = 10044;
2632
2776
  var DirectMessageRelaysList = 10050;
2633
- var FileServerPreference = 10096;
2777
+ var FavoritePodcasts = 10054;
2634
2778
  var BlossomServerList = 10063;
2779
+ var FileServerPreference = 10096;
2780
+ var GoodWikiAuthorList = 10101;
2781
+ var GoodWikiRelayList = 10102;
2782
+ var PodcastMetadata = 10154;
2783
+ var AuthoredPodcasts = 10164;
2784
+ var RelayMonitorAnnouncement = 10166;
2785
+ var RoomPresence = 10312;
2786
+ var UserGraspList = 10317;
2787
+ var ProxyAnnouncement = 10377;
2788
+ var TransportMethodAnnouncement = 11111;
2635
2789
  var NWCWalletInfo = 13194;
2790
+ var NsiteRoot = 15128;
2791
+ var CashuWalletEvent = 17375;
2636
2792
  var LightningPubRPC = 21e3;
2637
2793
  var ClientAuth = 22242;
2638
2794
  var NWCWalletRequest = 23194;
2639
2795
  var NWCWalletResponse = 23195;
2640
2796
  var NostrConnect = 24133;
2797
+ var BlobsAuth = 24242;
2641
2798
  var HTTPAuth = 27235;
2642
2799
  var Followsets = 3e4;
2643
2800
  var Genericlists = 30001;
2644
2801
  var Relaysets = 30002;
2645
2802
  var Bookmarksets = 30003;
2646
2803
  var Curationsets = 30004;
2804
+ var CuratedVideoSets = 30005;
2805
+ var MuteSets = 30007;
2647
2806
  var ProfileBadges = 30008;
2648
2807
  var BadgeDefinition = 30009;
2649
2808
  var Interestsets = 30015;
2650
2809
  var CreateOrUpdateStall = 30017;
2651
2810
  var CreateOrUpdateProduct = 30018;
2811
+ var MarketplaceUI = 30019;
2812
+ var ProductSoldAsAuction = 30020;
2652
2813
  var LongFormArticle = 30023;
2653
2814
  var DraftLong = 30024;
2654
2815
  var Emojisets = 30030;
2816
+ var ModularArticleHeader = 30040;
2817
+ var ModularArticleContent = 30041;
2818
+ var ReleaseArtifactSets = 30063;
2655
2819
  var Application = 30078;
2820
+ var RelayDiscovery = 30166;
2821
+ var AppCurationSet = 30267;
2656
2822
  var LiveEvent = 30311;
2823
+ var InteractiveRoom = 30312;
2824
+ var ConferenceEvent = 30313;
2657
2825
  var UserStatuses = 30315;
2826
+ var SlideSet = 30388;
2658
2827
  var ClassifiedListing = 30402;
2659
2828
  var DraftClassifiedListing = 30403;
2829
+ var RepositoryAnnouncement = 30617;
2830
+ var RepositoryState = 30618;
2831
+ var WikiArticle = 30818;
2832
+ var Redirects = 30819;
2833
+ var DraftEvent = 31234;
2834
+ var LinkSet = 31388;
2835
+ var Feed = 31890;
2660
2836
  var Date2 = 31922;
2661
2837
  var Time = 31923;
2662
2838
  var Calendar = 31924;
@@ -2664,8 +2840,24 @@ var NostrTools = (() => {
2664
2840
  var RelayReview = 31987;
2665
2841
  var Handlerrecommendation = 31989;
2666
2842
  var Handlerinformation = 31990;
2843
+ var SoftwareApplication = 32267;
2844
+ var LegacyNsiteFile = 34128;
2845
+ var VideoViewEvent = 34237;
2667
2846
  var CommunityDefinition = 34550;
2847
+ var NsiteNamed = 35128;
2848
+ var GeocacheListing = 37515;
2849
+ var GeocacheLogEntry = 37516;
2850
+ var CashuMintAnnouncement = 38172;
2851
+ var FedimintAnnouncement = 38173;
2852
+ var PeerToPeerOrderEvents = 38383;
2668
2853
  var GroupMetadata = 39e3;
2854
+ var SimpleGroupAdmins = 39001;
2855
+ var SimpleGroupMembers = 39002;
2856
+ var SimpleGroupRoles = 39003;
2857
+ var SimpleGroupLiveKitParticipants = 39004;
2858
+ var StarterPacks = 39089;
2859
+ var MediaStarterPacks = 39092;
2860
+ var WebBookmarks = 39701;
2669
2861
 
2670
2862
  // filter.ts
2671
2863
  function matchFilter(filter, event) {
@@ -3057,19 +3249,38 @@ var NostrTools = (() => {
3057
3249
  }, this.publishTimeout);
3058
3250
  this.openEventPublishes.set(event.id, { resolve, reject, timeout });
3059
3251
  });
3060
- this.send('["EVENT",' + JSON.stringify(event) + "]");
3252
+ try {
3253
+ await this.send('["EVENT",' + JSON.stringify(event) + "]");
3254
+ } catch (err) {
3255
+ const ep = this.openEventPublishes.get(event.id);
3256
+ if (ep) {
3257
+ ep.reject(err);
3258
+ this.openEventPublishes.delete(event.id);
3259
+ }
3260
+ }
3061
3261
  this.ongoingOperations--;
3062
3262
  if (this.ongoingOperations === 0)
3063
3263
  this.idleSince = Date.now();
3064
3264
  return ret;
3065
3265
  }
3066
3266
  async count(filters, params) {
3267
+ return (await this.countWithHLL(filters, params)).count;
3268
+ }
3269
+ async countWithHLL(filters, params) {
3067
3270
  this.serial++;
3068
3271
  const id = params?.id || "count:" + this.serial;
3069
3272
  const ret = new Promise((resolve, reject) => {
3070
3273
  this.openCountRequests.set(id, { resolve, reject });
3071
3274
  });
3072
- this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
3275
+ try {
3276
+ await this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
3277
+ } catch (err) {
3278
+ const cr = this.openCountRequests.get(id);
3279
+ if (cr) {
3280
+ cr.reject(err);
3281
+ this.openCountRequests.delete(id);
3282
+ }
3283
+ }
3073
3284
  return ret;
3074
3285
  }
3075
3286
  subscribe(filters, params) {
@@ -3147,7 +3358,7 @@ var NostrTools = (() => {
3147
3358
  const payload = data[2];
3148
3359
  const cr = this.openCountRequests.get(id);
3149
3360
  if (cr) {
3150
- cr.resolve(payload.count);
3361
+ cr.resolve(payload);
3151
3362
  this.openCountRequests.delete(id);
3152
3363
  }
3153
3364
  return;
@@ -3177,8 +3388,14 @@ var NostrTools = (() => {
3177
3388
  case "CLOSED": {
3178
3389
  const id = data[1];
3179
3390
  const so = this.openSubs.get(id);
3180
- if (!so)
3391
+ if (!so) {
3392
+ const cr = this.openCountRequests.get(id);
3393
+ if (cr) {
3394
+ cr.reject(new Error(data[2]));
3395
+ this.openCountRequests.delete(id);
3396
+ }
3181
3397
  return;
3398
+ }
3182
3399
  so.closed = true;
3183
3400
  so.close(data[2]);
3184
3401
  return;
@@ -3304,6 +3521,61 @@ var NostrTools = (() => {
3304
3521
  return true;
3305
3522
  };
3306
3523
 
3524
+ // nip45.ts
3525
+ var M = 256;
3526
+ var HLL_HEX_LENGTH = M * 2;
3527
+ var utf8Encoder2 = new TextEncoder();
3528
+ function getCountManyFilter(target, directive) {
3529
+ switch (directive) {
3530
+ case "reactions":
3531
+ return { "#e": [target], kinds: [7] };
3532
+ case "reposts":
3533
+ return { "#e": [target], kinds: [6] };
3534
+ case "quotes":
3535
+ return { "#q": [target], kinds: [1, 1111] };
3536
+ case "replies":
3537
+ return { "#e": [target], kinds: [1] };
3538
+ case "comments":
3539
+ return { "#E": [target], kinds: [1111] };
3540
+ case "followers":
3541
+ return { "#p": [target], kinds: [3] };
3542
+ }
3543
+ }
3544
+ function newHll() {
3545
+ return new Uint8Array(M);
3546
+ }
3547
+ function hllDecode(hex2) {
3548
+ if (hex2.length !== HLL_HEX_LENGTH || !/^[0-9a-fA-F]+$/.test(hex2))
3549
+ return void 0;
3550
+ const registers = new Uint8Array(M);
3551
+ for (let i2 = 0; i2 < M; i2++) {
3552
+ registers[i2] = parseInt(hex2.slice(i2 * 2, i2 * 2 + 2), 16);
3553
+ }
3554
+ return registers;
3555
+ }
3556
+ function hllEncode(registers) {
3557
+ if (registers.length !== M)
3558
+ throw new Error(`invalid number of registers ${registers.length}`);
3559
+ let hex2 = "";
3560
+ for (let i2 = 0; i2 < M; i2++) {
3561
+ hex2 += registers[i2].toString(16).padStart(2, "0");
3562
+ }
3563
+ return hex2;
3564
+ }
3565
+ function mergeHll(target, source) {
3566
+ if (target.length === 0)
3567
+ target = newHll();
3568
+ if (target.length !== M)
3569
+ throw new Error(`invalid number of registers ${target.length}`);
3570
+ if (source.length !== M)
3571
+ throw new Error(`invalid number of registers ${source.length}`);
3572
+ for (let i2 = 0; i2 < M; i2++) {
3573
+ if (source[i2] > target[i2])
3574
+ target[i2] = source[i2];
3575
+ }
3576
+ return target;
3577
+ }
3578
+
3307
3579
  // abstract-pool.ts
3308
3580
  var AbstractSimplePool = class {
3309
3581
  relays = /* @__PURE__ */ new Map();
@@ -3531,6 +3803,48 @@ var NostrTools = (() => {
3531
3803
  events.sort((a, b) => b.created_at - a.created_at);
3532
3804
  return events[0] || null;
3533
3805
  }
3806
+ async countMany(relays, target, directive, params) {
3807
+ const filter = getCountManyFilter(target, directive);
3808
+ const urls = [];
3809
+ for (let i2 = 0; i2 < relays.length; i2++) {
3810
+ const url = normalizeURL(relays[i2]);
3811
+ if (urls.indexOf(url) === -1)
3812
+ urls.push(url);
3813
+ }
3814
+ const responses = await Promise.all(
3815
+ urls.map(async (url) => {
3816
+ if (this.allowConnectingToRelay?.(url, ["read", [filter]]) === false)
3817
+ return null;
3818
+ let relay;
3819
+ try {
3820
+ relay = await this.ensureRelay(url, {
3821
+ connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,
3822
+ abort: params?.abort
3823
+ });
3824
+ } catch (err) {
3825
+ this.onRelayConnectionFailure?.(url);
3826
+ return null;
3827
+ }
3828
+ this.onRelayConnectionSuccess?.(url);
3829
+ return relay.countWithHLL([filter], { id: params?.id }).catch(() => null);
3830
+ })
3831
+ );
3832
+ let count = 0;
3833
+ let hll;
3834
+ for (const response of responses) {
3835
+ if (!response)
3836
+ continue;
3837
+ if (response.count > count)
3838
+ count = response.count;
3839
+ if (!response.hll || response.hll.length !== 512)
3840
+ continue;
3841
+ const registers = hllDecode(response.hll);
3842
+ if (!registers)
3843
+ continue;
3844
+ hll = mergeHll(hll || new Uint8Array(0), registers);
3845
+ }
3846
+ return hll ? { count, hll: hllEncode(hll) } : { count };
3847
+ }
3534
3848
  publish(relays, event, params) {
3535
3849
  return relays.map(normalizeURL).map(async (url, i2, arr) => {
3536
3850
  if (arr.indexOf(url) !== i2) {