New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

bolt12-decoder

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bolt12-decoder - npm Package Compare versions

Comparing version 0.0.9 to 1.0.0

dist/blinded-paths.d.ts

29

package.json
{
"name": "bolt12-decoder",
"version": "0.0.9",
"version": "1.0.0",
"description": "Decode BOLT12 Offers",
"main": "src/index.js",
"module": "src/index.js",
"type": "module",
"types": "@types/index.d.ts",
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
"src",
"@types"
"dist"
],
"scripts": {
"gentypes": "tsc -p ./tsconfig.jsonc"
"build": "bun build ./src/index.ts --outdir ./dist --target browser --format esm --minify",
"build:types": "tsc --emitDeclarationOnly --declaration --outDir dist --noEmit false",
"build:all": "bun run build && bun run build:types",
"clean": "rm -rf dist",
"prepublishOnly": "bun run clean && bun run build:all"
},
"author": "Aaron Barnard",
"license": "MIT",
"repository": "github:aaronbarnardsound/bolt12-decoder",
"devDependencies": {
"eslint": "^8.16.0",
"eslint-config-prettier": "^8.3.0",
"prettier": "^2.6.2",
"typescript": "^5.0.2"
"@types/bun": "latest"
},
"peerDependencies": {
"typescript": "^5.0.0"
},
"dependencies": {
"@noble/hashes": "^1.2.0",
"@noble/hashes": "^1.5.0",
"bech32": "^2.0.0",
"buffer": "^6.0.3"
}
}
# BOLT12 Decoder
Decode BOLT12 Offers, Invoice Requests and invoices.
Decode BOLT12 Offers, Invoice Requests and Invoices.
The goal is to match the output of the CoreLN [`decode` RPC response](https://docs.corelightning.org/reference/lightning-decode).
Code is mostly grabbed from [Rusty's BOLT12 repo](https://github.com/rustyrussell/bolt12/tree/master/javascript) with some changes and fixes.
## Install
`yarn add bolt12-decoder`
`npm i bolt12-decoder`
`yarn add bolt12-decoder` OR `npm i bolt12-decoder` OR `bun add bolt12-decoder`

@@ -17,25 +12,77 @@ ## Usage

```javascript
import decodeBolt12 from 'bolt12-decoder'
import BOLT12Decoder from 'bolt12-decoder'
const bolt12 =
const offer =
'lno1qgsqvgnwgcg35z6ee2h3yczraddm72xrfua9uve2rlrm9deu7xyfzrc2q42xjurnyyfqys2zzcssx06thlxk00g0epvynxff5vj46p3en8hz8ax9uy4ckyyfuyet8eqg'
const decoded = decodeBolt12(bolt12)
const decodedOffer = BOLT12Decoder.decode(offer)
console.log(JSON.stringify(decodedOffer, null, 2))
console.log(decoded)
// {
// "id": "45880e501c65e9060d33128d2de1d23ff52ae768b2bcb62bef262d90b741b8cd",
// "type": "offer",
// "chains": [
// "06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f"
// ],
// "description": "Tips!",
// "issuer": "AB",
// "issuerId": "033f4bbfcd67bd0fc858499929a3255d063999ee23f4c5e12b8b1089e132b3e408"
// }
const invoice =
'lni1qqgqp9et744ne2r7zg3kq0vz860xgyxvqwryaup9lh50kkranzgcdnn2fgvx390wgj5jd07rwr3vxeje0glc7qsp2dxt6avc2avfxg2avl58psv7xflwzhfmv2gtm9wytkn5c7uusvpq9qr8h0nh66qpv7xa9hyguuc3ar3y42qlxsxcy0genwt8d7tsamvaqqeec63yjlkyyd05gkfzrwwvaxl8y9jjxemwsqrnc2j6xdjrg0yzj7k5x2pwvyga3heejhra24a0wushp6rfqq3jdf2glnwaydeml333v4xrap92ek3q9qgm7370exxs45f68p42sqqpqrslyuarpkn5r78nquzma65rrs6jqvqcdgzcyypdf0d2vqmqu02ruex9mskrzmr5d3rrzygttq425w89c3z3arqh8f9ql5qe5quxfmcztl0gldv8mxy3sm8x5jscdz27u39fy6luxu8zcdn9j73l3uppfjclju37sq4pfcne5gw9l9vydpsnfwlnkc0f2ncu786mxzpss0szqfhylpxyl0pjvnwheheful2mjtu0zvvnfwmrkzm7e5flnh5dmpmxzqz998um6nckle0n2sse3lad2cm2m87wqssjn8rtrstgw7fr4cq7jcss3aspnmgg2sua776240454kl9f5sv9t3cfe58xur7mch6q9rz6u4sdffra2cz7nwvw2xcmty0eut4dayy03n6guksvrvtt237tl6264ks8yyfhqjspn9uj9zg4wrhpsvrw56skaqcfd3ul6d6tlpw3qrz5jnuz609ee7czc6n629rm5ccncackrspca3mpzk4phrjwcc9hukuxck2u93wkpmp0hx8rn2c7pd65hsl8hwkzqemkx7p2g0zkx92gzvyg5cfpktvm42g57d6spjy7clkwtrtz72pmm4a990phfa3exzldwsydqxpq3tepwk5v9474zmmd98ttyyzx058t2sf5dvpn73hlvdhnycv55t4lsv6a9080a83dl9s7mf02ukt48nhche6he45j9npx87jk7eyhzxsrjpzz0t5e2n206an9ma59uhatgsuqqqq86qqqqqxgq9zqqqqqqqqqqp7sqqqqqqqqqcdgqqqpfqyvm5xhjdxqy72sg8wkseztv2dpeudmcx0ahz6ezxx86thwrzvjfq400rnhh7vmcrs6k4qxqvx5zhqxqsqqzczzq3jdf2glnwaydeml333v4xrap92ek3q9qgm7370exxs45f68p42srcyql379vw777n9rmj66ze9qmq8agvuz9fdg6nnu5wcdn6ppvrh3rjcftld8rtakadngfdalgq9czau46yfa07pqpeffqlx8qaruzv7w5qs'
const decodedInvoice = BOLT12Decoder.decode(invoice)
console.log(JSON.stringify(decodedInvoice, null, 2))
// {
// offer_chains: ['06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f'],
// offer_description: 'Tips!',
// offer_id: '45880e501c65e9060d33128d2de1d23ff52ae768b2bcb62bef262d90b741b8cd',
// offer_issuer: 'AB',
// offer_node_id: '033f4bbfcd67bd0fc858499929a3255d063999ee23f4c5e12b8b1089e132b3e408',
// type: 'bolt12 offer',
// valid: true
// "id": "4f80127354452142ca241c0964b65632d4f6209e9376f1d968e372ef0d1b6dfe",
// "type": "invoice",
// "paths": [
// {
// "firstNodeId": "03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f",
// "firstPathKey": "0214cb1f9723e802a14e279a21c5f9584686134bbf3b61e954f1cf1f5b3083083e",
// "numHops": 2,
// "path": [
// {
// "blindedNodeId": "026e4f84c4fbc3264dd7cdf29e7d5b92f8f131934bb63b0b7ecd13f9de8dd87661",
// "encryptedRecipientData": "29f9bd4f16fe5f3542198ffad5636ad9fce0421299c6b1c16877923ae01e962108f6019ed085439df7b4aabeb4adbe54d20c2ae384e6873707ede2fa01462d72b06a523eab"
// },
// {
// "blindedNodeId": "02f4dcc728d8dac8fcf1756f4847c67a472d060d8b5aa3e5ff4ad56d039089b825",
// "encryptedRecipientData": "bc91448ab8770c18375350b74184b63cfe9ba5fc2e88062a4a7c169e5ce7d816353d28a3dd3189e3b8b0e01c763b08ad50dc7276305bf2dc362cae162eb07617dcc71cd58f05baa5e1f3ddd61033bb1bc1521e2b18aa40984453090d96cdd548a79ba80644f63f672c6b17941deebd295e1ba7b1c985f6ba04680c1045790bad4616bea8b7b694eb5908233e875aa09a35819fa37fb1b79930ca5175fc19ae95e77f4f16fcb0f6d2f572cba9e77c5f3abe6b49166131fd2b7b24b88d01c82213d74caa6a7ebb32efb42f2fd5"
// }
// ]
// }
// ],
// "metadata": "00972bf56b3ca87e1223603d823e9e64",
// "amount": "100000",
// "payerId": "02d4bdaa60360e3d43e64c5dc2c316c746c4631110b582aaa38e5c4451e8c173a4",
// "signature": "7e3e2b1def7a651ee5ad0b2506c07ea19c1152d46a73e51d86cf410b07788e584afed38d7db75b3425bdfa005c0bbcae889ebfc100729483e6383a3e099e7501",
// "blindedPayInfo": [
// {
// "feeBaseMsat": 1000,
// "feeProportionalMillionths": 100,
// "cltvExpiryDelta": 162,
// "htlcMinimumMsat": "1000",
// "htlcMaximumMsat": "200000",
// "features": ""
// }
// ],
// "createdAt": 1726507977,
// "relativeExpiry": 60,
// "paymentHash": "eeb43225b14d0e78dde0cfedc5ac88c63e97770c4c924157bc73bdfccde070d5",
// "features": "020000",
// "nodeId": "02326a548fcddd2373bfc631654c3e84aacda202811bf47cfc98d0ad13a386aa80"
// }
```
## Caveats
## Running Locally
- Does not decode recurrence (will add once recurrence is added back in to the spec)
- Does not decode `invoice_paths` and `invoice_blindedpay` as I could not get it working (I hope to fix this some time soon)
### Install Deps
`bun install`
### Build
`bun run build:all`
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc