{
    "$id": "recommendedSettings",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "description": "Contains data for recommended default options overrides by language.",
    "type": "object",
    "$defs": {
        "path": {
            "type": "string",
            "minLength": 2
        },
        "value": {
            "anyOf": [
                {
                    "type": "string",
                    "minLength": 1
                },
                {
                    "type": "number"
                },
                {
                    "type": "boolean"
                },
                {
                    "type": "array"
                },
                {
                    "type": "object"
                }
            ]
        },
        "description": {
            "type": "string",
            "minLength": 2
        }
    },
    "patternProperties": {
        "^.{2,}$": {
            "title": "Language",
            "type": "array",
            "items": {
                "title": "Modification",
                "type": "object",
                "oneOf": [
                    {
                        "type": "object",
                        "title": "ModificationSet",
                        "properties": {
                            "modification": {
                                "type": "object",
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "const": "set"
                                    },
                                    "path": {
                                        "$ref": "#/$defs/path"
                                    },
                                    "value": {
                                        "$ref": "#/$defs/value"
                                    }
                                }
                            },
                            "description": {
                                "$ref": "#/$defs/description"
                            }
                        }
                    },
                    {
                        "type": "object",
                        "title": "ModificationDelete",
                        "properties": {
                            "modification": {
                                "type": "object",
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "const": "delete"
                                    },
                                    "path": {
                                        "$ref": "#/$defs/path"
                                    },
                                    "value": {
                                        "$ref": "#/$defs/value"
                                    }
                                }
                            },
                            "description": {
                                "$ref": "#/$defs/description"
                            }
                        }
                    },
                    {
                        "type": "object",
                        "title": "ModificationSwap",
                        "properties": {
                            "modification": {
                                "type": "object",
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "const": "swap"
                                    },
                                    "path1": {
                                        "$ref": "#/$defs/path"
                                    },
                                    "path2": {
                                        "$ref": "#/$defs/path"
                                    }
                                }
                            },
                            "description": {
                                "$ref": "#/$defs/description"
                            }
                        }
                    },
                    {
                        "type": "object",
                        "title": "ModificationSplice",
                        "properties": {
                            "modification": {
                                "type": "object",
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "const": "splice"
                                    },
                                    "path": {
                                        "$ref": "#/$defs/path"
                                    },
                                    "start": {
                                        "type": "number"
                                    },
                                    "deleteCount": {
                                        "type": "number"
                                    },
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "$ref": "#/$defs/value"
                                        }
                                    }
                                }
                            },
                            "description": {
                                "$ref": "#/$defs/description"
                            }
                        }
                    },
                    {
                        "type": "object",
                        "title": "ModificationPush",
                        "properties": {
                            "modification": {
                                "type": "object",
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "const": "push"
                                    },
                                    "path": {
                                        "$ref": "#/$defs/path"
                                    },
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "$ref": "#/$defs/value"
                                        }
                                    }
                                }
                            },
                            "description": {
                                "$ref": "#/$defs/description"
                            }
                        }
                    }
                ]
            }
        }
    }
}
