@getalby/lightning-tools 7.0.2 → 8.0.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.
- package/README.md +108 -28
- package/dist/cjs/402/l402.cjs +55 -0
- package/dist/cjs/402/l402.cjs.map +1 -0
- package/dist/cjs/402/mpp.cjs +179 -0
- package/dist/cjs/402/mpp.cjs.map +1 -0
- package/dist/cjs/402/x402.cjs +1313 -0
- package/dist/cjs/402/x402.cjs.map +1 -0
- package/dist/cjs/402.cjs +1585 -0
- package/dist/cjs/402.cjs.map +1 -0
- package/dist/cjs/bolt11.cjs +8 -0
- package/dist/cjs/bolt11.cjs.map +1 -1
- package/dist/cjs/index.cjs +301 -53
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/lnurl.cjs +8 -0
- package/dist/cjs/lnurl.cjs.map +1 -1
- package/dist/esm/402/l402.js +53 -0
- package/dist/esm/402/l402.js.map +1 -0
- package/dist/esm/402/mpp.js +177 -0
- package/dist/esm/402/mpp.js.map +1 -0
- package/dist/esm/402/x402.js +1311 -0
- package/dist/esm/402/x402.js.map +1 -0
- package/dist/esm/402.js +1579 -0
- package/dist/esm/402.js.map +1 -0
- package/dist/esm/bolt11.js +8 -0
- package/dist/esm/bolt11.js.map +1 -1
- package/dist/esm/index.js +298 -50
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lnurl.js +8 -0
- package/dist/esm/lnurl.js.map +1 -1
- package/dist/lightning-tools.umd.js +2 -2
- package/dist/lightning-tools.umd.js.map +1 -1
- package/dist/types/402/l402.d.ts +13 -0
- package/dist/types/402/mpp.d.ts +26 -0
- package/dist/types/402/x402.d.ts +13 -0
- package/dist/types/402.d.ts +41 -0
- package/dist/types/bolt11.d.ts +4 -0
- package/dist/types/index.d.ts +38 -28
- package/dist/types/lnurl.d.ts +2 -0
- package/package.json +20 -5
- package/dist/cjs/l402.cjs +0 -93
- package/dist/cjs/l402.cjs.map +0 -1
- package/dist/esm/l402.js +0 -87
- package/dist/esm/l402.js.map +0 -1
- package/dist/types/l402.d.ts +0 -35
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../node_modules/@scure/base/lib/index.js","../../node_modules/light-bolt11-decoder/bolt11.js","../../src/bolt11/utils.ts","../../node_modules/@noble/hashes/esm/_assert.js","../../node_modules/@noble/hashes/esm/utils.js","../../node_modules/@noble/hashes/esm/_sha2.js","../../node_modules/@noble/hashes/esm/sha256.js","../../src/bolt11/Invoice.ts","../../src/lnurl/utils.ts","../../src/podcasting2/boostagrams.ts","../../src/lnurl/LightningAddress.ts","../../src/l402/utils.ts","../../src/l402/l402.ts","../../src/fiat/fiat.ts"],"sourcesContent":["\"use strict\";\n/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bytes = exports.stringToBytes = exports.str = exports.bytesToString = exports.hex = exports.utf8 = exports.bech32m = exports.bech32 = exports.base58check = exports.base58xmr = exports.base58xrp = exports.base58flickr = exports.base58 = exports.base64url = exports.base64 = exports.base32crockford = exports.base32hex = exports.base32 = exports.base16 = exports.utils = exports.assertNumber = void 0;\nfunction assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nexports.assertNumber = assertNumber;\nfunction chain(...args) {\n const wrap = (a, b) => (c) => a(b(c));\n const encode = Array.from(args)\n .reverse()\n .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n return { encode, decode };\n}\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n digits[i] = Math.floor(digitBase / to);\n if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!digits[i])\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1;\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of strings');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of strings');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\nexports.utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexports.base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexports.base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexports.base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexports.base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexports.base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexports.base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexports.base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexports.base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexports.base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexports.base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += exports.base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = exports.base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nconst base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), exports.base58);\nexports.base58check = base58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n prefix = prefix.toLowerCase();\n return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexports.bech32 = genBech32('bech32');\nexports.bech32m = genBech32('bech32m');\nexports.utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexports.hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\nconst CODERS = {\n utf8: exports.utf8, hex: exports.hex, base16: exports.base16, base32: exports.base32, base64: exports.base64, base64url: exports.base64url, base58: exports.base58, base58xmr: exports.base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nconst bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!(bytes instanceof Uint8Array))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexports.bytesToString = bytesToString;\nexports.str = exports.bytesToString;\nconst stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexports.stringToBytes = stringToBytes;\nexports.bytes = exports.stringToBytes;\n","const {bech32, hex, utf8} = require('@scure/base')\n\n// defaults for encode; default timestamp is current time at call\nconst DEFAULTNETWORK = {\n // default network is bitcoin\n bech32: 'bc',\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n validWitnessVersions: [0]\n}\nconst TESTNETWORK = {\n bech32: 'tb',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst SIGNETNETWORK = {\n bech32: 'tbs',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst REGTESTNETWORK = {\n bech32: 'bcrt',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst SIMNETWORK = {\n bech32: 'sb',\n pubKeyHash: 0x3f,\n scriptHash: 0x7b,\n validWitnessVersions: [0]\n}\n\nconst FEATUREBIT_ORDER = [\n 'option_data_loss_protect',\n 'initial_routing_sync',\n 'option_upfront_shutdown_script',\n 'gossip_queries',\n 'var_onion_optin',\n 'gossip_queries_ex',\n 'option_static_remotekey',\n 'payment_secret',\n 'basic_mpp',\n 'option_support_large_channel'\n]\n\nconst DIVISORS = {\n m: BigInt(1e3),\n u: BigInt(1e6),\n n: BigInt(1e9),\n p: BigInt(1e12)\n}\n\nconst MAX_MILLISATS = BigInt('2100000000000000000')\n\nconst MILLISATS_PER_BTC = BigInt(1e11)\n\nconst TAGCODES = {\n payment_hash: 1,\n payment_secret: 16,\n description: 13,\n payee: 19,\n description_hash: 23, // commit to longer descriptions (used by lnurl-pay)\n expiry: 6, // default: 3600 (1 hour)\n min_final_cltv_expiry: 24, // default: 9\n fallback_address: 9,\n route_hint: 3, // for extra routing info (private etc.)\n feature_bits: 5,\n metadata: 27\n}\n\n// reverse the keys and values of TAGCODES and insert into TAGNAMES\nconst TAGNAMES = {}\nfor (let i = 0, keys = Object.keys(TAGCODES); i < keys.length; i++) {\n const currentName = keys[i]\n const currentCode = TAGCODES[keys[i]].toString()\n TAGNAMES[currentCode] = currentName\n}\n\nconst TAGPARSERS = {\n 1: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 16: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 13: words => utf8.encode(bech32.fromWordsUnsafe(words)), // string variable length\n 19: words => hex.encode(bech32.fromWordsUnsafe(words)), // 264 bits\n 23: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 27: words => hex.encode(bech32.fromWordsUnsafe(words)), // variable\n 6: wordsToIntBE, // default: 3600 (1 hour)\n 24: wordsToIntBE, // default: 9\n 3: routingInfoParser, // for extra routing info (private etc.)\n 5: featureBitsParser // keep feature bits as array of 5 bit words\n}\n\nfunction getUnknownParser(tagCode) {\n return words => ({\n tagCode: parseInt(tagCode),\n words: bech32.encode('unknown', words, Number.MAX_SAFE_INTEGER)\n })\n}\n\nfunction wordsToIntBE(words) {\n return words.reverse().reduce((total, item, index) => {\n return total + item * Math.pow(32, index)\n }, 0)\n}\n\n// first convert from words to buffer, trimming padding where necessary\n// parse in 51 byte chunks. See encoder for details.\nfunction routingInfoParser(words) {\n const routes = []\n let pubkey,\n shortChannelId,\n feeBaseMSats,\n feeProportionalMillionths,\n cltvExpiryDelta\n let routesBuffer = bech32.fromWordsUnsafe(words)\n while (routesBuffer.length > 0) {\n pubkey = hex.encode(routesBuffer.slice(0, 33)) // 33 bytes\n shortChannelId = hex.encode(routesBuffer.slice(33, 41)) // 8 bytes\n feeBaseMSats = parseInt(hex.encode(routesBuffer.slice(41, 45)), 16) // 4 bytes\n feeProportionalMillionths = parseInt(\n hex.encode(routesBuffer.slice(45, 49)),\n 16\n ) // 4 bytes\n cltvExpiryDelta = parseInt(hex.encode(routesBuffer.slice(49, 51)), 16) // 2 bytes\n\n routesBuffer = routesBuffer.slice(51)\n\n routes.push({\n pubkey,\n short_channel_id: shortChannelId,\n fee_base_msat: feeBaseMSats,\n fee_proportional_millionths: feeProportionalMillionths,\n cltv_expiry_delta: cltvExpiryDelta\n })\n }\n return routes\n}\n\nfunction featureBitsParser(words) {\n const bools = words\n .slice()\n .reverse()\n .map(word => [\n !!(word & 0b1),\n !!(word & 0b10),\n !!(word & 0b100),\n !!(word & 0b1000),\n !!(word & 0b10000)\n ])\n .reduce((finalArr, itemArr) => finalArr.concat(itemArr), [])\n while (bools.length < FEATUREBIT_ORDER.length * 2) {\n bools.push(false)\n }\n\n const featureBits = {}\n\n FEATUREBIT_ORDER.forEach((featureName, index) => {\n let status\n if (bools[index * 2]) {\n status = 'required'\n } else if (bools[index * 2 + 1]) {\n status = 'supported'\n } else {\n status = 'unsupported'\n }\n featureBits[featureName] = status\n })\n\n const extraBits = bools.slice(FEATUREBIT_ORDER.length * 2)\n featureBits.extra_bits = {\n start_bit: FEATUREBIT_ORDER.length * 2,\n bits: extraBits,\n has_required: extraBits.reduce(\n (result, bit, index) =>\n index % 2 !== 0 ? result || false : result || bit,\n false\n )\n }\n\n return featureBits\n}\n\nfunction hrpToMillisat(hrpString, outputString) {\n let divisor, value\n if (hrpString.slice(-1).match(/^[munp]$/)) {\n divisor = hrpString.slice(-1)\n value = hrpString.slice(0, -1)\n } else if (hrpString.slice(-1).match(/^[^munp0-9]$/)) {\n throw new Error('Not a valid multiplier for the amount')\n } else {\n value = hrpString\n }\n\n if (!value.match(/^\\d+$/))\n throw new Error('Not a valid human readable amount')\n\n const valueBN = BigInt(value)\n\n const millisatoshisBN = divisor\n ? (valueBN * MILLISATS_PER_BTC) / DIVISORS[divisor]\n : valueBN * MILLISATS_PER_BTC\n\n if (\n (divisor === 'p' && !(valueBN % BigInt(10) === BigInt(0))) ||\n millisatoshisBN > MAX_MILLISATS\n ) {\n throw new Error('Amount is outside of valid range')\n }\n\n return outputString ? millisatoshisBN.toString() : millisatoshisBN\n}\n\n// decode will only have extra comments that aren't covered in encode comments.\n// also if anything is hard to read I'll comment.\nfunction decode(paymentRequest, network) {\n if (typeof paymentRequest !== 'string')\n throw new Error('Lightning Payment Request must be string')\n if (paymentRequest.slice(0, 2).toLowerCase() !== 'ln')\n throw new Error('Not a proper lightning payment request')\n\n const sections = []\n const decoded = bech32.decode(paymentRequest, Number.MAX_SAFE_INTEGER)\n paymentRequest = paymentRequest.toLowerCase()\n const prefix = decoded.prefix\n let words = decoded.words\n let letters = paymentRequest.slice(prefix.length + 1)\n let sigWords = words.slice(-104)\n words = words.slice(0, -104)\n\n // Without reverse lookups, can't say that the multipier at the end must\n // have a number before it, so instead we parse, and if the second group\n // doesn't have anything, there's a good chance the last letter of the\n // coin type got captured by the third group, so just re-regex without\n // the number.\n let prefixMatches = prefix.match(/^ln(\\S+?)(\\d*)([a-zA-Z]?)$/)\n if (prefixMatches && !prefixMatches[2])\n prefixMatches = prefix.match(/^ln(\\S+)$/)\n if (!prefixMatches) {\n throw new Error('Not a proper lightning payment request')\n }\n\n // \"ln\" section\n sections.push({\n name: 'lightning_network',\n letters: 'ln'\n })\n\n // \"bc\" section\n const bech32Prefix = prefixMatches[1]\n let coinNetwork\n if (!network) {\n switch (bech32Prefix) {\n case DEFAULTNETWORK.bech32:\n coinNetwork = DEFAULTNETWORK\n break\n case TESTNETWORK.bech32:\n coinNetwork = TESTNETWORK\n break\n case SIGNETNETWORK.bech32:\n coinNetwork = SIGNETNETWORK\n break\n case REGTESTNETWORK.bech32:\n coinNetwork = REGTESTNETWORK\n break\n case SIMNETWORK.bech32:\n coinNetwork = SIMNETWORK\n break\n }\n } else {\n if (\n network.bech32 === undefined ||\n network.pubKeyHash === undefined ||\n network.scriptHash === undefined ||\n !Array.isArray(network.validWitnessVersions)\n )\n throw new Error('Invalid network')\n coinNetwork = network\n }\n if (!coinNetwork || coinNetwork.bech32 !== bech32Prefix) {\n throw new Error('Unknown coin bech32 prefix')\n }\n sections.push({\n name: 'coin_network',\n letters: bech32Prefix,\n value: coinNetwork\n })\n\n // amount section\n const value = prefixMatches[2]\n let millisatoshis\n if (value) {\n const divisor = prefixMatches[3]\n millisatoshis = hrpToMillisat(value + divisor, true)\n sections.push({\n name: 'amount',\n letters: prefixMatches[2] + prefixMatches[3],\n value: millisatoshis\n })\n } else {\n millisatoshis = null\n }\n\n // \"1\" separator\n sections.push({\n name: 'separator',\n letters: '1'\n })\n\n // timestamp\n const timestamp = wordsToIntBE(words.slice(0, 7))\n words = words.slice(7) // trim off the left 7 words\n sections.push({\n name: 'timestamp',\n letters: letters.slice(0, 7),\n value: timestamp\n })\n letters = letters.slice(7)\n\n let tagName, parser, tagLength, tagWords\n // we have no tag count to go on, so just keep hacking off words\n // until we have none.\n while (words.length > 0) {\n const tagCode = words[0].toString()\n tagName = TAGNAMES[tagCode] || 'unknown_tag'\n parser = TAGPARSERS[tagCode] || getUnknownParser(tagCode)\n words = words.slice(1)\n\n tagLength = wordsToIntBE(words.slice(0, 2))\n words = words.slice(2)\n\n tagWords = words.slice(0, tagLength)\n words = words.slice(tagLength)\n\n sections.push({\n name: tagName,\n tag: letters[0],\n letters: letters.slice(0, 1 + 2 + tagLength),\n value: parser(tagWords) // see: parsers for more comments\n })\n letters = letters.slice(1 + 2 + tagLength)\n }\n\n // signature\n sections.push({\n name: 'signature',\n letters: letters.slice(0, 104),\n value: hex.encode(bech32.fromWordsUnsafe(sigWords))\n })\n letters = letters.slice(104)\n\n // checksum\n sections.push({\n name: 'checksum',\n letters: letters\n })\n\n let result = {\n paymentRequest,\n sections,\n\n get expiry() {\n let exp = sections.find(s => s.name === 'expiry')\n if (exp) return getValue('timestamp') + exp.value\n },\n\n get route_hints() {\n return sections.filter(s => s.name === 'route_hint').map(s => s.value)\n }\n }\n\n for (let name in TAGCODES) {\n if (name === 'route_hint') {\n // route hints can be multiple, so this won't work for them\n continue\n }\n\n Object.defineProperty(result, name, {\n get() {\n return getValue(name)\n }\n })\n }\n\n return result\n\n function getValue(name) {\n let section = sections.find(s => s.name === name)\n return section ? section.value : undefined\n }\n}\n\nmodule.exports = {\n decode,\n hrpToMillisat\n}\n","import { decode } from \"light-bolt11-decoder\";\n\n// from https://stackoverflow.com/a/50868276\nexport const fromHexString = (hexString: string) =>\n Uint8Array.from(\n hexString.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16)),\n );\n\ntype DecodedInvoice = {\n paymentHash: string;\n satoshi: number;\n timestamp: number;\n expiry: number | undefined;\n description: string | undefined;\n};\n\nexport const decodeInvoice = (\n paymentRequest: string,\n): DecodedInvoice | null => {\n if (!paymentRequest) return null;\n\n try {\n const decoded = decode(paymentRequest);\n if (!decoded || !decoded.sections) return null;\n\n const hashTag = decoded.sections.find(\n (value) => value.name === \"payment_hash\",\n );\n\n if (hashTag?.name !== \"payment_hash\" || !hashTag.value) return null;\n\n const paymentHash = hashTag.value;\n\n let satoshi = 0;\n\n const amountTag = decoded.sections.find((value) => value.name === \"amount\");\n\n if (amountTag?.name === \"amount\" && amountTag.value) {\n satoshi = parseInt(amountTag.value) / 1000; // millisats\n }\n\n const timestampTag = decoded.sections.find(\n (value) => value.name === \"timestamp\",\n );\n\n if (timestampTag?.name !== \"timestamp\" || !timestampTag.value) return null;\n\n const timestamp = timestampTag.value;\n\n let expiry: number | undefined;\n const expiryTag = decoded.sections.find((value) => value.name === \"expiry\");\n\n if (expiryTag?.name === \"expiry\") {\n expiry = expiryTag.value;\n }\n\n const descriptionTag = decoded.sections.find(\n (value) => value.name === \"description\",\n );\n\n const description =\n descriptionTag?.name === \"description\"\n ? descriptionTag?.value\n : undefined;\n\n return {\n paymentHash,\n satoshi,\n timestamp,\n expiry,\n description,\n };\n } catch {\n return null;\n }\n};\n","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","import { InvoiceArgs, SuccessAction } from \"./types\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\nimport { decodeInvoice, fromHexString } from \"./utils\";\n\nexport class Invoice {\n paymentRequest: string;\n paymentHash: string;\n preimage: string | null;\n verify: string | null;\n satoshi: number;\n expiry: number | undefined; // expiry in seconds (not a timestamp)\n timestamp: number; // created date in seconds\n createdDate: Date;\n expiryDate: Date | undefined;\n description: string | null;\n successAction: SuccessAction | null;\n\n constructor(args: InvoiceArgs) {\n this.paymentRequest = args.pr;\n if (!this.paymentRequest) {\n throw new Error(\"Invalid payment request\");\n }\n const decodedInvoice = decodeInvoice(this.paymentRequest);\n if (!decodedInvoice) {\n throw new Error(\"Failed to decode payment request\");\n }\n this.paymentHash = decodedInvoice.paymentHash;\n this.satoshi = decodedInvoice.satoshi;\n this.timestamp = decodedInvoice.timestamp;\n this.expiry = decodedInvoice.expiry;\n this.createdDate = new Date(this.timestamp * 1000);\n this.expiryDate = this.expiry\n ? new Date((this.timestamp + this.expiry) * 1000)\n : undefined;\n this.description = decodedInvoice.description ?? null;\n this.verify = args.verify ?? null;\n this.preimage = args.preimage ?? null;\n this.successAction = args.successAction ?? null;\n }\n\n async isPaid(): Promise<boolean> {\n if (this.preimage) return this.validatePreimage(this.preimage);\n else if (this.verify) {\n return await this.verifyPayment();\n } else {\n throw new Error(\"Could not verify payment\");\n }\n }\n\n validatePreimage(preimage: string): boolean {\n if (!preimage || !this.paymentHash) return false;\n\n try {\n const preimageHash = bytesToHex(sha256(fromHexString(preimage)));\n return this.paymentHash === preimageHash;\n } catch {\n return false;\n }\n }\n\n async verifyPayment(): Promise<boolean> {\n try {\n if (!this.verify) {\n throw new Error(\"LNURL verify not available\");\n }\n const response = await fetch(this.verify);\n if (!response.ok) {\n throw new Error(\n `Verification request failed: ${response.status} ${response.statusText}`,\n );\n }\n const json = await response.json();\n if (json.preimage) {\n this.preimage = json.preimage;\n }\n\n return json.settled;\n } catch (error) {\n console.error(\"Failed to check LNURL-verify\", error);\n return false;\n }\n }\n\n hasExpired() {\n const { expiryDate } = this;\n if (expiryDate) {\n return expiryDate.getTime() < Date.now();\n }\n return false;\n }\n}\n","import {\n KeySendRawData,\n KeysendResponse,\n Event,\n NostrResponse,\n ZapArgs,\n ZapOptions,\n LUD18ServicePayerData,\n LnUrlPayResponse,\n LnUrlRawData,\n} from \"./types\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\n\nconst TAG_KEYSEND = \"keysend\";\n\nexport const parseKeysendResponse = (data: KeySendRawData): KeysendResponse => {\n if (data.tag !== TAG_KEYSEND) throw new Error(\"Invalid keysend params\");\n if (data.status !== \"OK\") throw new Error(\"Keysend status not OK\");\n if (!data.pubkey) throw new Error(\"Pubkey does not exist\");\n\n const destination = data.pubkey;\n let customKey, customValue;\n\n if (data.customData && data.customData[0]) {\n customKey = data.customData[0].customKey;\n customValue = data.customData[0].customValue;\n }\n\n return {\n destination,\n customKey,\n customValue,\n };\n};\n\nexport async function generateZapEvent(\n { satoshi, comment, p, e, relays }: ZapArgs,\n options: ZapOptions = {},\n): Promise<Event> {\n const nostr = options.nostr || globalThis.nostr;\n if (!nostr) {\n throw new Error(\"nostr option or window.nostr is not available\");\n }\n\n const nostrTags = [\n [\"relays\", ...relays],\n [\"amount\", satoshi.toString()],\n ];\n if (p) {\n nostrTags.push([\"p\", p]);\n }\n if (e) {\n nostrTags.push([\"e\", e]);\n }\n\n const pubkey = await nostr.getPublicKey();\n\n const nostrEvent: Event = {\n pubkey,\n created_at: Math.floor(Date.now() / 1000),\n kind: 9734,\n tags: nostrTags,\n content: comment ?? \"\",\n };\n\n nostrEvent.id = getEventHash(nostrEvent);\n return await nostr.signEvent(nostrEvent);\n}\n\nexport function validateEvent(event: Event): boolean {\n if (typeof event.content !== \"string\") return false;\n if (typeof event.created_at !== \"number\") return false;\n // ignore these checks because if the pubkey is not set we add it to the event. same for the ID.\n // if (typeof event.pubkey !== \"string\") return false;\n // if (!event.pubkey.match(/^[a-f0-9]{64}$/)) return false;\n\n if (!Array.isArray(event.tags)) return false;\n for (let i = 0; i < event.tags.length; i++) {\n const tag = event.tags[i];\n if (!Array.isArray(tag)) return false;\n for (let j = 0; j < tag.length; j++) {\n if (typeof tag[j] === \"object\") return false;\n }\n }\n\n return true;\n}\n\nexport function serializeEvent(evt: Event): string {\n if (!validateEvent(evt))\n throw new Error(\"can't serialize event with wrong or missing properties\");\n\n return JSON.stringify([\n 0,\n evt.pubkey,\n evt.created_at,\n evt.kind,\n evt.tags,\n evt.content,\n ]);\n}\n\nexport function getEventHash(event: Event): string {\n return bytesToHex(sha256(serializeEvent(event)));\n}\n\nexport function parseNostrResponse(\n nostrData: NostrResponse,\n username: string | undefined,\n) {\n let nostrPubkey: string | undefined;\n let nostrRelays: string[] | undefined;\n if (username && nostrData) {\n nostrPubkey = nostrData.names?.[username];\n nostrRelays = nostrPubkey ? nostrData.relays?.[nostrPubkey] : undefined;\n }\n\n return [nostrData, nostrPubkey, nostrRelays] as const;\n}\n\nconst URL_REGEX =\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[+~%/.\\w-_]*)?\\??(?:[-+=&;%@.\\w_]*)#?(?:[\\w]*))?)/;\n\nexport const isUrl = (url: string | null): url is string => {\n if (!url) return false;\n return URL_REGEX.test(url);\n};\n\nexport const isValidAmount = ({\n amount,\n min,\n max,\n}: {\n amount: number;\n min: number;\n max: number;\n}): boolean => {\n return amount > 0 && amount >= min && amount <= max;\n};\n\nconst TAG_PAY_REQUEST = \"payRequest\";\n\n// From: https://github.com/dolcalmi/lnurl-pay/blob/main/src/request-pay-service-params.ts\nexport const parseLnUrlPayResponse = async (\n data: LnUrlRawData,\n): Promise<LnUrlPayResponse> => {\n if (data.tag !== TAG_PAY_REQUEST)\n throw new Error(\"Invalid pay service params\");\n\n const callback = (data.callback + \"\").trim();\n if (!isUrl(callback)) throw new Error(\"Callback must be a valid url\");\n\n const min = Math.ceil(Number(data.minSendable || 0));\n const max = Math.floor(Number(data.maxSendable));\n if (!(min && max) || min > max) throw new Error(\"Invalid pay service params\");\n\n let metadata: Array<Array<string>>;\n let metadataHash: string;\n try {\n metadata = JSON.parse(data.metadata + \"\");\n metadataHash = bytesToHex(sha256(data.metadata + \"\"));\n } catch {\n metadata = [];\n metadataHash = bytesToHex(sha256(\"[]\"));\n }\n\n let email = \"\";\n let image = \"\";\n let description = \"\";\n let identifier = \"\";\n for (let i = 0; i < metadata.length; i++) {\n const [k, v] = metadata[i];\n switch (k) {\n case \"text/plain\":\n description = v;\n break;\n case \"text/identifier\":\n identifier = v;\n break;\n case \"text/email\":\n email = v;\n break;\n case \"image/png;base64\":\n case \"image/jpeg;base64\":\n image = \"data:\" + k + \",\" + v;\n break;\n }\n }\n const payerData = data.payerData as LUD18ServicePayerData | undefined;\n\n let domain: string | undefined;\n try {\n domain = new URL(callback).hostname;\n } catch {\n // fail silently and let domain remain undefined if callback is not a valid URL\n }\n\n return {\n callback,\n fixed: min === max,\n min,\n max,\n domain,\n metadata,\n metadataHash,\n identifier,\n email,\n description,\n image,\n payerData,\n commentAllowed: Number(data.commentAllowed) || 0,\n rawData: data,\n allowsNostr: data.allowsNostr || false,\n };\n};\n","import { WebLNProvider } from \"@webbtc/webln-types\";\nimport { BoostArguments, BoostOptions, WeblnBoostParams } from \"./types\";\n\nexport const sendBoostagram = async (\n args: BoostArguments,\n options?: BoostOptions,\n) => {\n const { boost } = args;\n if (!options) {\n options = {};\n }\n const webln: WebLNProvider = options.webln || globalThis.webln;\n\n if (!webln) {\n throw new Error(\"WebLN not available\");\n }\n if (!webln.keysend) {\n throw new Error(\"Keysend not available in current WebLN provider\");\n }\n\n const amount = args.amount || Math.floor(boost.value_msat / 1000);\n\n const weblnParams: WeblnBoostParams = {\n destination: args.destination,\n amount: amount,\n customRecords: {\n \"7629169\": JSON.stringify(boost),\n },\n };\n if (args.customKey && args.customValue) {\n weblnParams.customRecords[args.customKey] = args.customValue;\n }\n await webln.enable();\n const response = await webln.keysend(weblnParams);\n return response;\n};\n","import { SendPaymentResponse, WebLNProvider } from \"@webbtc/webln-types\";\nimport { Invoice, InvoiceArgs } from \"../bolt11\";\nimport { Boost, sendBoostagram } from \"../podcasting2\";\nimport {\n KeysendResponse,\n LnUrlPayResponse,\n LnUrlRawData,\n NostrResponse,\n RequestInvoiceArgs,\n ZapArgs,\n ZapOptions,\n KeySendRawData,\n} from \"./types\";\nimport {\n generateZapEvent,\n parseKeysendResponse,\n parseNostrResponse,\n isUrl,\n isValidAmount,\n parseLnUrlPayResponse,\n} from \"./utils\";\n\nexport const LN_ADDRESS_REGEX =\n /^((?:[^<>()[\\]\\\\.,;:\\s@\"]+(?:\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(?:\".+\"))@((?:\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(?:(?:[a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nexport const DEFAULT_PROXY = \"https://api.getalby.com/lnurl\";\n\ntype LightningAddressOptions = {\n proxy?: string | false;\n webln?: WebLNProvider;\n};\n\nexport class LightningAddress {\n address: string;\n options: LightningAddressOptions;\n username: string | undefined;\n domain: string | undefined;\n pubkey: string | undefined;\n lnurlpData: LnUrlPayResponse | undefined;\n keysendData: KeysendResponse | undefined;\n nostrData: NostrResponse | undefined;\n nostrPubkey: string | undefined;\n nostrRelays: string[] | undefined;\n webln: WebLNProvider | undefined;\n\n constructor(address: string, options?: LightningAddressOptions) {\n this.address = address;\n this.options = { proxy: DEFAULT_PROXY };\n this.options = Object.assign(this.options, options);\n this.parse();\n this.webln = this.options.webln;\n }\n\n parse() {\n const result = LN_ADDRESS_REGEX.exec(this.address.toLowerCase());\n if (result) {\n this.username = result[1];\n this.domain = result[2];\n }\n }\n\n getWebLN() {\n return this.webln || globalThis.webln;\n }\n\n async fetch() {\n if (this.options.proxy) {\n return this.fetchWithProxy();\n } else {\n return this.fetchWithoutProxy();\n }\n }\n\n async fetchWithProxy() {\n const response = await fetch(\n `${this.options.proxy}/lightning-address-details?${new URLSearchParams({\n ln: this.address,\n }).toString()}`,\n );\n if (!response.ok) {\n throw new Error(\n `Failed to fetch lnurl info: ${response.status} ${response.statusText}`,\n );\n }\n\n const json = await response.json();\n\n await this.parseLnUrlPayResponse(json.lnurlp);\n this.parseKeysendResponse(json.keysend);\n this.parseNostrResponse(json.nostr);\n }\n\n async fetchWithoutProxy() {\n if (!this.domain || !this.username) {\n return;\n }\n\n await Promise.all([\n this.fetchLnurlData(),\n this.fetchKeysendData(),\n this.fetchNostrData(),\n ]);\n }\n\n async fetchLnurlData() {\n const lnurlResult = await fetch(this.lnurlpUrl());\n if (lnurlResult.ok) {\n const lnurlData = await lnurlResult.json();\n await this.parseLnUrlPayResponse(lnurlData);\n }\n }\n\n async fetchKeysendData() {\n const keysendResult = await fetch(this.keysendUrl());\n if (keysendResult.ok) {\n const keysendData = await keysendResult.json();\n this.parseKeysendResponse(keysendData);\n }\n }\n\n async fetchNostrData() {\n const nostrResult = await fetch(this.nostrUrl());\n if (nostrResult.ok) {\n const nostrData = await nostrResult.json();\n this.parseNostrResponse(nostrData);\n }\n }\n\n lnurlpUrl() {\n return `https://${this.domain}/.well-known/lnurlp/${this.username}`;\n }\n\n keysendUrl() {\n return `https://${this.domain}/.well-known/keysend/${this.username}`;\n }\n\n nostrUrl() {\n return `https://${this.domain}/.well-known/nostr.json?name=${this.username}`;\n }\n\n async generateInvoice(params: Record<string, string>): Promise<Invoice> {\n let data;\n if (this.options.proxy) {\n const invoiceResponse = await fetch(\n `${this.options.proxy}/generate-invoice?${new URLSearchParams({\n ln: this.address,\n ...params,\n }).toString()}`,\n );\n if (!invoiceResponse.ok) {\n throw new Error(\n `Failed to generate invoice: ${invoiceResponse.status} ${invoiceResponse.statusText}`,\n );\n }\n const json = await invoiceResponse.json();\n data = json.invoice;\n } else {\n if (!this.lnurlpData) {\n throw new Error(\"No lnurlpData available. Please call fetch() first.\");\n }\n if (!this.lnurlpData.callback || !isUrl(this.lnurlpData.callback))\n throw new Error(\"Valid callback does not exist in lnurlpData\");\n const callbackUrl = new URL(this.lnurlpData.callback);\n callbackUrl.search = new URLSearchParams(params).toString();\n const invoiceResponse = await fetch(callbackUrl.toString());\n if (!invoiceResponse.ok) {\n throw new Error(\n `Failed to generate invoice: ${invoiceResponse.status} ${invoiceResponse.statusText}`,\n );\n }\n data = await invoiceResponse.json();\n }\n\n const paymentRequest = data && data.pr && data.pr.toString();\n if (!paymentRequest) throw new Error(\"Invalid pay service invoice\");\n\n const invoiceArgs: InvoiceArgs = { pr: paymentRequest };\n if (data && data.verify) invoiceArgs.verify = data.verify.toString();\n if (data && data.successAction && typeof data.successAction === \"object\") {\n const { tag, message, description, url } = data.successAction;\n if (tag === \"message\") {\n invoiceArgs.successAction = { tag, message };\n } else if (tag === \"url\") {\n invoiceArgs.successAction = { tag, description, url };\n }\n }\n\n return new Invoice(invoiceArgs);\n }\n\n async requestInvoice(args: RequestInvoiceArgs): Promise<Invoice> {\n if (!this.lnurlpData) {\n throw new Error(\"No lnurlpData available. Please call fetch() first.\");\n }\n const msat = args.satoshi * 1000;\n const { commentAllowed, min, max } = this.lnurlpData;\n\n if (!isValidAmount({ amount: msat, min, max }))\n throw new Error(\"Invalid amount\");\n if (\n args.comment &&\n commentAllowed &&\n commentAllowed > 0 &&\n args.comment.length > commentAllowed\n )\n throw new Error(\n `The comment length must be ${commentAllowed} characters or fewer`,\n );\n\n const invoiceParams: {\n amount: string;\n comment?: string;\n payerdata?: string;\n } = { amount: msat.toString() };\n if (args.comment) invoiceParams.comment = args.comment;\n if (args.payerdata)\n invoiceParams.payerdata = JSON.stringify(args.payerdata);\n\n return this.generateInvoice(invoiceParams);\n }\n\n async boost(boost: Boost, amount: number = 0) {\n if (!this.keysendData) {\n throw new Error(\"No keysendData available. Please call fetch() first.\");\n }\n const { destination, customKey, customValue } = this.keysendData;\n const webln = this.getWebLN();\n if (!webln) {\n throw new Error(\"WebLN not available\");\n }\n return sendBoostagram(\n {\n destination,\n customKey,\n customValue,\n amount,\n boost,\n },\n { webln },\n );\n }\n\n async zapInvoice(\n { satoshi, comment, relays, e }: ZapArgs,\n options: ZapOptions = {},\n ): Promise<Invoice> {\n if (!this.lnurlpData) {\n throw new Error(\"No lnurlpData available. Please call fetch() first.\");\n }\n if (!this.nostrPubkey) {\n throw new Error(\"Nostr Pubkey is missing\");\n }\n const p = this.nostrPubkey;\n const msat = satoshi * 1000;\n const { allowsNostr, min, max } = this.lnurlpData;\n\n if (!isValidAmount({ amount: msat, min, max }))\n throw new Error(\"Invalid amount\");\n if (!allowsNostr) throw new Error(\"Your provider does not support zaps\");\n\n const event = await generateZapEvent(\n {\n satoshi: msat,\n comment,\n p,\n e,\n relays,\n },\n options,\n );\n const zapParams: { amount: string; nostr: string } = {\n amount: msat.toString(),\n nostr: JSON.stringify(event),\n };\n\n const invoice = await this.generateInvoice(zapParams);\n return invoice;\n }\n\n async zap(\n args: ZapArgs,\n options: ZapOptions = {},\n ): Promise<SendPaymentResponse> {\n const invoice = this.zapInvoice(args, options);\n const webln = this.getWebLN();\n if (!webln) {\n throw new Error(\"WebLN not available\");\n }\n await webln.enable();\n const response = webln.sendPayment((await invoice).paymentRequest);\n return response;\n }\n\n private async parseLnUrlPayResponse(lnurlpData: LnUrlRawData | undefined) {\n if (lnurlpData) {\n this.lnurlpData = await parseLnUrlPayResponse(lnurlpData);\n }\n }\n\n private parseKeysendResponse(keysendData: KeySendRawData | undefined) {\n if (keysendData) {\n this.keysendData = parseKeysendResponse(keysendData);\n }\n }\n\n private parseNostrResponse(nostrData: NostrResponse | undefined) {\n if (nostrData) {\n [this.nostrData, this.nostrPubkey, this.nostrRelays] = parseNostrResponse(\n nostrData,\n this.username,\n );\n }\n }\n}\n","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","const numSatsInBtc = 100_000_000;\n\nexport interface FiatCurrency {\n code: string;\n name: string;\n symbol: string;\n priority: number;\n}\n\nexport const getFiatCurrencies = async (): Promise<FiatCurrency[]> => {\n const url = \"https://getalby.com/api/rates\";\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch currencies: ${response.status} ${response.statusText}`,\n );\n }\n\n const data = await response.json();\n const mappedCurrencies: FiatCurrency[] = Object.entries(data)\n .filter(([code]) => code.toUpperCase() !== \"BTC\")\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(([code, details]: any) => ({\n code: code.toUpperCase(),\n name: details.name,\n priority: details.priority,\n symbol: details.symbol,\n }))\n .sort((a, b) => a.name.localeCompare(b.name))\n .sort((a, b) => a.priority - b.priority) as FiatCurrency[];\n\n return mappedCurrencies;\n};\n\nexport const getFiatBtcRate = async (currency: string): Promise<number> => {\n const url =\n \"https://getalby.com/api/rates/\" + currency.toLowerCase() + \".json\";\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch rate: ${response.status} ${response.statusText}`,\n );\n }\n\n const data = await response.json();\n\n return data.rate_float / numSatsInBtc;\n};\n\nexport const getFiatValue = async ({\n satoshi,\n currency,\n}: {\n satoshi: number | string;\n currency: string;\n}) => {\n const rate = await getFiatBtcRate(currency);\n\n return Number(satoshi) * rate;\n};\n\nexport const getSatoshiValue = async ({\n amount,\n currency,\n}: {\n amount: number | string;\n currency: string;\n}) => {\n const rate = await getFiatBtcRate(currency);\n\n return Math.floor(Number(amount) / rate);\n};\n\nexport const getFormattedFiatValue = async ({\n satoshi,\n currency,\n locale,\n}: {\n satoshi: number | string;\n currency: string;\n locale: string;\n}) => {\n if (!locale) {\n locale = \"en\";\n }\n const fiatValue = await getFiatValue({ satoshi, currency });\n return fiatValue.toLocaleString(locale, {\n style: \"currency\",\n currency,\n });\n};\n"],"names":["require$$0","decode"],"mappings":"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","x_google_ignoreList":[0,1,3,4,5,6]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../node_modules/@scure/base/lib/index.js","../../node_modules/light-bolt11-decoder/bolt11.js","../../src/bolt11/utils.ts","../../node_modules/@noble/hashes/esm/_assert.js","../../node_modules/@noble/hashes/esm/utils.js","../../node_modules/@noble/hashes/esm/_sha2.js","../../node_modules/@noble/hashes/esm/sha256.js","../../src/bolt11/Invoice.ts","../../src/lnurl/utils.ts","../../src/podcasting2/boostagrams.ts","../../src/lnurl/LightningAddress.ts","../../src/402/utils.ts","../../src/402/l402/utils.ts","../../src/402/l402/l402.ts","../../src/402/x402/utils.ts","../../src/402/x402/x402.ts","../../src/402/mpp/utils.ts","../../src/402/mpp/mpp.ts","../../src/402/fetch402.ts","../../src/fiat/fiat.ts"],"sourcesContent":["\"use strict\";\n/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bytes = exports.stringToBytes = exports.str = exports.bytesToString = exports.hex = exports.utf8 = exports.bech32m = exports.bech32 = exports.base58check = exports.base58xmr = exports.base58xrp = exports.base58flickr = exports.base58 = exports.base64url = exports.base64 = exports.base32crockford = exports.base32hex = exports.base32 = exports.base16 = exports.utils = exports.assertNumber = void 0;\nfunction assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nexports.assertNumber = assertNumber;\nfunction chain(...args) {\n const wrap = (a, b) => (c) => a(b(c));\n const encode = Array.from(args)\n .reverse()\n .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n return { encode, decode };\n}\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n digits[i] = Math.floor(digitBase / to);\n if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!digits[i])\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1;\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of strings');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of strings');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\nexports.utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexports.base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexports.base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexports.base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexports.base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexports.base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexports.base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexports.base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexports.base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexports.base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexports.base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += exports.base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = exports.base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nconst base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), exports.base58);\nexports.base58check = base58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n prefix = prefix.toLowerCase();\n return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexports.bech32 = genBech32('bech32');\nexports.bech32m = genBech32('bech32m');\nexports.utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexports.hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\nconst CODERS = {\n utf8: exports.utf8, hex: exports.hex, base16: exports.base16, base32: exports.base32, base64: exports.base64, base64url: exports.base64url, base58: exports.base58, base58xmr: exports.base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nconst bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!(bytes instanceof Uint8Array))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexports.bytesToString = bytesToString;\nexports.str = exports.bytesToString;\nconst stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexports.stringToBytes = stringToBytes;\nexports.bytes = exports.stringToBytes;\n","const {bech32, hex, utf8} = require('@scure/base')\n\n// defaults for encode; default timestamp is current time at call\nconst DEFAULTNETWORK = {\n // default network is bitcoin\n bech32: 'bc',\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n validWitnessVersions: [0]\n}\nconst TESTNETWORK = {\n bech32: 'tb',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst SIGNETNETWORK = {\n bech32: 'tbs',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst REGTESTNETWORK = {\n bech32: 'bcrt',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst SIMNETWORK = {\n bech32: 'sb',\n pubKeyHash: 0x3f,\n scriptHash: 0x7b,\n validWitnessVersions: [0]\n}\n\nconst FEATUREBIT_ORDER = [\n 'option_data_loss_protect',\n 'initial_routing_sync',\n 'option_upfront_shutdown_script',\n 'gossip_queries',\n 'var_onion_optin',\n 'gossip_queries_ex',\n 'option_static_remotekey',\n 'payment_secret',\n 'basic_mpp',\n 'option_support_large_channel'\n]\n\nconst DIVISORS = {\n m: BigInt(1e3),\n u: BigInt(1e6),\n n: BigInt(1e9),\n p: BigInt(1e12)\n}\n\nconst MAX_MILLISATS = BigInt('2100000000000000000')\n\nconst MILLISATS_PER_BTC = BigInt(1e11)\n\nconst TAGCODES = {\n payment_hash: 1,\n payment_secret: 16,\n description: 13,\n payee: 19,\n description_hash: 23, // commit to longer descriptions (used by lnurl-pay)\n expiry: 6, // default: 3600 (1 hour)\n min_final_cltv_expiry: 24, // default: 9\n fallback_address: 9,\n route_hint: 3, // for extra routing info (private etc.)\n feature_bits: 5,\n metadata: 27\n}\n\n// reverse the keys and values of TAGCODES and insert into TAGNAMES\nconst TAGNAMES = {}\nfor (let i = 0, keys = Object.keys(TAGCODES); i < keys.length; i++) {\n const currentName = keys[i]\n const currentCode = TAGCODES[keys[i]].toString()\n TAGNAMES[currentCode] = currentName\n}\n\nconst TAGPARSERS = {\n 1: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 16: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 13: words => utf8.encode(bech32.fromWordsUnsafe(words)), // string variable length\n 19: words => hex.encode(bech32.fromWordsUnsafe(words)), // 264 bits\n 23: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 27: words => hex.encode(bech32.fromWordsUnsafe(words)), // variable\n 6: wordsToIntBE, // default: 3600 (1 hour)\n 24: wordsToIntBE, // default: 9\n 3: routingInfoParser, // for extra routing info (private etc.)\n 5: featureBitsParser // keep feature bits as array of 5 bit words\n}\n\nfunction getUnknownParser(tagCode) {\n return words => ({\n tagCode: parseInt(tagCode),\n words: bech32.encode('unknown', words, Number.MAX_SAFE_INTEGER)\n })\n}\n\nfunction wordsToIntBE(words) {\n return words.reverse().reduce((total, item, index) => {\n return total + item * Math.pow(32, index)\n }, 0)\n}\n\n// first convert from words to buffer, trimming padding where necessary\n// parse in 51 byte chunks. See encoder for details.\nfunction routingInfoParser(words) {\n const routes = []\n let pubkey,\n shortChannelId,\n feeBaseMSats,\n feeProportionalMillionths,\n cltvExpiryDelta\n let routesBuffer = bech32.fromWordsUnsafe(words)\n while (routesBuffer.length > 0) {\n pubkey = hex.encode(routesBuffer.slice(0, 33)) // 33 bytes\n shortChannelId = hex.encode(routesBuffer.slice(33, 41)) // 8 bytes\n feeBaseMSats = parseInt(hex.encode(routesBuffer.slice(41, 45)), 16) // 4 bytes\n feeProportionalMillionths = parseInt(\n hex.encode(routesBuffer.slice(45, 49)),\n 16\n ) // 4 bytes\n cltvExpiryDelta = parseInt(hex.encode(routesBuffer.slice(49, 51)), 16) // 2 bytes\n\n routesBuffer = routesBuffer.slice(51)\n\n routes.push({\n pubkey,\n short_channel_id: shortChannelId,\n fee_base_msat: feeBaseMSats,\n fee_proportional_millionths: feeProportionalMillionths,\n cltv_expiry_delta: cltvExpiryDelta\n })\n }\n return routes\n}\n\nfunction featureBitsParser(words) {\n const bools = words\n .slice()\n .reverse()\n .map(word => [\n !!(word & 0b1),\n !!(word & 0b10),\n !!(word & 0b100),\n !!(word & 0b1000),\n !!(word & 0b10000)\n ])\n .reduce((finalArr, itemArr) => finalArr.concat(itemArr), [])\n while (bools.length < FEATUREBIT_ORDER.length * 2) {\n bools.push(false)\n }\n\n const featureBits = {}\n\n FEATUREBIT_ORDER.forEach((featureName, index) => {\n let status\n if (bools[index * 2]) {\n status = 'required'\n } else if (bools[index * 2 + 1]) {\n status = 'supported'\n } else {\n status = 'unsupported'\n }\n featureBits[featureName] = status\n })\n\n const extraBits = bools.slice(FEATUREBIT_ORDER.length * 2)\n featureBits.extra_bits = {\n start_bit: FEATUREBIT_ORDER.length * 2,\n bits: extraBits,\n has_required: extraBits.reduce(\n (result, bit, index) =>\n index % 2 !== 0 ? result || false : result || bit,\n false\n )\n }\n\n return featureBits\n}\n\nfunction hrpToMillisat(hrpString, outputString) {\n let divisor, value\n if (hrpString.slice(-1).match(/^[munp]$/)) {\n divisor = hrpString.slice(-1)\n value = hrpString.slice(0, -1)\n } else if (hrpString.slice(-1).match(/^[^munp0-9]$/)) {\n throw new Error('Not a valid multiplier for the amount')\n } else {\n value = hrpString\n }\n\n if (!value.match(/^\\d+$/))\n throw new Error('Not a valid human readable amount')\n\n const valueBN = BigInt(value)\n\n const millisatoshisBN = divisor\n ? (valueBN * MILLISATS_PER_BTC) / DIVISORS[divisor]\n : valueBN * MILLISATS_PER_BTC\n\n if (\n (divisor === 'p' && !(valueBN % BigInt(10) === BigInt(0))) ||\n millisatoshisBN > MAX_MILLISATS\n ) {\n throw new Error('Amount is outside of valid range')\n }\n\n return outputString ? millisatoshisBN.toString() : millisatoshisBN\n}\n\n// decode will only have extra comments that aren't covered in encode comments.\n// also if anything is hard to read I'll comment.\nfunction decode(paymentRequest, network) {\n if (typeof paymentRequest !== 'string')\n throw new Error('Lightning Payment Request must be string')\n if (paymentRequest.slice(0, 2).toLowerCase() !== 'ln')\n throw new Error('Not a proper lightning payment request')\n\n const sections = []\n const decoded = bech32.decode(paymentRequest, Number.MAX_SAFE_INTEGER)\n paymentRequest = paymentRequest.toLowerCase()\n const prefix = decoded.prefix\n let words = decoded.words\n let letters = paymentRequest.slice(prefix.length + 1)\n let sigWords = words.slice(-104)\n words = words.slice(0, -104)\n\n // Without reverse lookups, can't say that the multipier at the end must\n // have a number before it, so instead we parse, and if the second group\n // doesn't have anything, there's a good chance the last letter of the\n // coin type got captured by the third group, so just re-regex without\n // the number.\n let prefixMatches = prefix.match(/^ln(\\S+?)(\\d*)([a-zA-Z]?)$/)\n if (prefixMatches && !prefixMatches[2])\n prefixMatches = prefix.match(/^ln(\\S+)$/)\n if (!prefixMatches) {\n throw new Error('Not a proper lightning payment request')\n }\n\n // \"ln\" section\n sections.push({\n name: 'lightning_network',\n letters: 'ln'\n })\n\n // \"bc\" section\n const bech32Prefix = prefixMatches[1]\n let coinNetwork\n if (!network) {\n switch (bech32Prefix) {\n case DEFAULTNETWORK.bech32:\n coinNetwork = DEFAULTNETWORK\n break\n case TESTNETWORK.bech32:\n coinNetwork = TESTNETWORK\n break\n case SIGNETNETWORK.bech32:\n coinNetwork = SIGNETNETWORK\n break\n case REGTESTNETWORK.bech32:\n coinNetwork = REGTESTNETWORK\n break\n case SIMNETWORK.bech32:\n coinNetwork = SIMNETWORK\n break\n }\n } else {\n if (\n network.bech32 === undefined ||\n network.pubKeyHash === undefined ||\n network.scriptHash === undefined ||\n !Array.isArray(network.validWitnessVersions)\n )\n throw new Error('Invalid network')\n coinNetwork = network\n }\n if (!coinNetwork || coinNetwork.bech32 !== bech32Prefix) {\n throw new Error('Unknown coin bech32 prefix')\n }\n sections.push({\n name: 'coin_network',\n letters: bech32Prefix,\n value: coinNetwork\n })\n\n // amount section\n const value = prefixMatches[2]\n let millisatoshis\n if (value) {\n const divisor = prefixMatches[3]\n millisatoshis = hrpToMillisat(value + divisor, true)\n sections.push({\n name: 'amount',\n letters: prefixMatches[2] + prefixMatches[3],\n value: millisatoshis\n })\n } else {\n millisatoshis = null\n }\n\n // \"1\" separator\n sections.push({\n name: 'separator',\n letters: '1'\n })\n\n // timestamp\n const timestamp = wordsToIntBE(words.slice(0, 7))\n words = words.slice(7) // trim off the left 7 words\n sections.push({\n name: 'timestamp',\n letters: letters.slice(0, 7),\n value: timestamp\n })\n letters = letters.slice(7)\n\n let tagName, parser, tagLength, tagWords\n // we have no tag count to go on, so just keep hacking off words\n // until we have none.\n while (words.length > 0) {\n const tagCode = words[0].toString()\n tagName = TAGNAMES[tagCode] || 'unknown_tag'\n parser = TAGPARSERS[tagCode] || getUnknownParser(tagCode)\n words = words.slice(1)\n\n tagLength = wordsToIntBE(words.slice(0, 2))\n words = words.slice(2)\n\n tagWords = words.slice(0, tagLength)\n words = words.slice(tagLength)\n\n sections.push({\n name: tagName,\n tag: letters[0],\n letters: letters.slice(0, 1 + 2 + tagLength),\n value: parser(tagWords) // see: parsers for more comments\n })\n letters = letters.slice(1 + 2 + tagLength)\n }\n\n // signature\n sections.push({\n name: 'signature',\n letters: letters.slice(0, 104),\n value: hex.encode(bech32.fromWordsUnsafe(sigWords))\n })\n letters = letters.slice(104)\n\n // checksum\n sections.push({\n name: 'checksum',\n letters: letters\n })\n\n let result = {\n paymentRequest,\n sections,\n\n get expiry() {\n let exp = sections.find(s => s.name === 'expiry')\n if (exp) return getValue('timestamp') + exp.value\n },\n\n get route_hints() {\n return sections.filter(s => s.name === 'route_hint').map(s => s.value)\n }\n }\n\n for (let name in TAGCODES) {\n if (name === 'route_hint') {\n // route hints can be multiple, so this won't work for them\n continue\n }\n\n Object.defineProperty(result, name, {\n get() {\n return getValue(name)\n }\n })\n }\n\n return result\n\n function getValue(name) {\n let section = sections.find(s => s.name === name)\n return section ? section.value : undefined\n }\n}\n\nmodule.exports = {\n decode,\n hrpToMillisat\n}\n","import { decode } from \"light-bolt11-decoder\";\n\n// from https://stackoverflow.com/a/50868276\nexport const fromHexString = (hexString: string) =>\n Uint8Array.from(\n hexString.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16)),\n );\n\ntype DecodedInvoice = {\n paymentHash: string;\n satoshi: number;\n millisatoshi: number;\n amountRaw: string;\n timestamp: number;\n expiry: number | undefined;\n description: string | undefined;\n};\n\nexport const decodeInvoice = (\n paymentRequest: string,\n): DecodedInvoice | null => {\n if (!paymentRequest) return null;\n\n try {\n const decoded = decode(paymentRequest);\n if (!decoded || !decoded.sections) return null;\n\n const hashTag = decoded.sections.find(\n (value) => value.name === \"payment_hash\",\n );\n\n if (hashTag?.name !== \"payment_hash\" || !hashTag.value) return null;\n\n const paymentHash = hashTag.value;\n\n let satoshi = 0;\n let millisatoshi = 0;\n let amountRaw = \"0\";\n\n const amountTag = decoded.sections.find((value) => value.name === \"amount\");\n\n if (amountTag?.name === \"amount\" && amountTag.value) {\n amountRaw = amountTag.value;\n millisatoshi = parseInt(amountTag.value);\n satoshi = parseInt(amountTag.value) / 1000; // millisats\n }\n\n const timestampTag = decoded.sections.find(\n (value) => value.name === \"timestamp\",\n );\n\n if (timestampTag?.name !== \"timestamp\" || !timestampTag.value) return null;\n\n const timestamp = timestampTag.value;\n\n let expiry: number | undefined;\n const expiryTag = decoded.sections.find((value) => value.name === \"expiry\");\n\n if (expiryTag?.name === \"expiry\") {\n expiry = expiryTag.value;\n }\n\n const descriptionTag = decoded.sections.find(\n (value) => value.name === \"description\",\n );\n\n const description =\n descriptionTag?.name === \"description\"\n ? descriptionTag?.value\n : undefined;\n\n return {\n paymentHash,\n satoshi,\n millisatoshi,\n amountRaw,\n timestamp,\n expiry,\n description,\n };\n } catch {\n return null;\n }\n};\n","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","import { InvoiceArgs, SuccessAction } from \"./types\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\nimport { decodeInvoice, fromHexString } from \"./utils\";\n\nexport class Invoice {\n paymentRequest: string;\n paymentHash: string;\n preimage: string | null;\n verify: string | null;\n satoshi: number;\n millisatoshi: number;\n amountRaw: string;\n expiry: number | undefined; // expiry in seconds (not a timestamp)\n timestamp: number; // created date in seconds\n createdDate: Date;\n expiryDate: Date | undefined;\n description: string | null;\n successAction: SuccessAction | null;\n\n constructor(args: InvoiceArgs) {\n this.paymentRequest = args.pr;\n if (!this.paymentRequest) {\n throw new Error(\"Invalid payment request\");\n }\n const decodedInvoice = decodeInvoice(this.paymentRequest);\n if (!decodedInvoice) {\n throw new Error(\"Failed to decode payment request\");\n }\n this.paymentHash = decodedInvoice.paymentHash;\n this.satoshi = decodedInvoice.satoshi;\n this.millisatoshi = decodedInvoice.millisatoshi;\n this.amountRaw = decodedInvoice.amountRaw;\n this.timestamp = decodedInvoice.timestamp;\n this.expiry = decodedInvoice.expiry;\n this.createdDate = new Date(this.timestamp * 1000);\n this.expiryDate = this.expiry\n ? new Date((this.timestamp + this.expiry) * 1000)\n : undefined;\n this.description = decodedInvoice.description ?? null;\n this.verify = args.verify ?? null;\n this.preimage = args.preimage ?? null;\n this.successAction = args.successAction ?? null;\n }\n\n async isPaid(): Promise<boolean> {\n if (this.preimage) return this.validatePreimage(this.preimage);\n else if (this.verify) {\n return await this.verifyPayment();\n } else {\n throw new Error(\"Could not verify payment\");\n }\n }\n\n validatePreimage(preimage: string): boolean {\n if (!preimage || !this.paymentHash) return false;\n\n try {\n const preimageHash = bytesToHex(sha256(fromHexString(preimage)));\n return this.paymentHash === preimageHash;\n } catch {\n return false;\n }\n }\n\n async verifyPayment(): Promise<boolean> {\n try {\n if (!this.verify) {\n throw new Error(\"LNURL verify not available\");\n }\n const response = await fetch(this.verify);\n if (!response.ok) {\n throw new Error(\n `Verification request failed: ${response.status} ${response.statusText}`,\n );\n }\n const json = await response.json();\n if (json.preimage) {\n this.preimage = json.preimage;\n }\n\n return json.settled;\n } catch (error) {\n console.error(\"Failed to check LNURL-verify\", error);\n return false;\n }\n }\n\n hasExpired() {\n const { expiryDate } = this;\n if (expiryDate) {\n return expiryDate.getTime() < Date.now();\n }\n return false;\n }\n}\n","import {\n KeySendRawData,\n KeysendResponse,\n Event,\n NostrResponse,\n ZapArgs,\n ZapOptions,\n LUD18ServicePayerData,\n LnUrlPayResponse,\n LnUrlRawData,\n} from \"./types\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\n\nconst TAG_KEYSEND = \"keysend\";\n\nexport const parseKeysendResponse = (data: KeySendRawData): KeysendResponse => {\n if (data.tag !== TAG_KEYSEND) throw new Error(\"Invalid keysend params\");\n if (data.status !== \"OK\") throw new Error(\"Keysend status not OK\");\n if (!data.pubkey) throw new Error(\"Pubkey does not exist\");\n\n const destination = data.pubkey;\n let customKey, customValue;\n\n if (data.customData && data.customData[0]) {\n customKey = data.customData[0].customKey;\n customValue = data.customData[0].customValue;\n }\n\n return {\n destination,\n customKey,\n customValue,\n };\n};\n\nexport async function generateZapEvent(\n { satoshi, comment, p, e, relays }: ZapArgs,\n options: ZapOptions = {},\n): Promise<Event> {\n const nostr = options.nostr || globalThis.nostr;\n if (!nostr) {\n throw new Error(\"nostr option or window.nostr is not available\");\n }\n\n const nostrTags = [\n [\"relays\", ...relays],\n [\"amount\", satoshi.toString()],\n ];\n if (p) {\n nostrTags.push([\"p\", p]);\n }\n if (e) {\n nostrTags.push([\"e\", e]);\n }\n\n const pubkey = await nostr.getPublicKey();\n\n const nostrEvent: Event = {\n pubkey,\n created_at: Math.floor(Date.now() / 1000),\n kind: 9734,\n tags: nostrTags,\n content: comment ?? \"\",\n };\n\n nostrEvent.id = getEventHash(nostrEvent);\n return await nostr.signEvent(nostrEvent);\n}\n\nexport function validateEvent(event: Event): boolean {\n if (typeof event.content !== \"string\") return false;\n if (typeof event.created_at !== \"number\") return false;\n // ignore these checks because if the pubkey is not set we add it to the event. same for the ID.\n // if (typeof event.pubkey !== \"string\") return false;\n // if (!event.pubkey.match(/^[a-f0-9]{64}$/)) return false;\n\n if (!Array.isArray(event.tags)) return false;\n for (let i = 0; i < event.tags.length; i++) {\n const tag = event.tags[i];\n if (!Array.isArray(tag)) return false;\n for (let j = 0; j < tag.length; j++) {\n if (typeof tag[j] === \"object\") return false;\n }\n }\n\n return true;\n}\n\nexport function serializeEvent(evt: Event): string {\n if (!validateEvent(evt))\n throw new Error(\"can't serialize event with wrong or missing properties\");\n\n return JSON.stringify([\n 0,\n evt.pubkey,\n evt.created_at,\n evt.kind,\n evt.tags,\n evt.content,\n ]);\n}\n\nexport function getEventHash(event: Event): string {\n return bytesToHex(sha256(serializeEvent(event)));\n}\n\nexport function parseNostrResponse(\n nostrData: NostrResponse,\n username: string | undefined,\n) {\n let nostrPubkey: string | undefined;\n let nostrRelays: string[] | undefined;\n if (username && nostrData) {\n nostrPubkey = nostrData.names?.[username];\n nostrRelays = nostrPubkey ? nostrData.relays?.[nostrPubkey] : undefined;\n }\n\n return [nostrData, nostrPubkey, nostrRelays] as const;\n}\n\nconst URL_REGEX =\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[+~%/.\\w-_]*)?\\??(?:[-+=&;%@.\\w_]*)#?(?:[\\w]*))?)/;\n\nexport const isUrl = (url: string | null): url is string => {\n if (!url) return false;\n return URL_REGEX.test(url);\n};\n\nexport const isValidAmount = ({\n amount,\n min,\n max,\n}: {\n amount: number;\n min: number;\n max: number;\n}): boolean => {\n return amount > 0 && amount >= min && amount <= max;\n};\n\nconst TAG_PAY_REQUEST = \"payRequest\";\n\n// From: https://github.com/dolcalmi/lnurl-pay/blob/main/src/request-pay-service-params.ts\nexport const parseLnUrlPayResponse = async (\n data: LnUrlRawData,\n): Promise<LnUrlPayResponse> => {\n if (data.tag !== TAG_PAY_REQUEST)\n throw new Error(\"Invalid pay service params\");\n\n const callback = (data.callback + \"\").trim();\n if (!isUrl(callback)) throw new Error(\"Callback must be a valid url\");\n\n const min = Math.ceil(Number(data.minSendable || 0));\n const max = Math.floor(Number(data.maxSendable));\n if (!(min && max) || min > max) throw new Error(\"Invalid pay service params\");\n\n let metadata: Array<Array<string>>;\n let metadataHash: string;\n try {\n metadata = JSON.parse(data.metadata + \"\");\n metadataHash = bytesToHex(sha256(data.metadata + \"\"));\n } catch {\n metadata = [];\n metadataHash = bytesToHex(sha256(\"[]\"));\n }\n\n let email = \"\";\n let image = \"\";\n let description = \"\";\n let identifier = \"\";\n for (let i = 0; i < metadata.length; i++) {\n const [k, v] = metadata[i];\n switch (k) {\n case \"text/plain\":\n description = v;\n break;\n case \"text/identifier\":\n identifier = v;\n break;\n case \"text/email\":\n email = v;\n break;\n case \"image/png;base64\":\n case \"image/jpeg;base64\":\n image = \"data:\" + k + \",\" + v;\n break;\n }\n }\n const payerData = data.payerData as LUD18ServicePayerData | undefined;\n\n let domain: string | undefined;\n try {\n domain = new URL(callback).hostname;\n } catch {\n // fail silently and let domain remain undefined if callback is not a valid URL\n }\n\n return {\n callback,\n fixed: min === max,\n min,\n max,\n domain,\n metadata,\n metadataHash,\n identifier,\n email,\n description,\n image,\n payerData,\n commentAllowed: Number(data.commentAllowed) || 0,\n rawData: data,\n allowsNostr: data.allowsNostr || false,\n };\n};\n","import { WebLNProvider } from \"@webbtc/webln-types\";\nimport { BoostArguments, BoostOptions, WeblnBoostParams } from \"./types\";\n\nexport const sendBoostagram = async (\n args: BoostArguments,\n options?: BoostOptions,\n) => {\n const { boost } = args;\n if (!options) {\n options = {};\n }\n const webln: WebLNProvider = options.webln || globalThis.webln;\n\n if (!webln) {\n throw new Error(\"WebLN not available\");\n }\n if (!webln.keysend) {\n throw new Error(\"Keysend not available in current WebLN provider\");\n }\n\n const amount = args.amount || Math.floor(boost.value_msat / 1000);\n\n const weblnParams: WeblnBoostParams = {\n destination: args.destination,\n amount: amount,\n customRecords: {\n \"7629169\": JSON.stringify(boost),\n },\n };\n if (args.customKey && args.customValue) {\n weblnParams.customRecords[args.customKey] = args.customValue;\n }\n await webln.enable();\n const response = await webln.keysend(weblnParams);\n return response;\n};\n","import { SendPaymentResponse, WebLNProvider } from \"@webbtc/webln-types\";\nimport { Invoice, InvoiceArgs } from \"../bolt11\";\nimport { Boost, sendBoostagram } from \"../podcasting2\";\nimport {\n KeysendResponse,\n LnUrlPayResponse,\n LnUrlRawData,\n NostrResponse,\n RequestInvoiceArgs,\n ZapArgs,\n ZapOptions,\n KeySendRawData,\n} from \"./types\";\nimport {\n generateZapEvent,\n parseKeysendResponse,\n parseNostrResponse,\n isUrl,\n isValidAmount,\n parseLnUrlPayResponse,\n} from \"./utils\";\n\nexport const LN_ADDRESS_REGEX =\n /^((?:[^<>()[\\]\\\\.,;:\\s@\"]+(?:\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(?:\".+\"))@((?:\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(?:(?:[a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nexport const DEFAULT_PROXY = \"https://api.getalby.com/lnurl\";\n\ntype LightningAddressOptions = {\n proxy?: string | false;\n webln?: WebLNProvider;\n};\n\nexport class LightningAddress {\n address: string;\n options: LightningAddressOptions;\n username: string | undefined;\n domain: string | undefined;\n pubkey: string | undefined;\n lnurlpData: LnUrlPayResponse | undefined;\n keysendData: KeysendResponse | undefined;\n nostrData: NostrResponse | undefined;\n nostrPubkey: string | undefined;\n nostrRelays: string[] | undefined;\n webln: WebLNProvider | undefined;\n\n constructor(address: string, options?: LightningAddressOptions) {\n this.address = address;\n this.options = { proxy: DEFAULT_PROXY };\n this.options = Object.assign(this.options, options);\n this.parse();\n this.webln = this.options.webln;\n }\n\n parse() {\n const result = LN_ADDRESS_REGEX.exec(this.address.toLowerCase());\n if (result) {\n this.username = result[1];\n this.domain = result[2];\n }\n }\n\n getWebLN() {\n return this.webln || globalThis.webln;\n }\n\n async fetch() {\n if (this.options.proxy) {\n return this.fetchWithProxy();\n } else {\n return this.fetchWithoutProxy();\n }\n }\n\n async fetchWithProxy() {\n const response = await fetch(\n `${this.options.proxy}/lightning-address-details?${new URLSearchParams({\n ln: this.address,\n }).toString()}`,\n );\n if (!response.ok) {\n throw new Error(\n `Failed to fetch lnurl info: ${response.status} ${response.statusText}`,\n );\n }\n\n const json = await response.json();\n\n await this.parseLnUrlPayResponse(json.lnurlp);\n this.parseKeysendResponse(json.keysend);\n this.parseNostrResponse(json.nostr);\n }\n\n async fetchWithoutProxy() {\n if (!this.domain || !this.username) {\n return;\n }\n\n await Promise.all([\n this.fetchLnurlData(),\n this.fetchKeysendData(),\n this.fetchNostrData(),\n ]);\n }\n\n async fetchLnurlData() {\n const lnurlResult = await fetch(this.lnurlpUrl());\n if (lnurlResult.ok) {\n const lnurlData = await lnurlResult.json();\n await this.parseLnUrlPayResponse(lnurlData);\n }\n }\n\n async fetchKeysendData() {\n const keysendResult = await fetch(this.keysendUrl());\n if (keysendResult.ok) {\n const keysendData = await keysendResult.json();\n this.parseKeysendResponse(keysendData);\n }\n }\n\n async fetchNostrData() {\n const nostrResult = await fetch(this.nostrUrl());\n if (nostrResult.ok) {\n const nostrData = await nostrResult.json();\n this.parseNostrResponse(nostrData);\n }\n }\n\n lnurlpUrl() {\n return `https://${this.domain}/.well-known/lnurlp/${this.username}`;\n }\n\n keysendUrl() {\n return `https://${this.domain}/.well-known/keysend/${this.username}`;\n }\n\n nostrUrl() {\n return `https://${this.domain}/.well-known/nostr.json?name=${this.username}`;\n }\n\n async generateInvoice(params: Record<string, string>): Promise<Invoice> {\n let data;\n if (this.options.proxy) {\n const invoiceResponse = await fetch(\n `${this.options.proxy}/generate-invoice?${new URLSearchParams({\n ln: this.address,\n ...params,\n }).toString()}`,\n );\n if (!invoiceResponse.ok) {\n throw new Error(\n `Failed to generate invoice: ${invoiceResponse.status} ${invoiceResponse.statusText}`,\n );\n }\n const json = await invoiceResponse.json();\n data = json.invoice;\n } else {\n if (!this.lnurlpData) {\n throw new Error(\"No lnurlpData available. Please call fetch() first.\");\n }\n if (!this.lnurlpData.callback || !isUrl(this.lnurlpData.callback))\n throw new Error(\"Valid callback does not exist in lnurlpData\");\n const callbackUrl = new URL(this.lnurlpData.callback);\n callbackUrl.search = new URLSearchParams(params).toString();\n const invoiceResponse = await fetch(callbackUrl.toString());\n if (!invoiceResponse.ok) {\n throw new Error(\n `Failed to generate invoice: ${invoiceResponse.status} ${invoiceResponse.statusText}`,\n );\n }\n data = await invoiceResponse.json();\n }\n\n const paymentRequest = data && data.pr && data.pr.toString();\n if (!paymentRequest) throw new Error(\"Invalid pay service invoice\");\n\n const invoiceArgs: InvoiceArgs = { pr: paymentRequest };\n if (data && data.verify) invoiceArgs.verify = data.verify.toString();\n if (data && data.successAction && typeof data.successAction === \"object\") {\n const { tag, message, description, url } = data.successAction;\n if (tag === \"message\") {\n invoiceArgs.successAction = { tag, message };\n } else if (tag === \"url\") {\n invoiceArgs.successAction = { tag, description, url };\n }\n }\n\n return new Invoice(invoiceArgs);\n }\n\n async requestInvoice(args: RequestInvoiceArgs): Promise<Invoice> {\n if (!this.lnurlpData) {\n throw new Error(\"No lnurlpData available. Please call fetch() first.\");\n }\n const msat = args.satoshi * 1000;\n const { commentAllowed, min, max } = this.lnurlpData;\n\n if (!isValidAmount({ amount: msat, min, max }))\n throw new Error(\"Invalid amount\");\n if (\n args.comment &&\n commentAllowed &&\n commentAllowed > 0 &&\n args.comment.length > commentAllowed\n )\n throw new Error(\n `The comment length must be ${commentAllowed} characters or fewer`,\n );\n\n const invoiceParams: {\n amount: string;\n comment?: string;\n payerdata?: string;\n } = { amount: msat.toString() };\n if (args.comment) invoiceParams.comment = args.comment;\n if (args.payerdata)\n invoiceParams.payerdata = JSON.stringify(args.payerdata);\n\n return this.generateInvoice(invoiceParams);\n }\n\n async boost(boost: Boost, amount: number = 0) {\n if (!this.keysendData) {\n throw new Error(\"No keysendData available. Please call fetch() first.\");\n }\n const { destination, customKey, customValue } = this.keysendData;\n const webln = this.getWebLN();\n if (!webln) {\n throw new Error(\"WebLN not available\");\n }\n return sendBoostagram(\n {\n destination,\n customKey,\n customValue,\n amount,\n boost,\n },\n { webln },\n );\n }\n\n async zapInvoice(\n { satoshi, comment, relays, e }: ZapArgs,\n options: ZapOptions = {},\n ): Promise<Invoice> {\n if (!this.lnurlpData) {\n throw new Error(\"No lnurlpData available. Please call fetch() first.\");\n }\n if (!this.nostrPubkey) {\n throw new Error(\"Nostr Pubkey is missing\");\n }\n const p = this.nostrPubkey;\n const msat = satoshi * 1000;\n const { allowsNostr, min, max } = this.lnurlpData;\n\n if (!isValidAmount({ amount: msat, min, max }))\n throw new Error(\"Invalid amount\");\n if (!allowsNostr) throw new Error(\"Your provider does not support zaps\");\n\n const event = await generateZapEvent(\n {\n satoshi: msat,\n comment,\n p,\n e,\n relays,\n },\n options,\n );\n const zapParams: { amount: string; nostr: string } = {\n amount: msat.toString(),\n nostr: JSON.stringify(event),\n };\n\n const invoice = await this.generateInvoice(zapParams);\n return invoice;\n }\n\n async zap(\n args: ZapArgs,\n options: ZapOptions = {},\n ): Promise<SendPaymentResponse> {\n const invoice = this.zapInvoice(args, options);\n const webln = this.getWebLN();\n if (!webln) {\n throw new Error(\"WebLN not available\");\n }\n await webln.enable();\n const response = webln.sendPayment((await invoice).paymentRequest);\n return response;\n }\n\n private async parseLnUrlPayResponse(lnurlpData: LnUrlRawData | undefined) {\n if (lnurlpData) {\n this.lnurlpData = await parseLnUrlPayResponse(lnurlpData);\n }\n }\n\n private parseKeysendResponse(keysendData: KeySendRawData | undefined) {\n if (keysendData) {\n this.keysendData = parseKeysendResponse(keysendData);\n }\n }\n\n private parseNostrResponse(nostrData: NostrResponse | undefined) {\n if (nostrData) {\n [this.nostrData, this.nostrPubkey, this.nostrRelays] = parseNostrResponse(\n nostrData,\n this.username,\n );\n }\n }\n}\n","import { Invoice } from \"../bolt11/Invoice\";\n\nexport interface Wallet {\n payInvoice(args: { invoice: string }): Promise<{ preimage: string }>;\n}\n\nexport function createGuardedWallet(\n wallet: Wallet,\n maxAmountSats: number,\n): Wallet {\n return {\n payInvoice: async (args: { invoice: string }) => {\n const invoice = new Invoice({ pr: args.invoice });\n if (invoice.satoshi > maxAmountSats) {\n throw new Error(\n `Invoice amount (${invoice.satoshi} sats) exceeds maxAmount (${maxAmountSats} sats)`,\n );\n }\n return wallet.payInvoice(args);\n },\n };\n}\n","export 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 makeL402AuthenticateHeader = (args: {\n macaroon?: string;\n token?: string;\n invoice: string;\n}) => {\n if (args.macaroon) {\n return `L402 version=\"0\" macaroon=\"${args.macaroon}\", invoice=\"${args.invoice}\"`;\n } else {\n return `L402 version=\"0\" token=\"${args.token}\", invoice=\"${args.invoice}\"`;\n }\n};\n","import { Wallet } from \"../utils\";\nimport { parseL402 } from \"./utils\";\n\nexport const handleL402Payment = async (\n l402Header: string,\n url: string,\n fetchArgs: RequestInit,\n headers: Headers,\n wallet: Wallet,\n): Promise<Response> => {\n const details = parseL402(l402Header);\n const token = details.token || details.macaroon;\n const invoice = details.invoice;\n\n if (!token) {\n throw new Error(\"L402: missing token/macaroon in WWW-Authenticate header\");\n }\n if (!invoice) {\n throw new Error(\"L402: missing invoice in WWW-Authenticate header\");\n }\n\n const invResp = await wallet.payInvoice({ invoice });\n headers.set(\"Authorization\", `L402 ${token}:${invResp.preimage}`);\n return fetch(url, fetchArgs);\n};\n\nexport const fetchWithL402 = async (\n url: string,\n fetchArgs: RequestInit,\n options: {\n wallet: Wallet;\n },\n) => {\n const wallet = options.wallet;\n if (!wallet) {\n throw new Error(\"wallet is missing\");\n }\n if (!fetchArgs) {\n fetchArgs = {};\n }\n fetchArgs.cache = \"no-store\";\n fetchArgs.mode = \"cors\";\n const headers = new Headers(fetchArgs.headers ?? undefined);\n fetchArgs.headers = headers;\n\n const initResp = await fetch(url, fetchArgs);\n const header = initResp.headers.get(\"www-authenticate\");\n if (!header) {\n return initResp;\n }\n\n return handleL402Payment(header, url, fetchArgs, headers, wallet);\n};\n","export interface X402Requirements {\n scheme: string;\n network: string;\n extra: {\n invoice: string;\n paymentMethod?: string;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\nexport const buildX402PaymentSignature = (\n scheme: string,\n network: string,\n invoice: string,\n requirements: X402Requirements,\n): string => {\n const json = JSON.stringify({\n x402Version: 2,\n scheme,\n network,\n payload: { invoice },\n accepted: requirements,\n });\n // btoa only handles latin1; encode via UTF-8 to be safe\n return btoa(unescape(encodeURIComponent(json)));\n};\n","import { Wallet } from \"../utils\";\nimport { buildX402PaymentSignature, X402Requirements } from \"./utils\";\nimport { Invoice } from \"../../bolt11\";\n\nexport const handleX402Payment = async (\n x402Header: string,\n url: string,\n fetchArgs: RequestInit,\n headers: Headers,\n wallet: Wallet,\n): Promise<Response> => {\n let parsed: { accepts?: unknown[] };\n try {\n parsed = JSON.parse(decodeURIComponent(escape(atob(x402Header))));\n } catch (_) {\n throw new Error(\n \"x402: invalid PAYMENT-REQUIRED header (not valid base64-encoded JSON)\",\n );\n }\n\n if (!Array.isArray(parsed.accepts) || parsed.accepts.length === 0) {\n throw new Error(\n \"x402: PAYMENT-REQUIRED header contains no payment options\",\n );\n }\n\n const requirements = (parsed.accepts as X402Requirements[]).find((e) => {\n return e.extra?.paymentMethod === \"lightning\";\n });\n if (!requirements) {\n throw new Error(\n \"x402: unsupported x402 network, only Bitcoin lightning network is supported.\",\n );\n }\n if (!requirements.extra?.invoice) {\n throw new Error(\"x402: payment requirements missing lightning invoice\");\n }\n\n const invoice = new Invoice({ pr: requirements.extra.invoice });\n if (invoice.amountRaw != requirements.amount) {\n throw new Error(\n `Invalid invoice amount: ${invoice.amountRaw}. expected ${requirements.amount}`,\n );\n }\n\n await wallet.payInvoice!({ invoice: invoice.paymentRequest });\n\n headers.set(\n \"payment-signature\",\n buildX402PaymentSignature(\n requirements.scheme,\n requirements.network,\n invoice.paymentRequest,\n requirements,\n ),\n );\n return fetch(url, fetchArgs);\n};\n\nexport const fetchWithX402 = async (\n url: string,\n fetchArgs: RequestInit,\n options: { wallet: Wallet },\n) => {\n const wallet = options.wallet;\n if (!fetchArgs) {\n fetchArgs = {};\n }\n fetchArgs.cache = \"no-store\";\n fetchArgs.mode = \"cors\";\n const headers = new Headers(fetchArgs.headers ?? undefined);\n fetchArgs.headers = headers;\n\n const initResp = await fetch(url, fetchArgs);\n const header = initResp.headers.get(\"PAYMENT-REQUIRED\");\n if (!header) {\n return initResp;\n }\n\n return handleX402Payment(header, url, fetchArgs, headers, wallet);\n};\n","export interface MppChallenge {\n id: string;\n realm: string;\n method: string;\n intent: string;\n request: string;\n expires?: string;\n}\n\nexport interface MppChargeRequest {\n amount: string;\n currency: string;\n description?: string;\n recipient?: string;\n externalId?: string;\n methodDetails: {\n invoice: string;\n paymentHash?: string;\n network?: string;\n };\n}\n\n/**\n * Parse a `WWW-Authenticate: Payment …` header produced by a\n * draft-lightning-charge-00 server. Expected format:\n *\n * Payment id=\"<id>\", realm=\"<realm>\", method=\"lightning\",\n * intent=\"charge\", request=\"<base64url>\" [, expires=\"<rfc3339>\"]\n *\n * Returns null when the header is not a Payment lightning/charge challenge.\n */\nexport const parseMppChallenge = (header: string): MppChallenge | null => {\n if (!header.trimStart().toLowerCase().startsWith(\"payment\")) {\n return null;\n }\n const rest = header\n .slice(header.toLowerCase().indexOf(\"payment\") + \"payment\".length)\n .trim();\n const result: Record<string, string> = {};\n const regex = /(\\w+)=(\"([^\"]*)\"|'([^']*)'|([^,\\s]*))/g;\n let match;\n while ((match = regex.exec(rest)) !== null) {\n result[match[1]] = match[3] ?? match[4] ?? match[5] ?? \"\";\n }\n\n if (\n result.method !== \"lightning\" ||\n result.intent !== \"charge\" ||\n !result.id ||\n !result.realm ||\n !result.request\n ) {\n return null;\n }\n\n return {\n id: result.id,\n realm: result.realm,\n method: result.method,\n intent: result.intent,\n request: result.request,\n ...(result.expires ? { expires: result.expires } : {}),\n };\n};\n\n/** Decode a base64url string (no padding required) to a UTF-8 string. */\nexport const decodeBase64url = (input: string): string => {\n const base64 = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return new TextDecoder(\"utf-8\").decode(bytes);\n};\n\n/** Encode a UTF-8 string to base64url without padding. */\nconst encodeBase64url = (input: string): string => {\n const bytes = new TextEncoder().encode(input);\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n};\n\n/**\n * JSON Canonicalization Scheme (RFC 8785).\n * Produces compact JSON with object keys sorted lexicographically.\n */\nconst jcs = (value: unknown): string => {\n if (value === null || typeof value !== \"object\") {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return \"[\" + (value as unknown[]).map(jcs).join(\",\") + \"]\";\n }\n const keys = Object.keys(value as object).sort();\n return (\n \"{\" +\n keys\n .map(\n (k) =>\n JSON.stringify(k) + \":\" + jcs((value as Record<string, unknown>)[k]),\n )\n .join(\",\") +\n \"}\"\n );\n};\n\n/**\n * Build the base64url-encoded credential token for the `Authorization` header.\n *\n * Per the spec the credential is a JCS-serialised JSON object that echoes all\n * challenge auth-params (id, realm, method, intent, request, expires) and\n * carries the HTLC preimage that proves payment:\n *\n * {\n * \"challenge\": { \"id\": \"…\", \"intent\": \"charge\",\n * \"method\": \"lightning\", \"realm\": \"…\", \"request\": \"…\" },\n * \"payload\": { \"preimage\": \"<64-char lowercase hex>\" }\n * }\n *\n * Keys are sorted lexicographically at every level per JCS.\n */\nexport const buildMppCredential = (\n challenge: MppChallenge,\n preimage: string,\n source?: string,\n): string => {\n const challengeEcho: Record<string, string> = {\n id: challenge.id,\n intent: challenge.intent,\n method: challenge.method,\n realm: challenge.realm,\n request: challenge.request,\n };\n if (challenge.expires) {\n challengeEcho.expires = challenge.expires;\n }\n\n const credential: Record<string, unknown> = {\n challenge: challengeEcho,\n payload: { preimage },\n };\n if (source) {\n credential.source = source;\n }\n\n return encodeBase64url(jcs(credential));\n};\n\n/**\n * Construct a `WWW-Authenticate` header for testing / server implementations.\n *\n * The auth scheme is `Payment` per [I-D.httpauth-payment].\n */\nexport const makeMppWwwAuthenticateHeader = (args: {\n id: string;\n realm: string;\n request: string;\n expires?: string;\n}): string => {\n let header =\n `Payment id=\"${args.id}\", realm=\"${args.realm}\", method=\"lightning\",` +\n ` intent=\"charge\", request=\"${args.request}\"`;\n if (args.expires) {\n header += `, expires=\"${args.expires}\"`;\n }\n return header;\n};\n\n/** Encode an MppChargeRequest as a base64url string suitable for the `request` auth-param. */\nexport const encodeMppChargeRequest = (request: MppChargeRequest): string =>\n encodeBase64url(jcs(request));\n","import { Wallet } from \"../utils\";\nimport {\n buildMppCredential,\n decodeBase64url,\n MppChargeRequest,\n parseMppChallenge,\n} from \"./utils\";\n\n/**\n * Handle a `WWW-Authenticate: Payment …` challenge produced by a\n * draft-lightning-charge-00 server.\n *\n * Flow:\n * 1. Parse the challenge from the header.\n * 2. Decode the `request` auth-param to find the BOLT11 invoice.\n * 3. Pay the invoice via the wallet; receive the HTLC preimage.\n * 4. Build the `Authorization: Payment <credential>` header.\n * 5. Retry the original request with the credential.\n */\nexport const handleMppChargePayment = async (\n wwwAuthHeader: string,\n url: string,\n fetchArgs: RequestInit,\n headers: Headers,\n wallet: Wallet,\n): Promise<Response> => {\n const challenge = parseMppChallenge(wwwAuthHeader);\n if (!challenge) {\n throw new Error(\n \"mpp: invalid or unsupported WWW-Authenticate challenge (expected Payment method=lightning intent=charge)\",\n );\n }\n\n let request: MppChargeRequest;\n try {\n request = JSON.parse(decodeBase64url(challenge.request));\n } catch (_) {\n throw new Error(\n \"mpp: invalid request auth-param (not valid base64url-encoded JSON)\",\n );\n }\n\n const invoice = request.methodDetails?.invoice;\n if (!invoice) {\n throw new Error(\"mpp: missing invoice in charge request\");\n }\n\n const invResp = await wallet.payInvoice({ invoice });\n\n // Per spec: Authorization: Payment <base64url-token> (single token, no wrapper)\n const credential = buildMppCredential(challenge, invResp.preimage);\n headers.set(\"Authorization\", `Payment ${credential}`);\n\n return fetch(url, fetchArgs);\n};\n\n/**\n * Fetch a resource protected by the draft-lightning-charge-00 payment\n * authentication protocol.\n *\n * On a `402 Payment Required` response that carries a\n * `WWW-Authenticate: Payment method=\"lightning\" intent=\"charge\" …` header\n * the function pays the embedded BOLT11 invoice and retries with the\n * resulting preimage as the credential.\n *\n * Note: lightning-charge uses consume-once challenge semantics – each\n * challenge embeds a fresh invoice, so paid credentials cannot be reused.\n * The `store` option is accepted for API consistency but is not used.\n */\nexport const fetchWithMpp = async (\n url: string,\n fetchArgs: RequestInit,\n options: { wallet: Wallet },\n): Promise<Response> => {\n const wallet = options.wallet;\n if (!wallet) {\n throw new Error(\"wallet is missing\");\n }\n if (!fetchArgs) {\n fetchArgs = {};\n }\n fetchArgs.cache = \"no-store\";\n fetchArgs.mode = \"cors\";\n const headers = new Headers(fetchArgs.headers ?? undefined);\n fetchArgs.headers = headers;\n\n const initResp = await fetch(url, fetchArgs);\n const wwwAuthHeader = initResp.headers.get(\"www-authenticate\");\n if (\n !wwwAuthHeader ||\n !wwwAuthHeader.trimStart().toLowerCase().startsWith(\"payment\")\n ) {\n return initResp;\n }\n\n return handleMppChargePayment(wwwAuthHeader, url, fetchArgs, headers, wallet);\n};\n","import { Wallet, createGuardedWallet } from \"./utils\";\nimport { handleL402Payment } from \"./l402/l402\";\nimport { handleX402Payment } from \"./x402/x402\";\nimport { handleMppChargePayment } from \"./mpp/mpp\";\n\nexport const fetch402 = async (\n url: string,\n fetchArgs: RequestInit,\n options: {\n wallet: Wallet;\n maxAmount?: number;\n },\n) => {\n const wallet = options.maxAmount\n ? createGuardedWallet(options.wallet, options.maxAmount)\n : options.wallet;\n if (!fetchArgs) {\n fetchArgs = {};\n }\n fetchArgs.cache = \"no-store\";\n fetchArgs.mode = \"cors\";\n const headers = new Headers(fetchArgs.headers ?? undefined);\n fetchArgs.headers = headers;\n\n const initResp = await fetch(url, fetchArgs);\n\n const wwwAuthHeader = initResp.headers.get(\"www-authenticate\");\n if (wwwAuthHeader) {\n const trimmed = wwwAuthHeader.trimStart().toLowerCase();\n if (trimmed.startsWith(\"payment\")) {\n return handleMppChargePayment(\n wwwAuthHeader,\n url,\n fetchArgs,\n headers,\n wallet,\n );\n }\n if (trimmed.startsWith(\"l402\") || trimmed.startsWith(\"lsat\")) {\n return handleL402Payment(wwwAuthHeader, url, fetchArgs, headers, wallet);\n }\n throw new Error(\n `fetch402: unsupported WWW-Authenticate scheme: ${wwwAuthHeader}`,\n );\n }\n\n const x402Header = initResp.headers.get(\"PAYMENT-REQUIRED\");\n if (x402Header) {\n return handleX402Payment(x402Header, url, fetchArgs, headers, wallet);\n }\n\n return initResp;\n};\n","const numSatsInBtc = 100_000_000;\n\nexport interface FiatCurrency {\n code: string;\n name: string;\n symbol: string;\n priority: number;\n}\n\nexport const getFiatCurrencies = async (): Promise<FiatCurrency[]> => {\n const url = \"https://getalby.com/api/rates\";\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch currencies: ${response.status} ${response.statusText}`,\n );\n }\n\n const data = await response.json();\n const mappedCurrencies: FiatCurrency[] = Object.entries(data)\n .filter(([code]) => code.toUpperCase() !== \"BTC\")\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(([code, details]: any) => ({\n code: code.toUpperCase(),\n name: details.name,\n priority: details.priority,\n symbol: details.symbol,\n }))\n .sort((a, b) => a.name.localeCompare(b.name))\n .sort((a, b) => a.priority - b.priority) as FiatCurrency[];\n\n return mappedCurrencies;\n};\n\nexport const getFiatBtcRate = async (currency: string): Promise<number> => {\n const url =\n \"https://getalby.com/api/rates/\" + currency.toLowerCase() + \".json\";\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch rate: ${response.status} ${response.statusText}`,\n );\n }\n\n const data = await response.json();\n\n return data.rate_float / numSatsInBtc;\n};\n\nexport const getFiatValue = async ({\n satoshi,\n currency,\n}: {\n satoshi: number | string;\n currency: string;\n}) => {\n const rate = await getFiatBtcRate(currency);\n\n return Number(satoshi) * rate;\n};\n\nexport const getSatoshiValue = async ({\n amount,\n currency,\n}: {\n amount: number | string;\n currency: string;\n}) => {\n const rate = await getFiatBtcRate(currency);\n\n return Math.floor(Number(amount) / rate);\n};\n\nexport const getFormattedFiatValue = async ({\n satoshi,\n currency,\n locale,\n}: {\n satoshi: number | string;\n currency: string;\n locale: string;\n}) => {\n if (!locale) {\n locale = \"en\";\n }\n const fiatValue = await getFiatValue({ satoshi, currency });\n return fiatValue.toLocaleString(locale, {\n style: \"currency\",\n currency,\n });\n};\n"],"names":["require$$0","decode"],"mappings":"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","x_google_ignoreList":[0,1,3,4,5,6]}
|