fwsp-config

1.1.5 • Public • Published

Config

Build Status npm version NPM downloads npm

A configuration file handler. Config can load configuration files from a local file system or a remote server.

Once the config module is initialized you can access config properties as you would a simple POJOs JavaScript object.

Examples

Load a local file

const config = require('fwsp-config');
config.init('properties.json')
  .then(() => {
    console.log(config.aws);  
    console.log(config.hydra.aws.apiVersions);
  });

Load a remote file

const config = require('fwsp-config');
config.init('http://cjus.me/properties.json');
  .then(() => {
    console.log(config.aws);  
    console.log(config.hydra.aws.apiVersions);
  });

Load from an object

const config = require('fwsp-config'); config.init({ hydra: { serviceName: 'offers-service', serviceIP: '', servicePort: 7000, serviceType: 'offers', serviceDescription: 'Phone validation for use with first ride class offers', redis: { url: 'redis', port: 6379, db: 15 } } }) .then(() => { console.log(config.hydra);
});



**Usage**

The `config` module returns a Promise and resolves if it successful loaded and parsed a configuration file, otherwise it rejects.  This allows you to sequence application concerns which require configuration data until after the configuration is loaded.

## Sharing config files

Sometimes multiple instances of a service might share the same configuration file. To support this use-case, `config` allows you to define a local configuration file with a location field that specifies the remote location where a configuration file can be found.

```javascript
{
  "location": "http://services.com/imageprocesser/properties.json"
}

Retrieving a plain JS object

The config module behaves like a JavaScript object once it has configuration files loaded. However, for times when you really do what a pure JS object you can use the getObject() method:

const config = require('fwsp-config');
config.init('properties.json')
  .then(() => {
    let obj = config.getObject();
    console.log(JSON.stringify(obj));
  });

Overriding config properties

Config allows you to use plain JavaScript setter patterns to update a loaded configuration file. This is useful in a shared configuration file scenario where each service loads a config file and needs to override one or more fields.

const config = require('fwsp-config');
config.init('properties.json')
  .then(() => {
    config.hydra.serviceName = 'NewServiceName';
    console.log(config.hydra.serviceName);
  });

Implementation details

This config module is implemented using ES6 Proxy support and so it requires NodeJS 6.2.1 or greater Chrome 49 or greater.

Tests

This project has a series of mocha tests in the specs folder.

To run them you'll need mocha installed:

$ npm install mocha -g

then just:

$ npm run test

Package Sidebar

Install

npm i fwsp-config

Weekly Downloads

271

Version

1.1.5

License

MIT

Last publish

Collaborators

  • emadum
  • cjus