@jarenjs/json 0.46.5 → 0.49.2
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/ARCHITECTURE.md +1 -1
- package/README.md +47 -4
- package/dist/types/query/operators.d.ts +42 -0
- package/dist/types/query/series.d.ts +164 -0
- package/docs/QUERY-FORMAT.md +172 -4
- package/package.json +2 -2
- package/schemas/jaren-jslt.draft-07.schema.json +236 -0
- package/schemas/jaren-jslt.llm-profile.schema.json +229 -0
- package/schemas/jaren-jslt.schema.json +236 -0
- package/schemas/jaren-query.draft-07.schema.json +236 -0
- package/schemas/jaren-query.llm-profile.schema.json +229 -0
- package/schemas/jaren-query.schema.json +122 -2
- package/src/query/normalize.js +44 -1
- package/src/query/operators.js +332 -3
- package/src/query/series.js +415 -0
|
@@ -286,6 +286,15 @@
|
|
|
286
286
|
{
|
|
287
287
|
"$ref": "#/$defs/schemaOperatorPhrase"
|
|
288
288
|
},
|
|
289
|
+
{
|
|
290
|
+
"$ref": "#/$defs/seriesSpecPhrase"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"$ref": "#/$defs/asOfPhrase"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"$ref": "#/$defs/timeBucketPhrase"
|
|
297
|
+
},
|
|
289
298
|
{
|
|
290
299
|
"$ref": "#/$defs/applyPhrase"
|
|
291
300
|
}
|
|
@@ -667,6 +676,7 @@
|
|
|
667
676
|
"$bbox-intersects",
|
|
668
677
|
"$geo-simplify",
|
|
669
678
|
"$similarity",
|
|
679
|
+
"$overlaps",
|
|
670
680
|
"$default"
|
|
671
681
|
]
|
|
672
682
|
},
|
|
@@ -918,6 +928,232 @@
|
|
|
918
928
|
"$geohash"
|
|
919
929
|
],
|
|
920
930
|
"additionalProperties": false
|
|
931
|
+
},
|
|
932
|
+
"seriesSpec": {
|
|
933
|
+
"description": "A $resample or $rolling spec (QUERY-FORMAT.md section 8.16): a VERBATIM literal, never an expression, so the width, the aggregate, the fill policy, the wall clock and the row selectors are read once when the query compiles. Closed: an unknown member is JQ0003. 'every'/'width' is an ISO 8601 duration or a count of milliseconds; 'origin'/'start'/'end' are epoch milliseconds or an RFC 3339 string; 'at'/'value' are singular paths where '$' reads as the ROW. A named 'zone' needs an injected zoneProvider - this suite bundles no time-zone database.",
|
|
934
|
+
"type": "object",
|
|
935
|
+
"properties": {
|
|
936
|
+
"every": {
|
|
937
|
+
"$ref": "#/$defs/seriesSpan"
|
|
938
|
+
},
|
|
939
|
+
"width": {
|
|
940
|
+
"$ref": "#/$defs/seriesSpan"
|
|
941
|
+
},
|
|
942
|
+
"origin": {
|
|
943
|
+
"$ref": "#/$defs/seriesInstant"
|
|
944
|
+
},
|
|
945
|
+
"start": {
|
|
946
|
+
"$ref": "#/$defs/seriesInstant"
|
|
947
|
+
},
|
|
948
|
+
"end": {
|
|
949
|
+
"$ref": "#/$defs/seriesInstant"
|
|
950
|
+
},
|
|
951
|
+
"aggregate": {
|
|
952
|
+
"enum": [
|
|
953
|
+
"sum",
|
|
954
|
+
"mean",
|
|
955
|
+
"min",
|
|
956
|
+
"max",
|
|
957
|
+
"first",
|
|
958
|
+
"last",
|
|
959
|
+
"count"
|
|
960
|
+
]
|
|
961
|
+
},
|
|
962
|
+
"fill": {
|
|
963
|
+
"enum": [
|
|
964
|
+
"omit",
|
|
965
|
+
"null",
|
|
966
|
+
"zero",
|
|
967
|
+
"locf",
|
|
968
|
+
"linear"
|
|
969
|
+
]
|
|
970
|
+
},
|
|
971
|
+
"minPeriods": {
|
|
972
|
+
"type": "integer",
|
|
973
|
+
"minimum": 1
|
|
974
|
+
},
|
|
975
|
+
"at": {
|
|
976
|
+
"$ref": "#/$defs/rowSelector"
|
|
977
|
+
},
|
|
978
|
+
"value": {
|
|
979
|
+
"$ref": "#/$defs/rowSelector"
|
|
980
|
+
},
|
|
981
|
+
"zone": {
|
|
982
|
+
"type": "string",
|
|
983
|
+
"minLength": 1
|
|
984
|
+
},
|
|
985
|
+
"offset": {
|
|
986
|
+
"type": "number"
|
|
987
|
+
},
|
|
988
|
+
"disambiguation": {
|
|
989
|
+
"enum": [
|
|
990
|
+
"reject",
|
|
991
|
+
"earlier",
|
|
992
|
+
"later"
|
|
993
|
+
]
|
|
994
|
+
}
|
|
995
|
+
},
|
|
996
|
+
"additionalProperties": false
|
|
997
|
+
},
|
|
998
|
+
"seriesSpan": {
|
|
999
|
+
"description": "A width: an ISO 8601 duration string ('PT1H', 'P1M') or a count of milliseconds. A duration mixing the calendar and clock families ('P1MT1H') is refused by the compiler.",
|
|
1000
|
+
"anyOf": [
|
|
1001
|
+
{
|
|
1002
|
+
"type": "string",
|
|
1003
|
+
"minLength": 1
|
|
1004
|
+
},
|
|
1005
|
+
{
|
|
1006
|
+
"type": "number",
|
|
1007
|
+
"exclusiveMinimum": 0
|
|
1008
|
+
}
|
|
1009
|
+
]
|
|
1010
|
+
},
|
|
1011
|
+
"seriesInstant": {
|
|
1012
|
+
"description": "An instant: epoch milliseconds, or an RFC 3339 string. A full-time names no instant and is refused by the compiler.",
|
|
1013
|
+
"anyOf": [
|
|
1014
|
+
{
|
|
1015
|
+
"type": "number"
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
"type": "string",
|
|
1019
|
+
"minLength": 1
|
|
1020
|
+
}
|
|
1021
|
+
]
|
|
1022
|
+
},
|
|
1023
|
+
"rowSelector": {
|
|
1024
|
+
"description": "Where a member lives in a source row: a singular JSONPath whose '$' is the ROW rather than the document ('$.on', \"$['recorded at']\", '$.meta.at'). Wildcards, descendants and filters are refused (JQ0003) - a selector names one member.",
|
|
1025
|
+
"type": "string",
|
|
1026
|
+
"pattern": "^\\$[.\\[]"
|
|
1027
|
+
},
|
|
1028
|
+
"seriesSpecPhrase": {
|
|
1029
|
+
"description": "$resample / $rolling [series, spec]: an operand expression and a VERBATIM spec literal. $resample returns sorted {at, value, count} buckets one per 'every'; $rolling returns one row per input instant over a window measured in time.",
|
|
1030
|
+
"type": "object",
|
|
1031
|
+
"minProperties": 1,
|
|
1032
|
+
"maxProperties": 1,
|
|
1033
|
+
"propertyNames": {
|
|
1034
|
+
"enum": [
|
|
1035
|
+
"$resample",
|
|
1036
|
+
"$rolling"
|
|
1037
|
+
]
|
|
1038
|
+
},
|
|
1039
|
+
"additionalProperties": {
|
|
1040
|
+
"type": "array",
|
|
1041
|
+
"prefixItems": [
|
|
1042
|
+
{
|
|
1043
|
+
"$ref": "#/$defs/expression"
|
|
1044
|
+
},
|
|
1045
|
+
{
|
|
1046
|
+
"$ref": "#/$defs/seriesSpec"
|
|
1047
|
+
}
|
|
1048
|
+
],
|
|
1049
|
+
"items": false,
|
|
1050
|
+
"minItems": 2,
|
|
1051
|
+
"maxItems": 2
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
"asOfSpec": {
|
|
1055
|
+
"description": "The $asof spec (QUERY-FORMAT.md section 8.16): a VERBATIM literal. 'by' joins within groups; 'leftAt'/'rightAt' say where each side keeps its instant when the two documents spell it differently. Closed: an unknown member is JQ0003.",
|
|
1056
|
+
"type": "object",
|
|
1057
|
+
"properties": {
|
|
1058
|
+
"direction": {
|
|
1059
|
+
"enum": [
|
|
1060
|
+
"backward",
|
|
1061
|
+
"forward",
|
|
1062
|
+
"nearest"
|
|
1063
|
+
]
|
|
1064
|
+
},
|
|
1065
|
+
"tolerance": {
|
|
1066
|
+
"$ref": "#/$defs/seriesSpan"
|
|
1067
|
+
},
|
|
1068
|
+
"by": {
|
|
1069
|
+
"$ref": "#/$defs/rowSelector"
|
|
1070
|
+
},
|
|
1071
|
+
"leftAt": {
|
|
1072
|
+
"$ref": "#/$defs/rowSelector"
|
|
1073
|
+
},
|
|
1074
|
+
"rightAt": {
|
|
1075
|
+
"$ref": "#/$defs/rowSelector"
|
|
1076
|
+
}
|
|
1077
|
+
},
|
|
1078
|
+
"additionalProperties": false
|
|
1079
|
+
},
|
|
1080
|
+
"asOfPhrase": {
|
|
1081
|
+
"description": "$asof [left, right] or [left, right, spec]: two operand expressions and an optional VERBATIM spec literal. Answers one {left, right, distance} per left row; a left row with no match keeps right: null and stays in the answer.",
|
|
1082
|
+
"type": "object",
|
|
1083
|
+
"properties": {
|
|
1084
|
+
"$asof": {
|
|
1085
|
+
"type": "array",
|
|
1086
|
+
"prefixItems": [
|
|
1087
|
+
{
|
|
1088
|
+
"$ref": "#/$defs/expression"
|
|
1089
|
+
},
|
|
1090
|
+
{
|
|
1091
|
+
"$ref": "#/$defs/expression"
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"$ref": "#/$defs/asOfSpec"
|
|
1095
|
+
}
|
|
1096
|
+
],
|
|
1097
|
+
"items": false,
|
|
1098
|
+
"minItems": 2,
|
|
1099
|
+
"maxItems": 3
|
|
1100
|
+
}
|
|
1101
|
+
},
|
|
1102
|
+
"required": [
|
|
1103
|
+
"$asof"
|
|
1104
|
+
],
|
|
1105
|
+
"additionalProperties": false
|
|
1106
|
+
},
|
|
1107
|
+
"calendarContext": {
|
|
1108
|
+
"description": "$time-bucket's optional fourth position: the wall clock its boundaries fall on. UTC is the default and needs nothing; a named 'zone' needs an injected zoneProvider.",
|
|
1109
|
+
"type": "object",
|
|
1110
|
+
"properties": {
|
|
1111
|
+
"zone": {
|
|
1112
|
+
"type": "string",
|
|
1113
|
+
"minLength": 1
|
|
1114
|
+
},
|
|
1115
|
+
"offset": {
|
|
1116
|
+
"type": "number"
|
|
1117
|
+
},
|
|
1118
|
+
"disambiguation": {
|
|
1119
|
+
"enum": [
|
|
1120
|
+
"reject",
|
|
1121
|
+
"earlier",
|
|
1122
|
+
"later"
|
|
1123
|
+
]
|
|
1124
|
+
}
|
|
1125
|
+
},
|
|
1126
|
+
"additionalProperties": false
|
|
1127
|
+
},
|
|
1128
|
+
"timeBucketPhrase": {
|
|
1129
|
+
"description": "$time-bucket [at, every] / [at, every, origin] / [at, every, origin, context]: the instant labelling the bucket 'at' falls in. The first three positions are operand expressions ('origin' may be null for the ladder's own default); the fourth is a VERBATIM calendar context literal.",
|
|
1130
|
+
"type": "object",
|
|
1131
|
+
"properties": {
|
|
1132
|
+
"$time-bucket": {
|
|
1133
|
+
"type": "array",
|
|
1134
|
+
"prefixItems": [
|
|
1135
|
+
{
|
|
1136
|
+
"$ref": "#/$defs/expression"
|
|
1137
|
+
},
|
|
1138
|
+
{
|
|
1139
|
+
"$ref": "#/$defs/expression"
|
|
1140
|
+
},
|
|
1141
|
+
{
|
|
1142
|
+
"$ref": "#/$defs/expression"
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
"$ref": "#/$defs/calendarContext"
|
|
1146
|
+
}
|
|
1147
|
+
],
|
|
1148
|
+
"items": false,
|
|
1149
|
+
"minItems": 2,
|
|
1150
|
+
"maxItems": 4
|
|
1151
|
+
}
|
|
1152
|
+
},
|
|
1153
|
+
"required": [
|
|
1154
|
+
"$time-bucket"
|
|
1155
|
+
],
|
|
1156
|
+
"additionalProperties": false
|
|
921
1157
|
}
|
|
922
1158
|
}
|
|
923
1159
|
}
|
|
@@ -162,6 +162,15 @@
|
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
164
|
"$ref": "#/definitions/schemaOperatorPhrase"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"$ref": "#/definitions/seriesSpecPhrase"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"$ref": "#/definitions/asOfPhrase"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"$ref": "#/definitions/timeBucketPhrase"
|
|
165
174
|
}
|
|
166
175
|
]
|
|
167
176
|
},
|
|
@@ -576,6 +585,7 @@
|
|
|
576
585
|
"$bbox-intersects",
|
|
577
586
|
"$geo-simplify",
|
|
578
587
|
"$similarity",
|
|
588
|
+
"$overlaps",
|
|
579
589
|
"$default"
|
|
580
590
|
]
|
|
581
591
|
},
|
|
@@ -745,6 +755,232 @@
|
|
|
745
755
|
"maxItems": 2
|
|
746
756
|
}
|
|
747
757
|
},
|
|
758
|
+
"seriesSpec": {
|
|
759
|
+
"description": "A $resample or $rolling spec (QUERY-FORMAT.md section 8.16): a VERBATIM literal, never an expression, so the width, the aggregate, the fill policy, the wall clock and the row selectors are read once when the query compiles. Closed: an unknown member is JQ0003. 'every'/'width' is an ISO 8601 duration or a count of milliseconds; 'origin'/'start'/'end' are epoch milliseconds or an RFC 3339 string; 'at'/'value' are singular paths where '$' reads as the ROW. A named 'zone' needs an injected zoneProvider - this suite bundles no time-zone database.",
|
|
760
|
+
"type": "object",
|
|
761
|
+
"properties": {
|
|
762
|
+
"every": {
|
|
763
|
+
"$ref": "#/definitions/seriesSpan"
|
|
764
|
+
},
|
|
765
|
+
"width": {
|
|
766
|
+
"$ref": "#/definitions/seriesSpan"
|
|
767
|
+
},
|
|
768
|
+
"origin": {
|
|
769
|
+
"$ref": "#/definitions/seriesInstant"
|
|
770
|
+
},
|
|
771
|
+
"start": {
|
|
772
|
+
"$ref": "#/definitions/seriesInstant"
|
|
773
|
+
},
|
|
774
|
+
"end": {
|
|
775
|
+
"$ref": "#/definitions/seriesInstant"
|
|
776
|
+
},
|
|
777
|
+
"aggregate": {
|
|
778
|
+
"enum": [
|
|
779
|
+
"sum",
|
|
780
|
+
"mean",
|
|
781
|
+
"min",
|
|
782
|
+
"max",
|
|
783
|
+
"first",
|
|
784
|
+
"last",
|
|
785
|
+
"count"
|
|
786
|
+
]
|
|
787
|
+
},
|
|
788
|
+
"fill": {
|
|
789
|
+
"enum": [
|
|
790
|
+
"omit",
|
|
791
|
+
"null",
|
|
792
|
+
"zero",
|
|
793
|
+
"locf",
|
|
794
|
+
"linear"
|
|
795
|
+
]
|
|
796
|
+
},
|
|
797
|
+
"minPeriods": {
|
|
798
|
+
"type": "integer",
|
|
799
|
+
"minimum": 1
|
|
800
|
+
},
|
|
801
|
+
"at": {
|
|
802
|
+
"$ref": "#/definitions/rowSelector"
|
|
803
|
+
},
|
|
804
|
+
"value": {
|
|
805
|
+
"$ref": "#/definitions/rowSelector"
|
|
806
|
+
},
|
|
807
|
+
"zone": {
|
|
808
|
+
"type": "string",
|
|
809
|
+
"minLength": 1
|
|
810
|
+
},
|
|
811
|
+
"offset": {
|
|
812
|
+
"type": "number"
|
|
813
|
+
},
|
|
814
|
+
"disambiguation": {
|
|
815
|
+
"enum": [
|
|
816
|
+
"reject",
|
|
817
|
+
"earlier",
|
|
818
|
+
"later"
|
|
819
|
+
]
|
|
820
|
+
}
|
|
821
|
+
},
|
|
822
|
+
"additionalProperties": false
|
|
823
|
+
},
|
|
824
|
+
"seriesSpan": {
|
|
825
|
+
"description": "A width: an ISO 8601 duration string ('PT1H', 'P1M') or a count of milliseconds. A duration mixing the calendar and clock families ('P1MT1H') is refused by the compiler.",
|
|
826
|
+
"anyOf": [
|
|
827
|
+
{
|
|
828
|
+
"type": "string",
|
|
829
|
+
"minLength": 1
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
"type": "number",
|
|
833
|
+
"exclusiveMinimum": 0
|
|
834
|
+
}
|
|
835
|
+
]
|
|
836
|
+
},
|
|
837
|
+
"seriesInstant": {
|
|
838
|
+
"description": "An instant: epoch milliseconds, or an RFC 3339 string. A full-time names no instant and is refused by the compiler.",
|
|
839
|
+
"anyOf": [
|
|
840
|
+
{
|
|
841
|
+
"type": "number"
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
"type": "string",
|
|
845
|
+
"minLength": 1
|
|
846
|
+
}
|
|
847
|
+
]
|
|
848
|
+
},
|
|
849
|
+
"rowSelector": {
|
|
850
|
+
"description": "Where a member lives in a source row: a singular JSONPath whose '$' is the ROW rather than the document ('$.on', \"$['recorded at']\", '$.meta.at'). Wildcards, descendants and filters are refused (JQ0003) - a selector names one member.",
|
|
851
|
+
"type": "string",
|
|
852
|
+
"pattern": "^\\$[.\\[]"
|
|
853
|
+
},
|
|
854
|
+
"seriesSpecPhrase": {
|
|
855
|
+
"description": "$resample / $rolling [series, spec]: an operand expression and a VERBATIM spec literal. $resample returns sorted {at, value, count} buckets one per 'every'; $rolling returns one row per input instant over a window measured in time.",
|
|
856
|
+
"type": "object",
|
|
857
|
+
"minProperties": 1,
|
|
858
|
+
"maxProperties": 1,
|
|
859
|
+
"propertyNames": {
|
|
860
|
+
"enum": [
|
|
861
|
+
"$resample",
|
|
862
|
+
"$rolling"
|
|
863
|
+
]
|
|
864
|
+
},
|
|
865
|
+
"additionalProperties": {
|
|
866
|
+
"type": "array",
|
|
867
|
+
"items": [
|
|
868
|
+
{
|
|
869
|
+
"$ref": "#/definitions/expression"
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"$ref": "#/definitions/seriesSpec"
|
|
873
|
+
}
|
|
874
|
+
],
|
|
875
|
+
"additionalItems": false,
|
|
876
|
+
"minItems": 2,
|
|
877
|
+
"maxItems": 2
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
"asOfSpec": {
|
|
881
|
+
"description": "The $asof spec (QUERY-FORMAT.md section 8.16): a VERBATIM literal. 'by' joins within groups; 'leftAt'/'rightAt' say where each side keeps its instant when the two documents spell it differently. Closed: an unknown member is JQ0003.",
|
|
882
|
+
"type": "object",
|
|
883
|
+
"properties": {
|
|
884
|
+
"direction": {
|
|
885
|
+
"enum": [
|
|
886
|
+
"backward",
|
|
887
|
+
"forward",
|
|
888
|
+
"nearest"
|
|
889
|
+
]
|
|
890
|
+
},
|
|
891
|
+
"tolerance": {
|
|
892
|
+
"$ref": "#/definitions/seriesSpan"
|
|
893
|
+
},
|
|
894
|
+
"by": {
|
|
895
|
+
"$ref": "#/definitions/rowSelector"
|
|
896
|
+
},
|
|
897
|
+
"leftAt": {
|
|
898
|
+
"$ref": "#/definitions/rowSelector"
|
|
899
|
+
},
|
|
900
|
+
"rightAt": {
|
|
901
|
+
"$ref": "#/definitions/rowSelector"
|
|
902
|
+
}
|
|
903
|
+
},
|
|
904
|
+
"additionalProperties": false
|
|
905
|
+
},
|
|
906
|
+
"asOfPhrase": {
|
|
907
|
+
"description": "$asof [left, right] or [left, right, spec]: two operand expressions and an optional VERBATIM spec literal. Answers one {left, right, distance} per left row; a left row with no match keeps right: null and stays in the answer.",
|
|
908
|
+
"type": "object",
|
|
909
|
+
"properties": {
|
|
910
|
+
"$asof": {
|
|
911
|
+
"type": "array",
|
|
912
|
+
"items": [
|
|
913
|
+
{
|
|
914
|
+
"$ref": "#/definitions/expression"
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
"$ref": "#/definitions/expression"
|
|
918
|
+
},
|
|
919
|
+
{
|
|
920
|
+
"$ref": "#/definitions/asOfSpec"
|
|
921
|
+
}
|
|
922
|
+
],
|
|
923
|
+
"additionalItems": false,
|
|
924
|
+
"minItems": 2,
|
|
925
|
+
"maxItems": 3
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
"required": [
|
|
929
|
+
"$asof"
|
|
930
|
+
],
|
|
931
|
+
"additionalProperties": false
|
|
932
|
+
},
|
|
933
|
+
"calendarContext": {
|
|
934
|
+
"description": "$time-bucket's optional fourth position: the wall clock its boundaries fall on. UTC is the default and needs nothing; a named 'zone' needs an injected zoneProvider.",
|
|
935
|
+
"type": "object",
|
|
936
|
+
"properties": {
|
|
937
|
+
"zone": {
|
|
938
|
+
"type": "string",
|
|
939
|
+
"minLength": 1
|
|
940
|
+
},
|
|
941
|
+
"offset": {
|
|
942
|
+
"type": "number"
|
|
943
|
+
},
|
|
944
|
+
"disambiguation": {
|
|
945
|
+
"enum": [
|
|
946
|
+
"reject",
|
|
947
|
+
"earlier",
|
|
948
|
+
"later"
|
|
949
|
+
]
|
|
950
|
+
}
|
|
951
|
+
},
|
|
952
|
+
"additionalProperties": false
|
|
953
|
+
},
|
|
954
|
+
"timeBucketPhrase": {
|
|
955
|
+
"description": "$time-bucket [at, every] / [at, every, origin] / [at, every, origin, context]: the instant labelling the bucket 'at' falls in. The first three positions are operand expressions ('origin' may be null for the ladder's own default); the fourth is a VERBATIM calendar context literal.",
|
|
956
|
+
"type": "object",
|
|
957
|
+
"properties": {
|
|
958
|
+
"$time-bucket": {
|
|
959
|
+
"type": "array",
|
|
960
|
+
"items": [
|
|
961
|
+
{
|
|
962
|
+
"$ref": "#/definitions/expression"
|
|
963
|
+
},
|
|
964
|
+
{
|
|
965
|
+
"$ref": "#/definitions/expression"
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
"$ref": "#/definitions/expression"
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
"$ref": "#/definitions/calendarContext"
|
|
972
|
+
}
|
|
973
|
+
],
|
|
974
|
+
"additionalItems": false,
|
|
975
|
+
"minItems": 2,
|
|
976
|
+
"maxItems": 4
|
|
977
|
+
}
|
|
978
|
+
},
|
|
979
|
+
"required": [
|
|
980
|
+
"$time-bucket"
|
|
981
|
+
],
|
|
982
|
+
"additionalProperties": false
|
|
983
|
+
},
|
|
748
984
|
"asClause": {
|
|
749
985
|
"description": "The $as clause: variable-name to JSON Schema literal members, applied per tuple after $for/$let binding and before $where. Each name must be bound by the same phrase's $for (including $at names) or $let - a compiler rule (JQ0005); each binding validates per item at runtime (JQ2008).",
|
|
750
986
|
"type": "object",
|