@getalby/lightning-tools 7.0.2 → 8.1.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.
Files changed (44) hide show
  1. package/README.md +108 -28
  2. package/dist/cjs/402/l402.cjs +157 -0
  3. package/dist/cjs/402/l402.cjs.map +1 -0
  4. package/dist/cjs/402/mpp.cjs +179 -0
  5. package/dist/cjs/402/mpp.cjs.map +1 -0
  6. package/dist/cjs/402/x402.cjs +1320 -0
  7. package/dist/cjs/402/x402.cjs.map +1 -0
  8. package/dist/cjs/402.cjs +1694 -0
  9. package/dist/cjs/402.cjs.map +1 -0
  10. package/dist/cjs/bolt11.cjs +534 -518
  11. package/dist/cjs/bolt11.cjs.map +1 -1
  12. package/dist/cjs/index.cjs +811 -453
  13. package/dist/cjs/index.cjs.map +1 -1
  14. package/dist/cjs/lnurl.cjs +22 -7
  15. package/dist/cjs/lnurl.cjs.map +1 -1
  16. package/dist/esm/402/l402.js +150 -0
  17. package/dist/esm/402/l402.js.map +1 -0
  18. package/dist/esm/402/mpp.js +177 -0
  19. package/dist/esm/402/mpp.js.map +1 -0
  20. package/dist/esm/402/x402.js +1318 -0
  21. package/dist/esm/402/x402.js.map +1 -0
  22. package/dist/esm/402.js +1683 -0
  23. package/dist/esm/402.js.map +1 -0
  24. package/dist/esm/bolt11.js +534 -519
  25. package/dist/esm/bolt11.js.map +1 -1
  26. package/dist/esm/index.js +803 -451
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/lnurl.js +22 -7
  29. package/dist/esm/lnurl.js.map +1 -1
  30. package/dist/lightning-tools.umd.js +3 -3
  31. package/dist/lightning-tools.umd.js.map +1 -1
  32. package/dist/types/402/l402.d.ts +51 -0
  33. package/dist/types/402/mpp.d.ts +26 -0
  34. package/dist/types/402/x402.d.ts +13 -0
  35. package/dist/types/402.d.ts +78 -0
  36. package/dist/types/bolt11.d.ts +6 -1
  37. package/dist/types/index.d.ts +76 -28
  38. package/dist/types/lnurl.d.ts +2 -0
  39. package/package.json +20 -5
  40. package/dist/cjs/l402.cjs +0 -93
  41. package/dist/cjs/l402.cjs.map +0 -1
  42. package/dist/esm/l402.js +0 -87
  43. package/dist/esm/l402.js.map +0 -1
  44. package/dist/types/l402.d.ts +0 -35
package/dist/esm/lnurl.js CHANGED
@@ -1310,8 +1310,12 @@ const decodeInvoice = (paymentRequest) => {
1310
1310
  return null;
1311
1311
  const paymentHash = hashTag.value;
1312
1312
  let satoshi = 0;
1313
+ let millisatoshi = 0;
1314
+ let amountRaw = "0";
1313
1315
  const amountTag = decoded.sections.find((value) => value.name === "amount");
1314
1316
  if (amountTag?.name === "amount" && amountTag.value) {
1317
+ amountRaw = amountTag.value;
1318
+ millisatoshi = parseInt(amountTag.value);
1315
1319
  satoshi = parseInt(amountTag.value) / 1000; // millisats
1316
1320
  }
1317
1321
  const timestampTag = decoded.sections.find((value) => value.name === "timestamp");
@@ -1330,6 +1334,8 @@ const decodeInvoice = (paymentRequest) => {
1330
1334
  return {
1331
1335
  paymentHash,
1332
1336
  satoshi,
1337
+ millisatoshi,
1338
+ amountRaw,
1333
1339
  timestamp,
1334
1340
  expiry,
1335
1341
  description,
@@ -1339,6 +1345,19 @@ const decodeInvoice = (paymentRequest) => {
1339
1345
  return null;
1340
1346
  }
1341
1347
  };
1348
+ function validatePreimage(preimage, paymentHash) {
1349
+ try {
1350
+ if (!/^[0-9a-fA-F]{64}$/.test(preimage))
1351
+ return false;
1352
+ if (!/^[0-9a-fA-F]{64}$/.test(paymentHash))
1353
+ return false;
1354
+ const preimageHash = bytesToHex(sha256(fromHexString(preimage)));
1355
+ return paymentHash === preimageHash;
1356
+ }
1357
+ catch {
1358
+ return false;
1359
+ }
1360
+ }
1342
1361
 
1343
1362
  class Invoice {
1344
1363
  constructor(args) {
@@ -1352,6 +1371,8 @@ class Invoice {
1352
1371
  }
1353
1372
  this.paymentHash = decodedInvoice.paymentHash;
1354
1373
  this.satoshi = decodedInvoice.satoshi;
1374
+ this.millisatoshi = decodedInvoice.millisatoshi;
1375
+ this.amountRaw = decodedInvoice.amountRaw;
1355
1376
  this.timestamp = decodedInvoice.timestamp;
1356
1377
  this.expiry = decodedInvoice.expiry;
1357
1378
  this.createdDate = new Date(this.timestamp * 1000);
@@ -1376,13 +1397,7 @@ class Invoice {
1376
1397
  validatePreimage(preimage) {
1377
1398
  if (!preimage || !this.paymentHash)
1378
1399
  return false;
1379
- try {
1380
- const preimageHash = bytesToHex(sha256(fromHexString(preimage)));
1381
- return this.paymentHash === preimageHash;
1382
- }
1383
- catch {
1384
- return false;
1385
- }
1400
+ return validatePreimage(preimage, this.paymentHash);
1386
1401
  }
1387
1402
  async verifyPayment() {
1388
1403
  try {