@@ -651,10 +651,10 @@ function transformTopLevelAtom(atom, field) {
651
651
// If it is not a valid constraint but it could be a valid something
652
652
// else, return CannotTransform.
653
653
// inArray is whether this is an array field.
654
- function transformConstraint ( constraint , field , key , count = false ) {
654
+ function transformConstraint ( constraint , field , queryKey , count = false ) {
655
655
const inArray = field && field . type && field . type === 'Array' ;
656
656
// Check wether the given key has `.`
657
- const isNestedKey = key . indexOf ( '.' ) > - 1 ;
657
+ const isNestedKey = queryKey . indexOf ( '.' ) > - 1 ;
658
658
if ( typeof constraint !== 'object' || ! constraint ) {
659
659
return CannotTransform ;
660
660
}
@@ -671,18 +671,18 @@ function transformConstraint(constraint, field, key, count = false) {
671
671
// This is a hack so that:
672
672
// $regex is handled before $options
673
673
// $nearSphere is handled before $maxDistance
674
- var constraintKeys = Object . keys ( constraint ) . sort ( ) . reverse ( ) ;
674
+ var keys = Object . keys ( constraint ) . sort ( ) . reverse ( ) ;
675
675
var answer = { } ;
676
- for ( var constraintKey of constraintKeys ) {
677
- switch ( constraintKey ) {
676
+ for ( var key of keys ) {
677
+ switch ( key ) {
678
678
case '$lt' :
679
679
case '$lte' :
680
680
case '$gt' :
681
681
case '$gte' :
682
682
case '$exists' :
683
683
case '$ne' :
684
684
case '$eq' : {
685
- const val = constraint [ constraintKey ] ;
685
+ const val = constraint [ key ] ;
686
686
if ( val && typeof val === 'object' && val . $relativeTime ) {
687
687
if ( field && field . type !== 'Date' ) {
688
688
throw new Parse . Error (
@@ -691,7 +691,7 @@ function transformConstraint(constraint, field, key, count = false) {
691
691
) ;
692
692
}
693
693
694
- switch ( constraintKey ) {
694
+ switch ( key ) {
695
695
case '$exists' :
696
696
case '$ne' :
697
697
case '$eq' :
@@ -703,28 +703,28 @@ function transformConstraint(constraint, field, key, count = false) {
703
703
704
704
const parserResult = Utils . relativeTimeToDate ( val . $relativeTime ) ;
705
705
if ( parserResult . status === 'success' ) {
706
- answer [ constraintKey ] = parserResult . result ;
706
+ answer [ key ] = parserResult . result ;
707
707
break ;
708
708
}
709
709
710
710
log . info ( 'Error while parsing relative date' , parserResult ) ;
711
711
throw new Parse . Error (
712
712
Parse . Error . INVALID_JSON ,
713
- `bad $relativeTime (${ constraintKey } ) value. ${ parserResult . info } `
713
+ `bad $relativeTime (${ key } ) value. ${ parserResult . info } `
714
714
) ;
715
715
}
716
716
717
- answer [ constraintKey ] = transformer ( val ) ;
717
+ answer [ key ] = transformer ( val ) ;
718
718
break ;
719
719
}
720
720
721
721
case '$in' :
722
722
case '$nin' : {
723
- const arr = constraint [ constraintKey ] ;
723
+ const arr = constraint [ key ] ;
724
724
if ( ! ( arr instanceof Array ) ) {
725
- throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad ' + constraintKey + ' value' ) ;
725
+ throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad ' + key + ' value' ) ;
726
726
}
727
- answer [ constraintKey ] = _ . flatMap ( arr , value => {
727
+ answer [ key ] = _ . flatMap ( arr , value => {
728
728
return ( atom => {
729
729
if ( Array . isArray ( atom ) ) {
730
730
return value . map ( transformer ) ;
@@ -736,13 +736,13 @@ function transformConstraint(constraint, field, key, count = false) {
736
736
break ;
737
737
}
738
738
case '$all' : {
739
- const arr = constraint [ constraintKey ] ;
739
+ const arr = constraint [ key ] ;
740
740
if ( ! ( arr instanceof Array ) ) {
741
- throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad ' + constraintKey + ' value' ) ;
741
+ throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad ' + key + ' value' ) ;
742
742
}
743
- answer [ constraintKey ] = arr . map ( transformInteriorAtom ) ;
743
+ answer [ key ] = arr . map ( transformInteriorAtom ) ;
744
744
745
- const values = answer [ constraintKey ] ;
745
+ const values = answer [ key ] ;
746
746
if ( isAnyValueRegex ( values ) && ! isAllValuesRegexOrNone ( values ) ) {
747
747
throw new Parse . Error (
748
748
Parse . Error . INVALID_JSON ,
@@ -753,15 +753,15 @@ function transformConstraint(constraint, field, key, count = false) {
753
753
break ;
754
754
}
755
755
case '$regex' :
756
- var s = constraint [ constraintKey ] ;
756
+ var s = constraint [ key ] ;
757
757
if ( typeof s !== 'string' ) {
758
758
throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad regex: ' + s ) ;
759
759
}
760
- answer [ constraintKey ] = s ;
760
+ answer [ key ] = s ;
761
761
break ;
762
762
763
763
case '$containedBy' : {
764
- const arr = constraint [ constraintKey ] ;
764
+ const arr = constraint [ key ] ;
765
765
if ( ! ( arr instanceof Array ) ) {
766
766
throw new Parse . Error ( Parse . Error . INVALID_JSON , `bad $containedBy: should be an array` ) ;
767
767
}
@@ -771,87 +771,87 @@ function transformConstraint(constraint, field, key, count = false) {
771
771
break ;
772
772
}
773
773
case '$options' :
774
- answer [ constraintKey ] = constraint [ constraintKey ] ;
774
+ answer [ key ] = constraint [ key ] ;
775
775
break ;
776
776
777
777
case '$text' : {
778
- const search = constraint [ constraintKey ] . $search ;
778
+ const search = constraint [ key ] . $search ;
779
779
if ( typeof search !== 'object' ) {
780
780
throw new Parse . Error ( Parse . Error . INVALID_JSON , `bad $text: $search, should be object` ) ;
781
781
}
782
782
if ( ! search . $term || typeof search . $term !== 'string' ) {
783
783
throw new Parse . Error ( Parse . Error . INVALID_JSON , `bad $text: $term, should be string` ) ;
784
784
} else {
785
- answer [ constraintKey ] = {
785
+ answer [ key ] = {
786
786
$search : search . $term ,
787
787
} ;
788
788
}
789
789
if ( search . $language && typeof search . $language !== 'string' ) {
790
790
throw new Parse . Error ( Parse . Error . INVALID_JSON , `bad $text: $language, should be string` ) ;
791
791
} else if ( search . $language ) {
792
- answer [ constraintKey ] . $language = search . $language ;
792
+ answer [ key ] . $language = search . $language ;
793
793
}
794
794
if ( search . $caseSensitive && typeof search . $caseSensitive !== 'boolean' ) {
795
795
throw new Parse . Error (
796
796
Parse . Error . INVALID_JSON ,
797
797
`bad $text: $caseSensitive, should be boolean`
798
798
) ;
799
799
} else if ( search . $caseSensitive ) {
800
- answer [ constraintKey ] . $caseSensitive = search . $caseSensitive ;
800
+ answer [ key ] . $caseSensitive = search . $caseSensitive ;
801
801
}
802
802
if ( search . $diacriticSensitive && typeof search . $diacriticSensitive !== 'boolean' ) {
803
803
throw new Parse . Error (
804
804
Parse . Error . INVALID_JSON ,
805
805
`bad $text: $diacriticSensitive, should be boolean`
806
806
) ;
807
807
} else if ( search . $diacriticSensitive ) {
808
- answer [ constraintKey ] . $diacriticSensitive = search . $diacriticSensitive ;
808
+ answer [ key ] . $diacriticSensitive = search . $diacriticSensitive ;
809
809
}
810
810
break ;
811
811
}
812
812
case '$nearSphere' : {
813
- const point = constraint [ constraintKey ] ;
813
+ const point = constraint [ key ] ;
814
814
if ( count ) {
815
815
answer . $geoWithin = {
816
816
$centerSphere : [ [ point . longitude , point . latitude ] , constraint . $maxDistance ] ,
817
817
} ;
818
818
} else {
819
- answer [ constraintKey ] = [ point . longitude , point . latitude ] ;
819
+ answer [ key ] = [ point . longitude , point . latitude ] ;
820
820
}
821
821
break ;
822
822
}
823
823
case '$maxDistance' : {
824
824
if ( count ) {
825
825
break ;
826
826
}
827
- answer [ constraintKey ] = constraint [ constraintKey ] ;
827
+ answer [ key ] = constraint [ key ] ;
828
828
break ;
829
829
}
830
830
// The SDKs don't seem to use these but they are documented in the
831
831
// REST API docs.
832
832
case '$maxDistanceInRadians' :
833
- answer [ '$maxDistance' ] = constraint [ constraintKey ] ;
833
+ answer [ '$maxDistance' ] = constraint [ key ] ;
834
834
break ;
835
835
case '$maxDistanceInMiles' :
836
- answer [ '$maxDistance' ] = constraint [ constraintKey ] / 3959 ;
836
+ answer [ '$maxDistance' ] = constraint [ key ] / 3959 ;
837
837
break ;
838
838
case '$maxDistanceInKilometers' :
839
- answer [ '$maxDistance' ] = constraint [ constraintKey ] / 6371 ;
839
+ answer [ '$maxDistance' ] = constraint [ key ] / 6371 ;
840
840
break ;
841
841
842
842
case '$select' :
843
843
case '$dontSelect' :
844
844
throw new Parse . Error (
845
845
Parse . Error . COMMAND_UNAVAILABLE ,
846
- 'the ' + constraintKey + ' constraint is not supported yet'
846
+ 'the ' + key + ' constraint is not supported yet'
847
847
) ;
848
848
849
849
case '$within' :
850
- var box = constraint [ constraintKey ] [ '$box' ] ;
850
+ var box = constraint [ key ] [ '$box' ] ;
851
851
if ( ! box || box . length != 2 ) {
852
852
throw new Parse . Error ( Parse . Error . INVALID_JSON , 'malformatted $within arg' ) ;
853
853
}
854
- answer [ constraintKey ] = {
854
+ answer [ key ] = {
855
855
$box : [
856
856
[ box [ 0 ] . longitude , box [ 0 ] . latitude ] ,
857
857
[ box [ 1 ] . longitude , box [ 1 ] . latitude ] ,
@@ -860,8 +860,8 @@ function transformConstraint(constraint, field, key, count = false) {
860
860
break ;
861
861
862
862
case '$geoWithin' : {
863
- const polygon = constraint [ constraintKey ] [ '$polygon' ] ;
864
- const centerSphere = constraint [ constraintKey ] [ '$centerSphere' ] ;
863
+ const polygon = constraint [ key ] [ '$polygon' ] ;
864
+ const centerSphere = constraint [ key ] [ '$centerSphere' ] ;
865
865
if ( polygon !== undefined ) {
866
866
let points ;
867
867
if ( typeof polygon === 'object' && polygon . __type === 'Polygon' ) {
@@ -898,7 +898,7 @@ function transformConstraint(constraint, field, key, count = false) {
898
898
}
899
899
return [ point . longitude , point . latitude ] ;
900
900
} ) ;
901
- answer [ constraintKey ] = {
901
+ answer [ key ] = {
902
902
$polygon : points ,
903
903
} ;
904
904
} else if ( centerSphere !== undefined ) {
@@ -927,14 +927,14 @@ function transformConstraint(constraint, field, key, count = false) {
927
927
'bad $geoWithin value; $centerSphere distance invalid'
928
928
) ;
929
929
}
930
- answer [ constraintKey ] = {
930
+ answer [ key ] = {
931
931
$centerSphere : [ [ point . longitude , point . latitude ] , distance ] ,
932
932
} ;
933
933
}
934
934
break ;
935
935
}
936
936
case '$geoIntersects' : {
937
- const point = constraint [ constraintKey ] [ '$point' ] ;
937
+ const point = constraint [ key ] [ '$point' ] ;
938
938
if ( ! GeoPointCoder . isValidJSON ( point ) ) {
939
939
throw new Parse . Error (
940
940
Parse . Error . INVALID_JSON ,
@@ -943,7 +943,7 @@ function transformConstraint(constraint, field, key, count = false) {
943
943
} else {
944
944
Parse . GeoPoint . _validate ( point . latitude , point . longitude ) ;
945
945
}
946
- answer [ constraintKey ] = {
946
+ answer [ key ] = {
947
947
$geometry : {
948
948
type : 'Point' ,
949
949
coordinates : [ point . longitude , point . latitude ] ,
@@ -952,8 +952,8 @@ function transformConstraint(constraint, field, key, count = false) {
952
952
break ;
953
953
}
954
954
default :
955
- if ( constraintKey . match ( / ^ \$ + / ) ) {
956
- throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad constraint: ' + constraintKey ) ;
955
+ if ( key . match ( / ^ \$ + / ) ) {
956
+ throw new Parse . Error ( Parse . Error . INVALID_JSON , 'bad constraint: ' + key ) ;
957
957
}
958
958
return CannotTransform ;
959
959
}
0 commit comments