@girders-elements/core
Version:
Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.
115 lines (64 loc) • 3.4 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});
var _ramda=require('ramda');var _ramda2=_interopRequireDefault(_ramda);
var _invariant=require('invariant');var _invariant2=_interopRequireDefault(_invariant);
var _subsystem=require('../subsystem');var SubSystem=_interopRequireWildcard(_subsystem);
require('../update');
require('../effect');
require('../enrich');
require('../enhance');
require('../transform');
var _registry=require('../registry');
var _impl=require('./impl');var impl=_interopRequireWildcard(_impl);
var _http=require('./http');var http=_interopRequireWildcard(_http);
var _actions=require('./actions');var readActions=_interopRequireWildcard(_actions);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))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}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='@@girders-elements/_readRegistry';
var fallback=impl.fallback;
SubSystem.extend(function(){var _read;
var readRegistry=new _registry.PatternRegistry();
return{
read:(_read={},_defineProperty(_read,
registryAttribute,readRegistry),_defineProperty(_read,'register',
readRegistry.register.bind(readRegistry)),_defineProperty(_read,'reset',
readRegistry.reset.bind(readRegistry)),_defineProperty(_read,'default',
fallback),_defineProperty(_read,'fallback',
fallback),_defineProperty(_read,'http',
http),_read)};
});
var read=SubSystem.create(function(system,instantiatedSubsystems){
(0,_invariant2.default)(
instantiatedSubsystems.transform!=null,
'The read subsystem depends on the transform subsystem.'+
'You must place it in the subsystem list **before** the read.');
var registry=getCombinedRegistry(system.subsystemSequence);
var enrichment=instantiatedSubsystems.enrich.buildEnricher();
var enhancement=instantiatedSubsystems.enhance.buildEnhanceHelper();
var transformation=instantiatedSubsystems.transform.buildTransformer();
var config={
registry:registry,
enrichment:enrichment,
enhancement:enhancement,
transformation:transformation,
kernel:system};
return{
name:'read',
context:config,
perform:function perform(uri){var opts=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return impl.performRead(system,{uri:uri,opts:opts});}};
});
read.effect.forKind([],function(effects){
effects.register(readActions.types.read,impl.read);
effects.register(readActions.types.readRefresh,impl.readRefresh);
});
read.update.forKind([],function(updates){
updates.register(readActions.types.setLoading,impl.setLoading);
updates.register(readActions.types.setRefreshing,impl.setRefreshing);
updates.register(
readActions.types.setRefreshMetadata,
impl.setRefreshMetadata);
updates.register(readActions.types.apply,impl.applyRead);
updates.register(readActions.types.fail,impl.fail);
});exports.default=
read;
var getRegistry=_ramda2.default.path(['read',registryAttribute]);
var getCombinedRegistry=_ramda2.default.pipe(
_ramda2.default.map(getRegistry),
_ramda2.default.reject(_ramda2.default.isNil),_registry.chainRegistries);