@wix/filter-builder 1.0.188 → 1.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -124,7 +124,7 @@ const filterMixin = (Base = class {}) => class extends Base {
124
124
  }
125
125
  _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {
126
126
  const [field, operand] = Array.prototype.slice.call(args);
127
- const [newInvalidArguments] = this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberOrDate(operand).validateAndAggregate();
127
+ const [newInvalidArguments] = this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberBoolOrDate(operand).validateAndAggregate();
128
128
  const newFilterTree = this._makeNewFilter(field, filterOperatorSymbol, operand);
129
129
  return this._copy(newFilterTree, newInvalidArguments);
130
130
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","_filterValidator","_queryOptimiser","filterMixin","Base","constructor","obj","_defineProperty2","default","filterTree","$and","invalidArguments","encoder","eq","args","_binaryAnd","ne","ge","_AndLogicalEquivalence","gt","le","lt","isNotEmpty","field","newInvalidArguments","valid","arityIsOne","arguments","validFieldName","validateAndAggregate","_copy","isEmpty","startsWith","_AndStringOperand","endsWith","contains","hasSome","_AndSetOperand","hasAll","or","orQuery","isInstanceOfSameClass","prefix","isEmptyAnd","inAnd","$or","concat","and","andQuery","not","notQuery","newFilterTree","clone","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","arityIsThree","sameType","typeIsStringNumberOrDate","getFilterModel","length","Error","join","optimisedQuery","setFilterModel","filterModel","filterOperatorSymbol","operatorName","operand","Array","prototype","slice","call","arityIsTwo","_makeNewFilter","filterOperatorName","typeIsString","rawOperands","operands","isArray","arityIsAtLeastTwo","typeIsStringNumberOrDateForAll","serializableOperand","undefined","newFilter","_buildFilter","push","result","isEmptyObject","_encode","isFunction","FilterValidator","isConjunctiveFormFilter","Object","keys","reduce","aggr","val","node","_default","exports"],"sources":["../../src/filter-mixin.ts"],"sourcesContent":["import { isArray, isFunction } from './type-utils'\nimport clone from './clone'\nimport { FilterValidator } from './filter-validator'\nimport { Validator } from './validator'\nimport { optimisedQuery } from './query-optimiser'\n\nconst filterMixin = (Base: any = class {}) =>\n class extends Base {\n filterTree\n invalidArguments\n encoder\n\n constructor(obj: { filterTree?; invalidArguments?; encoder? } = {}) {\n super(obj)\n this.filterTree = obj.filterTree || { $and: [] }\n this.invalidArguments = obj.invalidArguments || []\n this.encoder = obj.encoder || {}\n }\n\n eq(...args) {\n return this._binaryAnd('$eq', '.eq', args)\n }\n\n ne(...args) {\n return this._binaryAnd('$ne', '.ne', args)\n }\n\n ge(...args) {\n return this._AndLogicalEquivalence('$gte', '.ge', args)\n }\n\n gt(...args) {\n return this._AndLogicalEquivalence('$gt', '.gt', args)\n }\n\n le(...args) {\n return this._AndLogicalEquivalence('$lte', '.le', args)\n }\n\n lt(...args) {\n return this._AndLogicalEquivalence('$lt', '.lt', args)\n }\n\n isNotEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isNotEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.ne(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n isEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.eq(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n startsWith(...args) {\n return this._AndStringOperand('$startsWith', '.startsWith', args)\n }\n\n endsWith(...args) {\n return this._AndStringOperand('$endsWith', '.endsWith', args)\n }\n\n contains(...args) {\n return this._AndStringOperand('$contains', '.contains', args)\n }\n\n hasSome(...args) {\n return this._AndSetOperand('$hasSome', '.hasSome', args)\n }\n\n hasAll(...args) {\n return this._AndSetOperand('$hasAll', '.hasAll', args)\n }\n\n or(orQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.or')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(orQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd({ $or: [...prefix, orQuery.filterTree] }),\n newInvalidArguments.concat(orQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n and(andQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.and')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(andQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd(...prefix, andQuery.filterTree),\n newInvalidArguments.concat(andQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n not(notQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.not')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(notQuery)\n .validateAndAggregate()\n\n if (valid) {\n const newFilterTree = clone(this.filterTree)\n const notClause = { $not: [notQuery.filterTree] }\n const resultingFilter = inAndOptimized(newFilterTree, notClause)\n\n return this._copy(\n resultingFilter,\n newInvalidArguments.concat(notQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n between(field, rangeStart, rangeEnd) {\n const [newInvalidArguments, valid] = this._filterValidator('.between')\n .arityIsThree(arguments)\n .sameType(rangeStart, rangeEnd)\n .typeIsStringNumberOrDate(rangeStart)\n .typeIsStringNumberOrDate(rangeEnd)\n .validateAndAggregate()\n\n if (valid) {\n return this.ge(field, rangeStart).lt(field, rangeEnd)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n getFilterModel() {\n if (this.invalidArguments.length > 0) {\n throw new Error(this.invalidArguments.join(' '))\n }\n return optimisedQuery(this.filterTree)\n }\n\n setFilterModel(filterModel) {\n return this._copy(filterModel, [])\n }\n\n _binaryAnd(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDate(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndStringOperand(filterOperatorName, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsString(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndSetOperand(filterOperatorName, operatorName, args) {\n const [field, ...rawOperands] = Array.prototype.slice.call(args)\n const operands = isArray(rawOperands[0]) ? rawOperands[0] : rawOperands\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsAtLeastTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDateForAll(operands)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operands\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _makeNewFilter(field, filterOperatorName, operand) {\n const newFilterTree = clone(this.filterTree)\n\n // filters with 'undefined' value are lost during serialization,\n // e.g. { val: { $ne: undefined } | translates to { val: {} }\n // Replacing 'undefined' with 'null' retains the filter.\n const serializableOperand = operand === undefined ? null : operand\n const newFilter = this._buildFilter(\n field,\n filterOperatorName,\n serializableOperand\n )\n\n if (isArray(newFilterTree.$and)) {\n newFilterTree.$and.push(newFilter)\n return newFilterTree\n } else {\n const result = isEmptyObject(newFilterTree)\n ? inAnd(newFilter)\n : inAnd(newFilterTree, newFilter)\n return result\n }\n }\n\n _buildFilter(field, filterOperatorName, operand) {\n if (filterOperatorName !== '$eq') {\n const newFilter = {}\n newFilter[field] = {}\n newFilter[field][filterOperatorName] = this._encode(operand)\n return newFilter\n } else {\n const newFilter = {}\n newFilter[field] = this._encode(operand)\n return newFilter\n }\n }\n\n _encode(operand) {\n if (isFunction(this.encoder)) {\n return this.encoder(operand)\n } else {\n return operand\n }\n }\n\n _copy(filterTree, invalidArguments) {\n // @ts-ignore-next-line\n return new this.constructor({ ...this, filterTree, invalidArguments })\n }\n\n _filterValidator(filterOperatorName): Validator {\n return new FilterValidator(\n filterOperatorName,\n this.invalidArguments,\n this.constructor\n )\n }\n }\n\nfunction isConjunctiveFormFilter(filterTree) {\n return isArray(filterTree.$and)\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0\n}\n\nfunction inAnd(...args) {\n return {\n $and: args,\n }\n}\n\nfunction inAndOptimized(...args) {\n return {\n $and: args.reduce(\n (aggr, val) =>\n isConjunctiveFormFilter(val)\n ? aggr.concat(val.$and)\n : aggr.concat([val]),\n []\n ),\n }\n}\n\nfunction isEmptyAnd(node) {\n return node && node.$and && node.$and.length === 0\n}\n\nexport default filterMixin\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","_filterValidator","_queryOptimiser","filterMixin","Base","constructor","obj","_defineProperty2","default","filterTree","$and","invalidArguments","encoder","eq","args","_binaryAnd","ne","ge","_AndLogicalEquivalence","gt","le","lt","isNotEmpty","field","newInvalidArguments","valid","arityIsOne","arguments","validFieldName","validateAndAggregate","_copy","isEmpty","startsWith","_AndStringOperand","endsWith","contains","hasSome","_AndSetOperand","hasAll","or","orQuery","isInstanceOfSameClass","prefix","isEmptyAnd","inAnd","$or","concat","and","andQuery","not","notQuery","newFilterTree","clone","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","arityIsThree","sameType","typeIsStringNumberOrDate","getFilterModel","length","Error","join","optimisedQuery","setFilterModel","filterModel","filterOperatorSymbol","operatorName","operand","Array","prototype","slice","call","arityIsTwo","_makeNewFilter","typeIsStringNumberBoolOrDate","filterOperatorName","typeIsString","rawOperands","operands","isArray","arityIsAtLeastTwo","typeIsStringNumberOrDateForAll","serializableOperand","undefined","newFilter","_buildFilter","push","result","isEmptyObject","_encode","isFunction","FilterValidator","isConjunctiveFormFilter","Object","keys","reduce","aggr","val","node","_default","exports"],"sources":["../../src/filter-mixin.ts"],"sourcesContent":["import { isArray, isFunction } from './type-utils'\nimport clone from './clone'\nimport { FilterValidator } from './filter-validator'\nimport { Validator } from './validator'\nimport { optimisedQuery } from './query-optimiser'\n\nconst filterMixin = (Base: any = class {}) =>\n class extends Base {\n filterTree\n invalidArguments\n encoder\n\n constructor(obj: { filterTree?; invalidArguments?; encoder? } = {}) {\n super(obj)\n this.filterTree = obj.filterTree || { $and: [] }\n this.invalidArguments = obj.invalidArguments || []\n this.encoder = obj.encoder || {}\n }\n\n eq(...args) {\n return this._binaryAnd('$eq', '.eq', args)\n }\n\n ne(...args) {\n return this._binaryAnd('$ne', '.ne', args)\n }\n\n ge(...args) {\n return this._AndLogicalEquivalence('$gte', '.ge', args)\n }\n\n gt(...args) {\n return this._AndLogicalEquivalence('$gt', '.gt', args)\n }\n\n le(...args) {\n return this._AndLogicalEquivalence('$lte', '.le', args)\n }\n\n lt(...args) {\n return this._AndLogicalEquivalence('$lt', '.lt', args)\n }\n\n isNotEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isNotEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.ne(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n isEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.eq(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n startsWith(...args) {\n return this._AndStringOperand('$startsWith', '.startsWith', args)\n }\n\n endsWith(...args) {\n return this._AndStringOperand('$endsWith', '.endsWith', args)\n }\n\n contains(...args) {\n return this._AndStringOperand('$contains', '.contains', args)\n }\n\n hasSome(...args) {\n return this._AndSetOperand('$hasSome', '.hasSome', args)\n }\n\n hasAll(...args) {\n return this._AndSetOperand('$hasAll', '.hasAll', args)\n }\n\n or(orQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.or')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(orQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd({ $or: [...prefix, orQuery.filterTree] }),\n newInvalidArguments.concat(orQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n and(andQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.and')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(andQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd(...prefix, andQuery.filterTree),\n newInvalidArguments.concat(andQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n not(notQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.not')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(notQuery)\n .validateAndAggregate()\n\n if (valid) {\n const newFilterTree = clone(this.filterTree)\n const notClause = { $not: [notQuery.filterTree] }\n const resultingFilter = inAndOptimized(newFilterTree, notClause)\n\n return this._copy(\n resultingFilter,\n newInvalidArguments.concat(notQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n between(field, rangeStart, rangeEnd) {\n const [newInvalidArguments, valid] = this._filterValidator('.between')\n .arityIsThree(arguments)\n .sameType(rangeStart, rangeEnd)\n .typeIsStringNumberOrDate(rangeStart)\n .typeIsStringNumberOrDate(rangeEnd)\n .validateAndAggregate()\n\n if (valid) {\n return this.ge(field, rangeStart).lt(field, rangeEnd)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n getFilterModel() {\n if (this.invalidArguments.length > 0) {\n throw new Error(this.invalidArguments.join(' '))\n }\n return optimisedQuery(this.filterTree)\n }\n\n setFilterModel(filterModel) {\n return this._copy(filterModel, [])\n }\n\n _binaryAnd(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsStringNumberBoolOrDate(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndStringOperand(filterOperatorName, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsString(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndSetOperand(filterOperatorName, operatorName, args) {\n const [field, ...rawOperands] = Array.prototype.slice.call(args)\n const operands = isArray(rawOperands[0]) ? rawOperands[0] : rawOperands\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsAtLeastTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDateForAll(operands)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operands\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _makeNewFilter(field, filterOperatorName, operand) {\n const newFilterTree = clone(this.filterTree)\n\n // filters with 'undefined' value are lost during serialization,\n // e.g. { val: { $ne: undefined } | translates to { val: {} }\n // Replacing 'undefined' with 'null' retains the filter.\n const serializableOperand = operand === undefined ? null : operand\n const newFilter = this._buildFilter(\n field,\n filterOperatorName,\n serializableOperand\n )\n\n if (isArray(newFilterTree.$and)) {\n newFilterTree.$and.push(newFilter)\n return newFilterTree\n } else {\n const result = isEmptyObject(newFilterTree)\n ? inAnd(newFilter)\n : inAnd(newFilterTree, newFilter)\n return result\n }\n }\n\n _buildFilter(field, filterOperatorName, operand) {\n if (filterOperatorName !== '$eq') {\n const newFilter = {}\n newFilter[field] = {}\n newFilter[field][filterOperatorName] = this._encode(operand)\n return newFilter\n } else {\n const newFilter = {}\n newFilter[field] = this._encode(operand)\n return newFilter\n }\n }\n\n _encode(operand) {\n if (isFunction(this.encoder)) {\n return this.encoder(operand)\n } else {\n return operand\n }\n }\n\n _copy(filterTree, invalidArguments) {\n // @ts-ignore-next-line\n return new this.constructor({ ...this, filterTree, invalidArguments })\n }\n\n _filterValidator(filterOperatorName): Validator {\n return new FilterValidator(\n filterOperatorName,\n this.invalidArguments,\n this.constructor\n )\n }\n }\n\nfunction isConjunctiveFormFilter(filterTree) {\n return isArray(filterTree.$and)\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0\n}\n\nfunction inAnd(...args) {\n return {\n $and: args,\n }\n}\n\nfunction inAndOptimized(...args) {\n return {\n $and: args.reduce(\n (aggr, val) =>\n isConjunctiveFormFilter(val)\n ? aggr.concat(val.$and)\n : aggr.concat([val]),\n []\n ),\n }\n}\n\nfunction isEmptyAnd(node) {\n return node && node.$and && node.$and.length === 0\n}\n\nexport default filterMixin\n"],"mappings":"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","ignoreList":[]}
@@ -23,6 +23,9 @@ class FilterValidator {
23
23
  typeIsStringNumberOrDate(value) {
24
24
  return this.addValidation(() => isDateStringOrNumber(value), () => `Invalid ${this.operatorName} parameter value [${(0, _typeUtils.typeForDisplay)(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`);
25
25
  }
26
+ typeIsStringNumberBoolOrDate(value) {
27
+ return this.addValidation(() => isDateStringNumberOrBoolean(value), () => `Invalid ${this.operatorName} parameter value [${(0, _typeUtils.typeForDisplay)(value)}]. Valid ${this.operatorName} parameter types are String, Number, Boolean or Date.`);
28
+ }
26
29
  sameType(first, second) {
27
30
  return this.addValidation(() => (0, _typeUtils.typeForDisplay)(first) === (0, _typeUtils.typeForDisplay)(second), () => `Invalid ${this.operatorName} parameter values [${(0, _typeUtils.typeForDisplay)(first)}] and [${(0, _typeUtils.typeForDisplay)(second)}]. Both parameters must be of the same type.`);
28
31
  }
@@ -73,4 +76,7 @@ exports.FilterValidator = FilterValidator;
73
76
  function isDateStringOrNumber(value) {
74
77
  return (0, _typeUtils.isString)(value) || (0, _typeUtils.isNumber)(value) || (0, _typeUtils.isDate)(value);
75
78
  }
79
+ function isDateStringNumberOrBoolean(value) {
80
+ return (0, _typeUtils.isString)(value) || (0, _typeUtils.isNumber)(value) || (0, _typeUtils.isDate)(value) || (0, _typeUtils.isBoolean)(value);
81
+ }
76
82
  //# sourceMappingURL=filter-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","FilterValidator","constructor","operatorName","previousInvalidArguments","ctor","_defineProperty2","default","_validations","_invalidArguments","clone","typeIsString","value","addValidation","isString","typeForDisplay","typeIsStringNumberOrDate","isDateStringOrNumber","sameType","first","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","obj","arityIsOne","args","length","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_appendIfInvalid","message","exports","isNumber","isDate"],"sources":["../../src/filter-validator.ts"],"sourcesContent":["import { typeForDisplay, isDate, isString, isNumber } from './type-utils'\nimport clone from './clone'\nimport { Validator } from './validator'\n\nexport class FilterValidator implements Validator {\n private ctor\n private _invalidArguments: string[]\n public _validations: Validation[]\n public operatorName?: string\n\n constructor(operatorName, previousInvalidArguments, ctor) {\n this._validations = []\n this.operatorName = operatorName\n this.ctor = ctor\n this._invalidArguments = clone(previousInvalidArguments)\n }\n\n typeIsString(value) {\n return this.addValidation(\n () => isString(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () =>\n `Invalid ${this.operatorName} parameter values [${typeForDisplay(\n first\n )}] and [${typeForDisplay(\n second\n )}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`\n )\n }\n\n validFieldName(field) {\n return this.addValidation(\n () => isString(field),\n () =>\n `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${\n this.operatorName\n } field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () =>\n `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${\n this.operatorName\n } expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`\n )\n }\n\n arityIsTwo(args) {\n return this.addValidation(\n () => args.length === 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`\n )\n }\n\n arityIsThree(args) {\n return this.addValidation(\n () => args.length === 3,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`\n )\n }\n\n arityIsAtLeastTwo(args) {\n return this.addValidation(\n () => args.length >= 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`\n )\n }\n\n addValidation(predicateFn, messageFn) {\n this._validations.push({\n predicateFn,\n messageFn,\n })\n return this\n }\n\n validateAndAggregate(): [string[], boolean] {\n const valid = this._validations.every(({ predicateFn, messageFn }) =>\n this._appendIfInvalid(predicateFn(), messageFn())\n )\n return [this._invalidArguments, valid]\n }\n\n _appendIfInvalid(valid, message) {\n if (!valid) {\n this._invalidArguments.push(message)\n return false\n }\n return true\n }\n}\n\nfunction isDateStringOrNumber(value) {\n return isString(value) || isNumber(value) || isDate(value)\n}\n\ninterface Validation {\n predicateFn: Function\n messageFn: Function\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","FilterValidator","constructor","operatorName","previousInvalidArguments","ctor","_defineProperty2","default","_validations","_invalidArguments","clone","typeIsString","value","addValidation","isString","typeForDisplay","typeIsStringNumberOrDate","isDateStringOrNumber","typeIsStringNumberBoolOrDate","isDateStringNumberOrBoolean","sameType","first","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","obj","arityIsOne","args","length","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_appendIfInvalid","message","exports","isNumber","isDate","isBoolean"],"sources":["../../src/filter-validator.ts"],"sourcesContent":["import {\n typeForDisplay,\n isDate,\n isString,\n isNumber,\n isBoolean,\n} from './type-utils'\nimport clone from './clone'\nimport { Validator } from './validator'\n\nexport class FilterValidator implements Validator {\n private ctor\n private _invalidArguments: string[]\n public _validations: Validation[]\n public operatorName?: string\n\n constructor(operatorName, previousInvalidArguments, ctor) {\n this._validations = []\n this.operatorName = operatorName\n this.ctor = ctor\n this._invalidArguments = clone(previousInvalidArguments)\n }\n\n typeIsString(value) {\n return this.addValidation(\n () => isString(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number or Date.`\n )\n }\n\n typeIsStringNumberBoolOrDate(value) {\n return this.addValidation(\n () => isDateStringNumberOrBoolean(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number, Boolean or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () =>\n `Invalid ${this.operatorName} parameter values [${typeForDisplay(\n first\n )}] and [${typeForDisplay(\n second\n )}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`\n )\n }\n\n validFieldName(field) {\n return this.addValidation(\n () => isString(field),\n () =>\n `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${\n this.operatorName\n } field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () =>\n `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${\n this.operatorName\n } expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`\n )\n }\n\n arityIsTwo(args) {\n return this.addValidation(\n () => args.length === 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`\n )\n }\n\n arityIsThree(args) {\n return this.addValidation(\n () => args.length === 3,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`\n )\n }\n\n arityIsAtLeastTwo(args) {\n return this.addValidation(\n () => args.length >= 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`\n )\n }\n\n addValidation(predicateFn, messageFn) {\n this._validations.push({\n predicateFn,\n messageFn,\n })\n return this\n }\n\n validateAndAggregate(): [string[], boolean] {\n const valid = this._validations.every(({ predicateFn, messageFn }) =>\n this._appendIfInvalid(predicateFn(), messageFn())\n )\n return [this._invalidArguments, valid]\n }\n\n _appendIfInvalid(valid, message) {\n if (!valid) {\n this._invalidArguments.push(message)\n return false\n }\n return true\n }\n}\n\nfunction isDateStringOrNumber(value) {\n return isString(value) || isNumber(value) || isDate(value)\n}\n\nfunction isDateStringNumberOrBoolean(value) {\n return isString(value) || isNumber(value) || isDate(value) || isBoolean(value)\n}\n\ninterface Validation {\n predicateFn: Function\n messageFn: Function\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/validator.ts"],"sourcesContent":["export interface Validator {\n typeIsString(value): Validator\n typeIsStringNumberOrDate(value): Validator\n sameType(first, second): Validator\n typeIsStringNumberOrDateForAll(values): Validator\n validFieldName(field): Validator\n isInstanceOfSameClass(obj): Validator\n arityIsOne(args): Validator\n arityIsTwo(args): Validator\n arityIsThree(args): Validator\n arityIsAtLeastTwo(args): Validator\n validateAndAggregate(): [string[], boolean]\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../src/validator.ts"],"sourcesContent":["export interface Validator {\n typeIsString(value): Validator\n typeIsStringNumberOrDate(value): Validator\n typeIsStringNumberBoolOrDate(value): Validator\n sameType(first, second): Validator\n typeIsStringNumberOrDateForAll(values): Validator\n validFieldName(field): Validator\n isInstanceOfSameClass(obj): Validator\n arityIsOne(args): Validator\n arityIsTwo(args): Validator\n arityIsThree(args): Validator\n arityIsAtLeastTwo(args): Validator\n validateAndAggregate(): [string[], boolean]\n}\n"],"mappings":"","ignoreList":[]}
@@ -139,7 +139,7 @@ const filterMixin = (Base = class {
139
139
  const [newInvalidArguments] = this._filterValidator(operatorName)
140
140
  .arityIsTwo(args)
141
141
  .validFieldName(field)
142
- .typeIsStringNumberOrDate(operand)
142
+ .typeIsStringNumberBoolOrDate(operand)
143
143
  .validateAndAggregate();
144
144
  const newFilterTree = this._makeNewFilter(field, filterOperatorSymbol, operand);
145
145
  return this._copy(newFilterTree, newInvalidArguments);
@@ -1 +1 @@
1
- {"version":3,"file":"filter-mixin.js","sourceRoot":"","sources":["../../src/filter-mixin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-mixin.js","sourceRoot":"","sources":["../../src/filter-mixin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { typeForDisplay, isDate, isString, isNumber } from './type-utils';
1
+ import { typeForDisplay, isDate, isString, isNumber, isBoolean, } from './type-utils';
2
2
  import clone from './clone';
3
3
  export class FilterValidator {
4
4
  constructor(operatorName, previousInvalidArguments, ctor) {
@@ -13,6 +13,9 @@ export class FilterValidator {
13
13
  typeIsStringNumberOrDate(value) {
14
14
  return this.addValidation(() => isDateStringOrNumber(value), () => `Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`);
15
15
  }
16
+ typeIsStringNumberBoolOrDate(value) {
17
+ return this.addValidation(() => isDateStringNumberOrBoolean(value), () => `Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number, Boolean or Date.`);
18
+ }
16
19
  sameType(first, second) {
17
20
  return this.addValidation(() => typeForDisplay(first) === typeForDisplay(second), () => `Invalid ${this.operatorName} parameter values [${typeForDisplay(first)}] and [${typeForDisplay(second)}]. Both parameters must be of the same type.`);
18
21
  }
@@ -59,4 +62,7 @@ export class FilterValidator {
59
62
  function isDateStringOrNumber(value) {
60
63
  return isString(value) || isNumber(value) || isDate(value);
61
64
  }
65
+ function isDateStringNumberOrBoolean(value) {
66
+ return isString(value) || isNumber(value) || isDate(value) || isBoolean(value);
67
+ }
62
68
  //# sourceMappingURL=filter-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-validator.js","sourceRoot":"","sources":["../../src/filter-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-validator.js","sourceRoot":"","sources":["../../src/filter-validator.ts"],"names":[],"mappings":"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"}
@@ -338,15 +338,15 @@ var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
338
338
  var kind_of = __webpack_require__(555);
339
339
  var kind_of_default = /*#__PURE__*/__webpack_require__.n(kind_of);
340
340
  ;// ./type-utils.ts
341
- function isObject(obj){return getKind(obj)==='object';}function isArray(arr){return kind_of_default()(arr)==='array';}function isDate(obj){return kind_of_default()(obj)==='date';}function isNumber(obj){return kind_of_default()(obj)==='number';}function isBoolean(obj){return getKind(obj)==='boolean';}function isString(obj){return kind_of_default()(obj)==='string';}function isFunction(obj){return kind_of_default()(obj)==='function';}function typeForDisplay(obj){return upperCaseFirst(kind_of_default()(obj));}function isUndefined(obj){return getKind(obj)==='undefined';}function isNull(obj){return getKind(obj)==='null';}function upperCaseFirst(str){if(!isString(str)){return str;}const first=str.slice(0,1).toUpperCase();const rest=str.slice(1,str.length);return first+rest;}
341
+ function isObject(obj){return getKind(obj)==='object';}function isArray(arr){return kind_of_default()(arr)==='array';}function isDate(obj){return kind_of_default()(obj)==='date';}function isNumber(obj){return kind_of_default()(obj)==='number';}function isBoolean(obj){return kind_of_default()(obj)==='boolean';}function isString(obj){return kind_of_default()(obj)==='string';}function isFunction(obj){return kind_of_default()(obj)==='function';}function typeForDisplay(obj){return upperCaseFirst(kind_of_default()(obj));}function isUndefined(obj){return getKind(obj)==='undefined';}function isNull(obj){return getKind(obj)==='null';}function upperCaseFirst(str){if(!isString(str)){return str;}const first=str.slice(0,1).toUpperCase();const rest=str.slice(1,str.length);return first+rest;}
342
342
  ;// ./clone.ts
343
343
  function clone(obj){if(obj==null||typeof obj!=='object'){return obj;}let temp=null;if(isDate(obj)){temp=new Date(obj.getTime());}else{temp=obj.constructor();for(const key in obj){temp[key]=clone(obj[key]);}}return temp;}
344
344
  ;// ./filter-validator.ts
345
- class FilterValidator{constructor(operatorName,previousInvalidArguments,ctor){defineProperty_default()(this,"ctor",void 0);defineProperty_default()(this,"_invalidArguments",void 0);defineProperty_default()(this,"_validations",void 0);defineProperty_default()(this,"operatorName",void 0);this._validations=[];this.operatorName=operatorName;this.ctor=ctor;this._invalidArguments=clone(previousInvalidArguments);}typeIsString(value){return this.addValidation(()=>isString(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. ${this.operatorName} parameter must be a String.`);}typeIsStringNumberOrDate(value){return this.addValidation(()=>isDateStringOrNumber(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`);}sameType(first,second){return this.addValidation(()=>typeForDisplay(first)===typeForDisplay(second),()=>`Invalid ${this.operatorName} parameter values [${typeForDisplay(first)}] and [${typeForDisplay(second)}]. Both parameters must be of the same type.`);}typeIsStringNumberOrDateForAll(values){return this.addValidation(()=>values.every(isDateStringOrNumber),()=>`Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`);}validFieldName(field){return this.addValidation(()=>isString(field),()=>`Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${this.operatorName} field must be a String.`);}isInstanceOfSameClass(obj){return this.addValidation(()=>obj instanceof this.ctor,()=>`Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${this.operatorName} expects FilterBuilder only.`);}arityIsOne(args){return this.addValidation(()=>args.length===1,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`);}arityIsTwo(args){return this.addValidation(()=>args.length===2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`);}arityIsThree(args){return this.addValidation(()=>args.length===3,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`);}arityIsAtLeastTwo(args){return this.addValidation(()=>args.length>=2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`);}addValidation(predicateFn,messageFn){this._validations.push({predicateFn,messageFn});return this;}validateAndAggregate(){const valid=this._validations.every(_ref=>{let{predicateFn,messageFn}=_ref;return this._appendIfInvalid(predicateFn(),messageFn());});return[this._invalidArguments,valid];}_appendIfInvalid(valid,message){if(!valid){this._invalidArguments.push(message);return false;}return true;}}function isDateStringOrNumber(value){return isString(value)||isNumber(value)||isDate(value);}
345
+ class FilterValidator{constructor(operatorName,previousInvalidArguments,ctor){defineProperty_default()(this,"ctor",void 0);defineProperty_default()(this,"_invalidArguments",void 0);defineProperty_default()(this,"_validations",void 0);defineProperty_default()(this,"operatorName",void 0);this._validations=[];this.operatorName=operatorName;this.ctor=ctor;this._invalidArguments=clone(previousInvalidArguments);}typeIsString(value){return this.addValidation(()=>isString(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. ${this.operatorName} parameter must be a String.`);}typeIsStringNumberOrDate(value){return this.addValidation(()=>isDateStringOrNumber(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`);}typeIsStringNumberBoolOrDate(value){return this.addValidation(()=>isDateStringNumberOrBoolean(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number, Boolean or Date.`);}sameType(first,second){return this.addValidation(()=>typeForDisplay(first)===typeForDisplay(second),()=>`Invalid ${this.operatorName} parameter values [${typeForDisplay(first)}] and [${typeForDisplay(second)}]. Both parameters must be of the same type.`);}typeIsStringNumberOrDateForAll(values){return this.addValidation(()=>values.every(isDateStringOrNumber),()=>`Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`);}validFieldName(field){return this.addValidation(()=>isString(field),()=>`Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${this.operatorName} field must be a String.`);}isInstanceOfSameClass(obj){return this.addValidation(()=>obj instanceof this.ctor,()=>`Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${this.operatorName} expects FilterBuilder only.`);}arityIsOne(args){return this.addValidation(()=>args.length===1,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`);}arityIsTwo(args){return this.addValidation(()=>args.length===2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`);}arityIsThree(args){return this.addValidation(()=>args.length===3,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`);}arityIsAtLeastTwo(args){return this.addValidation(()=>args.length>=2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`);}addValidation(predicateFn,messageFn){this._validations.push({predicateFn,messageFn});return this;}validateAndAggregate(){const valid=this._validations.every(_ref=>{let{predicateFn,messageFn}=_ref;return this._appendIfInvalid(predicateFn(),messageFn());});return[this._invalidArguments,valid];}_appendIfInvalid(valid,message){if(!valid){this._invalidArguments.push(message);return false;}return true;}}function isDateStringOrNumber(value){return isString(value)||isNumber(value)||isDate(value);}function isDateStringNumberOrBoolean(value){return isString(value)||isNumber(value)||isDate(value)||isBoolean(value);}
346
346
  ;// ./query-optimiser.ts
347
347
  const optimisations=[optimisedUnaryAnd,optimisedEmptyAnd,optimisedAndsAsObjects,optimisedNestedAnds,optimisedNestedOrs];function optimisedQuery(query){const[newQuery]=fullyOptimised(query);return newQuery;}function fullyOptimised(query){if(Array.isArray(query)){return fullyOptimisedArray(query);}if(typeof query==='object'&&query!==null&&!instanceOfIgnoredType(query)){return fullyOptimisedObject(query);}return[query,false];}function fullyOptimisedArray(query){const optimisedElements=query.map(fullyOptimised);const somethingChanged=0<optimisedElements.filter(_ref=>{let[,elementChanged]=_ref;return elementChanged;}).length;const newElements=optimisedElements.map(_ref2=>{let[element]=_ref2;return element;});return[newElements,somethingChanged];}function fullyOptimisedObject(query){const[queryAfterOptimisingEntries,changedStage1]=fullEntriesOptimisation(query);const[queryAfterFullOptimisation,changedStage2]=fullObjectOptimisation(queryAfterOptimisingEntries);const changed=changedStage1||changedStage2;return[queryAfterFullOptimisation,changed];function fullObjectOptimisation(query){const updatedQuery=applyFirstOptimisation(query);if(!updatedQuery){return[query,false];}const[finalQuery]=fullyOptimised(updatedQuery);return[finalQuery,true];}function fullEntriesOptimisation(query){const changedEntries=Object.entries(query).map(entryOptimisation).filter(_ref3=>{let[,,changed]=_ref3;return changed;});const newQuery={...query,...entriesAsObject(changedEntries)};const changed=!!changedEntries.length;return[newQuery,changed];}function entryOptimisation(_ref4){let[key,value]=_ref4;const[newValue,changed]=fullyOptimised(value);return[key,newValue,changed];}function entriesAsObject(entries){return entries.reduce((acc,_ref5)=>{let[key,value]=_ref5;return{...acc,[key]:value};},{});}}function applyFirstOptimisation(node){for(const optimisation of optimisations){const newNode=optimisation(node);if(newNode){return newNode;}}}function optimisedUnaryAnd(node){const args=node.$and;if(Array.isArray(args)&&args.length===1){return args[0];}}function optimisedEmptyAnd(node){const args=node.$and;if(Array.isArray(args)&&args.length===0){return{};}return null;}function optimisedAndsAsObjects(node){const args=node.$and;if(!args){return;}let basicObjects=[];let operatorObjects=[];args.forEach(arg=>{if(isOperator(arg)){operatorObjects=[...operatorObjects,arg];}else{basicObjects=[...basicObjects,arg];}});if(basicObjects.length<=1||haveOverlappingFields(basicObjects)){return;}const combinedBasicObjects=Object.assign({},...basicObjects);return{$and:[combinedBasicObjects,...operatorObjects]};function isOperator(node){const keys=Object.keys(node);return keys.every(name=>name.startsWith('$'))&&keys.length>0;}function haveOverlappingFields(objects){const nonUniqueKeys=objects.map(it=>Object.keys(it)).reduce((a,b)=>[...a,...b],[]);const uniqueKeys=unique(nonUniqueKeys);return uniqueKeys.length!==nonUniqueKeys.length;}function unique(values){const dict={};values.forEach(v=>dict[v]=true);return Object.keys(dict);}}function optimisedNestedAnds(node){const args=node.$and;if(!args){return;}const hasNestedAnds=!!args.find(it=>it.$and);if(!hasNestedAnds){return;}const newArgs=args.reduce((result,current)=>{const and=current.$and;if(!and){return[...result,current];}return[...result,...and];},[]);return{$and:newArgs};}function optimisedNestedOrs(node){const args=node.$or;if(!args){return;}const hasNestedOrs=!!args.find(it=>it.$or);if(!hasNestedOrs){return;}const newArgs=args.reduce((result,current)=>{const or=current.$or;if(!or){return[...result,current];}return[...result,...or];},[]);return{$or:newArgs};}function instanceOfIgnoredType(obj){return obj instanceof Date;}
348
348
  ;// ./filter-mixin.ts
349
- const filterMixin=function(Base){if(Base===void 0){Base=class{};}return class extends Base{constructor(obj){if(obj===void 0){obj={};}super(obj);defineProperty_default()(this,"filterTree",void 0);defineProperty_default()(this,"invalidArguments",void 0);defineProperty_default()(this,"encoder",void 0);this.filterTree=obj.filterTree||{$and:[]};this.invalidArguments=obj.invalidArguments||[];this.encoder=obj.encoder||{};}eq(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return this._binaryAnd('$eq','.eq',args);}ne(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}return this._binaryAnd('$ne','.ne',args);}ge(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return this._AndLogicalEquivalence('$gte','.ge',args);}gt(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return this._AndLogicalEquivalence('$gt','.gt',args);}le(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++){args[_key5]=arguments[_key5];}return this._AndLogicalEquivalence('$lte','.le',args);}lt(){for(var _len6=arguments.length,args=new Array(_len6),_key6=0;_key6<_len6;_key6++){args[_key6]=arguments[_key6];}return this._AndLogicalEquivalence('$lt','.lt',args);}isNotEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isNotEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.ne(field,null);}return this._copy(this.filterTree,newInvalidArguments);}isEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.eq(field,null);}return this._copy(this.filterTree,newInvalidArguments);}startsWith(){for(var _len7=arguments.length,args=new Array(_len7),_key7=0;_key7<_len7;_key7++){args[_key7]=arguments[_key7];}return this._AndStringOperand('$startsWith','.startsWith',args);}endsWith(){for(var _len8=arguments.length,args=new Array(_len8),_key8=0;_key8<_len8;_key8++){args[_key8]=arguments[_key8];}return this._AndStringOperand('$endsWith','.endsWith',args);}contains(){for(var _len9=arguments.length,args=new Array(_len9),_key9=0;_key9<_len9;_key9++){args[_key9]=arguments[_key9];}return this._AndStringOperand('$contains','.contains',args);}hasSome(){for(var _len0=arguments.length,args=new Array(_len0),_key0=0;_key0<_len0;_key0++){args[_key0]=arguments[_key0];}return this._AndSetOperand('$hasSome','.hasSome',args);}hasAll(){for(var _len1=arguments.length,args=new Array(_len1),_key1=0;_key1<_len1;_key1++){args[_key1]=arguments[_key1];}return this._AndSetOperand('$hasAll','.hasAll',args);}or(orQuery){const[newInvalidArguments,valid]=this._filterValidator('.or').arityIsOne(arguments).isInstanceOfSameClass(orQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd({$or:[...prefix,orQuery.filterTree]}),newInvalidArguments.concat(orQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}and(andQuery){const[newInvalidArguments,valid]=this._filterValidator('.and').arityIsOne(arguments).isInstanceOfSameClass(andQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd(...prefix,andQuery.filterTree),newInvalidArguments.concat(andQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}not(notQuery){const[newInvalidArguments,valid]=this._filterValidator('.not').arityIsOne(arguments).isInstanceOfSameClass(notQuery).validateAndAggregate();if(valid){const newFilterTree=clone(this.filterTree);const notClause={$not:[notQuery.filterTree]};const resultingFilter=inAndOptimized(newFilterTree,notClause);return this._copy(resultingFilter,newInvalidArguments.concat(notQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}between(field,rangeStart,rangeEnd){const[newInvalidArguments,valid]=this._filterValidator('.between').arityIsThree(arguments).sameType(rangeStart,rangeEnd).typeIsStringNumberOrDate(rangeStart).typeIsStringNumberOrDate(rangeEnd).validateAndAggregate();if(valid){return this.ge(field,rangeStart).lt(field,rangeEnd);}return this._copy(this.filterTree,newInvalidArguments);}getFilterModel(){if(this.invalidArguments.length>0){throw new Error(this.invalidArguments.join(' '));}return optimisedQuery(this.filterTree);}setFilterModel(filterModel){return this._copy(filterModel,[]);}_binaryAnd(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndLogicalEquivalence(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberOrDate(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndStringOperand(filterOperatorName,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsString(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndSetOperand(filterOperatorName,operatorName,args){const[field,...rawOperands]=Array.prototype.slice.call(args);const operands=isArray(rawOperands[0])?rawOperands[0]:rawOperands;const[newInvalidArguments]=this._filterValidator(operatorName).arityIsAtLeastTwo(args).validFieldName(field).typeIsStringNumberOrDateForAll(operands).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operands);return this._copy(newFilterTree,newInvalidArguments);}_makeNewFilter(field,filterOperatorName,operand){const newFilterTree=clone(this.filterTree);// filters with 'undefined' value are lost during serialization,
349
+ const filterMixin=function(Base){if(Base===void 0){Base=class{};}return class extends Base{constructor(obj){if(obj===void 0){obj={};}super(obj);defineProperty_default()(this,"filterTree",void 0);defineProperty_default()(this,"invalidArguments",void 0);defineProperty_default()(this,"encoder",void 0);this.filterTree=obj.filterTree||{$and:[]};this.invalidArguments=obj.invalidArguments||[];this.encoder=obj.encoder||{};}eq(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return this._binaryAnd('$eq','.eq',args);}ne(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}return this._binaryAnd('$ne','.ne',args);}ge(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return this._AndLogicalEquivalence('$gte','.ge',args);}gt(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return this._AndLogicalEquivalence('$gt','.gt',args);}le(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++){args[_key5]=arguments[_key5];}return this._AndLogicalEquivalence('$lte','.le',args);}lt(){for(var _len6=arguments.length,args=new Array(_len6),_key6=0;_key6<_len6;_key6++){args[_key6]=arguments[_key6];}return this._AndLogicalEquivalence('$lt','.lt',args);}isNotEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isNotEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.ne(field,null);}return this._copy(this.filterTree,newInvalidArguments);}isEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.eq(field,null);}return this._copy(this.filterTree,newInvalidArguments);}startsWith(){for(var _len7=arguments.length,args=new Array(_len7),_key7=0;_key7<_len7;_key7++){args[_key7]=arguments[_key7];}return this._AndStringOperand('$startsWith','.startsWith',args);}endsWith(){for(var _len8=arguments.length,args=new Array(_len8),_key8=0;_key8<_len8;_key8++){args[_key8]=arguments[_key8];}return this._AndStringOperand('$endsWith','.endsWith',args);}contains(){for(var _len9=arguments.length,args=new Array(_len9),_key9=0;_key9<_len9;_key9++){args[_key9]=arguments[_key9];}return this._AndStringOperand('$contains','.contains',args);}hasSome(){for(var _len0=arguments.length,args=new Array(_len0),_key0=0;_key0<_len0;_key0++){args[_key0]=arguments[_key0];}return this._AndSetOperand('$hasSome','.hasSome',args);}hasAll(){for(var _len1=arguments.length,args=new Array(_len1),_key1=0;_key1<_len1;_key1++){args[_key1]=arguments[_key1];}return this._AndSetOperand('$hasAll','.hasAll',args);}or(orQuery){const[newInvalidArguments,valid]=this._filterValidator('.or').arityIsOne(arguments).isInstanceOfSameClass(orQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd({$or:[...prefix,orQuery.filterTree]}),newInvalidArguments.concat(orQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}and(andQuery){const[newInvalidArguments,valid]=this._filterValidator('.and').arityIsOne(arguments).isInstanceOfSameClass(andQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd(...prefix,andQuery.filterTree),newInvalidArguments.concat(andQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}not(notQuery){const[newInvalidArguments,valid]=this._filterValidator('.not').arityIsOne(arguments).isInstanceOfSameClass(notQuery).validateAndAggregate();if(valid){const newFilterTree=clone(this.filterTree);const notClause={$not:[notQuery.filterTree]};const resultingFilter=inAndOptimized(newFilterTree,notClause);return this._copy(resultingFilter,newInvalidArguments.concat(notQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}between(field,rangeStart,rangeEnd){const[newInvalidArguments,valid]=this._filterValidator('.between').arityIsThree(arguments).sameType(rangeStart,rangeEnd).typeIsStringNumberOrDate(rangeStart).typeIsStringNumberOrDate(rangeEnd).validateAndAggregate();if(valid){return this.ge(field,rangeStart).lt(field,rangeEnd);}return this._copy(this.filterTree,newInvalidArguments);}getFilterModel(){if(this.invalidArguments.length>0){throw new Error(this.invalidArguments.join(' '));}return optimisedQuery(this.filterTree);}setFilterModel(filterModel){return this._copy(filterModel,[]);}_binaryAnd(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndLogicalEquivalence(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberBoolOrDate(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndStringOperand(filterOperatorName,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsString(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndSetOperand(filterOperatorName,operatorName,args){const[field,...rawOperands]=Array.prototype.slice.call(args);const operands=isArray(rawOperands[0])?rawOperands[0]:rawOperands;const[newInvalidArguments]=this._filterValidator(operatorName).arityIsAtLeastTwo(args).validFieldName(field).typeIsStringNumberOrDateForAll(operands).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operands);return this._copy(newFilterTree,newInvalidArguments);}_makeNewFilter(field,filterOperatorName,operand){const newFilterTree=clone(this.filterTree);// filters with 'undefined' value are lost during serialization,
350
350
  // e.g. { val: { $ne: undefined } | translates to { val: {} }
351
351
  // Replacing 'undefined' with 'null' retains the filter.
352
352
  const serializableOperand=operand===undefined?null:operand;const newFilter=this._buildFilter(field,filterOperatorName,serializableOperand);if(isArray(newFilterTree.$and)){newFilterTree.$and.push(newFilter);return newFilterTree;}else{const result=isEmptyObject(newFilterTree)?inAnd(newFilter):inAnd(newFilterTree,newFilter);return result;}}_buildFilter(field,filterOperatorName,operand){if(filterOperatorName!=='$eq'){const newFilter={};newFilter[field]={};newFilter[field][filterOperatorName]=this._encode(operand);return newFilter;}else{const newFilter={};newFilter[field]=this._encode(operand);return newFilter;}}_encode(operand){if(isFunction(this.encoder)){return this.encoder(operand);}else{return operand;}}_copy(filterTree,invalidArguments){// @ts-ignore-next-line