UNPKG

@skele/core

Version:

Core package of the Skele framework. Element definitions, registrations and traversal.

1 lines 4.18 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.RegistryChain=RegistryChain;exports.MultivalueRegistryChain=MultivalueRegistryChain;exports.chainMultivalueRegistries=exports.chainRegistries=void 0;var R=_interopRequireWildcard(require("ramda"));var _immutable=require("immutable");var _Registry=_interopRequireDefault(require("./Registry"));var _MultivalueRegistry=_interopRequireDefault(require("./MultivalueRegistry"));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 RegistryChain(fallback,primary){this._primaryRegistry=primary;this._fallbackRegistry=fallback;this.register=function(){throw new Error('This is a read-only registry');};this.getEntry=function(key){var primary=this._primaryRegistry.getEntry(key);var fallback=this._fallbackRegistry.getEntry(key);if(primary==null&&fallback==null)return undefined;if(primary!=null&&fallback==null)return primary;if(primary==null&&fallback!=null)return fallback;return primary.key.length>=fallback.key.length?primary:fallback;};this.get=function(key){var en=this.getEntry(key);return en!=null?en.value:undefined;};this.collector=makeCollector(this);this.isEmpty=function(){return this._primaryRegistry.isEmpty()&&this._fallbackRegistry.isEmpty();};this.reset=function(){throw new Error('This is a read-only registry');};}function MultivalueRegistryChain(fallback,primary){this._fallbackRegistry=fallback;this._primaryRegistry=primary;this.register=function(){throw new Error('This is a read-only registry');};this.get=function(key){var result=[];for(var _iterator=this.collector(key),_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[typeof Symbol==="function"?Symbol.iterator:"@@iterator"]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++];}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value;}var _e=_ref;Array.prototype.push.apply(result,_e.value);}return(0,_immutable.List)(result);};this.collector=makeCollector(this);this.isEmpty=function(){return this._primaryRegistry.isEmpty()&&this._fallbackRegistry.isEmpty();};this.reset=function(){throw new Error('This is a read-only registry');};}var makeCollector=function makeCollector(self){return regeneratorRuntime.mark(function _callee(key){var primary,fallback,p,f;return regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:primary=self._primaryRegistry.collector(key);fallback=self._fallbackRegistry.collector(key);p=primary.next();f=fallback.next();case 4:if(!true){_context.next=28;break;}if(!(p.done&&f.done)){_context.next=7;break;}return _context.abrupt("break",28);case 7:if(!(p.value!=null&&f.value==null)){_context.next=12;break;}_context.next=10;return p.value;case 10:p=primary.next();return _context.abrupt("continue",4);case 12:if(!(p.value==null&&f.value!=null)){_context.next=17;break;}_context.next=15;return f.value;case 15:f=fallback.next();return _context.abrupt("continue",4);case 17:if(!(f.value.key.length<=p.value.key.length)){_context.next=23;break;}_context.next=20;return f.value;case 20:f=fallback.next();_context.next=26;break;case 23:_context.next=25;return p.value;case 25:p=primary.next();case 26:_context.next=4;break;case 28:case"end":return _context.stop();}}},_callee,this);});};var chain=function chain(Chain,Zero){return R.cond([[function(a){return a.length===0;},R.always(null)],[function(a){return a.length===1;},R.head],[R.T,R.reduce(function(a,b){return new Chain(a,b);},new Zero())]]);};var chainRegistries=chain(RegistryChain,_Registry.default);exports.chainRegistries=chainRegistries;var chainMultivalueRegistries=chain(MultivalueRegistryChain,_MultivalueRegistry.default);exports.chainMultivalueRegistries=chainMultivalueRegistries;