diff --git a/Cargo.lock b/Cargo.lock
index 9fa5217..5fa659e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1402,7 +1402,7 @@ dependencies = [
[[package]]
name = "naviscope"
-version = "0.2.0"
+version = "0.2.1"
dependencies = [
"axum",
"cc",
diff --git a/Cargo.toml b/Cargo.toml
index bb8e846..eb500db 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "naviscope"
-version = "0.2.0"
+version = "0.2.1"
edition = "2024"
[dependencies]
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..86cd174
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 biuld
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 1c1acfd..ef2b55b 100644
--- a/README.md
+++ b/README.md
@@ -1,158 +1,167 @@
# Naviscope
-Naviscope is a **unified Code Knowledge Graph engine** that bridges the gap between AI agents and developers. It builds a comprehensive graph representation of your codebase, connecting micro-level source code semantics (calls, inheritance) with macro-level project structures (modules, packages, dependencies).
+**Unified Code Knowledge Graph Engine for AI Agents & Developers**
-Unlike traditional text search or language servers, Naviscope provides a **single, unified knowledge graph** that powers both LLM agents (via MCP) and IDE features (via LSP), enabling precise code navigation and reasoning across complex software systems.
+Naviscope bridges the gap between AI and IDEs. It builds a comprehensive, graph-based representation of your codebase (connecting micro-level semantics like calls and inheritance with macro-level structures) that powers both **LLM agents** (via MCP) and **code editors** (via LSP).
-## 🌟 Key Features
+Unlike traditional tools that maintain separate indexes for different purposes, Naviscope provides a **single, unified knowledge graph**, ensuring that what AI agents see is exactly what developers navigate.
-- **Unified Code Knowledge Graph**: A single graph representation using `petgraph` that powers both MCP (for LLMs) and LSP (for IDEs), ensuring consistency across all tools.
-- **Zero JVM Overhead**: Built entirely in Rust, providing instant startup and low memory footprint—no more waiting for Java language servers to index.
-- **LLM-Optimized Query Interface**: Structured JSON responses via MCP tools (`grep`, `ls`, `inspect`, `deps`) designed specifically for AI agent consumption.
-- **High-Performance Indexing**: A robust 3-phase processing pipeline (Scan & Parse → Resolve → Apply) utilizing Rust's concurrency for maximum speed.
-- **Real-time Synchronization**: Automatic graph updates via file system watching (`notify`), ensuring the index stays consistent with your changes.
-- **Dual Protocol Support**: Native **MCP** (Model Context Protocol) for AI agents and **LSP** (Language Server Protocol) for IDEs, both sharing the same underlying graph.
-- **Resilient & Fast**: Works effectively even with syntax errors or missing dependencies, providing immediate feedback without blocking on incomplete code.
-- **Extensible Architecture**: Language-neutral core with a strategy-based resolver. Currently supports **Java + Gradle**, with Maven support in progress.
+## 💡 Why Naviscope?
+
+| Feature | Traditional Tools | Naviscope |
+| :--- | :--- | :--- |
+| **Context** | Text-based (regex/grep) | **Graph-based** (structural/semantic) |
+| **Performance** | High latency (JVM based) | **Instant** (Rust native, Zero-JVM overhead) |
+| **Consistency** | Fragmented (Agent vs IDE) | **Unified** (Same graph for both) |
+| **Resilience** | Blocks on errors/missing deps | **Robust** (Works with partial/broken code) |
+
+## 🌟 Capabilities
+
+### 🤖 For AI Agents (MCP Support)
+Naviscope implements the [Model Context Protocol](https://modelcontextprotocol.io/), giving LLMs "X-ray vision" into your code structure.
+
+- **`ls`**: Hierarchical exploration of packages, modules, and fields.
+- **`grep`**: Precise symbol search (find "Class definitions", not just string matches).
+- **`inspect`**: Retrieve definition, source code, and metadata for any symbol.
+- **`deps`**: Analyze incoming/outgoing dependencies and call graphs.
+
+### 👨💻 For Developers (LSP Support)
+A lightweight, lightning-fast alternative to standard language servers (like JDTLS).
+
+- **Navigation**: Go to Definition, Find References, Go to Implementation.
+- **Understanding**: Hover documentation, Document Highlights.
+- **Hierarchy**: Call Hierarchy, Type Hierarchy.
+- **Speed**: Works immediately on large projects without long indexing pauses.
## 🏗️ Architecture
-Naviscope processes code through three distinct phases:
-1. **Phase 1: Scan & Parse**: Parallel file scanning and AST extraction using Tree-sitter. It captures raw definitions and references at the file level.
-2. **Phase 2: Resolve**: Bridges the "semantic gap" by mapping raw entities to logical project structures (Modules/Packages) and resolving symbols across the workspace.
-3. **Phase 3: Apply**: Merges resolved operations into a `StableDiGraph` and persists the index for fast subsequent access.
+```mermaid
+graph TD
+ %% Styles
+ classDef layer fill:#e3f2fd,stroke:#1565c0,stroke-width:2px,rx:5,ry:5
+ classDef component fill:#fff,stroke:#333,stroke-width:1px
+ classDef storage fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,rx:5,ry:5
+
+ subgraph Access [Interfaces Layer]
+ direction LR
+ CLI[CLI Shell]:::component
+ MCP["MCP Server
(AI Agents)"]:::component
+ LSP["LSP Server
(Editors)"]:::component
+ end
+
+ subgraph Service [Query & Analysis Layer]
+ direction LR
+ Query[Query Engine]:::component
+ Search[Semantic Search]:::component
+ Deps[Dependency Analysis]:::component
+ end
+
+ subgraph Core [Core Knowledge Graph]
+ direction LR
+ Graph["Unified Graph
(petgraph)"]:::component
+ Index["Symbol Index"]:::component
+ end
+
+ subgraph Ingestion [Ingestion Layer]
+ direction LR
+ Scanner[File Scanner]:::component
+ Parser["Parsers
(Tree-sitter)"]:::component
+ Resolver["Symbol Resolver
(Java/Gradle)"]:::component
+ end
+
+ subgraph Infra [Infrastructure]
+ direction LR
+ Store[("Persistence")]:::storage
+ Watch[File Watcher]:::component
+ end
+
+ %% Connections
+ CLI --> Query
+ MCP --> Query
+ LSP --> Query
+
+ Query --> Graph
+ Search --> Graph
+ Deps --> Graph
+
+ Scanner --> Parser
+ Parser --> Resolver
+ Resolver --> Graph
+
+ Graph -.-> Store
+ Watch -.-> Scanner
+```
+
+Naviscope is built on a **layered architecture** that separates ingestion, core graph logic, and external interfaces. The core is a language-agnostic graph structure populated by language-specific strategies (currently Java/Gradle via Tree-sitter), exposing a unified query engine to both AI agents and developer tools.
## 🚀 Quick Start
### Prerequisites
- Rust (2024 edition)
-- C compiler (required for compiling Tree-sitter grammars)
+- C Compiler (required for compiling Tree-sitter grammars)
+
+### Installation from source code
-### Installation
```bash
-# 1. Update submodules (required for tree-sitter grammars)
+# 1. Clone & Update Submodules (Required for tree-sitter grammars)
+git clone https://github.com/biuld/naviscope.git
+cd naviscope
git submodule update --init --recursive
# 2. Install the Naviscope CLI
cargo install --path .
-# 3. Build the VS Code Extension (Optional)
+# 3. (Optional) Build the VS Code Extension
cd editors/vscode
npm install
npm run package
-# Install the generated .vsix in VS Code
+# Then install the generated .vsix file in VS Code
```
-### CLI Commands
-- `naviscope index `: Build a persistent index for a project (stored in `~/.naviscope/indices`).
-- `naviscope shell [PATH]`: Start an interactive shell to query the code knowledge graph.
-- `naviscope watch `: Start a background service to keep the index updated as you edit files.
-- `naviscope schema`: Display the JSON schema and examples for the GraphQuery DSL.
-- `naviscope clear [PATH]`: Remove specific project index or clear all cached indices.
-- `naviscope mcp`: Start the Model Context Protocol server.
-- `naviscope lsp`: Start the Language Server Protocol server.
-
-### Model Context Protocol (MCP) Support
-Naviscope implements the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), allowing LLM agents like Cursor and Claude to directly use its code knowledge graph.
-
-#### Available Tools
-- **`grep`**: Global search for symbols by pattern and kind (Class, Method, etc.) across the entire project.
-- **`ls`**: List package members, class fields, or project modules. Explore project structure hierarchically.
-- **`inspect`**: Retrieve full metadata and source code for a specific Fully Qualified Name (FQN).
-- **`deps`**: Analyze dependencies—outgoing (what I depend on) or incoming (who depends on me) with optional edge type filtering.
-
-#### Configuring in Cursor
-To use Naviscope in Cursor:
-1. Open **Cursor Settings** (Cmd + Shift + J on macOS).
-2. Navigate to **Features** -> **MCP**.
-3. Click **+ Add New MCP Server**.
-4. Configure as follows:
- - **Name**: `Naviscope`
- - **Type**: `command`
- - **Command**: `naviscope mcp`
-5. Click **Save**. Cursor will now automatically index your project when you ask questions.
-
-#### Configuring in Claude Desktop
-Add the following entry to your `claude_desktop_config.json`:
-```json
-{
- "mcpServers": {
- "naviscope": {
- "command": "naviscope",
- "args": ["mcp"]
- }
- }
-}
-```
+### Usage
-### Language Server Protocol (LSP) Support
-Naviscope acts as a high-performance LSP server for Java, offering a lightweight alternative to JDTLS. It uses precise semantic edge tracking to ensure high availability and accuracy.
-
-#### Features
-- **Go to Definition**: Instant jump to symbol definitions using precise edge tracking.
-- **Find References**: Global reference tracking across the entire project graph.
-- **Call Hierarchy**: Visualize incoming and outgoing method calls.
-- **Go to Type Definition**: Jump to the class definition of variables or return types.
-- **Go to Implementation**: Find all implementations of an interface or overrides of a method.
-- **Document Symbol**: Navigate class structures (classes, methods, fields) within a file.
-- **Workspace Symbol**: Global fuzzy search for classes and methods.
-- **Hover**: View symbol signatures and documentation snippets.
-- **Document Highlight**: Highlight all local references of a symbol in the current document.
-
-#### Usage in VSCode / NeoVim
-- **VSCode**:
- 1. Build the `.vsix` as shown in the Installation section.
- 2. Install it in VS Code via "Install from VSIX...".
- 3. Ensure the `naviscope` binary is in your PATH or configure `naviscope.path` in settings.
-- **Other Editors**: Simply point your LSP client to the `naviscope lsp` command.
-
-#### Why Naviscope LSP?
-- **Zero JVM Overhead**: Built in Rust, providing instant startup and low memory usage—no more "Java Language Server is indexing..." blocking your workflow.
-- **Resilient**: Works effectively even with syntax errors or missing dependencies, providing immediate navigation without waiting for perfect code.
-- **Unified Knowledge Graph**: Shares the exact same core graph used by MCP for LLM agents, ensuring consistency between AI-assisted development and manual navigation.
-- **Lightweight Alternative**: A fast, memory-efficient replacement for JDTLS that doesn't require a full Java runtime.
-
-## 🛠️ Query API Examples
-
-The Query DSL (used by `naviscope shell` and MCP) supports several commands for structured exploration:
-
-**Shell Commands:**
-```bash
-grep "UserService" # Search for symbols matching pattern
-ls "com.example.service" # List package contents
-cat "com.example.service.UserService" # Inspect full details of a symbol
-deps "com.example.service.UserService" # Show dependencies (outgoing by default)
-deps --rev "com.example.service.UserService" # Show reverse dependencies (incoming)
-```
+#### CLI Commands
+- `naviscope index `: Build a persistent index for a project.
+- `naviscope shell [PATH]`: Start an interactive shell to query the graph.
+- `naviscope watch `: Start a background service to keep the index updated.
+#### Configure in Cursor (for AI Agents)
+1. Open **Cursor Settings** (Cmd + Shift + J) -> **Features** -> **MCP**.
+2. Click **+ Add New MCP Server**.
+3. Configure:
+ - **Name**: `Naviscope`
+ - **Type**: `command`
+ - **Command**: `naviscope mcp`
-**JSON DSL (for MCP/API):**
-```json
-{"command": "grep", "pattern": "UserService", "kind": ["class"], "limit": 20}
-{"command": "ls", "fqn": "com.example.service", "kind": ["class", "interface"]}
-{"command": "cat", "fqn": "com.example.service.UserService"}
-{"command": "deps", "fqn": "com.example.service.UserService", "rev": false, "edge_type": ["Calls", "InheritsFrom"]}
-```
+#### Configure in VS Code / NeoVim (for LSP)
+- **VS Code**: Install the extension built in step 3.
+- **Other Clients**: Point your LSP client to run `naviscope lsp`.
-## 🎯 Project Positioning
+## 🛠️ Query DSL Examples
-Naviscope fills a unique niche in the developer tooling ecosystem:
+Whether using the CLI shell or MCP tools, the query logic is consistent:
-**For LLM Agents**: Provides structured, graph-based code understanding that goes far beyond text search, enabling AI assistants to reason about code relationships, dependencies, and architecture.
+```bash
+# Find all classes named 'UserService'
+grep "UserService" --kind class
-**For Developers**: Offers a lightweight, fast LSP server that doesn't require JVM overhead, with the added benefit of sharing the same knowledge graph that powers AI-assisted development.
+# List contents of a package
+ls "com.example.service"
-**The Unified Advantage**: Unlike traditional tools that maintain separate indexes for different purposes, Naviscope's single knowledge graph ensures that what AI agents see is exactly what developers navigate—creating a seamless, consistent experience across all development workflows.
+# Inspect full details of a symbol (source code, metadata)
+cat "com.example.service.UserService"
-## 📈 Roadmap (V1)
-- [x] Core Graph Storage (`petgraph`)
-- [x] Java & Gradle Parser (Tree-sitter driven)
-- [x] Shell-like Query DSL Engine
-- [x] Parallel Indexing & Real-time Updates (`notify`)
-- [x] MCP Server implementation (grep, ls, inspect, deps)
-- [x] LSP Support (Definition, References, Hierarchy, Hover, etc.)
-- [x] VSCode Extension
-- [ ] Maven Support (In Progress)
-- [ ] Python/Rust Language Strategies (Planned)
+# Who calls 'login'? (Incoming dependencies / Reverse lookups)
+deps --rev "com.example.auth.AuthService.login"
+```
+
+## 📈 Roadmap
+
+- [x] **Core**: Graph Storage (`petgraph`), Parallel Indexing, Real-time Updates (`notify`).
+- [x] **Languages**: Java & Gradle (Tree-sitter driven).
+- [x] **Interfaces**: CLI Shell, MCP Server, LSP Server.
+- [x] **Editors**: VS Code Extension.
+- [ ] **Upcoming**: Maven Support, Python/Rust Language Strategies.
## 📄 License
+
This project is licensed under the MIT License - see the LICENSE file for details.
diff --git a/editors/vscode/LICENSE b/editors/vscode/LICENSE
new file mode 100644
index 0000000..86cd174
--- /dev/null
+++ b/editors/vscode/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 biuld
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/editors/vscode/README.md b/editors/vscode/README.md
index 887ea35..19eb723 100644
--- a/editors/vscode/README.md
+++ b/editors/vscode/README.md
@@ -1,63 +1,78 @@
# Naviscope for VS Code
-Naviscope is a unified Code Knowledge Graph engine that powers both AI agents and developers. This VS Code extension brings Naviscope's Language Server Protocol (LSP) integration directly into your editor, offering a lightweight, blazing-fast alternative to JDTLS for Java navigation.
+**Unified Code Knowledge Graph Engine for Developers**
-## 🚀 Features
+Naviscope bridges the gap between AI and IDEs. This extension brings the power of Naviscope's **Unified Code Knowledge Graph** directly into VS Code, offering a lightweight, lightning-fast alternative to traditional Java language servers (like JDTLS).
-### Blazing Fast Navigation
-Naviscope builds a comprehensive Code Knowledge Graph of your project, enabling instant symbol resolution without the overhead of a full JVM-based language server.
+It shares the **exact same graph representation** used by AI agents (via MCP), ensuring that what your AI assistant sees is exactly what you navigate in the editor.
+
+## 💡 Why Naviscope?
+
+| Feature | Traditional Tools (JDTLS) | Naviscope |
+| :--- | :--- | :--- |
+| **Performance** | High latency, heavy memory (JVM) | **Instant**, minimal footprint (Rust) |
+| **Resilience** | Blocks on build errors | **Robust**, works with partial code |
+| **Context** | Separate from AI tools | **Unified** with AI Agents (MCP) |
+
+## 🌟 Capabilities
+
+### ⚡️ Blazing Fast Navigation
+Instant symbol resolution without the overhead of a full JVM-based language server.
- **Go to Definition**: Jump to symbol definitions instantly.
-- **Find References**: See usages across your entire workspace.
+- **Find References**: Global reference tracking across the entire workspace.
- **Go to Implementation**: Find interface implementations and method overrides.
- **Go to Type Definition**: Navigate to the type of a variable or parameter.
-### Intelligent Code Understanding
-- **Call Hierarchy**: Explore incoming and outgoing calls to understand code flow.
-- **Workspace Symbols**: Fuzzy search for any class, method, or field in your project.
+### 🧠 Intelligent Code Understanding
+- **Call Hierarchy**: Visualize incoming and outgoing method calls.
+- **Workspace Symbols**: Fuzzy search for any class, method, or field.
- **Document Symbols**: Quickly outline and navigate the current file structure.
- **Hover Information**: View signatures and documentation on hover.
-- **Document Highlights**: Highlight all occurrences of a symbol in the current file.
-
-### Why Use Naviscope?
-- **Zero JVM Overhead**: Built entirely in Rust—no Java runtime required, instant startup, minimal memory footprint.
-- **Resilient Indexing**: Works effectively even with syntax errors or incomplete code, providing immediate navigation without waiting for perfect builds.
-- **Unified Knowledge Graph**: Shares the exact same code knowledge graph used by LLM agents via MCP, ensuring consistency between AI-assisted development and manual navigation.
-- **Lightweight Alternative**: A fast, memory-efficient replacement for JDTLS that doesn't block your workflow.
+- **Document Highlights**: Highlight all local references of a symbol.
-## 📦 System Requirements
+## 📦 Installation
-- **Linux** (x86_64)
-- **macOS** (Apple Silicon / ARM64)
-- *Windows and Intel macOS are not currently supported.*
+> **Prerequisite**: You must have the `naviscope` CLI installed on your system.
-## 📦 Installation
+1. **Install the CLI**:
+ Follow the instructions in the [main repository](https://github.com/biuld/naviscope) to install `naviscope` via Cargo:
+ ```bash
+ git clone https://github.com/biuld/naviscope.git
+ cd naviscope
+ cargo install --path .
+ ```
-1. Install the extension from the VS Code marketplace or from a `.vsix` file.
-2. Ensure the `naviscope` binary is available in your PATH, or configure the `naviscope.path` setting to point to the binary location.
-3. Open a Java project—Naviscope will automatically start indexing your workspace.
+2. **Install the Extension**:
+ - Download the `.vsix` release or build from source.
+ - Install via **Extensions** view -> **...** -> **Install from VSIX...**
-**Note**: You need to have the `naviscope` CLI installed separately. See the [main repository](https://github.com/biuld/naviscope) for installation instructions.
+3. **Configure**:
+ Ensure `naviscope` is in your `PATH`. If not, set the path in VS Code settings:
+ ```json
+ "naviscope.path": "/path/to/your/naviscope/binary"
+ ```
-## 🔧 Troubleshooting
+4. **Start Coding**:
+ Open any Java/Gradle project. Naviscope will automatically start indexing (you'll see a status bar item).
-If the extension fails to start:
-1. Ensure the `naviscope` binary is installed and available in your PATH, or configure `naviscope.path` in VS Code settings.
-2. Check the "Naviscope Client" output channel in VS Code for detailed logs.
-3. Verify your project is a valid Java/Gradle project structure.
+## 📦 System Requirements
-## 🗑️ Uninstallation
+- **macOS** (Apple Silicon / ARM64)
+- **Linux** (x86_64)
+- *Windows support is planned.*
-Uninstalling the extension does not automatically remove the cached binary and index data. To completely remove Naviscope from your system:
+## 🔧 Troubleshooting
-1. Uninstall the extension from VS Code.
-2. Delete the `~/.naviscope` directory manually.
+If the extension fails to start:
+1. Verify `naviscope --version` works in your terminal.
+2. Check the **Output** panel (select "Naviscope Client" from the dropdown).
+3. Ensure your project root contains a `build.gradle` or similar marker (if required).
## 🔗 Links
-- [Naviscope Repository](https://github.com/biuld/naviscope)
-- [Issue Tracker](https://github.com/biuld/naviscope/issues)
+- [Naviscope Main Repository](https://github.com/biuld/naviscope)
+- [Report an Issue](https://github.com/biuld/naviscope/issues)
## 📄 License
-
MIT License
diff --git a/editors/vscode/dist/extension.js b/editors/vscode/dist/extension.js
new file mode 100644
index 0000000..cddc603
--- /dev/null
+++ b/editors/vscode/dist/extension.js
@@ -0,0 +1,40 @@
+"use strict";var rg=Object.create;var Ai=Object.defineProperty;var ig=Object.getOwnPropertyDescriptor;var sg=Object.getOwnPropertyNames;var og=Object.getPrototypeOf,ag=Object.prototype.hasOwnProperty;var I=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),cg=(n,e)=>{for(var t in e)Ai(n,t,{get:e[t],enumerable:!0})},Hd=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sg(e))!ag.call(n,i)&&i!==t&&Ai(n,i,{get:()=>e[i],enumerable:!(r=ig(e,i))||r.enumerable});return n};var ir=(n,e,t)=>(t=n!=null?rg(og(n)):{},Hd(e||!n||!n.__esModule?Ai(t,"default",{value:n,enumerable:!0}):t,n)),ug=n=>Hd(Ai({},"__esModule",{value:!0}),n);var Ut=I(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We.asPromise=We.thenable=We.typedArray=We.stringArray=We.array=We.func=We.error=We.number=We.string=We.boolean=void 0;function dg(n){return n===!0||n===!1}We.boolean=dg;function Ud(n){return typeof n=="string"||n instanceof String}We.string=Ud;function lg(n){return typeof n=="number"||n instanceof Number}We.number=lg;function fg(n){return n instanceof Error}We.error=fg;function Wd(n){return typeof n=="function"}We.func=Wd;function Kd(n){return Array.isArray(n)}We.array=Kd;function hg(n){return Kd(n)&&n.every(e=>Ud(e))}We.stringArray=hg;function pg(n,e){return Array.isArray(n)&&n.every(e)}We.typedArray=pg;function zd(n){return n&&Wd(n.then)}We.thenable=zd;function gg(n){return n instanceof Promise?n:zd(n)?new Promise((e,t)=>{n.then(r=>e(r),r=>t(r))}):Promise.resolve(n)}We.asPromise=gg});var Rr=I(ct=>{"use strict";Object.defineProperty(ct,"__esModule",{value:!0});ct.stringArray=ct.array=ct.func=ct.error=ct.number=ct.string=ct.boolean=void 0;function mg(n){return n===!0||n===!1}ct.boolean=mg;function Vd(n){return typeof n=="string"||n instanceof String}ct.string=Vd;function yg(n){return typeof n=="number"||n instanceof Number}ct.number=yg;function vg(n){return n instanceof Error}ct.error=vg;function Cg(n){return typeof n=="function"}ct.func=Cg;function Bd(n){return Array.isArray(n)}ct.array=Bd;function Dg(n){return Bd(n)&&n.every(e=>Vd(e))}ct.stringArray=Dg});var jo=I(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.Message=X.NotificationType9=X.NotificationType8=X.NotificationType7=X.NotificationType6=X.NotificationType5=X.NotificationType4=X.NotificationType3=X.NotificationType2=X.NotificationType1=X.NotificationType0=X.NotificationType=X.RequestType9=X.RequestType8=X.RequestType7=X.RequestType6=X.RequestType5=X.RequestType4=X.RequestType3=X.RequestType2=X.RequestType1=X.RequestType=X.RequestType0=X.AbstractMessageSignature=X.ParameterStructures=X.ResponseError=X.ErrorCodes=void 0;var sr=Rr(),Gd;(function(n){n.ParseError=-32700,n.InvalidRequest=-32600,n.MethodNotFound=-32601,n.InvalidParams=-32602,n.InternalError=-32603,n.jsonrpcReservedErrorRangeStart=-32099,n.serverErrorStart=-32099,n.MessageWriteError=-32099,n.MessageReadError=-32098,n.PendingResponseRejected=-32097,n.ConnectionInactive=-32096,n.ServerNotInitialized=-32002,n.UnknownErrorCode=-32001,n.jsonrpcReservedErrorRangeEnd=-32e3,n.serverErrorEnd=-32e3})(Gd=X.ErrorCodes||(X.ErrorCodes={}));var mo=class n extends Error{constructor(e,t,r){super(t),this.code=sr.number(e)?e:Gd.UnknownErrorCode,this.data=r,Object.setPrototypeOf(this,n.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};X.ResponseError=mo;var kt=class n{constructor(e){this.kind=e}static is(e){return e===n.auto||e===n.byName||e===n.byPosition}toString(){return this.kind}};X.ParameterStructures=kt;kt.auto=new kt("auto");kt.byPosition=new kt("byPosition");kt.byName=new kt("byName");var Oe=class{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return kt.auto}};X.AbstractMessageSignature=Oe;var yo=class extends Oe{constructor(e){super(e,0)}};X.RequestType0=yo;var vo=class extends Oe{constructor(e,t=kt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};X.RequestType=vo;var Co=class extends Oe{constructor(e,t=kt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};X.RequestType1=Co;var Do=class extends Oe{constructor(e){super(e,2)}};X.RequestType2=Do;var _o=class extends Oe{constructor(e){super(e,3)}};X.RequestType3=_o;var Ro=class extends Oe{constructor(e){super(e,4)}};X.RequestType4=Ro;var bo=class extends Oe{constructor(e){super(e,5)}};X.RequestType5=bo;var wo=class extends Oe{constructor(e){super(e,6)}};X.RequestType6=wo;var So=class extends Oe{constructor(e){super(e,7)}};X.RequestType7=So;var To=class extends Oe{constructor(e){super(e,8)}};X.RequestType8=To;var Po=class extends Oe{constructor(e){super(e,9)}};X.RequestType9=Po;var Eo=class extends Oe{constructor(e,t=kt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};X.NotificationType=Eo;var qo=class extends Oe{constructor(e){super(e,0)}};X.NotificationType0=qo;var ko=class extends Oe{constructor(e,t=kt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};X.NotificationType1=ko;var Io=class extends Oe{constructor(e){super(e,2)}};X.NotificationType2=Io;var Oo=class extends Oe{constructor(e){super(e,3)}};X.NotificationType3=Oo;var xo=class extends Oe{constructor(e){super(e,4)}};X.NotificationType4=xo;var Fo=class extends Oe{constructor(e){super(e,5)}};X.NotificationType5=Fo;var No=class extends Oe{constructor(e){super(e,6)}};X.NotificationType6=No;var Mo=class extends Oe{constructor(e){super(e,7)}};X.NotificationType7=Mo;var Lo=class extends Oe{constructor(e){super(e,8)}};X.NotificationType8=Lo;var Ao=class extends Oe{constructor(e){super(e,9)}};X.NotificationType9=Ao;var _g;(function(n){function e(i){let s=i;return s&&sr.string(s.method)&&(sr.string(s.id)||sr.number(s.id))}n.isRequest=e;function t(i){let s=i;return s&&sr.string(s.method)&&i.id===void 0}n.isNotification=t;function r(i){let s=i;return s&&(s.result!==void 0||!!s.error)&&(sr.string(s.id)||sr.number(s.id)||s.id===null)}n.isResponse=r})(_g=X.Message||(X.Message={}))});var Ho=I(Tn=>{"use strict";var Xd;Object.defineProperty(Tn,"__esModule",{value:!0});Tn.LRUCache=Tn.LinkedMap=Tn.Touch=void 0;var Ct;(function(n){n.None=0,n.First=1,n.AsOld=n.First,n.Last=2,n.AsNew=n.Last})(Ct=Tn.Touch||(Tn.Touch={}));var ji=class{constructor(){this[Xd]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,t=Ct.None){let r=this._map.get(e);if(r)return t!==Ct.None&&this.touch(r,t),r.value}set(e,t,r=Ct.None){let i=this._map.get(e);if(i)i.value=t,r!==Ct.None&&this.touch(i,r);else{switch(i={key:e,value:t,next:void 0,previous:void 0},r){case Ct.None:this.addItemLast(i);break;case Ct.First:this.addItemFirst(i);break;case Ct.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){let r=this._state,i=this._head;for(;i;){if(t?e.bind(t)(i.value,i.key,this):e(i.value,i.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:t.key,done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}values(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:t.value,done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}entries(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:[t.key,t.value],done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}[(Xd=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,r=this.size;for(;t&&r>e;)this._map.delete(t.key),t=t.next,r--;this._head=t,this._size=r,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let t=e.next,r=e.previous;if(!t||!r)throw new Error("Invalid list");t.previous=r,r.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(t!==Ct.First&&t!==Ct.Last)){if(t===Ct.First){if(e===this._head)return;let r=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(r.previous=i,i.next=r),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===Ct.Last){if(e===this._tail)return;let r=e.next,i=e.previous;e===this._head?(r.previous=void 0,this._head=r):(r.previous=i,i.next=r),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((t,r)=>{e.push([r,t])}),e}fromJSON(e){this.clear();for(let[t,r]of e)this.set(t,r)}};Tn.LinkedMap=ji;var $o=class extends ji{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=Ct.AsNew){return super.get(e,t)}peek(e){return super.get(e,Ct.None)}set(e,t){return super.set(e,t,Ct.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};Tn.LRUCache=$o});var Qd=I(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});Gr.Disposable=void 0;var Rg;(function(n){function e(t){return{dispose:t}}n.create=e})(Rg=Gr.Disposable||(Gr.Disposable={}))});var Vn=I(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});var Uo;function Wo(){if(Uo===void 0)throw new Error("No runtime abstraction layer installed");return Uo}(function(n){function e(t){if(t===void 0)throw new Error("No runtime abstraction layer provided");Uo=t}n.install=e})(Wo||(Wo={}));Ko.default=Wo});var br=I(or=>{"use strict";Object.defineProperty(or,"__esModule",{value:!0});or.Emitter=or.Event=void 0;var bg=Vn(),wg;(function(n){let e={dispose(){}};n.None=function(){return e}})(wg=or.Event||(or.Event={}));var zo=class{add(e,t=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(r)&&r.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let r=!1;for(let i=0,s=this._callbacks.length;i{this._callbacks||(this._callbacks=new zo),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=n._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(r)&&r.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};or.Emitter=$i;$i._noop=function(){}});var Ui=I(ar=>{"use strict";Object.defineProperty(ar,"__esModule",{value:!0});ar.CancellationTokenSource=ar.CancellationToken=void 0;var Sg=Vn(),Tg=Rr(),Vo=br(),Bo;(function(n){n.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Vo.Event.None}),n.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Vo.Event.None});function e(t){let r=t;return r&&(r===n.None||r===n.Cancelled||Tg.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}n.is=e})(Bo=ar.CancellationToken||(ar.CancellationToken={}));var Pg=Object.freeze(function(n,e){let t=(0,Sg.default)().timer.setTimeout(n.bind(e),0);return{dispose(){t.dispose()}}}),Hi=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?Pg:(this._emitter||(this._emitter=new Vo.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},Go=class{get token(){return this._token||(this._token=new Hi),this._token}cancel(){this._token?this._token.cancel():this._token=Bo.Cancelled}dispose(){this._token?this._token instanceof Hi&&this._token.dispose():this._token=Bo.None}};ar.CancellationTokenSource=Go});var Jd=I(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.SharedArrayReceiverStrategy=wr.SharedArraySenderStrategy=void 0;var Eg=Ui(),Xr;(function(n){n.Continue=0,n.Cancelled=1})(Xr||(Xr={}));var Xo=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let t=new SharedArrayBuffer(4),r=new Int32Array(t,0,1);r[0]=Xr.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){let r=this.buffers.get(t);if(r===void 0)return;let i=new Int32Array(r,0,1);Atomics.store(i,0,Xr.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};wr.SharedArraySenderStrategy=Xo;var Qo=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===Xr.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},Jo=class{constructor(e){this.token=new Qo(e)}cancel(){}dispose(){}},Yo=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let t=e.$cancellationData;return t===void 0?new Eg.CancellationTokenSource:new Jo(t)}};wr.SharedArrayReceiverStrategy=Yo});var ea=I(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.Semaphore=void 0;var qg=Vn(),Zo=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,qg.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let t=e.thunk();t instanceof Promise?t.then(r=>{this._active--,e.resolve(r),this.runNext()},r=>{this._active--,e.reject(r),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};Wi.Semaphore=Zo});var Yd=I(Pn=>{"use strict";Object.defineProperty(Pn,"__esModule",{value:!0});Pn.ReadableStreamMessageReader=Pn.AbstractMessageReader=Pn.MessageReader=void 0;var na=Vn(),Sr=Rr(),ta=br(),kg=ea(),Ig;(function(n){function e(t){let r=t;return r&&Sr.func(r.listen)&&Sr.func(r.dispose)&&Sr.func(r.onError)&&Sr.func(r.onClose)&&Sr.func(r.onPartialMessage)}n.is=e})(Ig=Pn.MessageReader||(Pn.MessageReader={}));var Ki=class{constructor(){this.errorEmitter=new ta.Emitter,this.closeEmitter=new ta.Emitter,this.partialMessageEmitter=new ta.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${Sr.string(e.message)?e.message:"unknown"}`)}};Pn.AbstractMessageReader=Ki;var ra;(function(n){function e(t){let r,i,s,o=new Map,a,u=new Map;if(t===void 0||typeof t=="string")r=t??"utf-8";else{if(r=t.charset??"utf-8",t.contentDecoder!==void 0&&(s=t.contentDecoder,o.set(s.name,s)),t.contentDecoders!==void 0)for(let h of t.contentDecoders)o.set(h.name,h);if(t.contentTypeDecoder!==void 0&&(a=t.contentTypeDecoder,u.set(a.name,a)),t.contentTypeDecoders!==void 0)for(let h of t.contentTypeDecoders)u.set(h.name,h)}return a===void 0&&(a=(0,na.default)().applicationJson.decoder,u.set(a.name,a)),{charset:r,contentDecoder:s,contentDecoders:o,contentTypeDecoder:a,contentTypeDecoders:u}}n.fromOptions=e})(ra||(ra={}));var ia=class extends Ki{constructor(e,t){super(),this.readable=e,this.options=ra.fromOptions(t),this.buffer=(0,na.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new kg.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let t=this.readable.onData(r=>{this.onData(r)});return this.readable.onError(r=>this.fireError(r)),this.readable.onClose(()=>this.fireClose()),t}onData(e){for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let r=this.buffer.tryReadHeaders(!0);if(!r)return;let i=r.get("content-length");if(!i){this.fireError(new Error("Header must provide a Content-Length property."));return}let s=parseInt(i);if(isNaN(s)){this.fireError(new Error("Content-Length value must be a number."));return}this.nextMessageLength=s}let t=this.buffer.tryReadBody(this.nextMessageLength);if(t===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let r=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(t):t,i=await this.options.contentTypeDecoder.decode(r,this.options);this.callback(i)}).catch(r=>{this.fireError(r)})}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,na.default)().timer.setTimeout((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};Pn.ReadableStreamMessageReader=ia});var nl=I(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.WriteableStreamMessageWriter=En.AbstractMessageWriter=En.MessageWriter=void 0;var Zd=Vn(),Qr=Rr(),Og=ea(),el=br(),xg="Content-Length: ",tl=`\r
+`,Fg;(function(n){function e(t){let r=t;return r&&Qr.func(r.dispose)&&Qr.func(r.onClose)&&Qr.func(r.onError)&&Qr.func(r.write)}n.is=e})(Fg=En.MessageWriter||(En.MessageWriter={}));var zi=class{constructor(){this.errorEmitter=new el.Emitter,this.closeEmitter=new el.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,r){this.errorEmitter.fire([this.asError(e),t,r])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${Qr.string(e.message)?e.message:"unknown"}`)}};En.AbstractMessageWriter=zi;var sa;(function(n){function e(t){return t===void 0||typeof t=="string"?{charset:t??"utf-8",contentTypeEncoder:(0,Zd.default)().applicationJson.encoder}:{charset:t.charset??"utf-8",contentEncoder:t.contentEncoder,contentTypeEncoder:t.contentTypeEncoder??(0,Zd.default)().applicationJson.encoder}}n.fromOptions=e})(sa||(sa={}));var oa=class extends zi{constructor(e,t){super(),this.writable=e,this.options=sa.fromOptions(t),this.errorCount=0,this.writeSemaphore=new Og.Semaphore(1),this.writable.onError(r=>this.fireError(r)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(r=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(r):r).then(r=>{let i=[];return i.push(xg,r.byteLength.toString(),tl),i.push(tl),this.doWrite(e,i,r)},r=>{throw this.fireError(r),r}))}async doWrite(e,t,r){try{return await this.writable.write(t.join(""),"ascii"),this.writable.write(r)}catch(i){return this.handleError(i,e),Promise.reject(i)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}};En.WriteableStreamMessageWriter=oa});var rl=I(Vi=>{"use strict";Object.defineProperty(Vi,"__esModule",{value:!0});Vi.AbstractMessageBuffer=void 0;var Ng=13,Mg=10,Lg=`\r
+`,aa=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let t=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let t=0,r=0,i=0,s=0;e:for(;rthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let s=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(s)}if(this._chunks[0].byteLength>e){let s=this._chunks[0],o=this.asNative(s,e);return this._chunks[0]=s.slice(e),this._totalLength-=e,o}let t=this.allocNative(e),r=0,i=0;for(;e>0;){let s=this._chunks[i];if(s.byteLength>e){let o=s.slice(0,e);t.set(o,r),r+=e,this._chunks[i]=s.slice(e),this._totalLength-=e,e-=e}else t.set(s,r),r+=s.byteLength,this._chunks.shift(),this._totalLength-=s.byteLength,e-=s.byteLength}return t}};Vi.AbstractMessageBuffer=aa});var dl=I(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});G.createMessageConnection=G.ConnectionOptions=G.MessageStrategy=G.CancellationStrategy=G.CancellationSenderStrategy=G.CancellationReceiverStrategy=G.RequestCancellationReceiverStrategy=G.IdCancellationReceiverStrategy=G.ConnectionStrategy=G.ConnectionError=G.ConnectionErrors=G.LogTraceNotification=G.SetTraceNotification=G.TraceFormat=G.TraceValues=G.Trace=G.NullLogger=G.ProgressType=G.ProgressToken=void 0;var il=Vn(),Me=Rr(),Y=jo(),sl=Ho(),Jr=br(),ca=Ui(),Zr;(function(n){n.type=new Y.NotificationType("$/cancelRequest")})(Zr||(Zr={}));var ol;(function(n){function e(t){return typeof t=="string"||typeof t=="number"}n.is=e})(ol=G.ProgressToken||(G.ProgressToken={}));var Yr;(function(n){n.type=new Y.NotificationType("$/progress")})(Yr||(Yr={}));var ua=class{constructor(){}};G.ProgressType=ua;var da;(function(n){function e(t){return Me.func(t)}n.is=e})(da||(da={}));G.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var Se;(function(n){n[n.Off=0]="Off",n[n.Messages=1]="Messages",n[n.Compact=2]="Compact",n[n.Verbose=3]="Verbose"})(Se=G.Trace||(G.Trace={}));var Ag;(function(n){n.Off="off",n.Messages="messages",n.Compact="compact",n.Verbose="verbose"})(Ag=G.TraceValues||(G.TraceValues={}));(function(n){function e(r){if(!Me.string(r))return n.Off;switch(r=r.toLowerCase(),r){case"off":return n.Off;case"messages":return n.Messages;case"compact":return n.Compact;case"verbose":return n.Verbose;default:return n.Off}}n.fromString=e;function t(r){switch(r){case n.Off:return"off";case n.Messages:return"messages";case n.Compact:return"compact";case n.Verbose:return"verbose";default:return"off"}}n.toString=t})(Se=G.Trace||(G.Trace={}));var Qt;(function(n){n.Text="text",n.JSON="json"})(Qt=G.TraceFormat||(G.TraceFormat={}));(function(n){function e(t){return Me.string(t)?(t=t.toLowerCase(),t==="json"?n.JSON:n.Text):n.Text}n.fromString=e})(Qt=G.TraceFormat||(G.TraceFormat={}));var al;(function(n){n.type=new Y.NotificationType("$/setTrace")})(al=G.SetTraceNotification||(G.SetTraceNotification={}));var la;(function(n){n.type=new Y.NotificationType("$/logTrace")})(la=G.LogTraceNotification||(G.LogTraceNotification={}));var Bi;(function(n){n[n.Closed=1]="Closed",n[n.Disposed=2]="Disposed",n[n.AlreadyListening=3]="AlreadyListening"})(Bi=G.ConnectionErrors||(G.ConnectionErrors={}));var Tr=class n extends Error{constructor(e,t){super(t),this.code=e,Object.setPrototypeOf(this,n.prototype)}};G.ConnectionError=Tr;var cl;(function(n){function e(t){let r=t;return r&&Me.func(r.cancelUndispatched)}n.is=e})(cl=G.ConnectionStrategy||(G.ConnectionStrategy={}));var pa;(function(n){function e(t){let r=t;return r&&(r.kind===void 0||r.kind==="id")&&Me.func(r.createCancellationTokenSource)&&(r.dispose===void 0||Me.func(r.dispose))}n.is=e})(pa=G.IdCancellationReceiverStrategy||(G.IdCancellationReceiverStrategy={}));var ul;(function(n){function e(t){let r=t;return r&&r.kind==="request"&&Me.func(r.createCancellationTokenSource)&&(r.dispose===void 0||Me.func(r.dispose))}n.is=e})(ul=G.RequestCancellationReceiverStrategy||(G.RequestCancellationReceiverStrategy={}));var fa;(function(n){n.Message=Object.freeze({createCancellationTokenSource(t){return new ca.CancellationTokenSource}});function e(t){return pa.is(t)||ul.is(t)}n.is=e})(fa=G.CancellationReceiverStrategy||(G.CancellationReceiverStrategy={}));var ha;(function(n){n.Message=Object.freeze({sendCancellation(t,r){return t.sendNotification(Zr.type,{id:r})},cleanup(t){}});function e(t){let r=t;return r&&Me.func(r.sendCancellation)&&Me.func(r.cleanup)}n.is=e})(ha=G.CancellationSenderStrategy||(G.CancellationSenderStrategy={}));var ga;(function(n){n.Message=Object.freeze({receiver:fa.Message,sender:ha.Message});function e(t){let r=t;return r&&fa.is(r.receiver)&&ha.is(r.sender)}n.is=e})(ga=G.CancellationStrategy||(G.CancellationStrategy={}));var ma;(function(n){function e(t){let r=t;return r&&Me.func(r.handleMessage)}n.is=e})(ma=G.MessageStrategy||(G.MessageStrategy={}));var jg;(function(n){function e(t){let r=t;return r&&(ga.is(r.cancellationStrategy)||cl.is(r.connectionStrategy)||ma.is(r.messageStrategy))}n.is=e})(jg=G.ConnectionOptions||(G.ConnectionOptions={}));var Jt;(function(n){n[n.New=1]="New",n[n.Listening=2]="Listening",n[n.Closed=3]="Closed",n[n.Disposed=4]="Disposed"})(Jt||(Jt={}));function $g(n,e,t,r){let i=t!==void 0?t:G.NullLogger,s=0,o=0,a=0,u="2.0",h,m=new Map,C,y=new Map,S=new Map,v,E=new sl.LinkedMap,q=new Map,N=new Set,L=new Map,M=Se.Off,U=Qt.Text,J,fe=Jt.New,B=new Jr.Emitter,ee=new Jr.Emitter,ue=new Jr.Emitter,Ge=new Jr.Emitter,Ve=new Jr.Emitter,Ze=r&&r.cancellationStrategy?r.cancellationStrategy:ga.Message;function Bt(D){if(D===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+D.toString()}function pt(D){return D===null?"res-unknown-"+(++a).toString():"res-"+D.toString()}function nt(){return"not-"+(++o).toString()}function gt(D,O){Y.Message.isRequest(O)?D.set(Bt(O.id),O):Y.Message.isResponse(O)?D.set(pt(O.id),O):D.set(nt(),O)}function cn(D){}function Ue(){return fe===Jt.Listening}function mt(){return fe===Jt.Closed}function Tt(){return fe===Jt.Disposed}function un(){(fe===Jt.New||fe===Jt.Listening)&&(fe=Jt.Closed,ee.fire(void 0))}function at(D){B.fire([D,void 0,void 0])}function nr(D){B.fire(D)}n.onClose(un),n.onError(at),e.onClose(un),e.onError(nr);function An(){v||E.size===0||(v=(0,il.default)().timer.setImmediate(()=>{v=void 0,Dn()}))}function Cn(D){Y.Message.isRequest(D)?rr(D):Y.Message.isNotification(D)?$n(D):Y.Message.isResponse(D)?jn(D):Rn(D)}function Dn(){if(E.size===0)return;let D=E.shift();try{let O=r?.messageStrategy;ma.is(O)?O.handleMessage(D,Cn):Cn(D)}finally{An()}}let _n=D=>{try{if(Y.Message.isNotification(D)&&D.method===Zr.type.method){let O=D.params.id,$=Bt(O),V=E.get($);if(Y.Message.isRequest(V)){let ge=r?.connectionStrategy,be=ge&&ge.cancelUndispatched?ge.cancelUndispatched(V,cn):void 0;if(be&&(be.error!==void 0||be.result!==void 0)){E.delete($),L.delete(O),be.id=V.id,Ht(be,D.method,Date.now()),e.write(be).catch(()=>i.error("Sending response for canceled message failed."));return}}let ye=L.get(O);if(ye!==void 0){ye.cancel(),yt(D);return}else N.add(O)}gt(E,D)}finally{An()}};function rr(D){if(Tt())return;function O(se,ve,l){let P={jsonrpc:u,id:D.id};se instanceof Y.ResponseError?P.error=se.toJson():P.result=se===void 0?null:se,Ht(P,ve,l),e.write(P).catch(()=>i.error("Sending response failed."))}function $(se,ve,l){let P={jsonrpc:u,id:D.id,error:se.toJson()};Ht(P,ve,l),e.write(P).catch(()=>i.error("Sending response failed."))}function V(se,ve,l){se===void 0&&(se=null);let P={jsonrpc:u,id:D.id,result:se};Ht(P,ve,l),e.write(P).catch(()=>i.error("Sending response failed."))}Un(D);let ye=m.get(D.method),ge,be;ye&&(ge=ye.type,be=ye.handler);let Pe=Date.now();if(be||h){let se=D.id??String(Date.now()),ve=pa.is(Ze.receiver)?Ze.receiver.createCancellationTokenSource(se):Ze.receiver.createCancellationTokenSource(D);D.id!==null&&N.has(D.id)&&ve.cancel(),D.id!==null&&L.set(se,ve);try{let l;if(be)if(D.params===void 0){if(ge!==void 0&&ge.numberOfParams!==0){$(new Y.ResponseError(Y.ErrorCodes.InvalidParams,`Request ${D.method} defines ${ge.numberOfParams} params but received none.`),D.method,Pe);return}l=be(ve.token)}else if(Array.isArray(D.params)){if(ge!==void 0&&ge.parameterStructures===Y.ParameterStructures.byName){$(new Y.ResponseError(Y.ErrorCodes.InvalidParams,`Request ${D.method} defines parameters by name but received parameters by position`),D.method,Pe);return}l=be(...D.params,ve.token)}else{if(ge!==void 0&&ge.parameterStructures===Y.ParameterStructures.byPosition){$(new Y.ResponseError(Y.ErrorCodes.InvalidParams,`Request ${D.method} defines parameters by position but received parameters by name`),D.method,Pe);return}l=be(D.params,ve.token)}else h&&(l=h(D.method,D.params,ve.token));let P=l;l?P.then?P.then(H=>{L.delete(se),O(H,D.method,Pe)},H=>{L.delete(se),H instanceof Y.ResponseError?$(H,D.method,Pe):H&&Me.string(H.message)?$(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${D.method} failed with message: ${H.message}`),D.method,Pe):$(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${D.method} failed unexpectedly without providing any details.`),D.method,Pe)}):(L.delete(se),O(l,D.method,Pe)):(L.delete(se),V(l,D.method,Pe))}catch(l){L.delete(se),l instanceof Y.ResponseError?O(l,D.method,Pe):l&&Me.string(l.message)?$(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${D.method} failed with message: ${l.message}`),D.method,Pe):$(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${D.method} failed unexpectedly without providing any details.`),D.method,Pe)}}else $(new Y.ResponseError(Y.ErrorCodes.MethodNotFound,`Unhandled method ${D.method}`),D.method,Pe)}function jn(D){if(!Tt())if(D.id===null)D.error?i.error(`Received response message without id: Error is:
+${JSON.stringify(D.error,void 0,4)}`):i.error("Received response message without id. No further error information provided.");else{let O=D.id,$=q.get(O);if(bn(D,$),$!==void 0){q.delete(O);try{if(D.error){let V=D.error;$.reject(new Y.ResponseError(V.code,V.message,V.data))}else if(D.result!==void 0)$.resolve(D.result);else throw new Error("Should never happen.")}catch(V){V.message?i.error(`Response handler '${$.method}' failed with message: ${V.message}`):i.error(`Response handler '${$.method}' failed unexpectedly.`)}}}}function $n(D){if(Tt())return;let O,$;if(D.method===Zr.type.method){let V=D.params.id;N.delete(V),yt(D);return}else{let V=y.get(D.method);V&&($=V.handler,O=V.type)}if($||C)try{if(yt(D),$)if(D.params===void 0)O!==void 0&&O.numberOfParams!==0&&O.parameterStructures!==Y.ParameterStructures.byName&&i.error(`Notification ${D.method} defines ${O.numberOfParams} params but received none.`),$();else if(Array.isArray(D.params)){let V=D.params;D.method===Yr.type.method&&V.length===2&&ol.is(V[0])?$({token:V[0],value:V[1]}):(O!==void 0&&(O.parameterStructures===Y.ParameterStructures.byName&&i.error(`Notification ${D.method} defines parameters by name but received parameters by position`),O.numberOfParams!==D.params.length&&i.error(`Notification ${D.method} defines ${O.numberOfParams} params but received ${V.length} arguments`)),$(...V))}else O!==void 0&&O.parameterStructures===Y.ParameterStructures.byPosition&&i.error(`Notification ${D.method} defines parameters by position but received parameters by name`),$(D.params);else C&&C(D.method,D.params)}catch(V){V.message?i.error(`Notification handler '${D.method}' failed with message: ${V.message}`):i.error(`Notification handler '${D.method}' failed unexpectedly.`)}else ue.fire(D)}function Rn(D){if(!D){i.error("Received empty message.");return}i.error(`Received message which is neither a response nor a notification message:
+${JSON.stringify(D,null,4)}`);let O=D;if(Me.string(O.id)||Me.number(O.id)){let $=O.id,V=q.get($);V&&V.reject(new Error("The received response has neither a result nor an error property."))}}function et(D){if(D!=null)switch(M){case Se.Verbose:return JSON.stringify(D,null,4);case Se.Compact:return JSON.stringify(D);default:return}}function Hn(D){if(!(M===Se.Off||!J))if(U===Qt.Text){let O;(M===Se.Verbose||M===Se.Compact)&&D.params&&(O=`Params: ${et(D.params)}
+
+`),J.log(`Sending request '${D.method} - (${D.id})'.`,O)}else Be("send-request",D)}function dn(D){if(!(M===Se.Off||!J))if(U===Qt.Text){let O;(M===Se.Verbose||M===Se.Compact)&&(D.params?O=`Params: ${et(D.params)}
+
+`:O=`No parameters provided.
+
+`),J.log(`Sending notification '${D.method}'.`,O)}else Be("send-notification",D)}function Ht(D,O,$){if(!(M===Se.Off||!J))if(U===Qt.Text){let V;(M===Se.Verbose||M===Se.Compact)&&(D.error&&D.error.data?V=`Error data: ${et(D.error.data)}
+
+`:D.result?V=`Result: ${et(D.result)}
+
+`:D.error===void 0&&(V=`No result returned.
+
+`)),J.log(`Sending response '${O} - (${D.id})'. Processing request took ${Date.now()-$}ms`,V)}else Be("send-response",D)}function Un(D){if(!(M===Se.Off||!J))if(U===Qt.Text){let O;(M===Se.Verbose||M===Se.Compact)&&D.params&&(O=`Params: ${et(D.params)}
+
+`),J.log(`Received request '${D.method} - (${D.id})'.`,O)}else Be("receive-request",D)}function yt(D){if(!(M===Se.Off||!J||D.method===la.type.method))if(U===Qt.Text){let O;(M===Se.Verbose||M===Se.Compact)&&(D.params?O=`Params: ${et(D.params)}
+
+`:O=`No parameters provided.
+
+`),J.log(`Received notification '${D.method}'.`,O)}else Be("receive-notification",D)}function bn(D,O){if(!(M===Se.Off||!J))if(U===Qt.Text){let $;if((M===Se.Verbose||M===Se.Compact)&&(D.error&&D.error.data?$=`Error data: ${et(D.error.data)}
+
+`:D.result?$=`Result: ${et(D.result)}
+
+`:D.error===void 0&&($=`No result returned.
+
+`)),O){let V=D.error?` Request failed: ${D.error.message} (${D.error.code}).`:"";J.log(`Received response '${O.method} - (${D.id})' in ${Date.now()-O.timerStart}ms.${V}`,$)}else J.log(`Received response ${D.id} without active response promise.`,$)}else Be("receive-response",D)}function Be(D,O){if(!J||M===Se.Off)return;let $={isLSPMessage:!0,type:D,message:O,timestamp:Date.now()};J.log($)}function Gt(){if(mt())throw new Tr(Bi.Closed,"Connection is closed.");if(Tt())throw new Tr(Bi.Disposed,"Connection is disposed.")}function vt(){if(Ue())throw new Tr(Bi.AlreadyListening,"Connection is already listening")}function wn(){if(!Ue())throw new Error("Call listen() first.")}function xt(D){return D===void 0?null:D}function Sn(D){if(D!==null)return D}function Wn(D){return D!=null&&!Array.isArray(D)&&typeof D=="object"}function Pt(D,O){switch(D){case Y.ParameterStructures.auto:return Wn(O)?Sn(O):[xt(O)];case Y.ParameterStructures.byName:if(!Wn(O))throw new Error("Received parameters by name but param is not an object literal.");return Sn(O);case Y.ParameterStructures.byPosition:return[xt(O)];default:throw new Error(`Unknown parameter structure ${D.toString()}`)}}function Kn(D,O){let $,V=D.numberOfParams;switch(V){case 0:$=void 0;break;case 1:$=Pt(D.parameterStructures,O[0]);break;default:$=[];for(let ye=0;ye{Gt();let $,V;if(Me.string(D)){$=D;let ge=O[0],be=0,Pe=Y.ParameterStructures.auto;Y.ParameterStructures.is(ge)&&(be=1,Pe=ge);let se=O.length,ve=se-be;switch(ve){case 0:V=void 0;break;case 1:V=Pt(Pe,O[be]);break;default:if(Pe===Y.ParameterStructures.byName)throw new Error(`Received ${ve} parameters for 'by Name' notification parameter structure.`);V=O.slice(be,se).map(l=>xt(l));break}}else{let ge=O;$=D.method,V=Kn(D,ge)}let ye={jsonrpc:u,method:$,params:V};return dn(ye),e.write(ye).catch(ge=>{throw i.error("Sending notification failed."),ge})},onNotification:(D,O)=>{Gt();let $;return Me.func(D)?C=D:O&&(Me.string(D)?($=D,y.set(D,{type:void 0,handler:O})):($=D.method,y.set(D.method,{type:D,handler:O}))),{dispose:()=>{$!==void 0?y.delete($):C=void 0}}},onProgress:(D,O,$)=>{if(S.has(O))throw new Error(`Progress handler for token ${O} already registered`);return S.set(O,$),{dispose:()=>{S.delete(O)}}},sendProgress:(D,O,$)=>Ft.sendNotification(Yr.type,{token:O,value:$}),onUnhandledProgress:Ge.event,sendRequest:(D,...O)=>{Gt(),wn();let $,V,ye;if(Me.string(D)){$=D;let se=O[0],ve=O[O.length-1],l=0,P=Y.ParameterStructures.auto;Y.ParameterStructures.is(se)&&(l=1,P=se);let H=O.length;ca.CancellationToken.is(ve)&&(H=H-1,ye=ve);let oe=H-l;switch(oe){case 0:V=void 0;break;case 1:V=Pt(P,O[l]);break;default:if(P===Y.ParameterStructures.byName)throw new Error(`Received ${oe} parameters for 'by Name' request parameter structure.`);V=O.slice(l,H).map(b=>xt(b));break}}else{let se=O;$=D.method,V=Kn(D,se);let ve=D.numberOfParams;ye=ca.CancellationToken.is(se[ve])?se[ve]:void 0}let ge=s++,be;ye&&(be=ye.onCancellationRequested(()=>{let se=Ze.sender.sendCancellation(Ft,ge);return se===void 0?(i.log(`Received no promise from cancellation strategy when cancelling id ${ge}`),Promise.resolve()):se.catch(()=>{i.log(`Sending cancellation messages for id ${ge} failed`)})}));let Pe={jsonrpc:u,id:ge,method:$,params:V};return Hn(Pe),typeof Ze.sender.enableCancellation=="function"&&Ze.sender.enableCancellation(Pe),new Promise(async(se,ve)=>{let l=oe=>{se(oe),Ze.sender.cleanup(ge),be?.dispose()},P=oe=>{ve(oe),Ze.sender.cleanup(ge),be?.dispose()},H={method:$,timerStart:Date.now(),resolve:l,reject:P};try{await e.write(Pe),q.set(ge,H)}catch(oe){throw i.error("Sending request failed."),H.reject(new Y.ResponseError(Y.ErrorCodes.MessageWriteError,oe.message?oe.message:"Unknown reason")),oe}})},onRequest:(D,O)=>{Gt();let $=null;return da.is(D)?($=void 0,h=D):Me.string(D)?($=null,O!==void 0&&($=D,m.set(D,{handler:O,type:void 0}))):O!==void 0&&($=D.method,m.set(D.method,{type:D,handler:O})),{dispose:()=>{$!==null&&($!==void 0?m.delete($):h=void 0)}}},hasPendingResponse:()=>q.size>0,trace:async(D,O,$)=>{let V=!1,ye=Qt.Text;$!==void 0&&(Me.boolean($)?V=$:(V=$.sendNotification||!1,ye=$.traceFormat||Qt.Text)),M=D,U=ye,M===Se.Off?J=void 0:J=O,V&&!mt()&&!Tt()&&await Ft.sendNotification(al.type,{value:Se.toString(D)})},onError:B.event,onClose:ee.event,onUnhandledNotification:ue.event,onDispose:Ve.event,end:()=>{e.end()},dispose:()=>{if(Tt())return;fe=Jt.Disposed,Ve.fire(void 0);let D=new Y.ResponseError(Y.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let O of q.values())O.reject(D);q=new Map,L=new Map,N=new Set,E=new sl.LinkedMap,Me.func(e.dispose)&&e.dispose(),Me.func(n.dispose)&&n.dispose()},listen:()=>{Gt(),vt(),fe=Jt.Listening,n.listen(_n)},inspect:()=>{(0,il.default)().console.log("inspect")}};return Ft.onNotification(la.type,D=>{if(M===Se.Off||!J)return;let O=M===Se.Verbose||M===Se.Compact;J.log(D.message,O?D.verbose:void 0)}),Ft.onNotification(Yr.type,D=>{let O=S.get(D.token);O?O(D.value):Ge.fire(D)}),Ft}G.createMessageConnection=$g});var Gi=I(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});k.ProgressType=k.ProgressToken=k.createMessageConnection=k.NullLogger=k.ConnectionOptions=k.ConnectionStrategy=k.AbstractMessageBuffer=k.WriteableStreamMessageWriter=k.AbstractMessageWriter=k.MessageWriter=k.ReadableStreamMessageReader=k.AbstractMessageReader=k.MessageReader=k.SharedArrayReceiverStrategy=k.SharedArraySenderStrategy=k.CancellationToken=k.CancellationTokenSource=k.Emitter=k.Event=k.Disposable=k.LRUCache=k.Touch=k.LinkedMap=k.ParameterStructures=k.NotificationType9=k.NotificationType8=k.NotificationType7=k.NotificationType6=k.NotificationType5=k.NotificationType4=k.NotificationType3=k.NotificationType2=k.NotificationType1=k.NotificationType0=k.NotificationType=k.ErrorCodes=k.ResponseError=k.RequestType9=k.RequestType8=k.RequestType7=k.RequestType6=k.RequestType5=k.RequestType4=k.RequestType3=k.RequestType2=k.RequestType1=k.RequestType0=k.RequestType=k.Message=k.RAL=void 0;k.MessageStrategy=k.CancellationStrategy=k.CancellationSenderStrategy=k.CancellationReceiverStrategy=k.ConnectionError=k.ConnectionErrors=k.LogTraceNotification=k.SetTraceNotification=k.TraceFormat=k.TraceValues=k.Trace=void 0;var ke=jo();Object.defineProperty(k,"Message",{enumerable:!0,get:function(){return ke.Message}});Object.defineProperty(k,"RequestType",{enumerable:!0,get:function(){return ke.RequestType}});Object.defineProperty(k,"RequestType0",{enumerable:!0,get:function(){return ke.RequestType0}});Object.defineProperty(k,"RequestType1",{enumerable:!0,get:function(){return ke.RequestType1}});Object.defineProperty(k,"RequestType2",{enumerable:!0,get:function(){return ke.RequestType2}});Object.defineProperty(k,"RequestType3",{enumerable:!0,get:function(){return ke.RequestType3}});Object.defineProperty(k,"RequestType4",{enumerable:!0,get:function(){return ke.RequestType4}});Object.defineProperty(k,"RequestType5",{enumerable:!0,get:function(){return ke.RequestType5}});Object.defineProperty(k,"RequestType6",{enumerable:!0,get:function(){return ke.RequestType6}});Object.defineProperty(k,"RequestType7",{enumerable:!0,get:function(){return ke.RequestType7}});Object.defineProperty(k,"RequestType8",{enumerable:!0,get:function(){return ke.RequestType8}});Object.defineProperty(k,"RequestType9",{enumerable:!0,get:function(){return ke.RequestType9}});Object.defineProperty(k,"ResponseError",{enumerable:!0,get:function(){return ke.ResponseError}});Object.defineProperty(k,"ErrorCodes",{enumerable:!0,get:function(){return ke.ErrorCodes}});Object.defineProperty(k,"NotificationType",{enumerable:!0,get:function(){return ke.NotificationType}});Object.defineProperty(k,"NotificationType0",{enumerable:!0,get:function(){return ke.NotificationType0}});Object.defineProperty(k,"NotificationType1",{enumerable:!0,get:function(){return ke.NotificationType1}});Object.defineProperty(k,"NotificationType2",{enumerable:!0,get:function(){return ke.NotificationType2}});Object.defineProperty(k,"NotificationType3",{enumerable:!0,get:function(){return ke.NotificationType3}});Object.defineProperty(k,"NotificationType4",{enumerable:!0,get:function(){return ke.NotificationType4}});Object.defineProperty(k,"NotificationType5",{enumerable:!0,get:function(){return ke.NotificationType5}});Object.defineProperty(k,"NotificationType6",{enumerable:!0,get:function(){return ke.NotificationType6}});Object.defineProperty(k,"NotificationType7",{enumerable:!0,get:function(){return ke.NotificationType7}});Object.defineProperty(k,"NotificationType8",{enumerable:!0,get:function(){return ke.NotificationType8}});Object.defineProperty(k,"NotificationType9",{enumerable:!0,get:function(){return ke.NotificationType9}});Object.defineProperty(k,"ParameterStructures",{enumerable:!0,get:function(){return ke.ParameterStructures}});var ya=Ho();Object.defineProperty(k,"LinkedMap",{enumerable:!0,get:function(){return ya.LinkedMap}});Object.defineProperty(k,"LRUCache",{enumerable:!0,get:function(){return ya.LRUCache}});Object.defineProperty(k,"Touch",{enumerable:!0,get:function(){return ya.Touch}});var Hg=Qd();Object.defineProperty(k,"Disposable",{enumerable:!0,get:function(){return Hg.Disposable}});var ll=br();Object.defineProperty(k,"Event",{enumerable:!0,get:function(){return ll.Event}});Object.defineProperty(k,"Emitter",{enumerable:!0,get:function(){return ll.Emitter}});var fl=Ui();Object.defineProperty(k,"CancellationTokenSource",{enumerable:!0,get:function(){return fl.CancellationTokenSource}});Object.defineProperty(k,"CancellationToken",{enumerable:!0,get:function(){return fl.CancellationToken}});var hl=Jd();Object.defineProperty(k,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return hl.SharedArraySenderStrategy}});Object.defineProperty(k,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return hl.SharedArrayReceiverStrategy}});var va=Yd();Object.defineProperty(k,"MessageReader",{enumerable:!0,get:function(){return va.MessageReader}});Object.defineProperty(k,"AbstractMessageReader",{enumerable:!0,get:function(){return va.AbstractMessageReader}});Object.defineProperty(k,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return va.ReadableStreamMessageReader}});var Ca=nl();Object.defineProperty(k,"MessageWriter",{enumerable:!0,get:function(){return Ca.MessageWriter}});Object.defineProperty(k,"AbstractMessageWriter",{enumerable:!0,get:function(){return Ca.AbstractMessageWriter}});Object.defineProperty(k,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return Ca.WriteableStreamMessageWriter}});var Ug=rl();Object.defineProperty(k,"AbstractMessageBuffer",{enumerable:!0,get:function(){return Ug.AbstractMessageBuffer}});var it=dl();Object.defineProperty(k,"ConnectionStrategy",{enumerable:!0,get:function(){return it.ConnectionStrategy}});Object.defineProperty(k,"ConnectionOptions",{enumerable:!0,get:function(){return it.ConnectionOptions}});Object.defineProperty(k,"NullLogger",{enumerable:!0,get:function(){return it.NullLogger}});Object.defineProperty(k,"createMessageConnection",{enumerable:!0,get:function(){return it.createMessageConnection}});Object.defineProperty(k,"ProgressToken",{enumerable:!0,get:function(){return it.ProgressToken}});Object.defineProperty(k,"ProgressType",{enumerable:!0,get:function(){return it.ProgressType}});Object.defineProperty(k,"Trace",{enumerable:!0,get:function(){return it.Trace}});Object.defineProperty(k,"TraceValues",{enumerable:!0,get:function(){return it.TraceValues}});Object.defineProperty(k,"TraceFormat",{enumerable:!0,get:function(){return it.TraceFormat}});Object.defineProperty(k,"SetTraceNotification",{enumerable:!0,get:function(){return it.SetTraceNotification}});Object.defineProperty(k,"LogTraceNotification",{enumerable:!0,get:function(){return it.LogTraceNotification}});Object.defineProperty(k,"ConnectionErrors",{enumerable:!0,get:function(){return it.ConnectionErrors}});Object.defineProperty(k,"ConnectionError",{enumerable:!0,get:function(){return it.ConnectionError}});Object.defineProperty(k,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return it.CancellationReceiverStrategy}});Object.defineProperty(k,"CancellationSenderStrategy",{enumerable:!0,get:function(){return it.CancellationSenderStrategy}});Object.defineProperty(k,"CancellationStrategy",{enumerable:!0,get:function(){return it.CancellationStrategy}});Object.defineProperty(k,"MessageStrategy",{enumerable:!0,get:function(){return it.MessageStrategy}});var Wg=Vn();k.RAL=Wg.default});var ml=I(ba=>{"use strict";Object.defineProperty(ba,"__esModule",{value:!0});var pl=require("util"),qn=Gi(),Xi=class n extends qn.AbstractMessageBuffer{constructor(e="utf-8"){super(e)}emptyBuffer(){return n.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,t){return e instanceof Buffer?e.toString(t):new pl.TextDecoder(t).decode(e)}asNative(e,t){return t===void 0?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,t):Buffer.from(e,0,t)}allocNative(e){return Buffer.allocUnsafe(e)}};Xi.emptyBuffer=Buffer.allocUnsafe(0);var Da=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),qn.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),qn.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),qn.Disposable.create(()=>this.stream.off("end",e))}onData(e){return this.stream.on("data",e),qn.Disposable.create(()=>this.stream.off("data",e))}},_a=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),qn.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),qn.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),qn.Disposable.create(()=>this.stream.off("end",e))}write(e,t){return new Promise((r,i)=>{let s=o=>{o==null?r():i(o)};typeof e=="string"?this.stream.write(e,t,s):this.stream.write(e,s)})}end(){this.stream.end()}},gl=Object.freeze({messageBuffer:Object.freeze({create:n=>new Xi(n)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(n,e)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(n,void 0,0),e.charset))}catch(t){return Promise.reject(t)}}}),decoder:Object.freeze({name:"application/json",decode:(n,e)=>{try{return n instanceof Buffer?Promise.resolve(JSON.parse(n.toString(e.charset))):Promise.resolve(JSON.parse(new pl.TextDecoder(e.charset).decode(n)))}catch(t){return Promise.reject(t)}}})}),stream:Object.freeze({asReadableStream:n=>new Da(n),asWritableStream:n=>new _a(n)}),console,timer:Object.freeze({setTimeout(n,e,...t){let r=setTimeout(n,e,...t);return{dispose:()=>clearTimeout(r)}},setImmediate(n,...e){let t=setImmediate(n,...e);return{dispose:()=>clearImmediate(t)}},setInterval(n,e,...t){let r=setInterval(n,e,...t);return{dispose:()=>clearInterval(r)}}})});function Ra(){return gl}(function(n){function e(){qn.RAL.install(gl)}n.install=e})(Ra||(Ra={}));ba.default=Ra});var dr=I(he=>{"use strict";var Kg=he&&he.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),zg=he&&he.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Kg(e,n,t)};Object.defineProperty(he,"__esModule",{value:!0});he.createMessageConnection=he.createServerSocketTransport=he.createClientSocketTransport=he.createServerPipeTransport=he.createClientPipeTransport=he.generateRandomPipeName=he.StreamMessageWriter=he.StreamMessageReader=he.SocketMessageWriter=he.SocketMessageReader=he.PortMessageWriter=he.PortMessageReader=he.IPCMessageWriter=he.IPCMessageReader=void 0;var Pr=ml();Pr.default.install();var yl=require("path"),Vg=require("os"),Bg=require("crypto"),Yi=require("net"),Mt=Gi();zg(Gi(),he);var wa=class extends Mt.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose())}listen(e){return this.process.on("message",e),Mt.Disposable.create(()=>this.process.off("message",e))}};he.IPCMessageReader=wa;var Sa=class extends Mt.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose)}write(e){try{return typeof this.process.send=="function"&&this.process.send(e,void 0,void 0,t=>{t?(this.errorCount++,this.handleError(t,e)):this.errorCount=0}),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};he.IPCMessageWriter=Sa;var Ta=class extends Mt.AbstractMessageReader{constructor(e){super(),this.onData=new Mt.Emitter,e.on("close",()=>this.fireClose),e.on("error",t=>this.fireError(t)),e.on("message",t=>{this.onData.fire(t)})}listen(e){return this.onData.event(e)}};he.PortMessageReader=Ta;var Pa=class extends Mt.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on("close",()=>this.fireClose()),e.on("error",t=>this.fireError(t))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};he.PortMessageWriter=Pa;var cr=class extends Mt.ReadableStreamMessageReader{constructor(e,t="utf-8"){super((0,Pr.default)().stream.asReadableStream(e),t)}};he.SocketMessageReader=cr;var ur=class extends Mt.WriteableStreamMessageWriter{constructor(e,t){super((0,Pr.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};he.SocketMessageWriter=ur;var Qi=class extends Mt.ReadableStreamMessageReader{constructor(e,t){super((0,Pr.default)().stream.asReadableStream(e),t)}};he.StreamMessageReader=Qi;var Ji=class extends Mt.WriteableStreamMessageWriter{constructor(e,t){super((0,Pr.default)().stream.asWritableStream(e),t)}};he.StreamMessageWriter=Ji;var vl=process.env.XDG_RUNTIME_DIR,Gg=new Map([["linux",107],["darwin",103]]);function Xg(){let n=(0,Bg.randomBytes)(21).toString("hex");if(process.platform==="win32")return`\\\\.\\pipe\\vscode-jsonrpc-${n}-sock`;let e;vl?e=yl.join(vl,`vscode-ipc-${n}.sock`):e=yl.join(Vg.tmpdir(),`vscode-${n}.sock`);let t=Gg.get(process.platform);return t!==void 0&&e.length>t&&(0,Pr.default)().console.warn(`WARNING: IPC handle "${e}" is longer than ${t} characters.`),e}he.generateRandomPipeName=Xg;function Qg(n,e="utf-8"){let t,r=new Promise((i,s)=>{t=i});return new Promise((i,s)=>{let o=(0,Yi.createServer)(a=>{o.close(),t([new cr(a,e),new ur(a,e)])});o.on("error",s),o.listen(n,()=>{o.removeListener("error",s),i({onConnected:()=>r})})})}he.createClientPipeTransport=Qg;function Jg(n,e="utf-8"){let t=(0,Yi.createConnection)(n);return[new cr(t,e),new ur(t,e)]}he.createServerPipeTransport=Jg;function Yg(n,e="utf-8"){let t,r=new Promise((i,s)=>{t=i});return new Promise((i,s)=>{let o=(0,Yi.createServer)(a=>{o.close(),t([new cr(a,e),new ur(a,e)])});o.on("error",s),o.listen(n,"127.0.0.1",()=>{o.removeListener("error",s),i({onConnected:()=>r})})})}he.createClientSocketTransport=Yg;function Zg(n,e="utf-8"){let t=(0,Yi.createConnection)(n,"127.0.0.1");return[new cr(t,e),new ur(t,e)]}he.createServerSocketTransport=Zg;function em(n){let e=n;return e.read!==void 0&&e.addListener!==void 0}function tm(n){let e=n;return e.write!==void 0&&e.addListener!==void 0}function nm(n,e,t,r){t||(t=Mt.NullLogger);let i=em(n)?new Qi(n):n,s=tm(e)?new Ji(e):e;return Mt.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,Mt.createMessageConnection)(i,s,t,r)}he.createMessageConnection=nm});var Ea=I((nb,Cl)=>{"use strict";Cl.exports=dr()});var es=I((Dl,Zi)=>{(function(n){if(typeof Zi=="object"&&typeof Zi.exports=="object"){var e=n(require,Dl);e!==void 0&&(Zi.exports=e)}else typeof define=="function"&&define.amd&&define(["require","exports"],n)})(function(n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextDocument=e.EOL=e.WorkspaceFolder=e.InlayHint=e.InlayHintLabelPart=e.InlayHintKind=e.InlineValueContext=e.InlineValueEvaluatableExpression=e.InlineValueVariableLookup=e.InlineValueText=e.SemanticTokens=e.SemanticTokenModifiers=e.SemanticTokenTypes=e.SelectionRange=e.DocumentLink=e.FormattingOptions=e.CodeLens=e.CodeAction=e.CodeActionContext=e.CodeActionTriggerKind=e.CodeActionKind=e.DocumentSymbol=e.WorkspaceSymbol=e.SymbolInformation=e.SymbolTag=e.SymbolKind=e.DocumentHighlight=e.DocumentHighlightKind=e.SignatureInformation=e.ParameterInformation=e.Hover=e.MarkedString=e.CompletionList=e.CompletionItem=e.CompletionItemLabelDetails=e.InsertTextMode=e.InsertReplaceEdit=e.CompletionItemTag=e.InsertTextFormat=e.CompletionItemKind=e.MarkupContent=e.MarkupKind=e.TextDocumentItem=e.OptionalVersionedTextDocumentIdentifier=e.VersionedTextDocumentIdentifier=e.TextDocumentIdentifier=e.WorkspaceChange=e.WorkspaceEdit=e.DeleteFile=e.RenameFile=e.CreateFile=e.TextDocumentEdit=e.AnnotatedTextEdit=e.ChangeAnnotationIdentifier=e.ChangeAnnotation=e.TextEdit=e.Command=e.Diagnostic=e.CodeDescription=e.DiagnosticTag=e.DiagnosticSeverity=e.DiagnosticRelatedInformation=e.FoldingRange=e.FoldingRangeKind=e.ColorPresentation=e.ColorInformation=e.Color=e.LocationLink=e.Location=e.Range=e.Position=e.uinteger=e.integer=e.URI=e.DocumentUri=void 0;var t;(function(f){function _(R){return typeof R=="string"}f.is=_})(t=e.DocumentUri||(e.DocumentUri={}));var r;(function(f){function _(R){return typeof R=="string"}f.is=_})(r=e.URI||(e.URI={}));var i;(function(f){f.MIN_VALUE=-2147483648,f.MAX_VALUE=2147483647;function _(R){return typeof R=="number"&&f.MIN_VALUE<=R&&R<=f.MAX_VALUE}f.is=_})(i=e.integer||(e.integer={}));var s;(function(f){f.MIN_VALUE=0,f.MAX_VALUE=2147483647;function _(R){return typeof R=="number"&&f.MIN_VALUE<=R&&R<=f.MAX_VALUE}f.is=_})(s=e.uinteger||(e.uinteger={}));var o;(function(f){function _(g,d){return g===Number.MAX_VALUE&&(g=s.MAX_VALUE),d===Number.MAX_VALUE&&(d=s.MAX_VALUE),{line:g,character:d}}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&b.uinteger(d.line)&&b.uinteger(d.character)}f.is=R})(o=e.Position||(e.Position={}));var a;(function(f){function _(g,d,T,x){if(b.uinteger(g)&&b.uinteger(d)&&b.uinteger(T)&&b.uinteger(x))return{start:o.create(g,d),end:o.create(T,x)};if(o.is(g)&&o.is(d))return{start:g,end:d};throw new Error("Range#create called with invalid arguments[".concat(g,", ").concat(d,", ").concat(T,", ").concat(x,"]"))}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&o.is(d.start)&&o.is(d.end)}f.is=R})(a=e.Range||(e.Range={}));var u;(function(f){function _(g,d){return{uri:g,range:d}}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&a.is(d.range)&&(b.string(d.uri)||b.undefined(d.uri))}f.is=R})(u=e.Location||(e.Location={}));var h;(function(f){function _(g,d,T,x){return{targetUri:g,targetRange:d,targetSelectionRange:T,originSelectionRange:x}}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&a.is(d.targetRange)&&b.string(d.targetUri)&&a.is(d.targetSelectionRange)&&(a.is(d.originSelectionRange)||b.undefined(d.originSelectionRange))}f.is=R})(h=e.LocationLink||(e.LocationLink={}));var m;(function(f){function _(g,d,T,x){return{red:g,green:d,blue:T,alpha:x}}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&b.numberRange(d.red,0,1)&&b.numberRange(d.green,0,1)&&b.numberRange(d.blue,0,1)&&b.numberRange(d.alpha,0,1)}f.is=R})(m=e.Color||(e.Color={}));var C;(function(f){function _(g,d){return{range:g,color:d}}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&a.is(d.range)&&m.is(d.color)}f.is=R})(C=e.ColorInformation||(e.ColorInformation={}));var y;(function(f){function _(g,d,T){return{label:g,textEdit:d,additionalTextEdits:T}}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&b.string(d.label)&&(b.undefined(d.textEdit)||J.is(d))&&(b.undefined(d.additionalTextEdits)||b.typedArray(d.additionalTextEdits,J.is))}f.is=R})(y=e.ColorPresentation||(e.ColorPresentation={}));var S;(function(f){f.Comment="comment",f.Imports="imports",f.Region="region"})(S=e.FoldingRangeKind||(e.FoldingRangeKind={}));var v;(function(f){function _(g,d,T,x,te,Ie){var Te={startLine:g,endLine:d};return b.defined(T)&&(Te.startCharacter=T),b.defined(x)&&(Te.endCharacter=x),b.defined(te)&&(Te.kind=te),b.defined(Ie)&&(Te.collapsedText=Ie),Te}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&b.uinteger(d.startLine)&&b.uinteger(d.startLine)&&(b.undefined(d.startCharacter)||b.uinteger(d.startCharacter))&&(b.undefined(d.endCharacter)||b.uinteger(d.endCharacter))&&(b.undefined(d.kind)||b.string(d.kind))}f.is=R})(v=e.FoldingRange||(e.FoldingRange={}));var E;(function(f){function _(g,d){return{location:g,message:d}}f.create=_;function R(g){var d=g;return b.defined(d)&&u.is(d.location)&&b.string(d.message)}f.is=R})(E=e.DiagnosticRelatedInformation||(e.DiagnosticRelatedInformation={}));var q;(function(f){f.Error=1,f.Warning=2,f.Information=3,f.Hint=4})(q=e.DiagnosticSeverity||(e.DiagnosticSeverity={}));var N;(function(f){f.Unnecessary=1,f.Deprecated=2})(N=e.DiagnosticTag||(e.DiagnosticTag={}));var L;(function(f){function _(R){var g=R;return b.objectLiteral(g)&&b.string(g.href)}f.is=_})(L=e.CodeDescription||(e.CodeDescription={}));var M;(function(f){function _(g,d,T,x,te,Ie){var Te={range:g,message:d};return b.defined(T)&&(Te.severity=T),b.defined(x)&&(Te.code=x),b.defined(te)&&(Te.source=te),b.defined(Ie)&&(Te.relatedInformation=Ie),Te}f.create=_;function R(g){var d,T=g;return b.defined(T)&&a.is(T.range)&&b.string(T.message)&&(b.number(T.severity)||b.undefined(T.severity))&&(b.integer(T.code)||b.string(T.code)||b.undefined(T.code))&&(b.undefined(T.codeDescription)||b.string((d=T.codeDescription)===null||d===void 0?void 0:d.href))&&(b.string(T.source)||b.undefined(T.source))&&(b.undefined(T.relatedInformation)||b.typedArray(T.relatedInformation,E.is))}f.is=R})(M=e.Diagnostic||(e.Diagnostic={}));var U;(function(f){function _(g,d){for(var T=[],x=2;x0&&(te.arguments=T),te}f.create=_;function R(g){var d=g;return b.defined(d)&&b.string(d.title)&&b.string(d.command)}f.is=R})(U=e.Command||(e.Command={}));var J;(function(f){function _(T,x){return{range:T,newText:x}}f.replace=_;function R(T,x){return{range:{start:T,end:T},newText:x}}f.insert=R;function g(T){return{range:T,newText:""}}f.del=g;function d(T){var x=T;return b.objectLiteral(x)&&b.string(x.newText)&&a.is(x.range)}f.is=d})(J=e.TextEdit||(e.TextEdit={}));var fe;(function(f){function _(g,d,T){var x={label:g};return d!==void 0&&(x.needsConfirmation=d),T!==void 0&&(x.description=T),x}f.create=_;function R(g){var d=g;return b.objectLiteral(d)&&b.string(d.label)&&(b.boolean(d.needsConfirmation)||d.needsConfirmation===void 0)&&(b.string(d.description)||d.description===void 0)}f.is=R})(fe=e.ChangeAnnotation||(e.ChangeAnnotation={}));var B;(function(f){function _(R){var g=R;return b.string(g)}f.is=_})(B=e.ChangeAnnotationIdentifier||(e.ChangeAnnotationIdentifier={}));var ee;(function(f){function _(T,x,te){return{range:T,newText:x,annotationId:te}}f.replace=_;function R(T,x,te){return{range:{start:T,end:T},newText:x,annotationId:te}}f.insert=R;function g(T,x){return{range:T,newText:"",annotationId:x}}f.del=g;function d(T){var x=T;return J.is(x)&&(fe.is(x.annotationId)||B.is(x.annotationId))}f.is=d})(ee=e.AnnotatedTextEdit||(e.AnnotatedTextEdit={}));var ue;(function(f){function _(g,d){return{textDocument:g,edits:d}}f.create=_;function R(g){var d=g;return b.defined(d)&&mt.is(d.textDocument)&&Array.isArray(d.edits)}f.is=R})(ue=e.TextDocumentEdit||(e.TextDocumentEdit={}));var Ge;(function(f){function _(g,d,T){var x={kind:"create",uri:g};return d!==void 0&&(d.overwrite!==void 0||d.ignoreIfExists!==void 0)&&(x.options=d),T!==void 0&&(x.annotationId=T),x}f.create=_;function R(g){var d=g;return d&&d.kind==="create"&&b.string(d.uri)&&(d.options===void 0||(d.options.overwrite===void 0||b.boolean(d.options.overwrite))&&(d.options.ignoreIfExists===void 0||b.boolean(d.options.ignoreIfExists)))&&(d.annotationId===void 0||B.is(d.annotationId))}f.is=R})(Ge=e.CreateFile||(e.CreateFile={}));var Ve;(function(f){function _(g,d,T,x){var te={kind:"rename",oldUri:g,newUri:d};return T!==void 0&&(T.overwrite!==void 0||T.ignoreIfExists!==void 0)&&(te.options=T),x!==void 0&&(te.annotationId=x),te}f.create=_;function R(g){var d=g;return d&&d.kind==="rename"&&b.string(d.oldUri)&&b.string(d.newUri)&&(d.options===void 0||(d.options.overwrite===void 0||b.boolean(d.options.overwrite))&&(d.options.ignoreIfExists===void 0||b.boolean(d.options.ignoreIfExists)))&&(d.annotationId===void 0||B.is(d.annotationId))}f.is=R})(Ve=e.RenameFile||(e.RenameFile={}));var Ze;(function(f){function _(g,d,T){var x={kind:"delete",uri:g};return d!==void 0&&(d.recursive!==void 0||d.ignoreIfNotExists!==void 0)&&(x.options=d),T!==void 0&&(x.annotationId=T),x}f.create=_;function R(g){var d=g;return d&&d.kind==="delete"&&b.string(d.uri)&&(d.options===void 0||(d.options.recursive===void 0||b.boolean(d.options.recursive))&&(d.options.ignoreIfNotExists===void 0||b.boolean(d.options.ignoreIfNotExists)))&&(d.annotationId===void 0||B.is(d.annotationId))}f.is=R})(Ze=e.DeleteFile||(e.DeleteFile={}));var Bt;(function(f){function _(R){var g=R;return g&&(g.changes!==void 0||g.documentChanges!==void 0)&&(g.documentChanges===void 0||g.documentChanges.every(function(d){return b.string(d.kind)?Ge.is(d)||Ve.is(d)||Ze.is(d):ue.is(d)}))}f.is=_})(Bt=e.WorkspaceEdit||(e.WorkspaceEdit={}));var pt=function(){function f(_,R){this.edits=_,this.changeAnnotations=R}return f.prototype.insert=function(_,R,g){var d,T;if(g===void 0?d=J.insert(_,R):B.is(g)?(T=g,d=ee.insert(_,R,g)):(this.assertChangeAnnotations(this.changeAnnotations),T=this.changeAnnotations.manage(g),d=ee.insert(_,R,T)),this.edits.push(d),T!==void 0)return T},f.prototype.replace=function(_,R,g){var d,T;if(g===void 0?d=J.replace(_,R):B.is(g)?(T=g,d=ee.replace(_,R,g)):(this.assertChangeAnnotations(this.changeAnnotations),T=this.changeAnnotations.manage(g),d=ee.replace(_,R,T)),this.edits.push(d),T!==void 0)return T},f.prototype.delete=function(_,R){var g,d;if(R===void 0?g=J.del(_):B.is(R)?(d=R,g=ee.del(_,R)):(this.assertChangeAnnotations(this.changeAnnotations),d=this.changeAnnotations.manage(R),g=ee.del(_,d)),this.edits.push(g),d!==void 0)return d},f.prototype.add=function(_){this.edits.push(_)},f.prototype.all=function(){return this.edits},f.prototype.clear=function(){this.edits.splice(0,this.edits.length)},f.prototype.assertChangeAnnotations=function(_){if(_===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},f}(),nt=function(){function f(_){this._annotations=_===void 0?Object.create(null):_,this._counter=0,this._size=0}return f.prototype.all=function(){return this._annotations},Object.defineProperty(f.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),f.prototype.manage=function(_,R){var g;if(B.is(_)?g=_:(g=this.nextId(),R=_),this._annotations[g]!==void 0)throw new Error("Id ".concat(g," is already in use."));if(R===void 0)throw new Error("No annotation provided for id ".concat(g));return this._annotations[g]=R,this._size++,g},f.prototype.nextId=function(){return this._counter++,this._counter.toString()},f}(),gt=function(){function f(_){var R=this;this._textEditChanges=Object.create(null),_!==void 0?(this._workspaceEdit=_,_.documentChanges?(this._changeAnnotations=new nt(_.changeAnnotations),_.changeAnnotations=this._changeAnnotations.all(),_.documentChanges.forEach(function(g){if(ue.is(g)){var d=new pt(g.edits,R._changeAnnotations);R._textEditChanges[g.textDocument.uri]=d}})):_.changes&&Object.keys(_.changes).forEach(function(g){var d=new pt(_.changes[g]);R._textEditChanges[g]=d})):this._workspaceEdit={}}return Object.defineProperty(f.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),f.prototype.getTextEditChange=function(_){if(mt.is(_)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var R={uri:_.uri,version:_.version},g=this._textEditChanges[R.uri];if(!g){var d=[],T={textDocument:R,edits:d};this._workspaceEdit.documentChanges.push(T),g=new pt(d,this._changeAnnotations),this._textEditChanges[R.uri]=g}return g}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var g=this._textEditChanges[_];if(!g){var d=[];this._workspaceEdit.changes[_]=d,g=new pt(d),this._textEditChanges[_]=g}return g}},f.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new nt,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},f.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},f.prototype.createFile=function(_,R,g){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var d;fe.is(R)||B.is(R)?d=R:g=R;var T,x;if(d===void 0?T=Ge.create(_,g):(x=B.is(d)?d:this._changeAnnotations.manage(d),T=Ge.create(_,g,x)),this._workspaceEdit.documentChanges.push(T),x!==void 0)return x},f.prototype.renameFile=function(_,R,g,d){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var T;fe.is(g)||B.is(g)?T=g:d=g;var x,te;if(T===void 0?x=Ve.create(_,R,d):(te=B.is(T)?T:this._changeAnnotations.manage(T),x=Ve.create(_,R,d,te)),this._workspaceEdit.documentChanges.push(x),te!==void 0)return te},f.prototype.deleteFile=function(_,R,g){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var d;fe.is(R)||B.is(R)?d=R:g=R;var T,x;if(d===void 0?T=Ze.create(_,g):(x=B.is(d)?d:this._changeAnnotations.manage(d),T=Ze.create(_,g,x)),this._workspaceEdit.documentChanges.push(T),x!==void 0)return x},f}();e.WorkspaceChange=gt;var cn;(function(f){function _(g){return{uri:g}}f.create=_;function R(g){var d=g;return b.defined(d)&&b.string(d.uri)}f.is=R})(cn=e.TextDocumentIdentifier||(e.TextDocumentIdentifier={}));var Ue;(function(f){function _(g,d){return{uri:g,version:d}}f.create=_;function R(g){var d=g;return b.defined(d)&&b.string(d.uri)&&b.integer(d.version)}f.is=R})(Ue=e.VersionedTextDocumentIdentifier||(e.VersionedTextDocumentIdentifier={}));var mt;(function(f){function _(g,d){return{uri:g,version:d}}f.create=_;function R(g){var d=g;return b.defined(d)&&b.string(d.uri)&&(d.version===null||b.integer(d.version))}f.is=R})(mt=e.OptionalVersionedTextDocumentIdentifier||(e.OptionalVersionedTextDocumentIdentifier={}));var Tt;(function(f){function _(g,d,T,x){return{uri:g,languageId:d,version:T,text:x}}f.create=_;function R(g){var d=g;return b.defined(d)&&b.string(d.uri)&&b.string(d.languageId)&&b.integer(d.version)&&b.string(d.text)}f.is=R})(Tt=e.TextDocumentItem||(e.TextDocumentItem={}));var un;(function(f){f.PlainText="plaintext",f.Markdown="markdown";function _(R){var g=R;return g===f.PlainText||g===f.Markdown}f.is=_})(un=e.MarkupKind||(e.MarkupKind={}));var at;(function(f){function _(R){var g=R;return b.objectLiteral(R)&&un.is(g.kind)&&b.string(g.value)}f.is=_})(at=e.MarkupContent||(e.MarkupContent={}));var nr;(function(f){f.Text=1,f.Method=2,f.Function=3,f.Constructor=4,f.Field=5,f.Variable=6,f.Class=7,f.Interface=8,f.Module=9,f.Property=10,f.Unit=11,f.Value=12,f.Enum=13,f.Keyword=14,f.Snippet=15,f.Color=16,f.File=17,f.Reference=18,f.Folder=19,f.EnumMember=20,f.Constant=21,f.Struct=22,f.Event=23,f.Operator=24,f.TypeParameter=25})(nr=e.CompletionItemKind||(e.CompletionItemKind={}));var An;(function(f){f.PlainText=1,f.Snippet=2})(An=e.InsertTextFormat||(e.InsertTextFormat={}));var Cn;(function(f){f.Deprecated=1})(Cn=e.CompletionItemTag||(e.CompletionItemTag={}));var Dn;(function(f){function _(g,d,T){return{newText:g,insert:d,replace:T}}f.create=_;function R(g){var d=g;return d&&b.string(d.newText)&&a.is(d.insert)&&a.is(d.replace)}f.is=R})(Dn=e.InsertReplaceEdit||(e.InsertReplaceEdit={}));var _n;(function(f){f.asIs=1,f.adjustIndentation=2})(_n=e.InsertTextMode||(e.InsertTextMode={}));var rr;(function(f){function _(R){var g=R;return g&&(b.string(g.detail)||g.detail===void 0)&&(b.string(g.description)||g.description===void 0)}f.is=_})(rr=e.CompletionItemLabelDetails||(e.CompletionItemLabelDetails={}));var jn;(function(f){function _(R){return{label:R}}f.create=_})(jn=e.CompletionItem||(e.CompletionItem={}));var $n;(function(f){function _(R,g){return{items:R||[],isIncomplete:!!g}}f.create=_})($n=e.CompletionList||(e.CompletionList={}));var Rn;(function(f){function _(g){return g.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}f.fromPlainText=_;function R(g){var d=g;return b.string(d)||b.objectLiteral(d)&&b.string(d.language)&&b.string(d.value)}f.is=R})(Rn=e.MarkedString||(e.MarkedString={}));var et;(function(f){function _(R){var g=R;return!!g&&b.objectLiteral(g)&&(at.is(g.contents)||Rn.is(g.contents)||b.typedArray(g.contents,Rn.is))&&(R.range===void 0||a.is(R.range))}f.is=_})(et=e.Hover||(e.Hover={}));var Hn;(function(f){function _(R,g){return g?{label:R,documentation:g}:{label:R}}f.create=_})(Hn=e.ParameterInformation||(e.ParameterInformation={}));var dn;(function(f){function _(R,g){for(var d=[],T=2;T=0;Nt--){var Et=Ie[Nt],Xt=T.offsetAt(Et.range.start),de=T.offsetAt(Et.range.end);if(de<=Te)te=te.substring(0,Xt)+Et.newText+te.substring(de,te.length);else throw new Error("Overlapping edit");Te=Xt}return te}f.applyEdits=g;function d(T,x){if(T.length<=1)return T;var te=T.length/2|0,Ie=T.slice(0,te),Te=T.slice(te);d(Ie,x),d(Te,x);for(var Nt=0,Et=0,Xt=0;Nt0&&_.push(R.length),this._lineOffsets=_}return this._lineOffsets},f.prototype.positionAt=function(_){_=Math.max(Math.min(_,this._content.length),0);var R=this.getLineOffsets(),g=0,d=R.length;if(d===0)return o.create(0,_);for(;g_?d=T:g=T+1}var x=g-1;return o.create(x,_-R[x])},f.prototype.offsetAt=function(_){var R=this.getLineOffsets();if(_.line>=R.length)return this._content.length;if(_.line<0)return 0;var g=R[_.line],d=_.line+1"u"}f.undefined=g;function d(de){return de===!0||de===!1}f.boolean=d;function T(de){return _.call(de)==="[object String]"}f.string=T;function x(de){return _.call(de)==="[object Number]"}f.number=x;function te(de,zn,_r){return _.call(de)==="[object Number]"&&zn<=de&&de<=_r}f.numberRange=te;function Ie(de){return _.call(de)==="[object Number]"&&-2147483648<=de&&de<=2147483647}f.integer=Ie;function Te(de){return _.call(de)==="[object Number]"&&0<=de&&de<=2147483647}f.uinteger=Te;function Nt(de){return _.call(de)==="[object Function]"}f.func=Nt;function Et(de){return de!==null&&typeof de=="object"}f.objectLiteral=Et;function Xt(de,zn){return Array.isArray(de)&&de.every(zn)}f.typedArray=Xt})(b||(b={}))})});var Le=I(Dt=>{"use strict";Object.defineProperty(Dt,"__esModule",{value:!0});Dt.ProtocolNotificationType=Dt.ProtocolNotificationType0=Dt.ProtocolRequestType=Dt.ProtocolRequestType0=Dt.RegistrationType=Dt.MessageDirection=void 0;var Er=dr(),rm;(function(n){n.clientToServer="clientToServer",n.serverToClient="serverToClient",n.both="both"})(rm=Dt.MessageDirection||(Dt.MessageDirection={}));var qa=class{constructor(e){this.method=e}};Dt.RegistrationType=qa;var ka=class extends Er.RequestType0{constructor(e){super(e)}};Dt.ProtocolRequestType0=ka;var Ia=class extends Er.RequestType{constructor(e){super(e,Er.ParameterStructures.byName)}};Dt.ProtocolRequestType=Ia;var Oa=class extends Er.NotificationType0{constructor(e){super(e)}};Dt.ProtocolNotificationType0=Oa;var xa=class extends Er.NotificationType{constructor(e){super(e,Er.ParameterStructures.byName)}};Dt.ProtocolNotificationType=xa});var ts=I(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.objectLiteral=Xe.typedArray=Xe.stringArray=Xe.array=Xe.func=Xe.error=Xe.number=Xe.string=Xe.boolean=void 0;function im(n){return n===!0||n===!1}Xe.boolean=im;function _l(n){return typeof n=="string"||n instanceof String}Xe.string=_l;function sm(n){return typeof n=="number"||n instanceof Number}Xe.number=sm;function om(n){return n instanceof Error}Xe.error=om;function am(n){return typeof n=="function"}Xe.func=am;function Rl(n){return Array.isArray(n)}Xe.array=Rl;function cm(n){return Rl(n)&&n.every(e=>_l(e))}Xe.stringArray=cm;function um(n,e){return Array.isArray(n)&&n.every(e)}Xe.typedArray=um;function dm(n){return n!==null&&typeof n=="object"}Xe.objectLiteral=dm});var wl=I(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.ImplementationRequest=void 0;var bl=Le(),lm;(function(n){n.method="textDocument/implementation",n.messageDirection=bl.MessageDirection.clientToServer,n.type=new bl.ProtocolRequestType(n.method)})(lm=ei.ImplementationRequest||(ei.ImplementationRequest={}))});var Tl=I(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.TypeDefinitionRequest=void 0;var Sl=Le(),fm;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=Sl.MessageDirection.clientToServer,n.type=new Sl.ProtocolRequestType(n.method)})(fm=ti.TypeDefinitionRequest||(ti.TypeDefinitionRequest={}))});var Pl=I(Bn=>{"use strict";Object.defineProperty(Bn,"__esModule",{value:!0});Bn.DidChangeWorkspaceFoldersNotification=Bn.WorkspaceFoldersRequest=void 0;var ns=Le(),hm;(function(n){n.method="workspace/workspaceFolders",n.messageDirection=ns.MessageDirection.serverToClient,n.type=new ns.ProtocolRequestType0(n.method)})(hm=Bn.WorkspaceFoldersRequest||(Bn.WorkspaceFoldersRequest={}));var pm;(function(n){n.method="workspace/didChangeWorkspaceFolders",n.messageDirection=ns.MessageDirection.clientToServer,n.type=new ns.ProtocolNotificationType(n.method)})(pm=Bn.DidChangeWorkspaceFoldersNotification||(Bn.DidChangeWorkspaceFoldersNotification={}))});var ql=I(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.ConfigurationRequest=void 0;var El=Le(),gm;(function(n){n.method="workspace/configuration",n.messageDirection=El.MessageDirection.serverToClient,n.type=new El.ProtocolRequestType(n.method)})(gm=ni.ConfigurationRequest||(ni.ConfigurationRequest={}))});var kl=I(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.ColorPresentationRequest=Gn.DocumentColorRequest=void 0;var rs=Le(),mm;(function(n){n.method="textDocument/documentColor",n.messageDirection=rs.MessageDirection.clientToServer,n.type=new rs.ProtocolRequestType(n.method)})(mm=Gn.DocumentColorRequest||(Gn.DocumentColorRequest={}));var ym;(function(n){n.method="textDocument/colorPresentation",n.messageDirection=rs.MessageDirection.clientToServer,n.type=new rs.ProtocolRequestType(n.method)})(ym=Gn.ColorPresentationRequest||(Gn.ColorPresentationRequest={}))});var Ol=I(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.FoldingRangeRequest=void 0;var Il=Le(),vm;(function(n){n.method="textDocument/foldingRange",n.messageDirection=Il.MessageDirection.clientToServer,n.type=new Il.ProtocolRequestType(n.method)})(vm=ri.FoldingRangeRequest||(ri.FoldingRangeRequest={}))});var Fl=I(ii=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});ii.DeclarationRequest=void 0;var xl=Le(),Cm;(function(n){n.method="textDocument/declaration",n.messageDirection=xl.MessageDirection.clientToServer,n.type=new xl.ProtocolRequestType(n.method)})(Cm=ii.DeclarationRequest||(ii.DeclarationRequest={}))});var Ml=I(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.SelectionRangeRequest=void 0;var Nl=Le(),Dm;(function(n){n.method="textDocument/selectionRange",n.messageDirection=Nl.MessageDirection.clientToServer,n.type=new Nl.ProtocolRequestType(n.method)})(Dm=si.SelectionRangeRequest||(si.SelectionRangeRequest={}))});var Ll=I(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});Yt.WorkDoneProgressCancelNotification=Yt.WorkDoneProgressCreateRequest=Yt.WorkDoneProgress=void 0;var _m=dr(),is=Le(),Rm;(function(n){n.type=new _m.ProgressType;function e(t){return t===n.type}n.is=e})(Rm=Yt.WorkDoneProgress||(Yt.WorkDoneProgress={}));var bm;(function(n){n.method="window/workDoneProgress/create",n.messageDirection=is.MessageDirection.serverToClient,n.type=new is.ProtocolRequestType(n.method)})(bm=Yt.WorkDoneProgressCreateRequest||(Yt.WorkDoneProgressCreateRequest={}));var wm;(function(n){n.method="window/workDoneProgress/cancel",n.messageDirection=is.MessageDirection.clientToServer,n.type=new is.ProtocolNotificationType(n.method)})(wm=Yt.WorkDoneProgressCancelNotification||(Yt.WorkDoneProgressCancelNotification={}))});var Al=I(Zt=>{"use strict";Object.defineProperty(Zt,"__esModule",{value:!0});Zt.CallHierarchyOutgoingCallsRequest=Zt.CallHierarchyIncomingCallsRequest=Zt.CallHierarchyPrepareRequest=void 0;var qr=Le(),Sm;(function(n){n.method="textDocument/prepareCallHierarchy",n.messageDirection=qr.MessageDirection.clientToServer,n.type=new qr.ProtocolRequestType(n.method)})(Sm=Zt.CallHierarchyPrepareRequest||(Zt.CallHierarchyPrepareRequest={}));var Tm;(function(n){n.method="callHierarchy/incomingCalls",n.messageDirection=qr.MessageDirection.clientToServer,n.type=new qr.ProtocolRequestType(n.method)})(Tm=Zt.CallHierarchyIncomingCallsRequest||(Zt.CallHierarchyIncomingCallsRequest={}));var Pm;(function(n){n.method="callHierarchy/outgoingCalls",n.messageDirection=qr.MessageDirection.clientToServer,n.type=new qr.ProtocolRequestType(n.method)})(Pm=Zt.CallHierarchyOutgoingCallsRequest||(Zt.CallHierarchyOutgoingCallsRequest={}))});var jl=I(Qe=>{"use strict";Object.defineProperty(Qe,"__esModule",{value:!0});Qe.SemanticTokensRefreshRequest=Qe.SemanticTokensRangeRequest=Qe.SemanticTokensDeltaRequest=Qe.SemanticTokensRequest=Qe.SemanticTokensRegistrationType=Qe.TokenFormat=void 0;var kn=Le(),Em;(function(n){n.Relative="relative"})(Em=Qe.TokenFormat||(Qe.TokenFormat={}));var ss;(function(n){n.method="textDocument/semanticTokens",n.type=new kn.RegistrationType(n.method)})(ss=Qe.SemanticTokensRegistrationType||(Qe.SemanticTokensRegistrationType={}));var qm;(function(n){n.method="textDocument/semanticTokens/full",n.messageDirection=kn.MessageDirection.clientToServer,n.type=new kn.ProtocolRequestType(n.method),n.registrationMethod=ss.method})(qm=Qe.SemanticTokensRequest||(Qe.SemanticTokensRequest={}));var km;(function(n){n.method="textDocument/semanticTokens/full/delta",n.messageDirection=kn.MessageDirection.clientToServer,n.type=new kn.ProtocolRequestType(n.method),n.registrationMethod=ss.method})(km=Qe.SemanticTokensDeltaRequest||(Qe.SemanticTokensDeltaRequest={}));var Im;(function(n){n.method="textDocument/semanticTokens/range",n.messageDirection=kn.MessageDirection.clientToServer,n.type=new kn.ProtocolRequestType(n.method),n.registrationMethod=ss.method})(Im=Qe.SemanticTokensRangeRequest||(Qe.SemanticTokensRangeRequest={}));var Om;(function(n){n.method="workspace/semanticTokens/refresh",n.messageDirection=kn.MessageDirection.serverToClient,n.type=new kn.ProtocolRequestType0(n.method)})(Om=Qe.SemanticTokensRefreshRequest||(Qe.SemanticTokensRefreshRequest={}))});var Hl=I(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.ShowDocumentRequest=void 0;var $l=Le(),xm;(function(n){n.method="window/showDocument",n.messageDirection=$l.MessageDirection.serverToClient,n.type=new $l.ProtocolRequestType(n.method)})(xm=oi.ShowDocumentRequest||(oi.ShowDocumentRequest={}))});var Wl=I(ai=>{"use strict";Object.defineProperty(ai,"__esModule",{value:!0});ai.LinkedEditingRangeRequest=void 0;var Ul=Le(),Fm;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=Ul.MessageDirection.clientToServer,n.type=new Ul.ProtocolRequestType(n.method)})(Fm=ai.LinkedEditingRangeRequest||(ai.LinkedEditingRangeRequest={}))});var Kl=I(Ae=>{"use strict";Object.defineProperty(Ae,"__esModule",{value:!0});Ae.WillDeleteFilesRequest=Ae.DidDeleteFilesNotification=Ae.DidRenameFilesNotification=Ae.WillRenameFilesRequest=Ae.DidCreateFilesNotification=Ae.WillCreateFilesRequest=Ae.FileOperationPatternKind=void 0;var Wt=Le(),Nm;(function(n){n.file="file",n.folder="folder"})(Nm=Ae.FileOperationPatternKind||(Ae.FileOperationPatternKind={}));var Mm;(function(n){n.method="workspace/willCreateFiles",n.messageDirection=Wt.MessageDirection.clientToServer,n.type=new Wt.ProtocolRequestType(n.method)})(Mm=Ae.WillCreateFilesRequest||(Ae.WillCreateFilesRequest={}));var Lm;(function(n){n.method="workspace/didCreateFiles",n.messageDirection=Wt.MessageDirection.clientToServer,n.type=new Wt.ProtocolNotificationType(n.method)})(Lm=Ae.DidCreateFilesNotification||(Ae.DidCreateFilesNotification={}));var Am;(function(n){n.method="workspace/willRenameFiles",n.messageDirection=Wt.MessageDirection.clientToServer,n.type=new Wt.ProtocolRequestType(n.method)})(Am=Ae.WillRenameFilesRequest||(Ae.WillRenameFilesRequest={}));var jm;(function(n){n.method="workspace/didRenameFiles",n.messageDirection=Wt.MessageDirection.clientToServer,n.type=new Wt.ProtocolNotificationType(n.method)})(jm=Ae.DidRenameFilesNotification||(Ae.DidRenameFilesNotification={}));var $m;(function(n){n.method="workspace/didDeleteFiles",n.messageDirection=Wt.MessageDirection.clientToServer,n.type=new Wt.ProtocolNotificationType(n.method)})($m=Ae.DidDeleteFilesNotification||(Ae.DidDeleteFilesNotification={}));var Hm;(function(n){n.method="workspace/willDeleteFiles",n.messageDirection=Wt.MessageDirection.clientToServer,n.type=new Wt.ProtocolRequestType(n.method)})(Hm=Ae.WillDeleteFilesRequest||(Ae.WillDeleteFilesRequest={}))});var Vl=I(en=>{"use strict";Object.defineProperty(en,"__esModule",{value:!0});en.MonikerRequest=en.MonikerKind=en.UniquenessLevel=void 0;var zl=Le(),Um;(function(n){n.document="document",n.project="project",n.group="group",n.scheme="scheme",n.global="global"})(Um=en.UniquenessLevel||(en.UniquenessLevel={}));var Wm;(function(n){n.$import="import",n.$export="export",n.local="local"})(Wm=en.MonikerKind||(en.MonikerKind={}));var Km;(function(n){n.method="textDocument/moniker",n.messageDirection=zl.MessageDirection.clientToServer,n.type=new zl.ProtocolRequestType(n.method)})(Km=en.MonikerRequest||(en.MonikerRequest={}))});var Bl=I(tn=>{"use strict";Object.defineProperty(tn,"__esModule",{value:!0});tn.TypeHierarchySubtypesRequest=tn.TypeHierarchySupertypesRequest=tn.TypeHierarchyPrepareRequest=void 0;var kr=Le(),zm;(function(n){n.method="textDocument/prepareTypeHierarchy",n.messageDirection=kr.MessageDirection.clientToServer,n.type=new kr.ProtocolRequestType(n.method)})(zm=tn.TypeHierarchyPrepareRequest||(tn.TypeHierarchyPrepareRequest={}));var Vm;(function(n){n.method="typeHierarchy/supertypes",n.messageDirection=kr.MessageDirection.clientToServer,n.type=new kr.ProtocolRequestType(n.method)})(Vm=tn.TypeHierarchySupertypesRequest||(tn.TypeHierarchySupertypesRequest={}));var Bm;(function(n){n.method="typeHierarchy/subtypes",n.messageDirection=kr.MessageDirection.clientToServer,n.type=new kr.ProtocolRequestType(n.method)})(Bm=tn.TypeHierarchySubtypesRequest||(tn.TypeHierarchySubtypesRequest={}))});var Gl=I(Xn=>{"use strict";Object.defineProperty(Xn,"__esModule",{value:!0});Xn.InlineValueRefreshRequest=Xn.InlineValueRequest=void 0;var os=Le(),Gm;(function(n){n.method="textDocument/inlineValue",n.messageDirection=os.MessageDirection.clientToServer,n.type=new os.ProtocolRequestType(n.method)})(Gm=Xn.InlineValueRequest||(Xn.InlineValueRequest={}));var Xm;(function(n){n.method="workspace/inlineValue/refresh",n.messageDirection=os.MessageDirection.serverToClient,n.type=new os.ProtocolRequestType0(n.method)})(Xm=Xn.InlineValueRefreshRequest||(Xn.InlineValueRefreshRequest={}))});var Xl=I(nn=>{"use strict";Object.defineProperty(nn,"__esModule",{value:!0});nn.InlayHintRefreshRequest=nn.InlayHintResolveRequest=nn.InlayHintRequest=void 0;var Ir=Le(),Qm;(function(n){n.method="textDocument/inlayHint",n.messageDirection=Ir.MessageDirection.clientToServer,n.type=new Ir.ProtocolRequestType(n.method)})(Qm=nn.InlayHintRequest||(nn.InlayHintRequest={}));var Jm;(function(n){n.method="inlayHint/resolve",n.messageDirection=Ir.MessageDirection.clientToServer,n.type=new Ir.ProtocolRequestType(n.method)})(Jm=nn.InlayHintResolveRequest||(nn.InlayHintResolveRequest={}));var Ym;(function(n){n.method="workspace/inlayHint/refresh",n.messageDirection=Ir.MessageDirection.serverToClient,n.type=new Ir.ProtocolRequestType0(n.method)})(Ym=nn.InlayHintRefreshRequest||(nn.InlayHintRefreshRequest={}))});var Jl=I(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});st.DiagnosticRefreshRequest=st.WorkspaceDiagnosticRequest=st.DocumentDiagnosticRequest=st.DocumentDiagnosticReportKind=st.DiagnosticServerCancellationData=void 0;var Ql=dr(),Zm=ts(),Or=Le(),ey;(function(n){function e(t){let r=t;return r&&Zm.boolean(r.retriggerRequest)}n.is=e})(ey=st.DiagnosticServerCancellationData||(st.DiagnosticServerCancellationData={}));var ty;(function(n){n.Full="full",n.Unchanged="unchanged"})(ty=st.DocumentDiagnosticReportKind||(st.DocumentDiagnosticReportKind={}));var ny;(function(n){n.method="textDocument/diagnostic",n.messageDirection=Or.MessageDirection.clientToServer,n.type=new Or.ProtocolRequestType(n.method),n.partialResult=new Ql.ProgressType})(ny=st.DocumentDiagnosticRequest||(st.DocumentDiagnosticRequest={}));var ry;(function(n){n.method="workspace/diagnostic",n.messageDirection=Or.MessageDirection.clientToServer,n.type=new Or.ProtocolRequestType(n.method),n.partialResult=new Ql.ProgressType})(ry=st.WorkspaceDiagnosticRequest||(st.WorkspaceDiagnosticRequest={}));var iy;(function(n){n.method="workspace/diagnostic/refresh",n.messageDirection=Or.MessageDirection.serverToClient,n.type=new Or.ProtocolRequestType0(n.method)})(iy=st.DiagnosticRefreshRequest||(st.DiagnosticRefreshRequest={}))});var ef=I(Ce=>{"use strict";Object.defineProperty(Ce,"__esModule",{value:!0});Ce.DidCloseNotebookDocumentNotification=Ce.DidSaveNotebookDocumentNotification=Ce.DidChangeNotebookDocumentNotification=Ce.NotebookCellArrayChange=Ce.DidOpenNotebookDocumentNotification=Ce.NotebookDocumentSyncRegistrationType=Ce.NotebookDocument=Ce.NotebookCell=Ce.ExecutionSummary=Ce.NotebookCellKind=void 0;var ci=es(),rn=ts(),fn=Le(),Yl;(function(n){n.Markup=1,n.Code=2;function e(t){return t===1||t===2}n.is=e})(Yl=Ce.NotebookCellKind||(Ce.NotebookCellKind={}));var Zl;(function(n){function e(i,s){let o={executionOrder:i};return(s===!0||s===!1)&&(o.success=s),o}n.create=e;function t(i){let s=i;return rn.objectLiteral(s)&&ci.uinteger.is(s.executionOrder)&&(s.success===void 0||rn.boolean(s.success))}n.is=t;function r(i,s){return i===s?!0:i==null||s===null||s===void 0?!1:i.executionOrder===s.executionOrder&&i.success===s.success}n.equals=r})(Zl=Ce.ExecutionSummary||(Ce.ExecutionSummary={}));var Fa;(function(n){function e(s,o){return{kind:s,document:o}}n.create=e;function t(s){let o=s;return rn.objectLiteral(o)&&Yl.is(o.kind)&&ci.DocumentUri.is(o.document)&&(o.metadata===void 0||rn.objectLiteral(o.metadata))}n.is=t;function r(s,o){let a=new Set;return s.document!==o.document&&a.add("document"),s.kind!==o.kind&&a.add("kind"),s.executionSummary!==o.executionSummary&&a.add("executionSummary"),(s.metadata!==void 0||o.metadata!==void 0)&&!i(s.metadata,o.metadata)&&a.add("metadata"),(s.executionSummary!==void 0||o.executionSummary!==void 0)&&!Zl.equals(s.executionSummary,o.executionSummary)&&a.add("executionSummary"),a}n.diff=r;function i(s,o){if(s===o)return!0;if(s==null||o===null||o===void 0||typeof s!=typeof o||typeof s!="object")return!1;let a=Array.isArray(s),u=Array.isArray(o);if(a!==u)return!1;if(a&&u){if(s.length!==o.length)return!1;for(let h=0;h{"use strict";Object.defineProperty(p,"__esModule",{value:!0});p.WorkspaceSymbolRequest=p.CodeActionResolveRequest=p.CodeActionRequest=p.DocumentSymbolRequest=p.DocumentHighlightRequest=p.ReferencesRequest=p.DefinitionRequest=p.SignatureHelpRequest=p.SignatureHelpTriggerKind=p.HoverRequest=p.CompletionResolveRequest=p.CompletionRequest=p.CompletionTriggerKind=p.PublishDiagnosticsNotification=p.WatchKind=p.RelativePattern=p.FileChangeType=p.DidChangeWatchedFilesNotification=p.WillSaveTextDocumentWaitUntilRequest=p.WillSaveTextDocumentNotification=p.TextDocumentSaveReason=p.DidSaveTextDocumentNotification=p.DidCloseTextDocumentNotification=p.DidChangeTextDocumentNotification=p.TextDocumentContentChangeEvent=p.DidOpenTextDocumentNotification=p.TextDocumentSyncKind=p.TelemetryEventNotification=p.LogMessageNotification=p.ShowMessageRequest=p.ShowMessageNotification=p.MessageType=p.DidChangeConfigurationNotification=p.ExitNotification=p.ShutdownRequest=p.InitializedNotification=p.InitializeErrorCodes=p.InitializeRequest=p.WorkDoneProgressOptions=p.TextDocumentRegistrationOptions=p.StaticRegistrationOptions=p.PositionEncodingKind=p.FailureHandlingKind=p.ResourceOperationKind=p.UnregistrationRequest=p.RegistrationRequest=p.DocumentSelector=p.NotebookCellTextDocumentFilter=p.NotebookDocumentFilter=p.TextDocumentFilter=void 0;p.TypeHierarchySubtypesRequest=p.TypeHierarchyPrepareRequest=p.MonikerRequest=p.MonikerKind=p.UniquenessLevel=p.WillDeleteFilesRequest=p.DidDeleteFilesNotification=p.WillRenameFilesRequest=p.DidRenameFilesNotification=p.WillCreateFilesRequest=p.DidCreateFilesNotification=p.FileOperationPatternKind=p.LinkedEditingRangeRequest=p.ShowDocumentRequest=p.SemanticTokensRegistrationType=p.SemanticTokensRefreshRequest=p.SemanticTokensRangeRequest=p.SemanticTokensDeltaRequest=p.SemanticTokensRequest=p.TokenFormat=p.CallHierarchyPrepareRequest=p.CallHierarchyOutgoingCallsRequest=p.CallHierarchyIncomingCallsRequest=p.WorkDoneProgressCancelNotification=p.WorkDoneProgressCreateRequest=p.WorkDoneProgress=p.SelectionRangeRequest=p.DeclarationRequest=p.FoldingRangeRequest=p.ColorPresentationRequest=p.DocumentColorRequest=p.ConfigurationRequest=p.DidChangeWorkspaceFoldersNotification=p.WorkspaceFoldersRequest=p.TypeDefinitionRequest=p.ImplementationRequest=p.ApplyWorkspaceEditRequest=p.ExecuteCommandRequest=p.PrepareRenameRequest=p.RenameRequest=p.PrepareSupportDefaultBehavior=p.DocumentOnTypeFormattingRequest=p.DocumentRangeFormattingRequest=p.DocumentFormattingRequest=p.DocumentLinkResolveRequest=p.DocumentLinkRequest=p.CodeLensRefreshRequest=p.CodeLensResolveRequest=p.CodeLensRequest=p.WorkspaceSymbolResolveRequest=void 0;p.DidCloseNotebookDocumentNotification=p.DidSaveNotebookDocumentNotification=p.DidChangeNotebookDocumentNotification=p.NotebookCellArrayChange=p.DidOpenNotebookDocumentNotification=p.NotebookDocumentSyncRegistrationType=p.NotebookDocument=p.NotebookCell=p.ExecutionSummary=p.NotebookCellKind=p.DiagnosticRefreshRequest=p.WorkspaceDiagnosticRequest=p.DocumentDiagnosticRequest=p.DocumentDiagnosticReportKind=p.DiagnosticServerCancellationData=p.InlayHintRefreshRequest=p.InlayHintResolveRequest=p.InlayHintRequest=p.InlineValueRefreshRequest=p.InlineValueRequest=p.TypeHierarchySupertypesRequest=void 0;var j=Le(),tf=es(),ot=ts(),ly=wl();Object.defineProperty(p,"ImplementationRequest",{enumerable:!0,get:function(){return ly.ImplementationRequest}});var fy=Tl();Object.defineProperty(p,"TypeDefinitionRequest",{enumerable:!0,get:function(){return fy.TypeDefinitionRequest}});var nf=Pl();Object.defineProperty(p,"WorkspaceFoldersRequest",{enumerable:!0,get:function(){return nf.WorkspaceFoldersRequest}});Object.defineProperty(p,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:function(){return nf.DidChangeWorkspaceFoldersNotification}});var hy=ql();Object.defineProperty(p,"ConfigurationRequest",{enumerable:!0,get:function(){return hy.ConfigurationRequest}});var rf=kl();Object.defineProperty(p,"DocumentColorRequest",{enumerable:!0,get:function(){return rf.DocumentColorRequest}});Object.defineProperty(p,"ColorPresentationRequest",{enumerable:!0,get:function(){return rf.ColorPresentationRequest}});var py=Ol();Object.defineProperty(p,"FoldingRangeRequest",{enumerable:!0,get:function(){return py.FoldingRangeRequest}});var gy=Fl();Object.defineProperty(p,"DeclarationRequest",{enumerable:!0,get:function(){return gy.DeclarationRequest}});var my=Ml();Object.defineProperty(p,"SelectionRangeRequest",{enumerable:!0,get:function(){return my.SelectionRangeRequest}});var Na=Ll();Object.defineProperty(p,"WorkDoneProgress",{enumerable:!0,get:function(){return Na.WorkDoneProgress}});Object.defineProperty(p,"WorkDoneProgressCreateRequest",{enumerable:!0,get:function(){return Na.WorkDoneProgressCreateRequest}});Object.defineProperty(p,"WorkDoneProgressCancelNotification",{enumerable:!0,get:function(){return Na.WorkDoneProgressCancelNotification}});var Ma=Al();Object.defineProperty(p,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:function(){return Ma.CallHierarchyIncomingCallsRequest}});Object.defineProperty(p,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:function(){return Ma.CallHierarchyOutgoingCallsRequest}});Object.defineProperty(p,"CallHierarchyPrepareRequest",{enumerable:!0,get:function(){return Ma.CallHierarchyPrepareRequest}});var xr=jl();Object.defineProperty(p,"TokenFormat",{enumerable:!0,get:function(){return xr.TokenFormat}});Object.defineProperty(p,"SemanticTokensRequest",{enumerable:!0,get:function(){return xr.SemanticTokensRequest}});Object.defineProperty(p,"SemanticTokensDeltaRequest",{enumerable:!0,get:function(){return xr.SemanticTokensDeltaRequest}});Object.defineProperty(p,"SemanticTokensRangeRequest",{enumerable:!0,get:function(){return xr.SemanticTokensRangeRequest}});Object.defineProperty(p,"SemanticTokensRefreshRequest",{enumerable:!0,get:function(){return xr.SemanticTokensRefreshRequest}});Object.defineProperty(p,"SemanticTokensRegistrationType",{enumerable:!0,get:function(){return xr.SemanticTokensRegistrationType}});var yy=Hl();Object.defineProperty(p,"ShowDocumentRequest",{enumerable:!0,get:function(){return yy.ShowDocumentRequest}});var vy=Wl();Object.defineProperty(p,"LinkedEditingRangeRequest",{enumerable:!0,get:function(){return vy.LinkedEditingRangeRequest}});var lr=Kl();Object.defineProperty(p,"FileOperationPatternKind",{enumerable:!0,get:function(){return lr.FileOperationPatternKind}});Object.defineProperty(p,"DidCreateFilesNotification",{enumerable:!0,get:function(){return lr.DidCreateFilesNotification}});Object.defineProperty(p,"WillCreateFilesRequest",{enumerable:!0,get:function(){return lr.WillCreateFilesRequest}});Object.defineProperty(p,"DidRenameFilesNotification",{enumerable:!0,get:function(){return lr.DidRenameFilesNotification}});Object.defineProperty(p,"WillRenameFilesRequest",{enumerable:!0,get:function(){return lr.WillRenameFilesRequest}});Object.defineProperty(p,"DidDeleteFilesNotification",{enumerable:!0,get:function(){return lr.DidDeleteFilesNotification}});Object.defineProperty(p,"WillDeleteFilesRequest",{enumerable:!0,get:function(){return lr.WillDeleteFilesRequest}});var La=Vl();Object.defineProperty(p,"UniquenessLevel",{enumerable:!0,get:function(){return La.UniquenessLevel}});Object.defineProperty(p,"MonikerKind",{enumerable:!0,get:function(){return La.MonikerKind}});Object.defineProperty(p,"MonikerRequest",{enumerable:!0,get:function(){return La.MonikerRequest}});var Aa=Bl();Object.defineProperty(p,"TypeHierarchyPrepareRequest",{enumerable:!0,get:function(){return Aa.TypeHierarchyPrepareRequest}});Object.defineProperty(p,"TypeHierarchySubtypesRequest",{enumerable:!0,get:function(){return Aa.TypeHierarchySubtypesRequest}});Object.defineProperty(p,"TypeHierarchySupertypesRequest",{enumerable:!0,get:function(){return Aa.TypeHierarchySupertypesRequest}});var sf=Gl();Object.defineProperty(p,"InlineValueRequest",{enumerable:!0,get:function(){return sf.InlineValueRequest}});Object.defineProperty(p,"InlineValueRefreshRequest",{enumerable:!0,get:function(){return sf.InlineValueRefreshRequest}});var ja=Xl();Object.defineProperty(p,"InlayHintRequest",{enumerable:!0,get:function(){return ja.InlayHintRequest}});Object.defineProperty(p,"InlayHintResolveRequest",{enumerable:!0,get:function(){return ja.InlayHintResolveRequest}});Object.defineProperty(p,"InlayHintRefreshRequest",{enumerable:!0,get:function(){return ja.InlayHintRefreshRequest}});var di=Jl();Object.defineProperty(p,"DiagnosticServerCancellationData",{enumerable:!0,get:function(){return di.DiagnosticServerCancellationData}});Object.defineProperty(p,"DocumentDiagnosticReportKind",{enumerable:!0,get:function(){return di.DocumentDiagnosticReportKind}});Object.defineProperty(p,"DocumentDiagnosticRequest",{enumerable:!0,get:function(){return di.DocumentDiagnosticRequest}});Object.defineProperty(p,"WorkspaceDiagnosticRequest",{enumerable:!0,get:function(){return di.WorkspaceDiagnosticRequest}});Object.defineProperty(p,"DiagnosticRefreshRequest",{enumerable:!0,get:function(){return di.DiagnosticRefreshRequest}});var hn=ef();Object.defineProperty(p,"NotebookCellKind",{enumerable:!0,get:function(){return hn.NotebookCellKind}});Object.defineProperty(p,"ExecutionSummary",{enumerable:!0,get:function(){return hn.ExecutionSummary}});Object.defineProperty(p,"NotebookCell",{enumerable:!0,get:function(){return hn.NotebookCell}});Object.defineProperty(p,"NotebookDocument",{enumerable:!0,get:function(){return hn.NotebookDocument}});Object.defineProperty(p,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:function(){return hn.NotebookDocumentSyncRegistrationType}});Object.defineProperty(p,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:function(){return hn.DidOpenNotebookDocumentNotification}});Object.defineProperty(p,"NotebookCellArrayChange",{enumerable:!0,get:function(){return hn.NotebookCellArrayChange}});Object.defineProperty(p,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:function(){return hn.DidChangeNotebookDocumentNotification}});Object.defineProperty(p,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:function(){return hn.DidSaveNotebookDocumentNotification}});Object.defineProperty(p,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:function(){return hn.DidCloseNotebookDocumentNotification}});var of;(function(n){function e(t){let r=t;return ot.string(r.language)||ot.string(r.scheme)||ot.string(r.pattern)}n.is=e})(of=p.TextDocumentFilter||(p.TextDocumentFilter={}));var af;(function(n){function e(t){let r=t;return ot.objectLiteral(r)&&(ot.string(r.notebookType)||ot.string(r.scheme)||ot.string(r.pattern))}n.is=e})(af=p.NotebookDocumentFilter||(p.NotebookDocumentFilter={}));var cf;(function(n){function e(t){let r=t;return ot.objectLiteral(r)&&(ot.string(r.notebook)||af.is(r.notebook))&&(r.language===void 0||ot.string(r.language))}n.is=e})(cf=p.NotebookCellTextDocumentFilter||(p.NotebookCellTextDocumentFilter={}));var uf;(function(n){function e(t){if(!Array.isArray(t))return!1;for(let r of t)if(!ot.string(r)&&!of.is(r)&&!cf.is(r))return!1;return!0}n.is=e})(uf=p.DocumentSelector||(p.DocumentSelector={}));var Cy;(function(n){n.method="client/registerCapability",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolRequestType(n.method)})(Cy=p.RegistrationRequest||(p.RegistrationRequest={}));var Dy;(function(n){n.method="client/unregisterCapability",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolRequestType(n.method)})(Dy=p.UnregistrationRequest||(p.UnregistrationRequest={}));var _y;(function(n){n.Create="create",n.Rename="rename",n.Delete="delete"})(_y=p.ResourceOperationKind||(p.ResourceOperationKind={}));var Ry;(function(n){n.Abort="abort",n.Transactional="transactional",n.TextOnlyTransactional="textOnlyTransactional",n.Undo="undo"})(Ry=p.FailureHandlingKind||(p.FailureHandlingKind={}));var by;(function(n){n.UTF8="utf-8",n.UTF16="utf-16",n.UTF32="utf-32"})(by=p.PositionEncodingKind||(p.PositionEncodingKind={}));var wy;(function(n){function e(t){let r=t;return r&&ot.string(r.id)&&r.id.length>0}n.hasId=e})(wy=p.StaticRegistrationOptions||(p.StaticRegistrationOptions={}));var Sy;(function(n){function e(t){let r=t;return r&&(r.documentSelector===null||uf.is(r.documentSelector))}n.is=e})(Sy=p.TextDocumentRegistrationOptions||(p.TextDocumentRegistrationOptions={}));var Ty;(function(n){function e(r){let i=r;return ot.objectLiteral(i)&&(i.workDoneProgress===void 0||ot.boolean(i.workDoneProgress))}n.is=e;function t(r){let i=r;return i&&ot.boolean(i.workDoneProgress)}n.hasWorkDoneProgress=t})(Ty=p.WorkDoneProgressOptions||(p.WorkDoneProgressOptions={}));var Py;(function(n){n.method="initialize",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(Py=p.InitializeRequest||(p.InitializeRequest={}));var Ey;(function(n){n.unknownProtocolVersion=1})(Ey=p.InitializeErrorCodes||(p.InitializeErrorCodes={}));var qy;(function(n){n.method="initialized",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(qy=p.InitializedNotification||(p.InitializedNotification={}));var ky;(function(n){n.method="shutdown",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType0(n.method)})(ky=p.ShutdownRequest||(p.ShutdownRequest={}));var Iy;(function(n){n.method="exit",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType0(n.method)})(Iy=p.ExitNotification||(p.ExitNotification={}));var Oy;(function(n){n.method="workspace/didChangeConfiguration",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(Oy=p.DidChangeConfigurationNotification||(p.DidChangeConfigurationNotification={}));var xy;(function(n){n.Error=1,n.Warning=2,n.Info=3,n.Log=4})(xy=p.MessageType||(p.MessageType={}));var Fy;(function(n){n.method="window/showMessage",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolNotificationType(n.method)})(Fy=p.ShowMessageNotification||(p.ShowMessageNotification={}));var Ny;(function(n){n.method="window/showMessageRequest",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolRequestType(n.method)})(Ny=p.ShowMessageRequest||(p.ShowMessageRequest={}));var My;(function(n){n.method="window/logMessage",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolNotificationType(n.method)})(My=p.LogMessageNotification||(p.LogMessageNotification={}));var Ly;(function(n){n.method="telemetry/event",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolNotificationType(n.method)})(Ly=p.TelemetryEventNotification||(p.TelemetryEventNotification={}));var Ay;(function(n){n.None=0,n.Full=1,n.Incremental=2})(Ay=p.TextDocumentSyncKind||(p.TextDocumentSyncKind={}));var jy;(function(n){n.method="textDocument/didOpen",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(jy=p.DidOpenTextDocumentNotification||(p.DidOpenTextDocumentNotification={}));var $y;(function(n){function e(r){let i=r;return i!=null&&typeof i.text=="string"&&i.range!==void 0&&(i.rangeLength===void 0||typeof i.rangeLength=="number")}n.isIncremental=e;function t(r){let i=r;return i!=null&&typeof i.text=="string"&&i.range===void 0&&i.rangeLength===void 0}n.isFull=t})($y=p.TextDocumentContentChangeEvent||(p.TextDocumentContentChangeEvent={}));var Hy;(function(n){n.method="textDocument/didChange",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(Hy=p.DidChangeTextDocumentNotification||(p.DidChangeTextDocumentNotification={}));var Uy;(function(n){n.method="textDocument/didClose",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(Uy=p.DidCloseTextDocumentNotification||(p.DidCloseTextDocumentNotification={}));var Wy;(function(n){n.method="textDocument/didSave",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(Wy=p.DidSaveTextDocumentNotification||(p.DidSaveTextDocumentNotification={}));var Ky;(function(n){n.Manual=1,n.AfterDelay=2,n.FocusOut=3})(Ky=p.TextDocumentSaveReason||(p.TextDocumentSaveReason={}));var zy;(function(n){n.method="textDocument/willSave",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(zy=p.WillSaveTextDocumentNotification||(p.WillSaveTextDocumentNotification={}));var Vy;(function(n){n.method="textDocument/willSaveWaitUntil",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(Vy=p.WillSaveTextDocumentWaitUntilRequest||(p.WillSaveTextDocumentWaitUntilRequest={}));var By;(function(n){n.method="workspace/didChangeWatchedFiles",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolNotificationType(n.method)})(By=p.DidChangeWatchedFilesNotification||(p.DidChangeWatchedFilesNotification={}));var Gy;(function(n){n.Created=1,n.Changed=2,n.Deleted=3})(Gy=p.FileChangeType||(p.FileChangeType={}));var Xy;(function(n){function e(t){let r=t;return ot.objectLiteral(r)&&(tf.URI.is(r.baseUri)||tf.WorkspaceFolder.is(r.baseUri))&&ot.string(r.pattern)}n.is=e})(Xy=p.RelativePattern||(p.RelativePattern={}));var Qy;(function(n){n.Create=1,n.Change=2,n.Delete=4})(Qy=p.WatchKind||(p.WatchKind={}));var Jy;(function(n){n.method="textDocument/publishDiagnostics",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolNotificationType(n.method)})(Jy=p.PublishDiagnosticsNotification||(p.PublishDiagnosticsNotification={}));var Yy;(function(n){n.Invoked=1,n.TriggerCharacter=2,n.TriggerForIncompleteCompletions=3})(Yy=p.CompletionTriggerKind||(p.CompletionTriggerKind={}));var Zy;(function(n){n.method="textDocument/completion",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(Zy=p.CompletionRequest||(p.CompletionRequest={}));var ev;(function(n){n.method="completionItem/resolve",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(ev=p.CompletionResolveRequest||(p.CompletionResolveRequest={}));var tv;(function(n){n.method="textDocument/hover",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(tv=p.HoverRequest||(p.HoverRequest={}));var nv;(function(n){n.Invoked=1,n.TriggerCharacter=2,n.ContentChange=3})(nv=p.SignatureHelpTriggerKind||(p.SignatureHelpTriggerKind={}));var rv;(function(n){n.method="textDocument/signatureHelp",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(rv=p.SignatureHelpRequest||(p.SignatureHelpRequest={}));var iv;(function(n){n.method="textDocument/definition",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(iv=p.DefinitionRequest||(p.DefinitionRequest={}));var sv;(function(n){n.method="textDocument/references",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(sv=p.ReferencesRequest||(p.ReferencesRequest={}));var ov;(function(n){n.method="textDocument/documentHighlight",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(ov=p.DocumentHighlightRequest||(p.DocumentHighlightRequest={}));var av;(function(n){n.method="textDocument/documentSymbol",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(av=p.DocumentSymbolRequest||(p.DocumentSymbolRequest={}));var cv;(function(n){n.method="textDocument/codeAction",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(cv=p.CodeActionRequest||(p.CodeActionRequest={}));var uv;(function(n){n.method="codeAction/resolve",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(uv=p.CodeActionResolveRequest||(p.CodeActionResolveRequest={}));var dv;(function(n){n.method="workspace/symbol",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(dv=p.WorkspaceSymbolRequest||(p.WorkspaceSymbolRequest={}));var lv;(function(n){n.method="workspaceSymbol/resolve",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(lv=p.WorkspaceSymbolResolveRequest||(p.WorkspaceSymbolResolveRequest={}));var fv;(function(n){n.method="textDocument/codeLens",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(fv=p.CodeLensRequest||(p.CodeLensRequest={}));var hv;(function(n){n.method="codeLens/resolve",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(hv=p.CodeLensResolveRequest||(p.CodeLensResolveRequest={}));var pv;(function(n){n.method="workspace/codeLens/refresh",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolRequestType0(n.method)})(pv=p.CodeLensRefreshRequest||(p.CodeLensRefreshRequest={}));var gv;(function(n){n.method="textDocument/documentLink",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(gv=p.DocumentLinkRequest||(p.DocumentLinkRequest={}));var mv;(function(n){n.method="documentLink/resolve",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(mv=p.DocumentLinkResolveRequest||(p.DocumentLinkResolveRequest={}));var yv;(function(n){n.method="textDocument/formatting",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(yv=p.DocumentFormattingRequest||(p.DocumentFormattingRequest={}));var vv;(function(n){n.method="textDocument/rangeFormatting",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(vv=p.DocumentRangeFormattingRequest||(p.DocumentRangeFormattingRequest={}));var Cv;(function(n){n.method="textDocument/onTypeFormatting",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(Cv=p.DocumentOnTypeFormattingRequest||(p.DocumentOnTypeFormattingRequest={}));var Dv;(function(n){n.Identifier=1})(Dv=p.PrepareSupportDefaultBehavior||(p.PrepareSupportDefaultBehavior={}));var _v;(function(n){n.method="textDocument/rename",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(_v=p.RenameRequest||(p.RenameRequest={}));var Rv;(function(n){n.method="textDocument/prepareRename",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(Rv=p.PrepareRenameRequest||(p.PrepareRenameRequest={}));var bv;(function(n){n.method="workspace/executeCommand",n.messageDirection=j.MessageDirection.clientToServer,n.type=new j.ProtocolRequestType(n.method)})(bv=p.ExecuteCommandRequest||(p.ExecuteCommandRequest={}));var wv;(function(n){n.method="workspace/applyEdit",n.messageDirection=j.MessageDirection.serverToClient,n.type=new j.ProtocolRequestType("workspace/applyEdit")})(wv=p.ApplyWorkspaceEditRequest||(p.ApplyWorkspaceEditRequest={}))});var ff=I(as=>{"use strict";Object.defineProperty(as,"__esModule",{value:!0});as.createProtocolConnection=void 0;var lf=dr();function Sv(n,e,t,r){return lf.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,lf.createMessageConnection)(n,e,t,r)}as.createProtocolConnection=Sv});var hf=I(_t=>{"use strict";var Tv=_t&&_t.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),cs=_t&&_t.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Tv(e,n,t)};Object.defineProperty(_t,"__esModule",{value:!0});_t.LSPErrorCodes=_t.createProtocolConnection=void 0;cs(dr(),_t);cs(es(),_t);cs(Le(),_t);cs(df(),_t);var Pv=ff();Object.defineProperty(_t,"createProtocolConnection",{enumerable:!0,get:function(){return Pv.createProtocolConnection}});var Ev;(function(n){n.lspReservedErrorRangeStart=-32899,n.RequestFailed=-32803,n.ServerCancelled=-32802,n.ContentModified=-32801,n.RequestCancelled=-32800,n.lspReservedErrorRangeEnd=-32800})(Ev=_t.LSPErrorCodes||(_t.LSPErrorCodes={}))});var ne=I(pn=>{"use strict";var qv=pn&&pn.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),pf=pn&&pn.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&qv(e,n,t)};Object.defineProperty(pn,"__esModule",{value:!0});pn.createProtocolConnection=void 0;var kv=Ea();pf(Ea(),pn);pf(hf(),pn);function Iv(n,e,t,r){return(0,kv.createMessageConnection)(n,e,t,r)}pn.createProtocolConnection=Iv});var us=I(ut=>{"use strict";Object.defineProperty(ut,"__esModule",{value:!0});ut.forEach=ut.mapAsync=ut.map=ut.clearTestMode=ut.setTestMode=ut.Semaphore=ut.Delayer=void 0;var fi=ne(),$a=class{constructor(e){this.defaultDelay=e,this.timeout=void 0,this.completionPromise=void 0,this.onSuccess=void 0,this.task=void 0}trigger(e,t=this.defaultDelay){return this.task=e,t>=0&&this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise(r=>{this.onSuccess=r}).then(()=>{this.completionPromise=void 0,this.onSuccess=void 0;var r=this.task();return this.task=void 0,r})),(t>=0||this.timeout===void 0)&&(this.timeout=(0,fi.RAL)().timer.setTimeout(()=>{this.timeout=void 0,this.onSuccess(void 0)},t>=0?t:this.defaultDelay)),this.completionPromise}forceDelivery(){if(!this.completionPromise)return;this.cancelTimeout();let e=this.task();return this.completionPromise=void 0,this.onSuccess=void 0,this.task=void 0,e}isTriggered(){return this.timeout!==void 0}cancel(){this.cancelTimeout(),this.completionPromise=void 0}cancelTimeout(){this.timeout!==void 0&&(this.timeout.dispose(),this.timeout=void 0)}};ut.Delayer=$a;var Ha=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,fi.RAL)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let t=e.thunk();t instanceof Promise?t.then(r=>{this._active--,e.resolve(r),this.runNext()},r=>{this._active--,e.reject(r),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};ut.Semaphore=Ha;var Ua=!1;function Ov(){Ua=!0}ut.setTestMode=Ov;function xv(){Ua=!1}ut.clearTestMode=xv;var gf=15,li=class{constructor(e=gf){this.yieldAfter=Ua===!0?Math.max(e,2):Math.max(e,gf),this.startTime=Date.now(),this.counter=0,this.total=0,this.counterInterval=1}start(){this.counter=0,this.total=0,this.counterInterval=1,this.startTime=Date.now()}shouldYield(){if(++this.counter>=this.counterInterval){let e=Date.now()-this.startTime,t=Math.max(0,this.yieldAfter-e);if(this.total+=this.counter,this.counter=0,e>=this.yieldAfter||t<=1)return this.counterInterval=1,this.total=0,!0;switch(e){case 0:case 1:this.counterInterval=this.total*2;break}}return!1}};async function Fv(n,e,t,r){if(n.length===0)return[];let i=new Array(n.length),s=new li(r?.yieldAfter);function o(u){s.start();for(let h=u;h{(0,fi.RAL)().timer.setImmediate(()=>{u(o(a))})});return i}ut.map=Fv;async function Nv(n,e,t,r){if(n.length===0)return[];let i=new Array(n.length),s=new li(r?.yieldAfter);async function o(u){s.start();for(let h=u;h{(0,fi.RAL)().timer.setImmediate(()=>{u(o(a))})});return i}ut.mapAsync=Nv;async function Mv(n,e,t,r){if(n.length===0)return;let i=new li(r?.yieldAfter);function s(a){i.start();for(let u=a;u{(0,fi.RAL)().timer.setImmediate(()=>{a(s(o))})})}ut.forEach=Mv});var za=I(Ka=>{"use strict";Object.defineProperty(Ka,"__esModule",{value:!0});var Lv=require("vscode"),Wa=class extends Lv.CompletionItem{constructor(e){super(e)}};Ka.default=Wa});var Ga=I(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});var Av=require("vscode"),Va=class extends Av.CodeLens{constructor(e){super(e)}};Ba.default=Va});var Ja=I(Qa=>{"use strict";Object.defineProperty(Qa,"__esModule",{value:!0});var jv=require("vscode"),Xa=class extends jv.DocumentLink{constructor(e,t){super(e,t)}};Qa.default=Xa});var ec=I(Za=>{"use strict";Object.defineProperty(Za,"__esModule",{value:!0});var $v=require("vscode"),Ya=class extends $v.CodeAction{constructor(e,t){super(e),this.data=t}};Za.default=Ya});var rc=I(fr=>{"use strict";Object.defineProperty(fr,"__esModule",{value:!0});fr.ProtocolDiagnostic=fr.DiagnosticCode=void 0;var Hv=require("vscode"),tc=Ut(),Uv;(function(n){function e(t){let r=t;return r!=null&&(tc.number(r.value)||tc.string(r.value))&&tc.string(r.target)}n.is=e})(Uv=fr.DiagnosticCode||(fr.DiagnosticCode={}));var nc=class extends Hv.Diagnostic{constructor(e,t,r,i){super(e,t,r),this.data=i,this.hasDiagnosticCode=!1}};fr.ProtocolDiagnostic=nc});var oc=I(sc=>{"use strict";Object.defineProperty(sc,"__esModule",{value:!0});var Wv=require("vscode"),ic=class extends Wv.CallHierarchyItem{constructor(e,t,r,i,s,o,a){super(e,t,r,i,s,o),a!==void 0&&(this.data=a)}};sc.default=ic});var uc=I(cc=>{"use strict";Object.defineProperty(cc,"__esModule",{value:!0});var Kv=require("vscode"),ac=class extends Kv.TypeHierarchyItem{constructor(e,t,r,i,s,o,a){super(e,t,r,i,s,o),a!==void 0&&(this.data=a)}};cc.default=ac});var fc=I(lc=>{"use strict";Object.defineProperty(lc,"__esModule",{value:!0});var ds=require("vscode"),dc=class extends ds.SymbolInformation{constructor(e,t,r,i,s){let o=!(i instanceof ds.Uri);super(e,t,r,o?i:new ds.Location(i,new ds.Range(0,0,0,0))),this.hasRange=o,s!==void 0&&(this.data=s)}};lc.default=dc});var gc=I(pc=>{"use strict";Object.defineProperty(pc,"__esModule",{value:!0});var zv=require("vscode"),hc=class extends zv.InlayHint{constructor(e,t,r){super(e,t,r)}};pc.default=hc});var vf=I(ls=>{"use strict";Object.defineProperty(ls,"__esModule",{value:!0});ls.createConverter=void 0;var Je=require("vscode"),ae=ne(),Fr=Ut(),mf=us(),Vv=za(),Bv=Ga(),Gv=Ja(),Xv=ec(),yf=rc(),Qv=oc(),Jv=uc(),Yv=fc(),Zv=gc(),mc;(function(n){function e(t){let r=t;return r&&!!r.inserting&&!!r.replacing}n.is=e})(mc||(mc={}));function eC(n){let t=n||(l=>l.toString());function r(l){return t(l)}function i(l){return{uri:t(l.uri)}}function s(l){return{uri:t(l.uri),languageId:l.languageId,version:l.version,text:l.getText()}}function o(l){return{uri:t(l.uri),version:l.version}}function a(l){return{textDocument:s(l)}}function u(l){let P=l;return!!P.document&&!!P.contentChanges}function h(l){let P=l;return!!P.uri&&!!P.version}function m(l,P,H){if(h(l))return{textDocument:{uri:t(l.uri),version:l.version},contentChanges:[{text:l.getText()}]};if(u(l)){let oe=P,b=H;return{textDocument:{uri:t(oe),version:b},contentChanges:l.contentChanges.map(_=>{let R=_.range;return{range:{start:{line:R.start.line,character:R.start.character},end:{line:R.end.line,character:R.end.character}},rangeLength:_.rangeLength,text:_.text}})}}else throw Error("Unsupported text document change parameter")}function C(l){return{textDocument:i(l)}}function y(l,P=!1){let H={textDocument:i(l)};return P&&(H.text=l.getText()),H}function S(l){switch(l){case Je.TextDocumentSaveReason.Manual:return ae.TextDocumentSaveReason.Manual;case Je.TextDocumentSaveReason.AfterDelay:return ae.TextDocumentSaveReason.AfterDelay;case Je.TextDocumentSaveReason.FocusOut:return ae.TextDocumentSaveReason.FocusOut}return ae.TextDocumentSaveReason.Manual}function v(l){return{textDocument:i(l.document),reason:S(l.reason)}}function E(l){return{files:l.files.map(P=>({uri:t(P)}))}}function q(l){return{files:l.files.map(P=>({oldUri:t(P.oldUri),newUri:t(P.newUri)}))}}function N(l){return{files:l.files.map(P=>({uri:t(P)}))}}function L(l){return{files:l.files.map(P=>({uri:t(P)}))}}function M(l){return{files:l.files.map(P=>({oldUri:t(P.oldUri),newUri:t(P.newUri)}))}}function U(l){return{files:l.files.map(P=>({uri:t(P)}))}}function J(l,P){return{textDocument:i(l),position:nt(P)}}function fe(l){switch(l){case Je.CompletionTriggerKind.TriggerCharacter:return ae.CompletionTriggerKind.TriggerCharacter;case Je.CompletionTriggerKind.TriggerForIncompleteCompletions:return ae.CompletionTriggerKind.TriggerForIncompleteCompletions;default:return ae.CompletionTriggerKind.Invoked}}function B(l,P,H){return{textDocument:i(l),position:nt(P),context:{triggerKind:fe(H.triggerKind),triggerCharacter:H.triggerCharacter}}}function ee(l){switch(l){case Je.SignatureHelpTriggerKind.Invoke:return ae.SignatureHelpTriggerKind.Invoked;case Je.SignatureHelpTriggerKind.TriggerCharacter:return ae.SignatureHelpTriggerKind.TriggerCharacter;case Je.SignatureHelpTriggerKind.ContentChange:return ae.SignatureHelpTriggerKind.ContentChange}}function ue(l){return{label:l.label}}function Ge(l){return l.map(ue)}function Ve(l){return{label:l.label,parameters:Ge(l.parameters)}}function Ze(l){return l.map(Ve)}function Bt(l){return l===void 0?l:{signatures:Ze(l.signatures),activeSignature:l.activeSignature,activeParameter:l.activeParameter}}function pt(l,P,H){return{textDocument:i(l),position:nt(P),context:{isRetrigger:H.isRetrigger,triggerCharacter:H.triggerCharacter,triggerKind:ee(H.triggerKind),activeSignatureHelp:Bt(H.activeSignatureHelp)}}}function nt(l){return{line:l.line,character:l.character}}function gt(l){return l==null?l:{line:l.line>ae.uinteger.MAX_VALUE?ae.uinteger.MAX_VALUE:l.line,character:l.character>ae.uinteger.MAX_VALUE?ae.uinteger.MAX_VALUE:l.character}}function cn(l,P){return mf.map(l,gt,P)}function Ue(l){return l==null?l:{start:gt(l.start),end:gt(l.end)}}function mt(l){return l==null?l:ae.Location.create(r(l.uri),Ue(l.range))}function Tt(l){switch(l){case Je.DiagnosticSeverity.Error:return ae.DiagnosticSeverity.Error;case Je.DiagnosticSeverity.Warning:return ae.DiagnosticSeverity.Warning;case Je.DiagnosticSeverity.Information:return ae.DiagnosticSeverity.Information;case Je.DiagnosticSeverity.Hint:return ae.DiagnosticSeverity.Hint}}function un(l){if(!l)return;let P=[];for(let H of l){let oe=at(H);oe!==void 0&&P.push(oe)}return P.length>0?P:void 0}function at(l){switch(l){case Je.DiagnosticTag.Unnecessary:return ae.DiagnosticTag.Unnecessary;case Je.DiagnosticTag.Deprecated:return ae.DiagnosticTag.Deprecated;default:return}}function nr(l){return{message:l.message,location:mt(l.location)}}function An(l){return l.map(nr)}function Cn(l){if(l!=null)return Fr.number(l)||Fr.string(l)?l:{value:l.value,target:r(l.target)}}function Dn(l){let P=ae.Diagnostic.create(Ue(l.range),l.message),H=l instanceof yf.ProtocolDiagnostic?l:void 0;H!==void 0&&H.data!==void 0&&(P.data=H.data);let oe=Cn(l.code);return yf.DiagnosticCode.is(oe)?H!==void 0&&H.hasDiagnosticCode?P.code=oe:(P.code=oe.value,P.codeDescription={href:oe.target}):P.code=oe,Fr.number(l.severity)&&(P.severity=Tt(l.severity)),Array.isArray(l.tags)&&(P.tags=un(l.tags)),l.relatedInformation&&(P.relatedInformation=An(l.relatedInformation)),l.source&&(P.source=l.source),P}function _n(l,P){return l==null?l:mf.map(l,Dn,P)}function rr(l,P){switch(l){case"$string":return P;case ae.MarkupKind.PlainText:return{kind:l,value:P};case ae.MarkupKind.Markdown:return{kind:l,value:P.value};default:return`Unsupported Markup content received. Kind is: ${l}`}}function jn(l){switch(l){case Je.CompletionItemTag.Deprecated:return ae.CompletionItemTag.Deprecated}}function $n(l){if(l===void 0)return l;let P=[];for(let H of l){let oe=jn(H);oe!==void 0&&P.push(oe)}return P}function Rn(l,P){return P!==void 0?P:l+1}function et(l,P=!1){let H,oe;Fr.string(l.label)?H=l.label:(H=l.label.label,P&&(l.label.detail!==void 0||l.label.description!==void 0)&&(oe={detail:l.label.detail,description:l.label.description}));let b={label:H};oe!==void 0&&(b.labelDetails=oe);let f=l instanceof Vv.default?l:void 0;l.detail&&(b.detail=l.detail),l.documentation&&(!f||f.documentationFormat==="$string"?b.documentation=l.documentation:b.documentation=rr(f.documentationFormat,l.documentation)),l.filterText&&(b.filterText=l.filterText),Hn(b,l),Fr.number(l.kind)&&(b.kind=Rn(l.kind,f&&f.originalItemKind)),l.sortText&&(b.sortText=l.sortText),l.additionalTextEdits&&(b.additionalTextEdits=Un(l.additionalTextEdits)),l.commitCharacters&&(b.commitCharacters=l.commitCharacters.slice()),l.command&&(b.command=Pt(l.command)),(l.preselect===!0||l.preselect===!1)&&(b.preselect=l.preselect);let _=$n(l.tags);if(f){if(f.data!==void 0&&(b.data=f.data),f.deprecated===!0||f.deprecated===!1){if(f.deprecated===!0&&_!==void 0&&_.length>0){let R=_.indexOf(Je.CompletionItemTag.Deprecated);R!==-1&&_.splice(R,1)}b.deprecated=f.deprecated}f.insertTextMode!==void 0&&(b.insertTextMode=f.insertTextMode)}return _!==void 0&&_.length>0&&(b.tags=_),b.insertTextMode===void 0&&l.keepWhitespace===!0&&(b.insertTextMode=ae.InsertTextMode.adjustIndentation),b}function Hn(l,P){let H=ae.InsertTextFormat.PlainText,oe,b;P.textEdit?(oe=P.textEdit.newText,b=P.textEdit.range):P.insertText instanceof Je.SnippetString?(H=ae.InsertTextFormat.Snippet,oe=P.insertText.value):oe=P.insertText,P.range&&(b=P.range),l.insertTextFormat=H,P.fromEdit&&oe!==void 0&&b!==void 0?l.textEdit=dn(oe,b):l.insertText=oe}function dn(l,P){return mc.is(P)?ae.InsertReplaceEdit.create(l,Ue(P.inserting),Ue(P.replacing)):{newText:l,range:Ue(P)}}function Ht(l){return{range:Ue(l.range),newText:l.newText}}function Un(l){return l==null?l:l.map(Ht)}function yt(l){return l<=Je.SymbolKind.TypeParameter?l+1:ae.SymbolKind.Property}function bn(l){return l}function Be(l){return l.map(bn)}function Gt(l,P,H){return{textDocument:i(l),position:nt(P),context:{includeDeclaration:H.includeDeclaration}}}async function vt(l,P){let H=ae.CodeAction.create(l.title);if(l instanceof Xv.default&&l.data!==void 0&&(H.data=l.data),l.kind!==void 0&&(H.kind=Sn(l.kind)),l.diagnostics!==void 0&&(H.diagnostics=await _n(l.diagnostics,P)),l.edit!==void 0)throw new Error("VS Code code actions can only be converted to a protocol code action without an edit.");return l.command!==void 0&&(H.command=Pt(l.command)),l.isPreferred!==void 0&&(H.isPreferred=l.isPreferred),l.disabled!==void 0&&(H.disabled={reason:l.disabled.reason}),H}async function wn(l,P){if(l==null)return l;let H;return l.only&&Fr.string(l.only.value)&&(H=[l.only.value]),ae.CodeActionContext.create(await _n(l.diagnostics,P),H,xt(l.triggerKind))}function xt(l){switch(l){case Je.CodeActionTriggerKind.Invoke:return ae.CodeActionTriggerKind.Invoked;case Je.CodeActionTriggerKind.Automatic:return ae.CodeActionTriggerKind.Automatic;default:return}}function Sn(l){if(l!=null)return l.value}function Wn(l){return l==null?l:ae.InlineValueContext.create(l.frameId,Ue(l.stoppedLocation))}function Pt(l){let P=ae.Command.create(l.title,l.command);return l.arguments&&(P.arguments=l.arguments),P}function Kn(l){let P=ae.CodeLens.create(Ue(l.range));return l.command&&(P.command=Pt(l.command)),l instanceof Bv.default&&l.data&&(P.data=l.data),P}function Ft(l,P){let H={tabSize:l.tabSize,insertSpaces:l.insertSpaces};return P.trimTrailingWhitespace&&(H.trimTrailingWhitespace=!0),P.trimFinalNewlines&&(H.trimFinalNewlines=!0),P.insertFinalNewline&&(H.insertFinalNewline=!0),H}function D(l){return{textDocument:i(l)}}function O(l){return{textDocument:i(l)}}function $(l){let P=ae.DocumentLink.create(Ue(l.range));l.target&&(P.target=r(l.target)),l.tooltip!==void 0&&(P.tooltip=l.tooltip);let H=l instanceof Gv.default?l:void 0;return H&&H.data&&(P.data=H.data),P}function V(l){return{textDocument:i(l)}}function ye(l){let P={name:l.name,kind:yt(l.kind),uri:r(l.uri),range:Ue(l.range),selectionRange:Ue(l.selectionRange)};return l.detail!==void 0&&l.detail.length>0&&(P.detail=l.detail),l.tags!==void 0&&(P.tags=Be(l.tags)),l instanceof Qv.default&&l.data!==void 0&&(P.data=l.data),P}function ge(l){let P={name:l.name,kind:yt(l.kind),uri:r(l.uri),range:Ue(l.range),selectionRange:Ue(l.selectionRange)};return l.detail!==void 0&&l.detail.length>0&&(P.detail=l.detail),l.tags!==void 0&&(P.tags=Be(l.tags)),l instanceof Jv.default&&l.data!==void 0&&(P.data=l.data),P}function be(l){let P=l instanceof Yv.default?{name:l.name,kind:yt(l.kind),location:l.hasRange?mt(l.location):{uri:t(l.location.uri)},data:l.data}:{name:l.name,kind:yt(l.kind),location:mt(l.location)};return l.tags!==void 0&&(P.tags=Be(l.tags)),l.containerName!==""&&(P.containerName=l.containerName),P}function Pe(l){let P=typeof l.label=="string"?l.label:l.label.map(se),H=ae.InlayHint.create(gt(l.position),P);return l.kind!==void 0&&(H.kind=l.kind),l.textEdits!==void 0&&(H.textEdits=Un(l.textEdits)),l.tooltip!==void 0&&(H.tooltip=ve(l.tooltip)),l.paddingLeft!==void 0&&(H.paddingLeft=l.paddingLeft),l.paddingRight!==void 0&&(H.paddingRight=l.paddingRight),l instanceof Zv.default&&l.data!==void 0&&(H.data=l.data),H}function se(l){let P=ae.InlayHintLabelPart.create(l.value);return l.location!==void 0&&(P.location=mt(l.location)),l.command!==void 0&&(P.command=Pt(l.command)),l.tooltip!==void 0&&(P.tooltip=ve(l.tooltip)),P}function ve(l){return typeof l=="string"?l:{kind:ae.MarkupKind.Markdown,value:l.value}}return{asUri:r,asTextDocumentIdentifier:i,asTextDocumentItem:s,asVersionedTextDocumentIdentifier:o,asOpenTextDocumentParams:a,asChangeTextDocumentParams:m,asCloseTextDocumentParams:C,asSaveTextDocumentParams:y,asWillSaveTextDocumentParams:v,asDidCreateFilesParams:E,asDidRenameFilesParams:q,asDidDeleteFilesParams:N,asWillCreateFilesParams:L,asWillRenameFilesParams:M,asWillDeleteFilesParams:U,asTextDocumentPositionParams:J,asCompletionParams:B,asSignatureHelpParams:pt,asWorkerPosition:nt,asRange:Ue,asPosition:gt,asPositions:cn,asLocation:mt,asDiagnosticSeverity:Tt,asDiagnosticTag:at,asDiagnostic:Dn,asDiagnostics:_n,asCompletionItem:et,asTextEdit:Ht,asSymbolKind:yt,asSymbolTag:bn,asSymbolTags:Be,asReferenceParams:Gt,asCodeAction:vt,asCodeActionContext:wn,asInlineValueContext:Wn,asCommand:Pt,asCodeLens:Kn,asFormattingOptions:Ft,asDocumentSymbolParams:D,asCodeLensParams:O,asDocumentLink:$,asDocumentLinkParams:V,asCallHierarchyItem:ye,asTypeHierarchyItem:ge,asInlayHint:Pe,asWorkspaceSymbol:be}}ls.createConverter=eC});var _f=I(hs=>{"use strict";Object.defineProperty(hs,"__esModule",{value:!0});hs.createConverter=void 0;var W=require("vscode"),Z=ne(),Kt=Ut(),De=us(),tC=za(),nC=Ga(),rC=Ja(),iC=ec(),Cf=rc(),sC=oc(),oC=uc(),aC=fc(),cC=gc(),Df=ne(),fs;(function(n){function e(t){let r=t;return r&&Kt.string(r.language)&&Kt.string(r.value)}n.is=e})(fs||(fs={}));function uC(n,e,t){let i=n||(c=>W.Uri.parse(c));function s(c){return i(c)}function o(c){let w=[];for(let F of c)if(typeof F=="string")w.push(F);else if(Df.NotebookCellTextDocumentFilter.is(F))if(typeof F.notebook=="string")w.push({notebookType:F.notebook,language:F.language});else{let Q=F.notebook.notebookType??"*";w.push({notebookType:Q,scheme:F.notebook.scheme,pattern:F.notebook.pattern,language:F.language})}else Df.TextDocumentFilter.is(F)&&w.push({language:F.language,scheme:F.scheme,pattern:F.pattern});return w}async function a(c,w){return De.map(c,h,w)}function u(c){let w=new Array(c.length);for(let F=0;F0?w:void 0}function y(c){switch(c){case Z.DiagnosticTag.Unnecessary:return W.DiagnosticTag.Unnecessary;case Z.DiagnosticTag.Deprecated:return W.DiagnosticTag.Deprecated;default:return}}function S(c){return c?new W.Position(c.line,c.character):void 0}function v(c){return c?new W.Range(c.start.line,c.start.character,c.end.line,c.end.character):void 0}async function E(c,w){return De.map(c,F=>new W.Range(F.start.line,F.start.character,F.end.line,F.end.character),w)}function q(c){if(c==null)return W.DiagnosticSeverity.Error;switch(c){case Z.DiagnosticSeverity.Error:return W.DiagnosticSeverity.Error;case Z.DiagnosticSeverity.Warning:return W.DiagnosticSeverity.Warning;case Z.DiagnosticSeverity.Information:return W.DiagnosticSeverity.Information;case Z.DiagnosticSeverity.Hint:return W.DiagnosticSeverity.Hint}return W.DiagnosticSeverity.Error}function N(c){if(Kt.string(c))return M(c);if(fs.is(c))return M().appendCodeblock(c.value,c.language);if(Array.isArray(c)){let w=[];for(let F of c){let Q=M();fs.is(F)?Q.appendCodeblock(F.value,F.language):Q.appendMarkdown(F),w.push(Q)}return w}else return M(c)}function L(c){if(Kt.string(c))return c;switch(c.kind){case Z.MarkupKind.Markdown:return M(c.value);case Z.MarkupKind.PlainText:return c.value;default:return`Unsupported Markup content received. Kind is: ${c.kind}`}}function M(c){let w;if(c===void 0||typeof c=="string")w=new W.MarkdownString(c);else switch(c.kind){case Z.MarkupKind.Markdown:w=new W.MarkdownString(c.value);break;case Z.MarkupKind.PlainText:w=new W.MarkdownString,w.appendText(c.value);break;default:w=new W.MarkdownString,w.appendText(`Unsupported Markup content received. Kind is: ${c.kind}`);break}return w.isTrusted=e,w.supportHtml=t,w}function U(c){if(c)return new W.Hover(N(c.contents),v(c.range))}async function J(c,w,F){if(!c)return;if(Array.isArray(c))return De.map(c,ln=>Ge(ln,w),F);let Q=c,{defaultRange:qt,commitCharacters:rt}=fe(Q,w),we=await De.map(Q.items,ln=>Ge(ln,rt,qt,Q.itemDefaults?.insertTextMode,Q.itemDefaults?.insertTextFormat,Q.itemDefaults?.data),F);return new W.CompletionList(we,Q.isIncomplete)}function fe(c,w){let F=c.itemDefaults?.editRange,Q=c.itemDefaults?.commitCharacters??w;return Z.Range.is(F)?{defaultRange:v(F),commitCharacters:Q}:F!==void 0?{defaultRange:{inserting:v(F.insert),replacing:v(F.replace)},commitCharacters:Q}:{defaultRange:void 0,commitCharacters:Q}}function B(c){return Z.CompletionItemKind.Text<=c&&c<=Z.CompletionItemKind.TypeParameter?[c-1,void 0]:[W.CompletionItemKind.Text,c]}function ee(c){switch(c){case Z.CompletionItemTag.Deprecated:return W.CompletionItemTag.Deprecated}}function ue(c){if(c==null)return[];let w=[];for(let F of c){let Q=ee(F);Q!==void 0&&w.push(Q)}return w}function Ge(c,w,F,Q,qt,rt){let we=ue(c.tags),ln=Ve(c),Ee=new tC.default(ln);c.detail&&(Ee.detail=c.detail),c.documentation&&(Ee.documentation=L(c.documentation),Ee.documentationFormat=Kt.string(c.documentation)?"$string":c.documentation.kind),c.filterText&&(Ee.filterText=c.filterText);let Li=Ze(c,F,qt);if(Li&&(Ee.insertText=Li.text,Ee.range=Li.range,Ee.fromEdit=Li.fromEdit),Kt.number(c.kind)){let[ng,$d]=B(c.kind);Ee.kind=ng,$d&&(Ee.originalItemKind=$d)}c.sortText&&(Ee.sortText=c.sortText),c.additionalTextEdits&&(Ee.additionalTextEdits=gt(c.additionalTextEdits));let Ad=c.commitCharacters!==void 0?Kt.stringArray(c.commitCharacters)?c.commitCharacters:void 0:w;Ad&&(Ee.commitCharacters=Ad.slice()),c.command&&(Ee.command=Be(c.command)),(c.deprecated===!0||c.deprecated===!1)&&(Ee.deprecated=c.deprecated,c.deprecated===!0&&we.push(W.CompletionItemTag.Deprecated)),(c.preselect===!0||c.preselect===!1)&&(Ee.preselect=c.preselect);let jd=c.data??rt;jd!==void 0&&(Ee.data=jd),we.length>0&&(Ee.tags=we);let go=c.insertTextMode??Q;return go!==void 0&&(Ee.insertTextMode=go,go===Z.InsertTextMode.asIs&&(Ee.keepWhitespace=!0)),Ee}function Ve(c){return Z.CompletionItemLabelDetails.is(c.labelDetails)?{label:c.label,detail:c.labelDetails.detail,description:c.labelDetails.description}:c.label}function Ze(c,w,F){let Q=c.insertTextFormat??F;if(c.textEdit!==void 0||w!==void 0){let[qt,rt]=c.textEdit!==void 0?Bt(c.textEdit):[w,c.textEditText??c.label];return Q===Z.InsertTextFormat.Snippet?{text:new W.SnippetString(rt),range:qt,fromEdit:!0}:{text:rt,range:qt,fromEdit:!0}}else return c.insertText?Q===Z.InsertTextFormat.Snippet?{text:new W.SnippetString(c.insertText),fromEdit:!1}:{text:c.insertText,fromEdit:!1}:void 0}function Bt(c){return Z.InsertReplaceEdit.is(c)?[{inserting:v(c.insert),replacing:v(c.replace)},c.newText]:[v(c.range),c.newText]}function pt(c){if(c)return new W.TextEdit(v(c.range),c.newText)}async function nt(c,w){if(c)return De.map(c,pt,w)}function gt(c){if(!c)return;let w=new Array(c.length);for(let F=0;F0){let F=[];for(let Q of c.children)F.push(yt(Q));w.children=F}return w}function bn(c,w){c.tags=dn(w.tags),w.deprecated&&(c.tags?c.tags.includes(W.SymbolTag.Deprecated)||(c.tags=c.tags.concat(W.SymbolTag.Deprecated)):c.tags=[W.SymbolTag.Deprecated])}function Be(c){let w={title:c.title,command:c.command};return c.arguments&&(w.arguments=c.arguments),w}async function Gt(c,w){if(c)return De.map(c,Be,w)}let vt=new Map;vt.set(Z.CodeActionKind.Empty,W.CodeActionKind.Empty),vt.set(Z.CodeActionKind.QuickFix,W.CodeActionKind.QuickFix),vt.set(Z.CodeActionKind.Refactor,W.CodeActionKind.Refactor),vt.set(Z.CodeActionKind.RefactorExtract,W.CodeActionKind.RefactorExtract),vt.set(Z.CodeActionKind.RefactorInline,W.CodeActionKind.RefactorInline),vt.set(Z.CodeActionKind.RefactorRewrite,W.CodeActionKind.RefactorRewrite),vt.set(Z.CodeActionKind.Source,W.CodeActionKind.Source),vt.set(Z.CodeActionKind.SourceOrganizeImports,W.CodeActionKind.SourceOrganizeImports);function wn(c){if(c==null)return;let w=vt.get(c);if(w)return w;let F=c.split(".");w=W.CodeActionKind.Empty;for(let Q of F)w=w.append(Q);return w}function xt(c){if(c!=null)return c.map(w=>wn(w))}async function Sn(c,w){if(c==null)return;let F=new iC.default(c.title,c.data);return c.kind!==void 0&&(F.kind=wn(c.kind)),c.diagnostics!==void 0&&(F.diagnostics=u(c.diagnostics)),c.edit!==void 0&&(F.edit=await Ft(c.edit,w)),c.command!==void 0&&(F.command=Be(c.command)),c.isPreferred!==void 0&&(F.isPreferred=c.isPreferred),c.disabled!==void 0&&(F.disabled={reason:c.disabled.reason}),F}function Wn(c,w){return De.mapAsync(c,async F=>Z.Command.is(F)?Be(F):Sn(F,w),w)}function Pt(c){if(!c)return;let w=new nC.default(v(c.range));return c.command&&(w.command=Be(c.command)),c.data!==void 0&&c.data!==null&&(w.data=c.data),w}async function Kn(c,w){if(c)return De.map(c,Pt,w)}async function Ft(c,w){if(!c)return;let F=new Map;if(c.changeAnnotations!==void 0){let rt=c.changeAnnotations;await De.forEach(Object.keys(rt),we=>{let ln=D(rt[we]);F.set(we,ln)},w)}let Q=rt=>{if(rt!==void 0)return F.get(rt)},qt=new W.WorkspaceEdit;if(c.documentChanges){let rt=c.documentChanges;await De.forEach(rt,we=>{if(Z.CreateFile.is(we))qt.createFile(i(we.uri),we.options,Q(we.annotationId));else if(Z.RenameFile.is(we))qt.renameFile(i(we.oldUri),i(we.newUri),we.options,Q(we.annotationId));else if(Z.DeleteFile.is(we))qt.deleteFile(i(we.uri),we.options,Q(we.annotationId));else if(Z.TextDocumentEdit.is(we)){let ln=i(we.textDocument.uri);for(let Ee of we.edits)Z.AnnotatedTextEdit.is(Ee)?qt.replace(ln,v(Ee.range),Ee.newText,Q(Ee.annotationId)):qt.replace(ln,v(Ee.range),Ee.newText)}else throw new Error(`Unknown workspace edit change received:
+${JSON.stringify(we,void 0,4)}`)},w)}else if(c.changes){let rt=c.changes;await De.forEach(Object.keys(rt),we=>{qt.set(i(we),gt(rt[we]))},w)}return qt}function D(c){if(c!==void 0)return{label:c.label,needsConfirmation:!!c.needsConfirmation,description:c.description}}function O(c){let w=v(c.range),F=c.target?s(c.target):void 0,Q=new rC.default(w,F);return c.tooltip!==void 0&&(Q.tooltip=c.tooltip),c.data!==void 0&&c.data!==null&&(Q.data=c.data),Q}async function $(c,w){if(c)return De.map(c,O,w)}function V(c){return new W.Color(c.red,c.green,c.blue,c.alpha)}function ye(c){return new W.ColorInformation(v(c.range),V(c.color))}async function ge(c,w){if(c)return De.map(c,ye,w)}function be(c){let w=new W.ColorPresentation(c.label);return w.additionalTextEdits=gt(c.additionalTextEdits),c.textEdit&&(w.textEdit=pt(c.textEdit)),w}async function Pe(c,w){if(c)return De.map(c,be,w)}function se(c){if(c)switch(c){case Z.FoldingRangeKind.Comment:return W.FoldingRangeKind.Comment;case Z.FoldingRangeKind.Imports:return W.FoldingRangeKind.Imports;case Z.FoldingRangeKind.Region:return W.FoldingRangeKind.Region}}function ve(c){return new W.FoldingRange(c.startLine,c.endLine,se(c.kind))}async function l(c,w){if(c)return De.map(c,ve,w)}function P(c){return new W.SelectionRange(v(c.range),c.parent?P(c.parent):void 0)}async function H(c,w){return Array.isArray(c)?De.map(c,P,w):[]}function oe(c){return Z.InlineValueText.is(c)?new W.InlineValueText(v(c.range),c.text):Z.InlineValueVariableLookup.is(c)?new W.InlineValueVariableLookup(v(c.range),c.variableName,c.caseSensitiveLookup):new W.InlineValueEvaluatableExpression(v(c.range),c.expression)}async function b(c,w){return Array.isArray(c)?De.map(c,oe,w):[]}async function f(c,w){let F=typeof c.label=="string"?c.label:await De.map(c.label,_,w),Q=new cC.default(S(c.position),F);return c.kind!==void 0&&(Q.kind=c.kind),c.textEdits!==void 0&&(Q.textEdits=await nt(c.textEdits,w)),c.tooltip!==void 0&&(Q.tooltip=R(c.tooltip)),c.paddingLeft!==void 0&&(Q.paddingLeft=c.paddingLeft),c.paddingRight!==void 0&&(Q.paddingRight=c.paddingRight),c.data!==void 0&&(Q.data=c.data),Q}function _(c){let w=new W.InlayHintLabelPart(c.value);return c.location!==void 0&&(w.location=at(c.location)),c.tooltip!==void 0&&(w.tooltip=R(c.tooltip)),c.command!==void 0&&(w.command=Be(c.command)),w}function R(c){return typeof c=="string"?c:M(c)}async function g(c,w){if(Array.isArray(c))return De.mapAsync(c,f,w)}function d(c){if(c===null)return;let w=new sC.default(et(c.kind),c.name,c.detail||"",s(c.uri),v(c.range),v(c.selectionRange),c.data);return c.tags!==void 0&&(w.tags=dn(c.tags)),w}async function T(c,w){if(c!==null)return De.map(c,d,w)}async function x(c,w){return new W.CallHierarchyIncomingCall(d(c.from),await E(c.fromRanges,w))}async function te(c,w){if(c!==null)return De.mapAsync(c,x,w)}async function Ie(c,w){return new W.CallHierarchyOutgoingCall(d(c.to),await E(c.fromRanges,w))}async function Te(c,w){if(c!==null)return De.mapAsync(c,Ie,w)}async function Nt(c,w){if(c!=null)return new W.SemanticTokens(new Uint32Array(c.data),c.resultId)}function Et(c){return new W.SemanticTokensEdit(c.start,c.deleteCount,c.data!==void 0?new Uint32Array(c.data):void 0)}async function Xt(c,w){if(c!=null)return new W.SemanticTokensEdits(c.edits.map(Et),c.resultId)}function de(c){return c}async function zn(c,w){if(c!=null)return new W.LinkedEditingRanges(await E(c.ranges,w),_r(c.wordPattern))}function _r(c){if(c!=null)return new RegExp(c)}function Br(c){if(c===null)return;let w=new oC.default(et(c.kind),c.name,c.detail||"",s(c.uri),v(c.range),v(c.selectionRange),c.data);return c.tags!==void 0&&(w.tags=dn(c.tags)),w}async function eg(c,w){if(c!==null)return De.map(c,Br,w)}function tg(c){if(Kt.string(c))return c;if(Z.RelativePattern.is(c)){if(Z.URI.is(c.baseUri))return new W.RelativePattern(s(c.baseUri),c.pattern);if(Z.WorkspaceFolder.is(c.baseUri)){let w=W.workspace.getWorkspaceFolder(s(c.baseUri.uri));return w!==void 0?new W.RelativePattern(w,c.pattern):void 0}}}return{asUri:s,asDocumentSelector:o,asDiagnostics:a,asDiagnostic:h,asRange:v,asRanges:E,asPosition:S,asDiagnosticSeverity:q,asDiagnosticTag:y,asHover:U,asCompletionResult:J,asCompletionItem:Ge,asTextEdit:pt,asTextEdits:nt,asSignatureHelp:cn,asSignatureInformations:Ue,asSignatureInformation:mt,asParameterInformations:Tt,asParameterInformation:un,asDeclarationResult:nr,asDefinitionResult:An,asLocation:at,asReferences:_n,asDocumentHighlights:rr,asDocumentHighlight:jn,asDocumentHighlightKind:$n,asSymbolKind:et,asSymbolTag:Hn,asSymbolTags:dn,asSymbolInformations:Rn,asSymbolInformation:Ht,asDocumentSymbols:Un,asDocumentSymbol:yt,asCommand:Be,asCommands:Gt,asCodeAction:Sn,asCodeActionKind:wn,asCodeActionKinds:xt,asCodeActionResult:Wn,asCodeLens:Pt,asCodeLenses:Kn,asWorkspaceEdit:Ft,asDocumentLink:O,asDocumentLinks:$,asFoldingRangeKind:se,asFoldingRange:ve,asFoldingRanges:l,asColor:V,asColorInformation:ye,asColorInformations:ge,asColorPresentation:be,asColorPresentations:Pe,asSelectionRange:P,asSelectionRanges:H,asInlineValue:oe,asInlineValues:b,asInlayHint:f,asInlayHints:g,asSemanticTokensLegend:de,asSemanticTokens:Nt,asSemanticTokensEdit:Et,asSemanticTokensEdits:Xt,asCallHierarchyItem:d,asCallHierarchyItems:T,asCallHierarchyIncomingCall:x,asCallHierarchyIncomingCalls:te,asCallHierarchyOutgoingCall:Ie,asCallHierarchyOutgoingCalls:Te,asLinkedEditingRanges:zn,asTypeHierarchyItem:Br,asTypeHierarchyItems:eg,asGlobPattern:tg}}hs.createConverter=uC});var je=I(zt=>{"use strict";Object.defineProperty(zt,"__esModule",{value:!0});zt.generateUuid=zt.parse=zt.isUUID=zt.v4=zt.empty=void 0;var hi=class{constructor(e){this._value=e}asHex(){return this._value}equals(e){return this.asHex()===e.asHex()}},pi=class n extends hi{constructor(){super([n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),"-",n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),"-","4",n._randomHex(),n._randomHex(),n._randomHex(),"-",n._oneOf(n._timeHighBits),n._randomHex(),n._randomHex(),n._randomHex(),"-",n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex()].join(""))}static _oneOf(e){return e[Math.floor(e.length*Math.random())]}static _randomHex(){return n._oneOf(n._chars)}};pi._chars=["0","1","2","3","4","5","6","6","7","8","9","a","b","c","d","e","f"];pi._timeHighBits=["8","9","a","b"];zt.empty=new hi("00000000-0000-0000-0000-000000000000");function Rf(){return new pi}zt.v4=Rf;var dC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function bf(n){return dC.test(n)}zt.isUUID=bf;function lC(n){if(!bf(n))throw new Error("invalid uuid");return new hi(n)}zt.parse=lC;function fC(){return Rf().asHex()}zt.generateUuid=fC});var vc=I(ps=>{"use strict";Object.defineProperty(ps,"__esModule",{value:!0});ps.ProgressPart=void 0;var wf=require("vscode"),Sf=ne(),Tf=Ut(),yc=class{constructor(e,t,r){this._client=e,this._token=t,this._reported=0,this._infinite=!1,this._lspProgressDisposable=this._client.onProgress(Sf.WorkDoneProgress.type,this._token,i=>{switch(i.kind){case"begin":this.begin(i);break;case"report":this.report(i);break;case"end":this.done(),r&&r(this);break}})}begin(e){this._infinite=e.percentage===void 0,this._lspProgressDisposable!==void 0&&wf.window.withProgress({location:wf.ProgressLocation.Window,cancellable:e.cancellable,title:e.title},async(t,r)=>{if(this._lspProgressDisposable!==void 0)return this._progress=t,this._cancellationToken=r,this._tokenDisposable=this._cancellationToken.onCancellationRequested(()=>{this._client.sendNotification(Sf.WorkDoneProgressCancelNotification.type,{token:this._token})}),this.report(e),new Promise((i,s)=>{this._resolve=i,this._reject=s})})}report(e){if(this._infinite&&Tf.string(e.message))this._progress!==void 0&&this._progress.report({message:e.message});else if(Tf.number(e.percentage)){let t=Math.max(0,Math.min(e.percentage,100)),r=Math.max(0,t-this._reported);this._reported+=r,this._progress!==void 0&&this._progress.report({message:e.message,increment:r})}}cancel(){this.cleanup(),this._reject!==void 0&&(this._reject(),this._resolve=void 0,this._reject=void 0)}done(){this.cleanup(),this._resolve!==void 0&&(this._resolve(),this._resolve=void 0,this._reject=void 0)}cleanup(){this._lspProgressDisposable!==void 0&&(this._lspProgressDisposable.dispose(),this._lspProgressDisposable=void 0),this._tokenDisposable!==void 0&&(this._tokenDisposable.dispose(),this._tokenDisposable=void 0),this._progress=void 0,this._cancellationToken=void 0}};ps.ProgressPart=yc});var me=I(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.WorkspaceFeature=Ye.TextDocumentLanguageFeature=Ye.TextDocumentEventFeature=Ye.DynamicDocumentFeature=Ye.DynamicFeature=Ye.StaticFeature=Ye.ensure=Ye.LSPCancellationError=void 0;var hr=require("vscode"),Cc=ne(),Rt=Ut(),Pf=je(),Dc=class extends hr.CancellationError{constructor(e){super(),this.data=e}};Ye.LSPCancellationError=Dc;function hC(n,e){return n[e]===void 0&&(n[e]={}),n[e]}Ye.ensure=hC;var pC;(function(n){function e(t){let r=t;return r!=null&&Rt.func(r.fillClientCapabilities)&&Rt.func(r.initialize)&&Rt.func(r.getState)&&Rt.func(r.dispose)&&(r.fillInitializeParams===void 0||Rt.func(r.fillInitializeParams))}n.is=e})(pC=Ye.StaticFeature||(Ye.StaticFeature={}));var gC;(function(n){function e(t){let r=t;return r!=null&&Rt.func(r.fillClientCapabilities)&&Rt.func(r.initialize)&&Rt.func(r.getState)&&Rt.func(r.dispose)&&(r.fillInitializeParams===void 0||Rt.func(r.fillInitializeParams))&&Rt.func(r.register)&&Rt.func(r.unregister)&&r.registrationType!==void 0}n.is=e})(gC=Ye.DynamicFeature||(Ye.DynamicFeature={}));var gi=class{constructor(e){this._client=e}getState(){let e=this.getDocumentSelectors(),t=0;for(let i of e){t++;for(let s of hr.workspace.textDocuments)if(hr.languages.match(i,s)>0)return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!0}}let r=t>0;return{kind:"document",id:this.registrationType.method,registrations:r,matches:!1}}};Ye.DynamicDocumentFeature=gi;var _c=class extends gi{constructor(e,t,r,i,s,o,a){super(e),this._event=t,this._type=r,this._middleware=i,this._createParams=s,this._textDocument=o,this._selectorFilter=a,this._selectors=new Map,this._onNotificationSent=new hr.EventEmitter}static textDocumentFilter(e,t){for(let r of e)if(hr.languages.match(r,t)>0)return!0;return!1}getStateInfo(){return[this._selectors.values(),!1]}getDocumentSelectors(){return this._selectors.values()}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=this._event(t=>{this.callback(t).catch(r=>{this._client.error(`Sending document notification ${this._type.method} failed.`,r)})})),this._selectors.set(e.id,this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)))}async callback(e){let t=async r=>{let i=this._createParams(r);await this._client.sendNotification(this._type,i),this.notificationSent(this.getTextDocument(r),this._type,i)};if(this.matches(e)){let r=this._middleware();return r?r(e,i=>t(i)):t(e)}}matches(e){return this._client.hasDedicatedTextSynchronizationFeature(this._textDocument(e))?!1:!this._selectorFilter||this._selectorFilter(this._selectors.values(),e)}get onNotificationSent(){return this._onNotificationSent.event}notificationSent(e,t,r){this._onNotificationSent.fire({textDocument:e,type:t,params:r})}unregister(e){this._selectors.delete(e),this._selectors.size===0&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._selectors.clear(),this._onNotificationSent.dispose(),this._listener&&(this._listener.dispose(),this._listener=void 0)}getProvider(e){for(let t of this._selectors.values())if(hr.languages.match(t,e)>0)return{send:r=>this.callback(r)}}};Ye.TextDocumentEventFeature=_c;var Rc=class extends gi{constructor(e,t){super(e),this._registrationType=t,this._registrations=new Map}*getDocumentSelectors(){for(let e of this._registrations.values()){let t=e.data.registerOptions.documentSelector;t!==null&&(yield this._client.protocol2CodeConverter.asDocumentSelector(t))}}get registrationType(){return this._registrationType}register(e){if(!e.registerOptions.documentSelector)return;let t=this.registerLanguageProvider(e.registerOptions,e.id);this._registrations.set(e.id,{disposable:t[0],data:e,provider:t[1]})}unregister(e){let t=this._registrations.get(e);t!==void 0&&t.disposable.dispose()}dispose(){this._registrations.forEach(e=>{e.disposable.dispose()}),this._registrations.clear()}getRegistration(e,t){if(t){if(Cc.TextDocumentRegistrationOptions.is(t)){let r=Cc.StaticRegistrationOptions.hasId(t)?t.id:Pf.generateUuid(),i=t.documentSelector??e;if(i)return[r,Object.assign({},t,{documentSelector:i})]}else if(Rt.boolean(t)&&t===!0||Cc.WorkDoneProgressOptions.is(t)){if(!e)return[void 0,void 0];let r=Rt.boolean(t)&&t===!0?{documentSelector:e}:Object.assign({},t,{documentSelector:e});return[Pf.generateUuid(),r]}}else return[void 0,void 0];return[void 0,void 0]}getRegistrationOptions(e,t){if(!(!e||!t))return Rt.boolean(t)&&t===!0?{documentSelector:e}:Object.assign({},t,{documentSelector:e})}getProvider(e){for(let t of this._registrations.values()){let r=t.data.registerOptions.documentSelector;if(r!==null&&hr.languages.match(this._client.protocol2CodeConverter.asDocumentSelector(r),e)>0)return t.provider}}getAllProviders(){let e=[];for(let t of this._registrations.values())e.push(t.provider);return e}};Ye.TextDocumentLanguageFeature=Rc;var bc=class{constructor(e,t){this._client=e,this._registrationType=t,this._registrations=new Map}getState(){let e=this._registrations.size>0;return{kind:"workspace",id:this._registrationType.method,registrations:e}}get registrationType(){return this._registrationType}register(e){let t=this.registerLanguageProvider(e.registerOptions);this._registrations.set(e.id,{disposable:t[0],provider:t[1]})}unregister(e){let t=this._registrations.get(e);t!==void 0&&t.disposable.dispose()}dispose(){this._registrations.forEach(e=>{e.disposable.dispose()}),this._registrations.clear()}getProviders(){let e=[];for(let t of this._registrations.values())e.push(t.provider);return e}};Ye.WorkspaceFeature=bc});var qf=I((Kb,Ef)=>{var mC=typeof process=="object"&&process&&process.platform==="win32";Ef.exports=mC?{sep:"\\"}:{sep:"/"}});var Ff=I((zb,xf)=>{"use strict";xf.exports=If;function If(n,e,t){n instanceof RegExp&&(n=kf(n,t)),e instanceof RegExp&&(e=kf(e,t));var r=Of(n,e,t);return r&&{start:r[0],end:r[1],pre:t.slice(0,r[0]),body:t.slice(r[0]+n.length,r[1]),post:t.slice(r[1]+e.length)}}function kf(n,e){var t=e.match(n);return t?t[0]:null}If.range=Of;function Of(n,e,t){var r,i,s,o,a,u=t.indexOf(n),h=t.indexOf(e,u+1),m=u;if(u>=0&&h>0){if(n===e)return[u,h];for(r=[],s=t.length;m>=0&&!a;)m==u?(r.push(m),u=t.indexOf(n,m+1)):r.length==1?a=[r.pop(),h]:(i=r.pop(),i=0?u:h;r.length&&(a=[s,o])}return a}});var Uf=I((Vb,Hf)=>{var Nf=Ff();Hf.exports=CC;var Mf="\0SLASH"+Math.random()+"\0",Lf="\0OPEN"+Math.random()+"\0",Sc="\0CLOSE"+Math.random()+"\0",Af="\0COMMA"+Math.random()+"\0",jf="\0PERIOD"+Math.random()+"\0";function wc(n){return parseInt(n,10)==n?parseInt(n,10):n.charCodeAt(0)}function yC(n){return n.split("\\\\").join(Mf).split("\\{").join(Lf).split("\\}").join(Sc).split("\\,").join(Af).split("\\.").join(jf)}function vC(n){return n.split(Mf).join("\\").split(Lf).join("{").split(Sc).join("}").split(Af).join(",").split(jf).join(".")}function $f(n){if(!n)return[""];var e=[],t=Nf("{","}",n);if(!t)return n.split(",");var r=t.pre,i=t.body,s=t.post,o=r.split(",");o[o.length-1]+="{"+i+"}";var a=$f(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function CC(n){return n?(n.substr(0,2)==="{}"&&(n="\\{\\}"+n.substr(2)),mi(yC(n),!0).map(vC)):[]}function DC(n){return"{"+n+"}"}function _C(n){return/^-?0\d/.test(n)}function RC(n,e){return n<=e}function bC(n,e){return n>=e}function mi(n,e){var t=[],r=Nf("{","}",n);if(!r)return[n];var i=r.pre,s=r.post.length?mi(r.post,!1):[""];if(/\$$/.test(r.pre))for(var o=0;o=0;if(!m&&!C)return r.post.match(/,(?!,).*\}/)?(n=r.pre+"{"+r.body+Sc+r.post,mi(n)):[n];var y;if(m)y=r.body.split(/\.\./);else if(y=$f(r.body),y.length===1&&(y=mi(y[0],!1).map(DC),y.length===1))return s.map(function(Ge){return r.pre+y[0]+Ge});var S;if(m){var v=wc(y[0]),E=wc(y[1]),q=Math.max(y[0].length,y[1].length),N=y.length==3?Math.abs(wc(y[2])):1,L=RC,M=E0){var ee=new Array(B+1).join("0");J<0?fe="-"+ee+fe.slice(1):fe=ee+fe}}S.push(fe)}}else{S=[];for(var ue=0;ue{var Lt=kc.exports=(n,e,t={})=>(gs(e),!t.nocomment&&e.charAt(0)==="#"?!1:new Nr(e,t).match(n));kc.exports=Lt;var Ec=qf();Lt.sep=Ec.sep;var sn=Symbol("globstar **");Lt.GLOBSTAR=sn;var wC=Uf(),Wf={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},qc="[^/]",Tc=qc+"*?",SC="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",TC="(?:(?!(?:\\/|^)\\.).)*?",Vf=n=>n.split("").reduce((e,t)=>(e[t]=!0,e),{}),Kf=Vf("().*{}+?[]^$\\!"),PC=Vf("[.("),zf=/\/+/;Lt.filter=(n,e={})=>(t,r,i)=>Lt(t,n,e);var Qn=(n,e={})=>{let t={};return Object.keys(n).forEach(r=>t[r]=n[r]),Object.keys(e).forEach(r=>t[r]=e[r]),t};Lt.defaults=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return Lt;let e=Lt,t=(r,i,s)=>e(r,i,Qn(n,s));return t.Minimatch=class extends e.Minimatch{constructor(i,s){super(i,Qn(n,s))}},t.Minimatch.defaults=r=>e.defaults(Qn(n,r)).Minimatch,t.filter=(r,i)=>e.filter(r,Qn(n,i)),t.defaults=r=>e.defaults(Qn(n,r)),t.makeRe=(r,i)=>e.makeRe(r,Qn(n,i)),t.braceExpand=(r,i)=>e.braceExpand(r,Qn(n,i)),t.match=(r,i,s)=>e.match(r,i,Qn(n,s)),t};Lt.braceExpand=(n,e)=>Bf(n,e);var Bf=(n,e={})=>(gs(n),e.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:wC(n)),EC=1024*64,gs=n=>{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>EC)throw new TypeError("pattern is too long")},Pc=Symbol("subparse");Lt.makeRe=(n,e)=>new Nr(n,e||{}).makeRe();Lt.match=(n,e,t={})=>{let r=new Nr(e,t);return n=n.filter(i=>r.match(i)),r.options.nonull&&!n.length&&n.push(e),n};var qC=n=>n.replace(/\\(.)/g,"$1"),kC=n=>n.replace(/\\([^-\]])/g,"$1"),IC=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),OC=n=>n.replace(/[[\]\\]/g,"\\$&"),Nr=class{constructor(e,t){gs(e),t||(t={}),this.options=t,this.set=[],this.pattern=e,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.make()}debug(){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();let r=this.globSet=this.braceExpand();t.debug&&(this.debug=(...i)=>console.error(...i)),this.debug(this.pattern,r),r=this.globParts=r.map(i=>i.split(zf)),this.debug(this.pattern,r),r=r.map((i,s,o)=>i.map(this.parse,this)),this.debug(this.pattern,r),r=r.filter(i=>i.indexOf(!1)===-1),this.debug(this.pattern,r),this.set=r}parseNegate(){if(this.options.nonegate)return;let e=this.pattern,t=!1,r=0;for(let i=0;i>> no match, partial?`,e,C,t,y),C===a))}var v;if(typeof h=="string"?(v=m===h,this.debug("string match",h,m,v)):(v=m.match(h),this.debug("pattern match",h,m,v)),!v)return!1}if(s===a&&o===u)return!0;if(s===a)return r;if(o===u)return s===a-1&&e[s]==="";throw new Error("wtf?")}braceExpand(){return Bf(this.pattern,this.options)}parse(e,t){gs(e);let r=this.options;if(e==="**")if(r.noglobstar)e="*";else return sn;if(e==="")return"";let i="",s=!1,o=!1,a=[],u=[],h,m=!1,C=-1,y=-1,S,v,E,q=e.charAt(0)===".",N=r.dot||q,L=()=>q?"":N?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",M=B=>B.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",U=()=>{if(h){switch(h){case"*":i+=Tc,s=!0;break;case"?":i+=qc,s=!0;break;default:i+="\\"+h;break}this.debug("clearStateChar %j %j",h,i),h=!1}};for(let B=0,ee;B(Ve||(Ve="\\"),Ge+Ge+Ve+"|")),this.debug(`tail=%j
+ %s`,B,B,v,i);let ee=v.type==="*"?Tc:v.type==="?"?qc:"\\"+v.type;s=!0,i=i.slice(0,v.reStart)+ee+"\\("+B}U(),o&&(i+="\\\\");let J=PC[i.charAt(0)];for(let B=u.length-1;B>-1;B--){let ee=u[B],ue=i.slice(0,ee.reStart),Ge=i.slice(ee.reStart,ee.reEnd-8),Ve=i.slice(ee.reEnd),Ze=i.slice(ee.reEnd-8,ee.reEnd)+Ve,Bt=ue.split(")").length,pt=ue.split("(").length-Bt,nt=Ve;for(let cn=0;cn(o=o.map(a=>typeof a=="string"?IC(a):a===sn?sn:a._src).reduce((a,u)=>(a[a.length-1]===sn&&u===sn||a.push(u),a),[]),o.forEach((a,u)=>{a!==sn||o[u-1]===sn||(u===0?o.length>1?o[u+1]="(?:\\/|"+r+"\\/)?"+o[u+1]:o[u]=r:u===o.length-1?o[u-1]+="(?:\\/|"+r+")?":(o[u-1]+="(?:\\/|\\/"+r+"\\/)"+o[u+1],o[u+1]=sn))}),o.filter(a=>a!==sn).join("/"))).join("|");s="^(?:"+s+")$",this.negate&&(s="^(?!"+s+").*$");try{this.regexp=new RegExp(s,i)}catch{this.regexp=!1}return this.regexp}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let r=this.options;Ec.sep!=="/"&&(e=e.split(Ec.sep).join("/")),e=e.split(zf),this.debug(this.pattern,"split",e);let i=this.set;this.debug(this.pattern,"set",i);let s;for(let o=e.length-1;o>=0&&(s=e[o],!s);o--);for(let o=0;o{"use strict";Object.defineProperty(gn,"__esModule",{value:!0});gn.DiagnosticFeature=gn.DiagnosticPullMode=gn.vsdiag=void 0;var xC=ms(),pe=require("vscode"),Ke=ne(),FC=je(),Ic=me();function ys(n,e){return n[e]===void 0&&(n[e]={}),n[e]}var on;(function(n){let e;(function(t){t.full="full",t.unChanged="unChanged"})(e=n.DocumentDiagnosticReportKind||(n.DocumentDiagnosticReportKind={}))})(on=gn.vsdiag||(gn.vsdiag={}));var Oc;(function(n){n.onType="onType",n.onSave="onSave"})(Oc=gn.DiagnosticPullMode||(gn.DiagnosticPullMode={}));var dt;(function(n){n.active="open",n.reschedule="reschedule",n.outDated="drop"})(dt||(dt={}));var xc=class n{constructor(){this.open=new Set,this._onOpen=new pe.EventEmitter,this._onClose=new pe.EventEmitter,n.fillTabResources(this.open);let e=t=>{if(t.closed.length===0&&t.opened.length===0)return;let r=this.open,i=new Set;n.fillTabResources(i);let s=new Set,o=new Set(i);for(let a of r.values())i.has(a)?o.delete(a):s.add(a);if(this.open=i,s.size>0){let a=new Set;for(let u of s)a.add(pe.Uri.parse(u));this._onClose.fire(a)}if(o.size>0){let a=new Set;for(let u of o)a.add(pe.Uri.parse(u));this._onOpen.fire(a)}};pe.window.tabGroups.onDidChangeTabs!==void 0?this.disposable=pe.window.tabGroups.onDidChangeTabs(e):this.disposable={dispose:()=>{}}}get onClose(){return this._onClose.event}get onOpen(){return this._onOpen.event}dispose(){this.disposable.dispose()}isActive(e){return e instanceof pe.Uri?pe.window.activeTextEditor?.document.uri===e:pe.window.activeTextEditor?.document===e}isVisible(e){let t=e instanceof pe.Uri?e:e.uri;return this.open.has(t.toString())}getTabResources(){let e=new Set;return n.fillTabResources(new Set,e),e}static fillTabResources(e,t){let r=e??new Set;for(let i of pe.window.tabGroups.all)for(let s of i.tabs){let o=s.input,a;o instanceof pe.TabInputText?a=o.uri:o instanceof pe.TabInputTextDiff&&(a=o.modified),a!==void 0&&!r.has(a.toString())&&(r.add(a.toString()),t!==void 0&&t.add(a))}}},tt;(function(n){n[n.document=1]="document",n[n.workspace=2]="workspace"})(tt||(tt={}));var In;(function(n){function e(t){return t instanceof pe.Uri?t.toString():t.uri.toString()}n.asKey=e})(In||(In={}));var Fc=class{constructor(){this.documentPullStates=new Map,this.workspacePullStates=new Map}track(e,t,r){let i=e===tt.document?this.documentPullStates:this.workspacePullStates,[s,o,a]=t instanceof pe.Uri?[t.toString(),t,r]:[t.uri.toString(),t.uri,t.version],u=i.get(s);return u===void 0&&(u={document:o,pulledVersion:a,resultId:void 0},i.set(s,u)),u}update(e,t,r,i){let s=e===tt.document?this.documentPullStates:this.workspacePullStates,[o,a,u,h]=t instanceof pe.Uri?[t.toString(),t,r,i]:[t.uri.toString(),t.uri,t.version,r],m=s.get(o);m===void 0?(m={document:a,pulledVersion:u,resultId:h},s.set(o,m)):(m.pulledVersion=u,m.resultId=h)}unTrack(e,t){let r=In.asKey(t);(e===tt.document?this.documentPullStates:this.workspacePullStates).delete(r)}tracks(e,t){let r=In.asKey(t);return(e===tt.document?this.documentPullStates:this.workspacePullStates).has(r)}getResultId(e,t){let r=In.asKey(t);return(e===tt.document?this.documentPullStates:this.workspacePullStates).get(r)?.resultId}getAllResultIds(){let e=[];for(let[t,r]of this.workspacePullStates)this.documentPullStates.has(t)&&(r=this.documentPullStates.get(t)),r.resultId!==void 0&&e.push({uri:t,value:r.resultId});return e}},Nc=class{constructor(e,t,r){this.client=e,this.tabs=t,this.options=r,this.isDisposed=!1,this.onDidChangeDiagnosticsEmitter=new pe.EventEmitter,this.provider=this.createProvider(),this.diagnostics=pe.languages.createDiagnosticCollection(r.identifier),this.openRequests=new Map,this.documentStates=new Fc,this.workspaceErrorCounter=0}knows(e,t){let r=t instanceof pe.Uri?t:t.uri;return this.documentStates.tracks(e,t)||this.openRequests.has(r.toString())}forget(e,t){this.documentStates.unTrack(e,t)}pull(e,t){if(this.isDisposed)return;let r=e instanceof pe.Uri?e:e.uri;this.pullAsync(e).then(()=>{t&&t()},i=>{this.client.error(`Document pull failed for text document ${r.toString()}`,i,!1)})}async pullAsync(e,t){if(this.isDisposed)return;let r=e instanceof pe.Uri,i=r?e:e.uri,s=i.toString();t=r?t:e.version;let o=this.openRequests.get(s),a=r?this.documentStates.track(tt.document,e,t):this.documentStates.track(tt.document,e);if(o===void 0){let u=new pe.CancellationTokenSource;this.openRequests.set(s,{state:dt.active,document:e,version:t,tokenSource:u});let h,m;try{h=await this.provider.provideDiagnostics(e,a.resultId,u.token)??{kind:on.DocumentDiagnosticReportKind.full,items:[]}}catch(C){if(C instanceof Ic.LSPCancellationError&&Ke.DiagnosticServerCancellationData.is(C.data)&&C.data.retriggerRequest===!1&&(m={state:dt.outDated,document:e}),m===void 0&&C instanceof pe.CancellationError)m={state:dt.reschedule,document:e};else throw C}if(m=m??this.openRequests.get(s),m===void 0){this.client.error(`Lost request state in diagnostic pull model. Clearing diagnostics for ${s}`),this.diagnostics.delete(i);return}if(this.openRequests.delete(s),!this.tabs.isVisible(e)){this.documentStates.unTrack(tt.document,e);return}if(m.state===dt.outDated)return;h!==void 0&&(h.kind===on.DocumentDiagnosticReportKind.full&&this.diagnostics.set(i,h.items),a.pulledVersion=t,a.resultId=h.resultId),m.state===dt.reschedule&&this.pull(e)}else o.state===dt.active?(o.tokenSource.cancel(),this.openRequests.set(s,{state:dt.reschedule,document:o.document})):o.state===dt.outDated&&this.openRequests.set(s,{state:dt.reschedule,document:o.document})}forgetDocument(e){let t=e instanceof pe.Uri?e:e.uri,r=t.toString(),i=this.openRequests.get(r);this.options.workspaceDiagnostics?i!==void 0?this.openRequests.set(r,{state:dt.reschedule,document:e}):this.pull(e,()=>{this.forget(tt.document,e)}):(i!==void 0&&(i.state===dt.active&&i.tokenSource.cancel(),this.openRequests.set(r,{state:dt.outDated,document:e})),this.diagnostics.delete(t),this.forget(tt.document,e))}pullWorkspace(){this.isDisposed||this.pullWorkspaceAsync().then(()=>{this.workspaceTimeout=(0,Ke.RAL)().timer.setTimeout(()=>{this.pullWorkspace()},2e3)},e=>{!(e instanceof Ic.LSPCancellationError)&&!Ke.DiagnosticServerCancellationData.is(e.data)&&(this.client.error("Workspace diagnostic pull failed.",e,!1),this.workspaceErrorCounter++),this.workspaceErrorCounter<=5&&(this.workspaceTimeout=(0,Ke.RAL)().timer.setTimeout(()=>{this.pullWorkspace()},2e3))})}async pullWorkspaceAsync(){if(!this.provider.provideWorkspaceDiagnostics||this.isDisposed)return;this.workspaceCancellation!==void 0&&(this.workspaceCancellation.cancel(),this.workspaceCancellation=void 0),this.workspaceCancellation=new pe.CancellationTokenSource;let e=this.documentStates.getAllResultIds().map(t=>({uri:this.client.protocol2CodeConverter.asUri(t.uri),value:t.value}));await this.provider.provideWorkspaceDiagnostics(e,this.workspaceCancellation.token,t=>{if(!(!t||this.isDisposed))for(let r of t.items)r.kind===on.DocumentDiagnosticReportKind.full&&(this.documentStates.tracks(tt.document,r.uri)||this.diagnostics.set(r.uri,r.items)),this.documentStates.update(tt.workspace,r.uri,r.version??void 0,r.resultId)})}createProvider(){let e={onDidChangeDiagnostics:this.onDidChangeDiagnosticsEmitter.event,provideDiagnostics:(t,r,i)=>{let s=(a,u,h)=>{let m={identifier:this.options.identifier,textDocument:{uri:this.client.code2ProtocolConverter.asUri(a instanceof pe.Uri?a:a.uri)},previousResultId:u};return this.isDisposed===!0||!this.client.isRunning()?{kind:on.DocumentDiagnosticReportKind.full,items:[]}:this.client.sendRequest(Ke.DocumentDiagnosticRequest.type,m,h).then(async C=>C==null||this.isDisposed||h.isCancellationRequested?{kind:on.DocumentDiagnosticReportKind.full,items:[]}:C.kind===Ke.DocumentDiagnosticReportKind.Full?{kind:on.DocumentDiagnosticReportKind.full,resultId:C.resultId,items:await this.client.protocol2CodeConverter.asDiagnostics(C.items,h)}:{kind:on.DocumentDiagnosticReportKind.unChanged,resultId:C.resultId},C=>this.client.handleFailedRequest(Ke.DocumentDiagnosticRequest.type,h,C,{kind:on.DocumentDiagnosticReportKind.full,items:[]}))},o=this.client.middleware;return o.provideDiagnostics?o.provideDiagnostics(t,r,i,s):s(t,r,i)}};return this.options.workspaceDiagnostics&&(e.provideWorkspaceDiagnostics=(t,r,i)=>{let s=async h=>h.kind===Ke.DocumentDiagnosticReportKind.Full?{kind:on.DocumentDiagnosticReportKind.full,uri:this.client.protocol2CodeConverter.asUri(h.uri),resultId:h.resultId,version:h.version,items:await this.client.protocol2CodeConverter.asDiagnostics(h.items,r)}:{kind:on.DocumentDiagnosticReportKind.unChanged,uri:this.client.protocol2CodeConverter.asUri(h.uri),resultId:h.resultId,version:h.version},o=h=>{let m=[];for(let C of h)m.push({uri:this.client.code2ProtocolConverter.asUri(C.uri),value:C.value});return m},a=(h,m)=>{let C=(0,FC.generateUuid)(),y=this.client.onProgress(Ke.WorkspaceDiagnosticRequest.partialResult,C,async v=>{if(v==null){i(null);return}let E={items:[]};for(let q of v.items)try{E.items.push(await s(q))}catch(N){this.client.error("Converting workspace diagnostics failed.",N)}i(E)}),S={identifier:this.options.identifier,previousResultIds:o(h),partialResultToken:C};return this.isDisposed===!0||!this.client.isRunning()?{items:[]}:this.client.sendRequest(Ke.WorkspaceDiagnosticRequest.type,S,m).then(async v=>{if(m.isCancellationRequested)return{items:[]};let E={items:[]};for(let q of v.items)E.items.push(await s(q));return y.dispose(),i(E),{items:[]}},v=>(y.dispose(),this.client.handleFailedRequest(Ke.DocumentDiagnosticRequest.type,m,v,{items:[]})))},u=this.client.middleware;return u.provideWorkspaceDiagnostics?u.provideWorkspaceDiagnostics(t,r,i,a):a(t,r,i)}),e}dispose(){this.isDisposed=!0,this.workspaceCancellation?.cancel(),this.workspaceTimeout?.dispose();for(let[e,t]of this.openRequests)t.state===dt.active&&t.tokenSource.cancel(),this.openRequests.set(e,{state:dt.outDated,document:t.document});this.diagnostics.dispose()}},Mc=class{constructor(e){this.diagnosticRequestor=e,this.documents=new Ke.LinkedMap,this.isDisposed=!1}add(e){if(this.isDisposed===!0)return;let t=In.asKey(e);this.documents.has(t)||(this.documents.set(t,e,Ke.Touch.Last),this.trigger())}remove(e){let t=In.asKey(e);this.documents.delete(t),this.documents.size===0?this.stop():t===this.endDocumentKey()&&(this.endDocument=this.documents.last)}trigger(){if(this.isDisposed!==!0){if(this.intervalHandle!==void 0){this.endDocument=this.documents.last;return}this.endDocument=this.documents.last,this.intervalHandle=(0,Ke.RAL)().timer.setInterval(()=>{let e=this.documents.first;if(e!==void 0){let t=In.asKey(e);this.diagnosticRequestor.pull(e),this.documents.set(t,e,Ke.Touch.Last),t===this.endDocumentKey()&&this.stop()}},200)}}dispose(){this.isDisposed=!0,this.stop(),this.documents.clear()}stop(){this.intervalHandle?.dispose(),this.intervalHandle=void 0,this.endDocument=void 0}endDocumentKey(){return this.endDocument!==void 0?In.asKey(this.endDocument):void 0}},Lc=class{constructor(e,t,r){let i=e.clientOptions.diagnosticPullOptions??{onChange:!0,onSave:!1},s=e.protocol2CodeConverter.asDocumentSelector(r.documentSelector),o=[],a=v=>{let E=r.documentSelector;if(i.match!==void 0)return i.match(E,v);for(let q of E)if(Ke.TextDocumentFilter.is(q)){if(typeof q=="string"||q.language!==void 0&&q.language!=="*"||q.scheme!==void 0&&q.scheme!=="*"&&q.scheme!==v.scheme)return!1;if(q.pattern!==void 0){let N=new xC.Minimatch(q.pattern,{noext:!0});if(!N.makeRe()||!N.match(v.fsPath))return!1}}return!0},u=v=>v instanceof pe.Uri?a(v):pe.languages.match(s,v)>0&&t.isVisible(v),h=v=>v instanceof pe.Uri?this.activeTextDocument?.uri.toString()===v.toString():this.activeTextDocument===v;this.diagnosticRequestor=new Nc(e,t,r),this.backgroundScheduler=new Mc(this.diagnosticRequestor);let m=v=>{!u(v)||!r.interFileDependencies||h(v)||this.backgroundScheduler.add(v)};this.activeTextDocument=pe.window.activeTextEditor?.document,pe.window.onDidChangeActiveTextEditor(v=>{let E=this.activeTextDocument;this.activeTextDocument=v?.document,E!==void 0&&m(E),this.activeTextDocument!==void 0&&this.backgroundScheduler.remove(this.activeTextDocument)});let C=e.getFeature(Ke.DidOpenTextDocumentNotification.method);o.push(C.onNotificationSent(v=>{let E=v.textDocument;this.diagnosticRequestor.knows(tt.document,E)||u(E)&&this.diagnosticRequestor.pull(E,()=>{m(E)})})),t.onOpen(v=>{for(let E of v){if(this.diagnosticRequestor.knows(tt.document,E))continue;let q=E.toString(),N;for(let L of pe.workspace.textDocuments)if(q===L.uri.toString()){N=L;break}N!==void 0&&u(N)?this.diagnosticRequestor.pull(N,()=>{m(N)}):u(E)&&this.diagnosticRequestor.pull(E,()=>{m(E)})}});let y=new Set;for(let v of pe.workspace.textDocuments)u(v)&&(this.diagnosticRequestor.pull(v,()=>{m(v)}),y.add(v.uri.toString()));if(i.onTabs===!0)for(let v of t.getTabResources())!y.has(v.toString())&&u(v)&&this.diagnosticRequestor.pull(v,()=>{m(v)});if(i.onChange===!0){let v=e.getFeature(Ke.DidChangeTextDocumentNotification.method);o.push(v.onNotificationSent(async E=>{let q=E.textDocument;(i.filter===void 0||!i.filter(q,Oc.onType))&&this.diagnosticRequestor.knows(tt.document,q)&&this.diagnosticRequestor.pull(q,()=>{this.backgroundScheduler.trigger()})}))}if(i.onSave===!0){let v=e.getFeature(Ke.DidSaveTextDocumentNotification.method);o.push(v.onNotificationSent(E=>{let q=E.textDocument;(i.filter===void 0||!i.filter(q,Oc.onSave))&&this.diagnosticRequestor.knows(tt.document,q)&&this.diagnosticRequestor.pull(E.textDocument,()=>{this.backgroundScheduler.trigger()})}))}let S=e.getFeature(Ke.DidCloseTextDocumentNotification.method);o.push(S.onNotificationSent(v=>{this.cleanUpDocument(v.textDocument)})),t.onClose(v=>{for(let E of v)this.cleanUpDocument(E)}),this.diagnosticRequestor.onDidChangeDiagnosticsEmitter.event(()=>{for(let v of pe.workspace.textDocuments)u(v)&&this.diagnosticRequestor.pull(v)}),r.workspaceDiagnostics===!0&&r.identifier!=="da348dc5-c30a-4515-9d98-31ff3be38d14"&&this.diagnosticRequestor.pullWorkspace(),this.disposable=pe.Disposable.from(...o,this.backgroundScheduler,this.diagnosticRequestor)}get onDidChangeDiagnosticsEmitter(){return this.diagnosticRequestor.onDidChangeDiagnosticsEmitter}get diagnostics(){return this.diagnosticRequestor.provider}cleanUpDocument(e){this.diagnosticRequestor.knows(tt.document,e)&&(this.diagnosticRequestor.forgetDocument(e),this.backgroundScheduler.remove(e))}},Ac=class extends Ic.TextDocumentLanguageFeature{constructor(e){super(e,Ke.DocumentDiagnosticRequest.type)}fillClientCapabilities(e){let t=ys(ys(e,"textDocument"),"diagnostic");t.dynamicRegistration=!0,t.relatedDocumentSupport=!1,ys(ys(e,"workspace"),"diagnostics").refreshSupport=!0}initialize(e,t){this._client.onRequest(Ke.DiagnosticRefreshRequest.type,async()=>{for(let o of this.getAllProviders())o.onDidChangeDiagnosticsEmitter.fire()});let[i,s]=this.getRegistration(t,e.diagnosticProvider);!i||!s||this.register({id:i,registerOptions:s})}dispose(){this.tabs!==void 0&&(this.tabs.dispose(),this.tabs=void 0),super.dispose()}registerLanguageProvider(e){this.tabs===void 0&&(this.tabs=new xc);let t=new Lc(this._client,this.tabs,e);return[t.disposable,t]}};gn.DiagnosticFeature=Ac});var Qf=I(_s=>{"use strict";Object.defineProperty(_s,"__esModule",{value:!0});_s.NotebookDocumentSyncFeature=void 0;var lt=require("vscode"),NC=ms(),On=ne(),MC=je(),Gf=Ut();function Xf(n,e){return n[e]===void 0&&(n[e]={}),n[e]}var Mr;(function(n){let e;(function(t){function r(y,S){return{version:y.version,uri:S.asUri(y.uri)}}t.asVersionedNotebookDocumentIdentifier=r;function i(y,S,v){let E=On.NotebookDocument.create(v.asUri(y.uri),y.notebookType,y.version,s(S,v));return Object.keys(y.metadata).length>0&&(E.metadata=o(y.metadata)),E}t.asNotebookDocument=i;function s(y,S){return y.map(v=>a(v,S))}t.asNotebookCells=s;function o(y){return h(new Set,y)}t.asMetadata=o;function a(y,S){let v=On.NotebookCell.create(u(y.kind),S.asUri(y.document.uri));return Object.keys(y.metadata).length>0&&(v.metadata=o(y.metadata)),y.executionSummary!==void 0&&Gf.number(y.executionSummary.executionOrder)&&Gf.boolean(y.executionSummary.success)&&(v.executionSummary={executionOrder:y.executionSummary.executionOrder,success:y.executionSummary.success}),v}t.asNotebookCell=a;function u(y){switch(y){case lt.NotebookCellKind.Markup:return On.NotebookCellKind.Markup;case lt.NotebookCellKind.Code:return On.NotebookCellKind.Code}}function h(y,S){if(y.has(S))throw new Error("Can't deep copy cyclic structures.");if(Array.isArray(S)){let v=[];for(let E of S)if(E!==null&&typeof E=="object"||Array.isArray(E))v.push(h(y,E));else{if(E instanceof RegExp)throw new Error("Can't transfer regular expressions to the server");v.push(E)}return v}else{let v=Object.keys(S),E=Object.create(null);for(let q of v){let N=S[q];if(N!==null&&typeof N=="object"||Array.isArray(N))E[q]=h(y,N);else{if(N instanceof RegExp)throw new Error("Can't transfer regular expressions to the server");E[q]=N}}return E}}function m(y,S){let v=S.asChangeTextDocumentParams(y,y.document.uri,y.document.version);return{document:v.textDocument,changes:v.contentChanges}}t.asTextContentChange=m;function C(y,S){let v=Object.create(null);if(y.metadata&&(v.metadata=n.c2p.asMetadata(y.metadata)),y.cells!==void 0){let E=Object.create(null),q=y.cells;q.structure&&(E.structure={array:{start:q.structure.array.start,deleteCount:q.structure.array.deleteCount,cells:q.structure.array.cells!==void 0?q.structure.array.cells.map(N=>n.c2p.asNotebookCell(N,S)):void 0},didOpen:q.structure.didOpen!==void 0?q.structure.didOpen.map(N=>S.asOpenTextDocumentParams(N.document).textDocument):void 0,didClose:q.structure.didClose!==void 0?q.structure.didClose.map(N=>S.asCloseTextDocumentParams(N.document).textDocument):void 0}),q.data!==void 0&&(E.data=q.data.map(N=>n.c2p.asNotebookCell(N,S))),q.textContent!==void 0&&(E.textContent=q.textContent.map(N=>n.c2p.asTextContentChange(N,S))),Object.keys(E).length>0&&(v.cells=E)}return v}t.asNotebookDocumentChangeEvent=C})(e=n.c2p||(n.c2p={}))})(Mr||(Mr={}));var $c;(function(n){function e(a,u,h){let m=a.length,C=u.length,y=0;for(;y=0&&v>=0&&t(a[S],u[v],h);)S--,v--;let E=S+1-y,q=y===v+1?void 0:u.slice(y,v+1);return q!==void 0?{start:y,deleteCount:E,cells:q}:{start:y,deleteCount:E}}else return yr.document.uri.toString()))}}n.create=e})(Cs||(Cs={}));var Lr=class{constructor(e,t){this.client=e,this.options=t,this.notebookSyncInfo=new Map,this.notebookDidOpen=new Set,this.disposables=[],this.selector=e.protocol2CodeConverter.asDocumentSelector(vs.asDocumentSelector(t)),lt.workspace.onDidOpenNotebookDocument(r=>{this.notebookDidOpen.add(r.uri.toString()),this.didOpen(r)},void 0,this.disposables);for(let r of lt.workspace.notebookDocuments)this.notebookDidOpen.add(r.uri.toString()),this.didOpen(r);lt.workspace.onDidChangeNotebookDocument(r=>this.didChangeNotebookDocument(r),void 0,this.disposables),this.options.save===!0&<.workspace.onDidSaveNotebookDocument(r=>this.didSave(r),void 0,this.disposables),lt.workspace.onDidCloseNotebookDocument(r=>{this.didClose(r),this.notebookDidOpen.delete(r.uri.toString())},void 0,this.disposables)}getState(){for(let e of lt.workspace.notebookDocuments)if(this.getMatchingCells(e)!==void 0)return{kind:"document",id:"$internal",registrations:!0,matches:!0};return{kind:"document",id:"$internal",registrations:!0,matches:!1}}get mode(){return"notebook"}handles(e){return lt.languages.match(this.selector,e)>0}didOpenNotebookCellTextDocument(e,t){if(lt.languages.match(this.selector,t.document)===0||!this.notebookDidOpen.has(e.uri.toString()))return;let r=this.notebookSyncInfo.get(e.uri.toString()),i=this.cellMatches(e,t);if(r!==void 0){let s=r.uris.has(t.document.uri.toString());if(i&&s||!i&&!s)return;if(i){let o=this.getMatchingCells(e);if(o!==void 0){let a=this.asNotebookDocumentChangeEvent(e,void 0,r,o);a!==void 0&&this.doSendChange(a,o).catch(()=>{})}}}else i&&this.doSendOpen(e,[t]).catch(()=>{})}didChangeNotebookCellTextDocument(e,t){lt.languages.match(this.selector,t.document)!==0&&this.doSendChange({notebook:e,cells:{textContent:[t]}},void 0).catch(()=>{})}didCloseNotebookCellTextDocument(e,t){let r=this.notebookSyncInfo.get(e.uri.toString());if(r===void 0)return;let i=t.document.uri,s=r.cells.findIndex(o=>o.document.uri.toString()===i.toString());if(s!==-1)if(s===0&&r.cells.length===1)this.doSendClose(e,r.cells).catch(()=>{});else{let o=r.cells.slice(),a=o.splice(s,1);this.doSendChange({notebook:e,cells:{structure:{array:{start:s,deleteCount:1},didClose:a}}},o).catch(()=>{})}}dispose(){for(let e of this.disposables)e.dispose()}didOpen(e,t=this.getMatchingCells(e),r=this.notebookSyncInfo.get(e.uri.toString())){if(r!==void 0)if(t!==void 0){let i=this.asNotebookDocumentChangeEvent(e,void 0,r,t);i!==void 0&&this.doSendChange(i,t).catch(()=>{})}else this.doSendClose(e,[]).catch(()=>{});else{if(t===void 0)return;this.doSendOpen(e,t).catch(()=>{})}}didChangeNotebookDocument(e){let t=e.notebook,r=this.notebookSyncInfo.get(t.uri.toString());if(r===void 0){if(e.contentChanges.length===0)return;let i=this.getMatchingCells(t);if(i===void 0)return;this.didOpen(t,i,r)}else{let i=this.getMatchingCells(t);if(i===void 0){this.didClose(t,r);return}let s=this.asNotebookDocumentChangeEvent(e.notebook,e,r,i);s!==void 0&&this.doSendChange(s,i).catch(()=>{})}}didSave(e){this.notebookSyncInfo.get(e.uri.toString())!==void 0&&this.doSendSave(e).catch(()=>{})}didClose(e,t=this.notebookSyncInfo.get(e.uri.toString())){if(t===void 0)return;let r=e.getCells().filter(i=>t.uris.has(i.document.uri.toString()));this.doSendClose(e,r).catch(()=>{})}async sendDidOpenNotebookDocument(e){let t=this.getMatchingCells(e);if(t!==void 0)return this.doSendOpen(e,t)}async doSendOpen(e,t){let r=async(s,o)=>{let a=Mr.c2p.asNotebookDocument(s,o,this.client.code2ProtocolConverter),u=o.map(h=>this.client.code2ProtocolConverter.asTextDocumentItem(h.document));try{await this.client.sendNotification(On.DidOpenNotebookDocumentNotification.type,{notebookDocument:a,cellTextDocuments:u})}catch(h){throw this.client.error("Sending DidOpenNotebookDocumentNotification failed",h),h}},i=this.client.middleware?.notebooks;return this.notebookSyncInfo.set(e.uri.toString(),Cs.create(t)),i?.didOpen!==void 0?i.didOpen(e,t,r):r(e,t)}async sendDidChangeNotebookDocument(e){return this.doSendChange(e,void 0)}async doSendChange(e,t=this.getMatchingCells(e.notebook)){let r=async s=>{try{await this.client.sendNotification(On.DidChangeNotebookDocumentNotification.type,{notebookDocument:Mr.c2p.asVersionedNotebookDocumentIdentifier(s.notebook,this.client.code2ProtocolConverter),change:Mr.c2p.asNotebookDocumentChangeEvent(s,this.client.code2ProtocolConverter)})}catch(o){throw this.client.error("Sending DidChangeNotebookDocumentNotification failed",o),o}},i=this.client.middleware?.notebooks;return e.cells?.structure!==void 0&&this.notebookSyncInfo.set(e.notebook.uri.toString(),Cs.create(t??[])),i?.didChange!==void 0?i?.didChange(e,r):r(e)}async sendDidSaveNotebookDocument(e){return this.doSendSave(e)}async doSendSave(e){let t=async i=>{try{await this.client.sendNotification(On.DidSaveNotebookDocumentNotification.type,{notebookDocument:{uri:this.client.code2ProtocolConverter.asUri(i.uri)}})}catch(s){throw this.client.error("Sending DidSaveNotebookDocumentNotification failed",s),s}},r=this.client.middleware?.notebooks;return r?.didSave!==void 0?r.didSave(e,t):t(e)}async sendDidCloseNotebookDocument(e){return this.doSendClose(e,this.getMatchingCells(e)??[])}async doSendClose(e,t){let r=async(s,o)=>{try{await this.client.sendNotification(On.DidCloseNotebookDocumentNotification.type,{notebookDocument:{uri:this.client.code2ProtocolConverter.asUri(s.uri)},cellTextDocuments:o.map(a=>this.client.code2ProtocolConverter.asTextDocumentIdentifier(a.document))})}catch(a){throw this.client.error("Sending DidCloseNotebookDocumentNotification failed",a),a}},i=this.client.middleware?.notebooks;return this.notebookSyncInfo.delete(e.uri.toString()),i?.didClose!==void 0?i.didClose(e,t,r):r(e,t)}asNotebookDocumentChangeEvent(e,t,r,i){if(t!==void 0&&t.notebook!==e)throw new Error("Notebook must be identical");let s={notebook:e};t?.metadata!==void 0&&(s.metadata=Mr.c2p.asMetadata(t.metadata));let o;if(t?.cellChanges!==void 0&&t.cellChanges.length>0){let a=[];o=new Set(i.map(u=>u.document.uri.toString()));for(let u of t.cellChanges)o.has(u.cell.document.uri.toString())&&(u.executionSummary!==void 0||u.metadata!==void 0)&&a.push(u.cell);a.length>0&&(s.cells=s.cells??{},s.cells.data=a)}if((t?.contentChanges!==void 0&&t.contentChanges.length>0||t===void 0)&&r!==void 0&&i!==void 0){let a=r.cells,u=i,h=$c.computeDiff(a,u,!1),m,C;if(h!==void 0){m=h.cells===void 0?new Map:new Map(h.cells.map(v=>[v.document.uri.toString(),v])),C=h.deleteCount===0?new Map:new Map(a.slice(h.start,h.start+h.deleteCount).map(v=>[v.document.uri.toString(),v]));for(let v of Array.from(C.keys()))m.has(v)&&(C.delete(v),m.delete(v));s.cells=s.cells??{};let y=[],S=[];if(m.size>0||C.size>0){for(let v of m.values())y.push(v);for(let v of C.values())S.push(v)}s.cells.structure={array:h,didOpen:y,didClose:S}}}return Object.keys(s).length>1?s:void 0}getMatchingCells(e,t=e.getCells()){if(this.options.notebookSelector!==void 0){for(let r of this.options.notebookSelector)if(r.notebook===void 0||Hc.matchNotebook(r.notebook,e)){let i=this.filterCells(e,t,r.cells);return i.length===0?void 0:i}}}cellMatches(e,t){let r=this.getMatchingCells(e,[t]);return r!==void 0&&r[0]===t}filterCells(e,t,r){let i=r!==void 0?t.filter(s=>{let o=s.document.languageId;return r.some(a=>a.language==="*"||o===a.language)}):t;return typeof this.client.clientOptions.notebookDocumentOptions?.filterCells=="function"?this.client.clientOptions.notebookDocumentOptions.filterCells(e,i):i}},Ds=class n{constructor(e){this.client=e,this.registrations=new Map,this.registrationType=On.NotebookDocumentSyncRegistrationType.type,lt.workspace.onDidOpenTextDocument(t=>{if(t.uri.scheme!==n.CellScheme)return;let[r,i]=this.findNotebookDocumentAndCell(t);if(!(r===void 0||i===void 0))for(let s of this.registrations.values())s instanceof Lr&&s.didOpenNotebookCellTextDocument(r,i)}),lt.workspace.onDidChangeTextDocument(t=>{if(t.contentChanges.length===0)return;let r=t.document;if(r.uri.scheme!==n.CellScheme)return;let[i]=this.findNotebookDocumentAndCell(r);if(i!==void 0)for(let s of this.registrations.values())s instanceof Lr&&s.didChangeNotebookCellTextDocument(i,t)}),lt.workspace.onDidCloseTextDocument(t=>{if(t.uri.scheme!==n.CellScheme)return;let[r,i]=this.findNotebookDocumentAndCell(t);if(!(r===void 0||i===void 0))for(let s of this.registrations.values())s instanceof Lr&&s.didCloseNotebookCellTextDocument(r,i)})}getState(){if(this.registrations.size===0)return{kind:"document",id:this.registrationType.method,registrations:!1,matches:!1};for(let e of this.registrations.values()){let t=e.getState();if(t.kind==="document"&&t.registrations===!0&&t.matches===!0)return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!0}}return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!1}}fillClientCapabilities(e){let t=Xf(Xf(e,"notebookDocument"),"synchronization");t.dynamicRegistration=!0,t.executionSummarySupport=!0}preInitialize(e){let t=e.notebookDocumentSync;t!==void 0&&(this.dedicatedChannel=this.client.protocol2CodeConverter.asDocumentSelector(vs.asDocumentSelector(t)))}initialize(e){let t=e.notebookDocumentSync;if(t===void 0)return;let r=t.id??MC.generateUuid();this.register({id:r,registerOptions:t})}register(e){let t=new Lr(this.client,e.registerOptions);this.registrations.set(e.id,t)}unregister(e){let t=this.registrations.get(e);t&&t.dispose()}dispose(){for(let e of this.registrations.values())e.dispose();this.registrations.clear()}handles(e){if(e.uri.scheme!==n.CellScheme)return!1;if(this.dedicatedChannel!==void 0&<.languages.match(this.dedicatedChannel,e)>0)return!0;for(let t of this.registrations.values())if(t.handles(e))return!0;return!1}getProvider(e){for(let t of this.registrations.values())if(t.handles(e.document))return t}findNotebookDocumentAndCell(e){let t=e.uri.toString();for(let r of lt.workspace.notebookDocuments)for(let i of r.getCells())if(i.document.uri.toString()===t)return[r,i];return[void 0,void 0]}};_s.NotebookDocumentSyncFeature=Ds;Ds.CellScheme="vscode-notebook-cell"});var Yf=I(Jn=>{"use strict";Object.defineProperty(Jn,"__esModule",{value:!0});Jn.SyncConfigurationFeature=Jn.toJSONObject=Jn.ConfigurationFeature=void 0;var Ar=require("vscode"),yi=ne(),LC=Ut(),AC=je(),Jf=me(),Uc=class{constructor(e){this._client=e}getState(){return{kind:"static"}}fillClientCapabilities(e){e.workspace=e.workspace||{},e.workspace.configuration=!0}initialize(){let e=this._client;e.onRequest(yi.ConfigurationRequest.type,(t,r)=>{let i=o=>{let a=[];for(let u of o.items){let h=u.scopeUri!==void 0&&u.scopeUri!==null?this._client.protocol2CodeConverter.asUri(u.scopeUri):void 0;a.push(this.getConfiguration(h,u.section!==null?u.section:void 0))}return a},s=e.middleware.workspace;return s&&s.configuration?s.configuration(t,r,i):i(t,r)})}getConfiguration(e,t){let r=null;if(t){let i=t.lastIndexOf(".");if(i===-1)r=pr(Ar.workspace.getConfiguration(void 0,e).get(t));else{let s=Ar.workspace.getConfiguration(t.substr(0,i),e);s&&(r=pr(s.get(t.substr(i+1))))}}else{let i=Ar.workspace.getConfiguration(void 0,e);r={};for(let s of Object.keys(i))i.has(s)&&(r[s]=pr(i.get(s)))}return r===void 0&&(r=null),r}dispose(){}};Jn.ConfigurationFeature=Uc;function pr(n){if(n){if(Array.isArray(n))return n.map(pr);if(typeof n=="object"){let e=Object.create(null);for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=pr(n[t]));return e}}return n}Jn.toJSONObject=pr;var Wc=class{constructor(e){this._client=e,this.isDisposed=!1,this._listeners=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._listeners.size>0}}get registrationType(){return yi.DidChangeConfigurationNotification.type}fillClientCapabilities(e){(0,Jf.ensure)((0,Jf.ensure)(e,"workspace"),"didChangeConfiguration").dynamicRegistration=!0}initialize(){let e=this._client.clientOptions.synchronize?.configurationSection;e!==void 0&&this.register({id:AC.generateUuid(),registerOptions:{section:e}})}register(e){let t=Ar.workspace.onDidChangeConfiguration(r=>{this.onDidChangeConfiguration(e.registerOptions.section,r)});this._listeners.set(e.id,t),e.registerOptions.section!==void 0&&this.onDidChangeConfiguration(e.registerOptions.section,void 0)}unregister(e){let t=this._listeners.get(e);t&&(this._listeners.delete(e),t.dispose())}dispose(){for(let e of this._listeners.values())e.dispose();this._listeners.clear(),this.isDisposed=!0}onDidChangeConfiguration(e,t){if(this.isDisposed)return;let r;if(LC.string(e)?r=[e]:r=e,r!==void 0&&t!==void 0&&!r.some(a=>t.affectsConfiguration(a)))return;let i=async o=>o===void 0?this._client.sendNotification(yi.DidChangeConfigurationNotification.type,{settings:null}):this._client.sendNotification(yi.DidChangeConfigurationNotification.type,{settings:this.extractSettingsInformation(o)}),s=this._client.middleware.workspace?.didChangeConfiguration;(s?s(r,i):i(r)).catch(o=>{this._client.error(`Sending notification ${yi.DidChangeConfigurationNotification.type.method} failed`,o)})}extractSettingsInformation(e){function t(s,o){let a=s;for(let u=0;u=0?u=Ar.workspace.getConfiguration(o.substr(0,a),r).get(o.substr(a+1)):u=Ar.workspace.getConfiguration(void 0,r).get(o),u){let h=e[s].split(".");t(i,h)[h[h.length-1]]=pr(u)}}return i}};Jn.SyncConfigurationFeature=Wc});var Zf=I(It=>{"use strict";Object.defineProperty(It,"__esModule",{value:!0});It.DidSaveTextDocumentFeature=It.WillSaveWaitUntilFeature=It.WillSaveFeature=It.DidChangeTextDocumentFeature=It.DidCloseTextDocumentFeature=It.DidOpenTextDocumentFeature=void 0;var At=require("vscode"),qe=ne(),$e=me(),jr=je(),Kc=class extends $e.TextDocumentEventFeature{constructor(e,t){super(e,At.workspace.onDidOpenTextDocument,qe.DidOpenTextDocumentNotification.type,()=>e.middleware.didOpen,r=>e.code2ProtocolConverter.asOpenTextDocumentParams(r),r=>r,$e.TextDocumentEventFeature.textDocumentFilter),this._syncedDocuments=t}get openDocuments(){return this._syncedDocuments.values()}fillClientCapabilities(e){(0,$e.ensure)((0,$e.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.openClose&&this.register({id:jr.generateUuid(),registerOptions:{documentSelector:t}})}get registrationType(){return qe.DidOpenTextDocumentNotification.type}register(e){if(super.register(e),!e.registerOptions.documentSelector)return;let t=this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector);At.workspace.textDocuments.forEach(r=>{let i=r.uri.toString();if(!this._syncedDocuments.has(i)&&At.languages.match(t,r)>0&&!this._client.hasDedicatedTextSynchronizationFeature(r)){let s=this._client.middleware,o=a=>this._client.sendNotification(this._type,this._createParams(a));(s.didOpen?s.didOpen(r,o):o(r)).catch(a=>{this._client.error(`Sending document notification ${this._type.method} failed`,a)}),this._syncedDocuments.set(i,r)}})}getTextDocument(e){return e}notificationSent(e,t,r){this._syncedDocuments.set(e.uri.toString(),e),super.notificationSent(e,t,r)}};It.DidOpenTextDocumentFeature=Kc;var zc=class extends $e.TextDocumentEventFeature{constructor(e,t,r){super(e,At.workspace.onDidCloseTextDocument,qe.DidCloseTextDocumentNotification.type,()=>e.middleware.didClose,i=>e.code2ProtocolConverter.asCloseTextDocumentParams(i),i=>i,$e.TextDocumentEventFeature.textDocumentFilter),this._syncedDocuments=t,this._pendingTextDocumentChanges=r}get registrationType(){return qe.DidCloseTextDocumentNotification.type}fillClientCapabilities(e){(0,$e.ensure)((0,$e.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.openClose&&this.register({id:jr.generateUuid(),registerOptions:{documentSelector:t}})}async callback(e){await super.callback(e),this._pendingTextDocumentChanges.delete(e.uri.toString())}getTextDocument(e){return e}notificationSent(e,t,r){this._syncedDocuments.delete(e.uri.toString()),super.notificationSent(e,t,r)}unregister(e){let t=this._selectors.get(e);super.unregister(e);let r=this._selectors.values();this._syncedDocuments.forEach(i=>{if(At.languages.match(t,i)>0&&!this._selectorFilter(r,i)&&!this._client.hasDedicatedTextSynchronizationFeature(i)){let s=this._client.middleware,o=a=>this._client.sendNotification(this._type,this._createParams(a));this._syncedDocuments.delete(i.uri.toString()),(s.didClose?s.didClose(i,o):o(i)).catch(a=>{this._client.error(`Sending document notification ${this._type.method} failed`,a)})}})}};It.DidCloseTextDocumentFeature=zc;var Vc=class extends $e.DynamicDocumentFeature{constructor(e,t){super(e),this._changeData=new Map,this._onNotificationSent=new At.EventEmitter,this._onPendingChangeAdded=new At.EventEmitter,this._pendingTextDocumentChanges=t,this._syncKind=qe.TextDocumentSyncKind.None}get onNotificationSent(){return this._onNotificationSent.event}get onPendingChangeAdded(){return this._onPendingChangeAdded.event}get syncKind(){return this._syncKind}get registrationType(){return qe.DidChangeTextDocumentNotification.type}fillClientCapabilities(e){(0,$e.ensure)((0,$e.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.change!==void 0&&r.change!==qe.TextDocumentSyncKind.None&&this.register({id:jr.generateUuid(),registerOptions:Object.assign({},{documentSelector:t},{syncKind:r.change})})}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=At.workspace.onDidChangeTextDocument(this.callback,this)),this._changeData.set(e.id,{syncKind:e.registerOptions.syncKind,documentSelector:this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)}),this.updateSyncKind(e.registerOptions.syncKind))}*getDocumentSelectors(){for(let e of this._changeData.values())yield e.documentSelector}async callback(e){if(e.contentChanges.length===0)return;let t=e.document.uri,r=e.document.version,i=[];for(let s of this._changeData.values())if(At.languages.match(s.documentSelector,e.document)>0&&!this._client.hasDedicatedTextSynchronizationFeature(e.document)){let o=this._client.middleware;if(s.syncKind===qe.TextDocumentSyncKind.Incremental){let a=async u=>{let h=this._client.code2ProtocolConverter.asChangeTextDocumentParams(u,t,r);await this._client.sendNotification(qe.DidChangeTextDocumentNotification.type,h),this.notificationSent(u.document,qe.DidChangeTextDocumentNotification.type,h)};i.push(o.didChange?o.didChange(e,u=>a(u)):a(e))}else if(s.syncKind===qe.TextDocumentSyncKind.Full){let a=async u=>{let h=u.document.uri.toString();this._pendingTextDocumentChanges.set(h,u.document),this._onPendingChangeAdded.fire()};i.push(o.didChange?o.didChange(e,u=>a(u)):a(e))}}return Promise.all(i).then(void 0,s=>{throw this._client.error(`Sending document notification ${qe.DidChangeTextDocumentNotification.type.method} failed`,s),s})}notificationSent(e,t,r){this._onNotificationSent.fire({textDocument:e,type:t,params:r})}unregister(e){if(this._changeData.delete(e),this._changeData.size===0)this._listener&&(this._listener.dispose(),this._listener=void 0),this._syncKind=qe.TextDocumentSyncKind.None;else{this._syncKind=qe.TextDocumentSyncKind.None;for(let t of this._changeData.values())if(this.updateSyncKind(t.syncKind),this._syncKind===qe.TextDocumentSyncKind.Full)break}}dispose(){this._pendingTextDocumentChanges.clear(),this._changeData.clear(),this._syncKind=qe.TextDocumentSyncKind.None,this._listener&&(this._listener.dispose(),this._listener=void 0)}getPendingDocumentChanges(e){if(this._pendingTextDocumentChanges.size===0)return[];let t;if(e.size===0)t=Array.from(this._pendingTextDocumentChanges.values()),this._pendingTextDocumentChanges.clear();else{t=[];for(let r of this._pendingTextDocumentChanges)e.has(r[0])||(t.push(r[1]),this._pendingTextDocumentChanges.delete(r[0]))}return t}getProvider(e){for(let t of this._changeData.values())if(At.languages.match(t.documentSelector,e)>0)return{send:r=>this.callback(r)}}updateSyncKind(e){if(this._syncKind!==qe.TextDocumentSyncKind.Full)switch(e){case qe.TextDocumentSyncKind.Full:this._syncKind=e;break;case qe.TextDocumentSyncKind.Incremental:this._syncKind===qe.TextDocumentSyncKind.None&&(this._syncKind=qe.TextDocumentSyncKind.Incremental);break}}};It.DidChangeTextDocumentFeature=Vc;var Bc=class extends $e.TextDocumentEventFeature{constructor(e){super(e,At.workspace.onWillSaveTextDocument,qe.WillSaveTextDocumentNotification.type,()=>e.middleware.willSave,t=>e.code2ProtocolConverter.asWillSaveTextDocumentParams(t),t=>t.document,(t,r)=>$e.TextDocumentEventFeature.textDocumentFilter(t,r.document))}get registrationType(){return qe.WillSaveTextDocumentNotification.type}fillClientCapabilities(e){let t=(0,$e.ensure)((0,$e.ensure)(e,"textDocument"),"synchronization");t.willSave=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.willSave&&this.register({id:jr.generateUuid(),registerOptions:{documentSelector:t}})}getTextDocument(e){return e.document}};It.WillSaveFeature=Bc;var Gc=class extends $e.DynamicDocumentFeature{constructor(e){super(e),this._selectors=new Map}getDocumentSelectors(){return this._selectors.values()}get registrationType(){return qe.WillSaveTextDocumentWaitUntilRequest.type}fillClientCapabilities(e){let t=(0,$e.ensure)((0,$e.ensure)(e,"textDocument"),"synchronization");t.willSaveWaitUntil=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.willSaveWaitUntil&&this.register({id:jr.generateUuid(),registerOptions:{documentSelector:t}})}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=At.workspace.onWillSaveTextDocument(this.callback,this)),this._selectors.set(e.id,this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)))}callback(e){if($e.TextDocumentEventFeature.textDocumentFilter(this._selectors.values(),e.document)&&!this._client.hasDedicatedTextSynchronizationFeature(e.document)){let t=this._client.middleware,r=i=>this._client.sendRequest(qe.WillSaveTextDocumentWaitUntilRequest.type,this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(i)).then(async s=>{let o=await this._client.protocol2CodeConverter.asTextEdits(s);return o===void 0?[]:o});e.waitUntil(t.willSaveWaitUntil?t.willSaveWaitUntil(e,r):r(e))}}unregister(e){this._selectors.delete(e),this._selectors.size===0&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._selectors.clear(),this._listener&&(this._listener.dispose(),this._listener=void 0)}};It.WillSaveWaitUntilFeature=Gc;var Xc=class extends $e.TextDocumentEventFeature{constructor(e){super(e,At.workspace.onDidSaveTextDocument,qe.DidSaveTextDocumentNotification.type,()=>e.middleware.didSave,t=>e.code2ProtocolConverter.asSaveTextDocumentParams(t,this._includeText),t=>t,$e.TextDocumentEventFeature.textDocumentFilter),this._includeText=!1}get registrationType(){return qe.DidSaveTextDocumentNotification.type}fillClientCapabilities(e){(0,$e.ensure)((0,$e.ensure)(e,"textDocument"),"synchronization").didSave=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;if(t&&r&&r.save){let i=typeof r.save=="boolean"?{includeText:!1}:{includeText:!!r.save.includeText};this.register({id:jr.generateUuid(),registerOptions:Object.assign({},{documentSelector:t},i)})}}register(e){this._includeText=!!e.registerOptions.includeText,super.register(e)}getTextDocument(e){return e}};It.DidSaveTextDocumentFeature=Xc});var eh=I(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.CompletionItemFeature=void 0;var jC=require("vscode"),le=ne(),Qc=me(),$C=je(),HC=[le.CompletionItemKind.Text,le.CompletionItemKind.Method,le.CompletionItemKind.Function,le.CompletionItemKind.Constructor,le.CompletionItemKind.Field,le.CompletionItemKind.Variable,le.CompletionItemKind.Class,le.CompletionItemKind.Interface,le.CompletionItemKind.Module,le.CompletionItemKind.Property,le.CompletionItemKind.Unit,le.CompletionItemKind.Value,le.CompletionItemKind.Enum,le.CompletionItemKind.Keyword,le.CompletionItemKind.Snippet,le.CompletionItemKind.Color,le.CompletionItemKind.File,le.CompletionItemKind.Reference,le.CompletionItemKind.Folder,le.CompletionItemKind.EnumMember,le.CompletionItemKind.Constant,le.CompletionItemKind.Struct,le.CompletionItemKind.Event,le.CompletionItemKind.Operator,le.CompletionItemKind.TypeParameter],Jc=class extends Qc.TextDocumentLanguageFeature{constructor(e){super(e,le.CompletionRequest.type),this.labelDetailsSupport=new Map}fillClientCapabilities(e){let t=(0,Qc.ensure)((0,Qc.ensure)(e,"textDocument"),"completion");t.dynamicRegistration=!0,t.contextSupport=!0,t.completionItem={snippetSupport:!0,commitCharactersSupport:!0,documentationFormat:[le.MarkupKind.Markdown,le.MarkupKind.PlainText],deprecatedSupport:!0,preselectSupport:!0,tagSupport:{valueSet:[le.CompletionItemTag.Deprecated]},insertReplaceSupport:!0,resolveSupport:{properties:["documentation","detail","additionalTextEdits"]},insertTextModeSupport:{valueSet:[le.InsertTextMode.asIs,le.InsertTextMode.adjustIndentation]},labelDetailsSupport:!0},t.insertTextMode=le.InsertTextMode.adjustIndentation,t.completionItemKind={valueSet:HC},t.completionList={itemDefaults:["commitCharacters","editRange","insertTextFormat","insertTextMode"]}}initialize(e,t){let r=this.getRegistrationOptions(t,e.completionProvider);r&&this.register({id:$C.generateUuid(),registerOptions:r})}registerLanguageProvider(e,t){this.labelDetailsSupport.set(t,!!e.completionItem?.labelDetailsSupport);let r=e.triggerCharacters??[],i=e.allCommitCharacters,s=e.documentSelector,o={provideCompletionItems:(a,u,h,m)=>{let C=this._client,y=this._client.middleware,S=(v,E,q,N)=>C.sendRequest(le.CompletionRequest.type,C.code2ProtocolConverter.asCompletionParams(v,E,q),N).then(L=>N.isCancellationRequested?null:C.protocol2CodeConverter.asCompletionResult(L,i,N),L=>C.handleFailedRequest(le.CompletionRequest.type,N,L,null));return y.provideCompletionItem?y.provideCompletionItem(a,u,m,h,S):S(a,u,m,h)},resolveCompletionItem:e.resolveProvider?(a,u)=>{let h=this._client,m=this._client.middleware,C=(y,S)=>h.sendRequest(le.CompletionResolveRequest.type,h.code2ProtocolConverter.asCompletionItem(y,!!this.labelDetailsSupport.get(t)),S).then(v=>S.isCancellationRequested?null:h.protocol2CodeConverter.asCompletionItem(v),v=>h.handleFailedRequest(le.CompletionResolveRequest.type,S,v,y));return m.resolveCompletionItem?m.resolveCompletionItem(a,u,C):C(a,u)}:void 0};return[jC.languages.registerCompletionItemProvider(this._client.protocol2CodeConverter.asDocumentSelector(s),o,...r),o]}};Rs.CompletionItemFeature=Jc});var th=I(bs=>{"use strict";Object.defineProperty(bs,"__esModule",{value:!0});bs.HoverFeature=void 0;var UC=require("vscode"),vi=ne(),Yc=me(),WC=je(),Zc=class extends Yc.TextDocumentLanguageFeature{constructor(e){super(e,vi.HoverRequest.type)}fillClientCapabilities(e){let t=(0,Yc.ensure)((0,Yc.ensure)(e,"textDocument"),"hover");t.dynamicRegistration=!0,t.contentFormat=[vi.MarkupKind.Markdown,vi.MarkupKind.PlainText]}initialize(e,t){let r=this.getRegistrationOptions(t,e.hoverProvider);r&&this.register({id:WC.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideHover:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(vi.HoverRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asHover(S),S=>a.handleFailedRequest(vi.HoverRequest.type,y,S,null)),h=a.middleware;return h.provideHover?h.provideHover(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return UC.languages.registerHoverProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};bs.HoverFeature=Zc});var nh=I(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});ws.DefinitionFeature=void 0;var KC=require("vscode"),eu=ne(),tu=me(),zC=je(),nu=class extends tu.TextDocumentLanguageFeature{constructor(e){super(e,eu.DefinitionRequest.type)}fillClientCapabilities(e){let t=(0,tu.ensure)((0,tu.ensure)(e,"textDocument"),"definition");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.definitionProvider);r&&this.register({id:zC.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDefinition:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(eu.DefinitionRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asDefinitionResult(S,y),S=>a.handleFailedRequest(eu.DefinitionRequest.type,y,S,null)),h=a.middleware;return h.provideDefinition?h.provideDefinition(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return KC.languages.registerDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};ws.DefinitionFeature=nu});var ih=I(Ss=>{"use strict";Object.defineProperty(Ss,"__esModule",{value:!0});Ss.SignatureHelpFeature=void 0;var rh=require("vscode"),Ci=ne(),ru=me(),VC=je(),iu=class extends ru.TextDocumentLanguageFeature{constructor(e){super(e,Ci.SignatureHelpRequest.type)}fillClientCapabilities(e){let t=(0,ru.ensure)((0,ru.ensure)(e,"textDocument"),"signatureHelp");t.dynamicRegistration=!0,t.signatureInformation={documentationFormat:[Ci.MarkupKind.Markdown,Ci.MarkupKind.PlainText]},t.signatureInformation.parameterInformation={labelOffsetSupport:!0},t.signatureInformation.activeParameterSupport=!0,t.contextSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.signatureHelpProvider);r&&this.register({id:VC.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t={provideSignatureHelp:(r,i,s,o)=>{let a=this._client,u=(m,C,y,S)=>a.sendRequest(Ci.SignatureHelpRequest.type,a.code2ProtocolConverter.asSignatureHelpParams(m,C,y),S).then(v=>S.isCancellationRequested?null:a.protocol2CodeConverter.asSignatureHelp(v,S),v=>a.handleFailedRequest(Ci.SignatureHelpRequest.type,S,v,null)),h=a.middleware;return h.provideSignatureHelp?h.provideSignatureHelp(r,i,o,s,u):u(r,i,o,s)}};return[this.registerProvider(e,t),t]}registerProvider(e,t){let r=this._client.protocol2CodeConverter.asDocumentSelector(e.documentSelector);if(e.retriggerCharacters===void 0){let i=e.triggerCharacters||[];return rh.languages.registerSignatureHelpProvider(r,t,...i)}else{let i={triggerCharacters:e.triggerCharacters||[],retriggerCharacters:e.retriggerCharacters||[]};return rh.languages.registerSignatureHelpProvider(r,t,i)}}};Ss.SignatureHelpFeature=iu});var sh=I(Ts=>{"use strict";Object.defineProperty(Ts,"__esModule",{value:!0});Ts.DocumentHighlightFeature=void 0;var BC=require("vscode"),su=ne(),ou=me(),GC=je(),au=class extends ou.TextDocumentLanguageFeature{constructor(e){super(e,su.DocumentHighlightRequest.type)}fillClientCapabilities(e){(0,ou.ensure)((0,ou.ensure)(e,"textDocument"),"documentHighlight").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentHighlightProvider);r&&this.register({id:GC.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentHighlights:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(su.DocumentHighlightRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asDocumentHighlights(S,y),S=>a.handleFailedRequest(su.DocumentHighlightRequest.type,y,S,null)),h=a.middleware;return h.provideDocumentHighlights?h.provideDocumentHighlights(i,s,o,u):u(i,s,o)}};return[BC.languages.registerDocumentHighlightProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Ts.DocumentHighlightFeature=au});var du=I(mn=>{"use strict";Object.defineProperty(mn,"__esModule",{value:!0});mn.DocumentSymbolFeature=mn.SupportedSymbolTags=mn.SupportedSymbolKinds=void 0;var XC=require("vscode"),_e=ne(),cu=me(),QC=je();mn.SupportedSymbolKinds=[_e.SymbolKind.File,_e.SymbolKind.Module,_e.SymbolKind.Namespace,_e.SymbolKind.Package,_e.SymbolKind.Class,_e.SymbolKind.Method,_e.SymbolKind.Property,_e.SymbolKind.Field,_e.SymbolKind.Constructor,_e.SymbolKind.Enum,_e.SymbolKind.Interface,_e.SymbolKind.Function,_e.SymbolKind.Variable,_e.SymbolKind.Constant,_e.SymbolKind.String,_e.SymbolKind.Number,_e.SymbolKind.Boolean,_e.SymbolKind.Array,_e.SymbolKind.Object,_e.SymbolKind.Key,_e.SymbolKind.Null,_e.SymbolKind.EnumMember,_e.SymbolKind.Struct,_e.SymbolKind.Event,_e.SymbolKind.Operator,_e.SymbolKind.TypeParameter];mn.SupportedSymbolTags=[_e.SymbolTag.Deprecated];var uu=class extends cu.TextDocumentLanguageFeature{constructor(e){super(e,_e.DocumentSymbolRequest.type)}fillClientCapabilities(e){let t=(0,cu.ensure)((0,cu.ensure)(e,"textDocument"),"documentSymbol");t.dynamicRegistration=!0,t.symbolKind={valueSet:mn.SupportedSymbolKinds},t.hierarchicalDocumentSymbolSupport=!0,t.tagSupport={valueSet:mn.SupportedSymbolTags},t.labelSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentSymbolProvider);r&&this.register({id:QC.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentSymbols:(s,o)=>{let a=this._client,u=async(m,C)=>{try{let y=await a.sendRequest(_e.DocumentSymbolRequest.type,a.code2ProtocolConverter.asDocumentSymbolParams(m),C);if(C.isCancellationRequested||y===void 0||y===null)return null;if(y.length===0)return[];{let S=y[0];return _e.DocumentSymbol.is(S)?await a.protocol2CodeConverter.asDocumentSymbols(y,C):await a.protocol2CodeConverter.asSymbolInformations(y,C)}}catch(y){return a.handleFailedRequest(_e.DocumentSymbolRequest.type,C,y,null)}},h=a.middleware;return h.provideDocumentSymbols?h.provideDocumentSymbols(s,o,u):u(s,o)}},i=e.label!==void 0?{label:e.label}:void 0;return[XC.languages.registerDocumentSymbolProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r,i),r]}};mn.DocumentSymbolFeature=uu});var ah=I(Ps=>{"use strict";Object.defineProperty(Ps,"__esModule",{value:!0});Ps.WorkspaceSymbolFeature=void 0;var JC=require("vscode"),Di=ne(),lu=me(),oh=du(),YC=je(),fu=class extends lu.WorkspaceFeature{constructor(e){super(e,Di.WorkspaceSymbolRequest.type)}fillClientCapabilities(e){let t=(0,lu.ensure)((0,lu.ensure)(e,"workspace"),"symbol");t.dynamicRegistration=!0,t.symbolKind={valueSet:oh.SupportedSymbolKinds},t.tagSupport={valueSet:oh.SupportedSymbolTags},t.resolveSupport={properties:["location.range"]}}initialize(e){e.workspaceSymbolProvider&&this.register({id:YC.generateUuid(),registerOptions:e.workspaceSymbolProvider===!0?{workDoneProgress:!1}:e.workspaceSymbolProvider})}registerLanguageProvider(e){let t={provideWorkspaceSymbols:(r,i)=>{let s=this._client,o=(u,h)=>s.sendRequest(Di.WorkspaceSymbolRequest.type,{query:u},h).then(m=>h.isCancellationRequested?null:s.protocol2CodeConverter.asSymbolInformations(m,h),m=>s.handleFailedRequest(Di.WorkspaceSymbolRequest.type,h,m,null)),a=s.middleware;return a.provideWorkspaceSymbols?a.provideWorkspaceSymbols(r,i,o):o(r,i)},resolveWorkspaceSymbol:e.resolveProvider===!0?(r,i)=>{let s=this._client,o=(u,h)=>s.sendRequest(Di.WorkspaceSymbolResolveRequest.type,s.code2ProtocolConverter.asWorkspaceSymbol(u),h).then(m=>h.isCancellationRequested?null:s.protocol2CodeConverter.asSymbolInformation(m),m=>s.handleFailedRequest(Di.WorkspaceSymbolResolveRequest.type,h,m,null)),a=s.middleware;return a.resolveWorkspaceSymbol?a.resolveWorkspaceSymbol(r,i,o):o(r,i)}:void 0};return[JC.languages.registerWorkspaceSymbolProvider(t),t]}};Ps.WorkspaceSymbolFeature=fu});var ch=I(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.ReferencesFeature=void 0;var ZC=require("vscode"),hu=ne(),pu=me(),eD=je(),gu=class extends pu.TextDocumentLanguageFeature{constructor(e){super(e,hu.ReferencesRequest.type)}fillClientCapabilities(e){(0,pu.ensure)((0,pu.ensure)(e,"textDocument"),"references").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.referencesProvider);r&&this.register({id:eD.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideReferences:(i,s,o,a)=>{let u=this._client,h=(C,y,S,v)=>u.sendRequest(hu.ReferencesRequest.type,u.code2ProtocolConverter.asReferenceParams(C,y,S),v).then(E=>v.isCancellationRequested?null:u.protocol2CodeConverter.asReferences(E,v),E=>u.handleFailedRequest(hu.ReferencesRequest.type,v,E,null)),m=u.middleware;return m.provideReferences?m.provideReferences(i,s,o,a,h):h(i,s,o,a)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return ZC.languages.registerReferenceProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Es.ReferencesFeature=gu});var uh=I(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.CodeActionFeature=void 0;var tD=require("vscode"),jt=ne(),nD=je(),mu=me(),yu=class extends mu.TextDocumentLanguageFeature{constructor(e){super(e,jt.CodeActionRequest.type)}fillClientCapabilities(e){let t=(0,mu.ensure)((0,mu.ensure)(e,"textDocument"),"codeAction");t.dynamicRegistration=!0,t.isPreferredSupport=!0,t.disabledSupport=!0,t.dataSupport=!0,t.resolveSupport={properties:["edit"]},t.codeActionLiteralSupport={codeActionKind:{valueSet:[jt.CodeActionKind.Empty,jt.CodeActionKind.QuickFix,jt.CodeActionKind.Refactor,jt.CodeActionKind.RefactorExtract,jt.CodeActionKind.RefactorInline,jt.CodeActionKind.RefactorRewrite,jt.CodeActionKind.Source,jt.CodeActionKind.SourceOrganizeImports]}},t.honorsChangeAnnotations=!1}initialize(e,t){let r=this.getRegistrationOptions(t,e.codeActionProvider);r&&this.register({id:nD.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideCodeActions:(i,s,o,a)=>{let u=this._client,h=async(C,y,S,v)=>{let E={textDocument:u.code2ProtocolConverter.asTextDocumentIdentifier(C),range:u.code2ProtocolConverter.asRange(y),context:await u.code2ProtocolConverter.asCodeActionContext(S,v)};return u.sendRequest(jt.CodeActionRequest.type,E,v).then(q=>v.isCancellationRequested||q===null||q===void 0?null:u.protocol2CodeConverter.asCodeActionResult(q,v),q=>u.handleFailedRequest(jt.CodeActionRequest.type,v,q,null))},m=u.middleware;return m.provideCodeActions?m.provideCodeActions(i,s,o,a,h):h(i,s,o,a)},resolveCodeAction:e.resolveProvider?(i,s)=>{let o=this._client,a=this._client.middleware,u=async(h,m)=>o.sendRequest(jt.CodeActionResolveRequest.type,await o.code2ProtocolConverter.asCodeAction(h,m),m).then(C=>m.isCancellationRequested?h:o.protocol2CodeConverter.asCodeAction(C,m),C=>o.handleFailedRequest(jt.CodeActionResolveRequest.type,m,C,h));return a.resolveCodeAction?a.resolveCodeAction(i,s,u):u(i,s)}:void 0};return[tD.languages.registerCodeActionsProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r,e.codeActionKinds?{providedCodeActionKinds:this._client.protocol2CodeConverter.asCodeActionKinds(e.codeActionKinds)}:void 0),r]}};qs.CodeActionFeature=yu});var lh=I(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});ks.CodeLensFeature=void 0;var dh=require("vscode"),$r=ne(),rD=je(),_i=me(),vu=class extends _i.TextDocumentLanguageFeature{constructor(e){super(e,$r.CodeLensRequest.type)}fillClientCapabilities(e){(0,_i.ensure)((0,_i.ensure)(e,"textDocument"),"codeLens").dynamicRegistration=!0,(0,_i.ensure)((0,_i.ensure)(e,"workspace"),"codeLens").refreshSupport=!0}initialize(e,t){this._client.onRequest($r.CodeLensRefreshRequest.type,async()=>{for(let s of this.getAllProviders())s.onDidChangeCodeLensEmitter.fire()});let i=this.getRegistrationOptions(t,e.codeLensProvider);i&&this.register({id:rD.generateUuid(),registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r=new dh.EventEmitter,i={onDidChangeCodeLenses:r.event,provideCodeLenses:(s,o)=>{let a=this._client,u=(m,C)=>a.sendRequest($r.CodeLensRequest.type,a.code2ProtocolConverter.asCodeLensParams(m),C).then(y=>C.isCancellationRequested?null:a.protocol2CodeConverter.asCodeLenses(y,C),y=>a.handleFailedRequest($r.CodeLensRequest.type,C,y,null)),h=a.middleware;return h.provideCodeLenses?h.provideCodeLenses(s,o,u):u(s,o)},resolveCodeLens:e.resolveProvider?(s,o)=>{let a=this._client,u=(m,C)=>a.sendRequest($r.CodeLensResolveRequest.type,a.code2ProtocolConverter.asCodeLens(m),C).then(y=>C.isCancellationRequested?m:a.protocol2CodeConverter.asCodeLens(y),y=>a.handleFailedRequest($r.CodeLensResolveRequest.type,C,y,m)),h=a.middleware;return h.resolveCodeLens?h.resolveCodeLens(s,o,u):u(s,o)}:void 0};return[dh.languages.registerCodeLensProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),i),{provider:i,onDidChangeCodeLensEmitter:r}]}};ks.CodeLensFeature=vu});var fh=I(Yn=>{"use strict";Object.defineProperty(Yn,"__esModule",{value:!0});Yn.DocumentOnTypeFormattingFeature=Yn.DocumentRangeFormattingFeature=Yn.DocumentFormattingFeature=void 0;var Is=require("vscode"),xn=ne(),Ru=je(),Fn=me(),Ri;(function(n){function e(t){let r=Is.workspace.getConfiguration("files",t);return{trimTrailingWhitespace:r.get("trimTrailingWhitespace"),trimFinalNewlines:r.get("trimFinalNewlines"),insertFinalNewline:r.get("insertFinalNewline")}}n.fromConfiguration=e})(Ri||(Ri={}));var Cu=class extends Fn.TextDocumentLanguageFeature{constructor(e){super(e,xn.DocumentFormattingRequest.type)}fillClientCapabilities(e){(0,Fn.ensure)((0,Fn.ensure)(e,"textDocument"),"formatting").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentFormattingProvider);r&&this.register({id:Ru.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentFormattingEdits:(i,s,o)=>{let a=this._client,u=(m,C,y)=>{let S={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(m),options:a.code2ProtocolConverter.asFormattingOptions(C,Ri.fromConfiguration(m))};return a.sendRequest(xn.DocumentFormattingRequest.type,S,y).then(v=>y.isCancellationRequested?null:a.protocol2CodeConverter.asTextEdits(v,y),v=>a.handleFailedRequest(xn.DocumentFormattingRequest.type,y,v,null))},h=a.middleware;return h.provideDocumentFormattingEdits?h.provideDocumentFormattingEdits(i,s,o,u):u(i,s,o)}};return[Is.languages.registerDocumentFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Yn.DocumentFormattingFeature=Cu;var Du=class extends Fn.TextDocumentLanguageFeature{constructor(e){super(e,xn.DocumentRangeFormattingRequest.type)}fillClientCapabilities(e){(0,Fn.ensure)((0,Fn.ensure)(e,"textDocument"),"rangeFormatting").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentRangeFormattingProvider);r&&this.register({id:Ru.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentRangeFormattingEdits:(i,s,o,a)=>{let u=this._client,h=(C,y,S,v)=>{let E={textDocument:u.code2ProtocolConverter.asTextDocumentIdentifier(C),range:u.code2ProtocolConverter.asRange(y),options:u.code2ProtocolConverter.asFormattingOptions(S,Ri.fromConfiguration(C))};return u.sendRequest(xn.DocumentRangeFormattingRequest.type,E,v).then(q=>v.isCancellationRequested?null:u.protocol2CodeConverter.asTextEdits(q,v),q=>u.handleFailedRequest(xn.DocumentRangeFormattingRequest.type,v,q,null))},m=u.middleware;return m.provideDocumentRangeFormattingEdits?m.provideDocumentRangeFormattingEdits(i,s,o,a,h):h(i,s,o,a)}};return[Is.languages.registerDocumentRangeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Yn.DocumentRangeFormattingFeature=Du;var _u=class extends Fn.TextDocumentLanguageFeature{constructor(e){super(e,xn.DocumentOnTypeFormattingRequest.type)}fillClientCapabilities(e){(0,Fn.ensure)((0,Fn.ensure)(e,"textDocument"),"onTypeFormatting").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentOnTypeFormattingProvider);r&&this.register({id:Ru.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideOnTypeFormattingEdits:(s,o,a,u,h)=>{let m=this._client,C=(S,v,E,q,N)=>{let L={textDocument:m.code2ProtocolConverter.asTextDocumentIdentifier(S),position:m.code2ProtocolConverter.asPosition(v),ch:E,options:m.code2ProtocolConverter.asFormattingOptions(q,Ri.fromConfiguration(S))};return m.sendRequest(xn.DocumentOnTypeFormattingRequest.type,L,N).then(M=>N.isCancellationRequested?null:m.protocol2CodeConverter.asTextEdits(M,N),M=>m.handleFailedRequest(xn.DocumentOnTypeFormattingRequest.type,N,M,null))},y=m.middleware;return y.provideOnTypeFormattingEdits?y.provideOnTypeFormattingEdits(s,o,a,u,h,C):C(s,o,a,u,h)}},i=e.moreTriggerCharacter||[];return[Is.languages.registerOnTypeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r,e.firstTriggerCharacter,...i),r]}};Yn.DocumentOnTypeFormattingFeature=_u});var ph=I(Os=>{"use strict";Object.defineProperty(Os,"__esModule",{value:!0});Os.RenameFeature=void 0;var iD=require("vscode"),gr=ne(),sD=je(),hh=Ut(),bu=me(),wu=class extends bu.TextDocumentLanguageFeature{constructor(e){super(e,gr.RenameRequest.type)}fillClientCapabilities(e){let t=(0,bu.ensure)((0,bu.ensure)(e,"textDocument"),"rename");t.dynamicRegistration=!0,t.prepareSupport=!0,t.prepareSupportDefaultBehavior=gr.PrepareSupportDefaultBehavior.Identifier,t.honorsChangeAnnotations=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.renameProvider);r&&(hh.boolean(e.renameProvider)&&(r.prepareProvider=!1),this.register({id:sD.generateUuid(),registerOptions:r}))}registerLanguageProvider(e){let t=e.documentSelector,r={provideRenameEdits:(i,s,o,a)=>{let u=this._client,h=(C,y,S,v)=>{let E={textDocument:u.code2ProtocolConverter.asTextDocumentIdentifier(C),position:u.code2ProtocolConverter.asPosition(y),newName:S};return u.sendRequest(gr.RenameRequest.type,E,v).then(q=>v.isCancellationRequested?null:u.protocol2CodeConverter.asWorkspaceEdit(q,v),q=>u.handleFailedRequest(gr.RenameRequest.type,v,q,null,!1))},m=u.middleware;return m.provideRenameEdits?m.provideRenameEdits(i,s,o,a,h):h(i,s,o,a)},prepareRename:e.prepareProvider?(i,s,o)=>{let a=this._client,u=(m,C,y)=>{let S={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(m),position:a.code2ProtocolConverter.asPosition(C)};return a.sendRequest(gr.PrepareRenameRequest.type,S,y).then(v=>y.isCancellationRequested?null:gr.Range.is(v)?a.protocol2CodeConverter.asRange(v):this.isDefaultBehavior(v)?v.defaultBehavior===!0?null:Promise.reject(new Error("The element can't be renamed.")):v&&gr.Range.is(v.range)?{range:a.protocol2CodeConverter.asRange(v.range),placeholder:v.placeholder}:Promise.reject(new Error("The element can't be renamed.")),v=>{throw typeof v.message=="string"?new Error(v.message):new Error("The element can't be renamed.")})},h=a.middleware;return h.prepareRename?h.prepareRename(i,s,o,u):u(i,s,o)}:void 0};return[this.registerProvider(t,r),r]}registerProvider(e,t){return iD.languages.registerRenameProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}isDefaultBehavior(e){let t=e;return t&&hh.boolean(t.defaultBehavior)}};Os.RenameFeature=wu});var gh=I(xs=>{"use strict";Object.defineProperty(xs,"__esModule",{value:!0});xs.DocumentLinkFeature=void 0;var oD=require("vscode"),bi=ne(),Su=me(),aD=je(),Tu=class extends Su.TextDocumentLanguageFeature{constructor(e){super(e,bi.DocumentLinkRequest.type)}fillClientCapabilities(e){let t=(0,Su.ensure)((0,Su.ensure)(e,"textDocument"),"documentLink");t.dynamicRegistration=!0,t.tooltipSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentLinkProvider);r&&this.register({id:aD.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentLinks:(i,s)=>{let o=this._client,a=(h,m)=>o.sendRequest(bi.DocumentLinkRequest.type,o.code2ProtocolConverter.asDocumentLinkParams(h),m).then(C=>m.isCancellationRequested?null:o.protocol2CodeConverter.asDocumentLinks(C,m),C=>o.handleFailedRequest(bi.DocumentLinkRequest.type,m,C,null)),u=o.middleware;return u.provideDocumentLinks?u.provideDocumentLinks(i,s,a):a(i,s)},resolveDocumentLink:e.resolveProvider?(i,s)=>{let o=this._client,a=(h,m)=>o.sendRequest(bi.DocumentLinkResolveRequest.type,o.code2ProtocolConverter.asDocumentLink(h),m).then(C=>m.isCancellationRequested?h:o.protocol2CodeConverter.asDocumentLink(C),C=>o.handleFailedRequest(bi.DocumentLinkResolveRequest.type,m,C,h)),u=o.middleware;return u.resolveDocumentLink?u.resolveDocumentLink(i,s,a):a(i,s)}:void 0};return[oD.languages.registerDocumentLinkProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};xs.DocumentLinkFeature=Tu});var yh=I(Fs=>{"use strict";Object.defineProperty(Fs,"__esModule",{value:!0});Fs.ExecuteCommandFeature=void 0;var cD=require("vscode"),Pu=ne(),uD=je(),mh=me(),Eu=class{constructor(e){this._client=e,this._commands=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._commands.size>0}}get registrationType(){return Pu.ExecuteCommandRequest.type}fillClientCapabilities(e){(0,mh.ensure)((0,mh.ensure)(e,"workspace"),"executeCommand").dynamicRegistration=!0}initialize(e){e.executeCommandProvider&&this.register({id:uD.generateUuid(),registerOptions:Object.assign({},e.executeCommandProvider)})}register(e){let t=this._client,r=t.middleware,i=(s,o)=>{let a={command:s,arguments:o};return t.sendRequest(Pu.ExecuteCommandRequest.type,a).then(void 0,u=>t.handleFailedRequest(Pu.ExecuteCommandRequest.type,void 0,u,void 0))};if(e.registerOptions.commands){let s=[];for(let o of e.registerOptions.commands)s.push(cD.commands.registerCommand(o,(...a)=>r.executeCommand?r.executeCommand(o,a,i):i(o,a)));this._commands.set(e.id,s)}}unregister(e){let t=this._commands.get(e);t&&t.forEach(r=>r.dispose())}dispose(){this._commands.forEach(e=>{e.forEach(t=>t.dispose())}),this._commands.clear()}};Fs.ExecuteCommandFeature=Eu});var vh=I(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.FileSystemWatcherFeature=void 0;var dD=require("vscode"),mr=ne(),Ns=me(),qu=class{constructor(e,t){this._client=e,this._notifyFileEvent=t,this._watchers=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._watchers.size>0}}get registrationType(){return mr.DidChangeWatchedFilesNotification.type}fillClientCapabilities(e){(0,Ns.ensure)((0,Ns.ensure)(e,"workspace"),"didChangeWatchedFiles").dynamicRegistration=!0,(0,Ns.ensure)((0,Ns.ensure)(e,"workspace"),"didChangeWatchedFiles").relativePatternSupport=!0}initialize(e,t){}register(e){if(!Array.isArray(e.registerOptions.watchers))return;let t=[];for(let r of e.registerOptions.watchers){let i=this._client.protocol2CodeConverter.asGlobPattern(r.globPattern);if(i===void 0)continue;let s=!0,o=!0,a=!0;r.kind!==void 0&&r.kind!==null&&(s=(r.kind&mr.WatchKind.Create)!==0,o=(r.kind&mr.WatchKind.Change)!==0,a=(r.kind&mr.WatchKind.Delete)!==0);let u=dD.workspace.createFileSystemWatcher(i,!s,!o,!a);this.hookListeners(u,s,o,a,t),t.push(u)}this._watchers.set(e.id,t)}registerRaw(e,t){let r=[];for(let i of t)this.hookListeners(i,!0,!0,!0,r);this._watchers.set(e,r)}hookListeners(e,t,r,i,s){t&&e.onDidCreate(o=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(o),type:mr.FileChangeType.Created}),null,s),r&&e.onDidChange(o=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(o),type:mr.FileChangeType.Changed}),null,s),i&&e.onDidDelete(o=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(o),type:mr.FileChangeType.Deleted}),null,s)}unregister(e){let t=this._watchers.get(e);if(t)for(let r of t)r.dispose()}dispose(){this._watchers.forEach(e=>{for(let t of e)t.dispose()}),this._watchers.clear()}};Ms.FileSystemWatcherFeature=qu});var Ch=I(Ls=>{"use strict";Object.defineProperty(Ls,"__esModule",{value:!0});Ls.ColorProviderFeature=void 0;var lD=require("vscode"),wi=ne(),ku=me(),Iu=class extends ku.TextDocumentLanguageFeature{constructor(e){super(e,wi.DocumentColorRequest.type)}fillClientCapabilities(e){(0,ku.ensure)((0,ku.ensure)(e,"textDocument"),"colorProvider").dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.colorProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideColorPresentations:(i,s,o)=>{let a=this._client,u=(m,C,y)=>{let S={color:m,textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(C.document),range:a.code2ProtocolConverter.asRange(C.range)};return a.sendRequest(wi.ColorPresentationRequest.type,S,y).then(v=>y.isCancellationRequested?null:this._client.protocol2CodeConverter.asColorPresentations(v,y),v=>a.handleFailedRequest(wi.ColorPresentationRequest.type,y,v,null))},h=a.middleware;return h.provideColorPresentations?h.provideColorPresentations(i,s,o,u):u(i,s,o)},provideDocumentColors:(i,s)=>{let o=this._client,a=(h,m)=>{let C={textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(h)};return o.sendRequest(wi.DocumentColorRequest.type,C,m).then(y=>m.isCancellationRequested?null:this._client.protocol2CodeConverter.asColorInformations(y,m),y=>o.handleFailedRequest(wi.DocumentColorRequest.type,m,y,null))},u=o.middleware;return u.provideDocumentColors?u.provideDocumentColors(i,s,a):a(i,s)}};return[lD.languages.registerColorProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Ls.ColorProviderFeature=Iu});var Dh=I(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});As.ImplementationFeature=void 0;var fD=require("vscode"),Ou=ne(),xu=me(),Fu=class extends xu.TextDocumentLanguageFeature{constructor(e){super(e,Ou.ImplementationRequest.type)}fillClientCapabilities(e){let t=(0,xu.ensure)((0,xu.ensure)(e,"textDocument"),"implementation");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.implementationProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideImplementation:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(Ou.ImplementationRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asDefinitionResult(S,y),S=>a.handleFailedRequest(Ou.ImplementationRequest.type,y,S,null)),h=a.middleware;return h.provideImplementation?h.provideImplementation(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return fD.languages.registerImplementationProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};As.ImplementationFeature=Fu});var _h=I(js=>{"use strict";Object.defineProperty(js,"__esModule",{value:!0});js.TypeDefinitionFeature=void 0;var hD=require("vscode"),Nu=ne(),Si=me(),Mu=class extends Si.TextDocumentLanguageFeature{constructor(e){super(e,Nu.TypeDefinitionRequest.type)}fillClientCapabilities(e){(0,Si.ensure)((0,Si.ensure)(e,"textDocument"),"typeDefinition").dynamicRegistration=!0;let t=(0,Si.ensure)((0,Si.ensure)(e,"textDocument"),"typeDefinition");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.typeDefinitionProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideTypeDefinition:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(Nu.TypeDefinitionRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asDefinitionResult(S,y),S=>a.handleFailedRequest(Nu.TypeDefinitionRequest.type,y,S,null)),h=a.middleware;return h.provideTypeDefinition?h.provideTypeDefinition(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return hD.languages.registerTypeDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};js.TypeDefinitionFeature=Mu});var Rh=I(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});Hr.WorkspaceFoldersFeature=Hr.arrayDiff=void 0;var pD=je(),$s=require("vscode"),Ti=ne();function Lu(n,e){if(n!=null)return n[e]}function Au(n,e){return n.filter(t=>e.indexOf(t)<0)}Hr.arrayDiff=Au;var ju=class{constructor(e){this._client=e,this._listeners=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._listeners.size>0}}get registrationType(){return Ti.DidChangeWorkspaceFoldersNotification.type}fillInitializeParams(e){let t=$s.workspace.workspaceFolders;this.initializeWithFolders(t),t===void 0?e.workspaceFolders=null:e.workspaceFolders=t.map(r=>this.asProtocol(r))}initializeWithFolders(e){this._initialFolders=e}fillClientCapabilities(e){e.workspace=e.workspace||{},e.workspace.workspaceFolders=!0}initialize(e){let t=this._client;t.onRequest(Ti.WorkspaceFoldersRequest.type,s=>{let o=()=>{let u=$s.workspace.workspaceFolders;return u===void 0?null:u.map(m=>this.asProtocol(m))},a=t.middleware.workspace;return a&&a.workspaceFolders?a.workspaceFolders(s,o):o(s)});let r=Lu(Lu(Lu(e,"workspace"),"workspaceFolders"),"changeNotifications"),i;typeof r=="string"?i=r:r===!0&&(i=pD.generateUuid()),i&&this.register({id:i,registerOptions:void 0})}sendInitialEvent(e){let t;if(this._initialFolders&&e){let r=Au(this._initialFolders,e),i=Au(e,this._initialFolders);(i.length>0||r.length>0)&&(t=this.doSendEvent(i,r))}else this._initialFolders?t=this.doSendEvent([],this._initialFolders):e&&(t=this.doSendEvent(e,[]));t!==void 0&&t.catch(r=>{this._client.error(`Sending notification ${Ti.DidChangeWorkspaceFoldersNotification.type.method} failed`,r)})}doSendEvent(e,t){let r={event:{added:e.map(i=>this.asProtocol(i)),removed:t.map(i=>this.asProtocol(i))}};return this._client.sendNotification(Ti.DidChangeWorkspaceFoldersNotification.type,r)}register(e){let t=e.id,r=this._client,i=$s.workspace.onDidChangeWorkspaceFolders(s=>{let o=h=>this.doSendEvent(h.added,h.removed),a=r.middleware.workspace;(a&&a.didChangeWorkspaceFolders?a.didChangeWorkspaceFolders(s,o):o(s)).catch(h=>{this._client.error(`Sending notification ${Ti.DidChangeWorkspaceFoldersNotification.type.method} failed`,h)})});this._listeners.set(t,i),this.sendInitialEvent($s.workspace.workspaceFolders)}unregister(e){let t=this._listeners.get(e);t!==void 0&&(this._listeners.delete(e),t.dispose())}dispose(){for(let e of this._listeners.values())e.dispose();this._listeners.clear()}asProtocol(e){return e===void 0?null:{uri:this._client.code2ProtocolConverter.asUri(e.uri),name:e.name}}};Hr.WorkspaceFoldersFeature=ju});var bh=I(Hs=>{"use strict";Object.defineProperty(Hs,"__esModule",{value:!0});Hs.FoldingRangeFeature=void 0;var gD=require("vscode"),Ur=ne(),$u=me(),Hu=class extends $u.TextDocumentLanguageFeature{constructor(e){super(e,Ur.FoldingRangeRequest.type)}fillClientCapabilities(e){let t=(0,$u.ensure)((0,$u.ensure)(e,"textDocument"),"foldingRange");t.dynamicRegistration=!0,t.rangeLimit=5e3,t.lineFoldingOnly=!0,t.foldingRangeKind={valueSet:[Ur.FoldingRangeKind.Comment,Ur.FoldingRangeKind.Imports,Ur.FoldingRangeKind.Region]},t.foldingRange={collapsedText:!1}}initialize(e,t){let[r,i]=this.getRegistration(t,e.foldingRangeProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideFoldingRanges:(i,s,o)=>{let a=this._client,u=(m,C,y)=>{let S={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(m)};return a.sendRequest(Ur.FoldingRangeRequest.type,S,y).then(v=>y.isCancellationRequested?null:a.protocol2CodeConverter.asFoldingRanges(v,y),v=>a.handleFailedRequest(Ur.FoldingRangeRequest.type,y,v,null))},h=a.middleware;return h.provideFoldingRanges?h.provideFoldingRanges(i,s,o,u):u(i,s,o)}};return[gD.languages.registerFoldingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Hs.FoldingRangeFeature=Hu});var wh=I(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.DeclarationFeature=void 0;var mD=require("vscode"),Uu=ne(),Wu=me(),Ku=class extends Wu.TextDocumentLanguageFeature{constructor(e){super(e,Uu.DeclarationRequest.type)}fillClientCapabilities(e){let t=(0,Wu.ensure)((0,Wu.ensure)(e,"textDocument"),"declaration");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.declarationProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDeclaration:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(Uu.DeclarationRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asDeclarationResult(S,y),S=>a.handleFailedRequest(Uu.DeclarationRequest.type,y,S,null)),h=a.middleware;return h.provideDeclaration?h.provideDeclaration(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return mD.languages.registerDeclarationProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Us.DeclarationFeature=Ku});var Sh=I(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.SelectionRangeFeature=void 0;var yD=require("vscode"),zu=ne(),Vu=me(),Bu=class extends Vu.TextDocumentLanguageFeature{constructor(e){super(e,zu.SelectionRangeRequest.type)}fillClientCapabilities(e){let t=(0,Vu.ensure)((0,Vu.ensure)(e,"textDocument"),"selectionRange");t.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.selectionRangeProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideSelectionRanges:(i,s,o)=>{let a=this._client,u=async(m,C,y)=>{let S={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(m),positions:await a.code2ProtocolConverter.asPositions(C,y)};return a.sendRequest(zu.SelectionRangeRequest.type,S,y).then(v=>y.isCancellationRequested?null:a.protocol2CodeConverter.asSelectionRanges(v,y),v=>a.handleFailedRequest(zu.SelectionRangeRequest.type,y,v,null))},h=a.middleware;return h.provideSelectionRanges?h.provideSelectionRanges(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return yD.languages.registerSelectionRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Ws.SelectionRangeFeature=Bu});var Ph=I(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.ProgressFeature=void 0;var Th=ne(),vD=vc();function CD(n,e){return n[e]===void 0&&(n[e]=Object.create(null)),n[e]}var Gu=class{constructor(e){this._client=e,this.activeParts=new Set}getState(){return{kind:"window",id:Th.WorkDoneProgressCreateRequest.method,registrations:this.activeParts.size>0}}fillClientCapabilities(e){CD(e,"window").workDoneProgress=!0}initialize(){let e=this._client,t=i=>{this.activeParts.delete(i)},r=i=>{this.activeParts.add(new vD.ProgressPart(this._client,i.token,t))};e.onRequest(Th.WorkDoneProgressCreateRequest.type,r)}dispose(){for(let e of this.activeParts)e.done();this.activeParts.clear()}};Ks.ProgressFeature=Gu});var Eh=I(zs=>{"use strict";Object.defineProperty(zs,"__esModule",{value:!0});zs.CallHierarchyFeature=void 0;var DD=require("vscode"),yr=ne(),Xu=me(),Qu=class{constructor(e){this.client=e,this.middleware=e.middleware}prepareCallHierarchy(e,t,r){let i=this.client,s=this.middleware,o=(a,u,h)=>{let m=i.code2ProtocolConverter.asTextDocumentPositionParams(a,u);return i.sendRequest(yr.CallHierarchyPrepareRequest.type,m,h).then(C=>h.isCancellationRequested?null:i.protocol2CodeConverter.asCallHierarchyItems(C,h),C=>i.handleFailedRequest(yr.CallHierarchyPrepareRequest.type,h,C,null))};return s.prepareCallHierarchy?s.prepareCallHierarchy(e,t,r,o):o(e,t,r)}provideCallHierarchyIncomingCalls(e,t){let r=this.client,i=this.middleware,s=(o,a)=>{let u={item:r.code2ProtocolConverter.asCallHierarchyItem(o)};return r.sendRequest(yr.CallHierarchyIncomingCallsRequest.type,u,a).then(h=>a.isCancellationRequested?null:r.protocol2CodeConverter.asCallHierarchyIncomingCalls(h,a),h=>r.handleFailedRequest(yr.CallHierarchyIncomingCallsRequest.type,a,h,null))};return i.provideCallHierarchyIncomingCalls?i.provideCallHierarchyIncomingCalls(e,t,s):s(e,t)}provideCallHierarchyOutgoingCalls(e,t){let r=this.client,i=this.middleware,s=(o,a)=>{let u={item:r.code2ProtocolConverter.asCallHierarchyItem(o)};return r.sendRequest(yr.CallHierarchyOutgoingCallsRequest.type,u,a).then(h=>a.isCancellationRequested?null:r.protocol2CodeConverter.asCallHierarchyOutgoingCalls(h,a),h=>r.handleFailedRequest(yr.CallHierarchyOutgoingCallsRequest.type,a,h,null))};return i.provideCallHierarchyOutgoingCalls?i.provideCallHierarchyOutgoingCalls(e,t,s):s(e,t)}},Ju=class extends Xu.TextDocumentLanguageFeature{constructor(e){super(e,yr.CallHierarchyPrepareRequest.type)}fillClientCapabilities(e){let t=e,r=(0,Xu.ensure)((0,Xu.ensure)(t,"textDocument"),"callHierarchy");r.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.callHierarchyProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=this._client,r=new Qu(t);return[DD.languages.registerCallHierarchyProvider(this._client.protocol2CodeConverter.asDocumentSelector(e.documentSelector),r),r]}};zs.CallHierarchyFeature=Ju});var qh=I(Bs=>{"use strict";Object.defineProperty(Bs,"__esModule",{value:!0});Bs.SemanticTokensFeature=void 0;var Vs=require("vscode"),re=ne(),Pi=me(),_D=Ut(),Yu=class extends Pi.TextDocumentLanguageFeature{constructor(e){super(e,re.SemanticTokensRegistrationType.type)}fillClientCapabilities(e){let t=(0,Pi.ensure)((0,Pi.ensure)(e,"textDocument"),"semanticTokens");t.dynamicRegistration=!0,t.tokenTypes=[re.SemanticTokenTypes.namespace,re.SemanticTokenTypes.type,re.SemanticTokenTypes.class,re.SemanticTokenTypes.enum,re.SemanticTokenTypes.interface,re.SemanticTokenTypes.struct,re.SemanticTokenTypes.typeParameter,re.SemanticTokenTypes.parameter,re.SemanticTokenTypes.variable,re.SemanticTokenTypes.property,re.SemanticTokenTypes.enumMember,re.SemanticTokenTypes.event,re.SemanticTokenTypes.function,re.SemanticTokenTypes.method,re.SemanticTokenTypes.macro,re.SemanticTokenTypes.keyword,re.SemanticTokenTypes.modifier,re.SemanticTokenTypes.comment,re.SemanticTokenTypes.string,re.SemanticTokenTypes.number,re.SemanticTokenTypes.regexp,re.SemanticTokenTypes.operator,re.SemanticTokenTypes.decorator],t.tokenModifiers=[re.SemanticTokenModifiers.declaration,re.SemanticTokenModifiers.definition,re.SemanticTokenModifiers.readonly,re.SemanticTokenModifiers.static,re.SemanticTokenModifiers.deprecated,re.SemanticTokenModifiers.abstract,re.SemanticTokenModifiers.async,re.SemanticTokenModifiers.modification,re.SemanticTokenModifiers.documentation,re.SemanticTokenModifiers.defaultLibrary],t.formats=[re.TokenFormat.Relative],t.requests={range:!0,full:{delta:!0}},t.multilineTokenSupport=!1,t.overlappingTokenSupport=!1,t.serverCancelSupport=!0,t.augmentsSyntaxTokens=!0,(0,Pi.ensure)((0,Pi.ensure)(e,"workspace"),"semanticTokens").refreshSupport=!0}initialize(e,t){this._client.onRequest(re.SemanticTokensRefreshRequest.type,async()=>{for(let o of this.getAllProviders())o.onDidChangeSemanticTokensEmitter.fire()});let[i,s]=this.getRegistration(t,e.semanticTokensProvider);!i||!s||this.register({id:i,registerOptions:s})}registerLanguageProvider(e){let t=e.documentSelector,r=_D.boolean(e.full)?e.full:e.full!==void 0,i=e.full!==void 0&&typeof e.full!="boolean"&&e.full.delta===!0,s=new Vs.EventEmitter,o=r?{onDidChangeSemanticTokens:s.event,provideDocumentSemanticTokens:(S,v)=>{let E=this._client,q=E.middleware,N=(L,M)=>{let U={textDocument:E.code2ProtocolConverter.asTextDocumentIdentifier(L)};return E.sendRequest(re.SemanticTokensRequest.type,U,M).then(J=>M.isCancellationRequested?null:E.protocol2CodeConverter.asSemanticTokens(J,M),J=>E.handleFailedRequest(re.SemanticTokensRequest.type,M,J,null))};return q.provideDocumentSemanticTokens?q.provideDocumentSemanticTokens(S,v,N):N(S,v)},provideDocumentSemanticTokensEdits:i?(S,v,E)=>{let q=this._client,N=q.middleware,L=(M,U,J)=>{let fe={textDocument:q.code2ProtocolConverter.asTextDocumentIdentifier(M),previousResultId:U};return q.sendRequest(re.SemanticTokensDeltaRequest.type,fe,J).then(async B=>J.isCancellationRequested?null:re.SemanticTokens.is(B)?await q.protocol2CodeConverter.asSemanticTokens(B,J):await q.protocol2CodeConverter.asSemanticTokensEdits(B,J),B=>q.handleFailedRequest(re.SemanticTokensDeltaRequest.type,J,B,null))};return N.provideDocumentSemanticTokensEdits?N.provideDocumentSemanticTokensEdits(S,v,E,L):L(S,v,E)}:void 0}:void 0,u=e.range===!0?{provideDocumentRangeSemanticTokens:(S,v,E)=>{let q=this._client,N=q.middleware,L=(M,U,J)=>{let fe={textDocument:q.code2ProtocolConverter.asTextDocumentIdentifier(M),range:q.code2ProtocolConverter.asRange(U)};return q.sendRequest(re.SemanticTokensRangeRequest.type,fe,J).then(B=>J.isCancellationRequested?null:q.protocol2CodeConverter.asSemanticTokens(B,J),B=>q.handleFailedRequest(re.SemanticTokensRangeRequest.type,J,B,null))};return N.provideDocumentRangeSemanticTokens?N.provideDocumentRangeSemanticTokens(S,v,E,L):L(S,v,E)}}:void 0,h=[],m=this._client,C=m.protocol2CodeConverter.asSemanticTokensLegend(e.legend),y=m.protocol2CodeConverter.asDocumentSelector(t);return o!==void 0&&h.push(Vs.languages.registerDocumentSemanticTokensProvider(y,o,C)),u!==void 0&&h.push(Vs.languages.registerDocumentRangeSemanticTokensProvider(y,u,C)),[new Vs.Disposable(()=>h.forEach(S=>S.dispose())),{range:u,full:o,onDidChangeSemanticTokensEmitter:s}]}};Bs.SemanticTokensFeature=Yu});var Oh=I(Ot=>{"use strict";Object.defineProperty(Ot,"__esModule",{value:!0});Ot.WillDeleteFilesFeature=Ot.WillRenameFilesFeature=Ot.WillCreateFilesFeature=Ot.DidDeleteFilesFeature=Ot.DidRenameFilesFeature=Ot.DidCreateFilesFeature=void 0;var Vt=require("vscode"),RD=ms(),Nn=ne(),bD=je();function kh(n,e){return n[e]===void 0&&(n[e]={}),n[e]}function wD(n,e){return n[e]}function Ih(n,e,t){n[e]=t}var Ei=class n{constructor(e,t,r,i,s){this._client=e,this._event=t,this._registrationType=r,this._clientCapability=i,this._serverCapability=s,this._filters=new Map}getState(){return{kind:"workspace",id:this._registrationType.method,registrations:this._filters.size>0}}filterSize(){return this._filters.size}get registrationType(){return this._registrationType}fillClientCapabilities(e){let t=kh(kh(e,"workspace"),"fileOperations");Ih(t,"dynamicRegistration",!0),Ih(t,this._clientCapability,!0)}initialize(e){let t=e.workspace?.fileOperations,r=t!==void 0?wD(t,this._serverCapability):void 0;if(r?.filters!==void 0)try{this.register({id:bD.generateUuid(),registerOptions:{filters:r.filters}})}catch(i){this._client.warn(`Ignoring invalid glob pattern for ${this._serverCapability} registration: ${i}`)}}register(e){this._listener||(this._listener=this._event(this.send,this));let t=e.registerOptions.filters.map(r=>{let i=new RD.Minimatch(r.pattern.glob,n.asMinimatchOptions(r.pattern.options));if(!i.makeRe())throw new Error(`Invalid pattern ${r.pattern.glob}!`);return{scheme:r.scheme,matcher:i,kind:r.pattern.matches}});this._filters.set(e.id,t)}unregister(e){this._filters.delete(e),this._filters.size===0&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._filters.clear(),this._listener&&(this._listener.dispose(),this._listener=void 0)}getFileType(e){return n.getFileType(e)}async filter(e,t){let r=await Promise.all(e.files.map(async s=>{let o=t(s),a=o.fsPath.replace(/\\/g,"/");for(let u of this._filters.values())for(let h of u)if(!(h.scheme!==void 0&&h.scheme!==o.scheme)){if(h.matcher.match(a)){if(h.kind===void 0)return!0;let m=await this.getFileType(o);if(m===void 0)return this._client.error(`Failed to determine file type for ${o.toString()}.`),!0;if(m===Vt.FileType.File&&h.kind===Nn.FileOperationPatternKind.file||m===Vt.FileType.Directory&&h.kind===Nn.FileOperationPatternKind.folder)return!0}else if(h.kind===Nn.FileOperationPatternKind.folder&&await n.getFileType(o)===Vt.FileType.Directory&&h.matcher.match(`${a}/`))return!0}return!1})),i=e.files.filter((s,o)=>r[o]);return{...e,files:i}}static async getFileType(e){try{return(await Vt.workspace.fs.stat(e)).type}catch{return}}static asMinimatchOptions(e){if(e!==void 0&&e.ignoreCase===!0)return{nocase:!0}}},Gs=class extends Ei{constructor(e,t,r,i,s,o,a){super(e,t,r,i,s),this._notificationType=r,this._accessUri=o,this._createParams=a}async send(e){let t=await this.filter(e,this._accessUri);if(t.files.length){let r=async i=>this._client.sendNotification(this._notificationType,this._createParams(i));return this.doSend(t,r)}}},Xs=class extends Gs{constructor(){super(...arguments),this._fsPathFileTypes=new Map}async getFileType(e){let t=e.fsPath;if(this._fsPathFileTypes.has(t))return this._fsPathFileTypes.get(t);let r=await Ei.getFileType(e);return r&&this._fsPathFileTypes.set(t,r),r}async cacheFileTypes(e,t){await this.filter(e,t)}clearFileTypeCache(){this._fsPathFileTypes.clear()}unregister(e){super.unregister(e),this.filterSize()===0&&this._willListener&&(this._willListener.dispose(),this._willListener=void 0)}dispose(){super.dispose(),this._willListener&&(this._willListener.dispose(),this._willListener=void 0)}},Zu=class extends Gs{constructor(e){super(e,Vt.workspace.onDidCreateFiles,Nn.DidCreateFilesNotification.type,"didCreate","didCreate",t=>t,e.code2ProtocolConverter.asDidCreateFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r?.didCreateFiles?r.didCreateFiles(e,t):t(e)}};Ot.DidCreateFilesFeature=Zu;var ed=class extends Xs{constructor(e){super(e,Vt.workspace.onDidRenameFiles,Nn.DidRenameFilesNotification.type,"didRename","didRename",t=>t.oldUri,e.code2ProtocolConverter.asDidRenameFilesParams)}register(e){this._willListener||(this._willListener=Vt.workspace.onWillRenameFiles(this.willRename,this)),super.register(e)}willRename(e){e.waitUntil(this.cacheFileTypes(e,t=>t.oldUri))}doSend(e,t){this.clearFileTypeCache();let r=this._client.middleware.workspace;return r?.didRenameFiles?r.didRenameFiles(e,t):t(e)}};Ot.DidRenameFilesFeature=ed;var td=class extends Xs{constructor(e){super(e,Vt.workspace.onDidDeleteFiles,Nn.DidDeleteFilesNotification.type,"didDelete","didDelete",t=>t,e.code2ProtocolConverter.asDidDeleteFilesParams)}register(e){this._willListener||(this._willListener=Vt.workspace.onWillDeleteFiles(this.willDelete,this)),super.register(e)}willDelete(e){e.waitUntil(this.cacheFileTypes(e,t=>t))}doSend(e,t){this.clearFileTypeCache();let r=this._client.middleware.workspace;return r?.didDeleteFiles?r.didDeleteFiles(e,t):t(e)}};Ot.DidDeleteFilesFeature=td;var qi=class extends Ei{constructor(e,t,r,i,s,o,a){super(e,t,r,i,s),this._requestType=r,this._accessUri=o,this._createParams=a}async send(e){let t=this.waitUntil(e);e.waitUntil(t)}async waitUntil(e){let t=await this.filter(e,this._accessUri);if(t.files.length){let r=i=>this._client.sendRequest(this._requestType,this._createParams(i),i.token).then(this._client.protocol2CodeConverter.asWorkspaceEdit);return this.doSend(t,r)}else return}},nd=class extends qi{constructor(e){super(e,Vt.workspace.onWillCreateFiles,Nn.WillCreateFilesRequest.type,"willCreate","willCreate",t=>t,e.code2ProtocolConverter.asWillCreateFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r?.willCreateFiles?r.willCreateFiles(e,t):t(e)}};Ot.WillCreateFilesFeature=nd;var rd=class extends qi{constructor(e){super(e,Vt.workspace.onWillRenameFiles,Nn.WillRenameFilesRequest.type,"willRename","willRename",t=>t.oldUri,e.code2ProtocolConverter.asWillRenameFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r?.willRenameFiles?r.willRenameFiles(e,t):t(e)}};Ot.WillRenameFilesFeature=rd;var id=class extends qi{constructor(e){super(e,Vt.workspace.onWillDeleteFiles,Nn.WillDeleteFilesRequest.type,"willDelete","willDelete",t=>t,e.code2ProtocolConverter.asWillDeleteFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r?.willDeleteFiles?r.willDeleteFiles(e,t):t(e)}};Ot.WillDeleteFilesFeature=id});var xh=I(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.LinkedEditingFeature=void 0;var SD=require("vscode"),sd=ne(),od=me(),ad=class extends od.TextDocumentLanguageFeature{constructor(e){super(e,sd.LinkedEditingRangeRequest.type)}fillClientCapabilities(e){let t=(0,od.ensure)((0,od.ensure)(e,"textDocument"),"linkedEditingRange");t.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.linkedEditingRangeProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideLinkedEditingRanges:(i,s,o)=>{let a=this._client,u=(m,C,y)=>a.sendRequest(sd.LinkedEditingRangeRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(m,C),y).then(S=>y.isCancellationRequested?null:a.protocol2CodeConverter.asLinkedEditingRanges(S,y),S=>a.handleFailedRequest(sd.LinkedEditingRangeRequest.type,y,S,null)),h=a.middleware;return h.provideLinkedEditingRange?h.provideLinkedEditingRange(i,s,o,u):u(i,s,o)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return SD.languages.registerLinkedEditingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Qs.LinkedEditingFeature=ad});var Fh=I(Js=>{"use strict";Object.defineProperty(Js,"__esModule",{value:!0});Js.TypeHierarchyFeature=void 0;var TD=require("vscode"),vr=ne(),cd=me(),ud=class{constructor(e){this.client=e,this.middleware=e.middleware}prepareTypeHierarchy(e,t,r){let i=this.client,s=this.middleware,o=(a,u,h)=>{let m=i.code2ProtocolConverter.asTextDocumentPositionParams(a,u);return i.sendRequest(vr.TypeHierarchyPrepareRequest.type,m,h).then(C=>h.isCancellationRequested?null:i.protocol2CodeConverter.asTypeHierarchyItems(C,h),C=>i.handleFailedRequest(vr.TypeHierarchyPrepareRequest.type,h,C,null))};return s.prepareTypeHierarchy?s.prepareTypeHierarchy(e,t,r,o):o(e,t,r)}provideTypeHierarchySupertypes(e,t){let r=this.client,i=this.middleware,s=(o,a)=>{let u={item:r.code2ProtocolConverter.asTypeHierarchyItem(o)};return r.sendRequest(vr.TypeHierarchySupertypesRequest.type,u,a).then(h=>a.isCancellationRequested?null:r.protocol2CodeConverter.asTypeHierarchyItems(h,a),h=>r.handleFailedRequest(vr.TypeHierarchySupertypesRequest.type,a,h,null))};return i.provideTypeHierarchySupertypes?i.provideTypeHierarchySupertypes(e,t,s):s(e,t)}provideTypeHierarchySubtypes(e,t){let r=this.client,i=this.middleware,s=(o,a)=>{let u={item:r.code2ProtocolConverter.asTypeHierarchyItem(o)};return r.sendRequest(vr.TypeHierarchySubtypesRequest.type,u,a).then(h=>a.isCancellationRequested?null:r.protocol2CodeConverter.asTypeHierarchyItems(h,a),h=>r.handleFailedRequest(vr.TypeHierarchySubtypesRequest.type,a,h,null))};return i.provideTypeHierarchySubtypes?i.provideTypeHierarchySubtypes(e,t,s):s(e,t)}},dd=class extends cd.TextDocumentLanguageFeature{constructor(e){super(e,vr.TypeHierarchyPrepareRequest.type)}fillClientCapabilities(e){let t=(0,cd.ensure)((0,cd.ensure)(e,"textDocument"),"typeHierarchy");t.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.typeHierarchyProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=this._client,r=new ud(t);return[TD.languages.registerTypeHierarchyProvider(t.protocol2CodeConverter.asDocumentSelector(e.documentSelector),r),r]}};Js.TypeHierarchyFeature=dd});var Mh=I(Zs=>{"use strict";Object.defineProperty(Zs,"__esModule",{value:!0});Zs.InlineValueFeature=void 0;var Nh=require("vscode"),Ys=ne(),ki=me(),ld=class extends ki.TextDocumentLanguageFeature{constructor(e){super(e,Ys.InlineValueRequest.type)}fillClientCapabilities(e){(0,ki.ensure)((0,ki.ensure)(e,"textDocument"),"inlineValue").dynamicRegistration=!0,(0,ki.ensure)((0,ki.ensure)(e,"workspace"),"inlineValue").refreshSupport=!0}initialize(e,t){this._client.onRequest(Ys.InlineValueRefreshRequest.type,async()=>{for(let s of this.getAllProviders())s.onDidChangeInlineValues.fire()});let[r,i]=this.getRegistration(t,e.inlineValueProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r=new Nh.EventEmitter,i={onDidChangeInlineValues:r.event,provideInlineValues:(s,o,a,u)=>{let h=this._client,m=(y,S,v,E)=>{let q={textDocument:h.code2ProtocolConverter.asTextDocumentIdentifier(y),range:h.code2ProtocolConverter.asRange(S),context:h.code2ProtocolConverter.asInlineValueContext(v)};return h.sendRequest(Ys.InlineValueRequest.type,q,E).then(N=>E.isCancellationRequested?null:h.protocol2CodeConverter.asInlineValues(N,E),N=>h.handleFailedRequest(Ys.InlineValueRequest.type,E,N,null))},C=h.middleware;return C.provideInlineValues?C.provideInlineValues(s,o,a,u,m):m(s,o,a,u)}};return[this.registerProvider(t,i),{provider:i,onDidChangeInlineValues:r}]}registerProvider(e,t){return Nh.languages.registerInlineValuesProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Zs.InlineValueFeature=ld});var Ah=I(eo=>{"use strict";Object.defineProperty(eo,"__esModule",{value:!0});eo.InlayHintsFeature=void 0;var Lh=require("vscode"),Wr=ne(),Ii=me(),fd=class extends Ii.TextDocumentLanguageFeature{constructor(e){super(e,Wr.InlayHintRequest.type)}fillClientCapabilities(e){let t=(0,Ii.ensure)((0,Ii.ensure)(e,"textDocument"),"inlayHint");t.dynamicRegistration=!0,t.resolveSupport={properties:["tooltip","textEdits","label.tooltip","label.location","label.command"]},(0,Ii.ensure)((0,Ii.ensure)(e,"workspace"),"inlayHint").refreshSupport=!0}initialize(e,t){this._client.onRequest(Wr.InlayHintRefreshRequest.type,async()=>{for(let s of this.getAllProviders())s.onDidChangeInlayHints.fire()});let[r,i]=this.getRegistration(t,e.inlayHintProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r=new Lh.EventEmitter,i={onDidChangeInlayHints:r.event,provideInlayHints:(s,o,a)=>{let u=this._client,h=async(C,y,S)=>{let v={textDocument:u.code2ProtocolConverter.asTextDocumentIdentifier(C),range:u.code2ProtocolConverter.asRange(y)};try{let E=await u.sendRequest(Wr.InlayHintRequest.type,v,S);return S.isCancellationRequested?null:u.protocol2CodeConverter.asInlayHints(E,S)}catch(E){return u.handleFailedRequest(Wr.InlayHintRequest.type,S,E,null)}},m=u.middleware;return m.provideInlayHints?m.provideInlayHints(s,o,a,h):h(s,o,a)}};return i.resolveInlayHint=e.resolveProvider===!0?(s,o)=>{let a=this._client,u=async(m,C)=>{try{let y=await a.sendRequest(Wr.InlayHintResolveRequest.type,a.code2ProtocolConverter.asInlayHint(m),C);if(C.isCancellationRequested)return null;let S=a.protocol2CodeConverter.asInlayHint(y,C);return C.isCancellationRequested?null:S}catch(y){return a.handleFailedRequest(Wr.InlayHintResolveRequest.type,C,y,null)}},h=a.middleware;return h.resolveInlayHint?h.resolveInlayHint(s,o,u):u(s,o)}:void 0,[this.registerProvider(t,i),{provider:i,onDidChangeInlayHints:r}]}registerProvider(e,t){return Lh.languages.registerInlayHintsProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};eo.InlayHintsFeature=fd});var md=I(xe=>{"use strict";Object.defineProperty(xe,"__esModule",{value:!0});xe.ProposedFeatures=xe.BaseLanguageClient=xe.MessageTransports=xe.SuspendMode=xe.State=xe.CloseAction=xe.ErrorAction=xe.RevealOutputChannelOn=void 0;var Re=require("vscode"),A=ne(),PD=vf(),ED=_f(),yn=Ut(),to=us(),jh=je(),qD=vc(),an=me(),kD=jc(),$h=Qf(),Hh=Yf(),Kr=Zf(),ID=eh(),OD=th(),xD=nh(),FD=ih(),ND=sh(),MD=du(),LD=ah(),AD=ch(),jD=uh(),$D=lh(),hd=fh(),HD=ph(),UD=gh(),WD=yh(),KD=vh(),zD=Ch(),VD=Dh(),BD=_h(),GD=Rh(),XD=bh(),QD=wh(),JD=Sh(),YD=Ph(),ZD=Eh(),e_=qh(),zr=Oh(),t_=xh(),n_=Fh(),r_=Mh(),i_=Ah(),Oi;(function(n){n[n.Info=1]="Info",n[n.Warn=2]="Warn",n[n.Error=3]="Error",n[n.Never=4]="Never"})(Oi=xe.RevealOutputChannelOn||(xe.RevealOutputChannelOn={}));var ro;(function(n){n[n.Continue=1]="Continue",n[n.Shutdown=2]="Shutdown"})(ro=xe.ErrorAction||(xe.ErrorAction={}));var Cr;(function(n){n[n.DoNotRestart=1]="DoNotRestart",n[n.Restart=2]="Restart"})(Cr=xe.CloseAction||(xe.CloseAction={}));var no;(function(n){n[n.Stopped=1]="Stopped",n[n.Starting=3]="Starting",n[n.Running=2]="Running"})(no=xe.State||(xe.State={}));var s_;(function(n){n.off="off",n.on="on"})(s_=xe.SuspendMode||(xe.SuspendMode={}));var pd=class{constructor(e,t){this.client=e,this.maxRestartCount=t,this.restarts=[]}error(e,t,r){return r&&r<=3?{action:ro.Continue}:{action:ro.Shutdown}}closed(){return this.restarts.push(Date.now()),this.restarts.length<=this.maxRestartCount?{action:Cr.Restart}:this.restarts[this.restarts.length-1]-this.restarts[0]<=3*60*1e3?{action:Cr.DoNotRestart,message:`The ${this.client.name} server crashed ${this.maxRestartCount+1} times in the last 3 minutes. The server will not be restarted. See the output for more information.`}:(this.restarts.shift(),{action:Cr.Restart})}},ce;(function(n){n.Initial="initial",n.Starting="starting",n.StartFailed="startFailed",n.Running="running",n.Stopping="stopping",n.Stopped="stopped"})(ce||(ce={}));var o_;(function(n){function e(t){return t&&A.MessageReader.is(t.reader)&&A.MessageWriter.is(t.writer)}n.is=e})(o_=xe.MessageTransports||(xe.MessageTransports={}));var xi=class n{constructor(e,t,r){this._traceFormat=A.TraceFormat.Text,this._diagnosticQueue=new Map,this._diagnosticQueueState={state:"idle"},this._features=[],this._dynamicFeatures=new Map,this.workspaceEditLock=new to.Semaphore(1),this._id=e,this._name=t,r=r||{};let i={isTrusted:!1,supportHtml:!1};r.markdown!==void 0&&(i.isTrusted=r.markdown.isTrusted===!0,i.supportHtml=r.markdown.supportHtml===!0),this._clientOptions={documentSelector:r.documentSelector??[],synchronize:r.synchronize??{},diagnosticCollectionName:r.diagnosticCollectionName,outputChannelName:r.outputChannelName??this._name,revealOutputChannelOn:r.revealOutputChannelOn??Oi.Error,stdioEncoding:r.stdioEncoding??"utf8",initializationOptions:r.initializationOptions,initializationFailedHandler:r.initializationFailedHandler,progressOnInitialization:!!r.progressOnInitialization,errorHandler:r.errorHandler??this.createDefaultErrorHandler(r.connectionOptions?.maxRestartCount),middleware:r.middleware??{},uriConverters:r.uriConverters,workspaceFolder:r.workspaceFolder,connectionOptions:r.connectionOptions,markdown:i,diagnosticPullOptions:r.diagnosticPullOptions??{onChange:!0,onSave:!1},notebookDocumentOptions:r.notebookDocumentOptions??{}},this._clientOptions.synchronize=this._clientOptions.synchronize||{},this._state=ce.Initial,this._ignoredRegistrations=new Set,this._listeners=[],this._notificationHandlers=new Map,this._pendingNotificationHandlers=new Map,this._notificationDisposables=new Map,this._requestHandlers=new Map,this._pendingRequestHandlers=new Map,this._requestDisposables=new Map,this._progressHandlers=new Map,this._pendingProgressHandlers=new Map,this._progressDisposables=new Map,this._connection=void 0,this._initializeResult=void 0,r.outputChannel?(this._outputChannel=r.outputChannel,this._disposeOutputChannel=!1):(this._outputChannel=void 0,this._disposeOutputChannel=!0),this._traceOutputChannel=r.traceOutputChannel,this._diagnostics=void 0,this._pendingOpenNotifications=new Set,this._pendingChangeSemaphore=new to.Semaphore(1),this._pendingChangeDelayer=new to.Delayer(250),this._fileEvents=[],this._fileEventDelayer=new to.Delayer(250),this._onStop=void 0,this._telemetryEmitter=new A.Emitter,this._stateChangeEmitter=new A.Emitter,this._trace=A.Trace.Off,this._tracer={log:(s,o)=>{yn.string(s)?this.logTrace(s,o):this.logObjectTrace(s)}},this._c2p=PD.createConverter(r.uriConverters?r.uriConverters.code2Protocol:void 0),this._p2c=ED.createConverter(r.uriConverters?r.uriConverters.protocol2Code:void 0,this._clientOptions.markdown.isTrusted,this._clientOptions.markdown.supportHtml),this._syncedDocuments=new Map,this.registerBuiltinFeatures()}get name(){return this._name}get middleware(){return this._clientOptions.middleware??Object.create(null)}get clientOptions(){return this._clientOptions}get protocol2CodeConverter(){return this._p2c}get code2ProtocolConverter(){return this._c2p}get onTelemetry(){return this._telemetryEmitter.event}get onDidChangeState(){return this._stateChangeEmitter.event}get outputChannel(){return this._outputChannel||(this._outputChannel=Re.window.createOutputChannel(this._clientOptions.outputChannelName?this._clientOptions.outputChannelName:this._name)),this._outputChannel}get traceOutputChannel(){return this._traceOutputChannel?this._traceOutputChannel:this.outputChannel}get diagnostics(){return this._diagnostics}get state(){return this.getPublicState()}get $state(){return this._state}set $state(e){let t=this.getPublicState();this._state=e;let r=this.getPublicState();r!==t&&this._stateChangeEmitter.fire({oldState:t,newState:r})}getPublicState(){switch(this.$state){case ce.Starting:return no.Starting;case ce.Running:return no.Running;default:return no.Stopped}}get initializeResult(){return this._initializeResult}async sendRequest(e,...t){if(this.$state===ce.StartFailed||this.$state===ce.Stopping||this.$state===ce.Stopped)return Promise.reject(new A.ResponseError(A.ErrorCodes.ConnectionInactive,"Client is not running"));let r=await this.$start();return this._didChangeTextDocumentFeature.syncKind===A.TextDocumentSyncKind.Full&&await this.sendPendingFullTextDocumentChanges(r),r.sendRequest(e,...t)}onRequest(e,t){let r=typeof e=="string"?e:e.method;this._requestHandlers.set(r,t);let i=this.activeConnection(),s;return i!==void 0?(this._requestDisposables.set(r,i.onRequest(e,t)),s={dispose:()=>{let o=this._requestDisposables.get(r);o!==void 0&&(o.dispose(),this._requestDisposables.delete(r))}}):(this._pendingRequestHandlers.set(r,t),s={dispose:()=>{this._pendingRequestHandlers.delete(r);let o=this._requestDisposables.get(r);o!==void 0&&(o.dispose(),this._requestDisposables.delete(r))}}),{dispose:()=>{this._requestHandlers.delete(r),s.dispose()}}}async sendNotification(e,t){if(this.$state===ce.StartFailed||this.$state===ce.Stopping||this.$state===ce.Stopped)return Promise.reject(new A.ResponseError(A.ErrorCodes.ConnectionInactive,"Client is not running"));let r=this._didChangeTextDocumentFeature.syncKind===A.TextDocumentSyncKind.Full,i;r&&typeof e!="string"&&e.method===A.DidOpenTextDocumentNotification.method&&(i=t?.textDocument.uri,this._pendingOpenNotifications.add(i));let s=await this.$start();return r&&await this.sendPendingFullTextDocumentChanges(s),i!==void 0&&this._pendingOpenNotifications.delete(i),s.sendNotification(e,t)}onNotification(e,t){let r=typeof e=="string"?e:e.method;this._notificationHandlers.set(r,t);let i=this.activeConnection(),s;return i!==void 0?(this._notificationDisposables.set(r,i.onNotification(e,t)),s={dispose:()=>{let o=this._notificationDisposables.get(r);o!==void 0&&(o.dispose(),this._notificationDisposables.delete(r))}}):(this._pendingNotificationHandlers.set(r,t),s={dispose:()=>{this._pendingNotificationHandlers.delete(r);let o=this._notificationDisposables.get(r);o!==void 0&&(o.dispose(),this._notificationDisposables.delete(r))}}),{dispose:()=>{this._notificationHandlers.delete(r),s.dispose()}}}async sendProgress(e,t,r){if(this.$state===ce.StartFailed||this.$state===ce.Stopping||this.$state===ce.Stopped)return Promise.reject(new A.ResponseError(A.ErrorCodes.ConnectionInactive,"Client is not running"));try{return(await this.$start()).sendProgress(e,t,r)}catch(i){throw this.error(`Sending progress for token ${t} failed.`,i),i}}onProgress(e,t,r){this._progressHandlers.set(t,{type:e,handler:r});let i=this.activeConnection(),s,o=this._clientOptions.middleware?.handleWorkDoneProgress,a=A.WorkDoneProgress.is(e)&&o!==void 0?u=>{o(t,u,()=>r(u))}:r;return i!==void 0?(this._progressDisposables.set(t,i.onProgress(e,t,a)),s={dispose:()=>{let u=this._progressDisposables.get(t);u!==void 0&&(u.dispose(),this._progressDisposables.delete(t))}}):(this._pendingProgressHandlers.set(t,{type:e,handler:r}),s={dispose:()=>{this._pendingProgressHandlers.delete(t);let u=this._progressDisposables.get(t);u!==void 0&&(u.dispose(),this._progressDisposables.delete(t))}}),{dispose:()=>{this._progressHandlers.delete(t),s.dispose()}}}createDefaultErrorHandler(e){if(e!==void 0&&e<0)throw new Error(`Invalid maxRestartCount: ${e}`);return new pd(this,e??4)}async setTrace(e){this._trace=e;let t=this.activeConnection();t!==void 0&&await t.trace(this._trace,this._tracer,{sendNotification:!1,traceFormat:this._traceFormat})}data2String(e){if(e instanceof A.ResponseError){let t=e;return` Message: ${t.message}
+ Code: ${t.code} ${t.data?`
+`+t.data.toString():""}`}return e instanceof Error?yn.string(e.stack)?e.stack:e.message:yn.string(e)?e:e.toString()}info(e,t,r=!0){this.outputChannel.appendLine(`[Info - ${new Date().toLocaleTimeString()}] ${e}`),t!=null&&this.outputChannel.appendLine(this.data2String(t)),r&&this._clientOptions.revealOutputChannelOn<=Oi.Info&&this.showNotificationMessage(A.MessageType.Info,e)}warn(e,t,r=!0){this.outputChannel.appendLine(`[Warn - ${new Date().toLocaleTimeString()}] ${e}`),t!=null&&this.outputChannel.appendLine(this.data2String(t)),r&&this._clientOptions.revealOutputChannelOn<=Oi.Warn&&this.showNotificationMessage(A.MessageType.Warning,e)}error(e,t,r=!0){this.outputChannel.appendLine(`[Error - ${new Date().toLocaleTimeString()}] ${e}`),t!=null&&this.outputChannel.appendLine(this.data2String(t)),(r==="force"||r&&this._clientOptions.revealOutputChannelOn<=Oi.Error)&&this.showNotificationMessage(A.MessageType.Error,e)}showNotificationMessage(e,t){t=t??"A request has failed. See the output for more information.",(e===A.MessageType.Error?Re.window.showErrorMessage:e===A.MessageType.Warning?Re.window.showWarningMessage:Re.window.showInformationMessage)(t,"Go to output").then(i=>{i!==void 0&&this.outputChannel.show(!0)})}logTrace(e,t){this.traceOutputChannel.appendLine(`[Trace - ${new Date().toLocaleTimeString()}] ${e}`),t&&this.traceOutputChannel.appendLine(this.data2String(t))}logObjectTrace(e){e.isLSPMessage&&e.type?this.traceOutputChannel.append(`[LSP - ${new Date().toLocaleTimeString()}] `):this.traceOutputChannel.append(`[Trace - ${new Date().toLocaleTimeString()}] `),e&&this.traceOutputChannel.appendLine(`${JSON.stringify(e)}`)}needsStart(){return this.$state===ce.Initial||this.$state===ce.Stopping||this.$state===ce.Stopped}needsStop(){return this.$state===ce.Starting||this.$state===ce.Running}activeConnection(){return this.$state===ce.Running&&this._connection!==void 0?this._connection:void 0}isRunning(){return this.$state===ce.Running}async start(){if(this._disposed==="disposing"||this._disposed==="disposed")throw new Error("Client got disposed and can't be restarted.");if(this.$state===ce.Stopping)throw new Error("Client is currently stopping. Can only restart a full stopped client");if(this._onStart!==void 0)return this._onStart;let[e,t,r]=this.createOnStartPromise();this._onStart=e,this._diagnostics===void 0&&(this._diagnostics=this._clientOptions.diagnosticCollectionName?Re.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName):Re.languages.createDiagnosticCollection());for(let[i,s]of this._notificationHandlers)this._pendingNotificationHandlers.has(i)||this._pendingNotificationHandlers.set(i,s);for(let[i,s]of this._requestHandlers)this._pendingRequestHandlers.has(i)||this._pendingRequestHandlers.set(i,s);for(let[i,s]of this._progressHandlers)this._pendingProgressHandlers.has(i)||this._pendingProgressHandlers.set(i,s);this.$state=ce.Starting;try{let i=await this.createConnection();i.onNotification(A.LogMessageNotification.type,s=>{switch(s.type){case A.MessageType.Error:this.error(s.message,void 0,!1);break;case A.MessageType.Warning:this.warn(s.message,void 0,!1);break;case A.MessageType.Info:this.info(s.message,void 0,!1);break;default:this.outputChannel.appendLine(s.message)}}),i.onNotification(A.ShowMessageNotification.type,s=>{switch(s.type){case A.MessageType.Error:Re.window.showErrorMessage(s.message);break;case A.MessageType.Warning:Re.window.showWarningMessage(s.message);break;case A.MessageType.Info:Re.window.showInformationMessage(s.message);break;default:Re.window.showInformationMessage(s.message)}}),i.onRequest(A.ShowMessageRequest.type,s=>{let o;switch(s.type){case A.MessageType.Error:o=Re.window.showErrorMessage;break;case A.MessageType.Warning:o=Re.window.showWarningMessage;break;case A.MessageType.Info:o=Re.window.showInformationMessage;break;default:o=Re.window.showInformationMessage}let a=s.actions||[];return o(s.message,...a)}),i.onNotification(A.TelemetryEventNotification.type,s=>{this._telemetryEmitter.fire(s)}),i.onRequest(A.ShowDocumentRequest.type,async s=>{let o=async u=>{let h=this.protocol2CodeConverter.asUri(u.uri);try{if(u.external===!0)return{success:await Re.env.openExternal(h)};{let m={};return u.selection!==void 0&&(m.selection=this.protocol2CodeConverter.asRange(u.selection)),u.takeFocus===void 0||u.takeFocus===!1?m.preserveFocus=!0:u.takeFocus===!0&&(m.preserveFocus=!1),await Re.window.showTextDocument(h,m),{success:!0}}}catch{return{success:!1}}},a=this._clientOptions.middleware.window?.showDocument;return a!==void 0?a(s,o):o(s)}),i.listen(),await this.initialize(i),t()}catch(i){this.$state=ce.StartFailed,this.error(`${this._name} client: couldn't create connection to server.`,i,"force"),r(i)}return this._onStart}createOnStartPromise(){let e,t;return[new Promise((i,s)=>{e=i,t=s}),e,t]}async initialize(e){this.refreshTrace(e,!1);let t=this._clientOptions.initializationOptions,[r,i]=this._clientOptions.workspaceFolder!==void 0?[this._clientOptions.workspaceFolder.uri.fsPath,[{uri:this._c2p.asUri(this._clientOptions.workspaceFolder.uri),name:this._clientOptions.workspaceFolder.name}]]:[this._clientGetRootPath(),null],s={processId:null,clientInfo:{name:Re.env.appName,version:Re.version},locale:this.getLocale(),rootPath:r||null,rootUri:r?this._c2p.asUri(Re.Uri.file(r)):null,capabilities:this.computeClientCapabilities(),initializationOptions:yn.func(t)?t():t,trace:A.Trace.toString(this._trace),workspaceFolders:i};if(this.fillInitializeParams(s),this._clientOptions.progressOnInitialization){let o=jh.generateUuid(),a=new qD.ProgressPart(e,o);s.workDoneToken=o;try{let u=await this.doInitialize(e,s);return a.done(),u}catch(u){throw a.cancel(),u}}else return this.doInitialize(e,s)}async doInitialize(e,t){try{let r=await e.initialize(t);if(r.capabilities.positionEncoding!==void 0&&r.capabilities.positionEncoding!==A.PositionEncodingKind.UTF16)throw new Error(`Unsupported position encoding (${r.capabilities.positionEncoding}) received from server ${this.name}`);this._initializeResult=r,this.$state=ce.Running;let i;yn.number(r.capabilities.textDocumentSync)?r.capabilities.textDocumentSync===A.TextDocumentSyncKind.None?i={openClose:!1,change:A.TextDocumentSyncKind.None,save:void 0}:i={openClose:!0,change:r.capabilities.textDocumentSync,save:{includeText:!1}}:r.capabilities.textDocumentSync!==void 0&&r.capabilities.textDocumentSync!==null&&(i=r.capabilities.textDocumentSync),this._capabilities=Object.assign({},r.capabilities,{resolvedTextDocumentSync:i}),e.onNotification(A.PublishDiagnosticsNotification.type,s=>this.handleDiagnostics(s)),e.onRequest(A.RegistrationRequest.type,s=>this.handleRegistrationRequest(s)),e.onRequest("client/registerFeature",s=>this.handleRegistrationRequest(s)),e.onRequest(A.UnregistrationRequest.type,s=>this.handleUnregistrationRequest(s)),e.onRequest("client/unregisterFeature",s=>this.handleUnregistrationRequest(s)),e.onRequest(A.ApplyWorkspaceEditRequest.type,s=>this.handleApplyWorkspaceEdit(s));for(let[s,o]of this._pendingNotificationHandlers)this._notificationDisposables.set(s,e.onNotification(s,o));this._pendingNotificationHandlers.clear();for(let[s,o]of this._pendingRequestHandlers)this._requestDisposables.set(s,e.onRequest(s,o));this._pendingRequestHandlers.clear();for(let[s,o]of this._pendingProgressHandlers)this._progressDisposables.set(s,e.onProgress(o.type,s,o.handler));return this._pendingProgressHandlers.clear(),await e.sendNotification(A.InitializedNotification.type,{}),this.hookFileEvents(e),this.hookConfigurationChanged(e),this.initializeFeatures(e),r}catch(r){throw this._clientOptions.initializationFailedHandler?this._clientOptions.initializationFailedHandler(r)?this.initialize(e):this.stop():r instanceof A.ResponseError&&r.data&&r.data.retry?Re.window.showErrorMessage(r.message,{title:"Retry",id:"retry"}).then(i=>{i&&i.id==="retry"?this.initialize(e):this.stop()}):(r&&r.message&&Re.window.showErrorMessage(r.message),this.error("Server initialization failed.",r),this.stop()),r}}_clientGetRootPath(){let e=Re.workspace.workspaceFolders;if(!e||e.length===0)return;let t=e[0];if(t.uri.scheme==="file")return t.uri.fsPath}stop(e=2e3){return this.shutdown("stop",e)}dispose(e=2e3){try{return this._disposed="disposing",this.stop(e)}finally{this._disposed="disposed"}}async shutdown(e,t){if(this.$state===ce.Stopped||this.$state===ce.Initial)return;if(this.$state===ce.Stopping){if(this._onStop!==void 0)return this._onStop;throw new Error("Client is stopping but no stop promise available.")}let r=this.activeConnection();if(r===void 0||this.$state!==ce.Running)throw new Error(`Client is not running and can't be stopped. It's current state is: ${this.$state}`);this._initializeResult=void 0,this.$state=ce.Stopping,this.cleanUp(e);let i=new Promise(o=>{(0,A.RAL)().timer.setTimeout(o,t)}),s=(async o=>(await o.shutdown(),await o.exit(),o))(r);return this._onStop=Promise.race([i,s]).then(o=>{if(o!==void 0)o.end(),o.dispose();else throw this.error("Stopping server timed out",void 0,!1),new Error("Stopping the server timed out")},o=>{throw this.error("Stopping server failed",o,!1),o}).finally(()=>{this.$state=ce.Stopped,e==="stop"&&this.cleanUpChannel(),this._onStart=void 0,this._onStop=void 0,this._connection=void 0,this._ignoredRegistrations.clear()})}cleanUp(e){this._fileEvents=[],this._fileEventDelayer.cancel();let t=this._listeners.splice(0,this._listeners.length);for(let r of t)r.dispose();this._syncedDocuments&&this._syncedDocuments.clear();for(let r of Array.from(this._features.entries()).map(i=>i[1]).reverse())r.dispose();e==="stop"&&this._diagnostics!==void 0&&(this._diagnostics.dispose(),this._diagnostics=void 0),this._idleInterval!==void 0&&(this._idleInterval.dispose(),this._idleInterval=void 0)}cleanUpChannel(){this._outputChannel!==void 0&&this._disposeOutputChannel&&(this._outputChannel.dispose(),this._outputChannel=void 0)}notifyFileEvent(e){let t=this;async function r(s){return t._fileEvents.push(s),t._fileEventDelayer.trigger(async()=>{await t.sendNotification(A.DidChangeWatchedFilesNotification.type,{changes:t._fileEvents}),t._fileEvents=[]})}let i=this.clientOptions.middleware?.workspace;(i?.didChangeWatchedFile?i.didChangeWatchedFile(e,r):r(e)).catch(s=>{t.error("Notify file events failed.",s)})}async sendPendingFullTextDocumentChanges(e){return this._pendingChangeSemaphore.lock(async()=>{try{let t=this._didChangeTextDocumentFeature.getPendingDocumentChanges(this._pendingOpenNotifications);if(t.length===0)return;for(let r of t){let i=this.code2ProtocolConverter.asChangeTextDocumentParams(r);await e.sendNotification(A.DidChangeTextDocumentNotification.type,i),this._didChangeTextDocumentFeature.notificationSent(r,A.DidChangeTextDocumentNotification.type,i)}}catch(t){throw this.error("Sending pending changes failed",t,!1),t}})}triggerPendingChangeDelivery(){this._pendingChangeDelayer.trigger(async()=>{let e=this.activeConnection();if(e===void 0){this.triggerPendingChangeDelivery();return}await this.sendPendingFullTextDocumentChanges(e)}).catch(e=>this.error("Delivering pending changes failed",e,!1))}handleDiagnostics(e){if(!this._diagnostics)return;let t=e.uri;this._diagnosticQueueState.state==="busy"&&this._diagnosticQueueState.document===t&&this._diagnosticQueueState.tokenSource.cancel(),this._diagnosticQueue.set(e.uri,e.diagnostics),this.triggerDiagnosticQueue()}triggerDiagnosticQueue(){(0,A.RAL)().timer.setImmediate(()=>{this.workDiagnosticQueue()})}workDiagnosticQueue(){if(this._diagnosticQueueState.state==="busy")return;let e=this._diagnosticQueue.entries().next();if(e.done===!0)return;let[t,r]=e.value;this._diagnosticQueue.delete(t);let i=new Re.CancellationTokenSource;this._diagnosticQueueState={state:"busy",document:t,tokenSource:i},this._p2c.asDiagnostics(r,i.token).then(s=>{if(!i.token.isCancellationRequested){let o=this._p2c.asUri(t),a=this.clientOptions.middleware;a.handleDiagnostics?a.handleDiagnostics(o,s,(u,h)=>this.setDiagnostics(u,h)):this.setDiagnostics(o,s)}}).finally(()=>{this._diagnosticQueueState={state:"idle"},this.triggerDiagnosticQueue()})}setDiagnostics(e,t){this._diagnostics&&this._diagnostics.set(e,t)}getLocale(){return Re.env.language}async $start(){if(this.$state===ce.StartFailed)throw new Error("Previous start failed. Can't restart server.");await this.start();let e=this.activeConnection();if(e===void 0)throw new Error("Starting server failed");return e}async createConnection(){let e=(i,s,o)=>{this.handleConnectionError(i,s,o).catch(a=>this.error("Handling connection error failed",a))},t=()=>{this.handleConnectionClosed().catch(i=>this.error("Handling connection close failed",i))},r=await this.createMessageTransports(this._clientOptions.stdioEncoding||"utf8");return this._connection=a_(r.reader,r.writer,e,t,this._clientOptions.connectionOptions),this._connection}async handleConnectionClosed(){if(this.$state===ce.Stopped)return;try{this._connection!==void 0&&this._connection.dispose()}catch{}let e={action:Cr.DoNotRestart};if(this.$state!==ce.Stopping)try{e=await this._clientOptions.errorHandler.closed()}catch{}this._connection=void 0,e.action===Cr.DoNotRestart?(this.error(e.message??"Connection to server got closed. Server will not be restarted.",void 0,e.handled===!0?!1:"force"),this.cleanUp("stop"),this.$state===ce.Starting?this.$state=ce.StartFailed:this.$state=ce.Stopped,this._onStop=Promise.resolve(),this._onStart=void 0):e.action===Cr.Restart&&(this.info(e.message??"Connection to server got closed. Server will restart.",!e.handled),this.cleanUp("restart"),this.$state=ce.Initial,this._onStop=Promise.resolve(),this._onStart=void 0,this.start().catch(t=>this.error("Restarting server failed",t,"force")))}async handleConnectionError(e,t,r){let i=await this._clientOptions.errorHandler.error(e,t,r);i.action===ro.Shutdown&&(this.error(i.message??`Client ${this._name}: connection to server is erroring. Shutting down server.`,void 0,i.handled===!0?!1:"force"),this.stop().catch(s=>{this.error("Stopping server failed",s,!1)}))}hookConfigurationChanged(e){this._listeners.push(Re.workspace.onDidChangeConfiguration(()=>{this.refreshTrace(e,!0)}))}refreshTrace(e,t=!1){let r=Re.workspace.getConfiguration(this._id),i=A.Trace.Off,s=A.TraceFormat.Text;if(r){let o=r.get("trace.server","off");typeof o=="string"?i=A.Trace.fromString(o):(i=A.Trace.fromString(r.get("trace.server.verbosity","off")),s=A.TraceFormat.fromString(r.get("trace.server.format","text")))}this._trace=i,this._traceFormat=s,e.trace(this._trace,this._tracer,{sendNotification:t,traceFormat:this._traceFormat}).catch(o=>{this.error("Updating trace failed with error",o,!1)})}hookFileEvents(e){let t=this._clientOptions.synchronize.fileEvents;if(!t)return;let r;yn.array(t)?r=t:r=[t],r&&this._dynamicFeatures.get(A.DidChangeWatchedFilesNotification.type.method).registerRaw(jh.generateUuid(),r)}registerFeatures(e){for(let t of e)this.registerFeature(t)}registerFeature(e){if(this._features.push(e),an.DynamicFeature.is(e)){let t=e.registrationType;this._dynamicFeatures.set(t.method,e)}}getFeature(e){return this._dynamicFeatures.get(e)}hasDedicatedTextSynchronizationFeature(e){let t=this.getFeature(A.NotebookDocumentSyncRegistrationType.method);return t===void 0||!(t instanceof $h.NotebookDocumentSyncFeature)?!1:t.handles(e)}registerBuiltinFeatures(){let e=new Map;this.registerFeature(new Hh.ConfigurationFeature(this)),this.registerFeature(new Kr.DidOpenTextDocumentFeature(this,this._syncedDocuments)),this._didChangeTextDocumentFeature=new Kr.DidChangeTextDocumentFeature(this,e),this._didChangeTextDocumentFeature.onPendingChangeAdded(()=>{this.triggerPendingChangeDelivery()}),this.registerFeature(this._didChangeTextDocumentFeature),this.registerFeature(new Kr.WillSaveFeature(this)),this.registerFeature(new Kr.WillSaveWaitUntilFeature(this)),this.registerFeature(new Kr.DidSaveTextDocumentFeature(this)),this.registerFeature(new Kr.DidCloseTextDocumentFeature(this,this._syncedDocuments,e)),this.registerFeature(new KD.FileSystemWatcherFeature(this,t=>this.notifyFileEvent(t))),this.registerFeature(new ID.CompletionItemFeature(this)),this.registerFeature(new OD.HoverFeature(this)),this.registerFeature(new FD.SignatureHelpFeature(this)),this.registerFeature(new xD.DefinitionFeature(this)),this.registerFeature(new AD.ReferencesFeature(this)),this.registerFeature(new ND.DocumentHighlightFeature(this)),this.registerFeature(new MD.DocumentSymbolFeature(this)),this.registerFeature(new LD.WorkspaceSymbolFeature(this)),this.registerFeature(new jD.CodeActionFeature(this)),this.registerFeature(new $D.CodeLensFeature(this)),this.registerFeature(new hd.DocumentFormattingFeature(this)),this.registerFeature(new hd.DocumentRangeFormattingFeature(this)),this.registerFeature(new hd.DocumentOnTypeFormattingFeature(this)),this.registerFeature(new HD.RenameFeature(this)),this.registerFeature(new UD.DocumentLinkFeature(this)),this.registerFeature(new WD.ExecuteCommandFeature(this)),this.registerFeature(new Hh.SyncConfigurationFeature(this)),this.registerFeature(new BD.TypeDefinitionFeature(this)),this.registerFeature(new VD.ImplementationFeature(this)),this.registerFeature(new zD.ColorProviderFeature(this)),this.clientOptions.workspaceFolder===void 0&&this.registerFeature(new GD.WorkspaceFoldersFeature(this)),this.registerFeature(new XD.FoldingRangeFeature(this)),this.registerFeature(new QD.DeclarationFeature(this)),this.registerFeature(new JD.SelectionRangeFeature(this)),this.registerFeature(new YD.ProgressFeature(this)),this.registerFeature(new ZD.CallHierarchyFeature(this)),this.registerFeature(new e_.SemanticTokensFeature(this)),this.registerFeature(new t_.LinkedEditingFeature(this)),this.registerFeature(new zr.DidCreateFilesFeature(this)),this.registerFeature(new zr.DidRenameFilesFeature(this)),this.registerFeature(new zr.DidDeleteFilesFeature(this)),this.registerFeature(new zr.WillCreateFilesFeature(this)),this.registerFeature(new zr.WillRenameFilesFeature(this)),this.registerFeature(new zr.WillDeleteFilesFeature(this)),this.registerFeature(new n_.TypeHierarchyFeature(this)),this.registerFeature(new r_.InlineValueFeature(this)),this.registerFeature(new i_.InlayHintsFeature(this)),this.registerFeature(new kD.DiagnosticFeature(this)),this.registerFeature(new $h.NotebookDocumentSyncFeature(this))}registerProposedFeatures(){this.registerFeatures(Uh.createAll(this))}fillInitializeParams(e){for(let t of this._features)yn.func(t.fillInitializeParams)&&t.fillInitializeParams(e)}computeClientCapabilities(){let e={};(0,an.ensure)(e,"workspace").applyEdit=!0;let t=(0,an.ensure)((0,an.ensure)(e,"workspace"),"workspaceEdit");t.documentChanges=!0,t.resourceOperations=[A.ResourceOperationKind.Create,A.ResourceOperationKind.Rename,A.ResourceOperationKind.Delete],t.failureHandling=A.FailureHandlingKind.TextOnlyTransactional,t.normalizesLineEndings=!0,t.changeAnnotationSupport={groupsOnLabel:!0};let r=(0,an.ensure)((0,an.ensure)(e,"textDocument"),"publishDiagnostics");r.relatedInformation=!0,r.versionSupport=!1,r.tagSupport={valueSet:[A.DiagnosticTag.Unnecessary,A.DiagnosticTag.Deprecated]},r.codeDescriptionSupport=!0,r.dataSupport=!0;let i=(0,an.ensure)(e,"window"),s=(0,an.ensure)(i,"showMessage");s.messageActionItem={additionalPropertiesSupport:!0};let o=(0,an.ensure)(i,"showDocument");o.support=!0;let a=(0,an.ensure)(e,"general");a.staleRequestSupport={cancel:!0,retryOnContentModified:Array.from(n.RequestsToCancelOnContentModified)},a.regularExpressions={engine:"ECMAScript",version:"ES2020"},a.markdown={parser:"marked",version:"1.1.0"},a.positionEncodings=["utf-16"],this._clientOptions.markdown.supportHtml&&(a.markdown.allowedTags=["ul","li","p","code","blockquote","ol","h1","h2","h3","h4","h5","h6","hr","em","pre","table","thead","tbody","tr","th","td","div","del","a","strong","br","img","span"]);for(let u of this._features)u.fillClientCapabilities(e);return e}initializeFeatures(e){let t=this._clientOptions.documentSelector;for(let r of this._features)yn.func(r.preInitialize)&&r.preInitialize(this._capabilities,t);for(let r of this._features)r.initialize(this._capabilities,t)}async handleRegistrationRequest(e){if(!this.isRunning()){for(let t of e.registrations)this._ignoredRegistrations.add(t.id);return}for(let t of e.registrations){let r=this._dynamicFeatures.get(t.method);if(r===void 0)return Promise.reject(new Error(`No feature implementation for ${t.method} found. Registration failed.`));let i=t.registerOptions??{};i.documentSelector=i.documentSelector??this._clientOptions.documentSelector;let s={id:t.id,registerOptions:i};try{r.register(s)}catch(o){return Promise.reject(o)}}}async handleUnregistrationRequest(e){for(let t of e.unregisterations){if(this._ignoredRegistrations.has(t.id))continue;let r=this._dynamicFeatures.get(t.method);if(!r)return Promise.reject(new Error(`No feature implementation for ${t.method} found. Unregistration failed.`));r.unregister(t.id)}}async handleApplyWorkspaceEdit(e){let t=e.edit,r=await this.workspaceEditLock.lock(()=>this._p2c.asWorkspaceEdit(t)),i=new Map;Re.workspace.textDocuments.forEach(o=>i.set(o.uri.toString(),o));let s=!1;if(t.documentChanges){for(let o of t.documentChanges)if(A.TextDocumentEdit.is(o)&&o.textDocument.version&&o.textDocument.version>=0){let a=this._p2c.asUri(o.textDocument.uri).toString(),u=i.get(a);if(u&&u.version!==o.textDocument.version){s=!0;break}}}return s?Promise.resolve({applied:!1}):yn.asPromise(Re.workspace.applyEdit(r).then(o=>({applied:o})))}handleFailedRequest(e,t,r,i,s=!0){if(r instanceof A.ResponseError){if(r.code===A.ErrorCodes.PendingResponseRejected||r.code===A.ErrorCodes.ConnectionInactive)return i;if(r.code===A.LSPErrorCodes.RequestCancelled||r.code===A.LSPErrorCodes.ServerCancelled){if(t!==void 0&&t.isCancellationRequested)return i;throw r.data!==void 0?new an.LSPCancellationError(r.data):new Re.CancellationError}else if(r.code===A.LSPErrorCodes.ContentModified){if(n.RequestsToCancelOnContentModified.has(e.method)||n.CancellableResolveCalls.has(e.method))throw new Re.CancellationError;return i}}throw this.error(`Request ${e.method} failed.`,r,s),r}};xe.BaseLanguageClient=xi;xi.RequestsToCancelOnContentModified=new Set([A.SemanticTokensRequest.method,A.SemanticTokensRangeRequest.method,A.SemanticTokensDeltaRequest.method]);xi.CancellableResolveCalls=new Set([A.CompletionResolveRequest.method,A.CodeLensResolveRequest.method,A.CodeActionResolveRequest.method,A.InlayHintResolveRequest.method,A.DocumentLinkResolveRequest.method,A.WorkspaceSymbolResolveRequest.method]);var gd=class{error(e){(0,A.RAL)().console.error(e)}warn(e){(0,A.RAL)().console.warn(e)}info(e){(0,A.RAL)().console.info(e)}log(e){(0,A.RAL)().console.log(e)}};function a_(n,e,t,r,i){let s=new gd,o=(0,A.createProtocolConnection)(n,e,s,i);return o.onError(u=>{t(u[0],u[1],u[2])}),o.onClose(r),{listen:()=>o.listen(),sendRequest:o.sendRequest,onRequest:o.onRequest,hasPendingResponse:o.hasPendingResponse,sendNotification:o.sendNotification,onNotification:o.onNotification,onProgress:o.onProgress,sendProgress:o.sendProgress,trace:(u,h,m)=>{let C={sendNotification:!1,traceFormat:A.TraceFormat.Text};return m===void 0?o.trace(u,h,C):(yn.boolean(m),o.trace(u,h,m))},initialize:u=>o.sendRequest(A.InitializeRequest.type,u),shutdown:()=>o.sendRequest(A.ShutdownRequest.type,void 0),exit:()=>o.sendNotification(A.ExitNotification.type),end:()=>o.end(),dispose:()=>o.dispose()}}var Uh;(function(n){function e(t){return[]}n.createAll=e})(Uh=xe.ProposedFeatures||(xe.ProposedFeatures={}))});var Kh=I(io=>{"use strict";Object.defineProperty(io,"__esModule",{value:!0});io.terminate=void 0;var Wh=require("child_process"),c_=require("path"),u_=process.platform==="win32",d_=process.platform==="darwin",l_=process.platform==="linux";function f_(n,e){if(u_)try{let i={stdio:["pipe","pipe","ignore"]};return e&&(i.cwd=e),Wh.execFileSync("taskkill",["/T","/F","/PID",n.pid.toString()],i),!0}catch{return!1}else if(l_||d_)try{var t=(0,c_.join)(__dirname,"terminateProcess.sh"),r=Wh.spawnSync(t,[n.pid.toString()]);return!r.error}catch{return!1}else return n.kill("SIGKILL"),!0}io.terminate=f_});var yd=I((Iw,zh)=>{"use strict";zh.exports=ne()});var Fi=I((Ow,Vh)=>{"use strict";var h_=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...n)=>console.error("SEMVER",...n):()=>{};Vh.exports=h_});var so=I((xw,Bh)=>{"use strict";var p_="2.0.0",g_=Number.MAX_SAFE_INTEGER||9007199254740991,m_=16,y_=250,v_=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Bh.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:m_,MAX_SAFE_BUILD_LENGTH:y_,MAX_SAFE_INTEGER:g_,RELEASE_TYPES:v_,SEMVER_SPEC_VERSION:p_,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var oo=I((vn,Gh)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:vd,MAX_SAFE_BUILD_LENGTH:C_,MAX_LENGTH:D_}=so(),__=Fi();vn=Gh.exports={};var R_=vn.re=[],b_=vn.safeRe=[],K=vn.src=[],w_=vn.safeSrc=[],z=vn.t={},S_=0,Cd="[a-zA-Z0-9-]",T_=[["\\s",1],["\\d",D_],[Cd,C_]],P_=n=>{for(let[e,t]of T_)n=n.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return n},ie=(n,e,t)=>{let r=P_(e),i=S_++;__(n,i,e),z[n]=i,K[i]=e,w_[i]=r,R_[i]=new RegExp(e,t?"g":void 0),b_[i]=new RegExp(r,t?"g":void 0)};ie("NUMERICIDENTIFIER","0|[1-9]\\d*");ie("NUMERICIDENTIFIERLOOSE","\\d+");ie("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Cd}*`);ie("MAINVERSION",`(${K[z.NUMERICIDENTIFIER]})\\.(${K[z.NUMERICIDENTIFIER]})\\.(${K[z.NUMERICIDENTIFIER]})`);ie("MAINVERSIONLOOSE",`(${K[z.NUMERICIDENTIFIERLOOSE]})\\.(${K[z.NUMERICIDENTIFIERLOOSE]})\\.(${K[z.NUMERICIDENTIFIERLOOSE]})`);ie("PRERELEASEIDENTIFIER",`(?:${K[z.NONNUMERICIDENTIFIER]}|${K[z.NUMERICIDENTIFIER]})`);ie("PRERELEASEIDENTIFIERLOOSE",`(?:${K[z.NONNUMERICIDENTIFIER]}|${K[z.NUMERICIDENTIFIERLOOSE]})`);ie("PRERELEASE",`(?:-(${K[z.PRERELEASEIDENTIFIER]}(?:\\.${K[z.PRERELEASEIDENTIFIER]})*))`);ie("PRERELEASELOOSE",`(?:-?(${K[z.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${K[z.PRERELEASEIDENTIFIERLOOSE]})*))`);ie("BUILDIDENTIFIER",`${Cd}+`);ie("BUILD",`(?:\\+(${K[z.BUILDIDENTIFIER]}(?:\\.${K[z.BUILDIDENTIFIER]})*))`);ie("FULLPLAIN",`v?${K[z.MAINVERSION]}${K[z.PRERELEASE]}?${K[z.BUILD]}?`);ie("FULL",`^${K[z.FULLPLAIN]}$`);ie("LOOSEPLAIN",`[v=\\s]*${K[z.MAINVERSIONLOOSE]}${K[z.PRERELEASELOOSE]}?${K[z.BUILD]}?`);ie("LOOSE",`^${K[z.LOOSEPLAIN]}$`);ie("GTLT","((?:<|>)?=?)");ie("XRANGEIDENTIFIERLOOSE",`${K[z.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);ie("XRANGEIDENTIFIER",`${K[z.NUMERICIDENTIFIER]}|x|X|\\*`);ie("XRANGEPLAIN",`[v=\\s]*(${K[z.XRANGEIDENTIFIER]})(?:\\.(${K[z.XRANGEIDENTIFIER]})(?:\\.(${K[z.XRANGEIDENTIFIER]})(?:${K[z.PRERELEASE]})?${K[z.BUILD]}?)?)?`);ie("XRANGEPLAINLOOSE",`[v=\\s]*(${K[z.XRANGEIDENTIFIERLOOSE]})(?:\\.(${K[z.XRANGEIDENTIFIERLOOSE]})(?:\\.(${K[z.XRANGEIDENTIFIERLOOSE]})(?:${K[z.PRERELEASELOOSE]})?${K[z.BUILD]}?)?)?`);ie("XRANGE",`^${K[z.GTLT]}\\s*${K[z.XRANGEPLAIN]}$`);ie("XRANGELOOSE",`^${K[z.GTLT]}\\s*${K[z.XRANGEPLAINLOOSE]}$`);ie("COERCEPLAIN",`(^|[^\\d])(\\d{1,${vd}})(?:\\.(\\d{1,${vd}}))?(?:\\.(\\d{1,${vd}}))?`);ie("COERCE",`${K[z.COERCEPLAIN]}(?:$|[^\\d])`);ie("COERCEFULL",K[z.COERCEPLAIN]+`(?:${K[z.PRERELEASE]})?(?:${K[z.BUILD]})?(?:$|[^\\d])`);ie("COERCERTL",K[z.COERCE],!0);ie("COERCERTLFULL",K[z.COERCEFULL],!0);ie("LONETILDE","(?:~>?)");ie("TILDETRIM",`(\\s*)${K[z.LONETILDE]}\\s+`,!0);vn.tildeTrimReplace="$1~";ie("TILDE",`^${K[z.LONETILDE]}${K[z.XRANGEPLAIN]}$`);ie("TILDELOOSE",`^${K[z.LONETILDE]}${K[z.XRANGEPLAINLOOSE]}$`);ie("LONECARET","(?:\\^)");ie("CARETTRIM",`(\\s*)${K[z.LONECARET]}\\s+`,!0);vn.caretTrimReplace="$1^";ie("CARET",`^${K[z.LONECARET]}${K[z.XRANGEPLAIN]}$`);ie("CARETLOOSE",`^${K[z.LONECARET]}${K[z.XRANGEPLAINLOOSE]}$`);ie("COMPARATORLOOSE",`^${K[z.GTLT]}\\s*(${K[z.LOOSEPLAIN]})$|^$`);ie("COMPARATOR",`^${K[z.GTLT]}\\s*(${K[z.FULLPLAIN]})$|^$`);ie("COMPARATORTRIM",`(\\s*)${K[z.GTLT]}\\s*(${K[z.LOOSEPLAIN]}|${K[z.XRANGEPLAIN]})`,!0);vn.comparatorTrimReplace="$1$2$3";ie("HYPHENRANGE",`^\\s*(${K[z.XRANGEPLAIN]})\\s+-\\s+(${K[z.XRANGEPLAIN]})\\s*$`);ie("HYPHENRANGELOOSE",`^\\s*(${K[z.XRANGEPLAINLOOSE]})\\s+-\\s+(${K[z.XRANGEPLAINLOOSE]})\\s*$`);ie("STAR","(<|>)?=?\\s*\\*");ie("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");ie("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ao=I((Fw,Xh)=>{"use strict";var E_=Object.freeze({loose:!0}),q_=Object.freeze({}),k_=n=>n?typeof n!="object"?E_:n:q_;Xh.exports=k_});var Zh=I((Nw,Yh)=>{"use strict";var Qh=/^[0-9]+$/,Jh=(n,e)=>{if(typeof n=="number"&&typeof e=="number")return n===e?0:nJh(e,n);Yh.exports={compareIdentifiers:Jh,rcompareIdentifiers:I_}});var Ni=I((Mw,tp)=>{"use strict";var co=Fi(),{MAX_LENGTH:ep,MAX_SAFE_INTEGER:uo}=so(),{safeRe:lo,t:fo}=oo(),O_=ao(),{compareIdentifiers:Dd}=Zh(),_d=class n{constructor(e,t){if(t=O_(t),e instanceof n){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>ep)throw new TypeError(`version is longer than ${ep} characters`);co("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let r=e.trim().match(t.loose?lo[fo.LOOSE]:lo[fo.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>uo||this.major<0)throw new TypeError("Invalid major version");if(this.minor>uo||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>uo||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let s=+i;if(s>=0&&se.major?1:this.minore.minor?1:this.patche.patch?1:0}comparePre(e){if(e instanceof n||(e=new n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let r=this.prerelease[t],i=e.prerelease[t];if(co("prerelease compare",t,r,i),r===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(r===void 0)return-1;if(r===i)continue;return Dd(r,i)}while(++t)}compareBuild(e){e instanceof n||(e=new n(e,this.options));let t=0;do{let r=this.build[t],i=e.build[t];if(co("build compare",t,r,i),r===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(r===void 0)return-1;if(r===i)continue;return Dd(r,i)}while(++t)}inc(e,t,r){if(e.startsWith("pre")){if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let i=`-${t}`.match(this.options.loose?lo[fo.PRERELEASELOOSE]:lo[fo.PRERELEASE]);if(!i||i[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(r)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(t){let s=[t,i];r===!1&&(s=[t]),Dd(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};tp.exports=_d});var ip=I((Lw,rp)=>{"use strict";var np=Ni(),x_=(n,e,t=!1)=>{if(n instanceof np)return n;try{return new np(n,e)}catch(r){if(!t)return null;throw r}};rp.exports=x_});var op=I((Aw,sp)=>{"use strict";var Rd=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(e,t)}return this}};sp.exports=Rd});var Dr=I((jw,cp)=>{"use strict";var ap=Ni(),F_=(n,e,t)=>new ap(n,t).compare(new ap(e,t));cp.exports=F_});var dp=I(($w,up)=>{"use strict";var N_=Dr(),M_=(n,e,t)=>N_(n,e,t)===0;up.exports=M_});var fp=I((Hw,lp)=>{"use strict";var L_=Dr(),A_=(n,e,t)=>L_(n,e,t)!==0;lp.exports=A_});var pp=I((Uw,hp)=>{"use strict";var j_=Dr(),$_=(n,e,t)=>j_(n,e,t)>0;hp.exports=$_});var mp=I((Ww,gp)=>{"use strict";var H_=Dr(),U_=(n,e,t)=>H_(n,e,t)>=0;gp.exports=U_});var vp=I((Kw,yp)=>{"use strict";var W_=Dr(),K_=(n,e,t)=>W_(n,e,t)<0;yp.exports=K_});var Dp=I((zw,Cp)=>{"use strict";var z_=Dr(),V_=(n,e,t)=>z_(n,e,t)<=0;Cp.exports=V_});var Rp=I((Vw,_p)=>{"use strict";var B_=dp(),G_=fp(),X_=pp(),Q_=mp(),J_=vp(),Y_=Dp(),Z_=(n,e,t,r)=>{switch(e){case"===":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n===t;case"!==":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n!==t;case"":case"=":case"==":return B_(n,t,r);case"!=":return G_(n,t,r);case">":return X_(n,t,r);case">=":return Q_(n,t,r);case"<":return J_(n,t,r);case"<=":return Y_(n,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};_p.exports=Z_});var qp=I((Bw,Ep)=>{"use strict";var Mi=Symbol("SemVer ANY"),Sd=class n{static get ANY(){return Mi}constructor(e,t){if(t=bp(t),e instanceof n){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),wd("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Mi?this.value="":this.value=this.operator+this.semver.version,wd("comp",this)}parse(e){let t=this.options.loose?wp[Sp.COMPARATORLOOSE]:wp[Sp.COMPARATOR],r=e.match(t);if(!r)throw new TypeError(`Invalid comparator: ${e}`);this.operator=r[1]!==void 0?r[1]:"",this.operator==="="&&(this.operator=""),r[2]?this.semver=new Tp(r[2],this.options.loose):this.semver=Mi}toString(){return this.value}test(e){if(wd("Comparator.test",e,this.options.loose),this.semver===Mi||e===Mi)return!0;if(typeof e=="string")try{e=new Tp(e,this.options)}catch{return!1}return bd(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Pp(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new Pp(this.value,t).test(e.semver):(t=bp(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||bd(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||bd(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};Ep.exports=Sd;var bp=ao(),{safeRe:wp,t:Sp}=oo(),bd=Rp(),wd=Fi(),Tp=Ni(),Pp=Td()});var Td=I((Gw,xp)=>{"use strict";var eR=/\s+/g,Pd=class n{constructor(e,t){if(t=nR(t),e instanceof n)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new n(e.raw,t);if(e instanceof Ed)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(eR," "),this.set=this.raw.split("||").map(r=>this.parseRange(r.trim())).filter(r=>r.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let r=this.set[0];if(this.set=this.set.filter(i=>!Ip(i[0])),this.set.length===0)this.set=[r];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&uR(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e0&&(this.formatted+="||");let t=this.set[e];for(let r=0;r0&&(this.formatted+=" "),this.formatted+=t[r].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let r=((this.options.includePrerelease&&aR)|(this.options.loose&&cR))+":"+e,i=kp.get(r);if(i)return i;let s=this.options.loose,o=s?bt[ft.HYPHENRANGELOOSE]:bt[ft.HYPHENRANGE];e=e.replace(o,CR(this.options.includePrerelease)),Fe("hyphen replace",e),e=e.replace(bt[ft.COMPARATORTRIM],iR),Fe("comparator trim",e),e=e.replace(bt[ft.TILDETRIM],sR),Fe("tilde trim",e),e=e.replace(bt[ft.CARETTRIM],oR),Fe("caret trim",e);let a=e.split(" ").map(C=>dR(C,this.options)).join(" ").split(/\s+/).map(C=>vR(C,this.options));s&&(a=a.filter(C=>(Fe("loose invalid filter",C,this.options),!!C.match(bt[ft.COMPARATORLOOSE])))),Fe("range list",a);let u=new Map,h=a.map(C=>new Ed(C,this.options));for(let C of h){if(Ip(C))return[C];u.set(C.value,C)}u.size>1&&u.has("")&&u.delete("");let m=[...u.values()];return kp.set(r,m),m}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Range is required");return this.set.some(r=>Op(r,t)&&e.set.some(i=>Op(i,t)&&r.every(s=>i.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new rR(e,this.options)}catch{return!1}for(let t=0;tn.value==="<0.0.0-0",uR=n=>n.value==="",Op=(n,e)=>{let t=!0,r=n.slice(),i=r.pop();for(;t&&r.length;)t=r.every(s=>i.intersects(s,e)),i=r.pop();return t},dR=(n,e)=>(n=n.replace(bt[ft.BUILD],""),Fe("comp",n,e),n=hR(n,e),Fe("caret",n),n=lR(n,e),Fe("tildes",n),n=gR(n,e),Fe("xrange",n),n=yR(n,e),Fe("stars",n),n),wt=n=>!n||n.toLowerCase()==="x"||n==="*",lR=(n,e)=>n.trim().split(/\s+/).map(t=>fR(t,e)).join(" "),fR=(n,e)=>{let t=e.loose?bt[ft.TILDELOOSE]:bt[ft.TILDE];return n.replace(t,(r,i,s,o,a)=>{Fe("tilde",n,r,i,s,o,a);let u;return wt(i)?u="":wt(s)?u=`>=${i}.0.0 <${+i+1}.0.0-0`:wt(o)?u=`>=${i}.${s}.0 <${i}.${+s+1}.0-0`:a?(Fe("replaceTilde pr",a),u=`>=${i}.${s}.${o}-${a} <${i}.${+s+1}.0-0`):u=`>=${i}.${s}.${o} <${i}.${+s+1}.0-0`,Fe("tilde return",u),u})},hR=(n,e)=>n.trim().split(/\s+/).map(t=>pR(t,e)).join(" "),pR=(n,e)=>{Fe("caret",n,e);let t=e.loose?bt[ft.CARETLOOSE]:bt[ft.CARET],r=e.includePrerelease?"-0":"";return n.replace(t,(i,s,o,a,u)=>{Fe("caret",n,i,s,o,a,u);let h;return wt(s)?h="":wt(o)?h=`>=${s}.0.0${r} <${+s+1}.0.0-0`:wt(a)?s==="0"?h=`>=${s}.${o}.0${r} <${s}.${+o+1}.0-0`:h=`>=${s}.${o}.0${r} <${+s+1}.0.0-0`:u?(Fe("replaceCaret pr",u),s==="0"?o==="0"?h=`>=${s}.${o}.${a}-${u} <${s}.${o}.${+a+1}-0`:h=`>=${s}.${o}.${a}-${u} <${s}.${+o+1}.0-0`:h=`>=${s}.${o}.${a}-${u} <${+s+1}.0.0-0`):(Fe("no pr"),s==="0"?o==="0"?h=`>=${s}.${o}.${a}${r} <${s}.${o}.${+a+1}-0`:h=`>=${s}.${o}.${a}${r} <${s}.${+o+1}.0-0`:h=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Fe("caret return",h),h})},gR=(n,e)=>(Fe("replaceXRanges",n,e),n.split(/\s+/).map(t=>mR(t,e)).join(" ")),mR=(n,e)=>{n=n.trim();let t=e.loose?bt[ft.XRANGELOOSE]:bt[ft.XRANGE];return n.replace(t,(r,i,s,o,a,u)=>{Fe("xRange",n,r,i,s,o,a,u);let h=wt(s),m=h||wt(o),C=m||wt(a),y=C;return i==="="&&y&&(i=""),u=e.includePrerelease?"-0":"",h?i===">"||i==="<"?r="<0.0.0-0":r="*":i&&y?(m&&(o=0),a=0,i===">"?(i=">=",m?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",m?s=+s+1:o=+o+1),i==="<"&&(u="-0"),r=`${i+s}.${o}.${a}${u}`):m?r=`>=${s}.0.0${u} <${+s+1}.0.0-0`:C&&(r=`>=${s}.${o}.0${u} <${s}.${+o+1}.0-0`),Fe("xRange return",r),r})},yR=(n,e)=>(Fe("replaceStars",n,e),n.trim().replace(bt[ft.STAR],"")),vR=(n,e)=>(Fe("replaceGTE0",n,e),n.trim().replace(bt[e.includePrerelease?ft.GTE0PRE:ft.GTE0],"")),CR=n=>(e,t,r,i,s,o,a,u,h,m,C,y)=>(wt(r)?t="":wt(i)?t=`>=${r}.0.0${n?"-0":""}`:wt(s)?t=`>=${r}.${i}.0${n?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${n?"-0":""}`,wt(h)?u="":wt(m)?u=`<${+h+1}.0.0-0`:wt(C)?u=`<${h}.${+m+1}.0-0`:y?u=`<=${h}.${m}.${C}-${y}`:n?u=`<${h}.${m}.${+C+1}-0`:u=`<=${u}`,`${t} ${u}`.trim()),DR=(n,e,t)=>{for(let r=0;r0){let i=n[r].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var Np=I((Xw,Fp)=>{"use strict";var _R=Td(),RR=(n,e,t)=>{try{e=new _R(e,t)}catch{return!1}return e.test(n)};Fp.exports=RR});var Lp=I($t=>{"use strict";var bR=$t&&$t.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),qd=$t&&$t.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&bR(e,n,t)};Object.defineProperty($t,"__esModule",{value:!0});$t.DiagnosticPullMode=$t.vsdiag=void 0;qd(ne(),$t);qd(me(),$t);var Mp=jc();Object.defineProperty($t,"vsdiag",{enumerable:!0,get:function(){return Mp.vsdiag}});Object.defineProperty($t,"DiagnosticPullMode",{enumerable:!0,get:function(){return Mp.DiagnosticPullMode}});qd(md(),$t)});var Hp=I(St=>{"use strict";var wR=St&&St.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),$p=St&&St.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&wR(e,n,t)};Object.defineProperty(St,"__esModule",{value:!0});St.SettingMonitor=St.LanguageClient=St.TransportKind=void 0;var Mn=require("child_process"),kd=require("fs"),Id=require("path"),er=require("vscode"),Ne=Ut(),Ap=md(),SR=Kh(),He=yd(),TR=ip(),PR=Np();$p(yd(),St);$p(Lp(),St);var jp="^1.67.0",ze;(function(n){n[n.stdio=0]="stdio",n[n.ipc=1]="ipc",n[n.pipe=2]="pipe",n[n.socket=3]="socket"})(ze=St.TransportKind||(St.TransportKind={}));var Zn;(function(n){function e(t){let r=t;return r&&r.kind===ze.socket&&Ne.number(r.port)}n.isSocket=e})(Zn||(Zn={}));var Od;(function(n){function e(t){return Ne.string(t.command)}n.is=e})(Od||(Od={}));var xd;(function(n){function e(t){return Ne.string(t.module)}n.is=e})(xd||(xd={}));var Fd;(function(n){function e(t){let r=t;return r&&r.writer!==void 0&&r.reader!==void 0}n.is=e})(Fd||(Fd={}));var Nd;(function(n){function e(t){let r=t;return r&&r.process!==void 0&&typeof r.detached=="boolean"}n.is=e})(Nd||(Nd={}));var Md=class extends Ap.BaseLanguageClient{constructor(e,t,r,i,s){let o,a,u,h,m;Ne.string(t)?(o=e,a=t,u=r,h=i,m=!!s):(o=e.toLowerCase(),a=e,u=t,h=r,m=i),m===void 0&&(m=!1),super(o,a,h),this._serverOptions=u,this._forceDebug=m,this._isInDebugMode=m;try{this.checkVersion()}catch(C){throw Ne.string(C.message)&&this.outputChannel.appendLine(C.message),C}}checkVersion(){let e=TR(er.version);if(!e)throw new Error(`No valid VS Code version detected. Version string is: ${er.version}`);if(e.prerelease&&e.prerelease.length>0&&(e.prerelease=[]),!PR(e,jp))throw new Error(`The language client requires VS Code version ${jp} but received version ${er.version}`)}get isInDebugMode(){return this._isInDebugMode}async restart(){await this.stop(),this.isInDebugMode?(await new Promise(e=>setTimeout(e,1e3)),await this.start()):await this.start()}stop(e=2e3){return super.stop(e).finally(()=>{if(this._serverProcess){let t=this._serverProcess;this._serverProcess=void 0,(this._isDetached===void 0||!this._isDetached)&&this.checkProcessDied(t),this._isDetached=void 0}})}checkProcessDied(e){!e||e.pid===void 0||setTimeout(()=>{try{e.pid!==void 0&&(process.kill(e.pid,0),(0,SR.terminate)(e))}catch{}},2e3)}handleConnectionClosed(){return this._serverProcess=void 0,super.handleConnectionClosed()}fillInitializeParams(e){super.fillInitializeParams(e),e.processId===null&&(e.processId=process.pid)}createMessageTransports(e){function t(m,C){if(!m&&!C)return;let y=Object.create(null);return Object.keys(process.env).forEach(S=>y[S]=process.env[S]),C&&(y.ELECTRON_RUN_AS_NODE="1",y.ELECTRON_NO_ASAR="1"),m&&Object.keys(m).forEach(S=>y[S]=m[S]),y}let r=["--debug=","--debug-brk=","--inspect=","--inspect-brk="],i=["--debug","--debug-brk","--inspect","--inspect-brk"];function s(){let m=process.execArgv;return m?m.some(C=>r.some(y=>C.startsWith(y))||i.some(y=>C===y)):!1}function o(m){if(m.stdin===null||m.stdout===null||m.stderr===null)throw new Error("Process created without stdio streams")}let a=this._serverOptions;if(Ne.func(a))return a().then(m=>{if(Ap.MessageTransports.is(m))return this._isDetached=!!m.detached,m;if(Fd.is(m))return this._isDetached=!!m.detached,{reader:new He.StreamMessageReader(m.reader),writer:new He.StreamMessageWriter(m.writer)};{let C;return Nd.is(m)?(C=m.process,this._isDetached=m.detached):(C=m,this._isDetached=!1),C.stderr.on("data",y=>this.outputChannel.append(Ne.string(y)?y:y.toString(e))),{reader:new He.StreamMessageReader(C.stdout),writer:new He.StreamMessageWriter(C.stdin)}}});let u,h=a;return h.run||h.debug?this._forceDebug||s()?(u=h.debug,this._isInDebugMode=!0):(u=h.run,this._isInDebugMode=!1):u=a,this._getServerWorkingDir(u.options).then(m=>{if(xd.is(u)&&u.module){let C=u,y=C.transport||ze.stdio;if(C.runtime){let S=[],v=C.options??Object.create(null);v.execArgv&&v.execArgv.forEach(L=>S.push(L)),S.push(C.module),C.args&&C.args.forEach(L=>S.push(L));let E=Object.create(null);E.cwd=m,E.env=t(v.env,!1);let q=this._getRuntimePath(C.runtime,m),N;if(y===ze.ipc?(E.stdio=[null,null,null,"ipc"],S.push("--node-ipc")):y===ze.stdio?S.push("--stdio"):y===ze.pipe?(N=(0,He.generateRandomPipeName)(),S.push(`--pipe=${N}`)):Zn.isSocket(y)&&S.push(`--socket=${y.port}`),S.push(`--clientProcessId=${process.pid.toString()}`),y===ze.ipc||y===ze.stdio){let L=Mn.spawn(q,S,E);return!L||!L.pid?Vr(L,`Launching server using runtime ${q} failed.`):(this._serverProcess=L,L.stderr.on("data",M=>this.outputChannel.append(Ne.string(M)?M:M.toString(e))),y===ze.ipc?(L.stdout.on("data",M=>this.outputChannel.append(Ne.string(M)?M:M.toString(e))),Promise.resolve({reader:new He.IPCMessageReader(L),writer:new He.IPCMessageWriter(L)})):Promise.resolve({reader:new He.StreamMessageReader(L.stdout),writer:new He.StreamMessageWriter(L.stdin)}))}else{if(y===ze.pipe)return(0,He.createClientPipeTransport)(N).then(L=>{let M=Mn.spawn(q,S,E);return!M||!M.pid?Vr(M,`Launching server using runtime ${q} failed.`):(this._serverProcess=M,M.stderr.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),M.stdout.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),L.onConnected().then(U=>({reader:U[0],writer:U[1]})))});if(Zn.isSocket(y))return(0,He.createClientSocketTransport)(y.port).then(L=>{let M=Mn.spawn(q,S,E);return!M||!M.pid?Vr(M,`Launching server using runtime ${q} failed.`):(this._serverProcess=M,M.stderr.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),M.stdout.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),L.onConnected().then(U=>({reader:U[0],writer:U[1]})))})}}else{let S;return new Promise((v,E)=>{let q=(C.args&&C.args.slice())??[];y===ze.ipc?q.push("--node-ipc"):y===ze.stdio?q.push("--stdio"):y===ze.pipe?(S=(0,He.generateRandomPipeName)(),q.push(`--pipe=${S}`)):Zn.isSocket(y)&&q.push(`--socket=${y.port}`),q.push(`--clientProcessId=${process.pid.toString()}`);let N=C.options??Object.create(null);if(N.env=t(N.env,!0),N.execArgv=N.execArgv||[],N.cwd=m,N.silent=!0,y===ze.ipc||y===ze.stdio){let L=Mn.fork(C.module,q||[],N);o(L),this._serverProcess=L,L.stderr.on("data",M=>this.outputChannel.append(Ne.string(M)?M:M.toString(e))),y===ze.ipc?(L.stdout.on("data",M=>this.outputChannel.append(Ne.string(M)?M:M.toString(e))),v({reader:new He.IPCMessageReader(this._serverProcess),writer:new He.IPCMessageWriter(this._serverProcess)})):v({reader:new He.StreamMessageReader(L.stdout),writer:new He.StreamMessageWriter(L.stdin)})}else y===ze.pipe?(0,He.createClientPipeTransport)(S).then(L=>{let M=Mn.fork(C.module,q||[],N);o(M),this._serverProcess=M,M.stderr.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),M.stdout.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),L.onConnected().then(U=>{v({reader:U[0],writer:U[1]})},E)},E):Zn.isSocket(y)&&(0,He.createClientSocketTransport)(y.port).then(L=>{let M=Mn.fork(C.module,q||[],N);o(M),this._serverProcess=M,M.stderr.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),M.stdout.on("data",U=>this.outputChannel.append(Ne.string(U)?U:U.toString(e))),L.onConnected().then(U=>{v({reader:U[0],writer:U[1]})},E)},E)})}}else if(Od.is(u)&&u.command){let C=u,y=u.args!==void 0?u.args.slice(0):[],S,v=u.transport;if(v===ze.stdio)y.push("--stdio");else if(v===ze.pipe)S=(0,He.generateRandomPipeName)(),y.push(`--pipe=${S}`);else if(Zn.isSocket(v))y.push(`--socket=${v.port}`);else if(v===ze.ipc)throw new Error("Transport kind ipc is not support for command executable");let E=Object.assign({},C.options);if(E.cwd=E.cwd||m,v===void 0||v===ze.stdio){let q=Mn.spawn(C.command,y,E);return!q||!q.pid?Vr(q,`Launching server using command ${C.command} failed.`):(q.stderr.on("data",N=>this.outputChannel.append(Ne.string(N)?N:N.toString(e))),this._serverProcess=q,this._isDetached=!!E.detached,Promise.resolve({reader:new He.StreamMessageReader(q.stdout),writer:new He.StreamMessageWriter(q.stdin)}))}else{if(v===ze.pipe)return(0,He.createClientPipeTransport)(S).then(q=>{let N=Mn.spawn(C.command,y,E);return!N||!N.pid?Vr(N,`Launching server using command ${C.command} failed.`):(this._serverProcess=N,this._isDetached=!!E.detached,N.stderr.on("data",L=>this.outputChannel.append(Ne.string(L)?L:L.toString(e))),N.stdout.on("data",L=>this.outputChannel.append(Ne.string(L)?L:L.toString(e))),q.onConnected().then(L=>({reader:L[0],writer:L[1]})))});if(Zn.isSocket(v))return(0,He.createClientSocketTransport)(v.port).then(q=>{let N=Mn.spawn(C.command,y,E);return!N||!N.pid?Vr(N,`Launching server using command ${C.command} failed.`):(this._serverProcess=N,this._isDetached=!!E.detached,N.stderr.on("data",L=>this.outputChannel.append(Ne.string(L)?L:L.toString(e))),N.stdout.on("data",L=>this.outputChannel.append(Ne.string(L)?L:L.toString(e))),q.onConnected().then(L=>({reader:L[0],writer:L[1]})))})}}return Promise.reject(new Error("Unsupported server configuration "+JSON.stringify(a,null,4)))})}_getRuntimePath(e,t){if(Id.isAbsolute(e))return e;let r=this._mainGetRootPath();if(r!==void 0){let i=Id.join(r,e);if(kd.existsSync(i))return i}if(t!==void 0){let i=Id.join(t,e);if(kd.existsSync(i))return i}return e}_mainGetRootPath(){let e=er.workspace.workspaceFolders;if(!e||e.length===0)return;let t=e[0];if(t.uri.scheme==="file")return t.uri.fsPath}_getServerWorkingDir(e){let t=e&&e.cwd;return t||(t=this.clientOptions.workspaceFolder?this.clientOptions.workspaceFolder.uri.fsPath:this._mainGetRootPath()),t?new Promise(r=>{kd.lstat(t,(i,s)=>{r(!i&&s.isDirectory()?t:void 0)})}):Promise.resolve(void 0)}};St.LanguageClient=Md;var Ld=class{constructor(e,t){this._client=e,this._setting=t,this._listeners=[]}start(){return er.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration,this,this._listeners),this.onDidChangeConfiguration(),new er.Disposable(()=>{this._client.needsStop()&&this._client.stop()})}onDidChangeConfiguration(){let e=this._setting.indexOf("."),t=e>=0?this._setting.substr(0,e):this._setting,r=e>=0?this._setting.substr(e+1):void 0,i=r?er.workspace.getConfiguration(t).get(r,!1):er.workspace.getConfiguration(t);i&&this._client.needsStart()?this._client.start().catch(s=>this._client.error("Start failed after configuration change",s,"force")):!i&&this._client.needsStop()&&this._client.stop().catch(s=>this._client.error("Stop failed after configuration change",s,"force"))}};St.SettingMonitor=Ld;function Vr(n,e){return n===null?Promise.reject(e):new Promise((t,r)=>{n.on("error",i=>{r(`${e} ${i}`)}),setImmediate(()=>r(e))})}});var Wp=I((Yw,Up)=>{"use strict";Up.exports=Hp()});var LR={};cg(LR,{activate:()=>NR,deactivate:()=>MR});module.exports=ug(LR);var Yp=ir(require("vscode")),Zp=ir(Wp());var Ln=ir(require("vscode")),ht=ir(require("fs")),ho=ir(require("path")),Kp=ir(require("https")),tr=ir(require("os")),zp=require("child_process"),Vp=require("util"),Bp=(0,Vp.promisify)(zp.exec),Gp="naviscope",ER="biuld",qR="naviscope",Xp="0.2.0";async function kR(){try{let n=process.platform==="win32"?"where":"which",{stdout:e}=await Bp(`${n} ${Gp}`),t=e.trim().split(`
+`)[0];if(t&&ht.existsSync(t))return t}catch{}return null}async function Qp(n){let e=await kR();if(e)return e;let t=ho.join(tr.homedir(),".naviscope"),r=ho.join(t,"bin");if(!ht.existsSync(r))try{ht.mkdirSync(r,{recursive:!0})}catch(o){Ln.window.showErrorMessage(`Failed to create directory ${r}: ${o}`);return}let i=ho.join(r,Gp),s=!1;if(ht.existsSync(i))await IR(i)||await Ln.window.showWarningMessage(`Naviscope binary version mismatch. Expected v${Xp}. Update now?`,"Update","Skip")==="Update"&&(s=!0);else if(await Ln.window.showInformationMessage(`Naviscope binary is required. Download automatically to ${r}?`,"Download","Cancel")==="Download")s=!0;else return;if(s)try{ht.existsSync(i)&&ht.unlinkSync(i),await OR(i),Ln.window.showInformationMessage("Naviscope installed successfully!")}catch(o){Ln.window.showErrorMessage(`Failed to download Naviscope: ${o}`),ht.existsSync(i)&&ht.unlinkSync(i);return}if(ht.existsSync(i))return i}async function IR(n){try{let{stdout:e}=await Bp(`"${n}" --version`);return e.includes(Xp)}catch(e){return console.warn("Failed to check version:",e),!1}}async function OR(n){let e=FR();if(!e)throw new Error(`Unsupported platform: ${tr.platform()} ${tr.arch()}`);let t=`https://github.com/${ER}/${qR}/releases/latest/download/naviscope-${e}`;return Ln.window.withProgress({location:Ln.ProgressLocation.Notification,title:"Downloading Naviscope...",cancellable:!1},r=>new Promise((i,s)=>{let o=ht.createWriteStream(n);o.on("error",a=>{o.close(),s(a)}),Jp(t,o,i,s,n,r)}))}function Jp(n,e,t,r,i,s){Kp.get(n,o=>{if([301,302,303,307,308].includes(o.statusCode||0)){let a=o.headers.location;if(a){Jp(a,e,t,r,i,s);return}}xR(o,e,t,r,i,s)}).on("error",o=>{e.close(),r(o)})}function xR(n,e,t,r,i,s){if(n.statusCode!==200){r(new Error(`HTTP ${n.statusCode}`));return}let o=parseInt(n.headers["content-length"]||"0",10),a=0,u=0;n.on("data",h=>{if(a+=h.length,o>0){let m=Math.floor(a/o*100),C=m-u;C>0&&(u=m,s.report({message:`${m}%`,increment:C}))}else{let m=(a/1024/1024).toFixed(1);s.report({message:`${m} MB`})}}),n.pipe(e),e.on("finish",()=>{e.close(),process.platform!=="win32"&&ht.chmodSync(i,"755"),t()}),e.on("error",h=>{r(h)})}function FR(){let n=tr.platform(),e=tr.arch();return n==="linux"?"linux-x86_64":n==="darwin"&&e==="arm64"?"macos-aarch64":null}var po;async function NR(n){let e=await Qp(n);if(!e)return;let t={command:e,args:["lsp"],options:{shell:!0}},r={documentSelector:[{scheme:"file",language:"java"}],synchronize:{fileEvents:Yp.workspace.createFileSystemWatcher("**/*.java")}};po=new Zp.LanguageClient("naviscopeLSP","Naviscope Language Server",t,r),po.start()}function MR(){if(po)return po.stop()}0&&(module.exports={activate,deactivate});
diff --git a/editors/vscode/package-lock.json b/editors/vscode/package-lock.json
index cc22b68..d9e4df9 100644
--- a/editors/vscode/package-lock.json
+++ b/editors/vscode/package-lock.json
@@ -1,12 +1,13 @@
{
"name": "naviscope",
- "version": "0.1.0",
+ "version": "0.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "naviscope",
- "version": "0.1.0",
+ "version": "0.2.0",
+ "license": "MIT",
"dependencies": {
"vscode-languageclient": "^8.1.0"
},
@@ -16,7 +17,9 @@
"@typescript-eslint/eslint-plugin": "^5.53.0",
"@typescript-eslint/parser": "^5.53.0",
"@vscode/vsce": "^2.19.0",
+ "esbuild": "^0.24.2",
"eslint": "^8.34.0",
+ "glob": "^10.3.10",
"typescript": "^4.9.5"
},
"engines": {
@@ -248,6 +251,431 @@
"node": ">=16"
}
},
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
+ "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
+ "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
+ "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
+ "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
+ "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
+ "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
+ "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
+ "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
+ "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
+ "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
+ "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
+ "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
+ "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
+ "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
+ "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
+ "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
+ "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
+ "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
+ "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
+ "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
@@ -349,6 +777,53 @@
"dev": true,
"license": "BSD-3-Clause"
},
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -387,6 +862,17 @@
"node": ">= 8"
}
},
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@@ -879,7 +1365,29 @@
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=0.8.0"
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@vscode/vsce/node_modules/has-flag": {
@@ -1579,6 +2087,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
@@ -1589,6 +2104,13 @@
"safe-buffer": "^5.0.1"
}
},
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/encoding-sniffer": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
@@ -1676,6 +2198,47 @@
"node": ">= 0.4"
}
},
+ "node_modules/esbuild": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
+ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.24.2",
+ "@esbuild/android-arm": "0.24.2",
+ "@esbuild/android-arm64": "0.24.2",
+ "@esbuild/android-x64": "0.24.2",
+ "@esbuild/darwin-arm64": "0.24.2",
+ "@esbuild/darwin-x64": "0.24.2",
+ "@esbuild/freebsd-arm64": "0.24.2",
+ "@esbuild/freebsd-x64": "0.24.2",
+ "@esbuild/linux-arm": "0.24.2",
+ "@esbuild/linux-arm64": "0.24.2",
+ "@esbuild/linux-ia32": "0.24.2",
+ "@esbuild/linux-loong64": "0.24.2",
+ "@esbuild/linux-mips64el": "0.24.2",
+ "@esbuild/linux-ppc64": "0.24.2",
+ "@esbuild/linux-riscv64": "0.24.2",
+ "@esbuild/linux-s390x": "0.24.2",
+ "@esbuild/linux-x64": "0.24.2",
+ "@esbuild/netbsd-arm64": "0.24.2",
+ "@esbuild/netbsd-x64": "0.24.2",
+ "@esbuild/openbsd-arm64": "0.24.2",
+ "@esbuild/openbsd-x64": "0.24.2",
+ "@esbuild/sunos-x64": "0.24.2",
+ "@esbuild/win32-arm64": "0.24.2",
+ "@esbuild/win32-ia32": "0.24.2",
+ "@esbuild/win32-x64": "0.24.2"
+ }
+ },
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -2031,6 +2594,23 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/form-data": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
@@ -2121,22 +2701,21 @@
"optional": true
},
"node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -2155,6 +2734,32 @@
"node": ">=10.13.0"
}
},
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/globals": {
"version": "13.24.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
@@ -2463,6 +3068,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -2538,6 +3153,22 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/js-yaml": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
@@ -2909,6 +3540,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/mkdirp-classic": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
@@ -3080,6 +3721,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -3196,6 +3844,30 @@
"node": ">=8"
}
},
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -3418,6 +4090,28 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/run-applescript": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
@@ -3604,6 +4298,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
@@ -3674,6 +4381,76 @@
"safe-buffer": "~5.2.0"
}
},
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -3687,6 +4464,20 @@
"node": ">=8"
}
},
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -4043,6 +4834,107 @@
"node": ">=0.10.0"
}
},
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/editors/vscode/package.json b/editors/vscode/package.json
index 87170be..3d05ec8 100644
--- a/editors/vscode/package.json
+++ b/editors/vscode/package.json
@@ -2,8 +2,9 @@
"name": "naviscope",
"displayName": "Naviscope",
"description": "Graph-based structured code navigation for Java",
- "version": "0.2.0",
+ "version": "0.2.1",
"publisher": "naviscope",
+ "license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/biuld/naviscope.git"
diff --git a/editors/vscode/src/bootstrap.ts b/editors/vscode/src/bootstrap.ts
index 67b8c51..a6a68ac 100644
--- a/editors/vscode/src/bootstrap.ts
+++ b/editors/vscode/src/bootstrap.ts
@@ -13,7 +13,7 @@ const BINARY_NAME = 'naviscope';
const REPO_OWNER = 'biuld';
const REPO_NAME = 'naviscope';
// Update this version when bundling a new version of the extension
-const EXPECTED_VERSION = '0.2.0';
+const EXPECTED_VERSION = '0.2.1';
/**
* Check if naviscope is available in PATH
@@ -131,25 +131,61 @@ async function downloadBinary(destPath: string): Promise {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(destPath);
- https.get(url, (response) => {
- if (response.statusCode === 302 || response.statusCode === 301) {
- https.get(response.headers.location!, (redirectResponse) => {
- handleResponse(redirectResponse, file, resolve, reject, destPath);
- }).on('error', reject);
- } else {
- handleResponse(response, file, resolve, reject, destPath);
- }
- }).on('error', reject);
+ // Handle errors on the file stream itself
+ file.on('error', (err) => {
+ file.close();
+ reject(err);
+ });
+
+ downloadWithRedirects(url, file, resolve, reject, destPath, progress);
});
});
}
-function handleResponse(response: IncomingMessage, file: fs.WriteStream, resolve: () => void, reject: (err: Error) => void, destPath: string) {
+function downloadWithRedirects(url: string, file: fs.WriteStream, resolve: () => void, reject: (err: Error) => void, destPath: string, progress: vscode.Progress<{ message?: string; increment?: number }>) {
+ https.get(url, (response) => {
+ // Handle redirects
+ if ([301, 302, 303, 307, 308].includes(response.statusCode || 0)) {
+ const location = response.headers.location;
+ if (location) {
+ downloadWithRedirects(location, file, resolve, reject, destPath, progress);
+ return;
+ }
+ }
+
+ handleResponse(response, file, resolve, reject, destPath, progress);
+ }).on('error', (err) => {
+ // Close file on network error before response
+ file.close();
+ reject(err);
+ });
+}
+
+function handleResponse(response: IncomingMessage, file: fs.WriteStream, resolve: () => void, reject: (err: Error) => void, destPath: string, progress: vscode.Progress<{ message?: string; increment?: number }>) {
if (response.statusCode !== 200) {
reject(new Error(`HTTP ${response.statusCode}`));
return;
}
+ const totalBytes = parseInt(response.headers['content-length'] || '0', 10);
+ let downloadedBytes = 0;
+ let lastPercentage = 0;
+
+ response.on('data', (chunk) => {
+ downloadedBytes += chunk.length;
+ if (totalBytes > 0) {
+ const percentage = Math.floor((downloadedBytes / totalBytes) * 100);
+ const increment = percentage - lastPercentage;
+ if (increment > 0) {
+ lastPercentage = percentage;
+ progress.report({ message: `${percentage}%`, increment });
+ }
+ } else {
+ const downloadedMB = (downloadedBytes / 1024 / 1024).toFixed(1);
+ progress.report({ message: `${downloadedMB} MB` });
+ }
+ });
+
response.pipe(file);
file.on('finish', () => {
diff --git a/src/cli/mod.rs b/src/cli/mod.rs
index 9774e5f..ef12626 100644
--- a/src/cli/mod.rs
+++ b/src/cli/mod.rs
@@ -1,6 +1,5 @@
mod index;
mod shell;
-mod schema;
mod watch;
mod clear;
@@ -43,8 +42,6 @@ pub enum Commands {
#[arg(value_name = "PROJECT_PATH")]
path: Option,
},
- /// Show the JSON schema/examples for GraphQuery
- Schema,
/// Watch for file changes and update the index automatically
#[command(long_about = "Starts a file watcher that monitors the project directory for changes. \
When a change is detected, the index is automatically updated.")]
@@ -92,7 +89,6 @@ pub fn run() -> Result<(), Box> {
debug,
} => index::run(path, debug),
Commands::Shell { path } => shell::run(path),
- Commands::Schema => schema::run(),
Commands::Watch { path, debug } => watch::run(path, debug),
Commands::Clear { path } => clear::run(path),
Commands::Mcp { path } => {
diff --git a/src/cli/schema.rs b/src/cli/schema.rs
deleted file mode 100644
index 2513c0b..0000000
--- a/src/cli/schema.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-pub fn run() -> Result<(), Box> {
- println!("GraphQuery JSON Interface Specification:");
- println!("======================================");
-
- println!("\nAvailable Node Kinds (for kind filters):");
- println!(" - Java: class, interface, enum, annotation, method, field");
- println!(" - Build: package (module), dependency");
-
- println!("\nAvailable Edge Types (for edge_type filters):");
- println!(" Contains, InheritsFrom, Implements, Calls, References, Instantiates, UsesDependency");
-
- println!("\n1. GREP - Search for symbols");
- let grep = serde_json::json!({
- "command": "grep",
- "pattern": "String (Required) - Regex or plain text",
- "kind": "Array of Strings (Optional, Default: []) - e.g., ['class', 'method']",
- "limit": "Number (Optional, Default: 20)"
- });
- println!("{}", serde_json::to_string_pretty(&grep)?);
-
- println!("\n2. LS - List members of a node or project");
- let ls = serde_json::json!({
- "command": "ls",
- "fqn": "String (Optional, Default: null) - Full path of node to list",
- "kind": "Array of Strings (Optional, Default: []) - Filter by node kind"
- });
- println!("{}", serde_json::to_string_pretty(&ls)?);
-
- println!("\n3. INSPECT - Get full details of a node");
- let inspect = serde_json::json!({
- "command": "inspect",
- "fqn": "String (Required) - Target node FQN"
- });
- println!("{}", serde_json::to_string_pretty(&inspect)?);
-
- println!("\n4. INCOMING / OUTGOING - Trace relationships");
- let relations = serde_json::json!({
- "command": "incoming | outgoing",
- "fqn": "String (Required) - Target node FQN",
- "edge_type": "Array of EdgeTypes (Optional, Default: []) - Filter by relationship type"
- });
- println!("{}", serde_json::to_string_pretty(&relations)?);
-
- Ok(())
-}
diff --git a/src/index.rs b/src/index.rs
index dcaf5a4..1ccc3c2 100644
--- a/src/index.rs
+++ b/src/index.rs
@@ -6,6 +6,7 @@ use petgraph::stable_graph::{NodeIndex, StableDiGraph};
use serde::{Deserialize, Serialize};
use std::collections::{HashMap, HashSet};
use std::path::{Path, PathBuf};
+use tracing;
use xxhash_rust::xxh3::xxh3_64;
pub const CURRENT_VERSION: u32 = 1;
@@ -143,14 +144,15 @@ impl Naviscope {
}
/// Loads the index for the project from the fixed storage path.
- /// Returns Ok(true) if loaded, Ok(false) if file doesn't exist.
+ /// Returns Ok(true) if loaded successfully, Ok(false) if file doesn't exist or is incompatible.
+ /// Automatically handles incompatible binaries by cleaning up and resetting the graph.
pub fn load(&mut self) -> Result {
let path = self.get_project_index_path();
if !path.exists() {
return Ok(false);
}
- let file = std::fs::File::open(path)?;
+ let file = std::fs::File::open(&path)?;
let reader = std::io::BufReader::new(file);
match rmp_serde::from_read(reader) {
Ok(graph) => {
@@ -158,9 +160,16 @@ impl Naviscope {
Ok(true)
}
Err(e) => {
- // If loading fails, reset to fresh graph to ensure consistent state for fresh scan
+ // Handle incompatible binary: log warning, clean up file, and reset graph
+ tracing::warn!(
+ "Failed to parse index at {}: {}. Incompatible binary detected, will rebuild.",
+ path.display(),
+ e
+ );
self.graph = CodeGraph::new();
- Err(NaviscopeError::Parsing(e.to_string()))
+ // Try to remove the corrupted file (ignore errors)
+ let _ = std::fs::remove_file(&path);
+ Ok(false)
}
}
}
@@ -196,17 +205,24 @@ impl Naviscope {
let _ = self.load();
}
+ // Refresh will handle version compatibility check and rebuild if needed
self.refresh()
}
/// Scans for changes and updates the graph in memory.
/// Does not reload from disk, but saves to disk if changes are detected.
+ /// Assumes the graph is already loaded in memory (via load() or previous refresh()).
pub fn refresh(&mut self) -> Result<()> {
use crate::model::graph::GraphOp;
use crate::resolver::engine::IndexResolver;
- // If version doesn't match, clear and start fresh
+ // Check version compatibility - if mismatch, clear disk index and reset graph
if self.graph.version != CURRENT_VERSION {
+ tracing::info!(
+ "Index version mismatch (found {}, current {}). Rebuilding...",
+ self.graph.version,
+ CURRENT_VERSION
+ );
let _ = self.clear_project_index();
// Reset to a fresh index with current version
self.graph = CodeGraph::new();
diff --git a/src/mcp/mod.rs b/src/mcp/mod.rs
index 69347b1..ff1e320 100644
--- a/src/mcp/mod.rs
+++ b/src/mcp/mod.rs
@@ -46,7 +46,10 @@ pub struct McpServer {
pub struct GrepArgs {
/// Search pattern (simple string or regex) for code element names
pub pattern: String,
- /// Optional: Filter by element type (e.g., ["class", "method", "interface"])
+ /// Optional: Filter by element type.
+ /// Available kinds:
+ /// - Code: class, interface, enum, annotation, method, constructor, field, package
+ /// - Build: module, dependency, task, plugin
pub kind: Option>,
/// Maximum number of results to return (default: 20)
pub limit: Option,
@@ -56,7 +59,10 @@ pub struct GrepArgs {
pub struct LsArgs {
/// Target node FQN to list children for. If null, lists top-level modules.
pub fqn: Option,
- /// Optional: Filter results by element type (e.g., ["class", "method"])
+ /// Optional: Filter results by element type.
+ /// Available kinds:
+ /// - Code: class, interface, enum, annotation, method, constructor, field, package
+ /// - Build: module, dependency, task, plugin
pub kind: Option>,
/// Optional: Filter results by modifiers (e.g. ["public", "static"])
pub modifiers: Option>,
@@ -76,10 +82,17 @@ pub struct DepsArgs {
/// If false (default), find outgoing dependencies (who do I depend on).
#[serde(default)]
pub rev: bool,
- /// Optional: Filter by relationship types (e.g., ["Calls", "InheritsFrom"])
+ /// Optional: Filter by relationship types.
+ /// Available types:
+ /// - Structural: Contains
+ /// - Inheritance: InheritsFrom, Implements
+ /// - Usage: Calls, Instantiates, TypedAs, DecoratedBy, UsesDependency
pub edge_type: Option>,
}
+#[derive(Deserialize, JsonSchema)]
+pub struct GetGuideArgs {}
+
#[tool_router]
impl McpServer {
pub fn new(engine: Arc>>) -> Self {
@@ -127,6 +140,34 @@ impl McpServer {
.collect()
}
+ #[tool(description = "Returns a comprehensive user guide and examples for using Naviscope. Call this tool first to understand how to effectively explore and analyze the codebase using the available tools.")]
+ pub async fn get_guide(&self, _params: Parameters) -> Result {
+ let guide = r#"
+# Naviscope User Guide
+
+Naviscope is a graph-based code understanding engine. Unlike text search, it understands the structural and semantic relationships in your code (Calls, Inheritance, Dependencies).
+
+## 🚀 Recommended Workflow
+
+1. **Explore Structure**: Use `ls` to visualize the project hierarchy (modules, packages).
+ - `ls()` -> List root modules
+ - `ls(fqn="com.example")` -> List contents of a package
+
+2. **Find Entry Points**: Use `grep` to locate specific symbols (classes, methods) by name.
+ - `grep(pattern="UserController", kind=["class"])`
+
+3. **Deep Analysis**: Once you have a Fully Qualified Name (FQN), use `inspect` and `deps`.
+ - `inspect(fqn="...")` -> View source code and metadata
+ - `deps(fqn="...")` -> View outgoing calls/dependencies (What does this code use?)
+ - `deps(fqn="...", rev=true)` -> View incoming calls (Who uses this code?)
+
+## 💡 Tips
+- **FQNs**: Naviscope relies on Fully Qualified Names (e.g., `com.example.MyClass`, `src/main.rs`). Always use the FQN returned by `ls` or `grep` for subsequent `inspect`/`deps` calls.
+- **Filters**: Use the `kind` (e.g., "class", "method") and `edge_type` (e.g., "Calls", "InheritsFrom") filters to narrow down noisy results.
+"#;
+ Ok(CallToolResult::success(vec![Content::text(guide)]))
+ }
+
#[tool(description = "Search for code elements (classes, methods, fields, etc.) across the project using a name pattern or regex. Use this to find definitions when you only know a name or part of it.")]
pub async fn grep(&self, params: Parameters) -> Result {
let args = params.0;
diff --git a/src/parser/java/ast.rs b/src/parser/java/ast.rs
index 68ae6db..00dbe7d 100644
--- a/src/parser/java/ast.rs
+++ b/src/parser/java/ast.rs
@@ -101,18 +101,39 @@ impl JavaParser {
id: fqn.clone(), name: name.clone(), modifiers: vec![],
range: Some(range), name_range: Some(name_range),
}),
- KIND_LABEL_METHOD | KIND_LABEL_CONSTRUCTOR => JavaElement::Method(JavaMethod {
- id: fqn.clone(), name: name.clone(), return_type: TypeRef::raw("void"),
- parameters: vec![], modifiers: vec![], is_constructor: kind == KIND_LABEL_CONSTRUCTOR,
- range: Some(range), name_range: Some(name_range),
- }),
- KIND_LABEL_FIELD => JavaElement::Field(JavaField {
- id: fqn.clone(), name: name.clone(),
- type_ref: anchor_node.child_by_field_name("type")
- .map(|n| self.parse_type_node(n, source))
- .unwrap_or(TypeRef::Unknown),
- modifiers: vec![], range: Some(range), name_range: Some(name_range),
- }),
+ KIND_LABEL_METHOD | KIND_LABEL_CONSTRUCTOR => {
+ let mut return_type = TypeRef::raw("void");
+ if let Some(ret_node) = mat.captures.iter().find(|c| c.index == self.indices.method_ret).map(|c| c.node) {
+ return_type = self.parse_type_node(ret_node, source);
+ self.generate_typed_as_edges(ret_node, source, &fqn, &mut relations);
+ }
+
+ JavaElement::Method(JavaMethod {
+ id: fqn.clone(), name: name.clone(), return_type,
+ parameters: vec![], modifiers: vec![], is_constructor: kind == KIND_LABEL_CONSTRUCTOR,
+ range: Some(range), name_range: Some(name_range),
+ })
+ },
+ KIND_LABEL_FIELD => {
+ let type_node = mat.captures.iter()
+ .find(|c| c.index == self.indices.field_type)
+ .map(|c| c.node)
+ .or_else(|| anchor_node.child_by_field_name("type"))
+ .or_else(|| anchor_node.parent().and_then(|p| p.child_by_field_name("type")));
+
+ let type_ref = if let Some(t) = type_node {
+ self.generate_typed_as_edges(t, source, &fqn, &mut relations);
+ self.parse_type_node(t, source)
+ } else {
+ TypeRef::Unknown
+ };
+
+ JavaElement::Field(JavaField {
+ id: fqn.clone(), name: name.clone(),
+ type_ref,
+ modifiers: vec![], range: Some(range), name_range: Some(name_range),
+ })
+ },
_ => unreachable!(),
};
entities.push(JavaEntity {
@@ -171,7 +192,11 @@ impl JavaParser {
) {
if let Some(parent_name_node) = parent_node.child_by_field_name("name") {
let source_fqn = self.get_fqn_for_definition(&parent_name_node, source, package.as_deref());
- let target = target_node.utf8_text(source.as_bytes()).unwrap_or("").to_string();
+ let mut target = target_node.utf8_text(source.as_bytes()).unwrap_or("").to_string();
+ if let Some(obj) = call_cap.node.child_by_field_name("object") {
+ let obj_text = obj.utf8_text(source.as_bytes()).unwrap_or_default();
+ target = format!("{}.{}", obj_text, target);
+ }
relations.push(JavaRelation {
source_fqn,
target_name: target,
@@ -253,7 +278,14 @@ impl JavaParser {
match element {
JavaElement::Class(_) => {
if let Some(s) = mat.captures.iter().find(|c| c.index == self.indices.class_super) {
- let s_name = s.node.utf8_text(source.as_bytes()).unwrap_or_default().to_string();
+ let mut s_name = s.node.utf8_text(source.as_bytes()).unwrap_or_default().to_string();
+ let mut cursor = s.node.walk();
+ for child in s.node.children(&mut cursor) {
+ if child.kind() == "type_identifier" || child.kind() == "scoped_type_identifier" || child.kind() == "generic_type" {
+ s_name = child.utf8_text(source.as_bytes()).unwrap_or_default().to_string();
+ break;
+ }
+ }
relations.push(JavaRelation {
source_fqn: fqn.clone(),
target_name: s_name,
diff --git a/src/parser/java/mod.rs b/src/parser/java/mod.rs
index b411ccc..382a0ee 100644
--- a/src/parser/java/mod.rs
+++ b/src/parser/java/mod.rs
@@ -203,6 +203,14 @@ impl JavaParser {
}
pub fn find_local_declaration(&self, start_node: Node, name: &str, source: &str) -> Option<(Range, Option)> {
+ self.find_local_declaration_node(start_node, name, source)
+ .map(|(range, type_node)| {
+ let type_name = type_node.and_then(|t| t.utf8_text(source.as_bytes()).ok().map(|s| s.to_string()));
+ (range, type_name)
+ })
+ }
+
+ pub fn find_local_declaration_node<'a>(&self, start_node: Node<'a>, name: &str, source: &str) -> Option<(Range, Option>)> {
let mut curr = start_node;
while let Some(parent) = curr.parent() {
// Check declarations in this scope before the start_node
@@ -211,12 +219,12 @@ impl JavaParser {
if child.start_byte() >= start_node.start_byte() {
break;
}
- if let Some(res) = self.is_decl_of(&child, name, source) {
+ if let Some(res) = self.is_decl_of_node(&child, name, source) {
return Some(res);
}
}
// Check if parent itself is a declaration (like method parameters)
- if let Some(res) = self.is_decl_of(&parent, name, source) {
+ if let Some(res) = self.is_decl_of_node(&parent, name, source) {
return Some(res);
}
curr = parent;
@@ -341,7 +349,7 @@ impl JavaParser {
}
}
- pub fn is_decl_of(&self, node: &Node, name: &str, source: &str) -> Option<(Range, Option)> {
+ pub fn is_decl_of_node<'a>(&self, node: &Node<'a>, name: &str, source: &str) -> Option<(Range, Option>)> {
match node.kind() {
"variable_declarator" | "formal_parameter" | "catch_formal_parameter" => {
if let Some(name_node) = node.child_by_field_name("name") {
@@ -355,8 +363,7 @@ impl JavaParser {
// Type is a sibling for parameters
node.child_by_field_name("type")
};
- let type_name = type_node.and_then(|t| t.utf8_text(source.as_bytes()).ok().map(|s| s.to_string()));
- return Some((range, type_name));
+ return Some((range, type_node));
}
}
}
@@ -368,14 +375,14 @@ impl JavaParser {
return Some((range_from_ts(params.range()), None));
}
} else {
- return self.is_decl_of(¶ms, name, source);
+ return self.is_decl_of_node(¶ms, name, source);
}
}
return None;
}
let mut cursor = node.walk();
for child in node.children(&mut cursor) {
- if let Some(res) = self.is_decl_of(&child, name, source) { return Some(res); }
+ if let Some(res) = self.is_decl_of_node(&child, name, source) { return Some(res); }
}
}
_ => {}
@@ -383,6 +390,14 @@ impl JavaParser {
None
}
+ pub fn is_decl_of(&self, node: &Node, name: &str, source: &str) -> Option<(Range, Option)> {
+ self.is_decl_of_node(node, name, source)
+ .map(|(range, type_node)| {
+ let type_name = type_node.and_then(|t| t.utf8_text(source.as_bytes()).ok().map(|s| s.to_string()));
+ (range, type_name)
+ })
+ }
+
pub fn resolve_type_name_to_fqn(&self, type_name: &str, tree: &Tree, source: &str) -> Option {
let (pkg, imports) = self.extract_package_and_imports(tree, source);
self.resolve_type_name_to_fqn_data(type_name, pkg.as_deref(), &imports)
diff --git a/src/resolver/lang/java/mod.rs b/src/resolver/lang/java/mod.rs
index e20cd1b..7206ab4 100644
--- a/src/resolver/lang/java/mod.rs
+++ b/src/resolver/lang/java/mod.rs
@@ -53,9 +53,16 @@ impl JavaResolver {
scopes
}
- fn resolve_type_ref(&self, type_ref: &TypeRef, package: Option<&str>, imports: &[String]) -> TypeRef {
+ fn resolve_type_ref(&self, type_ref: &TypeRef, package: Option<&str>, imports: &[String], known_fqns: &std::collections::HashSet) -> TypeRef {
match type_ref {
TypeRef::Raw(name) => {
+ // 1. Check if name matches a known FQN suffix in the same file (Inner class priority)
+ if let Some(fqn) = known_fqns.iter().find(|k| k.ends_with(&format!(".{}", name)) || *k == name) {
+ // Simple heuristic: if the name matches the end of a known FQN, use it.
+ // This handles 'Source' -> '...DefaultApplicationArguments.Source'
+ return TypeRef::Id(fqn.clone());
+ }
+
if let Some(fqn) = self.parser.resolve_type_name_to_fqn_data(name, package, imports) {
TypeRef::Id(fqn)
} else {
@@ -64,19 +71,19 @@ impl JavaResolver {
},
TypeRef::Generic { base, args } => {
TypeRef::Generic {
- base: Box::new(self.resolve_type_ref(base, package, imports)),
- args: args.iter().map(|a| self.resolve_type_ref(a, package, imports)).collect()
+ base: Box::new(self.resolve_type_ref(base, package, imports, known_fqns)),
+ args: args.iter().map(|a| self.resolve_type_ref(a, package, imports, known_fqns)).collect()
}
},
TypeRef::Array { element, dimensions } => {
TypeRef::Array {
- element: Box::new(self.resolve_type_ref(element, package, imports)),
+ element: Box::new(self.resolve_type_ref(element, package, imports, known_fqns)),
dimensions: *dimensions
}
},
TypeRef::Wildcard { bound, is_upper_bound } => {
TypeRef::Wildcard {
- bound: bound.as_ref().map(|b| Box::new(self.resolve_type_ref(b, package, imports))),
+ bound: bound.as_ref().map(|b| Box::new(self.resolve_type_ref(b, package, imports, known_fqns))),
is_upper_bound: *is_upper_bound
}
},
@@ -225,6 +232,13 @@ impl LangResolver for JavaResolver {
module_id
};
+ let mut known_fqns = std::collections::HashSet::new();
+ for node in &parse_result.nodes {
+ if self.is_top_level_node(node) || matches!(node.kind(), NodeKind::Class | NodeKind::Interface | NodeKind::Enum | NodeKind::Annotation) {
+ known_fqns.insert(node.fqn().to_string());
+ }
+ }
+
for node in &parse_result.nodes {
let fqn = node.fqn();
let mut node = node.clone();
@@ -233,13 +247,13 @@ impl LangResolver for JavaResolver {
if let GraphNode::Code(crate::model::graph::CodeElement::Java { element, .. }) = &mut node {
match element {
crate::model::lang::java::JavaElement::Method(m) => {
- m.return_type = self.resolve_type_ref(&m.return_type, parse_result.package_name.as_deref(), &parse_result.imports);
+ m.return_type = self.resolve_type_ref(&m.return_type, parse_result.package_name.as_deref(), &parse_result.imports, &known_fqns);
for param in &mut m.parameters {
- param.type_ref = self.resolve_type_ref(¶m.type_ref, parse_result.package_name.as_deref(), &parse_result.imports);
+ param.type_ref = self.resolve_type_ref(¶m.type_ref, parse_result.package_name.as_deref(), &parse_result.imports, &known_fqns);
}
},
crate::model::lang::java::JavaElement::Field(f) => {
- f.type_ref = self.resolve_type_ref(&f.type_ref, parse_result.package_name.as_deref(), &parse_result.imports);
+ f.type_ref = self.resolve_type_ref(&f.type_ref, parse_result.package_name.as_deref(), &parse_result.imports, &known_fqns);
},
_ => {}
}
@@ -254,7 +268,10 @@ impl LangResolver for JavaResolver {
for (source_fqn, target_fqn, edge_type, range) in &parse_result.relations {
let mut resolved_target = target_fqn.clone();
if !target_fqn.contains('.') {
- if let Some(res) = self.parser.resolve_type_name_to_fqn_data(
+ // Try to resolve using known FQNs first
+ if let Some(fqn) = known_fqns.iter().find(|k| k.ends_with(&format!(".{}", target_fqn)) || *k == target_fqn) {
+ resolved_target = fqn.clone();
+ } else if let Some(res) = self.parser.resolve_type_name_to_fqn_data(
target_fqn,
parse_result.package_name.as_deref(),
&parse_result.imports,
diff --git a/src/resolver/lang/java/scope/member.rs b/src/resolver/lang/java/scope/member.rs
index 3f23adf..e9014f2 100644
--- a/src/resolver/lang/java/scope/member.rs
+++ b/src/resolver/lang/java/scope/member.rs
@@ -11,6 +11,37 @@ pub struct MemberScope<'a> {
}
impl MemberScope<'_> {
+ fn resolve_type_ref_fqns(&self, type_ref: &TypeRef, context: &ResolutionContext) -> TypeRef {
+ match type_ref {
+ TypeRef::Raw(name) | TypeRef::Id(name) => {
+ if let Some(fqn) = self.parser.resolve_type_name_to_fqn(name, context.tree, context.source) {
+ TypeRef::Id(fqn)
+ } else {
+ TypeRef::Raw(name.clone())
+ }
+ },
+ TypeRef::Generic { base, args } => {
+ TypeRef::Generic {
+ base: Box::new(self.resolve_type_ref_fqns(base, context)),
+ args: args.iter().map(|a| self.resolve_type_ref_fqns(a, context)).collect()
+ }
+ },
+ TypeRef::Array { element, dimensions } => {
+ TypeRef::Array {
+ element: Box::new(self.resolve_type_ref_fqns(element, context)),
+ dimensions: *dimensions
+ }
+ },
+ TypeRef::Wildcard { bound, is_upper_bound } => {
+ TypeRef::Wildcard {
+ bound: bound.as_ref().map(|b| Box::new(self.resolve_type_ref_fqns(b, context))),
+ is_upper_bound: *is_upper_bound
+ }
+ },
+ _ => type_ref.clone()
+ }
+ }
+
fn get_base_fqn(&self, type_ref: &TypeRef) -> Option {
match type_ref {
TypeRef::Id(s) | TypeRef::Raw(s) => Some(s.clone()),
@@ -19,18 +50,44 @@ impl MemberScope<'_> {
}
}
+ fn resolve_fqn_from_context(&self, name: &str, context: &ResolutionContext) -> Option {
+ // 1. Check if it's already an FQN in the index
+ if context.index.fqn_map.contains_key(name) {
+ return Some(name.to_string());
+ }
+
+ // 2. Check inner classes in enclosing classes
+ for container_fqn in &context.enclosing_classes {
+ let candidate = format!("{}.{}", container_fqn, name);
+ if context.index.fqn_map.contains_key(&candidate) {
+ return Some(candidate);
+ }
+ }
+
+ // 3. Use parser's resolution (imports/package)
+ if let Some(fqn) = self.parser.resolve_type_name_to_fqn(name, context.tree, context.source) {
+ if fqn != name {
+ return Some(fqn);
+ }
+ }
+
+ Some(name.to_string())
+ }
+
fn resolve_expression_type(&self, node: &tree_sitter::Node, context: &ResolutionContext) -> Option {
let kind = node.kind();
match kind {
"identifier" | "type_identifier" => {
let name = node.utf8_text(context.source.as_bytes()).ok()?;
// 1. Local Scope
- if let Some((_, maybe_type)) = self.parser.find_local_declaration(*node, name, context.source) {
- if let Some(type_name) = maybe_type {
- if let Some(fqn) = self.parser.resolve_type_name_to_fqn(&type_name, context.tree, context.source) {
- return Some(TypeRef::Id(fqn));
- }
- return Some(TypeRef::Raw(type_name));
+ if let Some((_, maybe_type_node)) = self.parser.find_local_declaration_node(*node, name, context.source) {
+ if let Some(type_node) = maybe_type_node {
+ // Parse the type node properly to handle generics
+ let type_ref = self.parser.parse_type_node(type_node, context.source);
+
+ // Resolve FQNs within the parsed type ref
+ let resolved_type_ref = self.resolve_type_ref_fqns(&type_ref, context);
+ return Some(resolved_type_ref);
}
// Heuristic: Try to infer lambda parameter type
@@ -39,7 +96,11 @@ impl MemberScope<'_> {
// 2. Lexical Scope
for container_fqn in &context.enclosing_classes {
let candidate = format!("{}.{}", container_fqn, name);
- if context.index.fqn_map.contains_key(&candidate) {
+ if let Some(&idx) = context.index.fqn_map.get(&candidate) {
+ let node = &context.index.topology[idx];
+ if let GraphNode::Code(crate::model::graph::CodeElement::Java { element: JavaElement::Field(f), .. }) = node {
+ return Some(f.type_ref.clone());
+ }
return Some(TypeRef::Id(candidate));
}
}
@@ -58,7 +119,8 @@ impl MemberScope<'_> {
let receiver = node.child_by_field_name("object")?;
let field_name = node.child_by_field_name("field")?.utf8_text(context.source.as_bytes()).ok()?;
let receiver_type_ref = self.resolve_expression_type(&receiver, context)?;
- let receiver_type = self.get_base_fqn(&receiver_type_ref)?;
+ let raw_receiver_type = self.get_base_fqn(&receiver_type_ref)?;
+ let receiver_type = self.resolve_fqn_from_context(&raw_receiver_type, context)?;
let field_fqn = format!("{}.{}", receiver_type, field_name);
@@ -73,7 +135,8 @@ impl MemberScope<'_> {
let receiver = node.child_by_field_name("object")?;
let method_name = node.child_by_field_name("name")?.utf8_text(context.source.as_bytes()).ok()?;
let receiver_type_ref = self.resolve_expression_type(&receiver, context)?;
- let receiver_type = self.get_base_fqn(&receiver_type_ref)?;
+ let raw_receiver_type = self.get_base_fqn(&receiver_type_ref)?;
+ let receiver_type = self.resolve_fqn_from_context(&raw_receiver_type, context)?;
let method_fqn = format!("{}.{}", receiver_type, method_name);
if let Some(&idx) = context.index.fqn_map.get(&method_fqn) {
@@ -145,6 +208,7 @@ impl SemanticScope> for MemberScope<'_> {
// Case A: Explicit Receiver (obj.field)
self.resolve_expression_type(&recv, context)
.and_then(|type_ref| self.get_base_fqn(&type_ref))
+ .and_then(|raw_type_fqn| self.resolve_fqn_from_context(&raw_type_fqn, context))
.map(|type_fqn| format!("{}.{}", type_fqn, name))
.and_then(|candidate| context.index.fqn_map.contains_key(&candidate).then_some(candidate))
.map(|fqn| Ok(SymbolResolution::Precise(fqn, context.intent)))
diff --git a/tests/common/mod.rs b/tests/common/mod.rs
new file mode 100644
index 0000000..6ecb348
--- /dev/null
+++ b/tests/common/mod.rs
@@ -0,0 +1,84 @@
+use naviscope::index::CodeGraph;
+use naviscope::model::graph::GraphOp;
+use naviscope::parser::java::JavaParser;
+use naviscope::parser::IndexParser;
+use naviscope::resolver::lang::java::JavaResolver;
+use naviscope::project::scanner::{ParsedFile, ParsedContent};
+use naviscope::project::source::SourceFile;
+use naviscope::resolver::ProjectContext;
+use std::path::PathBuf;
+use tree_sitter::Parser;
+
+pub fn setup_java_test_graph(files: Vec<(&str, &str)>) -> (CodeGraph, Vec<(PathBuf, String, tree_sitter::Tree)>) {
+ let mut index = CodeGraph::new();
+ let mut parsed_files = Vec::new();
+ let java_parser = JavaParser::new().unwrap();
+ let mut ts_parser = Parser::new();
+ ts_parser.set_language(&java_parser.language).unwrap();
+
+ // Phase 1: Parse all files to get entities and build the graph
+ let mut all_parsed_files = Vec::new();
+ for (path_str, content) in files {
+ let path = PathBuf::from(path_str);
+ let res = java_parser.parse_file(content, Some(&path)).unwrap();
+ let source_file = SourceFile::new(path.clone(), 0, 0);
+ let parsed_file = ParsedFile {
+ file: source_file,
+ content: ParsedContent::Java(res),
+ };
+ all_parsed_files.push((parsed_file, content.to_string()));
+ }
+
+ // Phase 2: Resolve (using JavaResolver's LangResolver implementation)
+ let resolver = JavaResolver::new();
+ let context = ProjectContext::new(); // Empty context for simple tests
+
+ let mut all_ops = Vec::new();
+
+ for (pf, content) in all_parsed_files {
+ let tree = ts_parser.parse(&content, None).unwrap();
+
+ // Use LangResolver to get graph operations
+ use naviscope::resolver::LangResolver;
+ let unit = resolver.resolve(&pf, &context).unwrap();
+ all_ops.extend(unit.ops);
+
+ parsed_files.push((pf.file.path.clone(), content.to_string(), tree));
+ }
+
+ // Apply Node operations first
+ for op in &all_ops {
+ if let GraphOp::AddNode { .. } = op {
+ apply_op_to_graph(&mut index, op.clone());
+ }
+ }
+
+ // Apply Edge operations next
+ for op in &all_ops {
+ if let GraphOp::AddEdge { .. } = op {
+ apply_op_to_graph(&mut index, op.clone());
+ }
+ }
+
+ (index, parsed_files)
+}
+
+pub fn apply_op_to_graph(index: &mut CodeGraph, op: GraphOp) {
+ match op {
+ GraphOp::AddNode { id, data } => {
+ let path = data.file_path().cloned();
+ let idx = index.get_or_create_node(&id, data);
+ if let Some(p) = path {
+ index.path_to_nodes.entry(p).or_default().push(idx);
+ }
+ }
+ GraphOp::AddEdge { from_id, to_id, edge } => {
+ let from_idx = index.fqn_map.get(&from_id).cloned();
+ let to_idx = index.fqn_map.get(&to_id).cloned();
+ if let (Some(s_idx), Some(t_idx)) = (from_idx, to_idx) {
+ index.topology.add_edge(s_idx, t_idx, edge);
+ }
+ }
+ _ => {}
+ }
+}
diff --git a/tests/edge_verification.rs b/tests/edge_verification.rs
new file mode 100644
index 0000000..9e08134
--- /dev/null
+++ b/tests/edge_verification.rs
@@ -0,0 +1,151 @@
+mod common;
+use common::setup_java_test_graph;
+use naviscope::index::CodeGraph;
+use naviscope::model::graph::EdgeType;
+
+/// Helper assertion: Verify that an edge of the specified type exists from source to target in the graph
+fn assert_edge(graph: &CodeGraph, from_fqn: &str, to_fqn: &str, expected_type: EdgeType) {
+ let from_idx = graph.fqn_map.get(from_fqn);
+ let to_idx = graph.fqn_map.get(to_fqn);
+
+ if from_idx.is_none() {
+ println!("Available nodes:");
+ for (id, _) in &graph.fqn_map {
+ println!(" - {}", id);
+ }
+ panic!("Source node not found: {}", from_fqn);
+ }
+ if to_idx.is_none() {
+ println!("Available nodes:");
+ for (id, _) in &graph.fqn_map {
+ println!(" - {}", id);
+ }
+ panic!("Target node not found: {}", to_fqn);
+ }
+
+ let edge_idx = graph.topology.find_edge(*from_idx.unwrap(), *to_idx.unwrap());
+
+ if edge_idx.is_none() {
+ println!("Graph nodes:");
+ for (id, _) in &graph.fqn_map {
+ println!(" - {}", id);
+ }
+ println!("Edges from {}:", from_fqn);
+ let mut edges = graph.topology.neighbors_directed(*from_idx.unwrap(), petgraph::Direction::Outgoing).detach();
+ while let Some((e_idx, target_idx)) = edges.next(&graph.topology) {
+ let target_node = &graph.topology[target_idx];
+ let edge = &graph.topology[e_idx];
+ println!(" -> {} ({:?})", target_node.fqn(), edge.edge_type);
+ }
+ panic!("Edge not found between {} and {}", from_fqn, to_fqn);
+ }
+
+ let edge_weight = graph.topology.edge_weight(edge_idx.unwrap()).unwrap();
+ assert_eq!(edge_weight.edge_type, expected_type,
+ "Edge type mismatch for {} -> {}. Expected {:?}, got {:?}",
+ from_fqn, to_fqn, expected_type, edge_weight.edge_type);
+}
+
+#[test]
+fn test_edge_contains() {
+ let files = vec![
+ ("src/com/test/Container.java", r#"
+ package com.test;
+ public class Container {
+ private int field;
+ public void method() {}
+ }
+ "#),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ // Class -> Field
+ assert_edge(&index, "com.test.Container", "com.test.Container.field", EdgeType::Contains);
+ // Class -> Method
+ assert_edge(&index, "com.test.Container", "com.test.Container.method", EdgeType::Contains);
+}
+
+#[test]
+fn test_edge_inherits_from() {
+ let files = vec![
+ ("src/Parent.java", "public class Parent {}"),
+ ("src/Child.java", "public class Child extends Parent {}"),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ assert_edge(&index, "Child", "Parent", EdgeType::InheritsFrom);
+}
+
+#[test]
+fn test_edge_implements() {
+ let files = vec![
+ ("src/IAction.java", "public interface IAction {}"),
+ ("src/ActionImpl.java", "public class ActionImpl implements IAction {}"),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ assert_edge(&index, "ActionImpl", "IAction", EdgeType::Implements);
+}
+
+#[test]
+fn test_edge_calls() {
+ let files = vec![
+ ("src/Service.java", r#"
+ package com.test;
+ public class Service {
+ void run() { com.test.Service.helper(); }
+ static void helper() {}
+ }
+ "#),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ // Using FQN in call to ensure resolution works in batch mode
+ assert_edge(&index, "com.test.Service.run", "com.test.Service.helper", EdgeType::Calls);
+}
+
+#[test]
+fn test_edge_instantiates() {
+ let files = vec![
+ ("src/Factory.java", r#"
+ public class Factory {
+ void create() { new Product(); }
+ }
+ "#),
+ ("src/Product.java", "public class Product {}"),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ assert_edge(&index, "Factory.create", "Product", EdgeType::Instantiates);
+}
+
+#[test]
+fn test_edge_typed_as() {
+ let files = vec![
+ ("src/User.java", r#"
+ public class User {
+ private String name;
+ private Address address;
+ }
+ "#),
+ ("src/Address.java", "public class Address {}"),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ assert_edge(&index, "User.address", "Address", EdgeType::TypedAs);
+}
+
+#[test]
+#[ignore]
+fn test_edge_decorated_by() {
+ let files = vec![
+ ("src/Component.java", r#"
+ @CustomAnnotation
+ public class Component {}
+ "#),
+ ("src/CustomAnnotation.java", "public @interface CustomAnnotation {}"),
+ ];
+ let (index, _) = setup_java_test_graph(files);
+
+ assert_edge(&index, "Component", "CustomAnnotation", EdgeType::DecoratedBy);
+}
diff --git a/tests/java_integration.rs b/tests/java_integration.rs
index 2b3b426..aa63150 100644
--- a/tests/java_integration.rs
+++ b/tests/java_integration.rs
@@ -1,76 +1,8 @@
-use naviscope::index::CodeGraph;
-use naviscope::model::graph::GraphOp;
-use naviscope::parser::java::JavaParser;
-use naviscope::parser::IndexParser;
+mod common;
+
use naviscope::resolver::lang::java::JavaResolver;
use naviscope::resolver::SemanticResolver;
-use naviscope::project::scanner::{ParsedFile, ParsedContent};
-use naviscope::project::source::SourceFile;
-use naviscope::resolver::ProjectContext;
-use std::path::PathBuf;
-use tree_sitter::Parser;
-
-fn setup_java_test_graph(files: Vec<(&str, &str)>) -> (CodeGraph, Vec<(PathBuf, String, tree_sitter::Tree)>) {
- let mut index = CodeGraph::new();
- let mut parsed_files = Vec::new();
- let java_parser = JavaParser::new().unwrap();
- let mut ts_parser = Parser::new();
- ts_parser.set_language(&java_parser.language).unwrap();
-
- // Phase 1: Parse all files to get entities and build the graph
- let mut all_parsed_files = Vec::new();
- for (path_str, content) in files {
- let path = PathBuf::from(path_str);
- let res = java_parser.parse_file(content, Some(&path)).unwrap();
- let source_file = SourceFile::new(path.clone(), 0, 0);
- let parsed_file = ParsedFile {
- file: source_file,
- content: ParsedContent::Java(res),
- };
- all_parsed_files.push((parsed_file, content.to_string()));
- }
-
- // Phase 2: Resolve (using JavaResolver's LangResolver implementation)
- let resolver = JavaResolver::new();
- let context = ProjectContext::new(); // Empty context for simple tests
-
- for (pf, content) in all_parsed_files {
- let tree = ts_parser.parse(&content, None).unwrap();
-
- // Use LangResolver to get graph operations
- use naviscope::resolver::LangResolver;
- let unit = resolver.resolve(&pf, &context).unwrap();
-
- // Apply operations to the graph
- for op in unit.ops {
- apply_op_to_graph(&mut index, op.clone());
- }
-
- parsed_files.push((pf.file.path.clone(), content.to_string(), tree));
- }
-
- (index, parsed_files)
-}
-
-fn apply_op_to_graph(index: &mut CodeGraph, op: GraphOp) {
- match op {
- GraphOp::AddNode { id, data } => {
- let path = data.file_path().cloned();
- let idx = index.get_or_create_node(&id, data);
- if let Some(p) = path {
- index.path_to_nodes.entry(p).or_default().push(idx);
- }
- }
- GraphOp::AddEdge { from_id, to_id, edge } => {
- let from_idx = index.fqn_map.get(&from_id).cloned();
- let to_idx = index.fqn_map.get(&to_id).cloned();
- if let (Some(s_idx), Some(t_idx)) = (from_idx, to_idx) {
- index.topology.add_edge(s_idx, t_idx, edge);
- }
- }
- _ => {}
- }
-}
+use common::setup_java_test_graph;
#[test]
fn test_cross_file_resolution() {
@@ -389,3 +321,40 @@ public class DefaultApplicationArguments {
panic!("Failed to resolve Spring Boot scenario, got {:?}", res);
}
}
+
+#[test]
+fn test_field_method_call_resolution() {
+ let files = vec![
+ ("src/A.java", "public class A { private B b; public void doA() { b.doB(); } }"),
+ ("src/B.java", "public class B { public void doB() {} }"),
+ ];
+
+ let (index, trees) = setup_java_test_graph(files);
+ let resolver = JavaResolver::new();
+
+ let a_content = &trees[0].1;
+ let a_tree = &trees[0].2;
+
+ // Resolve 'doB' in 'b.doB()'
+ let do_b_pos = a_content.find("doB()").expect("Could not find 'doB()'");
+
+ // We need line/col for resolve_at
+ let offset_to_point = |offset: usize| -> (usize, usize) {
+ let pre_content = &a_content[..offset];
+ let line = pre_content.lines().count().max(1) - 1;
+ let last_newline = pre_content.rfind('\n').map(|p| p + 1).unwrap_or(0);
+ let col = offset - last_newline;
+ (line, col)
+ };
+
+ let (line, col) = offset_to_point(do_b_pos);
+
+ let res = resolver.resolve_at(a_tree, a_content, line, col, &index);
+
+ assert!(res.is_some(), "Failed to resolve 'doB' at line {}, col {}", line, col);
+ if let Some(naviscope::parser::SymbolResolution::Precise(fqn, _)) = res {
+ assert_eq!(fqn, "B.doB");
+ } else {
+ panic!("Expected precise resolution to B.doB, got {:?}", res);
+ }
+}