lib/spoom/sorbet/lsp/errors.rb



# typed: true
# frozen_string_literal: true

module Spoom
  module LSP
    class Error < StandardError
      class AlreadyOpen < Error; end
      class BadHeaders < Error; end

      class Diagnostics < Error
        attr_reader :uri, :diagnostics

        def self.from_json(json)
          Diagnostics.new(
            json['uri'],
            json['diagnostics'].map { |d| Diagnostic.from_json(d) }
          )
        end

        def initialize(uri, diagnostics)
          @uri = uri
          @diagnostics = diagnostics
        end
      end
    end

    class ResponseError < Error
      attr_reader :code, :message, :data

      def self.from_json(json)
        ResponseError.new(
          json['code'],
          json['message'],
          json['data']
        )
      end

      def initialize(code, message, data)
        @code = code
        @message = message
        @data = data
      end
    end
  end
end