{
    "$ref": "#/definitions/FormatterConfig",
    "definitions": {
        "ClassFieldsEmptyLinesConfig": {
            "additionalProperties": false,
            "properties": {
                "afterPrivateFunctions": {
                    "propertyOrder": 9,
                    "type": "integer"
                },
                "afterPrivateVars": {
                    "propertyOrder": 4,
                    "type": "integer"
                },
                "afterStaticFunctions": {
                    "propertyOrder": 7,
                    "type": "integer"
                },
                "afterStaticVars": {
                    "propertyOrder": 3,
                    "type": "integer"
                },
                "afterVars": {
                    "propertyOrder": 6,
                    "type": "integer"
                },
                "beginType": {
                    "description": "add empty lines after opening \"{\" of type",
                    "propertyOrder": 0,
                    "type": "integer"
                },
                "betweenFunctions": {
                    "propertyOrder": 10,
                    "type": "integer"
                },
                "betweenStaticFunctions": {
                    "propertyOrder": 8,
                    "type": "integer"
                },
                "betweenStaticVars": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "betweenVars": {
                    "propertyOrder": 5,
                    "type": "integer"
                },
                "endType": {
                    "description": "add empty lines before closing \"}\" of type",
                    "propertyOrder": 1,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "ConditionalEmptyLinesConfig": {
            "additionalProperties": false,
            "properties": {
                "afterElse": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "afterError": {
                    "propertyOrder": 5,
                    "type": "integer"
                },
                "afterIf": {
                    "propertyOrder": 0,
                    "type": "integer"
                },
                "beforeElse": {
                    "propertyOrder": 1,
                    "type": "integer"
                },
                "beforeEnd": {
                    "propertyOrder": 3,
                    "type": "integer"
                },
                "beforeError": {
                    "propertyOrder": 4,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "EmptyLinesConfig": {
            "additionalProperties": false,
            "properties": {
                "abstractEmptyLines": {
                    "$ref": "#/definitions/ClassFieldsEmptyLinesConfig",
                    "propertyOrder": 14
                },
                "afterBlocks": {
                    "enum": [
                        "keep",
                        "remove"
                    ],
                    "propertyOrder": 10,
                    "type": "string"
                },
                "afterImportsUsing": {
                    "propertyOrder": 4,
                    "type": "integer"
                },
                "afterLeftCurly": {
                    "description": "Remove or keep empty lines below \"{\"",
                    "enum": [
                        "keep",
                        "remove"
                    ],
                    "propertyOrder": 7,
                    "type": "string"
                },
                "afterPackage": {
                    "description": "empty lines after package",
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "afterReturn": {
                    "description": "Remove or keep empty lines below \"return\"",
                    "enum": [
                        "keep",
                        "remove"
                    ],
                    "propertyOrder": 8,
                    "type": "string"
                },
                "beforeBlocks": {
                    "enum": [
                        "keep",
                        "remove"
                    ],
                    "propertyOrder": 9,
                    "type": "string"
                },
                "beforeDocCommentEmptyLines": {
                    "description": "\"one\" adds one empty line above doc comments\n\t\t\"none\" removes all empty lines above doc comments\n\t\t\"ignore\" respects empty lines set via \"betweenVars\", \"betweenFunctions\", etc.",
                    "enum": [
                        "ignore",
                        "none",
                        "one"
                    ],
                    "propertyOrder": 19,
                    "type": "string"
                },
                "beforeRightCurly": {
                    "description": "Remove or keep empty lines above \"}\"",
                    "enum": [
                        "keep",
                        "remove"
                    ],
                    "propertyOrder": 6,
                    "type": "string"
                },
                "beforeUsing": {
                    "propertyOrder": 3,
                    "type": "integer"
                },
                "betweenTypes": {
                    "description": "empty lines between types",
                    "propertyOrder": 5,
                    "type": "integer"
                },
                "classEmptyLines": {
                    "$ref": "#/definitions/ClassFieldsEmptyLinesConfig",
                    "propertyOrder": 12
                },
                "conditionalsEmptyLines": {
                    "$ref": "#/definitions/ConditionalEmptyLinesConfig",
                    "propertyOrder": 18
                },
                "enumAbstractEmptyLines": {
                    "$ref": "#/definitions/EnumAbstractFieldsEmptyLinesConfig",
                    "propertyOrder": 11
                },
                "enumEmptyLines": {
                    "$ref": "#/definitions/TypedefFieldsEmptyLinesConfig",
                    "propertyOrder": 16
                },
                "externClassEmptyLines": {
                    "$ref": "#/definitions/InterfaceFieldsEmptyLinesConfig",
                    "propertyOrder": 13
                },
                "finalNewline": {
                    "description": "adds a final newline",
                    "propertyOrder": 0,
                    "type": "boolean"
                },
                "interfaceEmptyLines": {
                    "$ref": "#/definitions/InterfaceFieldsEmptyLinesConfig",
                    "propertyOrder": 15
                },
                "maxAnywhereInFile": {
                    "description": "maximum consecutive empty lines anywhere in file - runs last, all empty lines policies are limited to \"maxAnywhereInFile\"",
                    "propertyOrder": 1,
                    "type": "integer"
                },
                "typedefEmptyLines": {
                    "$ref": "#/definitions/TypedefFieldsEmptyLinesConfig",
                    "propertyOrder": 17
                }
            },
            "type": "object"
        },
        "EnumAbstractFieldsEmptyLinesConfig": {
            "additionalProperties": false,
            "properties": {
                "afterVars": {
                    "propertyOrder": 3,
                    "type": "integer"
                },
                "beginType": {
                    "description": "add empty lines after opening \"{\" of type",
                    "propertyOrder": 0,
                    "type": "integer"
                },
                "betweenFunctions": {
                    "propertyOrder": 4,
                    "type": "integer"
                },
                "betweenVars": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "endType": {
                    "description": "add empty lines before closing \"}\" of type",
                    "propertyOrder": 1,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "FormatterConfig": {
            "additionalProperties": false,
            "properties": {
                "disableFormatting": {
                    "description": "turns off formatting for all files in current folder and subfolders\n\t\tunless subfolder contains a \"hxformat.json\"",
                    "propertyOrder": 0,
                    "type": "boolean"
                },
                "emptyLines": {
                    "$ref": "#/definitions/EmptyLinesConfig",
                    "propertyOrder": 1
                },
                "excludes": {
                    "description": "regular expressions matching files to exclude from formatting\n\t\tdefault ist to exclude any \".haxelib\" folder",
                    "items": {
                        "type": "string"
                    },
                    "propertyOrder": 7,
                    "type": "array"
                },
                "indentation": {
                    "$ref": "#/definitions/IndentationConfig",
                    "propertyOrder": 2
                },
                "lineEnds": {
                    "$ref": "#/definitions/LineEndConfig",
                    "propertyOrder": 3
                },
                "sameLine": {
                    "$ref": "#/definitions/SameLineConfig",
                    "propertyOrder": 4
                },
                "whitespace": {
                    "$ref": "#/definitions/WhitespaceConfig",
                    "propertyOrder": 5
                },
                "wrapping": {
                    "$ref": "#/definitions/WrapConfig",
                    "propertyOrder": 6
                }
            },
            "type": "object"
        },
        "IndentationConfig": {
            "additionalProperties": false,
            "properties": {
                "character": {
                    "description": "use \"tab\" or \"<amount of spaces per indent in spaces>\" to define which character to use",
                    "propertyOrder": 1,
                    "type": "string"
                },
                "conditionalPolicy": {
                    "description": "only applies to non inlined conditionals\n\t\t\"fixedZero\" = all conditional statements should start in column 1\n\t\t\"aligned\" = conditional statements share indentation of surrounding code\n\t\t\"alignedIncrease\" = same as \"aligned\" but will increase indent by +1 for enclosed code",
                    "enum": [
                        "fixedZero",
                        "aligned",
                        "alignedIncrease"
                    ],
                    "propertyOrder": 0,
                    "type": "string"
                },
                "tabWidth": {
                    "description": "if `character` is set to \"tab\", formatter uses `tabWidth` to calculate absolute line length",
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "trailingWhitespace": {
                    "description": "adds trailing whitespace to empty lines by copying indentation from preceeding line",
                    "propertyOrder": 3,
                    "type": "boolean"
                }
            },
            "type": "object"
        },
        "InterfaceFieldsEmptyLinesConfig": {
            "additionalProperties": false,
            "properties": {
                "afterVars": {
                    "propertyOrder": 3,
                    "type": "integer"
                },
                "beginType": {
                    "description": "add empty lines after opening \"{\" of type",
                    "propertyOrder": 0,
                    "type": "integer"
                },
                "betweenFunctions": {
                    "propertyOrder": 4,
                    "type": "integer"
                },
                "betweenVars": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "endType": {
                    "description": "add empty lines before closing \"}\" of type",
                    "propertyOrder": 1,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "LineEndConfig": {
            "additionalProperties": false,
            "properties": {
                "caseColon": {
                    "enum": [
                        "none",
                        "after"
                    ],
                    "propertyOrder": 4,
                    "type": "string"
                },
                "emptyCurly": {
                    "enum": [
                        "noBreak",
                        "break"
                    ],
                    "propertyOrder": 8,
                    "type": "string"
                },
                "leftCurly": {
                    "enum": [
                        "none",
                        "after",
                        "before",
                        "both"
                    ],
                    "propertyOrder": 6,
                    "type": "string"
                },
                "metadataFunction": {
                    "enum": [
                        "none",
                        "after",
                        "afterLast",
                        "forceAfterLast"
                    ],
                    "propertyOrder": 2,
                    "type": "string"
                },
                "metadataOther": {
                    "enum": [
                        "none",
                        "after",
                        "afterLast",
                        "forceAfterLast"
                    ],
                    "propertyOrder": 3,
                    "type": "string"
                },
                "metadataType": {
                    "enum": [
                        "none",
                        "after",
                        "afterLast",
                        "forceAfterLast"
                    ],
                    "propertyOrder": 0,
                    "type": "string"
                },
                "metadataVar": {
                    "enum": [
                        "none",
                        "after",
                        "afterLast",
                        "forceAfterLast"
                    ],
                    "propertyOrder": 1,
                    "type": "string"
                },
                "rightCurly": {
                    "enum": [
                        "none",
                        "before",
                        "after",
                        "both"
                    ],
                    "propertyOrder": 7,
                    "type": "string"
                },
                "sharp": {
                    "enum": [
                        "none",
                        "after"
                    ],
                    "propertyOrder": 5,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "SameLineConfig": {
            "additionalProperties": false,
            "properties": {
                "anonFunctionBody": {
                    "description": "same line policy for non block body of anon \"function\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 18,
                    "type": "string"
                },
                "caseBody": {
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 14,
                    "type": "string"
                },
                "catchBody": {
                    "description": "same line policy for non block body of \"catch\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 12,
                    "type": "string"
                },
                "comprehensionFor": {
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 7,
                    "type": "string"
                },
                "doWhile": {
                    "description": "same line policy for \"while\" part in \"do\u2026while\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 10,
                    "type": "string"
                },
                "doWhileBody": {
                    "description": "same line policy for non block body of \"do\u2026while\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 9,
                    "type": "string"
                },
                "elseBody": {
                    "description": "same line policy for non block body of \"else\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 1,
                    "type": "string"
                },
                "elseIf": {
                    "description": "same line policy for \"if\" part of \"else if\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 3,
                    "type": "string"
                },
                "expressionCase": {
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 15,
                    "type": "string"
                },
                "expressionIf": {
                    "description": "same line policy for non block body of \"if\" in a value place / as expression\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 4,
                    "type": "string"
                },
                "expressionIfWithBlocks": {
                    "description": "will place if with one expression in a block in one line (requires \"expressionIf\" = \"same\")\n\t\tvar foo = if (bar) { \"\"; } else { \"\"; };",
                    "propertyOrder": 5,
                    "type": "boolean"
                },
                "expressionTry": {
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 16,
                    "type": "string"
                },
                "forBody": {
                    "description": "same line policy for non block body of \"for\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 6,
                    "type": "string"
                },
                "functionBody": {
                    "description": "same line policy for non block body of \"function\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 17,
                    "type": "string"
                },
                "ifBody": {
                    "description": "same line policy for non block body of \"if\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 0,
                    "type": "string"
                },
                "ifElse": {
                    "description": "same line policy for \"else\" part of \"if\u2026else\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 2,
                    "type": "string"
                },
                "tryBody": {
                    "description": "same line policy for non block body of \"try\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 11,
                    "type": "string"
                },
                "tryCatch": {
                    "description": "same line policy for \"catch\" part of \"try\u2026catch\"\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 13,
                    "type": "string"
                },
                "whileBody": {
                    "description": "same line policy for non block body of \"while\" (not \"do\u2026while\")\n\t\t* same = place function and body on same line\n\t\t* next = place body on next line\n\t\t* keep = keep same / next line from source",
                    "enum": [
                        "same",
                        "next",
                        "keep"
                    ],
                    "propertyOrder": 8,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "TypedefFieldsEmptyLinesConfig": {
            "additionalProperties": false,
            "properties": {
                "beginType": {
                    "description": "add empty lines after opening \"{\" of type",
                    "propertyOrder": 0,
                    "type": "integer"
                },
                "betweenFields": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "endType": {
                    "description": "add empty lines before closing \"}\" of type",
                    "propertyOrder": 1,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "WhitespaceConfig": {
            "additionalProperties": false,
            "properties": {
                "arrowFunctionsPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 29,
                    "type": "string"
                },
                "binopPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 27,
                    "type": "string"
                },
                "caseColonPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 14,
                    "type": "string"
                },
                "catchPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 26,
                    "type": "string"
                },
                "closingBracePolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 5,
                    "type": "string"
                },
                "closingBracketPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 3,
                    "type": "string"
                },
                "closingParenPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 1,
                    "type": "string"
                },
                "colonPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 13,
                    "type": "string"
                },
                "commaPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 11,
                    "type": "string"
                },
                "compressSuccessiveParenthesis": {
                    "description": "should formatter compress whitespae for successive parenthesis `( [ {` vs. `([{`",
                    "propertyOrder": 32,
                    "type": "boolean"
                },
                "doPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 21,
                    "type": "string"
                },
                "dotPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 12,
                    "type": "string"
                },
                "forPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 23,
                    "type": "string"
                },
                "formatStringInterpolation": {
                    "propertyOrder": 33,
                    "type": "boolean"
                },
                "functionTypeHaxe3Policy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 30,
                    "type": "string"
                },
                "functionTypeHaxe4Policy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 31,
                    "type": "string"
                },
                "ifPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 20,
                    "type": "string"
                },
                "intervalPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 28,
                    "type": "string"
                },
                "objectClosingBracePolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 7,
                    "type": "string"
                },
                "objectFieldColonPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 15,
                    "type": "string"
                },
                "objectOpeningBracePolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 6,
                    "type": "string"
                },
                "openingBracePolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 4,
                    "type": "string"
                },
                "openingBracketPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 2,
                    "type": "string"
                },
                "openingParenPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 0,
                    "type": "string"
                },
                "semicolonPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 19,
                    "type": "string"
                },
                "switchPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 24,
                    "type": "string"
                },
                "ternaryPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 18,
                    "type": "string"
                },
                "tryPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 25,
                    "type": "string"
                },
                "typeCheckColonPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 17,
                    "type": "string"
                },
                "typeExtensionPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 10,
                    "type": "string"
                },
                "typeHintColonPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 16,
                    "type": "string"
                },
                "typeParamClosePolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 9,
                    "type": "string"
                },
                "typeParamOpenPolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 8,
                    "type": "string"
                },
                "whilePolicy": {
                    "enum": [
                        "none",
                        "before",
                        "noneBefore",
                        "onlyBefore",
                        "after",
                        "onlyAfter",
                        "noneAfter",
                        "around"
                    ],
                    "propertyOrder": 22,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "WrapCondition": {
            "additionalProperties": false,
            "properties": {
                "cond": {
                    "enum": [
                        "itemCount >= n",
                        "itemCount <= n",
                        "anyItemLength >= n",
                        "anyItemLength <= n",
                        "totalItemLength >= n",
                        "totalItemLength <= n",
                        "lineLength >= n",
                        "lineLength <= n"
                    ],
                    "propertyOrder": 0,
                    "type": "string"
                },
                "value": {
                    "propertyOrder": 1,
                    "type": "integer"
                }
            },
            "required": [
                "cond"
            ],
            "type": "object"
        },
        "WrapConfig": {
            "additionalProperties": false,
            "properties": {
                "anonType": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "anon types wrapping rules",
                    "propertyOrder": 12
                },
                "arrayWrap": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "function signature wrapping rules",
                    "propertyOrder": 7
                },
                "callParameter": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "function signature wrapping rules",
                    "propertyOrder": 10
                },
                "functionSignature": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "function signature wrapping rules",
                    "propertyOrder": 9
                },
                "maxLineLength": {
                    "description": "maximum characters per line, formatter will try to wrap code longer than `maxLineLength`",
                    "propertyOrder": 0,
                    "type": "integer"
                },
                "methodChain": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "method chaining wrapping rules",
                    "propertyOrder": 13
                },
                "objectLiteral": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "object literal wrapping rules",
                    "propertyOrder": 11
                },
                "typeParameter": {
                    "$ref": "#/definitions/WrapRules",
                    "description": "function signature wrapping rules",
                    "propertyOrder": 8
                },
                "wrapAfterComma": {
                    "description": "should wrapping happen after comma",
                    "propertyOrder": 1,
                    "type": "boolean"
                },
                "wrapAfterOpeningBrace": {
                    "description": "should wrapping happen after opening braces `{`",
                    "propertyOrder": 4,
                    "type": "boolean"
                },
                "wrapAfterOpeningBracket": {
                    "description": "should wrapping happen after opening brackets `[`",
                    "propertyOrder": 6,
                    "type": "boolean"
                },
                "wrapAfterOpeningParenthesis": {
                    "description": "should wrapping happen after opening braces `(`",
                    "propertyOrder": 3,
                    "type": "boolean"
                },
                "wrapAfterPlus": {
                    "propertyOrder": 5,
                    "type": "boolean"
                },
                "wrapBeforeDot": {
                    "description": "should wrapping happen before dot",
                    "propertyOrder": 2,
                    "type": "boolean"
                }
            },
            "type": "object"
        },
        "WrapRule": {
            "additionalProperties": false,
            "properties": {
                "additionalIndent": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "conditions": {
                    "items": {
                        "$ref": "#/definitions/WrapCondition"
                    },
                    "propertyOrder": 0,
                    "type": "array"
                },
                "type": {
                    "enum": [
                        "onePerLine",
                        "onePerLineAfterFirst",
                        "equalNumber",
                        "fillLine",
                        "noWrap",
                        "keep"
                    ],
                    "propertyOrder": 1,
                    "type": "string"
                }
            },
            "required": [
                "conditions",
                "type"
            ],
            "type": "object"
        },
        "WrapRules": {
            "additionalProperties": false,
            "properties": {
                "defaultAdditionalIndent": {
                    "propertyOrder": 2,
                    "type": "integer"
                },
                "defaultWrap": {
                    "enum": [
                        "onePerLine",
                        "onePerLineAfterFirst",
                        "equalNumber",
                        "fillLine",
                        "noWrap",
                        "keep"
                    ],
                    "propertyOrder": 1,
                    "type": "string"
                },
                "rules": {
                    "items": {
                        "$ref": "#/definitions/WrapRule"
                    },
                    "propertyOrder": 0,
                    "type": "array"
                }
            },
            "type": "object"
        }
    }
}