New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-diode

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-diode - npm Package Compare versions

Comparing version 0.2.0-beta.3 to 0.2.0-beta.4

lib/query/filterBatchQuery.js

3

lib/DiodePublic.js

@@ -39,3 +39,4 @@ 'use strict';

waitForQuery: _DiodeQueryRequest.createPendingQueryRequest,
useBatchQueries: _DiodeStore2.default.useBatchQueries.bind(_DiodeStore2.default),
useBatchQuery: _DiodeStore2.default.useBatchQuery.bind(_DiodeStore2.default),
useMockQueries: _DiodeStore2.default.useMockQueries.bind(_DiodeStore2.default),
injectNetworkLayer: _DiodeStore2.default.injectNetworkLayer.bind(_DiodeStore2.default)

@@ -42,0 +43,0 @@ };

@@ -65,3 +65,11 @@ 'use strict';

return Promise.all(requests);
return Promise.all(requests).then(function (responses) {
// Convert array of response into Map<QueryType, QueryResponse>
return responses.reduce(function (responseMap, response, id) {
var type = queryRequests[id].type;
responseMap[type] = response;
return responseMap;
}, {});
});
}

@@ -68,0 +76,0 @@ }]);

@@ -5,2 +5,8 @@ 'use strict';

var _objectAssign = require('object-assign');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -11,16 +17,24 @@

_classCallCheck(this, DiodeNetworkLayer);
this._queryMockEnabled = false;
}
/**
* @internal
*
* Supply your own network layer
*/
_createClass(DiodeNetworkLayer, [{
key: 'injectNetworkLayer',
/**
* @internal
*
* Supply your own network layer
*/
value: function injectNetworkLayer(networkLayer) {
this._injectedNetworkLayer = networkLayer;
}
}, {
key: 'injectQueryMockResolver',
value: function injectQueryMockResolver(queryMockResolver) {
this._queryMockEnabled = true;
this._queryMockResolver = queryMockResolver;
}

@@ -35,5 +49,30 @@ /**

key: 'sendQueries',
value: function sendQueries(queryRequests, options) {
value: function sendQueries(queries, options) {
var _this = this;
var queryRequests = queries;
var mockedQueryResponse = {};
var networkLayer = this._getCurrentNetworkLayer();
return networkLayer.sendQueries(queryRequests, options);
if (this._queryMockEnabled) {
queryRequests = queries.filter(function (query) {
// check whether a query as a mocked response
var queryMockResolver = _this._queryMockResolver[query.type];
if (queryMockResolver && typeof queryMockResolver === 'function') {
var mockedResponse = queryMockResolver(query);
if (mockedResponse) {
mockedQueryResponse[query.type] = mockedResponse;
return false;
}{
return true;
}
} else {
return true;
}
});
}
return networkLayer.sendQueries(queryRequests, options).then(function (response) {
return (0, _objectAssign2.default)(mockedQueryResponse, response);
});
}

@@ -40,0 +79,0 @@ }, {

@@ -7,5 +7,5 @@ 'use strict';

var DiodeQueryTypes = {
BATCHED: 'batch-query'
BATCH: 'batch-query'
};
exports.default = DiodeQueryTypes;

@@ -9,2 +9,6 @@ 'use strict';

var _lodash = require('lodash.find');
var _lodash2 = _interopRequireDefault(_lodash);
var _DiodeNetworkLayer = require('../network/DiodeNetworkLayer');

@@ -22,5 +26,5 @@

var _filterBatchQueries = require('../query/filterBatchQueries');
var _filterBatchQuery = require('../query/filterBatchQuery');
var _filterBatchQueries2 = _interopRequireDefault(_filterBatchQueries);
var _filterBatchQuery2 = _interopRequireDefault(_filterBatchQuery);

@@ -61,8 +65,18 @@ var _resolveBatchQuery = require('../query/resolveBatchQuery');

}, {
key: 'useBatchQueries',
value: function useBatchQueries(batchQueries) {
key: 'useMockQueries',
value: function useMockQueries(queryMockResolver) {
this._networkLayer.injectQueryMockResolver(queryMockResolver);
}
/**
* @public
*/
}, {
key: 'useBatchQuery',
value: function useBatchQuery(batchQuery) {
/* istanbul ignore else */
if (batchQueries && batchQueries.length) {
this._batchQueriesEnabled = true;
this._batchQueries = batchQueries;
if (batchQuery) {
this._batchQueryEnabled = true;
this._batchQuery = batchQuery;
}

@@ -126,14 +140,11 @@ }

if (this._batchQueriesEnabled) {
queries = (0, _filterBatchQueries2.default)(queries, this._batchQueries);
if (this._batchQueryEnabled) {
queries = (0, _filterBatchQuery2.default)(queries, this._batchQuery);
}
return this._networkLayer.sendQueries(queries, options).then(function (responses) {
// Convert array of response into Map<QueryType, QueryResponse>
var responseMap = responses.reduce(function (responseMap, response, id) {
var query = queries[id];
var type = query.type;
var fragment = query.fragment;
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 });
if (type === _DiodeQueryTypes2.default.BATCH) {

@@ -143,9 +154,9 @@ // BatchQuery returns multiple response at once as single object,

// batch query response resolution
var batchQueryResponseMap = (0, _resolveBatchQuery2.default)(query.resolve(response, options), initialQueries, options);
(0, _objectAssign2.default)(responseMap, batchQueryResponseMap);
var batchQueryResponseMap = (0, _resolveBatchQuery2.default)(query.resolve(queryResponse, options), initialQueries, options);
(0, _objectAssign2.default)(map, batchQueryResponseMap);
} else {
responseMap[type] = query.resolve(response, fragment, options);
map[type] = query.resolve(queryResponse, query.fragment, options);
}
return responseMap;
return map;
}, {});

@@ -152,0 +163,0 @@

{
"name": "react-diode",
"version": "0.2.0-beta.3",
"version": "0.2.0-beta.4",
"description": "Endpoint agnostic, unidirectional data fetching for React applications",

@@ -5,0 +5,0 @@ "main": "lib/DiodePublic.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc