Socket
Socket
Sign inDemoInstall

tg-client-query-builder

Package Overview
Dependencies
1
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.14.2 to 2.14.3

4

index.js

@@ -1,3 +0,3 @@

const QueryBuilder = require('./query-builder');
const QueryBuilder = require("./query-builder");
module.exports = QueryBuilder;
module.exports = QueryBuilder;
{
"name": "tg-client-query-builder",
"version": "2.14.2",
"version": "2.14.3",
"description": "Teselagen Client Side (browser) SQL Query Builder",
"main": "build/query-builder/index.js",
"repository": "https://github.com/TeselaGen/tg-query.git",
"author": "TeselaGen",
"license": "ISC",
"scripts": {
"prepublishOnly": "yarn build",
"build": "babel --presets=es2015 query-builder/ --out-dir build/query-builder/",
"test": "jest"
},
"dependencies": {
"lodash": "^4.17.4"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-latest": "^6.24.1",
"chai": "^4.0.2",
"fs-extra": "^3.0.1",
"jest": "^28.1.2",
"json-beautify": "^1.0.1",
"json-format": "^1.0.1",
"jsonfile": "^3.0.0"
}
}

@@ -0,22 +1,27 @@

module.exports = function combineQueries(qry1, qry2, joinOperator, opts) {
if (qry1.__objectType !== "query")
throw new Error("First query is not a query type.");
if (qry2.__objectType !== "query")
throw new Error("Second query is not a query type.");
if (qry1.entity != qry2.entity)
throw new Error(
"Queries are for different entities " +
qry1.entity +
" and " +
qry2.entity
);
if (joinOperator !== "or") joinOperator = "and";
module.exports = function combineQueries(qry1, qry2, joinOperator, opts){
if(qry1.__objectType !== 'query') throw new Error("First query is not a query type.");
if(qry2.__objectType !== 'query') throw new Error("Second query is not a query type.");
if(qry1.entity != qry2.entity) throw new Error("Queries are for different entities " + qry1.entity + " and " + qry2.entity);
var combinedFilters = {
type: "group",
operator: joinOperator,
filters: []
};
if(joinOperator !== 'or') joinOperator = 'and';
combinedFilters.filters = qry1.filters.concat(qry2.filters);
var combinedFilters =
{
type: "group",
operator: joinOperator,
filters: [ ]
};
combinedFilters.filters = qry1.filters.concat(qry2.filters);
qry1.filters = [combinedFilters];
qry1.filters = [combinedFilters];
return qry1;
}
return qry1;
};

@@ -0,20 +1,17 @@

module.exports = (function() {
function FilterExpression(opName, args) {
this.name = opName;
this.args = args;
}
module.exports = (function(){
function FilterExpression(opName, args){
this.name = opName;
this.args = args;
}
FilterExpression.prototype.toFilter = function(filterBuilder, argName){
var filterDef = {
type: "expression",
operator: this.name,
field: argName,
args: this.args
};
return filterDef;
}
return FilterExpression;
})();
FilterExpression.prototype.toFilter = function(filterBuilder, argName) {
var filterDef = {
type: "expression",
operator: this.name,
field: argName,
args: this.args
};
return filterDef;
};
return FilterExpression;
})();

@@ -35,7 +35,11 @@ // valid filters:

