{
  "name": "coc-tsserver",
  "version": "2.3.1",
  "description": "javascript and typescript language features extension of coc.nvim",
  "main": "lib/index.js",
  "publisher": "chemzqm",
  "engines": {
    "coc": "^0.0.82"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/neoclide/coc-tsserver.git"
  },
  "keywords": [
    "coc.nvim",
    "tsserver",
    "typescript",
    "javascript"
  ],
  "scripts": {
    "prepare": "node esbuild.js"
  },
  "activationEvents": [
    "onLanguage:javascript",
    "onLanguage:javascriptreact",
    "onLanguage:javascript.jsx",
    "onLanguage:typescript",
    "onLanguage:typescript.tsx",
    "onLanguage:typescript.jsx",
    "onLanguage:typescriptreact",
    "onLanguage:jsx-tags",
    "onLanguage:jsonc",
    "onCommand:_typescript.configurePlugin",
    "onCommand:tsserver.reloadProjects",
    "onCommand:tsserver.goToProjectConfig",
    "onCommand:tsserver.openTsServerLog",
    "onCommand:tsserver.goToSourceDefinition",
    "onCommand:tsserver.watchBuild"
  ],
  "contributes": {
    "rootPatterns": [
      {
        "filetype": "javascript",
        "patterns": [
          "package.json",
          "jsconfig.json"
        ]
      },
      {
        "filetype": "javascriptreact",
        "patterns": [
          "package.json",
          "jsconfig.json"
        ]
      },
      {
        "filetype": "typescript",
        "patterns": [
          "package.json",
          "tsconfig.json"
        ]
      },
      {
        "filetype": "typescriptreact",
        "patterns": [
          "package.json",
          "tsconfig.json"
        ]
      }
    ],
    "commands": [
      {
        "title": "Reload current project",
        "category": "TSServer",
        "command": "tsserver.reloadProjects"
      },
      {
        "title": "Open log file of tsserver.",
        "category": "TSServer",
        "command": "tsserver.openTsServerLog"
      },
      {
        "title": "Open project config file.",
        "category": "TSServer",
        "command": "tsserver.goToProjectConfig"
      },
      {
        "title": "Restart tsserver",
        "category": "TSServer",
        "command": "tsserver.restart"
      },
      {
        "title": "Find File References",
        "category": "TSServer",
        "command": "tsserver.findAllFileReferences"
      },
      {
        "command": "tsserver.goToSourceDefinition",
        "title": "Go to Source Definition",
        "category": "TSServer"
      },
      {
        "title": "Run `tsc --watch` for current project by use vim's job feature.",
        "category": "TSServer",
        "command": "tsserver.watchBuild"
      },
      {
        "title": "Fix autofixable problems of current document.",
        "category": "TSServer",
        "command": "tsserver.executeAutofix"
      },
      {
        "title": "Choose different typescript version for current project",
        "category": "TSServer",
        "command": "tsserver.chooseVersion"
      }
    ],
    "configuration": {
      "type": "object",
      "title": "Tsserver",
      "properties": {
        "tsserver.enable": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Enable running of tsserver."
        },
        "tsserver.tsconfigPath": {
          "type": "string",
          "default": "tsconfig.json",
          "scope": "resource",
          "description": "Path to tsconfig file for the `tsserver.watchBuild` command. Defaults to `tsconfig.json`."
        },
        "tsserver.locale": {
          "type": "string",
          "default": "auto",
          "enum": [
            "auto",
            "de",
            "es",
            "en",
            "fr",
            "it",
            "ja",
            "ko",
            "ru",
            "zh-CN",
            "zh-TW"
          ],
          "markdownDescription": "Sets the locale used to report JavaScript and TypeScript errors. Defaults to use VS Code's locale.",
          "scope": "window"
        },
        "tsserver.useLocalTsdk": {
          "type": "boolean",
          "default": false,
          "scope": "resource",
          "description": "Use tsserver from typescript module in workspace folder, ignore tsserver.tsdk configuration."
        },
        "tsserver.maxTsServerMemory": {
          "type": "number",
          "default": 3072,
          "scope": "application",
          "description": "Set the maximum amount of memory to allocate to the TypeScript server process"
        },
        "tsserver.watchOptions": {
          "type": "object",
          "description": "Configure which watching strategies should be used to keep track of files and directories. Requires using TypeScript 3.8+ in the workspace.",
          "scope": "application",
          "properties": {
            "watchFile": {
              "type": "string",
              "description": "Strategy for how individual files are watched.",
              "enum": [
                "fixedPollingInterval",
                "priorityPollingInterval",
                "dynamicPriorityPolling",
                "useFsEvents",
                "useFsEventsOnParentDirectory"
              ],
              "default": "useFsEvents"
            },
            "watchDirectory": {
              "type": "string",
              "description": "Strategy for how entire directory trees are watched under systems that lack recursive file-watching functionality.",
              "enum": [
                "fixedPollingInterval",
                "dynamicPriorityPolling",
                "useFsEvents"
              ],
              "default": "useFsEvents"
            },
            "fallbackPolling": {
              "type": "string",
              "description": "When using file system events, this option specifies the polling strategy that gets used when the system runs out of native file watchers and/or doesn’t support native file watchers.",
              "enum": [
                "fixedPollingInterval",
                "priorityPollingInterval",
                "dynamicPriorityPolling"
              ]
            },
            "synchronousWatchDirectory": {
              "type": "boolean",
              "description": "Disable deferred watching on directories. Deferred watching is useful when lots of file changes might occur at once (e.g. a change in node_modules from running npm install), but you might want to disable it with this flag for some less-common setups."
            }
          }
        },
        "tsserver.tsdk": {
          "type": "string",
          "default": "",
          "markdownDescription": "Specifies the folder path to the tsserver and `lib*.d.ts` files under a TypeScript install to use for IntelliSense, for example: `./node_modules/typescript/lib`.\n\n- When specified as a user setting, the TypeScript version from `tsserver.tsdk` automatically replaces the built-in TypeScript version.\n- When specified as a workspace setting, the tsserver is used when `tsserver.useLocalTsdk` is true.\nUse command `:CocCommand tsserver.chooseVersion` to choose different typescript version.",
          "scope": "resource"
        },
        "tsserver.socketPath": {
          "type": [
            "string",
            "null"
          ],
          "default": null,
          "markdownDescription": "Socket path used to connect to tsserver, the socket should be opened already (use tools like socat to start server and pipe messages to sdtio of tsserver), when exists, command line arguments related configurations wont' works. Configure the path like \"127.0.0.1:7070\"",
          "scope": "resource"
        },
        "tsserver.npm": {
          "type": "string",
          "default": "",
          "markdownDescription": "Specifies the path to the npm executable used for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).",
          "scope": "application"
        },
        "tsserver.log": {
          "type": "string",
          "default": "off",
          "enum": [
            "normal",
            "terse",
            "verbose",
            "off"
          ],
          "scope": "application",
          "description": "Log level of tsserver"
        },
        "tsserver.trace.server": {
          "type": "string",
          "default": "off",
          "enum": [
            "off",
            "messages",
            "verbose"
          ],
          "scope": "application",
          "description": "Trace level of tsserver"
        },
        "tsserver.enableTracing": {
          "type": "boolean",
          "default": false,
          "description": "Enables tracing TS server performance to a directory. These trace files can be used to diagnose TS Server performance issues. The log may contain file paths, source code, and other potentially sensitive information from your project.",
          "scope": "window"
        },
        "tsserver.pluginPaths": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Either an absolute or relative path. Relative path will be resolved against workspace folder(s)."
          },
          "default": [],
          "description": "Additional paths to discover TypeScript Language Service plugins.",
          "scope": "machine"
        },
        "tsserver.reportStyleChecksAsWarnings": {
          "type": "boolean",
          "scope": "window",
          "default": true,
          "description": "Report style checks as warnings."
        },
        "tsserver.implicitProjectConfig.checkJs": {
          "type": "boolean",
          "default": false,
          "scope": "window",
          "description": "Enable checkJs for implicit project"
        },
        "tsserver.implicitProjectConfig.module": {
          "type": "string",
          "markdownDescription": "Sets the module system for the program. See more: https://www.typescriptlang.org/tsconfig#module.",
          "default": "ESNext",
          "enum": [
            "CommonJS",
            "AMD",
            "System",
            "UMD",
            "ES6",
            "ES2015",
            "ES2020",
            "ESNext",
            "None",
            "ES2022",
            "Node12",
            "NodeNext"
          ],
          "scope": "window"
        },
        "tsserver.implicitProjectConfig.target": {
          "type": "string",
          "default": "ES2020",
          "markdownDescription": "Set target JavaScript language version for emitted JavaScript and include library declarations. See more: https://www.typescriptlang.org/tsconfig#target.",
          "enum": [
            "ES3",
            "ES5",
            "ES6",
            "ES2015",
            "ES2016",
            "ES2017",
            "ES2018",
            "ES2019",
            "ES2020",
            "ES2021",
            "ES2022",
            "ESNext"
          ],
          "scope": "window"
        },
        "tsserver.implicitProjectConfig.strictNullChecks": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable/disable [strict null checks](https://www.typescriptlang.org/tsconfig#strictNullChecks) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.",
          "scope": "window"
        },
        "tsserver.implicitProjectConfig.strictFunctionTypes": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable/disable [strict function types](https://www.typescriptlang.org/tsconfig#strictFunctionTypes) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.",
          "scope": "window"
        },
        "tsserver.implicitProjectConfig.experimentalDecorators": {
          "type": "boolean",
          "default": false,
          "scope": "window",
          "description": "Enable experimentalDecorators for implicit project"
        },
        "tsserver.disableAutomaticTypeAcquisition": {
          "type": "boolean",
          "default": false,
          "scope": "window",
          "markdownDescription": "Disables [automatic type acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition). Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries."
        },
        "tsserver.useSyntaxServer": {
          "type": "string",
          "scope": "window",
          "description": "Controls if TypeScript launches a dedicated server to more quickly handle syntax related operations, such as computing code folding.",
          "default": "auto",
          "enum": [
            "always",
            "never",
            "auto"
          ],
          "enumDescriptions": [
            "Use a lighter weight syntax server to handle all IntelliSense operations. This syntax server can only provide IntelliSense for opened files.",
            "Don't use a dedicated syntax server. Use a single server to handle all IntelliSense operations.",
            "Spawn both a full server and a lighter weight server dedicated to syntax operations. The syntax server is used to speed up syntax operations and provide IntelliSense while projects are loading."
          ]
        },
        "tsserver.disabledSchemes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "git",
            "fugitive",
            "vsls",
            "diffview",
            "github",
            "azurerepos"
          ],
          "markdownDescription": "Document schemes that should be disabled for tsserver to avoid tsserver error.",
          "scope": "application"
        },
        "tsserver.experimental.enableProjectDiagnostics": {
          "type": "boolean",
          "default": false,
          "description": "(Experimental) Enables project wide error reporting.",
          "scope": "window",
          "tags": [
            "experimental"
          ]
        },
        "typescript.check.npmIsInstalled": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Check if npm is installed for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).",
          "scope": "window"
        },
        "typescript.showUnused": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Show unused variable hint."
        },
        "typescript.showDeprecated": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Show deprecated variable hint."
        },
        "typescript.updateImportsOnFileMove.enabled": {
          "type": "string",
          "enum": [
            "prompt",
            "always",
            "never"
          ],
          "markdownEnumDescriptions": [
            "Prompt on each rename.",
            "Always update paths automatically.",
            "Never rename paths and don't prompt."
          ],
          "default": "prompt",
          "description": "Enable/disable automatic updating of import paths when you rename or move a file in VS Code.",
          "scope": "resource"
        },
        "typescript.implementationsCodeLens.enabled": {
          "type": "boolean",
          "scope": "window",
          "default": false,
          "description": "Enable codeLens for implementations"
        },
        "typescript.referencesCodeLens.enabled": {
          "type": "boolean",
          "scope": "window",
          "default": false,
          "description": "Enable codeLens for references"
        },
        "typescript.referencesCodeLens.showOnAllFunctions": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable references CodeLens on all functions in typescript files.",
          "scope": "window"
        },
        "typescript.preferences.importModuleSpecifier": {
          "type": "string",
          "default": "shortest",
          "scope": "window",
          "description": "Preferred path style for auto imports.",
          "enumDescriptions": [
            "Prefers a non-relative import only if one is available that has fewer path segments than a relative import",
            "Prefers a relative path to the imported file location",
            "Prefers a non-relative import based on the `baseUrl` or `paths` configured in your `jsconfig.json` / `tsconfig.json`.",
            "Prefers a non-relative import only if the relative import path would leave the package or project directory. Requires using TypeScript 4.2+ in the workspace."
          ],
          "enum": [
            "shortest",
            "relative",
            "non-relative",
            "project-relative"
          ]
        },
        "typescript.preferences.importModuleSpecifierEnding": {
          "type": "string",
          "enum": [
            "auto",
            "minimal",
            "index",
            "js"
          ],
          "default": "auto",
          "description": "Preferred path ending for auto imports.",
          "scope": "resource"
        },
        "typescript.preferences.jsxAttributeCompletionStyle": {
          "type": "string",
          "enum": [
            "auto",
            "braces",
            "none"
          ],
          "markdownEnumDescriptions": [
            "Insert `={}` or `=\"\"` after attribute names based on the prop type.",
            "Insert `={}` after attribute names.",
            "Only insert attribute names."
          ],
          "default": "auto",
          "description": "Preferred style for JSX attribute completions.",
          "scope": "resource"
        },
        "typescript.preferences.includePackageJsonAutoImports": {
          "type": "string",
          "enum": [
            "auto",
            "on",
            "off"
          ],
          "enumDescriptions": [
            "Search dependencies based on estimated performance impact.",
            "Always search dependencies.",
            "Never search dependencies."
          ],
          "default": "auto",
          "markdownDescription": "Enable/disable searching `package.json` dependencies for available auto imports.",
          "scope": "window"
        },
        "typescript.preferences.quoteStyle": {
          "type": "string",
          "default": "auto",
          "markdownDescription": "Preferred quote style to use for quick fixes.",
          "markdownEnumDescriptions": [
            "Infer quote type from existing code",
            "Always use single quotes: `'`",
            "Always use double quotes: `\"`"
          ],
          "enum": [
            "auto",
            "single",
            "double"
          ],
          "scope": "language-overridable"
        },
        "typescript.preferences.useAliasesForRenames": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace.",
          "scope": "language-overridable"
        },
        "typescript.preferences.autoImportFileExcludePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "markdownDescription": "Specify glob patterns of files to exclude from auto imports. Requires using TypeScript 4.8 or newer in the workspace.",
          "scope": "resource"
        },
        "typescript.preferences.preferTypeOnlyAutoImports": {
          "type": "boolean",
          "default": false,
          "markdownDescription": "Include the `type` keyword in auto-imports whenever possible. Requires using TypeScript 5.3+ in the workspace.",
          "scope": "resource"
        },
        "typescript.preferences.renameShorthandProperties": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace.",
          "deprecationMessage": "The setting 'typescript.preferences.renameShorthandProperties' has been deprecated in favor of 'typescript.preferences.useAliasesForRenames'",
          "scope": "language-overridable"
        },
        "typescript.preferences.renameMatchingJsxTags": {
          "type": "boolean",
          "default": true,
          "description": "When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.",
          "scope": "language-overridable"
        },
        "typescript.suggestionActions.enabled": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Enable/disable suggestion diagnostics for TypeScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace."
        },
        "typescript.validate.enable": {
          "type": "boolean",
          "default": true,
          "scope": "window",
          "description": "Enable/disable TypeScript validation."
        },
        "typescript.suggest.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enabled/disable autocomplete suggestions.",
          "scope": "language-overridable"
        },
        "typescript.suggest.paths": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable/disable suggest paths in import statement and require calls"
        },
        "typescript.suggest.autoImports": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable/disable auto import suggests."
        },
        "typescript.suggest.completeFunctionCalls": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable snippet for method suggestion"
        },
        "typescript.suggest.includeCompletionsForImportStatements": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable auto-import-style completions on partially-typed import statements. Requires using TypeScript 4.3+ in the workspace.",
          "scope": "resource"
        },
        "typescript.suggest.includeCompletionsWithSnippetText": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable snippet completions from TS Server. Requires using TypeScript 4.3+ in the workspace.",
          "scope": "resource"
        },
        "typescript.suggest.classMemberSnippets.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable snippet completions for class members. Requires using TypeScript 4.5+ in the workspace",
          "scope": "resource"
        },
        "typescript.suggest.jsdoc.generateReturns": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable/disable generating `@return` annotations for JSDoc templates. Requires using TypeScript 4.2+ in the workspace.",
          "scope": "language-overridable"
        },
        "typescript.format.enable": {
          "type": "boolean",
          "default": true,
          "scope": "window",
          "description": "Enable format for typescript."
        },
        "typescript.format.insertSpaceAfterCommaDelimiter": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after a comma delimiter.",
          "default": true
        },
        "typescript.format.insertSpaceAfterConstructor": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after the constructor keyword.",
          "default": false
        },
        "typescript.format.insertSpaceAfterSemicolonInForStatements": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after a semicolon in a for statement.",
          "default": true
        },
        "typescript.format.insertSpaceBeforeAndAfterBinaryOperators": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after a binary operator.",
          "default": true
        },
        "typescript.format.insertSpaceAfterKeywordsInControlFlowStatements": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after keywords in a control flow statement.",
          "default": true
        },
        "typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after function keyword for anonymous functions.",
          "default": true
        },
        "typescript.format.insertSpaceBeforeFunctionParenthesis": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling before function argument parentheses.",
          "default": false
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after opening and before closing non-empty parenthesis.",
          "default": false
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after opening and before closing non-empty brackets.",
          "default": false
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after opening and before closing empty braces.",
          "default": false
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after opening and before closing non-empty braces.",
          "default": false
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after opening and before closing template string braces.",
          "default": false
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after opening and before closing JSX expression braces.",
          "default": false
        },
        "typescript.format.insertSpaceAfterTypeAssertion": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines space handling after type assertions in TypeScript.",
          "default": false
        },
        "typescript.format.placeOpenBraceOnNewLineForFunctions": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines whether an open brace is put onto a new line for functions or not.",
          "default": false
        },
        "typescript.format.placeOpenBraceOnNewLineForControlBlocks": {
          "type": "boolean",
          "scope": "resource",
          "description": "Defines whether an open brace is put onto a new line for control blocks or not.",
          "default": false
        },
        "typescript.format.semicolons": {
          "type": "string",
          "default": "ignore",
          "description": "Defines handling of optional semicolons. Requires using TypeScript 3.7 or newer in the workspace.",
          "scope": "resource",
          "enum": [
            "ignore",
            "insert",
            "remove"
          ]
        },
        "typescript.suggest.includeAutomaticOptionalChainCompletions": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires TS 3.7+ and strict null checks to be enabled.",
          "scope": "language-overridable"
        },
        "typescript.workspaceSymbols.scope": {
          "type": "string",
          "description": "Controls which files are searched by [go to symbol in workspace](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name).",
          "enum": [
            "allOpenProjects",
            "currentProject"
          ],
          "enumDescriptions": [
            "Search all open JavaScript or TypeScript projects for symbols. Requires using TypeScript 3.9 or newer in the workspace.",
            "Only search for symbols in the current JavaScript or TypeScript project."
          ],
          "default": "allOpenProjects",
          "scope": "window"
        },
        "typescript.autoClosingTags": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable/disable automatic closing of JSX tags."
        },
        "typescript.preferGoToSourceDefinition": {
          "type": "boolean",
          "default": false,
          "description": "Makes Go to Definition avoid type declaration files when possible by triggering Go to Source Definition instead. Requires using TypeScript 4.7+ in the workspace.",
          "scope": "window"
        },
        "javascript.showUnused": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Show unused variable hint."
        },
        "javascript.showDeprecated": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Show deprecated variable hint."
        },
        "javascript.updateImportsOnFileMove.enabled": {
          "type": "string",
          "enum": [
            "prompt",
            "always",
            "never"
          ],
          "markdownEnumDescriptions": [
            "Prompt on each rename.",
            "Always update paths automatically.",
            "Never rename paths and don't prompt."
          ],
          "default": "prompt",
          "description": "Enable/disable automatic updating of import paths when you rename or move a file in VS Code.",
          "scope": "resource"
        },
        "javascript.implementationsCodeLens.enabled": {
          "type": "boolean",
          "scope": "window",
          "description": "Enable/disable implementations CodeLens. This CodeLens shows the implementers of an interface.",
          "default": false
        },
        "javascript.referencesCodeLens.enabled": {
          "type": "boolean",
          "scope": "window",
          "description": "Enable/disable references CodeLens in JavaScript files.",
          "default": false
        },
        "javascript.referencesCodeLens.showOnAllFunctions": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable references CodeLens on all functions in JavaScript files.",
          "scope": "window"
        },
        "javascript.preferences.importModuleSpecifier": {
          "type": "string",
          "default": "shortest",
          "description": "Preferred path style for auto imports.",
          "scope": "language-overridable",
          "enumDescriptions": [
            "Prefers a non-relative import only if one is available that has fewer path segments than a relative import",
            "Prefers a relative path to the imported file location",
            "Prefers a non-relative import based on the `baseUrl` or `paths` configured in your `jsconfig.json` / `tsconfig.json`.",
            "Prefers a non-relative import only if the relative import path would leave the package or project directory. Requires using TypeScript 4.2+ in the workspace."
          ],
          "enum": [
            "shortest",
            "relative",
            "non-relative",
            "project-relative"
          ]
        },
        "javascript.preferences.importModuleSpecifierEnding": {
          "type": "string",
          "enum": [
            "auto",
            "minimal",
            "index",
            "js"
          ],
          "scope": "language-overridable",
          "default": "auto",
          "description": "Preferred path ending for auto imports."
        },
        "javascript.preferences.jsxAttributeCompletionStyle": {
          "type": "string",
          "enum": [
            "auto",
            "braces",
            "none"
          ],
          "markdownEnumDescriptions": [
            "Insert `={}` or `=\"\"` after attribute names based on the prop type.",
            "Insert `={}` after attribute names.",
            "Only insert attribute names."
          ],
          "default": "auto",
          "description": "Preferred style for JSX attribute completions.",
          "scope": "language-overridable"
        },
        "javascript.preferences.quoteStyle": {
          "type": "string",
          "default": "auto",
          "scope": "language-overridable",
          "markdownDescription": "Preferred quote style to use for quick fixes.",
          "markdownEnumDescriptions": [
            "Infer quote type from existing code",
            "Always use single quotes: `'`",
            "Always use double quotes: `\"`"
          ],
          "enum": [
            "auto",
            "single",
            "double"
          ]
        },
        "javascript.preferences.useAliasesForRenames": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace.",
          "scope": "language-overridable"
        },
        "javascript.preferences.autoImportFileExcludePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "markdownDescription": "Specify glob patterns of files to exclude from auto imports. Requires using TypeScript 4.8 or newer in the workspace.",
          "scope": "resource"
        },
        "javascript.preferences.renameShorthandProperties": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace.",
          "deprecationMessage": "The setting 'typescript.preferences.renameShorthandProperties' has been deprecated in favor of 'typescript.preferences.useAliasesForRenames'",
          "scope": "language-overridable"
        },
        "javascript.preferences.renameMatchingJsxTags": {
          "type": "boolean",
          "default": true,
          "description": "When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.",
          "scope": "language-overridable"
        },
        "javascript.validate.enable": {
          "type": "boolean",
          "default": true,
          "scope": "window",
          "description": "Enable/disable JavaScript validation."
        },
        "javascript.suggestionActions.enabled": {
          "type": "boolean",
          "default": true,
          "scope": "resource",
          "description": "Enable/disable suggestion diagnostics for JavaScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace."
        },
        "javascript.suggest.names": {
          "type": "boolean",
          "scope": "language-overridable",
          "markdownDescription": "Enable/disable including unique names from the file in JavaScript suggestions. Note that name suggestions are always disabled in JavaScript code that is semantically checked using `@ts-check` or `checkJs`.",
          "default": true
        },
        "javascript.suggest.enabled": {
          "type": "boolean",
          "scope": "language-overridable",
          "description": "Enabled/disable autocomplete suggestions.",
          "default": true
        },
        "javascript.suggest.paths": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable/disable suggest paths in import statement and require calls"
        },
        "javascript.suggest.autoImports": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable/disable auto import suggests."
        },
        "javascript.suggest.completeFunctionCalls": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable snippet for method suggestion"
        },
        "javascript.suggest.includeCompletionsForImportStatements": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable auto-import-style completions on partially-typed import statements. Requires using TypeScript 4.3+ in the workspace.",
          "scope": "resource"
        },
        "javascript.suggest.classMemberSnippets.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable snippet completions for class members. Requires using TypeScript 4.5+ in the workspace",
          "scope": "resource"
        },
        "javascript.suggest.jsdoc.generateReturns": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable/disable generating `@return` annotations for JSDoc templates. Requires using TypeScript 4.2+ in the workspace.",
          "scope": "language-overridable"
        },
        "javascript.format.enable": {
          "type": "boolean",
          "default": true,
          "scope": "window",
          "description": "Enable format for javascript."
        },
        "javascript.format.insertSpaceAfterCommaDelimiter": {
          "type": "boolean",
          "scope": "resource",
          "default": true
        },
        "javascript.format.insertSpaceAfterConstructor": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterSemicolonInForStatements": {
          "type": "boolean",
          "scope": "resource",
          "default": true
        },
        "javascript.format.insertSpaceBeforeAndAfterBinaryOperators": {
          "type": "boolean",
          "scope": "resource",
          "default": true
        },
        "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": {
          "type": "boolean",
          "scope": "resource",
          "default": true
        },
        "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": {
          "type": "boolean",
          "scope": "resource",
          "default": true
        },
        "javascript.format.insertSpaceBeforeFunctionParenthesis": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.insertSpaceAfterTypeAssertion": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.placeOpenBraceOnNewLineForFunctions": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.format.placeOpenBraceOnNewLineForControlBlocks": {
          "type": "boolean",
          "scope": "resource",
          "default": false
        },
        "javascript.suggest.includeAutomaticOptionalChainCompletions": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires TS 3.7+ and strict null checks to be enabled.",
          "scope": "resource"
        },
        "typescript.inlayHints.parameterNames.enabled": {
          "type": "string",
          "enum": [
            "none",
            "literals",
            "all"
          ],
          "enumDescriptions": [
            "Disable parameter name hints.",
            "Enable parameter name hints only for literal arguments.",
            "Enable parameter name hints for literal and non-literal arguments."
          ],
          "default": "none",
          "description": "Enable/disable inlay hints of parameter names.",
          "scope": "resource"
        },
        "typescript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": {
          "type": "boolean",
          "default": true,
          "description": "Suppress parameter name hints on arguments whose text is identical to the parameter name.",
          "scope": "resource"
        },
        "typescript.inlayHints.parameterTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of parameter types.",
          "scope": "resource"
        },
        "typescript.inlayHints.variableTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of variable types.",
          "scope": "resource"
        },
        "typescript.inlayHints.propertyDeclarationTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of property declarations.",
          "scope": "resource"
        },
        "typescript.inlayHints.functionLikeReturnTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of return type for function signatures.",
          "scope": "resource"
        },
        "typescript.inlayHints.enumMemberValues.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of enum member values.",
          "scope": "resource"
        },
        "typescript.inlayHints.variableTypes.suppressWhenTypeMatchesName": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Suppress type hints on variables whose name is identical to the type name. Requires using TypeScript 4.8+ in the workspace.",
          "scope": "resource"
        },
        "javascript.inlayHints.parameterNames.enabled": {
          "type": "string",
          "enum": [
            "none",
            "literals",
            "all"
          ],
          "enumDescriptions": [
            "Disable parameter name hints.",
            "Enable parameter name hints only for literal arguments.",
            "Enable parameter name hints for literal and non-literal arguments."
          ],
          "default": "none",
          "description": "Enable/disable inlay hints of parameter names.",
          "scope": "resource"
        },
        "javascript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": {
          "type": "boolean",
          "default": true,
          "description": "Suppress parameter name hints on arguments whose text is identical to the parameter name.",
          "scope": "resource"
        },
        "javascript.inlayHints.parameterTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of parameter types.",
          "scope": "resource"
        },
        "javascript.inlayHints.variableTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of variable types.",
          "scope": "resource"
        },
        "javascript.inlayHints.propertyDeclarationTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of property declarations.",
          "scope": "resource"
        },
        "javascript.inlayHints.functionLikeReturnTypes.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of return type for function signatures.",
          "scope": "resource"
        },
        "javascript.inlayHints.enumMemberValues.enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable/disable inlay hints of enum member values.",
          "scope": "resource"
        },
        "javascript.inlayHints.variableTypes.suppressWhenTypeMatchesName": {
          "type": "boolean",
          "default": true,
          "markdownDescription": "Suppress type hints on variables whose name is identical to the type name. Requires using TypeScript 4.8+ in the workspace.",
          "scope": "resource"
        },
        "javascript.autoClosingTags": {
          "type": "boolean",
          "default": true,
          "scope": "language-overridable",
          "description": "Enable/disable automatic closing of JSX tags."
        },
        "javascript.format.semicolons": {
          "type": "string",
          "default": "ignore",
          "description": "Defines handling of optional semicolons. Requires using TypeScript 3.7 or newer in the workspace.",
          "scope": "resource",
          "enum": [
            "ignore",
            "insert",
            "remove"
          ]
        },
        "javascript.preferGoToSourceDefinition": {
          "type": "boolean",
          "default": false,
          "description": "Makes Go to Definition avoid type declaration files when possible by triggering Go to Source Definition instead. Requires using TypeScript 4.7+ in the workspace.",
          "scope": "window"
        },
        "javascript.suggest.completeJSDocs": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable suggestion to complete JSDoc comments.",
          "scope": "language-overridable"
        },
        "typescript.suggest.completeJSDocs": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable suggestion to complete JSDoc comments.",
          "scope": "language-overridable"
        },
        "javascript.suggest.objectLiteralMethodSnippets.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable snippet completions for methods in object literals. Requires using TypeScript 4.7+ in the workspace",
          "scope": "resource"
        },
        "typescript.suggest.objectLiteralMethodSnippets.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable/disable snippet completions for methods in object literals. Requires using TypeScript 4.7+ in the workspace",
          "scope": "resource"
        }
      }
    },
    "snippets": [
      {
        "language": "typescript",
        "path": "./snippets/typescript.json"
      },
      {
        "language": "typescriptreact",
        "path": "./snippets/typescript.json"
      },
      {
        "language": "javascript",
        "path": "./snippets/javascript.json"
      },
      {
        "language": "javascriptreact",
        "path": "./snippets/javascript.json"
      }
    ]
  },
  "author": "chemzqm@gmail.com",
  "license": "MIT",
  "devDependencies": {
    "@types/node": "^16.18",
    "coc.nvim": "^0.0.83-next.19",
    "esbuild": "^0.25.0",
    "semver": "^7.3.7",
    "strip-ansi": "^7.0.1",
    "vscode-languageserver-protocol": "^3.17.2",
    "which": "^2.0.2"
  },
  "dependencies": {
    "typescript": "^5.3.2"
  }
}
