nostr-core 0.4.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/index.d.ts +93 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +99 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/lnurl.d.ts +161 -0
  6. package/dist/lnurl.d.ts.map +1 -0
  7. package/dist/lnurl.js +343 -0
  8. package/dist/lnurl.js.map +1 -0
  9. package/dist/nip02.d.ts +27 -0
  10. package/dist/nip02.d.ts.map +1 -0
  11. package/dist/nip02.js +55 -0
  12. package/dist/nip02.js.map +1 -0
  13. package/dist/nip05.d.ts +24 -0
  14. package/dist/nip05.d.ts.map +1 -0
  15. package/dist/nip05.js +57 -0
  16. package/dist/nip05.js.map +1 -0
  17. package/dist/nip06.d.ts +26 -0
  18. package/dist/nip06.d.ts.map +1 -0
  19. package/dist/nip06.js +49 -0
  20. package/dist/nip06.js.map +1 -0
  21. package/dist/nip09.d.ts +34 -0
  22. package/dist/nip09.d.ts.map +1 -0
  23. package/dist/nip09.js +66 -0
  24. package/dist/nip09.js.map +1 -0
  25. package/dist/nip10.d.ts +40 -0
  26. package/dist/nip10.d.ts.map +1 -0
  27. package/dist/nip10.js +69 -0
  28. package/dist/nip10.js.map +1 -0
  29. package/dist/nip11.d.ts +41 -0
  30. package/dist/nip11.d.ts.map +1 -0
  31. package/dist/nip11.js +38 -0
  32. package/dist/nip11.js.map +1 -0
  33. package/dist/nip13.d.ts +26 -0
  34. package/dist/nip13.d.ts.map +1 -0
  35. package/dist/nip13.js +75 -0
  36. package/dist/nip13.js.map +1 -0
  37. package/dist/nip18.d.ts +28 -0
  38. package/dist/nip18.d.ts.map +1 -0
  39. package/dist/nip18.js +66 -0
  40. package/dist/nip18.js.map +1 -0
  41. package/dist/nip21.d.ts +14 -0
  42. package/dist/nip21.d.ts.map +1 -0
  43. package/dist/nip21.js +24 -0
  44. package/dist/nip21.js.map +1 -0
  45. package/dist/nip22.d.ts +26 -0
  46. package/dist/nip22.d.ts.map +1 -0
  47. package/dist/nip22.js +109 -0
  48. package/dist/nip22.js.map +1 -0
  49. package/dist/nip23.d.ts +24 -0
  50. package/dist/nip23.d.ts.map +1 -0
  51. package/dist/nip23.js +70 -0
  52. package/dist/nip23.js.map +1 -0
  53. package/dist/nip24.d.ts +31 -0
  54. package/dist/nip24.d.ts.map +1 -0
  55. package/dist/nip24.js +75 -0
  56. package/dist/nip24.js.map +1 -0
  57. package/dist/nip25.d.ts +32 -0
  58. package/dist/nip25.d.ts.map +1 -0
  59. package/dist/nip25.js +54 -0
  60. package/dist/nip25.js.map +1 -0
  61. package/dist/nip27.d.ts +16 -0
  62. package/dist/nip27.d.ts.map +1 -0
  63. package/dist/nip27.js +44 -0
  64. package/dist/nip27.js.map +1 -0
  65. package/dist/nip28.d.ts +52 -0
  66. package/dist/nip28.d.ts.map +1 -0
  67. package/dist/nip28.js +118 -0
  68. package/dist/nip28.js.map +1 -0
  69. package/dist/nip29.d.ts +60 -0
  70. package/dist/nip29.d.ts.map +1 -0
  71. package/dist/nip29.js +122 -0
  72. package/dist/nip29.js.map +1 -0
  73. package/dist/nip30.d.ts +18 -0
  74. package/dist/nip30.d.ts.map +1 -0
  75. package/dist/nip30.js +24 -0
  76. package/dist/nip30.js.map +1 -0
  77. package/dist/nip31.d.ts +11 -0
  78. package/dist/nip31.d.ts.map +1 -0
  79. package/dist/nip31.js +15 -0
  80. package/dist/nip31.js.map +1 -0
  81. package/dist/nip36.d.ts +14 -0
  82. package/dist/nip36.d.ts.map +1 -0
  83. package/dist/nip36.js +24 -0
  84. package/dist/nip36.js.map +1 -0
  85. package/dist/nip40.d.ts +14 -0
  86. package/dist/nip40.d.ts.map +1 -0
  87. package/dist/nip40.js +26 -0
  88. package/dist/nip40.js.map +1 -0
  89. package/dist/nip42.d.ts +20 -0
  90. package/dist/nip42.d.ts.map +1 -0
  91. package/dist/nip42.js +38 -0
  92. package/dist/nip42.js.map +1 -0
  93. package/dist/nip48.d.ts +23 -0
  94. package/dist/nip48.d.ts.map +1 -0
  95. package/dist/nip48.js +30 -0
  96. package/dist/nip48.js.map +1 -0
  97. package/dist/nip50.d.ts +23 -0
  98. package/dist/nip50.d.ts.map +1 -0
  99. package/dist/nip50.js +47 -0
  100. package/dist/nip50.js.map +1 -0
  101. package/dist/nip51.d.ts +57 -0
  102. package/dist/nip51.d.ts.map +1 -0
  103. package/dist/nip51.js +118 -0
  104. package/dist/nip51.js.map +1 -0
  105. package/dist/nip52.d.ts +112 -0
  106. package/dist/nip52.d.ts.map +1 -0
  107. package/dist/nip52.js +405 -0
  108. package/dist/nip52.js.map +1 -0
  109. package/dist/nip56.d.ts +28 -0
  110. package/dist/nip56.d.ts.map +1 -0
  111. package/dist/nip56.js +60 -0
  112. package/dist/nip56.js.map +1 -0
  113. package/dist/nip57.d.ts +48 -0
  114. package/dist/nip57.d.ts.map +1 -0
  115. package/dist/nip57.js +140 -0
  116. package/dist/nip57.js.map +1 -0
  117. package/dist/nip58.d.ts +133 -0
  118. package/dist/nip58.d.ts.map +1 -0
  119. package/dist/nip58.js +275 -0
  120. package/dist/nip58.js.map +1 -0
  121. package/dist/nip59.js +1 -1
  122. package/dist/nip65.d.ts +28 -0
  123. package/dist/nip65.d.ts.map +1 -0
  124. package/dist/nip65.js +83 -0
  125. package/dist/nip65.js.map +1 -0
  126. package/dist/nip75.d.ts +43 -0
  127. package/dist/nip75.d.ts.map +1 -0
  128. package/dist/nip75.js +144 -0
  129. package/dist/nip75.js.map +1 -0
  130. package/dist/nip98.d.ts +24 -0
  131. package/dist/nip98.d.ts.map +1 -0
  132. package/dist/nip98.js +68 -0
  133. package/dist/nip98.js.map +1 -0
  134. package/dist/relay.d.ts +2 -0
  135. package/dist/relay.d.ts.map +1 -1
  136. package/dist/relay.js +20 -0
  137. package/dist/relay.js.map +1 -1
  138. package/package.json +35 -4
