Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

nconf

Package Overview
Dependencies
Maintainers
2
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nconf - npm Package Compare versions

Comparing version 0.8.2 to 0.8.3

25

lib/nconf/provider.js

@@ -290,3 +290,28 @@ /*

//
// ### function required (keys)
// #### @keys {array} List of keys
// Throws an error if any of `keys` has no value, otherwise returns `true`
Provider.prototype.required = function (keys) {
if (!Array.isArray(keys)) {
throw new Error('Incorrect parameter, array expected');
}
var missing = [];
keys.forEach(function(key) {
if (typeof this.get(key) === 'undefined') {
missing.push(key);
}
}, this);
if (missing.length) {
throw new Error('Missing required keys: ' + missing.join(', '));
} else {
return true;
}
};
//
// ### function reset (callback)

@@ -293,0 +318,0 @@ // #### @callback {function} **Optional** Continuation to respond to when complete.

44

lib/nconf/stores/file.js

@@ -12,2 +12,3 @@ /*

util = require('util'),
Secure = require('secure-keys'),
formats = require('../formats'),

@@ -53,2 +54,8 @@ Memory = require('./memory').Memory,

}
this.keys = new Secure({
secret: this.secure.secret,
alg: this.secure.alg,
format: this.format
});
}

@@ -171,15 +178,3 @@

if (this.secure) {
data = Object.keys(data).reduce(function (acc, key) {
var value = self.format.stringify(data[key]);
acc[key] = {
alg: self.secure.alg,
value: cipherConvert(value, {
alg: self.secure.alg,
secret: self.secure.secret,
encs: { input: 'utf8', output: 'hex' }
})
}
return acc;
}, {});
data = this.keys.encrypt(data);
}

@@ -203,14 +198,7 @@

return Object.keys(parsed).reduce(function (acc, key) {
var decrypted = cipherConvert(parsed[key].value, {
alg: parsed[key].alg || self.secure.alg,
secret: self.secure.secret,
encs: { input: 'hex', output: 'utf8' }
});
return this.keys.decrypt(parsed);
acc[key] = self.format.parse(decrypted);
return acc;
}, {});
};
//

@@ -306,13 +294,1 @@ // ### function search (base)

};
//
// ### function cipherConvert (contents, opts)
// Returns the result of the cipher operation
// on the contents contents.
//
function cipherConvert(contents, opts) {
var encs = opts.encs;
var cipher = crypto.createCipher(opts.alg, opts.secret);
return cipher.update(contents, encs.input, encs.output)
+ cipher.final(encs.output);
}
{
"name": "nconf",
"description": "Hierarchical node.js configuration with files, environment variables, command-line arguments, and atomic object merging.",
"version": "0.8.2",
"version": "0.8.3",
"author": "Charlie Robbins <charlie.robbins@gmail.com>",

@@ -18,5 +18,8 @@ "repository": {

"ini": "^1.3.0",
"secure-keys": "^1.0.0",
"yargs": "^3.19.0"
},
"devDependencies": {
"coveralls": "^2.11.4",
"istanbul": "^0.4.1",
"vows": "0.8.x"

@@ -26,3 +29,5 @@ },

"scripts": {
"test": "vows test/*-test.js test/**/*-test.js --spec"
"test": "vows test/*-test.js test/**/*-test.js --spec",
"cover": "istanbul cover vows -- test/*-test.js test/**/*-test.js --spec",
"coveralls": "cat coverage/lcov.info | coveralls"
},

@@ -29,0 +34,0 @@ "engines": {

# nconf
[![Version npm](https://img.shields.io/npm/v/nconf.svg?style=flat-square)](https://www.npmjs.com/package/nconf)[![npm Downloads](https://img.shields.io/npm/dm/nconf.svg?style=flat-square)](https://www.npmjs.com/package/nconf)[![Build Status](https://img.shields.io/travis/indexzero/nconf/master.svg?style=flat-square)](https://travis-ci.org/indexzero/nconf)[![Dependencies](https://img.shields.io/david/indexzero/nconf.svg?style=flat-square)](https://david-dm.org/indexzero/nconf)
[![Version npm](https://img.shields.io/npm/v/nconf.svg?style=flat-square)](https://www.npmjs.com/package/nconf)[![npm Downloads](https://img.shields.io/npm/dm/nconf.svg?style=flat-square)](https://www.npmjs.com/package/nconf)[![Build Status](https://img.shields.io/travis/indexzero/nconf/master.svg?style=flat-square)](https://travis-ci.org/indexzero/nconf)[![Coverage](https://img.shields.io/coveralls/indexzero/nconf.svg?style=flat-square)](https://coveralls.io/github/indexzero/nconf)[![Dependencies](https://img.shields.io/david/indexzero/nconf.svg?style=flat-square)](https://david-dm.org/indexzero/nconf)

@@ -152,2 +152,14 @@ Hierarchical node.js configuration with files, environment variables, command-line arguments, and atomic object merging.

nconf.remove('file');
```y
### nconf.required(keys)
Declares a set of string keys to be mandatory, and throw an error if any are missing.
```js
nconf.defaults({
keya: 'a',
});
nconf.required(['keya', 'keyb']);
// Error: Missing required keys: keyb
```

@@ -154,0 +166,0 @@

@@ -27,2 +27,3 @@ /*

assert.isFunction(nconf.reset);
assert.isFunction(nconf.required);
},

@@ -45,2 +46,12 @@ "the use() method": {

}
},
"the required() method": {
"should throw error with missing keys": function() {
nconf.set('foo:bar:bazz', 'buzz');
assert.throws(nconf.required.bind(nconf, ['missing', 'foo:bar:bazz']), Error);
},
"should return true if all required keys exist": function() {
nconf.set('foo:bar:bazz', 'buzz');
assert.isTrue(nconf.required(['foo:bar:bazz']));
}
}

@@ -47,0 +58,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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