{
  "name": "tsc",
  "description": "CLI tool for TypeScript compiler",
  "options": [
    {
      "names": [
        "--all"
      ],
      "description": "Show all compiler options"
    },
    {
      "names": [
        "--generateTrace"
      ],
      "description": "Generates an event trace and a list of types"
    },
    {
      "names": [
        "--help"
      ],
      "description": "Gives local information for help on the CLI"
    },
    {
      "names": [
        "--init"
      ],
      "description": "Initializes a TypeScript project and creates a tsconfig.json file"
    },
    {
      "names": [
        "--listFilesOnly"
      ],
      "description": "Print names of files that are part of the compilation and then stop processing"
    },
    {
      "names": [
        "--locale"
      ],
      "description": "Set the language of the messaging from TypeScript. This does not affect emit"
    },
    {
      "names": [
        "--project"
      ],
      "description": "Compile the project given the path to its configuration file, or to a folder with a tsconfig.json",
      "args": [
        {
          "name": "path",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--showConfig"
      ],
      "description": "Print the final configuration instead of building"
    },
    {
      "names": [
        "--version"
      ],
      "description": "Print the compiler's version"
    },
    {
      "names": [
        "--build"
      ],
      "description": "Build one or more projects and their dependencies, if out of date"
    },
    {
      "names": [
        "--clean"
      ],
      "description": "Delete the outputs of all projects"
    },
    {
      "names": [
        "--dry"
      ],
      "description": "Show what would be built (or deleted, if specified with '--clean')"
    },
    {
      "names": [
        "--force"
      ],
      "description": "Build all projects, including those that appear to be up to date"
    },
    {
      "names": [
        "--verbose"
      ],
      "description": "Enable verbose logging"
    },
    {
      "names": [
        "--excludeDirectories"
      ],
      "description": "Remove a list of directories from the watch process",
      "args": [
        {
          "name": "dir",
          "isVariadic": true,
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--excludeFiles"
      ],
      "description": "Remove a list of files from the watch mode's processing",
      "args": [
        {
          "name": "files",
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--fallbackPolling"
      ],
      "description": "Specify what approach the watcher should use if the system runs out of native file watchers",
      "args": [
        {
          "name": "approach",
          "suggestions": [
            "fixedPollingInterval",
            "priorityPollingInterval",
            "dynamicPriorityPolling"
          ]
        }
      ]
    },
    {
      "names": [
        "--synchronousWatchDirectory"
      ],
      "description": "Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively"
    },
    {
      "names": [
        "--watch"
      ],
      "description": "Watch input files"
    },
    {
      "names": [
        "--watchDirectory"
      ],
      "description": "Specify how directories are watched on systems that lack recursive file-watching functionality",
      "args": [
        {
          "name": "approach",
          "suggestions": [
            "fixedPollingInterval",
            "dynamicPriorityPolling",
            "useFsEvents"
          ]
        }
      ]
    },
    {
      "names": [
        "--watchFile"
      ],
      "description": "Specify how the TypeScript watch mode works",
      "args": [
        {
          "name": "approach",
          "suggestions": [
            "fixedPollingInterval",
            "priorityPollingInterval",
            "dynamicPriorityPolling",
            "useFsEvents",
            "useFsEventsOnParentDirectory"
          ]
        }
      ]
    },
    {
      "names": [
        "--allowJs"
      ],
      "description": "Allow JavaScript files to be a part of your program. Use the checkJS option to get errors from these files"
    },
    {
      "names": [
        "--allowSyntheticDefaultImports"
      ],
      "description": "Allow 'import x from y' when a module doesn't have a default export"
    },
    {
      "names": [
        "--allowUmdGlobalAccess"
      ],
      "description": "Allow accessing UMD globals from modules"
    },
    {
      "names": [
        "--allowUnreachableCode"
      ],
      "description": "Disable error reporting for unreachable code"
    },
    {
      "names": [
        "--allowUnusedLabels"
      ],
      "description": "Disable error reporting for unused label"
    },
    {
      "names": [
        "--alwaysStrict"
      ],
      "description": "Ensure 'use strict' is always emitted"
    },
    {
      "names": [
        "--assumeChangesOnlyAffectDirectDependencies"
      ],
      "description": "Have recompiles in projects that use incremental and watch mode assume that changes within a file will only affect files directly depending on it"
    },
    {
      "names": [
        "--baseUrl"
      ],
      "description": "Specify the base directory to resolve non-relative module names",
      "args": [
        {
          "name": "directory",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--checkJs"
      ],
      "description": "Enable error reporting in type-checked JavaScript files"
    },
    {
      "names": [
        "--composite"
      ],
      "description": "Enable constraints that allow a TypeScript project to be used with project references"
    },
    {
      "names": [
        "--declaration"
      ],
      "description": "Generate .d.ts files from TypeScript and JavaScript files in your project"
    },
    {
      "names": [
        "--declarationDir"
      ],
      "description": "Specify the output directory for generated declaration files",
      "args": [
        {
          "name": "string",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--declarationMap"
      ],
      "description": "Create sourcemaps for d.ts files"
    },
    {
      "names": [
        "--diagnostics"
      ],
      "description": "Output compiler performance information after building"
    },
    {
      "names": [
        "--disableReferencedProjectLoad"
      ],
      "description": "Reduce the number of projects loaded automatically by TypeScript"
    },
    {
      "names": [
        "--disableSizeLimit"
      ],
      "description": "Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server"
    },
    {
      "names": [
        "--disableSolutionSearching"
      ],
      "description": "Opt a project out of multi-project reference checking when editing"
    },
    {
      "names": [
        "--disableSourceOfProjectReferenceRedirect"
      ],
      "description": "Disable preferring source files instead of declaration files when referencing composite projects"
    },
    {
      "names": [
        "--downlevelIteration"
      ],
      "description": "Emit more compliant, but verbose and less performant JavaScript for iteration"
    },
    {
      "names": [
        "--emitBOM"
      ],
      "description": "Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files"
    },
    {
      "names": [
        "--emitDeclarationOnly"
      ],
      "description": "Only output d.ts files and not JavaScript files"
    },
    {
      "names": [
        "--emitDecoratorMetadata"
      ],
      "description": "Emit design-type metadata for decorated declarations in source files"
    },
    {
      "names": [
        "--esModuleInterop"
      ],
      "description": "Emit additional JavaScript to ease support for importing CommonJS modules. This enables allowSyntheticDefaultImports for type compatibility"
    },
    {
      "names": [
        "--exactOptionalPropertyTypes"
      ],
      "description": "Differentiate between undefined and not present when type checking"
    },
    {
      "names": [
        "--experimentalDecorators"
      ],
      "description": "Enable experimental support for TC39 stage 2 draft decorators"
    },
    {
      "names": [
        "--explainFiles"
      ],
      "description": "Print files read during the compilation including why it was included"
    },
    {
      "names": [
        "--extendedDiagnostics"
      ],
      "description": "Output more detailed compiler performance information after building"
    },
    {
      "names": [
        "--forceConsistentCasingInFileNames"
      ],
      "description": "Ensure that casing is correct in imports"
    },
    {
      "names": [
        "--generateCpuProfile"
      ],
      "description": "Emit a v8 CPU profile of the compiler run for debugging"
    },
    {
      "names": [
        "--importHelpers"
      ],
      "description": "Allow importing helper functions from tslib once per project, instead of including them per-file"
    },
    {
      "names": [
        "--importsNotUsedAsValues"
      ],
      "description": "Specify emit/checking behavior for imports that are only used for types",
      "args": [
        {
          "name": "type",
          "suggestions": [
            "remove",
            "preserve",
            "error"
          ]
        }
      ]
    },
    {
      "names": [
        "--incremental"
      ],
      "description": "Save .tsbuildinfo files to allow for incremental compilation of projects"
    },
    {
      "names": [
        "--inlineSourceMap"
      ],
      "description": "Include sourcemap files inside the emitted JavaScript"
    },
    {
      "names": [
        "--inlineSources"
      ],
      "description": "Include source code in the sourcemaps inside the emitted JavaScript"
    },
    {
      "names": [
        "--isolatedModules"
      ],
      "description": "Ensure that each file can be safely transpiled without relying on other imports"
    },
    {
      "names": [
        "--jsx"
      ],
      "description": "Specify what JSX code is generated",
      "args": [
        {
          "name": "type",
          "suggestions": [
            "react",
            "react-jsx",
            "react-jsxdev",
            "react-native",
            "preserve"
          ]
        }
      ]
    },
    {
      "names": [
        "--jsxFactory"
      ],
      "description": "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'",
      "args": [
        {
          "name": "JSX factory function"
        }
      ]
    },
    {
      "names": [
        "--jsxFragmentFactory"
      ],
      "description": "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'",
      "args": [
        {
          "name": "JSX fragment"
        }
      ]
    },
    {
      "names": [
        "--jsxImportSource"
      ],
      "description": "Specify module specifier used to import the JSX factory functions when using jsx: react-jsx*",
      "args": [
        {
          "name": "string"
        }
      ]
    },
    {
      "names": [
        "--keyofStringsOnly"
      ],
      "description": "Make keyof only return strings instead of string, numbers or symbols. Legacy option"
    },
    {
      "names": [
        "--lib"
      ],
      "description": "Specify a set of bundled library declaration files that describe the target runtime environment",
      "args": [
        {
          "name": "list",
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--listEmittedFiles"
      ],
      "description": "Print the names of emitted files after a compilation"
    },
    {
      "names": [
        "--listFiles"
      ],
      "description": "Print all of the files read during the compilation"
    },
    {
      "names": [
        "--mapRoot"
      ],
      "description": "Specify the location where debugger should locate map files instead of generated locations",
      "args": [
        {
          "name": "string",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--maxNodeModuleJsDepth"
      ],
      "description": "Specify the maximum folder depth used for checking JavaScript files from node_modules. Only applicable with allowJs",
      "dependsOn": [
        "--allowJs"
      ],
      "args": [
        {
          "name": "number"
        }
      ]
    },
    {
      "names": [
        "--module"
      ],
      "description": "Specify what module code is generated",
      "args": [
        {
          "name": "module",
          "suggestions": [
            "ES6",
            "ES2015",
            "ES2020",
            "None",
            "UMD",
            "AMD",
            "System",
            "ESNext",
            "CommonJS"
          ]
        }
      ]
    },
    {
      "names": [
        "--moduleResolution"
      ],
      "description": "Specify how TypeScript looks up a file from a given module specifier",
      "args": [
        {
          "name": "module"
        }
      ]
    },
    {
      "names": [
        "--newLine"
      ],
      "description": "Set the newline character for emitting files",
      "args": [
        {
          "name": "character"
        }
      ]
    },
    {
      "names": [
        "--noEmit"
      ],
      "description": "Disable emitting file from a compilation"
    },
    {
      "names": [
        "--noEmitHelpers"
      ],
      "description": "Disable generating custom helper functions like __extends in compiled output"
    },
    {
      "names": [
        "--noEmitOnError"
      ],
      "description": "Disable emitting files if any type checking errors are reported"
    },
    {
      "names": [
        "--noErrorTruncation"
      ],
      "description": "Disable truncating types in error messages"
    },
    {
      "names": [
        "--noFallthroughCasesInSwitch"
      ],
      "description": "Enable error reporting for fallthrough cases in switch statements"
    },
    {
      "names": [
        "--noImplicitAny"
      ],
      "description": "Enable error reporting for expressions and declarations with an implied any type"
    },
    {
      "names": [
        "--noImplicitOverride"
      ],
      "description": "Ensure overriding members in derived classes are marked with an override modifier"
    },
    {
      "names": [
        "--noImplicitReturns"
      ],
      "description": "Enable error reporting for codepaths that do not explicitly return in a function"
    },
    {
      "names": [
        "--noImplicitThis"
      ],
      "description": "Enable error reporting when this is given the type any"
    },
    {
      "names": [
        "--noImplicitUseStrict"
      ],
      "description": "Disable adding 'use strict' directives in emitted JavaScript files"
    },
    {
      "names": [
        "--noLib"
      ],
      "description": "Disable including any library files, including the default lib.d.ts"
    },
    {
      "names": [
        "--noPropertyAccessFromIndexSignature"
      ],
      "description": "Enforces using indexed accessors for keys declared using an indexed type"
    },
    {
      "names": [
        "--noResolve"
      ],
      "description": "Disallow imports, requires or <reference>s from expanding the number of files TypeScript should add to a project"
    },
    {
      "names": [
        "--noStrictGenericChecks"
      ],
      "description": "Disable strict checking of generic signatures in function types"
    },
    {
      "names": [
        "--noUncheckedIndexedAccess"
      ],
      "description": "Add undefined to a type when accessed using an index"
    },
    {
      "names": [
        "--noUnusedLocals"
      ],
      "description": "Enable error reporting when a local variables aren't read"
    },
    {
      "names": [
        "--noUnusedParameters"
      ],
      "description": "Raise an error when a function parameter isn't read"
    },
    {
      "names": [
        "--outDir"
      ],
      "description": "Specify an output folder for all emitted files",
      "args": [
        {
          "name": "string",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--outFile"
      ],
      "description": "Specify a file that bundles all outputs into one JavaScript file. If declaration is true, also designates a file that bundles all .d.ts output",
      "args": [
        {
          "name": "string",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--paths"
      ],
      "description": "Specify a set of entries that re-map imports to additional lookup locations",
      "args": [
        {
          "name": "object"
        }
      ]
    },
    {
      "names": [
        "--plugins"
      ],
      "description": "Specify a list of language service plugins to include",
      "args": [
        {
          "name": "plugins",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--preserveConstEnums"
      ],
      "description": "Disable erasing const enum declarations in generated code"
    },
    {
      "names": [
        "--preserveSymlinks"
      ],
      "description": "Disable resolving symlinks to their realpath. This correlates to the same flag in node"
    },
    {
      "names": [
        "--preserveWatchOutput"
      ],
      "description": "Disable wiping the console in watch mode"
    },
    {
      "names": [
        "--pretty"
      ],
      "description": "Enable color and formatting in output to make compiler errors easier to read"
    },
    {
      "names": [
        "--reactNamespace"
      ],
      "description": "Specify the object invoked for createElement. This only applies when targeting react JSX emit",
      "args": [
        {
          "name": "object"
        }
      ]
    },
    {
      "names": [
        "--removeComments"
      ],
      "description": "Disable emitting comments"
    },
    {
      "names": [
        "--resolveJsonModule"
      ],
      "description": "Enable importing .json files"
    },
    {
      "names": [
        "--rootDir"
      ],
      "description": "Specify the root folder within your source files",
      "args": [
        {
          "name": "string",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--rootDirs"
      ],
      "description": "Allow multiple folders to be treated as one when resolving modules",
      "args": [
        {
          "name": "string",
          "isVariadic": true,
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--skipDefaultLibCheck"
      ],
      "description": "Skip type checking .d.ts files that are included with TypeScript"
    },
    {
      "names": [
        "--skipLibCheck"
      ],
      "description": "Skip type checking all .d.ts files"
    },
    {
      "names": [
        "--sourceMap"
      ],
      "description": "Create source map files for emitted JavaScript files"
    },
    {
      "names": [
        "--sourceRoot"
      ],
      "description": "Specify the root path for debuggers to find the reference source code",
      "args": [
        {
          "name": "string",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--strict"
      ],
      "description": "Enable all strict type checking options"
    },
    {
      "names": [
        "--strictBindCallApply"
      ],
      "description": "Check that the arguments for bind, call, and apply methods match the original function"
    },
    {
      "names": [
        "--strictFunctionTypes"
      ],
      "description": "When assigning functions, check to ensure parameters and the return values are subtype-compatible"
    },
    {
      "names": [
        "--strictNullChecks"
      ],
      "description": "When type checking, take into account null and undefined"
    },
    {
      "names": [
        "--strictPropertyInitialization"
      ],
      "description": "Check for class properties that are declared but not set in the constructor"
    },
    {
      "names": [
        "--stripInternal"
      ],
      "description": "Disable emitting declarations that have @internal in their JSDoc comments"
    },
    {
      "names": [
        "--suppressExcessPropertyErrors"
      ],
      "description": "Disable reporting of excess property errors during the creation of object literals"
    },
    {
      "names": [
        "--suppressImplicitAnyIndexErrors"
      ],
      "description": "Suppress noImplicitAny errors when indexing objects that lack index signatures"
    },
    {
      "names": [
        "--target"
      ],
      "description": "Set the JavaScript language version for emitted JavaScript and include compatible library declarations",
      "args": [
        {
          "suggestions": [
            "ES3",
            "ES5",
            "ES6",
            "ES2015",
            "ES7",
            "ES2016",
            "ES2017",
            "ES2018",
            "ES2019",
            "ES2020",
            "ESNext"
          ]
        }
      ]
    },
    {
      "names": [
        "--traceResolution"
      ],
      "description": "Log paths used during the moduleResolution process"
    },
    {
      "names": [
        "--tsBuildInfoFile"
      ],
      "description": "Specify the folder for .tsbuildinfo incremental compilation files",
      "args": [
        {
          "name": "string",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--typeRoots"
      ],
      "description": "Specify multiple folders that act like ./node_modules/@types",
      "args": [
        {
          "name": "folders",
          "isVariadic": true,
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--types"
      ],
      "description": "Specify type package names to be included without being referenced in a source file",
      "args": [
        {
          "name": "package names",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--useDefineForClassFields"
      ],
      "description": "Emit ECMAScript-standard-compliant class fields"
    },
    {
      "names": [
        "--useUnknownInCatchVariables"
      ],
      "description": "Default catch clause variables as unknown instead of any"
    }
  ],
  "args": [
    {
      "name": "tsc script",
      "template": "filepaths"
    }
  ]
}
