@unicitylabs/nostr-js-sdk 0.0.1

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 (124) hide show
  1. package/README.md +290 -0
  2. package/dist/browser/index.js +8444 -0
  3. package/dist/browser/index.js.map +1 -0
  4. package/dist/browser/index.min.js +12 -0
  5. package/dist/browser/index.min.js.map +1 -0
  6. package/dist/browser/index.umd.js +8524 -0
  7. package/dist/browser/index.umd.js.map +1 -0
  8. package/dist/browser/index.umd.min.js +12 -0
  9. package/dist/browser/index.umd.min.js.map +1 -0
  10. package/dist/cjs/NostrKeyManager.js +265 -0
  11. package/dist/cjs/NostrKeyManager.js.map +1 -0
  12. package/dist/cjs/client/NostrClient.js +518 -0
  13. package/dist/cjs/client/NostrClient.js.map +1 -0
  14. package/dist/cjs/client/NostrEventListener.js +31 -0
  15. package/dist/cjs/client/NostrEventListener.js.map +1 -0
  16. package/dist/cjs/client/WebSocketAdapter.js +90 -0
  17. package/dist/cjs/client/WebSocketAdapter.js.map +1 -0
  18. package/dist/cjs/client/index.js +18 -0
  19. package/dist/cjs/client/index.js.map +1 -0
  20. package/dist/cjs/crypto/bech32.js +201 -0
  21. package/dist/cjs/crypto/bech32.js.map +1 -0
  22. package/dist/cjs/crypto/index.js +49 -0
  23. package/dist/cjs/crypto/index.js.map +1 -0
  24. package/dist/cjs/crypto/nip04.js +327 -0
  25. package/dist/cjs/crypto/nip04.js.map +1 -0
  26. package/dist/cjs/crypto/schnorr.js +101 -0
  27. package/dist/cjs/crypto/schnorr.js.map +1 -0
  28. package/dist/cjs/index.js +57 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/nametag/NametagBinding.js +196 -0
  31. package/dist/cjs/nametag/NametagBinding.js.map +1 -0
  32. package/dist/cjs/nametag/NametagUtils.js +156 -0
  33. package/dist/cjs/nametag/NametagUtils.js.map +1 -0
  34. package/dist/cjs/nametag/index.js +47 -0
  35. package/dist/cjs/nametag/index.js.map +1 -0
  36. package/dist/cjs/protocol/Event.js +209 -0
  37. package/dist/cjs/protocol/Event.js.map +1 -0
  38. package/dist/cjs/protocol/EventKinds.js +126 -0
  39. package/dist/cjs/protocol/EventKinds.js.map +1 -0
  40. package/dist/cjs/protocol/Filter.js +202 -0
  41. package/dist/cjs/protocol/Filter.js.map +1 -0
  42. package/dist/cjs/protocol/index.js +50 -0
  43. package/dist/cjs/protocol/index.js.map +1 -0
  44. package/dist/cjs/token/TokenTransferProtocol.js +196 -0
  45. package/dist/cjs/token/TokenTransferProtocol.js.map +1 -0
  46. package/dist/cjs/token/index.js +45 -0
  47. package/dist/cjs/token/index.js.map +1 -0
  48. package/dist/esm/NostrKeyManager.js +228 -0
  49. package/dist/esm/NostrKeyManager.js.map +1 -0
  50. package/dist/esm/client/NostrClient.js +481 -0
  51. package/dist/esm/client/NostrClient.js.map +1 -0
  52. package/dist/esm/client/NostrEventListener.js +27 -0
  53. package/dist/esm/client/NostrEventListener.js.map +1 -0
  54. package/dist/esm/client/WebSocketAdapter.js +52 -0
  55. package/dist/esm/client/WebSocketAdapter.js.map +1 -0
  56. package/dist/esm/client/index.js +7 -0
  57. package/dist/esm/client/index.js.map +1 -0
  58. package/dist/esm/crypto/bech32.js +193 -0
  59. package/dist/esm/crypto/bech32.js.map +1 -0
  60. package/dist/esm/crypto/index.js +10 -0
  61. package/dist/esm/crypto/index.js.map +1 -0
  62. package/dist/esm/crypto/nip04.js +286 -0
  63. package/dist/esm/crypto/nip04.js.map +1 -0
  64. package/dist/esm/crypto/schnorr.js +93 -0
  65. package/dist/esm/crypto/schnorr.js.map +1 -0
  66. package/dist/esm/index.js +32 -0
  67. package/dist/esm/index.js.map +1 -0
  68. package/dist/esm/nametag/NametagBinding.js +155 -0
  69. package/dist/esm/nametag/NametagBinding.js.map +1 -0
  70. package/dist/esm/nametag/NametagUtils.js +149 -0
  71. package/dist/esm/nametag/NametagUtils.js.map +1 -0
  72. package/dist/esm/nametag/index.js +8 -0
  73. package/dist/esm/nametag/index.js.map +1 -0
  74. package/dist/esm/protocol/Event.js +172 -0
  75. package/dist/esm/protocol/Event.js.map +1 -0
  76. package/dist/esm/protocol/EventKinds.js +119 -0
  77. package/dist/esm/protocol/EventKinds.js.map +1 -0
  78. package/dist/esm/protocol/Filter.js +197 -0
  79. package/dist/esm/protocol/Filter.js.map +1 -0
  80. package/dist/esm/protocol/index.js +8 -0
  81. package/dist/esm/protocol/index.js.map +1 -0
  82. package/dist/esm/token/TokenTransferProtocol.js +154 -0
  83. package/dist/esm/token/TokenTransferProtocol.js.map +1 -0
  84. package/dist/esm/token/index.js +6 -0
  85. package/dist/esm/token/index.js.map +1 -0
  86. package/dist/types/NostrKeyManager.d.ts +150 -0
  87. package/dist/types/NostrKeyManager.d.ts.map +1 -0
  88. package/dist/types/client/NostrClient.d.ts +154 -0
  89. package/dist/types/client/NostrClient.d.ts.map +1 -0
  90. package/dist/types/client/NostrEventListener.d.ts +40 -0
  91. package/dist/types/client/NostrEventListener.d.ts.map +1 -0
  92. package/dist/types/client/WebSocketAdapter.d.ts +55 -0
  93. package/dist/types/client/WebSocketAdapter.d.ts.map +1 -0
  94. package/dist/types/client/index.d.ts +9 -0
  95. package/dist/types/client/index.d.ts.map +1 -0
  96. package/dist/types/crypto/bech32.d.ts +51 -0
  97. package/dist/types/crypto/bech32.d.ts.map +1 -0
  98. package/dist/types/crypto/index.d.ts +10 -0
  99. package/dist/types/crypto/index.d.ts.map +1 -0
  100. package/dist/types/crypto/nip04.d.ts +56 -0
  101. package/dist/types/crypto/nip04.d.ts.map +1 -0
  102. package/dist/types/crypto/schnorr.d.ts +47 -0
  103. package/dist/types/crypto/schnorr.d.ts.map +1 -0
  104. package/dist/types/index.d.ts +31 -0
  105. package/dist/types/index.d.ts.map +1 -0
  106. package/dist/types/nametag/NametagBinding.d.ts +68 -0
  107. package/dist/types/nametag/NametagBinding.d.ts.map +1 -0
  108. package/dist/types/nametag/NametagUtils.d.ts +44 -0
  109. package/dist/types/nametag/NametagUtils.d.ts.map +1 -0
  110. package/dist/types/nametag/index.d.ts +8 -0
  111. package/dist/types/nametag/index.d.ts.map +1 -0
  112. package/dist/types/protocol/Event.d.ts +112 -0
  113. package/dist/types/protocol/Event.d.ts.map +1 -0
  114. package/dist/types/protocol/EventKinds.d.ts +62 -0
  115. package/dist/types/protocol/EventKinds.d.ts.map +1 -0
  116. package/dist/types/protocol/Filter.d.ts +146 -0
  117. package/dist/types/protocol/Filter.d.ts.map +1 -0
  118. package/dist/types/protocol/index.d.ts +10 -0
  119. package/dist/types/protocol/index.d.ts.map +1 -0
  120. package/dist/types/token/TokenTransferProtocol.d.ts +67 -0
  121. package/dist/types/token/TokenTransferProtocol.d.ts.map +1 -0
  122. package/dist/types/token/index.d.ts +6 -0
  123. package/dist/types/token/index.d.ts.map +1 -0
  124. package/package.json +89 -0
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ /**
3
+ * Event - Represents a Nostr event (NIP-01).
4
+ * Provides serialization, signing, and verification functionality.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Event = void 0;
41
+ const sha256_1 = require("@noble/hashes/sha256");
42
+ const utils_1 = require("@noble/hashes/utils");
43
+ const Schnorr = __importStar(require("../crypto/schnorr.js"));
44
+ /**
45
+ * Event class representing a Nostr event (NIP-01).
46
+ */
47
+ class Event {
48
+ /** Event ID - SHA-256 hash of the serialized event data (hex) */
49
+ id;
50
+ /** Creator's x-only public key (hex) */
51
+ pubkey;
52
+ /** Unix timestamp in seconds */
53
+ created_at;
54
+ /** Event kind (type) */
55
+ kind;
56
+ /** Event tags */
57
+ tags;
58
+ /** Event content */
59
+ content;
60
+ /** Schnorr signature (hex) */
61
+ sig;
62
+ /**
63
+ * Create an Event instance.
64
+ * @param data Signed event data
65
+ */
66
+ constructor(data) {
67
+ this.id = data.id;
68
+ this.pubkey = data.pubkey;
69
+ this.created_at = data.created_at;
70
+ this.kind = data.kind;
71
+ this.tags = data.tags;
72
+ this.content = data.content;
73
+ this.sig = data.sig;
74
+ }
75
+ /**
76
+ * Create and sign a new event.
77
+ * @param keyManager Key manager with signing key
78
+ * @param data Unsigned event data
79
+ * @returns Signed Event instance
80
+ */
81
+ static create(keyManager, data) {
82
+ const pubkey = keyManager.getPublicKeyHex();
83
+ const created_at = data.created_at ?? Math.floor(Date.now() / 1000);
84
+ // Calculate event ID
85
+ const id = Event.calculateId(pubkey, created_at, data.kind, data.tags, data.content);
86
+ // Sign the event ID
87
+ const idBytes = (0, utils_1.hexToBytes)(id);
88
+ const sig = keyManager.signHex(idBytes);
89
+ return new Event({
90
+ id,
91
+ pubkey,
92
+ created_at,
93
+ kind: data.kind,
94
+ tags: data.tags,
95
+ content: data.content,
96
+ sig,
97
+ });
98
+ }
99
+ /**
100
+ * Calculate the event ID from event data.
101
+ * ID = SHA-256(serialized event data)
102
+ * Serialized format: [0, pubkey, created_at, kind, tags, content]
103
+ */
104
+ static calculateId(pubkey, created_at, kind, tags, content) {
105
+ const serialized = JSON.stringify([0, pubkey, created_at, kind, tags, content]);
106
+ const hash = (0, sha256_1.sha256)(new TextEncoder().encode(serialized));
107
+ return (0, utils_1.bytesToHex)(hash);
108
+ }
109
+ /**
110
+ * Verify the event signature.
111
+ * @returns true if the signature is valid
112
+ */
113
+ verify() {
114
+ try {
115
+ // Verify the ID
116
+ const calculatedId = Event.calculateId(this.pubkey, this.created_at, this.kind, this.tags, this.content);
117
+ if (calculatedId !== this.id) {
118
+ return false;
119
+ }
120
+ // Verify the signature
121
+ const idBytes = (0, utils_1.hexToBytes)(this.id);
122
+ const sigBytes = (0, utils_1.hexToBytes)(this.sig);
123
+ const pubkeyBytes = (0, utils_1.hexToBytes)(this.pubkey);
124
+ return Schnorr.verify(sigBytes, idBytes, pubkeyBytes);
125
+ }
126
+ catch {
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * Parse an event from JSON data.
132
+ * @param json JSON object or string
133
+ * @returns Event instance
134
+ */
135
+ static fromJSON(json) {
136
+ const data = typeof json === 'string' ? JSON.parse(json) : json;
137
+ if (!Event.isValidEventData(data)) {
138
+ throw new Error('Invalid event data');
139
+ }
140
+ return new Event(data);
141
+ }
142
+ /**
143
+ * Check if data has valid event structure.
144
+ */
145
+ static isValidEventData(data) {
146
+ if (typeof data !== 'object' || data === null) {
147
+ return false;
148
+ }
149
+ const obj = data;
150
+ return (typeof obj.id === 'string' &&
151
+ typeof obj.pubkey === 'string' &&
152
+ typeof obj.created_at === 'number' &&
153
+ typeof obj.kind === 'number' &&
154
+ Array.isArray(obj.tags) &&
155
+ typeof obj.content === 'string' &&
156
+ typeof obj.sig === 'string');
157
+ }
158
+ /**
159
+ * Convert the event to a plain object.
160
+ * @returns Plain object representation
161
+ */
162
+ toJSON() {
163
+ return {
164
+ id: this.id,
165
+ pubkey: this.pubkey,
166
+ created_at: this.created_at,
167
+ kind: this.kind,
168
+ tags: this.tags,
169
+ content: this.content,
170
+ sig: this.sig,
171
+ };
172
+ }
173
+ /**
174
+ * Get the first value of a tag by name.
175
+ * @param tagName Tag name to find
176
+ * @returns First value of the tag, or undefined if not found
177
+ */
178
+ getTagValue(tagName) {
179
+ const tag = this.tags.find((t) => t[0] === tagName);
180
+ return tag?.[1];
181
+ }
182
+ /**
183
+ * Get all values of a tag by name.
184
+ * @param tagName Tag name to find
185
+ * @returns Array of tag values
186
+ */
187
+ getTagValues(tagName) {
188
+ return this.tags.filter((t) => t[0] === tagName).map((t) => t[1] ?? '');
189
+ }
190
+ /**
191
+ * Check if a tag exists.
192
+ * @param tagName Tag name to check
193
+ * @returns true if the tag exists
194
+ */
195
+ hasTag(tagName) {
196
+ return this.tags.some((t) => t[0] === tagName);
197
+ }
198
+ /**
199
+ * Get all values from a single tag entry (excluding the tag name).
200
+ * @param tagName Tag name to find
201
+ * @returns Array of values from the first matching tag, or empty array
202
+ */
203
+ getTagEntryValues(tagName) {
204
+ const tag = this.tags.find((t) => t[0] === tagName);
205
+ return tag ? tag.slice(1) : [];
206
+ }
207
+ }
208
+ exports.Event = Event;
209
+ //# sourceMappingURL=Event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../src/protocol/Event.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAA8C;AAC9C,+CAA6D;AAE7D,8DAAgD;AA8BhD;;GAEG;AACH,MAAa,KAAK;IAChB,iEAAiE;IACjE,EAAE,CAAS;IAEX,wCAAwC;IACxC,MAAM,CAAS;IAEf,gCAAgC;IAChC,UAAU,CAAS;IAEnB,wBAAwB;IACxB,IAAI,CAAS;IAEb,iBAAiB;IACjB,IAAI,CAAa;IAEjB,oBAAoB;IACpB,OAAO,CAAS;IAEhB,8BAA8B;IAC9B,GAAG,CAAS;IAEZ;;;OAGG;IACH,YAAY,IAAqB;QAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,UAA2B,EAAE,IAAuB;QAChE,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEpE,qBAAqB;QACrB,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErF,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,IAAI,KAAK,CAAC;YACf,EAAE;YACF,MAAM;YACN,UAAU;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAChB,MAAc,EACd,UAAkB,EAClB,IAAY,EACZ,IAAgB,EAChB,OAAe;QAEf,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,CACb,CAAC;YAEF,IAAI,YAAY,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,uBAAuB;YACvB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE5C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAa;QAC3B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,IAAuB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAa;QACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,IAA+B,CAAC;QAE5C,OAAO,CACL,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;YAC1B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAC9B,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;YAClC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC5B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAC/B,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAC5B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,OAAe;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAAe;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QACpD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC;CACF;AAxMD,sBAwMC"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * EventKinds - Standardized Nostr event kind definitions.
4
+ * Includes both standard NIP kinds and Unicity custom kinds.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FILE_METADATA = exports.TOKEN_TRANSFER = exports.AGENT_LOCATION = exports.AGENT_PROFILE = exports.APP_DATA = exports.RELAY_LIST = exports.GIFT_WRAP = exports.REACTION = exports.DELETION = exports.ENCRYPTED_DM = exports.CONTACTS = exports.RECOMMEND_RELAY = exports.TEXT_NOTE = exports.PROFILE = void 0;
8
+ exports.isReplaceable = isReplaceable;
9
+ exports.isEphemeral = isEphemeral;
10
+ exports.isParameterizedReplaceable = isParameterizedReplaceable;
11
+ exports.getName = getName;
12
+ // ============================================================================
13
+ // Standard NIP Event Kinds
14
+ // ============================================================================
15
+ /** NIP-01: User profile metadata */
16
+ exports.PROFILE = 0;
17
+ /** NIP-01: Short text note */
18
+ exports.TEXT_NOTE = 1;
19
+ /** NIP-01: Recommend relay to followers */
20
+ exports.RECOMMEND_RELAY = 2;
21
+ /** NIP-02: Contact list (follows) */
22
+ exports.CONTACTS = 3;
23
+ /** NIP-04: Encrypted direct messages */
24
+ exports.ENCRYPTED_DM = 4;
25
+ /** NIP-09: Event deletion */
26
+ exports.DELETION = 5;
27
+ /** NIP-25: Reactions (likes, etc.) */
28
+ exports.REACTION = 7;
29
+ /** NIP-59: Gift wrap for private events */
30
+ exports.GIFT_WRAP = 1059;
31
+ /** NIP-65: Relay list metadata */
32
+ exports.RELAY_LIST = 10002;
33
+ /** NIP-78: Application-specific data (parameterized replaceable) */
34
+ exports.APP_DATA = 30078;
35
+ // ============================================================================
36
+ // Unicity Custom Event Kinds
37
+ // ============================================================================
38
+ /** Unicity: Agent profile information */
39
+ exports.AGENT_PROFILE = 31111;
40
+ /** Unicity: Agent GPS location */
41
+ exports.AGENT_LOCATION = 31112;
42
+ /** Unicity: Token transfer event */
43
+ exports.TOKEN_TRANSFER = 31113;
44
+ /** Unicity: File metadata */
45
+ exports.FILE_METADATA = 31114;
46
+ // ============================================================================
47
+ // Event Kind Classification Functions
48
+ // ============================================================================
49
+ /**
50
+ * Check if an event kind is replaceable.
51
+ * Replaceable events (kinds 0, 3, or 10000-19999) are replaced when a new
52
+ * event with the same kind and pubkey is published.
53
+ * @param kind Event kind number
54
+ * @returns true if the event kind is replaceable
55
+ */
56
+ function isReplaceable(kind) {
57
+ return kind === 0 || kind === 3 || (kind >= 10000 && kind < 20000);
58
+ }
59
+ /**
60
+ * Check if an event kind is ephemeral.
61
+ * Ephemeral events (kinds 20000-29999) are not stored by relays.
62
+ * @param kind Event kind number
63
+ * @returns true if the event kind is ephemeral
64
+ */
65
+ function isEphemeral(kind) {
66
+ return kind >= 20000 && kind < 30000;
67
+ }
68
+ /**
69
+ * Check if an event kind is parameterized replaceable.
70
+ * Parameterized replaceable events (kinds 30000-39999) are replaced when a
71
+ * new event with the same kind, pubkey, and "d" tag value is published.
72
+ * @param kind Event kind number
73
+ * @returns true if the event kind is parameterized replaceable
74
+ */
75
+ function isParameterizedReplaceable(kind) {
76
+ return kind >= 30000 && kind < 40000;
77
+ }
78
+ /**
79
+ * Get a human-readable name for an event kind.
80
+ * @param kind Event kind number
81
+ * @returns Human-readable name for the event kind
82
+ */
83
+ function getName(kind) {
84
+ switch (kind) {
85
+ case exports.PROFILE:
86
+ return 'Profile';
87
+ case exports.TEXT_NOTE:
88
+ return 'Text Note';
89
+ case exports.RECOMMEND_RELAY:
90
+ return 'Recommend Relay';
91
+ case exports.CONTACTS:
92
+ return 'Contacts';
93
+ case exports.ENCRYPTED_DM:
94
+ return 'Encrypted DM';
95
+ case exports.DELETION:
96
+ return 'Deletion';
97
+ case exports.REACTION:
98
+ return 'Reaction';
99
+ case exports.GIFT_WRAP:
100
+ return 'Gift Wrap';
101
+ case exports.RELAY_LIST:
102
+ return 'Relay List';
103
+ case exports.APP_DATA:
104
+ return 'App Data';
105
+ case exports.AGENT_PROFILE:
106
+ return 'Agent Profile';
107
+ case exports.AGENT_LOCATION:
108
+ return 'Agent Location';
109
+ case exports.TOKEN_TRANSFER:
110
+ return 'Token Transfer';
111
+ case exports.FILE_METADATA:
112
+ return 'File Metadata';
113
+ default:
114
+ if (isReplaceable(kind)) {
115
+ return `Replaceable (${kind})`;
116
+ }
117
+ if (isEphemeral(kind)) {
118
+ return `Ephemeral (${kind})`;
119
+ }
120
+ if (isParameterizedReplaceable(kind)) {
121
+ return `Parameterized Replaceable (${kind})`;
122
+ }
123
+ return `Unknown (${kind})`;
124
+ }
125
+ }
126
+ //# sourceMappingURL=EventKinds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventKinds.js","sourceRoot":"","sources":["../../../src/protocol/EventKinds.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA+DH,sCAEC;AAQD,kCAEC;AASD,gEAEC;AAOD,0BA0CC;AArID,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,oCAAoC;AACvB,QAAA,OAAO,GAAG,CAAC,CAAC;AAEzB,8BAA8B;AACjB,QAAA,SAAS,GAAG,CAAC,CAAC;AAE3B,2CAA2C;AAC9B,QAAA,eAAe,GAAG,CAAC,CAAC;AAEjC,qCAAqC;AACxB,QAAA,QAAQ,GAAG,CAAC,CAAC;AAE1B,wCAAwC;AAC3B,QAAA,YAAY,GAAG,CAAC,CAAC;AAE9B,6BAA6B;AAChB,QAAA,QAAQ,GAAG,CAAC,CAAC;AAE1B,sCAAsC;AACzB,QAAA,QAAQ,GAAG,CAAC,CAAC;AAE1B,2CAA2C;AAC9B,QAAA,SAAS,GAAG,IAAI,CAAC;AAE9B,kCAAkC;AACrB,QAAA,UAAU,GAAG,KAAK,CAAC;AAEhC,oEAAoE;AACvD,QAAA,QAAQ,GAAG,KAAK,CAAC;AAE9B,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,yCAAyC;AAC5B,QAAA,aAAa,GAAG,KAAK,CAAC;AAEnC,kCAAkC;AACrB,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC,oCAAoC;AACvB,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC,6BAA6B;AAChB,QAAA,aAAa,GAAG,KAAK,CAAC;AAEnC,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAE/E;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACrD,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CAAC,IAAY;IAClC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,iBAAS;YACZ,OAAO,WAAW,CAAC;QACrB,KAAK,uBAAe;YAClB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,gBAAQ;YACX,OAAO,UAAU,CAAC;QACpB,KAAK,oBAAY;YACf,OAAO,cAAc,CAAC;QACxB,KAAK,gBAAQ;YACX,OAAO,UAAU,CAAC;QACpB,KAAK,gBAAQ;YACX,OAAO,UAAU,CAAC;QACpB,KAAK,iBAAS;YACZ,OAAO,WAAW,CAAC;QACrB,KAAK,kBAAU;YACb,OAAO,YAAY,CAAC;QACtB,KAAK,gBAAQ;YACX,OAAO,UAAU,CAAC;QACpB,KAAK,qBAAa;YAChB,OAAO,eAAe,CAAC;QACzB,KAAK,sBAAc;YACjB,OAAO,gBAAgB,CAAC;QAC1B,KAAK,sBAAc;YACjB,OAAO,gBAAgB,CAAC;QAC1B,KAAK,qBAAa;YAChB,OAAO,eAAe,CAAC;QACzB;YACE,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO,gBAAgB,IAAI,GAAG,CAAC;YACjC,CAAC;YACD,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,cAAc,IAAI,GAAG,CAAC;YAC/B,CAAC;YACD,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,OAAO,8BAA8B,IAAI,GAAG,CAAC;YAC/C,CAAC;YACD,OAAO,YAAY,IAAI,GAAG,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /**
3
+ * Filter - Nostr subscription filter (NIP-01).
4
+ * Provides a builder pattern for constructing filters.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FilterBuilder = exports.Filter = void 0;
8
+ /**
9
+ * Filter class for Nostr subscription queries.
10
+ * Use the builder pattern to construct filters.
11
+ */
12
+ class Filter {
13
+ ids;
14
+ authors;
15
+ kinds;
16
+ '#e';
17
+ '#p';
18
+ '#t';
19
+ '#d';
20
+ since;
21
+ until;
22
+ limit;
23
+ /**
24
+ * Create a Filter instance.
25
+ * @param data Optional filter data
26
+ */
27
+ constructor(data) {
28
+ if (data) {
29
+ if (data.ids)
30
+ this.ids = [...data.ids];
31
+ if (data.authors)
32
+ this.authors = [...data.authors];
33
+ if (data.kinds)
34
+ this.kinds = [...data.kinds];
35
+ if (data['#e'])
36
+ this['#e'] = [...data['#e']];
37
+ if (data['#p'])
38
+ this['#p'] = [...data['#p']];
39
+ if (data['#t'])
40
+ this['#t'] = [...data['#t']];
41
+ if (data['#d'])
42
+ this['#d'] = [...data['#d']];
43
+ if (data.since !== undefined)
44
+ this.since = data.since;
45
+ if (data.until !== undefined)
46
+ this.until = data.until;
47
+ if (data.limit !== undefined)
48
+ this.limit = data.limit;
49
+ }
50
+ }
51
+ /**
52
+ * Create a new Filter builder.
53
+ * @returns Filter builder instance
54
+ */
55
+ static builder() {
56
+ return new FilterBuilder();
57
+ }
58
+ /**
59
+ * Convert the filter to a plain object for JSON serialization.
60
+ * Only includes defined properties.
61
+ * @returns Plain object representation
62
+ */
63
+ toJSON() {
64
+ const result = {};
65
+ if (this.ids && this.ids.length > 0)
66
+ result.ids = this.ids;
67
+ if (this.authors && this.authors.length > 0)
68
+ result.authors = this.authors;
69
+ if (this.kinds && this.kinds.length > 0)
70
+ result.kinds = this.kinds;
71
+ if (this['#e'] && this['#e'].length > 0)
72
+ result['#e'] = this['#e'];
73
+ if (this['#p'] && this['#p'].length > 0)
74
+ result['#p'] = this['#p'];
75
+ if (this['#t'] && this['#t'].length > 0)
76
+ result['#t'] = this['#t'];
77
+ if (this['#d'] && this['#d'].length > 0)
78
+ result['#d'] = this['#d'];
79
+ if (this.since !== undefined)
80
+ result.since = this.since;
81
+ if (this.until !== undefined)
82
+ result.until = this.until;
83
+ if (this.limit !== undefined)
84
+ result.limit = this.limit;
85
+ return result;
86
+ }
87
+ /**
88
+ * Parse a filter from JSON data.
89
+ * @param json JSON object or string
90
+ * @returns Filter instance
91
+ */
92
+ static fromJSON(json) {
93
+ const data = typeof json === 'string' ? JSON.parse(json) : json;
94
+ return new Filter(data);
95
+ }
96
+ }
97
+ exports.Filter = Filter;
98
+ /**
99
+ * Builder class for constructing Filter instances.
100
+ */
101
+ class FilterBuilder {
102
+ data = {};
103
+ ids(idsOrFirst, ...rest) {
104
+ if (Array.isArray(idsOrFirst)) {
105
+ this.data.ids = [...idsOrFirst];
106
+ }
107
+ else {
108
+ this.data.ids = [idsOrFirst, ...rest];
109
+ }
110
+ return this;
111
+ }
112
+ authors(authorsOrFirst, ...rest) {
113
+ if (Array.isArray(authorsOrFirst)) {
114
+ this.data.authors = [...authorsOrFirst];
115
+ }
116
+ else {
117
+ this.data.authors = [authorsOrFirst, ...rest];
118
+ }
119
+ return this;
120
+ }
121
+ kinds(kindsOrFirst, ...rest) {
122
+ if (Array.isArray(kindsOrFirst)) {
123
+ this.data.kinds = [...kindsOrFirst];
124
+ }
125
+ else {
126
+ this.data.kinds = [kindsOrFirst, ...rest];
127
+ }
128
+ return this;
129
+ }
130
+ eTags(eTagsOrFirst, ...rest) {
131
+ if (Array.isArray(eTagsOrFirst)) {
132
+ this.data['#e'] = [...eTagsOrFirst];
133
+ }
134
+ else {
135
+ this.data['#e'] = [eTagsOrFirst, ...rest];
136
+ }
137
+ return this;
138
+ }
139
+ pTags(pTagsOrFirst, ...rest) {
140
+ if (Array.isArray(pTagsOrFirst)) {
141
+ this.data['#p'] = [...pTagsOrFirst];
142
+ }
143
+ else {
144
+ this.data['#p'] = [pTagsOrFirst, ...rest];
145
+ }
146
+ return this;
147
+ }
148
+ tTags(tTagsOrFirst, ...rest) {
149
+ if (Array.isArray(tTagsOrFirst)) {
150
+ this.data['#t'] = [...tTagsOrFirst];
151
+ }
152
+ else {
153
+ this.data['#t'] = [tTagsOrFirst, ...rest];
154
+ }
155
+ return this;
156
+ }
157
+ dTags(dTagsOrFirst, ...rest) {
158
+ if (Array.isArray(dTagsOrFirst)) {
159
+ this.data['#d'] = [...dTagsOrFirst];
160
+ }
161
+ else {
162
+ this.data['#d'] = [dTagsOrFirst, ...rest];
163
+ }
164
+ return this;
165
+ }
166
+ /**
167
+ * Set minimum timestamp (inclusive).
168
+ * @param since Unix timestamp in seconds
169
+ * @returns This builder for chaining
170
+ */
171
+ since(since) {
172
+ this.data.since = since;
173
+ return this;
174
+ }
175
+ /**
176
+ * Set maximum timestamp (inclusive).
177
+ * @param until Unix timestamp in seconds
178
+ * @returns This builder for chaining
179
+ */
180
+ until(until) {
181
+ this.data.until = until;
182
+ return this;
183
+ }
184
+ /**
185
+ * Set maximum number of events to return.
186
+ * @param limit Maximum number of events
187
+ * @returns This builder for chaining
188
+ */
189
+ limit(limit) {
190
+ this.data.limit = limit;
191
+ return this;
192
+ }
193
+ /**
194
+ * Build the Filter instance.
195
+ * @returns Filter instance
196
+ */
197
+ build() {
198
+ return new Filter(this.data);
199
+ }
200
+ }
201
+ exports.FilterBuilder = FilterBuilder;
202
+ //# sourceMappingURL=Filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../src/protocol/Filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Protocol module - Nostr protocol types and classes
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
39
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.EventKinds = exports.FilterBuilder = exports.Filter = exports.Event = void 0;
43
+ var Event_js_1 = require("./Event.js");
44
+ Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return Event_js_1.Event; } });
45
+ var Filter_js_1 = require("./Filter.js");
46
+ Object.defineProperty(exports, "Filter", { enumerable: true, get: function () { return Filter_js_1.Filter; } });
47
+ Object.defineProperty(exports, "FilterBuilder", { enumerable: true, get: function () { return Filter_js_1.FilterBuilder; } });
48
+ exports.EventKinds = __importStar(require("./EventKinds.js"));
49
+ __exportStar(require("./EventKinds.js"), exports);
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/protocol/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAmC;AAA1B,iGAAA,KAAK,OAAA;AAEd,yCAAoD;AAA3C,mGAAA,MAAM,OAAA;AAAE,0GAAA,aAAa,OAAA;AAE9B,8DAA8C;AAC9C,kDAAgC"}