nvim/.config/nvim/lua/plugins/lsp/typescript.lua

-- nvim/.config/nvim/lua/plugins/lsp/typescript.lua

return {
  "neovim/nvim-lspconfig",
  opts = {
    servers = {
      ts_ls = {
        init_options = {
          preferences = {
            includeInlayParameterNameHints             = "literal",
            includeInlayParameterNameHintsWhenArgumentMatchesName = false,
            includeInlayFunctionParameterTypeHints     = false,
            includeInlayVariableTypeHints              = false,
            includeInlayPropertyDeclarationTypeHints   = true,
            includeInlayFunctionLikeReturnTypeHints    = true,
            includeInlayEnumMemberValueHints           = true,
            importModuleSpecifierPreference            = "non-relative",
          },
        },
        on_attach = function(client, _)
          -- prettier/eslint handle formatting
          client.server_capabilities.documentFormattingProvider = false
          client.server_capabilities.documentRangeFormattingProvider = false
        end,
      },
      eslint = {
        settings = {
          workingDirectories = { mode = "auto" },
          format = false,
        },
      },
      jsonls = {
        settings = {
          json = {
            validate = { enable = true },
          },
        },
      },
    },
  },
}