@getalby/lightning-tools 6.1.0 → 7.0.2
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/README.md +8 -6
- package/dist/cjs/index.cjs +10 -6
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/l402.cjs +10 -6
- package/dist/cjs/l402.cjs.map +1 -1
- package/dist/esm/index.js +10 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l402.js +10 -7
- package/dist/esm/l402.js.map +1 -1
- package/dist/lightning-tools.umd.js +2 -2
- package/dist/lightning-tools.umd.js.map +1 -1
- package/dist/types/index.d.ts +12 -2
- package/dist/types/l402.d.ts +12 -4
- package/package.json +1 -1
package/dist/cjs/l402.cjs
CHANGED
|
@@ -34,17 +34,21 @@ const parseL402 = (input) => {
|
|
|
34
34
|
}
|
|
35
35
|
return keyValuePairs;
|
|
36
36
|
};
|
|
37
|
+
const makeAuthenticateHeader = (args) => {
|
|
38
|
+
const key = args.key || "L402";
|
|
39
|
+
return `${key} macaroon="${args.macaroon}", invoice="${args.invoice}"`;
|
|
40
|
+
};
|
|
37
41
|
|
|
38
42
|
const memoryStorage = new MemoryStorage();
|
|
39
|
-
const HEADER_KEY = "L402";
|
|
43
|
+
const HEADER_KEY = "L402";
|
|
40
44
|
const fetchWithL402 = async (url, fetchArgs, options) => {
|
|
41
45
|
if (!options) {
|
|
42
46
|
options = {};
|
|
43
47
|
}
|
|
44
48
|
const headerKey = options.headerKey || HEADER_KEY;
|
|
45
|
-
const
|
|
46
|
-
if (!
|
|
47
|
-
throw new Error("
|
|
49
|
+
const wallet = options.wallet;
|
|
50
|
+
if (!wallet) {
|
|
51
|
+
throw new Error("wallet is missing");
|
|
48
52
|
}
|
|
49
53
|
const store = options.store || memoryStorage;
|
|
50
54
|
if (!fetchArgs) {
|
|
@@ -71,8 +75,7 @@ const fetchWithL402 = async (url, fetchArgs, options) => {
|
|
|
71
75
|
const details = parseL402(header);
|
|
72
76
|
const token = details.token || details.macaroon;
|
|
73
77
|
const inv = details.invoice;
|
|
74
|
-
await
|
|
75
|
-
const invResp = await webln.sendPayment(inv);
|
|
78
|
+
const invResp = await wallet.sendPayment(inv);
|
|
76
79
|
store.setItem(url, JSON.stringify({
|
|
77
80
|
token: token,
|
|
78
81
|
preimage: invResp.preimage,
|
|
@@ -85,5 +88,6 @@ const fetchWithL402 = async (url, fetchArgs, options) => {
|
|
|
85
88
|
exports.MemoryStorage = MemoryStorage;
|
|
86
89
|
exports.NoStorage = NoStorage;
|
|
87
90
|
exports.fetchWithL402 = fetchWithL402;
|
|
91
|
+
exports.makeAuthenticateHeader = makeAuthenticateHeader;
|
|
88
92
|
exports.parseL402 = parseL402;
|
|
89
93
|
//# sourceMappingURL=l402.cjs.map
|
package/dist/cjs/l402.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l402.cjs","sources":["../../src/l402/utils.ts","../../src/l402/l402.ts"],"sourcesContent":["export interface KVStorage {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n}\n\nexport class MemoryStorage implements KVStorage {\n storage;\n\n constructor(initial?: Record<string, unknown>) {\n this.storage = initial || {};\n }\n\n getItem(key: string) {\n return this.storage[key];\n }\n\n setItem(key: string, value: unknown) {\n this.storage[key] = value;\n }\n}\n\nexport class NoStorage implements KVStorage {\n constructor(initial?: unknown) {}\n\n getItem(key: string) {\n return null;\n }\n\n setItem(key: string, value: unknown) {}\n}\n\nexport const parseL402 = (input: string): Record<string, string> => {\n // Remove the L402 and LSAT identifiers\n const string = input.replace(\"L402\", \"\").replace(\"LSAT\", \"\").trim();\n\n // Initialize an object to store the key-value pairs\n const keyValuePairs = {};\n\n // Regular expression to match key and (quoted or unquoted) value\n const regex = /(\\w+)=(\"([^\"]*)\"|'([^']*)'|([^,]*))/g;\n let match;\n\n // Use regex to find all key-value pairs\n while ((match = regex.exec(string)) !== null) {\n // Key is always match[1]\n // Value is either match[3] (double-quoted), match[4] (single-quoted), or match[5] (unquoted)\n keyValuePairs[match[1]] = match[3] || match[4] || match[5];\n }\n\n return keyValuePairs;\n};\n
|
|
1
|
+
{"version":3,"file":"l402.cjs","sources":["../../src/l402/utils.ts","../../src/l402/l402.ts"],"sourcesContent":["export interface KVStorage {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n}\n\nexport class MemoryStorage implements KVStorage {\n storage;\n\n constructor(initial?: Record<string, unknown>) {\n this.storage = initial || {};\n }\n\n getItem(key: string) {\n return this.storage[key];\n }\n\n setItem(key: string, value: unknown) {\n this.storage[key] = value;\n }\n}\n\nexport class NoStorage implements KVStorage {\n constructor(initial?: unknown) {}\n\n getItem(key: string) {\n return null;\n }\n\n setItem(key: string, value: unknown) {}\n}\n\nexport const parseL402 = (input: string): Record<string, string> => {\n // Remove the L402 and LSAT identifiers\n const string = input.replace(\"L402\", \"\").replace(\"LSAT\", \"\").trim();\n\n // Initialize an object to store the key-value pairs\n const keyValuePairs = {};\n\n // Regular expression to match key and (quoted or unquoted) value\n const regex = /(\\w+)=(\"([^\"]*)\"|'([^']*)'|([^,]*))/g;\n let match;\n\n // Use regex to find all key-value pairs\n while ((match = regex.exec(string)) !== null) {\n // Key is always match[1]\n // Value is either match[3] (double-quoted), match[4] (single-quoted), or match[5] (unquoted)\n keyValuePairs[match[1]] = match[3] || match[4] || match[5];\n }\n\n return keyValuePairs;\n};\n\nexport const makeAuthenticateHeader = (args: { macaroon: string, invoice: string, key?: string }) => {\n const key = args.key || \"L402\";\n\n return `${key} macaroon=\"${args.macaroon}\", invoice=\"${args.invoice}\"`;\n}\n","import { KVStorage, MemoryStorage, parseL402 } from \"./utils\";\n\nconst memoryStorage = new MemoryStorage();\n\nconst HEADER_KEY = \"L402\";\n\ninterface Wallet {\n sendPayment(paymentRequest: string): Promise<{ preimage: string }>;\n}\n\nexport const fetchWithL402 = async (\n url: string,\n fetchArgs: RequestInit,\n options: {\n headerKey?: string;\n wallet?: Wallet;\n store?: KVStorage;\n },\n) => {\n if (!options) {\n options = {};\n }\n const headerKey = options.headerKey || HEADER_KEY;\n const wallet: Wallet | undefined = options.wallet;\n if (!wallet) {\n throw new Error(\"wallet is missing\");\n }\n const store = options.store || memoryStorage;\n if (!fetchArgs) {\n fetchArgs = {};\n }\n fetchArgs.cache = \"no-store\";\n fetchArgs.mode = \"cors\";\n if (!fetchArgs.headers) {\n fetchArgs.headers = {};\n }\n const cachedL402Data = store.getItem(url);\n if (cachedL402Data) {\n const data = JSON.parse(cachedL402Data);\n fetchArgs.headers[\"Authorization\"] =\n `${headerKey} ${data.token}:${data.preimage}`;\n return await fetch(url, fetchArgs);\n }\n\n fetchArgs.headers[\"Accept-Authenticate\"] = headerKey;\n const initResp = await fetch(url, fetchArgs);\n const header = initResp.headers.get(\"www-authenticate\");\n if (!header) {\n return initResp;\n }\n\n const details = parseL402(header);\n const token = details.token || details.macaroon;\n const inv = details.invoice;\n\n const invResp = await wallet.sendPayment(inv);\n\n store.setItem(\n url,\n JSON.stringify({\n token: token,\n preimage: invResp.preimage,\n }),\n );\n\n fetchArgs.headers[\"Authorization\"] =\n `${headerKey} ${token}:${invResp.preimage}`;\n return await fetch(url, fetchArgs);\n};\n"],"names":[],"mappings":";;MAKa,aAAa,CAAA;AAGxB,IAAA,WAAA,CAAY,OAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE;IAC9B;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B;IAEA,OAAO,CAAC,GAAW,EAAE,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;IAC3B;AACD;MAEY,SAAS,CAAA;IACpB,WAAA,CAAY,OAAiB,IAAG;AAEhC,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,CAAC,GAAW,EAAE,KAAc,IAAG;AACvC;AAEM,MAAM,SAAS,GAAG,CAAC,KAAa,KAA4B;;IAEjE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;;IAGnE,MAAM,aAAa,GAAG,EAAE;;IAGxB,MAAM,KAAK,GAAG,sCAAsC;AACpD,IAAA,IAAI,KAAK;;AAGT,IAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;;;QAG5C,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IAC5D;AAEA,IAAA,OAAO,aAAa;AACtB;AAEO,MAAM,sBAAsB,GAAG,CAAC,IAAyD,KAAI;AAClG,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM;IAE9B,OAAO,CAAA,EAAG,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,QAAQ,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,CAAA,CAAA,CAAG;AACxE;;ACtDA,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE;AAEzC,MAAM,UAAU,GAAG,MAAM;AAMlB,MAAM,aAAa,GAAG,OAC3B,GAAW,EACX,SAAsB,EACtB,OAIC,KACC;IACF,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,EAAE;IACd;AACA,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU;AACjD,IAAA,MAAM,MAAM,GAAuB,OAAO,CAAC,MAAM;IACjD,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;IACtC;AACA,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa;IAC5C,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,EAAE;IAChB;AACA,IAAA,SAAS,CAAC,KAAK,GAAG,UAAU;AAC5B,IAAA,SAAS,CAAC,IAAI,GAAG,MAAM;AACvB,IAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACtB,QAAA,SAAS,CAAC,OAAO,GAAG,EAAE;IACxB;IACA,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACzC,IAAI,cAAc,EAAE;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AACvC,QAAA,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC;YAChC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAA,CAAE;AAC/C,QAAA,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;IACpC;AAEA,IAAA,SAAS,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACvD,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ;AAC/C,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO;IAE3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;IAE7C,KAAK,CAAC,OAAO,CACX,GAAG,EACH,IAAI,CAAC,SAAS,CAAC;AACb,QAAA,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC3B,KAAA,CAAC,CACH;AAED,IAAA,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,CAAA,EAAG,SAAS,IAAI,KAAK,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,EAAE;AAC7C,IAAA,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;AACpC;;;;;;;;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1691,17 +1691,21 @@ const parseL402 = (input) => {
|
|
|
1691
1691
|
}
|
|
1692
1692
|
return keyValuePairs;
|
|
1693
1693
|
};
|
|
1694
|
+
const makeAuthenticateHeader = (args) => {
|
|
1695
|
+
const key = args.key || "L402";
|
|
1696
|
+
return `${key} macaroon="${args.macaroon}", invoice="${args.invoice}"`;
|
|
1697
|
+
};
|
|
1694
1698
|
|
|
1695
1699
|
const memoryStorage = new MemoryStorage();
|
|
1696
|
-
const HEADER_KEY = "L402";
|
|
1700
|
+
const HEADER_KEY = "L402";
|
|
1697
1701
|
const fetchWithL402 = async (url, fetchArgs, options) => {
|
|
1698
1702
|
if (!options) {
|
|
1699
1703
|
options = {};
|
|
1700
1704
|
}
|
|
1701
1705
|
const headerKey = options.headerKey || HEADER_KEY;
|
|
1702
|
-
const
|
|
1703
|
-
if (!
|
|
1704
|
-
throw new Error("
|
|
1706
|
+
const wallet = options.wallet;
|
|
1707
|
+
if (!wallet) {
|
|
1708
|
+
throw new Error("wallet is missing");
|
|
1705
1709
|
}
|
|
1706
1710
|
const store = options.store || memoryStorage;
|
|
1707
1711
|
if (!fetchArgs) {
|
|
@@ -1728,8 +1732,7 @@ const fetchWithL402 = async (url, fetchArgs, options) => {
|
|
|
1728
1732
|
const details = parseL402(header);
|
|
1729
1733
|
const token = details.token || details.macaroon;
|
|
1730
1734
|
const inv = details.invoice;
|
|
1731
|
-
await
|
|
1732
|
-
const invResp = await webln.sendPayment(inv);
|
|
1735
|
+
const invResp = await wallet.sendPayment(inv);
|
|
1733
1736
|
store.setItem(url, JSON.stringify({
|
|
1734
1737
|
token: token,
|
|
1735
1738
|
preimage: invResp.preimage,
|
|
@@ -1788,5 +1791,5 @@ const getFormattedFiatValue = async ({ satoshi, currency, locale, }) => {
|
|
|
1788
1791
|
});
|
|
1789
1792
|
};
|
|
1790
1793
|
|
|
1791
|
-
export { DEFAULT_PROXY, Invoice, LN_ADDRESS_REGEX, LightningAddress, MemoryStorage, NoStorage, decodeInvoice, fetchWithL402, fromHexString, generateZapEvent, getEventHash, getFiatBtcRate, getFiatCurrencies, getFiatValue, getFormattedFiatValue, getSatoshiValue, isUrl, isValidAmount, parseKeysendResponse, parseL402, parseLnUrlPayResponse, parseNostrResponse, sendBoostagram, serializeEvent, validateEvent };
|
|
1794
|
+
export { DEFAULT_PROXY, Invoice, LN_ADDRESS_REGEX, LightningAddress, MemoryStorage, NoStorage, decodeInvoice, fetchWithL402, fromHexString, generateZapEvent, getEventHash, getFiatBtcRate, getFiatCurrencies, getFiatValue, getFormattedFiatValue, getSatoshiValue, isUrl, isValidAmount, makeAuthenticateHeader, parseKeysendResponse, parseL402, parseLnUrlPayResponse, parseNostrResponse, sendBoostagram, serializeEvent, validateEvent };
|
|
1792
1795
|
//# sourceMappingURL=index.js.map
|