lndconnect
Generate and parse lndconnect uris https://github.com/LN-Zap/lndconnect ⚡️
This package provides utilities for generating and parsing lndconnect uris.
For more information take a look at the specification of the uri format.
This package is a TypeScript & Deno port of the original node-lndconnect with some API improvements.
Table of Contents
Usage
format({ host, cert, macaroon }):
Formats a host / cert / macaroon combo into an lndconnect link.
import { format } from 'https://deno.land/x/lndconnect/mod.ts'
const connectionString = format({
host: '1.2.3.4:10009',
cert: 'MIICuDCCAl...',
macaroon: '0201036c6...',
})
expect(connectionString).toEqual('lndconnect://1.2.3.4:10009?cert=MIICuDCCAl...&macaroon=0201036c6...')
encode({ host, cert, macaroon }):
Encodes a host / cert / macaroon combo and formats into an lndconnect link.
import { encode } from 'https://deno.land/x/lndconnect/mod.ts'
const connectionString = encode({
host: '1.2.3.4:10009',
cert: '-----BEGIN CERTIFICATE-----\n...',
macaroon: '0201036c6...',
})
expect(connectionString).toEqual('lndconnect://1.2.3.4:10009?cert=MIICuDCCAl...&macaroon=AgEDbG5kAr...')
decode(lndconnectUri):
Decodes an lndconnect link into it’s component parts (host / cert as utf8 / macaroon as hex)
import { decode } from 'https://deno.land/x/lndconnect/mod.ts'
const { host, cert, macaroon } = decode('lndconnect://1.2.3.4:10009?cert=MIICuDCCAl...&macaroon=AgEDbG5kAr...')
expect(host).toEqual('1.2.3.4:10009')
expect(cert).toEqual('MIICuDCCAl...')
expect(macaroon).toEqual('0201036c6...')
Certificate
encodeCert(cert):
Encodes a certificate (String) or a path to a certifiate (string) to base64url encoded DER format. If you provide a path, the path is encoded, not the contents of the file with that path.
import { encodeCert } from 'https://deno.land/x/lndconnect/mod.ts'
const certPath = path.join(__dirname, 'tls.cert')
const cert = encodeCert(certPath)
// returns base64url encoded DER cert.
expect(cert).toEqual('MIICuDCCAl...')
decodeCert(encodedCert):
Decodes a certificate from base64url encoded DER format to a string.
import { decodeCert } from 'https://deno.land/x/lndconnect/mod.ts'
// pass a base64url encoded DER cert
const cert = decodeCert(encodedCert)
// returns utf8 encoded PEM cert.
expect(cert).toEqual('-----BEGIN CERTIFICATE-----\n...')
Macaroon
encodeMacaroon(macaroon):
Encodes a binary macaroon (hex string or binary UInt8Array) or a path to a macaroon (string) to base64url encoded string. If you provide a path, the path is encoded, not the contents of the file with that path.
import { encodeMacaroon } from 'https://deno.land/x/lndconnect/mod.ts'
const macaroonPath = path.join(__dirname, 'admin.macaroon')
const macaroon = encodeMacaroon(macaroonPath)
// returns base64url encoded macaroon.
expect(macaroon).toEqual('AgEDbG5kAr...')
decodeMacaroon(encodedMacaroon):
Decodes a base64url encoded macaroon to a hex encoded macaroon.
import { decodeMacaroon } from 'https://deno.land/x/lndconnect/mod.ts'
// pass a base64url encoded macaroon
const macaroon = decodeMacaroon(encodedMacaroon)
// returns hex encoded macaroon.
expect(macaroon).toEqual('0201036c6...')
Testing
Run the tests suite:
deno test
Maintainers
Contribute
Feel free to dive in! Open an issue or submit PRs.