
Security News
The Changelog Podcast: Practical Steps to Stay Safe on npm
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.
nimiq-svelte-stores
Advanced tools
This library provides SvelteJS stores for a Nimiq Blockchain Client.
Client initialization is already handled for you (mainnet, pico client). You simply import the stores that you need.
yarn add --dev nimiq-svelte-stores
public/index.html:
<script defer src="https://cdn.nimiq-testnet.com/v1.5.2/web.js"></script>
To start the Nimiq Client, call the exported start function:
import { start } from 'nimiq-svelte-stores`
start()
Advanced: Learn how to configure the Nimiq Client.
import {
ready,
consensus,
established,
headHash,
head,
height,
networkStatistics,
peerCount,
accounts,
accountsRefreshing,
newTransaction,
transactions,
transactionsRefreshing,
} from 'nimiq-svelte-stores'
| Store | Type | Initial value |
|---|---|---|
| ready | Boolean | false |
| consensus | String | 'loading' |
| established | Boolean | false |
| headHash | Nimiq.Hash | null |
| head | Nimiq.Block | null |
| height | Number | 0 |
| networkStatistics | Nimiq.Client.NetworkStatistics | Object |
| peerCount | Number | 0 |
| accounts | Array<{address: Nimiq.Address, ...}> | [] |
| accountsRefreshing | Boolean | false |
| newTransaction | Nimiq.Client.TransactionDetails | null |
| transactions | Array<Nimiq.Client.TransactionDetails> | [] |
| transactionsRefreshing | Boolean | false |
The accounts and transactions stores expose methods to write to them and trigger actions.
You can add one or more accounts to the accounts store by passing the following types to the accounts.add() method:
Nimiq.Addressstring (userfriendly, hex or base64 address representation)Object<{address: Nimiq.Address | string}>If you add objects, they can include whatever properties you like, as long as they have an address property
which can be interpreted as a Nimiq address. All other properties on the object are preserved and added to the store.
You can use this for example to store an account label or other meta data in the accounts store.
The
accountsstore automatically populates and updates accounts'balanceandtypefields from the blockchain, while consensus is established (as well as other relevant fields for vesting contracts and HTLCs).
Accounts may be removed from the accounts store with the accounts.remove() method.
The method takes the same arguments as the add method above.
The accounts.refresh() method can be used to manually trigger a blockchain sync of some or all stored accounts.
When passed any of the arguments accepted by the add method, only those accounts are refreshed.
If no argument is passed, all stored accounts are refreshed.
You can add single or an array of known Nimiq.Client.TransactionDetails to the transactions store with
the transactions.add() method.
These transaction details are then used when fetching the transaction history for an account, and prevent
a great amount of data from being downloaded again.
When subscribing to the
transactionsstore, the transaction history for all stored and newly added accounts is automatically fetched while consensus is established.
The transactions.refresh() method can be used to manually trigger fetching the transaction history of some
or all stored accounts. When passed any of the arguments accepted by the accounts.add method, only the histories
of those accounts are refreshed. If no argument is passed, the history of all stored accounts is refreshed.
The transactions.setSort() method allows you to overwrite the library's transaction-sorting algorithm.
(By default, transactions are sorted 'newest first'.)
Pass your custom sort function to the setSort() method.
Your sort function receives two arguments, both Nimiq.Client.TransactionDetails, and is required to return a number:
< 0 if the first argument should be sorted first, > 0 if the second argument should be sorted first, 0 if both arguments should be sorted equally.
// Sort transactions by their hash value, ascending
function customSort(a, b) {
const aValue = parseInt(a.transactionHash.toHex().substring(0, 10), 16)
const bValue = parseInt(b.transactionHash.toHex().substring(0, 10), 16)
return a - b
}
transactions.setSort(customSort)
This library exposes a Nimiq Client as the client export.
For configuration options, see Config.
The client export is undefined until:
ready store turned true orstart() function resolvesThere are two ways to make sure the client is defined when you use it:
client-triggering elements when the ready store turned true:<script>
import { ready, client } from 'nimiq-svelte-stores'
function sendTransaction() {
const tx = ...
client.sendTransaction(tx)
}
</script>
<button disabled={!$ready} on:click={sendTransaction}>Send Transaction</button>
start() function:import { start, client } from 'nimiq-svelte-stores'
async function sendTransaction() {
const tx = ...;
await start() // or: const client = await start()
client.sendTransaction(tx)
}
The Nimiq Client API is documented here: https://doc.esdoc.org/github.com/nimiq/core-js/class/src/main/generic/api/Client.js~Client.html
Tutorials for sending transactions are here: https://nimiq.github.io/tutorials/basics-3-transactions
The Nimiq Client that is created internally in this library can be configured during first start-up.
The start() method therefore takes a callback as its first argument.
This callback receives a Nimiq.Client.ConfigurationBuilder instance as an argument, which can be manipulated inside the callback.
Note: The client is only created once, so the config callback is only effective in the first call to the start() function.
start((config) => {
// Create a volatile consensus (not storing peer information across page reloads)
config.volatile(true)
// Require a local mempool (creates a light consensus)
client.feature(Nimiq.Client.Feature.MEMPOOL)
})
FAQs
Provides SvelteJS stores for a Nimiq Blockchain Client
We found that nimiq-svelte-stores demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.