npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@api3/airnode-feed

v1.0.0

Published

> A service for storing and accessing signed data.

Downloads

304

Readme

airnode-feed

A service for storing and accessing signed data.

Airnode feed is a Node.js service, dockerized and deployable on any cloud provider or hostable on premise. It is continuously running two core loops:

  1. Fetch beacon data - Each triggers.signedApiUpdates entry defines a group of templates. Airnode feed makes a template request to the API specified in the OIS to get the template data. Airnode feed's wallet is used to sign the responses and these are then saved to in-memory storage.
  2. Push signed beacon data to signed API - For each triggers.signedApiUpdates, periodically checks the in-memory storage and pushes the signed data to the configured API.

Configuration

See configuration for details.

Local development

The Airnode feed needs a configuration in order to run. The config folder contains example configuration which uses:

  • Nodary as the data provider, from which the data is fetched.
  • Signed API running on http://localhost:8090 where the data is pushed.

To start the the Airnode feed in dev mode run the following:

  1. cp config/airnode-feed.example.json config/airnode-feed.json - To copy the Airnode feed configuration from the example. Note, the airnode-feed.json file is ignored by git. If you are using Docker Desktop, you need to change the URL from localhost to host.docker.internal. For example:

    "url": "http://host.docker.internal:8090"
  2. cp config/secrets.example.env config/secrets.env - To copy the secrets.env needed for the configuration. This file is also ignored by git.

  3. Set the NODARY_API_KEY inside the secrets file. Ask someone from development team for the key.

  4. cp .env.example .env - To copy the example environment variables. Optionally change the defaults.

  5. pnpm run dev - To run the Airnode feed. This step assumes already running signed API as specified in the airnode-feed.json configuration.

Testing

To run the tests:

pnpm run test
# or to run test only from a specific files (path substring search)
pnpm run test schema
# or to enable logger (by default the logger is disabled by jest.setup.js).
LOGGER_ENABLED=true pnpm run test

Docker instructions

You can use shorthands from package.json. To understand how the docker image is built, read the Dockerfile.

pnpm run docker:build
pnpm run docker:run

Deployment

To deploy Airnode feed on AWS you can use the Cloud Formation template created by the API integrations team. The template can be found in the private api-integrations repository here.

To deploy on premise you can use the Docker image by reading the instructions below.

Run Airnode feed with Docker

To run the Airnode feed docker image you need to:

  1. Mount config folder to /app/config. The folder should contain the airnode-feed.json and secrets.env files.
  2. Pass the -it --init flags to the docker run command. This is needed to ensure the docker is stopped gracefully. See this for details.
  3. Specify the --env-file with the path to the .env file containing the ENV configuration.
  4. Optionally, pass the --rm flag to remove the container after it is stopped.
  5. If running on Linux, you need to use the --network host to access the host network. This has no effect for Docker Desktop.
  6. Lastly, if you are using Docker Desktop and you want to access the host machine, you need to change the host URL from localhost to host.docker.internal in the configuration files.

For example:

# Assuming the current folder contains the "config" folder and ".env" file.
docker run -it --init --volume $(pwd)/config:/app/config --env-file .env --rm api3/airnode-feed:latest