package/dist/nip52.js ADDED
@@ -0,0 +1,405 @@
1
+ import { finalizeEvent } from './event.js';
2
+ /**
3
+ * Create a kind 31922 date-based calendar event template.
4
+ */
5
+ export function createDateBasedCalendarEventTemplate(event) {
6
+ const tags = [
7
+ ['d', event.identifier],
8
+ ['title', event.title],
9
+ ['start', event.start],
10
+ ];
11
+ if (event.end)
12
+ tags.push(['end', event.end]);
13
+ if (event.summary)
14
+ tags.push(['summary', event.summary]);
15
+ if (event.image)
16
+ tags.push(['image', event.image]);
17
+ if (event.locations) {
18
+ for (const loc of event.locations)
19
+ tags.push(['location', loc]);
20
+ }
21
+ if (event.geohash)
22
+ tags.push(['g', event.geohash]);
23
+ if (event.participants) {
24
+ for (const p of event.participants) {
25
+ const tag = ['p', p.pubkey];
26
+ if (p.relay)
27
+ tag.push(p.relay);
28
+ if (p.role)
29
+ tag.push(p.role);
30
+ tags.push(tag);
31
+ }
32
+ }
33
+ if (event.hashtags) {
34
+ for (const t of event.hashtags)
35
+ tags.push(['t', t]);
36
+ }
37
+ if (event.references) {
38
+ for (const r of event.references)
39
+ tags.push(['r', r]);
40
+ }
41
+ if (event.calendarAddresses) {
42
+ for (const a of event.calendarAddresses)
43
+ tags.push(['a', a]);
44
+ }
45
+ return {
46
+ kind: 31922,
47
+ tags,
48
+ content: event.content ?? '',
49
+ created_at: Math.floor(Date.now() / 1000),
50
+ };
51
+ }
52
+ /**
53
+ * Create and sign a kind 31922 date-based calendar event.
54
+ */
55
+ export function createDateBasedCalendarEvent(event, secretKey) {
56
+ return finalizeEvent(createDateBasedCalendarEventTemplate(event), secretKey);
57
+ }
58
+ /**
59
+ * Parse a kind 31922 date-based calendar event.
60
+ */
61
+ export function parseDateBasedCalendarEvent(event) {
62
+ const result = { identifier: '', title: '', start: '' };
63
+ const locations = [];
64
+ const participants = [];
65
+ const hashtags = [];
66
+ const references = [];
67
+ const calendarAddresses = [];
68
+ for (const tag of event.tags) {
69
+ switch (tag[0]) {
70
+ case 'd':
71
+ result.identifier = tag[1] ?? '';
72
+ break;
73
+ case 'title':
74
+ result.title = tag[1] ?? '';
75
+ break;
76
+ case 'start':
77
+ result.start = tag[1] ?? '';
78
+ break;
79
+ case 'end':
80
+ result.end = tag[1];
81
+ break;
82
+ case 'summary':
83
+ result.summary = tag[1];
84
+ break;
85
+ case 'image':
86
+ result.image = tag[1];
87
+ break;
88
+ case 'location':
89
+ if (tag[1])
90
+ locations.push(tag[1]);
91
+ break;
92
+ case 'g':
93
+ result.geohash = tag[1];
94
+ break;
95
+ case 'p':
96
+ if (tag[1]) {
97
+ const p = { pubkey: tag[1] };
98
+ if (tag[2])
99
+ p.relay = tag[2];
100
+ if (tag[3])
101
+ p.role = tag[3];
102
+ participants.push(p);
103
+ }
104
+ break;
105
+ case 't':
106
+ if (tag[1])
107
+ hashtags.push(tag[1]);
108
+ break;
109
+ case 'r':
110
+ if (tag[1])
111
+ references.push(tag[1]);
112
+ break;
113
+ case 'a':
114
+ if (tag[1])
115
+ calendarAddresses.push(tag[1]);
116
+ break;
117
+ }
118
+ }
119
+ if (event.content)
120
+ result.content = event.content;
121
+ if (locations.length > 0)
122
+ result.locations = locations;
123
+ if (participants.length > 0)
124
+ result.participants = participants;
125
+ if (hashtags.length > 0)
126
+ result.hashtags = hashtags;
127
+ if (references.length > 0)
128
+ result.references = references;
129
+ if (calendarAddresses.length > 0)
130
+ result.calendarAddresses = calendarAddresses;
131
+ return result;
132
+ }
133
+ /**
134
+ * Create a kind 31923 time-based calendar event template.
135
+ */
136
+ export function createTimeBasedCalendarEventTemplate(event) {
137
+ const dayGranularity = Math.floor(event.start / 86400);
138
+ const tags = [
139
+ ['d', event.identifier],
140
+ ['title', event.title],
141
+ ['start', String(event.start)],
142
+ ['D', String(dayGranularity)],
143
+ ];
144
+ if (event.end) {
145
+ tags.push(['end', String(event.end)]);
146
+ // Add D tags for each day covered
147
+ const endDay = Math.floor(event.end / 86400);
148
+ for (let day = dayGranularity + 1; day <= endDay; day++) {
149
+ tags.push(['D', String(day)]);
150
+ }
151
+ }
152
+ if (event.startTzid)
153
+ tags.push(['start_tzid', event.startTzid]);
154
+ if (event.endTzid)
155
+ tags.push(['end_tzid', event.endTzid]);
156
+ if (event.summary)
157
+ tags.push(['summary', event.summary]);
158
+ if (event.image)
159
+ tags.push(['image', event.image]);
160
+ if (event.locations) {
161
+ for (const loc of event.locations)
162
+ tags.push(['location', loc]);
163
+ }
164
+ if (event.geohash)
165
+ tags.push(['g', event.geohash]);
166
+ if (event.participants) {
167
+ for (const p of event.participants) {
168
+ const tag = ['p', p.pubkey];
169
+ if (p.relay)
170
+ tag.push(p.relay);
171
+ if (p.role)
172
+ tag.push(p.role);
173
+ tags.push(tag);
174
+ }
175
+ }
176
+ if (event.hashtags) {
177
+ for (const t of event.hashtags)
178
+ tags.push(['t', t]);
179
+ }
180
+ if (event.references) {
181
+ for (const r of event.references)
182
+ tags.push(['r', r]);
183
+ }
184
+ if (event.calendarAddresses) {
185
+ for (const a of event.calendarAddresses)
186
+ tags.push(['a', a]);
187
+ }
188
+ return {
189
+ kind: 31923,
190
+ tags,
191
+ content: event.content ?? '',
192
+ created_at: Math.floor(Date.now() / 1000),
193
+ };
194
+ }
195
+ /**
196
+ * Create and sign a kind 31923 time-based calendar event.
197
+ */
198
+ export function createTimeBasedCalendarEvent(event, secretKey) {
199
+ return finalizeEvent(createTimeBasedCalendarEventTemplate(event), secretKey);
200
+ }
201
+ /**
202
+ * Parse a kind 31923 time-based calendar event.
203
+ */
204
+ export function parseTimeBasedCalendarEvent(event) {
205
+ const result = { identifier: '', title: '', start: 0 };
206
+ const locations = [];
207
+ const participants = [];
208
+ const hashtags = [];
209
+ const references = [];
210
+ const calendarAddresses = [];
211
+ for (const tag of event.tags) {
212
+ switch (tag[0]) {
213
+ case 'd':
214
+ result.identifier = tag[1] ?? '';
215
+ break;
216
+ case 'title':
217
+ result.title = tag[1] ?? '';
218
+ break;
219
+ case 'start':
220
+ result.start = parseInt(tag[1], 10);
221
+ break;
222
+ case 'end':
223
+ result.end = parseInt(tag[1], 10);
224
+ break;
225
+ case 'start_tzid':
226
+ result.startTzid = tag[1];
227
+ break;
228
+ case 'end_tzid':
229
+ result.endTzid = tag[1];
230
+ break;
231
+ case 'summary':
232
+ result.summary = tag[1];
233
+ break;
234
+ case 'image':
235
+ result.image = tag[1];
236
+ break;
237
+ case 'location':
238
+ if (tag[1])
239
+ locations.push(tag[1]);
240
+ break;
241
+ case 'g':
242
+ result.geohash = tag[1];
243
+ break;
244
+ case 'p':
245
+ if (tag[1]) {
246
+ const p = { pubkey: tag[1] };
247
+ if (tag[2])
248
+ p.relay = tag[2];
249
+ if (tag[3])
250
+ p.role = tag[3];
251
+ participants.push(p);
252
+ }
253
+ break;
254
+ case 't':
255
+ if (tag[1])
256
+ hashtags.push(tag[1]);
257
+ break;
258
+ case 'r':
259
+ if (tag[1])
260
+ references.push(tag[1]);
261
+ break;
262
+ case 'a':
263
+ if (tag[1])
264
+ calendarAddresses.push(tag[1]);
265
+ break;
266
+ }
267
+ }
268
+ if (event.content)
269
+ result.content = event.content;
270
+ if (locations.length > 0)
271
+ result.locations = locations;
272
+ if (participants.length > 0)
273
+ result.participants = participants;
274
+ if (hashtags.length > 0)
275
+ result.hashtags = hashtags;
276
+ if (references.length > 0)
277
+ result.references = references;
278
+ if (calendarAddresses.length > 0)
279
+ result.calendarAddresses = calendarAddresses;
280
+ return result;
281
+ }
282
+ /**
283
+ * Create a kind 31924 calendar event template.
284
+ */
285
+ export function createCalendarTemplate(calendar) {
286
+ const tags = [
287
+ ['d', calendar.identifier],
288
+ ['title', calendar.title],
289
+ ];
290
+ if (calendar.eventAddresses) {
291
+ for (const a of calendar.eventAddresses)
292
+ tags.push(['a', a]);
293
+ }
294
+ return {
295
+ kind: 31924,
296
+ tags,
297
+ content: calendar.content ?? '',
298
+ created_at: Math.floor(Date.now() / 1000),
299
+ };
300
+ }
301
+ /**
302
+ * Create and sign a kind 31924 calendar event.
303
+ */
304
+ export function createCalendarEvent(calendar, secretKey) {
305
+ return finalizeEvent(createCalendarTemplate(calendar), secretKey);
306
+ }
307
+ /**
308
+ * Parse a kind 31924 calendar event.
309
+ */
310
+ export function parseCalendar(event) {
311
+ const result = { identifier: '', title: '' };
312
+ const eventAddresses = [];
313
+ for (const tag of event.tags) {
314
+ switch (tag[0]) {
315
+ case 'd':
316
+ result.identifier = tag[1] ?? '';
317
+ break;
318
+ case 'title':
319
+ result.title = tag[1] ?? '';
320
+ break;
321
+ case 'a':
322
+ if (tag[1])
323
+ eventAddresses.push(tag[1]);
324
+ break;
325
+ }
326
+ }
327
+ if (event.content)
328
+ result.content = event.content;
329
+ if (eventAddresses.length > 0)
330
+ result.eventAddresses = eventAddresses;
331
+ return result;
332
+ }
333
+ /**
334
+ * Create a kind 31925 calendar event RSVP template.
335
+ */
336
+ export function createCalendarEventRSVPTemplate(rsvp) {
337
+ const tags = [
338
+ ['d', rsvp.identifier],
339
+ ['a', rsvp.calendarEventAddress],
340
+ ['status', rsvp.status],
341
+ ];
342
+ if (rsvp.eventId)
343
+ tags.push(['e', rsvp.eventId]);
344
+ if (rsvp.freebusy && rsvp.status !== 'declined')
345
+ tags.push(['fb', rsvp.freebusy]);
346
+ if (rsvp.calendarEventAuthor)
347
+ tags.push(['p', rsvp.calendarEventAuthor]);
348
+ return {
349
+ kind: 31925,
350
+ tags,
351
+ content: rsvp.content ?? '',
352
+ created_at: Math.floor(Date.now() / 1000),
353
+ };
354
+ }
355
+ /**
356
+ * Create and sign a kind 31925 calendar event RSVP.
357
+ */
358
+ export function createCalendarEventRSVP(rsvp, secretKey) {
359
+ return finalizeEvent(createCalendarEventRSVPTemplate(rsvp), secretKey);
360
+ }
361
+ /**
362
+ * Parse a kind 31925 calendar event RSVP.
363
+ */
364
+ export function parseCalendarEventRSVP(event) {
365
+ const result = { identifier: '', calendarEventAddress: '', status: 'tentative' };
366
+ for (const tag of event.tags) {
367
+ switch (tag[0]) {
368
+ case 'd':
369
+ result.identifier = tag[1] ?? '';
370
+ break;
371
+ case 'a':
372
+ result.calendarEventAddress = tag[1] ?? '';
373
+ break;
374
+ case 'status':
375
+ result.status = tag[1] ?? 'tentative';
376
+ break;
377
+ case 'e':
378
+ result.eventId = tag[1];
379
+ break;
380
+ case 'fb':
381
+ result.freebusy = tag[1];
382
+ break;
383
+ case 'p':
384
+ result.calendarEventAuthor = tag[1];
385
+ break;
386
+ }
387
+ }
388
+ if (event.content)
389
+ result.content = event.content;
390
+ return result;
391
+ }
392
+ // ── Utility Helpers ────────────────────────────────────────────────────
393
+ /**
394
+ * Build a calendar event address string for use in `a` tags.
395
+ */
396
+ export function buildCalendarEventAddress(kind, pubkey, identifier) {
397
+ return `${kind}:${pubkey}:${identifier}`;
398
+ }
399
+ /**
400
+ * Check if an event is a calendar-related event.
401
+ */
402
+ export function isCalendarEvent(event) {
403
+ return event.kind === 31922 || event.kind === 31923 || event.kind === 31924 || event.kind === 31925;
404
+ }
405
+ //# sourceMappingURL=nip52.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip52.js","sourceRoot":"","sources":["../src/nip52.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type NostrEvent, type EventTemplate } from './event.js';
2
+ export type ReportType = 'nudity' | 'malware' | 'profanity' | 'illegal' | 'spam' | 'impersonation' | 'other';
3
+ export type ReportTarget = {
4
+ type: 'pubkey';
5
+ pubkey: string;
6
+ reportType: ReportType;
7
+ } | {
8
+ type: 'event';
9
+ eventId: string;
10
+ authorPubkey: string;
11
+ reportType: ReportType;
12
+ };
13
+ /**
14
+ * Create a kind 1984 report event template.
15
+ */
16
+ export declare function createReportEventTemplate(targets: ReportTarget[], content?: string): EventTemplate;
17
+ /**
18
+ * Create and sign a kind 1984 report event.
19
+ */
20
+ export declare function createReportEvent(targets: ReportTarget[], secretKey: Uint8Array, content?: string): NostrEvent;
21
+ /**
22
+ * Parse a kind 1984 report event.
23
+ */
24
+ export declare function parseReport(event: NostrEvent): {
25
+ targets: ReportTarget[];
26
+ content: string;
27
+ };
28
+ //# sourceMappingURL=nip56.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip56.d.ts","sourceRoot":"","sources":["../src/nip56.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,OAAO,CAAA;AAE5G,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAA;AAEpF;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBlG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAE9G;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG;IAC9C,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB,CA8BA"}
package/dist/nip56.js ADDED
@@ -0,0 +1,60 @@
1
+ import { finalizeEvent } from './event.js';
2
+ /**
3
+ * Create a kind 1984 report event template.
4
+ */
5
+ export function createReportEventTemplate(targets, content) {
6
+ const tags = [];
7
+ for (const target of targets) {
8
+ if (target.type === 'pubkey') {
9
+ tags.push(['p', target.pubkey, target.reportType]);
10
+ }
11
+ else {
12
+ tags.push(['e', target.eventId, target.reportType]);
13
+ tags.push(['p', target.authorPubkey]);
14
+ }
15
+ }
16
+ return {
17
+ kind: 1984,
18
+ tags,
19
+ content: content ?? '',
20
+ created_at: Math.floor(Date.now() / 1000),
21
+ };
22
+ }
23
+ /**
24
+ * Create and sign a kind 1984 report event.
25
+ */
26
+ export function createReportEvent(targets, secretKey, content) {
27
+ return finalizeEvent(createReportEventTemplate(targets, content), secretKey);
28
+ }
29
+ /**
30
+ * Parse a kind 1984 report event.
31
+ */
32
+ export function parseReport(event) {
33
+ const targets = [];
34
+ const eTags = event.tags.filter(t => t[0] === 'e');
35
+ const pTags = event.tags.filter(t => t[0] === 'p');
36
+ // Event reports: e tags with report type
37
+ for (const eTag of eTags) {
38
+ if (eTag[2]) {
39
+ const authorTag = pTags.find(p => !p[2]); // p tag without report type
40
+ targets.push({
41
+ type: 'event',
42
+ eventId: eTag[1],
43
+ authorPubkey: authorTag?.[1] ?? '',
44
+ reportType: eTag[2],
45
+ });
46
+ }
47
+ }
48
+ // Pubkey reports: p tags with report type
49
+ for (const pTag of pTags) {
50
+ if (pTag[2]) {
51
+ targets.push({
52
+ type: 'pubkey',
53
+ pubkey: pTag[1],
54
+ reportType: pTag[2],
55
+ });
56
+ }
57
+ }
58
+ return { targets, content: event.content };
59
+ }
60
+ //# sourceMappingURL=nip56.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip56.js","sourceRoot":"","sources":["../src/nip56.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAA;AAQ/E;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAuB,EAAE,OAAgB;IACjF,MAAM,IAAI,GAAe,EAAE,CAAA;IAE3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YACnD,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KAC1C,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAuB,EAAE,SAAqB,EAAE,OAAgB;IAChG,OAAO,aAAa,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAA;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB;IAI3C,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;IAElD,yCAAyC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,4BAA4B;YACrE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBAClC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAe;aAClC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACf,UAAU,EAAE,IAAI,CAAC,CAAC,CAAe;aAClC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AAC5C,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { type NostrEvent, type EventTemplate } from './event.js';
2
+ export type ZapRequest = {
3
+ recipientPubkey: string;
4
+ eventId?: string;
5
+ address?: string;
6
+ amount: number;
7
+ relays: string[];
8
+ content?: string;
9
+ lnurl?: string;
10
+ };
11
+ export type ZapReceipt = {
12
+ recipientPubkey: string;
13
+ senderPubkey?: string;
14
+ eventId?: string;
15
+ amount: number;
16
+ bolt11: string;
17
+ description: string;
18
+ preimage?: string;
19
+ };
20
+ export declare class ZapError extends Error {
21
+ code: string;
22
+ constructor(message: string, code?: string);
23
+ }
24
+ /**
25
+ * Create a kind 9734 zap request event template (unsigned).
26
+ */
27
+ export declare function createZapRequestEventTemplate(request: ZapRequest): EventTemplate;
28
+ /**
29
+ * Create and sign a kind 9734 zap request event.
30
+ */
31
+ export declare function createZapRequestEvent(request: ZapRequest, secretKey: Uint8Array): NostrEvent;
32
+ /**
33
+ * Parse a kind 9735 zap receipt event.
34
+ */
35
+ export declare function parseZapReceipt(event: NostrEvent): ZapReceipt;
36
+ /**
37
+ * Validate a kind 9735 zap receipt event.
38
+ */
39
+ export declare function validateZapReceipt(receipt: NostrEvent, request?: NostrEvent): boolean;
40
+ /**
41
+ * Fetch a zap invoice from an LNURL callback.
42
+ */
43
+ export declare function fetchZapInvoice(opts: {
44
+ lnurl: string;
45
+ zapRequest: NostrEvent;
46
+ amount: number;
47
+ }): Promise<string>;
48
+ //# sourceMappingURL=nip57.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip57.d.ts","sourceRoot":"","sources":["../src/nip57.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5F,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAA;gBACA,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAKhD;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa,CAiBhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAE5F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CA4C7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAuBrF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBlB"}