{
  "name": "typescript-language-features",
  "description": "%description%",
  "displayName": "%displayName%",
  "version": "1.0.0",
  "icon": "icon.png",
  "author": "vscode",
  "publisher": "vscode",
  "license": "MIT",
  "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
  "enableProposedApi": true,
  "engines": {
    "vscode": "^1.30.0"
  },
  "categories": ["Programming Languages"],
  "dependencies": {
    "jsonc-parser": "^2.0.1",
    "semver": "5.5.1",
    "vscode-extension-telemetry": "0.1.1",
    "vscode-nls": "^4.0.0"
  },
  "devDependencies": {
    "@types/node": "8.0.33",
    "@types/semver": "^5.5.0",
    "vscode": "^1.1.10"
  },
  "scripts": {
    "vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:typescript ./tsconfig.json"
  },
  "activationEvents": ["onLanguage:javascript", "onLanguage:javascriptreact", "onLanguage:typescript", "onLanguage:typescriptreact", "onLanguage:jsx-tags", "onCommand:typescript.reloadProjects", "onCommand:javascript.reloadProjects", "onCommand:typescript.selectTypeScriptVersion", "onCommand:javascript.goToProjectConfig", "onCommand:typescript.goToProjectConfig", "onCommand:typescript.openTsServerLog", "onCommand:workbench.action.tasks.runTask", "onCommand:_typescript.configurePlugin", "onLanguage:jsonc"],
  "main": "./dist/extension",
  "contributes": {
    "jsonValidation": [{
      "fileMatch": "package.json",
      "url": "./schemas/package.schema.json"
    }],
    "configuration": {
      "type": "object",
      "title": "%configuration.typescript%",
      "order": 20,
      "properties": {
        "typescript.tsdk": {
          "type": ["string", "null"],
          "default": null,
          "description": "%typescript.tsdk.desc%",
          "scope": "window"
        },
        "typescript.disableAutomaticTypeAcquisition": {
          "type": "boolean",
          "default": false,
          "description": "%typescript.disableAutomaticTypeAcquisition%",
          "scope": "window",
          "tags": ["usesOnlineServices"]
        },
        "typescript.npm": {
          "type": ["string", "null"],
          "default": null,
          "description": "%typescript.npm%",
          "scope": "application"
        },
        "typescript.check.npmIsInstalled": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.check.npmIsInstalled%",
          "scope": "window"
        },
        "javascript.referencesCodeLens.enabled": {
          "type": "boolean",
          "default": false,
          "description": "%javascript.referencesCodeLens.enabled%",
          "scope": "window"
        },
        "typescript.referencesCodeLens.enabled": {
          "type": "boolean",
          "default": false,
          "description": "%typescript.referencesCodeLens.enabled%",
          "scope": "window"
        },
        "typescript.implementationsCodeLens.enabled": {
          "type": "boolean",
          "default": false,
          "description": "%typescript.implementationsCodeLens.enabled%",
          "scope": "window"
        },
        "typescript.tsserver.log": {
          "type": "string",
          "enum": ["off", "terse", "normal", "verbose"],
          "default": "off",
          "description": "%typescript.tsserver.log%",
          "scope": "window"
        },
        "typescript.tsserver.pluginPaths": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "%typescript.tsserver.pluginPaths.item%"
          },
          "default": [],
          "description": "%typescript.tsserver.pluginPaths%",
          "scope": "application"
        },
        "typescript.tsserver.trace": {
          "type": "string",
          "enum": ["off", "messages", "verbose"],
          "default": "off",
          "description": "%typescript.tsserver.trace%",
          "scope": "window"
        },
        "javascript.suggest.completeFunctionCalls": {
          "type": "boolean",
          "default": false,
          "description": "%configuration.suggest.completeFunctionCalls%",
          "scope": "resource"
        },
        "typescript.suggest.completeFunctionCalls": {
          "type": "boolean",
          "default": false,
          "description": "%configuration.suggest.completeFunctionCalls%",
          "scope": "resource"
        },
        "typescript.reportStyleChecksAsWarnings": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.reportStyleChecksAsWarnings%",
          "scope": "window"
        },
        "typescript.validate.enable": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.validate.enable%",
          "scope": "window"
        },
        "typescript.format.enable": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.format.enable%",
          "scope": "window"
        },
        "typescript.format.insertSpaceAfterCommaDelimiter": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterCommaDelimiter%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterConstructor": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterConstructor%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterSemicolonInForStatements": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterSemicolonInForStatements%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceBeforeAndAfterBinaryOperators": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceBeforeAndAfterBinaryOperators%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterKeywordsInControlFlowStatements": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterKeywordsInControlFlowStatements%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterFunctionKeywordForAnonymousFunctions%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceBeforeFunctionParenthesis": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceBeforeFunctionParenthesis%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces%",
          "scope": "resource"
        },
        "typescript.format.insertSpaceAfterTypeAssertion": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterTypeAssertion%",
          "scope": "resource"
        },
        "typescript.format.placeOpenBraceOnNewLineForFunctions": {
          "type": "boolean",
          "default": false,
          "description": "%format.placeOpenBraceOnNewLineForFunctions%",
          "scope": "resource"
        },
        "typescript.format.placeOpenBraceOnNewLineForControlBlocks": {
          "type": "boolean",
          "default": false,
          "description": "%format.placeOpenBraceOnNewLineForControlBlocks%",
          "scope": "resource"
        },
        "javascript.validate.enable": {
          "type": "boolean",
          "default": true,
          "description": "%javascript.validate.enable%",
          "scope": "window"
        },
        "javascript.format.enable": {
          "type": "boolean",
          "default": true,
          "description": "%javascript.format.enable%",
          "scope": "window"
        },
        "javascript.format.insertSpaceAfterCommaDelimiter": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterCommaDelimiter%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterConstructor": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterConstructor%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterSemicolonInForStatements": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterSemicolonInForStatements%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceBeforeAndAfterBinaryOperators": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceBeforeAndAfterBinaryOperators%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterKeywordsInControlFlowStatements%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterFunctionKeywordForAnonymousFunctions%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceBeforeFunctionParenthesis": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceBeforeFunctionParenthesis%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": {
          "type": "boolean",
          "default": true,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces%",
          "scope": "resource"
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": {
          "type": "boolean",
          "default": false,
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces%",
          "scope": "resource"
        },
        "javascript.format.placeOpenBraceOnNewLineForFunctions": {
          "type": "boolean",
          "default": false,
          "description": "%format.placeOpenBraceOnNewLineForFunctions%",
          "scope": "resource"
        },
        "javascript.format.placeOpenBraceOnNewLineForControlBlocks": {
          "type": "boolean",
          "default": false,
          "description": "%format.placeOpenBraceOnNewLineForControlBlocks%",
          "scope": "resource"
        },
        "javascript.implicitProjectConfig.checkJs": {
          "type": "boolean",
          "default": false,
          "description": "%javascript.implicitProjectConfig.checkJs%",
          "scope": "window"
        },
        "javascript.implicitProjectConfig.experimentalDecorators": {
          "type": "boolean",
          "default": false,
          "markdownDescription": "%javascript.implicitProjectConfig.experimentalDecorators%",
          "scope": "window"
        },
        "javascript.suggest.names": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.names%",
          "scope": "resource"
        },
        "typescript.tsc.autoDetect": {
          "type": "string",
          "default": "on",
          "enum": ["on", "off", "build", "watch"],
          "markdownEnumDescriptions": ["%typescript.tsc.autoDetect.on%", "%typescript.tsc.autoDetect.off%", "%typescript.tsc.autoDetect.build%", "%typescript.tsc.autoDetect.watch%"],
          "description": "%typescript.tsc.autoDetect%",
          "scope": "window"
        },
        "javascript.suggest.paths": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.paths%",
          "scope": "resource"
        },
        "typescript.suggest.paths": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.paths%",
          "scope": "resource"
        },
        "javascript.suggest.autoImports": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.autoImports%",
          "scope": "resource"
        },
        "typescript.suggest.autoImports": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.autoImports%",
          "scope": "resource"
        },
        "javascript.suggest.completeJSDocs": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.completeJSDocs%",
          "scope": "resource"
        },
        "typescript.suggest.completeJSDocs": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.suggest.completeJSDocs%",
          "scope": "resource"
        },
        "typescript.locale": {
          "type": ["string", "null"],
          "enum": ["de", "es", "en", "fr", "it", "ja", "ko", "ru", "zh-CN", "zh-TW", null],
          "default": null,
          "markdownDescription": "%typescript.locale%",
          "scope": "window"
        },
        "javascript.suggestionActions.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%javascript.suggestionActions.enabled%",
          "scope": "resource"
        },
        "typescript.suggestionActions.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.suggestionActions.enabled%",
          "scope": "resource"
        },
        "javascript.preferences.quoteStyle": {
          "type": "string",
          "enum": ["auto", "single", "double"],
          "default": "auto",
          "markdownDescription": "%typescript.preferences.quoteStyle%",
          "scope": "resource"
        },
        "typescript.preferences.quoteStyle": {
          "type": "string",
          "enum": ["auto", "single", "double"],
          "default": "auto",
          "markdownDescription": "%typescript.preferences.quoteStyle%",
          "scope": "resource"
        },
        "javascript.preferences.importModuleSpecifier": {
          "type": "string",
          "enum": ["auto", "relative", "non-relative"],
          "markdownEnumDescriptions": ["%typescript.preferences.importModuleSpecifier.auto%", "%typescript.preferences.importModuleSpecifier.relative%", "%typescript.preferences.importModuleSpecifier.nonRelative%"],
          "default": "auto",
          "description": "%typescript.preferences.importModuleSpecifier%",
          "scope": "resource"
        },
        "typescript.preferences.importModuleSpecifier": {
          "type": "string",
          "enum": ["auto", "relative", "non-relative"],
          "markdownEnumDescriptions": ["%typescript.preferences.importModuleSpecifier.auto%", "%typescript.preferences.importModuleSpecifier.relative%", "%typescript.preferences.importModuleSpecifier.nonRelative%"],
          "default": "auto",
          "description": "%typescript.preferences.importModuleSpecifier%",
          "scope": "resource"
        },
        "javascript.preferences.renameShorthandProperties": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.preferences.renameShorthandProperties%",
          "scope": "resource"
        },
        "typescript.preferences.renameShorthandProperties": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.preferences.renameShorthandProperties%",
          "scope": "resource"
        },
        "typescript.updateImportsOnFileMove.enabled": {
          "type": "string",
          "enum": ["prompt", "always", "never"],
          "markdownEnumDescriptions": ["%typescript.updateImportsOnFileMove.enabled.prompt%", "%typescript.updateImportsOnFileMove.enabled.always%", "%typescript.updateImportsOnFileMove.enabled.never%"],
          "default": "prompt",
          "description": "%typescript.updateImportsOnFileMove.enabled%",
          "scope": "resource"
        },
        "javascript.updateImportsOnFileMove.enabled": {
          "type": "string",
          "enum": ["prompt", "always", "never"],
          "markdownEnumDescriptions": ["%typescript.updateImportsOnFileMove.enabled.prompt%", "%typescript.updateImportsOnFileMove.enabled.always%", "%typescript.updateImportsOnFileMove.enabled.never%"],
          "default": "prompt",
          "description": "%typescript.updateImportsOnFileMove.enabled%",
          "scope": "resource"
        },
        "typescript.autoClosingTags": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.autoClosingTags%"
        },
        "javascript.autoClosingTags": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.autoClosingTags%"
        },
        "javascript.suggest.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.suggest.enabled%",
          "scope": "resource"
        },
        "typescript.suggest.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.suggest.enabled%",
          "scope": "resource"
        },
        "typescript.surveys.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%configuration.surveys.enabled%",
          "scope": "window"
        }
      }
    },
    "commands": [{
      "command": "typescript.reloadProjects",
      "title": "%reloadProjects.title%",
      "category": "TypeScript"
    }, {
      "command": "javascript.reloadProjects",
      "title": "%reloadProjects.title%",
      "category": "JavaScript"
    }, {
      "command": "typescript.selectTypeScriptVersion",
      "title": "%typescript.selectTypeScriptVersion.title%",
      "category": "TypeScript"
    }, {
      "command": "typescript.goToProjectConfig",
      "title": "%goToProjectConfig.title%",
      "category": "TypeScript"
    }, {
      "command": "javascript.goToProjectConfig",
      "title": "%goToProjectConfig.title%",
      "category": "JavaScript"
    }, {
      "command": "typescript.openTsServerLog",
      "title": "%typescript.openTsServerLog.title%",
      "category": "TypeScript"
    }, {
      "command": "typescript.restartTsServer",
      "title": "%typescript.restartTsServer%",
      "category": "TypeScript"
    }],
    "menus": {
      "commandPalette": [{
        "command": "typescript.reloadProjects",
        "when": "editorLangId == typescript && typescript.isManagedFile"
      }, {
        "command": "typescript.reloadProjects",
        "when": "editorLangId == typescriptreact && typescript.isManagedFile"
      }, {
        "command": "javascript.reloadProjects",
        "when": "editorLangId == javascript && typescript.isManagedFile"
      }, {
        "command": "javascript.reloadProjects",
        "when": "editorLangId == javascriptreact && typescript.isManagedFile"
      }, {
        "command": "typescript.goToProjectConfig",
        "when": "editorLangId == typescript && typescript.isManagedFile"
      }, {
        "command": "typescript.goToProjectConfig",
        "when": "editorLangId == typescriptreact"
      }, {
        "command": "javascript.goToProjectConfig",
        "when": "editorLangId == javascript && typescript.isManagedFile"
      }, {
        "command": "javascript.goToProjectConfig",
        "when": "editorLangId == javascriptreact && typescript.isManagedFile"
      }, {
        "command": "typescript.selectTypeScriptVersion",
        "when": "typescript.isManagedFile"
      }, {
        "command": "typescript.openTsServerLog",
        "when": "typescript.isManagedFile"
      }, {
        "command": "typescript.restartTsServer",
        "when": "typescript.isManagedFile"
      }]
    },
    "breakpoints": [{
      "language": "typescript"
    }, {
      "language": "typescriptreact"
    }],
    "taskDefinitions": [{
      "type": "typescript",
      "required": ["tsconfig"],
      "properties": {
        "tsconfig": {
          "type": "string",
          "description": "%taskDefinition.tsconfig.description%"
        },
        "option": {
          "type": "string"
        }
      }
    }],
    "problemPatterns": [{
      "name": "tsc",
      "regexp": "^([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+TS(\\d+)\\s*:\\s*(.*)$",
      "file": 1,
      "line": 2,
      "column": 3,
      "severity": 4,
      "code": 5,
      "message": 6
    }],
    "problemMatchers": [{
      "name": "tsc",
      "label": "%typescript.problemMatchers.tsc.label%",
      "owner": "typescript",
      "source": "ts",
      "applyTo": "closedDocuments",
      "fileLocation": ["relative", "${cwd}"],
      "pattern": "$tsc"
    }, {
      "name": "tsc-watch",
      "label": "%typescript.problemMatchers.tscWatch.label%",
      "owner": "typescript",
      "source": "ts",
      "applyTo": "closedDocuments",
      "fileLocation": ["relative", "${cwd}"],
      "pattern": "$tsc",
      "background": {
        "activeOnStart": true,
        "beginsPattern": {
          "regexp": "^\\s*(?:message TS6032:|\\[?\\d{1,2}:\\d{1,2}:\\d{1,2}(?: AM| PM| a\\.m\\.| p\\.m\\.)?(?:\\]| -)) File change detected\\. Starting incremental compilation\\.\\.\\."
        },
        "endsPattern": {
          "regexp": "^\\s*(?:message TS6042:|\\[?\\d{1,2}:\\d{1,2}:\\d{1,2}(?: AM| PM| a\\.m\\.| p\\.m\\.)?(?:\\]| -)) (?:Compilation complete\\.|Found \\d+ errors?\\.) Watching for file changes\\."
        }
      }
    }]
  }
}