diff options
author | Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> | 2024-04-16 12:26:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-16 12:26:51 -0700 |
commit | 422cff1f247dc334d5eb9387be924f5937b0c6d9 (patch) | |
tree | a6abe5c97fb53163310687f6e0010eb774cdee2c /cli/bench | |
parent | c4d0fceec37e3842fad4aeb5afb0dfac4353390d (diff) |
chore(lsp): Add benchmark for performance on a large real-world repo (#23395)
This PR adds a benchmark intended to measure how the LSP handles larger
repos, as well as its performance on a more realistic workload.
The repo being benchmarked is
[deco-cx/apps](https://github.com/deco-cx/apps) which has been vendored
along with its dependencies. It's included as a git submodule as its
fairly large. The LSP requests used in the benchmark are the actual
requests sent by VSCode as I opened, modified, and navigated around a
file (to simulate an actual user interaction).
The main motivation is to have a more realistic benchmark that measures
how we do with a large number of files and dependencies. The
improvements made from 1.42 to 1.42.3 mostly improved performance with
larger repos, so none of our existing benchmarks showed an improvement.
Here are the results for the changes made from 1.42 to 1.42.3 (the new
benchmark is the last one listed):
**1.42.0**
```test
Starting Deno benchmark
-> Start benchmarking lsp
- Simple Startup/Shutdown
(10 runs, mean: 379ms)
- Big Document/Several Edits
(5 runs, mean: 1142ms)
- Find/Replace
(10 runs, mean: 51ms)
- Code Lens
(10 runs, mean: 443ms)
- deco-cx/apps Multiple Edits + Navigation
(5 runs, mean: 25121ms)
<- End benchmarking lsp
```
**1.42.3**
```text
Starting Deno benchmark
-> Start benchmarking lsp
- Simple Startup/Shutdown
(10 runs, mean: 383ms)
- Big Document/Several Edits
(5 runs, mean: 1135ms)
- Find/Replace
(10 runs, mean: 55ms)
- Code Lens
(10 runs, mean: 440ms)
- deco-cx/apps Multiple Edits + Navigation
(5 runs, mean: 11675ms)
<- End benchmarking lsp
```
Diffstat (limited to 'cli/bench')
-rw-r--r-- | cli/bench/lsp.rs | 113 | ||||
-rw-r--r-- | cli/bench/main.rs | 6 | ||||
-rw-r--r-- | cli/bench/testdata/deco_apps_requests.json | 2905 | ||||
m--------- | cli/bench/testdata/lsp_benchdata | 0 |
4 files changed, 3023 insertions, 1 deletions
diff --git a/cli/bench/lsp.rs b/cli/bench/lsp.rs index 28d6d3759..a5994c653 100644 --- a/cli/bench/lsp.rs +++ b/cli/bench/lsp.rs @@ -9,11 +9,14 @@ use std::collections::HashMap; use std::path::Path; use std::time::Duration; use test_util::lsp::LspClientBuilder; +use test_util::PathRef; use tower_lsp::lsp_types as lsp; static FIXTURE_CODE_LENS_TS: &str = include_str!("testdata/code_lens.ts"); static FIXTURE_DB_TS: &str = include_str!("testdata/db.ts"); static FIXTURE_DB_MESSAGES: &[u8] = include_bytes!("testdata/db_messages.json"); +static FIXTURE_DECO_APPS: &[u8] = + include_bytes!("testdata/deco_apps_requests.json"); #[derive(Debug, Deserialize)] enum FixtureType { @@ -36,6 +39,107 @@ struct FixtureMessage { params: Value, } +/// replaces the root directory in the URIs of the requests +/// with the given root path +fn patch_uris<'a>( + reqs: impl IntoIterator<Item = &'a mut tower_lsp::jsonrpc::Request>, + root: &PathRef, +) { + for req in reqs { + let mut params = req.params().unwrap().clone(); + let new_req = if let Some(doc) = params.get_mut("textDocument") { + if let Some(uri_val) = doc.get_mut("uri") { + let uri = uri_val.as_str().unwrap(); + *uri_val = + Value::from(uri.replace( + "file:///", + &format!("file://{}/", root.to_string_lossy()), + )); + } + let builder = tower_lsp::jsonrpc::Request::build(req.method().to_owned()); + let builder = if let Some(id) = req.id() { + builder.id(id.clone()) + } else { + builder + }; + + Some(builder.params(params).finish()) + } else { + None + }; + + if let Some(new_req) = new_req { + *req = new_req; + } + } +} + +fn bench_deco_apps_edits(deno_exe: &Path) -> Duration { + let mut requests: Vec<tower_lsp::jsonrpc::Request> = + serde_json::from_slice(FIXTURE_DECO_APPS).unwrap(); + let apps = + test_util::root_path().join("cli/bench/testdata/lsp_benchdata/apps"); + + // it's a bit wasteful to do this for every run, but it's the easiest with the way things + // are currently structured + patch_uris(&mut requests, &apps); + + let mut client = LspClientBuilder::new() + .use_diagnostic_sync(false) + .set_root_dir(apps.clone()) + .deno_exe(deno_exe) + .build(); + client.initialize(|c| { + c.set_workspace_folders(vec![lsp_types::WorkspaceFolder { + uri: Url::from_file_path(&apps).unwrap(), + name: "apps".to_string(), + }]); + c.set_deno_enable(true); + c.set_unstable(true); + c.set_preload_limit(1000); + c.set_config(apps.join("deno.json").as_path().to_string_lossy()); + }); + + let start = std::time::Instant::now(); + + let mut reqs = 0; + for req in requests { + if req.id().is_none() { + client.write_notification(req.method(), req.params()); + } else { + reqs += 1; + client.write_jsonrpc(req.method(), req.params()); + } + } + for _ in 0..reqs { + let _ = client.read_latest_response(); + } + + let end = start.elapsed(); + + // part of the motivation of including this benchmark is to see how we perform + // with a fairly large number of documents in memory. + // make sure that's the case + let res = client.write_request( + "deno/virtualTextDocument", + json!({ + "textDocument": { + "uri": "deno:/status.md" + } + }), + ); + let re = lazy_regex::regex!(r"Documents in memory: (\d+)"); + let res = res.as_str().unwrap().to_string(); + assert!(res.starts_with("# Deno Language Server Status")); + let captures = re.captures(&res).unwrap(); + let count = captures.get(1).unwrap().as_str().parse::<usize>().unwrap(); + assert!(count > 1000, "count: {}", count); + + client.shutdown(); + + end +} + /// A benchmark that opens a 8000+ line TypeScript document, adds a function to /// the end of the document and does a level of hovering and gets quick fix /// code actions. @@ -309,6 +413,15 @@ pub fn benchmarks(deno_exe: &Path) -> HashMap<String, i64> { println!(" ({} runs, mean: {}ms)", times.len(), mean); exec_times.insert("code_lens".to_string(), mean); + println!(" - deco-cx/apps Multiple Edits + Navigation"); + let mut times = Vec::new(); + for _ in 0..5 { + times.push(bench_deco_apps_edits(deno_exe)); + } + let mean = + (times.iter().sum::<Duration>() / times.len() as u32).as_millis() as i64; + println!(" ({} runs, mean: {}ms)", times.len(), mean); + println!("<- End benchmarking lsp"); exec_times diff --git a/cli/bench/main.rs b/cli/bench/main.rs index d58a6fdb6..9bae6fab6 100644 --- a/cli/bench/main.rs +++ b/cli/bench/main.rs @@ -431,7 +431,11 @@ async fn main() -> Result<()> { println!("Starting Deno benchmark"); let target_dir = test_util::target_dir(); - let deno_exe = test_util::deno_exe_path().to_path_buf(); + let deno_exe = if let Ok(p) = std::env::var("DENO_BENCH_EXE") { + PathBuf::from(p) + } else { + test_util::deno_exe_path().to_path_buf() + }; env::set_current_dir(test_util::root_path())?; let mut new_data = BenchResult { diff --git a/cli/bench/testdata/deco_apps_requests.json b/cli/bench/testdata/deco_apps_requests.json new file mode 100644 index 000000000..23c20c1e4 --- /dev/null +++ b/cli/bench/testdata/deco_apps_requests.json @@ -0,0 +1,2905 @@ +[ + { + "jsonrpc": "2.0", + "method": "textDocument/didOpen", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "languageId": "typescript", + "version": 1, + "text": "import { ImportMap } from \"deco/blocks/app.ts\";\nimport { buildImportMap } from \"deco/blocks/utils.tsx\";\nimport { notUndefined } from \"deco/engine/core/utils.ts\";\nimport { type App, AppModule, context, type FnContext } from \"deco/mod.ts\";\nimport { Markdown } from \"./components/Markdown.tsx\";\nimport manifest, { Manifest } from \"./manifest.gen.ts\";\n\n/**\n * @title App\n */\nexport interface DynamicApp {\n importUrl: string;\n name: string;\n importMap?: ImportMap;\n}\n\nexport interface State {\n enableAdmin?: boolean;\n apps: DynamicApp[];\n}\n\nconst DENY_DYNAMIC_IMPORT = Deno.env.get(\"DENY_DYNAMIC_IMPORT\") === \"true\";\n\n/**\n * @title Deco Hub\n * @description Unlock apps and integrations on deco.cx\n * @category Tool\n * @logo https://raw.githubusercontent.com/deco-cx/apps/main/decohub/logo.png\n */\nconst ADMIN_APP = \"decohub/apps/admin.ts\";\nconst FILES_APP = \"decohub/apps/files.ts\";\nexport default async function App(\n state: State,\n): Promise<App<Manifest, State>> {\n const resolvedAdminImport = import.meta.resolve(\"../admin/mod.ts\");\n const resolvedFilesImport = import.meta.resolve(\"../files/mod.ts\");\n const baseImportMap = buildImportMap(manifest);\n const appModules = DENY_DYNAMIC_IMPORT ? [] : await Promise.all(\n (state?.apps ?? []).filter(Boolean).map(async (app) => {\n const appMod = await import(app.importUrl).catch((err) => {\n console.error(\"error when importing app\", app.name, app.importUrl, err);\n return null;\n });\n if (!appMod) {\n return null;\n }\n return {\n module: appMod,\n importUrl: app.importUrl,\n importMap: app.importMap,\n name: app.name,\n };\n }),\n );\n const [dynamicApps, enhancedImportMap] = appModules.filter(notUndefined)\n .reduce(\n ([apps, importmap], app) => {\n const appTs = `${app.name}.ts`;\n const appName = `${manifest.name}/apps/${appTs}`;\n return [{\n ...apps,\n [appName]: app.module,\n }, {\n ...importmap,\n ...app.importMap ?? {},\n imports: {\n ...importmap?.imports ?? {},\n ...app.importMap?.imports ?? {},\n [appName]: app.importUrl,\n },\n }];\n },\n [{} as Record<string, AppModule>, baseImportMap],\n );\n return {\n manifest: {\n ...manifest,\n apps: {\n // build apps based on name\n ...dynamicApps,\n ...manifest.apps,\n ...context.play || state.enableAdmin // this is an optimization to not include the admin code for everyone in case of play is not being used.\n ? {\n [ADMIN_APP]: await import(\n resolvedAdminImport\n ),\n [FILES_APP]: await import(\n resolvedFilesImport\n ),\n }\n : {},\n },\n } as Manifest,\n state,\n ...context.play || state.enableAdmin\n ? {\n importMap: {\n ...enhancedImportMap,\n imports: {\n ...enhancedImportMap?.imports ?? {},\n [ADMIN_APP]: ADMIN_APP,\n [FILES_APP]: FILES_APP,\n },\n },\n }\n : {},\n };\n}\n\nexport type AppContext = FnContext<State, Manifest>;\n\nexport const Preview = await Markdown(\n new URL(\"./README.md\", import.meta.url).href,\n);\n" + } + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 0 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 201 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 202 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 203 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 204 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/range", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 13, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 205 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 22, + "character": 0 + }, + "end": { + "line": 22, + "character": 0 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 206 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 207 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 208 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 209 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 210 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 111, + "character": 38 + } + } + }, + "id": 211 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/hover", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 33, + "character": 31 + } + }, + "id": 212 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 43, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 213 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 214 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 215 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 216 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 217 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 108, + "character": 0 + } + } + }, + "id": 218 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 219 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 108, + "character": 0 + } + } + }, + "id": 220 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/hover", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 31, + "character": 33 + } + }, + "id": 221 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 114, + "character": 0 + } + } + }, + "id": 222 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 223 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 108, + "character": 0 + } + } + }, + "id": 224 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/hover", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + } + }, + "id": 225 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentHighlight", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + } + }, + "id": 226 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/definition", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + } + }, + "id": 227 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/references", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + }, + "context": { + "includeDeclaration": true + } + }, + "id": 228 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentHighlight", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + } + }, + "id": 229 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/definition", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + } + }, + "id": 230 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 62, + "character": 12 + } + } + }, + "id": 231 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 9 + }, + "end": { + "line": 0, + "character": 9 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 232 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 91, + "character": 8 + } + } + }, + "id": 233 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 14 + }, + "end": { + "line": 0, + "character": 14 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 234 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/hover", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 14 + } + }, + "id": 235 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 236 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 237 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 238 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/hover", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 13 + } + }, + "id": 239 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 108, + "character": 0 + } + } + }, + "id": 240 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/hover", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 41 + } + }, + "id": 241 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/definition", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 41 + } + }, + "id": 242 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentHighlight", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 41 + } + }, + "id": 245 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/definition", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 41 + } + }, + "id": 246 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentHighlight", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 0, + "character": 41 + } + }, + "id": 247 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 0 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 267 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 108, + "character": 0 + } + } + }, + "id": 268 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 41 + }, + "end": { + "line": 0, + "character": 41 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 269 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 270 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 271 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 272 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 273 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 5, + "character": 55 + }, + "end": { + "line": 5, + "character": 55 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 274 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 2 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 5, + "character": 55 + }, + "end": { + "line": 5, + "character": 55 + } + }, + "rangeLength": 0, + "text": "\n" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 0 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 275 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 276 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 277 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 278 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 279 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 3 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 0 + } + }, + "rangeLength": 0, + "text": "i" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/completion", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 6, + "character": 1 + }, + "context": { + "triggerKind": 1 + } + }, + "id": 280 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 281 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 4 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 1 + }, + "end": { + "line": 6, + "character": 1 + } + }, + "rangeLength": 0, + "text": "m" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 5 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 2 + }, + "end": { + "line": 6, + "character": 2 + } + }, + "rangeLength": 0, + "text": "p" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 6 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 3 + }, + "end": { + "line": 6, + "character": 3 + } + }, + "rangeLength": 0, + "text": "o" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 283 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 284 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 285 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 286 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 4 + }, + "end": { + "line": 6, + "character": 4 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 287 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 288 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 4 + }, + "end": { + "line": 6, + "character": 4 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 4 + } + }, + "message": "Cannot find name 'impo'.", + "code": 2304, + "severity": 1, + "source": "deno-ts" + } + ], + "triggerKind": 2 + } + }, + "id": 289 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 7 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 4 + }, + "end": { + "line": 6, + "character": 4 + } + }, + "rangeLength": 0, + "text": "r" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 8 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 5 + }, + "end": { + "line": 6, + "character": 5 + } + }, + "rangeLength": 0, + "text": "t" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 9 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 6 + }, + "end": { + "line": 6, + "character": 6 + } + }, + "rangeLength": 0, + "text": " " + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 10 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 7 + }, + "end": { + "line": 6, + "character": 7 + } + }, + "rangeLength": 0, + "text": "{}" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 290 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 11 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 8 + }, + "end": { + "line": 6, + "character": 8 + } + }, + "rangeLength": 0, + "text": " " + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 12 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 9 + }, + "end": { + "line": 6, + "character": 9 + } + }, + "rangeLength": 0, + "text": "AppFunc" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 291 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 16 + }, + "end": { + "line": 6, + "character": 16 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 292 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 293 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 13 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 16 + }, + "end": { + "line": 6, + "character": 16 + } + }, + "rangeLength": 0, + "text": " " + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 294 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 295 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 296 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 297 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 298 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 14 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 18 + }, + "end": { + "line": 6, + "character": 18 + } + }, + "rangeLength": 0, + "text": " " + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 299 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 15 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 19 + }, + "end": { + "line": 6, + "character": 19 + } + }, + "rangeLength": 0, + "text": "f" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/completion", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 6, + "character": 20 + }, + "context": { + "triggerKind": 1 + } + }, + "id": 300 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 16 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 20 + }, + "end": { + "line": 6, + "character": 20 + } + }, + "rangeLength": 0, + "text": "r" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 17 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 21 + }, + "end": { + "line": 6, + "character": 21 + } + }, + "rangeLength": 0, + "text": "o" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 18 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 22 + }, + "end": { + "line": 6, + "character": 22 + } + }, + "rangeLength": 0, + "text": "m" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 19 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 23 + }, + "end": { + "line": 6, + "character": 23 + } + }, + "rangeLength": 0, + "text": " " + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 302 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 20 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 24 + }, + "end": { + "line": 6, + "character": 24 + } + }, + "rangeLength": 0, + "text": "\"\"" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/completion", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 6, + "character": 25 + }, + "context": { + "triggerKind": 2, + "triggerCharacter": "\"" + } + }, + "id": 303 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 305 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 25 + }, + "end": { + "line": 6, + "character": 25 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 24 + }, + "end": { + "line": 6, + "character": 26 + } + }, + "message": "Relative import path \"\" not prefixed with / or ./ or ../ and not in import map from \"file:///decohub/mod.ts\"", + "code": "resolver-error", + "severity": 1, + "source": "deno" + } + ], + "triggerKind": 2 + } + }, + "id": 306 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 307 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 308 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 309 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 310 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 25 + }, + "end": { + "line": 6, + "character": 25 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 24 + }, + "end": { + "line": 6, + "character": 26 + } + }, + "message": "Relative import path \"\" not prefixed with / or ./ or ../ and not in import map from \"file:///decohub/mod.ts\"", + "code": "resolver-error", + "severity": 1, + "source": "deno" + }, + { + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 26 + } + }, + "message": "'AppFunc' is declared but its value is never read.", + "code": 6133, + "severity": 4, + "tags": [ + 1 + ], + "source": "deno-ts" + } + ], + "triggerKind": 2 + } + }, + "id": 311 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 21 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 25 + }, + "end": { + "line": 6, + "character": 25 + } + }, + "rangeLength": 0, + "text": "d" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 22 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 26 + }, + "end": { + "line": 6, + "character": 26 + } + }, + "rangeLength": 0, + "text": "e" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 23 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 27 + }, + "end": { + "line": 6, + "character": 27 + } + }, + "rangeLength": 0, + "text": "c" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 313 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 24 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 28 + }, + "end": { + "line": 6, + "character": 28 + } + }, + "rangeLength": 0, + "text": "o" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 25 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 29 + }, + "end": { + "line": 6, + "character": 29 + } + }, + "rangeLength": 0, + "text": "/" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/completion", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 6, + "character": 30 + }, + "context": { + "triggerKind": 2, + "triggerCharacter": "/" + } + }, + "id": 315 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 26 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 30 + }, + "end": { + "line": 6, + "character": 30 + } + }, + "rangeLength": 0, + "text": "b" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 316 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 27 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 31 + }, + "end": { + "line": 6, + "character": 31 + } + }, + "rangeLength": 0, + "text": "l" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 28 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 32 + }, + "end": { + "line": 6, + "character": 32 + } + }, + "rangeLength": 0, + "text": "o" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 29 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 33 + }, + "end": { + "line": 6, + "character": 33 + } + }, + "rangeLength": 0, + "text": "c" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 30 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 34 + }, + "end": { + "line": 6, + "character": 34 + } + }, + "rangeLength": 0, + "text": "k" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 318 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 31 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 35 + }, + "end": { + "line": 6, + "character": 35 + } + }, + "rangeLength": 0, + "text": "s" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 32 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 36 + }, + "end": { + "line": 6, + "character": 36 + } + }, + "rangeLength": 0, + "text": "/" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/completion", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "position": { + "line": 6, + "character": 37 + }, + "context": { + "triggerKind": 2, + "triggerCharacter": "/" + } + }, + "id": 319 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 321 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 37 + }, + "end": { + "line": 6, + "character": 37 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 24 + }, + "end": { + "line": 6, + "character": 38 + } + }, + "message": "Uncached or missing remote URL: https://denopkg.com/deco-cx/deco@1.57.17/blocks/", + "data": { + "specifier": "https://denopkg.com/deco-cx/deco@1.57.17/blocks/" + }, + "code": "no-cache", + "severity": 1, + "source": "deno" + } + ], + "triggerKind": 2 + } + }, + "id": 322 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 323 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 324 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 325 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 326 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 37 + }, + "end": { + "line": 6, + "character": 37 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 24 + }, + "end": { + "line": 6, + "character": 38 + } + }, + "message": "Uncached or missing remote URL: https://denopkg.com/deco-cx/deco@1.57.17/blocks/", + "data": { + "specifier": "https://denopkg.com/deco-cx/deco@1.57.17/blocks/" + }, + "code": "no-cache", + "severity": 1, + "source": "deno" + }, + { + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 38 + } + }, + "message": "'AppFunc' is declared but its value is never read.", + "code": 6133, + "severity": 4, + "tags": [ + 1 + ], + "source": "deno-ts" + } + ], + "triggerKind": 2 + } + }, + "id": 327 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 33 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 37 + }, + "end": { + "line": 6, + "character": 37 + } + }, + "rangeLength": 0, + "text": "a" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 34 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 38 + }, + "end": { + "line": 6, + "character": 38 + } + }, + "rangeLength": 0, + "text": "p" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 35 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 39 + }, + "end": { + "line": 6, + "character": 39 + } + }, + "rangeLength": 0, + "text": "p" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 329 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 40 + }, + "end": { + "line": 6, + "character": 40 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 24 + }, + "end": { + "line": 6, + "character": 41 + } + }, + "message": "Uncached or missing remote URL: https://denopkg.com/deco-cx/deco@1.57.17/blocks/app", + "data": { + "specifier": "https://denopkg.com/deco-cx/deco@1.57.17/blocks/app" + }, + "code": "no-cache", + "severity": 1, + "source": "deno" + } + ], + "triggerKind": 2 + } + }, + "id": 330 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 331 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 332 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 333 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 334 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 36 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 25 + }, + "end": { + "line": 6, + "character": 40 + } + }, + "rangeLength": 15, + "text": "deco/blocks/app.ts" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 335 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 336 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 337 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 338 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 339 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 44 + }, + "end": { + "line": 6, + "character": 44 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 44 + } + }, + "message": "'AppFunc' is declared but its value is never read.", + "code": 6133, + "severity": 4, + "tags": [ + 1 + ], + "source": "deno-ts" + } + ], + "triggerKind": 2 + } + }, + "id": 340 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didChange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts", + "version": 37 + }, + "contentChanges": [ + { + "range": { + "start": { + "line": 6, + "character": 44 + }, + "end": { + "line": 6, + "character": 44 + } + }, + "rangeLength": 0, + "text": ";" + } + ] + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 45 + }, + "end": { + "line": 6, + "character": 45 + } + }, + "context": { + "diagnostics": [], + "triggerKind": 2 + } + }, + "id": 341 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/foldingRange", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 342 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 343 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 344 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/documentSymbol", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 345 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/didSave", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + } + }, + { + "jsonrpc": "2.0", + "method": "textDocument/semanticTokens/full", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 346 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeAction", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 6, + "character": 45 + }, + "end": { + "line": 6, + "character": 45 + } + }, + "context": { + "diagnostics": [ + { + "range": { + "start": { + "line": 6, + "character": 0 + }, + "end": { + "line": 6, + "character": 45 + } + }, + "message": "'AppFunc' is declared but its value is never read.", + "code": 6133, + "severity": 4, + "tags": [ + 1 + ], + "source": "deno-ts" + } + ], + "triggerKind": 2 + } + }, + "id": 347 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/codeLens", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + } + }, + "id": 348 + }, + { + "jsonrpc": "2.0", + "method": "textDocument/inlayHint", + "params": { + "textDocument": { + "uri": "file:///decohub/mod.ts" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 108, + "character": 1 + } + } + }, + "id": 349 + } +] diff --git a/cli/bench/testdata/lsp_benchdata b/cli/bench/testdata/lsp_benchdata new file mode 160000 +Subproject af4c6a1eee825f19d3b3cce74cfdd03ebe1a3b9 |