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/nip65.js ADDED
@@ -0,0 +1,83 @@
1
+ import { finalizeEvent } from './event.js';
2
+ import { normalizeURL } from './utils.js';
3
+ // Kind constant
4
+ const RELAY_LIST_KIND = 10002;
5
+ // Public API
6
+ /**
7
+ * Parse a kind 10002 relay list event into structured relay entries.
8
+ */
9
+ export function parseRelayList(event) {
10
+ if (event.kind !== RELAY_LIST_KIND) {
11
+ throw new Error(`Expected kind ${RELAY_LIST_KIND} relay list event, got kind ${event.kind}`);
12
+ }
13
+ const relays = [];
14
+ const seen = new Set();
15
+ for (const tag of event.tags) {
16
+ if (tag[0] !== 'r')
17
+ continue;
18
+ const url = normalizeURL(tag[1]);
19
+ if (seen.has(url))
20
+ continue;
21
+ seen.add(url);
22
+ const marker = tag[2];
23
+ if (marker === 'read') {
24
+ relays.push({ url, read: true, write: false });
25
+ }
26
+ else if (marker === 'write') {
27
+ relays.push({ url, read: false, write: true });
28
+ }
29
+ else {
30
+ // No marker = bidirectional
31
+ relays.push({ url, read: true, write: true });
32
+ }
33
+ }
34
+ return relays;
35
+ }
36
+ /**
37
+ * Create a kind 10002 relay list event template (unsigned).
38
+ * Sign with `finalizeEvent()` or pass to a Signer.
39
+ */
40
+ export function createRelayListEventTemplate(relays) {
41
+ const tags = [];
42
+ const seen = new Set();
43
+ for (const relay of relays) {
44
+ const url = normalizeURL(relay.url);
45
+ if (seen.has(url))
46
+ continue;
47
+ seen.add(url);
48
+ if (relay.read && relay.write) {
49
+ tags.push(['r', url]);
50
+ }
51
+ else if (relay.read) {
52
+ tags.push(['r', url, 'read']);
53
+ }
54
+ else if (relay.write) {
55
+ tags.push(['r', url, 'write']);
56
+ }
57
+ }
58
+ return {
59
+ kind: RELAY_LIST_KIND,
60
+ tags,
61
+ content: '',
62
+ created_at: Math.floor(Date.now() / 1000),
63
+ };
64
+ }
65
+ /**
66
+ * Create and sign a kind 10002 relay list event.
67
+ */
68
+ export function createRelayListEvent(relays, secretKey) {
69
+ return finalizeEvent(createRelayListEventTemplate(relays), secretKey);
70
+ }
71
+ /**
72
+ * Get only read relays from a parsed relay list.
73
+ */
74
+ export function getReadRelays(relays) {
75
+ return relays.filter(r => r.read).map(r => r.url);
76
+ }
77
+ /**
78
+ * Get only write relays from a parsed relay list.
79
+ */
80
+ export function getWriteRelays(relays) {
81
+ return relays.filter(r => r.write).map(r => r.url);
82
+ }
83
+ //# sourceMappingURL=nip65.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip65.js","sourceRoot":"","sources":["../src/nip65.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type NostrEvent, type EventTemplate } from './event.js';
2
+ export type ZapBeneficiary = {
3
+ pubkey: string;
4
+ relay?: string;
5
+ weight?: string;
6
+ };
7
+ export type ZapGoal = {
8
+ content: string;
9
+ amount: number;
10
+ relays: string[];
11
+ closedAt?: number;
12
+ image?: string;
13
+ summary?: string;
14
+ references?: string[];
15
+ addresses?: string[];
16
+ beneficiaries?: ZapBeneficiary[];
17
+ };
18
+ /**
19
+ * Create a kind 9041 zap goal event template.
20
+ */
21
+ export declare function createZapGoalTemplate(goal: ZapGoal): EventTemplate;
22
+ /**
23
+ * Create and sign a kind 9041 zap goal event.
24
+ */
25
+ export declare function createZapGoalEvent(goal: ZapGoal, secretKey: Uint8Array): NostrEvent;
26
+ /**
27
+ * Parse a kind 9041 zap goal event.
28
+ */
29
+ export declare function parseZapGoal(event: NostrEvent): ZapGoal;
30
+ /**
31
+ * Check if a zap goal is still open (not past its closed_at timestamp).
32
+ */
33
+ export declare function isZapGoalOpen(event: NostrEvent): boolean;
34
+ /**
35
+ * Calculate the zap goal progress from a list of zap receipt events (kind 9735).
36
+ * Returns the total amount received in millisatoshis.
37
+ */
38
+ export declare function calculateZapGoalProgress(zapReceipts: NostrEvent[]): number;
39
+ /**
40
+ * Build a `goal` tag for an addressable event that references a zap goal.
41
+ */
42
+ export declare function buildGoalTag(goalEventId: string, relay?: string): string[];
43
+ //# sourceMappingURL=nip75.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip75.d.ts","sourceRoot":"","sources":["../src/nip75.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/E,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAA;CACjC,CAAA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CA8BlE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAEnF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CA8CvD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAKxD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAmB1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1E"}
package/dist/nip75.js ADDED
@@ -0,0 +1,144 @@
1
+ import { finalizeEvent } from './event.js';
2
+ /**
3
+ * Create a kind 9041 zap goal event template.
4
+ */
5
+ export function createZapGoalTemplate(goal) {
6
+ const tags = [
7
+ ['amount', String(goal.amount)],
8
+ ['relays', ...goal.relays],
9
+ ];
10
+ if (goal.closedAt)
11
+ tags.push(['closed_at', String(goal.closedAt)]);
12
+ if (goal.image)
13
+ tags.push(['image', goal.image]);
14
+ if (goal.summary)
15
+ tags.push(['summary', goal.summary]);
16
+ if (goal.references) {
17
+ for (const r of goal.references)
18
+ tags.push(['r', r]);
19
+ }
20
+ if (goal.addresses) {
21
+ for (const a of goal.addresses)
22
+ tags.push(['a', a]);
23
+ }
24
+ if (goal.beneficiaries) {
25
+ for (const b of goal.beneficiaries) {
26
+ const tag = ['zap', b.pubkey];
27
+ if (b.relay)
28
+ tag.push(b.relay);
29
+ if (b.weight)
30
+ tag.push(b.weight);
31
+ tags.push(tag);
32
+ }
33
+ }
34
+ return {
35
+ kind: 9041,
36
+ tags,
37
+ content: goal.content,
38
+ created_at: Math.floor(Date.now() / 1000),
39
+ };
40
+ }
41
+ /**
42
+ * Create and sign a kind 9041 zap goal event.
43
+ */
44
+ export function createZapGoalEvent(goal, secretKey) {
45
+ return finalizeEvent(createZapGoalTemplate(goal), secretKey);
46
+ }
47
+ /**
48
+ * Parse a kind 9041 zap goal event.
49
+ */
50
+ export function parseZapGoal(event) {
51
+ const result = { content: event.content, amount: 0, relays: [] };
52
+ const references = [];
53
+ const addresses = [];
54
+ const beneficiaries = [];
55
+ for (const tag of event.tags) {
56
+ switch (tag[0]) {
57
+ case 'amount':
58
+ result.amount = parseInt(tag[1], 10);
59
+ break;
60
+ case 'relays':
61
+ result.relays = tag.slice(1);
62
+ break;
63
+ case 'closed_at':
64
+ result.closedAt = parseInt(tag[1], 10);
65
+ break;
66
+ case 'image':
67
+ result.image = tag[1];
68
+ break;
69
+ case 'summary':
70
+ result.summary = tag[1];
71
+ break;
72
+ case 'r':
73
+ if (tag[1])
74
+ references.push(tag[1]);
75
+ break;
76
+ case 'a':
77
+ if (tag[1])
78
+ addresses.push(tag[1]);
79
+ break;
80
+ case 'zap': {
81
+ if (tag[1]) {
82
+ const b = { pubkey: tag[1] };
83
+ if (tag[2])
84
+ b.relay = tag[2];
85
+ if (tag[3])
86
+ b.weight = tag[3];
87
+ beneficiaries.push(b);
88
+ }
89
+ break;
90
+ }
91
+ }
92
+ }
93
+ if (references.length > 0)
94
+ result.references = references;
95
+ if (addresses.length > 0)
96
+ result.addresses = addresses;
97
+ if (beneficiaries.length > 0)
98
+ result.beneficiaries = beneficiaries;
99
+ return result;
100
+ }
101
+ /**
102
+ * Check if a zap goal is still open (not past its closed_at timestamp).
103
+ */
104
+ export function isZapGoalOpen(event) {
105
+ const closedAtTag = event.tags.find(t => t[0] === 'closed_at');
106
+ if (!closedAtTag)
107
+ return true;
108
+ const closedAt = parseInt(closedAtTag[1], 10);
109
+ return Math.floor(Date.now() / 1000) < closedAt;
110
+ }
111
+ /**
112
+ * Calculate the zap goal progress from a list of zap receipt events (kind 9735).
113
+ * Returns the total amount received in millisatoshis.
114
+ */
115
+ export function calculateZapGoalProgress(zapReceipts) {
116
+ let total = 0;
117
+ for (const receipt of zapReceipts) {
118
+ if (receipt.kind !== 9735)
119
+ continue;
120
+ const descriptionTag = receipt.tags.find(t => t[0] === 'description');
121
+ if (!descriptionTag?.[1])
122
+ continue;
123
+ try {
124
+ const zapRequest = JSON.parse(descriptionTag[1]);
125
+ const amountTag = zapRequest.tags.find(t => t[0] === 'amount');
126
+ if (amountTag)
127
+ total += parseInt(amountTag[1], 10);
128
+ }
129
+ catch {
130
+ // Invalid description JSON, skip
131
+ }
132
+ }
133
+ return total;
134
+ }
135
+ /**
136
+ * Build a `goal` tag for an addressable event that references a zap goal.
137
+ */
138
+ export function buildGoalTag(goalEventId, relay) {
139
+ const tag = ['goal', goalEventId];
140
+ if (relay)
141
+ tag.push(relay);
142
+ return tag;
143
+ }
144
+ //# sourceMappingURL=nip75.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip75.js","sourceRoot":"","sources":["../src/nip75.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type NostrEvent, type EventTemplate } from './event.js';
2
+ export type HttpAuthOptions = {
3
+ url: string;
4
+ method: string;
5
+ body?: Uint8Array | string;
6
+ };
7
+ /**
8
+ * Create a kind 27235 HTTP auth event template (unsigned).
9
+ */
10
+ export declare function createHttpAuthEventTemplate(opts: HttpAuthOptions): EventTemplate;
11
+ /**
12
+ * Create and sign a kind 27235 HTTP auth event.
13
+ */
14
+ export declare function createHttpAuthEvent(opts: HttpAuthOptions, secretKey: Uint8Array): NostrEvent;
15
+ /**
16
+ * Get the Authorization header value from a signed HTTP auth event.
17
+ * Returns "Nostr <base64>" format.
18
+ */
19
+ export declare function getAuthorizationHeader(event: NostrEvent): string;
20
+ /**
21
+ * Verify an HTTP auth event against expected request parameters.
22
+ */
23
+ export declare function verifyHttpAuthEvent(event: NostrEvent, opts: HttpAuthOptions): boolean;
24
+ //# sourceMappingURL=nip98.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip98.d.ts","sourceRoot":"","sources":["../src/nip98.ts"],"names":[],"mappings":"AAIA,OAAO,EAA8B,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAG5F,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;CAC3B,CAAA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa,CAkBhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAE5F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAsBrF"}
package/dist/nip98.js ADDED
@@ -0,0 +1,68 @@
1
+ import { sha256 } from '@noble/hashes/sha2';
2
+ import { bytesToHex } from '@noble/hashes/utils';
3
+ import { base64 } from '@scure/base';
4
+ import { finalizeEvent, verifyEvent } from './event.js';
5
+ import { utf8Encoder } from './utils.js';
6
+ /**
7
+ * Create a kind 27235 HTTP auth event template (unsigned).
8
+ */
9
+ export function createHttpAuthEventTemplate(opts) {
10
+ const tags = [
11
+ ['u', opts.url],
12
+ ['method', opts.method.toUpperCase()],
13
+ ];
14
+ if (opts.body) {
15
+ const bodyBytes = typeof opts.body === 'string' ? utf8Encoder.encode(opts.body) : opts.body;
16
+ const hash = bytesToHex(sha256(bodyBytes));
17
+ tags.push(['payload', hash]);
18
+ }
19
+ return {
20
+ kind: 27235,
21
+ tags,
22
+ content: '',
23
+ created_at: Math.floor(Date.now() / 1000),
24
+ };
25
+ }
26
+ /**
27
+ * Create and sign a kind 27235 HTTP auth event.
28
+ */
29
+ export function createHttpAuthEvent(opts, secretKey) {
30
+ return finalizeEvent(createHttpAuthEventTemplate(opts), secretKey);
31
+ }
32
+ /**
33
+ * Get the Authorization header value from a signed HTTP auth event.
34
+ * Returns "Nostr <base64>" format.
35
+ */
36
+ export function getAuthorizationHeader(event) {
37
+ const json = JSON.stringify(event);
38
+ const encoded = base64.encode(utf8Encoder.encode(json));
39
+ return `Nostr ${encoded}`;
40
+ }
41
+ /**
42
+ * Verify an HTTP auth event against expected request parameters.
43
+ */
44
+ export function verifyHttpAuthEvent(event, opts) {
45
+ if (event.kind !== 27235)
46
+ return false;
47
+ if (!verifyEvent(event))
48
+ return false;
49
+ // Check timestamp is within 60 seconds
50
+ const now = Math.floor(Date.now() / 1000);
51
+ if (Math.abs(event.created_at - now) > 60)
52
+ return false;
53
+ const urlTag = event.tags.find(t => t[0] === 'u');
54
+ const methodTag = event.tags.find(t => t[0] === 'method');
55
+ if (!urlTag || urlTag[1] !== opts.url)
56
+ return false;
57
+ if (!methodTag || methodTag[1] !== opts.method.toUpperCase())
58
+ return false;
59
+ if (opts.body) {
60
+ const bodyBytes = typeof opts.body === 'string' ? utf8Encoder.encode(opts.body) : opts.body;
61
+ const expectedHash = bytesToHex(sha256(bodyBytes));
62
+ const payloadTag = event.tags.find(t => t[0] === 'payload');
63
+ if (!payloadTag || payloadTag[1] !== expectedHash)
64
+ return false;
65
+ }
66
+ return true;
67
+ }
68
+ //# sourceMappingURL=nip98.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip98.js","sourceRoot":"","sources":["../src/nip98.ts"],"names":[],"mappings":"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"}
package/dist/relay.d.ts CHANGED
@@ -27,6 +27,7 @@ export declare class Relay {
27
27
  eoseTimeout: number;
28
28
  publishTimeout: number;
29
29
  openSubs: Map<string, Subscription>;
30
+ onauth: ((challenge: string) => void) | undefined;
30
31
  private connectionPromise;
31
32
  private openEventPublishes;
32
33
  private ws;
@@ -44,6 +45,7 @@ export declare class Relay {
44
45
  subscribe(filters: Filter[], params: SubscriptionParams & {
45
46
  id?: string;
46
47
  }): Subscription;
48
+ auth(event: NostrEvent): Promise<string>;
47
49
  close(): void;
48
50
  private closeAllSubscriptions;
49
51
  _onmessage(ev: MessageEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAGvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,qBAAa,YAAY;IACvB,SAAgB,KAAK,EAAE,KAAK,CAAA;IAC5B,SAAgB,EAAE,EAAE,MAAM,CAAA;IACnB,MAAM,UAAQ;IACd,KAAK,UAAQ;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IAEjB,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IAClC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAEtD,OAAO,CAAC,iBAAiB,CAA2C;gBAExD,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB;IASnF,IAAI;IAKJ,YAAY;IAOZ,KAAK,CAAC,MAAM,SAAqB;CAYlC;AAED,qBAAa,KAAK;IAChB,SAAgB,GAAG,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAQ;IACnB,WAAW,SAAO;IAClB,cAAc,SAAO;IACrB,QAAQ,4BAAkC;IAEjD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,kBAAkB,CAItB;IACJ,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,UAAU,CAAkB;gBAExB,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,uBAAuB,CAAC,EAAE,OAAO,SAAS,CAAA;KAAE;IAK9E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CzD,IAAI,CAAC,OAAO,EAAE,MAAM;IAKd,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IASxF,KAAK;IASL,OAAO,CAAC,qBAAqB;IAY7B,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;CAiDnC"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAGvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,qBAAa,YAAY;IACvB,SAAgB,KAAK,EAAE,KAAK,CAAA;IAC5B,SAAgB,EAAE,EAAE,MAAM,CAAA;IACnB,MAAM,UAAQ;IACd,KAAK,UAAQ;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IAEjB,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IAClC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAEtD,OAAO,CAAC,iBAAiB,CAA2C;gBAExD,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB;IASnF,IAAI;IAKJ,YAAY;IAOZ,KAAK,CAAC,MAAM,SAAqB;CAYlC;AAED,qBAAa,KAAK;IAChB,SAAgB,GAAG,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAQ;IACnB,WAAW,SAAO;IAClB,cAAc,SAAO;IACrB,QAAQ,4BAAkC;IAC1C,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAExD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,kBAAkB,CAItB;IACJ,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,UAAU,CAAkB;gBAExB,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,uBAAuB,CAAC,EAAE,OAAO,SAAS,CAAA;KAAE;IAK9E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CzD,IAAI,CAAC,OAAO,EAAE,MAAM;IAKd,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IASlF,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAe9C,KAAK;IASL,OAAO,CAAC,qBAAqB;IAY7B,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;CAsDnC"}
package/dist/relay.js CHANGED
@@ -50,6 +50,7 @@ export class Relay {
50
50
  eoseTimeout = 4400;
51
51
  publishTimeout = 4400;
52
52
  openSubs = new Map();
53
+ onauth;
53
54
  connectionPromise;
54
55
  openEventPublishes = new Map();
55
56
  ws;
@@ -128,6 +129,20 @@ export class Relay {
128
129
  sub.fire();
129
130
  return sub;
130
131
  }
132
+ async auth(event) {
133
+ const ret = new Promise((resolve, reject) => {
134
+ const timeout = setTimeout(() => {
135
+ const ep = this.openEventPublishes.get(event.id);
136
+ if (ep) {
137
+ ep.reject(new Error('auth timed out'));
138
+ this.openEventPublishes.delete(event.id);
139
+ }
140
+ }, this.publishTimeout);
141
+ this.openEventPublishes.set(event.id, { resolve, reject, timeout });
142
+ });
143
+ this.send('["AUTH",' + JSON.stringify(event) + ']');
144
+ return ret;
145
+ }
131
146
  close() {
132
147
  this.closeAllSubscriptions('relay connection closed by us');
133
148
  this._connected = false;
@@ -195,6 +210,11 @@ export class Relay {
195
210
  so.close(data[2]);
196
211
  return;
197
212
  }
213
+ case 'AUTH': {
214
+ const challenge = data[1];
215
+ this.onauth?.(challenge);
216
+ return;
217
+ }
198
218
  case 'NOTICE': {
199
219
  return;
200
220
  }
package/dist/relay.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nostr-core",
3
- "version": "0.4.0",
4
- "description": "Dead-simple, vendor-neutral NWC (Nostr Wallet Connect) client",
3
+ "version": "0.7.0",
4
+ "description": "Comprehensive Nostr protocol toolkit and NWC (Nostr Wallet Connect) client",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -31,7 +31,9 @@
31
31
  "@noble/ciphers": "^1.2.0",
32
32
  "@noble/curves": "^1.8.0",
33
33
  "@noble/hashes": "^1.7.0",
34
- "@scure/base": "^1.2.0"
34
+ "@scure/base": "^1.2.0",
35
+ "@scure/bip32": "^2.0.1",
36
+ "@scure/bip39": "^2.0.1"
35
37
  },
36
38
  "devDependencies": {
37
39
  "typescript": "^5.7.0",
@@ -44,6 +46,35 @@
44
46
  "wallet-connect",
45
47
  "lightning",
46
48
  "bitcoin",
47
- "nip-47"
49
+ "nip-04",
50
+ "nip-05",
51
+ "nip-06",
52
+ "nip-07",
53
+ "nip-09",
54
+ "nip-10",
55
+ "nip-11",
56
+ "nip-17",
57
+ "nip-19",
58
+ "nip-21",
59
+ "nip-22",
60
+ "nip-23",
61
+ "nip-24",
62
+ "nip-25",
63
+ "nip-27",
64
+ "nip-29",
65
+ "nip-30",
66
+ "nip-31",
67
+ "nip-42",
68
+ "nip-44",
69
+ "nip-46",
70
+ "nip-47",
71
+ "nip-51",
72
+ "nip-52",
73
+ "nip-57",
74
+ "nip-58",
75
+ "nip-59",
76
+ "nip-65",
77
+ "nip-75",
78
+ "nip-98"
48
79
  ]
49
80
  }