Skip to content
This repository has been archived by the owner on Jul 11, 2023. It is now read-only.

Commit

Permalink
refactor(lodash): remove forEach (#674)
Browse files Browse the repository at this point in the history
I've been on the safe side and added defaults on places that probably already have defaults
  • Loading branch information
Haroenv authored and samouss committed May 9, 2019
1 parent 1fd47c5 commit 4600f45
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 32 deletions.
20 changes: 12 additions & 8 deletions src/SearchParameters/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
var keys = require('lodash/keys');
var intersection = require('lodash/intersection');
var forOwn = require('lodash/forOwn');
var forEach = require('lodash/forEach');
var filter = require('lodash/filter');
var reduce = require('lodash/reduce');
var isNaN = require('lodash/isNaN');
Expand Down Expand Up @@ -500,7 +499,7 @@ SearchParameters._parseNumbers = function(partialState) {
'minProximity'
];

forEach(numberKeys, function(k) {
numberKeys.forEach(function(k) {
var value = partialState[k];
if (typeof value === 'string') {
var parsedValue = parseFloat(value);
Expand All @@ -520,9 +519,11 @@ SearchParameters._parseNumbers = function(partialState) {

if (partialState.numericRefinements) {
var numericRefinements = {};
forEach(partialState.numericRefinements, function(operators, attribute) {
Object.keys(partialState.numericRefinements).forEach(function(attribute) {
var operators = partialState.numericRefinements[attribute] || {};
numericRefinements[attribute] = {};
forEach(operators, function(values, operator) {
Object.keys(operators).forEach(function(operator) {
var values = operators[operator];
var parsedValues = values.map(function(v) {
if (Array.isArray(v)) {
return v.map(function(vPrime) {
Expand Down Expand Up @@ -554,7 +555,8 @@ SearchParameters._parseNumbers = function(partialState) {
SearchParameters.make = function makeSearchParameters(newParameters) {
var instance = new SearchParameters(newParameters);

forEach(newParameters.hierarchicalFacets, function(facet) {
var hierarchicalFacets = newParameters.hierarchicalFacets || [];
hierarchicalFacets.forEach(function(facet) {
if (facet.rootPath) {
var currentRefinement = instance.getHierarchicalRefinement(facet.name);

Expand Down Expand Up @@ -902,9 +904,11 @@ SearchParameters.prototype = {
var newNumericRefinements = reduce(this.numericRefinements, function(memo, operators, key) {
var operatorList = {};

forEach(operators, function(values, operator) {
operators = operators || {};
Object.keys(operators).forEach(function(operator) {
var values = operators[operator] || [];
var outValues = [];
forEach(values, function(value) {
values.forEach(function(value) {
var predicateResult = attribute({val: value, op: operator}, key, 'numeric');
if (!predicateResult) outValues.push(value);
});
Expand Down Expand Up @@ -1593,7 +1597,7 @@ SearchParameters.prototype = {
return this.mutateMe(function mergeWith(newInstance) {
var ks = keys(params);

forEach(ks, function(k) {
ks.forEach(function(k) {
newInstance[k] = parsedParams[k];
});

Expand Down
27 changes: 17 additions & 10 deletions src/algoliasearch.helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ var events = require('events');
var inherits = require('./functions/inherits');

var flatten = require('lodash/flatten');
var forEach = require('lodash/forEach');
var isEmpty = require('lodash/isEmpty');

var url = require('./url');
Expand Down Expand Up @@ -306,10 +305,15 @@ AlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxF

content = Array.isArray(content) ? content[0] : content;

content.facetHits = forEach(content.facetHits, function(f) {
f.isRefined = isDisjunctive ?
state.isDisjunctiveFacetRefined(facet, f.value) :
state.isFacetRefined(facet, f.value);
content.facetHits = Array.isArray(content.facetHits)
? content.facetHits
: [];

content.facetHits = content.facetHits.map(function(f) {
f.isRefined = isDisjunctive
? state.isDisjunctiveFacetRefined(facet, f.value)
: state.isFacetRefined(facet, f.value);
return f;
});

return content;
Expand Down Expand Up @@ -1130,7 +1134,7 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {
if (this.state.isConjunctiveFacet(facetName)) {
var conjRefinements = this.state.getConjunctiveRefinements(facetName);

forEach(conjRefinements, function(r) {
conjRefinements.forEach(function(r) {
refinements.push({
value: r,
type: 'conjunctive'
Expand All @@ -1139,7 +1143,7 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {

var excludeRefinements = this.state.getExcludeRefinements(facetName);

forEach(excludeRefinements, function(r) {
excludeRefinements.forEach(function(r) {
refinements.push({
value: r,
type: 'exclude'
Expand All @@ -1148,7 +1152,7 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {
} else if (this.state.isDisjunctiveFacet(facetName)) {
var disjRefinements = this.state.getDisjunctiveRefinements(facetName);

forEach(disjRefinements, function(r) {
disjRefinements.forEach(function(r) {
refinements.push({
value: r,
type: 'disjunctive'
Expand All @@ -1158,7 +1162,9 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {

var numericRefinements = this.state.getNumericRefinements(facetName);

forEach(numericRefinements, function(value, operator) {
Object.keys(numericRefinements).forEach(function(operator) {
var value = numericRefinements[operator];

refinements.push({
value: value,
operator: operator,
Expand Down Expand Up @@ -1262,7 +1268,8 @@ AlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function(states, queryI
if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');

var results = content.results.slice();
forEach(states, function(s) {

states.forEach(function(s) {
var state = s.state;
var queriesCount = s.queriesCount;
var helper = s.helper;
Expand Down
39 changes: 25 additions & 14 deletions src/requestBuilder.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use strict';

var forEach = require('lodash/forEach');
var reduce = require('lodash/reduce');
var merge = require('lodash/merge');

Expand All @@ -21,15 +20,15 @@ var requestBuilder = {
});

// One for each disjunctive facets
forEach(state.getRefinedDisjunctiveFacets(), function(refinedFacet) {
state.getRefinedDisjunctiveFacets().forEach(function(refinedFacet) {
queries.push({
indexName: index,
params: requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet)
});
});

// maybe more to get the root level of hierarchical facets when activated
forEach(state.getRefinedHierarchicalFacets(), function(refinedFacet) {
state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {
var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);

var currentRefinement = state.getHierarchicalRefinement(refinedFacet);
Expand Down Expand Up @@ -135,10 +134,12 @@ var requestBuilder = {

var numericFilters = [];

forEach(state.numericRefinements, function(operators, attribute) {
forEach(operators, function(values, operator) {
Object.keys(state.numericRefinements).forEach(function(attribute) {
var operators = state.numericRefinements[attribute] || {};
Object.keys(operators).forEach(function(operator) {
var values = operators[operator] || [];
if (facetName !== attribute) {
forEach(values, function(value) {
values.forEach(function(value) {
if (Array.isArray(value)) {
var vs = value.map(function(v) {
return attribute + operator + v;
Expand Down Expand Up @@ -179,30 +180,40 @@ var requestBuilder = {
_getFacetFilters: function(state, facet, hierarchicalRootLevel) {
var facetFilters = [];

forEach(state.facetsRefinements, function(facetValues, facetName) {
forEach(facetValues, function(facetValue) {
var facetsRefinements = state.facetsRefinements || {};
Object.keys(facetsRefinements).forEach(function(facetName) {
var facetValues = facetsRefinements[facetName] || [];
facetValues.forEach(function(facetValue) {
facetFilters.push(facetName + ':' + facetValue);
});
});

forEach(state.facetsExcludes, function(facetValues, facetName) {
forEach(facetValues, function(facetValue) {
var facetsExcludes = state.facetsExcludes || {};
Object.keys(facetsExcludes).forEach(function(facetName) {
var facetValues = facetsExcludes[facetName] || [];
facetValues.forEach(function(facetValue) {
facetFilters.push(facetName + ':-' + facetValue);
});
});

forEach(state.disjunctiveFacetsRefinements, function(facetValues, facetName) {
if (facetName === facet || !facetValues || facetValues.length === 0) return;
var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};
Object.keys(disjunctiveFacetsRefinements).forEach(function(facetName) {
var facetValues = disjunctiveFacetsRefinements[facetName] || [];
if (facetName === facet || !facetValues || facetValues.length === 0) {
return;
}
var orFilters = [];

forEach(facetValues, function(facetValue) {
facetValues.forEach(function(facetValue) {
orFilters.push(facetName + ':' + facetValue);
});

facetFilters.push(orFilters);
});

forEach(state.hierarchicalFacetsRefinements, function(facetValues, facetName) {
var hierarchicalFacetsRefinements = state.hierarchicalFacetsRefinements || {};
Object.keys(hierarchicalFacetsRefinements).forEach(function(facetName) {
var facetValues = hierarchicalFacetsRefinements[facetName] || [];
var facetValue = facetValues[0];

if (facetValue === undefined) {
Expand Down

0 comments on commit 4600f45

Please sign in to comment.