@welshman/util 0.8.16 → 0.9.0-pre2
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/dist/lib/src/Tools.d.ts +13 -0
- package/dist/lib/src/Tools.d.ts.map +1 -1
- package/dist/lib/src/Tools.js +30 -1
- package/dist/lib/src/Tools.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/util/src/Events.d.ts +0 -12
- package/dist/util/src/Events.d.ts.map +1 -1
- package/dist/util/src/Events.js +3 -25
- package/dist/util/src/Events.js.map +1 -1
- package/dist/util/src/Handles.d.ts +15 -0
- package/dist/util/src/Handles.d.ts.map +1 -0
- package/dist/util/src/Handles.js +25 -0
- package/dist/util/src/Handles.js.map +1 -0
- package/dist/util/src/Kinds.d.ts +6 -1
- package/dist/util/src/Kinds.d.ts.map +1 -1
- package/dist/util/src/Kinds.js +8 -2
- package/dist/util/src/Kinds.js.map +1 -1
- package/dist/util/src/Lightning.d.ts +6 -0
- package/dist/util/src/Lightning.d.ts.map +1 -0
- package/dist/util/src/Lightning.js +59 -0
- package/dist/util/src/Lightning.js.map +1 -0
- package/dist/util/src/Nip86.d.ts +75 -25
- package/dist/util/src/Nip86.d.ts.map +1 -1
- package/dist/util/src/Nip86.js +169 -24
- package/dist/util/src/Nip86.js.map +1 -1
- package/dist/util/src/Pow.js +2 -2
- package/dist/util/src/Pow.js.map +1 -1
- package/dist/util/src/Pubkey.d.ts.map +1 -1
- package/dist/util/src/Pubkey.js +2 -1
- package/dist/util/src/Pubkey.js.map +1 -1
- package/dist/util/src/Relay.d.ts +0 -29
- package/dist/util/src/Relay.d.ts.map +1 -1
- package/dist/util/src/Relay.js +0 -10
- package/dist/util/src/Relay.js.map +1 -1
- package/dist/util/src/RelaySelection.d.ts +101 -0
- package/dist/util/src/RelaySelection.d.ts.map +1 -0
- package/dist/util/src/RelaySelection.js +98 -0
- package/dist/util/src/RelaySelection.js.map +1 -0
- package/dist/util/src/Tags.d.ts +16 -35
- package/dist/util/src/Tags.d.ts.map +1 -1
- package/dist/util/src/Tags.js +23 -74
- package/dist/util/src/Tags.js.map +1 -1
- package/dist/util/src/Topics.d.ts +2 -0
- package/dist/util/src/Topics.d.ts.map +1 -0
- package/dist/util/src/Topics.js +2 -0
- package/dist/util/src/Topics.js.map +1 -0
- package/dist/util/src/index.d.ts +3 -6
- package/dist/util/src/index.d.ts.map +1 -1
- package/dist/util/src/index.js +3 -6
- package/dist/util/src/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/util/src/Encryptable.d.ts +0 -34
- package/dist/util/src/Encryptable.d.ts.map +0 -1
- package/dist/util/src/Encryptable.js +0 -52
- package/dist/util/src/Encryptable.js.map +0 -1
- package/dist/util/src/Handler.d.ts +0 -17
- package/dist/util/src/Handler.d.ts.map +0 -1
- package/dist/util/src/Handler.js +0 -33
- package/dist/util/src/Handler.js.map +0 -1
- package/dist/util/src/List.d.ts +0 -42
- package/dist/util/src/List.d.ts.map +0 -1
- package/dist/util/src/List.js +0 -86
- package/dist/util/src/List.js.map +0 -1
- package/dist/util/src/Profile.d.ts +0 -26
- package/dist/util/src/Profile.d.ts.map +0 -1
- package/dist/util/src/Profile.js +0 -50
- package/dist/util/src/Profile.js.map +0 -1
- package/dist/util/src/Room.d.ts +0 -63
- package/dist/util/src/Room.d.ts.map +0 -1
- package/dist/util/src/Room.js +0 -94
- package/dist/util/src/Room.js.map +0 -1
- package/dist/util/src/Zaps.d.ts +0 -55
- package/dist/util/src/Zaps.d.ts.map +0 -1
- package/dist/util/src/Zaps.js +0 -135
- package/dist/util/src/Zaps.js.map +0 -1
package/dist/util/src/Zaps.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { now, tryCatch, fetchJson, hexToBech32, fromPairs } from "@welshman/lib";
|
|
2
|
-
import { ZAP_RESPONSE, ZAP_REQUEST } from "./Kinds.js";
|
|
3
|
-
import { getTagValue } from "./Tags.js";
|
|
4
|
-
import { makeEvent } from "./Events.js";
|
|
5
|
-
const DIVISORS = {
|
|
6
|
-
m: BigInt(1e3),
|
|
7
|
-
u: BigInt(1e6),
|
|
8
|
-
n: BigInt(1e9),
|
|
9
|
-
p: BigInt(1e12),
|
|
10
|
-
};
|
|
11
|
-
const MAX_MILLISATS = BigInt("2100000000000000000");
|
|
12
|
-
const MILLISATS_PER_BTC = BigInt(1e11);
|
|
13
|
-
export const toMsats = (sats) => sats * 1000;
|
|
14
|
-
export const fromMsats = (msats) => Math.floor(msats / 1000);
|
|
15
|
-
export const hrpToMillisat = (hrpString) => {
|
|
16
|
-
let divisor, value;
|
|
17
|
-
if (hrpString.slice(-1).match(/^[munp]$/)) {
|
|
18
|
-
divisor = hrpString.slice(-1);
|
|
19
|
-
value = hrpString.slice(0, -1);
|
|
20
|
-
}
|
|
21
|
-
else if (hrpString.slice(-1).match(/^[^munp0-9]$/)) {
|
|
22
|
-
throw new Error("Not a valid multiplier for the amount");
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
value = hrpString;
|
|
26
|
-
}
|
|
27
|
-
if (!value.match(/^\d+$/))
|
|
28
|
-
throw new Error("Not a valid human readable amount");
|
|
29
|
-
const valueBN = BigInt(value);
|
|
30
|
-
const millisatoshisBN = divisor
|
|
31
|
-
? (valueBN * MILLISATS_PER_BTC) / DIVISORS[divisor]
|
|
32
|
-
: valueBN * MILLISATS_PER_BTC;
|
|
33
|
-
if ((divisor === "p" && !(valueBN % BigInt(10) === BigInt(0))) ||
|
|
34
|
-
millisatoshisBN > MAX_MILLISATS) {
|
|
35
|
-
throw new Error("Amount is outside of valid range");
|
|
36
|
-
}
|
|
37
|
-
return millisatoshisBN;
|
|
38
|
-
};
|
|
39
|
-
export const getInvoiceAmount = (bolt11) => {
|
|
40
|
-
const hrp = bolt11.match(/lnbc(\d+\w)/);
|
|
41
|
-
const bn = hrpToMillisat(hrp[1]);
|
|
42
|
-
return Number(bn);
|
|
43
|
-
};
|
|
44
|
-
export const getLnUrl = (address) => {
|
|
45
|
-
address = address.toLowerCase();
|
|
46
|
-
// If it's already a lud06 we're good
|
|
47
|
-
if (address.startsWith("lnurl1")) {
|
|
48
|
-
return address;
|
|
49
|
-
}
|
|
50
|
-
// If it's a regular url, encode it
|
|
51
|
-
if (address.includes("://")) {
|
|
52
|
-
return hexToBech32("lnurl", address);
|
|
53
|
-
}
|
|
54
|
-
// Try to parse it as a lud16 address
|
|
55
|
-
if (address.includes("@")) {
|
|
56
|
-
const [name, domain] = address.split("@");
|
|
57
|
-
if (domain && name) {
|
|
58
|
-
return hexToBech32("lnurl", `https://${domain}/.well-known/lnurlp/${name}`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
export const zapFromEvent = (response, zapper) => {
|
|
63
|
-
const responseMeta = fromPairs(response.tags);
|
|
64
|
-
let zap;
|
|
65
|
-
try {
|
|
66
|
-
zap = {
|
|
67
|
-
response,
|
|
68
|
-
invoiceAmount: getInvoiceAmount(responseMeta.bolt11),
|
|
69
|
-
request: JSON.parse(responseMeta.description),
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
// Don't count zaps that the user requested for himself
|
|
76
|
-
if (zap.request.pubkey === zapper?.pubkey) {
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
const { amount, lnurl } = fromPairs(zap.request.tags);
|
|
80
|
-
// Verify that the zapper actually sent the requested amount (if it was supplied)
|
|
81
|
-
if (amount && parseInt(amount) !== zap.invoiceAmount) {
|
|
82
|
-
return undefined;
|
|
83
|
-
}
|
|
84
|
-
// If the recipient and the zapper are the same person, it's legit
|
|
85
|
-
if (responseMeta.p === response.pubkey) {
|
|
86
|
-
return zap;
|
|
87
|
-
}
|
|
88
|
-
// If the sending client provided an lnurl tag, verify that too
|
|
89
|
-
if (lnurl && lnurl !== zapper?.lnurl) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
// Verify that the request actually came from the recipient's zapper
|
|
93
|
-
if (zap.response.pubkey !== zapper?.nostrPubkey) {
|
|
94
|
-
return undefined;
|
|
95
|
-
}
|
|
96
|
-
return zap;
|
|
97
|
-
};
|
|
98
|
-
export const makeZapRequest = ({ msats, zapper, pubkey, relays, content = "", eventId, anonymous, }) => {
|
|
99
|
-
const tags = [
|
|
100
|
-
["relays", ...relays],
|
|
101
|
-
["amount", String(msats)],
|
|
102
|
-
["lnurl", zapper.lnurl],
|
|
103
|
-
["p", pubkey],
|
|
104
|
-
];
|
|
105
|
-
if (eventId) {
|
|
106
|
-
tags.push(["e", eventId]);
|
|
107
|
-
}
|
|
108
|
-
if (anonymous) {
|
|
109
|
-
tags.push(["anon"]);
|
|
110
|
-
}
|
|
111
|
-
return makeEvent(ZAP_REQUEST, { content, tags });
|
|
112
|
-
};
|
|
113
|
-
export const requestZap = async ({ zapper, event }) => {
|
|
114
|
-
const zapString = encodeURI(JSON.stringify(event));
|
|
115
|
-
const msats = parseInt(getTagValue("amount", event.tags));
|
|
116
|
-
const qs = `?amount=${msats}&nostr=${zapString}&lnurl=${zapper.lnurl}`;
|
|
117
|
-
const res = await tryCatch(() => fetchJson(zapper.callback + qs));
|
|
118
|
-
return res?.pr ? { invoice: res.pr } : { error: res.reason || "Failed to request invoice" };
|
|
119
|
-
};
|
|
120
|
-
export const getZapResponseFilter = ({ zapper, pubkey, eventId }) => {
|
|
121
|
-
if (!zapper.nostrPubkey) {
|
|
122
|
-
throw new Error("Zapper did not have a nostr pubkey");
|
|
123
|
-
}
|
|
124
|
-
const filter = {
|
|
125
|
-
kinds: [ZAP_RESPONSE],
|
|
126
|
-
authors: [zapper.nostrPubkey],
|
|
127
|
-
since: now() - 30,
|
|
128
|
-
"#p": [pubkey],
|
|
129
|
-
};
|
|
130
|
-
if (eventId) {
|
|
131
|
-
filter["#e"] = [eventId];
|
|
132
|
-
}
|
|
133
|
-
return filter;
|
|
134
|
-
};
|
|
135
|
-
//# sourceMappingURL=Zaps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Zaps.js","sourceRoot":"","sources":["../../../src/Zaps.ts"],"names":[],"mappings":"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"}
|