@globalart/ddd 1.1.2 → 1.1.4
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/dist/index.cjs +103 -103
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.mts +6 -6
- package/dist/index.mjs +58 -58
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -28,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
let uuid = require("uuid");
|
|
29
29
|
let zod = require("zod");
|
|
30
30
|
zod = __toESM(zod);
|
|
31
|
-
let
|
|
31
|
+
let _globalart_oxide = require("@globalart/oxide");
|
|
32
32
|
let ts_pattern = require("ts-pattern");
|
|
33
33
|
let dequal = require("dequal");
|
|
34
34
|
let date_fns = require("date-fns");
|
|
@@ -418,7 +418,7 @@ var Or = class extends CompositeSpecification {
|
|
|
418
418
|
}
|
|
419
419
|
accept(v) {
|
|
420
420
|
v.or(this.left, this.right);
|
|
421
|
-
return (0,
|
|
421
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
422
422
|
}
|
|
423
423
|
};
|
|
424
424
|
var Not = class extends CompositeSpecification {
|
|
@@ -437,19 +437,19 @@ var Not = class extends CompositeSpecification {
|
|
|
437
437
|
}
|
|
438
438
|
};
|
|
439
439
|
const and = (...specs) => {
|
|
440
|
-
if (!specs.length) return
|
|
440
|
+
if (!specs.length) return _globalart_oxide.None;
|
|
441
441
|
let s = specs[0];
|
|
442
442
|
for (const spec of specs.slice(1)) s = s.and(spec);
|
|
443
|
-
return (0,
|
|
443
|
+
return (0, _globalart_oxide.Some)(s);
|
|
444
444
|
};
|
|
445
445
|
const andOptions = (...specs) => {
|
|
446
446
|
return and(...specs.filter((spec) => spec.isSome()).map((spec) => spec.unwrap()));
|
|
447
447
|
};
|
|
448
448
|
const or = (...specs) => {
|
|
449
|
-
if (!specs.length) return
|
|
449
|
+
if (!specs.length) return _globalart_oxide.None;
|
|
450
450
|
let s = specs[0];
|
|
451
451
|
for (const spec of specs.slice(1)) s = s.or(spec);
|
|
452
|
-
return (0,
|
|
452
|
+
return (0, _globalart_oxide.Some)(s);
|
|
453
453
|
};
|
|
454
454
|
|
|
455
455
|
//#endregion
|
|
@@ -474,7 +474,7 @@ var BooleanEqual = class extends BaseFilterSpecification {
|
|
|
474
474
|
}
|
|
475
475
|
accept(v) {
|
|
476
476
|
v.booleanEqual(this);
|
|
477
|
-
return (0,
|
|
477
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
478
478
|
}
|
|
479
479
|
};
|
|
480
480
|
var BooleanNotEqual = class extends BaseFilterSpecification {
|
|
@@ -483,7 +483,7 @@ var BooleanNotEqual = class extends BaseFilterSpecification {
|
|
|
483
483
|
}
|
|
484
484
|
accept(v) {
|
|
485
485
|
v.booleanNotEqual(this);
|
|
486
|
-
return (0,
|
|
486
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
487
487
|
}
|
|
488
488
|
};
|
|
489
489
|
|
|
@@ -495,7 +495,7 @@ var DateEqual = class extends BaseFilterSpecification {
|
|
|
495
495
|
}
|
|
496
496
|
accept(v) {
|
|
497
497
|
v.dateEqual(this);
|
|
498
|
-
return (0,
|
|
498
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
499
499
|
}
|
|
500
500
|
};
|
|
501
501
|
var DateGreaterThan = class extends BaseFilterSpecification {
|
|
@@ -507,7 +507,7 @@ var DateGreaterThan = class extends BaseFilterSpecification {
|
|
|
507
507
|
}
|
|
508
508
|
accept(v) {
|
|
509
509
|
v.dateGreaterThan(this);
|
|
510
|
-
return (0,
|
|
510
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
511
511
|
}
|
|
512
512
|
};
|
|
513
513
|
var DateLessThan = class extends BaseFilterSpecification {
|
|
@@ -519,7 +519,7 @@ var DateLessThan = class extends BaseFilterSpecification {
|
|
|
519
519
|
}
|
|
520
520
|
accept(v) {
|
|
521
521
|
v.dateLessThan(this);
|
|
522
|
-
return (0,
|
|
522
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
523
523
|
}
|
|
524
524
|
};
|
|
525
525
|
var DateGreaterThanOrEqual = class extends BaseFilterSpecification {
|
|
@@ -531,7 +531,7 @@ var DateGreaterThanOrEqual = class extends BaseFilterSpecification {
|
|
|
531
531
|
}
|
|
532
532
|
accept(v) {
|
|
533
533
|
v.dateGreaterThanOrEqual(this);
|
|
534
|
-
return (0,
|
|
534
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
535
535
|
}
|
|
536
536
|
};
|
|
537
537
|
var DateLessThanOrEqual = class extends BaseFilterSpecification {
|
|
@@ -543,7 +543,7 @@ var DateLessThanOrEqual = class extends BaseFilterSpecification {
|
|
|
543
543
|
}
|
|
544
544
|
accept(v) {
|
|
545
545
|
v.dateLessThanOrEqual(this);
|
|
546
|
-
return (0,
|
|
546
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
547
547
|
}
|
|
548
548
|
};
|
|
549
549
|
var DateIsToday = class extends BaseFilterSpecification {
|
|
@@ -554,7 +554,7 @@ var DateIsToday = class extends BaseFilterSpecification {
|
|
|
554
554
|
}
|
|
555
555
|
accept(v) {
|
|
556
556
|
v.dateIsToday(this);
|
|
557
|
-
return (0,
|
|
557
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
558
558
|
}
|
|
559
559
|
};
|
|
560
560
|
var DateIsTomorrow = class extends BaseFilterSpecification {
|
|
@@ -565,7 +565,7 @@ var DateIsTomorrow = class extends BaseFilterSpecification {
|
|
|
565
565
|
}
|
|
566
566
|
accept(v) {
|
|
567
567
|
v.dateIsTomorrow(this);
|
|
568
|
-
return (0,
|
|
568
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
569
569
|
}
|
|
570
570
|
};
|
|
571
571
|
var DateIsYesterday = class extends BaseFilterSpecification {
|
|
@@ -576,7 +576,7 @@ var DateIsYesterday = class extends BaseFilterSpecification {
|
|
|
576
576
|
}
|
|
577
577
|
accept(v) {
|
|
578
578
|
v.dateIsYesterday(this);
|
|
579
|
-
return (0,
|
|
579
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
580
580
|
}
|
|
581
581
|
};
|
|
582
582
|
var DateBetween = class extends BaseFilterSpecification {
|
|
@@ -597,7 +597,7 @@ var DateBetween = class extends BaseFilterSpecification {
|
|
|
597
597
|
}
|
|
598
598
|
accept(v) {
|
|
599
599
|
v.dateBetween(this);
|
|
600
|
-
return (0,
|
|
600
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
601
601
|
}
|
|
602
602
|
};
|
|
603
603
|
|
|
@@ -615,7 +615,7 @@ var NumberEqual = class extends BaseFilterSpecification {
|
|
|
615
615
|
}
|
|
616
616
|
accept(v) {
|
|
617
617
|
v.numberEqual(this);
|
|
618
|
-
return (0,
|
|
618
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
619
619
|
}
|
|
620
620
|
};
|
|
621
621
|
var NumberGreaterThan = class extends BaseFilterSpecification {
|
|
@@ -628,7 +628,7 @@ var NumberGreaterThan = class extends BaseFilterSpecification {
|
|
|
628
628
|
}
|
|
629
629
|
accept(v) {
|
|
630
630
|
v.numberGreaterThan(this);
|
|
631
|
-
return (0,
|
|
631
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
632
632
|
}
|
|
633
633
|
};
|
|
634
634
|
var NumberLessThan = class extends BaseFilterSpecification {
|
|
@@ -640,7 +640,7 @@ var NumberLessThan = class extends BaseFilterSpecification {
|
|
|
640
640
|
}
|
|
641
641
|
accept(v) {
|
|
642
642
|
v.numberLessThan(this);
|
|
643
|
-
return (0,
|
|
643
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
644
644
|
}
|
|
645
645
|
};
|
|
646
646
|
var NumberGreaterThanOrEqual = class extends BaseFilterSpecification {
|
|
@@ -653,7 +653,7 @@ var NumberGreaterThanOrEqual = class extends BaseFilterSpecification {
|
|
|
653
653
|
}
|
|
654
654
|
accept(v) {
|
|
655
655
|
v.numberGreaterThanOrEqual(this);
|
|
656
|
-
return (0,
|
|
656
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
657
657
|
}
|
|
658
658
|
};
|
|
659
659
|
var NumberLessThanOrEqual = class extends BaseFilterSpecification {
|
|
@@ -665,7 +665,7 @@ var NumberLessThanOrEqual = class extends BaseFilterSpecification {
|
|
|
665
665
|
}
|
|
666
666
|
accept(v) {
|
|
667
667
|
v.numberLessThanOrEqual(this);
|
|
668
|
-
return (0,
|
|
668
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
669
669
|
}
|
|
670
670
|
};
|
|
671
671
|
var NumberEmpty = class extends BaseFilterSpecification {
|
|
@@ -678,7 +678,7 @@ var NumberEmpty = class extends BaseFilterSpecification {
|
|
|
678
678
|
}
|
|
679
679
|
accept(v) {
|
|
680
680
|
v.numberEmpty(this);
|
|
681
|
-
return (0,
|
|
681
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
682
682
|
}
|
|
683
683
|
};
|
|
684
684
|
|
|
@@ -690,7 +690,7 @@ var StringEqual = class extends BaseFilterSpecification {
|
|
|
690
690
|
}
|
|
691
691
|
accept(v) {
|
|
692
692
|
v.stringEqual(this);
|
|
693
|
-
return (0,
|
|
693
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
694
694
|
}
|
|
695
695
|
};
|
|
696
696
|
var StringNotEqual = class extends BaseFilterSpecification {
|
|
@@ -699,7 +699,7 @@ var StringNotEqual = class extends BaseFilterSpecification {
|
|
|
699
699
|
}
|
|
700
700
|
accept(v) {
|
|
701
701
|
v.stringNotEqual(this);
|
|
702
|
-
return (0,
|
|
702
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
703
703
|
}
|
|
704
704
|
};
|
|
705
705
|
var StringContain = class extends BaseFilterSpecification {
|
|
@@ -711,7 +711,7 @@ var StringContain = class extends BaseFilterSpecification {
|
|
|
711
711
|
}
|
|
712
712
|
accept(v) {
|
|
713
713
|
v.stringContain(this);
|
|
714
|
-
return (0,
|
|
714
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
715
715
|
}
|
|
716
716
|
};
|
|
717
717
|
var StringStartsWith = class extends BaseFilterSpecification {
|
|
@@ -723,7 +723,7 @@ var StringStartsWith = class extends BaseFilterSpecification {
|
|
|
723
723
|
}
|
|
724
724
|
accept(v) {
|
|
725
725
|
v.stringStartsWith(this);
|
|
726
|
-
return (0,
|
|
726
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
727
727
|
}
|
|
728
728
|
};
|
|
729
729
|
var StringEndsWith = class extends BaseFilterSpecification {
|
|
@@ -735,7 +735,7 @@ var StringEndsWith = class extends BaseFilterSpecification {
|
|
|
735
735
|
}
|
|
736
736
|
accept(v) {
|
|
737
737
|
v.stringEndsWith(this);
|
|
738
|
-
return (0,
|
|
738
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
739
739
|
}
|
|
740
740
|
};
|
|
741
741
|
var StringRegex = class extends BaseFilterSpecification {
|
|
@@ -747,7 +747,7 @@ var StringRegex = class extends BaseFilterSpecification {
|
|
|
747
747
|
}
|
|
748
748
|
accept(v) {
|
|
749
749
|
v.stringRegex(this);
|
|
750
|
-
return (0,
|
|
750
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
751
751
|
}
|
|
752
752
|
};
|
|
753
753
|
var StringEmpty = class extends BaseFilterSpecification {
|
|
@@ -760,7 +760,7 @@ var StringEmpty = class extends BaseFilterSpecification {
|
|
|
760
760
|
}
|
|
761
761
|
accept(v) {
|
|
762
762
|
v.stringEmpty(this);
|
|
763
|
-
return (0,
|
|
763
|
+
return (0, _globalart_oxide.Ok)(void 0);
|
|
764
764
|
}
|
|
765
765
|
};
|
|
766
766
|
|
|
@@ -768,13 +768,13 @@ var StringEmpty = class extends BaseFilterSpecification {
|
|
|
768
768
|
//#region src/filter/filter.ts
|
|
769
769
|
const filterRootFilter = (filters) => {
|
|
770
770
|
const filterTuple = [filters[0], ...filters.slice(1)];
|
|
771
|
-
const filter
|
|
772
|
-
const group
|
|
771
|
+
const filter = zod.z.union(filterTuple);
|
|
772
|
+
const group = zod.z.lazy(() => zod.z.object({
|
|
773
773
|
conjunction: conjunctions,
|
|
774
|
-
children: zod.z.union([group
|
|
774
|
+
children: zod.z.union([group, filter]).array().nonempty().optional()
|
|
775
775
|
}));
|
|
776
|
-
const filterOrGroupList
|
|
777
|
-
return group
|
|
776
|
+
const filterOrGroupList = filter.or(group).array();
|
|
777
|
+
return group.or(filterOrGroupList);
|
|
778
778
|
};
|
|
779
779
|
const filter = zod.z.discriminatedUnion("type", [
|
|
780
780
|
numberFilter,
|
|
@@ -789,74 +789,74 @@ const group = zod.z.lazy(() => zod.z.object({
|
|
|
789
789
|
const filterOrGroup = filter.or(group);
|
|
790
790
|
const filterOrGroupList = filterOrGroup.array();
|
|
791
791
|
const rootFilter = filterOrGroup.or(filterOrGroupList);
|
|
792
|
-
const isGroup = (filterOrGroup
|
|
793
|
-
return Reflect.has(filterOrGroup
|
|
792
|
+
const isGroup = (filterOrGroup) => {
|
|
793
|
+
return Reflect.has(filterOrGroup, "conjunction");
|
|
794
794
|
};
|
|
795
|
-
const isFilter = (filterOrGroup
|
|
796
|
-
return Reflect.has(filterOrGroup
|
|
795
|
+
const isFilter = (filterOrGroup) => {
|
|
796
|
+
return Reflect.has(filterOrGroup, "type") && Reflect.has(filterOrGroup, "operator");
|
|
797
797
|
};
|
|
798
798
|
const operators = zod.z.union([numberFilterOperators, stringFilterOperators]);
|
|
799
799
|
const operatorsMap = { number: numberFilterOperators.options.map((v) => v.value) };
|
|
800
|
-
const convertStringFilter = (filter
|
|
801
|
-
if (filter
|
|
802
|
-
switch (filter
|
|
803
|
-
case "$eq": return (0,
|
|
804
|
-
case "$neq": return (0,
|
|
805
|
-
case "$contains": return (0,
|
|
806
|
-
case "$not_contains": return (0,
|
|
807
|
-
case "$starts_with": return (0,
|
|
808
|
-
case "$ends_with": return (0,
|
|
809
|
-
case "$regex": return (0,
|
|
810
|
-
case "$is_empty": return (0,
|
|
811
|
-
case "$is_not_empty": return (0,
|
|
812
|
-
default: return
|
|
813
|
-
}
|
|
814
|
-
};
|
|
815
|
-
const convertNumberFilter = (filter
|
|
816
|
-
if (filter
|
|
817
|
-
switch (filter
|
|
818
|
-
case "$eq": return (0,
|
|
819
|
-
case "$neq": return (0,
|
|
820
|
-
case "$gt": return (0,
|
|
821
|
-
case "$gte": return (0,
|
|
822
|
-
case "$lt": return (0,
|
|
823
|
-
case "$lte": return (0,
|
|
824
|
-
case "$is_empty": return (0,
|
|
825
|
-
case "$is_not_empty": return (0,
|
|
826
|
-
default: return
|
|
827
|
-
}
|
|
828
|
-
};
|
|
829
|
-
const convertBooleanFilter = (filter
|
|
830
|
-
if (filter
|
|
831
|
-
switch (filter
|
|
832
|
-
case "$eq": return (0,
|
|
833
|
-
case "$neq": return (0,
|
|
834
|
-
}
|
|
835
|
-
return (0,
|
|
836
|
-
};
|
|
837
|
-
const convertDateFilter = (filter
|
|
838
|
-
if (filter
|
|
839
|
-
switch (filter
|
|
840
|
-
case "$eq": return (0,
|
|
841
|
-
case "$between": return (0,
|
|
842
|
-
}
|
|
843
|
-
return
|
|
844
|
-
};
|
|
845
|
-
const convertFilter = (filter
|
|
846
|
-
return (0, ts_pattern.match)(filter
|
|
847
|
-
};
|
|
848
|
-
const convertFilterOrGroup = (filterOrGroup
|
|
849
|
-
if (isGroup(filterOrGroup
|
|
850
|
-
else if (isFilter(filterOrGroup
|
|
851
|
-
return
|
|
852
|
-
};
|
|
853
|
-
const convertFilterOrGroupList = (filterOrGroupList
|
|
854
|
-
let spec =
|
|
855
|
-
for (const filter
|
|
856
|
-
spec = convertFilterOrGroup(filter
|
|
800
|
+
const convertStringFilter = (filter) => {
|
|
801
|
+
if (filter.value === void 0) return _globalart_oxide.None;
|
|
802
|
+
switch (filter.operator) {
|
|
803
|
+
case "$eq": return (0, _globalart_oxide.Some)(new StringEqual(filter.field, new StringFieldValue(filter.value), filter.relation));
|
|
804
|
+
case "$neq": return (0, _globalart_oxide.Some)(new StringNotEqual(filter.field, new StringFieldValue(filter.value), filter.relation));
|
|
805
|
+
case "$contains": return (0, _globalart_oxide.Some)(new StringContain(filter.field, new StringFieldValue(filter.value)));
|
|
806
|
+
case "$not_contains": return (0, _globalart_oxide.Some)(new StringContain(filter.field, new StringFieldValue(filter.value)).not());
|
|
807
|
+
case "$starts_with": return (0, _globalart_oxide.Some)(new StringStartsWith(filter.field, new StringFieldValue(filter.value)));
|
|
808
|
+
case "$ends_with": return (0, _globalart_oxide.Some)(new StringEndsWith(filter.field, new StringFieldValue(filter.value)));
|
|
809
|
+
case "$regex": return (0, _globalart_oxide.Some)(new StringRegex(filter.field, new StringFieldValue(filter.value)));
|
|
810
|
+
case "$is_empty": return (0, _globalart_oxide.Some)(new StringEmpty(filter.field));
|
|
811
|
+
case "$is_not_empty": return (0, _globalart_oxide.Some)(new StringEmpty(filter.field).not());
|
|
812
|
+
default: return _globalart_oxide.None;
|
|
813
|
+
}
|
|
814
|
+
};
|
|
815
|
+
const convertNumberFilter = (filter) => {
|
|
816
|
+
if (filter === void 0) return _globalart_oxide.None;
|
|
817
|
+
switch (filter.operator) {
|
|
818
|
+
case "$eq": return (0, _globalart_oxide.Some)(new NumberEqual(filter.field, new NumberFieldValue(filter.value)));
|
|
819
|
+
case "$neq": return (0, _globalart_oxide.Some)(new NumberEqual(filter.field, new NumberFieldValue(filter.value)).not());
|
|
820
|
+
case "$gt": return (0, _globalart_oxide.Some)(new NumberGreaterThan(filter.field, new NumberFieldValue(filter.value)));
|
|
821
|
+
case "$gte": return (0, _globalart_oxide.Some)(new NumberGreaterThanOrEqual(filter.field, new NumberFieldValue(filter.value)));
|
|
822
|
+
case "$lt": return (0, _globalart_oxide.Some)(new NumberLessThan(filter.field, new NumberFieldValue(filter.value)));
|
|
823
|
+
case "$lte": return (0, _globalart_oxide.Some)(new NumberLessThanOrEqual(filter.field, new NumberFieldValue(filter.value)));
|
|
824
|
+
case "$is_empty": return (0, _globalart_oxide.Some)(new NumberEmpty(filter.field));
|
|
825
|
+
case "$is_not_empty": return (0, _globalart_oxide.Some)(new NumberEmpty(filter.field).not());
|
|
826
|
+
default: return _globalart_oxide.None;
|
|
827
|
+
}
|
|
828
|
+
};
|
|
829
|
+
const convertBooleanFilter = (filter) => {
|
|
830
|
+
if (filter === void 0) return _globalart_oxide.None;
|
|
831
|
+
switch (filter.operator) {
|
|
832
|
+
case "$eq": return (0, _globalart_oxide.Some)(new BooleanEqual(filter.field, new BooleanFieldValue(filter.value)));
|
|
833
|
+
case "$neq": return (0, _globalart_oxide.Some)(new BooleanNotEqual(filter.field, new BooleanFieldValue(filter.value)));
|
|
834
|
+
}
|
|
835
|
+
return (0, _globalart_oxide.Some)(new BooleanEqual(filter.field, new BooleanFieldValue(filter.value)));
|
|
836
|
+
};
|
|
837
|
+
const convertDateFilter = (filter) => {
|
|
838
|
+
if (filter === void 0) return _globalart_oxide.None;
|
|
839
|
+
switch (filter.operator) {
|
|
840
|
+
case "$eq": return (0, _globalart_oxide.Some)(new DateEqual(filter.field, DateFieldValue.fromNullableString(filter.value), filter.relation));
|
|
841
|
+
case "$between": return (0, _globalart_oxide.Some)(new DateBetween(filter.field, new Date(filter.value[0]), new Date(filter.value[1])));
|
|
842
|
+
}
|
|
843
|
+
return _globalart_oxide.None;
|
|
844
|
+
};
|
|
845
|
+
const convertFilter = (filter) => {
|
|
846
|
+
return (0, ts_pattern.match)(filter).returnType().with({ type: "number" }, (f) => convertNumberFilter(f)).with({ type: "string" }, (f) => convertStringFilter(f)).with({ type: "date" }, (f) => convertDateFilter(f)).with({ type: "boolean" }, (f) => convertBooleanFilter(f)).otherwise(() => _globalart_oxide.None);
|
|
847
|
+
};
|
|
848
|
+
const convertFilterOrGroup = (filterOrGroup) => {
|
|
849
|
+
if (isGroup(filterOrGroup)) return convertFilterOrGroupList(filterOrGroup.children, filterOrGroup.conjunction);
|
|
850
|
+
else if (isFilter(filterOrGroup)) return convertFilter(filterOrGroup);
|
|
851
|
+
return _globalart_oxide.None;
|
|
852
|
+
};
|
|
853
|
+
const convertFilterOrGroupList = (filterOrGroupList = [], conjunction = "$and") => {
|
|
854
|
+
let spec = _globalart_oxide.None;
|
|
855
|
+
for (const filter of filterOrGroupList) if (spec.isNone()) {
|
|
856
|
+
spec = convertFilterOrGroup(filter);
|
|
857
857
|
if (conjunction === "$not") return spec.map((s) => s.not());
|
|
858
|
-
} else if (isFilter(filter
|
|
859
|
-
const right = convertFilterOrGroup(filter
|
|
858
|
+
} else if (isFilter(filter)) spec = spec.map((left) => {
|
|
859
|
+
const right = convertFilterOrGroup(filter);
|
|
860
860
|
if (right.isSome()) {
|
|
861
861
|
if (conjunction === "$and") return left.and(right.unwrap());
|
|
862
862
|
else if (conjunction === "$or") return left.or(right.unwrap());
|
|
@@ -864,12 +864,12 @@ const convertFilterOrGroupList = (filterOrGroupList$1 = [], conjunction = "$and"
|
|
|
864
864
|
}
|
|
865
865
|
return left;
|
|
866
866
|
});
|
|
867
|
-
else if (isGroup(filter
|
|
867
|
+
else if (isGroup(filter)) spec = convertFilterOrGroupList(filter.children, filter.conjunction);
|
|
868
868
|
return spec;
|
|
869
869
|
};
|
|
870
|
-
const convertFilterSpec = (filter
|
|
871
|
-
if (Array.isArray(filter
|
|
872
|
-
return convertFilterOrGroup(filter
|
|
870
|
+
const convertFilterSpec = (filter) => {
|
|
871
|
+
if (Array.isArray(filter)) return convertFilterOrGroupList(filter);
|
|
872
|
+
return convertFilterOrGroup(filter);
|
|
873
873
|
};
|
|
874
874
|
function isEmptyNative(value) {
|
|
875
875
|
if (value == null) return true;
|
|
@@ -880,7 +880,7 @@ function isEmptyNative(value) {
|
|
|
880
880
|
}
|
|
881
881
|
return false;
|
|
882
882
|
}
|
|
883
|
-
const isEmptyFilter = (filter
|
|
883
|
+
const isEmptyFilter = (filter) => isEmptyNative(filter);
|
|
884
884
|
|
|
885
885
|
//#endregion
|
|
886
886
|
//#region src/filter/root-filter.ts
|