UNPKG

@skele/classic

Version:

Skele is an architectural framework that assists with building data-driven apps with React or React Native.

1 lines 2.3 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var R=_interopRequireWildcard(require("ramda"));var _invariant=_interopRequireDefault(require("invariant"));var _core=require("@skele/core");var SubSystem=_interopRequireWildcard(require("../subsystem"));var impl=_interopRequireWildcard(require("./impl"));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 _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}var registryAttribute='@@skele/_enrichRegistry';var MultivalueRegistry=_core.registry.MultivalueRegistry,chainMultivalueRegistries=_core.registry.chainMultivalueRegistries;var isElementRef=_core.data.isElementRef;SubSystem.extend(function(){var _enrich;var registry=new MultivalueRegistry();return{enrich:(_enrich={},_defineProperty(_enrich,registryAttribute,registry),_defineProperty(_enrich,"register",function register(kind,enricher){(0,_invariant.default)(isElementRef(kind),'You must provide a valid element reference to register');(0,_invariant.default)(enricher!=null&&typeof enricher==='function','You must provide an enricher function');registry.register(kind,enricher);}),_defineProperty(_enrich,"reset",function reset(){registry.reset();}),_enrich)};});var _default=SubSystem.create(function(system){return{name:'enrich',buildEnricher:function buildEnricher(){var combinedRegistry=getCombinedRegistry(system.subsystemSequence);if(combinedRegistry==null){return function(x){return Promise.resolve(x);};}return impl.enricher({registry:combinedRegistry,elementZipper:system.elementZipper});}};});exports.default=_default;var getRegistry=R.path(['enrich',registryAttribute]);var getCombinedRegistry=R.pipe(R.map(getRegistry),R.reject(R.isNil),chainMultivalueRegistries);