detect-environment
Version:
Detect environments in JavaScript similar to the way Laravel does
96 lines (71 loc) • 2.03 kB
JavaScript
var
//
hasProp = require('has-own-prop'),
/**
*
*/
findAliasName = function findAliasName (options, envName) {
//
if (!options.fallback || typeof options.fallback !== 'string') {
throw new TypeError('findAliasName:');
}
//
if (!envName || typeof envName !== 'string') {
envName = options.fallback;
}
var
//
aliases = options.aliases,
//
found = false,
//
key;
//
if (options.aliases === null) {
return envName;
}
//
if (Object.prototype.toString.call(aliases) !== '[object Object]') {
throw new TypeError('findAliasName:');
}
//
for (key in aliases) {
if (hasProp(aliases, key)) {
//
if (!aliases[key]) {
throw new TypeError('findAliasName:');
}
//
if (typeof aliases[key] === 'string') {
aliases[key] = [aliases[key]];
}
//
if (!Array.isArray(aliases[key])) {
throw new TypeError('findAliasName:');
}
//
found = aliases[key].some(function (alias) {
//
if (!alias || typeof alias !== 'string') {
throw new TypeError('findAliasName:');
}
//
if (alias === envName) {
envName = key;
return true;
}
//
return false;
});
//
if (found) {
break;
}
}
}
//
return envName;
};
// Expose to node.js
module.exports = findAliasName;
;