Comparing version
(function webpackUniversalModuleDefinition(root, factory) { | ||
if(typeof exports === 'object' && typeof module === 'object') | ||
module.exports = factory(require("Immutable"), require("React")); | ||
module.exports = factory(require("Immutable")); | ||
else if(typeof define === 'function' && define.amd) | ||
define(["Immutable", "React"], factory); | ||
define(["Immutable"], factory); | ||
else if(typeof exports === 'object') | ||
exports["GyreJS"] = factory(require("Immutable"), require("React")); | ||
exports["GyreJS"] = factory(require("Immutable")); | ||
else | ||
root["GyreJS"] = factory(root["Immutable"], root["React"]); | ||
})(this, function(__WEBPACK_EXTERNAL_MODULE_6__, __WEBPACK_EXTERNAL_MODULE_7__) { | ||
root["GyreJS"] = factory(root["Immutable"]); | ||
})(this, function(__WEBPACK_EXTERNAL_MODULE_7__) { | ||
return /******/ (function(modules) { // webpackBootstrap | ||
@@ -66,3 +66,3 @@ /******/ // The module cache | ||
var _store = __webpack_require__(5); | ||
var _store = __webpack_require__(6); | ||
@@ -75,5 +75,48 @@ var _store2 = _interopRequireDefault(_store); | ||
exports.Store = _store2["default"]; | ||
exports.LocalFactory = _gyresLocalLocalFactory2["default"]; | ||
// Middleware | ||
var _middleWareDispatchLogger = __webpack_require__(5); | ||
var _middleWareDispatchLogger2 = _interopRequireDefault(_middleWareDispatchLogger); | ||
var middleWare = { | ||
dispatchLogger: _middleWareDispatchLogger2["default"] | ||
}; | ||
// Private variables | ||
var gyres = new Map(); | ||
var store = _store2["default"](); | ||
// Public functions | ||
/** | ||
* createGyre() | ||
* | ||
* @param {String} id Id of a registered gyre. | ||
* @returns {Object} Gyre instance. | ||
*/ | ||
var createGyre = function createGyre(id) { | ||
if (!gyres.has(id)) { | ||
console.warn("GyreJS: Gyre '" + id + "' not registered."); | ||
} | ||
return gyres.get(id)(store); | ||
}; | ||
/** | ||
* registerGyreFactory() | ||
* | ||
* @param {String} id Id of to register gyre. | ||
* @param {Function} factory Gyre factory function. | ||
* @returns {void} | ||
*/ | ||
var registerGyreFactory = function registerGyreFactory(id, factory) { | ||
gyres.set(id, factory); | ||
}; | ||
// Register standard gyres | ||
registerGyreFactory("local", _gyresLocalLocalFactory2["default"]); | ||
exports.createGyre = createGyre; | ||
exports.middleWare = middleWare; | ||
exports.registerGyreFactory = registerGyreFactory; | ||
/***/ }, | ||
@@ -86,6 +129,5 @@ /* 1 */ | ||
* | ||
* @param {Object} store instance | ||
* @param {String} nameSpace state key | ||
* @param {Boolean} [debugMode] Whether to enable debugging | ||
* @returns {{addAction: Function, dispatch: Function}} API | ||
* @param {Object} store instance. | ||
* @param {String} nameSpace state key. | ||
* @returns {{addAction: Function, dispatch: Function}} API. | ||
*/ | ||
@@ -95,6 +137,6 @@ "use strict"; | ||
exports.__esModule = true; | ||
var localAH = function localAH(store, nameSpace, debugMode) { | ||
var localAH = function localAH(store, nameSpace) { | ||
// Private variables | ||
var actionMap = new Map(); | ||
var stateHistory = []; | ||
var middleWare = []; | ||
@@ -105,4 +147,4 @@ // Public functions | ||
* | ||
* @param {String} id Action ID | ||
* @param {Function} func Reducer function | ||
* @param {String} id Action ID. | ||
* @param {Function} func Reducer function. | ||
* @returns {void} | ||
@@ -112,7 +154,3 @@ */ | ||
return actionMap.set(id, function (args) { | ||
var newState = store.updateState(nameSpace, func, args, id); | ||
if (debugMode) { | ||
stateHistory.push(newState); | ||
console.log(">> GyreJS-'" + nameSpace + "'-store: Applying action '" + id + "'", args, func); | ||
} | ||
store.updateState(nameSpace, func, args, id); | ||
}); | ||
@@ -122,6 +160,18 @@ }; | ||
/** | ||
* addActions() | ||
* | ||
* @param {Object} actions Key/func object of actions. | ||
* @returns {void} | ||
*/ | ||
var addActions = function addActions(actions) { | ||
Object.keys(actions).forEach(function (action) { | ||
addAction(action, actions[action]); | ||
}); | ||
}; | ||
/** | ||
* dispatch() | ||
* | ||
* @param {String} id Id | ||
* @param {Array} args Function arguments | ||
* @param {Array} args Function arguments. | ||
* @returns {void} | ||
@@ -135,5 +185,11 @@ */ | ||
if (actionMap.has(id)) { | ||
actionMap.get(id)(args); | ||
middleWare.reduce(function (prev, next) { | ||
return function () { | ||
return next(nameSpace, id, args, prev); | ||
}; | ||
}, function () { | ||
return actionMap.get(id)(args); | ||
})(); | ||
} else { | ||
console.warn("GyreJS-AH: Unregistered action requested: '" + id + "' with arguments:", args); | ||
console.warn("GyreJS-'" + nameSpace + "'-AH: Unregistered action requested: '" + id + "' with arguments:", args); | ||
} | ||
@@ -143,8 +199,9 @@ }; | ||
/** | ||
* getStateList() returns the state list. | ||
* use() | ||
* | ||
* @returns {Array} Full state history | ||
* @param {Function} mware Middleware function. | ||
* @returns {void} | ||
*/ | ||
var getStateHistory = function getStateHistory() { | ||
return stateHistory; | ||
var use = function use(mware) { | ||
middleWare.unshift(mware); | ||
}; | ||
@@ -155,4 +212,5 @@ | ||
addAction: addAction, | ||
addActions: addActions, | ||
dispatch: dispatch, | ||
getStateHistory: getStateHistory | ||
use: use | ||
}; | ||
@@ -182,2 +240,4 @@ }; | ||
// React components | ||
var _localReactHoC = __webpack_require__(3); | ||
@@ -188,3 +248,3 @@ | ||
/** | ||
* localFactory() | ||
* * localFactory() | ||
* | ||
@@ -194,3 +254,3 @@ * @param {Object} store Store instance | ||
* @param {Boolean} [debugMode] Debug mode switch | ||
* @returns {{AH: *, getHoC: Function, getReducer: Function}} API | ||
* @returns {{addAction: Function, dispatch: Function, getHoC: Function, getStateHistory: Function, setState: Function}} API | ||
*/ | ||
@@ -201,2 +261,3 @@ var localFactory = function localFactory(store, NS) { | ||
var nameSpace = NS || "local"; | ||
var AH = _localAH2["default"](store, nameSpace, debugMode); | ||
@@ -216,11 +277,2 @@ // Public functions | ||
/** | ||
* Getter for ReactJS HoC | ||
* | ||
* @returns {Function} HoC Factory | ||
*/ | ||
var getHoC = function getHoC() { | ||
return _localReactHoC2["default"](getReducer); | ||
}; | ||
/** | ||
* setState() | ||
@@ -237,6 +289,9 @@ * | ||
return { | ||
AH: _localAH2["default"](store, nameSpace, debugMode), | ||
getHoC: getHoC, | ||
addAction: AH.addAction, | ||
addActions: AH.addActions, | ||
dispatch: AH.dispatch, | ||
getReducer: getReducer, | ||
setState: setState | ||
reactHoC: _localReactHoC2["default"], | ||
setState: setState, | ||
use: AH.use | ||
}; | ||
@@ -250,4 +305,11 @@ }; | ||
/* 3 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
/***/ function(module, exports) { | ||
/** | ||
* Higher order Component factory for local gyre. | ||
* | ||
* @param {Object} React Current react instance | ||
* @param {Function} reducer Reducer factory | ||
* @returns {Function} HoC Factory | ||
*/ | ||
"use strict"; | ||
@@ -259,15 +321,3 @@ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
var _react = __webpack_require__(7); | ||
var _react2 = _interopRequireDefault(_react); | ||
/** | ||
* Higher order Component factory for local gyre. | ||
* | ||
* @param {Function} reducer Reducer factory | ||
* @returns {Function} HoC Factory | ||
*/ | ||
var localHoCFactory = function localHoCFactory(reducer) { | ||
var localHoCFactory = function localHoCFactory(React, reducer) { | ||
/** | ||
@@ -282,3 +332,3 @@ * localHoC() | ||
return function (matcher, DefaultComponent, initialData) { | ||
return _react2["default"].createClass({ | ||
return React.createClass({ | ||
displayName: "GyreJS-localHoC", | ||
@@ -303,5 +353,3 @@ getInitialState: function getInitialState() { | ||
render: function render() { | ||
// Render wrapped component with current props and state as props. | ||
var Component = this.state ? DefaultComponent : null; | ||
return Component ? _react2["default"].createElement(Component, _extends({}, this.props, this.state)) : false; | ||
return this.state ? React.createElement(DefaultComponent, _extends({}, this.props, this.state)) : false; | ||
} | ||
@@ -356,2 +404,26 @@ }); | ||
/* 5 */ | ||
/***/ function(module, exports) { | ||
/** | ||
* dispatchLogger() | ||
* | ||
* @param {String} nameSpace Gyre namespace. | ||
* @param {String} id Action Id. | ||
* @param {Array} args Action arguments array. | ||
* @param {Function} next Call next function in chain. | ||
* @returns {void} | ||
*/ | ||
"use strict"; | ||
exports.__esModule = true; | ||
var dispatchLogger = function dispatchLogger(nameSpace, id, args, next) { | ||
console.log(">> GyreJS-'" + nameSpace + "'-store: Applying action '" + id + "' with arguments: ", args); | ||
next(); | ||
}; | ||
exports["default"] = dispatchLogger; | ||
module.exports = exports["default"]; | ||
/***/ }, | ||
/* 6 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -365,3 +437,3 @@ | ||
var _immutable = __webpack_require__(6); | ||
var _immutable = __webpack_require__(7); | ||
@@ -392,3 +464,3 @@ var _immutable2 = _interopRequireDefault(_immutable); | ||
return reducerMap.forEach(function (reducer) { | ||
reducer(state); | ||
return reducer(state); | ||
}); | ||
@@ -492,8 +564,2 @@ }; | ||
/***/ }, | ||
/* 6 */ | ||
/***/ function(module, exports) { | ||
module.exports = __WEBPACK_EXTERNAL_MODULE_6__; | ||
/***/ }, | ||
/* 7 */ | ||
@@ -500,0 +566,0 @@ /***/ function(module, exports) { |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("Immutable"),require("React")):"function"==typeof define&&define.amd?define(["Immutable","React"],e):"object"==typeof exports?exports.GyreJS=e(require("Immutable"),require("React")):t.GyreJS=e(t.Immutable,t.React)}(this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var u=n[r]={exports:{},id:r,loaded:!1};return t[r].call(u.exports,u,u.exports,e),u.loaded=!0,u.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=n(5),o=r(u),a=n(2),i=r(a);e.Store=o.default,e.LocalFactory=i.default},function(t,e){"use strict";e.__esModule=!0;var n=function(t,e,n){var r=new Map,u=[],o=function(o,a){return r.set(o,function(r){var i=t.updateState(e,a,r,o);n&&(u.push(i),console.log(">> GyreJS-'"+e+"'-store: Applying action '"+o+"'",r,a))})},a=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),u=1;e>u;u++)n[u-1]=arguments[u];r.has(t)?r.get(t)(n):console.warn("GyreJS-AH: Unregistered action requested: '"+t+"' with arguments:",n)},i=function(){return u};return{addAction:o,dispatch:a,getStateHistory:i}};e.default=n,t.exports=e.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=n(1),o=r(u),a=n(4),i=r(a),c=n(3),s=r(c),f=function(t,e){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=e||"local",u=function(e,u){return i.default(t,e,u,r,n)},a=function(){return s.default(u)},c=function(e){return t.setState(e,r)};return{AH:o.default(t,r,n),getHoC:a,getReducer:u,setState:c}};e.default=f,t.exports=e.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o=n(7),a=r(o),i=function(t){return function(e,n,r){return a.default.createClass({displayName:"GyreJS-localHoC",getInitialState:function(){return r||null},componentWillMount:function(){this.unRegisterReducer=t(e,this.handleNewData)},componentWillUnmount:function(){this.unRegisterReducer()},shouldComponentUpdate:function(t){return this.state!==t},handleNewData:function(t){this.setState({data:t})},render:function(){var t=this.state?n:null;return t?a.default.createElement(t,u({},this.props,this.state)):!1}})}};e.default=i,t.exports=e.default},function(t,e){"use strict";e.__esModule=!0;var n=function(t,e,n,r){var u=function(t){var u=r?t.get(r):t,o=Array.isArray(e)?e:[e];n(u?o.reduce(function(t,e){return t[e]=u.get(e),t},{}):void 0)};return t.addReducer(u)};e.default=n,t.exports=e.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=n(6),o=r(u),a=o.default.Map,i=function(){var t=a({}),e=0,n=new Map,r=function(){return n.forEach(function(e){e(t)})},u=function(t){return function(){return n.delete(t)}},o=function(e,n){var u=a.isMap(e)?e:a(e);return t=n?t.set(n,u):u,r(),t},i=function(r){var o=e++;return n.set(o,r),r(t),u(o)},c=function(){return t},s=function(t,e){return o(t,e)},f=function(e,n,r){return o(n.apply(void 0,[t.get(e)||a({})].concat(r)),e),t};return{addReducer:i,getState:c,setState:s,updateState:f}};e.default=i,t.exports=e.default},function(e,n){e.exports=t},function(t,n){t.exports=e}])}); | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("Immutable")):"function"==typeof define&&define.amd?define(["Immutable"],e):"object"==typeof exports?exports.GyreJS=e(require("Immutable")):t.GyreJS=e(t.Immutable)}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var u=n[r]={exports:{},id:r,loaded:!1};return t[r].call(u.exports,u,u.exports,e),u.loaded=!0,u.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=n(6),o=r(u),a=n(2),i=r(a),c=n(5),s=r(c),f={dispatchLogger:s.default},d=new Map,l=o.default(),p=function(t){return d.has(t)||console.warn("GyreJS: Gyre '"+t+"' not registered."),d.get(t)(l)},g=function(t,e){d.set(t,e)};g("local",i.default),e.createGyre=p,e.middleWare=f,e.registerGyreFactory=g},function(t,e){"use strict";e.__esModule=!0;var n=function(t,e){var n=new Map,r=[],u=function(r,u){return n.set(r,function(n){t.updateState(e,u,n,r)})},o=function(t){Object.keys(t).forEach(function(e){u(e,t[e])})},a=function(t){for(var u=arguments.length,o=Array(u>1?u-1:0),a=1;u>a;a++)o[a-1]=arguments[a];n.has(t)?r.reduce(function(n,r){return function(){return r(e,t,o,n)}},function(){return n.get(t)(o)})():console.warn("GyreJS-'"+e+"'-AH: Unregistered action requested: '"+t+"' with arguments:",o)},i=function(t){r.unshift(t)};return{addAction:u,addActions:o,dispatch:a,use:i}};e.default=n,t.exports=e.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=n(1),o=r(u),a=n(4),i=r(a),c=n(3),s=r(c),f=function(t,e){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=e||"local",u=o.default(t,r,n),a=function(e,u){return i.default(t,e,u,r,n)},c=function(e){return t.setState(e,r)};return{addAction:u.addAction,addActions:u.addActions,dispatch:u.dispatch,getReducer:a,reactHoC:s.default,setState:c,use:u.use}};e.default=f,t.exports=e.default},function(t,e){"use strict";e.__esModule=!0;var n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},r=function(t,e){return function(r,u,o){return t.createClass({displayName:"GyreJS-localHoC",getInitialState:function(){return o||null},componentWillMount:function(){this.unRegisterReducer=e(r,this.handleNewData)},componentWillUnmount:function(){this.unRegisterReducer()},shouldComponentUpdate:function(t){return this.state!==t},handleNewData:function(t){this.setState({data:t})},render:function(){return this.state?t.createElement(u,n({},this.props,this.state)):!1}})}};e.default=r,t.exports=e.default},function(t,e){"use strict";e.__esModule=!0;var n=function(t,e,n,r){var u=function(t){var u=r?t.get(r):t,o=Array.isArray(e)?e:[e];n(u?o.reduce(function(t,e){return t[e]=u.get(e),t},{}):void 0)};return t.addReducer(u)};e.default=n,t.exports=e.default},function(t,e){"use strict";e.__esModule=!0;var n=function(t,e,n,r){console.log(">> GyreJS-'"+t+"'-store: Applying action '"+e+"' with arguments: ",n),r()};e.default=n,t.exports=e.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}e.__esModule=!0;var u=n(7),o=r(u),a=o.default.Map,i=function(){var t=a({}),e=0,n=new Map,r=function(){return n.forEach(function(e){return e(t)})},u=function(t){return function(){return n.delete(t)}},o=function(e,n){var u=a.isMap(e)?e:a(e);return t=n?t.set(n,u):u,r(),t},i=function(r){var o=e++;return n.set(o,r),r(t),u(o)},c=function(){return t},s=function(t,e){return o(t,e)},f=function(e,n,r){return o(n.apply(void 0,[t.get(e)||a({})].concat(r)),e),t};return{addReducer:i,getState:c,setState:s,updateState:f}};e.default=i,t.exports=e.default},function(e,n){e.exports=t}])}); |
/** | ||
* localAH() | ||
* | ||
* @param {Object} store instance | ||
* @param {String} nameSpace state key | ||
* @param {Boolean} [debugMode] Whether to enable debugging | ||
* @returns {{addAction: Function, dispatch: Function}} API | ||
* @param {Object} store instance. | ||
* @param {String} nameSpace state key. | ||
* @returns {{addAction: Function, dispatch: Function}} API. | ||
*/ | ||
@@ -12,6 +11,6 @@ "use strict"; | ||
exports.__esModule = true; | ||
var localAH = function localAH(store, nameSpace, debugMode) { | ||
var localAH = function localAH(store, nameSpace) { | ||
// Private variables | ||
var actionMap = new Map(); | ||
var stateHistory = []; | ||
var middleWare = []; | ||
@@ -22,4 +21,4 @@ // Public functions | ||
* | ||
* @param {String} id Action ID | ||
* @param {Function} func Reducer function | ||
* @param {String} id Action ID. | ||
* @param {Function} func Reducer function. | ||
* @returns {void} | ||
@@ -29,7 +28,3 @@ */ | ||
return actionMap.set(id, function (args) { | ||
var newState = store.updateState(nameSpace, func, args, id); | ||
if (debugMode) { | ||
stateHistory.push(newState); | ||
console.log(">> GyreJS-'" + nameSpace + "'-store: Applying action '" + id + "'", args, func); | ||
} | ||
store.updateState(nameSpace, func, args, id); | ||
}); | ||
@@ -39,6 +34,18 @@ }; | ||
/** | ||
* addActions() | ||
* | ||
* @param {Object} actions Key/func object of actions. | ||
* @returns {void} | ||
*/ | ||
var addActions = function addActions(actions) { | ||
Object.keys(actions).forEach(function (action) { | ||
addAction(action, actions[action]); | ||
}); | ||
}; | ||
/** | ||
* dispatch() | ||
* | ||
* @param {String} id Id | ||
* @param {Array} args Function arguments | ||
* @param {Array} args Function arguments. | ||
* @returns {void} | ||
@@ -52,5 +59,11 @@ */ | ||
if (actionMap.has(id)) { | ||
actionMap.get(id)(args); | ||
middleWare.reduce(function (prev, next) { | ||
return function () { | ||
return next(nameSpace, id, args, prev); | ||
}; | ||
}, function () { | ||
return actionMap.get(id)(args); | ||
})(); | ||
} else { | ||
console.warn("GyreJS-AH: Unregistered action requested: '" + id + "' with arguments:", args); | ||
console.warn("GyreJS-'" + nameSpace + "'-AH: Unregistered action requested: '" + id + "' with arguments:", args); | ||
} | ||
@@ -60,8 +73,9 @@ }; | ||
/** | ||
* getStateList() returns the state list. | ||
* use() | ||
* | ||
* @returns {Array} Full state history | ||
* @param {Function} mware Middleware function. | ||
* @returns {void} | ||
*/ | ||
var getStateHistory = function getStateHistory() { | ||
return stateHistory; | ||
var use = function use(mware) { | ||
middleWare.unshift(mware); | ||
}; | ||
@@ -72,4 +86,5 @@ | ||
addAction: addAction, | ||
addActions: addActions, | ||
dispatch: dispatch, | ||
getStateHistory: getStateHistory | ||
use: use | ||
}; | ||
@@ -76,0 +91,0 @@ }; |
@@ -15,2 +15,4 @@ "use strict"; | ||
// React components | ||
var _localReactHoC = require("./localReactHoC"); | ||
@@ -21,3 +23,3 @@ | ||
/** | ||
* localFactory() | ||
* * localFactory() | ||
* | ||
@@ -27,3 +29,3 @@ * @param {Object} store Store instance | ||
* @param {Boolean} [debugMode] Debug mode switch | ||
* @returns {{AH: *, getHoC: Function, getReducer: Function}} API | ||
* @returns {{addAction: Function, dispatch: Function, getHoC: Function, getStateHistory: Function, setState: Function}} API | ||
*/ | ||
@@ -34,2 +36,3 @@ var localFactory = function localFactory(store, NS) { | ||
var nameSpace = NS || "local"; | ||
var AH = _localAH2["default"](store, nameSpace, debugMode); | ||
@@ -49,11 +52,2 @@ // Public functions | ||
/** | ||
* Getter for ReactJS HoC | ||
* | ||
* @returns {Function} HoC Factory | ||
*/ | ||
var getHoC = function getHoC() { | ||
return _localReactHoC2["default"](getReducer); | ||
}; | ||
/** | ||
* setState() | ||
@@ -70,6 +64,9 @@ * | ||
return { | ||
AH: _localAH2["default"](store, nameSpace, debugMode), | ||
getHoC: getHoC, | ||
addAction: AH.addAction, | ||
addActions: AH.addActions, | ||
dispatch: AH.dispatch, | ||
getReducer: getReducer, | ||
setState: setState | ||
reactHoC: _localReactHoC2["default"], | ||
setState: setState, | ||
use: AH.use | ||
}; | ||
@@ -76,0 +73,0 @@ }; |
@@ -0,1 +1,8 @@ | ||
/** | ||
* Higher order Component factory for local gyre. | ||
* | ||
* @param {Object} React Current react instance | ||
* @param {Function} reducer Reducer factory | ||
* @returns {Function} HoC Factory | ||
*/ | ||
"use strict"; | ||
@@ -7,15 +14,3 @@ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
var _react = require("react"); | ||
var _react2 = _interopRequireDefault(_react); | ||
/** | ||
* Higher order Component factory for local gyre. | ||
* | ||
* @param {Function} reducer Reducer factory | ||
* @returns {Function} HoC Factory | ||
*/ | ||
var localHoCFactory = function localHoCFactory(reducer) { | ||
var localHoCFactory = function localHoCFactory(React, reducer) { | ||
/** | ||
@@ -30,3 +25,3 @@ * localHoC() | ||
return function (matcher, DefaultComponent, initialData) { | ||
return _react2["default"].createClass({ | ||
return React.createClass({ | ||
displayName: "GyreJS-localHoC", | ||
@@ -51,5 +46,3 @@ getInitialState: function getInitialState() { | ||
render: function render() { | ||
// Render wrapped component with current props and state as props. | ||
var Component = this.state ? DefaultComponent : null; | ||
return Component ? _react2["default"].createElement(Component, _extends({}, this.props, this.state)) : false; | ||
return this.state ? React.createElement(DefaultComponent, _extends({}, this.props, this.state)) : false; | ||
} | ||
@@ -56,0 +49,0 @@ }); |
@@ -18,3 +18,46 @@ /** | ||
exports.Store = _store2["default"]; | ||
exports.LocalFactory = _gyresLocalLocalFactory2["default"]; | ||
// Middleware | ||
var _middleWareDispatchLogger = require("./middleWare/dispatchLogger"); | ||
var _middleWareDispatchLogger2 = _interopRequireDefault(_middleWareDispatchLogger); | ||
var middleWare = { | ||
dispatchLogger: _middleWareDispatchLogger2["default"] | ||
}; | ||
// Private variables | ||
var gyres = new Map(); | ||
var store = _store2["default"](); | ||
// Public functions | ||
/** | ||
* createGyre() | ||
* | ||
* @param {String} id Id of a registered gyre. | ||
* @returns {Object} Gyre instance. | ||
*/ | ||
var createGyre = function createGyre(id) { | ||
if (!gyres.has(id)) { | ||
console.warn("GyreJS: Gyre '" + id + "' not registered."); | ||
} | ||
return gyres.get(id)(store); | ||
}; | ||
/** | ||
* registerGyreFactory() | ||
* | ||
* @param {String} id Id of to register gyre. | ||
* @param {Function} factory Gyre factory function. | ||
* @returns {void} | ||
*/ | ||
var registerGyreFactory = function registerGyreFactory(id, factory) { | ||
gyres.set(id, factory); | ||
}; | ||
// Register standard gyres | ||
registerGyreFactory("local", _gyresLocalLocalFactory2["default"]); | ||
exports.createGyre = createGyre; | ||
exports.middleWare = middleWare; | ||
exports.registerGyreFactory = registerGyreFactory; |
@@ -33,3 +33,3 @@ "use strict"; | ||
return reducerMap.forEach(function (reducer) { | ||
reducer(state); | ||
return reducer(state); | ||
}); | ||
@@ -36,0 +36,0 @@ }; |
{ | ||
"name": "gyrejs", | ||
"version": "0.0.10", | ||
"version": "0.0.11", | ||
"description": "Experimental data fetching and state library geared towards ReactJS", | ||
@@ -20,3 +20,4 @@ "main": "lib/gyrejs-min.js", | ||
"prepublish": "npm run clean && npm run build", | ||
"watch": "watch 'npm run check' src tests" | ||
"watch": "watch 'npm run check' src tests", | ||
"watch:build": "watch 'npm run build' src" | ||
}, | ||
@@ -23,0 +24,0 @@ "repository": { |
/** | ||
* localAH() | ||
* | ||
* @param {Object} store instance | ||
* @param {String} nameSpace state key | ||
* @param {Boolean} [debugMode] Whether to enable debugging | ||
* @returns {{addAction: Function, dispatch: Function}} API | ||
* @param {Object} store instance. | ||
* @param {String} nameSpace state key. | ||
* @returns {{addAction: Function, dispatch: Function}} API. | ||
*/ | ||
const localAH = (store, nameSpace, debugMode) => { | ||
const localAH = (store, nameSpace) => { | ||
// Private variables | ||
const actionMap = new Map(); | ||
const stateHistory = []; | ||
const middleWare = []; | ||
@@ -18,4 +17,4 @@ // Public functions | ||
* | ||
* @param {String} id Action ID | ||
* @param {Function} func Reducer function | ||
* @param {String} id Action ID. | ||
* @param {Function} func Reducer function. | ||
* @returns {void} | ||
@@ -25,14 +24,22 @@ */ | ||
actionMap.set(id, (args) => { | ||
const newState = store.updateState(nameSpace, func, args, id); | ||
if (debugMode) { | ||
stateHistory.push(newState); | ||
console.log(`>> GyreJS-'${nameSpace}'-store: Applying action '${id}'`, args, func); | ||
} | ||
store.updateState(nameSpace, func, args, id); | ||
}); | ||
/** | ||
* addActions() | ||
* | ||
* @param {Object} actions Key/func object of actions. | ||
* @returns {void} | ||
*/ | ||
const addActions = (actions) => { | ||
Object.keys(actions).forEach(action => { | ||
addAction(action, actions[action]); | ||
}); | ||
}; | ||
/** | ||
* dispatch() | ||
* | ||
* @param {String} id Id | ||
* @param {Array} args Function arguments | ||
* @param {Array} args Function arguments. | ||
* @returns {void} | ||
@@ -42,6 +49,8 @@ */ | ||
if (actionMap.has(id)) { | ||
actionMap.get(id)(args); | ||
middleWare.reduce((prev, next) => | ||
() => next(nameSpace, id, args, prev), | ||
() => actionMap.get(id)(args))(); | ||
} | ||
else { | ||
console.warn(`GyreJS-AH: Unregistered action requested: '${id}' with arguments:`, args); | ||
console.warn(`GyreJS-'${nameSpace}'-AH: Unregistered action requested: '${id}' with arguments:`, args); | ||
} | ||
@@ -51,7 +60,10 @@ }; | ||
/** | ||
* getStateList() returns the state list. | ||
* use() | ||
* | ||
* @returns {Array} Full state history | ||
* @param {Function} mware Middleware function. | ||
* @returns {void} | ||
*/ | ||
const getStateHistory = () => stateHistory; | ||
const use = (mware) => { | ||
middleWare.unshift(mware); | ||
}; | ||
@@ -61,4 +73,5 @@ // API | ||
addAction, | ||
addActions, | ||
dispatch, | ||
getStateHistory | ||
use | ||
}; | ||
@@ -65,0 +78,0 @@ }; |
import LocalAH from "./localAH"; | ||
import LocalReducer from "./localReducer"; | ||
import LocalReactHoC from "./localReactHoC"; | ||
// React components | ||
import reactHoC from "./localReactHoC"; | ||
/** | ||
* localFactory() | ||
* * localFactory() | ||
* | ||
@@ -11,6 +13,7 @@ * @param {Object} store Store instance | ||
* @param {Boolean} [debugMode] Debug mode switch | ||
* @returns {{AH: *, getHoC: Function, getReducer: Function}} API | ||
* @returns {{addAction: Function, dispatch: Function, getHoC: Function, getStateHistory: Function, setState: Function}} API | ||
*/ | ||
const localFactory = (store, NS, debugMode = false) => { | ||
const nameSpace = NS || "local"; | ||
const AH = LocalAH(store, nameSpace, debugMode); | ||
@@ -29,10 +32,2 @@ // Public functions | ||
/** | ||
* Getter for ReactJS HoC | ||
* | ||
* @returns {Function} HoC Factory | ||
*/ | ||
const getHoC = () => | ||
LocalReactHoC(getReducer); | ||
/** | ||
* setState() | ||
@@ -48,6 +43,9 @@ * | ||
return { | ||
AH: LocalAH(store, nameSpace, debugMode), | ||
getHoC, | ||
addAction: AH.addAction, | ||
addActions: AH.addActions, | ||
dispatch: AH.dispatch, | ||
getReducer, | ||
setState | ||
reactHoC, | ||
setState, | ||
use: AH.use | ||
}; | ||
@@ -54,0 +52,0 @@ }; |
@@ -1,10 +0,9 @@ | ||
import React from "react"; | ||
/** | ||
* Higher order Component factory for local gyre. | ||
* | ||
* @param {Object} React Current react instance | ||
* @param {Function} reducer Reducer factory | ||
* @returns {Function} HoC Factory | ||
*/ | ||
const localHoCFactory = (reducer) => { | ||
const localHoCFactory = (React, reducer) => { | ||
/** | ||
@@ -39,5 +38,3 @@ * localHoC() | ||
render() { | ||
// Render wrapped component with current props and state as props. | ||
const Component = (this.state) ? DefaultComponent : null; | ||
return Component ? <Component {...this.props} {...this.state}/> : false; | ||
return this.state ? <DefaultComponent {...this.props} {...this.state}/> : false; | ||
} | ||
@@ -44,0 +41,0 @@ }); |
@@ -5,7 +5,46 @@ /** | ||
import Store from "./store"; | ||
import LocalFactory from "./gyres/local/localFactory"; | ||
import LocalGyreFactory from "./gyres/local/localFactory"; | ||
// Middleware | ||
import dispatchLogger from "./middleWare/dispatchLogger"; | ||
const middleWare = { | ||
dispatchLogger | ||
}; | ||
// Private variables | ||
const gyres = new Map(); | ||
const store = Store(); | ||
// Public functions | ||
/** | ||
* createGyre() | ||
* | ||
* @param {String} id Id of a registered gyre. | ||
* @returns {Object} Gyre instance. | ||
*/ | ||
const createGyre = (id) => { | ||
if (!gyres.has(id)) { | ||
console.warn(`GyreJS: Gyre '${id}' not registered.`); | ||
} | ||
return gyres.get(id)(store); | ||
}; | ||
/** | ||
* registerGyreFactory() | ||
* | ||
* @param {String} id Id of to register gyre. | ||
* @param {Function} factory Gyre factory function. | ||
* @returns {void} | ||
*/ | ||
const registerGyreFactory = (id, factory) => { | ||
gyres.set(id, factory); | ||
}; | ||
// Register standard gyres | ||
registerGyreFactory("local", LocalGyreFactory); | ||
export { | ||
Store, | ||
LocalFactory | ||
createGyre, | ||
middleWare, | ||
registerGyreFactory | ||
}; |
@@ -23,5 +23,3 @@ import Immutable from "immutable"; | ||
const sendUpdate = () => | ||
reducerMap.forEach((reducer) => { | ||
reducer(state); | ||
}); | ||
reducerMap.forEach(reducer => reducer(state)); | ||
@@ -28,0 +26,0 @@ /** |
Sorry, the diff of this file is not supported yet
44946
12.73%26
13.04%1182
18.44%