1828 lines
45 KiB
HTML
1828 lines
45 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<title>Code coverage report for sift.js/sift.js</title>
|
||
<meta charset="utf-8" />
|
||
<link rel="stylesheet" href="../prettify.css" />
|
||
<link rel="stylesheet" href="../base.css" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<style type='text/css'>
|
||
.coverage-summary .sorter {
|
||
background-image: url(../sort-arrow-sprite.png);
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class='wrapper'>
|
||
<div class='pad1'>
|
||
<h1>
|
||
<a href="../index.html">all files</a> / <a href="index.html">sift.js/</a> sift.js
|
||
</h1>
|
||
<div class='clearfix'>
|
||
<div class='fl pad1y space-right2'>
|
||
<span class="strong">99.48% </span>
|
||
<span class="quiet">Statements</span>
|
||
<span class='fraction'>192/193</span>
|
||
</div>
|
||
<div class='fl pad1y space-right2'>
|
||
<span class="strong">99.21% </span>
|
||
<span class="quiet">Branches</span>
|
||
<span class='fraction'>126/127</span>
|
||
</div>
|
||
<div class='fl pad1y space-right2'>
|
||
<span class="strong">100% </span>
|
||
<span class="quiet">Functions</span>
|
||
<span class='fraction'>59/59</span>
|
||
</div>
|
||
<div class='fl pad1y space-right2'>
|
||
<span class="strong">99.46% </span>
|
||
<span class="quiet">Lines</span>
|
||
<span class='fraction'>185/186</span>
|
||
</div>
|
||
<div class='fl pad1y'>
|
||
<span class="strong">1 statement, 3 branches</span>
|
||
<span class="quiet">Ignored</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class='status-line high'></div>
|
||
<pre><table class="coverage">
|
||
<tr><td class="line-count quiet">1
|
||
2
|
||
3
|
||
4
|
||
5
|
||
6
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
16
|
||
17
|
||
18
|
||
19
|
||
20
|
||
21
|
||
22
|
||
23
|
||
24
|
||
25
|
||
26
|
||
27
|
||
28
|
||
29
|
||
30
|
||
31
|
||
32
|
||
33
|
||
34
|
||
35
|
||
36
|
||
37
|
||
38
|
||
39
|
||
40
|
||
41
|
||
42
|
||
43
|
||
44
|
||
45
|
||
46
|
||
47
|
||
48
|
||
49
|
||
50
|
||
51
|
||
52
|
||
53
|
||
54
|
||
55
|
||
56
|
||
57
|
||
58
|
||
59
|
||
60
|
||
61
|
||
62
|
||
63
|
||
64
|
||
65
|
||
66
|
||
67
|
||
68
|
||
69
|
||
70
|
||
71
|
||
72
|
||
73
|
||
74
|
||
75
|
||
76
|
||
77
|
||
78
|
||
79
|
||
80
|
||
81
|
||
82
|
||
83
|
||
84
|
||
85
|
||
86
|
||
87
|
||
88
|
||
89
|
||
90
|
||
91
|
||
92
|
||
93
|
||
94
|
||
95
|
||
96
|
||
97
|
||
98
|
||
99
|
||
100
|
||
101
|
||
102
|
||
103
|
||
104
|
||
105
|
||
106
|
||
107
|
||
108
|
||
109
|
||
110
|
||
111
|
||
112
|
||
113
|
||
114
|
||
115
|
||
116
|
||
117
|
||
118
|
||
119
|
||
120
|
||
121
|
||
122
|
||
123
|
||
124
|
||
125
|
||
126
|
||
127
|
||
128
|
||
129
|
||
130
|
||
131
|
||
132
|
||
133
|
||
134
|
||
135
|
||
136
|
||
137
|
||
138
|
||
139
|
||
140
|
||
141
|
||
142
|
||
143
|
||
144
|
||
145
|
||
146
|
||
147
|
||
148
|
||
149
|
||
150
|
||
151
|
||
152
|
||
153
|
||
154
|
||
155
|
||
156
|
||
157
|
||
158
|
||
159
|
||
160
|
||
161
|
||
162
|
||
163
|
||
164
|
||
165
|
||
166
|
||
167
|
||
168
|
||
169
|
||
170
|
||
171
|
||
172
|
||
173
|
||
174
|
||
175
|
||
176
|
||
177
|
||
178
|
||
179
|
||
180
|
||
181
|
||
182
|
||
183
|
||
184
|
||
185
|
||
186
|
||
187
|
||
188
|
||
189
|
||
190
|
||
191
|
||
192
|
||
193
|
||
194
|
||
195
|
||
196
|
||
197
|
||
198
|
||
199
|
||
200
|
||
201
|
||
202
|
||
203
|
||
204
|
||
205
|
||
206
|
||
207
|
||
208
|
||
209
|
||
210
|
||
211
|
||
212
|
||
213
|
||
214
|
||
215
|
||
216
|
||
217
|
||
218
|
||
219
|
||
220
|
||
221
|
||
222
|
||
223
|
||
224
|
||
225
|
||
226
|
||
227
|
||
228
|
||
229
|
||
230
|
||
231
|
||
232
|
||
233
|
||
234
|
||
235
|
||
236
|
||
237
|
||
238
|
||
239
|
||
240
|
||
241
|
||
242
|
||
243
|
||
244
|
||
245
|
||
246
|
||
247
|
||
248
|
||
249
|
||
250
|
||
251
|
||
252
|
||
253
|
||
254
|
||
255
|
||
256
|
||
257
|
||
258
|
||
259
|
||
260
|
||
261
|
||
262
|
||
263
|
||
264
|
||
265
|
||
266
|
||
267
|
||
268
|
||
269
|
||
270
|
||
271
|
||
272
|
||
273
|
||
274
|
||
275
|
||
276
|
||
277
|
||
278
|
||
279
|
||
280
|
||
281
|
||
282
|
||
283
|
||
284
|
||
285
|
||
286
|
||
287
|
||
288
|
||
289
|
||
290
|
||
291
|
||
292
|
||
293
|
||
294
|
||
295
|
||
296
|
||
297
|
||
298
|
||
299
|
||
300
|
||
301
|
||
302
|
||
303
|
||
304
|
||
305
|
||
306
|
||
307
|
||
308
|
||
309
|
||
310
|
||
311
|
||
312
|
||
313
|
||
314
|
||
315
|
||
316
|
||
317
|
||
318
|
||
319
|
||
320
|
||
321
|
||
322
|
||
323
|
||
324
|
||
325
|
||
326
|
||
327
|
||
328
|
||
329
|
||
330
|
||
331
|
||
332
|
||
333
|
||
334
|
||
335
|
||
336
|
||
337
|
||
338
|
||
339
|
||
340
|
||
341
|
||
342
|
||
343
|
||
344
|
||
345
|
||
346
|
||
347
|
||
348
|
||
349
|
||
350
|
||
351
|
||
352
|
||
353
|
||
354
|
||
355
|
||
356
|
||
357
|
||
358
|
||
359
|
||
360
|
||
361
|
||
362
|
||
363
|
||
364
|
||
365
|
||
366
|
||
367
|
||
368
|
||
369
|
||
370
|
||
371
|
||
372
|
||
373
|
||
374
|
||
375
|
||
376
|
||
377
|
||
378
|
||
379
|
||
380
|
||
381
|
||
382
|
||
383
|
||
384
|
||
385
|
||
386
|
||
387
|
||
388
|
||
389
|
||
390
|
||
391
|
||
392
|
||
393
|
||
394
|
||
395
|
||
396
|
||
397
|
||
398
|
||
399
|
||
400
|
||
401
|
||
402
|
||
403
|
||
404
|
||
405
|
||
406
|
||
407
|
||
408
|
||
409
|
||
410
|
||
411
|
||
412
|
||
413
|
||
414
|
||
415
|
||
416
|
||
417
|
||
418
|
||
419
|
||
420
|
||
421
|
||
422
|
||
423
|
||
424
|
||
425
|
||
426
|
||
427
|
||
428
|
||
429
|
||
430
|
||
431
|
||
432
|
||
433
|
||
434
|
||
435
|
||
436
|
||
437
|
||
438
|
||
439
|
||
440
|
||
441
|
||
442
|
||
443
|
||
444
|
||
445
|
||
446
|
||
447
|
||
448
|
||
449
|
||
450
|
||
451
|
||
452
|
||
453
|
||
454
|
||
455
|
||
456
|
||
457
|
||
458
|
||
459
|
||
460
|
||
461
|
||
462
|
||
463
|
||
464
|
||
465
|
||
466
|
||
467
|
||
468
|
||
469
|
||
470
|
||
471
|
||
472
|
||
473
|
||
474
|
||
475
|
||
476
|
||
477
|
||
478
|
||
479
|
||
480
|
||
481
|
||
482
|
||
483
|
||
484
|
||
485
|
||
486
|
||
487
|
||
488
|
||
489
|
||
490
|
||
491
|
||
492
|
||
493
|
||
494
|
||
495
|
||
496
|
||
497
|
||
498
|
||
499
|
||
500
|
||
501
|
||
502
|
||
503
|
||
504
|
||
505
|
||
506
|
||
507
|
||
508
|
||
509
|
||
510
|
||
511
|
||
512
|
||
513
|
||
514
|
||
515
|
||
516
|
||
517
|
||
518
|
||
519
|
||
520
|
||
521
|
||
522
|
||
523
|
||
524
|
||
525
|
||
526
|
||
527
|
||
528
|
||
529
|
||
530
|
||
531
|
||
532
|
||
533
|
||
534
|
||
535
|
||
536
|
||
537
|
||
538
|
||
539
|
||
540
|
||
541
|
||
542
|
||
543
|
||
544
|
||
545
|
||
546
|
||
547
|
||
548
|
||
549
|
||
550
|
||
551
|
||
552
|
||
553
|
||
554
|
||
555
|
||
556
|
||
557
|
||
558
|
||
559
|
||
560
|
||
561
|
||
562
|
||
563
|
||
564
|
||
565
|
||
566
|
||
567
|
||
568
|
||
569
|
||
570
|
||
571
|
||
572
|
||
573
|
||
574
|
||
575
|
||
576
|
||
577
|
||
578
|
||
579
|
||
580
|
||
581
|
||
582
|
||
583
|
||
584
|
||
585
|
||
586
|
||
587</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1363×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">2389×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1340×</span>
|
||
<span class="cline-any cline-yes">36×</span>
|
||
<span class="cline-any cline-yes">1304×</span>
|
||
<span class="cline-any cline-yes">44×</span>
|
||
<span class="cline-any cline-yes">1260×</span>
|
||
<span class="cline-any cline-yes">23×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1237×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1231×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">7×</span>
|
||
<span class="cline-any cline-yes">465×</span>
|
||
<span class="cline-any cline-yes">430×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">35×</span>
|
||
<span class="cline-any cline-yes">59×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">12×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">47×</span>
|
||
<span class="cline-any cline-yes">43×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">4×</span>
|
||
<span class="cline-any cline-yes">6×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">2×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">992×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">355×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">49×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">34×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">15×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">24×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">10×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">10×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">87×</span>
|
||
<span class="cline-any cline-yes">10×</span>
|
||
<span class="cline-any cline-yes">11×</span>
|
||
<span class="cline-any cline-yes">8×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">77×</span>
|
||
<span class="cline-any cline-yes">77×</span>
|
||
<span class="cline-any cline-yes">8×</span>
|
||
<span class="cline-any cline-yes">12×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">76×</span>
|
||
<span class="cline-any cline-yes">18×</span>
|
||
<span class="cline-any cline-yes">20×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">75×</span>
|
||
<span class="cline-any cline-yes">141×</span>
|
||
<span class="cline-any cline-yes">141×</span>
|
||
<span class="cline-any cline-yes">141×</span>
|
||
<span class="cline-any cline-yes">30×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">45×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">2×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">22×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">13×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">11×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">17×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">7×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">64×</span>
|
||
<span class="cline-any cline-yes">11×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">10×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">55×</span>
|
||
<span class="cline-any cline-yes">94×</span>
|
||
<span class="cline-any cline-yes">25×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">30×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">41×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">6×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">11×</span>
|
||
<span class="cline-any cline-yes">6×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">5×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">25×</span>
|
||
<span class="cline-any cline-no"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">201×</span>
|
||
<span class="cline-any cline-yes">19×</span>
|
||
<span class="cline-any cline-yes">41×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">182×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">181×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">180×</span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">4×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">177×</span>
|
||
<span class="cline-any cline-yes">353×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">14×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">9×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">6×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">4×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">2×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">21×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">5×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">8×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">8×</span>
|
||
<span class="cline-any cline-yes">15×</span>
|
||
<span class="cline-any cline-yes">15×</span>
|
||
<span class="cline-any cline-yes">5×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">340×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">204×</span>
|
||
<span class="cline-any cline-yes">204×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">204×</span>
|
||
<span class="cline-any cline-yes">176×</span>
|
||
<span class="cline-any cline-yes">176×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">28×</span>
|
||
<span class="cline-any cline-yes">79×</span>
|
||
<span class="cline-any cline-yes">79×</span>
|
||
<span class="cline-any cline-yes">24×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">4×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">652×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">274×</span>
|
||
<span class="cline-any cline-yes">274×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">378×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">378×</span>
|
||
<span class="cline-any cline-yes">33×</span>
|
||
<span class="cline-any cline-yes">103×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">345×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">86×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">369×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">399×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">399×</span>
|
||
<span class="cline-any cline-yes">185×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">399×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">399×</span>
|
||
<span class="cline-any cline-yes">414×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">414×</span>
|
||
<span class="cline-any cline-yes">2×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">412×</span>
|
||
<span class="cline-any cline-yes">325×</span>
|
||
<span class="cline-any cline-yes">325×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">87×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">86×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">398×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">271×</span>
|
||
<span class="cline-any cline-yes">270×</span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">4×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">270×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">128×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">128×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">401×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">127×</span>
|
||
<span class="cline-any cline-yes">29×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">98×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">4×</span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-yes">3×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">2×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">436×</span>
|
||
<span class="cline-any cline-yes">322×</span>
|
||
<span class="cline-any cline-yes">248×</span>
|
||
<span class="cline-any cline-yes">139×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">109×</span>
|
||
<span class="cline-any cline-yes">109×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-yes">1×</span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span>
|
||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*
|
||
* Sift 3.x
|
||
*
|
||
* Copryright 2015, Craig Condon
|
||
* Licensed under MIT
|
||
*
|
||
* Filter JavaScript objects with mongodb queries
|
||
*/
|
||
|
||
(function() {
|
||
|
||
'use strict';
|
||
|
||
/**
|
||
*/
|
||
|
||
function isFunction(value) {
|
||
return typeof value === 'function';
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function isArray(value) {
|
||
return Object.prototype.toString.call(value) === '[object Array]';
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function 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();
|
||
} else {
|
||
return value;
|
||
}
|
||
}
|
||
|
||
function get(obj, key) {
|
||
return isFunction(obj.get) ? obj.get(key) : obj[key];
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function or(validator) {
|
||
return function(a, b) {
|
||
if (!isArray(b) || !b.length) {
|
||
return validator(a, b);
|
||
}
|
||
for (var i = 0, n = b.length; i < n; i++) {
|
||
if (validator(a, get(b,i))) return true;
|
||
}
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function and(validator) {
|
||
return function(a, b) {
|
||
if (!isArray(b) || !b.length) {
|
||
return validator(a, b);
|
||
}
|
||
for (var i = 0, n = b.length; i < n; i++) {
|
||
if (!validator(a, get(b, i))) return false;
|
||
}
|
||
return true;
|
||
};
|
||
}
|
||
|
||
function validate(validator, b, k, o) {
|
||
return validator.v(validator.a, b, k, o);
|
||
}
|
||
|
||
var OPERATORS = {
|
||
|
||
/**
|
||
*/
|
||
|
||
$eq: or(function(a, b) {
|
||
return a(b);
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$ne: and(function(a, b) {
|
||
return !a(b);
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$gt: or(function(a, b) {
|
||
return sift.compare(comparable(b), a) > 0;
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$gte: or(function(a, b) {
|
||
return sift.compare(comparable(b), a) >= 0;
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$lt: or(function(a, b) {
|
||
return sift.compare(comparable(b), a) < 0;
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$lte: or(function(a, b) {
|
||
return sift.compare(comparable(b), a) <= 0;
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$mod: or(function(a, b) {
|
||
return b % a[0] == a[1];
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$in: function(a, b) {
|
||
|
||
if (b instanceof Array) {
|
||
for (var i = b.length; i--;) {
|
||
if (~a.indexOf(comparable(get(b, i)))) {
|
||
return true;
|
||
}
|
||
}
|
||
} else {
|
||
var comparableB = comparable(b);
|
||
if (comparableB === b && typeof b === 'object') {
|
||
for (var i = a.length; i--;) {
|
||
if (String(a[i]) === String(b) && String(b) !== '[object Object]') {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
Handles documents that are undefined, whilst also
|
||
having a 'null' element in the parameters to $in.
|
||
*/
|
||
if (typeof comparableB == 'undefined') {
|
||
for (var i = a.length; i--;) {
|
||
if (a[i] == null) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
Handles the case of {'field': {$in: [/regexp1/, /regexp2/, ...]}}
|
||
*/
|
||
for (var i = a.length; i--;) {
|
||
var validator = createRootValidator(get(a, i), undefined);
|
||
var result = validate(validator, b, i, a);
|
||
if ((result) && (String(result) !== '[object Object]') && (String(b) !== '[object Object]')) {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return !!~a.indexOf(comparableB);
|
||
}
|
||
|
||
return false;
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$nin: function(a, b, k, o) {
|
||
return !OPERATORS.$in(a, b, k, o);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$not: function(a, b, k, o) {
|
||
return !validate(a, b, k, o);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$type: function(a, b) {
|
||
return b != void 0 ? b instanceof a || b.constructor == a : false;
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$all: function(a, b, k, o) {
|
||
return OPERATORS.$and(a, b, k, o);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$size: function(a, b) {
|
||
return b ? a === b.length : false;
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$or: function(a, b, k, o) {
|
||
for (var i = 0, n = a.length; i < n; i++) if (validate(get(a, i), b, k, o)) return true;
|
||
return false;
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$nor: function(a, b, k, o) {
|
||
return !OPERATORS.$or(a, b, k, o);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$and: function(a, b, k, o) {
|
||
for (var i = 0, n = a.length; i < n; i++) {
|
||
if (!validate(get(a, i), b, k, o)) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$regex: or(function(a, b) {
|
||
return typeof b === 'string' && a.test(b);
|
||
}),
|
||
|
||
/**
|
||
*/
|
||
|
||
$where: function(a, b, k, o) {
|
||
return a.call(b, b, k, o);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$elemMatch: function(a, b, k, o) {
|
||
if (isArray(b)) {
|
||
return !!~search(b, a);
|
||
}
|
||
return validate(a, b, k, o);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$exists: function(a, b, k, o) {
|
||
// console.log(a, b, k, o, o.hasOwnProperty(k));
|
||
return o.hasOwnProperty(k) === a;
|
||
<span class="cstat-no" title="statement not covered" > return (b != void 0) === a;</span>
|
||
}
|
||
};
|
||
|
||
/**
|
||
*/
|
||
|
||
var prepare = {
|
||
|
||
/**
|
||
*/
|
||
|
||
$eq: function(a) {
|
||
|
||
if (a instanceof RegExp) {
|
||
return function(b) {
|
||
return typeof b === 'string' && a.test(b);
|
||
};
|
||
} else if (a instanceof Function) {
|
||
return a;
|
||
} else if (isArray(a) && !a.length) {
|
||
// Special case of a == []
|
||
return function(b) {
|
||
return (isArray(b) && !b.length);
|
||
};
|
||
} else if (a === null){
|
||
return function(b){
|
||
//will match both null and undefined
|
||
return b == null;
|
||
}
|
||
}
|
||
|
||
return function(b) {
|
||
return sift.compare(comparable(b), a) === 0;
|
||
};
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$ne: function(a) {
|
||
return prepare.$eq(a);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$and: function(a) {
|
||
return a.map(parse);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$all: function(a) {
|
||
return prepare.$and(a);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$or: function(a) {
|
||
return a.map(parse);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$nor: function(a) {
|
||
return a.map(parse);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$not: function(a) {
|
||
return parse(a);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$regex: function(a, query) {
|
||
return new RegExp(a, query.$options);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$where: function(a) {
|
||
return typeof a === 'string' ? new Function('obj', 'return ' + a) : a;
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$elemMatch: function(a) {
|
||
return parse(a);
|
||
},
|
||
|
||
/**
|
||
*/
|
||
|
||
$exists: function(a) {
|
||
return !!a;
|
||
}
|
||
};
|
||
|
||
/**
|
||
*/
|
||
|
||
function search(array, validator) {
|
||
|
||
for (var i = 0; i < array.length; i++) {
|
||
var result = get(array, i);
|
||
if (validate(validator, get(array, i))) {
|
||
return i;
|
||
}
|
||
}
|
||
|
||
return -1;
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function createValidator(a, validate) {
|
||
return { a: a, v: validate };
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function nestedValidator(a, b) {
|
||
var values = [];
|
||
findValues(b, a.k, 0, b, values);
|
||
|
||
if (values.length === 1) {
|
||
var first = values[0];
|
||
return validate(a.nv, first[0], first[1], first[2]);
|
||
}
|
||
|
||
for (var i = 0; i < values.length; i++) {
|
||
var result = values[i];
|
||
if (validate(a.nv, result[0], result[1], result[2])) {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function findValues(current, keypath, index, object, values) {
|
||
|
||
if (index === keypath.length || current == void 0) {
|
||
// console.log([object, keypath[index - 1], current]);
|
||
values.push([current, keypath[index - 1], object]);
|
||
return;
|
||
}
|
||
|
||
var k = get(keypath, index);
|
||
|
||
// ensure that if current is an array, that the current key
|
||
// is NOT an array index. This sort of thing needs to work:
|
||
// sift({'foo.0':42}, [{foo: [42]}]);
|
||
if (isArray(current) && isNaN(Number(k))) {
|
||
for (var i = 0, n = current.length; i < n; i++) {
|
||
findValues(get(current, i), keypath, index, current, values);
|
||
}
|
||
} else {
|
||
findValues(get(current, k), keypath, index + 1, current, values);
|
||
}
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function createNestedValidator(keypath, a) {
|
||
return { a: { k: keypath, nv: a }, v: nestedValidator };
|
||
}
|
||
|
||
/**
|
||
* flatten the query
|
||
*/
|
||
|
||
function isVanillaObject(value) {
|
||
return value && value.constructor === Object;
|
||
}
|
||
|
||
function parse(query) {
|
||
query = comparable(query);
|
||
|
||
if (!query || !isVanillaObject(query)) { // cross browser support
|
||
query = { $eq: query };
|
||
}
|
||
|
||
var validators = [];
|
||
|
||
for (var key in query) {
|
||
var a = query[key];
|
||
|
||
if (key === '$options') {
|
||
continue;
|
||
}
|
||
|
||
if (OPERATORS[key]) {
|
||
if (prepare[key]) a = prepare[key](a, query);
|
||
validators.push(createValidator(comparable(a), OPERATORS[key]));
|
||
} else {
|
||
|
||
if (key.charCodeAt(0) === 36) {
|
||
throw new Error('Unknown operation ' + key);
|
||
}
|
||
|
||
validators.push(createNestedValidator(key.split('.'), parse(a)));
|
||
}
|
||
}
|
||
|
||
return validators.length === 1 ? validators[0] : createValidator(validators, OPERATORS.$and);
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function createRootValidator(query, getter) {
|
||
var validator = parse(query);
|
||
if (getter) {
|
||
validator = {
|
||
a: validator,
|
||
v: function(a, b, k, o) {
|
||
return validate(a, getter(b), k, o);
|
||
}
|
||
};
|
||
}
|
||
return validator;
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
function sift(query, array, getter) {
|
||
|
||
if (isFunction(array)) {
|
||
getter = array;
|
||
array = void 0;
|
||
}
|
||
|
||
var validator = createRootValidator(query, getter);
|
||
|
||
function filter(b, k, o) {
|
||
return validate(validator, b, k, o);
|
||
}
|
||
|
||
if (array) {
|
||
return array.filter(filter);
|
||
}
|
||
|
||
return filter;
|
||
}
|
||
|
||
/**
|
||
*/
|
||
|
||
sift.use = function(plugin) {
|
||
if (isFunction(plugin)) return plugin(sift);
|
||
for (var key in plugin) {
|
||
/* istanbul ignore else */
|
||
<span class="skip-if-branch" title="else path not taken" >E</span>if (key.charCodeAt(0) === 36) {
|
||
OPERATORS[key] = plugin[key];
|
||
}
|
||
}
|
||
};
|
||
|
||
/**
|
||
*/
|
||
|
||
sift.indexOf = function(query, array, getter) {
|
||
return search(array, createRootValidator(query, getter));
|
||
};
|
||
|
||
/**
|
||
*/
|
||
|
||
sift.compare = function(a, b) {
|
||
if(a===b) return 0;
|
||
if(typeof a === typeof b) {
|
||
if (a > b) {
|
||
return 1;
|
||
}
|
||
<span class="missing-if-branch" title="else path not taken" >E</span>if (a < b) {
|
||
return -1;
|
||
}
|
||
}
|
||
};
|
||
|
||
/* istanbul ignore next */
|
||
<span class="skip-if-branch" title="else path not taken" >E</span>if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
module.exports = sift;
|
||
exports['default'] = module.exports.default = sift;
|
||
}
|
||
|
||
/* istanbul ignore next */
|
||
<span class="skip-if-branch" title="if path not taken" >I</span>if (typeof window !== 'undefined') {
|
||
<span class="cstat-skip" title="statement not covered" > window.sift = sift;</span>
|
||
}
|
||
})();
|
||
</pre></td></tr>
|
||
</table></pre>
|
||
<div class='push'></div><!-- for sticky footer -->
|
||
</div><!-- /wrapper -->
|
||
<div class='footer quiet pad2 space-top1 center small'>
|
||
Code coverage
|
||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Jul 18 2017 09:03:45 GMT-0400 (EDT)
|
||
</div>
|
||
</div>
|
||
<script src="../prettify.js"></script>
|
||
<script>
|
||
window.onload = function () {
|
||
if (typeof prettyPrint === 'function') {
|
||
prettyPrint();
|
||
}
|
||
};
|
||
</script>
|
||
<script src="../sorter.js"></script>
|
||
</body>
|
||
</html>
|