New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mothership-client

Package Overview
Dependencies
Maintainers
2
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mothership-client

Node.js client for loading config data from Mothership

  • 4.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
2
Created
Source

mothership-client

Greenkeeper badge

The official Node.js client for Mothership.

Installation

npm i mothership-client

Requirements

  • Node.js >= 10.x

Usage

If you're upgrading from v1.x or v2.x, see the upgrading section at the bottom of this doc.

Since initial bootstrap of an app requires most configuration values, this module should probably be one of the first things your code requires.

Require the module, then initialize it using your environment key.

const mothership = require('mothership-client');
const config = await mothership.init('<config-key>');

or, set the MOTHERSHIP_KEY environment variable:

MOTHERSHIP_KEY=my_key
...
const config = await mothership.init();

Then simply reference your config like: config.get('someKey');

When you need config in another module, simply require the module and call mothership.get('anotherKey'):

const config = require('mothership-client').get('anotherKey);

The Mothership client uses lodash dotted-notation syntax for fetching keys, and even allows specifying a default value if the key isn't found:

const subConfig = mothership.get('some.sub.key', 'sensible default');

You can grab the entire config at once; however, we don't recommend doing this, as Mothership will refresh the config periodically, so you could end up with stale values.

Loading the config key from a file / secret

Given the rise of Kubernetes, there are cases where you may want to provide the Mothership config key via a mounted secret rather than as a string value or environment variable. In such a case, simply tell Mothership where to find the secret file on disk via either:

const config = await mothership.init({ keyPath: '/absolute/path/to/secret/file' });

or using the environment variable

MOTHERSHIP_KEY_PATH=/absolute/path/to/secret/file

Mothership will use the contents of the file as the key during initialization.

Configuration auto-refresh

By default, Mothership auto-refreshes the local configuration cache every ten minutes. This ensures that changes made from the Mothership dashboard will propagate to connected applications.

If you want to adjust the refresh frequency, provide the desired frequency (in seconds) as an option during initialization:

const config = await mothership.init({ refreshInterval: 60 });

For more info, see our documentation.

Upgrading

To v3.x

Version 3.x removes the synchronous mode entirely. Calling init() returns a Promise that resolves when the config is loaded (e.g. await mothership.init('config-key')). If you need synchronous mode, stick with v2.x. Though, do drop us a line so we can better understand your use-case!

To v2.x

The release of v2.x enables both synchronous and asynchronus modes of operation. v1.x only supported synchronous mode, which was incompatible with some platforms.

Async mode is now the default, returning a promise from the init() method.

If you want to use sync mode, pass a second argument during initialization:

const config = mothership.init('<config-key>', { sync: true });

To v4.x

The release of v4.x provides the ability to for you to instantiate multiple instances of Mothership within a single Node app. You can call mothership.init() multiple times, passing in different API keys and options each time. Each call to the init() method will return an instance of mothership with the usual get() method to get the config scoped to that particular instance.

Keywords

FAQs

Package last updated on 07 Dec 2021

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc