@blinkbitcoin/blink-client
v1.1.0
Published
JavaScript client library for the Blink stack. This is used in front-end applications like the web and mobile wallets.
Readme
Blink Client
JavaScript client library for the Blink stack. This is used in front-end applications like the web and mobile wallets.
Installation
Install the package with:
pnpm add @blinkbitcoin/blink-clientUsage
parsePaymentDestination
import { parsePaymentDestination } from "@blinkbitcoin/blink-client"
const { valid, paymentType, amount } = parsePaymentDestination({
destination: "username or invoice or bitcoin address",
network: "mainnet", // or signet or regtest
lnAddressDomains: ["blink.sv"],
})Valid phone number inputs resolve as Lightning Addresses on pay.blink.sv for
mainnet and pay.staging.blink.sv for signet or regtest. Set
phoneNumberLnAddressDomain to override only that phone-number domain:
parsePaymentDestination({
destination: "+50370123456",
network: "mainnet",
lnAddressDomains: ["blink.sv"],
phoneNumberLnAddressDomain: "phone.example.com",
})
// lnurl: "[email protected]"When a QR code or non-phone manual input matches one merchant payment integration, the
result remains a valid PaymentType.Lnurl and includes isMerchant: true plus a
merchant object. When the input matches multiple integrations that cannot be uniquely
selected by displayCurrency, the result is:
{
paymentType: PaymentType.Merchant,
merchants: Merchant[],
}Each merchant includes its ID, Lightning address, category, display metadata, and an
optional display currency. category is metadata only; consumers make all selection,
filtering, regional eligibility, and policy decisions.
PaymentType.Merchant requires consumer selection before payment and does not include a
valid field. Branch on paymentType before relying on valid or initiating payment.
Test
Test with Jest framework:
pnpm testBuild
Build production (distribution) files in dist folder:
pnpm buildLocal development
Run:
pnpm link --globaland in your test project run:
pnpm link --global @blinkbitcoin/blink-clientIf you want to remove the link, run:
# in your test project
pnpm unlink @blinkbitcoin/blink-client
# in blinkbitcoin/client folder
pnpm unlink --globalRun:
# in blinkbitcoin/blink-client folder
yalc publishin your test project run:
yalc add @blinkbitcoin/blink-clientIf you want to remove the symlink, run:
# in your test project
yalc remove @blinkbitcoin/blink-clientto update changes, you have to run yalc publish before run:
# in your test project
yalc update