Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Simple, environment-based configuration. confit
loads a default JSON
configuration file, additionally loading environment-specific files, if applicable.
It will also process the loaded files using any configured
shortstop protocol handlers—see Options below.
confit
adds support for adding JavaScript-style comments in your json files as each file is processed by shush before being merged into your config.
var confit = require('confit');
options
(String | Object) - the base directory in which config files live or a configuration object. If no
arguments is provided, defaults to the directory of the calling file.'use strict';
var path = require('path');
var confit = require('confit');
var basedir = path.join(__dirname, 'config');
confit(basedir).create(function (err, config) {
config.get; // Function
config.set; // Function
config.use; // Function
config.get('env:env'); // 'development'
});
addOverride(filepath)
(or) addOverride(obj)
- Use this to add file (.json or .js), to merge with the config datastore and override the overlapping data if any. Alternatively, you can also pass a json object to override.addDefault(filepath)
(or) addDefault(obj)
- Use this to add default file (.json or .js), to merge with the config datastore and serve as the default datastore. Alternatively, you can also pass a json object for defaults.create(callback)
- Creates the config object, ready for use. Callback signature: function (err, config) {}
// All methods besides `create` are chainable
confit(options)
.addDefault('./mydefaults.json') //or .addDefault({foo: 'bar'})
.addOverride('./mysettings.json') //or .addOverride({foo: 'baz'})
.create(function (err, config) {
// ...
});
// - or -
//
// var factory = confit(options);
// factory.addOverride('./mysettings.json');
// factory.create(function (err, config) {
// // ...
// });
basedir
(String) - the base directory in which config files can be found.protocols
(Object) - An object containing a mapping of
shortstop protocols to either handler implementations or an array or handler implementations.
These protocols will be used to process the config data prior to registration.
If using an array of handler implementations, each handler is run in series (see Multiple handlers
in the shortstop README).defaults
(String) - the name of the file containing all default values.
Defaults to config.json
.envignore
(Array) - any properties found in process.env
that should be ignored'use strict';
var path = require('path');
var confit = require('confit');
var handlers = require('shortstop-handlers');
var options = {
basedir: path.join(__dirname, 'config'),
protocols: {
file: handlers.file(__dirname),
glob: handlers.glob(__dirname)
}
};
confit(options).create(function (err, config) {
// ...
});
get(key)
- Retrieve the value for a given key. Colon-delimited keys can be used to traverse the object hierarchy.set(key, value)
- Set a value for the given key. Colon-delimited keys can be used to traverse the object hierarchy.use(obj)
- merge provided object into config.config.set('foo', 'bar');
config.get('foo'); // 'bar'
config.use({ foo: 'baz' });
config.get('foo'); // 'baz'
config.use({ a: { b: { c: 'd' } } } );
config.get('a:b:c'); // 'd'
By default, confit
loads process.env
and argv
values upon initialization.
Additionally, it creates convenience environment properties prefixed with
env:
based on the current NODE_ENV
setting, defaulting to development
. It
also normalizes NODE_ENV
settings so values starting with prod
become
production
, starting with stag
become staging
, starting with test
become test
and starting with dev
become development
.
// NODE_ENV='dev'
config.get('NODE_ENV'); // 'dev'
config.get('env:env'); // 'development'
config.get('env:development'); // true
config.get('env:test'); // false
config.get('env:staging'); // false
config.get('env:production'); // false
// NODE_ENV='custom'
config.get('NODE_ENV'); // 'custom'
config.get('env:env'); // 'custom'
config.get('env:development'); // false
config.get('env:test'); // false
config.get('env:staging'); // false
config.get('env:production'); // false
config.get('env:custom'); // true
Precedence takes the following form (lower numbers overwrite higher numbers):
development.json
)config.json
)env
normalization (env
, env:development
, etc)Confit by default comes with 2 shortstop handlers enabled.
import:
Merges the contents of the specified file into configuration under a given key.{
"foo": "import:./myjsonfile"
}
config:
Replaces with the value at a given key. Note that the keys in this case are dot (.) delimited.{
"foo": {
"bar": true
},
"foobar": "config:foo.bar"
}
FAQs
Environment-aware configuration.
We found that confit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.