UNPKG

@skele/config

Version:

Skele package that provides the posibility to define a custom configuration

1 lines 3.57 kB
Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var R=_interopRequireWildcard(require("ramda"));var _merge=_interopRequireDefault(require("./utils/merge"));var _freeze=_interopRequireDefault(require("./utils/freeze"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[typeof Symbol==="function"?Symbol.iterator:"@@iterator"](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}var Layer=function(){function Layer(configuration,prev,frozen){_classCallCheck(this,Layer);this.configuration=configuration;this.prev=prev;this.frozen=frozen;}_createClass(Layer,[{key:"define",value:function define(config){return new Layer(config,this,false);}},{key:"init",value:function init(profiles){var activeProfiles=profiles;if(profiles){activeProfiles=R.reverse(profiles);}var sequenceOfLayers=[];var layer=this;while(layer){sequenceOfLayers.unshift(layer);layer=layer.prev;}var computedConfigurations=[];sequenceOfLayers.forEach(function(layer){if(layer.frozen){throw'Cannot initialize configuration, layer is frozen';}Object.entries(layer.configuration).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),feature=_ref2[0],configOfLayer=_ref2[1];var defaultProfileForLayer=R.pickBy(function(val,key){return key!=='profiles';},configOfLayer);computedConfigurations[feature]=(0,_merge.default)(computedConfigurations[feature],defaultProfileForLayer);if(activeProfiles){activeProfiles.forEach(function(profile){if(configOfLayer['profiles']){computedConfigurations[feature]=(0,_merge.default)(computedConfigurations[feature],configOfLayer['profiles'][profile]);}});}});layer.frozen=true;});sequenceOfLayers.forEach(function(layer){Object.entries(computedConfigurations).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),feature=_ref4[0],computedConfiguration=_ref4[1];Object.defineProperty(layer,feature,{writable:false,value:(0,_freeze.default)(computedConfiguration)});});});}}]);return Layer;}();exports.default=Layer;