nostr-tools 2.23.7 → 2.23.8
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/index.js +16 -9
- package/lib/cjs/index.js.map +3 -3
- package/lib/cjs/nip10.js +5 -4
- package/lib/cjs/nip10.js.map +2 -2
- package/lib/cjs/nip22.js +11 -5
- package/lib/cjs/nip22.js.map +2 -2
- package/lib/cjs/nip46.js +7 -2
- package/lib/cjs/nip46.js.map +2 -2
- package/lib/esm/index.js +16 -9
- package/lib/esm/index.js.map +3 -3
- package/lib/esm/nip10.js +5 -4
- package/lib/esm/nip10.js.map +2 -2
- package/lib/esm/nip22.js +11 -5
- package/lib/esm/nip22.js.map +2 -2
- package/lib/esm/nip46.js +7 -2
- package/lib/esm/nip46.js.map +2 -2
- package/lib/nostr.bundle.js +16 -9
- package/lib/nostr.bundle.js.map +3 -3
- package/lib/types/nip46.d.ts +7 -5
- package/package.json +1 -1
package/lib/esm/nip10.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// nip10.ts
|
|
2
|
+
var HEX64 = /^[0-9a-fA-F]{64}$/;
|
|
2
3
|
function parse(event) {
|
|
3
4
|
const result = {
|
|
4
5
|
reply: void 0,
|
|
@@ -11,12 +12,12 @@ function parse(event) {
|
|
|
11
12
|
let maybeRoot;
|
|
12
13
|
for (let i = event.tags.length - 1; i >= 0; i--) {
|
|
13
14
|
const tag = event.tags[i];
|
|
14
|
-
if (tag[0] === "e" && tag[1]) {
|
|
15
|
+
if (tag[0] === "e" && tag[1] && HEX64.test(tag[1])) {
|
|
15
16
|
const [_, eTagEventId, eTagRelayUrl, eTagMarker, eTagAuthor] = tag;
|
|
16
17
|
const eventPointer = {
|
|
17
18
|
id: eTagEventId,
|
|
18
19
|
relays: eTagRelayUrl ? [eTagRelayUrl] : [],
|
|
19
|
-
author: eTagAuthor
|
|
20
|
+
author: eTagAuthor && HEX64.test(eTagAuthor) ? eTagAuthor : void 0
|
|
20
21
|
};
|
|
21
22
|
if (eTagMarker === "root") {
|
|
22
23
|
result.root = eventPointer;
|
|
@@ -38,14 +39,14 @@ function parse(event) {
|
|
|
38
39
|
result.mentions.push(eventPointer);
|
|
39
40
|
continue;
|
|
40
41
|
}
|
|
41
|
-
if (tag[0] === "q" && tag[1]) {
|
|
42
|
+
if (tag[0] === "q" && tag[1] && HEX64.test(tag[1])) {
|
|
42
43
|
const [_, eTagEventId, eTagRelayUrl] = tag;
|
|
43
44
|
result.quotes.push({
|
|
44
45
|
id: eTagEventId,
|
|
45
46
|
relays: eTagRelayUrl ? [eTagRelayUrl] : []
|
|
46
47
|
});
|
|
47
48
|
}
|
|
48
|
-
if (tag[0] === "p" && tag[1]) {
|
|
49
|
+
if (tag[0] === "p" && tag[1] && HEX64.test(tag[1])) {
|
|
49
50
|
result.profiles.push({
|
|
50
51
|
pubkey: tag[1],
|
|
51
52
|
relays: tag[2] ? [tag[2]] : []
|
package/lib/esm/nip10.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../nip10.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Event } from './core.ts'\nimport type { EventPointer, ProfilePointer } from './nip19.ts'\n\nexport function parse(event: Pick<Event, 'tags'>): {\n /**\n * Pointer to the root of the thread.\n */\n root: EventPointer | undefined\n\n /**\n * Pointer to a \"parent\" event that parsed event replies to (responded to).\n */\n reply: EventPointer | undefined\n\n /**\n * Pointers to events that may or may not be in the reply chain.\n */\n mentions: EventPointer[]\n\n /**\n * Pointers to events that were directly quoted.\n */\n quotes: EventPointer[]\n\n /**\n * List of pubkeys that are involved in the thread in no particular order.\n */\n profiles: ProfilePointer[]\n} {\n const result: ReturnType<typeof parse> = {\n reply: undefined,\n root: undefined,\n mentions: [],\n profiles: [],\n quotes: [],\n }\n\n let maybeParent: EventPointer | undefined\n let maybeRoot: EventPointer | undefined\n\n for (let i = event.tags.length - 1; i >= 0; i--) {\n const tag = event.tags[i]\n\n if (tag[0] === 'e' && tag[1]) {\n const [_, eTagEventId, eTagRelayUrl, eTagMarker, eTagAuthor] = tag as [\n string,\n string,\n undefined | string,\n undefined | string,\n undefined | string,\n ]\n\n const eventPointer: EventPointer = {\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : [],\n author: eTagAuthor,\n }\n\n if (eTagMarker === 'root') {\n result.root = eventPointer\n continue\n }\n\n if (eTagMarker === 'reply') {\n result.reply = eventPointer\n continue\n }\n\n if (eTagMarker === 'mention') {\n result.mentions.push(eventPointer)\n continue\n }\n\n if (!maybeParent) {\n maybeParent = eventPointer\n } else {\n maybeRoot = eventPointer\n }\n\n result.mentions.push(eventPointer)\n continue\n }\n\n if (tag[0] === 'q' && tag[1]) {\n const [_, eTagEventId, eTagRelayUrl] = tag as [string, string, undefined | string]\n result.quotes.push({\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : [],\n })\n }\n\n if (tag[0] === 'p' && tag[1]) {\n result.profiles.push({\n pubkey: tag[1],\n relays: tag[2] ? [tag[2]] : [],\n })\n continue\n }\n }\n\n // get legacy (positional) markers, set reply to root and vice-versa if one of them is missing\n if (!result.root) {\n result.root = maybeRoot || maybeParent || result.reply\n }\n if (!result.reply) {\n result.reply = maybeParent || result.root\n }\n\n // remove root and reply from mentions, inherit relay hints from authors if any\n ;[result.reply, result.root].forEach(ref => {\n if (!ref) return\n\n let idx = result.mentions.indexOf(ref)\n if (idx !== -1) {\n result.mentions.splice(idx, 1)\n }\n if (ref.author) {\n let author = result.profiles.find(p => p.pubkey === ref.author)\n if (author && author.relays) {\n if (!ref.relays) {\n ref.relays = []\n }\n author.relays.forEach(url => {\n if (ref.relays!?.indexOf(url) === -1) ref.relays!.push(url)\n })\n author.relays = ref.relays\n }\n }\n })\n\n result.mentions.forEach(ref => {\n if (ref!.author) {\n let author = result.profiles.find(p => p.pubkey === ref.author)\n if (author && author.relays) {\n if (!ref.relays) {\n ref.relays = []\n }\n author.relays.forEach(url => {\n if (ref.relays!.indexOf(url) === -1) ref.relays!.push(url)\n })\n author.relays = ref.relays\n }\n }\n })\n\n return result\n}\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import type { Event } from './core.ts'\nimport type { EventPointer, ProfilePointer } from './nip19.ts'\n\nconst HEX64 = /^[0-9a-fA-F]{64}$/\n\nexport function parse(event: Pick<Event, 'tags'>): {\n /**\n * Pointer to the root of the thread.\n */\n root: EventPointer | undefined\n\n /**\n * Pointer to a \"parent\" event that parsed event replies to (responded to).\n */\n reply: EventPointer | undefined\n\n /**\n * Pointers to events that may or may not be in the reply chain.\n */\n mentions: EventPointer[]\n\n /**\n * Pointers to events that were directly quoted.\n */\n quotes: EventPointer[]\n\n /**\n * List of pubkeys that are involved in the thread in no particular order.\n */\n profiles: ProfilePointer[]\n} {\n const result: ReturnType<typeof parse> = {\n reply: undefined,\n root: undefined,\n mentions: [],\n profiles: [],\n quotes: [],\n }\n\n let maybeParent: EventPointer | undefined\n let maybeRoot: EventPointer | undefined\n\n for (let i = event.tags.length - 1; i >= 0; i--) {\n const tag = event.tags[i]\n\n if (tag[0] === 'e' && tag[1] && HEX64.test(tag[1])) {\n const [_, eTagEventId, eTagRelayUrl, eTagMarker, eTagAuthor] = tag as [\n string,\n string,\n undefined | string,\n undefined | string,\n undefined | string,\n ]\n\n const eventPointer: EventPointer = {\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : [],\n author: eTagAuthor && HEX64.test(eTagAuthor) ? eTagAuthor : undefined,\n }\n\n if (eTagMarker === 'root') {\n result.root = eventPointer\n continue\n }\n\n if (eTagMarker === 'reply') {\n result.reply = eventPointer\n continue\n }\n\n if (eTagMarker === 'mention') {\n result.mentions.push(eventPointer)\n continue\n }\n\n if (!maybeParent) {\n maybeParent = eventPointer\n } else {\n maybeRoot = eventPointer\n }\n\n result.mentions.push(eventPointer)\n continue\n }\n\n if (tag[0] === 'q' && tag[1] && HEX64.test(tag[1])) {\n const [_, eTagEventId, eTagRelayUrl] = tag as [string, string, undefined | string]\n result.quotes.push({\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : [],\n })\n }\n\n if (tag[0] === 'p' && tag[1] && HEX64.test(tag[1])) {\n result.profiles.push({\n pubkey: tag[1],\n relays: tag[2] ? [tag[2]] : [],\n })\n continue\n }\n }\n\n // get legacy (positional) markers, set reply to root and vice-versa if one of them is missing\n if (!result.root) {\n result.root = maybeRoot || maybeParent || result.reply\n }\n if (!result.reply) {\n result.reply = maybeParent || result.root\n }\n\n // remove root and reply from mentions, inherit relay hints from authors if any\n ;[result.reply, result.root].forEach(ref => {\n if (!ref) return\n\n let idx = result.mentions.indexOf(ref)\n if (idx !== -1) {\n result.mentions.splice(idx, 1)\n }\n if (ref.author) {\n let author = result.profiles.find(p => p.pubkey === ref.author)\n if (author && author.relays) {\n if (!ref.relays) {\n ref.relays = []\n }\n author.relays.forEach(url => {\n if (ref.relays!?.indexOf(url) === -1) ref.relays!.push(url)\n })\n author.relays = ref.relays\n }\n }\n })\n\n result.mentions.forEach(ref => {\n if (ref!.author) {\n let author = result.profiles.find(p => p.pubkey === ref.author)\n if (author && author.relays) {\n if (!ref.relays) {\n ref.relays = []\n }\n author.relays.forEach(url => {\n if (ref.relays!.indexOf(url) === -1) ref.relays!.push(url)\n })\n author.relays = ref.relays\n }\n }\n })\n\n return result\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,IAAM,QAAQ;AAEP,SAAS,MAAM,OAyBpB;AACA,QAAM,SAAmC;AAAA,IACvC,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,IACX,QAAQ,CAAC;AAAA,EACX;AAEA,MAAI;AACJ,MAAI;AAEJ,WAAS,IAAI,MAAM,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AAC/C,UAAM,MAAM,MAAM,KAAK;AAEvB,QAAI,IAAI,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK,IAAI,EAAE,GAAG;AAClD,YAAM,CAAC,GAAG,aAAa,cAAc,YAAY,UAAU,IAAI;AAQ/D,YAAM,eAA6B;AAAA,QACjC,IAAI;AAAA,QACJ,QAAQ,eAAe,CAAC,YAAY,IAAI,CAAC;AAAA,QACzC,QAAQ,cAAc,MAAM,KAAK,UAAU,IAAI,aAAa;AAAA,MAC9D;AAEA,UAAI,eAAe,QAAQ;AACzB,eAAO,OAAO;AACd;AAAA,MACF;AAEA,UAAI,eAAe,SAAS;AAC1B,eAAO,QAAQ;AACf;AAAA,MACF;AAEA,UAAI,eAAe,WAAW;AAC5B,eAAO,SAAS,KAAK,YAAY;AACjC;AAAA,MACF;AAEA,UAAI,CAAC,aAAa;AAChB,sBAAc;AAAA,MAChB,OAAO;AACL,oBAAY;AAAA,MACd;AAEA,aAAO,SAAS,KAAK,YAAY;AACjC;AAAA,IACF;AAEA,QAAI,IAAI,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK,IAAI,EAAE,GAAG;AAClD,YAAM,CAAC,GAAG,aAAa,YAAY,IAAI;AACvC,aAAO,OAAO,KAAK;AAAA,QACjB,IAAI;AAAA,QACJ,QAAQ,eAAe,CAAC,YAAY,IAAI,CAAC;AAAA,MAC3C,CAAC;AAAA,IACH;AAEA,QAAI,IAAI,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK,IAAI,EAAE,GAAG;AAClD,aAAO,SAAS,KAAK;AAAA,QACnB,QAAQ,IAAI;AAAA,QACZ,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAAA,MAC/B,CAAC;AACD;AAAA,IACF;AAAA,EACF;AAGA,MAAI,CAAC,OAAO,MAAM;AAChB,WAAO,OAAO,aAAa,eAAe,OAAO;AAAA,EACnD;AACA,MAAI,CAAC,OAAO,OAAO;AACjB,WAAO,QAAQ,eAAe,OAAO;AAAA,EACvC;AAGA;AAAC,GAAC,OAAO,OAAO,OAAO,IAAI,EAAE,QAAQ,SAAO;AAC1C,QAAI,CAAC;AAAK;AAEV,QAAI,MAAM,OAAO,SAAS,QAAQ,GAAG;AACrC,QAAI,QAAQ,IAAI;AACd,aAAO,SAAS,OAAO,KAAK,CAAC;AAAA,IAC/B;AACA,QAAI,IAAI,QAAQ;AACd,UAAI,SAAS,OAAO,SAAS,KAAK,OAAK,EAAE,WAAW,IAAI,MAAM;AAC9D,UAAI,UAAU,OAAO,QAAQ;AAC3B,YAAI,CAAC,IAAI,QAAQ;AACf,cAAI,SAAS,CAAC;AAAA,QAChB;AACA,eAAO,OAAO,QAAQ,SAAO;AAC3B,cAAI,IAAI,QAAS,QAAQ,GAAG,MAAM;AAAI,gBAAI,OAAQ,KAAK,GAAG;AAAA,QAC5D,CAAC;AACD,eAAO,SAAS,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO,SAAS,QAAQ,SAAO;AAC7B,QAAI,IAAK,QAAQ;AACf,UAAI,SAAS,OAAO,SAAS,KAAK,OAAK,EAAE,WAAW,IAAI,MAAM;AAC9D,UAAI,UAAU,OAAO,QAAQ;AAC3B,YAAI,CAAC,IAAI,QAAQ;AACf,cAAI,SAAS,CAAC;AAAA,QAChB;AACA,eAAO,OAAO,QAAQ,SAAO;AAC3B,cAAI,IAAI,OAAQ,QAAQ,GAAG,MAAM;AAAI,gBAAI,OAAQ,KAAK,GAAG;AAAA,QAC3D,CAAC;AACD,eAAO,SAAS,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/lib/esm/nip22.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// nip22.ts
|
|
2
|
+
var HEX64 = /^[0-9a-fA-F]{64}$/;
|
|
2
3
|
function parseKind(kind) {
|
|
3
4
|
if (!kind)
|
|
4
5
|
return void 0;
|
|
@@ -12,9 +13,12 @@ function parseAddressPointer(value, relayUrl) {
|
|
|
12
13
|
const kind = parseInt(value.slice(0, idx), 10);
|
|
13
14
|
if (Number.isNaN(kind))
|
|
14
15
|
return void 0;
|
|
16
|
+
const pubkey = value.slice(idx + 1, idx2);
|
|
17
|
+
if (!HEX64.test(pubkey))
|
|
18
|
+
return void 0;
|
|
15
19
|
return {
|
|
16
20
|
kind,
|
|
17
|
-
pubkey
|
|
21
|
+
pubkey,
|
|
18
22
|
identifier: value.slice(idx2 + 1),
|
|
19
23
|
relays: relayUrl ? [relayUrl] : []
|
|
20
24
|
};
|
|
@@ -23,12 +27,12 @@ function parsePointer(tag) {
|
|
|
23
27
|
switch (tag[0]) {
|
|
24
28
|
case "E":
|
|
25
29
|
case "e":
|
|
26
|
-
if (!tag[1])
|
|
30
|
+
if (!tag[1] || !HEX64.test(tag[1]))
|
|
27
31
|
return void 0;
|
|
28
32
|
return {
|
|
29
33
|
id: tag[1],
|
|
30
34
|
relays: tag[2] ? [tag[2]] : [],
|
|
31
|
-
author: tag[3]
|
|
35
|
+
author: tag[3] && HEX64.test(tag[3]) ? tag[3] : void 0
|
|
32
36
|
};
|
|
33
37
|
case "A":
|
|
34
38
|
case "a":
|
|
@@ -51,10 +55,12 @@ function parseQuote(tag) {
|
|
|
51
55
|
if (tag[1].includes(":")) {
|
|
52
56
|
return parseAddressPointer(tag[1], tag[2]);
|
|
53
57
|
}
|
|
58
|
+
if (!HEX64.test(tag[1]))
|
|
59
|
+
return void 0;
|
|
54
60
|
return {
|
|
55
61
|
id: tag[1],
|
|
56
62
|
relays: tag[2] ? [tag[2]] : [],
|
|
57
|
-
author: tag[3]
|
|
63
|
+
author: tag[3] && HEX64.test(tag[3]) ? tag[3] : void 0
|
|
58
64
|
};
|
|
59
65
|
}
|
|
60
66
|
function choosePointer(candidates) {
|
|
@@ -114,7 +120,7 @@ function parse(event) {
|
|
|
114
120
|
result.quotes.push(pointer);
|
|
115
121
|
continue;
|
|
116
122
|
}
|
|
117
|
-
if ((tag[0] === "P" || tag[0] === "p") && tag[1]) {
|
|
123
|
+
if ((tag[0] === "P" || tag[0] === "p") && tag[1] && HEX64.test(tag[1])) {
|
|
118
124
|
result.profiles.push({
|
|
119
125
|
pubkey: tag[1],
|
|
120
126
|
relays: tag[2] ? [tag[2]] : []
|
package/lib/esm/nip22.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../nip22.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Event } from './core.ts'\nimport type { AddressPointer, EventPointer, ProfilePointer } from './nip19.ts'\n\nexport type ExternalPointer = {\n value: string\n hint?: string\n}\n\nfunction parseKind(kind: string | undefined): number | string | undefined {\n if (!kind) return undefined\n return /^\\d+$/.test(kind) ? parseInt(kind, 10) : kind\n}\n\nfunction parseAddressPointer(value: string, relayUrl?: string): AddressPointer | undefined {\n const idx = value.indexOf(':')\n const idx2 = value.indexOf(':', idx + 1)\n if (idx === -1 || idx2 === -1) return undefined\n\n const kind = parseInt(value.slice(0, idx), 10)\n if (Number.isNaN(kind)) return undefined\n\n
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import type { Event } from './core.ts'\nimport type { AddressPointer, EventPointer, ProfilePointer } from './nip19.ts'\n\nconst HEX64 = /^[0-9a-fA-F]{64}$/\n\nexport type ExternalPointer = {\n value: string\n hint?: string\n}\n\nfunction parseKind(kind: string | undefined): number | string | undefined {\n if (!kind) return undefined\n return /^\\d+$/.test(kind) ? parseInt(kind, 10) : kind\n}\n\nfunction parseAddressPointer(value: string, relayUrl?: string): AddressPointer | undefined {\n const idx = value.indexOf(':')\n const idx2 = value.indexOf(':', idx + 1)\n if (idx === -1 || idx2 === -1) return undefined\n\n const kind = parseInt(value.slice(0, idx), 10)\n if (Number.isNaN(kind)) return undefined\n\n const pubkey = value.slice(idx + 1, idx2)\n if (!HEX64.test(pubkey)) return undefined\n\n return {\n kind,\n pubkey,\n identifier: value.slice(idx2 + 1),\n relays: relayUrl ? [relayUrl] : [],\n }\n}\n\nfunction parsePointer(tag: string[]): EventPointer | AddressPointer | ExternalPointer | undefined {\n switch (tag[0]) {\n case 'E':\n case 'e':\n if (!tag[1] || !HEX64.test(tag[1])) return undefined\n return {\n id: tag[1],\n relays: tag[2] ? [tag[2]] : [],\n author: tag[3] && HEX64.test(tag[3]) ? tag[3] : undefined,\n }\n case 'A':\n case 'a':\n if (!tag[1]) return undefined\n return parseAddressPointer(tag[1], tag[2])\n case 'I':\n case 'i':\n if (!tag[1]) return undefined\n return {\n value: tag[1],\n hint: tag[2],\n }\n }\n}\n\nfunction parseQuote(tag: string[]): EventPointer | AddressPointer | ExternalPointer | undefined {\n if (!tag[1]) return undefined\n\n if (tag[1].includes(':')) {\n return parseAddressPointer(tag[1], tag[2])\n }\n\n if (!HEX64.test(tag[1])) return undefined\n\n return {\n id: tag[1],\n relays: tag[2] ? [tag[2]] : [],\n author: tag[3] && HEX64.test(tag[3]) ? tag[3] : undefined,\n }\n}\n\nfunction choosePointer(\n candidates: Array<{ tagName: string; pointer: EventPointer | AddressPointer | ExternalPointer }>,\n): EventPointer | AddressPointer | ExternalPointer | undefined {\n return (\n candidates.findLast(candidate => candidate.tagName === 'A' || candidate.tagName === 'a')?.pointer ||\n candidates.findLast(candidate => candidate.tagName === 'I' || candidate.tagName === 'i')?.pointer ||\n candidates.findLast(candidate => candidate.tagName === 'E' || candidate.tagName === 'e')?.pointer\n )\n}\n\nfunction inheritRelayHints(\n pointer: EventPointer | AddressPointer | ExternalPointer | undefined,\n profiles: ProfilePointer[],\n) {\n if (!pointer || !('id' in pointer) || !pointer.author) return\n\n const author = profiles.find(profile => profile.pubkey === pointer.author)\n if (!author || !author.relays) return\n\n if (!pointer.relays) {\n pointer.relays = []\n }\n\n author.relays.forEach(url => {\n if (pointer.relays!.indexOf(url) === -1) pointer.relays!.push(url)\n })\n author.relays = pointer.relays\n}\n\nexport function parse(event: Pick<Event, 'tags'>): {\n /**\n * Pointer to root scope.\n */\n root: EventPointer | AddressPointer | ExternalPointer | undefined\n\n /**\n * Kind of root scope from `K` tag.\n */\n rootKind: number | string | undefined\n\n /**\n * Pointer to parent item being replied to.\n */\n reply: EventPointer | AddressPointer | ExternalPointer | undefined\n\n /**\n * Kind of parent item from `k` tag.\n */\n replyKind: number | string | undefined\n\n /**\n * Reserved for extra referenced items.\n */\n mentions: (EventPointer | AddressPointer | ExternalPointer)[]\n\n /**\n * Pointers directly quoted with `q` tags.\n */\n quotes: (EventPointer | AddressPointer | ExternalPointer)[]\n\n /**\n * Root and parent authors.\n */\n profiles: ProfilePointer[]\n} {\n const result: ReturnType<typeof parse> = {\n root: undefined,\n rootKind: undefined,\n reply: undefined,\n replyKind: undefined,\n mentions: [],\n quotes: [],\n profiles: [],\n }\n\n const rootCandidates: Array<{ tagName: string; pointer: EventPointer | AddressPointer | ExternalPointer }> = []\n const replyCandidates: Array<{ tagName: string; pointer: EventPointer | AddressPointer | ExternalPointer }> = []\n\n for (const tag of event.tags) {\n if ((tag[0] === 'E' || tag[0] === 'A' || tag[0] === 'I') && tag[1]) {\n const pointer = parsePointer(tag)\n if (pointer) rootCandidates.push({ tagName: tag[0], pointer })\n continue\n }\n\n if ((tag[0] === 'e' || tag[0] === 'a' || tag[0] === 'i') && tag[1]) {\n const pointer = parsePointer(tag)\n if (pointer) replyCandidates.push({ tagName: tag[0], pointer })\n continue\n }\n\n if (tag[0] === 'K') {\n result.rootKind = parseKind(tag[1])\n continue\n }\n\n if (tag[0] === 'k') {\n result.replyKind = parseKind(tag[1])\n continue\n }\n\n if (tag[0] === 'q') {\n const pointer = parseQuote(tag)\n if (pointer) result.quotes.push(pointer)\n continue\n }\n\n if ((tag[0] === 'P' || tag[0] === 'p') && tag[1] && HEX64.test(tag[1])) {\n result.profiles.push({\n pubkey: tag[1],\n relays: tag[2] ? [tag[2]] : [],\n })\n }\n }\n\n result.root = choosePointer(rootCandidates)\n result.reply = choosePointer(replyCandidates)\n\n inheritRelayHints(result.root, result.profiles)\n inheritRelayHints(result.reply, result.profiles)\n result.quotes.forEach(pointer => inheritRelayHints(pointer, result.profiles))\n\n return result\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/lib/esm/nip46.js
CHANGED
|
@@ -1349,8 +1349,13 @@ var BunkerSigner = class {
|
|
|
1349
1349
|
if (resp !== "pong")
|
|
1350
1350
|
throw new Error(`result is not pong: ${resp}`);
|
|
1351
1351
|
}
|
|
1352
|
-
async connect() {
|
|
1353
|
-
|
|
1352
|
+
async connect(clientMetadata) {
|
|
1353
|
+
const params = [this.bp.pubkey, this.bp.secret || ""];
|
|
1354
|
+
if (clientMetadata) {
|
|
1355
|
+
params.push("");
|
|
1356
|
+
params.push(JSON.stringify(clientMetadata));
|
|
1357
|
+
}
|
|
1358
|
+
await this.sendRequest("connect", params);
|
|
1354
1359
|
}
|
|
1355
1360
|
async logout() {
|
|
1356
1361
|
let resp = await this.sendRequest("logout", []);
|