Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide/src/inlay_hints.rs113
-rw-r--r--crates/ide/src/lib.rs3
-rw-r--r--crates/ide/src/static_index.rs1
-rw-r--r--crates/rust-analyzer/src/caps.rs1
-rw-r--r--crates/rust-analyzer/src/handlers.rs15
-rw-r--r--crates/rust-analyzer/src/lsp_ext.rs23
-rw-r--r--crates/rust-analyzer/src/to_proto.rs14
-rw-r--r--docs/dev/lsp-extensions.md15
-rw-r--r--editors/code/.gitignore2
-rw-r--r--editors/code/package-lock.json627
-rw-r--r--editors/code/package.json87
-rw-r--r--editors/code/src/inlay_hints.ts277
-rw-r--r--editors/code/src/lsp_ext.ts20
13 files changed, 555 insertions, 643 deletions
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs
index f77cae3e3c..8ecc5567b4 100644
--- a/crates/ide/src/inlay_hints.rs
+++ b/crates/ide/src/inlay_hints.rs
@@ -5,7 +5,7 @@ use itertools::Itertools;
use stdx::to_lower_snake_case;
use syntax::{
ast::{self, AstNode, HasArgList, HasName, UnaryOp},
- match_ast, Direction, NodeOrToken, SmolStr, SyntaxKind, TextRange, T,
+ match_ast, Direction, NodeOrToken, SmolStr, SyntaxKind, SyntaxNode, TextRange, T,
};
use crate::FileId;
@@ -58,6 +58,7 @@ pub struct InlayHint {
pub(crate) fn inlay_hints(
db: &RootDatabase,
file_id: FileId,
+ range_limit: Option<FileRange>,
config: &InlayHintsConfig,
) -> Vec<InlayHint> {
let _p = profile::span("inlay_hints");
@@ -65,25 +66,50 @@ pub(crate) fn inlay_hints(
let file = sema.parse(file_id);
let file = file.syntax();
- let mut res = Vec::new();
-
- for node in file.descendants() {
- if let Some(expr) = ast::Expr::cast(node.clone()) {
- get_chaining_hints(&mut res, &sema, config, &expr);
- match expr {
- ast::Expr::CallExpr(it) => {
- get_param_name_hints(&mut res, &sema, config, ast::Expr::from(it));
- }
- ast::Expr::MethodCallExpr(it) => {
- get_param_name_hints(&mut res, &sema, config, ast::Expr::from(it));
+ let mut hints = Vec::new();
+
+ if let Some(range_limit) = range_limit {
+ let range_limit = range_limit.range;
+ match file.covering_element(range_limit) {
+ NodeOrToken::Token(_) => return hints,
+ NodeOrToken::Node(n) => {
+ for node in n
+ .descendants()
+ .filter(|descendant| range_limit.contains_range(descendant.text_range()))
+ {
+ get_hints(&mut hints, &sema, config, node);
}
- _ => (),
}
- } else if let Some(it) = ast::IdentPat::cast(node.clone()) {
- get_bind_pat_hints(&mut res, &sema, config, &it);
}
+ } else {
+ for node in file.descendants() {
+ get_hints(&mut hints, &sema, config, node);
+ }
+ }
+
+ hints
+}
+
+fn get_hints(
+ hints: &mut Vec<InlayHint>,
+ sema: &Semantics<RootDatabase>,
+ config: &InlayHintsConfig,
+ node: SyntaxNode,
+) {
+ if let Some(expr) = ast::Expr::cast(node.clone()) {
+ get_chaining_hints(hints, sema, config, &expr);
+ match expr {
+ ast::Expr::CallExpr(it) => {
+ get_param_name_hints(hints, sema, config, ast::Expr::from(it));
+ }
+ ast::Expr::MethodCallExpr(it) => {
+ get_param_name_hints(hints, sema, config, ast::Expr::from(it));
+ }
+ _ => (),
+ }
+ } else if let Some(it) = ast::IdentPat::cast(node) {
+ get_bind_pat_hints(hints, sema, config, &it);
}
- res
}
fn get_chaining_hints(
@@ -541,6 +567,8 @@ fn get_callable(
#[cfg(test)]
mod tests {
use expect_test::{expect, Expect};
+ use ide_db::base_db::FileRange;
+ use syntax::{TextRange, TextSize};
use test_utils::extract_annotations;
use crate::{fixture, inlay_hints::InlayHintsConfig};
@@ -604,7 +632,7 @@ mod tests {
fn check_with_config(config: InlayHintsConfig, ra_fixture: &str) {
let (analysis, file_id) = fixture::file(ra_fixture);
let expected = extract_annotations(&*analysis.file_text(file_id).unwrap());
- let inlay_hints = analysis.inlay_hints(&config, file_id).unwrap();
+ let inlay_hints = analysis.inlay_hints(&config, file_id, None).unwrap();
let actual =
inlay_hints.into_iter().map(|it| (it.range, it.label.to_string())).collect::<Vec<_>>();
assert_eq!(expected, actual, "\nExpected:\n{:#?}\n\nActual:\n{:#?}", expected, actual);
@@ -613,7 +641,7 @@ mod tests {
#[track_caller]
fn check_expect(config: InlayHintsConfig, ra_fixture: &str, expect: Expect) {
let (analysis, file_id) = fixture::file(ra_fixture);
- let inlay_hints = analysis.inlay_hints(&config, file_id).unwrap();
+ let inlay_hints = analysis.inlay_hints(&config, file_id, None).unwrap();
expect.assert_debug_eq(&inlay_hints)
}
@@ -1046,6 +1074,55 @@ fn main() {
}
#[test]
+ fn check_hint_range_limit() {
+ let fixture = r#"
+ //- minicore: fn, sized
+ fn foo() -> impl Fn() { loop {} }
+ fn foo1() -> impl Fn(f64) { loop {} }
+ fn foo2() -> impl Fn(f64, f64) { loop {} }
+ fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} }
+ fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} }
+ fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} }
+ fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} }
+ fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} }
+
+ fn main() {
+ let foo = foo();
+ let foo = foo1();
+ let foo = foo2();
+ let foo = foo3();
+ // ^^^ impl Fn(f64, f64) -> u32
+ let foo = foo4();
+ // ^^^ &dyn Fn(f64, f64) -> u32
+ let foo = foo5();
+ let foo = foo6();
+ let foo = foo7();
+ }
+ "#;
+ let (analysis, file_id) = fixture::file(fixture);
+ let expected = extract_annotations(&*analysis.file_text(file_id).unwrap());
+ let inlay_hints = analysis
+ .inlay_hints(
+ &InlayHintsConfig {
+ parameter_hints: false,
+ type_hints: true,
+ chaining_hints: false,
+ hide_named_constructor_hints: false,
+ max_length: None,
+ },
+ file_id,
+ Some(FileRange {
+ file_id,
+ range: TextRange::new(TextSize::from(500), TextSize::from(600)),
+ }),
+ )
+ .unwrap();
+ let actual =
+ inlay_hints.into_iter().map(|it| (it.range, it.label.to_string())).collect::<Vec<_>>();
+ assert_eq!(expected, actual, "\nExpected:\n{:#?}\n\nActual:\n{:#?}", expected, actual);
+ }
+
+ #[test]
fn fn_hints_ptr_rpit_fn_parentheses() {
check_types(
r#"
diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs
index 4028b0bc72..1acaaaccf0 100644
--- a/crates/ide/src/lib.rs
+++ b/crates/ide/src/lib.rs
@@ -358,8 +358,9 @@ impl Analysis {
&self,
config: &InlayHintsConfig,
file_id: FileId,
+ range: Option<FileRange>,
) -> Cancellable<Vec<InlayHint>> {
- self.with_db(|db| inlay_hints::inlay_hints(db, file_id, config))
+ self.with_db(|db| inlay_hints::inlay_hints(db, file_id, range, config))
}
/// Returns the set of folding ranges.
diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs
index fb94342a78..31d85c60e7 100644
--- a/crates/ide/src/static_index.rs
+++ b/crates/ide/src/static_index.rs
@@ -112,6 +112,7 @@ impl StaticIndex<'_> {
max_length: Some(25),
},
file_id,
+ None,
)
.unwrap();
// hovers
diff --git a/crates/rust-analyzer/src/caps.rs b/crates/rust-analyzer/src/caps.rs
index 457399a618..dc6cf61f79 100644
--- a/crates/rust-analyzer/src/caps.rs
+++ b/crates/rust-analyzer/src/caps.rs
@@ -115,6 +115,7 @@ pub fn server_capabilities(config: &Config) -> ServerCapabilities {
experimental: Some(json!({
"externalDocs": true,
"hoverRange": true,
+ "inlayHints": true,
"joinLines": true,
"matchingBrace": true,
"moveItem": true,
diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs
index b45fbe698c..249e861f9b 100644
--- a/crates/rust-analyzer/src/handlers.rs
+++ b/crates/rust-analyzer/src/handlers.rs
@@ -1318,11 +1318,22 @@ pub(crate) fn handle_inlay_hints(
params: InlayHintsParams,
) -> Result<Vec<InlayHint>> {
let _p = profile::span("handle_inlay_hints");
- let file_id = from_proto::file_id(&snap, &params.text_document.uri)?;
+ let document_uri = &params.text_document.uri;
+ let file_id = from_proto::file_id(&snap, document_uri)?;
let line_index = snap.file_line_index(file_id)?;
+ let range = params
+ .range
+ .map(|range| {
+ from_proto::file_range(
+ &snap,
+ TextDocumentIdentifier::new(document_uri.to_owned()),
+ range,
+ )
+ })
+ .transpose()?;
Ok(snap
.analysis
- .inlay_hints(&snap.config.inlay_hints(), file_id)?
+ .inlay_hints(&snap.config.inlay_hints(), file_id, range)?
.into_iter()
.map(|it| to_proto::inlay_hint(&line_index, it))
.collect())
diff --git a/crates/rust-analyzer/src/lsp_ext.rs b/crates/rust-analyzer/src/lsp_ext.rs
index ea98d09935..846f151304 100644
--- a/crates/rust-analyzer/src/lsp_ext.rs
+++ b/crates/rust-analyzer/src/lsp_ext.rs
@@ -233,27 +233,34 @@ pub enum InlayHints {}
impl Request for InlayHints {
type Params = InlayHintsParams;
type Result = Vec<InlayHint>;
- const METHOD: &'static str = "rust-analyzer/inlayHints";
+ const METHOD: &'static str = "experimental/inlayHints";
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct InlayHintsParams {
pub text_document: TextDocumentIdentifier,
+ pub range: Option<lsp_types::Range>,
}
-#[derive(Debug, PartialEq, Eq, Deserialize, Serialize)]
-pub enum InlayKind {
- TypeHint,
- ParameterHint,
- ChainingHint,
+#[derive(Eq, PartialEq, Debug, Copy, Clone, Serialize, Deserialize)]
+#[serde(transparent)]
+pub struct InlayHintKind(u8);
+
+impl InlayHintKind {
+ pub const TYPE: InlayHintKind = InlayHintKind(1);
+ pub const PARAMETER: InlayHintKind = InlayHintKind(2);
}
#[derive(Debug, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
pub struct InlayHint {
- pub range: Range,
- pub kind: InlayKind,
pub label: String,
+ pub position: Position,
+ pub kind: Option<InlayHintKind>,
+ pub tooltip: Option<String>,
+ pub padding_left: Option<bool>,
+ pub padding_right: Option<bool>,
}
pub enum Ssr {}
diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs
index 4a2b3a1b47..3ba097dc7f 100644
--- a/crates/rust-analyzer/src/to_proto.rs
+++ b/crates/rust-analyzer/src/to_proto.rs
@@ -416,12 +416,18 @@ pub(crate) fn signature_help(
pub(crate) fn inlay_hint(line_index: &LineIndex, inlay_hint: InlayHint) -> lsp_ext::InlayHint {
lsp_ext::InlayHint {
label: inlay_hint.label.to_string(),
- range: range(line_index, inlay_hint.range),
+ position: match inlay_hint.kind {
+ InlayKind::ParameterHint => position(line_index, inlay_hint.range.start()),
+ _ => position(line_index, inlay_hint.range.end()),
+ },
kind: match inlay_hint.kind {
- InlayKind::ParameterHint => lsp_ext::InlayKind::ParameterHint,
- InlayKind::TypeHint => lsp_ext::InlayKind::TypeHint,
- InlayKind::ChainingHint => lsp_ext::InlayKind::ChainingHint,
+ InlayKind::ParameterHint => Some(lsp_ext::InlayHintKind::PARAMETER),
+ InlayKind::TypeHint => Some(lsp_ext::InlayHintKind::TYPE),
+ InlayKind::ChainingHint => None,
},
+ tooltip: None,
+ padding_left: Some(true),
+ padding_right: Some(true),
}
}
diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md
index 85df1188a8..9f1c7fe0a3 100644
--- a/docs/dev/lsp-extensions.md
+++ b/docs/dev/lsp-extensions.md
@@ -1,5 +1,5 @@
<!---
-lsp_ext.rs hash: 5b53b92c9f9d6650
+lsp_ext.rs hash: e32fdde032ff6ebc
If you need to change the above hash to make the test pass, please check if you
need to adjust this doc as well and ping this issue:
@@ -562,11 +562,11 @@ Expands macro call at a given position.
## Inlay Hints
-**Method:** `rust-analyzer/inlayHints`
+**Method:** `experimental/inlayHints`
This request is sent from client to server to render "inlay hints" -- virtual text inserted into editor to show things like inferred types.
Generally, the client should re-query inlay hints after every modification.
-Note that we plan to move this request to `experimental/inlayHints`, as it is not really Rust-specific, but the current API is not necessary the right one.
+Until it gets upstreamed, this follows the VS Code API.
Upstream issues: https://github.com/microsoft/language-server-protocol/issues/956 , https://github.com/rust-analyzer/rust-analyzer/issues/2797
**Request:**
@@ -581,9 +581,12 @@ interface InlayHintsParams {
```typescript
interface InlayHint {
- kind: "TypeHint" | "ParameterHint" | "ChainingHint",
- range: Range,
- label: string,
+ position: Position;
+ label: string | InlayHintLabelPart[];
+ tooltip?: string | MarkdownString | undefined;
+ kind?: InlayHintKind;
+ paddingLeft?: boolean;
+ paddingRight?: boolean;
}
```
diff --git a/editors/code/.gitignore b/editors/code/.gitignore
index 3acb6b3f62..2c975a947e 100644
--- a/editors/code/.gitignore
+++ b/editors/code/.gitignore
@@ -3,3 +3,5 @@ node_modules
server
.vscode-test/
*.vsix
+bundle
+vscode.proposed.d.ts
diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json
index 1f0c97ad27..d2015b3bce 100644
--- a/editors/code/package-lock.json
+++ b/editors/code/package-lock.json
@@ -11,34 +11,34 @@
"dependencies": {
"d3": "^7.3.0",
"d3-graphviz": "^4.0.0",
- "vscode-languageclient": "8.0.0-next.8"
+ "vscode-languageclient": "8.0.0-next.12"
},
"devDependencies": {
"@types/node": "~14.17.5",
- "@types/vscode": "~1.63.0",
+ "@types/vscode": "~1.65.0",
"@typescript-eslint/eslint-plugin": "^5.10.0",
"@typescript-eslint/parser": "^5.10.0",
"@vscode/test-electron": "^2.1.1",
"esbuild": "^0.14.12",
- "eslint": "^8.7.0",
+ "eslint": "^8.10.0",
"tslib": "^2.3.0",
"typescript": "^4.5.5",
"typescript-formatter": "^7.2.2",
- "vsce": "^2.6.3"
+ "vsce": "^2.6.7"
},
"engines": {
- "vscode": "^1.63.0"
+ "vscode": "^1.65.0"
}
},
"node_modules/@eslint/eslintrc": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
- "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz",
+ "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.2.0",
+ "espree": "^9.3.1",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
@@ -141,9 +141,9 @@
"dev": true
},
"node_modules/@types/vscode": {
- "version": "1.63.1",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.63.1.tgz",
- "integrity": "sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==",
+ "version": "1.65.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.65.0.tgz",
+ "integrity": "sha512-wQhExnh2nEzpjDMSKhUvnNmz3ucpd3E+R7wJkOhBNK3No6fG3VUdmVmMOKD0A8NDZDDDiQcLNxe3oGmX5SjJ5w==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
@@ -1514,39 +1514,60 @@
}
},
"node_modules/esbuild": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.12.tgz",
- "integrity": "sha512-o1vQkG+eSDLkWDqWfR8v6eI+byGAUkbRs30eAJcJxUFp3dwMGWR0tAjtam1Bb1RSS2j+4kAUFiuJTnW3J4CYcw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz",
+ "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==",
"dev": true,
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
},
+ "engines": {
+ "node": ">=12"
+ },
"optionalDependencies": {
- "esbuild-android-arm64": "0.14.12",
- "esbuild-darwin-64": "0.14.12",
- "esbuild-darwin-arm64": "0.14.12",
- "esbuild-freebsd-64": "0.14.12",
- "esbuild-freebsd-arm64": "0.14.12",
- "esbuild-linux-32": "0.14.12",
- "esbuild-linux-64": "0.14.12",
- "esbuild-linux-arm": "0.14.12",
- "esbuild-linux-arm64": "0.14.12",
- "esbuild-linux-mips64le": "0.14.12",
- "esbuild-linux-ppc64le": "0.14.12",
- "esbuild-linux-s390x": "0.14.12",
- "esbuild-netbsd-64": "0.14.12",
- "esbuild-openbsd-64": "0.14.12",
- "esbuild-sunos-64": "0.14.12",
- "esbuild-windows-32": "0.14.12",
- "esbuild-windows-64": "0.14.12",
- "esbuild-windows-arm64": "0.14.12"
+ "esbuild-android-64": "0.14.25",
+ "esbuild-android-arm64": "0.14.25",
+ "esbuild-darwin-64": "0.14.25",
+ "esbuild-darwin-arm64": "0.14.25",
+ "esbuild-freebsd-64": "0.14.25",
+ "esbuild-freebsd-arm64": "0.14.25",
+ "esbuild-linux-32": "0.14.25",
+ "esbuild-linux-64": "0.14.25",
+ "esbuild-linux-arm": "0.14.25",
+ "esbuild-linux-arm64": "0.14.25",
+ "esbuild-linux-mips64le": "0.14.25",
+ "esbuild-linux-ppc64le": "0.14.25",
+ "esbuild-linux-riscv64": "0.14.25",
+ "esbuild-linux-s390x": "0.14.25",
+ "esbuild-netbsd-64": "0.14.25",
+ "esbuild-openbsd-64": "0.14.25",
+ "esbuild-sunos-64": "0.14.25",
+ "esbuild-windows-32": "0.14.25",
+ "esbuild-windows-64": "0.14.25",
+ "esbuild-windows-arm64": "0.14.25"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz",
+ "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/esbuild-android-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.12.tgz",
- "integrity": "sha512-eO4JHwnTeJq1/xC9K0FdHNEYztwT0HaWHnOzR5kXKwJxHatxDNZ+lCHOSxMzh9uVSmnA8YwdSiXPWbwTlWZVrw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz",
+ "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==",
"cpu": [
"arm64"
],
@@ -1554,12 +1575,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-darwin-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.12.tgz",
- "integrity": "sha512-LyZ81assnJWhq2IxKEVipwddKlXLTubbz/IObyKOm5cWS9jQCpuwQey2PpzroWSiy7QLGV8XCGWY5b8U8fsmWA==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz",
+ "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==",
"cpu": [
"x64"
],
@@ -1567,12 +1591,15 @@
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-darwin-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.12.tgz",
- "integrity": "sha512-jj27iSbDS4KlftN1PHHNiTrtXPQIk11J/qpQiQLwKJpeEMNeJUBfQlS7X7dXgFFMxV0rNtcRl8AimEFl+qEMRQ==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz",
+ "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==",
"cpu": [
"arm64"
],
@@ -1580,12 +1607,15 @@
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-freebsd-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.12.tgz",
- "integrity": "sha512-RnTty09bA8Ts/eWnrJsYiE2dFM6ZseKYQ/7QCM5QYphU6GbifooO9oGjc/UE3Sg8R58yZVO15vnIV0i+kTgDOw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz",
+ "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==",
"cpu": [
"x64"
],
@@ -1593,12 +1623,15 @@
"optional": true,
"os": [
"freebsd"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-freebsd-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.12.tgz",
- "integrity": "sha512-AvAQoEgsHE53hucgoVWdHnXJBl0r9W/7eUCaBvpcgYu3W/EbPZ26VnZwfSXLpk0Pf3t7o6SRwrU+KDTKPscDTw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz",
+ "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==",
"cpu": [
"arm64"
],
@@ -1606,12 +1639,15 @@
"optional": true,
"os": [
"freebsd"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-32": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.12.tgz",
- "integrity": "sha512-na4I5i2c9ACPuglfYmrnJ6qGQnFJb59dFjyFk5OHTCtoKCq3lXbGHrvYa+3sYlOrRax1kYuRDRGse7YsDLbr3Q==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz",
+ "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==",
"cpu": [
"ia32"
],
@@ -1619,12 +1655,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.12.tgz",
- "integrity": "sha512-ObPoYGakJLx/RldQsFQiwsQ7N9YbQ4LLazHtpKx34bjqFjhqO5JiHPVAJYCmAtci3cJMsZ5DtEFXvijytTBz1g==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz",
+ "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==",
"cpu": [
"x64"
],
@@ -1632,12 +1671,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-arm": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.12.tgz",
- "integrity": "sha512-tD4q/zVUeYkThGehYAJQElo80+ysxvq5vpd2QvykDp4hvIidEUJu2hf+NzG5OuMJSQJmAeAWPrkFOXN+6di9cA==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz",
+ "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==",
"cpu": [
"arm"
],
@@ -1645,12 +1687,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.12.tgz",
- "integrity": "sha512-i1/ikCl9gG9yx6QuI+8yJMk9XHUu8ekIQOo6cex2pDqXY5KVHSXDTAT4FDWOd5YXQ1QTjneBAQHcKGft4pd6PQ==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz",
+ "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==",
"cpu": [
"arm64"
],
@@ -1658,12 +1703,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-mips64le": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.12.tgz",
- "integrity": "sha512-+/a6/tiKUCENep8ryUR75Jba4znG51Sb75OzKT6phZFEkB7fao4+GZD39Zxx3EaaA5OC10MsJPjJMFrn0dMusg==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz",
+ "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==",
"cpu": [
"mips64el"
],
@@ -1671,12 +1719,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-ppc64le": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.12.tgz",
- "integrity": "sha512-SD7e2VLza/cEU2qKuD18Ibt1V0h3TUuerC1Mp3jRJ4RRGXWAyUt4gUpqKSiB7R0rHe6LWECdLbeVFAuGEntCeA==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz",
+ "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==",
"cpu": [
"ppc64"
],
@@ -1684,12 +1735,31 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz",
+ "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-linux-s390x": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.12.tgz",
- "integrity": "sha512-KZmjYgAvYUpPBG0v6xv8qCngbfcRKC2AdYx3H3j3VqJfICgjt5XYsyG7ntWdc8Rdw9jZxr9sni6othy2Rp/T+A==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz",
+ "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==",
"cpu": [
"s390x"
],
@@ -1697,12 +1767,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-netbsd-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.12.tgz",
- "integrity": "sha512-dG+hbCIJC65fHqzkTEYbrPSYG3m8pEaI9A1VDtqHfV13Oiw9/tua1odd47iwoWvTyurErb49wanHsIAKb8/2oQ==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz",
+ "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==",
"cpu": [
"x64"
],
@@ -1710,12 +1783,15 @@
"optional": true,
"os": [
"netbsd"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-openbsd-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.12.tgz",
- "integrity": "sha512-W3SwxnMjJR3HtBD0aij5WPd0ow2bRB5BsW6FjhN7FgwDBQ+jgniFs1dq54HOkjQ2qBJrt8JvPDFAxacWjdD6Jw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz",
+ "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==",
"cpu": [
"x64"
],
@@ -1723,12 +1799,15 @@
"optional": true,
"os": [
"openbsd"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-sunos-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.12.tgz",
- "integrity": "sha512-jU/IcTFwvUtt21wOmqKJrevyHQ5XRfiCdFbPie4wsYr8VFcPZZsz18A9lcoI8gZdrF/8pBdD0V+L2UuUY0KsGg==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz",
+ "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==",
"cpu": [
"x64"
],
@@ -1736,12 +1815,15 @@
"optional": true,
"os": [
"sunos"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-windows-32": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.12.tgz",
- "integrity": "sha512-6luae9cmTB0rSPMCQFWMgf0SLNZ9hxusoS0poVEUHJf3n8bW6wgdyLE2xfYcEcXPMsjAt2e71/etkpqlFxeuYg==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz",
+ "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==",
"cpu": [
"ia32"
],
@@ -1749,12 +1831,15 @@
"optional": true,
"os": [
"win32"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-windows-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.12.tgz",
- "integrity": "sha512-CdCXvME/7s0uMt+4rYd8d5roHJJ5k2VDOzWaOMWExjroet+nSSZngfLpxI5St+28lXLeBorUxeBS+p1qcfEDfw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz",
+ "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==",
"cpu": [
"x64"
],
@@ -1762,12 +1847,15 @@
"optional": true,
"os": [
"win32"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/esbuild-windows-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.12.tgz",
- "integrity": "sha512-vNuLQh/MpYDepK0GNpEWHy0Kn7Jf3Shz/Xetf8hUIc31jgCR1qbLVLDf3ckQdanD2U430YZupOGtEZKRwno79w==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz",
+ "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==",
"cpu": [
"arm64"
],
@@ -1775,7 +1863,10 @@
"optional": true,
"os": [
"win32"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
@@ -1790,12 +1881,12 @@
}
},
"node_modules/eslint": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz",
- "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz",
+ "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==",
"dev": true,
"dependencies": {
- "@eslint/eslintrc": "^1.0.5",
+ "@eslint/eslintrc": "^1.2.0",
"@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
@@ -1803,10 +1894,10 @@
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.0",
+ "eslint-scope": "^7.1.1",
"eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.2.0",
- "espree": "^9.3.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -1882,18 +1973,18 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
- "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
- "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
@@ -1913,14 +2004,14 @@
}
},
"node_modules/espree": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
- "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
"dev": true,
"dependencies": {
"acorn": "^8.7.0",
"acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.1.0"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2243,9 +2334,9 @@
}
},
"node_modules/globals": {
- "version": "13.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
- "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
+ "version": "13.12.1",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
+ "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -3764,39 +3855,39 @@
}
},
"node_modules/vscode-jsonrpc": {
- "version": "8.0.0-next.5",
- "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.5.tgz",
- "integrity": "sha512-owRllqcFTnz5rXxcbmHPFGmpFmLqj9Z1V3Dzrv+s8ejOHLIT62Pyb5Uqzyl2/in2VP22DmzErPgZwrxjLCIKiQ==",
+ "version": "8.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.6.tgz",
+ "integrity": "sha512-6Ld3RYjygn5Ih7CkAtcAwiDQC+rakj2O+PnASfNyYv3sLmm44eJpEKzuPUN30Iy2UB09AZg8T6LBKWTJTEJDVw==",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/vscode-languageclient": {
- "version": "8.0.0-next.8",
- "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.0-next.8.tgz",
- "integrity": "sha512-CBdYRIVqqlRmZ2YBeTk0S2QMtsL8ZJfbddlfvERmRPXW4Pimr7Nk+mYq16F/k3HbrO9Xt+RAFP1t6FIIbmuUGw==",
+ "version": "8.0.0-next.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.0-next.12.tgz",
+ "integrity": "sha512-4+kr1BQcoh+sA5/4XJDJXrQXGQ5Yz/x+WpsVGGzK/TOB7RwQ63ooxG6Ej7i/+aOQM4/QdmcYWmipDtG7vqcOiw==",
"dependencies": {
"minimatch": "^3.0.4",
"semver": "^7.3.5",
- "vscode-languageserver-protocol": "3.17.0-next.12"
+ "vscode-languageserver-protocol": "3.17.0-next.14"
},
"engines": {
"vscode": "^1.63.0"
}
},
"node_modules/vscode-languageserver-protocol": {
- "version": "3.17.0-next.12",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.12.tgz",
- "integrity": "sha512-VLRcWKOpCXcx9UrqrS+NSF6pNxV498VGYGW+eyp9a79/F9ElUq3wdG6acXYlEfpWHuIxpm6MXps8FU88wqIgTg==",
+ "version": "3.17.0-next.14",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.14.tgz",
+ "integrity": "sha512-iangobY8dL6sFZkOx4OhRPJM9gN0I1caUsOVR+MnPozsqQUtwMXmbIcfaIf0Akp0pd3KhJDPf/tdwRX68QGeeA==",
"dependencies": {
- "vscode-jsonrpc": "8.0.0-next.5",
- "vscode-languageserver-types": "3.17.0-next.6"
+ "vscode-jsonrpc": "8.0.0-next.6",
+ "vscode-languageserver-types": "3.17.0-next.7"
}
},
"node_modules/vscode-languageserver-types": {
- "version": "3.17.0-next.6",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.6.tgz",
- "integrity": "sha512-rHYeCotiabJHgvIYzWjV8g0dHCxyOQtcryTv1Xa1horaQ4jx2V+rjLBstc6zMpCyrnZcjorwEcAvGBDCd6wudw=="
+ "version": "3.17.0-next.7",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.7.tgz",
+ "integrity": "sha512-KH4zdG1qBXxoso61ChgpeoZYyHGJo8bV7Jv4I+fwQ1Ryy59JAxoZ9GAbhR5TeeafHctLcg6RFvY3m8Jqfu17cg=="
},
"node_modules/which": {
"version": "2.0.2",
@@ -3886,14 +3977,14 @@
},
"dependencies": {
"@eslint/eslintrc": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
- "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz",
+ "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.2.0",
+ "espree": "^9.3.1",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
@@ -3977,9 +4068,9 @@
"dev": true
},
"@types/vscode": {
- "version": "1.63.1",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.63.1.tgz",
- "integrity": "sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==",
+ "version": "1.65.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.65.0.tgz",
+ "integrity": "sha512-wQhExnh2nEzpjDMSKhUvnNmz3ucpd3E+R7wJkOhBNK3No6fG3VUdmVmMOKD0A8NDZDDDiQcLNxe3oGmX5SjJ5w==",
"dev": true
},
"@typescript-eslint/eslint-plugin": {
@@ -4977,154 +5068,170 @@
"dev": true
},
"esbuild": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.12.tgz",
- "integrity": "sha512-o1vQkG+eSDLkWDqWfR8v6eI+byGAUkbRs30eAJcJxUFp3dwMGWR0tAjtam1Bb1RSS2j+4kAUFiuJTnW3J4CYcw==",
- "dev": true,
- "requires": {
- "esbuild-android-arm64": "0.14.12",
- "esbuild-darwin-64": "0.14.12",
- "esbuild-darwin-arm64": "0.14.12",
- "esbuild-freebsd-64": "0.14.12",
- "esbuild-freebsd-arm64": "0.14.12",
- "esbuild-linux-32": "0.14.12",
- "esbuild-linux-64": "0.14.12",
- "esbuild-linux-arm": "0.14.12",
- "esbuild-linux-arm64": "0.14.12",
- "esbuild-linux-mips64le": "0.14.12",
- "esbuild-linux-ppc64le": "0.14.12",
- "esbuild-linux-s390x": "0.14.12",
- "esbuild-netbsd-64": "0.14.12",
- "esbuild-openbsd-64": "0.14.12",
- "esbuild-sunos-64": "0.14.12",
- "esbuild-windows-32": "0.14.12",
- "esbuild-windows-64": "0.14.12",
- "esbuild-windows-arm64": "0.14.12"
- }
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz",
+ "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==",
+ "dev": true,
+ "requires": {
+ "esbuild-android-64": "0.14.25",
+ "esbuild-android-arm64": "0.14.25",
+ "esbuild-darwin-64": "0.14.25",
+ "esbuild-darwin-arm64": "0.14.25",
+ "esbuild-freebsd-64": "0.14.25",
+ "esbuild-freebsd-arm64": "0.14.25",
+ "esbuild-linux-32": "0.14.25",
+ "esbuild-linux-64": "0.14.25",
+ "esbuild-linux-arm": "0.14.25",
+ "esbuild-linux-arm64": "0.14.25",
+ "esbuild-linux-mips64le": "0.14.25",
+ "esbuild-linux-ppc64le": "0.14.25",
+ "esbuild-linux-riscv64": "0.14.25",
+ "esbuild-linux-s390x": "0.14.25",
+ "esbuild-netbsd-64": "0.14.25",
+ "esbuild-openbsd-64": "0.14.25",
+ "esbuild-sunos-64": "0.14.25",
+ "esbuild-windows-32": "0.14.25",
+ "esbuild-windows-64": "0.14.25",
+ "esbuild-windows-arm64": "0.14.25"
+ }
+ },
+ "esbuild-android-64": {
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz",
+ "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==",
+ "dev": true,
+ "optional": true
},
"esbuild-android-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.12.tgz",
- "integrity": "sha512-eO4JHwnTeJq1/xC9K0FdHNEYztwT0HaWHnOzR5kXKwJxHatxDNZ+lCHOSxMzh9uVSmnA8YwdSiXPWbwTlWZVrw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz",
+ "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==",
"dev": true,
"optional": true
},
"esbuild-darwin-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.12.tgz",
- "integrity": "sha512-LyZ81assnJWhq2IxKEVipwddKlXLTubbz/IObyKOm5cWS9jQCpuwQey2PpzroWSiy7QLGV8XCGWY5b8U8fsmWA==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz",
+ "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==",
"dev": true,
"optional": true
},
"esbuild-darwin-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.12.tgz",
- "integrity": "sha512-jj27iSbDS4KlftN1PHHNiTrtXPQIk11J/qpQiQLwKJpeEMNeJUBfQlS7X7dXgFFMxV0rNtcRl8AimEFl+qEMRQ==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz",
+ "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==",
"dev": true,
"optional": true
},
"esbuild-freebsd-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.12.tgz",
- "integrity": "sha512-RnTty09bA8Ts/eWnrJsYiE2dFM6ZseKYQ/7QCM5QYphU6GbifooO9oGjc/UE3Sg8R58yZVO15vnIV0i+kTgDOw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz",
+ "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==",
"dev": true,
"optional": true
},
"esbuild-freebsd-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.12.tgz",
- "integrity": "sha512-AvAQoEgsHE53hucgoVWdHnXJBl0r9W/7eUCaBvpcgYu3W/EbPZ26VnZwfSXLpk0Pf3t7o6SRwrU+KDTKPscDTw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz",
+ "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==",
"dev": true,
"optional": true
},
"esbuild-linux-32": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.12.tgz",
- "integrity": "sha512-na4I5i2c9ACPuglfYmrnJ6qGQnFJb59dFjyFk5OHTCtoKCq3lXbGHrvYa+3sYlOrRax1kYuRDRGse7YsDLbr3Q==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz",
+ "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==",
"dev": true,
"optional": true
},
"esbuild-linux-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.12.tgz",
- "integrity": "sha512-ObPoYGakJLx/RldQsFQiwsQ7N9YbQ4LLazHtpKx34bjqFjhqO5JiHPVAJYCmAtci3cJMsZ5DtEFXvijytTBz1g==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz",
+ "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==",
"dev": true,
"optional": true
},
"esbuild-linux-arm": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.12.tgz",
- "integrity": "sha512-tD4q/zVUeYkThGehYAJQElo80+ysxvq5vpd2QvykDp4hvIidEUJu2hf+NzG5OuMJSQJmAeAWPrkFOXN+6di9cA==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz",
+ "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==",
"dev": true,
"optional": true
},
"esbuild-linux-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.12.tgz",
- "integrity": "sha512-i1/ikCl9gG9yx6QuI+8yJMk9XHUu8ekIQOo6cex2pDqXY5KVHSXDTAT4FDWOd5YXQ1QTjneBAQHcKGft4pd6PQ==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz",
+ "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==",
"dev": true,
"optional": true
},
"esbuild-linux-mips64le": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.12.tgz",
- "integrity": "sha512-+/a6/tiKUCENep8ryUR75Jba4znG51Sb75OzKT6phZFEkB7fao4+GZD39Zxx3EaaA5OC10MsJPjJMFrn0dMusg==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz",
+ "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==",
"dev": true,
"optional": true
},
"esbuild-linux-ppc64le": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.12.tgz",
- "integrity": "sha512-SD7e2VLza/cEU2qKuD18Ibt1V0h3TUuerC1Mp3jRJ4RRGXWAyUt4gUpqKSiB7R0rHe6LWECdLbeVFAuGEntCeA==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz",
+ "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-riscv64": {
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz",
+ "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==",
"dev": true,
"optional": true
},
"esbuild-linux-s390x": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.12.tgz",
- "integrity": "sha512-KZmjYgAvYUpPBG0v6xv8qCngbfcRKC2AdYx3H3j3VqJfICgjt5XYsyG7ntWdc8Rdw9jZxr9sni6othy2Rp/T+A==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz",
+ "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==",
"dev": true,
"optional": true
},
"esbuild-netbsd-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.12.tgz",
- "integrity": "sha512-dG+hbCIJC65fHqzkTEYbrPSYG3m8pEaI9A1VDtqHfV13Oiw9/tua1odd47iwoWvTyurErb49wanHsIAKb8/2oQ==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz",
+ "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==",
"dev": true,
"optional": true
},
"esbuild-openbsd-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.12.tgz",
- "integrity": "sha512-W3SwxnMjJR3HtBD0aij5WPd0ow2bRB5BsW6FjhN7FgwDBQ+jgniFs1dq54HOkjQ2qBJrt8JvPDFAxacWjdD6Jw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz",
+ "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==",
"dev": true,
"optional": true
},
"esbuild-sunos-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.12.tgz",
- "integrity": "sha512-jU/IcTFwvUtt21wOmqKJrevyHQ5XRfiCdFbPie4wsYr8VFcPZZsz18A9lcoI8gZdrF/8pBdD0V+L2UuUY0KsGg==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz",
+ "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==",
"dev": true,
"optional": true
},
"esbuild-windows-32": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.12.tgz",
- "integrity": "sha512-6luae9cmTB0rSPMCQFWMgf0SLNZ9hxusoS0poVEUHJf3n8bW6wgdyLE2xfYcEcXPMsjAt2e71/etkpqlFxeuYg==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz",
+ "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==",
"dev": true,
"optional": true
},
"esbuild-windows-64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.12.tgz",
- "integrity": "sha512-CdCXvME/7s0uMt+4rYd8d5roHJJ5k2VDOzWaOMWExjroet+nSSZngfLpxI5St+28lXLeBorUxeBS+p1qcfEDfw==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz",
+ "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==",
"dev": true,
"optional": true
},
"esbuild-windows-arm64": {
- "version": "0.14.12",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.12.tgz",
- "integrity": "sha512-vNuLQh/MpYDepK0GNpEWHy0Kn7Jf3Shz/Xetf8hUIc31jgCR1qbLVLDf3ckQdanD2U430YZupOGtEZKRwno79w==",
+ "version": "0.14.25",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz",
+ "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==",
"dev": true,
"optional": true
},
@@ -5135,12 +5242,12 @@
"dev": true
},
"eslint": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz",
- "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz",
+ "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==",
"dev": true,
"requires": {
- "@eslint/eslintrc": "^1.0.5",
+ "@eslint/eslintrc": "^1.2.0",
"@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
@@ -5148,10 +5255,10 @@
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.0",
+ "eslint-scope": "^7.1.1",
"eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.2.0",
- "espree": "^9.3.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -5178,9 +5285,9 @@
},
"dependencies": {
"eslint-scope": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
- "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
"requires": {
"esrecurse": "^4.3.0",
@@ -5223,20 +5330,20 @@
}
},
"eslint-visitor-keys": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
- "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true
},
"espree": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
- "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
"dev": true,
"requires": {
"acorn": "^8.7.0",
"acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.1.0"
+ "eslint-visitor-keys": "^3.3.0"
}
},
"esquery": {
@@ -5506,9 +5613,9 @@
}
},
"globals": {
- "version": "13.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
- "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
+ "version": "13.12.1",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
+ "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
@@ -6671,33 +6778,33 @@
}
},
"vscode-jsonrpc": {
- "version": "8.0.0-next.5",
- "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.5.tgz",
- "integrity": "sha512-owRllqcFTnz5rXxcbmHPFGmpFmLqj9Z1V3Dzrv+s8ejOHLIT62Pyb5Uqzyl2/in2VP22DmzErPgZwrxjLCIKiQ=="
+ "version": "8.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.6.tgz",
+ "integrity": "sha512-6Ld3RYjygn5Ih7CkAtcAwiDQC+rakj2O+PnASfNyYv3sLmm44eJpEKzuPUN30Iy2UB09AZg8T6LBKWTJTEJDVw=="
},
"vscode-languageclient": {
- "version": "8.0.0-next.8",
- "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.0-next.8.tgz",
- "integrity": "sha512-CBdYRIVqqlRmZ2YBeTk0S2QMtsL8ZJfbddlfvERmRPXW4Pimr7Nk+mYq16F/k3HbrO9Xt+RAFP1t6FIIbmuUGw==",
+ "version": "8.0.0-next.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.0-next.12.tgz",
+ "integrity": "sha512-4+kr1BQcoh+sA5/4XJDJXrQXGQ5Yz/x+WpsVGGzK/TOB7RwQ63ooxG6Ej7i/+aOQM4/QdmcYWmipDtG7vqcOiw==",
"requires": {
"minimatch": "^3.0.4",
"semver": "^7.3.5",
- "vscode-languageserver-protocol": "3.17.0-next.12"
+ "vscode-languageserver-protocol": "3.17.0-next.14"
}
},
"vscode-languageserver-protocol": {
- "version": "3.17.0-next.12",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.12.tgz",
- "integrity": "sha512-VLRcWKOpCXcx9UrqrS+NSF6pNxV498VGYGW+eyp9a79/F9ElUq3wdG6acXYlEfpWHuIxpm6MXps8FU88wqIgTg==",
+ "version": "3.17.0-next.14",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.14.tgz",
+ "integrity": "sha512-iangobY8dL6sFZkOx4OhRPJM9gN0I1caUsOVR+MnPozsqQUtwMXmbIcfaIf0Akp0pd3KhJDPf/tdwRX68QGeeA==",
"requires": {
- "vscode-jsonrpc": "8.0.0-next.5",
- "vscode-languageserver-types": "3.17.0-next.6"
+ "vscode-jsonrpc": "8.0.0-next.6",
+ "vscode-languageserver-types": "3.17.0-next.7"
}
},
"vscode-languageserver-types": {
- "version": "3.17.0-next.6",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.6.tgz",
- "integrity": "sha512-rHYeCotiabJHgvIYzWjV8g0dHCxyOQtcryTv1Xa1horaQ4jx2V+rjLBstc6zMpCyrnZcjorwEcAvGBDCd6wudw=="
+ "version": "3.17.0-next.7",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.7.tgz",
+ "integrity": "sha512-KH4zdG1qBXxoso61ChgpeoZYyHGJo8bV7Jv4I+fwQ1Ryy59JAxoZ9GAbhR5TeeafHctLcg6RFvY3m8Jqfu17cg=="
},
"which": {
"version": "2.0.2",
diff --git a/editors/code/package.json b/editors/code/package.json
index 4843ea8421..c94a09f084 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -21,9 +21,9 @@
"Programming Languages"
],
"engines": {
- "vscode": "^1.63.0"
+ "vscode": "^1.65.0"
},
- "enableProposedApi": true,
+ "enabledApiProposals": [],
"scripts": {
"vscode:prepublish": "npm run build-base -- --minify",
"package": "vsce package -o rust-analyzer.vsix",
@@ -36,18 +36,18 @@
"test": "node ./out/tests/runTests.js"
},
"dependencies": {
- "vscode-languageclient": "8.0.0-next.8",
+ "vscode-languageclient": "8.0.0-next.12",
"d3": "^7.3.0",
"d3-graphviz": "^4.0.0"
},
"devDependencies": {
"@types/node": "~14.17.5",
- "@types/vscode": "~1.63.0",
+ "@types/vscode": "~1.65.0",
"@typescript-eslint/eslint-plugin": "^5.10.0",
"@typescript-eslint/parser": "^5.10.0",
"@vscode/test-electron": "^2.1.1",
"esbuild": "^0.14.12",
- "eslint": "^8.7.0",
+ "eslint": "^8.10.0",
"tslib": "^2.3.0",
"typescript": "^4.5.5",
"typescript-formatter": "^7.2.2",
@@ -298,11 +298,6 @@
"default": true,
"description": "Whether to show inlay hints."
},
- "rust-analyzer.inlayHints.smallerHints": {
- "type": "boolean",
- "default": true,
- "description": "Whether inlay hints font size should be smaller than editor's font size."
- },
"rust-analyzer.server.path": {
"type": [
"null",
@@ -1084,78 +1079,6 @@
],
"colors": [
{
- "id": "rust_analyzer.inlayHints.foreground",
- "description": "Foreground color of inlay hints (is overriden by more specific rust_analyzer.inlayHints.foreground.* configurations)",
- "defaults": {
- "dark": "#A0A0A0F0",
- "light": "#747474",
- "highContrast": "#BEBEBE"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.background",
- "description": "Background color of inlay hints (is overriden by more specific rust_analyzer.inlayHints.background.* configurations)",
- "defaults": {
- "dark": "#11223300",
- "light": "#11223300",
- "highContrast": "#11223300"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.foreground.typeHints",
- "description": "Foreground color of inlay type hints for variables (overrides rust_analyzer.inlayHints.foreground)",
- "defaults": {
- "dark": "rust_analyzer.inlayHints.foreground",
- "light": "rust_analyzer.inlayHints.foreground",
- "highContrast": "rust_analyzer.inlayHints.foreground"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.foreground.chainingHints",
- "description": "Foreground color of inlay type hints for method chains (overrides rust_analyzer.inlayHints.foreground)",
- "defaults": {
- "dark": "rust_analyzer.inlayHints.foreground",
- "light": "rust_analyzer.inlayHints.foreground",
- "highContrast": "rust_analyzer.inlayHints.foreground"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.foreground.parameterHints",
- "description": "Foreground color of function parameter name inlay hints at the call site (overrides rust_analyzer.inlayHints.foreground)",
- "defaults": {
- "dark": "rust_analyzer.inlayHints.foreground",
- "light": "rust_analyzer.inlayHints.foreground",
- "highContrast": "rust_analyzer.inlayHints.foreground"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.background.typeHints",
- "description": "Background color of inlay type hints for variables (overrides rust_analyzer.inlayHints.background)",
- "defaults": {
- "dark": "rust_analyzer.inlayHints.background",
- "light": "rust_analyzer.inlayHints.background",
- "highContrast": "rust_analyzer.inlayHints.background"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.background.chainingHints",
- "description": "Background color of inlay type hints for method chains (overrides rust_analyzer.inlayHints.background)",
- "defaults": {
- "dark": "rust_analyzer.inlayHints.background",
- "light": "rust_analyzer.inlayHints.background",
- "highContrast": "rust_analyzer.inlayHints.background"
- }
- },
- {
- "id": "rust_analyzer.inlayHints.background.parameterHints",
- "description": "Background color of function parameter name inlay hints at the call site (overrides rust_analyzer.inlayHints.background)",
- "defaults": {
- "dark": "rust_analyzer.inlayHints.background",
- "light": "rust_analyzer.inlayHints.background",
- "highContrast": "rust_analyzer.inlayHints.background"
- }
- },
- {
"id": "rust_analyzer.syntaxTreeBorder",
"description": "Color of the border displayed in the Rust source code for the selected syntax node (see \"Show Syntax Tree\" command)",
"defaults": {
diff --git a/editors/code/src/inlay_hints.ts b/editors/code/src/inlay_hints.ts
index c23d6f7384..441370a677 100644
--- a/editors/code/src/inlay_hints.ts
+++ b/editors/code/src/inlay_hints.ts
@@ -1,267 +1,54 @@
-import * as lc from "vscode-languageclient";
import * as vscode from 'vscode';
import * as ra from './lsp_ext';
import { Ctx, Disposable } from './ctx';
-import { sendRequestWithRetry, isRustDocument, RustDocument, RustEditor, sleep } from './util';
-
-interface InlayHintStyle {
- decorationType: vscode.TextEditorDecorationType;
- toDecoration(hint: ra.InlayHint, conv: lc.Protocol2CodeConverter): vscode.DecorationOptions;
-};
-
-interface InlayHintsStyles {
- typeHints: InlayHintStyle;
- paramHints: InlayHintStyle;
- chainingHints: InlayHintStyle;
-}
-
+import { sendRequestWithRetry, isRustDocument } from './util';
export function activateInlayHints(ctx: Ctx) {
const maybeUpdater = {
- updater: null as null | HintsUpdater,
+ hintsProvider: null as Disposable | null,
+ updateHintsEventEmitter: new vscode.EventEmitter<void>(),
+
async onConfigChange() {
+ this.dispose();
+
const anyEnabled = ctx.config.inlayHints.typeHints
|| ctx.config.inlayHints.parameterHints
|| ctx.config.inlayHints.chainingHints;
const enabled = ctx.config.inlayHints.enable && anyEnabled;
+ if (!enabled) return;
+
+ const event = this.updateHintsEventEmitter.event;
+ this.hintsProvider = vscode.languages.registerInlayHintsProvider({ scheme: 'file', language: 'rust' }, new class implements vscode.InlayHintsProvider {
+ onDidChangeInlayHints = event;
+ async provideInlayHints(document: vscode.TextDocument, range: vscode.Range, token: vscode.CancellationToken): Promise<vscode.InlayHint[]> {
+ const request = { textDocument: { uri: document.uri.toString() }, range: { start: range.start, end: range.end } };
+ const hints = await sendRequestWithRetry(ctx.client, ra.inlayHints, request, token).catch(_ => null);
+ if (hints == null) {
+ return [];
+ } else {
+ return hints;
+ }
+ }
+ });
+ },
- if (!enabled) return this.dispose();
-
- await sleep(100);
- if (this.updater) {
- this.updater.updateInlayHintsStyles();
- this.updater.syncCacheAndRenderHints();
- } else {
- this.updater = new HintsUpdater(ctx);
- }
+ onDidChangeTextDocument({ contentChanges, document }: vscode.TextDocumentChangeEvent) {
+ if (contentChanges.length === 0 || !isRustDocument(document)) return;
+ this.updateHintsEventEmitter.fire();
},
+
dispose() {
- this.updater?.dispose();
- this.updater = null;
- }
+ this.hintsProvider?.dispose();
+ this.hintsProvider = null;
+ this.updateHintsEventEmitter.dispose();
+ },
};
ctx.pushCleanup(maybeUpdater);
- vscode.workspace.onDidChangeConfiguration(
- maybeUpdater.onConfigChange, maybeUpdater, ctx.subscriptions
- );
+ vscode.workspace.onDidChangeConfiguration(maybeUpdater.onConfigChange, maybeUpdater, ctx.subscriptions);
+ vscode.workspace.onDidChangeTextDocument(maybeUpdater.onDidChangeTextDocument, maybeUpdater, ctx.subscriptions);
maybeUpdater.onConfigChange().catch(console.error);
}
-
-function createHintStyle(hintKind: "type" | "parameter" | "chaining", smallerHints: boolean): InlayHintStyle {
- // U+200C is a zero-width non-joiner to prevent the editor from forming a ligature
- // between code and type hints
- const [pos, render] = ({
- type: ["after", (label: string) => `\u{200c}: ${label}`],
- parameter: ["before", (label: string) => `${label}: `],
- chaining: ["after", (label: string) => `\u{200c}: ${label}`],
- } as const)[hintKind];
-
- const fg = new vscode.ThemeColor(`rust_analyzer.inlayHints.foreground.${hintKind}Hints`);
- const bg = new vscode.ThemeColor(`rust_analyzer.inlayHints.background.${hintKind}Hints`);
- return {
- decorationType: vscode.window.createTextEditorDecorationType({
- [pos]: {
- color: fg,
- backgroundColor: bg,
- fontStyle: "normal",
- fontWeight: "normal",
- textDecoration: smallerHints ? ";font-size:smaller" : "none",
- },
- }),
- toDecoration(hint: ra.InlayHint, conv: lc.Protocol2CodeConverter): vscode.DecorationOptions {
- return {
- range: conv.asRange(hint.range),
- renderOptions: { [pos]: { contentText: render(hint.label) } }
- };
- }
- };
-}
-
-const smallHintsStyles = {
- typeHints: createHintStyle("type", true),
- paramHints: createHintStyle("parameter", true),
- chainingHints: createHintStyle("chaining", true),
-};
-
-const biggerHintsStyles = {
- typeHints: createHintStyle("type", false),
- paramHints: createHintStyle("parameter", false),
- chainingHints: createHintStyle("chaining", false),
-};
-
-class HintsUpdater implements Disposable {
- private sourceFiles = new Map<string, RustSourceFile>(); // map Uri -> RustSourceFile
- private readonly disposables: Disposable[] = [];
- private pendingDisposeDecorations: undefined | InlayHintsStyles = undefined;
- private inlayHintsStyles!: InlayHintsStyles;
-
- constructor(private readonly ctx: Ctx) {
- vscode.window.onDidChangeVisibleTextEditors(
- this.onDidChangeVisibleTextEditors,
- this,
- this.disposables
- );
-
- vscode.workspace.onDidChangeTextDocument(
- this.onDidChangeTextDocument,
- this,
- this.disposables
- );
-
- // Set up initial cache shape
- ctx.visibleRustEditors.forEach(editor => this.sourceFiles.set(
- editor.document.uri.toString(),
- {
- document: editor.document,
- inlaysRequest: null,
- cachedDecorations: null
- }
- ));
-
- this.updateInlayHintsStyles();
- this.syncCacheAndRenderHints();
- }
-
- dispose() {
- this.sourceFiles.forEach(file => file.inlaysRequest?.cancel());
- this.ctx.visibleRustEditors.forEach(editor => this.renderDecorations(editor, { param: [], type: [], chaining: [] }));
- this.disposables.forEach(d => d.dispose());
- }
-
- onDidChangeTextDocument({ contentChanges, document }: vscode.TextDocumentChangeEvent) {
- if (contentChanges.length === 0 || !isRustDocument(document)) return;
- this.syncCacheAndRenderHints();
- }
-
- updateInlayHintsStyles() {
- const inlayHintsStyles = this.ctx.config.inlayHints.smallerHints ? smallHintsStyles : biggerHintsStyles;
-
- if (inlayHintsStyles !== this.inlayHintsStyles) {
- this.pendingDisposeDecorations = this.inlayHintsStyles;
- this.inlayHintsStyles = inlayHintsStyles;
- }
- }
-
- syncCacheAndRenderHints() {
- this.sourceFiles.forEach((file, uri) => this.fetchHints(file).then(hints => {
- if (!hints) return;
-
- file.cachedDecorations = this.hintsToDecorations(hints);
-
- for (const editor of this.ctx.visibleRustEditors) {
- if (editor.document.uri.toString() === uri) {
- this.renderDecorations(editor, file.cachedDecorations);
- }
- }
- }));
- }
-
- onDidChangeVisibleTextEditors() {
- const newSourceFiles = new Map<string, RustSourceFile>();
-
- // Rerendering all, even up-to-date editors for simplicity
- this.ctx.visibleRustEditors.forEach(async editor => {
- const uri = editor.document.uri.toString();
- const file = this.sourceFiles.get(uri) ?? {
- document: editor.document,
- inlaysRequest: null,
- cachedDecorations: null
- };
- newSourceFiles.set(uri, file);
-
- // No text documents changed, so we may try to use the cache
- if (!file.cachedDecorations) {
- const hints = await this.fetchHints(file);
- if (!hints) return;
-
- file.cachedDecorations = this.hintsToDecorations(hints);
- }
-
- this.renderDecorations(editor, file.cachedDecorations);
- });
-
- // Cancel requests for no longer visible (disposed) source files
- this.sourceFiles.forEach((file, uri) => {
- if (!newSourceFiles.has(uri)) file.inlaysRequest?.cancel();
- });
-
- this.sourceFiles = newSourceFiles;
- }
-
- private renderDecorations(editor: RustEditor, decorations: InlaysDecorations) {
- const { typeHints, paramHints, chainingHints } = this.inlayHintsStyles;
- if (this.pendingDisposeDecorations !== undefined) {
- const { typeHints, paramHints, chainingHints } = this.pendingDisposeDecorations;
- editor.setDecorations(typeHints.decorationType, []);
- editor.setDecorations(paramHints.decorationType, []);
- editor.setDecorations(chainingHints.decorationType, []);
- }
- editor.setDecorations(typeHints.decorationType, decorations.type);
- editor.setDecorations(paramHints.decorationType, decorations.param);
- editor.setDecorations(chainingHints.decorationType, decorations.chaining);
- }
-
- private hintsToDecorations(hints: ra.InlayHint[]): InlaysDecorations {
- const { typeHints, paramHints, chainingHints } = this.inlayHintsStyles;
- const decorations: InlaysDecorations = { type: [], param: [], chaining: [] };
- const conv = this.ctx.client.protocol2CodeConverter;
-
- for (const hint of hints) {
- switch (hint.kind) {
- case ra.InlayHint.Kind.TypeHint: {
- decorations.type.push(typeHints.toDecoration(hint, conv));
- continue;
- }
- case ra.InlayHint.Kind.ParamHint: {
- decorations.param.push(paramHints.toDecoration(hint, conv));
- continue;
- }
- case ra.InlayHint.Kind.ChainingHint: {
- decorations.chaining.push(chainingHints.toDecoration(hint, conv));
- continue;
- }
- }
- }
- return decorations;
- }
-
- private async fetchHints(file: RustSourceFile): Promise<null | ra.InlayHint[]> {
- file.inlaysRequest?.cancel();
-
- const tokenSource = new vscode.CancellationTokenSource();
- file.inlaysRequest = tokenSource;
-
- const request = { textDocument: { uri: file.document.uri.toString() } };
-
- return sendRequestWithRetry(this.ctx.client, ra.inlayHints, request, tokenSource.token)
- .catch(_ => null)
- .finally(() => {
- if (file.inlaysRequest === tokenSource) {
- file.inlaysRequest = null;
- }
- });
- }
-}
-
-interface InlaysDecorations {
- type: vscode.DecorationOptions[];
- param: vscode.DecorationOptions[];
- chaining: vscode.DecorationOptions[];
-}
-
-interface RustSourceFile {
- /**
- * Source of the token to cancel in-flight inlay hints request if any.
- */
- inlaysRequest: null | vscode.CancellationTokenSource;
- /**
- * Last applied decorations.
- */
- cachedDecorations: null | InlaysDecorations;
-
- document: RustDocument;
-}
diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts
index 9248bd1b6f..9493a03481 100644
--- a/editors/code/src/lsp_ext.ts
+++ b/editors/code/src/lsp_ext.ts
@@ -2,6 +2,7 @@
* This file mirrors `crates/rust-analyzer/src/lsp_ext.rs` declarations.
*/
+import { InlayHint } from "vscode";
import * as lc from "vscode-languageclient";
export interface AnalyzerStatusParams {
@@ -99,26 +100,11 @@ export interface TestInfo {
export const relatedTests = new lc.RequestType<lc.TextDocumentPositionParams, TestInfo[], void>("rust-analyzer/relatedTests");
-export type InlayHint = InlayHint.TypeHint | InlayHint.ParamHint | InlayHint.ChainingHint;
-
-export namespace InlayHint {
- export const enum Kind {
- TypeHint = "TypeHint",
- ParamHint = "ParameterHint",
- ChainingHint = "ChainingHint",
- }
- interface Common {
- range: lc.Range;
- label: string;
- }
- export type TypeHint = Common & { kind: Kind.TypeHint };
- export type ParamHint = Common & { kind: Kind.ParamHint };
- export type ChainingHint = Common & { kind: Kind.ChainingHint };
-}
export interface InlayHintsParams {
textDocument: lc.TextDocumentIdentifier;
+ range: lc.Range;
}
-export const inlayHints = new lc.RequestType<InlayHintsParams, InlayHint[], void>("rust-analyzer/inlayHints");
+export const inlayHints = new lc.RequestType<InlayHintsParams, InlayHint[], void>("experimental/inlayHints");
export interface SsrParams {
query: string;