react-diode
Advanced tools
Comparing version 0.2.0-beta.5 to 0.2.0-beta.6
@@ -33,5 +33,14 @@ 'use strict'; | ||
function DiodeContainer() { | ||
var _Object$getPrototypeO; | ||
_classCallCheck(this, DiodeContainer); | ||
return _possibleConstructorReturn(this, Object.getPrototypeOf(DiodeContainer).apply(this, arguments)); | ||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments[_key]; | ||
} | ||
var _this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(DiodeContainer)).call.apply(_Object$getPrototypeO, [this].concat(args))); | ||
_this.wrapperInfo = spec.wrapperInfo; | ||
return _this; | ||
} | ||
@@ -42,2 +51,11 @@ | ||
value: function render() { | ||
if (this.wrapperInfo) { | ||
return _react2.default.createElement( | ||
'div', | ||
this.wrapperInfo, | ||
_react2.default.createElement(Component, this.props) | ||
); | ||
} | ||
return _react2.default.createElement(Component, this.props); | ||
@@ -54,3 +72,5 @@ } | ||
function createContainer(Component, spec) { | ||
function createContainer(Component) { | ||
var spec = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var componentName = Component.displayName || Component.name; | ||
@@ -62,2 +82,3 @@ var containerName = 'Diode(' + componentName + ')'; | ||
function ContainerConstructor(props, context) { | ||
/* istanbul ignore else */ | ||
if (!Container) { | ||
@@ -64,0 +85,0 @@ Container = createContainerComponent(Component, spec); |
@@ -8,3 +8,12 @@ 'use strict'; | ||
var _lodash = require('lodash.find'); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
var _objectAssign = require('object-assign'); | ||
var _objectAssign2 = _interopRequireDefault(_objectAssign); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/** | ||
@@ -21,6 +30,11 @@ * Parse batch query response and assign the response to each | ||
var queryResponse = batchResponse[queryType]; | ||
// TODO use lodash? | ||
var query = _findQueryByType(initialQueries, queryType); | ||
var query = (0, _lodash2.default)(initialQueries, { type: queryType }); | ||
if (queryResponse && query) { | ||
// Special treatment for __additional property in batch query response. | ||
// This is used internally so only remove this if statement when you | ||
// know what you're doing | ||
if (queryType === '__additional') { | ||
var specialResponse = { __additional: queryResponse }; | ||
(0, _objectAssign2.default)(responseMap, specialResponse); | ||
} else if (queryResponse && query) { | ||
var resolve = query.resolve; | ||
@@ -35,12 +49,2 @@ var fragment = query.fragment; | ||
return responseMap; | ||
} | ||
function _findQueryByType(queries, type) { | ||
for (var i = 0; i < queries.length; i++) { | ||
if (queries[i].type === type) { | ||
return queries[i]; | ||
} | ||
} | ||
return null; | ||
} |
@@ -9,5 +9,5 @@ 'use strict'; | ||
var _lodash = require('lodash.find'); | ||
var _resolveContainerProps = require('../container/resolveContainerProps'); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
var _resolveContainerProps2 = _interopRequireDefault(_resolveContainerProps); | ||
@@ -18,6 +18,2 @@ var _DiodeNetworkLayer = require('../network/DiodeNetworkLayer'); | ||
var _DiodeQueryTypes = require('../query/DiodeQueryTypes'); | ||
var _DiodeQueryTypes2 = _interopRequireDefault(_DiodeQueryTypes); | ||
var _resolvePendingQueries = require('../query/resolvePendingQueries'); | ||
@@ -31,5 +27,5 @@ | ||
var _resolveBatchQuery = require('../query/resolveBatchQuery'); | ||
var _resolveQueryResponse = require('../query/resolveQueryResponse'); | ||
var _resolveBatchQuery2 = _interopRequireDefault(_resolveBatchQuery); | ||
var _resolveQueryResponse2 = _interopRequireDefault(_resolveQueryResponse); | ||
@@ -97,14 +93,4 @@ var _DiodeQueryRequest = require('../query/DiodeQueryRequest'); | ||
var queries = (0, _DiodeQueryRequest.getQueryRequests)(RootContainer); | ||
return this._fetchQueries(queries, options).then(function (response) { | ||
// Convert diode response as root container props | ||
var _RootContainer$query$ = RootContainer.query.getContainerQuery(); | ||
var queryMap = _RootContainer$query$.map; | ||
return Object.keys(queryMap).reduce(function (props, key) { | ||
props[key] = response[queryMap[key].type]; | ||
return props; | ||
}, {}); | ||
return (0, _resolveContainerProps2.default)(response, RootContainer); | ||
}); | ||
@@ -146,19 +132,4 @@ } | ||
return this._networkLayer.sendQueries(queries, options).then(function (queryResponseMap) { | ||
var responseMap = Object.keys(queryResponseMap).reduce(function (map, type) { | ||
var queryResponse = queryResponseMap[type]; | ||
var query = (0, _lodash2.default)(queries, { type: type }); | ||
var responseMap = (0, _resolveQueryResponse2.default)(queries, initialQueries, queryResponseMap, options); | ||
if (type === _DiodeQueryTypes2.default.BATCH) { | ||
// BatchQuery returns multiple response at once as single object, | ||
// we need to merge initial response with response generated by | ||
// batch query response resolution | ||
var batchQueryResponseMap = (0, _resolveBatchQuery2.default)(query.resolve(queryResponse, options), initialQueries, options); | ||
(0, _objectAssign2.default)(map, batchQueryResponseMap); | ||
} else { | ||
map[type] = query.resolve(queryResponse, query.fragment, options); | ||
} | ||
return map; | ||
}, {}); | ||
if (pendingQueries.length > 0) { | ||
@@ -165,0 +136,0 @@ var nextQueries = (0, _resolvePendingQueries2.default)(pendingQueries, responseMap); |
{ | ||
"name": "react-diode", | ||
"version": "0.2.0-beta.5", | ||
"version": "0.2.0-beta.6", | ||
"description": "Endpoint agnostic, unidirectional data fetching for React applications", | ||
@@ -48,3 +48,3 @@ "main": "lib/DiodePublic.js", | ||
"peerDependencies": { | ||
"react": "^0.14.7" | ||
"react": "^15.0.1" | ||
}, | ||
@@ -59,2 +59,3 @@ "devDependencies": { | ||
"codecov": "^1.0.1", | ||
"enzyme": "^2.2.0", | ||
"flow-bin": "^0.22.1", | ||
@@ -65,3 +66,5 @@ "marlint": "^1.5.3", | ||
"nyc": "^6.1.1", | ||
"react": "^0.14.7", | ||
"react": "^15.0.1", | ||
"react-addons-test-utils": "^15.0.1", | ||
"react-dom": "^15.0.1", | ||
"sinon": "^1.17.3", | ||
@@ -68,0 +71,0 @@ "sinon-chai": "^2.8.0" |
40789
21
812
18