Initial commit

This commit is contained in:
Arnaud Nelissen
2021-07-16 10:18:13 +02:00
commit 3af7ddab06
5894 changed files with 590836 additions and 0 deletions

20
node_modules/sift/MIT-LICENSE.txt generated vendored Normal file
View File

@@ -0,0 +1,20 @@
Copyright (c) 2015 Craig Condon
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

465
node_modules/sift/README.md generated vendored Normal file
View File

@@ -0,0 +1,465 @@
**Installation**: `npm install sift`, or `yarn add sift`
## Sift is a tiny library for using MongoDB queries in Javascript
[![Build Status](https://secure.travis-ci.org/crcn/sift.js.png)](https://secure.travis-ci.org/crcn/sift.js)
<!-- [![Coverage Status](https://coveralls.io/repos/crcn/sift.js/badge.svg)](https://coveralls.io/r/crcn/sift.js) -->
<!-- [![Join the chat at https://gitter.im/crcn/sift.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/crcn/sift.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -->
**For extended documentation, checkout http://docs.mongodb.org/manual/reference/operator/query/**
## Features:
- Supported operators: [\$in](#in), [\$nin](#nin), [\$exists](#exists), [\$gte](#gte), [\$gt](#gt), [\$lte](#lte), [\$lt](#lt), [\$eq](#eq), [\$ne](#ne), [\$mod](#mod), [\$all](#all), [\$and](#and), [\$or](#or), [\$nor](#nor), [\$not](#not), [\$size](#size), [\$type](#type), [\$regex](#regex), [\$where](#where), [\$elemMatch](#elemmatch)
- Regexp searches
- Supports node.js, and web
- Custom Operations
- Tree-shaking (omitting functionality from web app bundles)
## Examples
```javascript
import sift from "sift";
//intersecting arrays
const result1 = ["hello", "sifted", "array!"].filter(
sift({ $in: ["hello", "world"] })
); //['hello']
//regexp filter
const result2 = ["craig", "john", "jake"].filter(sift(/^j/)); //['john','jake']
// function filter
const testFilter = sift({
//you can also filter against functions
name: function(value) {
return value.length == 5;
}
});
const result3 = [
{
name: "craig"
},
{
name: "john"
},
{
name: "jake"
}
].filter(testFilter); // filtered: [{ name: 'craig' }]
//you can test *single values* against your custom sifter
testFilter({ name: "sarah" }); //true
testFilter({ name: "tim" }); //false
```
## API
### sift(query: MongoQuery, options?: Options): Function
Creates a filter with all of the built-in MongoDB query operations.
- `query` - the filter to use against the target array
- `options`
- `operations` - [custom operations](#custom-operations)
- `compare` - compares difference between two values
Example:
```javascript
import sift from "sift";
const test = sift({ $gt: 5 }));
console.log(test(6)); // true
console.log(test(4)); // false
[3, 4, 5, 6, 7].filter(sift({ $exists: true })); // [6, 7]
```
### createQueryTester(query: Query, options?: Options): Function
Creates a filter function **without** built-in MongoDB query operations. This is useful
if you're looking to omit certain operations from application bundles. See [Omitting built-in operations](#omitting-built-in-operations) for more info.
```javascript
import { createQueryTester, $eq, $in } from "sift";
const filter = createQueryTester({ $eq: 5 }, { operations: { $eq, $in } });
```
### createEqualsOperation(params: any, ownerQuery: Query, options: Options): Operation
Used for [custom operations](#custom-operations).
```javascript
import { createQueryTester, createEqualsOperation, $eq, $in } from "sift";
const filter = createQueryTester(
{ $mod: 5 },
{
operations: {
$something(mod, ownerQuery, options) {
return createEqualsOperation(
value => value % mod === 0,
ownerQuery,
options
);
}
}
}
);
filter(10); // true
filter(11); // false
```
## Supported Operators
See MongoDB's [advanced queries](http://www.mongodb.org/display/DOCS/Advanced+Queries) for more info.
### \$in
array value must be _\$in_ the given query:
Intersecting two arrays:
```javascript
//filtered: ['Brazil']
["Brazil", "Haiti", "Peru", "Chile"].filter(
sift({ $in: ["Costa Rica", "Brazil"] })
);
```
Here's another example. This acts more like the \$or operator:
```javascript
[{ name: "Craig", location: "Brazil" }].filter(
sift({ location: { $in: ["Costa Rica", "Brazil"] } })
);
```
### \$nin
Opposite of \$in:
```javascript
//filtered: ['Haiti','Peru','Chile']
["Brazil", "Haiti", "Peru", "Chile"].filter(
sift({ $nin: ["Costa Rica", "Brazil"] })
);
```
### \$exists
Checks if whether a value exists:
```javascript
//filtered: ['Craig','Tim']
sift({ $exists: true })(["Craig", null, "Tim"]);
```
You can also filter out values that don't exist
```javascript
//filtered: [{ name: "Tim" }]
[{ name: "Craig", city: "Minneapolis" }, { name: "Tim" }].filter(
sift({ city: { $exists: false } })
);
```
### \$gte
Checks if a number is >= value:
```javascript
//filtered: [2, 3]
[0, 1, 2, 3].filter(sift({ $gte: 2 }));
```
### \$gt
Checks if a number is > value:
```javascript
//filtered: [3]
[0, 1, 2, 3].filter(sift({ $gt: 2 }));
```
### \$lte
Checks if a number is <= value.
```javascript
//filtered: [0, 1, 2]
[0, 1, 2, 3].filter(sift({ $lte: 2 }));
```
### \$lt
Checks if number is < value.
```javascript
//filtered: [0, 1]
[0, 1, 2, 3].filter(sift({ $lt: 2 }));
```
### \$eq
Checks if `query === value`. Note that **\$eq can be omitted**. For **\$eq**, and **\$ne**
```javascript
//filtered: [{ state: 'MN' }]
[{ state: "MN" }, { state: "CA" }, { state: "WI" }].filter(
sift({ state: { $eq: "MN" } })
);
```
Or:
```javascript
//filtered: [{ state: 'MN' }]
[{ state: "MN" }, { state: "CA" }, { state: "WI" }].filter(
sift({ state: "MN" })
);
```
### \$ne
Checks if `query !== value`.
```javascript
//filtered: [{ state: 'CA' }, { state: 'WI'}]
[{ state: "MN" }, { state: "CA" }, { state: "WI" }].filter(
sift({ state: { $ne: "MN" } })
);
```
### \$mod
Modulus:
```javascript
//filtered: [300, 600]
[100, 200, 300, 400, 500, 600].filter(sift({ $mod: [3, 0] }));
```
### \$all
values must match **everything** in array:
```javascript
//filtered: [ { tags: ['books','programming','travel' ]} ]
[
{ tags: ["books", "programming", "travel"] },
{ tags: ["travel", "cooking"] }
].filter(sift({ tags: { $all: ["books", "programming"] } }));
```
### \$and
ability to use an array of expressions. All expressions must test true.
```javascript
//filtered: [ { name: 'Craig', state: 'MN' }]
[
{ name: "Craig", state: "MN" },
{ name: "Tim", state: "MN" },
{ name: "Joe", state: "CA" }
].filter(sift({ $and: [{ name: "Craig" }, { state: "MN" }] }));
```
### \$or
OR array of expressions.
```javascript
//filtered: [ { name: 'Craig', state: 'MN' }, { name: 'Tim', state: 'MN' }]
[
{ name: "Craig", state: "MN" },
{ name: "Tim", state: "MN" },
{ name: "Joe", state: "CA" }
].filter(sift({ $or: [{ name: "Craig" }, { state: "MN" }] }));
```
### \$nor
opposite of or:
```javascript
//filtered: [ { name: 'Tim', state: 'MN' }, { name: 'Joe', state: 'CA' }]
[
{ name: "Craig", state: "MN" },
{ name: "Tim", state: "MN" },
{ name: "Joe", state: "CA" }
].filter(sift({ $nor: [{ name: "Craig" }, { state: "MN" }] }));
```
### \$size
Matches an array - must match given size:
```javascript
//filtered: ['food','cooking']
[{ tags: ["food", "cooking"] }, { tags: ["traveling"] }].filter(
sift({ tags: { $size: 2 } })
);
```
### \$type
Matches a values based on the type
```javascript
[new Date(), 4342, "hello world"].filter(sift({ $type: Date })); //returns single date
[new Date(), 4342, "hello world"].filter(sift({ $type: String })); //returns ['hello world']
```
### \$regex
Matches values based on the given regular expression
```javascript
["frank", "fred", "sam", "frost"].filter(
sift({ $regex: /^f/i, $nin: ["frank"] })
); // ["fred", "frost"]
["frank", "fred", "sam", "frost"].filter(
sift({ $regex: "^f", $options: "i", $nin: ["frank"] })
); // ["fred", "frost"]
```
### \$where
Matches based on some javascript comparison
```javascript
[{ name: "frank" }, { name: "joe" }].filter(
sift({ $where: "this.name === 'frank'" })
); // ["frank"]
[{ name: "frank" }, { name: "joe" }].filter(
sift({
$where: function() {
return this.name === "frank";
}
})
); // ["frank"]
```
### \$elemMatch
Matches elements of array
```javascript
var bills = [
{
month: "july",
casts: [
{
id: 1,
value: 200
},
{
id: 2,
value: 1000
}
]
},
{
month: "august",
casts: [
{
id: 3,
value: 1000
},
{
id: 4,
value: 4000
}
]
}
];
var result = bills.filter(
sift({
casts: {
$elemMatch: {
value: { $gt: 1000 }
}
}
})
); // {month:'august', casts:[{id:3, value: 1000},{id: 4, value: 4000}]}
```
### \$not
Not expression:
```javascript
["craig", "tim", "jake"].filter(sift({ $not: { $in: ["craig", "tim"] } })); //['jake']
["craig", "tim", "jake"].filter(sift({ $not: { $size: 5 } })); //['tim','jake']
```
### Date comparison
Mongodb allows you to do date comparisons like so:
```javascript
db.collection.find({ createdAt: { $gte: "2018-03-22T06:00:00Z" } });
```
In Sift, you'll need to specify a Date object:
```javascript
collection.find(
sift({ createdAt: { $gte: new Date("2018-03-22T06:00:00Z") } })
);
```
## Custom behavior
Sift works like MongoDB out of the box, but you're also able to modify the behavior to suite your needs.
#### Custom operations
You can register your own custom operations. Here's an example:
```javascript
import sift, { createEqualsOperation } from "sift";
var filter = sift(
{
$customMod: 2
},
{
operations: {
$customMod(params, ownerQuery, options) {
return createEqualsOperation(
value => value % params !== 0,
ownerQuery,
options
);
}
}
}
);
[1, 2, 3, 4, 5].filter(filter); // 1, 3, 5
```
#### Omitting built-in operations
You can create a filter function that omits the built-in operations like so:
```javascript
import { createQueryTester, $in, $all, $nin, $lt } from "sift";
const test = createQueryTester(
{
$eq: 10
},
{ $in, $all, $nin, $lt }
);
[1, 2, 3, 4, 10].filter(test);
```
For bundlers like `Webpack` and `Rollup`, operations that aren't used are omitted from application bundles via tree-shaking.

77
node_modules/sift/changelog.md generated vendored Normal file
View File

@@ -0,0 +1,77 @@
## 13.1.0
- Added stronger types for queries: https://github.com/crcn/sift.js/issues/197
## 13.0.0
- Fix behavior discrepancy with Mongo: https://github.com/crcn/sift.js/issues/196
## 12.0.0
- Fix bug where \$elemMatch tested objects: e.g: `sift({a: {$elemMatch: 1}})({ a: { b: 1}})`. \$elemMatch now expects arrays based on Mongodb syntax. E.g: `sift({a: {$elemMatch: 1}})({ a: { b: 1}})`
## 11.0.0
- new custom operations syntax (see API readme)
- null & undefined are not treated equally (change has been added to keep spec as functionality as possible to MongoDB)
- `select` option has been removed
- `compare` option now expects `boolean` return value instead of an integer
- nested queries are no-longer supported
- `expressions` option is now `operations`
- `operations` parameter now expects new operations API
- ImmutableJS support removed for now
- Remove bower support
## 9.0.0
- (behavior change) toJSON works for vanilla objects.
## 8.5.1
- Fix dependency vulnerability
- Fix #158
## 8.5.0
- Added `comparable` option (fix https://github.com/crcn/sift.js/issues/156)
## 8.4.0
- Added `compare` option (fix https://github.com/crcn/sift.js/issues/155)
## 8.3.2
- Query _properties_ now excpect exact object shape (based on https://github.com/crcn/sift.js/issues/152). E.g: `[{a: { b: 1}}, {a: { b: 1, c: 2}}]].filter(sift({ a: { b: 1} })) === [{a: {b: 1}]`, and `[{a: 1, b: 1}, {a: 1}]].filter(sift({ a: 1 })) === [{a: 1, b: 1}, {a: 1}]`.
## 8.0.0
- DEPRECATED `indexOf` in favor of `array.findIndex(sift(query))`
- second param is now `options` instead of select function. E.g: `sift(query, { expressions: customExpressions, select: selectValue })`
- DEPRECATED `sift(query, array)`. You must now use `array.filter(sift(query))`
- Queries now expect exact object shape (based on https://github.com/crcn/sift.js/issues/117). E.g: `[{a: 1, b: 1}, {a: 1}]].filter(sift({ a: 1 })) === [{a: 1}]`
### 7.0.0
- Remove global `*.use()` function.
- converted to ES6
### 3.3.x
- `$in` now uses `toString()` when evaluating objects. Fixes #116.
#### 2.x
- `use()` now uses a different format:
```javascript
sift.use({
$operator: function(a) {
return function(b) {
// compare here
};
}
});
```
- all operators are traversable now
- fix #58.

528
node_modules/sift/es/index.js generated vendored Normal file
View File

@@ -0,0 +1,528 @@
const typeChecker = (type) => {
const typeString = "[object " + type + "]";
return function (value) {
return getClassName(value) === typeString;
};
};
const getClassName = value => Object.prototype.toString.call(value);
const comparable = (value) => {
if (value instanceof Date) {
return value.getTime();
}
else if (isArray(value)) {
return value.map(comparable);
}
else if (value && typeof value.toJSON === "function") {
return value.toJSON();
}
return value;
};
const isArray = typeChecker("Array");
const isObject = typeChecker("Object");
const isFunction = typeChecker("Function");
const isVanillaObject = value => {
return (value &&
(value.constructor === Object ||
value.constructor === Array ||
value.constructor.toString() === "function Object() { [native code] }" ||
value.constructor.toString() === "function Array() { [native code] }") &&
!value.toJSON);
};
const equals = (a, b) => {
if (a == null && a == b) {
return true;
}
if (a === b) {
return true;
}
if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {
return false;
}
if (isArray(a)) {
if (a.length !== b.length) {
return false;
}
for (let i = 0, { length } = a; i < length; i++) {
if (!equals(a[i], b[i]))
return false;
}
return true;
}
else if (isObject(a)) {
if (Object.keys(a).length !== Object.keys(b).length) {
return false;
}
for (const key in a) {
if (!equals(a[key], b[key]))
return false;
}
return true;
}
return false;
};
/**
* Walks through each value given the context - used for nested operations. E.g:
* { "person.address": { $eq: "blarg" }}
*/
const walkKeyPathValues = (item, keyPath, next, depth, key, owner) => {
const currentKey = keyPath[depth];
// if array, then try matching. Might fall through for cases like:
// { $eq: [1, 2, 3] }, [ 1, 2, 3 ].
if (isArray(item) && isNaN(Number(currentKey))) {
for (let i = 0, { length } = item; i < length; i++) {
// if FALSE is returned, then terminate walker. For operations, this simply
// means that the search critera was met.
if (!walkKeyPathValues(item[i], keyPath, next, depth, i, item)) {
return false;
}
}
}
if (depth === keyPath.length || item == null) {
return next(item, key, owner);
}
return walkKeyPathValues(item[currentKey], keyPath, next, depth + 1, currentKey, item);
};
class BaseOperation {
constructor(params, owneryQuery, options) {
this.params = params;
this.owneryQuery = owneryQuery;
this.options = options;
this.init();
}
init() { }
reset() {
this.done = false;
this.keep = false;
}
}
class NamedBaseOperation extends BaseOperation {
constructor(params, owneryQuery, options, name) {
super(params, owneryQuery, options);
this.name = name;
}
}
class GroupOperation extends BaseOperation {
constructor(params, owneryQuery, options, children) {
super(params, owneryQuery, options);
this.children = children;
}
/**
*/
reset() {
this.keep = false;
this.done = false;
for (let i = 0, { length } = this.children; i < length; i++) {
this.children[i].reset();
}
}
/**
*/
childrenNext(item, key, owner) {
let done = true;
let keep = true;
for (let i = 0, { length } = this.children; i < length; i++) {
const childOperation = this.children[i];
childOperation.next(item, key, owner);
if (!childOperation.keep) {
keep = false;
}
if (childOperation.done) {
if (!childOperation.keep) {
break;
}
}
else {
done = false;
}
}
this.done = done;
this.keep = keep;
}
}
class NamedGroupOperation extends GroupOperation {
constructor(params, owneryQuery, options, children, name) {
super(params, owneryQuery, options, children);
this.name = name;
}
}
class QueryOperation extends GroupOperation {
/**
*/
next(item, key, parent) {
this.childrenNext(item, key, parent);
}
}
class NestedOperation extends GroupOperation {
constructor(keyPath, params, owneryQuery, options, children) {
super(params, owneryQuery, options, children);
this.keyPath = keyPath;
/**
*/
this._nextNestedValue = (value, key, owner) => {
this.childrenNext(value, key, owner);
return !this.done;
};
}
/**
*/
next(item, key, parent) {
walkKeyPathValues(item, this.keyPath, this._nextNestedValue, 0, key, parent);
}
}
const createTester = (a, compare) => {
if (a instanceof Function) {
return a;
}
if (a instanceof RegExp) {
return b => {
const result = typeof b === "string" && a.test(b);
a.lastIndex = 0;
return result;
};
}
const comparableA = comparable(a);
return b => compare(comparableA, comparable(b));
};
class EqualsOperation extends BaseOperation {
init() {
this._test = createTester(this.params, this.options.compare);
}
next(item, key, parent) {
if (!Array.isArray(parent) || parent.hasOwnProperty(key)) {
if (this._test(item, key, parent)) {
this.done = true;
this.keep = true;
}
}
}
}
const createEqualsOperation = (params, owneryQuery, options) => new EqualsOperation(params, owneryQuery, options);
class NopeOperation extends BaseOperation {
next() {
this.done = true;
this.keep = false;
}
}
const numericalOperationCreator = (createNumericalOperation) => (params, owneryQuery, options, name) => {
if (params == null) {
return new NopeOperation(params, owneryQuery, options);
}
return createNumericalOperation(params, owneryQuery, options, name);
};
const numericalOperation = (createTester) => numericalOperationCreator((params, owneryQuery, options) => {
const typeofParams = typeof comparable(params);
const test = createTester(params);
return new EqualsOperation(b => {
return typeof comparable(b) === typeofParams && test(b);
}, owneryQuery, options);
});
const createNamedOperation = (name, params, parentQuery, options) => {
const operationCreator = options.operations[name];
if (!operationCreator) {
throw new Error(`Unsupported operation: ${name}`);
}
return operationCreator(params, parentQuery, options, name);
};
const containsOperation = (query) => {
for (const key in query) {
if (key.charAt(0) === "$")
return true;
}
return false;
};
const createNestedOperation = (keyPath, nestedQuery, owneryQuery, options) => {
if (containsOperation(nestedQuery)) {
const [selfOperations, nestedOperations] = createQueryOperations(nestedQuery, options);
if (nestedOperations.length) {
throw new Error(`Property queries must contain only operations, or exact objects.`);
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, selfOperations);
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, [
new EqualsOperation(nestedQuery, owneryQuery, options)
]);
};
const createQueryOperation = (query, owneryQuery = null, { compare, operations } = {}) => {
const options = {
compare: compare || equals,
operations: Object.assign({}, operations || {})
};
const [selfOperations, nestedOperations] = createQueryOperations(query, options);
const ops = [];
if (selfOperations.length) {
ops.push(new NestedOperation([], query, owneryQuery, options, selfOperations));
}
ops.push(...nestedOperations);
if (ops.length === 1) {
return ops[0];
}
return new QueryOperation(query, owneryQuery, options, ops);
};
const createQueryOperations = (query, options) => {
const selfOperations = [];
const nestedOperations = [];
if (!isVanillaObject(query)) {
selfOperations.push(new EqualsOperation(query, query, options));
return [selfOperations, nestedOperations];
}
for (const key in query) {
if (key.charAt(0) === "$") {
const op = createNamedOperation(key, query[key], query, options);
// probably just a flag for another operation (like $options)
if (op != null) {
selfOperations.push(op);
}
}
else {
nestedOperations.push(createNestedOperation(key.split("."), query[key], query, options));
}
}
return [selfOperations, nestedOperations];
};
const createOperationTester = (operation) => (item, key, owner) => {
operation.reset();
operation.next(item, key, owner);
return operation.keep;
};
const createQueryTester = (query, options = {}) => {
return createOperationTester(createQueryOperation(query, null, options));
};
class $Ne extends NamedBaseOperation {
init() {
this._test = createTester(this.params, this.options.compare);
}
reset() {
super.reset();
this.keep = true;
}
next(item) {
if (this._test(item)) {
this.done = true;
this.keep = false;
}
}
}
// https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
class $ElemMatch extends NamedBaseOperation {
init() {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
}
reset() {
super.reset();
this._queryOperation.reset();
}
next(item) {
if (isArray(item)) {
for (let i = 0, { length } = item; i < length; i++) {
// reset query operation since item being tested needs to pass _all_ query
// operations for it to be a success
this._queryOperation.reset();
// check item
this._queryOperation.next(item[i], i, item);
this.keep = this.keep || this._queryOperation.keep;
}
this.done = true;
}
else {
this.done = false;
this.keep = false;
}
}
}
class $Not extends NamedBaseOperation {
init() {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
}
reset() {
this._queryOperation.reset();
}
next(item, key, owner) {
this._queryOperation.next(item, key, owner);
this.done = this._queryOperation.done;
this.keep = !this._queryOperation.keep;
}
}
class $Size extends NamedBaseOperation {
init() { }
next(item) {
if (isArray(item) && item.length === this.params) {
this.done = true;
this.keep = true;
}
// if (parent && parent.length === this.params) {
// this.done = true;
// this.keep = true;
// }
}
}
class $Or extends NamedBaseOperation {
init() {
this._ops = this.params.map(op => createQueryOperation(op, null, this.options));
}
reset() {
this.done = false;
this.keep = false;
for (let i = 0, { length } = this._ops; i < length; i++) {
this._ops[i].reset();
}
}
next(item, key, owner) {
let done = false;
let success = false;
for (let i = 0, { length } = this._ops; i < length; i++) {
const op = this._ops[i];
op.next(item, key, owner);
if (op.keep) {
done = true;
success = op.keep;
break;
}
}
this.keep = success;
this.done = done;
}
}
class $Nor extends $Or {
next(item, key, owner) {
super.next(item, key, owner);
this.keep = !this.keep;
}
}
class $In extends NamedBaseOperation {
init() {
this._testers = this.params.map(value => {
if (containsOperation(value)) {
throw new Error(`cannot nest $ under ${this.constructor.name.toLowerCase()}`);
}
return createTester(value, this.options.compare);
});
}
next(item, key, owner) {
let done = false;
let success = false;
for (let i = 0, { length } = this._testers; i < length; i++) {
const test = this._testers[i];
if (test(item)) {
done = true;
success = true;
break;
}
}
this.keep = success;
this.done = done;
}
}
class $Nin extends $In {
next(item, key, owner) {
super.next(item, key, owner);
this.keep = !this.keep;
}
}
class $Exists extends NamedBaseOperation {
next(item, key, owner) {
if (owner.hasOwnProperty(key) === this.params) {
this.done = true;
this.keep = true;
}
}
}
class $And extends NamedGroupOperation {
constructor(params, owneryQuery, options, name) {
super(params, owneryQuery, options, params.map(query => createQueryOperation(query, owneryQuery, options)), name);
}
next(item, key, owner) {
this.childrenNext(item, key, owner);
}
}
const $eq = (params, owneryQuery, options) => new EqualsOperation(params, owneryQuery, options);
const $ne = (params, owneryQuery, options, name) => new $Ne(params, owneryQuery, options, name);
const $or = (params, owneryQuery, options, name) => new $Or(params, owneryQuery, options, name);
const $nor = (params, owneryQuery, options, name) => new $Nor(params, owneryQuery, options, name);
const $elemMatch = (params, owneryQuery, options, name) => new $ElemMatch(params, owneryQuery, options, name);
const $nin = (params, owneryQuery, options, name) => new $Nin(params, owneryQuery, options, name);
const $in = (params, owneryQuery, options, name) => new $In(params, owneryQuery, options, name);
const $lt = numericalOperation(params => b => b < params);
const $lte = numericalOperation(params => b => b <= params);
const $gt = numericalOperation(params => b => b > params);
const $gte = numericalOperation(params => b => b >= params);
const $mod = ([mod, equalsValue], owneryQuery, options) => new EqualsOperation(b => comparable(b) % mod === equalsValue, owneryQuery, options);
const $exists = (params, owneryQuery, options, name) => new $Exists(params, owneryQuery, options, name);
const $regex = (pattern, owneryQuery, options) => new EqualsOperation(new RegExp(pattern, owneryQuery.$options), owneryQuery, options);
const $not = (params, owneryQuery, options, name) => new $Not(params, owneryQuery, options, name);
const typeAliases = {
number: v => typeof v === "number",
string: v => typeof v === "string",
bool: v => typeof v === "boolean",
array: v => Array.isArray(v),
null: v => v === null,
timestamp: v => v instanceof Date
};
const $type = (clazz, owneryQuery, options) => new EqualsOperation(b => {
if (typeof clazz === "string") {
if (!typeAliases[clazz]) {
throw new Error(`Type alias does not exist`);
}
return typeAliases[clazz](b);
}
return b != null ? b instanceof clazz || b.constructor === clazz : false;
}, owneryQuery, options);
const $and = (params, ownerQuery, options, name) => new $And(params, ownerQuery, options, name);
const $all = $and;
const $size = (params, ownerQuery, options) => new $Size(params, ownerQuery, options, "$size");
const $options = () => null;
const $where = (params, ownerQuery, options) => {
let test;
if (isFunction(params)) {
test = params;
}
else if (!process.env.CSP_ENABLED) {
test = new Function("obj", "return " + params);
}
else {
throw new Error(`In CSP mode, sift does not support strings in "$where" condition`);
}
return new EqualsOperation(b => test.bind(b)(b), ownerQuery, options);
};
var defaultOperations = /*#__PURE__*/Object.freeze({
__proto__: null,
$Size: $Size,
$eq: $eq,
$ne: $ne,
$or: $or,
$nor: $nor,
$elemMatch: $elemMatch,
$nin: $nin,
$in: $in,
$lt: $lt,
$lte: $lte,
$gt: $gt,
$gte: $gte,
$mod: $mod,
$exists: $exists,
$regex: $regex,
$not: $not,
$type: $type,
$and: $and,
$all: $all,
$size: $size,
$options: $options,
$where: $where
});
const createDefaultQueryOperation = (query, ownerQuery, { compare, operations } = {}) => {
return createQueryOperation(query, ownerQuery, {
compare: compare,
operations: Object.assign({}, defaultOperations, operations || {})
});
};
const createDefaultQueryTester = (query, options = {}) => {
const op = createDefaultQueryOperation(query, null, options);
return createOperationTester(op);
};
export default createDefaultQueryTester;
export { $Size, $all, $and, $elemMatch, $eq, $exists, $gt, $gte, $in, $lt, $lte, $mod, $ne, $nin, $nor, $not, $options, $or, $regex, $size, $type, $where, EqualsOperation, createDefaultQueryOperation, createEqualsOperation, createOperationTester, createQueryOperation, createQueryTester };
//# sourceMappingURL=index.js.map

1
node_modules/sift/es/index.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

652
node_modules/sift/es5m/index.js generated vendored Normal file
View File

@@ -0,0 +1,652 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var typeChecker = function (type) {
var typeString = "[object " + type + "]";
return function (value) {
return getClassName(value) === typeString;
};
};
var getClassName = function (value) { return Object.prototype.toString.call(value); };
var comparable = function (value) {
if (value instanceof Date) {
return value.getTime();
}
else if (isArray(value)) {
return value.map(comparable);
}
else if (value && typeof value.toJSON === "function") {
return value.toJSON();
}
return value;
};
var isArray = typeChecker("Array");
var isObject = typeChecker("Object");
var isFunction = typeChecker("Function");
var isVanillaObject = function (value) {
return (value &&
(value.constructor === Object ||
value.constructor === Array ||
value.constructor.toString() === "function Object() { [native code] }" ||
value.constructor.toString() === "function Array() { [native code] }") &&
!value.toJSON);
};
var equals = function (a, b) {
if (a == null && a == b) {
return true;
}
if (a === b) {
return true;
}
if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {
return false;
}
if (isArray(a)) {
if (a.length !== b.length) {
return false;
}
for (var i = 0, length_1 = a.length; i < length_1; i++) {
if (!equals(a[i], b[i]))
return false;
}
return true;
}
else if (isObject(a)) {
if (Object.keys(a).length !== Object.keys(b).length) {
return false;
}
for (var key in a) {
if (!equals(a[key], b[key]))
return false;
}
return true;
}
return false;
};
/**
* Walks through each value given the context - used for nested operations. E.g:
* { "person.address": { $eq: "blarg" }}
*/
var walkKeyPathValues = function (item, keyPath, next, depth, key, owner) {
var currentKey = keyPath[depth];
// if array, then try matching. Might fall through for cases like:
// { $eq: [1, 2, 3] }, [ 1, 2, 3 ].
if (isArray(item) && isNaN(Number(currentKey))) {
for (var i = 0, length_1 = item.length; i < length_1; i++) {
// if FALSE is returned, then terminate walker. For operations, this simply
// means that the search critera was met.
if (!walkKeyPathValues(item[i], keyPath, next, depth, i, item)) {
return false;
}
}
}
if (depth === keyPath.length || item == null) {
return next(item, key, owner);
}
return walkKeyPathValues(item[currentKey], keyPath, next, depth + 1, currentKey, item);
};
var BaseOperation = /** @class */ (function () {
function BaseOperation(params, owneryQuery, options) {
this.params = params;
this.owneryQuery = owneryQuery;
this.options = options;
this.init();
}
BaseOperation.prototype.init = function () { };
BaseOperation.prototype.reset = function () {
this.done = false;
this.keep = false;
};
return BaseOperation;
}());
var NamedBaseOperation = /** @class */ (function (_super) {
__extends(NamedBaseOperation, _super);
function NamedBaseOperation(params, owneryQuery, options, name) {
var _this = _super.call(this, params, owneryQuery, options) || this;
_this.name = name;
return _this;
}
return NamedBaseOperation;
}(BaseOperation));
var GroupOperation = /** @class */ (function (_super) {
__extends(GroupOperation, _super);
function GroupOperation(params, owneryQuery, options, children) {
var _this = _super.call(this, params, owneryQuery, options) || this;
_this.children = children;
return _this;
}
/**
*/
GroupOperation.prototype.reset = function () {
this.keep = false;
this.done = false;
for (var i = 0, length_2 = this.children.length; i < length_2; i++) {
this.children[i].reset();
}
};
/**
*/
GroupOperation.prototype.childrenNext = function (item, key, owner) {
var done = true;
var keep = true;
for (var i = 0, length_3 = this.children.length; i < length_3; i++) {
var childOperation = this.children[i];
childOperation.next(item, key, owner);
if (!childOperation.keep) {
keep = false;
}
if (childOperation.done) {
if (!childOperation.keep) {
break;
}
}
else {
done = false;
}
}
this.done = done;
this.keep = keep;
};
return GroupOperation;
}(BaseOperation));
var NamedGroupOperation = /** @class */ (function (_super) {
__extends(NamedGroupOperation, _super);
function NamedGroupOperation(params, owneryQuery, options, children, name) {
var _this = _super.call(this, params, owneryQuery, options, children) || this;
_this.name = name;
return _this;
}
return NamedGroupOperation;
}(GroupOperation));
var QueryOperation = /** @class */ (function (_super) {
__extends(QueryOperation, _super);
function QueryOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
*/
QueryOperation.prototype.next = function (item, key, parent) {
this.childrenNext(item, key, parent);
};
return QueryOperation;
}(GroupOperation));
var NestedOperation = /** @class */ (function (_super) {
__extends(NestedOperation, _super);
function NestedOperation(keyPath, params, owneryQuery, options, children) {
var _this = _super.call(this, params, owneryQuery, options, children) || this;
_this.keyPath = keyPath;
/**
*/
_this._nextNestedValue = function (value, key, owner) {
_this.childrenNext(value, key, owner);
return !_this.done;
};
return _this;
}
/**
*/
NestedOperation.prototype.next = function (item, key, parent) {
walkKeyPathValues(item, this.keyPath, this._nextNestedValue, 0, key, parent);
};
return NestedOperation;
}(GroupOperation));
var createTester = function (a, compare) {
if (a instanceof Function) {
return a;
}
if (a instanceof RegExp) {
return function (b) {
var result = typeof b === "string" && a.test(b);
a.lastIndex = 0;
return result;
};
}
var comparableA = comparable(a);
return function (b) { return compare(comparableA, comparable(b)); };
};
var EqualsOperation = /** @class */ (function (_super) {
__extends(EqualsOperation, _super);
function EqualsOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
EqualsOperation.prototype.init = function () {
this._test = createTester(this.params, this.options.compare);
};
EqualsOperation.prototype.next = function (item, key, parent) {
if (!Array.isArray(parent) || parent.hasOwnProperty(key)) {
if (this._test(item, key, parent)) {
this.done = true;
this.keep = true;
}
}
};
return EqualsOperation;
}(BaseOperation));
var createEqualsOperation = function (params, owneryQuery, options) { return new EqualsOperation(params, owneryQuery, options); };
var NopeOperation = /** @class */ (function (_super) {
__extends(NopeOperation, _super);
function NopeOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
NopeOperation.prototype.next = function () {
this.done = true;
this.keep = false;
};
return NopeOperation;
}(BaseOperation));
var numericalOperationCreator = function (createNumericalOperation) { return function (params, owneryQuery, options, name) {
if (params == null) {
return new NopeOperation(params, owneryQuery, options);
}
return createNumericalOperation(params, owneryQuery, options, name);
}; };
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 createNamedOperation = function (name, params, parentQuery, options) {
var operationCreator = options.operations[name];
if (!operationCreator) {
throw new Error("Unsupported operation: " + name);
}
return operationCreator(params, parentQuery, options, name);
};
var containsOperation = function (query) {
for (var key in query) {
if (key.charAt(0) === "$")
return true;
}
return false;
};
var createNestedOperation = function (keyPath, nestedQuery, owneryQuery, options) {
if (containsOperation(nestedQuery)) {
var _a = createQueryOperations(nestedQuery, options), selfOperations = _a[0], nestedOperations = _a[1];
if (nestedOperations.length) {
throw new Error("Property queries must contain only operations, or exact objects.");
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, selfOperations);
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, [
new EqualsOperation(nestedQuery, owneryQuery, options)
]);
};
var createQueryOperation = function (query, owneryQuery, _a) {
if (owneryQuery === void 0) { owneryQuery = null; }
var _b = _a === void 0 ? {} : _a, compare = _b.compare, operations = _b.operations;
var options = {
compare: compare || equals,
operations: Object.assign({}, operations || {})
};
var _c = createQueryOperations(query, options), selfOperations = _c[0], nestedOperations = _c[1];
var ops = [];
if (selfOperations.length) {
ops.push(new NestedOperation([], query, owneryQuery, options, selfOperations));
}
ops.push.apply(ops, nestedOperations);
if (ops.length === 1) {
return ops[0];
}
return new QueryOperation(query, owneryQuery, options, ops);
};
var createQueryOperations = function (query, options) {
var selfOperations = [];
var nestedOperations = [];
if (!isVanillaObject(query)) {
selfOperations.push(new EqualsOperation(query, query, options));
return [selfOperations, nestedOperations];
}
for (var key in query) {
if (key.charAt(0) === "$") {
var op = createNamedOperation(key, query[key], query, options);
// probably just a flag for another operation (like $options)
if (op != null) {
selfOperations.push(op);
}
}
else {
nestedOperations.push(createNestedOperation(key.split("."), query[key], query, options));
}
}
return [selfOperations, nestedOperations];
};
var createOperationTester = function (operation) { return function (item, key, owner) {
operation.reset();
operation.next(item, key, owner);
return operation.keep;
}; };
var createQueryTester = function (query, options) {
if (options === void 0) { options = {}; }
return createOperationTester(createQueryOperation(query, null, options));
};
var $Ne = /** @class */ (function (_super) {
__extends($Ne, _super);
function $Ne() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Ne.prototype.init = function () {
this._test = createTester(this.params, this.options.compare);
};
$Ne.prototype.reset = function () {
_super.prototype.reset.call(this);
this.keep = true;
};
$Ne.prototype.next = function (item) {
if (this._test(item)) {
this.done = true;
this.keep = false;
}
};
return $Ne;
}(NamedBaseOperation));
// https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
var $ElemMatch = /** @class */ (function (_super) {
__extends($ElemMatch, _super);
function $ElemMatch() {
return _super !== null && _super.apply(this, arguments) || this;
}
$ElemMatch.prototype.init = function () {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
};
$ElemMatch.prototype.reset = function () {
_super.prototype.reset.call(this);
this._queryOperation.reset();
};
$ElemMatch.prototype.next = function (item) {
if (isArray(item)) {
for (var i = 0, length_1 = item.length; i < length_1; i++) {
// reset query operation since item being tested needs to pass _all_ query
// operations for it to be a success
this._queryOperation.reset();
// check item
this._queryOperation.next(item[i], i, item);
this.keep = this.keep || this._queryOperation.keep;
}
this.done = true;
}
else {
this.done = false;
this.keep = false;
}
};
return $ElemMatch;
}(NamedBaseOperation));
var $Not = /** @class */ (function (_super) {
__extends($Not, _super);
function $Not() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Not.prototype.init = function () {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
};
$Not.prototype.reset = function () {
this._queryOperation.reset();
};
$Not.prototype.next = function (item, key, owner) {
this._queryOperation.next(item, key, owner);
this.done = this._queryOperation.done;
this.keep = !this._queryOperation.keep;
};
return $Not;
}(NamedBaseOperation));
var $Size = /** @class */ (function (_super) {
__extends($Size, _super);
function $Size() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Size.prototype.init = function () { };
$Size.prototype.next = function (item) {
if (isArray(item) && item.length === this.params) {
this.done = true;
this.keep = true;
}
// if (parent && parent.length === this.params) {
// this.done = true;
// this.keep = true;
// }
};
return $Size;
}(NamedBaseOperation));
var $Or = /** @class */ (function (_super) {
__extends($Or, _super);
function $Or() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Or.prototype.init = function () {
var _this = this;
this._ops = this.params.map(function (op) {
return createQueryOperation(op, null, _this.options);
});
};
$Or.prototype.reset = function () {
this.done = false;
this.keep = false;
for (var i = 0, length_2 = this._ops.length; i < length_2; i++) {
this._ops[i].reset();
}
};
$Or.prototype.next = function (item, key, owner) {
var done = false;
var success = false;
for (var i = 0, length_3 = this._ops.length; i < length_3; i++) {
var op = this._ops[i];
op.next(item, key, owner);
if (op.keep) {
done = true;
success = op.keep;
break;
}
}
this.keep = success;
this.done = done;
};
return $Or;
}(NamedBaseOperation));
var $Nor = /** @class */ (function (_super) {
__extends($Nor, _super);
function $Nor() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Nor.prototype.next = function (item, key, owner) {
_super.prototype.next.call(this, item, key, owner);
this.keep = !this.keep;
};
return $Nor;
}($Or));
var $In = /** @class */ (function (_super) {
__extends($In, _super);
function $In() {
return _super !== null && _super.apply(this, arguments) || this;
}
$In.prototype.init = function () {
var _this = this;
this._testers = this.params.map(function (value) {
if (containsOperation(value)) {
throw new Error("cannot nest $ under " + _this.constructor.name.toLowerCase());
}
return createTester(value, _this.options.compare);
});
};
$In.prototype.next = function (item, key, owner) {
var done = false;
var success = false;
for (var i = 0, length_4 = this._testers.length; i < length_4; i++) {
var test = this._testers[i];
if (test(item)) {
done = true;
success = true;
break;
}
}
this.keep = success;
this.done = done;
};
return $In;
}(NamedBaseOperation));
var $Nin = /** @class */ (function (_super) {
__extends($Nin, _super);
function $Nin() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Nin.prototype.next = function (item, key, owner) {
_super.prototype.next.call(this, item, key, owner);
this.keep = !this.keep;
};
return $Nin;
}($In));
var $Exists = /** @class */ (function (_super) {
__extends($Exists, _super);
function $Exists() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Exists.prototype.next = function (item, key, owner) {
if (owner.hasOwnProperty(key) === this.params) {
this.done = true;
this.keep = true;
}
};
return $Exists;
}(NamedBaseOperation));
var $And = /** @class */ (function (_super) {
__extends($And, _super);
function $And(params, owneryQuery, options, name) {
return _super.call(this, params, owneryQuery, options, params.map(function (query) { return createQueryOperation(query, owneryQuery, options); }), name) || this;
}
$And.prototype.next = function (item, key, owner) {
this.childrenNext(item, key, owner);
};
return $And;
}(NamedGroupOperation));
var $eq = function (params, owneryQuery, options) {
return new EqualsOperation(params, owneryQuery, options);
};
var $ne = function (params, owneryQuery, options, name) { return new $Ne(params, owneryQuery, options, name); };
var $or = function (params, owneryQuery, options, name) { return new $Or(params, owneryQuery, options, name); };
var $nor = function (params, owneryQuery, options, name) { return new $Nor(params, owneryQuery, options, name); };
var $elemMatch = function (params, owneryQuery, options, name) { return new $ElemMatch(params, owneryQuery, options, name); };
var $nin = function (params, owneryQuery, options, name) { return new $Nin(params, owneryQuery, options, name); };
var $in = function (params, owneryQuery, options, name) { return new $In(params, owneryQuery, options, name); };
var $lt = numericalOperation(function (params) { return function (b) { return b < params; }; });
var $lte = numericalOperation(function (params) { return function (b) { return b <= params; }; });
var $gt = numericalOperation(function (params) { return function (b) { return b > params; }; });
var $gte = numericalOperation(function (params) { return function (b) { return b >= params; }; });
var $mod = function (_a, owneryQuery, options) {
var mod = _a[0], equalsValue = _a[1];
return new EqualsOperation(function (b) { return comparable(b) % mod === equalsValue; }, owneryQuery, options);
};
var $exists = function (params, owneryQuery, options, name) { return new $Exists(params, owneryQuery, options, name); };
var $regex = function (pattern, owneryQuery, options) {
return new EqualsOperation(new RegExp(pattern, owneryQuery.$options), owneryQuery, options);
};
var $not = function (params, owneryQuery, options, name) { return new $Not(params, owneryQuery, options, name); };
var typeAliases = {
number: function (v) { return typeof v === "number"; },
string: function (v) { return typeof v === "string"; },
bool: function (v) { return typeof v === "boolean"; },
array: function (v) { return Array.isArray(v); },
null: function (v) { return v === null; },
timestamp: function (v) { return v instanceof Date; }
};
var $type = function (clazz, owneryQuery, options) {
return new EqualsOperation(function (b) {
if (typeof clazz === "string") {
if (!typeAliases[clazz]) {
throw new Error("Type alias does not exist");
}
return typeAliases[clazz](b);
}
return b != null ? b instanceof clazz || b.constructor === clazz : false;
}, owneryQuery, options);
};
var $and = function (params, ownerQuery, options, name) { return new $And(params, ownerQuery, options, name); };
var $all = $and;
var $size = function (params, ownerQuery, options) { return new $Size(params, ownerQuery, options, "$size"); };
var $options = function () { return null; };
var $where = function (params, ownerQuery, options) {
var test;
if (isFunction(params)) {
test = params;
}
else if (!process.env.CSP_ENABLED) {
test = new Function("obj", "return " + params);
}
else {
throw new Error("In CSP mode, sift does not support strings in \"$where\" condition");
}
return new EqualsOperation(function (b) { return test.bind(b)(b); }, ownerQuery, options);
};
var defaultOperations = /*#__PURE__*/Object.freeze({
__proto__: null,
$Size: $Size,
$eq: $eq,
$ne: $ne,
$or: $or,
$nor: $nor,
$elemMatch: $elemMatch,
$nin: $nin,
$in: $in,
$lt: $lt,
$lte: $lte,
$gt: $gt,
$gte: $gte,
$mod: $mod,
$exists: $exists,
$regex: $regex,
$not: $not,
$type: $type,
$and: $and,
$all: $all,
$size: $size,
$options: $options,
$where: $where
});
var createDefaultQueryOperation = function (query, ownerQuery, _a) {
var _b = _a === void 0 ? {} : _a, compare = _b.compare, operations = _b.operations;
return createQueryOperation(query, ownerQuery, {
compare: compare,
operations: Object.assign({}, defaultOperations, operations || {})
});
};
var createDefaultQueryTester = function (query, options) {
if (options === void 0) { options = {}; }
var op = createDefaultQueryOperation(query, null, options);
return createOperationTester(op);
};
export default createDefaultQueryTester;
export { $Size, $all, $and, $elemMatch, $eq, $exists, $gt, $gte, $in, $lt, $lte, $mod, $ne, $nin, $nor, $not, $options, $or, $regex, $size, $type, $where, EqualsOperation, createDefaultQueryOperation, createEqualsOperation, createOperationTester, createQueryOperation, createQueryTester };
//# sourceMappingURL=index.js.map

1
node_modules/sift/es5m/index.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

4
node_modules/sift/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import sift from "./lib";
export default sift;
export * from "./lib";

4
node_modules/sift/index.js generated vendored Normal file
View File

@@ -0,0 +1,4 @@
const lib = require("./lib");
module.exports = lib.default;
Object.assign(module.exports, lib);

115
node_modules/sift/lib/core.d.ts generated vendored Normal file
View File

@@ -0,0 +1,115 @@
import { Key, Comparator } from "./utils";
export interface Operation<TItem> {
readonly keep: boolean;
readonly done: boolean;
reset(): any;
next(item: TItem, key?: Key, owner?: any): any;
}
export declare type Tester = (item: any, key?: Key, owner?: any) => boolean;
export interface NamedOperation {
name: string;
}
export declare type OperationCreator<TItem> = (params: any, parentQuery: any, options: Options, name: string) => Operation<TItem>;
declare type BasicValueQuery<TValue> = {
$eq?: TValue;
$ne?: TValue;
$lt?: TValue;
$gt?: TValue;
$lte?: TValue;
$gte?: TValue;
$in?: TValue[];
$nin?: TValue[];
$all?: TValue[];
$mod?: [number, number];
$exists?: boolean;
$regex?: string | RegExp;
$size?: number;
$where?: ((this: TValue) => boolean) | string;
$options?: "i" | "g" | "m" | "u";
$type?: Function;
$not?: NestedQuery<TValue>;
$or?: NestedQuery<TValue>[];
$nor?: NestedQuery<TValue>[];
$and?: NestedQuery<TValue>[];
};
declare type ArrayValueQuery<TValue> = {
$elemMatch?: Query<TValue>;
} & BasicValueQuery<TValue>;
declare type Unpacked<T> = T extends (infer U)[] ? U : T;
declare type ValueQuery<TValue> = TValue extends Array<any> ? ArrayValueQuery<Unpacked<TValue>> : BasicValueQuery<TValue>;
declare type NotObject = string | number | Date | boolean | Array<any>;
declare type ShapeQuery<TItemSchema> = TItemSchema extends NotObject ? {} : {
[k in keyof TItemSchema]?: TItemSchema[k] | ValueQuery<TItemSchema[k]>;
};
declare type NestedQuery<TItemSchema> = ValueQuery<TItemSchema> & ShapeQuery<TItemSchema>;
export declare type Query<TItemSchema> = TItemSchema | RegExp | NestedQuery<TItemSchema>;
declare abstract class BaseOperation<TParams, TItem = any> implements Operation<TItem> {
readonly params: TParams;
readonly owneryQuery: any;
readonly options: Options;
keep: boolean;
done: boolean;
constructor(params: TParams, owneryQuery: any, options: Options);
protected init(): void;
reset(): void;
abstract next(item: any, key: Key, parent: any): any;
}
export declare abstract class NamedBaseOperation<TParams, TItem = any> extends BaseOperation<TParams, TItem> implements NamedOperation {
readonly name: string;
constructor(params: TParams, owneryQuery: any, options: Options, name: string);
}
declare abstract class GroupOperation extends BaseOperation<any> {
readonly children: Operation<any>[];
keep: boolean;
done: boolean;
constructor(params: any, owneryQuery: any, options: Options, children: Operation<any>[]);
/**
*/
reset(): void;
abstract next(item: any, key: Key, owner: any): any;
/**
*/
protected childrenNext(item: any, key: Key, owner: any): void;
}
export declare abstract class NamedGroupOperation extends GroupOperation implements NamedOperation {
readonly name: string;
constructor(params: any, owneryQuery: any, options: Options, children: Operation<any>[], name: string);
}
export declare class QueryOperation<TItem> extends GroupOperation {
/**
*/
next(item: TItem, key: Key, parent: any): void;
}
export declare class NestedOperation extends GroupOperation {
readonly keyPath: Key[];
constructor(keyPath: Key[], params: any, owneryQuery: any, options: Options, children: Operation<any>[]);
/**
*/
next(item: any, key: Key, parent: any): void;
/**
*/
private _nextNestedValue;
}
export declare const createTester: (a: any, compare: Comparator) => any;
export declare class EqualsOperation<TParam> extends BaseOperation<TParam> {
private _test;
init(): void;
next(item: any, key: Key, parent: any): void;
}
export declare const createEqualsOperation: (params: any, owneryQuery: any, options: Options) => EqualsOperation<any>;
export declare class NopeOperation<TParam> extends BaseOperation<TParam> {
next(): void;
}
export declare const numericalOperationCreator: (createNumericalOperation: OperationCreator<any>) => (params: any, owneryQuery: any, options: Options, name: string) => Operation<any> | NopeOperation<any>;
export declare const numericalOperation: (createTester: (any: any) => Tester) => (params: any, owneryQuery: any, options: Options, name: string) => Operation<any> | NopeOperation<any>;
export declare type Options = {
operations: {
[identifier: string]: OperationCreator<any>;
};
compare: (a: any, b: any) => boolean;
};
export declare const containsOperation: (query: any) => boolean;
export declare const createQueryOperation: <TItem, TSchema = TItem>(query: Query<TSchema>, owneryQuery?: any, { compare, operations }?: Partial<Options>) => QueryOperation<TItem>;
export declare const createOperationTester: <TItem>(operation: Operation<TItem>) => (item: TItem, key?: string | number, owner?: any) => boolean;
export declare const createQueryTester: <TItem, TSchema = TItem>(query: Query<TSchema>, options?: Partial<Options>) => (item: TItem, key?: string | number, owner?: any) => boolean;
export {};

6
node_modules/sift/lib/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import { Query, Options, createQueryTester, EqualsOperation, createQueryOperation, createEqualsOperation, createOperationTester } from "./core";
declare const createDefaultQueryOperation: <TItem, TSchema extends TItem = TItem>(query: Query<TSchema>, ownerQuery: any, { compare, operations }?: Partial<Options>) => import("./core").QueryOperation<unknown>;
declare const createDefaultQueryTester: <TItem, TSchema extends TItem = TItem>(query: Query<TSchema>, options?: Partial<Options>) => (item: unknown, key?: string | number, owner?: any) => boolean;
export { Query, EqualsOperation, createQueryTester, createOperationTester, createDefaultQueryOperation, createEqualsOperation, createQueryOperation };
export * from "./operations";
export default createDefaultQueryTester;

689
node_modules/sift/lib/index.js generated vendored Normal file
View File

@@ -0,0 +1,689 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.sift = {}));
}(this, (function (exports) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var typeChecker = function (type) {
var typeString = "[object " + type + "]";
return function (value) {
return getClassName(value) === typeString;
};
};
var getClassName = function (value) { return Object.prototype.toString.call(value); };
var comparable = function (value) {
if (value instanceof Date) {
return value.getTime();
}
else if (isArray(value)) {
return value.map(comparable);
}
else if (value && typeof value.toJSON === "function") {
return value.toJSON();
}
return value;
};
var isArray = typeChecker("Array");
var isObject = typeChecker("Object");
var isFunction = typeChecker("Function");
var isVanillaObject = function (value) {
return (value &&
(value.constructor === Object ||
value.constructor === Array ||
value.constructor.toString() === "function Object() { [native code] }" ||
value.constructor.toString() === "function Array() { [native code] }") &&
!value.toJSON);
};
var equals = function (a, b) {
if (a == null && a == b) {
return true;
}
if (a === b) {
return true;
}
if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {
return false;
}
if (isArray(a)) {
if (a.length !== b.length) {
return false;
}
for (var i = 0, length_1 = a.length; i < length_1; i++) {
if (!equals(a[i], b[i]))
return false;
}
return true;
}
else if (isObject(a)) {
if (Object.keys(a).length !== Object.keys(b).length) {
return false;
}
for (var key in a) {
if (!equals(a[key], b[key]))
return false;
}
return true;
}
return false;
};
/**
* Walks through each value given the context - used for nested operations. E.g:
* { "person.address": { $eq: "blarg" }}
*/
var walkKeyPathValues = function (item, keyPath, next, depth, key, owner) {
var currentKey = keyPath[depth];
// if array, then try matching. Might fall through for cases like:
// { $eq: [1, 2, 3] }, [ 1, 2, 3 ].
if (isArray(item) && isNaN(Number(currentKey))) {
for (var i = 0, length_1 = item.length; i < length_1; i++) {
// if FALSE is returned, then terminate walker. For operations, this simply
// means that the search critera was met.
if (!walkKeyPathValues(item[i], keyPath, next, depth, i, item)) {
return false;
}
}
}
if (depth === keyPath.length || item == null) {
return next(item, key, owner);
}
return walkKeyPathValues(item[currentKey], keyPath, next, depth + 1, currentKey, item);
};
var BaseOperation = /** @class */ (function () {
function BaseOperation(params, owneryQuery, options) {
this.params = params;
this.owneryQuery = owneryQuery;
this.options = options;
this.init();
}
BaseOperation.prototype.init = function () { };
BaseOperation.prototype.reset = function () {
this.done = false;
this.keep = false;
};
return BaseOperation;
}());
var NamedBaseOperation = /** @class */ (function (_super) {
__extends(NamedBaseOperation, _super);
function NamedBaseOperation(params, owneryQuery, options, name) {
var _this = _super.call(this, params, owneryQuery, options) || this;
_this.name = name;
return _this;
}
return NamedBaseOperation;
}(BaseOperation));
var GroupOperation = /** @class */ (function (_super) {
__extends(GroupOperation, _super);
function GroupOperation(params, owneryQuery, options, children) {
var _this = _super.call(this, params, owneryQuery, options) || this;
_this.children = children;
return _this;
}
/**
*/
GroupOperation.prototype.reset = function () {
this.keep = false;
this.done = false;
for (var i = 0, length_2 = this.children.length; i < length_2; i++) {
this.children[i].reset();
}
};
/**
*/
GroupOperation.prototype.childrenNext = function (item, key, owner) {
var done = true;
var keep = true;
for (var i = 0, length_3 = this.children.length; i < length_3; i++) {
var childOperation = this.children[i];
childOperation.next(item, key, owner);
if (!childOperation.keep) {
keep = false;
}
if (childOperation.done) {
if (!childOperation.keep) {
break;
}
}
else {
done = false;
}
}
this.done = done;
this.keep = keep;
};
return GroupOperation;
}(BaseOperation));
var NamedGroupOperation = /** @class */ (function (_super) {
__extends(NamedGroupOperation, _super);
function NamedGroupOperation(params, owneryQuery, options, children, name) {
var _this = _super.call(this, params, owneryQuery, options, children) || this;
_this.name = name;
return _this;
}
return NamedGroupOperation;
}(GroupOperation));
var QueryOperation = /** @class */ (function (_super) {
__extends(QueryOperation, _super);
function QueryOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
*/
QueryOperation.prototype.next = function (item, key, parent) {
this.childrenNext(item, key, parent);
};
return QueryOperation;
}(GroupOperation));
var NestedOperation = /** @class */ (function (_super) {
__extends(NestedOperation, _super);
function NestedOperation(keyPath, params, owneryQuery, options, children) {
var _this = _super.call(this, params, owneryQuery, options, children) || this;
_this.keyPath = keyPath;
/**
*/
_this._nextNestedValue = function (value, key, owner) {
_this.childrenNext(value, key, owner);
return !_this.done;
};
return _this;
}
/**
*/
NestedOperation.prototype.next = function (item, key, parent) {
walkKeyPathValues(item, this.keyPath, this._nextNestedValue, 0, key, parent);
};
return NestedOperation;
}(GroupOperation));
var createTester = function (a, compare) {
if (a instanceof Function) {
return a;
}
if (a instanceof RegExp) {
return function (b) {
var result = typeof b === "string" && a.test(b);
a.lastIndex = 0;
return result;
};
}
var comparableA = comparable(a);
return function (b) { return compare(comparableA, comparable(b)); };
};
var EqualsOperation = /** @class */ (function (_super) {
__extends(EqualsOperation, _super);
function EqualsOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
EqualsOperation.prototype.init = function () {
this._test = createTester(this.params, this.options.compare);
};
EqualsOperation.prototype.next = function (item, key, parent) {
if (!Array.isArray(parent) || parent.hasOwnProperty(key)) {
if (this._test(item, key, parent)) {
this.done = true;
this.keep = true;
}
}
};
return EqualsOperation;
}(BaseOperation));
var createEqualsOperation = function (params, owneryQuery, options) { return new EqualsOperation(params, owneryQuery, options); };
var NopeOperation = /** @class */ (function (_super) {
__extends(NopeOperation, _super);
function NopeOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
NopeOperation.prototype.next = function () {
this.done = true;
this.keep = false;
};
return NopeOperation;
}(BaseOperation));
var numericalOperationCreator = function (createNumericalOperation) { return function (params, owneryQuery, options, name) {
if (params == null) {
return new NopeOperation(params, owneryQuery, options);
}
return createNumericalOperation(params, owneryQuery, options, name);
}; };
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 createNamedOperation = function (name, params, parentQuery, options) {
var operationCreator = options.operations[name];
if (!operationCreator) {
throw new Error("Unsupported operation: " + name);
}
return operationCreator(params, parentQuery, options, name);
};
var containsOperation = function (query) {
for (var key in query) {
if (key.charAt(0) === "$")
return true;
}
return false;
};
var createNestedOperation = function (keyPath, nestedQuery, owneryQuery, options) {
if (containsOperation(nestedQuery)) {
var _a = createQueryOperations(nestedQuery, options), selfOperations = _a[0], nestedOperations = _a[1];
if (nestedOperations.length) {
throw new Error("Property queries must contain only operations, or exact objects.");
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, selfOperations);
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, [
new EqualsOperation(nestedQuery, owneryQuery, options)
]);
};
var createQueryOperation = function (query, owneryQuery, _a) {
if (owneryQuery === void 0) { owneryQuery = null; }
var _b = _a === void 0 ? {} : _a, compare = _b.compare, operations = _b.operations;
var options = {
compare: compare || equals,
operations: Object.assign({}, operations || {})
};
var _c = createQueryOperations(query, options), selfOperations = _c[0], nestedOperations = _c[1];
var ops = [];
if (selfOperations.length) {
ops.push(new NestedOperation([], query, owneryQuery, options, selfOperations));
}
ops.push.apply(ops, nestedOperations);
if (ops.length === 1) {
return ops[0];
}
return new QueryOperation(query, owneryQuery, options, ops);
};
var createQueryOperations = function (query, options) {
var selfOperations = [];
var nestedOperations = [];
if (!isVanillaObject(query)) {
selfOperations.push(new EqualsOperation(query, query, options));
return [selfOperations, nestedOperations];
}
for (var key in query) {
if (key.charAt(0) === "$") {
var op = createNamedOperation(key, query[key], query, options);
// probably just a flag for another operation (like $options)
if (op != null) {
selfOperations.push(op);
}
}
else {
nestedOperations.push(createNestedOperation(key.split("."), query[key], query, options));
}
}
return [selfOperations, nestedOperations];
};
var createOperationTester = function (operation) { return function (item, key, owner) {
operation.reset();
operation.next(item, key, owner);
return operation.keep;
}; };
var createQueryTester = function (query, options) {
if (options === void 0) { options = {}; }
return createOperationTester(createQueryOperation(query, null, options));
};
var $Ne = /** @class */ (function (_super) {
__extends($Ne, _super);
function $Ne() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Ne.prototype.init = function () {
this._test = createTester(this.params, this.options.compare);
};
$Ne.prototype.reset = function () {
_super.prototype.reset.call(this);
this.keep = true;
};
$Ne.prototype.next = function (item) {
if (this._test(item)) {
this.done = true;
this.keep = false;
}
};
return $Ne;
}(NamedBaseOperation));
// https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
var $ElemMatch = /** @class */ (function (_super) {
__extends($ElemMatch, _super);
function $ElemMatch() {
return _super !== null && _super.apply(this, arguments) || this;
}
$ElemMatch.prototype.init = function () {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
};
$ElemMatch.prototype.reset = function () {
_super.prototype.reset.call(this);
this._queryOperation.reset();
};
$ElemMatch.prototype.next = function (item) {
if (isArray(item)) {
for (var i = 0, length_1 = item.length; i < length_1; i++) {
// reset query operation since item being tested needs to pass _all_ query
// operations for it to be a success
this._queryOperation.reset();
// check item
this._queryOperation.next(item[i], i, item);
this.keep = this.keep || this._queryOperation.keep;
}
this.done = true;
}
else {
this.done = false;
this.keep = false;
}
};
return $ElemMatch;
}(NamedBaseOperation));
var $Not = /** @class */ (function (_super) {
__extends($Not, _super);
function $Not() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Not.prototype.init = function () {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
};
$Not.prototype.reset = function () {
this._queryOperation.reset();
};
$Not.prototype.next = function (item, key, owner) {
this._queryOperation.next(item, key, owner);
this.done = this._queryOperation.done;
this.keep = !this._queryOperation.keep;
};
return $Not;
}(NamedBaseOperation));
var $Size = /** @class */ (function (_super) {
__extends($Size, _super);
function $Size() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Size.prototype.init = function () { };
$Size.prototype.next = function (item) {
if (isArray(item) && item.length === this.params) {
this.done = true;
this.keep = true;
}
// if (parent && parent.length === this.params) {
// this.done = true;
// this.keep = true;
// }
};
return $Size;
}(NamedBaseOperation));
var $Or = /** @class */ (function (_super) {
__extends($Or, _super);
function $Or() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Or.prototype.init = function () {
var _this = this;
this._ops = this.params.map(function (op) {
return createQueryOperation(op, null, _this.options);
});
};
$Or.prototype.reset = function () {
this.done = false;
this.keep = false;
for (var i = 0, length_2 = this._ops.length; i < length_2; i++) {
this._ops[i].reset();
}
};
$Or.prototype.next = function (item, key, owner) {
var done = false;
var success = false;
for (var i = 0, length_3 = this._ops.length; i < length_3; i++) {
var op = this._ops[i];
op.next(item, key, owner);
if (op.keep) {
done = true;
success = op.keep;
break;
}
}
this.keep = success;
this.done = done;
};
return $Or;
}(NamedBaseOperation));
var $Nor = /** @class */ (function (_super) {
__extends($Nor, _super);
function $Nor() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Nor.prototype.next = function (item, key, owner) {
_super.prototype.next.call(this, item, key, owner);
this.keep = !this.keep;
};
return $Nor;
}($Or));
var $In = /** @class */ (function (_super) {
__extends($In, _super);
function $In() {
return _super !== null && _super.apply(this, arguments) || this;
}
$In.prototype.init = function () {
var _this = this;
this._testers = this.params.map(function (value) {
if (containsOperation(value)) {
throw new Error("cannot nest $ under " + _this.constructor.name.toLowerCase());
}
return createTester(value, _this.options.compare);
});
};
$In.prototype.next = function (item, key, owner) {
var done = false;
var success = false;
for (var i = 0, length_4 = this._testers.length; i < length_4; i++) {
var test = this._testers[i];
if (test(item)) {
done = true;
success = true;
break;
}
}
this.keep = success;
this.done = done;
};
return $In;
}(NamedBaseOperation));
var $Nin = /** @class */ (function (_super) {
__extends($Nin, _super);
function $Nin() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Nin.prototype.next = function (item, key, owner) {
_super.prototype.next.call(this, item, key, owner);
this.keep = !this.keep;
};
return $Nin;
}($In));
var $Exists = /** @class */ (function (_super) {
__extends($Exists, _super);
function $Exists() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Exists.prototype.next = function (item, key, owner) {
if (owner.hasOwnProperty(key) === this.params) {
this.done = true;
this.keep = true;
}
};
return $Exists;
}(NamedBaseOperation));
var $And = /** @class */ (function (_super) {
__extends($And, _super);
function $And(params, owneryQuery, options, name) {
return _super.call(this, params, owneryQuery, options, params.map(function (query) { return createQueryOperation(query, owneryQuery, options); }), name) || this;
}
$And.prototype.next = function (item, key, owner) {
this.childrenNext(item, key, owner);
};
return $And;
}(NamedGroupOperation));
var $eq = function (params, owneryQuery, options) {
return new EqualsOperation(params, owneryQuery, options);
};
var $ne = function (params, owneryQuery, options, name) { return new $Ne(params, owneryQuery, options, name); };
var $or = function (params, owneryQuery, options, name) { return new $Or(params, owneryQuery, options, name); };
var $nor = function (params, owneryQuery, options, name) { return new $Nor(params, owneryQuery, options, name); };
var $elemMatch = function (params, owneryQuery, options, name) { return new $ElemMatch(params, owneryQuery, options, name); };
var $nin = function (params, owneryQuery, options, name) { return new $Nin(params, owneryQuery, options, name); };
var $in = function (params, owneryQuery, options, name) { return new $In(params, owneryQuery, options, name); };
var $lt = numericalOperation(function (params) { return function (b) { return b < params; }; });
var $lte = numericalOperation(function (params) { return function (b) { return b <= params; }; });
var $gt = numericalOperation(function (params) { return function (b) { return b > params; }; });
var $gte = numericalOperation(function (params) { return function (b) { return b >= params; }; });
var $mod = function (_a, owneryQuery, options) {
var mod = _a[0], equalsValue = _a[1];
return new EqualsOperation(function (b) { return comparable(b) % mod === equalsValue; }, owneryQuery, options);
};
var $exists = function (params, owneryQuery, options, name) { return new $Exists(params, owneryQuery, options, name); };
var $regex = function (pattern, owneryQuery, options) {
return new EqualsOperation(new RegExp(pattern, owneryQuery.$options), owneryQuery, options);
};
var $not = function (params, owneryQuery, options, name) { return new $Not(params, owneryQuery, options, name); };
var typeAliases = {
number: function (v) { return typeof v === "number"; },
string: function (v) { return typeof v === "string"; },
bool: function (v) { return typeof v === "boolean"; },
array: function (v) { return Array.isArray(v); },
null: function (v) { return v === null; },
timestamp: function (v) { return v instanceof Date; }
};
var $type = function (clazz, owneryQuery, options) {
return new EqualsOperation(function (b) {
if (typeof clazz === "string") {
if (!typeAliases[clazz]) {
throw new Error("Type alias does not exist");
}
return typeAliases[clazz](b);
}
return b != null ? b instanceof clazz || b.constructor === clazz : false;
}, owneryQuery, options);
};
var $and = function (params, ownerQuery, options, name) { return new $And(params, ownerQuery, options, name); };
var $all = $and;
var $size = function (params, ownerQuery, options) { return new $Size(params, ownerQuery, options, "$size"); };
var $options = function () { return null; };
var $where = function (params, ownerQuery, options) {
var test;
if (isFunction(params)) {
test = params;
}
else if (!process.env.CSP_ENABLED) {
test = new Function("obj", "return " + params);
}
else {
throw new Error("In CSP mode, sift does not support strings in \"$where\" condition");
}
return new EqualsOperation(function (b) { return test.bind(b)(b); }, ownerQuery, options);
};
var defaultOperations = /*#__PURE__*/Object.freeze({
__proto__: null,
$Size: $Size,
$eq: $eq,
$ne: $ne,
$or: $or,
$nor: $nor,
$elemMatch: $elemMatch,
$nin: $nin,
$in: $in,
$lt: $lt,
$lte: $lte,
$gt: $gt,
$gte: $gte,
$mod: $mod,
$exists: $exists,
$regex: $regex,
$not: $not,
$type: $type,
$and: $and,
$all: $all,
$size: $size,
$options: $options,
$where: $where
});
var createDefaultQueryOperation = function (query, ownerQuery, _a) {
var _b = _a === void 0 ? {} : _a, compare = _b.compare, operations = _b.operations;
return createQueryOperation(query, ownerQuery, {
compare: compare,
operations: Object.assign({}, defaultOperations, operations || {})
});
};
var createDefaultQueryTester = function (query, options) {
if (options === void 0) { options = {}; }
var op = createDefaultQueryOperation(query, null, options);
return createOperationTester(op);
};
exports.$Size = $Size;
exports.$all = $all;
exports.$and = $and;
exports.$elemMatch = $elemMatch;
exports.$eq = $eq;
exports.$exists = $exists;
exports.$gt = $gt;
exports.$gte = $gte;
exports.$in = $in;
exports.$lt = $lt;
exports.$lte = $lte;
exports.$mod = $mod;
exports.$ne = $ne;
exports.$nin = $nin;
exports.$nor = $nor;
exports.$not = $not;
exports.$options = $options;
exports.$or = $or;
exports.$regex = $regex;
exports.$size = $size;
exports.$type = $type;
exports.$where = $where;
exports.EqualsOperation = EqualsOperation;
exports.createDefaultQueryOperation = createDefaultQueryOperation;
exports.createEqualsOperation = createEqualsOperation;
exports.createOperationTester = createOperationTester;
exports.createQueryOperation = createQueryOperation;
exports.createQueryTester = createQueryTester;
exports.default = createDefaultQueryTester;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=index.js.map

1
node_modules/sift/lib/index.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

70
node_modules/sift/lib/operations.d.ts generated vendored Normal file
View File

@@ -0,0 +1,70 @@
import { NamedBaseOperation, EqualsOperation, Options, Operation, Query, NamedGroupOperation } from "./core";
import { Key } from "./utils";
declare class $Ne extends NamedBaseOperation<any> {
private _test;
init(): void;
reset(): void;
next(item: any): void;
}
declare class $ElemMatch extends NamedBaseOperation<Query<any>> {
private _queryOperation;
init(): void;
reset(): void;
next(item: any): void;
}
declare class $Not extends NamedBaseOperation<Query<any>> {
private _queryOperation;
init(): void;
reset(): void;
next(item: any, key: Key, owner: any): void;
}
export declare class $Size extends NamedBaseOperation<any> {
init(): void;
next(item: any): void;
}
declare class $Or extends NamedBaseOperation<any> {
private _ops;
init(): void;
reset(): void;
next(item: any, key: Key, owner: any): void;
}
declare class $Nor extends $Or {
next(item: any, key: Key, owner: any): void;
}
declare class $In extends NamedBaseOperation<any> {
private _testers;
init(): void;
next(item: any, key: Key, owner: any): void;
}
declare class $Nin extends $In {
next(item: any, key: Key, owner: any): void;
}
declare class $Exists extends NamedBaseOperation<boolean> {
next(item: any, key: Key, owner: any): void;
}
declare class $And extends NamedGroupOperation {
constructor(params: Query<any>[], owneryQuery: Query<any>, options: Options, name: string);
next(item: any, key: Key, owner: any): void;
}
export declare const $eq: (params: any, owneryQuery: any, options: Options) => EqualsOperation<any>;
export declare const $ne: (params: any, owneryQuery: any, options: Options, name: string) => $Ne;
export declare const $or: (params: any[], owneryQuery: any, options: Options, name: string) => $Or;
export declare const $nor: (params: any[], owneryQuery: any, options: Options, name: string) => $Nor;
export declare const $elemMatch: (params: any, owneryQuery: any, options: Options, name: string) => $ElemMatch;
export declare const $nin: (params: any, owneryQuery: any, options: Options, name: string) => $Nin;
export declare const $in: (params: any, owneryQuery: any, options: Options, name: string) => $In;
export declare const $lt: (params: any, owneryQuery: any, options: Options, name: string) => Operation<any> | import("./core").NopeOperation<any>;
export declare const $lte: (params: any, owneryQuery: any, options: Options, name: string) => Operation<any> | import("./core").NopeOperation<any>;
export declare const $gt: (params: any, owneryQuery: any, options: Options, name: string) => Operation<any> | import("./core").NopeOperation<any>;
export declare const $gte: (params: any, owneryQuery: any, options: Options, name: string) => Operation<any> | import("./core").NopeOperation<any>;
export declare const $mod: ([mod, equalsValue]: number[], owneryQuery: any, options: Options) => EqualsOperation<(b: any) => boolean>;
export declare const $exists: (params: boolean, owneryQuery: any, options: Options, name: string) => $Exists;
export declare const $regex: (pattern: string, owneryQuery: any, options: Options) => EqualsOperation<RegExp>;
export declare const $not: (params: any, owneryQuery: any, options: Options, name: string) => $Not;
export declare const $type: (clazz: TimerHandler, owneryQuery: any, options: Options) => EqualsOperation<(b: any) => any>;
export declare const $and: (params: any[], ownerQuery: any, options: Options, name: string) => $And;
export declare const $all: (params: any[], ownerQuery: any, options: Options, name: string) => $And;
export declare const $size: (params: number, ownerQuery: any, options: Options) => $Size;
export declare const $options: () => any;
export declare const $where: (params: TimerHandler, ownerQuery: any, options: Options) => EqualsOperation<(b: any) => any>;
export {};

9
node_modules/sift/lib/utils.d.ts generated vendored Normal file
View File

@@ -0,0 +1,9 @@
export declare type Key = string | number;
export declare type Comparator = (a: any, b: any) => boolean;
export declare const typeChecker: <TType>(type: any) => (value: any) => value is TType;
export declare const comparable: (value: any) => any;
export declare const isArray: (value: any) => value is any[];
export declare const isObject: (value: any) => value is Object;
export declare const isFunction: (value: any) => value is Function;
export declare const isVanillaObject: (value: any) => boolean;
export declare const equals: (a: any, b: any) => boolean;

93
node_modules/sift/package.json generated vendored Normal file
View File

@@ -0,0 +1,93 @@
{
"_from": "sift@13.5.2",
"_id": "sift@13.5.2",
"_inBundle": false,
"_integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==",
"_location": "/sift",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "sift@13.5.2",
"name": "sift",
"escapedName": "sift",
"rawSpec": "13.5.2",
"saveSpec": null,
"fetchSpec": "13.5.2"
},
"_requiredBy": [
"/mongoose"
],
"_resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz",
"_shasum": "24a715e13c617b086166cd04917d204a591c9da6",
"_spec": "sift@13.5.2",
"_where": "C:\\Users\\anelissen\\Development\\tools\\node\\cbor\\node_modules\\mongoose",
"author": {
"name": "Craig Condon",
"email": "craig.j.condon@gmail.com"
},
"bugs": {
"url": "https://github.com/crcn/sift.js/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "MongoDB query filtering in JavaScript",
"devDependencies": {
"@rollup/plugin-replace": "^2.3.2",
"@rollup/plugin-typescript": "^4.1.1",
"@types/node": "^13.7.0",
"bson": "^4.0.3",
"eval": "^0.1.4",
"husky": "^1.2.1",
"immutable": "^3.7.6",
"mocha": "8.3.2",
"mongodb": "^3.6.6",
"prettier": "1.15.3",
"pretty-quick": "^1.11.1",
"rimraf": "^3.0.2",
"rollup": "^2.7.2",
"rollup-plugin-terser": "^7.0.2",
"tslib": "^2.0.0",
"typescript": "^3.8.3"
},
"engines": {},
"es2015": "./es/index.js",
"files": [
"es",
"es5m",
"lib",
"*.d.ts",
"*.js.map",
"index.js",
"sift.csp.min.js",
"sift.min.js",
"MIT-LICENSE.txt"
],
"homepage": "https://github.com/crcn/sift.js#readme",
"husky": {
"hooks": {
"pre-commit": "pretty-quick --staged"
}
},
"license": "MIT",
"main": "./index.js",
"module": "./es5m/index.js",
"name": "sift",
"repository": {
"type": "git",
"url": "git+https://github.com/crcn/sift.js.git"
},
"scripts": {
"build": "rollup -c",
"build:types": "tsc -p tsconfig.json --emitDeclarationOnly --outDir lib",
"clean": "rimraf lib es5m es",
"prebuild": "npm run clean && npm run build:types",
"prepublishOnly": "npm run build && npm run test",
"test": "npm run test:spec && npm run test:types",
"test:spec": "mocha ./test -R spec",
"test:types": "cd test && tsc types.ts --noEmit"
},
"sideEffects": false,
"typings": "./index.d.ts",
"version": "13.5.2"
}

686
node_modules/sift/sift.csp.min.js generated vendored Normal file
View File

@@ -0,0 +1,686 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.sift = {}));
}(this, (function (exports) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var typeChecker = function (type) {
var typeString = "[object " + type + "]";
return function (value) {
return getClassName(value) === typeString;
};
};
var getClassName = function (value) { return Object.prototype.toString.call(value); };
var comparable = function (value) {
if (value instanceof Date) {
return value.getTime();
}
else if (isArray(value)) {
return value.map(comparable);
}
else if (value && typeof value.toJSON === "function") {
return value.toJSON();
}
return value;
};
var isArray = typeChecker("Array");
var isObject = typeChecker("Object");
var isFunction = typeChecker("Function");
var isVanillaObject = function (value) {
return (value &&
(value.constructor === Object ||
value.constructor === Array ||
value.constructor.toString() === "function Object() { [native code] }" ||
value.constructor.toString() === "function Array() { [native code] }") &&
!value.toJSON);
};
var equals = function (a, b) {
if (a == null && a == b) {
return true;
}
if (a === b) {
return true;
}
if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {
return false;
}
if (isArray(a)) {
if (a.length !== b.length) {
return false;
}
for (var i = 0, length_1 = a.length; i < length_1; i++) {
if (!equals(a[i], b[i]))
return false;
}
return true;
}
else if (isObject(a)) {
if (Object.keys(a).length !== Object.keys(b).length) {
return false;
}
for (var key in a) {
if (!equals(a[key], b[key]))
return false;
}
return true;
}
return false;
};
/**
* Walks through each value given the context - used for nested operations. E.g:
* { "person.address": { $eq: "blarg" }}
*/
var walkKeyPathValues = function (item, keyPath, next, depth, key, owner) {
var currentKey = keyPath[depth];
// if array, then try matching. Might fall through for cases like:
// { $eq: [1, 2, 3] }, [ 1, 2, 3 ].
if (isArray(item) && isNaN(Number(currentKey))) {
for (var i = 0, length_1 = item.length; i < length_1; i++) {
// if FALSE is returned, then terminate walker. For operations, this simply
// means that the search critera was met.
if (!walkKeyPathValues(item[i], keyPath, next, depth, i, item)) {
return false;
}
}
}
if (depth === keyPath.length || item == null) {
return next(item, key, owner);
}
return walkKeyPathValues(item[currentKey], keyPath, next, depth + 1, currentKey, item);
};
var BaseOperation = /** @class */ (function () {
function BaseOperation(params, owneryQuery, options) {
this.params = params;
this.owneryQuery = owneryQuery;
this.options = options;
this.init();
}
BaseOperation.prototype.init = function () { };
BaseOperation.prototype.reset = function () {
this.done = false;
this.keep = false;
};
return BaseOperation;
}());
var NamedBaseOperation = /** @class */ (function (_super) {
__extends(NamedBaseOperation, _super);
function NamedBaseOperation(params, owneryQuery, options, name) {
var _this = _super.call(this, params, owneryQuery, options) || this;
_this.name = name;
return _this;
}
return NamedBaseOperation;
}(BaseOperation));
var GroupOperation = /** @class */ (function (_super) {
__extends(GroupOperation, _super);
function GroupOperation(params, owneryQuery, options, children) {
var _this = _super.call(this, params, owneryQuery, options) || this;
_this.children = children;
return _this;
}
/**
*/
GroupOperation.prototype.reset = function () {
this.keep = false;
this.done = false;
for (var i = 0, length_2 = this.children.length; i < length_2; i++) {
this.children[i].reset();
}
};
/**
*/
GroupOperation.prototype.childrenNext = function (item, key, owner) {
var done = true;
var keep = true;
for (var i = 0, length_3 = this.children.length; i < length_3; i++) {
var childOperation = this.children[i];
childOperation.next(item, key, owner);
if (!childOperation.keep) {
keep = false;
}
if (childOperation.done) {
if (!childOperation.keep) {
break;
}
}
else {
done = false;
}
}
this.done = done;
this.keep = keep;
};
return GroupOperation;
}(BaseOperation));
var NamedGroupOperation = /** @class */ (function (_super) {
__extends(NamedGroupOperation, _super);
function NamedGroupOperation(params, owneryQuery, options, children, name) {
var _this = _super.call(this, params, owneryQuery, options, children) || this;
_this.name = name;
return _this;
}
return NamedGroupOperation;
}(GroupOperation));
var QueryOperation = /** @class */ (function (_super) {
__extends(QueryOperation, _super);
function QueryOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
*/
QueryOperation.prototype.next = function (item, key, parent) {
this.childrenNext(item, key, parent);
};
return QueryOperation;
}(GroupOperation));
var NestedOperation = /** @class */ (function (_super) {
__extends(NestedOperation, _super);
function NestedOperation(keyPath, params, owneryQuery, options, children) {
var _this = _super.call(this, params, owneryQuery, options, children) || this;
_this.keyPath = keyPath;
/**
*/
_this._nextNestedValue = function (value, key, owner) {
_this.childrenNext(value, key, owner);
return !_this.done;
};
return _this;
}
/**
*/
NestedOperation.prototype.next = function (item, key, parent) {
walkKeyPathValues(item, this.keyPath, this._nextNestedValue, 0, key, parent);
};
return NestedOperation;
}(GroupOperation));
var createTester = function (a, compare) {
if (a instanceof Function) {
return a;
}
if (a instanceof RegExp) {
return function (b) {
var result = typeof b === "string" && a.test(b);
a.lastIndex = 0;
return result;
};
}
var comparableA = comparable(a);
return function (b) { return compare(comparableA, comparable(b)); };
};
var EqualsOperation = /** @class */ (function (_super) {
__extends(EqualsOperation, _super);
function EqualsOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
EqualsOperation.prototype.init = function () {
this._test = createTester(this.params, this.options.compare);
};
EqualsOperation.prototype.next = function (item, key, parent) {
if (!Array.isArray(parent) || parent.hasOwnProperty(key)) {
if (this._test(item, key, parent)) {
this.done = true;
this.keep = true;
}
}
};
return EqualsOperation;
}(BaseOperation));
var createEqualsOperation = function (params, owneryQuery, options) { return new EqualsOperation(params, owneryQuery, options); };
var NopeOperation = /** @class */ (function (_super) {
__extends(NopeOperation, _super);
function NopeOperation() {
return _super !== null && _super.apply(this, arguments) || this;
}
NopeOperation.prototype.next = function () {
this.done = true;
this.keep = false;
};
return NopeOperation;
}(BaseOperation));
var numericalOperationCreator = function (createNumericalOperation) { return function (params, owneryQuery, options, name) {
if (params == null) {
return new NopeOperation(params, owneryQuery, options);
}
return createNumericalOperation(params, owneryQuery, options, name);
}; };
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 createNamedOperation = function (name, params, parentQuery, options) {
var operationCreator = options.operations[name];
if (!operationCreator) {
throw new Error("Unsupported operation: " + name);
}
return operationCreator(params, parentQuery, options, name);
};
var containsOperation = function (query) {
for (var key in query) {
if (key.charAt(0) === "$")
return true;
}
return false;
};
var createNestedOperation = function (keyPath, nestedQuery, owneryQuery, options) {
if (containsOperation(nestedQuery)) {
var _a = createQueryOperations(nestedQuery, options), selfOperations = _a[0], nestedOperations = _a[1];
if (nestedOperations.length) {
throw new Error("Property queries must contain only operations, or exact objects.");
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, selfOperations);
}
return new NestedOperation(keyPath, nestedQuery, owneryQuery, options, [
new EqualsOperation(nestedQuery, owneryQuery, options)
]);
};
var createQueryOperation = function (query, owneryQuery, _a) {
if (owneryQuery === void 0) { owneryQuery = null; }
var _b = _a === void 0 ? {} : _a, compare = _b.compare, operations = _b.operations;
var options = {
compare: compare || equals,
operations: Object.assign({}, operations || {})
};
var _c = createQueryOperations(query, options), selfOperations = _c[0], nestedOperations = _c[1];
var ops = [];
if (selfOperations.length) {
ops.push(new NestedOperation([], query, owneryQuery, options, selfOperations));
}
ops.push.apply(ops, nestedOperations);
if (ops.length === 1) {
return ops[0];
}
return new QueryOperation(query, owneryQuery, options, ops);
};
var createQueryOperations = function (query, options) {
var selfOperations = [];
var nestedOperations = [];
if (!isVanillaObject(query)) {
selfOperations.push(new EqualsOperation(query, query, options));
return [selfOperations, nestedOperations];
}
for (var key in query) {
if (key.charAt(0) === "$") {
var op = createNamedOperation(key, query[key], query, options);
// probably just a flag for another operation (like $options)
if (op != null) {
selfOperations.push(op);
}
}
else {
nestedOperations.push(createNestedOperation(key.split("."), query[key], query, options));
}
}
return [selfOperations, nestedOperations];
};
var createOperationTester = function (operation) { return function (item, key, owner) {
operation.reset();
operation.next(item, key, owner);
return operation.keep;
}; };
var createQueryTester = function (query, options) {
if (options === void 0) { options = {}; }
return createOperationTester(createQueryOperation(query, null, options));
};
var $Ne = /** @class */ (function (_super) {
__extends($Ne, _super);
function $Ne() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Ne.prototype.init = function () {
this._test = createTester(this.params, this.options.compare);
};
$Ne.prototype.reset = function () {
_super.prototype.reset.call(this);
this.keep = true;
};
$Ne.prototype.next = function (item) {
if (this._test(item)) {
this.done = true;
this.keep = false;
}
};
return $Ne;
}(NamedBaseOperation));
// https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
var $ElemMatch = /** @class */ (function (_super) {
__extends($ElemMatch, _super);
function $ElemMatch() {
return _super !== null && _super.apply(this, arguments) || this;
}
$ElemMatch.prototype.init = function () {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
};
$ElemMatch.prototype.reset = function () {
_super.prototype.reset.call(this);
this._queryOperation.reset();
};
$ElemMatch.prototype.next = function (item) {
if (isArray(item)) {
for (var i = 0, length_1 = item.length; i < length_1; i++) {
// reset query operation since item being tested needs to pass _all_ query
// operations for it to be a success
this._queryOperation.reset();
// check item
this._queryOperation.next(item[i], i, item);
this.keep = this.keep || this._queryOperation.keep;
}
this.done = true;
}
else {
this.done = false;
this.keep = false;
}
};
return $ElemMatch;
}(NamedBaseOperation));
var $Not = /** @class */ (function (_super) {
__extends($Not, _super);
function $Not() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Not.prototype.init = function () {
this._queryOperation = createQueryOperation(this.params, this.owneryQuery, this.options);
};
$Not.prototype.reset = function () {
this._queryOperation.reset();
};
$Not.prototype.next = function (item, key, owner) {
this._queryOperation.next(item, key, owner);
this.done = this._queryOperation.done;
this.keep = !this._queryOperation.keep;
};
return $Not;
}(NamedBaseOperation));
var $Size = /** @class */ (function (_super) {
__extends($Size, _super);
function $Size() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Size.prototype.init = function () { };
$Size.prototype.next = function (item) {
if (isArray(item) && item.length === this.params) {
this.done = true;
this.keep = true;
}
// if (parent && parent.length === this.params) {
// this.done = true;
// this.keep = true;
// }
};
return $Size;
}(NamedBaseOperation));
var $Or = /** @class */ (function (_super) {
__extends($Or, _super);
function $Or() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Or.prototype.init = function () {
var _this = this;
this._ops = this.params.map(function (op) {
return createQueryOperation(op, null, _this.options);
});
};
$Or.prototype.reset = function () {
this.done = false;
this.keep = false;
for (var i = 0, length_2 = this._ops.length; i < length_2; i++) {
this._ops[i].reset();
}
};
$Or.prototype.next = function (item, key, owner) {
var done = false;
var success = false;
for (var i = 0, length_3 = this._ops.length; i < length_3; i++) {
var op = this._ops[i];
op.next(item, key, owner);
if (op.keep) {
done = true;
success = op.keep;
break;
}
}
this.keep = success;
this.done = done;
};
return $Or;
}(NamedBaseOperation));
var $Nor = /** @class */ (function (_super) {
__extends($Nor, _super);
function $Nor() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Nor.prototype.next = function (item, key, owner) {
_super.prototype.next.call(this, item, key, owner);
this.keep = !this.keep;
};
return $Nor;
}($Or));
var $In = /** @class */ (function (_super) {
__extends($In, _super);
function $In() {
return _super !== null && _super.apply(this, arguments) || this;
}
$In.prototype.init = function () {
var _this = this;
this._testers = this.params.map(function (value) {
if (containsOperation(value)) {
throw new Error("cannot nest $ under " + _this.constructor.name.toLowerCase());
}
return createTester(value, _this.options.compare);
});
};
$In.prototype.next = function (item, key, owner) {
var done = false;
var success = false;
for (var i = 0, length_4 = this._testers.length; i < length_4; i++) {
var test = this._testers[i];
if (test(item)) {
done = true;
success = true;
break;
}
}
this.keep = success;
this.done = done;
};
return $In;
}(NamedBaseOperation));
var $Nin = /** @class */ (function (_super) {
__extends($Nin, _super);
function $Nin() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Nin.prototype.next = function (item, key, owner) {
_super.prototype.next.call(this, item, key, owner);
this.keep = !this.keep;
};
return $Nin;
}($In));
var $Exists = /** @class */ (function (_super) {
__extends($Exists, _super);
function $Exists() {
return _super !== null && _super.apply(this, arguments) || this;
}
$Exists.prototype.next = function (item, key, owner) {
if (owner.hasOwnProperty(key) === this.params) {
this.done = true;
this.keep = true;
}
};
return $Exists;
}(NamedBaseOperation));
var $And = /** @class */ (function (_super) {
__extends($And, _super);
function $And(params, owneryQuery, options, name) {
return _super.call(this, params, owneryQuery, options, params.map(function (query) { return createQueryOperation(query, owneryQuery, options); }), name) || this;
}
$And.prototype.next = function (item, key, owner) {
this.childrenNext(item, key, owner);
};
return $And;
}(NamedGroupOperation));
var $eq = function (params, owneryQuery, options) {
return new EqualsOperation(params, owneryQuery, options);
};
var $ne = function (params, owneryQuery, options, name) { return new $Ne(params, owneryQuery, options, name); };
var $or = function (params, owneryQuery, options, name) { return new $Or(params, owneryQuery, options, name); };
var $nor = function (params, owneryQuery, options, name) { return new $Nor(params, owneryQuery, options, name); };
var $elemMatch = function (params, owneryQuery, options, name) { return new $ElemMatch(params, owneryQuery, options, name); };
var $nin = function (params, owneryQuery, options, name) { return new $Nin(params, owneryQuery, options, name); };
var $in = function (params, owneryQuery, options, name) { return new $In(params, owneryQuery, options, name); };
var $lt = numericalOperation(function (params) { return function (b) { return b < params; }; });
var $lte = numericalOperation(function (params) { return function (b) { return b <= params; }; });
var $gt = numericalOperation(function (params) { return function (b) { return b > params; }; });
var $gte = numericalOperation(function (params) { return function (b) { return b >= params; }; });
var $mod = function (_a, owneryQuery, options) {
var mod = _a[0], equalsValue = _a[1];
return new EqualsOperation(function (b) { return comparable(b) % mod === equalsValue; }, owneryQuery, options);
};
var $exists = function (params, owneryQuery, options, name) { return new $Exists(params, owneryQuery, options, name); };
var $regex = function (pattern, owneryQuery, options) {
return new EqualsOperation(new RegExp(pattern, owneryQuery.$options), owneryQuery, options);
};
var $not = function (params, owneryQuery, options, name) { return new $Not(params, owneryQuery, options, name); };
var typeAliases = {
number: function (v) { return typeof v === "number"; },
string: function (v) { return typeof v === "string"; },
bool: function (v) { return typeof v === "boolean"; },
array: function (v) { return Array.isArray(v); },
null: function (v) { return v === null; },
timestamp: function (v) { return v instanceof Date; }
};
var $type = function (clazz, owneryQuery, options) {
return new EqualsOperation(function (b) {
if (typeof clazz === "string") {
if (!typeAliases[clazz]) {
throw new Error("Type alias does not exist");
}
return typeAliases[clazz](b);
}
return b != null ? b instanceof clazz || b.constructor === clazz : false;
}, owneryQuery, options);
};
var $and = function (params, ownerQuery, options, name) { return new $And(params, ownerQuery, options, name); };
var $all = $and;
var $size = function (params, ownerQuery, options) { return new $Size(params, ownerQuery, options, "$size"); };
var $options = function () { return null; };
var $where = function (params, ownerQuery, options) {
var test;
if (isFunction(params)) {
test = params;
}
else {
throw new Error("In CSP mode, sift does not support strings in \"$where\" condition");
}
return new EqualsOperation(function (b) { return test.bind(b)(b); }, ownerQuery, options);
};
var defaultOperations = /*#__PURE__*/Object.freeze({
__proto__: null,
$Size: $Size,
$eq: $eq,
$ne: $ne,
$or: $or,
$nor: $nor,
$elemMatch: $elemMatch,
$nin: $nin,
$in: $in,
$lt: $lt,
$lte: $lte,
$gt: $gt,
$gte: $gte,
$mod: $mod,
$exists: $exists,
$regex: $regex,
$not: $not,
$type: $type,
$and: $and,
$all: $all,
$size: $size,
$options: $options,
$where: $where
});
var createDefaultQueryOperation = function (query, ownerQuery, _a) {
var _b = _a === void 0 ? {} : _a, compare = _b.compare, operations = _b.operations;
return createQueryOperation(query, ownerQuery, {
compare: compare,
operations: Object.assign({}, defaultOperations, operations || {})
});
};
var createDefaultQueryTester = function (query, options) {
if (options === void 0) { options = {}; }
var op = createDefaultQueryOperation(query, null, options);
return createOperationTester(op);
};
exports.$Size = $Size;
exports.$all = $all;
exports.$and = $and;
exports.$elemMatch = $elemMatch;
exports.$eq = $eq;
exports.$exists = $exists;
exports.$gt = $gt;
exports.$gte = $gte;
exports.$in = $in;
exports.$lt = $lt;
exports.$lte = $lte;
exports.$mod = $mod;
exports.$ne = $ne;
exports.$nin = $nin;
exports.$nor = $nor;
exports.$not = $not;
exports.$options = $options;
exports.$or = $or;
exports.$regex = $regex;
exports.$size = $size;
exports.$type = $type;
exports.$where = $where;
exports.EqualsOperation = EqualsOperation;
exports.createDefaultQueryOperation = createDefaultQueryOperation;
exports.createEqualsOperation = createEqualsOperation;
exports.createOperationTester = createOperationTester;
exports.createQueryOperation = createQueryOperation;
exports.createQueryTester = createQueryTester;
exports.default = createDefaultQueryTester;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=sift.csp.min.js.map

1
node_modules/sift/sift.csp.min.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

16
node_modules/sift/sift.min.js generated vendored Normal file

File diff suppressed because one or more lines are too long

1
node_modules/sift/sift.min.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long