UNPKG

@skele/classic

Version:

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

1 lines 3.07 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 _registry=require("../registry");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 chainRegistries=_core.registry.chainRegistries;var effectsRegistryAttribute='@@skele/_effectsRegistry';var sideEffectsRegistryAttribute='@@skele/_sideEffectsRegistry';Subsystem.extend(function(){var _effect,_sideEffect;var effectsRegistry=new _registry.ActionRegistry();var sideEffectsRegistry=new _registry.ActionRegistry();var register=R.curry(function(registry,kind,action,effect){(0,_invariant.default)(_core.data.isElementRef(kind),'You must provide a valid element reference to register');(0,_invariant.default)(typeof action==='string','The action must be a string');(0,_invariant.default)(typeof effect==='function','the effect must be a function');registry.register(_registry.ActionRegistry.keyFor(kind,action),effect);});var forKind=R.curry(function(registry,kind,registrations){(0,_invariant.default)(typeof registrations==='function','You must provide a registrations block');registrations({register:register(registry,kind)});});return{effect:(_effect={},_defineProperty(_effect,effectsRegistryAttribute,effectsRegistry),_defineProperty(_effect,"register",register(effectsRegistry)),_defineProperty(_effect,"forKind",forKind(effectsRegistry)),_effect),sideEffect:(_sideEffect={},_defineProperty(_sideEffect,sideEffectsRegistryAttribute,sideEffectsRegistry),_defineProperty(_sideEffect,"register",register(sideEffectsRegistry)),_defineProperty(_sideEffect,"forKind",forKind(sideEffectsRegistry)),_sideEffect)};});var _default=Subsystem.create(function(system){var config={effectsRegistry:getCombinedRegistry(['effect',effectsRegistryAttribute],system.subsystemSequence),sideEffectsRegistry:getCombinedRegistry(['sideEffect',sideEffectsRegistryAttribute],system.subsystemSequence),kernel:system};return{name:'effects',middleware:impl.middleware(config),reducer:impl.reducer(config)};});exports.default=_default;var getRegistry=R.path;var getCombinedRegistry=R.curry(function(path,subsystems){return _core.data.flow(subsystems,R.map(getRegistry(path)),R.reject(R.isNil),chainRegistries);});