Socket
Socket
Sign inDemoInstall

getenv

Package Overview
Dependencies
0
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.7.0 to 1.0.0

LICENSE.md

151

index.js

@@ -1,1 +0,150 @@

module.exports = require('./lib/getenv');
const util = require('util');
const url = require('url');
let fallbacksDisabled = false;
let throwError = true;
function _value(varName, fallback) {
const value = process.env[varName];
if (value === undefined) {
if (fallback === undefined && !throwError) {
return value;
}
if (fallback === undefined) {
throw new Error(
'GetEnv.Nonexistent: ' + varName + ' does not exist ' + 'and no fallback value provided.'
);
}
if (fallbacksDisabled) {
throw new Error(
'GetEnv.DisabledFallbacks: ' +
varName +
' relying on fallback ' +
'when fallbacks have been disabled'
);
}
return '' + fallback;
}
return value;
}
const convert = {
string: function(value) {
return '' + value;
},
int: function(value) {
const isInt = value.match(/^-?\d+$/);
if (!isInt) {
throw new Error('GetEnv.NoInteger: ' + value + ' is not an integer.');
}
return +value;
},
float: function(value) {
const isInfinity = +value === Infinity || +value === -Infinity;
if (isInfinity) {
throw new Error('GetEnv.Infinity: ' + value + ' is set to +/-Infinity.');
}
const isFloat = !(isNaN(value) || value === '');
if (!isFloat) {
throw new Error('GetEnv.NoFloat: ' + value + ' is not a number.');
}
return +value;
},
bool: function(value) {
const isBool = value === 'true' || value === 'false';
if (!isBool) {
throw new Error('GetEnv.NoBoolean: ' + value + ' is not a boolean.');
}
return value === 'true';
},
boolish: function(value) {
try {
return convert.bool(value);
} catch (err) {
const isBool = value === '1' || value === '0';
if (!isBool) {
throw new Error('GetEnv.NoBoolean: ' + value + ' is not a boolean.');
}
return value === '1';
}
},
url: url.parse,
};
function converter(type) {
return function(varName, fallback) {
if (typeof varName == 'string') {
// default
const value = _value(varName, fallback);
return convert[type](value);
} else {
// multibert!
return getenv.multi(varName);
}
};
}
const getenv = converter('string');
Object.keys(convert).forEach(function(type) {
getenv[type] = converter(type);
});
getenv.array = function array(varName, type, fallback) {
type = type || 'string';
if (Object.keys(convert).indexOf(type) === -1) {
throw new Error('GetEnv.ArrayUndefinedType: Unknown array type ' + type);
}
const value = _value(varName, fallback);
return value.split(/\s*,\s*/).map(convert[type]);
};
getenv.multi = function multi(spec) {
const result = {};
for (let key in spec) {
const value = spec[key];
if (util.isArray(value)) {
// default value & typecast
switch (value.length) {
case 1: // no default value
case 2: // no type casting
result[key] = getenv(value[0], value[1]); // dirty, when case 1: value[1] is undefined
break;
case 3: // with typecast
result[key] = getenv[value[2]](value[0], value[1]);
break;
default:
// wtf?
throw 'getenv.multi(): invalid spec';
break;
}
} else {
// value or throw
result[key] = getenv(value);
}
}
return result;
};
getenv.disableFallbacks = function() {
fallbacksDisabled = true;
};
getenv.enableFallbacks = function() {
fallbacksDisabled = false;
};
getenv.disableErrors = function() {
throwError = false;
};
getenv.enableErrors = function() {
throwError = true;
};
module.exports = getenv;

14

package.json

@@ -12,3 +12,4 @@ {

],
"version": "0.7.0",
"version": "1.0.0",
"license": "MIT",
"homepage": "https://github.com/ctavan/node-getenv",

@@ -19,11 +20,14 @@ "repository": {

},
"main": "./index",
"main": "index.js",
"scripts": {
"test": "make test"
"prettier": "prettier --write *.{js,md} **/*.js",
"test": "bash -ec 'for F in test/*.js; do echo \"$F\": ; node $F; done;'"
},
"engines": {
"node": "*"
"node": ">=6"
},
"dependencies": {},
"devDependencies": {},
"devDependencies": {
"prettier": "^1.18.2"
},
"keywords": [

@@ -30,0 +34,0 @@ "env",

@@ -13,2 +13,4 @@ # getenv

TypeScript types are available from the `@types/getenv` module.
## Usage

@@ -30,14 +32,14 @@

```javascript
var getenv = require('getenv');
const getenv = require('getenv');
var host = getenv('HTTP_HOST'); // same as getenv.string('HTTP_HOST');
var port = getenv.int('HTTP_PORT');
var start = getenv.bool('HTTP_START');
const host = getenv('HTTP_HOST'); // same as getenv.string('HTTP_HOST');
const port = getenv.int('HTTP_PORT');
const start = getenv.bool('HTTP_START');
if (start === true) {
// var server = http.createServer();
// const server = http.createServer();
// server.listen(port, host);
}
var abTestRatio = getenv.float('AB_TEST_RATIO');
const abTestRatio = getenv.float('AB_TEST_RATIO');

@@ -50,3 +52,3 @@ if (Math.random() < abTestRatio) {

var keywords = getenv.array('KEYWORDS');
const keywords = getenv.array('KEYWORDS');
keywords.forEach(function(keyword) {

@@ -56,3 +58,3 @@ // console.log(keyword);

var primes = getenv.array('PRIMES', 'int');
const primes = getenv.array('PRIMES', 'int');
primes.forEach(function(prime) {

@@ -100,9 +102,8 @@ // console.log(prime, typeof prime);

```javascript
var config = getenv.multi({
foo: "FOO", // throws if FOO doesn't exist
bar: ["BAR", "defaultval"], // set a default value
baz: ["BAZ", "defaultval", "string"], // parse into type
quux: ["QUUX", undefined, "int"] // parse & throw
const config = getenv.multi({
foo: 'FOO', // throws if FOO doesn't exist
bar: ['BAR', 'defaultval'], // set a default value
baz: ['BAZ', 'defaultval', 'string'], // parse into type
quux: ['QUUX', undefined, 'int'], // parse & throw
});
```

@@ -115,3 +116,3 @@

```javascript
var serviceUrl = getenv.url('SERVICE_URL');
const serviceUrl = getenv.url('SERVICE_URL');

@@ -137,3 +138,3 @@ serviceUrl.port; // parsed port number

getenv.disableErrors();
console.log(getenv("RANDOM"));
console.log(getenv('RANDOM'));
// undefined

@@ -148,7 +149,7 @@ ```

getenv.disableErrors();
console.log(getenv("RANDOM"));
console.log(getenv('RANDOM'));
// undefined
getenv.enableErrors();
console.log(getenv("RANDOM"));
console.log(getenv('RANDOM'));
// Error: GetEnv.Nonexistent: RANDOM does not exist and no fallback value provided.

@@ -159,18 +160,34 @@ ```

### v1.0.0
- Drop support for Node.js older than 6.
- Modernize code.
- Add MIT License in package.json and LICENSE.md.
### v0.7.0
- Add env.disableErrors() / getenv.enableErrors() support.
### v0.6.0
- Added getenv.boolish() support.
### v0.5.0
- Add getenv.url() support.
### v0.4.0
- Add getenv.disableFallbacks() support.
### v0.3.0
- Add getenv.multi() support.
### v0.2.0
- Rename git repository
### v0.1.0
- Initial release

@@ -177,0 +194,0 @@

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc