Skip to content

Commit 1f5971b

Browse files
authored
Restrict logical operators with single branches in the canonicalizer (#735)
Signed-off-by: Juan Cruz Viotti <[email protected]>
1 parent 6896d11 commit 1f5971b

20 files changed

Lines changed: 2360 additions & 1129 deletions

schemas/canonical-2019-09.json

Lines changed: 109 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -745,14 +745,110 @@
745745
"properties": {
746746
"anyOf": {
747747
"type": "array",
748-
"minItems": 1,
748+
"minItems": 2,
749+
"uniqueItems": true,
750+
"items": {
751+
"$ref": "#/$defs/schema"
752+
}
753+
}
754+
},
755+
"unevaluatedProperties": false
756+
},
757+
{
758+
"x-lint-exclude": "simple_properties_identifiers",
759+
"type": "object",
760+
"allOf": [
761+
{
762+
"$ref": "#/$defs/metadata"
763+
},
764+
{
765+
"$ref": "#/$defs/core"
766+
}
767+
],
768+
"not": {
769+
"anyOf": [
770+
{
771+
"x-lint-exclude": "required_properties_in_properties",
772+
"required": [ "unevaluatedProperties" ]
773+
},
774+
{
775+
"x-lint-exclude": "required_properties_in_properties",
776+
"required": [ "unevaluatedItems" ]
777+
}
778+
]
779+
},
780+
"required": [ "allOf" ],
781+
"properties": {
782+
"allOf": {
783+
"type": "array",
784+
"minItems": 2,
785+
"uniqueItems": true,
749786
"items": {
750787
"$ref": "#/$defs/schema"
751788
}
752789
}
753790
},
754791
"unevaluatedProperties": false
755792
},
793+
{
794+
"x-lint-exclude": "simple_properties_identifiers",
795+
"type": "object",
796+
"allOf": [
797+
{
798+
"$ref": "#/$defs/metadata"
799+
},
800+
{
801+
"$ref": "#/$defs/core"
802+
}
803+
],
804+
"not": {
805+
"anyOf": [
806+
{
807+
"x-lint-exclude": "required_properties_in_properties",
808+
"required": [ "unevaluatedProperties" ]
809+
},
810+
{
811+
"x-lint-exclude": "required_properties_in_properties",
812+
"required": [ "unevaluatedItems" ]
813+
}
814+
]
815+
},
816+
"required": [ "allOf" ],
817+
"properties": {
818+
"allOf": {
819+
"type": "array",
820+
"maxItems": 1,
821+
"minItems": 1,
822+
"items": {
823+
"x-lint-exclude": "simple_properties_identifiers",
824+
"$ref": "#/$defs/metadata",
825+
"type": "object",
826+
"oneOf": [
827+
{
828+
"x-lint-exclude": "simple_properties_identifiers",
829+
"required": [ "$ref" ],
830+
"properties": {
831+
"$ref": {
832+
"type": "string"
833+
}
834+
}
835+
},
836+
{
837+
"x-lint-exclude": "simple_properties_identifiers",
838+
"required": [ "$recursiveRef" ],
839+
"properties": {
840+
"$recursiveRef": {
841+
"type": "string"
842+
}
843+
}
844+
}
845+
],
846+
"unevaluatedProperties": false
847+
}
848+
}
849+
},
850+
"unevaluatedProperties": false
851+
},
756852
{
757853
"x-lint-exclude": "simple_properties_identifiers",
758854
"type": "object",
@@ -767,11 +863,22 @@
767863
"$ref": "#/$defs/unevaluated"
768864
}
769865
],
866+
"anyOf": [
867+
{
868+
"x-lint-exclude": "required_properties_in_properties",
869+
"required": [ "unevaluatedProperties" ]
870+
},
871+
{
872+
"x-lint-exclude": "required_properties_in_properties",
873+
"required": [ "unevaluatedItems" ]
874+
}
875+
],
770876
"required": [ "allOf" ],
771877
"properties": {
772878
"allOf": {
773879
"type": "array",
774880
"minItems": 1,
881+
"uniqueItems": true,
775882
"items": {
776883
"$ref": "#/$defs/schema"
777884
}
@@ -797,7 +904,7 @@
797904
"properties": {
798905
"oneOf": {
799906
"type": "array",
800-
"minItems": 1,
907+
"minItems": 2,
801908
"items": {
802909
"$ref": "#/$defs/schema"
803910
}

0 commit comments

Comments
 (0)