{
  "$ref": "#/definitions/ITranspilerConfig",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "ITranspilerConfig": {
      "additionalProperties": false,
      "properties": {
        "input_filter": {
          "description": "list of regex, case insensitive, empty gives all files, positive list",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "input_folder": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ]
        },
        "lib": {
          "deprecated": true,
          "description": "to be deprecated, \"lib\", use \"libs\" instead",
          "type": "string"
        },
        "libs": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "files": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                ]
              },
              "folder": {
                "type": "string"
              },
              "url": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "options": {
          "$ref": "#/definitions/ITranspilerOptions"
        },
        "output_folder": {
          "type": "string"
        },
        "write_source_map": {
          "type": "boolean"
        },
        "write_unit_tests": {
          "type": "boolean"
        }
      },
      "required": [
        "input_folder",
        "output_folder",
        "options"
      ],
      "type": "object"
    },
    "ITranspilerOptions": {
      "additionalProperties": false,
      "properties": {
        "addCommonJS": {
          "description": "adds common js modules",
          "type": "boolean"
        },
        "addFilenames": {
          "description": "adds filenames as comments in the output js",
          "type": "boolean"
        },
        "extraSetup": {
          "description": "extra setup script to be executed during initialization",
          "type": "string"
        },
        "ignoreSourceMap": {
          "description": "ignore source map",
          "type": "boolean"
        },
        "ignoreSyntaxCheck": {
          "description": "ignore syntax check, used for internal testing",
          "type": "boolean"
        },
        "keywords": {
          "description": "list of keywords to rename, if not supplied default will be used",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "skip": {
          "$ref": "#/definitions/TestMethodList",
          "description": "list of unit tests to skip"
        },
        "skipConstants": {
          "description": "skip outputing constants, used for internal testing",
          "type": "boolean"
        },
        "skipReposrc": {
          "description": "dont insert into REPOSRC",
          "type": "boolean"
        },
        "unknownTypes": {
          "$ref": "#/definitions/UnknownTypesEnum",
          "description": "sets behavior for unknown types, either fail at compile- or run-time"
        }
      },
      "type": "object"
    },
    "TestMethodList": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "class": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "object": {
            "type": "string"
          }
        },
        "required": [
          "object",
          "class",
          "method"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "UnknownTypesEnum": {
      "enum": [
        "compileError",
        "runtimeError"
      ],
      "type": "string"
    }
  }
}
