Viewing File: /home/ubuntu/todaykat-frontend-base/node_modules/react-global-configuration/build/configuration.js
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.set = set;
exports.get = get;
exports.serialize = serialize;
exports.setEnvironment = setEnvironment;
var _objectAssign = _interopRequireDefault(require("object-assign"));
var _deepFreeze = _interopRequireDefault(require("deep-freeze"));
var _serializeJavascript = _interopRequireDefault(require("serialize-javascript"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var configuration = null;
var setOptions = {};
var currentEnvironment = null;
var validOptions = ['freeze', 'assign', 'environment'];
var booleanOptions = ['freeze', 'assign'];
var stringOptions = ['environment'];
var persistentOptions = ['freeze'];
var debugEnv = ['development', 'test'];
function set(newConfiguration) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (configuration && setOptions.freeze !== false) {
throw new Error('react-global-configuration - Configuration is already set, the initial call should have \'freeze\' set to false to allow for this behaviour (e.g. in testing');
}
if (configuration == null) {
configuration = {};
}
if (options) {
for (var option in options) {
//Check if is a valid option
if (validOptions.indexOf(option) !== -1) {
//Check value of option
var value = options[option];
if (stringOptions.indexOf(option) !== -1 && typeof value !== 'string') {
throw new Error("react-global-configuration - Unexpected value type for ".concat(option, " : ").concat(_typeof(value), ", string expected"));
}
if (booleanOptions.indexOf(option) !== -1 && typeof value !== 'boolean') {
throw new Error("react-global-configuration - Unexpected value type for ".concat(option, " : ").concat(_typeof(value), ", boolean expected"));
}
if (persistentOptions.indexOf(option) !== -1) {
setOptions[option] = value;
}
} else {
throw new Error("react-global-configuration - Unrecognised option '".concat(option, "' passed to set"));
}
}
}
var env = options.environment !== undefined ? options.environment : 'global';
if (options.assign) {
configuration[env] = (0, _objectAssign["default"])(getEnvironmentConfiguration(env), newConfiguration);
} else {
configuration[env] = newConfiguration;
}
if (setOptions.freeze !== false && Object.freeze && Object.getOwnPropertyNames) {
configuration = (0, _deepFreeze["default"])(configuration);
} else if (!Object.freeze || !Object.getOwnPropertyNames) {
sayWarning('react-global-configuration - Could not call freeze as native functions arent\'t available');
}
}
function get(key) {
var fallbackValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!configuration) {
sayWarning('react-global-configuration - Configuration has not been set.');
}
var value = fetchFromObject(getEnvironmentConfiguration(), key);
if (currentEnvironment) {
var config = getEnvironmentConfiguration(currentEnvironment);
var envValue = fetchFromObject(config !== null ? config : {}, key);
value = envValue !== undefined ? envValue : value;
} //Fix to return null values
if (value !== undefined) {
return value;
}
if (key !== undefined) {
value = fallbackValue;
} else {
sayWarning("react-global-configuration - There is no value with the key: ".concat(key));
value = getEnvironmentConfiguration();
}
return value;
}
function serialize(env) {
var configuration = getEnvironmentConfiguration(env);
return (0, _serializeJavascript["default"])(configuration);
}
function setEnvironment(env) {
if (env === undefined) {
throw new Error('react-global-configuration - You have to define an environment');
}
if (env !== null && typeof env !== 'string') {
throw new Error('react-global-configuration - Unexpected environment value, null or string expected');
}
return currentEnvironment = env;
}
/* **************************** */
/* Helpers
/* **************************** */
function getEnvironmentConfiguration(env) {
env = env !== undefined ? env : 'global';
return configuration && configuration[env] !== undefined ? configuration[env] : null;
}
function fetchFromObject(obj, key) {
key = key !== undefined ? key : '';
if (typeof obj === 'undefined') {
return undefined;
}
var index = key.indexOf('.');
if (index > -1) {
return fetchFromObject(obj[key.substring(0, index)], key.substr(index + 1));
}
return obj[key];
}
function sayWarning(text) {
if (debugEnv.indexOf(process.env.NODE_ENV)) {
void 0;
}
}
Back to Directory
File Manager