queryfilters
Advanced tools
Comparing version 0.3.7 to 0.3.8
@@ -1,1 +0,1 @@ | ||
"use strict";function Combinators(){var t="filtering";this.getCombinators=function(){return["and",t,"filtering_or","or"]},this.getDefaultCombinator=function(){return t}}function QueryStringBuilder(){this.filters=[];var t=new Combinators;this.combinators=t.getCombinators(),this.combine=t.getDefaultCombinator(),this.ensureHaveValidCombinator=function(){if(!this.combinators.includes(this.getCombinator()))throw new Error("combinator "+this.getCombinator()+" is not available");return this},this.setCombinator=function(t){return this.combine=t,this},this.getCombinator=function(){return this.combine},this.setFilters=function(t){return this.filters=t,this},this.build=function(){var t="",i="",e=Object.keys(this.filters),r=0,n=0,s=[],o=[],a=[];for(n=e.length;r<n;r+=1){if(s=this.filters[e[r]],this.containsRelations(s)){(o=s.field.split(".")).pop(),this.containsEmbedded(s)&&o.shift();var l=o.join();0==a.includes(l)&&(i+=""!=i?","+l:"rel="+l),a.push(l)}""!=t&&(t+="&"),t+=this.combine+"["+this.getFilterIndex(s)+"]="+s.value}var h="";return""!=i&&""!=t&&(h="&"),i+h+t},this.getFilterIndex=function(t){return!this.containsEmbedded(t)&&this.containsRelations(t)?"_embedded."+t.field:t.field},this.containsRelations=function(t){return-1!==t.field.indexOf(".")},this.containsEmbedded=function(t){return 0===t.field.indexOf("_embedded")}}function FilterManager(){this.filters=[],this.reset=function(){this.filters=[]},this.push=function(t){this.filters.push(t)},this.getFilters=function(){return this.filters},this.getFilter=function(t){return this.filters[t]},this.getFields=function(){var t=[],i=0,e=0,r=Object.keys(this.getFilters());for(e=r.length;i<e;i+=1)t.push(this.getFilter(r[i]).field);return t}}function QueryQl(){this.setCombinator=function(t){return this.builder.setCombinator(t),this},this.builder=new QueryStringBuilder,this.filterManager=new FilterManager,this.rel=[],this.applyFilter=function(t){this.filterManager.push(t)},this.getRels=function(){this.rel=[];for(var t in this.filterManager.getFilters()){var i=this.filterManager.getFilter(t);if(this.builder.containsRelations(i)){var e=i.field.split(".")[1];this.rel.push(e)}}return this.rel},this.getQueryString=function(){return this.builder.ensureHaveValidCombinator().setFilters(this.filterManager.getFilters()).build()},this.getFilters=function(){return this.filterManager.getFields()},this.containsCombinator=function(t){for(var i in t)if("object"==typeof t[i])return!0;return!1},this.detectCombinator=function(t){for(var i in t)if("object"==typeof t[i])return i;return!1},this.keepDefaultCombinator=function(){return this},this.keepOrFilteringCombinator=function(){return this.setCombinator("filtering_or"),this},this.json=function(t){var i=this.buildFieldsWithRightCombinator(t);for(var e in i)if("object"==typeof i[e]){var r=1;for(var n in i[e]){var s=e+"|"+r,o=i[e][n];r+=1,this.applyFilter({field:s,value:o})}}else this.applyFilter({field:e,value:i[e]})},this.buildFieldsWithRightCombinator=function(t){var i=t;if(this.containsCombinator(t)){var e=this.detectCombinator(t);this.setCombinator(e),i=t[e]}return i},this.parseRawField=function(t){var i=t.split("|"),e=i[1];if(-1!=["list","eq"].indexOf(e))return{field:i[0],operator:e};if(void 0===e)return{field:i[0],operator:"eq"};throw new Error("operator "+e+" is not supported")},this.getFieldOperator=function(t){for(var i in this.filterManager.getFilters())if(-1!=this.filterManager.getFilters()[i].field.indexOf(t)){var e=this.parseRawField(this.filterManager.getFilters()[i].field);return"string"==typeof e.operator?e.operator:"eq"}},this.or=function(t,i){"object"!=typeof i||1!=i.oldStyle?this.json({or:t}):this.json({filtering_or:t})},this.and=function(t,i){"object"!=typeof i||1!=i.oldStyle?this.json({and:t}):this.json({filtering:t})},this.andFiltering=function(t){var i={filtering:t};this.json(i)},this.orFiltering=function(t){var i={filtering_or:t};this.json(i)},this.storedQueries=[],this.store=function(t,i,e){this.storedQueries[i]={query:t,parameter:e}},this.getStoredQuery=function(t){return this.filterManager.reset(),this.json(this.storedQueries[t].query),this.getQueryString()},this.getQueryParameter=function(t){return this.storedQueries[t].parameter},this.getRawQuery=function(t){return this.getStoredQuery(t)},this.getFinalQuery=function(t,i){return this.getRawQuery(t).replace("##"+this.getQueryParameter(t)+"##",i)}}global.module=global.module||{},(module||{}).exports=QueryQl; | ||
"use strict";function Combinators(){var t="filtering";this.getCombinators=function(){return["and",t,"filtering_or","or"]},this.getDefaultCombinator=function(){return t}}function QueryStringBuilder(){this.filters=[],this.sorters=[];var t=new Combinators;this.combinators=t.getCombinators(),this.combine=t.getDefaultCombinator(),this.ensureHaveValidCombinator=function(){if(!this.combinators.includes(this.getCombinator()))throw new Error("combinator "+this.getCombinator()+" is not available");return this},this.setCombinator=function(t){return this.combine=t,this},this.getCombinator=function(){return this.combine},this.setSorters=function(t){return this.sorters=t,this},this.setFilters=function(t){return this.filters=t,this},this.build=function(){var t="",i="",e=Object.keys(this.filters),r=0,n=0,s=[],o=[],a=[];for(n=e.length;r<n;r+=1){if(s=this.filters[e[r]],this.containsRelations(s)){(o=s.field.split(".")).pop(),this.containsEmbedded(s)&&o.shift();var h=o.join();0==a.includes(h)&&(i+=""!=i?","+h:"rel="+h),a.push(h)}""!=t&&(t+="&"),t+=this.combine+"["+this.getFilterIndex(s)+"]="+s.value}for(var u in this.sorters){var l=this.sorters[u];t+="&sorting["+this.getFilterIndex(l)+"]="+l.value}var f="";return""!=i&&""!=t&&(f="&"),i+f+t},this.getFilterIndex=function(t){return!this.containsEmbedded(t)&&this.containsRelations(t)?"_embedded."+t.field:t.field},this.containsRelations=function(t){return-1!==t.field.indexOf(".")},this.containsEmbedded=function(t){return 0===t.field.indexOf("_embedded")}}function SortingManager(){this.sorters=[],this.push=function(t){this.sorters.push(t)},this.getSorters=function(){return this.sorters}}function FilterManager(){this.filters=[],this.reset=function(){this.filters=[]},this.push=function(t){this.filters.push(t)},this.getFilters=function(){return this.filters},this.getFilter=function(t){return this.filters[t]},this.getFields=function(){var t=[],i=0,e=0,r=Object.keys(this.getFilters());for(e=r.length;i<e;i+=1)t.push(this.getFilter(r[i]).field);return t}}function QueryQl(){this.setCombinator=function(t){return this.builder.setCombinator(t),this},this.builder=new QueryStringBuilder,this.filterManager=new FilterManager,this.sortingManager=new SortingManager,this.rel=[],this.applySorting=function(t){this.sortingManager.push(t)},this.applyFilter=function(t){this.filterManager.push(t)},this.getRels=function(){this.rel=[];for(var t in this.filterManager.getFilters()){var i=this.filterManager.getFilter(t);if(this.builder.containsRelations(i)){var e=i.field.split(".")[1];this.rel.push(e)}}return this.rel},this.getQueryString=function(){return this.builder.ensureHaveValidCombinator().setFilters(this.filterManager.getFilters()).setSorters(this.sortingManager.getSorters()).build()},this.getFilters=function(){return this.filterManager.getFields()},this.containsCombinator=function(t){for(var i in t)if("object"==typeof t[i])return!0;return!1},this.detectCombinator=function(t){for(var i in t)if("object"==typeof t[i])return i;return!1},this.keepDefaultCombinator=function(){return this},this.keepOrFilteringCombinator=function(){return this.setCombinator("filtering_or"),this},this.json=function(t){var i=this.buildFieldsWithRightCombinator(t);for(var e in i)if("object"==typeof i[e]){var r=1;for(var n in i[e]){var s=e+"|"+r,o=i[e][n];r+=1,this.applyFilter({field:s,value:o})}}else this.applyFilter({field:e,value:i[e]})},this.sort=function(t){for(var i in t)this.applySorting({field:i,value:t[i]})},this.buildFieldsWithRightCombinator=function(t){var i=t;if(this.containsCombinator(t)){var e=this.detectCombinator(t);this.setCombinator(e),i=t[e]}return i},this.parseRawField=function(t){var i=t.split("|"),e=i[1];if(-1!=["list","eq"].indexOf(e))return{field:i[0],operator:e};if(void 0===e)return{field:i[0],operator:"eq"};throw new Error("operator "+e+" is not supported")},this.getFieldOperator=function(t){for(var i in this.filterManager.getFilters())if(-1!=this.filterManager.getFilters()[i].field.indexOf(t)){var e=this.parseRawField(this.filterManager.getFilters()[i].field);return"string"==typeof e.operator?e.operator:"eq"}},this.or=function(t,i){"object"!=typeof i||1!=i.oldStyle?this.json({or:t}):this.json({filtering_or:t})},this.and=function(t,i){"object"!=typeof i||1!=i.oldStyle?this.json({and:t}):this.json({filtering:t})},this.andFiltering=function(t){var i={filtering:t};this.json(i)},this.orFiltering=function(t){var i={filtering_or:t};this.json(i)},this.storedQueries=[],this.store=function(t,i,e){this.storedQueries[i]={query:t,parameter:e}},this.getStoredQuery=function(t){return this.filterManager.reset(),this.json(this.storedQueries[t].query),this.getQueryString()},this.getQueryParameter=function(t){return this.storedQueries[t].parameter},this.getRawQuery=function(t){return this.getStoredQuery(t)},this.getFinalQuery=function(t,i){return this.getRawQuery(t).replace("##"+this.getQueryParameter(t)+"##",i)}}global.module=global.module||{},(module||{}).exports=QueryQl; |
@@ -5,5 +5,5 @@ "use strict"; | ||
var COMBINATORS_AND = "and"; | ||
var COMBINATORS_DEFAULT = "filtering"; | ||
var COMBINATORS_DEFAULT = "filtering" | ||
var COMBINATORS_FILTERING_OR = "filtering_or"; | ||
var COMBINATORS_OR = "or"; | ||
var COMBINATORS_OR = "or" | ||
@@ -27,2 +27,4 @@ this.getCombinators = function () { | ||
this.sorters = []; | ||
var combinators = new Combinators(); | ||
@@ -50,2 +52,7 @@ | ||
this.setSorters = function (sorters) { | ||
this.sorters = sorters; | ||
return this; | ||
}; | ||
this.setFilters = function (filters) { | ||
@@ -94,2 +101,10 @@ this.filters = filters; | ||
for (var s in this.sorters) { | ||
var sorter = this.sorters[s]; | ||
qs += "&sorting[" | ||
+ this.getFilterIndex(sorter) | ||
+ "]=" | ||
+ sorter.value; | ||
} | ||
var j = ""; | ||
@@ -120,2 +135,14 @@ if (rel != "" && qs != "") { | ||
function SortingManager() { | ||
this.sorters = []; | ||
this.push = function (sorter) { | ||
this.sorters.push(sorter); | ||
}; | ||
this.getSorters = function () { | ||
return this.sorters; | ||
}; | ||
} | ||
function FilterManager() { | ||
@@ -162,7 +189,12 @@ this.filters = []; | ||
this.sortingManager = new SortingManager(); | ||
this.rel = []; | ||
this.applySorting = function (sorter) { | ||
this.sortingManager.push(sorter); | ||
}; | ||
this.applyFilter = function (filter) { | ||
this.filterManager | ||
.push(filter); | ||
this.filterManager.push(filter); | ||
}; | ||
@@ -186,2 +218,3 @@ | ||
.setFilters(this.filterManager.getFilters()) | ||
.setSorters(this.sortingManager.getSorters()) | ||
.build(); | ||
@@ -244,2 +277,8 @@ }; | ||
this.sort = function(jsonSort) { | ||
for (var i in jsonSort) { | ||
this.applySorting({field:i,value:jsonSort[i]}); | ||
} | ||
}; | ||
this.buildFieldsWithRightCombinator = function (jsonQuery) { | ||
@@ -246,0 +285,0 @@ var fields = jsonQuery; |
@@ -40,5 +40,5 @@ # Store | ||
'filtering': { | ||
'relation.nick': '##nickname##' | ||
'relation.field': '##fieldname##' | ||
} | ||
}, 'findUserByUsername', 'nickname'); | ||
}, 'findByValue', 'fieldname'); | ||
``` | ||
@@ -50,3 +50,3 @@ As you can see is it possible sto store the query, assign an alias and a name | ||
```javascript | ||
queryQl.getFinalQuery('findUserByUsername', 'simone') | ||
queryQl.getFinalQuery('findByValue', '42') | ||
``` | ||
@@ -57,3 +57,3 @@ | ||
```javascript | ||
'rel=relation&filtering[_embedded.relation.nick]=simone' | ||
'rel=relation&filtering[_embedded.relation.field]=42' | ||
``` |
var gulp = require('gulp'); | ||
var minify = require('gulp-minify'); | ||
var shell = require('gulp-shell') | ||
gulp.task('default', ['lint', 'compress'], function() { | ||
// ... | ||
}); | ||
gulp.task('test', function() { | ||
gulp.src('lib/*.js'). | ||
pipe(shell([ | ||
'clear', | ||
'npm test' | ||
])); | ||
}); | ||
gulp.task('lint', function() { | ||
gulp.src('lib/*.js'). | ||
pipe(shell([ | ||
'npm run lint -- --fix' | ||
])); | ||
}); | ||
gulp.task('compress', function() { | ||
gulp.src('lib/*.js') | ||
.pipe(minify()) | ||
.pipe(gulp.dest('dist')) | ||
gulp.src('lib/*.js') | ||
.pipe(minify()) | ||
.pipe(gulp.dest('dist')) | ||
}); | ||
@@ -100,5 +100,5 @@ "use strict"; | ||
var sorter = this.sorters[s]; | ||
qs += '&sorting[' | ||
qs += "&sorting[" | ||
+ this.getFilterIndex(sorter) | ||
+ ']=' | ||
+ "]=" | ||
+ sorter.value; | ||
@@ -105,0 +105,0 @@ } |
{ | ||
"name": "queryfilters", | ||
"version": "v0.3.7", | ||
"version": "v0.3.8", | ||
"scripts": { | ||
@@ -8,2 +8,5 @@ "test": "jest", | ||
}, | ||
"jest": { | ||
"verbose": true | ||
}, | ||
"keywords": [ | ||
@@ -26,4 +29,5 @@ "hal", | ||
"gulp-minify": "^2.1.0", | ||
"gulp-shell": "^0.6.5", | ||
"jest": "^21.2.1" | ||
} | ||
} |
@@ -139,3 +139,3 @@ const QueryQl = require('./../lib/queryql'); | ||
test.only('allow contains operator with arrays', () => { | ||
test('allow contains operator with arrays', () => { | ||
var jsonQuery = { | ||
@@ -142,0 +142,0 @@ 'relation.nick|contains': ['senso', 'rario'], |
const QueryQl = require('./../lib/queryql'); | ||
test.only('sort fields', () => { | ||
test('sort fields', () => { | ||
var queryQl = new QueryQl() | ||
@@ -5,0 +5,0 @@ |
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
49596
1049
10