Comparing version
@@ -176,6 +176,16 @@ var __extends = (this && this.__extends) || (function () { | ||
export var numericalOperationCreator = function (createNumericalOperation) { return function (params, owneryQuery, options) { | ||
return params == null | ||
? new NopeOperation(params, owneryQuery, options) | ||
: createNumericalOperation(params, owneryQuery, options); | ||
if (params == null) { | ||
return new NopeOperation(params, owneryQuery, options); | ||
} | ||
return createNumericalOperation(params, owneryQuery, options); | ||
}; }; | ||
export var numericalOperation = function (createTester) { | ||
return numericalOperationCreator(function (params, owneryQuery, options) { | ||
var typeofParams = typeof comparable(params); | ||
var test = createTester(params); | ||
return new EqualsOperation(function (b) { | ||
return typeof comparable(b) === typeofParams && test(b); | ||
}, owneryQuery, options); | ||
}); | ||
}; | ||
var createOperation = function (name, params, parentQuery, options) { | ||
@@ -182,0 +192,0 @@ var operationCreator = options.operations[name]; |
@@ -14,3 +14,3 @@ var __extends = (this && this.__extends) || (function () { | ||
})(); | ||
import { BaseOperation, EqualsOperation, createTester, createQueryOperation, numericalOperationCreator, GroupOperation } from "./core"; | ||
import { BaseOperation, EqualsOperation, createTester, createQueryOperation, GroupOperation, numericalOperation } from "./core"; | ||
import { comparable, isFunction } from "./utils"; | ||
@@ -156,14 +156,6 @@ var $Ne = /** @class */ (function (_super) { | ||
}; | ||
export var $lt = numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new EqualsOperation(function (b) { return b < params; }, owneryQuery, options); | ||
}); | ||
export var $lte = numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new EqualsOperation(function (b) { return b <= params; }, owneryQuery, options); | ||
}); | ||
export var $gt = numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new EqualsOperation(function (b) { return b > params; }, owneryQuery, options); | ||
}); | ||
export var $gte = numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new EqualsOperation(function (b) { return b >= params; }, owneryQuery, options); | ||
}); | ||
export var $lt = numericalOperation(function (params) { return function (b) { return b < params; }; }); | ||
export var $lte = numericalOperation(function (params) { return function (b) { return b <= params; }; }); | ||
export var $gt = numericalOperation(function (params) { return function (b) { return b > params; }; }); | ||
export var $gte = numericalOperation(function (params) { return function (b) { return b >= params; }; }); | ||
export var $mod = function (_a, owneryQuery, options) { | ||
@@ -170,0 +162,0 @@ var mod = _a[0], equalsValue = _a[1]; |
@@ -80,2 +80,2 @@ // export type SupportedType = | ||
export * from "./core"; | ||
export * from "./lib/core"; |
@@ -178,6 +178,16 @@ "use strict"; | ||
exports.numericalOperationCreator = function (createNumericalOperation) { return function (params, owneryQuery, options) { | ||
return params == null | ||
? new NopeOperation(params, owneryQuery, options) | ||
: createNumericalOperation(params, owneryQuery, options); | ||
if (params == null) { | ||
return new NopeOperation(params, owneryQuery, options); | ||
} | ||
return createNumericalOperation(params, owneryQuery, options); | ||
}; }; | ||
exports.numericalOperation = function (createTester) { | ||
return exports.numericalOperationCreator(function (params, owneryQuery, options) { | ||
var typeofParams = typeof utils_1.comparable(params); | ||
var test = createTester(params); | ||
return new EqualsOperation(function (b) { | ||
return typeof utils_1.comparable(b) === typeofParams && test(b); | ||
}, owneryQuery, options); | ||
}); | ||
}; | ||
var createOperation = function (name, params, parentQuery, options) { | ||
@@ -184,0 +194,0 @@ var operationCreator = options.operations[name]; |
@@ -157,14 +157,6 @@ "use strict"; | ||
}; | ||
exports.$lt = core_1.numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new core_1.EqualsOperation(function (b) { return b < params; }, owneryQuery, options); | ||
}); | ||
exports.$lte = core_1.numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new core_1.EqualsOperation(function (b) { return b <= params; }, owneryQuery, options); | ||
}); | ||
exports.$gt = core_1.numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new core_1.EqualsOperation(function (b) { return b > params; }, owneryQuery, options); | ||
}); | ||
exports.$gte = core_1.numericalOperationCreator(function (params, owneryQuery, options) { | ||
return new core_1.EqualsOperation(function (b) { return b >= params; }, owneryQuery, options); | ||
}); | ||
exports.$lt = core_1.numericalOperation(function (params) { return function (b) { return b < params; }; }); | ||
exports.$lte = core_1.numericalOperation(function (params) { return function (b) { return b <= params; }; }); | ||
exports.$gt = core_1.numericalOperation(function (params) { return function (b) { return b > params; }; }); | ||
exports.$gte = core_1.numericalOperation(function (params) { return function (b) { return b >= params; }; }); | ||
exports.$mod = function (_a, owneryQuery, options) { | ||
@@ -171,0 +163,0 @@ var mod = _a[0], equalsValue = _a[1]; |
{ | ||
"name": "sift", | ||
"description": "mongodb query style array filtering", | ||
"version": "11.0.10", | ||
"version": "11.1.0", | ||
"repository": "crcn/sift.js", | ||
@@ -6,0 +6,0 @@ "sideEffects": false, |
**Installation**: `npm install sift`, or `yarn add sift` | ||
## Sift is a tiny library for using MongoDB queries in Javascript | ||
## Sift is a tiny library for using MongoDB queries to filter data in Javascript | ||
@@ -16,7 +16,5 @@ [](https://secure.travis-ci.org/crcn/sift.js) | ||
- Regexp searches | ||
- Function filtering | ||
- Dot notation searching | ||
- Supports node.js, and web | ||
- Custom Operations | ||
- Tree-shaking | ||
- Tree-shaking (omitting functionality from web app bundles) | ||
@@ -29,3 +27,3 @@ ## Examples | ||
//intersecting arrays | ||
var result = ["hello", "sifted", "array!"].filter( | ||
const result1 = ["hello", "sifted", "array!"].filter( | ||
sift({ $in: ["hello", "world"] }) | ||
@@ -35,6 +33,6 @@ ); //['hello'] | ||
//regexp filter | ||
var result = ["craig", "john", "jake"].filter(sift(/^j/)); //['john','jake'] | ||
const result2 = ["craig", "john", "jake"].filter(sift(/^j/)); //['john','jake'] | ||
// function filter | ||
var testFilter = sift({ | ||
const testFilter = sift({ | ||
//you can also filter against functions | ||
@@ -46,3 +44,3 @@ name: function(value) { | ||
var result = [ | ||
const result3 = [ | ||
{ | ||
@@ -49,0 +47,0 @@ name: "craig" |
@@ -234,7 +234,25 @@ import { | ||
createNumericalOperation: OperationCreator | ||
) => (params: number, owneryQuery: any, options: Options) => | ||
params == null | ||
? new NopeOperation(params, owneryQuery, options) | ||
: createNumericalOperation(params, owneryQuery, options); | ||
) => (params: any, owneryQuery: any, options: Options) => { | ||
if (params == null) { | ||
return new NopeOperation(params, owneryQuery, options); | ||
} | ||
return createNumericalOperation(params, owneryQuery, options); | ||
}; | ||
export const numericalOperation = (createTester: (any) => Tester) => | ||
numericalOperationCreator( | ||
(params: any, owneryQuery: Query, options: Options) => { | ||
const typeofParams = typeof comparable(params); | ||
const test = createTester(params); | ||
return new EqualsOperation( | ||
b => { | ||
return typeof comparable(b) === typeofParams && test(b); | ||
}, | ||
owneryQuery, | ||
options | ||
); | ||
} | ||
); | ||
export type Options = { | ||
@@ -241,0 +259,0 @@ operations: { |
@@ -12,3 +12,4 @@ import { | ||
Query, | ||
GroupOperation | ||
GroupOperation, | ||
numericalOperation | ||
} from "./core"; | ||
@@ -136,18 +137,7 @@ import { Key, comparable, isFunction } from "./utils"; | ||
new $Or(params, owneryQuery, options); | ||
export const $lt = numericalOperationCreator( | ||
(params: any, owneryQuery: Query, options: Options) => | ||
new EqualsOperation(b => b < params, owneryQuery, options) | ||
); | ||
export const $lte = numericalOperationCreator( | ||
(params: any, owneryQuery: Query, options: Options) => | ||
new EqualsOperation(b => b <= params, owneryQuery, options) | ||
); | ||
export const $gt = numericalOperationCreator( | ||
(params: any, owneryQuery: Query, options: Options) => | ||
new EqualsOperation(b => b > params, owneryQuery, options) | ||
); | ||
export const $gte = numericalOperationCreator( | ||
(params: any, owneryQuery: Query, options: Options) => | ||
new EqualsOperation(b => b >= params, owneryQuery, options) | ||
); | ||
export const $lt = numericalOperation(params => b => b < params); | ||
export const $lte = numericalOperation(params => b => b <= params); | ||
export const $gt = numericalOperation(params => b => b > params); | ||
export const $gte = numericalOperation(params => b => b >= params); | ||
export const $mod = ( | ||
@@ -154,0 +144,0 @@ [mod, equalsValue]: number[], |
@@ -66,2 +66,8 @@ import * as assert from "assert"; | ||
it("can compare various $lt dates", () => { | ||
// assert.equal(sift({ $lt: new Date() })(new Date('2010-01-01')), true); | ||
// assert.equal(sift({ $lt: new Date() })(new Date('2030-01-01')), false); | ||
assert.equal(sift({ $lt: new Date() })(null), false); | ||
}); | ||
it("$ne: null does not hit when field is present", function() { | ||
@@ -68,0 +74,0 @@ var sifter = sift({ age: { $ne: null } }); |
@@ -7,13 +7,3 @@ import * as assert from "assert"; | ||
[ | ||
[ | ||
{ | ||
$where: function() { | ||
return this.v === 1; | ||
} | ||
}, | ||
[{ v: 1 }, { v: 2 }], | ||
[{ v: 1 }] | ||
], | ||
[{ $where: "this.v === 1" }, [{ v: 1 }, { v: 2 }], [{ v: 1 }]], | ||
[{ $where: "obj.v === 1" }, [{ v: 1 }, { v: 2 }], [{ v: 1 }]], | ||
[{ $lt: new Date() }, [null], []], | ||
@@ -141,3 +131,6 @@ // $eq | ||
[{ $lt: "c" }, ["a", "b", "c"], ["a", "b"]], | ||
[{ $lt: "5" }, [4, 3, 2, 1], []], | ||
[{ $lt: null }, [-3, -4], []], | ||
[{ $lt: new Date() }, [null], []], | ||
[{ $lt: new Date() }, [new Date("2010-01-01")], [new Date("2010-01-01")]], | ||
[ | ||
@@ -151,2 +144,4 @@ { $lt: new Date(3) }, | ||
[{ $lte: 5 }, [3, 4, 5, 6], [3, 4, 5]], | ||
[{ $lte: "5" }, [4, 3, 2, 1], []], | ||
[{ $lte: "5" }, ["4", "3", "2"], ["4", "3", "2"]], | ||
[ | ||
@@ -161,2 +156,4 @@ { groups: { $lt: 5 } }, | ||
[{ $gt: null }, [3, 4], []], | ||
[{ $gt: "5" }, [6, 7, 8], []], | ||
[{ $gt: "5" }, ["6", "7", "8"], ["6", "7", "8"]], | ||
[ | ||
@@ -170,2 +167,3 @@ { groups: { $gt: 5 } }, | ||
[{ $gte: 5 }, [3, 4, 5, 6], [5, 6]], | ||
[{ $gte: "5" }, [4, 3, 2, 1], []], | ||
[ | ||
@@ -172,0 +170,0 @@ { groups: { $gte: 5 } }, |
@@ -7,2 +7,3 @@ { | ||
"module": "commonjs", | ||
"declaration": true, | ||
"allowSyntheticDefaultImports": true | ||
@@ -9,0 +10,0 @@ }, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
337034
2.54%44
10%3311
5.28%469
-0.42%