// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 import LanguageServerProtocol public struct Diagnostic: Equatable, Codable, Sendable { public typealias Severity = LanguageServerProtocol.DiagnosticSeverity public let message: String public let severity: Severity public let absoluteUtf16Range: Range init(message: String, severity: Severity, absoluteRange: Range) { self.message = message self.severity = severity self.absoluteUtf16Range = absoluteRange } init(message: String, absoluteRange: Range) { self.init(message: message, severity: Severity.error, absoluteRange: absoluteRange) } func lspRange(lineMap: LineMap) -> LanguageServerProtocol.LSPRange { let start = lineMap.lspPosition(at: absoluteUtf16Range.lowerBound) let end = lineMap.lspPosition(at: absoluteUtf16Range.upperBound) return LSPRange(start: start, end: end) } public func lspDiagnostic(lineMap: LineMap) -> LanguageServerProtocol.Diagnostic { LanguageServerProtocol.Diagnostic( range: lspRange(lineMap: lineMap), severity: severity, message: message ) } }