if (
args.some((arg) => {
args.some(arg => {
return !(_.isDate(arg) || _.isString(arg) || _.isNumber(arg));
})
) {
throw new Error(`QueryBuilderError: You must pass a date or number as args to ${opName}. You passed: Args ${args.join(",")}`);
throw new Error(
`QueryBuilderError: You must pass a date or number as args to ${opName}. You passed: Args ${args.join(
","
)}`
);
}

@@ -45,5 +49,7 @@ };

function isArray(opName) {
return (arg) => {
return arg => {
if (!_.isArray(arg)) {
throw new Error(`QueryBuilderError: You must pass an array for ${opName} filters. You passed: ${arg}`);
throw new Error(
`QueryBuilderError: You must pass an array for ${opName} filters. You passed: ${arg}`
);
}

@@ -53,5 +59,7 @@ };

function isString(opName) {
return (arg) => {
return arg => {
if (!_.isString(arg)) {
throw new Error(`QueryBuilderError: You must pass a string for ${opName} filters. You passed: ${arg}`);
throw new Error(
`QueryBuilderError: You must pass a string for ${opName} filters. You passed: ${arg}`
);
}

@@ -64,3 +72,5 @@ };

if (args.length !== argLength) {
throw new Error(`QueryBuilderError: Args for ${opName} are of length ${args.length}, but they should be of length ${argLength}`);
throw new Error(
`QueryBuilderError: Args for ${opName} are of length ${args.length}, but they should be of length ${argLength}`
);
}

@@ -73,95 +83,107 @@ };

opName: "greaterThan",
sanityChecks: [numberOfArgs("greaterThan", 1), isDateOrNumber("greaterThan")],
sanityChecks: [
numberOfArgs("greaterThan", 1),
isDateOrNumber("greaterThan")
]
},
{
opName: "inList",
sanityChecks: [numberOfArgs("inList", 1), isArray("inList")],
sanityChecks: [numberOfArgs("inList", 1), isArray("inList")]
},
{
opName: "lessThan",
sanityChecks: [numberOfArgs("lessThan", 1), isDateOrNumber("lessThan")],
sanityChecks: [numberOfArgs("lessThan", 1), isDateOrNumber("lessThan")]
},
{
opName: "lessThanOrEqual",
sanityChecks: [numberOfArgs("lessThanOrEqual", 1), isDateOrNumber("lessThanOrEqual")],
sanityChecks: [
numberOfArgs("lessThanOrEqual", 1),
isDateOrNumber("lessThanOrEqual")
]
},
{
opName: "equals",
sanityChecks: [numberOfArgs("equals", 1)],
sanityChecks: [numberOfArgs("equals", 1)]
},
{
opName: "greaterThanOrEqual",
sanityChecks: [numberOfArgs("greaterThanOrEqual", 1), isDateOrNumber("greaterThanOrEqual")],
sanityChecks: [
numberOfArgs("greaterThanOrEqual", 1),
isDateOrNumber("greaterThanOrEqual")
]
},
{
opName: "notEquals",
sanityChecks: [numberOfArgs("notEquals", 1)],
sanityChecks: [numberOfArgs("notEquals", 1)]
},
{
opName: "notNull",
sanityChecks: [numberOfArgs("notNull", 0)],
sanityChecks: [numberOfArgs("notNull", 0)]
},
{
opName: "isNull",
sanityChecks: [numberOfArgs("isNull", 0)],
sanityChecks: [numberOfArgs("isNull", 0)]
},
{
opName: "between",
sanityChecks: [numberOfArgs("between", 2), isDateOrNumber("between")],
sanityChecks: [numberOfArgs("between", 2), isDateOrNumber("between")]
},
{
opName: "notInList",
sanityChecks: [numberOfArgs("notInList", 1), isArray("notInList")],
sanityChecks: [numberOfArgs("notInList", 1), isArray("notInList")]
},
{
opName: "startsWithExactly",
sanityChecks: [numberOfArgs("startsWith", 1), isString("startsWith")],
sanityChecks: [numberOfArgs("startsWith", 1), isString("startsWith")]
},
{
opName: "endsWithExactly",
sanityChecks: [numberOfArgs("endsWith", 1), isString("endsWith")],
sanityChecks: [numberOfArgs("endsWith", 1), isString("endsWith")]
},
{
opName: "containsExactly",
sanityChecks: [numberOfArgs("contains", 1), isString("contains")],
sanityChecks: [numberOfArgs("contains", 1), isString("contains")]
},
{
opName: "startsWith",
sanityChecks: [numberOfArgs("startsWith", 1), isString("startsWith")],
sanityChecks: [numberOfArgs("startsWith", 1), isString("startsWith")]
},
{
opName: "notStartsWith",
sanityChecks: [numberOfArgs("notStartsWith", 1), isString("notStartsWith")],
sanityChecks: [numberOfArgs("notStartsWith", 1), isString("notStartsWith")]
},
{
opName: "endsWith",
sanityChecks: [numberOfArgs("endsWith", 1), isString("endsWith")],
sanityChecks: [numberOfArgs("endsWith", 1), isString("endsWith")]
},
{
opName: "notEndsWith",
sanityChecks: [numberOfArgs("notEndsWith", 1), isString("notEndsWith")],
sanityChecks: [numberOfArgs("notEndsWith", 1), isString("notEndsWith")]
},
{
opName: "contains",
sanityChecks: [numberOfArgs("contains", 1), isString("contains")],
sanityChecks: [numberOfArgs("contains", 1), isString("contains")]
},
{
opName: "notContains",
sanityChecks: [numberOfArgs("notContains", 1), isString("notContains")],
sanityChecks: [numberOfArgs("notContains", 1), isString("notContains")]
},
{
opName: "upperCase",
sanityChecks: [numberOfArgs("upperCase", 1), isString("upperCase")],
sanityChecks: [numberOfArgs("upperCase", 1), isString("upperCase")]
},
{
opName: "lowerCase",
sanityChecks: [numberOfArgs("lowerCase", 1), isString("lowerCase")],
sanityChecks: [numberOfArgs("lowerCase", 1), isString("lowerCase")]
},
{
opName: "matchesRegex",
sanityChecks: [numberOfArgs("matchesRegex", 1), isString("matchesRegex")],
sanityChecks: [numberOfArgs("matchesRegex", 1), isString("matchesRegex")]
},
{
opName: "matchesSimilar",
sanityChecks: [numberOfArgs("matchesSimilar", 1), isString("matchesSimilar")],
sanityChecks: [
numberOfArgs("matchesSimilar", 1),
isString("matchesSimilar")
]
},

@@ -171,7 +193,10 @@ {

sanityChecks: [numberOfArgs("fuzzy", 1), isString("fuzzy")],
transform: (arg) => {
transform: arg => {
// Build Regex String
var matchTerm = "";
// Split all the search terms
var terms = arg.replace(/\W/g, "").replace(" ", "").split("");
var terms = arg
.replace(/\W/g, "")
.replace(" ", "")
.split("");
for (var i = 0; i < terms.length; i++) {

@@ -183,6 +208,6 @@ matchTerm += ".*" + terms[i];

newOpName: "matchesRegex",
newArgs: [matchTerm],
newArgs: [matchTerm]
};
},
},
}
}

@@ -193,3 +218,3 @@ // 'subString', //tnr: not yet implemented

module.exports = (function () {
module.exports = (function() {
// to be implemented

@@ -228,3 +253,4 @@ //

if (entity == null) throw new Error("You must pass the name of the model being filtered!");
if (entity == null)
throw new Error("You must pass the name of the model being filtered!");

@@ -236,3 +262,3 @@ if (typeof entity === "string") {

entity,
filters: [],
filters: []
};

@@ -249,6 +275,6 @@ } else {

filters: [],
countExpression: undefined,
countExpression: undefined
};
this.parentBuilder = subQuery.parentBuilder;
this.toFilter = function (filterBuilder, name) {
this.toFilter = function(filterBuilder, name) {
this.query.foreignKey = name;

@@ -262,10 +288,10 @@ return this.toJSON();

QueryBuilder.prototype.field = function (fieldName) {
QueryBuilder.prototype.field = function(fieldName) {
return {
__objectType: "field",
field: fieldName,
field: fieldName
};
};
QueryBuilder.prototype.related = function (relatedEntity, isArrayRelation) {
QueryBuilder.prototype.related = function(relatedEntity, isArrayRelation) {
var tokens = relatedEntity.split(".");

@@ -281,3 +307,3 @@ var entity = tokens[0];

QueryBuilder.prototype.notRelated = function (relatedEntity, isArrayRelation) {
QueryBuilder.prototype.notRelated = function(relatedEntity, isArrayRelation) {
var tokens = relatedEntity.split(".");

@@ -293,3 +319,3 @@ var entity = tokens[0];

QueryBuilder.prototype.toJSON = function () {
QueryBuilder.prototype.toJSON = function() {
let qry = JSON.parse(JSON.stringify(this.query));

@@ -302,4 +328,4 @@ if (qry.filters.length > 1) {

chainedWith: "and",
filters: qry.filters,
},
filters: qry.filters
}
];

@@ -310,3 +336,3 @@ }

QueryBuilder.prototype.convertToFilter = function (argDef, operator) {
QueryBuilder.prototype.convertToFilter = function(argDef, operator) {
var whereArgs = {};

@@ -337,3 +363,3 @@ var filters = [];

type: "where",
args: whereArgs,
args: whereArgs
});

@@ -348,3 +374,3 @@ }

operator: operator || "and",
filters,
filters
};

@@ -354,3 +380,3 @@ return filterDef;

QueryBuilder.prototype.where = function () {
QueryBuilder.prototype.where = function() {
var args = [].slice.call(arguments);

@@ -360,3 +386,3 @@ return this.whereAll(args);

QueryBuilder.prototype.orWhere = function () {
QueryBuilder.prototype.orWhere = function() {
var args = [].slice.call(arguments);

@@ -366,3 +392,3 @@ return this.orWhereAll(args);

QueryBuilder.prototype.andWhere = function () {
QueryBuilder.prototype.andWhere = function() {
var args = [].slice.call(arguments);

@@ -372,3 +398,3 @@ return this.andWhereAll(args);

QueryBuilder.prototype.whereAny = function () {
QueryBuilder.prototype.whereAny = function() {
var args = [].slice.call(arguments);

@@ -378,3 +404,3 @@ return whereAny(this, args);

QueryBuilder.prototype.whereAll = function () {
QueryBuilder.prototype.whereAll = function() {
var args = [].slice.call(arguments);

@@ -384,3 +410,3 @@ return whereAll(this, args);

QueryBuilder.prototype.andWhereAny = function () {
QueryBuilder.prototype.andWhereAny = function() {
var args = [].slice.call(arguments);

@@ -390,3 +416,3 @@ return whereAny(this, args, "and");

QueryBuilder.prototype.orWhereAny = function () {
QueryBuilder.prototype.orWhereAny = function() {
var args = [].slice.call(arguments);

@@ -396,3 +422,3 @@ return whereAny(this, args, "or");

QueryBuilder.prototype.andWhereAll = function () {
QueryBuilder.prototype.andWhereAll = function() {
var args = [].slice.call(arguments);

@@ -402,3 +428,3 @@ return whereAll(this, args, "and");

QueryBuilder.prototype.orWhereAll = function () {
QueryBuilder.prototype.orWhereAll = function() {
var args = [].slice.call(arguments);

@@ -408,7 +434,9 @@ return whereAll(this, args, "or");

QueryBuilder.prototype.count = function () {
QueryBuilder.prototype.count = function() {
var args = [].slice.call(arguments);
if (this.query.type === "subquery") {
if (this.query.countExpression) {
throw new Error("QueryBuilder subquery can only have one count expression");
throw new Error(
"QueryBuilder subquery can only have one count expression"
);
}

@@ -427,3 +455,9 @@ this.query.countExpression = args[0].toFilter(this, "count");

function createSubQueryBuilder(qb, entity, key, isArrayRelation = true, modifier) {
function createSubQueryBuilder(
qb,
entity,
key,
isArrayRelation = true,
modifier
) {
return new QueryBuilder({

@@ -434,3 +468,3 @@ parentBuilder: qb,

modifier,
isArrayRelation,
isArrayRelation
});

@@ -449,3 +483,3 @@ }

}
sanityChecks.forEach((sanityCheck) => {
sanityChecks.forEach(sanityCheck => {
sanityCheck(...args);

@@ -475,3 +509,4 @@ });

function where(filterBuilder, operator, whereArgs, chainedWith) {
if (!Array.isArray(whereArgs)) return where(filterBuilder, operator, [whereArgs], chainedWith);
if (!Array.isArray(whereArgs))
return where(filterBuilder, operator, [whereArgs], chainedWith);

@@ -482,6 +517,6 @@ var filterDef = {

chainedWith,
filters: [],
filters: []
};
whereArgs.forEach((arg) => {
whereArgs.forEach(arg => {
//add check for object type TODO

@@ -488,0 +523,0 @@ var filter = filterBuilder.convertToFilter(arg, operator);

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc