{
    "$ref": "#/definitions/TsConfigSchema",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "TsConfigOptions": {
            "description": "Must be an interface to support `typescript-json-schema`.",
            "properties": {
                "compiler": {
                    "default": "typescript",
                    "description": "Specify a custom TypeScript compiler.",
                    "type": "string"
                },
                "compilerHost": {
                    "default": false,
                    "description": "Use TypeScript's compiler host API instead of the language service API.",
                    "type": "boolean"
                },
                "compilerOptions": {
                    "additionalProperties": true,
                    "allOf": [
                        {
                            "$ref": "https://schemastore.azurewebsites.net/schemas/json/tsconfig.json#definitions/compilerOptionsDefinition/properties/compilerOptions"
                        }
                    ],
                    "description": "JSON object to merge with TypeScript `compilerOptions`.",
                    "properties": {
                    },
                    "type": "object"
                },
                "emit": {
                    "default": false,
                    "description": "Emit output files into `.ts-node` directory.",
                    "type": "boolean"
                },
                "files": {
                    "default": false,
                    "description": "Load \"files\" and \"include\" from `tsconfig.json` on startup.\n\nDefault is to override `tsconfig.json` \"files\" and \"include\" to only include the entrypoint script.",
                    "type": "boolean"
                },
                "ignore": {
                    "default": [
                        "(?:^|/)node_modules/"
                    ],
                    "description": "Paths which should not be compiled.\n\nEach string in the array is converted to a regular expression via `new RegExp()` and tested against source paths prior to compilation.\n\nSource paths are normalized to posix-style separators, relative to the directory containing `tsconfig.json` or to cwd if no `tsconfig.json` is loaded.\n\nDefault is to ignore all node_modules subdirectories.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "ignoreDiagnostics": {
                    "description": "Ignore TypeScript warnings by diagnostic code.",
                    "items": {
                        "type": [
                            "string",
                            "number"
                        ]
                    },
                    "type": "array"
                },
                "logError": {
                    "default": false,
                    "description": "Logs TypeScript errors to stderr instead of throwing exceptions.",
                    "type": "boolean"
                },
                "preferTsExts": {
                    "default": false,
                    "description": "Re-order file extensions so that TypeScript imports are preferred.\n\nFor example, when both `index.js` and `index.ts` exist, enabling this option causes `require('./index')` to resolve to `index.ts` instead of `index.js`",
                    "type": "boolean"
                },
                "pretty": {
                    "default": false,
                    "description": "Use pretty diagnostic formatter.",
                    "type": "boolean"
                },
                "require": {
                    "description": "Modules to require, like node's `--require` flag.\n\nIf specified in `tsconfig.json`, the modules will be resolved relative to the `tsconfig.json` file.\n\nIf specified programmatically, each input string should be pre-resolved to an absolute path for\nbest results.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "skipIgnore": {
                    "default": false,
                    "description": "Skip ignore check, so that compilation will be attempted for all files with matching extensions.",
                    "type": "boolean"
                },
                "transpileOnly": {
                    "default": false,
                    "description": "Use TypeScript's faster `transpileModule`.",
                    "type": "boolean"
                },
                "transpiler": {
                    "anyOf": [
                        {
                            "additionalItems": {
                                "anyOf": [
                                    {
                                        "type": "string"
                                    },
                                    {
                                        "additionalProperties": true,
                                        "properties": {
                                        },
                                        "type": "object"
                                    }
                                ]
                            },
                            "items": [
                                {
                                    "type": "string"
                                },
                                {
                                    "additionalProperties": true,
                                    "properties": {
                                    },
                                    "type": "object"
                                }
                            ],
                            "minItems": 2,
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ],
                    "description": "Specify a custom transpiler for use with transpileOnly"
                },
                "typeCheck": {
                    "default": true,
                    "description": "**DEPRECATED** Specify type-check is enabled (e.g. `transpileOnly == false`).",
                    "type": "boolean"
                }
            },
            "type": "object"
        },
        "TsConfigSchema": {
            "allOf": [
                {
                    "$ref": "https://schemastore.azurewebsites.net/schemas/json/tsconfig.json"
                }
            ],
            "description": "tsconfig schema which includes \"ts-node\" options.",
            "properties": {
                "ts-node": {
                    "$ref": "#/definitions/TsConfigOptions",
                    "description": "ts-node options.  See also: https://github.com/TypeStrong/ts-node#configuration-options\n\nts-node offers TypeScript execution and REPL for node.js, with source map support."
                }
            },
            "type": "object"
        }
    }
}

