This library helps you retrieve and validate the list of trusted nodes for a given EBSI environment.
Installation
npm i --save @europeum-ebsi/trusted-nodes-list
Usage
This library exposes 2 main functions: getTrustedNodesList (recommended) and getTrustedNodesListFromSources.
getTrustedNodesList
The function getTrustedNodesList will fetch the TNL JWTs from GitLab — i.e. the default location. Internally, it will pre-configure the source and pass it to getTrustedNodesListFromSources.
import { getTrustedNodesList } from "@europeum-ebsi/trusted-nodes-list";
// The first parameter is the EBSI environment for which we want to retrieve a list of trusted nodes, e.g. "pilot
const trustedNodesList = await getTrustedNodesList("pilot");
// Optionally, you can pass a second parameter which may contain the Axios timeout (default: 30s) and whether Ajv should be used in verbose mode
const trustedNodesList = await getTrustedNodesList("pilot", {
timeout: 10_000, // Default: 30_000
verbose: true, // Default: false
});
// The result will look like this:
console.log(trustedNodesList);
/*
Displays:
{
"list": {
"chainId": 6179,
"environment": "pilot",
"id": "did:ebsi:ztMy7kLecXXvQwDzXYKLQ2j",
"nodes": [
{
"apis": "https://api-pilot.ebsi.example.es",
"country": "esp"
},
{
"apis": "https://api-pilot.ebsi.example.mt",
"country": "mlt"
},
{
"apis": "https://api-pilot.ebsi.example2.es",
"country": "esp"
}
],
"nodesTotal": 3,
"version": 1
},
"raw": {
"vc": "<raw VC JWT>",
"vp": "<raw VP JWT>"
}
}
*/
getTrustedNodesListFromSources
The function getTrustedNodesListFromSources lets you use custom sources. It is not recommended to use it. Please prefer using the preconfigured getTrustedNodesList function instead.
However, if you still want to use custom sources from where to retrieve the TNL JWTs, you should create a custom source class extending the Source interface, and pass it to the getTrustedNodesListFromSources function.
You can find an example of such a custom source in ./tests/helpers/fs-source.ts.
Try it
In the interactive example below, we use the original GitLabSource and we call getTrustedNodesListFromSources to get the Trusted Nodes List:
import { getTrustedNodesListFromSources } from "@europeum-ebsi/trusted-nodes-list";
import { GitLabSource } from "@europeum-ebsi/trusted-nodes-list/sources/gitlab";
// Here's how we'd configure the sources and call the getTrustedNodesListFromSources function:
const env = "pilot";
const sources = [new GitLabSource(env)];
const res = await getTrustedNodesListFromSources(sources, env);
You can try it now: