blob: e1e4b90ff78bc945ddcea10cb6012f491f4015d4 [file] [log] [blame]
// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// This file has been automatically generated. Please do not edit it manually.
// To regenerate the file, use the script
// "pkg/analysis_server/tool/lsp_spec/generate_all.dart".
import 'dart:core' hide deprecated;
import 'dart:core' as core show deprecated;
import 'package:analysis_server/lsp_protocol/protocol_special.dart';
class ApplyWorkspaceEditParams implements ToJsonable {
ApplyWorkspaceEditParams(this.label, this.edit) {
if (edit == null) {
throw 'edit is required but was not provided';
}
}
factory ApplyWorkspaceEditParams.fromJson(Map<String, dynamic> json) {
final label = json['label'];
final edit =
json['edit'] != null ? new WorkspaceEdit.fromJson(json['edit']) : null;
return new ApplyWorkspaceEditParams(label, edit);
}
/// The edits to apply.
final WorkspaceEdit edit;
/// An optional label of the workspace edit. This label is presented in the
/// user interface for example on an undo stack to undo the workspace edit.
final String label;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (label != null) {
__result['label'] = label;
}
__result['edit'] = edit ?? (throw 'edit is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('edit') &&
WorkspaceEdit.canParse(obj['edit']);
}
}
class ApplyWorkspaceEditResponse implements ToJsonable {
ApplyWorkspaceEditResponse(this.applied) {
if (applied == null) {
throw 'applied is required but was not provided';
}
}
factory ApplyWorkspaceEditResponse.fromJson(Map<String, dynamic> json) {
final applied = json['applied'];
return new ApplyWorkspaceEditResponse(applied);
}
/// Indicates whether the edit was applied or not.
final bool applied;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['applied'] =
applied ?? (throw 'applied is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('applied') &&
obj['applied'] is bool;
}
}
class CancelParams implements ToJsonable {
CancelParams(this.id) {
if (id == null) {
throw 'id is required but was not provided';
}
}
factory CancelParams.fromJson(Map<String, dynamic> json) {
final id = json['id'] is num
? new Either2<num, String>.t1(json['id'])
: (json['id'] is String
? new Either2<num, String>.t2(json['id'])
: (throw '''${json['id']} was not one of (number, string)'''));
return new CancelParams(id);
}
/// The request id to cancel.
final Either2<num, String> id;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['id'] = id ?? (throw 'id is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('id') &&
(obj['id'] is num || obj['id'] is String);
}
}
class ClientCapabilities implements ToJsonable {
ClientCapabilities(this.workspace, this.textDocument, this.experimental);
factory ClientCapabilities.fromJson(Map<String, dynamic> json) {
final workspace = json['workspace'] != null
? new WorkspaceClientCapabilities.fromJson(json['workspace'])
: null;
final textDocument = json['textDocument'] != null
? new TextDocumentClientCapabilities.fromJson(json['textDocument'])
: null;
final experimental = json['experimental'];
return new ClientCapabilities(workspace, textDocument, experimental);
}
/// Experimental client capabilities.
final dynamic experimental;
/// Text document specific client capabilities.
final TextDocumentClientCapabilities textDocument;
/// Workspace specific client capabilities.
final WorkspaceClientCapabilities workspace;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (workspace != null) {
__result['workspace'] = workspace;
}
if (textDocument != null) {
__result['textDocument'] = textDocument;
}
if (experimental != null) {
__result['experimental'] = experimental;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// A code action represents a change that can be performed in code, e.g. to fix
/// a problem or to refactor code.
///
/// A CodeAction must set either `edit` and/or a `command`. If both are
/// supplied, the `edit` is applied first, then the `command` is executed.
class CodeAction implements ToJsonable {
CodeAction(this.title, this.kind, this.diagnostics, this.edit, this.command) {
if (title == null) {
throw 'title is required but was not provided';
}
}
factory CodeAction.fromJson(Map<String, dynamic> json) {
final title = json['title'];
final kind = json['kind'];
final diagnostics = json['diagnostics']
?.map((item) => item != null ? new Diagnostic.fromJson(item) : null)
?.cast<Diagnostic>()
?.toList();
final edit =
json['edit'] != null ? new WorkspaceEdit.fromJson(json['edit']) : null;
final command =
json['command'] != null ? new Command.fromJson(json['command']) : null;
return new CodeAction(title, kind, diagnostics, edit, command);
}
/// A command this code action executes. If a code action provides an edit and
/// a command, first the edit is executed and then the command.
final Command command;
/// The diagnostics that this code action resolves.
final List<Diagnostic> diagnostics;
/// The workspace edit this code action performs.
final WorkspaceEdit edit;
/// The kind of the code action.
///
/// Used to filter code actions.
final String kind;
/// A short, human-readable, title for this code action.
final String title;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['title'] = title ?? (throw 'title is required but was not set');
if (kind != null) {
__result['kind'] = kind;
}
if (diagnostics != null) {
__result['diagnostics'] = diagnostics;
}
if (edit != null) {
__result['edit'] = edit;
}
if (command != null) {
__result['command'] = command;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('title') &&
obj['title'] is String;
}
}
/// Contains additional diagnostic information about the context in which a code
/// action is run.
class CodeActionContext implements ToJsonable {
CodeActionContext(this.diagnostics, this.only) {
if (diagnostics == null) {
throw 'diagnostics is required but was not provided';
}
}
factory CodeActionContext.fromJson(Map<String, dynamic> json) {
final diagnostics = json['diagnostics']
?.map((item) => item != null ? new Diagnostic.fromJson(item) : null)
?.cast<Diagnostic>()
?.toList();
final only = json['only']?.map((item) => item)?.cast<String>()?.toList();
return new CodeActionContext(diagnostics, only);
}
/// An array of diagnostics.
final List<Diagnostic> diagnostics;
/// Requested kind of actions to return.
///
/// Actions not of this kind are filtered out by the client before being
/// shown. So servers can omit computing them.
final List<String> only;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['diagnostics'] =
diagnostics ?? (throw 'diagnostics is required but was not set');
if (only != null) {
__result['only'] = only;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('diagnostics') &&
(obj['diagnostics'] is List &&
(obj['diagnostics'].length == 0 ||
obj['diagnostics'].every((item) => Diagnostic.canParse(item))));
}
}
/// A set of predefined code action kinds
abstract class CodeActionKind {
/// Base kind for quickfix actions: 'quickfix'
static const QuickFix = 'quickfix';
/// Base kind for refactoring actions: 'refactor'
static const Refactor = 'refactor';
/// Base kind for refactoring extraction actions: 'refactor.extract'
///
/// Example extract actions:
///
/// - Extract method
/// - Extract function
/// - Extract variable
/// - Extract interface from class
/// - ...
static const RefactorExtract = 'refactor.extract';
/// Base kind for refactoring inline actions: 'refactor.inline'
///
/// Example inline actions:
///
/// - Inline function
/// - Inline variable
/// - Inline constant
/// - ...
static const RefactorInline = 'refactor.inline';
/// Base kind for refactoring rewrite actions: 'refactor.rewrite'
///
/// Example rewrite actions:
///
/// - Convert JavaScript function to class
/// - Add or remove parameter
/// - Encapsulate field
/// - Make method static
/// - Move method to base class
/// - ...
static const RefactorRewrite = 'refactor.rewrite';
/// Base kind for source actions: `source`
///
/// Source code actions apply to the entire file.
static const Source = 'source';
/// Base kind for an organize imports source action: `source.organizeImports`
static const SourceOrganizeImports = 'source.organizeImports';
}
/// Code Action options.
class CodeActionOptions implements ToJsonable {
CodeActionOptions(this.codeActionKinds);
factory CodeActionOptions.fromJson(Map<String, dynamic> json) {
final codeActionKinds =
json['codeActionKinds']?.map((item) => item)?.cast<String>()?.toList();
return new CodeActionOptions(codeActionKinds);
}
/// CodeActionKinds that this server may return.
///
/// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or
/// the server may list out every specific kind they provide.
final List<String> codeActionKinds;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (codeActionKinds != null) {
__result['codeActionKinds'] = codeActionKinds;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// Params for the CodeActionRequest
class CodeActionParams implements ToJsonable {
CodeActionParams(this.textDocument, this.range, this.context) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (range == null) {
throw 'range is required but was not provided';
}
if (context == null) {
throw 'context is required but was not provided';
}
}
factory CodeActionParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final context = json['context'] != null
? new CodeActionContext.fromJson(json['context'])
: null;
return new CodeActionParams(textDocument, range, context);
}
/// Context carrying additional information.
final CodeActionContext context;
/// The range for which the command was invoked.
final Range range;
/// The document in which the command was invoked.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['range'] = range ?? (throw 'range is required but was not set');
__result['context'] =
context ?? (throw 'context is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('range') &&
Range.canParse(obj['range']) &&
obj.containsKey('context') &&
CodeActionContext.canParse(obj['context']);
}
}
class CodeActionRegistrationOptions
implements TextDocumentRegistrationOptions, CodeActionOptions, ToJsonable {
CodeActionRegistrationOptions(this.documentSelector, this.codeActionKinds);
factory CodeActionRegistrationOptions.fromJson(Map<String, dynamic> json) {
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
final codeActionKinds =
json['codeActionKinds']?.map((item) => item)?.cast<String>()?.toList();
return new CodeActionRegistrationOptions(documentSelector, codeActionKinds);
}
/// CodeActionKinds that this server may return.
///
/// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or
/// the server may list out every specific kind they provide.
final List<String> codeActionKinds;
/// A document selector to identify the scope of the registration. If set to
/// null the document selector provided on the client side will be used.
final List<DocumentFilter> documentSelector;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['documentSelector'] = documentSelector;
if (codeActionKinds != null) {
__result['codeActionKinds'] = codeActionKinds;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// A code lens represents a command that should be shown along with source
/// text, like the number of references, a way to run tests, etc.
///
/// A code lens is _unresolved_ when no command is associated to it. For
/// performance reasons the creation of a code lens and resolving should be done
/// in two stages.
class CodeLens implements ToJsonable {
CodeLens(this.range, this.command, this.data) {
if (range == null) {
throw 'range is required but was not provided';
}
}
factory CodeLens.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final command =
json['command'] != null ? new Command.fromJson(json['command']) : null;
final data = json['data'];
return new CodeLens(range, command, data);
}
/// The command this code lens represents.
final Command command;
/// A data entry field that is preserved on a code lens item between a code
/// lens and a code lens resolve request.
final dynamic data;
/// The range in which this code lens is valid. Should only span a single
/// line.
final Range range;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['range'] = range ?? (throw 'range is required but was not set');
if (command != null) {
__result['command'] = command;
}
if (data != null) {
__result['data'] = data;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('range') &&
Range.canParse(obj['range']);
}
}
/// Code Lens options.
class CodeLensOptions implements ToJsonable {
CodeLensOptions(this.resolveProvider);
factory CodeLensOptions.fromJson(Map<String, dynamic> json) {
final resolveProvider = json['resolveProvider'];
return new CodeLensOptions(resolveProvider);
}
/// Code lens has a resolve provider as well.
final bool resolveProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (resolveProvider != null) {
__result['resolveProvider'] = resolveProvider;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class CodeLensParams implements ToJsonable {
CodeLensParams(this.textDocument) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory CodeLensParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
return new CodeLensParams(textDocument);
}
/// The document to request code lens for.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']);
}
}
class CodeLensRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
CodeLensRegistrationOptions(this.resolveProvider, this.documentSelector);
factory CodeLensRegistrationOptions.fromJson(Map<String, dynamic> json) {
final resolveProvider = json['resolveProvider'];
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new CodeLensRegistrationOptions(resolveProvider, documentSelector);
}
/// A document selector to identify the scope of the registration. If set to
/// null the document selector provided on the client side will be used.
final List<DocumentFilter> documentSelector;
/// Code lens has a resolve provider as well.
final bool resolveProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (resolveProvider != null) {
__result['resolveProvider'] = resolveProvider;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// Represents a color in RGBA space.
class Color implements ToJsonable {
Color(this.red, this.green, this.blue, this.alpha) {
if (red == null) {
throw 'red is required but was not provided';
}
if (green == null) {
throw 'green is required but was not provided';
}
if (blue == null) {
throw 'blue is required but was not provided';
}
if (alpha == null) {
throw 'alpha is required but was not provided';
}
}
factory Color.fromJson(Map<String, dynamic> json) {
final red = json['red'];
final green = json['green'];
final blue = json['blue'];
final alpha = json['alpha'];
return new Color(red, green, blue, alpha);
}
final num alpha;
final num blue;
final num green;
final num red;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['red'] = red ?? (throw 'red is required but was not set');
__result['green'] = green ?? (throw 'green is required but was not set');
__result['blue'] = blue ?? (throw 'blue is required but was not set');
__result['alpha'] = alpha ?? (throw 'alpha is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('red') &&
obj['red'] is num &&
obj.containsKey('green') &&
obj['green'] is num &&
obj.containsKey('blue') &&
obj['blue'] is num &&
obj.containsKey('alpha') &&
obj['alpha'] is num;
}
}
class ColorInformation implements ToJsonable {
ColorInformation(this.range, this.color) {
if (range == null) {
throw 'range is required but was not provided';
}
if (color == null) {
throw 'color is required but was not provided';
}
}
factory ColorInformation.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final color =
json['color'] != null ? new Color.fromJson(json['color']) : null;
return new ColorInformation(range, color);
}
/// The actual color value for this color range.
final Color color;
/// The range in the document where this color appears.
final Range range;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['range'] = range ?? (throw 'range is required but was not set');
__result['color'] = color ?? (throw 'color is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('range') &&
Range.canParse(obj['range']) &&
obj.containsKey('color') &&
Color.canParse(obj['color']);
}
}
class ColorPresentation implements ToJsonable {
ColorPresentation(this.label, this.textEdit, this.additionalTextEdits) {
if (label == null) {
throw 'label is required but was not provided';
}
}
factory ColorPresentation.fromJson(Map<String, dynamic> json) {
final label = json['label'];
final textEdit = json['textEdit'] != null
? new TextEdit.fromJson(json['textEdit'])
: null;
final additionalTextEdits = json['additionalTextEdits']
?.map((item) => item != null ? new TextEdit.fromJson(item) : null)
?.cast<TextEdit>()
?.toList();
return new ColorPresentation(label, textEdit, additionalTextEdits);
}
/// An optional array of additional text edits ([TextEdit]) that are applied
/// when selecting this color presentation. Edits must not overlap with the
/// main [edit](#ColorPresentation.textEdit) nor with themselves.
final List<TextEdit> additionalTextEdits;
/// The label of this color presentation. It will be shown on the color picker
/// header. By default this is also the text that is inserted when selecting
/// this color presentation.
final String label;
/// An edit ([TextEdit]) which is applied to a document when selecting this
/// presentation for the color. When `falsy` the
/// [label](#ColorPresentation.label) is used.
final TextEdit textEdit;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['label'] = label ?? (throw 'label is required but was not set');
if (textEdit != null) {
__result['textEdit'] = textEdit;
}
if (additionalTextEdits != null) {
__result['additionalTextEdits'] = additionalTextEdits;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('label') &&
obj['label'] is String;
}
}
class ColorPresentationParams implements ToJsonable {
ColorPresentationParams(this.textDocument, this.color, this.range) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (color == null) {
throw 'color is required but was not provided';
}
if (range == null) {
throw 'range is required but was not provided';
}
}
factory ColorPresentationParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final color =
json['color'] != null ? new Color.fromJson(json['color']) : null;
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
return new ColorPresentationParams(textDocument, color, range);
}
/// The color information to request presentations for.
final Color color;
/// The range where the color would be inserted. Serves as a context.
final Range range;
/// The text document.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['color'] = color ?? (throw 'color is required but was not set');
__result['range'] = range ?? (throw 'range is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('color') &&
Color.canParse(obj['color']) &&
obj.containsKey('range') &&
Range.canParse(obj['range']);
}
}
/// Color provider options.
class ColorProviderOptions implements ToJsonable {
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class Command implements ToJsonable {
Command(this.title, this.command, this.arguments) {
if (title == null) {
throw 'title is required but was not provided';
}
if (command == null) {
throw 'command is required but was not provided';
}
}
factory Command.fromJson(Map<String, dynamic> json) {
final title = json['title'];
final command = json['command'];
final arguments =
json['arguments']?.map((item) => item)?.cast<dynamic>()?.toList();
return new Command(title, command, arguments);
}
/// Arguments that the command handler should be invoked with.
final List<dynamic> arguments;
/// The identifier of the actual command handler.
final String command;
/// Title of the command, like `save`.
final String title;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['title'] = title ?? (throw 'title is required but was not set');
__result['command'] =
command ?? (throw 'command is required but was not set');
if (arguments != null) {
__result['arguments'] = arguments;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('title') &&
obj['title'] is String &&
obj.containsKey('command') &&
obj['command'] is String;
}
}
/// Contains additional information about the context in which a completion
/// request is triggered.
class CompletionContext implements ToJsonable {
CompletionContext(this.triggerKind, this.triggerCharacter) {
if (triggerKind == null) {
throw 'triggerKind is required but was not provided';
}
}
factory CompletionContext.fromJson(Map<String, dynamic> json) {
final triggerKind = json['triggerKind'] != null
? new CompletionTriggerKind.fromJson(json['triggerKind'])
: null;
final triggerCharacter = json['triggerCharacter'];
return new CompletionContext(triggerKind, triggerCharacter);
}
/// The trigger character (a single character) that has trigger code complete.
/// Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
final String triggerCharacter;
/// How the completion was triggered.
final CompletionTriggerKind triggerKind;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['triggerKind'] =
triggerKind ?? (throw 'triggerKind is required but was not set');
if (triggerCharacter != null) {
__result['triggerCharacter'] = triggerCharacter;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('triggerKind') &&
CompletionTriggerKind.canParse(obj['triggerKind']);
}
}
class CompletionItem implements ToJsonable {
CompletionItem(
this.label,
this.kind,
this.detail,
this.documentation,
this.deprecated,
this.preselect,
this.sortText,
this.filterText,
this.insertText,
this.insertTextFormat,
this.textEdit,
this.additionalTextEdits,
this.commitCharacters,
this.command,
this.data) {
if (label == null) {
throw 'label is required but was not provided';
}
}
factory CompletionItem.fromJson(Map<String, dynamic> json) {
final label = json['label'];
final kind = json['kind'] != null
? new CompletionItemKind.fromJson(json['kind'])
: null;
final detail = json['detail'];
final documentation = json['documentation'] is String
? new Either2<String, MarkupContent>.t1(json['documentation'])
: (MarkupContent.canParse(json['documentation'])
? new Either2<String, MarkupContent>.t2(
json['documentation'] != null
? new MarkupContent.fromJson(json['documentation'])
: null)
: (throw '''${json['documentation']} was not one of (string, MarkupContent)'''));
final deprecated = json['deprecated'];
final preselect = json['preselect'];
final sortText = json['sortText'];
final filterText = json['filterText'];
final insertText = json['insertText'];
final insertTextFormat = json['insertTextFormat'] != null
? new InsertTextFormat.fromJson(json['insertTextFormat'])
: null;
final textEdit = json['textEdit'] != null
? new TextEdit.fromJson(json['textEdit'])
: null;
final additionalTextEdits = json['additionalTextEdits']
?.map((item) => item != null ? new TextEdit.fromJson(item) : null)
?.cast<TextEdit>()
?.toList();
final commitCharacters =
json['commitCharacters']?.map((item) => item)?.cast<String>()?.toList();
final command =
json['command'] != null ? new Command.fromJson(json['command']) : null;
final data = json['data'];
return new CompletionItem(
label,
kind,
detail,
documentation,
deprecated,
preselect,
sortText,
filterText,
insertText,
insertTextFormat,
textEdit,
additionalTextEdits,
commitCharacters,
command,
data);
}
/// An optional array of additional text edits that are applied when selecting
/// this completion. Edits must not overlap (including the same insert
/// position) with the main edit nor with themselves.
///
/// Additional text edits should be used to change text unrelated to the
/// current cursor position (for example adding an import statement at the top
/// of the file if the completion item will insert an unqualified type).
final List<TextEdit> additionalTextEdits;
/// An optional command that is executed *after* inserting this completion.
/// *Note* that additional modifications to the current document should be
/// described with the additionalTextEdits-property.
final Command command;
/// An optional set of characters that when pressed while this completion is
/// active will accept it first and then type that character. *Note* that all
/// commit characters should have `length=1` and that superfluous characters
/// will be ignored.
final List<String> commitCharacters;
/// An data entry field that is preserved on a completion item between a
/// completion and a completion resolve request.
final dynamic data;
/// Indicates if this item is deprecated.
final bool deprecated;
/// A human-readable string with additional information about this item, like
/// type or symbol information.
final String detail;
/// A human-readable string that represents a doc-comment.
final Either2<String, MarkupContent> documentation;
/// A string that should be used when filtering a set of completion items.
/// When `falsy` the label is used.
final String filterText;
/// A string that should be inserted into a document when selecting this
/// completion. When `falsy` the label is used.
///
/// The `insertText` is subject to interpretation by the client side. Some
/// tools might not take the string literally. For example VS Code when code
/// complete is requested in this example `con<cursor position>` and a
/// completion item with an `insertText` of `console` is provided it will only
/// insert `sole`. Therefore it is recommended to use `textEdit` instead since
/// it avoids additional client side interpretation.
/// @deprecated Use textEdit instead.
@core.deprecated
final String insertText;
/// The format of the insert text. The format applies to both the `insertText`
/// property and the `newText` property of a provided `textEdit`.
final InsertTextFormat insertTextFormat;
/// The kind of this completion item. Based of the kind an icon is chosen by
/// the editor.
final CompletionItemKind kind;
/// The label of this completion item. By default also the text that is
/// inserted when selecting this completion.
final String label;
/// Select this item when showing.
///
/// *Note* that only one completion item can be selected and that the tool /
/// client decides which item that is. The rule is that the *first* item of
/// those that match best is selected.
final bool preselect;
/// A string that should be used when comparing this item with other items.
/// When `falsy` the label is used.
final String sortText;
/// An edit which is applied to a document when selecting this completion.
/// When an edit is provided the value of `insertText` is ignored.
///
/// *Note:* The range of the edit must be a single line range and it must
/// contain the position at which completion has been requested.
final TextEdit textEdit;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['label'] = label ?? (throw 'label is required but was not set');
if (kind != null) {
__result['kind'] = kind;
}
if (detail != null) {
__result['detail'] = detail;
}
if (documentation != null) {
__result['documentation'] = documentation;
}
if (deprecated != null) {
__result['deprecated'] = deprecated;
}
if (preselect != null) {
__result['preselect'] = preselect;
}
if (sortText != null) {
__result['sortText'] = sortText;
}
if (filterText != null) {
__result['filterText'] = filterText;
}
// ignore: deprecated_member_use
if (insertText != null) {
// ignore: deprecated_member_use
__result['insertText'] = insertText;
}
if (insertTextFormat != null) {
__result['insertTextFormat'] = insertTextFormat;
}
if (textEdit != null) {
__result['textEdit'] = textEdit;
}
if (additionalTextEdits != null) {
__result['additionalTextEdits'] = additionalTextEdits;
}
if (commitCharacters != null) {
__result['commitCharacters'] = commitCharacters;
}
if (command != null) {
__result['command'] = command;
}
if (data != null) {
__result['data'] = data;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('label') &&
obj['label'] is String;
}
}
/// The kind of a completion entry.
class CompletionItemKind {
const CompletionItemKind._(this._value);
const CompletionItemKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
return true;
}
return false;
}
static const Text = const CompletionItemKind._(1);
static const Method = const CompletionItemKind._(2);
static const Function = const CompletionItemKind._(3);
static const Constructor = const CompletionItemKind._(4);
static const Field = const CompletionItemKind._(5);
static const Variable = const CompletionItemKind._(6);
static const Class = const CompletionItemKind._(7);
static const Interface = const CompletionItemKind._(8);
static const Module = const CompletionItemKind._(9);
static const Property = const CompletionItemKind._(10);
static const Unit = const CompletionItemKind._(11);
static const Value = const CompletionItemKind._(12);
static const Enum = const CompletionItemKind._(13);
static const Keyword = const CompletionItemKind._(14);
static const Snippet = const CompletionItemKind._(15);
static const Color = const CompletionItemKind._(16);
static const File = const CompletionItemKind._(17);
static const Reference = const CompletionItemKind._(18);
static const Folder = const CompletionItemKind._(19);
static const EnumMember = const CompletionItemKind._(20);
static const Constant = const CompletionItemKind._(21);
static const Struct = const CompletionItemKind._(22);
static const Event = const CompletionItemKind._(23);
static const Operator = const CompletionItemKind._(24);
static const TypeParameter = const CompletionItemKind._(25);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is CompletionItemKind && o._value == _value;
}
/// Represents a collection of completion items ([CompletionItem]) to be
/// presented in the editor.
class CompletionList implements ToJsonable {
CompletionList(this.isIncomplete, this.items) {
if (isIncomplete == null) {
throw 'isIncomplete is required but was not provided';
}
if (items == null) {
throw 'items is required but was not provided';
}
}
factory CompletionList.fromJson(Map<String, dynamic> json) {
final isIncomplete = json['isIncomplete'];
final items = json['items']
?.map((item) => item != null ? new CompletionItem.fromJson(item) : null)
?.cast<CompletionItem>()
?.toList();
return new CompletionList(isIncomplete, items);
}
/// This list it not complete. Further typing should result in recomputing
/// this list.
final bool isIncomplete;
/// The completion items.
final List<CompletionItem> items;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['isIncomplete'] =
isIncomplete ?? (throw 'isIncomplete is required but was not set');
__result['items'] = items ?? (throw 'items is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('isIncomplete') &&
obj['isIncomplete'] is bool &&
obj.containsKey('items') &&
(obj['items'] is List &&
(obj['items'].length == 0 ||
obj['items'].every((item) => CompletionItem.canParse(item))));
}
}
/// Completion options.
class CompletionOptions implements ToJsonable {
CompletionOptions(this.resolveProvider, this.triggerCharacters);
factory CompletionOptions.fromJson(Map<String, dynamic> json) {
final resolveProvider = json['resolveProvider'];
final triggerCharacters = json['triggerCharacters']
?.map((item) => item)
?.cast<String>()
?.toList();
return new CompletionOptions(resolveProvider, triggerCharacters);
}
/// The server provides support to resolve additional information for a
/// completion item.
final bool resolveProvider;
/// The characters that trigger completion automatically.
final List<String> triggerCharacters;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (resolveProvider != null) {
__result['resolveProvider'] = resolveProvider;
}
if (triggerCharacters != null) {
__result['triggerCharacters'] = triggerCharacters;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class CompletionParams implements TextDocumentPositionParams, ToJsonable {
CompletionParams(this.context, this.textDocument, this.position) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (position == null) {
throw 'position is required but was not provided';
}
}
factory CompletionParams.fromJson(Map<String, dynamic> json) {
final context = json['context'] != null
? new CompletionContext.fromJson(json['context'])
: null;
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final position = json['position'] != null
? new Position.fromJson(json['position'])
: null;
return new CompletionParams(context, textDocument, position);
}
/// The completion context. This is only available if the client specifies
/// to send this using
/// `ClientCapabilities.textDocument.completion.contextSupport === true`
final CompletionContext context;
/// The position inside the text document.
final Position position;
/// The text document.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (context != null) {
__result['context'] = context;
}
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['position'] =
position ?? (throw 'position is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('position') &&
Position.canParse(obj['position']);
}
}
class CompletionRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
CompletionRegistrationOptions(
this.triggerCharacters, this.resolveProvider, this.documentSelector);
factory CompletionRegistrationOptions.fromJson(Map<String, dynamic> json) {
final triggerCharacters = json['triggerCharacters']
?.map((item) => item)
?.cast<String>()
?.toList();
final resolveProvider = json['resolveProvider'];
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new CompletionRegistrationOptions(
triggerCharacters, resolveProvider, documentSelector);
}
/// A document selector to identify the scope of the registration. If set to
/// null the document selector provided on the client side will be used.
final List<DocumentFilter> documentSelector;
/// The server provides support to resolve additional information for a
/// completion item.
final bool resolveProvider;
/// Most tools trigger completion request automatically without explicitly
/// requesting it using a keyboard shortcut (e.g. Ctrl+Space). Typically
/// they do so when the user starts to type an identifier. For example if
/// the user types `c` in a JavaScript file code complete will automatically
/// pop up present `console` besides others as a completion item. Characters
/// that make up identifiers don't need to be listed here.
///
/// If code complete should automatically be trigger on characters not being
/// valid inside an identifier (for example `.` in JavaScript) list them in
/// `triggerCharacters`.
final List<String> triggerCharacters;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (triggerCharacters != null) {
__result['triggerCharacters'] = triggerCharacters;
}
if (resolveProvider != null) {
__result['resolveProvider'] = resolveProvider;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// How a completion was triggered
class CompletionTriggerKind {
const CompletionTriggerKind._(this._value);
const CompletionTriggerKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
return true;
}
return false;
}
/// Completion was triggered by typing an identifier (24x7 code complete),
/// manual invocation (e.g Ctrl+Space) or via API.
static const Invoked = const CompletionTriggerKind._(1);
/// Completion was triggered by a trigger character specified by the
/// `triggerCharacters` properties of the `CompletionRegistrationOptions`.
static const TriggerCharacter = const CompletionTriggerKind._(2);
/// Completion was re-triggered as the current completion list is
/// incomplete.
static const TriggerForIncompleteCompletions =
const CompletionTriggerKind._(3);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is CompletionTriggerKind && o._value == _value;
}
class ConfigurationItem implements ToJsonable {
ConfigurationItem(this.scopeUri, this.section);
factory ConfigurationItem.fromJson(Map<String, dynamic> json) {
final scopeUri = json['scopeUri'];
final section = json['section'];
return new ConfigurationItem(scopeUri, section);
}
/// The scope to get the configuration section for.
final String scopeUri;
/// The configuration section asked for.
final String section;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (scopeUri != null) {
__result['scopeUri'] = scopeUri;
}
if (section != null) {
__result['section'] = section;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class ConfigurationParams implements ToJsonable {
ConfigurationParams(this.items) {
if (items == null) {
throw 'items is required but was not provided';
}
}
factory ConfigurationParams.fromJson(Map<String, dynamic> json) {
final items = json['items']
?.map((item) =>
item != null ? new ConfigurationItem.fromJson(item) : null)
?.cast<ConfigurationItem>()
?.toList();
return new ConfigurationParams(items);
}
final List<ConfigurationItem> items;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['items'] = items ?? (throw 'items is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('items') &&
(obj['items'] is List &&
(obj['items'].length == 0 ||
obj['items']
.every((item) => ConfigurationItem.canParse(item))));
}
}
/// Create file operation
class CreateFile implements FileOperation, ToJsonable {
CreateFile(this.uri, this.options) {
if (uri == null) {
throw 'uri is required but was not provided';
}
}
factory CreateFile.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final options = json['options'] != null
? new CreateFileOptions.fromJson(json['options'])
: null;
return new CreateFile(uri, options);
}
/// Additional options
final CreateFileOptions options;
/// The resource to create.
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
if (options != null) {
__result['options'] = options;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String;
}
}
/// Options to create a file.
class CreateFileOptions implements ToJsonable {
CreateFileOptions(this.overwrite, this.ignoreIfExists);
factory CreateFileOptions.fromJson(Map<String, dynamic> json) {
final overwrite = json['overwrite'];
final ignoreIfExists = json['ignoreIfExists'];
return new CreateFileOptions(overwrite, ignoreIfExists);
}
/// Ignore if exists.
final bool ignoreIfExists;
/// Overwrite existing file. Overwrite wins over `ignoreIfExists`
final bool overwrite;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (overwrite != null) {
__result['overwrite'] = overwrite;
}
if (ignoreIfExists != null) {
__result['ignoreIfExists'] = ignoreIfExists;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// Delete file operation
class DeleteFile implements FileOperation, ToJsonable {
DeleteFile(this.uri, this.options) {
if (uri == null) {
throw 'uri is required but was not provided';
}
}
factory DeleteFile.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final options = json['options'] != null
? new DeleteFileOptions.fromJson(json['options'])
: null;
return new DeleteFile(uri, options);
}
/// Delete options.
final DeleteFileOptions options;
/// The file to delete.
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
if (options != null) {
__result['options'] = options;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String;
}
}
/// Delete file options
class DeleteFileOptions implements ToJsonable {
DeleteFileOptions(this.recursive, this.ignoreIfNotExists);
factory DeleteFileOptions.fromJson(Map<String, dynamic> json) {
final recursive = json['recursive'];
final ignoreIfNotExists = json['ignoreIfNotExists'];
return new DeleteFileOptions(recursive, ignoreIfNotExists);
}
/// Ignore the operation if the file doesn't exist.
final bool ignoreIfNotExists;
/// Delete the content recursively if a folder is denoted.
final bool recursive;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (recursive != null) {
__result['recursive'] = recursive;
}
if (ignoreIfNotExists != null) {
__result['ignoreIfNotExists'] = ignoreIfNotExists;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class Diagnostic implements ToJsonable {
Diagnostic(this.range, this.severity, this.code, this.source, this.message,
this.relatedInformation) {
if (range == null) {
throw 'range is required but was not provided';
}
if (message == null) {
throw 'message is required but was not provided';
}
}
factory Diagnostic.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final severity = json['severity'] != null
? new DiagnosticSeverity.fromJson(json['severity'])
: null;
final code = json['code'] is num
? new Either2<num, String>.t1(json['code'])
: (json['code'] is String
? new Either2<num, String>.t2(json['code'])
: (throw '''${json['code']} was not one of (number, string)'''));
final source = json['source'];
final message = json['message'];
final relatedInformation = json['relatedInformation']
?.map((item) => item != null
? new DiagnosticRelatedInformation.fromJson(item)
: null)
?.cast<DiagnosticRelatedInformation>()
?.toList();
return new Diagnostic(
range, severity, code, source, message, relatedInformation);
}
/// The diagnostic's code, which might appear in the user interface.
final Either2<num, String> code;
/// The diagnostic's message.
final String message;
/// The range at which the message applies.
final Range range;
/// An array of related diagnostic information, e.g. when symbol-names
/// within a scope collide all definitions can be marked via this
/// property.
final List<DiagnosticRelatedInformation> relatedInformation;
/// The diagnostic's severity. Can be omitted. If omitted it is up to the
/// client to interpret diagnostics as error, warning, info or hint.
final DiagnosticSeverity severity;
/// A human-readable string describing the source of this diagnostic, e.g.
/// 'typescript' or 'super lint'.
final String source;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['range'] = range ?? (throw 'range is required but was not set');
if (severity != null) {
__result['severity'] = severity;
}
if (code != null) {
__result['code'] = code;
}
if (source != null) {
__result['source'] = source;
}
__result['message'] =
message ?? (throw 'message is required but was not set');
if (relatedInformation != null) {
__result['relatedInformation'] = relatedInformation;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('range') &&
Range.canParse(obj['range']) &&
obj.containsKey('message') &&
obj['message'] is String;
}
}
/// Represents a related message and source code location for a diagnostic.
/// This should be used to point to code locations that cause or related to
/// a diagnostics, e.g when duplicating a symbol in a scope.
class DiagnosticRelatedInformation implements ToJsonable {
DiagnosticRelatedInformation(this.location, this.message) {
if (location == null) {
throw 'location is required but was not provided';
}
if (message == null) {
throw 'message is required but was not provided';
}
}
factory DiagnosticRelatedInformation.fromJson(Map<String, dynamic> json) {
final location = json['location'] != null
? new Location.fromJson(json['location'])
: null;
final message = json['message'];
return new DiagnosticRelatedInformation(location, message);
}
/// The location of this related diagnostic information.
final Location location;
/// The message of this related diagnostic information.
final String message;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['location'] =
location ?? (throw 'location is required but was not set');
__result['message'] =
message ?? (throw 'message is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('location') &&
Location.canParse(obj['location']) &&
obj.containsKey('message') &&
obj['message'] is String;
}
}
class DiagnosticSeverity {
const DiagnosticSeverity._(this._value);
const DiagnosticSeverity.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
case 4:
return true;
}
return false;
}
/// Reports an error.
static const Error = const DiagnosticSeverity._(1);
/// Reports a warning.
static const Warning = const DiagnosticSeverity._(2);
/// Reports an information.
static const Information = const DiagnosticSeverity._(3);
/// Reports a hint.
static const Hint = const DiagnosticSeverity._(4);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is DiagnosticSeverity && o._value == _value;
}
class DidChangeConfigurationParams implements ToJsonable {
DidChangeConfigurationParams(this.settings) {
if (settings == null) {
throw 'settings is required but was not provided';
}
}
factory DidChangeConfigurationParams.fromJson(Map<String, dynamic> json) {
final settings = json['settings'];
return new DidChangeConfigurationParams(settings);
}
/// The actual changed settings
final dynamic settings;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['settings'] =
settings ?? (throw 'settings is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> && obj.containsKey('settings') && true;
}
}
class DidChangeTextDocumentParams implements ToJsonable {
DidChangeTextDocumentParams(this.textDocument, this.contentChanges) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (contentChanges == null) {
throw 'contentChanges is required but was not provided';
}
}
factory DidChangeTextDocumentParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new VersionedTextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final contentChanges = json['contentChanges']
?.map((item) => item != null
? new TextDocumentContentChangeEvent.fromJson(item)
: null)
?.cast<TextDocumentContentChangeEvent>()
?.toList();
return new DidChangeTextDocumentParams(textDocument, contentChanges);
}
/// The actual content changes. The content changes describe single
/// state changes to the document. So if there are two content changes
/// c1 and c2 for a document in state S then c1 move the document to S'
/// and c2 to S''.
final List<TextDocumentContentChangeEvent> contentChanges;
/// The document that did change. The version number points to the
/// version after all provided content changes have been applied.
final VersionedTextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['contentChanges'] =
contentChanges ?? (throw 'contentChanges is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
VersionedTextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('contentChanges') &&
(obj['contentChanges'] is List &&
(obj['contentChanges'].length == 0 ||
obj['contentChanges'].every(
(item) => TextDocumentContentChangeEvent.canParse(item))));
}
}
class DidChangeWatchedFilesParams implements ToJsonable {
DidChangeWatchedFilesParams(this.changes) {
if (changes == null) {
throw 'changes is required but was not provided';
}
}
factory DidChangeWatchedFilesParams.fromJson(Map<String, dynamic> json) {
final changes = json['changes']
?.map((item) => item != null ? new FileEvent.fromJson(item) : null)
?.cast<FileEvent>()
?.toList();
return new DidChangeWatchedFilesParams(changes);
}
/// The actual file events.
final List<FileEvent> changes;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['changes'] =
changes ?? (throw 'changes is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('changes') &&
(obj['changes'] is List &&
(obj['changes'].length == 0 ||
obj['changes'].every((item) => FileEvent.canParse(item))));
}
}
/// Describe options to be used when registering for text document change
/// events.
class DidChangeWatchedFilesRegistrationOptions implements ToJsonable {
DidChangeWatchedFilesRegistrationOptions(this.watchers) {
if (watchers == null) {
throw 'watchers is required but was not provided';
}
}
factory DidChangeWatchedFilesRegistrationOptions.fromJson(
Map<String, dynamic> json) {
final watchers = json['watchers']
?.map((item) =>
item != null ? new FileSystemWatcher.fromJson(item) : null)
?.cast<FileSystemWatcher>()
?.toList();
return new DidChangeWatchedFilesRegistrationOptions(watchers);
}
/// The watchers to register.
final List<FileSystemWatcher> watchers;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['watchers'] =
watchers ?? (throw 'watchers is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('watchers') &&
(obj['watchers'] is List &&
(obj['watchers'].length == 0 ||
obj['watchers']
.every((item) => FileSystemWatcher.canParse(item))));
}
}
class DidChangeWorkspaceFoldersParams implements ToJsonable {
DidChangeWorkspaceFoldersParams(this.event) {
if (event == null) {
throw 'event is required but was not provided';
}
}
factory DidChangeWorkspaceFoldersParams.fromJson(Map<String, dynamic> json) {
final event = json['event'] != null
? new WorkspaceFoldersChangeEvent.fromJson(json['event'])
: null;
return new DidChangeWorkspaceFoldersParams(event);
}
/// The actual workspace folder change event.
final WorkspaceFoldersChangeEvent event;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['event'] = event ?? (throw 'event is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('event') &&
WorkspaceFoldersChangeEvent.canParse(obj['event']);
}
}
class DidCloseTextDocumentParams implements ToJsonable {
DidCloseTextDocumentParams(this.textDocument) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory DidCloseTextDocumentParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
return new DidCloseTextDocumentParams(textDocument);
}
/// The document that was closed.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']);
}
}
class DidOpenTextDocumentParams implements ToJsonable {
DidOpenTextDocumentParams(this.textDocument) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory DidOpenTextDocumentParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentItem.fromJson(json['textDocument'])
: null;
return new DidOpenTextDocumentParams(textDocument);
}
/// The document that was opened.
final TextDocumentItem textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentItem.canParse(obj['textDocument']);
}
}
class DidSaveTextDocumentParams implements ToJsonable {
DidSaveTextDocumentParams(this.textDocument, this.text) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory DidSaveTextDocumentParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final text = json['text'];
return new DidSaveTextDocumentParams(textDocument, text);
}
/// Optional the content when saved. Depends on the includeText value
/// when the save notification was requested.
final String text;
/// The document that was saved.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
if (text != null) {
__result['text'] = text;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']);
}
}
class DocumentFilter implements ToJsonable {
DocumentFilter(this.language, this.scheme, this.pattern);
factory DocumentFilter.fromJson(Map<String, dynamic> json) {
final language = json['language'];
final scheme = json['scheme'];
final pattern = json['pattern'];
return new DocumentFilter(language, scheme, pattern);
}
/// A language id, like `typescript`.
final String language;
/// A glob pattern, like `*.{ts,js}`.
final String pattern;
/// A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
final String scheme;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (language != null) {
__result['language'] = language;
}
if (scheme != null) {
__result['scheme'] = scheme;
}
if (pattern != null) {
__result['pattern'] = pattern;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class DocumentFormattingParams implements ToJsonable {
DocumentFormattingParams(this.textDocument, this.options) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (options == null) {
throw 'options is required but was not provided';
}
}
factory DocumentFormattingParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final options = json['options'] != null
? new FormattingOptions.fromJson(json['options'])
: null;
return new DocumentFormattingParams(textDocument, options);
}
/// The format options.
final FormattingOptions options;
/// The document to format.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['options'] =
options ?? (throw 'options is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('options') &&
FormattingOptions.canParse(obj['options']);
}
}
/// A document highlight is a range inside a text document which deserves
/// special attention. Usually a document highlight is visualized by
/// changing the background color of its range.
class DocumentHighlight implements ToJsonable {
DocumentHighlight(this.range, this.kind) {
if (range == null) {
throw 'range is required but was not provided';
}
}
factory DocumentHighlight.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final kind = json['kind'] != null
? new DocumentHighlightKind.fromJson(json['kind'])
: null;
return new DocumentHighlight(range, kind);
}
/// The highlight kind, default is DocumentHighlightKind.Text.
final DocumentHighlightKind kind;
/// The range this highlight applies to.
final Range range;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['range'] = range ?? (throw 'range is required but was not set');
if (kind != null) {
__result['kind'] = kind;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('range') &&
Range.canParse(obj['range']);
}
}
/// A document highlight kind.
class DocumentHighlightKind {
const DocumentHighlightKind._(this._value);
const DocumentHighlightKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
return true;
}
return false;
}
/// A textual occurrence.
static const Text = const DocumentHighlightKind._(1);
/// Read-access of a symbol, like reading a variable.
static const Read = const DocumentHighlightKind._(2);
/// Write-access of a symbol, like writing to a variable.
static const Write = const DocumentHighlightKind._(3);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is DocumentHighlightKind && o._value == _value;
}
/// A document link is a range in a text document that links to an
/// internal or external resource, like another text document or a web
/// site.
class DocumentLink implements ToJsonable {
DocumentLink(this.range, this.target, this.data) {
if (range == null) {
throw 'range is required but was not provided';
}
}
factory DocumentLink.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final target = json['target'];
final data = json['data'];
return new DocumentLink(range, target, data);
}
/// A data entry field that is preserved on a document link between a
/// DocumentLinkRequest and a DocumentLinkResolveRequest.
final dynamic data;
/// The range this link applies to.
final Range range;
/// The uri this link points to. If missing a resolve request is sent
/// later.
final String target;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['range'] = range ?? (throw 'range is required but was not set');
if (target != null) {
__result['target'] = target;
}
if (data != null) {
__result['data'] = data;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('range') &&
Range.canParse(obj['range']);
}
}
/// Document link options.
class DocumentLinkOptions implements ToJsonable {
DocumentLinkOptions(this.resolveProvider);
factory DocumentLinkOptions.fromJson(Map<String, dynamic> json) {
final resolveProvider = json['resolveProvider'];
return new DocumentLinkOptions(resolveProvider);
}
/// Document links have a resolve provider as well.
final bool resolveProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (resolveProvider != null) {
__result['resolveProvider'] = resolveProvider;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class DocumentLinkParams implements ToJsonable {
DocumentLinkParams(this.textDocument) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory DocumentLinkParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
return new DocumentLinkParams(textDocument);
}
/// The document to provide document links for.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']);
}
}
class DocumentLinkRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
DocumentLinkRegistrationOptions(this.resolveProvider, this.documentSelector);
factory DocumentLinkRegistrationOptions.fromJson(Map<String, dynamic> json) {
final resolveProvider = json['resolveProvider'];
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new DocumentLinkRegistrationOptions(
resolveProvider, documentSelector);
}
/// A document selector to identify the scope of the registration. If
/// set to null the document selector provided on the client side will
/// be used.
final List<DocumentFilter> documentSelector;
/// Document links have a resolve provider as well.
final bool resolveProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (resolveProvider != null) {
__result['resolveProvider'] = resolveProvider;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// Format document on type options.
class DocumentOnTypeFormattingOptions implements ToJsonable {
DocumentOnTypeFormattingOptions(
this.firstTriggerCharacter, this.moreTriggerCharacter) {
if (firstTriggerCharacter == null) {
throw 'firstTriggerCharacter is required but was not provided';
}
}
factory DocumentOnTypeFormattingOptions.fromJson(Map<String, dynamic> json) {
final firstTriggerCharacter = json['firstTriggerCharacter'];
final moreTriggerCharacter = json['moreTriggerCharacter']
?.map((item) => item)
?.cast<String>()
?.toList();
return new DocumentOnTypeFormattingOptions(
firstTriggerCharacter, moreTriggerCharacter);
}
/// A character on which formatting should be triggered, like `}`.
final String firstTriggerCharacter;
/// More trigger characters.
final List<String> moreTriggerCharacter;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['firstTriggerCharacter'] = firstTriggerCharacter ??
(throw 'firstTriggerCharacter is required but was not set');
if (moreTriggerCharacter != null) {
__result['moreTriggerCharacter'] = moreTriggerCharacter;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('firstTriggerCharacter') &&
obj['firstTriggerCharacter'] is String;
}
}
class DocumentOnTypeFormattingParams implements ToJsonable {
DocumentOnTypeFormattingParams(
this.textDocument, this.position, this.ch, this.options) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (position == null) {
throw 'position is required but was not provided';
}
if (ch == null) {
throw 'ch is required but was not provided';
}
if (options == null) {
throw 'options is required but was not provided';
}
}
factory DocumentOnTypeFormattingParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final position = json['position'] != null
? new Position.fromJson(json['position'])
: null;
final ch = json['ch'];
final options = json['options'] != null
? new FormattingOptions.fromJson(json['options'])
: null;
return new DocumentOnTypeFormattingParams(
textDocument, position, ch, options);
}
/// The character that has been typed.
final String ch;
/// The format options.
final FormattingOptions options;
/// The position at which this request was sent.
final Position position;
/// The document to format.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['position'] =
position ?? (throw 'position is required but was not set');
__result['ch'] = ch ?? (throw 'ch is required but was not set');
__result['options'] =
options ?? (throw 'options is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('position') &&
Position.canParse(obj['position']) &&
obj.containsKey('ch') &&
obj['ch'] is String &&
obj.containsKey('options') &&
FormattingOptions.canParse(obj['options']);
}
}
class DocumentOnTypeFormattingRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
DocumentOnTypeFormattingRegistrationOptions(this.firstTriggerCharacter,
this.moreTriggerCharacter, this.documentSelector) {
if (firstTriggerCharacter == null) {
throw 'firstTriggerCharacter is required but was not provided';
}
}
factory DocumentOnTypeFormattingRegistrationOptions.fromJson(
Map<String, dynamic> json) {
final firstTriggerCharacter = json['firstTriggerCharacter'];
final moreTriggerCharacter = json['moreTriggerCharacter']
?.map((item) => item)
?.cast<String>()
?.toList();
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new DocumentOnTypeFormattingRegistrationOptions(
firstTriggerCharacter, moreTriggerCharacter, documentSelector);
}
/// A document selector to identify the scope of the registration. If
/// set to null the document selector provided on the client side will
/// be used.
final List<DocumentFilter> documentSelector;
/// A character on which formatting should be triggered, like `}`.
final String firstTriggerCharacter;
/// More trigger characters.
final List<String> moreTriggerCharacter;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['firstTriggerCharacter'] = firstTriggerCharacter ??
(throw 'firstTriggerCharacter is required but was not set');
if (moreTriggerCharacter != null) {
__result['moreTriggerCharacter'] = moreTriggerCharacter;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('firstTriggerCharacter') &&
obj['firstTriggerCharacter'] is String &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
class DocumentRangeFormattingParams implements ToJsonable {
DocumentRangeFormattingParams(this.textDocument, this.range, this.options) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (range == null) {
throw 'range is required but was not provided';
}
if (options == null) {
throw 'options is required but was not provided';
}
}
factory DocumentRangeFormattingParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final options = json['options'] != null
? new FormattingOptions.fromJson(json['options'])
: null;
return new DocumentRangeFormattingParams(textDocument, range, options);
}
/// The format options
final FormattingOptions options;
/// The range to format
final Range range;
/// The document to format.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['range'] = range ?? (throw 'range is required but was not set');
__result['options'] =
options ?? (throw 'options is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('range') &&
Range.canParse(obj['range']) &&
obj.containsKey('options') &&
FormattingOptions.canParse(obj['options']);
}
}
/// Represents programming constructs like variables, classes,
/// interfaces etc. that appear in a document. Document symbols can be
/// hierarchical and they have two ranges: one that encloses its
/// definition and one that points to its most interesting range, e.g.
/// the range of an identifier.
class DocumentSymbol implements ToJsonable {
DocumentSymbol(this.name, this.detail, this.kind, this.deprecated, this.range,
this.selectionRange, this.children) {
if (name == null) {
throw 'name is required but was not provided';
}
if (kind == null) {
throw 'kind is required but was not provided';
}
if (range == null) {
throw 'range is required but was not provided';
}
if (selectionRange == null) {
throw 'selectionRange is required but was not provided';
}
}
factory DocumentSymbol.fromJson(Map<String, dynamic> json) {
final name = json['name'];
final detail = json['detail'];
final kind =
json['kind'] != null ? new SymbolKind.fromJson(json['kind']) : null;
final deprecated = json['deprecated'];
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final selectionRange = json['selectionRange'] != null
? new Range.fromJson(json['selectionRange'])
: null;
final children = json['children']
?.map((item) => item != null ? new DocumentSymbol.fromJson(item) : null)
?.cast<DocumentSymbol>()
?.toList();
return new DocumentSymbol(
name, detail, kind, deprecated, range, selectionRange, children);
}
/// Children of this symbol, e.g. properties of a class.
final List<DocumentSymbol> children;
/// Indicates if this symbol is deprecated.
final bool deprecated;
/// More detail for this symbol, e.g the signature of a function.
final String detail;
/// The kind of this symbol.
final SymbolKind kind;
/// The name of this symbol.
final String name;
/// The range enclosing this symbol not including leading/trailing
/// whitespace but everything else like comments. This information is
/// typically used to determine if the clients cursor is inside the
/// symbol to reveal in the symbol in the UI.
final Range range;
/// The range that should be selected and revealed when this symbol is
/// being picked, e.g the name of a function. Must be contained by the
/// `range`.
final Range selectionRange;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['name'] = name ?? (throw 'name is required but was not set');
if (detail != null) {
__result['detail'] = detail;
}
__result['kind'] = kind ?? (throw 'kind is required but was not set');
if (deprecated != null) {
__result['deprecated'] = deprecated;
}
__result['range'] = range ?? (throw 'range is required but was not set');
__result['selectionRange'] =
selectionRange ?? (throw 'selectionRange is required but was not set');
if (children != null) {
__result['children'] = children;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('name') &&
obj['name'] is String &&
obj.containsKey('kind') &&
SymbolKind.canParse(obj['kind']) &&
obj.containsKey('range') &&
Range.canParse(obj['range']) &&
obj.containsKey('selectionRange') &&
Range.canParse(obj['selectionRange']);
}
}
class DocumentSymbolParams implements ToJsonable {
DocumentSymbolParams(this.textDocument) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory DocumentSymbolParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
return new DocumentSymbolParams(textDocument);
}
/// The text document.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']);
}
}
abstract class ErrorCodes {
static const InternalError = -32603;
static const InvalidParams = -32602;
static const InvalidRequest = -32600;
static const MethodNotFound = -32601;
static const ParseError = -32700;
static const RequestCancelled = -32800;
static const ServerNotInitialized = -32002;
static const UnknownErrorCode = -32001;
static const serverErrorEnd = -32000;
static const serverErrorStart = -32099;
}
/// Execute command options.
class ExecuteCommandOptions implements ToJsonable {
ExecuteCommandOptions(this.commands) {
if (commands == null) {
throw 'commands is required but was not provided';
}
}
factory ExecuteCommandOptions.fromJson(Map<String, dynamic> json) {
final commands =
json['commands']?.map((item) => item)?.cast<String>()?.toList();
return new ExecuteCommandOptions(commands);
}
/// The commands to be executed on the server
final List<String> commands;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['commands'] =
commands ?? (throw 'commands is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('commands') &&
(obj['commands'] is List &&
(obj['commands'].length == 0 ||
obj['commands'].every((item) => item is String)));
}
}
class ExecuteCommandParams implements ToJsonable {
ExecuteCommandParams(this.command, this.arguments) {
if (command == null) {
throw 'command is required but was not provided';
}
}
factory ExecuteCommandParams.fromJson(Map<String, dynamic> json) {
final command = json['command'];
final arguments =
json['arguments']?.map((item) => item)?.cast<dynamic>()?.toList();
return new ExecuteCommandParams(command, arguments);
}
/// Arguments that the command should be invoked with.
final List<dynamic> arguments;
/// The identifier of the actual command handler.
final String command;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['command'] =
command ?? (throw 'command is required but was not set');
if (arguments != null) {
__result['arguments'] = arguments;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('command') &&
obj['command'] is String;
}
}
/// Execute command registration options.
class ExecuteCommandRegistrationOptions implements ToJsonable {
ExecuteCommandRegistrationOptions(this.commands) {
if (commands == null) {
throw 'commands is required but was not provided';
}
}
factory ExecuteCommandRegistrationOptions.fromJson(
Map<String, dynamic> json) {
final commands =
json['commands']?.map((item) => item)?.cast<String>()?.toList();
return new ExecuteCommandRegistrationOptions(commands);
}
/// The commands to be executed on the server
final List<String> commands;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['commands'] =
commands ?? (throw 'commands is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('commands') &&
(obj['commands'] is List &&
(obj['commands'].length == 0 ||
obj['commands'].every((item) => item is String)));
}
}
class FailureHandlingKind {
const FailureHandlingKind._(this._value);
const FailureHandlingKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 'abort':
case 'transactional':
case 'textOnlyTransactional':
case 'undo':
return true;
}
return false;
}
/// Applying the workspace change is simply aborted if one of the
/// changes provided fails. All operations executed before the
/// failing operation stay executed.
static const Abort = const FailureHandlingKind._('abort');
/// All operations are executed transactional. That means they
/// either all succeed or no changes at all are applied to the
/// workspace.
static const Transactional = const FailureHandlingKind._('transactional');
/// If the workspace edit contains only textual file changes they
/// are executed transactional. If resource changes (create, rename
/// or delete file) are part of the change the failure handling
/// startegy is abort.
static const TextOnlyTransactional =
const FailureHandlingKind._('textOnlyTransactional');
/// The client tries to undo the operations already executed. But
/// there is no guaruntee that this is succeeding.
static const Undo = const FailureHandlingKind._('undo');
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is FailureHandlingKind && o._value == _value;
}
/// The file event type.
class FileChangeType {
const FileChangeType._(this._value);
const FileChangeType.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
return true;
}
return false;
}
/// The file got created.
static const Created = const FileChangeType._(1);
/// The file got changed.
static const Changed = const FileChangeType._(2);
/// The file got deleted.
static const Deleted = const FileChangeType._(3);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is FileChangeType && o._value == _value;
}
/// An event describing a file change.
class FileEvent implements ToJsonable {
FileEvent(this.uri, this.type) {
if (uri == null) {
throw 'uri is required but was not provided';
}
if (type == null) {
throw 'type is required but was not provided';
}
}
factory FileEvent.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final type = json['type'];
return new FileEvent(uri, type);
}
/// The change type.
final num type;
/// The file's URI.
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
__result['type'] = type ?? (throw 'type is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String &&
obj.containsKey('type') &&
obj['type'] is num;
}
}
class FileSystemWatcher implements ToJsonable {
FileSystemWatcher(this.globPattern, this.kind) {
if (globPattern == null) {
throw 'globPattern is required but was not provided';
}
}
factory FileSystemWatcher.fromJson(Map<String, dynamic> json) {
final globPattern = json['globPattern'];
final kind =
json['kind'] != null ? new WatchKind.fromJson(json['kind']) : null;
return new FileSystemWatcher(globPattern, kind);
}
/// The glob pattern to watch
final String globPattern;
/// The kind of events of interest. If omitted it defaults to
/// WatchKind.Create | WatchKind.Change | WatchKind.Delete which
/// is 7.
final WatchKind kind;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['globPattern'] =
globPattern ?? (throw 'globPattern is required but was not set');
if (kind != null) {
__result['kind'] = kind;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('globPattern') &&
obj['globPattern'] is String;
}
}
/// Represents a folding range.
class FoldingRange implements ToJsonable {
FoldingRange(this.startLine, this.startCharacter, this.endLine,
this.endCharacter, this.kind) {
if (startLine == null) {
throw 'startLine is required but was not provided';
}
if (endLine == null) {
throw 'endLine is required but was not provided';
}
}
factory FoldingRange.fromJson(Map<String, dynamic> json) {
final startLine = json['startLine'];
final startCharacter = json['startCharacter'];
final endLine = json['endLine'];
final endCharacter = json['endCharacter'];
final kind = json['kind'] != null
? new FoldingRangeKind.fromJson(json['kind'])
: null;
return new FoldingRange(
startLine, startCharacter, endLine, endCharacter, kind);
}
/// The zero-based character offset before the folded range ends.
/// If not defined, defaults to the length of the end line.
final num endCharacter;
/// The zero-based line number where the folded range ends.
final num endLine;
/// Describes the kind of the folding range such as `comment' or
/// 'region'. The kind is used to categorize folding ranges and
/// used by commands like 'Fold all comments'. See
/// [FoldingRangeKind] for an enumeration of standardized kinds.
final FoldingRangeKind kind;
/// The zero-based character offset from where the folded range
/// starts. If not defined, defaults to the length of the start
/// line.
final num startCharacter;
/// The zero-based line number from where the folded range starts.
final num startLine;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['startLine'] =
startLine ?? (throw 'startLine is required but was not set');
if (startCharacter != null) {
__result['startCharacter'] = startCharacter;
}
__result['endLine'] =
endLine ?? (throw 'endLine is required but was not set');
if (endCharacter != null) {
__result['endCharacter'] = endCharacter;
}
if (kind != null) {
__result['kind'] = kind;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('startLine') &&
obj['startLine'] is num &&
obj.containsKey('endLine') &&
obj['endLine'] is num;
}
}
/// Enum of known range kinds
class FoldingRangeKind {
const FoldingRangeKind._(this._value);
const FoldingRangeKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 'comment':
case 'imports':
case 'region':
return true;
}
return false;
}
/// Folding range for a comment
static const Comment = const FoldingRangeKind._('comment');
/// Folding range for a imports or includes
static const Imports = const FoldingRangeKind._('imports');
/// Folding range for a region (e.g. `#region`)
static const Region = const FoldingRangeKind._('region');
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is FoldingRangeKind && o._value == _value;
}
class FoldingRangeParams implements ToJsonable {
FoldingRangeParams(this.textDocument) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
}
factory FoldingRangeParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
return new FoldingRangeParams(textDocument);
}
/// The text document.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']);
}
}
/// Folding range provider options.
class FoldingRangeProviderOptions implements ToJsonable {
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// Value-object describing what options formatting should use.
class FormattingOptions implements ToJsonable {
FormattingOptions(this.tabSize, this.insertSpaces) {
if (tabSize == null) {
throw 'tabSize is required but was not provided';
}
if (insertSpaces == null) {
throw 'insertSpaces is required but was not provided';
}
}
factory FormattingOptions.fromJson(Map<String, dynamic> json) {
final tabSize = json['tabSize'];
final insertSpaces = json['insertSpaces'];
return new FormattingOptions(tabSize, insertSpaces);
}
/// Prefer spaces over tabs.
final bool insertSpaces;
/// Size of a tab in spaces.
final num tabSize;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['tabSize'] =
tabSize ?? (throw 'tabSize is required but was not set');
__result['insertSpaces'] =
insertSpaces ?? (throw 'insertSpaces is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('tabSize') &&
obj['tabSize'] is num &&
obj.containsKey('insertSpaces') &&
obj['insertSpaces'] is bool;
}
}
/// The result of a hover request.
class Hover implements ToJsonable {
Hover(this.contents, this.range) {
if (contents == null) {
throw 'contents is required but was not provided';
}
}
factory Hover.fromJson(Map<String, dynamic> json) {
final contents = MarkedString.canParse(json['contents'])
? new Either3<MarkedString, List<MarkedString>, MarkupContent>.t1(
json['contents'] != null
? new MarkedString.fromJson(json['contents'])
: null)
: ((json['contents'] is List &&
(json['contents'].length == 0 ||
json['contents']
.every((item) => MarkedString.canParse(item))))
? new Either3<MarkedString, List<MarkedString>, MarkupContent>.t2(json['contents']
?.map((item) =>
item != null ? new MarkedString.fromJson(item) : null)
?.cast<MarkedString>()
?.toList())
: (MarkupContent.canParse(json['contents'])
? new Either3<MarkedString, List<MarkedString>, MarkupContent>.t3(
json['contents'] != null
? new MarkupContent.fromJson(json['contents'])
: null)
: (throw '''${json['contents']} was not one of (MarkedString, MarkedString[], MarkupContent)''')));
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
return new Hover(contents, range);
}
/// The hover's content
final Either3<MarkedString, List<MarkedString>, MarkupContent> contents;
/// An optional range is a range inside a text document that is
/// used to visualize a hover, e.g. by changing the background
/// color.
final Range range;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['contents'] =
contents ?? (throw 'contents is required but was not set');
if (range != null) {
__result['range'] = range;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('contents') &&
(MarkedString.canParse(obj['contents']) ||
(obj['contents'] is List &&
(obj['contents'].length == 0 ||
obj['contents']
.every((item) => MarkedString.canParse(item)))) ||
MarkupContent.canParse(obj['contents']));
}
}
class InitializeParams implements ToJsonable {
InitializeParams(this.processId, this.rootPath, this.rootUri,
this.initializationOptions, this.capabilities, this.workspaceFolders) {
if (capabilities == null) {
throw 'capabilities is required but was not provided';
}
}
factory InitializeParams.fromJson(Map<String, dynamic> json) {
final processId = json['processId'];
final rootPath = json['rootPath'];
final rootUri = json['rootUri'];
final initializationOptions = json['initializationOptions'];
final capabilities = json['capabilities'] != null
? new ClientCapabilities.fromJson(json['capabilities'])
: null;
final workspaceFolders = json['workspaceFolders']
?.map(
(item) => item != null ? new WorkspaceFolder.fromJson(item) : null)
?.cast<WorkspaceFolder>()
?.toList();
return new InitializeParams(processId, rootPath, rootUri,
initializationOptions, capabilities, workspaceFolders);
}
/// The capabilities provided by the client (editor or tool)
final ClientCapabilities capabilities;
/// User provided initialization options.
final dynamic initializationOptions;
/// The process Id of the parent process that started the
/// server. Is null if the process has not been started by
/// another process. If the parent process is not alive then the
/// server should exit (see exit notification) its process.
final num processId;
/// The rootPath of the workspace. Is null if no folder is open.
/// @deprecated in favour of rootUri.
@core.deprecated
final String rootPath;
/// The rootUri of the workspace. Is null if no folder is open.
/// If both `rootPath` and `rootUri` are set `rootUri` wins.
final String rootUri;
/// The workspace folders configured in the client when the
/// server starts. This property is only available if the client
/// supports workspace folders. It can be `null` if the client
/// supports workspace folders but none are configured.
///
/// Since 3.6.0
final List<WorkspaceFolder> workspaceFolders;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['processId'] = processId;
// ignore: deprecated_member_use
if (rootPath != null) {
// ignore: deprecated_member_use
__result['rootPath'] = rootPath;
}
__result['rootUri'] = rootUri;
if (initializationOptions != null) {
__result['initializationOptions'] = initializationOptions;
}
__result['capabilities'] =
capabilities ?? (throw 'capabilities is required but was not set');
if (workspaceFolders != null) {
__result['workspaceFolders'] = workspaceFolders;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('processId') &&
obj['processId'] is num &&
obj.containsKey('rootUri') &&
obj['rootUri'] is String &&
obj.containsKey('capabilities') &&
ClientCapabilities.canParse(obj['capabilities']);
}
}
class InitializeResult implements ToJsonable {
InitializeResult(this.capabilities) {
if (capabilities == null) {
throw 'capabilities is required but was not provided';
}
}
factory InitializeResult.fromJson(Map<String, dynamic> json) {
final capabilities = json['capabilities'] != null
? new ServerCapabilities.fromJson(json['capabilities'])
: null;
return new InitializeResult(capabilities);
}
/// The capabilities the language server provides.
final ServerCapabilities capabilities;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['capabilities'] =
capabilities ?? (throw 'capabilities is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('capabilities') &&
ServerCapabilities.canParse(obj['capabilities']);
}
}
class InitializedParams implements ToJsonable {
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// Defines whether the insert text in a completion item should be
/// interpreted as plain text or a snippet.
class InsertTextFormat {
const InsertTextFormat._(this._value);
const InsertTextFormat.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
return true;
}
return false;
}
/// The primary text to be inserted is treated as a plain
/// string.
static const PlainText = const InsertTextFormat._(1);
/// The primary text to be inserted is treated as a snippet.
///
/// A snippet can define tab stops and placeholders with `$1`,
/// `$2` and `${3:foo}`. `$0` defines the final tab stop, it
/// defaults to the end of the snippet. Placeholders with
/// equal identifiers are linked, that is typing in one will
/// update others too.
static const Snippet = const InsertTextFormat._(2);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is InsertTextFormat && o._value == _value;
}
class Location implements ToJsonable {
Location(this.uri, this.range) {
if (uri == null) {
throw 'uri is required but was not provided';
}
if (range == null) {
throw 'range is required but was not provided';
}
}
factory Location.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
return new Location(uri, range);
}
final Range range;
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
__result['range'] = range ?? (throw 'range is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String &&
obj.containsKey('range') &&
Range.canParse(obj['range']);
}
}
class LogMessageParams implements ToJsonable {
LogMessageParams(this.type, this.message) {
if (type == null) {
throw 'type is required but was not provided';
}
if (message == null) {
throw 'message is required but was not provided';
}
}
factory LogMessageParams.fromJson(Map<String, dynamic> json) {
final type =
json['type'] != null ? new MessageType.fromJson(json['type']) : null;
final message = json['message'];
return new LogMessageParams(type, message);
}
/// The actual message
final String message;
/// The message type.
final MessageType type;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['type'] = type ?? (throw 'type is required but was not set');
__result['message'] =
message ?? (throw 'message is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('type') &&
MessageType.canParse(obj['type']) &&
obj.containsKey('message') &&
obj['message'] is String;
}
}
class MarkedString implements ToJsonable {
MarkedString(this.language, this.value) {
if (language == null) {
throw 'language is required but was not provided';
}
if (value == null) {
throw 'value is required but was not provided';
}
}
factory MarkedString.fromJson(Map<String, dynamic> json) {
final language = json['language'];
final value = json['value'];
return new MarkedString(language, value);
}
final String language;
final String value;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['language'] =
language ?? (throw 'language is required but was not set');
__result['value'] = value ?? (throw 'value is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('language') &&
obj['language'] is String &&
obj.containsKey('value') &&
obj['value'] is String;
}
}
/// A `MarkupContent` literal represents a string value which
/// content is interpreted base on its kind flag. Currently the
/// protocol supports `plaintext` and `markdown` as markup
/// kinds.
///
/// If the kind is `markdown` then the value can contain fenced
/// code blocks like in GitHub issues. See
/// https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
///
/// Here is an example how such a string can be constructed
/// using JavaScript / TypeScript: ```ts let markdown:
/// MarkdownContent = {
///
/// kind: MarkupKind.Markdown,
/// value: [
/// '# Header',
/// 'Some text',
/// '```typescript',
/// 'someCode();',
/// '```'
/// ].join('\n') }; ```
///
/// *Please Note* that clients might sanitize the return
/// markdown. A client could decide to remove HTML from the
/// markdown to avoid script execution.
class MarkupContent implements ToJsonable {
MarkupContent(this.kind, this.value) {
if (kind == null) {
throw 'kind is required but was not provided';
}
if (value == null) {
throw 'value is required but was not provided';
}
}
factory MarkupContent.fromJson(Map<String, dynamic> json) {
final kind =
json['kind'] != null ? new MarkupKind.fromJson(json['kind']) : null;
final value = json['value'];
return new MarkupContent(kind, value);
}
/// The type of the Markup
final MarkupKind kind;
/// The content itself
final String value;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['kind'] = kind ?? (throw 'kind is required but was not set');
__result['value'] = value ?? (throw 'value is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('kind') &&
MarkupKind.canParse(obj['kind']) &&
obj.containsKey('value') &&
obj['value'] is String;
}
}
/// Describes the content type that a client supports in various
/// result literals like `Hover`, `ParameterInfo` or
/// `CompletionItem`.
///
/// Please note that `MarkupKinds` must not start with a `$`.
/// This kinds are reserved for internal usage.
class MarkupKind {
const MarkupKind._(this._value);
const MarkupKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 'plaintext':
case 'markdown':
return true;
}
return false;
}
/// Plain text is supported as a content format
static const PlainText = const MarkupKind._('plaintext');
/// Markdown is supported as a content format
static const Markdown = const MarkupKind._('markdown');
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is MarkupKind && o._value == _value;
}
class Message implements ToJsonable {
Message(this.jsonrpc) {
if (jsonrpc == null) {
throw 'jsonrpc is required but was not provided';
}
}
factory Message.fromJson(Map<String, dynamic> json) {
final jsonrpc = json['jsonrpc'];
return new Message(jsonrpc);
}
final String jsonrpc;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['jsonrpc'] =
jsonrpc ?? (throw 'jsonrpc is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('jsonrpc') &&
obj['jsonrpc'] is String;
}
}
class MessageActionItem implements ToJsonable {
MessageActionItem(this.title) {
if (title == null) {
throw 'title is required but was not provided';
}
}
factory MessageActionItem.fromJson(Map<String, dynamic> json) {
final title = json['title'];
return new MessageActionItem(title);
}
/// A short title like 'Retry', 'Open Log' etc.
final String title;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['title'] = title ?? (throw 'title is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('title') &&
obj['title'] is String;
}
}
class MessageType {
const MessageType._(this._value);
const MessageType.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
case 4:
return true;
}
return false;
}
/// An error message.
static const Error = const MessageType._(1);
/// A warning message.
static const Warning = const MessageType._(2);
/// An information message.
static const Info = const MessageType._(3);
/// A log message.
static const Log = const MessageType._(4);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is MessageType && o._value == _value;
}
class NotificationMessage implements Message, ToJsonable {
NotificationMessage(this.method, this.params, this.jsonrpc) {
if (method == null) {
throw 'method is required but was not provided';
}
if (jsonrpc == null) {
throw 'jsonrpc is required but was not provided';
}
}
factory NotificationMessage.fromJson(Map<String, dynamic> json) {
final method = json['method'];
final params = (json['params'] is List &&
(json['params'].length == 0 ||
json['params'].every((item) => true)))
? new Either2<List<dynamic>, dynamic>.t1(
json['params']?.map((item) => item)?.cast<dynamic>()?.toList())
: (new Either2<List<dynamic>, dynamic>.t2(json['params']));
final jsonrpc = json['jsonrpc'];
return new NotificationMessage(method, params, jsonrpc);
}
final String jsonrpc;
/// The method to be invoked.
final String method;
/// The notification's params.
final Either2<List<dynamic>, dynamic> params;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['method'] = method ?? (throw 'method is required but was not set');
if (params != null) {
__result['params'] = params;
}
__result['jsonrpc'] =
jsonrpc ?? (throw 'jsonrpc is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('method') &&
obj['method'] is String &&
obj.containsKey('jsonrpc') &&
obj['jsonrpc'] is String;
}
}
/// Represents a parameter of a callable-signature. A
/// parameter can have a label and a doc-comment.
class ParameterInformation implements ToJsonable {
ParameterInformation(this.label, this.documentation) {
if (label == null) {
throw 'label is required but was not provided';
}
}
factory ParameterInformation.fromJson(Map<String, dynamic> json) {
final label = json['label'];
final documentation = json['documentation'] is String
? new Either2<String, MarkupContent>.t1(json['documentation'])
: (MarkupContent.canParse(json['documentation'])
? new Either2<String, MarkupContent>.t2(
json['documentation'] != null
? new MarkupContent.fromJson(json['documentation'])
: null)
: (throw '''${json['documentation']} was not one of (string, MarkupContent)'''));
return new ParameterInformation(label, documentation);
}
/// The human-readable doc-comment of this parameter. Will
/// be shown in the UI but can be omitted.
final Either2<String, MarkupContent> documentation;
/// The label of this parameter. Will be shown in the UI.
final String label;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['label'] = label ?? (throw 'label is required but was not set');
if (documentation != null) {
__result['documentation'] = documentation;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('label') &&
obj['label'] is String;
}
}
class Position implements ToJsonable {
Position(this.line, this.character) {
if (line == null) {
throw 'line is required but was not provided';
}
if (character == null) {
throw 'character is required but was not provided';
}
}
factory Position.fromJson(Map<String, dynamic> json) {
final line = json['line'];
final character = json['character'];
return new Position(line, character);
}
/// Character offset on a line in a document (zero-based).
/// Assuming that the line is represented as a string, the
/// `character` value represents the gap between the
/// `character` and `character + 1`.
///
/// If the character value is greater than the line length
/// it defaults back to the line length.
final num character;
/// Line position in a document (zero-based).
final num line;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['line'] = line ?? (throw 'line is required but was not set');
__result['character'] =
character ?? (throw 'character is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('line') &&
obj['line'] is num &&
obj.containsKey('character') &&
obj['character'] is num;
}
}
class PublishDiagnosticsParams implements ToJsonable {
PublishDiagnosticsParams(this.uri, this.diagnostics) {
if (uri == null) {
throw 'uri is required but was not provided';
}
if (diagnostics == null) {
throw 'diagnostics is required but was not provided';
}
}
factory PublishDiagnosticsParams.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final diagnostics = json['diagnostics']
?.map((item) => item != null ? new Diagnostic.fromJson(item) : null)
?.cast<Diagnostic>()
?.toList();
return new PublishDiagnosticsParams(uri, diagnostics);
}
/// An array of diagnostic information items.
final List<Diagnostic> diagnostics;
/// The URI for which diagnostic information is reported.
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
__result['diagnostics'] =
diagnostics ?? (throw 'diagnostics is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String &&
obj.containsKey('diagnostics') &&
(obj['diagnostics'] is List &&
(obj['diagnostics'].length == 0 ||
obj['diagnostics'].every((item) => Diagnostic.canParse(item))));
}
}
class Range implements ToJsonable {
Range(this.start, this.end) {
if (start == null) {
throw 'start is required but was not provided';
}
if (end == null) {
throw 'end is required but was not provided';
}
}
factory Range.fromJson(Map<String, dynamic> json) {
final start =
json['start'] != null ? new Position.fromJson(json['start']) : null;
final end = json['end'] != null ? new Position.fromJson(json['end']) : null;
return new Range(start, end);
}
/// The range's end position.
final Position end;
/// The range's start position.
final Position start;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['start'] = start ?? (throw 'start is required but was not set');
__result['end'] = end ?? (throw 'end is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('start') &&
Position.canParse(obj['start']) &&
obj.containsKey('end') &&
Position.canParse(obj['end']);
}
}
class ReferenceContext implements ToJsonable {
ReferenceContext(this.includeDeclaration) {
if (includeDeclaration == null) {
throw 'includeDeclaration is required but was not provided';
}
}
factory ReferenceContext.fromJson(Map<String, dynamic> json) {
final includeDeclaration = json['includeDeclaration'];
return new ReferenceContext(includeDeclaration);
}
/// Include the declaration of the current symbol.
final bool includeDeclaration;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['includeDeclaration'] = includeDeclaration ??
(throw 'includeDeclaration is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('includeDeclaration') &&
obj['includeDeclaration'] is bool;
}
}
class ReferenceParams implements TextDocumentPositionParams, ToJsonable {
ReferenceParams(this.context, this.textDocument, this.position) {
if (context == null) {
throw 'context is required but was not provided';
}
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (position == null) {
throw 'position is required but was not provided';
}
}
factory ReferenceParams.fromJson(Map<String, dynamic> json) {
final context = json['context'] != null
? new ReferenceContext.fromJson(json['context'])
: null;
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final position = json['position'] != null
? new Position.fromJson(json['position'])
: null;
return new ReferenceParams(context, textDocument, position);
}
final ReferenceContext context;
/// The position inside the text document.
final Position position;
/// The text document.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['context'] =
context ?? (throw 'context is required but was not set');
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['position'] =
position ?? (throw 'position is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('context') &&
ReferenceContext.canParse(obj['context']) &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('position') &&
Position.canParse(obj['position']);
}
}
/// General parameters to register for a capability.
class Registration implements ToJsonable {
Registration(this.id, this.method, this.registerOptions) {
if (id == null) {
throw 'id is required but was not provided';
}
if (method == null) {
throw 'method is required but was not provided';
}
}
factory Registration.fromJson(Map<String, dynamic> json) {
final id = json['id'];
final method = json['method'];
final registerOptions = json['registerOptions'];
return new Registration(id, method, registerOptions);
}
/// The id used to register the request. The id can be
/// used to deregister the request again.
final String id;
/// The method / capability to register for.
final String method;
/// Options necessary for the registration.
final dynamic registerOptions;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['id'] = id ?? (throw 'id is required but was not set');
__result['method'] = method ?? (throw 'method is required but was not set');
if (registerOptions != null) {
__result['registerOptions'] = registerOptions;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('id') &&
obj['id'] is String &&
obj.containsKey('method') &&
obj['method'] is String;
}
}
class RegistrationParams implements ToJsonable {
RegistrationParams(this.registrations) {
if (registrations == null) {
throw 'registrations is required but was not provided';
}
}
factory RegistrationParams.fromJson(Map<String, dynamic> json) {
final registrations = json['registrations']
?.map((item) => item != null ? new Registration.fromJson(item) : null)
?.cast<Registration>()
?.toList();
return new RegistrationParams(registrations);
}
final List<Registration> registrations;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['registrations'] =
registrations ?? (throw 'registrations is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('registrations') &&
(obj['registrations'] is List &&
(obj['registrations'].length == 0 ||
obj['registrations']
.every((item) => Registration.canParse(item))));
}
}
/// Rename file operation
class RenameFile implements FileOperation, ToJsonable {
RenameFile(this.oldUri, this.newUri, this.options) {
if (oldUri == null) {
throw 'oldUri is required but was not provided';
}
if (newUri == null) {
throw 'newUri is required but was not provided';
}
}
factory RenameFile.fromJson(Map<String, dynamic> json) {
final oldUri = json['oldUri'];
final newUri = json['newUri'];
final options = json['options'] != null
? new RenameFileOptions.fromJson(json['options'])
: null;
return new RenameFile(oldUri, newUri, options);
}
/// The new location.
final String newUri;
/// The old (existing) location.
final String oldUri;
/// Rename options.
final RenameFileOptions options;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['oldUri'] = oldUri ?? (throw 'oldUri is required but was not set');
__result['newUri'] = newUri ?? (throw 'newUri is required but was not set');
if (options != null) {
__result['options'] = options;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('oldUri') &&
obj['oldUri'] is String &&
obj.containsKey('newUri') &&
obj['newUri'] is String;
}
}
/// Rename file options
class RenameFileOptions implements ToJsonable {
RenameFileOptions(this.overwrite, this.ignoreIfExists);
factory RenameFileOptions.fromJson(Map<String, dynamic> json) {
final overwrite = json['overwrite'];
final ignoreIfExists = json['ignoreIfExists'];
return new RenameFileOptions(overwrite, ignoreIfExists);
}
/// Ignores if target exists.
final bool ignoreIfExists;
/// Overwrite target if existing. Overwrite wins over
/// `ignoreIfExists`
final bool overwrite;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (overwrite != null) {
__result['overwrite'] = overwrite;
}
if (ignoreIfExists != null) {
__result['ignoreIfExists'] = ignoreIfExists;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// Rename options
class RenameOptions implements ToJsonable {
RenameOptions(this.prepareProvider);
factory RenameOptions.fromJson(Map<String, dynamic> json) {
final prepareProvider = json['prepareProvider'];
return new RenameOptions(prepareProvider);
}
/// Renames should be checked and tested before being
/// executed.
final bool prepareProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (prepareProvider != null) {
__result['prepareProvider'] = prepareProvider;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class RenameParams implements ToJsonable {
RenameParams(this.textDocument, this.position, this.newName) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (position == null) {
throw 'position is required but was not provided';
}
if (newName == null) {
throw 'newName is required but was not provided';
}
}
factory RenameParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final position = json['position'] != null
? new Position.fromJson(json['position'])
: null;
final newName = json['newName'];
return new RenameParams(textDocument, position, newName);
}
/// The new name of the symbol. If the given name is not
/// valid the request must return a [ResponseError] with
/// an appropriate message set.
final String newName;
/// The position at which this request was sent.
final Position position;
/// The document to rename.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['position'] =
position ?? (throw 'position is required but was not set');
__result['newName'] =
newName ?? (throw 'newName is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('position') &&
Position.canParse(obj['position']) &&
obj.containsKey('newName') &&
obj['newName'] is String;
}
}
class RenameRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
RenameRegistrationOptions(this.prepareProvider, this.documentSelector);
factory RenameRegistrationOptions.fromJson(Map<String, dynamic> json) {
final prepareProvider = json['prepareProvider'];
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new RenameRegistrationOptions(prepareProvider, documentSelector);
}
/// A document selector to identify the scope of the
/// registration. If set to null the document selector
/// provided on the client side will be used.
final List<DocumentFilter> documentSelector;
/// Renames should be checked and tested for validity
/// before being executed.
final bool prepareProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (prepareProvider != null) {
__result['prepareProvider'] = prepareProvider;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
class RequestMessage implements Message, ToJsonable {
RequestMessage(this.id, this.method, this.params, this.jsonrpc) {
if (id == null) {
throw 'id is required but was not provided';
}
if (method == null) {
throw 'method is required but was not provided';
}
if (jsonrpc == null) {
throw 'jsonrpc is required but was not provided';
}
}
factory RequestMessage.fromJson(Map<String, dynamic> json) {
final id = json['id'] is num
? new Either2<num, String>.t1(json['id'])
: (json['id'] is String
? new Either2<num, String>.t2(json['id'])
: (throw '''${json['id']} was not one of (number, string)'''));
final method = json['method'];
final params = (json['params'] is List &&
(json['params'].length == 0 ||
json['params'].every((item) => true)))
? new Either2<List<dynamic>, dynamic>.t1(
json['params']?.map((item) => item)?.cast<dynamic>()?.toList())
: (new Either2<List<dynamic>, dynamic>.t2(json['params']));
final jsonrpc = json['jsonrpc'];
return new RequestMessage(id, method, params, jsonrpc);
}
/// The request id.
final Either2<num, String> id;
final String jsonrpc;
/// The method to be invoked.
final String method;
/// The method's params.
final Either2<List<dynamic>, dynamic> params;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['id'] = id ?? (throw 'id is required but was not set');
__result['method'] = method ?? (throw 'method is required but was not set');
if (params != null) {
__result['params'] = params;
}
__result['jsonrpc'] =
jsonrpc ?? (throw 'jsonrpc is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('id') &&
(obj['id'] is num || obj['id'] is String) &&
obj.containsKey('method') &&
obj['method'] is String &&
obj.containsKey('jsonrpc') &&
obj['jsonrpc'] is String;
}
}
class ResourceOperationKind {
const ResourceOperationKind._(this._value);
const ResourceOperationKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 'create':
case 'rename':
case 'delete':
return true;
}
return false;
}
/// Supports creating new files and folders.
static const Create = const ResourceOperationKind._('create');
/// Supports renaming existing files and folders.
static const Rename = const ResourceOperationKind._('rename');
/// Supports deleting existing files and folders.
static const Delete = const ResourceOperationKind._('delete');
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is ResourceOperationKind && o._value == _value;
}
class ResponseError<D> implements ToJsonable {
ResponseError(this.code, this.message, this.data) {
if (code == null) {
throw 'code is required but was not provided';
}
if (message == null) {
throw 'message is required but was not provided';
}
}
factory ResponseError.fromJson(Map<String, dynamic> json) {
final code = json['code'];
final message = json['message'];
final data = json['data'];
return new ResponseError<D>(code, message, data);
}
/// A number indicating the error type that occurred.
final num code;
/// A Primitive or Structured value that contains
/// additional information about the error. Can be
/// omitted.
final D data;
/// A string providing a short description of the error.
final String message;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['code'] = code ?? (throw 'code is required but was not set');
__result['message'] =
message ?? (throw 'message is required but was not set');
if (data != null) {
__result['data'] = data;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('code') &&
obj['code'] is num &&
obj.containsKey('message') &&
obj['message'] is String;
}
}
class ResponseMessage implements Message, ToJsonable {
ResponseMessage(this.id, this.result, this.error, this.jsonrpc) {
if (jsonrpc == null) {
throw 'jsonrpc is required but was not provided';
}
}
factory ResponseMessage.fromJson(Map<String, dynamic> json) {
final id = json['id'] is num
? new Either2<num, String>.t1(json['id'])
: (json['id'] is String
? new Either2<num, String>.t2(json['id'])
: (throw '''${json['id']} was not one of (number, string)'''));
final result = json['result'];
final error = json['error'];
final jsonrpc = json['jsonrpc'];
return new ResponseMessage(id, result, error, jsonrpc);
}
/// The error object in case a request fails.
final ResponseError<dynamic> error;
/// The request id.
final Either2<num, String> id;
final String jsonrpc;
/// The result of a request. This can be omitted in the
/// case of an error.
final dynamic result;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['id'] = id;
if (result != null) {
__result['result'] = result;
}
if (error != null) {
__result['error'] = error;
}
__result['jsonrpc'] =
jsonrpc ?? (throw 'jsonrpc is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('id') &&
(obj['id'] is num || obj['id'] is String) &&
obj.containsKey('jsonrpc') &&
obj['jsonrpc'] is String;
}
}
/// Save options.
class SaveOptions implements ToJsonable {
SaveOptions(this.includeText);
factory SaveOptions.fromJson(Map<String, dynamic> json) {
final includeText = json['includeText'];
return new SaveOptions(includeText);
}
/// The client is supposed to include the content on
/// save.
final bool includeText;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (includeText != null) {
__result['includeText'] = includeText;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class ServerCapabilities implements ToJsonable {
ServerCapabilities(
this.textDocumentSync,
this.hoverProvider,
this.completionProvider,
this.signatureHelpProvider,
this.definitionProvider,
this.referencesProvider,
this.documentHighlightProvider,
this.documentSymbolProvider,
this.workspaceSymbolProvider,
this.codeActionProvider,
this.codeLensProvider,
this.documentFormattingProvider,
this.documentRangeFormattingProvider,
this.documentOnTypeFormattingProvider,
this.renameProvider,
this.documentLinkProvider,
this.executeCommandProvider,
this.supported,
this.changeNotifications);
factory ServerCapabilities.fromJson(Map<String, dynamic> json) {
final textDocumentSync = TextDocumentSyncOptions.canParse(
json['textDocumentSync'])
? new Either2<TextDocumentSyncOptions, num>.t1(
json['textDocumentSync'] != null
? new TextDocumentSyncOptions.fromJson(json['textDocumentSync'])
: null)
: (json['textDocumentSync'] is num
? new Either2<TextDocumentSyncOptions, num>.t2(
json['textDocumentSync'])
: (throw '''${json['textDocumentSync']} was not one of (TextDocumentSyncOptions, number)'''));
final hoverProvider = json['hoverProvider'];
final completionProvider = json['completionProvider'] != null
? new CompletionOptions.fromJson(json['completionProvider'])
: null;
final signatureHelpProvider = json['signatureHelpProvider'] != null
? new SignatureHelpOptions.fromJson(json['signatureHelpProvider'])
: null;
final definitionProvider = json['definitionProvider'];
final referencesProvider = json['referencesProvider'];
final documentHighlightProvider = json['documentHighlightProvider'];
final documentSymbolProvider = json['documentSymbolProvider'];
final workspaceSymbolProvider = json['workspaceSymbolProvider'];
final codeActionProvider = json['codeActionProvider'] is bool
? new Either2<bool, CodeActionOptions>.t1(json['codeActionProvider'])
: (CodeActionOptions.canParse(json['codeActionProvider'])
? new Either2<bool, CodeActionOptions>.t2(
json['codeActionProvider'] != null
? new CodeActionOptions.fromJson(json['codeActionProvider'])
: null)
: (throw '''${json['codeActionProvider']} was not one of (boolean, CodeActionOptions)'''));
final codeLensProvider = json['codeLensProvider'] != null
? new CodeLensOptions.fromJson(json['codeLensProvider'])
: null;
final documentFormattingProvider = json['documentFormattingProvider'];
final documentRangeFormattingProvider =
json['documentRangeFormattingProvider'];
final documentOnTypeFormattingProvider =
json['documentOnTypeFormattingProvider'] != null
? new DocumentOnTypeFormattingOptions.fromJson(
json['documentOnTypeFormattingProvider'])
: null;
final renameProvider = json['renameProvider'] is bool
? new Either2<bool, RenameOptions>.t1(json['renameProvider'])
: (RenameOptions.canParse(json['renameProvider'])
? new Either2<bool, RenameOptions>.t2(json['renameProvider'] != null
? new RenameOptions.fromJson(json['renameProvider'])
: null)
: (throw '''${json['renameProvider']} was not one of (boolean, RenameOptions)'''));
final documentLinkProvider = json['documentLinkProvider'] != null
? new DocumentLinkOptions.fromJson(json['documentLinkProvider'])
: null;
final executeCommandProvider = json['executeCommandProvider'] != null
? new ExecuteCommandOptions.fromJson(json['executeCommandProvider'])
: null;
final supported = json['supported'];
final changeNotifications = json['changeNotifications'] is String
? new Either2<String, bool>.t1(json['changeNotifications'])
: (json['changeNotifications'] is bool
? new Either2<String, bool>.t2(json['changeNotifications'])
: (throw '''${json['changeNotifications']} was not one of (string, boolean)'''));
return new ServerCapabilities(
textDocumentSync,
hoverProvider,
completionProvider,
signatureHelpProvider,
definitionProvider,
referencesProvider,
documentHighlightProvider,
documentSymbolProvider,
workspaceSymbolProvider,
codeActionProvider,
codeLensProvider,
documentFormattingProvider,
documentRangeFormattingProvider,
documentOnTypeFormattingProvider,
renameProvider,
documentLinkProvider,
executeCommandProvider,
supported,
changeNotifications);
}
/// Whether the server wants to receive workspace folder
/// change notifications.
///
/// If a strings is provided the string is treated as a
/// ID under which the notification is registered on the
/// client side. The ID can be used to unregister for
/// these events using the `client/unregisterCapability`
/// request.
final Either2<String, bool> changeNotifications;
/// The server provides code actions. The
/// `CodeActionOptions` return type is only valid if the
/// client signals code action literal support via the
/// property
/// `textDocument.codeAction.codeActionLiteralSupport`.
final Either2<bool, CodeActionOptions> codeActionProvider;
/// The server provides code lens.
final CodeLensOptions codeLensProvider;
/// The server provides completion support.
final CompletionOptions completionProvider;
/// The server provides goto definition support.
final bool definitionProvider;
/// The server provides document formatting.
final bool documentFormattingProvider;
/// The server provides document highlight support.
final bool documentHighlightProvider;
/// The server provides document link support.
final DocumentLinkOptions documentLinkProvider;
/// The server provides document formatting on typing.
final DocumentOnTypeFormattingOptions documentOnTypeFormattingProvider;
/// The server provides document range formatting.
final bool documentRangeFormattingProvider;
/// The server provides document symbol support.
final bool documentSymbolProvider;
/// The server provides execute command support.
final ExecuteCommandOptions executeCommandProvider;
/// The server provides hover support.
final bool hoverProvider;
/// The server provides find references support.
final bool referencesProvider;
/// The server provides rename support. RenameOptions
/// may only be specified if the client states that it
/// supports `prepareSupport` in its initial
/// `initialize` request.
final Either2<bool, RenameOptions> renameProvider;
/// The server provides signature help support.
final SignatureHelpOptions signatureHelpProvider;
/// The server has support for workspace folders
final bool supported;
/// Defines how text documents are synced. Is either a
/// detailed structure defining each notification or for
/// backwards compatibility the TextDocumentSyncKind
/// number. If omitted it defaults to
/// `TextDocumentSyncKind.None`.
final Either2<TextDocumentSyncOptions, num> textDocumentSync;
/// The server provides workspace symbol support.
final bool workspaceSymbolProvider;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (textDocumentSync != null) {
__result['textDocumentSync'] = textDocumentSync;
}
if (hoverProvider != null) {
__result['hoverProvider'] = hoverProvider;
}
if (completionProvider != null) {
__result['completionProvider'] = completionProvider;
}
if (signatureHelpProvider != null) {
__result['signatureHelpProvider'] = signatureHelpProvider;
}
if (definitionProvider != null) {
__result['definitionProvider'] = definitionProvider;
}
if (referencesProvider != null) {
__result['referencesProvider'] = referencesProvider;
}
if (documentHighlightProvider != null) {
__result['documentHighlightProvider'] = documentHighlightProvider;
}
if (documentSymbolProvider != null) {
__result['documentSymbolProvider'] = documentSymbolProvider;
}
if (workspaceSymbolProvider != null) {
__result['workspaceSymbolProvider'] = workspaceSymbolProvider;
}
if (codeActionProvider != null) {
__result['codeActionProvider'] = codeActionProvider;
}
if (codeLensProvider != null) {
__result['codeLensProvider'] = codeLensProvider;
}
if (documentFormattingProvider != null) {
__result['documentFormattingProvider'] = documentFormattingProvider;
}
if (documentRangeFormattingProvider != null) {
__result['documentRangeFormattingProvider'] =
documentRangeFormattingProvider;
}
if (documentOnTypeFormattingProvider != null) {
__result['documentOnTypeFormattingProvider'] =
documentOnTypeFormattingProvider;
}
if (renameProvider != null) {
__result['renameProvider'] = renameProvider;
}
if (documentLinkProvider != null) {
__result['documentLinkProvider'] = documentLinkProvider;
}
if (executeCommandProvider != null) {
__result['executeCommandProvider'] = executeCommandProvider;
}
if (supported != null) {
__result['supported'] = supported;
}
if (changeNotifications != null) {
__result['changeNotifications'] = changeNotifications;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class ShowMessageParams implements ToJsonable {
ShowMessageParams(this.type, this.message) {
if (type == null) {
throw 'type is required but was not provided';
}
if (message == null) {
throw 'message is required but was not provided';
}
}
factory ShowMessageParams.fromJson(Map<String, dynamic> json) {
final type =
json['type'] != null ? new MessageType.fromJson(json['type']) : null;
final message = json['message'];
return new ShowMessageParams(type, message);
}
/// The actual message.
final String message;
/// The message type.
final MessageType type;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['type'] = type ?? (throw 'type is required but was not set');
__result['message'] =
message ?? (throw 'message is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('type') &&
MessageType.canParse(obj['type']) &&
obj.containsKey('message') &&
obj['message'] is String;
}
}
class ShowMessageRequestParams implements ToJsonable {
ShowMessageRequestParams(this.type, this.message, this.actions) {
if (type == null) {
throw 'type is required but was not provided';
}
if (message == null) {
throw 'message is required but was not provided';
}
}
factory ShowMessageRequestParams.fromJson(Map<String, dynamic> json) {
final type =
json['type'] != null ? new MessageType.fromJson(json['type']) : null;
final message = json['message'];
final actions = json['actions']
?.map((item) =>
item != null ? new MessageActionItem.fromJson(item) : null)
?.cast<MessageActionItem>()
?.toList();
return new ShowMessageRequestParams(type, message, actions);
}
/// The message action items to present.
final List<MessageActionItem> actions;
/// The actual message
final String message;
/// The message type.
final MessageType type;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['type'] = type ?? (throw 'type is required but was not set');
__result['message'] =
message ?? (throw 'message is required but was not set');
if (actions != null) {
__result['actions'] = actions;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('type') &&
MessageType.canParse(obj['type']) &&
obj.containsKey('message') &&
obj['message'] is String;
}
}
/// Signature help represents the signature of something
/// callable. There can be multiple signature but only one
/// active and only one active parameter.
class SignatureHelp implements ToJsonable {
SignatureHelp(this.signatures, this.activeSignature, this.activeParameter) {
if (signatures == null) {
throw 'signatures is required but was not provided';
}
}
factory SignatureHelp.fromJson(Map<String, dynamic> json) {
final signatures = json['signatures']
?.map((item) =>
item != null ? new SignatureInformation.fromJson(item) : null)
?.cast<SignatureInformation>()
?.toList();
final activeSignature = json['activeSignature'];
final activeParameter = json['activeParameter'];
return new SignatureHelp(signatures, activeSignature, activeParameter);
}
/// The active parameter of the active signature. If
/// omitted or the value lies outside the range of
/// `signatures[activeSignature].parameters` defaults to
/// 0 if the active signature has parameters. If the
/// active signature has no parameters it is ignored. In
/// future version of the protocol this property might
/// become mandatory to better express the active
/// parameter if the active signature does have any.
final num activeParameter;
/// The active signature. If omitted or the value lies
/// outside the range of `signatures` the value defaults
/// to zero or is ignored if `signatures.length === 0`.
/// Whenever possible implementors should make an active
/// decision about the active signature and shouldn't
/// rely on a default value. In future version of the
/// protocol this property might become mandatory to
/// better express this.
final num activeSignature;
/// One or more signatures.
final List<SignatureInformation> signatures;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['signatures'] =
signatures ?? (throw 'signatures is required but was not set');
if (activeSignature != null) {
__result['activeSignature'] = activeSignature;
}
if (activeParameter != null) {
__result['activeParameter'] = activeParameter;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('signatures') &&
(obj['signatures'] is List &&
(obj['signatures'].length == 0 ||
obj['signatures']
.every((item) => SignatureInformation.canParse(item))));
}
}
/// Signature help options.
class SignatureHelpOptions implements ToJsonable {
SignatureHelpOptions(this.triggerCharacters);
factory SignatureHelpOptions.fromJson(Map<String, dynamic> json) {
final triggerCharacters = json['triggerCharacters']
?.map((item) => item)
?.cast<String>()
?.toList();
return new SignatureHelpOptions(triggerCharacters);
}
/// The characters that trigger signature help
/// automatically.
final List<String> triggerCharacters;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (triggerCharacters != null) {
__result['triggerCharacters'] = triggerCharacters;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class SignatureHelpRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
SignatureHelpRegistrationOptions(
this.triggerCharacters, this.documentSelector);
factory SignatureHelpRegistrationOptions.fromJson(Map<String, dynamic> json) {
final triggerCharacters = json['triggerCharacters']
?.map((item) => item)
?.cast<String>()
?.toList();
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new SignatureHelpRegistrationOptions(
triggerCharacters, documentSelector);
}
/// A document selector to identify the scope of the
/// registration. If set to null the document selector
/// provided on the client side will be used.
final List<DocumentFilter> documentSelector;
/// The characters that trigger signature help
/// automatically.
final List<String> triggerCharacters;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (triggerCharacters != null) {
__result['triggerCharacters'] = triggerCharacters;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// Represents the signature of something callable. A
/// signature can have a label, like a function-name, a
/// doc-comment, and a set of parameters.
class SignatureInformation implements ToJsonable {
SignatureInformation(this.label, this.documentation, this.parameters) {
if (label == null) {
throw 'label is required but was not provided';
}
}
factory SignatureInformation.fromJson(Map<String, dynamic> json) {
final label = json['label'];
final documentation = json['documentation'] is String
? new Either2<String, MarkupContent>.t1(json['documentation'])
: (MarkupContent.canParse(json['documentation'])
? new Either2<String, MarkupContent>.t2(
json['documentation'] != null
? new MarkupContent.fromJson(json['documentation'])
: null)
: (throw '''${json['documentation']} was not one of (string, MarkupContent)'''));
final parameters = json['parameters']
?.map((item) =>
item != null ? new ParameterInformation.fromJson(item) : null)
?.cast<ParameterInformation>()
?.toList();
return new SignatureInformation(label, documentation, parameters);
}
/// The human-readable doc-comment of this signature.
/// Will be shown in the UI but can be omitted.
final Either2<String, MarkupContent> documentation;
/// The label of this signature. Will be shown in the
/// UI.
final String label;
/// The parameters of this signature.
final List<ParameterInformation> parameters;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['label'] = label ?? (throw 'label is required but was not set');
if (documentation != null) {
__result['documentation'] = documentation;
}
if (parameters != null) {
__result['parameters'] = parameters;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('label') &&
obj['label'] is String;
}
}
/// Static registration options to be returned in the
/// initialize request.
class StaticRegistrationOptions implements ToJsonable {
StaticRegistrationOptions(this.id);
factory StaticRegistrationOptions.fromJson(Map<String, dynamic> json) {
final id = json['id'];
return new StaticRegistrationOptions(id);
}
/// The id used to register the request. The id can be
/// used to deregister the request again. See also
/// Registration#id.
final String id;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (id != null) {
__result['id'] = id;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// Represents information about programming constructs
/// like variables, classes, interfaces etc.
class SymbolInformation implements ToJsonable {
SymbolInformation(this.name, this.kind, this.deprecated, this.location,
this.containerName) {
if (name == null) {
throw 'name is required but was not provided';
}
if (kind == null) {
throw 'kind is required but was not provided';
}
if (location == null) {
throw 'location is required but was not provided';
}
}
factory SymbolInformation.fromJson(Map<String, dynamic> json) {
final name = json['name'];
final kind = json['kind'];
final deprecated = json['deprecated'];
final location = json['location'] != null
? new Location.fromJson(json['location'])
: null;
final containerName = json['containerName'];
return new SymbolInformation(
name, kind, deprecated, location, containerName);
}
/// The name of the symbol containing this symbol. This
/// information is for user interface purposes (e.g. to
/// render a qualifier in the user interface if
/// necessary). It can't be used to re-infer a hierarchy
/// for the document symbols.
final String containerName;
/// Indicates if this symbol is deprecated.
final bool deprecated;
/// The kind of this symbol.
final num kind;
/// The location of this symbol. The location's range is
/// used by a tool to reveal the location in the editor.
/// If the symbol is selected in the tool the range's
/// start information is used to position the cursor. So
/// the range usually spans more then the actual
/// symbol's name and does normally include things like
/// visibility modifiers.
///
/// The range doesn't have to denote a node range in the
/// sense of a abstract syntax tree. It can therefore
/// not be used to re-construct a hierarchy of the
/// symbols.
final Location location;
/// The name of this symbol.
final String name;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['name'] = name ?? (throw 'name is required but was not set');
__result['kind'] = kind ?? (throw 'kind is required but was not set');
if (deprecated != null) {
__result['deprecated'] = deprecated;
}
__result['location'] =
location ?? (throw 'location is required but was not set');
if (containerName != null) {
__result['containerName'] = containerName;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('name') &&
obj['name'] is String &&
obj.containsKey('kind') &&
obj['kind'] is num &&
obj.containsKey('location') &&
Location.canParse(obj['location']);
}
}
/// A symbol kind.
class SymbolKind {
const SymbolKind._(this._value);
const SymbolKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
return true;
}
return false;
}
static const File = const SymbolKind._(1);
static const Module = const SymbolKind._(2);
static const Namespace = const SymbolKind._(3);
static const Package = const SymbolKind._(4);
static const Class = const SymbolKind._(5);
static const Method = const SymbolKind._(6);
static const Property = const SymbolKind._(7);
static const Field = const SymbolKind._(8);
static const Constructor = const SymbolKind._(9);
static const Enum = const SymbolKind._(10);
static const Interface = const SymbolKind._(11);
static const Function = const SymbolKind._(12);
static const Variable = const SymbolKind._(13);
static const Constant = const SymbolKind._(14);
static const Str = const SymbolKind._(15);
static const Number = const SymbolKind._(16);
static const Boolean = const SymbolKind._(17);
static const Array = const SymbolKind._(18);
static const Obj = const SymbolKind._(19);
static const Key = const SymbolKind._(20);
static const Null = const SymbolKind._(21);
static const EnumMember = const SymbolKind._(22);
static const Struct = const SymbolKind._(23);
static const Event = const SymbolKind._(24);
static const Operator = const SymbolKind._(25);
static const TypeParameter = const SymbolKind._(26);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is SymbolKind && o._value == _value;
}
/// Describe options to be used when registering for
/// text document change events.
class TextDocumentChangeRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
TextDocumentChangeRegistrationOptions(this.syncKind, this.documentSelector) {
if (syncKind == null) {
throw 'syncKind is required but was not provided';
}
}
factory TextDocumentChangeRegistrationOptions.fromJson(
Map<String, dynamic> json) {
final syncKind = json['syncKind'];
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new TextDocumentChangeRegistrationOptions(
syncKind, documentSelector);
}
/// A document selector to identify the scope of the
/// registration. If set to null the document selector
/// provided on the client side will be used.
final List<DocumentFilter> documentSelector;
/// How documents are synced to the server. See
/// TextDocumentSyncKind.Full and
/// TextDocumentSyncKind.Incremental.
final num syncKind;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['syncKind'] =
syncKind ?? (throw 'syncKind is required but was not set');
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('syncKind') &&
obj['syncKind'] is num &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// Text document specific client capabilities.
class TextDocumentClientCapabilities implements ToJsonable {
TextDocumentClientCapabilities(this.dynamicRegistration, this.willSave,
this.willSaveWaitUntil, this.didSave);
factory TextDocumentClientCapabilities.fromJson(Map<String, dynamic> json) {
final dynamicRegistration = json['dynamicRegistration'];
final willSave = json['willSave'];
final willSaveWaitUntil = json['willSaveWaitUntil'];
final didSave = json['didSave'];
return new TextDocumentClientCapabilities(
dynamicRegistration, willSave, willSaveWaitUntil, didSave);
}
/// The client supports did save notifications.
final bool didSave;
/// Whether text document synchronization supports
/// dynamic registration.
final bool dynamicRegistration;
/// The client supports sending will save
/// notifications.
final bool willSave;
/// The client supports sending a will save request
/// and waits for a response providing text edits
/// which will be applied to the document before it is
/// saved.
final bool willSaveWaitUntil;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (dynamicRegistration != null) {
__result['dynamicRegistration'] = dynamicRegistration;
}
if (willSave != null) {
__result['willSave'] = willSave;
}
if (willSaveWaitUntil != null) {
__result['willSaveWaitUntil'] = willSaveWaitUntil;
}
if (didSave != null) {
__result['didSave'] = didSave;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
/// An event describing a change to a text document. If
/// range and rangeLength are omitted the new text is
/// considered to be the full content of the document.
class TextDocumentContentChangeEvent implements ToJsonable {
TextDocumentContentChangeEvent(this.range, this.rangeLength, this.text) {
if (text == null) {
throw 'text is required but was not provided';
}
}
factory TextDocumentContentChangeEvent.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final rangeLength = json['rangeLength'];
final text = json['text'];
return new TextDocumentContentChangeEvent(range, rangeLength, text);
}
/// The range of the document that changed.
final Range range;
/// The length of the range that got replaced.
final num rangeLength;
/// The new text of the range/document.
final String text;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (range != null) {
__result['range'] = range;
}
if (rangeLength != null) {
__result['rangeLength'] = rangeLength;
}
__result['text'] = text ?? (throw 'text is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('text') &&
obj['text'] is String;
}
}
class TextDocumentEdit implements FileOperation, ToJsonable {
TextDocumentEdit(this.textDocument, this.edits) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (edits == null) {
throw 'edits is required but was not provided';
}
}
factory TextDocumentEdit.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new VersionedTextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final edits = json['edits']
?.map((item) => item != null ? new TextEdit.fromJson(item) : null)
?.cast<TextEdit>()
?.toList();
return new TextDocumentEdit(textDocument, edits);
}
/// The edits to be applied.
final List<TextEdit> edits;
/// The text document to change.
final VersionedTextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['edits'] = edits ?? (throw 'edits is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
VersionedTextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('edits') &&
(obj['edits'] is List &&
(obj['edits'].length == 0 ||
obj['edits'].every((item) => TextEdit.canParse(item))));
}
}
class TextDocumentIdentifier implements ToJsonable {
TextDocumentIdentifier(this.uri) {
if (uri == null) {
throw 'uri is required but was not provided';
}
}
factory TextDocumentIdentifier.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
return new TextDocumentIdentifier(uri);
}
/// The text document's URI.
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String;
}
}
class TextDocumentItem implements ToJsonable {
TextDocumentItem(this.uri, this.languageId, this.version, this.text) {
if (uri == null) {
throw 'uri is required but was not provided';
}
if (languageId == null) {
throw 'languageId is required but was not provided';
}
if (version == null) {
throw 'version is required but was not provided';
}
if (text == null) {
throw 'text is required but was not provided';
}
}
factory TextDocumentItem.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final languageId = json['languageId'];
final version = json['version'];
final text = json['text'];
return new TextDocumentItem(uri, languageId, version, text);
}
/// The text document's language identifier.
final String languageId;
/// The content of the opened text document.
final String text;
/// The text document's URI.
final String uri;
/// The version number of this document (it will
/// increase after each change, including undo/redo).
final num version;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
__result['languageId'] =
languageId ?? (throw 'languageId is required but was not set');
__result['version'] =
version ?? (throw 'version is required but was not set');
__result['text'] = text ?? (throw 'text is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String &&
obj.containsKey('languageId') &&
obj['languageId'] is String &&
obj.containsKey('version') &&
obj['version'] is num &&
obj.containsKey('text') &&
obj['text'] is String;
}
}
class TextDocumentPositionParams implements ToJsonable {
TextDocumentPositionParams(this.textDocument, this.position) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (position == null) {
throw 'position is required but was not provided';
}
}
factory TextDocumentPositionParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final position = json['position'] != null
? new Position.fromJson(json['position'])
: null;
return new TextDocumentPositionParams(textDocument, position);
}
/// The position inside the text document.
final Position position;
/// The text document.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['position'] =
position ?? (throw 'position is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('position') &&
Position.canParse(obj['position']);
}
}
class TextDocumentRegistrationOptions implements ToJsonable {
TextDocumentRegistrationOptions(this.documentSelector);
factory TextDocumentRegistrationOptions.fromJson(Map<String, dynamic> json) {
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new TextDocumentRegistrationOptions(documentSelector);
}
/// A document selector to identify the scope of the
/// registration. If set to null the document selector
/// provided on the client side will be used.
final List<DocumentFilter> documentSelector;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// Represents reasons why a text document is saved.
class TextDocumentSaveReason {
const TextDocumentSaveReason._(this._value);
const TextDocumentSaveReason.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 3:
return true;
}
return false;
}
/// Manually triggered, e.g. by the user pressing
/// save, by starting debugging, or by an API call.
static const Manual = const TextDocumentSaveReason._(1);
/// Automatic after a delay.
static const AfterDelay = const TextDocumentSaveReason._(2);
/// When the editor lost focus.
static const FocusOut = const TextDocumentSaveReason._(3);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is TextDocumentSaveReason && o._value == _value;
}
class TextDocumentSaveRegistrationOptions
implements TextDocumentRegistrationOptions, ToJsonable {
TextDocumentSaveRegistrationOptions(this.includeText, this.documentSelector);
factory TextDocumentSaveRegistrationOptions.fromJson(
Map<String, dynamic> json) {
final includeText = json['includeText'];
final documentSelector = json['documentSelector']
?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
?.cast<DocumentFilter>()
?.toList();
return new TextDocumentSaveRegistrationOptions(
includeText, documentSelector);
}
/// A document selector to identify the scope of the
/// registration. If set to null the document
/// selector provided on the client side will be
/// used.
final List<DocumentFilter> documentSelector;
/// The client is supposed to include the content on
/// save.
final bool includeText;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (includeText != null) {
__result['includeText'] = includeText;
}
__result['documentSelector'] = documentSelector;
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('documentSelector') &&
(obj['documentSelector'] is List &&
(obj['documentSelector'].length == 0 ||
obj['documentSelector']
.every((item) => DocumentFilter.canParse(item))));
}
}
/// Defines how the host (editor) should sync document
/// changes to the language server.
class TextDocumentSyncKind {
const TextDocumentSyncKind._(this._value);
const TextDocumentSyncKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 0:
case 1:
case 2:
return true;
}
return false;
}
/// Documents should not be synced at all.
static const None = const TextDocumentSyncKind._(0);
/// Documents are synced by always sending the
/// full content of the document.
static const Full = const TextDocumentSyncKind._(1);
/// Documents are synced by sending the full
/// content on open. After that only incremental
/// updates to the document are send.
static const Incremental = const TextDocumentSyncKind._(2);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is TextDocumentSyncKind && o._value == _value;
}
class TextDocumentSyncOptions implements ToJsonable {
TextDocumentSyncOptions(this.openClose, this.change, this.willSave,
this.willSaveWaitUntil, this.save);
factory TextDocumentSyncOptions.fromJson(Map<String, dynamic> json) {
final openClose = json['openClose'];
final change = json['change'] != null
? new TextDocumentSyncKind.fromJson(json['change'])
: null;
final willSave = json['willSave'];
final willSaveWaitUntil = json['willSaveWaitUntil'];
final save =
json['save'] != null ? new SaveOptions.fromJson(json['save']) : null;
return new TextDocumentSyncOptions(
openClose, change, willSave, willSaveWaitUntil, save);
}
/// Change notifications are sent to the server.
/// See TextDocumentSyncKind.None,
/// TextDocumentSyncKind.Full and
/// TextDocumentSyncKind.Incremental. If omitted
/// it defaults to TextDocumentSyncKind.None.
final TextDocumentSyncKind change;
/// Open and close notifications are sent to the
/// server.
final bool openClose;
/// Save notifications are sent to the server.
final SaveOptions save;
/// Will save notifications are sent to the
/// server.
final bool willSave;
/// Will save wait until requests are sent to the
/// server.
final bool willSaveWaitUntil;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (openClose != null) {
__result['openClose'] = openClose;
}
if (change != null) {
__result['change'] = change;
}
if (willSave != null) {
__result['willSave'] = willSave;
}
if (willSaveWaitUntil != null) {
__result['willSaveWaitUntil'] = willSaveWaitUntil;
}
if (save != null) {
__result['save'] = save;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class TextEdit implements ToJsonable {
TextEdit(this.range, this.newText) {
if (range == null) {
throw 'range is required but was not provided';
}
if (newText == null) {
throw 'newText is required but was not provided';
}
}
factory TextEdit.fromJson(Map<String, dynamic> json) {
final range =
json['range'] != null ? new Range.fromJson(json['range']) : null;
final newText = json['newText'];
return new TextEdit(range, newText);
}
/// The string to be inserted. For delete
/// operations use an empty string.
final String newText;
/// The range of the text document to be
/// manipulated. To insert text into a document
/// create a range where start === end.
final Range range;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['range'] = range ?? (throw 'range is required but was not set');
__result['newText'] =
newText ?? (throw 'newText is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('range') &&
Range.canParse(obj['range']) &&
obj.containsKey('newText') &&
obj['newText'] is String;
}
}
/// General parameters to unregister a capability.
class Unregistration implements ToJsonable {
Unregistration(this.id, this.method) {
if (id == null) {
throw 'id is required but was not provided';
}
if (method == null) {
throw 'method is required but was not provided';
}
}
factory Unregistration.fromJson(Map<String, dynamic> json) {
final id = json['id'];
final method = json['method'];
return new Unregistration(id, method);
}
/// The id used to unregister the request or
/// notification. Usually an id provided during
/// the register request.
final String id;
/// The method / capability to unregister for.
final String method;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['id'] = id ?? (throw 'id is required but was not set');
__result['method'] = method ?? (throw 'method is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('id') &&
obj['id'] is String &&
obj.containsKey('method') &&
obj['method'] is String;
}
}
class UnregistrationParams implements ToJsonable {
UnregistrationParams(this.unregisterations) {
if (unregisterations == null) {
throw 'unregisterations is required but was not provided';
}
}
factory UnregistrationParams.fromJson(Map<String, dynamic> json) {
final unregisterations = json['unregisterations']
?.map((item) => item != null ? new Unregistration.fromJson(item) : null)
?.cast<Unregistration>()
?.toList();
return new UnregistrationParams(unregisterations);
}
final List<Unregistration> unregisterations;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['unregisterations'] = unregisterations ??
(throw 'unregisterations is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('unregisterations') &&
(obj['unregisterations'] is List &&
(obj['unregisterations'].length == 0 ||
obj['unregisterations']
.every((item) => Unregistration.canParse(item))));
}
}
class VersionedTextDocumentIdentifier
implements TextDocumentIdentifier, ToJsonable {
VersionedTextDocumentIdentifier(this.version, this.uri) {
if (uri == null) {
throw 'uri is required but was not provided';
}
}
factory VersionedTextDocumentIdentifier.fromJson(Map<String, dynamic> json) {
final version = json['version'];
final uri = json['uri'];
return new VersionedTextDocumentIdentifier(version, uri);
}
/// The text document's URI.
final String uri;
/// The version number of this document. If a
/// versioned text document identifier is sent
/// from the server to the client and the file is
/// not open in the editor (the server has not
/// received an open notification before) the
/// server can send `null` to indicate that the
/// version is known and the content on disk is
/// the truth (as speced with document content
/// ownership).
///
/// The version number of a document will increase
/// after each change, including undo/redo. The
/// number doesn't need to be consecutive.
final num version;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['version'] = version;
__result['uri'] = uri ?? (throw 'uri is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('version') &&
obj['version'] is num &&
obj.containsKey('uri') &&
obj['uri'] is String;
}
}
class WatchKind {
const WatchKind._(this._value);
const WatchKind.fromJson(this._value);
final Object _value;
static bool canParse(Object obj) {
switch (obj) {
case 1:
case 2:
case 4:
return true;
}
return false;
}
/// Interested in create events.
static const Create = const WatchKind._(1);
/// Interested in change events
static const Change = const WatchKind._(2);
/// Interested in delete events
static const Delete = const WatchKind._(4);
Object toJson() => _value;
@override
String toString() => _value.toString();
@override
get hashCode => _value.hashCode;
bool operator ==(o) => o is WatchKind && o._value == _value;
}
/// The parameters send in a will save text
/// document notification.
class WillSaveTextDocumentParams implements ToJsonable {
WillSaveTextDocumentParams(this.textDocument, this.reason) {
if (textDocument == null) {
throw 'textDocument is required but was not provided';
}
if (reason == null) {
throw 'reason is required but was not provided';
}
}
factory WillSaveTextDocumentParams.fromJson(Map<String, dynamic> json) {
final textDocument = json['textDocument'] != null
? new TextDocumentIdentifier.fromJson(json['textDocument'])
: null;
final reason = json['reason'];
return new WillSaveTextDocumentParams(textDocument, reason);
}
/// The 'TextDocumentSaveReason'.
final num reason;
/// The document that will be saved.
final TextDocumentIdentifier textDocument;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['textDocument'] =
textDocument ?? (throw 'textDocument is required but was not set');
__result['reason'] = reason ?? (throw 'reason is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('textDocument') &&
TextDocumentIdentifier.canParse(obj['textDocument']) &&
obj.containsKey('reason') &&
obj['reason'] is num;
}
}
/// Workspace specific client capabilities.
class WorkspaceClientCapabilities implements ToJsonable {
WorkspaceClientCapabilities(this.applyEdit, this.documentChanges,
this.resourceOperations, this.failureHandling);
factory WorkspaceClientCapabilities.fromJson(Map<String, dynamic> json) {
final applyEdit = json['applyEdit'];
final documentChanges = json['documentChanges'];
final resourceOperations = json['resourceOperations']
?.map((item) =>
item != null ? new ResourceOperationKind.fromJson(item) : null)
?.cast<ResourceOperationKind>()
?.toList();
final failureHandling = json['failureHandling'] != null
? new FailureHandlingKind.fromJson(json['failureHandling'])
: null;
return new WorkspaceClientCapabilities(
applyEdit, documentChanges, resourceOperations, failureHandling);
}
/// The client supports applying batch edits to
/// the workspace by supporting the request
/// 'workspace/applyEdit'
final bool applyEdit;
/// The client supports versioned document
/// changes in `WorkspaceEdit`s
final bool documentChanges;
/// The failure handling strategy of a client if
/// applying the workspace edit failes.
final FailureHandlingKind failureHandling;
/// The resource operations the client supports.
/// Clients should at least support 'create',
/// 'rename' and 'delete' files and folders.
final List<ResourceOperationKind> resourceOperations;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (applyEdit != null) {
__result['applyEdit'] = applyEdit;
}
if (documentChanges != null) {
__result['documentChanges'] = documentChanges;
}
if (resourceOperations != null) {
__result['resourceOperations'] = resourceOperations;
}
if (failureHandling != null) {
__result['failureHandling'] = failureHandling;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class WorkspaceEdit implements ToJsonable {
WorkspaceEdit(this.changes, this.documentChanges);
factory WorkspaceEdit.fromJson(Map<String, dynamic> json) {
final changes = json['changes'];
final documentChanges = json['documentChanges']
?.map((item) => item)
?.cast<FileOperation>()
?.toList();
return new WorkspaceEdit(changes, documentChanges);
}
/// Holds changes to existing resources.
final Map<String, List<TextEdit>> changes;
/// Depending on the client capability
/// `workspace.workspaceEdit.resourceOperations`
/// document changes are either an array of
/// `TextDocumentEdit`s to express changes to n
/// different text documents where each text
/// document edit addresses a specific version
/// of a text document. Or it can contain above
/// `TextDocumentEdit`s mixed with create,
/// rename and delete file / folder operations.
///
/// Whether a client supports versioned document
/// edits is expressed via
/// `workspace.workspaceEdit.documentChanges`
/// client capability.
///
/// If a client neither supports
/// `documentChanges` nor
/// `workspace.workspaceEdit.resourceOperations`
/// then only plain `TextEdit`s using the
/// `changes` property are supported.
final List<FileOperation> documentChanges;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
if (changes != null) {
__result['changes'] = changes;
}
if (documentChanges != null) {
__result['documentChanges'] = documentChanges;
}
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic>;
}
}
class WorkspaceFolder implements ToJsonable {
WorkspaceFolder(this.uri, this.name) {
if (uri == null) {
throw 'uri is required but was not provided';
}
if (name == null) {
throw 'name is required but was not provided';
}
}
factory WorkspaceFolder.fromJson(Map<String, dynamic> json) {
final uri = json['uri'];
final name = json['name'];
return new WorkspaceFolder(uri, name);
}
/// The name of the workspace folder. Defaults
/// to the uri's basename.
final String name;
/// The associated URI for this workspace
/// folder.
final String uri;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['uri'] = uri ?? (throw 'uri is required but was not set');
__result['name'] = name ?? (throw 'name is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('uri') &&
obj['uri'] is String &&
obj.containsKey('name') &&
obj['name'] is String;
}
}
/// The workspace folder change event.
class WorkspaceFoldersChangeEvent implements ToJsonable {
WorkspaceFoldersChangeEvent(this.added, this.removed) {
if (added == null) {
throw 'added is required but was not provided';
}
if (removed == null) {
throw 'removed is required but was not provided';
}
}
factory WorkspaceFoldersChangeEvent.fromJson(Map<String, dynamic> json) {
final added = json['added']
?.map(
(item) => item != null ? new WorkspaceFolder.fromJson(item) : null)
?.cast<WorkspaceFolder>()
?.toList();
final removed = json['removed']
?.map(
(item) => item != null ? new WorkspaceFolder.fromJson(item) : null)
?.cast<WorkspaceFolder>()
?.toList();
return new WorkspaceFoldersChangeEvent(added, removed);
}
/// The array of added workspace folders
final List<WorkspaceFolder> added;
/// The array of the removed workspace folders
final List<WorkspaceFolder> removed;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['added'] = added ?? (throw 'added is required but was not set');
__result['removed'] =
removed ?? (throw 'removed is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('added') &&
(obj['added'] is List &&
(obj['added'].length == 0 ||
obj['added']
.every((item) => WorkspaceFolder.canParse(item)))) &&
obj.containsKey('removed') &&
(obj['removed'] is List &&
(obj['removed'].length == 0 ||
obj['removed']
.every((item) => WorkspaceFolder.canParse(item))));
}
}
/// The parameters of a Workspace Symbol Request.
class WorkspaceSymbolParams implements ToJsonable {
WorkspaceSymbolParams(this.query) {
if (query == null) {
throw 'query is required but was not provided';
}
}
factory WorkspaceSymbolParams.fromJson(Map<String, dynamic> json) {
final query = json['query'];
return new WorkspaceSymbolParams(query);
}
/// A non-empty query string
final String query;
Map<String, dynamic> toJson() {
Map<String, dynamic> __result = {};
__result['query'] = query ?? (throw 'query is required but was not set');
return __result;
}
static bool canParse(Object obj) {
return obj is Map<String, dynamic> &&
obj.containsKey('query') &&
obj['query'] is String;
}
}