{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "definitions": {
    "less": {
      "description": "Specify options for the compiler.",
      "type": "object",
      "properties": {
        "autoPrefix": {
          "description": "LESS only. Support for AutoPrefixer by adding a browser string. An empty string means this feature is disabled. Example: 'last 2 versions, > 5%'. See more at https://github.com/ai/browserslist.",
          "type": "string",
          "default": ""
        },
        "cssComb": {
          "description": "LESS only. CSScomb helps you sort and categorize CSS properties in your code to improve maintenance of your stylesheets. You can specify a relative path to a local .json file as well.",
          "default": "none",
          "oneOf": [
            {
              "enum": ["csscomb", "zen", "yandex", "none"]
            },
            {
              "type": "string",
              "pattern": ".+\\.json$"
            }
          ]
        },
        "ieCompat": {
          "description": "LESS only. Currently only used for the data-uri function to ensure that images aren't created that are too large for the browser to handle.",
          "type": "boolean",
          "default": true
        },
        "math": {
          "description": "LESS only. Specifies which mode Less will use to process the math in your CSS.",
          "default": "none",
          "enum": [
            "always",
            "parens-division",
            "parens",
            "strict",
            "strict-legacy"
          ]
        },
        "sourceMap": {
          "description": "Generates a base64 encoded source map at the bottom of the output.",
          "type": "boolean",
          "default": false
        },
        "strictMath": {
          "description": "(DEPRECATED: Use 'math' instead) LESS only. Without this option on Less will try and process all maths in your CSS.",
          "type": "boolean",
          "default": false
        },
        "strictUnits": {
          "description": "LESS only. Without this option, less attempts to guess at the output unit when it does maths.",
          "type": "boolean",
          "default": false
        },
        "relativeUrls": {
          "description": "LESS only. This option allows you to re-write URL's in imported files so that the URL is always relative to the base imported file.",
          "type": "boolean",
          "default": true
        },
        "rootPath": {
          "description": "LESS only. Allows you to add a path to every generated import and URL in your CSS. This does not affect less import statements that are processed, just ones that are left in the output css.",
          "type": "string"
        },
        "sourceMapRoot": {
          "description": "LESS only. Base path, will be emitted in source-map as is.",
          "type": "string"
        },
        "sourceMapBasePath": {
          "description": "Scss only. This is the opposite of the rootpath option, it specifies a path which should be removed from the output paths.",
          "type": "string"
        }
      }
    },
    "sass": {
      "description": "Specify options for the compiler.",
      "type": "object",
      "properties": {
        "includePath": {
          "description": "Scss only. Path to look for imported files",
          "type": "string"
        },
        "indentType": {
          "description": "Scss only. Indent type for output CSS.",
          "enum": ["space", "tab"],
          "default": "space"
        },
        "indentWidth": {
          "description": "Scss only. Number of spaces or tabs.",
          "type": "integer",
          "maximum": 10,
          "default": 2
        },
        "lineFeed": {
          "description": "Scss only. Linefeed style (cr | crlf | lf | lfcr).",
          "enum": ["cr", "crlf", "lf", "lfcr"],
          "default": "crlf"
        },
        "outputStyle": {
          "description": "Scss only. Determines the output format of the final CSS style.",
          "enum": ["nested", "expanded", "compact", "compressed"],
          "default": "nested"
        },
        "precision": {
          "description": "Scss only. Used to determine how many digits after the decimal will be allowed. For instance, if you had a decimal number of 1.23456789 and a precision of 5, the result will be 1.23457 in the final CSS.",
          "type": "integer",
          "default": 5
        },
        "relativeUrls": {
          "description": "Scss only. This option allows you to re-write URL's to make them relative to the output file. This doesn't work for imported .scss files.",
          "type": "boolean",
          "default": true
        },
        "sourceMap": {
          "description": "Generates a base64 encoded source map at the bottom of the output.",
          "type": "boolean",
          "default": false
        },
        "sourceMapRoot": {
          "description": "Scss only. Base path, will be emitted in source-map as is.",
          "type": "string"
        }
      }
    },
    "coffeeScript": {
      "description": "Specify options for the compiler.",
      "type": "object",
      "properties": {
        "bare": {
          "description": "CoffeeScript only. Compile the JavaScript without the top-level function safety wrapper.",
          "type": "boolean",
          "default": false
        },
        "runtimeMode": {
          "description": "CoffeeScript only. Specify how the Iced runtime is included in the output JavaScript file.",
          "enum": ["node", "inline", "none", "window"],
          "default": "node"
        },
        "sourceMap": {
          "description": "Generates a source map file.",
          "type": "boolean",
          "default": false
        }
      }
    },
    "stylus": {
      "description": "Specify options for the compiler.",
      "type": "object",
      "properties": {
        "sourceMap": {
          "description": "Generates a base64 encoded source map at the bottom of the output.",
          "type": "boolean",
          "default": false
        }
      }
    },
    "handlebars": {
      "description": "Specify options for the compiler.",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "noBOM": {
          "description": "Removes the BOM (Byte Order Mark) from the beginning of the templates.",
          "type": "boolean",
          "default": false
        },
        "namespace": {
          "description": "Template namespace",
          "type": "string",
          "default": ""
        },
        "root": {
          "description": "Template root. Base value that will be stripped from template names.",
          "type": "string",
          "default": ""
        },
        "knownHelpers": {
          "description": "List of known helpers for a more optimized output (comma separated)",
          "type": "string",
          "default": ""
        },
        "knownHelpersOnly": {
          "description": "Compile with known helpers only",
          "type": "boolean",
          "default": false
        },
        "commonjs": {
          "description": "Path to the Handlebars module to export CommonJS style",
          "type": "string",
          "default": ""
        },
        "amd": {
          "description": "Exports amd style (require.js), this option has priority to commonjs.",
          "type": "boolean",
          "default": false
        }
      }
    },
    "baseMinify": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "gzip": {
          "description": "Produce a .gz file after minification.",
          "type": "boolean",
          "default": false
        },
        "indentSize": {
          "description": "For the multi-line output feature, how many spaces to use when indenting a block (see outputMode).",
          "type": "integer",
          "default": 2
        },
        "outputMode": {
          "description": "SingleLine minifies everything to a single line. MultipleLines breaks the minified code into multiple lines for easier reading.",
          "enum": ["multipleLines", "singleLine", "none"],
          "default": "singleLine"
        }
      }
    },
    "cssMinify": {
      "type": "object",
      "properties": {
        "colorNames": {
          "description": "CSS only. If no color names are to be used, set this value to 'hex'. If a set of colors recognized by all major browser is okay to use (W3C-strict validation is not required), set this value to 'major'.",
          "enum": ["hex", "major", "noSwap", "strict"],
          "default": "strict"
        },
        "commentMode": {
          "description": "CSS only. How to treat comments in the code. The default is 'none', which will strip all comments except 'important' comments. 'all' will leave all comments, and 'hacks' will only leave certain known comment-based hacks.",
          "enum": ["none", "all", "hacks", "important"],
          "default": "important"
        },
        "termSemicolons": {
          "description": "Forces all rules to be terminated with semicolons if set to true.",
          "type": "boolean",
          "default": false
        }
      }
    },
    "javascriptMinify": {
      "type": "object",
      "properties": {
        "evalTreatment": {
          "description": "JavaScript only.",
          "enum": ["ignore", "makeAllSafe", "makeImmediateSafe"],
          "default": "ignore"
        },
        "preserveImportantComments": {
          "description": "JavaScript only.",
          "type": "boolean",
          "default": true
        },
        "renameLocals": {
          "description": "JavaScript only. Controls if local variables should be shortened.",
          "type": "boolean",
          "default": true
        },
        "termSemicolons": {
          "description": "Forces all rules to be terminated with semicolons if set to true.",
          "type": "boolean",
          "default": true
        }
      }
    }
  },
  "description": "Schema for bundleconfig.json files",
  "id": "https://json.schemastore.org/compilerdefaults.json",
  "properties": {
    "compilers": {
      "type": "object",
      "properties": {
        "less": {
          "$ref": "#/definitions/less"
        },
        "sass": {
          "$ref": "#/definitions/sass"
        },
        "stylus": {
          "$ref": "#/definitions/stylus"
        },
        "coffeescript": {
          "$ref": "#/definitions/coffeeScript"
        },
        "handlebars": {
          "$ref": "#/definitions/handlebars"
        }
      }
    },
    "minifiers": {
      "type": "object",
      "properties": {
        "css": {
          "allOf": [
            {
              "$ref": "#/definitions/baseMinify"
            },
            {
              "$ref": "#/definitions/cssMinify"
            }
          ]
        },
        "javascript": {
          "allOf": [
            {
              "$ref": "#/definitions/baseMinify"
            },
            {
              "$ref": "#/definitions/javascriptMinify"
            }
          ]
        }
      }
    }
  },
  "type": "object"
}
