ts_bridge/types/
mod.rs

1//! =============================================================================
2//! Shared Types
3//! =============================================================================
4
5use serde::{Deserialize, Serialize};
6
7/// Minimal LSP text document identifier; expanded as we add handlers.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct TextDocumentIdentifier {
10    pub uri: String,
11}
12
13/// Basic LSP position.
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct Position {
16    pub line: u32,
17    pub character: u32,
18}
19
20/// LSP range (start/end positions).
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct Range {
23    pub start: Position,
24    pub end: Position,
25}
26
27#[derive(Debug, Clone, Deserialize, Serialize)]
28pub struct TextDocumentItem {
29    pub uri: String,
30    #[serde(rename = "languageId")]
31    pub language_id: Option<String>,
32    pub version: i32,
33    pub text: String,
34}
35
36#[derive(Debug, Clone, Deserialize, Serialize)]
37pub struct DidOpenTextDocumentParams {
38    #[serde(rename = "textDocument")]
39    pub text_document: TextDocumentItem,
40}
41
42#[derive(Debug, Clone, Deserialize, Serialize)]
43pub struct VersionedTextDocumentIdentifier {
44    pub uri: String,
45    pub version: Option<i32>,
46}
47
48#[derive(Debug, Clone, Deserialize, Serialize)]
49pub struct TextDocumentContentChangeEvent {
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub range: Option<Range>,
52    pub text: String,
53}
54
55#[derive(Debug, Clone, Deserialize, Serialize)]
56pub struct DidChangeTextDocumentParams {
57    #[serde(rename = "textDocument")]
58    pub text_document: VersionedTextDocumentIdentifier,
59    #[serde(rename = "contentChanges")]
60    pub content_changes: Vec<TextDocumentContentChangeEvent>,
61}
62
63#[derive(Debug, Clone, Deserialize, Serialize)]
64pub struct DidCloseTextDocumentParams {
65    #[serde(rename = "textDocument")]
66    pub text_document: TextDocumentIdentifier,
67}