nostr-tools 2.23.8 → 2.23.11
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/lib/cjs/abstract-pool.js +163 -7
- package/lib/cjs/abstract-pool.js.map +4 -4
- package/lib/cjs/abstract-relay.js +59 -6
- package/lib/cjs/abstract-relay.js.map +2 -2
- package/lib/cjs/filter.js.map +1 -1
- package/lib/cjs/index.js +412 -64
- package/lib/cjs/index.js.map +4 -4
- package/lib/cjs/kinds.js +196 -4
- package/lib/cjs/kinds.js.map +2 -2
- package/lib/cjs/nip17.js.map +2 -2
- package/lib/cjs/nip18.js.map +2 -2
- package/lib/cjs/nip25.js.map +1 -1
- package/lib/cjs/nip28.js.map +2 -2
- package/lib/cjs/nip42.js.map +2 -2
- package/lib/cjs/nip45.js +183 -0
- package/lib/cjs/nip45.js.map +7 -0
- package/lib/cjs/nip46.js +163 -7
- package/lib/cjs/nip46.js.map +4 -4
- package/lib/cjs/nip47.js.map +2 -2
- package/lib/cjs/nip57.js.map +1 -1
- package/lib/cjs/nip58.js.map +2 -2
- package/lib/cjs/nip59.js.map +2 -2
- package/lib/cjs/nip75.js.map +2 -2
- package/lib/cjs/nip94.js.map +2 -2
- package/lib/cjs/nip98.js.map +2 -2
- package/lib/cjs/nip99.js.map +2 -2
- package/lib/cjs/nipb0.js +1064 -0
- package/lib/cjs/nipb0.js.map +7 -0
- package/lib/cjs/pool.js +163 -7
- package/lib/cjs/pool.js.map +4 -4
- package/lib/cjs/relay.js +59 -6
- package/lib/cjs/relay.js.map +2 -2
- package/lib/esm/abstract-pool.js +163 -7
- package/lib/esm/abstract-pool.js.map +4 -4
- package/lib/esm/abstract-relay.js +59 -6
- package/lib/esm/abstract-relay.js.map +2 -2
- package/lib/esm/filter.js.map +1 -1
- package/lib/esm/index.js +388 -40
- package/lib/esm/index.js.map +4 -4
- package/lib/esm/kinds.js +196 -4
- package/lib/esm/kinds.js.map +2 -2
- package/lib/esm/nip17.js.map +2 -2
- package/lib/esm/nip18.js.map +2 -2
- package/lib/esm/nip25.js.map +1 -1
- package/lib/esm/nip28.js.map +2 -2
- package/lib/esm/nip42.js.map +2 -2
- package/lib/esm/nip45.js +162 -0
- package/lib/esm/nip45.js.map +7 -0
- package/lib/esm/nip46.js +163 -7
- package/lib/esm/nip46.js.map +4 -4
- package/lib/esm/nip47.js.map +2 -2
- package/lib/esm/nip57.js.map +1 -1
- package/lib/esm/nip58.js.map +2 -2
- package/lib/esm/nip59.js.map +2 -2
- package/lib/esm/nip75.js.map +2 -2
- package/lib/esm/nip94.js.map +2 -2
- package/lib/esm/nip98.js.map +2 -2
- package/lib/esm/nip99.js.map +2 -2
- package/lib/esm/nipb0.js +1049 -0
- package/lib/esm/nipb0.js.map +7 -0
- package/lib/esm/pool.js +163 -7
- package/lib/esm/pool.js.map +4 -4
- package/lib/esm/relay.js +59 -6
- package/lib/esm/relay.js.map +2 -2
- package/lib/nostr.bundle.js +361 -15
- package/lib/nostr.bundle.js.map +4 -4
- package/lib/types/abstract-pool.d.ts +10 -0
- package/lib/types/abstract-relay.d.ts +15 -1
- package/lib/types/kinds.d.ts +200 -8
- package/lib/types/nip45.d.ts +13 -0
- package/lib/types/nip45.test.d.ts +1 -0
- package/lib/types/nipb0.d.ts +129 -0
- package/lib/types/relay.d.ts +2 -2
- package/package.json +13 -1
package/lib/esm/index.js
CHANGED
|
@@ -232,39 +232,61 @@ var verifyEvent = i.verifyEvent;
|
|
|
232
232
|
// kinds.ts
|
|
233
233
|
var kinds_exports = {};
|
|
234
234
|
__export(kinds_exports, {
|
|
235
|
+
AIEmbeddings: () => AIEmbeddings,
|
|
236
|
+
AppCurationSet: () => AppCurationSet,
|
|
235
237
|
Application: () => Application,
|
|
238
|
+
AuthoredPodcasts: () => AuthoredPodcasts,
|
|
236
239
|
BadgeAward: () => BadgeAward,
|
|
237
240
|
BadgeDefinition: () => BadgeDefinition,
|
|
241
|
+
Bid: () => Bid,
|
|
242
|
+
BidConfirmation: () => BidConfirmation,
|
|
243
|
+
BlobsAuth: () => BlobsAuth,
|
|
238
244
|
BlockedRelaysList: () => BlockedRelaysList,
|
|
239
245
|
BlossomServerList: () => BlossomServerList,
|
|
240
246
|
BookmarkList: () => BookmarkList,
|
|
241
247
|
Bookmarksets: () => Bookmarksets,
|
|
242
248
|
Calendar: () => Calendar,
|
|
243
249
|
CalendarEventRSVP: () => CalendarEventRSVP,
|
|
250
|
+
CashuMintAnnouncement: () => CashuMintAnnouncement,
|
|
251
|
+
CashuWalletEvent: () => CashuWalletEvent,
|
|
252
|
+
CashuWalletHistory: () => CashuWalletHistory,
|
|
253
|
+
CashuWalletTokens: () => CashuWalletTokens,
|
|
244
254
|
ChannelCreation: () => ChannelCreation,
|
|
245
255
|
ChannelHideMessage: () => ChannelHideMessage,
|
|
246
256
|
ChannelMessage: () => ChannelMessage,
|
|
247
257
|
ChannelMetadata: () => ChannelMetadata,
|
|
248
258
|
ChannelMuteUser: () => ChannelMuteUser,
|
|
249
259
|
ChatMessage: () => ChatMessage,
|
|
260
|
+
Chess: () => Chess,
|
|
250
261
|
ClassifiedListing: () => ClassifiedListing,
|
|
251
262
|
ClientAuth: () => ClientAuth,
|
|
263
|
+
CodeSnippet: () => CodeSnippet,
|
|
264
|
+
CoinjoinPool: () => CoinjoinPool,
|
|
252
265
|
Comment: () => Comment,
|
|
253
266
|
CommunitiesList: () => CommunitiesList,
|
|
254
267
|
CommunityDefinition: () => CommunityDefinition,
|
|
255
268
|
CommunityPostApproval: () => CommunityPostApproval,
|
|
269
|
+
ConferenceEvent: () => ConferenceEvent,
|
|
256
270
|
Contacts: () => Contacts,
|
|
257
271
|
CreateOrUpdateProduct: () => CreateOrUpdateProduct,
|
|
258
272
|
CreateOrUpdateStall: () => CreateOrUpdateStall,
|
|
273
|
+
CuratedVideoSets: () => CuratedVideoSets,
|
|
259
274
|
Curationsets: () => Curationsets,
|
|
260
275
|
Date: () => Date2,
|
|
276
|
+
DecoupledEncryptionKeyDistribution: () => DecoupledEncryptionKeyDistribution,
|
|
277
|
+
DecoupledKeyAnnouncement: () => DecoupledKeyAnnouncement,
|
|
278
|
+
DecoupledKeyClientAnnouncement: () => DecoupledKeyClientAnnouncement,
|
|
261
279
|
DirectMessageRelaysList: () => DirectMessageRelaysList,
|
|
262
280
|
DraftClassifiedListing: () => DraftClassifiedListing,
|
|
281
|
+
DraftEvent: () => DraftEvent,
|
|
263
282
|
DraftLong: () => DraftLong,
|
|
264
283
|
Emojisets: () => Emojisets,
|
|
265
284
|
EncryptedDirectMessage: () => EncryptedDirectMessage,
|
|
266
285
|
EventDeletion: () => EventDeletion,
|
|
286
|
+
FavoritePodcasts: () => FavoritePodcasts,
|
|
267
287
|
FavoriteRelays: () => FavoriteRelays,
|
|
288
|
+
FedimintAnnouncement: () => FedimintAnnouncement,
|
|
289
|
+
Feed: () => Feed,
|
|
268
290
|
FileMessage: () => FileMessage,
|
|
269
291
|
FileMetadata: () => FileMetadata,
|
|
270
292
|
FileServerPreference: () => FileServerPreference,
|
|
@@ -272,55 +294,129 @@ __export(kinds_exports, {
|
|
|
272
294
|
ForumThread: () => ForumThread,
|
|
273
295
|
GenericRepost: () => GenericRepost,
|
|
274
296
|
Genericlists: () => Genericlists,
|
|
297
|
+
GeocacheListing: () => GeocacheListing,
|
|
298
|
+
GeocacheLog: () => GeocacheLog,
|
|
299
|
+
GeocacheLogEntry: () => GeocacheLogEntry,
|
|
300
|
+
GeocacheProofOfFind: () => GeocacheProofOfFind,
|
|
275
301
|
GiftWrap: () => GiftWrap,
|
|
302
|
+
GitPullRequest: () => GitPullRequest,
|
|
303
|
+
GitPullRequestUpdate: () => GitPullRequestUpdate,
|
|
304
|
+
GoodWikiAuthorList: () => GoodWikiAuthorList,
|
|
305
|
+
GoodWikiRelayList: () => GoodWikiRelayList,
|
|
276
306
|
GroupMetadata: () => GroupMetadata,
|
|
277
307
|
HTTPAuth: () => HTTPAuth,
|
|
278
308
|
Handlerinformation: () => Handlerinformation,
|
|
279
309
|
Handlerrecommendation: () => Handlerrecommendation,
|
|
280
310
|
Highlights: () => Highlights,
|
|
311
|
+
InteractiveRoom: () => InteractiveRoom,
|
|
281
312
|
InterestsList: () => InterestsList,
|
|
282
313
|
Interestsets: () => Interestsets,
|
|
314
|
+
Issue: () => Issue,
|
|
283
315
|
JobFeedback: () => JobFeedback,
|
|
284
316
|
JobRequest: () => JobRequest,
|
|
285
317
|
JobResult: () => JobResult,
|
|
286
318
|
Label: () => Label,
|
|
319
|
+
LegacyNsiteFile: () => LegacyNsiteFile,
|
|
287
320
|
LightningPubRPC: () => LightningPubRPC,
|
|
321
|
+
LinkSet: () => LinkSet,
|
|
288
322
|
LiveChatMessage: () => LiveChatMessage,
|
|
289
323
|
LiveEvent: () => LiveEvent,
|
|
290
324
|
LongFormArticle: () => LongFormArticle,
|
|
325
|
+
MarketplaceUI: () => MarketplaceUI,
|
|
326
|
+
MediaFollows: () => MediaFollows,
|
|
327
|
+
MediaStarterPacks: () => MediaStarterPacks,
|
|
328
|
+
MergeRequests: () => MergeRequests,
|
|
291
329
|
Metadata: () => Metadata,
|
|
330
|
+
ModularArticleContent: () => ModularArticleContent,
|
|
331
|
+
ModularArticleHeader: () => ModularArticleHeader,
|
|
332
|
+
MuteSets: () => MuteSets,
|
|
292
333
|
Mutelist: () => Mutelist,
|
|
293
334
|
NWCWalletInfo: () => NWCWalletInfo,
|
|
294
335
|
NWCWalletRequest: () => NWCWalletRequest,
|
|
295
336
|
NWCWalletResponse: () => NWCWalletResponse,
|
|
296
337
|
NormalVideo: () => NormalVideo,
|
|
297
338
|
NostrConnect: () => NostrConnect,
|
|
339
|
+
NsiteNamed: () => NsiteNamed,
|
|
340
|
+
NsiteRoot: () => NsiteRoot,
|
|
341
|
+
NutZap: () => NutZap,
|
|
342
|
+
NutZapInfo: () => NutZapInfo,
|
|
298
343
|
OpenTimestamps: () => OpenTimestamps,
|
|
344
|
+
Patch: () => Patch,
|
|
345
|
+
PeerToPeerOrderEvents: () => PeerToPeerOrderEvents,
|
|
299
346
|
Photo: () => Photo,
|
|
300
347
|
Pinlist: () => Pinlist,
|
|
348
|
+
PodcastEpisode: () => PodcastEpisode,
|
|
349
|
+
PodcastMetadata: () => PodcastMetadata,
|
|
301
350
|
Poll: () => Poll,
|
|
302
351
|
PollResponse: () => PollResponse,
|
|
303
352
|
PrivateDirectMessage: () => PrivateDirectMessage,
|
|
353
|
+
PrivateEventRelayList: () => PrivateEventRelayList,
|
|
304
354
|
ProblemTracker: () => ProblemTracker,
|
|
355
|
+
ProductSoldAsAuction: () => ProductSoldAsAuction,
|
|
305
356
|
ProfileBadges: () => ProfileBadges,
|
|
357
|
+
ProxyAnnouncement: () => ProxyAnnouncement,
|
|
306
358
|
PublicChatsList: () => PublicChatsList,
|
|
359
|
+
PublicMessage: () => PublicMessage,
|
|
307
360
|
Reaction: () => Reaction,
|
|
361
|
+
ReactionToWebsite: () => ReactionToWebsite,
|
|
308
362
|
RecommendRelay: () => RecommendRelay,
|
|
363
|
+
Redirects: () => Redirects,
|
|
364
|
+
RelayDiscovery: () => RelayDiscovery,
|
|
309
365
|
RelayList: () => RelayList,
|
|
366
|
+
RelayMonitorAnnouncement: () => RelayMonitorAnnouncement,
|
|
310
367
|
RelayReview: () => RelayReview,
|
|
368
|
+
RelayReviews: () => RelayReviews,
|
|
311
369
|
Relaysets: () => Relaysets,
|
|
370
|
+
ReleaseArtifactSets: () => ReleaseArtifactSets,
|
|
371
|
+
Reply: () => Reply,
|
|
312
372
|
Report: () => Report,
|
|
313
373
|
Reporting: () => Reporting,
|
|
374
|
+
RepositoryAnnouncement: () => RepositoryAnnouncement,
|
|
375
|
+
RepositoryState: () => RepositoryState,
|
|
314
376
|
Repost: () => Repost,
|
|
377
|
+
ReservedCashuWalletTokens: () => ReservedCashuWalletTokens,
|
|
378
|
+
RoomPresence: () => RoomPresence,
|
|
379
|
+
Scroll: () => Scroll,
|
|
315
380
|
Seal: () => Seal,
|
|
316
381
|
SearchRelaysList: () => SearchRelaysList,
|
|
317
382
|
ShortTextNote: () => ShortTextNote,
|
|
318
383
|
ShortVideo: () => ShortVideo,
|
|
384
|
+
SimpleGroupAdmins: () => SimpleGroupAdmins,
|
|
385
|
+
SimpleGroupCreateGroup: () => SimpleGroupCreateGroup,
|
|
386
|
+
SimpleGroupCreateInvite: () => SimpleGroupCreateInvite,
|
|
387
|
+
SimpleGroupDeleteEvent: () => SimpleGroupDeleteEvent,
|
|
388
|
+
SimpleGroupDeleteGroup: () => SimpleGroupDeleteGroup,
|
|
389
|
+
SimpleGroupEditMetadata: () => SimpleGroupEditMetadata,
|
|
390
|
+
SimpleGroupJoinRequest: () => SimpleGroupJoinRequest,
|
|
391
|
+
SimpleGroupLeaveRequest: () => SimpleGroupLeaveRequest,
|
|
392
|
+
SimpleGroupList: () => SimpleGroupList,
|
|
393
|
+
SimpleGroupLiveKitParticipants: () => SimpleGroupLiveKitParticipants,
|
|
394
|
+
SimpleGroupMembers: () => SimpleGroupMembers,
|
|
395
|
+
SimpleGroupPutUser: () => SimpleGroupPutUser,
|
|
396
|
+
SimpleGroupRemoveUser: () => SimpleGroupRemoveUser,
|
|
397
|
+
SimpleGroupReply: () => SimpleGroupReply,
|
|
398
|
+
SimpleGroupRoles: () => SimpleGroupRoles,
|
|
399
|
+
SimpleGroupThreadedReply: () => SimpleGroupThreadedReply,
|
|
400
|
+
SlideSet: () => SlideSet,
|
|
401
|
+
SoftwareApplication: () => SoftwareApplication,
|
|
402
|
+
StarterPacks: () => StarterPacks,
|
|
403
|
+
StatusApplied: () => StatusApplied,
|
|
404
|
+
StatusClosed: () => StatusClosed,
|
|
405
|
+
StatusDraft: () => StatusDraft,
|
|
406
|
+
StatusOpen: () => StatusOpen,
|
|
407
|
+
TidalLogin: () => TidalLogin,
|
|
319
408
|
Time: () => Time,
|
|
409
|
+
Torrent: () => Torrent,
|
|
410
|
+
TorrentComment: () => TorrentComment,
|
|
411
|
+
TransportMethodAnnouncement: () => TransportMethodAnnouncement,
|
|
320
412
|
UserEmojiList: () => UserEmojiList,
|
|
413
|
+
UserGraspList: () => UserGraspList,
|
|
321
414
|
UserStatuses: () => UserStatuses,
|
|
415
|
+
VideoViewEvent: () => VideoViewEvent,
|
|
322
416
|
Voice: () => Voice,
|
|
323
417
|
VoiceComment: () => VoiceComment,
|
|
418
|
+
WebBookmarks: () => WebBookmarks,
|
|
419
|
+
WikiArticle: () => WikiArticle,
|
|
324
420
|
Zap: () => Zap,
|
|
325
421
|
ZapGoal: () => ZapGoal,
|
|
326
422
|
ZapRequest: () => ZapRequest,
|
|
@@ -368,40 +464,83 @@ var Repost = 6;
|
|
|
368
464
|
var Reaction = 7;
|
|
369
465
|
var BadgeAward = 8;
|
|
370
466
|
var ChatMessage = 9;
|
|
467
|
+
var SimpleGroupThreadedReply = 10;
|
|
371
468
|
var ForumThread = 11;
|
|
469
|
+
var SimpleGroupReply = 12;
|
|
372
470
|
var Seal = 13;
|
|
373
471
|
var PrivateDirectMessage = 14;
|
|
374
472
|
var FileMessage = 15;
|
|
375
473
|
var GenericRepost = 16;
|
|
474
|
+
var ReactionToWebsite = 17;
|
|
376
475
|
var Photo = 20;
|
|
377
476
|
var NormalVideo = 21;
|
|
378
477
|
var ShortVideo = 22;
|
|
478
|
+
var PublicMessage = 24;
|
|
379
479
|
var ChannelCreation = 40;
|
|
380
480
|
var ChannelMetadata = 41;
|
|
381
481
|
var ChannelMessage = 42;
|
|
382
482
|
var ChannelHideMessage = 43;
|
|
383
483
|
var ChannelMuteUser = 44;
|
|
484
|
+
var PodcastEpisode = 54;
|
|
485
|
+
var Chess = 64;
|
|
486
|
+
var MergeRequests = 818;
|
|
487
|
+
var PollResponse = 1018;
|
|
488
|
+
var Bid = 1021;
|
|
489
|
+
var BidConfirmation = 1022;
|
|
384
490
|
var OpenTimestamps = 1040;
|
|
385
491
|
var GiftWrap = 1059;
|
|
386
|
-
var Poll = 1068;
|
|
387
492
|
var FileMetadata = 1063;
|
|
493
|
+
var Poll = 1068;
|
|
388
494
|
var Comment = 1111;
|
|
389
|
-
var LiveChatMessage = 1311;
|
|
390
495
|
var Voice = 1222;
|
|
496
|
+
var Scroll = 1227;
|
|
391
497
|
var VoiceComment = 1244;
|
|
498
|
+
var LiveChatMessage = 1311;
|
|
499
|
+
var CodeSnippet = 1337;
|
|
500
|
+
var Patch = 1617;
|
|
501
|
+
var GitPullRequest = 1618;
|
|
502
|
+
var GitPullRequestUpdate = 1619;
|
|
503
|
+
var Issue = 1621;
|
|
504
|
+
var Reply = 1622;
|
|
505
|
+
var StatusOpen = 1630;
|
|
506
|
+
var StatusApplied = 1631;
|
|
507
|
+
var StatusClosed = 1632;
|
|
508
|
+
var StatusDraft = 1633;
|
|
392
509
|
var ProblemTracker = 1971;
|
|
393
510
|
var Report = 1984;
|
|
394
511
|
var Reporting = 1984;
|
|
395
512
|
var Label = 1985;
|
|
513
|
+
var RelayReviews = 1986;
|
|
514
|
+
var AIEmbeddings = 1987;
|
|
515
|
+
var Torrent = 2003;
|
|
516
|
+
var TorrentComment = 2004;
|
|
517
|
+
var CoinjoinPool = 2022;
|
|
518
|
+
var DecoupledKeyClientAnnouncement = 4454;
|
|
519
|
+
var DecoupledEncryptionKeyDistribution = 4455;
|
|
396
520
|
var CommunityPostApproval = 4550;
|
|
397
521
|
var JobRequest = 5999;
|
|
398
522
|
var JobResult = 6999;
|
|
399
523
|
var JobFeedback = 7e3;
|
|
524
|
+
var ReservedCashuWalletTokens = 7374;
|
|
525
|
+
var CashuWalletTokens = 7375;
|
|
526
|
+
var CashuWalletHistory = 7376;
|
|
527
|
+
var GeocacheLog = 7516;
|
|
528
|
+
var GeocacheProofOfFind = 7517;
|
|
529
|
+
var SimpleGroupPutUser = 9e3;
|
|
530
|
+
var SimpleGroupRemoveUser = 9001;
|
|
531
|
+
var SimpleGroupEditMetadata = 9002;
|
|
532
|
+
var SimpleGroupDeleteEvent = 9005;
|
|
533
|
+
var SimpleGroupCreateGroup = 9007;
|
|
534
|
+
var SimpleGroupDeleteGroup = 9008;
|
|
535
|
+
var SimpleGroupCreateInvite = 9009;
|
|
536
|
+
var SimpleGroupJoinRequest = 9021;
|
|
537
|
+
var SimpleGroupLeaveRequest = 9022;
|
|
400
538
|
var ZapGoal = 9041;
|
|
539
|
+
var NutZap = 9321;
|
|
540
|
+
var TidalLogin = 9467;
|
|
401
541
|
var ZapRequest = 9734;
|
|
402
542
|
var Zap = 9735;
|
|
403
543
|
var Highlights = 9802;
|
|
404
|
-
var PollResponse = 1018;
|
|
405
544
|
var Mutelist = 1e4;
|
|
406
545
|
var Pinlist = 10001;
|
|
407
546
|
var RelayList = 10002;
|
|
@@ -410,37 +549,74 @@ var CommunitiesList = 10004;
|
|
|
410
549
|
var PublicChatsList = 10005;
|
|
411
550
|
var BlockedRelaysList = 10006;
|
|
412
551
|
var SearchRelaysList = 10007;
|
|
552
|
+
var SimpleGroupList = 10009;
|
|
413
553
|
var FavoriteRelays = 10012;
|
|
554
|
+
var PrivateEventRelayList = 10013;
|
|
414
555
|
var InterestsList = 10015;
|
|
556
|
+
var NutZapInfo = 10019;
|
|
557
|
+
var MediaFollows = 10020;
|
|
415
558
|
var UserEmojiList = 10030;
|
|
559
|
+
var DecoupledKeyAnnouncement = 10044;
|
|
416
560
|
var DirectMessageRelaysList = 10050;
|
|
417
|
-
var
|
|
561
|
+
var FavoritePodcasts = 10054;
|
|
418
562
|
var BlossomServerList = 10063;
|
|
563
|
+
var FileServerPreference = 10096;
|
|
564
|
+
var GoodWikiAuthorList = 10101;
|
|
565
|
+
var GoodWikiRelayList = 10102;
|
|
566
|
+
var PodcastMetadata = 10154;
|
|
567
|
+
var AuthoredPodcasts = 10164;
|
|
568
|
+
var RelayMonitorAnnouncement = 10166;
|
|
569
|
+
var RoomPresence = 10312;
|
|
570
|
+
var UserGraspList = 10317;
|
|
571
|
+
var ProxyAnnouncement = 10377;
|
|
572
|
+
var TransportMethodAnnouncement = 11111;
|
|
419
573
|
var NWCWalletInfo = 13194;
|
|
574
|
+
var NsiteRoot = 15128;
|
|
575
|
+
var CashuWalletEvent = 17375;
|
|
420
576
|
var LightningPubRPC = 21e3;
|
|
421
577
|
var ClientAuth = 22242;
|
|
422
578
|
var NWCWalletRequest = 23194;
|
|
423
579
|
var NWCWalletResponse = 23195;
|
|
424
580
|
var NostrConnect = 24133;
|
|
581
|
+
var BlobsAuth = 24242;
|
|
425
582
|
var HTTPAuth = 27235;
|
|
426
583
|
var Followsets = 3e4;
|
|
427
584
|
var Genericlists = 30001;
|
|
428
585
|
var Relaysets = 30002;
|
|
429
586
|
var Bookmarksets = 30003;
|
|
430
587
|
var Curationsets = 30004;
|
|
588
|
+
var CuratedVideoSets = 30005;
|
|
589
|
+
var MuteSets = 30007;
|
|
431
590
|
var ProfileBadges = 30008;
|
|
432
591
|
var BadgeDefinition = 30009;
|
|
433
592
|
var Interestsets = 30015;
|
|
434
593
|
var CreateOrUpdateStall = 30017;
|
|
435
594
|
var CreateOrUpdateProduct = 30018;
|
|
595
|
+
var MarketplaceUI = 30019;
|
|
596
|
+
var ProductSoldAsAuction = 30020;
|
|
436
597
|
var LongFormArticle = 30023;
|
|
437
598
|
var DraftLong = 30024;
|
|
438
599
|
var Emojisets = 30030;
|
|
600
|
+
var ModularArticleHeader = 30040;
|
|
601
|
+
var ModularArticleContent = 30041;
|
|
602
|
+
var ReleaseArtifactSets = 30063;
|
|
439
603
|
var Application = 30078;
|
|
604
|
+
var RelayDiscovery = 30166;
|
|
605
|
+
var AppCurationSet = 30267;
|
|
440
606
|
var LiveEvent = 30311;
|
|
607
|
+
var InteractiveRoom = 30312;
|
|
608
|
+
var ConferenceEvent = 30313;
|
|
441
609
|
var UserStatuses = 30315;
|
|
610
|
+
var SlideSet = 30388;
|
|
442
611
|
var ClassifiedListing = 30402;
|
|
443
612
|
var DraftClassifiedListing = 30403;
|
|
613
|
+
var RepositoryAnnouncement = 30617;
|
|
614
|
+
var RepositoryState = 30618;
|
|
615
|
+
var WikiArticle = 30818;
|
|
616
|
+
var Redirects = 30819;
|
|
617
|
+
var DraftEvent = 31234;
|
|
618
|
+
var LinkSet = 31388;
|
|
619
|
+
var Feed = 31890;
|
|
444
620
|
var Date2 = 31922;
|
|
445
621
|
var Time = 31923;
|
|
446
622
|
var Calendar = 31924;
|
|
@@ -448,8 +624,24 @@ var CalendarEventRSVP = 31925;
|
|
|
448
624
|
var RelayReview = 31987;
|
|
449
625
|
var Handlerrecommendation = 31989;
|
|
450
626
|
var Handlerinformation = 31990;
|
|
627
|
+
var SoftwareApplication = 32267;
|
|
628
|
+
var LegacyNsiteFile = 34128;
|
|
629
|
+
var VideoViewEvent = 34237;
|
|
451
630
|
var CommunityDefinition = 34550;
|
|
631
|
+
var NsiteNamed = 35128;
|
|
632
|
+
var GeocacheListing = 37515;
|
|
633
|
+
var GeocacheLogEntry = 37516;
|
|
634
|
+
var CashuMintAnnouncement = 38172;
|
|
635
|
+
var FedimintAnnouncement = 38173;
|
|
636
|
+
var PeerToPeerOrderEvents = 38383;
|
|
452
637
|
var GroupMetadata = 39e3;
|
|
638
|
+
var SimpleGroupAdmins = 39001;
|
|
639
|
+
var SimpleGroupMembers = 39002;
|
|
640
|
+
var SimpleGroupRoles = 39003;
|
|
641
|
+
var SimpleGroupLiveKitParticipants = 39004;
|
|
642
|
+
var StarterPacks = 39089;
|
|
643
|
+
var MediaStarterPacks = 39092;
|
|
644
|
+
var WebBookmarks = 39701;
|
|
453
645
|
|
|
454
646
|
// filter.ts
|
|
455
647
|
function matchFilter(filter, event) {
|
|
@@ -611,12 +803,14 @@ var AbstractRelay = class {
|
|
|
611
803
|
openSubs = /* @__PURE__ */ new Map();
|
|
612
804
|
enablePing;
|
|
613
805
|
enableReconnect;
|
|
806
|
+
idleTimeout = 0;
|
|
614
807
|
idleSince = Date.now();
|
|
615
808
|
ongoingOperations = 0;
|
|
616
809
|
reconnectTimeoutHandle;
|
|
617
810
|
pingIntervalHandle;
|
|
618
811
|
reconnectAttempts = 0;
|
|
619
812
|
skipReconnection = false;
|
|
813
|
+
idleTimeoutHandle;
|
|
620
814
|
connectionPromise;
|
|
621
815
|
openCountRequests = /* @__PURE__ */ new Map();
|
|
622
816
|
openEventPublishes = /* @__PURE__ */ new Map();
|
|
@@ -632,6 +826,8 @@ var AbstractRelay = class {
|
|
|
632
826
|
this._WebSocket = opts.websocketImplementation || WebSocket;
|
|
633
827
|
this.enablePing = opts.enablePing;
|
|
634
828
|
this.enableReconnect = opts.enableReconnect || false;
|
|
829
|
+
if (opts.idleTimeout)
|
|
830
|
+
this.idleTimeout = opts.idleTimeout;
|
|
635
831
|
}
|
|
636
832
|
static async connect(url, opts) {
|
|
637
833
|
const relay = new AbstractRelay(url, opts);
|
|
@@ -655,6 +851,22 @@ var AbstractRelay = class {
|
|
|
655
851
|
get connected() {
|
|
656
852
|
return this._connected;
|
|
657
853
|
}
|
|
854
|
+
clearIdleTimeout() {
|
|
855
|
+
if (this.idleTimeoutHandle) {
|
|
856
|
+
clearTimeout(this.idleTimeoutHandle);
|
|
857
|
+
this.idleTimeoutHandle = void 0;
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
scheduleIdleClose() {
|
|
861
|
+
this.clearIdleTimeout();
|
|
862
|
+
if (this.idleTimeout > 0) {
|
|
863
|
+
this.idleTimeoutHandle = setTimeout(() => {
|
|
864
|
+
if (this.ongoingOperations === 0 && this.idleSince) {
|
|
865
|
+
this.close();
|
|
866
|
+
}
|
|
867
|
+
}, this.idleTimeout);
|
|
868
|
+
}
|
|
869
|
+
}
|
|
658
870
|
async reconnect() {
|
|
659
871
|
const backoff = this.resubscribeBackoff[Math.min(this.reconnectAttempts, this.resubscribeBackoff.length - 1)];
|
|
660
872
|
this.reconnectAttempts++;
|
|
@@ -673,6 +885,7 @@ var AbstractRelay = class {
|
|
|
673
885
|
this._connected = false;
|
|
674
886
|
this.connectionPromise = void 0;
|
|
675
887
|
this.idleSince = void 0;
|
|
888
|
+
this.clearIdleTimeout();
|
|
676
889
|
if (this.enableReconnect && !this.skipReconnection) {
|
|
677
890
|
this.reconnect();
|
|
678
891
|
} else {
|
|
@@ -830,6 +1043,7 @@ var AbstractRelay = class {
|
|
|
830
1043
|
}
|
|
831
1044
|
async publish(event) {
|
|
832
1045
|
this.idleSince = void 0;
|
|
1046
|
+
this.clearIdleTimeout();
|
|
833
1047
|
this.ongoingOperations++;
|
|
834
1048
|
const ret = new Promise((resolve, reject) => {
|
|
835
1049
|
const timeout = setTimeout(() => {
|
|
@@ -841,24 +1055,46 @@ var AbstractRelay = class {
|
|
|
841
1055
|
}, this.publishTimeout);
|
|
842
1056
|
this.openEventPublishes.set(event.id, { resolve, reject, timeout });
|
|
843
1057
|
});
|
|
844
|
-
|
|
1058
|
+
try {
|
|
1059
|
+
await this.send('["EVENT",' + JSON.stringify(event) + "]");
|
|
1060
|
+
} catch (err) {
|
|
1061
|
+
const ep = this.openEventPublishes.get(event.id);
|
|
1062
|
+
if (ep) {
|
|
1063
|
+
ep.reject(err);
|
|
1064
|
+
this.openEventPublishes.delete(event.id);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
845
1067
|
this.ongoingOperations--;
|
|
846
|
-
if (this.ongoingOperations === 0)
|
|
1068
|
+
if (this.ongoingOperations === 0) {
|
|
847
1069
|
this.idleSince = Date.now();
|
|
1070
|
+
this.scheduleIdleClose();
|
|
1071
|
+
}
|
|
848
1072
|
return ret;
|
|
849
1073
|
}
|
|
850
1074
|
async count(filters, params) {
|
|
1075
|
+
return (await this.countWithHLL(filters, params)).count;
|
|
1076
|
+
}
|
|
1077
|
+
async countWithHLL(filters, params) {
|
|
851
1078
|
this.serial++;
|
|
852
1079
|
const id = params?.id || "count:" + this.serial;
|
|
853
1080
|
const ret = new Promise((resolve, reject) => {
|
|
854
1081
|
this.openCountRequests.set(id, { resolve, reject });
|
|
855
1082
|
});
|
|
856
|
-
|
|
1083
|
+
try {
|
|
1084
|
+
await this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
|
|
1085
|
+
} catch (err) {
|
|
1086
|
+
const cr = this.openCountRequests.get(id);
|
|
1087
|
+
if (cr) {
|
|
1088
|
+
cr.reject(err);
|
|
1089
|
+
this.openCountRequests.delete(id);
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
857
1092
|
return ret;
|
|
858
1093
|
}
|
|
859
1094
|
subscribe(filters, params) {
|
|
860
1095
|
if (params.label !== "<forced-ping>") {
|
|
861
1096
|
this.idleSince = void 0;
|
|
1097
|
+
this.clearIdleTimeout();
|
|
862
1098
|
this.ongoingOperations++;
|
|
863
1099
|
}
|
|
864
1100
|
const sub = this.prepareSubscription(filters, params);
|
|
@@ -888,6 +1124,7 @@ var AbstractRelay = class {
|
|
|
888
1124
|
this.closeAllSubscriptions("relay connection closed by us");
|
|
889
1125
|
this._connected = false;
|
|
890
1126
|
this.idleSince = void 0;
|
|
1127
|
+
this.clearIdleTimeout();
|
|
891
1128
|
this.onclose?.();
|
|
892
1129
|
if (this.ws?.readyState === this._WebSocket.OPEN) {
|
|
893
1130
|
this.ws?.close();
|
|
@@ -931,7 +1168,7 @@ var AbstractRelay = class {
|
|
|
931
1168
|
const payload = data[2];
|
|
932
1169
|
const cr = this.openCountRequests.get(id);
|
|
933
1170
|
if (cr) {
|
|
934
|
-
cr.resolve(payload
|
|
1171
|
+
cr.resolve(payload);
|
|
935
1172
|
this.openCountRequests.delete(id);
|
|
936
1173
|
}
|
|
937
1174
|
return;
|
|
@@ -961,8 +1198,14 @@ var AbstractRelay = class {
|
|
|
961
1198
|
case "CLOSED": {
|
|
962
1199
|
const id = data[1];
|
|
963
1200
|
const so = this.openSubs.get(id);
|
|
964
|
-
if (!so)
|
|
1201
|
+
if (!so) {
|
|
1202
|
+
const cr = this.openCountRequests.get(id);
|
|
1203
|
+
if (cr) {
|
|
1204
|
+
cr.reject(new Error(data[2]));
|
|
1205
|
+
this.openCountRequests.delete(id);
|
|
1206
|
+
}
|
|
965
1207
|
return;
|
|
1208
|
+
}
|
|
966
1209
|
so.closed = true;
|
|
967
1210
|
so.close(data[2]);
|
|
968
1211
|
return;
|
|
@@ -1059,8 +1302,10 @@ var Subscription = class {
|
|
|
1059
1302
|
}
|
|
1060
1303
|
this.relay.openSubs.delete(this.id);
|
|
1061
1304
|
this.relay.ongoingOperations--;
|
|
1062
|
-
if (this.relay.ongoingOperations === 0)
|
|
1305
|
+
if (this.relay.ongoingOperations === 0) {
|
|
1063
1306
|
this.relay.idleSince = Date.now();
|
|
1307
|
+
this.relay.scheduleIdleClose();
|
|
1308
|
+
}
|
|
1064
1309
|
this.onclose?.(reason);
|
|
1065
1310
|
}
|
|
1066
1311
|
};
|
|
@@ -1088,6 +1333,63 @@ var alwaysTrue = (t) => {
|
|
|
1088
1333
|
return true;
|
|
1089
1334
|
};
|
|
1090
1335
|
|
|
1336
|
+
// nip45.ts
|
|
1337
|
+
import { sha256 as sha2562 } from "@noble/hashes/sha2.js";
|
|
1338
|
+
import { bytesToHex as bytesToHex3 } from "@noble/hashes/utils.js";
|
|
1339
|
+
var M = 256;
|
|
1340
|
+
var HLL_HEX_LENGTH = M * 2;
|
|
1341
|
+
var utf8Encoder2 = new TextEncoder();
|
|
1342
|
+
function getCountManyFilter(target, directive) {
|
|
1343
|
+
switch (directive) {
|
|
1344
|
+
case "reactions":
|
|
1345
|
+
return { "#e": [target], kinds: [7] };
|
|
1346
|
+
case "reposts":
|
|
1347
|
+
return { "#e": [target], kinds: [6] };
|
|
1348
|
+
case "quotes":
|
|
1349
|
+
return { "#q": [target], kinds: [1, 1111] };
|
|
1350
|
+
case "replies":
|
|
1351
|
+
return { "#e": [target], kinds: [1] };
|
|
1352
|
+
case "comments":
|
|
1353
|
+
return { "#E": [target], kinds: [1111] };
|
|
1354
|
+
case "followers":
|
|
1355
|
+
return { "#p": [target], kinds: [3] };
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
function newHll() {
|
|
1359
|
+
return new Uint8Array(M);
|
|
1360
|
+
}
|
|
1361
|
+
function hllDecode(hex) {
|
|
1362
|
+
if (hex.length !== HLL_HEX_LENGTH || !/^[0-9a-fA-F]+$/.test(hex))
|
|
1363
|
+
return void 0;
|
|
1364
|
+
const registers = new Uint8Array(M);
|
|
1365
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
1366
|
+
registers[i2] = parseInt(hex.slice(i2 * 2, i2 * 2 + 2), 16);
|
|
1367
|
+
}
|
|
1368
|
+
return registers;
|
|
1369
|
+
}
|
|
1370
|
+
function hllEncode(registers) {
|
|
1371
|
+
if (registers.length !== M)
|
|
1372
|
+
throw new Error(`invalid number of registers ${registers.length}`);
|
|
1373
|
+
let hex = "";
|
|
1374
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
1375
|
+
hex += registers[i2].toString(16).padStart(2, "0");
|
|
1376
|
+
}
|
|
1377
|
+
return hex;
|
|
1378
|
+
}
|
|
1379
|
+
function mergeHll(target, source) {
|
|
1380
|
+
if (target.length === 0)
|
|
1381
|
+
target = newHll();
|
|
1382
|
+
if (target.length !== M)
|
|
1383
|
+
throw new Error(`invalid number of registers ${target.length}`);
|
|
1384
|
+
if (source.length !== M)
|
|
1385
|
+
throw new Error(`invalid number of registers ${source.length}`);
|
|
1386
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
1387
|
+
if (source[i2] > target[i2])
|
|
1388
|
+
target[i2] = source[i2];
|
|
1389
|
+
}
|
|
1390
|
+
return target;
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1091
1393
|
// abstract-pool.ts
|
|
1092
1394
|
var AbstractSimplePool = class {
|
|
1093
1395
|
relays = /* @__PURE__ */ new Map();
|
|
@@ -1096,6 +1398,7 @@ var AbstractSimplePool = class {
|
|
|
1096
1398
|
verifyEvent;
|
|
1097
1399
|
enablePing;
|
|
1098
1400
|
enableReconnect;
|
|
1401
|
+
idleTimeout = 2e4;
|
|
1099
1402
|
automaticallyAuth;
|
|
1100
1403
|
trustedRelayURLs = /* @__PURE__ */ new Set();
|
|
1101
1404
|
onRelayConnectionFailure;
|
|
@@ -1108,6 +1411,8 @@ var AbstractSimplePool = class {
|
|
|
1108
1411
|
this._WebSocket = opts.websocketImplementation;
|
|
1109
1412
|
this.enablePing = opts.enablePing;
|
|
1110
1413
|
this.enableReconnect = opts.enableReconnect || false;
|
|
1414
|
+
if (opts.idleTimeout)
|
|
1415
|
+
this.idleTimeout = opts.idleTimeout;
|
|
1111
1416
|
this.automaticallyAuth = opts.automaticallyAuth;
|
|
1112
1417
|
this.onRelayConnectionFailure = opts.onRelayConnectionFailure;
|
|
1113
1418
|
this.onRelayConnectionSuccess = opts.onRelayConnectionSuccess;
|
|
@@ -1122,7 +1427,8 @@ var AbstractSimplePool = class {
|
|
|
1122
1427
|
verifyEvent: this.trustedRelayURLs.has(url) ? alwaysTrue : this.verifyEvent,
|
|
1123
1428
|
websocketImplementation: this._WebSocket,
|
|
1124
1429
|
enablePing: this.enablePing,
|
|
1125
|
-
enableReconnect: this.enableReconnect
|
|
1430
|
+
enableReconnect: this.enableReconnect,
|
|
1431
|
+
idleTimeout: this.idleTimeout
|
|
1126
1432
|
});
|
|
1127
1433
|
relay.onclose = () => {
|
|
1128
1434
|
this.relays.delete(url);
|
|
@@ -1315,6 +1621,48 @@ var AbstractSimplePool = class {
|
|
|
1315
1621
|
events.sort((a, b) => b.created_at - a.created_at);
|
|
1316
1622
|
return events[0] || null;
|
|
1317
1623
|
}
|
|
1624
|
+
async countMany(relays, target, directive, params) {
|
|
1625
|
+
const filter = getCountManyFilter(target, directive);
|
|
1626
|
+
const urls = [];
|
|
1627
|
+
for (let i2 = 0; i2 < relays.length; i2++) {
|
|
1628
|
+
const url = normalizeURL(relays[i2]);
|
|
1629
|
+
if (urls.indexOf(url) === -1)
|
|
1630
|
+
urls.push(url);
|
|
1631
|
+
}
|
|
1632
|
+
const responses = await Promise.all(
|
|
1633
|
+
urls.map(async (url) => {
|
|
1634
|
+
if (this.allowConnectingToRelay?.(url, ["read", [filter]]) === false)
|
|
1635
|
+
return null;
|
|
1636
|
+
let relay;
|
|
1637
|
+
try {
|
|
1638
|
+
relay = await this.ensureRelay(url, {
|
|
1639
|
+
connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,
|
|
1640
|
+
abort: params?.abort
|
|
1641
|
+
});
|
|
1642
|
+
} catch (err) {
|
|
1643
|
+
this.onRelayConnectionFailure?.(url);
|
|
1644
|
+
return null;
|
|
1645
|
+
}
|
|
1646
|
+
this.onRelayConnectionSuccess?.(url);
|
|
1647
|
+
return relay.countWithHLL([filter], { id: params?.id }).catch(() => null);
|
|
1648
|
+
})
|
|
1649
|
+
);
|
|
1650
|
+
let count = 0;
|
|
1651
|
+
let hll;
|
|
1652
|
+
for (const response of responses) {
|
|
1653
|
+
if (!response)
|
|
1654
|
+
continue;
|
|
1655
|
+
if (response.count > count)
|
|
1656
|
+
count = response.count;
|
|
1657
|
+
if (!response.hll || response.hll.length !== 512)
|
|
1658
|
+
continue;
|
|
1659
|
+
const registers = hllDecode(response.hll);
|
|
1660
|
+
if (!registers)
|
|
1661
|
+
continue;
|
|
1662
|
+
hll = mergeHll(hll || new Uint8Array(0), registers);
|
|
1663
|
+
}
|
|
1664
|
+
return hll ? { count, hll: hllEncode(hll) } : { count };
|
|
1665
|
+
}
|
|
1318
1666
|
publish(relays, event, params) {
|
|
1319
1667
|
return relays.map(normalizeURL).map(async (url, i2, arr) => {
|
|
1320
1668
|
if (arr.indexOf(url) !== i2) {
|
|
@@ -1402,7 +1750,7 @@ __export(nip19_exports, {
|
|
|
1402
1750
|
npubEncode: () => npubEncode,
|
|
1403
1751
|
nsecEncode: () => nsecEncode
|
|
1404
1752
|
});
|
|
1405
|
-
import { bytesToHex as
|
|
1753
|
+
import { bytesToHex as bytesToHex4, concatBytes, hexToBytes as hexToBytes3 } from "@noble/hashes/utils.js";
|
|
1406
1754
|
import { bech32 } from "@scure/base";
|
|
1407
1755
|
var NostrTypeGuard = {
|
|
1408
1756
|
isNProfile: (value) => /^nprofile1[a-z\d]+$/.test(value || ""),
|
|
@@ -1445,7 +1793,7 @@ function decode(code) {
|
|
|
1445
1793
|
return {
|
|
1446
1794
|
type: "nprofile",
|
|
1447
1795
|
data: {
|
|
1448
|
-
pubkey:
|
|
1796
|
+
pubkey: bytesToHex4(tlv[0][0]),
|
|
1449
1797
|
relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []
|
|
1450
1798
|
}
|
|
1451
1799
|
};
|
|
@@ -1463,10 +1811,10 @@ function decode(code) {
|
|
|
1463
1811
|
return {
|
|
1464
1812
|
type: "nevent",
|
|
1465
1813
|
data: {
|
|
1466
|
-
id:
|
|
1814
|
+
id: bytesToHex4(tlv[0][0]),
|
|
1467
1815
|
relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [],
|
|
1468
|
-
author: tlv[2]?.[0] ?
|
|
1469
|
-
kind: tlv[3]?.[0] ? parseInt(
|
|
1816
|
+
author: tlv[2]?.[0] ? bytesToHex4(tlv[2][0]) : void 0,
|
|
1817
|
+
kind: tlv[3]?.[0] ? parseInt(bytesToHex4(tlv[3][0]), 16) : void 0
|
|
1470
1818
|
}
|
|
1471
1819
|
};
|
|
1472
1820
|
}
|
|
@@ -1486,8 +1834,8 @@ function decode(code) {
|
|
|
1486
1834
|
type: "naddr",
|
|
1487
1835
|
data: {
|
|
1488
1836
|
identifier: utf8Decoder.decode(tlv[0][0]),
|
|
1489
|
-
pubkey:
|
|
1490
|
-
kind: parseInt(
|
|
1837
|
+
pubkey: bytesToHex4(tlv[2][0]),
|
|
1838
|
+
kind: parseInt(bytesToHex4(tlv[3][0]), 16),
|
|
1491
1839
|
relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []
|
|
1492
1840
|
}
|
|
1493
1841
|
};
|
|
@@ -1496,7 +1844,7 @@ function decode(code) {
|
|
|
1496
1844
|
return { type: prefix, data };
|
|
1497
1845
|
case "npub":
|
|
1498
1846
|
case "note":
|
|
1499
|
-
return { type: prefix, data:
|
|
1847
|
+
return { type: prefix, data: bytesToHex4(data) };
|
|
1500
1848
|
default:
|
|
1501
1849
|
throw new Error(`unknown prefix ${prefix}`);
|
|
1502
1850
|
}
|
|
@@ -1892,8 +2240,8 @@ __export(nip13_exports, {
|
|
|
1892
2240
|
getPow: () => getPow,
|
|
1893
2241
|
minePow: () => minePow
|
|
1894
2242
|
});
|
|
1895
|
-
import { bytesToHex as
|
|
1896
|
-
import { sha256 as
|
|
2243
|
+
import { bytesToHex as bytesToHex5 } from "@noble/hashes/utils.js";
|
|
2244
|
+
import { sha256 as sha2563 } from "@noble/hashes/sha2.js";
|
|
1897
2245
|
function getPow(hex) {
|
|
1898
2246
|
let count = 0;
|
|
1899
2247
|
for (let i2 = 0; i2 < 64; i2 += 8) {
|
|
@@ -1932,11 +2280,11 @@ function minePow(unsigned, difficulty) {
|
|
|
1932
2280
|
event.created_at = now2;
|
|
1933
2281
|
}
|
|
1934
2282
|
tag[1] = (++count).toString();
|
|
1935
|
-
const hash =
|
|
2283
|
+
const hash = sha2563(
|
|
1936
2284
|
utf8Encoder.encode(JSON.stringify([0, event.pubkey, event.created_at, event.kind, event.tags, event.content]))
|
|
1937
2285
|
);
|
|
1938
2286
|
if (getPowFromBytes(hash) >= difficulty) {
|
|
1939
|
-
event.id =
|
|
2287
|
+
event.id = bytesToHex5(hash);
|
|
1940
2288
|
break;
|
|
1941
2289
|
}
|
|
1942
2290
|
}
|
|
@@ -1977,7 +2325,7 @@ import { equalBytes } from "@noble/ciphers/utils.js";
|
|
|
1977
2325
|
import { secp256k1 as secp256k12 } from "@noble/curves/secp256k1.js";
|
|
1978
2326
|
import { extract as hkdf_extract, expand as hkdf_expand } from "@noble/hashes/hkdf.js";
|
|
1979
2327
|
import { hmac } from "@noble/hashes/hmac.js";
|
|
1980
|
-
import { sha256 as
|
|
2328
|
+
import { sha256 as sha2564 } from "@noble/hashes/sha2.js";
|
|
1981
2329
|
import { concatBytes as concatBytes2, hexToBytes as hexToBytes5, randomBytes as randomBytes2 } from "@noble/hashes/utils.js";
|
|
1982
2330
|
import { base64 as base642 } from "@scure/base";
|
|
1983
2331
|
var minPlaintextSize = 1;
|
|
@@ -1985,10 +2333,10 @@ var maxPlaintextSize = 4294967295;
|
|
|
1985
2333
|
var extendedPrefixThreshold = 65536;
|
|
1986
2334
|
function getConversationKey(privkeyA, pubkeyB) {
|
|
1987
2335
|
const sharedX = secp256k12.getSharedSecret(privkeyA, hexToBytes5("02" + pubkeyB)).subarray(1, 33);
|
|
1988
|
-
return hkdf_extract(
|
|
2336
|
+
return hkdf_extract(sha2564, sharedX, utf8Encoder.encode("nip44-v2"));
|
|
1989
2337
|
}
|
|
1990
2338
|
function getMessageKeys(conversationKey, nonce) {
|
|
1991
|
-
const keys = hkdf_expand(
|
|
2339
|
+
const keys = hkdf_expand(sha2564, conversationKey, nonce, 76);
|
|
1992
2340
|
return {
|
|
1993
2341
|
chacha_key: keys.subarray(0, 32),
|
|
1994
2342
|
chacha_nonce: keys.subarray(32, 44),
|
|
@@ -2050,7 +2398,7 @@ function hmacAad(key, message, aad) {
|
|
|
2050
2398
|
if (aad.length !== 32)
|
|
2051
2399
|
throw new Error("AAD associated data must be 32 bytes");
|
|
2052
2400
|
const combined = concatBytes2(aad, message);
|
|
2053
|
-
return hmac(
|
|
2401
|
+
return hmac(sha2564, key, combined);
|
|
2054
2402
|
}
|
|
2055
2403
|
function decodePayload(payload) {
|
|
2056
2404
|
if (typeof payload !== "string")
|
|
@@ -3009,8 +3357,8 @@ __export(nip77_exports, {
|
|
|
3009
3357
|
NegentropyStorageVector: () => NegentropyStorageVector,
|
|
3010
3358
|
NegentropySync: () => NegentropySync
|
|
3011
3359
|
});
|
|
3012
|
-
import { bytesToHex as
|
|
3013
|
-
import { sha256 as
|
|
3360
|
+
import { bytesToHex as bytesToHex6, hexToBytes as hexToBytes6 } from "@noble/hashes/utils.js";
|
|
3361
|
+
import { sha256 as sha2565 } from "@noble/hashes/sha2.js";
|
|
3014
3362
|
var PROTOCOL_VERSION = 97;
|
|
3015
3363
|
var ID_SIZE = 32;
|
|
3016
3364
|
var FINGERPRINT_SIZE = 16;
|
|
@@ -3141,7 +3489,7 @@ var Accumulator = class {
|
|
|
3141
3489
|
let input = new WrappedBuffer();
|
|
3142
3490
|
input.extend(this.buf);
|
|
3143
3491
|
input.extend(encodeVarInt(n));
|
|
3144
|
-
let hash =
|
|
3492
|
+
let hash = sha2565(input.unwrap());
|
|
3145
3493
|
return hash.subarray(0, FINGERPRINT_SIZE);
|
|
3146
3494
|
}
|
|
3147
3495
|
};
|
|
@@ -3249,7 +3597,7 @@ var Negentropy = class {
|
|
|
3249
3597
|
let output = new WrappedBuffer();
|
|
3250
3598
|
output.extend(new Uint8Array([PROTOCOL_VERSION]));
|
|
3251
3599
|
this.splitRange(0, this.storage.size(), this._bound(Number.MAX_VALUE), output);
|
|
3252
|
-
return
|
|
3600
|
+
return bytesToHex6(output.unwrap());
|
|
3253
3601
|
}
|
|
3254
3602
|
reconcile(queryMsg, onhave, onneed) {
|
|
3255
3603
|
const query = new WrappedBuffer(hexToBytes6(queryMsg));
|
|
@@ -3295,22 +3643,22 @@ var Negentropy = class {
|
|
|
3295
3643
|
let theirElems = {};
|
|
3296
3644
|
for (let i2 = 0; i2 < numIds; i2++) {
|
|
3297
3645
|
let e = getBytes(query, ID_SIZE);
|
|
3298
|
-
theirElems[
|
|
3646
|
+
theirElems[bytesToHex6(e)] = e;
|
|
3299
3647
|
}
|
|
3300
3648
|
skip = true;
|
|
3301
3649
|
this.storage.iterate(lower, upper, (item) => {
|
|
3302
3650
|
let k = item.id;
|
|
3303
|
-
const id =
|
|
3651
|
+
const id = bytesToHex6(k);
|
|
3304
3652
|
if (!theirElems[id]) {
|
|
3305
3653
|
onhave?.(id);
|
|
3306
3654
|
} else {
|
|
3307
|
-
delete theirElems[
|
|
3655
|
+
delete theirElems[bytesToHex6(k)];
|
|
3308
3656
|
}
|
|
3309
3657
|
return true;
|
|
3310
3658
|
});
|
|
3311
3659
|
if (onneed) {
|
|
3312
3660
|
for (let v of Object.values(theirElems)) {
|
|
3313
|
-
onneed(
|
|
3661
|
+
onneed(bytesToHex6(v));
|
|
3314
3662
|
}
|
|
3315
3663
|
}
|
|
3316
3664
|
} else {
|
|
@@ -3328,7 +3676,7 @@ var Negentropy = class {
|
|
|
3328
3676
|
prevIndex = upper;
|
|
3329
3677
|
prevBound = currBound;
|
|
3330
3678
|
}
|
|
3331
|
-
return fullOutput.length === 1 ? null :
|
|
3679
|
+
return fullOutput.length === 1 ? null : bytesToHex6(fullOutput.unwrap());
|
|
3332
3680
|
}
|
|
3333
3681
|
splitRange(lower, upper, upperBound, o) {
|
|
3334
3682
|
let numElems = upper - lower;
|
|
@@ -3516,8 +3864,8 @@ __export(nip98_exports, {
|
|
|
3516
3864
|
validateEventUrlTag: () => validateEventUrlTag,
|
|
3517
3865
|
validateToken: () => validateToken
|
|
3518
3866
|
});
|
|
3519
|
-
import { sha256 as
|
|
3520
|
-
import { bytesToHex as
|
|
3867
|
+
import { sha256 as sha2566 } from "@noble/hashes/sha2.js";
|
|
3868
|
+
import { bytesToHex as bytesToHex7 } from "@noble/hashes/utils.js";
|
|
3521
3869
|
import { base64 as base643 } from "@scure/base";
|
|
3522
3870
|
var _authorizationScheme = "Nostr ";
|
|
3523
3871
|
async function getToken(loginUrl, httpMethod, sign, includeAuthorizationScheme = false, payload) {
|
|
@@ -3582,8 +3930,8 @@ function validateEventMethodTag(event, method) {
|
|
|
3582
3930
|
return methodTag.length > 0 && methodTag[1].toLowerCase() === method.toLowerCase();
|
|
3583
3931
|
}
|
|
3584
3932
|
function hashPayload(payload) {
|
|
3585
|
-
const hash =
|
|
3586
|
-
return
|
|
3933
|
+
const hash = sha2566(utf8Encoder.encode(JSON.stringify(payload)));
|
|
3934
|
+
return bytesToHex7(hash);
|
|
3587
3935
|
}
|
|
3588
3936
|
function validateEventPayloadTag(event, payload) {
|
|
3589
3937
|
const payloadTag = event.tags.find((t) => t[0] === "payload");
|