{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "additionalProperties": false,
  "id": "https://json.schemastore.org/rehyperc.json",
  "properties": {
    "plugins": {
      "description": "The plugins field, related to plugins in options, has either an array of plugin names (or paths) or plugin–options tuples, or an object mapping plugins to their options.\nPlugin options can be false, which specifies that a plugin should not be used. In all other cases, they are treated as an object, and merged by the cascade. Thus, it's possible to specify part of the options from one configuration file, and overwrite or extend it from another file.",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "additionalItems": true,
                "items": [
                  {
                    "type": "string"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object"
        }
      ]
    },
    "settings": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "fragment": {
          "description": "Specify whether to parse a fragment, instead of a complete document. In document mode, unopened html, head, and body elements are opened in just the right places.",
          "type": ["boolean"],
          "default": false
        },
        "space": {
          "description": "Which space the document is in.\n\nIf an svg element is found in the HTML space, parse automatically switches to the SVG space when entering the element, and switches back when exiting.\n\nNote: make sure to set fragment: true if space: 'svg'.",
          "enum": ["svg", "html"],
          "default": "html"
        },
        "emitParseErrors": {
          "description": "Emit parse errors while parsing on the vfile.\n\nSetting this to true starts emitting HTML parse errors.\n\nSpecific rules can be turned off by setting them to false (or 0). The default, when emitParseErrors: true, is true (or 1), and means that rules emit as warnings. Rules can also be configured with 2, to turn them into fatal errors.",
          "type": ["boolean"],
          "default": false
        },
        "verbose": {
          "description": "Patch extra positional information. If specified, the following element:",
          "type": ["boolean"],
          "default": false
        },
        "entities": {
          "description": "Configuration for stringify-entities. Do not use escapeOnly, attribute, or subset (toHtml already passes those, so they won't work). However, useNamedReferences, useShortestReferences, and omitOptionalSemicolons are all fine.",
          "type": "object",
          "default": {},
          "additionalProperties": false,
          "properties": {
            "useNamedReferences": {
              "description": "Prefer named character references (&amp;) where possible.",
              "type": "boolean",
              "default": false
            },
            "useShortestReferences": {
              "description": "Prefer the shortest possible reference, if that results in less bytes.",
              "type": "boolean",
              "default": false
            },
            "omitOptionalSemicolons": {
              "description": "Whether to omit semicolons when possible.",
              "type": "boolean",
              "default": false
            }
          }
        },
        "voids": {
          "description": "Tag names of elements to serialize without closing tag.\n\nNot used in the SVG space.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "upperDoctype": {
          "description": "Use a <!DOCTYPE… instead of <!doctype…. Useless except for XHTML.",
          "type": "boolean",
          "default": false
        },
        "quote": {
          "description": "Preferred quote to use.",
          "enum": ["\"", "'"],
          "default": "\""
        },
        "quoteSmart": {
          "description": "Use the other quote if that results in less bytes.",
          "type": "boolean",
          "default": false
        },
        "preferUnquoted": {
          "description": "Leave attributes unquoted if that results in less bytes.\n\nNot used in the SVG space.",
          "type": "boolean",
          "default": false
        },
        "omitOptionalTags": {
          "description": "Omit optional opening and closing tags. For example, in <ol><li>one</li><li>two</li></ol>, both </li> closing tags can be omitted. The first because it's followed by another li, the last because it's followed by nothing.\n\nNot used in the SVG space.",
          "type": "boolean",
          "default": false
        },
        "collapseEmptyAttributes": {
          "description": "Collapse empty attributes: get class instead of class=\"\". Note: boolean attributes, such as hidden, are always collapsed.\n\nNot used in the SVG space.",
          "type": "boolean",
          "default": false
        },
        "closeSelfClosing": {
          "description": "Close self-closing nodes with an extra slash (/): <img /> instead of <img>. See tightSelfClosing to control whether a space is used before the slash.\n\nNot used in the SVG space.",
          "type": "boolean",
          "default": false
        },
        "closeEmptyElements": {
          "description": "Close SVG elements without any content with slash (/) on the opening tag instead of an end tag: <circle /> instead of <circle></circle>. See tightSelfClosing to control whether a space is used before the slash.\n\nNot used in the HTML space.",
          "type": "boolean",
          "default": false
        },
        "tightCommaSeparatedLists": {
          "description": "Join known comma-separated attribute values with just a comma (,), instead of padding them on the right as well (,·, where · represents a space).",
          "type": "boolean",
          "default": false
        },
        "tightAttributes": {
          "description": "Join attributes together, without whitespace, if possible: get class=\"a b\"title=\"c d\" instead of class=\"a b\" title=\"c d\" to save bytes. Note: creates invalid (but working) markup.\n\nNot used in the SVG space.",
          "type": "boolean",
          "default": false
        },
        "tightDoctype": {
          "description": "Drop unneeded spaces in doctypes: <!doctypehtml> instead of <!doctype html> to save bytes. Note: creates invalid (but working) markup.",
          "type": "boolean",
          "default": false
        },
        "bogusComments": {
          "description": "Use \"bogus comments\" instead of comments to save byes: <?charlie> instead of <!--charlie-->. Note: creates invalid (but working) markup.",
          "type": "boolean",
          "default": false
        },
        "allowParseErrors": {
          "description": "Do not encode characters which cause parse errors (even though they work), to save bytes. Note: creates invalid (but working) markup.\n\nNot used in the SVG space.",
          "type": "boolean",
          "default": false
        },
        "allowDangerousHtml": {
          "description": "Allow raw nodes and insert them as raw HTML. When falsey, encodes raw nodes. Note: Only set this if you completely trust the content.",
          "type": "boolean",
          "default": false
        }
      }
    }
  },
  "title": "JSON schema for .rehyperc",
  "type": "object"
}
