šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Sign inDemoInstall
Socket

modular-configuration

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

modular-configuration

A minimalistic configuration manager made The Node Way (TM)

0.0.3
latest
npm
Version published
Weekly downloads
12
33.33%
Maintainers
1
Weekly downloads
Ā 
Created
Source

Modular Configuration

A minimalistic configuration manager made The Node Way ā„¢.

Goals

Other configuration modules failed to provide a few preferred features. This module aims to provide:

  • environment variable, command line, overrides
  • load from any directory, from a list of directories (with fallbacks)
  • accept raw JSON objects
  • have strict mode(s)
  • have dot notation getters(/setters) (dot notation module)
  • setters not necessary but helpful (per instance)
  • read standard JSON, but also .JS (for dynamic fields?)
  • synchronous and asynchronous support, with promises
  • be hotloadable
  • allow configuration overlaying
  • be modular and function independently of other configuration objects
  • allow configuration nesting and access via chaining
  • allow configurations to be set, deleted, and saved
  • allow configuration locking/immutability so that changes are prevented
  • source tracking for debugging purposes
  • option to use package.json
  • browser support

API

Contents of ./config.json:

{
    "Name": "John",
    "Values": [ 1, 2, 3, 9, 7, 8 ],
    "Object": {
        "Name": "Jake",
        "Values": [ 100, 200, 300 ]
    },
    "Boolean": true,
    "Float": 0.01,
    "Redirect": {
        "Home": {
            "Address": "https://example.com/",
            "Visitors": 87
        }
    }
}

Contents of ./alternate.json:

{
    "Name": "Elizabeth"
}

Example usage:

const Config = require('modular-configuration');

const config = new Config();
const path = require('path');

config.setStrict(true);

config.load(path.join(__dirname, '/config.json'))
  .then(() => {
    console.log(config.get('Name')); // -> John
    console.log(config.get('Values')); // -> [ 1, 2, 3, 9, 7, 8 ]
    console.log(config.get('Redirect.Home.Address')); // -> https://example.com/
    console.log(config.set('Name', 'Nick'));
    console.log(config.get('Name')); // -> Nick

    const alternate = new Config();

    // Alternative loading method
    alternate.load('./alternate.json')
      .then(() => {
        console.log(config.get('Name')); // -> Elizabeth
      })
      .catch((err) => {
        console.error(err);
      });

    const subConfig = new Config();
    subConfig.loadSync(config.get('Object'));
    console.log(subConfig.get('Name')); // -> Jake
    console.log(subConfig.get('Values')); // -> [ 100, 200, 300 ]
  })
  .then(() => {
    console.log(config.get('Unknown')); // Should crash
  })
  .catch((err) => {
    console.error(err);
  });

Keywords

config

FAQs

Package last updated on 08 Feb 2019

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