(expression: BasicExpression, collection: CollectionLike<T, TKey>)
| 237 | * Checks if an expression can be optimized |
| 238 | */ |
| 239 | export function canOptimizeExpression< |
| 240 | T extends object, |
| 241 | TKey extends string | number, |
| 242 | >(expression: BasicExpression, collection: CollectionLike<T, TKey>): boolean { |
| 243 | if (expression.type === `func`) { |
| 244 | switch (expression.name) { |
| 245 | case `eq`: |
| 246 | case `gt`: |
| 247 | case `gte`: |
| 248 | case `lt`: |
| 249 | case `lte`: |
| 250 | return canOptimizeSimpleComparison(expression, collection) |
| 251 | |
| 252 | case `and`: |
| 253 | return canOptimizeAndExpression(expression, collection) |
| 254 | |
| 255 | case `or`: |
| 256 | return canOptimizeOrExpression(expression, collection) |
| 257 | |
| 258 | case `in`: |
| 259 | return canOptimizeInArrayExpression(expression, collection) |
| 260 | } |
| 261 | } |
| 262 | |
| 263 | return false |
| 264 | } |
| 265 | |
| 266 | /** |
| 267 | * Result of compound range optimization, including which AND arguments |
no test coverage detected