added unit testing, and started implementing unit tests...phew
This commit is contained in:
99
node_modules/env-variable/index.js
generated
vendored
Normal file
99
node_modules/env-variable/index.js
generated
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
'use strict';
|
||||
|
||||
var has = Object.prototype.hasOwnProperty;
|
||||
|
||||
/**
|
||||
* Gather environment variables from various locations.
|
||||
*
|
||||
* @param {Object} environment The default environment variables.
|
||||
* @returns {Object} environment.
|
||||
* @api public
|
||||
*/
|
||||
function env(environment) {
|
||||
environment = environment || {};
|
||||
|
||||
if ('object' === typeof process && 'object' === typeof process.env) {
|
||||
env.merge(environment, process.env);
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof window) {
|
||||
if ('string' === window.name && window.name.length) {
|
||||
env.merge(environment, env.parse(window.name));
|
||||
}
|
||||
|
||||
if (window.localStorage) {
|
||||
try { env.merge(environment, env.parse(window.localStorage.env || window.localStorage.debug)); }
|
||||
catch (e) {}
|
||||
}
|
||||
|
||||
if (
|
||||
'object' === typeof window.location
|
||||
&& 'string' === typeof window.location.hash
|
||||
&& window.location.hash.length
|
||||
) {
|
||||
env.merge(environment, env.parse(window.location.hash.charAt(0) === '#'
|
||||
? window.location.hash.slice(1)
|
||||
: window.location.hash
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Also add lower case variants to the object for easy access.
|
||||
//
|
||||
var key, lower;
|
||||
for (key in environment) {
|
||||
lower = key.toLowerCase();
|
||||
|
||||
if (!(lower in environment)) {
|
||||
environment[lower] = environment[key];
|
||||
}
|
||||
}
|
||||
|
||||
return environment;
|
||||
}
|
||||
|
||||
/**
|
||||
* A poor man's merge utility.
|
||||
*
|
||||
* @param {Object} base Object where the add object is merged in.
|
||||
* @param {Object} add Object that needs to be added to the base object.
|
||||
* @returns {Object} base
|
||||
* @api private
|
||||
*/
|
||||
env.merge = function merge(base, add) {
|
||||
for (var key in add) {
|
||||
if (has.call(add, key)) {
|
||||
base[key] = add[key];
|
||||
}
|
||||
}
|
||||
|
||||
return base;
|
||||
};
|
||||
|
||||
/**
|
||||
* A poor man's query string parser.
|
||||
*
|
||||
* @param {String} query The query string that needs to be parsed.
|
||||
* @returns {Object} Key value mapped query string.
|
||||
* @api private
|
||||
*/
|
||||
env.parse = function parse(query) {
|
||||
var parser = /([^=?&]+)=([^&]*)/g
|
||||
, result = {}
|
||||
, part;
|
||||
|
||||
if (!query) return result;
|
||||
|
||||
for (;
|
||||
part = parser.exec(query);
|
||||
result[decodeURIComponent(part[1])] = decodeURIComponent(part[2])
|
||||
);
|
||||
|
||||
return result.env || result;
|
||||
};
|
||||
|
||||
//
|
||||
// Expose the module
|
||||
//
|
||||
module.exports = env;
|
Reference in New Issue
Block a user