nostr-tools 2.23.7 → 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.
- package/lib/cjs/abstract-pool.js +128 -4
- package/lib/cjs/abstract-pool.js.map +4 -4
- package/lib/cjs/abstract-relay.js +29 -4
- package/lib/cjs/abstract-relay.js.map +2 -2
- package/lib/cjs/filter.js.map +1 -1
- package/lib/cjs/index.js +393 -70
- 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/nip10.js +5 -4
- package/lib/cjs/nip10.js.map +2 -2
- package/lib/cjs/nip17.js.map +2 -2
- package/lib/cjs/nip18.js.map +2 -2
- package/lib/cjs/nip22.js +11 -5
- package/lib/cjs/nip22.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 +135 -6
- 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 +128 -4
- package/lib/cjs/pool.js.map +4 -4
- package/lib/cjs/relay.js +29 -4
- package/lib/cjs/relay.js.map +2 -2
- package/lib/esm/abstract-pool.js +128 -4
- package/lib/esm/abstract-pool.js.map +4 -4
- package/lib/esm/abstract-relay.js +29 -4
- package/lib/esm/abstract-relay.js.map +2 -2
- package/lib/esm/filter.js.map +1 -1
- package/lib/esm/index.js +369 -46
- 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/nip10.js +5 -4
- package/lib/esm/nip10.js.map +2 -2
- package/lib/esm/nip17.js.map +2 -2
- package/lib/esm/nip18.js.map +2 -2
- package/lib/esm/nip22.js +11 -5
- package/lib/esm/nip22.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 +135 -6
- 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 +128 -4
- package/lib/esm/pool.js.map +4 -4
- package/lib/esm/relay.js +29 -4
- package/lib/esm/relay.js.map +2 -2
- package/lib/nostr.bundle.js +342 -21
- package/lib/nostr.bundle.js.map +4 -4
- package/lib/types/abstract-pool.d.ts +9 -0
- package/lib/types/abstract-relay.d.ts +10 -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/nip46.d.ts +7 -5
- package/lib/types/nipb0.d.ts +129 -0
- 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) {
|
|
@@ -841,19 +1033,38 @@ var AbstractRelay = class {
|
|
|
841
1033
|
}, this.publishTimeout);
|
|
842
1034
|
this.openEventPublishes.set(event.id, { resolve, reject, timeout });
|
|
843
1035
|
});
|
|
844
|
-
|
|
1036
|
+
try {
|
|
1037
|
+
await this.send('["EVENT",' + JSON.stringify(event) + "]");
|
|
1038
|
+
} catch (err) {
|
|
1039
|
+
const ep = this.openEventPublishes.get(event.id);
|
|
1040
|
+
if (ep) {
|
|
1041
|
+
ep.reject(err);
|
|
1042
|
+
this.openEventPublishes.delete(event.id);
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
845
1045
|
this.ongoingOperations--;
|
|
846
1046
|
if (this.ongoingOperations === 0)
|
|
847
1047
|
this.idleSince = Date.now();
|
|
848
1048
|
return ret;
|
|
849
1049
|
}
|
|
850
1050
|
async count(filters, params) {
|
|
1051
|
+
return (await this.countWithHLL(filters, params)).count;
|
|
1052
|
+
}
|
|
1053
|
+
async countWithHLL(filters, params) {
|
|
851
1054
|
this.serial++;
|
|
852
1055
|
const id = params?.id || "count:" + this.serial;
|
|
853
1056
|
const ret = new Promise((resolve, reject) => {
|
|
854
1057
|
this.openCountRequests.set(id, { resolve, reject });
|
|
855
1058
|
});
|
|
856
|
-
|
|
1059
|
+
try {
|
|
1060
|
+
await this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
|
|
1061
|
+
} catch (err) {
|
|
1062
|
+
const cr = this.openCountRequests.get(id);
|
|
1063
|
+
if (cr) {
|
|
1064
|
+
cr.reject(err);
|
|
1065
|
+
this.openCountRequests.delete(id);
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
857
1068
|
return ret;
|
|
858
1069
|
}
|
|
859
1070
|
subscribe(filters, params) {
|
|
@@ -931,7 +1142,7 @@ var AbstractRelay = class {
|
|
|
931
1142
|
const payload = data[2];
|
|
932
1143
|
const cr = this.openCountRequests.get(id);
|
|
933
1144
|
if (cr) {
|
|
934
|
-
cr.resolve(payload
|
|
1145
|
+
cr.resolve(payload);
|
|
935
1146
|
this.openCountRequests.delete(id);
|
|
936
1147
|
}
|
|
937
1148
|
return;
|
|
@@ -961,8 +1172,14 @@ var AbstractRelay = class {
|
|
|
961
1172
|
case "CLOSED": {
|
|
962
1173
|
const id = data[1];
|
|
963
1174
|
const so = this.openSubs.get(id);
|
|
964
|
-
if (!so)
|
|
1175
|
+
if (!so) {
|
|
1176
|
+
const cr = this.openCountRequests.get(id);
|
|
1177
|
+
if (cr) {
|
|
1178
|
+
cr.reject(new Error(data[2]));
|
|
1179
|
+
this.openCountRequests.delete(id);
|
|
1180
|
+
}
|
|
965
1181
|
return;
|
|
1182
|
+
}
|
|
966
1183
|
so.closed = true;
|
|
967
1184
|
so.close(data[2]);
|
|
968
1185
|
return;
|
|
@@ -1088,6 +1305,63 @@ var alwaysTrue = (t) => {
|
|
|
1088
1305
|
return true;
|
|
1089
1306
|
};
|
|
1090
1307
|
|
|
1308
|
+
// nip45.ts
|
|
1309
|
+
import { sha256 as sha2562 } from "@noble/hashes/sha2.js";
|
|
1310
|
+
import { bytesToHex as bytesToHex3 } from "@noble/hashes/utils.js";
|
|
1311
|
+
var M = 256;
|
|
1312
|
+
var HLL_HEX_LENGTH = M * 2;
|
|
1313
|
+
var utf8Encoder2 = new TextEncoder();
|
|
1314
|
+
function getCountManyFilter(target, directive) {
|
|
1315
|
+
switch (directive) {
|
|
1316
|
+
case "reactions":
|
|
1317
|
+
return { "#e": [target], kinds: [7] };
|
|
1318
|
+
case "reposts":
|
|
1319
|
+
return { "#e": [target], kinds: [6] };
|
|
1320
|
+
case "quotes":
|
|
1321
|
+
return { "#q": [target], kinds: [1, 1111] };
|
|
1322
|
+
case "replies":
|
|
1323
|
+
return { "#e": [target], kinds: [1] };
|
|
1324
|
+
case "comments":
|
|
1325
|
+
return { "#E": [target], kinds: [1111] };
|
|
1326
|
+
case "followers":
|
|
1327
|
+
return { "#p": [target], kinds: [3] };
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
function newHll() {
|
|
1331
|
+
return new Uint8Array(M);
|
|
1332
|
+
}
|
|
1333
|
+
function hllDecode(hex) {
|
|
1334
|
+
if (hex.length !== HLL_HEX_LENGTH || !/^[0-9a-fA-F]+$/.test(hex))
|
|
1335
|
+
return void 0;
|
|
1336
|
+
const registers = new Uint8Array(M);
|
|
1337
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
1338
|
+
registers[i2] = parseInt(hex.slice(i2 * 2, i2 * 2 + 2), 16);
|
|
1339
|
+
}
|
|
1340
|
+
return registers;
|
|
1341
|
+
}
|
|
1342
|
+
function hllEncode(registers) {
|
|
1343
|
+
if (registers.length !== M)
|
|
1344
|
+
throw new Error(`invalid number of registers ${registers.length}`);
|
|
1345
|
+
let hex = "";
|
|
1346
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
1347
|
+
hex += registers[i2].toString(16).padStart(2, "0");
|
|
1348
|
+
}
|
|
1349
|
+
return hex;
|
|
1350
|
+
}
|
|
1351
|
+
function mergeHll(target, source) {
|
|
1352
|
+
if (target.length === 0)
|
|
1353
|
+
target = newHll();
|
|
1354
|
+
if (target.length !== M)
|
|
1355
|
+
throw new Error(`invalid number of registers ${target.length}`);
|
|
1356
|
+
if (source.length !== M)
|
|
1357
|
+
throw new Error(`invalid number of registers ${source.length}`);
|
|
1358
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
1359
|
+
if (source[i2] > target[i2])
|
|
1360
|
+
target[i2] = source[i2];
|
|
1361
|
+
}
|
|
1362
|
+
return target;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1091
1365
|
// abstract-pool.ts
|
|
1092
1366
|
var AbstractSimplePool = class {
|
|
1093
1367
|
relays = /* @__PURE__ */ new Map();
|
|
@@ -1315,6 +1589,48 @@ var AbstractSimplePool = class {
|
|
|
1315
1589
|
events.sort((a, b) => b.created_at - a.created_at);
|
|
1316
1590
|
return events[0] || null;
|
|
1317
1591
|
}
|
|
1592
|
+
async countMany(relays, target, directive, params) {
|
|
1593
|
+
const filter = getCountManyFilter(target, directive);
|
|
1594
|
+
const urls = [];
|
|
1595
|
+
for (let i2 = 0; i2 < relays.length; i2++) {
|
|
1596
|
+
const url = normalizeURL(relays[i2]);
|
|
1597
|
+
if (urls.indexOf(url) === -1)
|
|
1598
|
+
urls.push(url);
|
|
1599
|
+
}
|
|
1600
|
+
const responses = await Promise.all(
|
|
1601
|
+
urls.map(async (url) => {
|
|
1602
|
+
if (this.allowConnectingToRelay?.(url, ["read", [filter]]) === false)
|
|
1603
|
+
return null;
|
|
1604
|
+
let relay;
|
|
1605
|
+
try {
|
|
1606
|
+
relay = await this.ensureRelay(url, {
|
|
1607
|
+
connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,
|
|
1608
|
+
abort: params?.abort
|
|
1609
|
+
});
|
|
1610
|
+
} catch (err) {
|
|
1611
|
+
this.onRelayConnectionFailure?.(url);
|
|
1612
|
+
return null;
|
|
1613
|
+
}
|
|
1614
|
+
this.onRelayConnectionSuccess?.(url);
|
|
1615
|
+
return relay.countWithHLL([filter], { id: params?.id }).catch(() => null);
|
|
1616
|
+
})
|
|
1617
|
+
);
|
|
1618
|
+
let count = 0;
|
|
1619
|
+
let hll;
|
|
1620
|
+
for (const response of responses) {
|
|
1621
|
+
if (!response)
|
|
1622
|
+
continue;
|
|
1623
|
+
if (response.count > count)
|
|
1624
|
+
count = response.count;
|
|
1625
|
+
if (!response.hll || response.hll.length !== 512)
|
|
1626
|
+
continue;
|
|
1627
|
+
const registers = hllDecode(response.hll);
|
|
1628
|
+
if (!registers)
|
|
1629
|
+
continue;
|
|
1630
|
+
hll = mergeHll(hll || new Uint8Array(0), registers);
|
|
1631
|
+
}
|
|
1632
|
+
return hll ? { count, hll: hllEncode(hll) } : { count };
|
|
1633
|
+
}
|
|
1318
1634
|
publish(relays, event, params) {
|
|
1319
1635
|
return relays.map(normalizeURL).map(async (url, i2, arr) => {
|
|
1320
1636
|
if (arr.indexOf(url) !== i2) {
|
|
@@ -1402,7 +1718,7 @@ __export(nip19_exports, {
|
|
|
1402
1718
|
npubEncode: () => npubEncode,
|
|
1403
1719
|
nsecEncode: () => nsecEncode
|
|
1404
1720
|
});
|
|
1405
|
-
import { bytesToHex as
|
|
1721
|
+
import { bytesToHex as bytesToHex4, concatBytes, hexToBytes as hexToBytes3 } from "@noble/hashes/utils.js";
|
|
1406
1722
|
import { bech32 } from "@scure/base";
|
|
1407
1723
|
var NostrTypeGuard = {
|
|
1408
1724
|
isNProfile: (value) => /^nprofile1[a-z\d]+$/.test(value || ""),
|
|
@@ -1445,7 +1761,7 @@ function decode(code) {
|
|
|
1445
1761
|
return {
|
|
1446
1762
|
type: "nprofile",
|
|
1447
1763
|
data: {
|
|
1448
|
-
pubkey:
|
|
1764
|
+
pubkey: bytesToHex4(tlv[0][0]),
|
|
1449
1765
|
relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []
|
|
1450
1766
|
}
|
|
1451
1767
|
};
|
|
@@ -1463,10 +1779,10 @@ function decode(code) {
|
|
|
1463
1779
|
return {
|
|
1464
1780
|
type: "nevent",
|
|
1465
1781
|
data: {
|
|
1466
|
-
id:
|
|
1782
|
+
id: bytesToHex4(tlv[0][0]),
|
|
1467
1783
|
relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [],
|
|
1468
|
-
author: tlv[2]?.[0] ?
|
|
1469
|
-
kind: tlv[3]?.[0] ? parseInt(
|
|
1784
|
+
author: tlv[2]?.[0] ? bytesToHex4(tlv[2][0]) : void 0,
|
|
1785
|
+
kind: tlv[3]?.[0] ? parseInt(bytesToHex4(tlv[3][0]), 16) : void 0
|
|
1470
1786
|
}
|
|
1471
1787
|
};
|
|
1472
1788
|
}
|
|
@@ -1486,8 +1802,8 @@ function decode(code) {
|
|
|
1486
1802
|
type: "naddr",
|
|
1487
1803
|
data: {
|
|
1488
1804
|
identifier: utf8Decoder.decode(tlv[0][0]),
|
|
1489
|
-
pubkey:
|
|
1490
|
-
kind: parseInt(
|
|
1805
|
+
pubkey: bytesToHex4(tlv[2][0]),
|
|
1806
|
+
kind: parseInt(bytesToHex4(tlv[3][0]), 16),
|
|
1491
1807
|
relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []
|
|
1492
1808
|
}
|
|
1493
1809
|
};
|
|
@@ -1496,7 +1812,7 @@ function decode(code) {
|
|
|
1496
1812
|
return { type: prefix, data };
|
|
1497
1813
|
case "npub":
|
|
1498
1814
|
case "note":
|
|
1499
|
-
return { type: prefix, data:
|
|
1815
|
+
return { type: prefix, data: bytesToHex4(data) };
|
|
1500
1816
|
default:
|
|
1501
1817
|
throw new Error(`unknown prefix ${prefix}`);
|
|
1502
1818
|
}
|
|
@@ -1765,6 +2081,7 @@ var nip10_exports = {};
|
|
|
1765
2081
|
__export(nip10_exports, {
|
|
1766
2082
|
parse: () => parse
|
|
1767
2083
|
});
|
|
2084
|
+
var HEX64 = /^[0-9a-fA-F]{64}$/;
|
|
1768
2085
|
function parse(event) {
|
|
1769
2086
|
const result = {
|
|
1770
2087
|
reply: void 0,
|
|
@@ -1777,12 +2094,12 @@ function parse(event) {
|
|
|
1777
2094
|
let maybeRoot;
|
|
1778
2095
|
for (let i2 = event.tags.length - 1; i2 >= 0; i2--) {
|
|
1779
2096
|
const tag = event.tags[i2];
|
|
1780
|
-
if (tag[0] === "e" && tag[1]) {
|
|
2097
|
+
if (tag[0] === "e" && tag[1] && HEX64.test(tag[1])) {
|
|
1781
2098
|
const [_, eTagEventId, eTagRelayUrl, eTagMarker, eTagAuthor] = tag;
|
|
1782
2099
|
const eventPointer = {
|
|
1783
2100
|
id: eTagEventId,
|
|
1784
2101
|
relays: eTagRelayUrl ? [eTagRelayUrl] : [],
|
|
1785
|
-
author: eTagAuthor
|
|
2102
|
+
author: eTagAuthor && HEX64.test(eTagAuthor) ? eTagAuthor : void 0
|
|
1786
2103
|
};
|
|
1787
2104
|
if (eTagMarker === "root") {
|
|
1788
2105
|
result.root = eventPointer;
|
|
@@ -1804,14 +2121,14 @@ function parse(event) {
|
|
|
1804
2121
|
result.mentions.push(eventPointer);
|
|
1805
2122
|
continue;
|
|
1806
2123
|
}
|
|
1807
|
-
if (tag[0] === "q" && tag[1]) {
|
|
2124
|
+
if (tag[0] === "q" && tag[1] && HEX64.test(tag[1])) {
|
|
1808
2125
|
const [_, eTagEventId, eTagRelayUrl] = tag;
|
|
1809
2126
|
result.quotes.push({
|
|
1810
2127
|
id: eTagEventId,
|
|
1811
2128
|
relays: eTagRelayUrl ? [eTagRelayUrl] : []
|
|
1812
2129
|
});
|
|
1813
2130
|
}
|
|
1814
|
-
if (tag[0] === "p" && tag[1]) {
|
|
2131
|
+
if (tag[0] === "p" && tag[1] && HEX64.test(tag[1])) {
|
|
1815
2132
|
result.profiles.push({
|
|
1816
2133
|
pubkey: tag[1],
|
|
1817
2134
|
relays: tag[2] ? [tag[2]] : []
|
|
@@ -1891,8 +2208,8 @@ __export(nip13_exports, {
|
|
|
1891
2208
|
getPow: () => getPow,
|
|
1892
2209
|
minePow: () => minePow
|
|
1893
2210
|
});
|
|
1894
|
-
import { bytesToHex as
|
|
1895
|
-
import { sha256 as
|
|
2211
|
+
import { bytesToHex as bytesToHex5 } from "@noble/hashes/utils.js";
|
|
2212
|
+
import { sha256 as sha2563 } from "@noble/hashes/sha2.js";
|
|
1896
2213
|
function getPow(hex) {
|
|
1897
2214
|
let count = 0;
|
|
1898
2215
|
for (let i2 = 0; i2 < 64; i2 += 8) {
|
|
@@ -1931,11 +2248,11 @@ function minePow(unsigned, difficulty) {
|
|
|
1931
2248
|
event.created_at = now2;
|
|
1932
2249
|
}
|
|
1933
2250
|
tag[1] = (++count).toString();
|
|
1934
|
-
const hash =
|
|
2251
|
+
const hash = sha2563(
|
|
1935
2252
|
utf8Encoder.encode(JSON.stringify([0, event.pubkey, event.created_at, event.kind, event.tags, event.content]))
|
|
1936
2253
|
);
|
|
1937
2254
|
if (getPowFromBytes(hash) >= difficulty) {
|
|
1938
|
-
event.id =
|
|
2255
|
+
event.id = bytesToHex5(hash);
|
|
1939
2256
|
break;
|
|
1940
2257
|
}
|
|
1941
2258
|
}
|
|
@@ -1976,7 +2293,7 @@ import { equalBytes } from "@noble/ciphers/utils.js";
|
|
|
1976
2293
|
import { secp256k1 as secp256k12 } from "@noble/curves/secp256k1.js";
|
|
1977
2294
|
import { extract as hkdf_extract, expand as hkdf_expand } from "@noble/hashes/hkdf.js";
|
|
1978
2295
|
import { hmac } from "@noble/hashes/hmac.js";
|
|
1979
|
-
import { sha256 as
|
|
2296
|
+
import { sha256 as sha2564 } from "@noble/hashes/sha2.js";
|
|
1980
2297
|
import { concatBytes as concatBytes2, hexToBytes as hexToBytes5, randomBytes as randomBytes2 } from "@noble/hashes/utils.js";
|
|
1981
2298
|
import { base64 as base642 } from "@scure/base";
|
|
1982
2299
|
var minPlaintextSize = 1;
|
|
@@ -1984,10 +2301,10 @@ var maxPlaintextSize = 4294967295;
|
|
|
1984
2301
|
var extendedPrefixThreshold = 65536;
|
|
1985
2302
|
function getConversationKey(privkeyA, pubkeyB) {
|
|
1986
2303
|
const sharedX = secp256k12.getSharedSecret(privkeyA, hexToBytes5("02" + pubkeyB)).subarray(1, 33);
|
|
1987
|
-
return hkdf_extract(
|
|
2304
|
+
return hkdf_extract(sha2564, sharedX, utf8Encoder.encode("nip44-v2"));
|
|
1988
2305
|
}
|
|
1989
2306
|
function getMessageKeys(conversationKey, nonce) {
|
|
1990
|
-
const keys = hkdf_expand(
|
|
2307
|
+
const keys = hkdf_expand(sha2564, conversationKey, nonce, 76);
|
|
1991
2308
|
return {
|
|
1992
2309
|
chacha_key: keys.subarray(0, 32),
|
|
1993
2310
|
chacha_nonce: keys.subarray(32, 44),
|
|
@@ -2049,7 +2366,7 @@ function hmacAad(key, message, aad) {
|
|
|
2049
2366
|
if (aad.length !== 32)
|
|
2050
2367
|
throw new Error("AAD associated data must be 32 bytes");
|
|
2051
2368
|
const combined = concatBytes2(aad, message);
|
|
2052
|
-
return hmac(
|
|
2369
|
+
return hmac(sha2564, key, combined);
|
|
2053
2370
|
}
|
|
2054
2371
|
function decodePayload(payload) {
|
|
2055
2372
|
if (typeof payload !== "string")
|
|
@@ -2308,6 +2625,7 @@ var nip22_exports = {};
|
|
|
2308
2625
|
__export(nip22_exports, {
|
|
2309
2626
|
parse: () => parse3
|
|
2310
2627
|
});
|
|
2628
|
+
var HEX642 = /^[0-9a-fA-F]{64}$/;
|
|
2311
2629
|
function parseKind(kind) {
|
|
2312
2630
|
if (!kind)
|
|
2313
2631
|
return void 0;
|
|
@@ -2321,9 +2639,12 @@ function parseAddressPointer(value, relayUrl) {
|
|
|
2321
2639
|
const kind = parseInt(value.slice(0, idx), 10);
|
|
2322
2640
|
if (Number.isNaN(kind))
|
|
2323
2641
|
return void 0;
|
|
2642
|
+
const pubkey = value.slice(idx + 1, idx2);
|
|
2643
|
+
if (!HEX642.test(pubkey))
|
|
2644
|
+
return void 0;
|
|
2324
2645
|
return {
|
|
2325
2646
|
kind,
|
|
2326
|
-
pubkey
|
|
2647
|
+
pubkey,
|
|
2327
2648
|
identifier: value.slice(idx2 + 1),
|
|
2328
2649
|
relays: relayUrl ? [relayUrl] : []
|
|
2329
2650
|
};
|
|
@@ -2332,12 +2653,12 @@ function parsePointer(tag) {
|
|
|
2332
2653
|
switch (tag[0]) {
|
|
2333
2654
|
case "E":
|
|
2334
2655
|
case "e":
|
|
2335
|
-
if (!tag[1])
|
|
2656
|
+
if (!tag[1] || !HEX642.test(tag[1]))
|
|
2336
2657
|
return void 0;
|
|
2337
2658
|
return {
|
|
2338
2659
|
id: tag[1],
|
|
2339
2660
|
relays: tag[2] ? [tag[2]] : [],
|
|
2340
|
-
author: tag[3]
|
|
2661
|
+
author: tag[3] && HEX642.test(tag[3]) ? tag[3] : void 0
|
|
2341
2662
|
};
|
|
2342
2663
|
case "A":
|
|
2343
2664
|
case "a":
|
|
@@ -2360,10 +2681,12 @@ function parseQuote(tag) {
|
|
|
2360
2681
|
if (tag[1].includes(":")) {
|
|
2361
2682
|
return parseAddressPointer(tag[1], tag[2]);
|
|
2362
2683
|
}
|
|
2684
|
+
if (!HEX642.test(tag[1]))
|
|
2685
|
+
return void 0;
|
|
2363
2686
|
return {
|
|
2364
2687
|
id: tag[1],
|
|
2365
2688
|
relays: tag[2] ? [tag[2]] : [],
|
|
2366
|
-
author: tag[3]
|
|
2689
|
+
author: tag[3] && HEX642.test(tag[3]) ? tag[3] : void 0
|
|
2367
2690
|
};
|
|
2368
2691
|
}
|
|
2369
2692
|
function choosePointer(candidates) {
|
|
@@ -2423,7 +2746,7 @@ function parse3(event) {
|
|
|
2423
2746
|
result.quotes.push(pointer);
|
|
2424
2747
|
continue;
|
|
2425
2748
|
}
|
|
2426
|
-
if ((tag[0] === "P" || tag[0] === "p") && tag[1]) {
|
|
2749
|
+
if ((tag[0] === "P" || tag[0] === "p") && tag[1] && HEX642.test(tag[1])) {
|
|
2427
2750
|
result.profiles.push({
|
|
2428
2751
|
pubkey: tag[1],
|
|
2429
2752
|
relays: tag[2] ? [tag[2]] : []
|
|
@@ -3002,8 +3325,8 @@ __export(nip77_exports, {
|
|
|
3002
3325
|
NegentropyStorageVector: () => NegentropyStorageVector,
|
|
3003
3326
|
NegentropySync: () => NegentropySync
|
|
3004
3327
|
});
|
|
3005
|
-
import { bytesToHex as
|
|
3006
|
-
import { sha256 as
|
|
3328
|
+
import { bytesToHex as bytesToHex6, hexToBytes as hexToBytes6 } from "@noble/hashes/utils.js";
|
|
3329
|
+
import { sha256 as sha2565 } from "@noble/hashes/sha2.js";
|
|
3007
3330
|
var PROTOCOL_VERSION = 97;
|
|
3008
3331
|
var ID_SIZE = 32;
|
|
3009
3332
|
var FINGERPRINT_SIZE = 16;
|
|
@@ -3134,7 +3457,7 @@ var Accumulator = class {
|
|
|
3134
3457
|
let input = new WrappedBuffer();
|
|
3135
3458
|
input.extend(this.buf);
|
|
3136
3459
|
input.extend(encodeVarInt(n));
|
|
3137
|
-
let hash =
|
|
3460
|
+
let hash = sha2565(input.unwrap());
|
|
3138
3461
|
return hash.subarray(0, FINGERPRINT_SIZE);
|
|
3139
3462
|
}
|
|
3140
3463
|
};
|
|
@@ -3242,7 +3565,7 @@ var Negentropy = class {
|
|
|
3242
3565
|
let output = new WrappedBuffer();
|
|
3243
3566
|
output.extend(new Uint8Array([PROTOCOL_VERSION]));
|
|
3244
3567
|
this.splitRange(0, this.storage.size(), this._bound(Number.MAX_VALUE), output);
|
|
3245
|
-
return
|
|
3568
|
+
return bytesToHex6(output.unwrap());
|
|
3246
3569
|
}
|
|
3247
3570
|
reconcile(queryMsg, onhave, onneed) {
|
|
3248
3571
|
const query = new WrappedBuffer(hexToBytes6(queryMsg));
|
|
@@ -3288,22 +3611,22 @@ var Negentropy = class {
|
|
|
3288
3611
|
let theirElems = {};
|
|
3289
3612
|
for (let i2 = 0; i2 < numIds; i2++) {
|
|
3290
3613
|
let e = getBytes(query, ID_SIZE);
|
|
3291
|
-
theirElems[
|
|
3614
|
+
theirElems[bytesToHex6(e)] = e;
|
|
3292
3615
|
}
|
|
3293
3616
|
skip = true;
|
|
3294
3617
|
this.storage.iterate(lower, upper, (item) => {
|
|
3295
3618
|
let k = item.id;
|
|
3296
|
-
const id =
|
|
3619
|
+
const id = bytesToHex6(k);
|
|
3297
3620
|
if (!theirElems[id]) {
|
|
3298
3621
|
onhave?.(id);
|
|
3299
3622
|
} else {
|
|
3300
|
-
delete theirElems[
|
|
3623
|
+
delete theirElems[bytesToHex6(k)];
|
|
3301
3624
|
}
|
|
3302
3625
|
return true;
|
|
3303
3626
|
});
|
|
3304
3627
|
if (onneed) {
|
|
3305
3628
|
for (let v of Object.values(theirElems)) {
|
|
3306
|
-
onneed(
|
|
3629
|
+
onneed(bytesToHex6(v));
|
|
3307
3630
|
}
|
|
3308
3631
|
}
|
|
3309
3632
|
} else {
|
|
@@ -3321,7 +3644,7 @@ var Negentropy = class {
|
|
|
3321
3644
|
prevIndex = upper;
|
|
3322
3645
|
prevBound = currBound;
|
|
3323
3646
|
}
|
|
3324
|
-
return fullOutput.length === 1 ? null :
|
|
3647
|
+
return fullOutput.length === 1 ? null : bytesToHex6(fullOutput.unwrap());
|
|
3325
3648
|
}
|
|
3326
3649
|
splitRange(lower, upper, upperBound, o) {
|
|
3327
3650
|
let numElems = upper - lower;
|
|
@@ -3509,8 +3832,8 @@ __export(nip98_exports, {
|
|
|
3509
3832
|
validateEventUrlTag: () => validateEventUrlTag,
|
|
3510
3833
|
validateToken: () => validateToken
|
|
3511
3834
|
});
|
|
3512
|
-
import { sha256 as
|
|
3513
|
-
import { bytesToHex as
|
|
3835
|
+
import { sha256 as sha2566 } from "@noble/hashes/sha2.js";
|
|
3836
|
+
import { bytesToHex as bytesToHex7 } from "@noble/hashes/utils.js";
|
|
3514
3837
|
import { base64 as base643 } from "@scure/base";
|
|
3515
3838
|
var _authorizationScheme = "Nostr ";
|
|
3516
3839
|
async function getToken(loginUrl, httpMethod, sign, includeAuthorizationScheme = false, payload) {
|
|
@@ -3575,8 +3898,8 @@ function validateEventMethodTag(event, method) {
|
|
|
3575
3898
|
return methodTag.length > 0 && methodTag[1].toLowerCase() === method.toLowerCase();
|
|
3576
3899
|
}
|
|
3577
3900
|
function hashPayload(payload) {
|
|
3578
|
-
const hash =
|
|
3579
|
-
return
|
|
3901
|
+
const hash = sha2566(utf8Encoder.encode(JSON.stringify(payload)));
|
|
3902
|
+
return bytesToHex7(hash);
|
|
3580
3903
|
}
|
|
3581
3904
|
function validateEventPayloadTag(event, payload) {
|
|
3582
3905
|
const payloadTag = event.tags.find((t) => t[0] === "payload");
|