“Ledger Live Common” @ledgerhq/live-common
````
`.--:::::
`.-::::::::: ````
.://///:-..`` `-/+++/-`
`://///-` -++++++o/.
`/+++/:` -+++++osss+`
`:++++:` ./++++-/osss/`
.+++++` `-://- .ooooo.
-+ooo/` `` `/oooo-
.oooo+` .::-.` `+++++.
`+oooo:./+++/. -++++/`
-ossso+++++:` -/+++/.
-ooo+++++:` .://///.
./+++++/` ``.-://///:`
`---.` -:::::///:-.
:::::::-.`
....``
Ledger Live Common (@ledgerhq/live-common) is a JavaScript library available via a NPM package.
This library depends on a bunch of ledgerjs packages and put together the core business logic behind Ledger Live Desktop and Ledger Live Mobile.
The stack is pretty standard for a ES6 and FlowType library. The notable dependencies are libraries like RxJS and BigNumber.js. There is also a bit of React and Redux but exposed in agnostic ways (meaning it's not mandatory to use – there will be dedicated entry point for them to offer utilities like React Hooks).
Table of Contents
- Introduction, Goals and Tradeoffs
- Getting started
ledger-liveCLI- tools web playground
mobile-test-apptest project
- Learn by example
- The Currency models and utilities
- The Account models and portfolio logic
- The CurrencyBridge: scan accounts with a device
- The AccountBridge: synchronize an account and perform transaction
- Hardware Wallet logic
- Apps store logic
- Firmware Update logic
- Countervalues logic
- Coin integration specifics
- Introduction
- Bridge implementations, where to start? (JS, Libcore, Mock)
- Implementing the hardware wallet logic of a new coin
- The account derivation (BIP44 and exceptions)
- Advanced
- api/socket
createDeviceSocketand script runner - env.js: live-common configuration system
- Serialization and reconciliation
- cross.js and "LiveQR" protocol
- cache.js helpers
- Tokens management and ERC20
- Developing with lib-ledger-core bindings
- api/socket
Developing with Ledger Live Common
Linting: uses oxlint with
.oxlintrc.json. Auto-fix:pnpm common lint:fix(oxlint--fixonly; does not reformat files). Formatting is optional: oxfmt with.oxfmtrc.json(aligned with the repo root.prettierrc, e.g.arrowParens: "avoid"). Runpnpm common formatorpnpm common format:checkwhen you want to apply or verify oxfmt; some paths are ignored viaignorePatternsin.oxfmtrc.json. From the repo root:pnpm common lint(orpnpm common lint:cifor CI-style, errors only).The different test approaches
- Unit test of live-common logic
- End-to-end tests of the
ledger-livecommand - Bridge dataset tests
- Providing mocks to implement UI tests
Are you adding the support of a blockchain to Ledger Live?
This part of the repository is where you will add most of your code.
For a smooth and quick integration:
- See the developers’ documentation on the Developer Portal and
- Go on Discord to chat with developer support and the developer community.