@artcom/bootstrap-client
v7.0.0
Published
A library which queries and processes bootstrap data from a bootstrap server.
Readme
Bootstrap Client
Queries bootstrap data from the bootstrap server and initializes an MQTT client and a logger for services.
Usage
Install this library via npm:
npm install @artcom/bootstrap-clientThis package now targets Node.js 22+ and is published as ESM.
Bootstrap as follows:
import { init, subscribeToConfigChange } from "@artcom/bootstrap-client"
const { logger, mqttClient, queryConfig, data } = await init(bootstrapUrl, serviceId)
// log something
logger.info("Hello world!")
// publish "bar" to topic "foo"
mqttClient.publish("foo", "bar")
// query some configurations with (optional) options
const myConfig = await queryConfig("config/path", {
version: "master",
listFiles: false,
includeCommitHash: false,
parseJSON: true,
})
// use raw bootstrap data
logger.info(`I am running on device: ${data.device}`)
// subscribe to configuration changes
subscribeToConfigChange(
mqttClient,
"device/config/changes", // The topic to listen on
["config.json", "assets/"], // Watch specific files or directories
"master", // The config version to match
async () => {
logger.info("Configuration changed, reloading...")
}
)The following additional options are supported:
timeout: is the time in milliseconds until the query times out, default:2000retryDelay: is the time in milliseconds until the query is sent again, default:10000debugBootstrapData: can be set to skip querying data from the bootstrap server for debugging, default:null
Consumers must run on Node.js 22 or newer and import the package from an ESM environment.
Bootstrap Data
The client expects the following properties in the bootstrap server response or debugBootstrapData:
{
tcpBrokerUri: string,
httpBrokerUri: string,
configServerUri: string,
device: string
}Checkout the bootstrap server documentation for details.
