@balena/odata-parser 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.versionbot/CHANGELOG.yml +16 -1
- package/CHANGELOG.md +5 -0
- package/odata-parser.js +166 -114
- package/odata-parser.pegjs +11 -3
- package/package.json +2 -2
- package/test/filterby.js +47 -0
- package/test/orderby.js +42 -0
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: Add support for `/$count` with nested `$filter` in $orderby & $orderby
|
|
3
|
+
hash: 350c08b3a8a8877290f1c753a57e86404f0d9548
|
|
4
|
+
body: ""
|
|
5
|
+
footer:
|
|
6
|
+
Change-type: minor
|
|
7
|
+
change-type: minor
|
|
8
|
+
See: https://github.com/balena-io/pinejs/issues/577
|
|
9
|
+
see: https://github.com/balena-io/pinejs/issues/577
|
|
10
|
+
Signed-off-by: Thodoris Greasidis <thodoris@balena.io>
|
|
11
|
+
signed-off-by: Thodoris Greasidis <thodoris@balena.io>
|
|
12
|
+
author: Thodoris Greasidis
|
|
13
|
+
version: 2.4.0
|
|
14
|
+
title: "'Add support for with nested in & '"
|
|
15
|
+
date: 2022-09-15T07:00:40.239Z
|
|
1
16
|
- commits:
|
|
2
17
|
- subject: Add source map
|
|
3
18
|
hash: a6bb5e67fac1cdcc69491800ad042f003fa13556
|
|
@@ -8,7 +23,7 @@
|
|
|
8
23
|
author: Pagan Gazzard
|
|
9
24
|
version: 2.3.0
|
|
10
25
|
title: "'Add source map'"
|
|
11
|
-
date: 2022-06-
|
|
26
|
+
date: 2022-06-06T15:59:20.389Z
|
|
12
27
|
- commits:
|
|
13
28
|
- subject: Update dependencies
|
|
14
29
|
hash: e63884d3e86c2654fd601cacc53f3e8e61bb1d87
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file
|
|
|
4
4
|
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
# v2.4.0
|
|
8
|
+
## (2022-09-15)
|
|
9
|
+
|
|
10
|
+
* Add support for `/$count` with nested `$filter` in $orderby & $orderby [Thodoris Greasidis]
|
|
11
|
+
|
|
7
12
|
# v2.3.0
|
|
8
13
|
## (2022-06-06)
|
|
9
14
|
|
package/odata-parser.js
CHANGED
|
@@ -472,77 +472,78 @@ function peg$parse(input, options) {
|
|
|
472
472
|
var peg$f43 = function(methodName) { return [] };
|
|
473
473
|
var peg$f44 = function(methodName, args) { return [ 'call', { args: args, method: methodName } ] };
|
|
474
474
|
var peg$f45 = function(path, paths) { return [path, ...paths] };
|
|
475
|
-
var peg$f46 = function(resource, property) { return
|
|
476
|
-
var peg$f47 = function(resource, property,
|
|
477
|
-
var peg$f48 = function(
|
|
478
|
-
var peg$f49 = function(
|
|
479
|
-
var peg$f50 = function(resource
|
|
480
|
-
var peg$f51 = function(resource, count) { return
|
|
481
|
-
var peg$f52 = function(resource, count
|
|
482
|
-
var peg$f53 = function(resource, next) { return { name: resource, property: next } };
|
|
483
|
-
var peg$f54 = function(resource,
|
|
484
|
-
var peg$f55 = function(resource,
|
|
485
|
-
var peg$f56 = function(
|
|
486
|
-
var peg$f57 = function(
|
|
487
|
-
var peg$f58 = function(
|
|
488
|
-
var peg$f59 = function(
|
|
489
|
-
var peg$f60 = function(result,
|
|
490
|
-
var peg$f61 = function(result,
|
|
491
|
-
var peg$f62 = function(result) {result.
|
|
492
|
-
var peg$f63 = function(result) {
|
|
493
|
-
var peg$f64 = function(result
|
|
494
|
-
var peg$f65 = function(result,
|
|
495
|
-
var peg$f66 = function(result) {
|
|
496
|
-
var peg$f67 = function(result
|
|
497
|
-
var peg$f68 = function(result) {
|
|
498
|
-
var peg$f69 = function(
|
|
499
|
-
var peg$f70 = function(
|
|
500
|
-
var peg$f71 = function(result,
|
|
501
|
-
var peg$f72 = function(result,
|
|
502
|
-
var peg$f73 = function(result) {result.
|
|
503
|
-
var peg$f74 = function(result
|
|
504
|
-
var peg$f75 = function(result) {
|
|
505
|
-
var peg$f76 = function(
|
|
506
|
-
var peg$f77 = function(
|
|
507
|
-
var peg$f78 = function(d) { return
|
|
508
|
-
var peg$f79 = function() { return
|
|
509
|
-
var peg$f80 = function() { return
|
|
510
|
-
var peg$f81 = function() { return
|
|
511
|
-
var peg$f82 = function(
|
|
512
|
-
var peg$f83 = function(sign, day, hour, minute, second) {
|
|
475
|
+
var peg$f46 = function(resource, property, option) { return CollapseObjectArray([option]) };
|
|
476
|
+
var peg$f47 = function(resource, property, optionsObj) { return { count: true, options: optionsObj } };
|
|
477
|
+
var peg$f48 = function(resource, property, countOptions) { return { name: resource, property, ...countOptions } };
|
|
478
|
+
var peg$f49 = function(path, paths) { return [path, ...paths] };
|
|
479
|
+
var peg$f50 = function(resource) { return true };
|
|
480
|
+
var peg$f51 = function(resource, count, option, options) { return CollapseObjectArray([option, ...options]) };
|
|
481
|
+
var peg$f52 = function(resource, count) { return {} };
|
|
482
|
+
var peg$f53 = function(resource, count, optionsObj, next) { return { name: resource, property: next, count: count, options: optionsObj} };
|
|
483
|
+
var peg$f54 = function(resource, next) { return { name: resource, property: next } };
|
|
484
|
+
var peg$f55 = function(resource, lambda) { return { name: resource, lambda: lambda } };
|
|
485
|
+
var peg$f56 = function(resource, method) { return { name: resource, method: method } };
|
|
486
|
+
var peg$f57 = function(keyBind, keyBinds) { return CollapseObjectArray([keyBind, ...keyBinds]) };
|
|
487
|
+
var peg$f58 = function(name, value) { return { name, value }};
|
|
488
|
+
var peg$f59 = function(resource) { return { resource } };
|
|
489
|
+
var peg$f60 = function(result, key) { result.key = key };
|
|
490
|
+
var peg$f61 = function(result, link) {result.link = link};
|
|
491
|
+
var peg$f62 = function(result, property) {result.property = property};
|
|
492
|
+
var peg$f63 = function(result) {result.count = true};
|
|
493
|
+
var peg$f64 = function(result) { return result };
|
|
494
|
+
var peg$f65 = function(result, link) {result.link = link};
|
|
495
|
+
var peg$f66 = function(result, property) {result.property = property};
|
|
496
|
+
var peg$f67 = function(result) { return result };
|
|
497
|
+
var peg$f68 = function(result, options) {result.options = options};
|
|
498
|
+
var peg$f69 = function(result) { return result };
|
|
499
|
+
var peg$f70 = function(resource) { return { resource } };
|
|
500
|
+
var peg$f71 = function(result, key) { result.key = key };
|
|
501
|
+
var peg$f72 = function(result, link) {result.link = link};
|
|
502
|
+
var peg$f73 = function(result, property) {result.property = property};
|
|
503
|
+
var peg$f74 = function(result) {result.count = true};
|
|
504
|
+
var peg$f75 = function(result, options) {result.options = options};
|
|
505
|
+
var peg$f76 = function(result) { return result };
|
|
506
|
+
var peg$f77 = function(resourceName) { return decodeURIComponent(resourceName) };
|
|
507
|
+
var peg$f78 = function(sign, d) { return Number(sign + d) };
|
|
508
|
+
var peg$f79 = function(d) { return parseInt(d, 10) };
|
|
509
|
+
var peg$f80 = function() { return null };
|
|
510
|
+
var peg$f81 = function() { return true };
|
|
511
|
+
var peg$f82 = function() { return false };
|
|
512
|
+
var peg$f83 = function(sign, day, hour, minute, second) {return hour || minute || second};
|
|
513
|
+
var peg$f84 = function(sign, day, hour, minute, second) {
|
|
513
514
|
return {
|
|
514
515
|
hour: hour || undefined,
|
|
515
516
|
minute: minute || undefined,
|
|
516
517
|
second: second || undefined
|
|
517
518
|
}
|
|
518
519
|
};
|
|
519
|
-
var peg$
|
|
520
|
-
var peg$
|
|
520
|
+
var peg$f85 = function(sign, day, time) {return day || time};
|
|
521
|
+
var peg$f86 = function(sign, day, time) { return {
|
|
521
522
|
negative: sign === '-',
|
|
522
523
|
day: day || undefined,
|
|
523
524
|
hour: time ? time.hour : undefined,
|
|
524
525
|
minute: time ? time.minute : undefined,
|
|
525
526
|
second: time ? time.second : undefined,
|
|
526
527
|
} };
|
|
527
|
-
var peg$
|
|
528
|
-
var peg$
|
|
529
|
-
var peg$
|
|
530
|
-
var peg$
|
|
531
|
-
var peg$
|
|
532
|
-
var peg$
|
|
533
|
-
var peg$
|
|
534
|
-
var peg$
|
|
535
|
-
var peg$
|
|
536
|
-
var peg$
|
|
537
|
-
var peg$
|
|
538
|
-
var peg$
|
|
539
|
-
var peg$
|
|
540
|
-
var peg$
|
|
541
|
-
var peg$
|
|
528
|
+
var peg$f87 = function(d) { return Number(d) };
|
|
529
|
+
var peg$f88 = function(text) { return decodeURIComponent(text) };
|
|
530
|
+
var peg$f89 = function() { return '+' };
|
|
531
|
+
var peg$f90 = function() { return '\'' };
|
|
532
|
+
var peg$f91 = function(text) { return decodeURIComponent(text.join('')) };
|
|
533
|
+
var peg$f92 = function(param) { return { bind: '@' + param } };
|
|
534
|
+
var peg$f93 = function(n) { return Bind('Real', n) };
|
|
535
|
+
var peg$f94 = function() { return 'Date Time' };
|
|
536
|
+
var peg$f95 = function() { return 'Date' };
|
|
537
|
+
var peg$f96 = function(type, date) { return Date.parse(date) };
|
|
538
|
+
var peg$f97 = function(type, date) { return isNaN(date) };
|
|
539
|
+
var peg$f98 = function(type, date) { return [type, date] };
|
|
540
|
+
var peg$f99 = function(d) { return Bind(d[0], d[1]) };
|
|
541
|
+
var peg$f100 = function(b) { return Bind('Boolean', b) };
|
|
542
|
+
var peg$f101 = function(resource) {
|
|
542
543
|
var bind = Bind('ContentReference', resource)
|
|
543
544
|
return { resource: bind, key: bind }
|
|
544
545
|
};
|
|
545
|
-
var peg$
|
|
546
|
+
var peg$f102 = function(t) { return Bind('Text', t) };
|
|
546
547
|
var peg$currPos = 0;
|
|
547
548
|
var peg$savedPos = 0;
|
|
548
549
|
var peg$posDetailsCache = [{ line: 1, column: 1 }];
|
|
@@ -3259,7 +3260,7 @@ function peg$parse(input, options) {
|
|
|
3259
3260
|
}
|
|
3260
3261
|
|
|
3261
3262
|
function peg$parsePropertyPath() {
|
|
3262
|
-
var s0, s1, s2, s3, s4;
|
|
3263
|
+
var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
|
|
3263
3264
|
|
|
3264
3265
|
var key = peg$currPos * 62 + 31;
|
|
3265
3266
|
var cached = peg$resultsCache[key];
|
|
@@ -3305,15 +3306,66 @@ function peg$parse(input, options) {
|
|
|
3305
3306
|
if (peg$silentFails === 0) { peg$fail(peg$e84); }
|
|
3306
3307
|
}
|
|
3307
3308
|
if (s4 !== peg$FAILED) {
|
|
3309
|
+
s5 = peg$currPos;
|
|
3310
|
+
if (input.charCodeAt(peg$currPos) === 40) {
|
|
3311
|
+
s6 = peg$c32;
|
|
3312
|
+
peg$currPos++;
|
|
3313
|
+
} else {
|
|
3314
|
+
s6 = peg$FAILED;
|
|
3315
|
+
if (peg$silentFails === 0) { peg$fail(peg$e34); }
|
|
3316
|
+
}
|
|
3317
|
+
if (s6 !== peg$FAILED) {
|
|
3318
|
+
s7 = peg$currPos;
|
|
3319
|
+
s8 = peg$parseDollar();
|
|
3320
|
+
if (s8 !== peg$FAILED) {
|
|
3321
|
+
s9 = peg$parseFilterByOption();
|
|
3322
|
+
if (s9 !== peg$FAILED) {
|
|
3323
|
+
peg$savedPos = s7;
|
|
3324
|
+
s7 = peg$f46(s1, s2, s9);
|
|
3325
|
+
} else {
|
|
3326
|
+
peg$currPos = s7;
|
|
3327
|
+
s7 = peg$FAILED;
|
|
3328
|
+
}
|
|
3329
|
+
} else {
|
|
3330
|
+
peg$currPos = s7;
|
|
3331
|
+
s7 = peg$FAILED;
|
|
3332
|
+
}
|
|
3333
|
+
if (s7 !== peg$FAILED) {
|
|
3334
|
+
if (input.charCodeAt(peg$currPos) === 41) {
|
|
3335
|
+
s8 = peg$c33;
|
|
3336
|
+
peg$currPos++;
|
|
3337
|
+
} else {
|
|
3338
|
+
s8 = peg$FAILED;
|
|
3339
|
+
if (peg$silentFails === 0) { peg$fail(peg$e35); }
|
|
3340
|
+
}
|
|
3341
|
+
if (s8 !== peg$FAILED) {
|
|
3342
|
+
s5 = s7;
|
|
3343
|
+
} else {
|
|
3344
|
+
peg$currPos = s5;
|
|
3345
|
+
s5 = peg$FAILED;
|
|
3346
|
+
}
|
|
3347
|
+
} else {
|
|
3348
|
+
peg$currPos = s5;
|
|
3349
|
+
s5 = peg$FAILED;
|
|
3350
|
+
}
|
|
3351
|
+
} else {
|
|
3352
|
+
peg$currPos = s5;
|
|
3353
|
+
s5 = peg$FAILED;
|
|
3354
|
+
}
|
|
3355
|
+
if (s5 === peg$FAILED) {
|
|
3356
|
+
s5 = null;
|
|
3357
|
+
}
|
|
3308
3358
|
peg$savedPos = s3;
|
|
3309
|
-
|
|
3359
|
+
s3 = peg$f47(s1, s2, s5);
|
|
3360
|
+
} else {
|
|
3361
|
+
peg$currPos = s3;
|
|
3362
|
+
s3 = peg$FAILED;
|
|
3310
3363
|
}
|
|
3311
|
-
s3 = s4;
|
|
3312
3364
|
if (s3 === peg$FAILED) {
|
|
3313
3365
|
s3 = null;
|
|
3314
3366
|
}
|
|
3315
3367
|
peg$savedPos = s0;
|
|
3316
|
-
s0 = peg$
|
|
3368
|
+
s0 = peg$f48(s1, s2, s3);
|
|
3317
3369
|
} else {
|
|
3318
3370
|
peg$currPos = s0;
|
|
3319
3371
|
s0 = peg$FAILED;
|
|
@@ -3384,7 +3436,7 @@ function peg$parse(input, options) {
|
|
|
3384
3436
|
}
|
|
3385
3437
|
}
|
|
3386
3438
|
peg$savedPos = s0;
|
|
3387
|
-
s0 = peg$
|
|
3439
|
+
s0 = peg$f49(s1, s2);
|
|
3388
3440
|
} else {
|
|
3389
3441
|
peg$currPos = s0;
|
|
3390
3442
|
s0 = peg$FAILED;
|
|
@@ -3420,7 +3472,7 @@ function peg$parse(input, options) {
|
|
|
3420
3472
|
}
|
|
3421
3473
|
if (s3 !== peg$FAILED) {
|
|
3422
3474
|
peg$savedPos = s2;
|
|
3423
|
-
s3 = peg$
|
|
3475
|
+
s3 = peg$f50(s1);
|
|
3424
3476
|
}
|
|
3425
3477
|
s2 = s3;
|
|
3426
3478
|
if (s2 === peg$FAILED) {
|
|
@@ -3483,7 +3535,7 @@ function peg$parse(input, options) {
|
|
|
3483
3535
|
}
|
|
3484
3536
|
}
|
|
3485
3537
|
peg$savedPos = s5;
|
|
3486
|
-
s5 = peg$
|
|
3538
|
+
s5 = peg$f51(s1, s2, s6, s7);
|
|
3487
3539
|
} else {
|
|
3488
3540
|
peg$currPos = s5;
|
|
3489
3541
|
s5 = peg$FAILED;
|
|
@@ -3492,7 +3544,7 @@ function peg$parse(input, options) {
|
|
|
3492
3544
|
s5 = peg$currPos;
|
|
3493
3545
|
s6 = '';
|
|
3494
3546
|
peg$savedPos = s5;
|
|
3495
|
-
s6 = peg$
|
|
3547
|
+
s6 = peg$f52(s1, s2);
|
|
3496
3548
|
s5 = s6;
|
|
3497
3549
|
}
|
|
3498
3550
|
if (s5 !== peg$FAILED) {
|
|
@@ -3544,7 +3596,7 @@ function peg$parse(input, options) {
|
|
|
3544
3596
|
s4 = null;
|
|
3545
3597
|
}
|
|
3546
3598
|
peg$savedPos = s0;
|
|
3547
|
-
s0 = peg$
|
|
3599
|
+
s0 = peg$f53(s1, s2, s3, s4);
|
|
3548
3600
|
} else {
|
|
3549
3601
|
peg$currPos = s0;
|
|
3550
3602
|
s0 = peg$FAILED;
|
|
@@ -3582,7 +3634,7 @@ function peg$parse(input, options) {
|
|
|
3582
3634
|
s4 = peg$parseLambdaPropertyPath();
|
|
3583
3635
|
if (s4 !== peg$FAILED) {
|
|
3584
3636
|
peg$savedPos = s3;
|
|
3585
|
-
s4 = peg$
|
|
3637
|
+
s4 = peg$f54(s1, s4);
|
|
3586
3638
|
}
|
|
3587
3639
|
s3 = s4;
|
|
3588
3640
|
if (s3 === peg$FAILED) {
|
|
@@ -3590,7 +3642,7 @@ function peg$parse(input, options) {
|
|
|
3590
3642
|
s4 = peg$parseLambdaMethodCall();
|
|
3591
3643
|
if (s4 !== peg$FAILED) {
|
|
3592
3644
|
peg$savedPos = s3;
|
|
3593
|
-
s4 = peg$
|
|
3645
|
+
s4 = peg$f55(s1, s4);
|
|
3594
3646
|
}
|
|
3595
3647
|
s3 = s4;
|
|
3596
3648
|
if (s3 === peg$FAILED) {
|
|
@@ -3598,7 +3650,7 @@ function peg$parse(input, options) {
|
|
|
3598
3650
|
s4 = peg$parseResourceMethodCall();
|
|
3599
3651
|
if (s4 !== peg$FAILED) {
|
|
3600
3652
|
peg$savedPos = s3;
|
|
3601
|
-
s4 = peg$
|
|
3653
|
+
s4 = peg$f56(s1, s4);
|
|
3602
3654
|
}
|
|
3603
3655
|
s3 = s4;
|
|
3604
3656
|
}
|
|
@@ -3694,7 +3746,7 @@ function peg$parse(input, options) {
|
|
|
3694
3746
|
}
|
|
3695
3747
|
}
|
|
3696
3748
|
peg$savedPos = s2;
|
|
3697
|
-
s2 = peg$
|
|
3749
|
+
s2 = peg$f57(s3, s4);
|
|
3698
3750
|
} else {
|
|
3699
3751
|
peg$currPos = s2;
|
|
3700
3752
|
s2 = peg$FAILED;
|
|
@@ -3754,7 +3806,7 @@ function peg$parse(input, options) {
|
|
|
3754
3806
|
s3 = peg$parseKeyBind();
|
|
3755
3807
|
if (s3 !== peg$FAILED) {
|
|
3756
3808
|
peg$savedPos = s0;
|
|
3757
|
-
s0 = peg$
|
|
3809
|
+
s0 = peg$f58(s1, s3);
|
|
3758
3810
|
} else {
|
|
3759
3811
|
peg$currPos = s0;
|
|
3760
3812
|
s0 = peg$FAILED;
|
|
@@ -3862,7 +3914,7 @@ function peg$parse(input, options) {
|
|
|
3862
3914
|
s4 = peg$parseResourceName();
|
|
3863
3915
|
if (s4 !== peg$FAILED) {
|
|
3864
3916
|
peg$savedPos = s3;
|
|
3865
|
-
s4 = peg$
|
|
3917
|
+
s4 = peg$f59(s4);
|
|
3866
3918
|
}
|
|
3867
3919
|
s3 = s4;
|
|
3868
3920
|
if (s3 !== peg$FAILED) {
|
|
@@ -3871,7 +3923,7 @@ function peg$parse(input, options) {
|
|
|
3871
3923
|
s6 = peg$parseKey();
|
|
3872
3924
|
if (s6 !== peg$FAILED) {
|
|
3873
3925
|
peg$savedPos = s5;
|
|
3874
|
-
s6 = peg$
|
|
3926
|
+
s6 = peg$f60(s3, s6);
|
|
3875
3927
|
}
|
|
3876
3928
|
s5 = s6;
|
|
3877
3929
|
if (s5 !== peg$FAILED) {
|
|
@@ -3879,7 +3931,7 @@ function peg$parse(input, options) {
|
|
|
3879
3931
|
s7 = peg$parseLinks();
|
|
3880
3932
|
if (s7 !== peg$FAILED) {
|
|
3881
3933
|
peg$savedPos = s6;
|
|
3882
|
-
s7 = peg$
|
|
3934
|
+
s7 = peg$f61(s3, s7);
|
|
3883
3935
|
}
|
|
3884
3936
|
s6 = s7;
|
|
3885
3937
|
if (s6 === peg$FAILED) {
|
|
@@ -3887,7 +3939,7 @@ function peg$parse(input, options) {
|
|
|
3887
3939
|
s7 = peg$parseSubPathSegment();
|
|
3888
3940
|
if (s7 !== peg$FAILED) {
|
|
3889
3941
|
peg$savedPos = s6;
|
|
3890
|
-
s7 = peg$
|
|
3942
|
+
s7 = peg$f62(s3, s7);
|
|
3891
3943
|
}
|
|
3892
3944
|
s6 = s7;
|
|
3893
3945
|
}
|
|
@@ -3911,7 +3963,7 @@ function peg$parse(input, options) {
|
|
|
3911
3963
|
}
|
|
3912
3964
|
if (s5 !== peg$FAILED) {
|
|
3913
3965
|
peg$savedPos = s4;
|
|
3914
|
-
s5 = peg$
|
|
3966
|
+
s5 = peg$f63(s3);
|
|
3915
3967
|
}
|
|
3916
3968
|
s4 = s5;
|
|
3917
3969
|
}
|
|
@@ -3919,7 +3971,7 @@ function peg$parse(input, options) {
|
|
|
3919
3971
|
s4 = null;
|
|
3920
3972
|
}
|
|
3921
3973
|
peg$savedPos = s1;
|
|
3922
|
-
s1 = peg$
|
|
3974
|
+
s1 = peg$f64(s3);
|
|
3923
3975
|
} else {
|
|
3924
3976
|
peg$currPos = s1;
|
|
3925
3977
|
s1 = peg$FAILED;
|
|
@@ -3936,7 +3988,7 @@ function peg$parse(input, options) {
|
|
|
3936
3988
|
s4 = peg$parseLinks();
|
|
3937
3989
|
if (s4 !== peg$FAILED) {
|
|
3938
3990
|
peg$savedPos = s3;
|
|
3939
|
-
s4 = peg$
|
|
3991
|
+
s4 = peg$f65(s2, s4);
|
|
3940
3992
|
}
|
|
3941
3993
|
s3 = s4;
|
|
3942
3994
|
if (s3 === peg$FAILED) {
|
|
@@ -3944,7 +3996,7 @@ function peg$parse(input, options) {
|
|
|
3944
3996
|
s4 = peg$parseSubPathSegment();
|
|
3945
3997
|
if (s4 !== peg$FAILED) {
|
|
3946
3998
|
peg$savedPos = s3;
|
|
3947
|
-
s4 = peg$
|
|
3999
|
+
s4 = peg$f66(s2, s4);
|
|
3948
4000
|
}
|
|
3949
4001
|
s3 = s4;
|
|
3950
4002
|
}
|
|
@@ -3952,7 +4004,7 @@ function peg$parse(input, options) {
|
|
|
3952
4004
|
s3 = null;
|
|
3953
4005
|
}
|
|
3954
4006
|
peg$savedPos = s1;
|
|
3955
|
-
s1 = peg$
|
|
4007
|
+
s1 = peg$f67(s2);
|
|
3956
4008
|
} else {
|
|
3957
4009
|
peg$currPos = s1;
|
|
3958
4010
|
s1 = peg$FAILED;
|
|
@@ -3972,7 +4024,7 @@ function peg$parse(input, options) {
|
|
|
3972
4024
|
s5 = peg$parseQueryOptions();
|
|
3973
4025
|
if (s5 !== peg$FAILED) {
|
|
3974
4026
|
peg$savedPos = s4;
|
|
3975
|
-
s5 = peg$
|
|
4027
|
+
s5 = peg$f68(s1, s5);
|
|
3976
4028
|
}
|
|
3977
4029
|
s4 = s5;
|
|
3978
4030
|
if (s4 === peg$FAILED) {
|
|
@@ -3988,7 +4040,7 @@ function peg$parse(input, options) {
|
|
|
3988
4040
|
s2 = null;
|
|
3989
4041
|
}
|
|
3990
4042
|
peg$savedPos = s0;
|
|
3991
|
-
s0 = peg$
|
|
4043
|
+
s0 = peg$f69(s1);
|
|
3992
4044
|
} else {
|
|
3993
4045
|
peg$currPos = s0;
|
|
3994
4046
|
s0 = peg$FAILED;
|
|
@@ -4024,7 +4076,7 @@ function peg$parse(input, options) {
|
|
|
4024
4076
|
s3 = peg$parseResourceName();
|
|
4025
4077
|
if (s3 !== peg$FAILED) {
|
|
4026
4078
|
peg$savedPos = s2;
|
|
4027
|
-
s3 = peg$
|
|
4079
|
+
s3 = peg$f70(s3);
|
|
4028
4080
|
}
|
|
4029
4081
|
s2 = s3;
|
|
4030
4082
|
if (s2 !== peg$FAILED) {
|
|
@@ -4032,7 +4084,7 @@ function peg$parse(input, options) {
|
|
|
4032
4084
|
s4 = peg$parseKey();
|
|
4033
4085
|
if (s4 !== peg$FAILED) {
|
|
4034
4086
|
peg$savedPos = s3;
|
|
4035
|
-
s4 = peg$
|
|
4087
|
+
s4 = peg$f71(s2, s4);
|
|
4036
4088
|
}
|
|
4037
4089
|
s3 = s4;
|
|
4038
4090
|
if (s3 === peg$FAILED) {
|
|
@@ -4050,7 +4102,7 @@ function peg$parse(input, options) {
|
|
|
4050
4102
|
s6 = peg$parseSubPathSegment();
|
|
4051
4103
|
if (s6 !== peg$FAILED) {
|
|
4052
4104
|
peg$savedPos = s4;
|
|
4053
|
-
s4 = peg$
|
|
4105
|
+
s4 = peg$f72(s2, s6);
|
|
4054
4106
|
} else {
|
|
4055
4107
|
peg$currPos = s4;
|
|
4056
4108
|
s4 = peg$FAILED;
|
|
@@ -4064,7 +4116,7 @@ function peg$parse(input, options) {
|
|
|
4064
4116
|
s5 = peg$parseSubPathSegment();
|
|
4065
4117
|
if (s5 !== peg$FAILED) {
|
|
4066
4118
|
peg$savedPos = s4;
|
|
4067
|
-
s5 = peg$
|
|
4119
|
+
s5 = peg$f73(s2, s5);
|
|
4068
4120
|
}
|
|
4069
4121
|
s4 = s5;
|
|
4070
4122
|
}
|
|
@@ -4081,7 +4133,7 @@ function peg$parse(input, options) {
|
|
|
4081
4133
|
}
|
|
4082
4134
|
if (s6 !== peg$FAILED) {
|
|
4083
4135
|
peg$savedPos = s5;
|
|
4084
|
-
s6 = peg$
|
|
4136
|
+
s6 = peg$f74(s2);
|
|
4085
4137
|
}
|
|
4086
4138
|
s5 = s6;
|
|
4087
4139
|
if (s5 === peg$FAILED) {
|
|
@@ -4100,7 +4152,7 @@ function peg$parse(input, options) {
|
|
|
4100
4152
|
s9 = peg$parseQueryOptions();
|
|
4101
4153
|
if (s9 !== peg$FAILED) {
|
|
4102
4154
|
peg$savedPos = s8;
|
|
4103
|
-
s9 = peg$
|
|
4155
|
+
s9 = peg$f75(s2, s9);
|
|
4104
4156
|
}
|
|
4105
4157
|
s8 = s9;
|
|
4106
4158
|
if (s8 === peg$FAILED) {
|
|
@@ -4116,7 +4168,7 @@ function peg$parse(input, options) {
|
|
|
4116
4168
|
s6 = null;
|
|
4117
4169
|
}
|
|
4118
4170
|
peg$savedPos = s0;
|
|
4119
|
-
s0 = peg$
|
|
4171
|
+
s0 = peg$f76(s2);
|
|
4120
4172
|
} else {
|
|
4121
4173
|
peg$currPos = s0;
|
|
4122
4174
|
s0 = peg$FAILED;
|
|
@@ -4174,7 +4226,7 @@ function peg$parse(input, options) {
|
|
|
4174
4226
|
}
|
|
4175
4227
|
if (s1 !== peg$FAILED) {
|
|
4176
4228
|
peg$savedPos = s0;
|
|
4177
|
-
s1 = peg$
|
|
4229
|
+
s1 = peg$f77(s1);
|
|
4178
4230
|
}
|
|
4179
4231
|
s0 = s1;
|
|
4180
4232
|
|
|
@@ -4281,7 +4333,7 @@ function peg$parse(input, options) {
|
|
|
4281
4333
|
}
|
|
4282
4334
|
if (s2 !== peg$FAILED) {
|
|
4283
4335
|
peg$savedPos = s0;
|
|
4284
|
-
s0 = peg$
|
|
4336
|
+
s0 = peg$f78(s1, s2);
|
|
4285
4337
|
} else {
|
|
4286
4338
|
peg$currPos = s0;
|
|
4287
4339
|
s0 = peg$FAILED;
|
|
@@ -4339,7 +4391,7 @@ function peg$parse(input, options) {
|
|
|
4339
4391
|
}
|
|
4340
4392
|
if (s1 !== peg$FAILED) {
|
|
4341
4393
|
peg$savedPos = s0;
|
|
4342
|
-
s1 = peg$
|
|
4394
|
+
s1 = peg$f79(s1);
|
|
4343
4395
|
}
|
|
4344
4396
|
s0 = s1;
|
|
4345
4397
|
|
|
@@ -4370,7 +4422,7 @@ function peg$parse(input, options) {
|
|
|
4370
4422
|
}
|
|
4371
4423
|
if (s1 !== peg$FAILED) {
|
|
4372
4424
|
peg$savedPos = s0;
|
|
4373
|
-
s1 = peg$
|
|
4425
|
+
s1 = peg$f80();
|
|
4374
4426
|
}
|
|
4375
4427
|
s0 = s1;
|
|
4376
4428
|
|
|
@@ -4401,7 +4453,7 @@ function peg$parse(input, options) {
|
|
|
4401
4453
|
}
|
|
4402
4454
|
if (s1 !== peg$FAILED) {
|
|
4403
4455
|
peg$savedPos = s0;
|
|
4404
|
-
s1 = peg$
|
|
4456
|
+
s1 = peg$f81();
|
|
4405
4457
|
}
|
|
4406
4458
|
s0 = s1;
|
|
4407
4459
|
if (s0 === peg$FAILED) {
|
|
@@ -4415,7 +4467,7 @@ function peg$parse(input, options) {
|
|
|
4415
4467
|
}
|
|
4416
4468
|
if (s1 !== peg$FAILED) {
|
|
4417
4469
|
peg$savedPos = s0;
|
|
4418
|
-
s1 = peg$
|
|
4470
|
+
s1 = peg$f82();
|
|
4419
4471
|
}
|
|
4420
4472
|
s0 = s1;
|
|
4421
4473
|
}
|
|
@@ -4560,7 +4612,7 @@ function peg$parse(input, options) {
|
|
|
4560
4612
|
s10 = null;
|
|
4561
4613
|
}
|
|
4562
4614
|
peg$savedPos = peg$currPos;
|
|
4563
|
-
s11 = peg$
|
|
4615
|
+
s11 = peg$f83(s3, s5, s8, s9, s10);
|
|
4564
4616
|
if (s11) {
|
|
4565
4617
|
s11 = undefined;
|
|
4566
4618
|
} else {
|
|
@@ -4568,7 +4620,7 @@ function peg$parse(input, options) {
|
|
|
4568
4620
|
}
|
|
4569
4621
|
if (s11 !== peg$FAILED) {
|
|
4570
4622
|
peg$savedPos = s6;
|
|
4571
|
-
s6 = peg$
|
|
4623
|
+
s6 = peg$f84(s3, s5, s8, s9, s10);
|
|
4572
4624
|
} else {
|
|
4573
4625
|
peg$currPos = s6;
|
|
4574
4626
|
s6 = peg$FAILED;
|
|
@@ -4581,7 +4633,7 @@ function peg$parse(input, options) {
|
|
|
4581
4633
|
s6 = null;
|
|
4582
4634
|
}
|
|
4583
4635
|
peg$savedPos = peg$currPos;
|
|
4584
|
-
s7 = peg$
|
|
4636
|
+
s7 = peg$f85(s3, s5, s6);
|
|
4585
4637
|
if (s7) {
|
|
4586
4638
|
s7 = undefined;
|
|
4587
4639
|
} else {
|
|
@@ -4591,7 +4643,7 @@ function peg$parse(input, options) {
|
|
|
4591
4643
|
s8 = peg$parseApostrophe();
|
|
4592
4644
|
if (s8 !== peg$FAILED) {
|
|
4593
4645
|
peg$savedPos = s0;
|
|
4594
|
-
s0 = peg$
|
|
4646
|
+
s0 = peg$f86(s3, s5, s6);
|
|
4595
4647
|
} else {
|
|
4596
4648
|
peg$currPos = s0;
|
|
4597
4649
|
s0 = peg$FAILED;
|
|
@@ -4712,7 +4764,7 @@ function peg$parse(input, options) {
|
|
|
4712
4764
|
}
|
|
4713
4765
|
if (s1 !== peg$FAILED) {
|
|
4714
4766
|
peg$savedPos = s0;
|
|
4715
|
-
s1 = peg$
|
|
4767
|
+
s1 = peg$f87(s1);
|
|
4716
4768
|
}
|
|
4717
4769
|
s0 = s1;
|
|
4718
4770
|
if (s0 === peg$FAILED) {
|
|
@@ -4758,7 +4810,7 @@ function peg$parse(input, options) {
|
|
|
4758
4810
|
}
|
|
4759
4811
|
s1 = input.substring(s1, peg$currPos);
|
|
4760
4812
|
peg$savedPos = s0;
|
|
4761
|
-
s1 = peg$
|
|
4813
|
+
s1 = peg$f88(s1);
|
|
4762
4814
|
s0 = s1;
|
|
4763
4815
|
|
|
4764
4816
|
peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
|
|
@@ -4796,7 +4848,7 @@ function peg$parse(input, options) {
|
|
|
4796
4848
|
}
|
|
4797
4849
|
if (s1 !== peg$FAILED) {
|
|
4798
4850
|
peg$savedPos = s0;
|
|
4799
|
-
s1 = peg$
|
|
4851
|
+
s1 = peg$f89();
|
|
4800
4852
|
}
|
|
4801
4853
|
s0 = s1;
|
|
4802
4854
|
if (s0 === peg$FAILED) {
|
|
@@ -4848,7 +4900,7 @@ function peg$parse(input, options) {
|
|
|
4848
4900
|
}
|
|
4849
4901
|
if (s1 !== peg$FAILED) {
|
|
4850
4902
|
peg$savedPos = s0;
|
|
4851
|
-
s1 = peg$
|
|
4903
|
+
s1 = peg$f90();
|
|
4852
4904
|
}
|
|
4853
4905
|
s0 = s1;
|
|
4854
4906
|
}
|
|
@@ -4970,7 +5022,7 @@ function peg$parse(input, options) {
|
|
|
4970
5022
|
s3 = peg$parseApostrophe();
|
|
4971
5023
|
if (s3 !== peg$FAILED) {
|
|
4972
5024
|
peg$savedPos = s0;
|
|
4973
|
-
s0 = peg$
|
|
5025
|
+
s0 = peg$f91(s2);
|
|
4974
5026
|
} else {
|
|
4975
5027
|
peg$currPos = s0;
|
|
4976
5028
|
s0 = peg$FAILED;
|
|
@@ -5009,7 +5061,7 @@ function peg$parse(input, options) {
|
|
|
5009
5061
|
s2 = peg$parseResourceName();
|
|
5010
5062
|
if (s2 !== peg$FAILED) {
|
|
5011
5063
|
peg$savedPos = s0;
|
|
5012
|
-
s0 = peg$
|
|
5064
|
+
s0 = peg$f92(s2);
|
|
5013
5065
|
} else {
|
|
5014
5066
|
peg$currPos = s0;
|
|
5015
5067
|
s0 = peg$FAILED;
|
|
@@ -5040,7 +5092,7 @@ function peg$parse(input, options) {
|
|
|
5040
5092
|
s1 = peg$parseNumber();
|
|
5041
5093
|
if (s1 !== peg$FAILED) {
|
|
5042
5094
|
peg$savedPos = s0;
|
|
5043
|
-
s1 = peg$
|
|
5095
|
+
s1 = peg$f93(s1);
|
|
5044
5096
|
}
|
|
5045
5097
|
s0 = s1;
|
|
5046
5098
|
|
|
@@ -5072,7 +5124,7 @@ function peg$parse(input, options) {
|
|
|
5072
5124
|
}
|
|
5073
5125
|
if (s2 !== peg$FAILED) {
|
|
5074
5126
|
peg$savedPos = s1;
|
|
5075
|
-
s2 = peg$
|
|
5127
|
+
s2 = peg$f94();
|
|
5076
5128
|
}
|
|
5077
5129
|
s1 = s2;
|
|
5078
5130
|
if (s1 === peg$FAILED) {
|
|
@@ -5086,7 +5138,7 @@ function peg$parse(input, options) {
|
|
|
5086
5138
|
}
|
|
5087
5139
|
if (s2 !== peg$FAILED) {
|
|
5088
5140
|
peg$savedPos = s1;
|
|
5089
|
-
s2 = peg$
|
|
5141
|
+
s2 = peg$f95();
|
|
5090
5142
|
}
|
|
5091
5143
|
s1 = s2;
|
|
5092
5144
|
}
|
|
@@ -5095,12 +5147,12 @@ function peg$parse(input, options) {
|
|
|
5095
5147
|
s3 = peg$parseQuotedText();
|
|
5096
5148
|
if (s3 !== peg$FAILED) {
|
|
5097
5149
|
peg$savedPos = s2;
|
|
5098
|
-
s3 = peg$
|
|
5150
|
+
s3 = peg$f96(s1, s3);
|
|
5099
5151
|
}
|
|
5100
5152
|
s2 = s3;
|
|
5101
5153
|
if (s2 !== peg$FAILED) {
|
|
5102
5154
|
peg$savedPos = peg$currPos;
|
|
5103
|
-
s3 = peg$
|
|
5155
|
+
s3 = peg$f97(s1, s2);
|
|
5104
5156
|
if (s3) {
|
|
5105
5157
|
s3 = peg$FAILED;
|
|
5106
5158
|
} else {
|
|
@@ -5108,7 +5160,7 @@ function peg$parse(input, options) {
|
|
|
5108
5160
|
}
|
|
5109
5161
|
if (s3 !== peg$FAILED) {
|
|
5110
5162
|
peg$savedPos = s0;
|
|
5111
|
-
s0 = peg$
|
|
5163
|
+
s0 = peg$f98(s1, s2);
|
|
5112
5164
|
} else {
|
|
5113
5165
|
peg$currPos = s0;
|
|
5114
5166
|
s0 = peg$FAILED;
|
|
@@ -5143,7 +5195,7 @@ function peg$parse(input, options) {
|
|
|
5143
5195
|
s1 = peg$parseDate();
|
|
5144
5196
|
if (s1 !== peg$FAILED) {
|
|
5145
5197
|
peg$savedPos = s0;
|
|
5146
|
-
s1 = peg$
|
|
5198
|
+
s1 = peg$f99(s1);
|
|
5147
5199
|
}
|
|
5148
5200
|
s0 = s1;
|
|
5149
5201
|
|
|
@@ -5168,7 +5220,7 @@ function peg$parse(input, options) {
|
|
|
5168
5220
|
s1 = peg$parseBoolean();
|
|
5169
5221
|
if (s1 !== peg$FAILED) {
|
|
5170
5222
|
peg$savedPos = s0;
|
|
5171
|
-
s1 = peg$
|
|
5223
|
+
s1 = peg$f100(s1);
|
|
5172
5224
|
}
|
|
5173
5225
|
s0 = s1;
|
|
5174
5226
|
|
|
@@ -5201,7 +5253,7 @@ function peg$parse(input, options) {
|
|
|
5201
5253
|
s2 = peg$parseResourceName();
|
|
5202
5254
|
if (s2 !== peg$FAILED) {
|
|
5203
5255
|
peg$savedPos = s0;
|
|
5204
|
-
s0 = peg$
|
|
5256
|
+
s0 = peg$f101(s2);
|
|
5205
5257
|
} else {
|
|
5206
5258
|
peg$currPos = s0;
|
|
5207
5259
|
s0 = peg$FAILED;
|
|
@@ -5232,7 +5284,7 @@ function peg$parse(input, options) {
|
|
|
5232
5284
|
s1 = peg$parseQuotedText();
|
|
5233
5285
|
if (s1 !== peg$FAILED) {
|
|
5234
5286
|
peg$savedPos = s0;
|
|
5235
|
-
s1 = peg$
|
|
5287
|
+
s1 = peg$f102(s1);
|
|
5236
5288
|
}
|
|
5237
5289
|
s0 = s1;
|
|
5238
5290
|
|
package/odata-parser.pegjs
CHANGED
|
@@ -458,11 +458,19 @@ PropertyPath =
|
|
|
458
458
|
'/'
|
|
459
459
|
@PropertyPath
|
|
460
460
|
)?
|
|
461
|
-
|
|
461
|
+
countOptions:(
|
|
462
462
|
'/$count'
|
|
463
|
-
|
|
463
|
+
optionsObj:(
|
|
464
|
+
'('
|
|
465
|
+
@( Dollar
|
|
466
|
+
option:FilterByOption
|
|
467
|
+
{ return CollapseObjectArray([option]) }
|
|
468
|
+
)
|
|
469
|
+
')'
|
|
470
|
+
)?
|
|
471
|
+
{ return { count: true, options: optionsObj } }
|
|
464
472
|
)?
|
|
465
|
-
{ return { name: resource, property,
|
|
473
|
+
{ return { name: resource, property, ...countOptions } }
|
|
466
474
|
ExpandPropertyPathList =
|
|
467
475
|
path:ExpandPropertyPath
|
|
468
476
|
paths:(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/odata-parser",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "An OData parser written in OMeta",
|
|
5
5
|
"main": "odata-parser.js",
|
|
6
6
|
"scripts": {
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"_": "test/run.js"
|
|
43
43
|
},
|
|
44
44
|
"versionist": {
|
|
45
|
-
"publishedAt": "2022-
|
|
45
|
+
"publishedAt": "2022-09-15T07:00:40.336Z"
|
|
46
46
|
}
|
|
47
47
|
}
|
package/test/filterby.js
CHANGED
|
@@ -401,6 +401,53 @@ export default function (test) {
|
|
|
401
401
|
assert.equal(result.options.$filter[2].bind, 0));
|
|
402
402
|
});
|
|
403
403
|
|
|
404
|
+
test(
|
|
405
|
+
'$filter=Products/$count($filter=Price lt 5) ge 1',
|
|
406
|
+
[5, 1],
|
|
407
|
+
function (result) {
|
|
408
|
+
it('A filter should be present', () =>
|
|
409
|
+
assert.notEqual(result.options.$filter, null));
|
|
410
|
+
|
|
411
|
+
it("Filter should be an instance of 'ge'", () =>
|
|
412
|
+
assert.equal(result.options.$filter[0], 'ge'));
|
|
413
|
+
|
|
414
|
+
it('lhr should have the Product count', function () {
|
|
415
|
+
expect(result.options.$filter[1])
|
|
416
|
+
.to.have.property('name')
|
|
417
|
+
.that.equals('Products');
|
|
418
|
+
expect(result.options.$filter[1])
|
|
419
|
+
.to.have.property('count')
|
|
420
|
+
.that.equals(true);
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
it('count options are present on the Product count', () => {
|
|
424
|
+
assert.notEqual(result.options.$filter[1].options, null);
|
|
425
|
+
console.log('***', result.options.$filter[1].options);
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
it('A filter should be present on the Product count lhs', () =>
|
|
429
|
+
assert.notEqual(result.options.$filter[1].options.$filter, null));
|
|
430
|
+
|
|
431
|
+
it(`has a Product count filter that is an instance of 'ge'`, () =>
|
|
432
|
+
assert.equal(result.options.$filter[1].options.$filter[0], 'lt'));
|
|
433
|
+
|
|
434
|
+
it(`has an lhs on the Product count filter that is an instance of 'ge'`, () => {
|
|
435
|
+
expect(result.options.$filter[1].options.$filter[1])
|
|
436
|
+
.to.have.property('name')
|
|
437
|
+
.that.equals('Price');
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
it(`has an rhs on the Product count filter that is $0`, () => {
|
|
441
|
+
expect(result.options.$filter[1].options.$filter[2])
|
|
442
|
+
.to.have.property('bind')
|
|
443
|
+
.that.equals(0);
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
it('rhr should be $1', () =>
|
|
447
|
+
assert.equal(result.options.$filter[2].bind, 1));
|
|
448
|
+
},
|
|
449
|
+
);
|
|
450
|
+
|
|
404
451
|
test("$filter=note eq 'foobar'", ['foobar'], function (result) {
|
|
405
452
|
it('A filter should be present', () =>
|
|
406
453
|
assert.notEqual(result.options.$filter, null));
|
package/test/orderby.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as assert from 'assert';
|
|
2
|
+
import filterby from './filterby';
|
|
2
3
|
|
|
3
4
|
export default (test) => {
|
|
4
5
|
describe('$orderby', function () {
|
|
@@ -91,5 +92,46 @@ export default (test) => {
|
|
|
91
92
|
);
|
|
92
93
|
});
|
|
93
94
|
});
|
|
95
|
+
|
|
96
|
+
test('$orderby=PropertyOne/$count', function (result) {
|
|
97
|
+
it('sort options are present on the result', () => {
|
|
98
|
+
assert.notEqual(result.options.$orderby, null);
|
|
99
|
+
});
|
|
100
|
+
it('sort options have property one name specified', () => {
|
|
101
|
+
assert.equal(result.options.$orderby.properties[0].name, 'PropertyOne');
|
|
102
|
+
});
|
|
103
|
+
it('has count defined', () => {
|
|
104
|
+
assert.equal(result.options.$orderby.properties[0].count, true);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const testFilterOption = function (nestedTest, input, ...optArgs) {
|
|
109
|
+
const expectation = optArgs.pop();
|
|
110
|
+
nestedTest(
|
|
111
|
+
`$orderby=PropertyOne/$count(${input})`,
|
|
112
|
+
...optArgs,
|
|
113
|
+
function (result) {
|
|
114
|
+
it('sort options are present on the result', () => {
|
|
115
|
+
assert.notEqual(result.options.$orderby, null);
|
|
116
|
+
});
|
|
117
|
+
it('sort options have property one name specified', () => {
|
|
118
|
+
assert.equal(
|
|
119
|
+
result.options.$orderby.properties[0].name,
|
|
120
|
+
'PropertyOne',
|
|
121
|
+
);
|
|
122
|
+
});
|
|
123
|
+
it('has count defined', () => {
|
|
124
|
+
assert.equal(result.options.$orderby.properties[0].count, true);
|
|
125
|
+
});
|
|
126
|
+
expectation(result?.options?.$orderby?.properties?.[0]);
|
|
127
|
+
},
|
|
128
|
+
);
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const nestedFilterTest = testFilterOption.bind(null, test);
|
|
132
|
+
nestedFilterTest.skip = testFilterOption.bind(null, test.skip);
|
|
133
|
+
nestedFilterTest.only = testFilterOption.bind(null, test.only);
|
|
134
|
+
|
|
135
|
+
filterby(nestedFilterTest);
|
|
94
136
|
});
|
|
95
137
|
};
|