
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
filter-query-parser
Advanced tools
Library for parsing the query string to an Object form and stringify Object to query string.
Library for parsing the query string to an Object form and stringify Object to query string.
Try it in console by typing FQP.
This library is inspired from the open source library artista-jql.
The parsed output object of filter-query-parser and input for stringify is build based on the output of the Angular library angular2-query-builder.
$ npm install filter-query-parser
<script src="..../FQP/dist/FQP.js"></script>
const FQP = require('..../FQP/dist/FQP.js').FQP;
Parse the query string to JavaScript Object
const query = `Age <= 25 AND (Gender = "Male" OR School contains "School")`;
const Obj = FQP.parser(query);
Returns
{
"condition":"AND",
"rules": [
{"field":"Age","operator":"<=","value":25},
{
"condition":"OR",
"rules": [
{"field":"Gender","operator":"=","value":"Male"},
{"field":"School","operator":"CONTAINS","value":"School"}
],
"not":false
}
],
"not":false
}
Stringify JavaScript Object to query string
const Obj = {
"condition":"AND",
"rules": [
{"field":"Age","operator":"<=","value":25},
{
"condition":"OR",
"rules": [
{"field":"Gender","operator":"=","value":"Male"},
{"field":"School","operator":"CONTAINS","value":"School"}
],
"not":false
}
],
"not":false
};
const query = FQP.stringify(Obj);
Returns
Age <= 25 AND (Gender = "Male" OR School contains "School")
| type | example |
|---|---|
| String | "foo", "bar", ... |
| Number | 1, 200, -15, 14.5, ... |
| Boolean | true false |
| operator | description |
|---|---|
| AND | logical conjunction |
| OR | logical sum |
| ! | logical negation |
| operator | description |
|---|---|
| = | equal |
| != | not equal |
| >= | greater than or equal to |
| <= | less than or equal to |
| > | greater than |
| < | less than |
| CONTAINS | Check if right value contains left value when right value is String Or check if right value is in left array when left value is Array |
| STARTS WITH | Check the value is starts with the right value |
| ENDS WITH | Check the value is ends with the right value |
| LIKE | Check the value is LIKE the right value |
| DOES NOT CONTAIN | Check the value DOES NOT CONTAIN the right value |
| EXACTLY MATCHES | Check the value EXACTLY MATCHES with the right value |
| BETWEEN | Check the value are BETWEEN the right values |
| NOT BETWEEN | Check the value are NOT BETWEEN the right values |
| IN | Check the value are IN the right values |
| NOT IN | Check the value are NOT IN the right values |
| NULL | Check the value is NULL |
| NOT NULL | Check the value is NOT NULL |
| sample queries | description | |
|---|---|---|
| Good | name = "hoge" | compare String |
| Good | name contains "eorg" | partial match with String |
| Good | age = 37, age < 30, age >= 3 | compare Number |
| Good | flag = true | compare Boolean |
| Good | name != "George" | not equal |
| Good | person.age > 40 | JSON dot notation |
| Good | k1 = "v1" AND k2 = "v2" | AND operator |
| Good | k1 = "v1" OR k2 = "v2" | OR operator |
| Good | k1 = "v1" AND k2 = "v2" ... AND kx= "vx" | multiple AND/OR operator |
| BAD | k1 = "v1" AND k2 = "v2" OR k3 = "v3" | mixed logical operators |
| Good | ! (name contains "eorg") | ! operator |
| Good | (a = 1 AND b = 'foo') OR c = false | with brackets |
| Good | (a = 1 OR b = 'foo') AND c = false | with brackets |
| Good | (a = 1 OR b = 'foo') AND (c = false AND d CONTAINS 'bar') | with brackets |
| BAD | ((a = 1 AND b = 'foo') OR c = false) AND d CONTAINS 'bar' | nested brackets |
FAQs
Library for parsing the query string to an Object form and stringify Object to query string.
We found that filter-query-parser demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.